Skip site navigation (1)Skip section navigation (2)
Date:      Tue, 23 Jan 2018 22:41:13 +0000 (UTC)
From:      Ed Maste <emaste@FreeBSD.org>
To:        src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org
Subject:   svn commit: r328305 - head/lib/libcxxrt
Message-ID:  <201801232241.w0NMfDWW002171@repo.freebsd.org>

next in thread | raw e-mail | index | archive | help
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:
     *;



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?201801232241.w0NMfDWW002171>