On 23/01/2006, at 6:23 AM, Eric Botcazou wrote:

Attached is a patch to the 4.1 branch, I think it will apply to mainline too. Branch built fine on powerpc-apple-darwin8.4.0 with c,ada enabled.


That's not sufficient: the compiler bootstraps fine, but all the ACATS tests
fail to link:

gnatlink a22006c.ali
--GCC=/nile.build/botcazou/gnat6/powerpc-apple-darwin8/gcc/
xgcc -B/nile.build/botcazou/gnat6/powerpc-apple-darwin8/gcc/
/usr/bin/ld: warning -L: directory name
(/nile.build/botcazou/gnat6/install_ppc/
lib/gcc/powerpc-apple-darwin8.0.0/4.1.0/adalib/) does not exist
/usr/bin/ld: Undefined symbols:
__Unwind_Resume
__Unwind_ForcedUnwind
__Unwind_GetDataRelBase
__Unwind_GetIP
__Unwind_GetLanguageSpecificData
__Unwind_GetRegionStart
__Unwind_GetTextRelBase
__Unwind_RaiseException
__Unwind_SetGR
__Unwind_SetIP
collect2: ld returned 1 exit status

So, on Darwin, unlike any other platforms, you need to explicitly pass either -static-libgcc or -shared-libgcc to link the EH machinery. That seems weird.

Geoff, any chance to bring Darwin back on par with the other platforms?

As I said before in this thread, the Ada driver should do what the C+ + driver does, which is to pass -shared-libgcc if it's going to need EH support. Or, you could pass -fexceptions to the link, which has the same effect.

No, it's not possible to let people safely 'just use EH' with no extra work. The issue is compatibility with the various Mac OS X versions, including future versions. Passing -static-libgcc creates an executable for which future binary compatibility is not guaranteed. Passing -shared-libgcc creates an executable which will not work before 10.3.9 because the library is not there.

Attachment: smime.p7s
Description: S/MIME cryptographic signature

Reply via email to