diff mbox

[libstdc++] PR61536 Export out of line comparison operations.

Message ID 53A15F08.5060308@arm.com
State New
Headers show

Commit Message

Ramana Radhakrishnan June 18, 2014, 9:42 a.m. UTC
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.carlini@oracle.com>
	    Ramana Radhakrishnan  <ramana.radhakrishnan@arm.com>

	PR libstdc++/61536
	* config/abi/pre/gnu.ver: Adjust for out of line comparisons.
diff mbox

Patch

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*;