On 23/01/2006, at 1:51 PM, Eric Botcazou wrote:

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.


That's not really an option, as Ada links its static runtime by default and
tries to avoid external dependencies by default.

On systems where it is present, using libgcc is no worse than using libSystem.

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.


IIUC, that passing nothing is neither equivalent to -static-libgcc nor to -shared-libgcc is a feature, right? I know Darwin didn't invent it (IIRC Linux did) but that's not a valid excuse. :-) And the "neither - static-libgcc
not -shared-libgcc" on Darwin is not compatible with the "neither
-static-libgcc not -shared-libgcc" on Linux.

Passing nothing is equivalent to telling the compiler "I want my program to run on all versions since 10.1", which means you can't use EH at all.

OK, I guess we have no other solution than defaulting to -static- libgcc for
Ada on Darwin.

I would rather you defaulted to -shared-libgcc, to avoid creating programs that don't run on future versions of Mac OS. Do you really care about being able to create programs that run on 10.2?

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

Reply via email to