versioning of _Unwind_*() symbols

H. J. Lu hjl@lucon.org
Wed Apr 21 21:13:00 GMT 2004


On Wed, Apr 21, 2004 at 01:52:07PM -0700, Mark Mitchell wrote:
> >
> >If we are building a shared library with DT_NEEDED pointed to the
> >unwind library called "libgcc_s.so.1", how can another compiler use
> >their unwind library, saying libmyunwind, with this DSO? If the C++
> >ABI covers unwind with shared library and executable, it should also
> >specify how the unwind library should be handled at link time as well
> >as at run time.
> > 
> >
> The ABI says:
> 
> An implementation shall place its standard support library in a DSO 
> named |libcxa.so| on Itanium systems, or in auxiliary DSOs automatically 
> loaded by it.  It shall place implicit compiler support in a library 
> separate from the standard support library, with any external names 
> chosen to avoid conflicts between vendors (e.g. by including a vendor 
> identifier as part of the names).
> 
> The reference to "Itanium" is accidental.
> 
> GCC, for whatever reason, has never provided libcxa.so.  That library 
> should contain all of the C++ ABI stuff, and should be *completely 
> interchangeable* between vendor implementations.  The complete set of 
> interfaces and the behavior of those interfaces is specified by the C++ 
> ABI.  It should not matter whose libcxa.so you get; if it does matter 
> either your program or the libcxa.so implementation you're using has a bug.
> 

So it is almost totally a run-time issue. You can link against a dummy
libcxa.so if you want. It is the one picked up by the dynamic linker
counts.

> Since GCC has never provided this library, there are going to be 
> challenges here.
> 
> The first step is to undo the versioning mistake.  That's a sine qua non 
> for anything else.  After that, someone should implement libcxa.so.  
> Probably, libgcc will need to depend on it, since existing programs 
> expect libgcc to provide these interfaces.

Where do those versioned definitions for backward compatibilty come
from? Should we consider libgcc_s.so.2?


H.J.



More information about the Gcc mailing list