------- Comment #4 from developer at sandoe-acoustics dot co dot uk  2009-04-27 
19:07 -------
Sorry I got the attachments and the comment in the wrong order...

The basic issue is that TLS emulation needs to be linked just once in an
executable - but so does exception handling.  Exception handling is already
linked (for system libraries) with /usr/lib/libgcc_s.1.dylib  - so we cannot
simply replace that with our new lingcc_s.1.dylib version (or you will lose the
ability to unwind through the system libs).

I was working on the following engineering solution last year, but I'm afraid
it's possibly rough around the edges and is "undiscussed" and therefore any
part of all of it might be unacceptable to the various maintainers.    I'm
posting it now because the day job is not allowing any time to work on it --
and it might be useful to someone as it stands.

====

The basic idea is to add a "libgcc_ext.dylib" that is versioned and contains
all the added symbols between a given release of Darwin and the current state
of libgcc_s.  This means that we will all resolve to the same versions of
symbols - but that new programs can access newly-added gcc features.

There are various changes needed to accommodate this logic:
 changes to build the difference library (done in the libgcc mechanism).
 additions of the symbol version files.
changes of the testsuite to make sure that the testsuite search paths include
the multilib versions of libgcc_ext.dylib.

As I say, the _ext dylib is versioned (so there's a 10.4 and 10.5 one built).

=== 

I'm attaching:
 a diff against 4.4-branch -- this applies against 4.4.0 release with one
offset and I've bootstrapped & checked that - I'll post the results.
 a diff against 4.5-trunk.
 a set of added files - which are common to both.

So you need to patch 4.x as appropriate and then add the new files.

I don't think this change makes much sense unless you build with
--enable-version-specific-runtime-libs and I haven't tested it any other way...


-- 

developer at sandoe-acoustics dot co dot uk changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
                 CC|                            |developer at sandoe-
                   |                            |acoustics dot co dot uk


http://gcc.gnu.org/bugzilla/show_bug.cgi?id=39888

Reply via email to