PR61536 is a case where linking fails on arm-linux-gnueabi* and
arm-eabi* systems as the C++ ABI for ARM specifies out of line
comparison operators for typeinfo.
Rev r211355 tightened the symbols exported by libstdc++ a bit too much
which caused some carnage in the test results for arm-linux-gnueabihf.
Paolo proposed this on the bugzilla and asked if I could commit it. I've
tweaked the comment slightly.
Tested on arm-none-linux-gnueabihf and verified the link time failures
now disappear.
Applied to trunk.
Ramana
2014-06-18 Paolo Carlini <paolo.carl...@oracle.com>
Ramana Radhakrishnan <ramana.radhakrish...@arm.com>
PR libstdc++/61536
* config/abi/pre/gnu.ver: Adjust for out of line comparisons.
diff --git a/libstdc++-v3/config/abi/pre/gnu.ver
b/libstdc++-v3/config/abi/pre/gnu.ver
index e7de756..63c9130 100644
--- a/libstdc++-v3/config/abi/pre/gnu.ver
+++ b/libstdc++-v3/config/abi/pre/gnu.ver
@@ -16,6 +16,18 @@
## You should have received a copy of the GNU General Public License along
## with this library; see the file COPYING3. If not see
## <http://www.gnu.org/licenses/>.
+// By default follow the old inline rules to avoid ABI changes.
+// Logic similar to libsupc++/typeinfo (libstdc++/61536). See
+// commentary on out of line comparisons.
+
+#ifndef __GXX_TYPEINFO_EQUALITY_INLINE
+ #if !__GXX_WEAK__
+ #define __GXX_TYPEINFO_EQUALITY_INLINE 0
+ #else
+ #define __GXX_TYPEINFO_EQUALITY_INLINE 1
+ #endif
+#endif
+
GLIBCXX_3.4 {
@@ -760,6 +772,11 @@ GLIBCXX_3.4 {
_ZNKSt9type_info1*;
_ZNSt9type_infoD*;
+#if !__GXX_TYPEINFO_EQUALITY_INLINE
+ _ZNKSt9type_info6before*;
+ _ZNKSt9type_infoeq*;
+#endif
+
# std::exception
_ZNKSt9exception4whatEv;
_ZNSt9exceptionD*;