RFH: Symbol versions for __aeabi symbols

Mark Mitchell mark@codesourcery.com
Mon Jul 7 20:27:00 GMT 2008


In libsupc++, there are helper functions to handle things like array 
construction and destruction.  There are generic versions mandated by 
the C++ ABI specification and, on ARM platforms, there are also 
ARM-specific __aeabi variants with calling conventions that are more 
efficient on ARM CPUs.

We've never exported these ARM-specific symbols from libstdc++.so, even 
though we do export the generic equivalents.  We never noticed because 
GCC itself never tries to use these symbols.  However, I recently fixed 
a bug in the implementation of them, and, in so doing, added a test case 
for them.  The test cases passes on bare-metal systems (where I tested), 
but not on ARM GNU/Linux systems, because the test cases link 
dynamically with libstdc++, and since the symbols are not exported, the 
link fails.

So, I need to add the appropriate export directives.  I have two questions:

1. What version should I use?

In config/abi/pre/gnu.ver, it looks like the non-ARM variants are 
exported with version CXXABI_1.3.  Should I just put the ARM variants 
there too?  Or add them to CXXABI_1.3.2, which is the latest version? 
Or create a new CXXABI_1.3.3 version?

2. Is it bad to add them unconditionally, even though the symbols are 
only defined on ARM platforms?  Or do I need to somehow conditionalize 
on being on an ARM system?  And, if so, how do I do that?

Thanks,

-- 
Mark Mitchell
CodeSourcery
mark@codesourcery.com
(650) 331-3385 x713



More information about the Libstdc++ mailing list