Thanks Geoff,
that's v. useful doc.

On 10 Dec 2008, at 22:36, Geoff Keating wrote:


On Dec 10, 2008, at 7:32 AM, Jack Howarth wrote:

On Wed, Dec 10, 2008 at 02:55:11PM +0000, IainS wrote:

<snip>

To use the 'unversioned set' implies that you're compiling for a version of Mac OS that Apple has not yet created and most likely will never exist. This is not useful.

One way to get extra runtime support is put routines in libgcc.a which can be statically linked into executables if they aren't present in the system.


if one did -lgcc_s.10.x -lgcc_s.1   would that break it?
... should it not pick up only the unresolved symbols from s.1

( you would also have to be prepared to install libgcc_s.1 in a suitable place).


The routines in libgcc_eh.a are routines which should normally never be statically linked into executables, because they won't work if you do that; they must be in the system. If you need a routine that's in libgcc_eh.a, and it's not in the system, you're out of luck; you can't use it. You'd need to rewrite it so it can handle being linked into multiple executables, or you'd need to create a new shared library, put the routine in it, and ship that shared library with every executable you create.

OK, we've got quite a bit of work to do then, all the runtime libs (gfortran, stdc++v3, gomp, ffi, java) link on libgcc_s.1.dylib

and, if we want to be able to use gomp, then I we need to find a way to provide emutls.

This, obviously, should not be by linking with gcc_eh (since people would want the current system-provided exception mechanism to continue to work, I imagine).

thanks, for the explanations - it's been an educational day!

Iain

Reply via email to