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