Author: emaste
Date: Tue Jan 23 22:41:13 2018
New Revision: 328305
URL: https://svnweb.freebsd.org/changeset/base/328305

Log:
  libcxxrt: Move mangled symbols out of extern "C++" in Version.map
  
  r260553 added a number of mangled C++ symbols to Version.map inside of
  an existing `extern "C++"` block.
  
  ld.bfd 2.17.50 treats `extern "C++"` permissively and will match both
  mangled and demangled symbols against the strings in the version map
  block.  ld.lld interprets `extern "C++"` strictly, and matches only
  demangled symbols.
  
  I believe lld's behaviour is correct.  Contemporary versions of ld.bfd
  also behave as lld does, so move the mangled symbols out of the
  `extern "C++"` block.
  
  PR:           225128, 185663
  MFC after:    1 week
  Sponsored by: The FreeBSD Foundation

Modified:
  head/lib/libcxxrt/Version.map

Modified: head/lib/libcxxrt/Version.map
==============================================================================
--- head/lib/libcxxrt/Version.map       Tue Jan 23 22:18:45 2018        
(r328304)
+++ head/lib/libcxxrt/Version.map       Tue Jan 23 22:41:13 2018        
(r328305)
@@ -112,19 +112,6 @@ CXXABI_1.3 {
         "typeinfo for void";
         "typeinfo for wchar_t const*";
         "typeinfo for wchar_t";
-        # C++11 typeinfo not understood by our linker
-        # std::nullptr_t
-        _ZTIDn;_ZTIPDn;_ZTIPKDn;
-        # char16_t
-        _ZTIDi;_ZTIPDi;_ZTIPKDi;
-        # char32_t
-        _ZTIDs;_ZTIPDs;_ZTIPKDs;
-        # IEEE 754r decimal floating point
-        _ZTIDd;_ZTIPDd;_ZTIPKDd;
-        _ZTIDe;_ZTIPDe;_ZTIPKDe;
-        _ZTIDf;_ZTIPDf;_ZTIPKDf;
-        # IEEE 754r half-precision floating point
-        _ZTIDh;_ZTIPDh;_ZTIPKDh;
 
         "typeinfo for bool*";
         "typeinfo for wchar_t*";
@@ -209,19 +196,6 @@ CXXABI_1.3 {
         "typeinfo name for void*";
         "typeinfo name for unsigned int*";
         "typeinfo name for float*";
-        # C++11 typeinfo name not understood by our linker
-        # std::nullptr_t
-        _ZTSDn;_ZTSPDn;_ZTSPKDn;
-        # char16_t
-        _ZTSDi;_ZTSPDi;_ZTSPKDi;
-        # char32_t
-        _ZTSDs;_ZTSPDs;_ZTSPKDs;
-        # IEEE 754r decimal floating point
-        _ZTSDd;_ZTSPDd;_ZTSPKDd;
-        _ZTSDe;_ZTSPDe;_ZTSPKDe;
-        _ZTSDf;_ZTSPDf;_ZTSPKDf;
-        # IEEE 754r half-precision floating point
-        _ZTSDh;_ZTSPDh;_ZTSPKDh;
 
         "typeinfo name for __cxxabiv1::__array_type_info";
         "typeinfo name for __cxxabiv1::__class_type_info";
@@ -242,9 +216,35 @@ CXXABI_1.3 {
         "pathscale::set_terminate(void (*)())";
         "pathscale::set_unexpected(void (*)())";
         "pathscale::set_use_thread_local_handlers(bool)";
+    };
 
+    # C++11 typeinfo not understood by ld.bfd 2.17.50
+    # std::nullptr_t
+    _ZTIDn;_ZTIPDn;_ZTIPKDn;
+    # char16_t
+    _ZTIDi;_ZTIPDi;_ZTIPKDi;
+    # char32_t
+    _ZTIDs;_ZTIPDs;_ZTIPKDs;
+    # IEEE 754r decimal floating point
+    _ZTIDd;_ZTIPDd;_ZTIPKDd;
+    _ZTIDe;_ZTIPDe;_ZTIPKDe;
+    _ZTIDf;_ZTIPDf;_ZTIPKDf;
+    # IEEE 754r half-precision floating point
+    _ZTIDh;_ZTIPDh;_ZTIPKDh;
 
-    };
+    # C++11 typeinfo name not understood by ld.bfd 2.17.50
+    # std::nullptr_t
+    _ZTSDn;_ZTSPDn;_ZTSPKDn;
+    # char16_t
+    _ZTSDi;_ZTSPDi;_ZTSPKDi;
+    # char32_t
+    _ZTSDs;_ZTSPDs;_ZTSPKDs;
+    # IEEE 754r decimal floating point
+    _ZTSDd;_ZTSPDd;_ZTSPKDd;
+    _ZTSDe;_ZTSPDe;_ZTSPKDe;
+    _ZTSDf;_ZTSPDf;_ZTSPKDf;
+    # IEEE 754r half-precision floating point
+    _ZTSDh;_ZTSPDh;_ZTSPKDh;
 
   local:
     *;
_______________________________________________
svn-src-all@freebsd.org mailing list
https://lists.freebsd.org/mailman/listinfo/svn-src-all
To unsubscribe, send any mail to "svn-src-all-unsubscr...@freebsd.org"

Reply via email to