versioning of _Unwind_*() symbols

Mark Mitchell mark@codesourcery.com
Thu Apr 22 17:07:00 GMT 2004


H. J. Lu wrote:

>There is no strong
>reason for a C++ ABI compliant compiler to ship their own unwind
>library if there is a C++ ABI compliant system unwind library.
>
>  
>
I agree. 

However, we shouldn't call this the unwind library.  In addition to 
unwinding routines, it contains things operator new/delete and 
__cxa_dynamic_cast.  Let's call it the ABI library.

There may be good reasons for having a compiler-specific personality 
routine, but that would not be part of the ABI library.  It is possible 
that some ABI libraries will be more efficient than others, so a 
compiler might want to provide a version that is superior.  But, if a 
user chooses to use the system one instead, their programs will still work.

>Assuming the unwind library will be a standard library like the C
>library, symbol versioning will be a good thing for the standard
>library. But it shouldn't use version name like GCC or GLIBC.
>  
>
I don't agree with this statement. 

It means that users cannot replace the system ABI library with one 
provided by another compiler.

The way that the ABI contemplates dealing with versioning is by creating 
new function names.  That may be considered inferior and primitive, but 
it is the way that it is.  Any problem that would require a new version 
number on GNU/Linux will require a new function name on other systems.  
So, using version numbers will just make things different across systems 
for no good reason.

-- 
Mark Mitchell
CodeSourcery, LLC
(916) 791-8304
mark@codesourcery.com



More information about the Gcc mailing list