aboutsummaryrefslogtreecommitdiff
path: root/lib/libcxxrt
diff options
context:
space:
mode:
authorEd Maste <emaste@FreeBSD.org>2018-01-23 22:41:13 +0000
committerEd Maste <emaste@FreeBSD.org>2018-01-23 22:41:13 +0000
commit4d2a062671e06db09d443238d2ca0cc038012f82 (patch)
tree9392b5f31d773067b56a49b49619f2913153f3d1 /lib/libcxxrt
parent8557409f20b278bcf6bc287fff59e1b04a4fba05 (diff)
downloadsrc-4d2a062671e06db09d443238d2ca0cc038012f82.tar.gz
src-4d2a062671e06db09d443238d2ca0cc038012f82.zip
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
Notes
Notes: svn path=/head/; revision=328305
Diffstat (limited to 'lib/libcxxrt')
-rw-r--r--lib/libcxxrt/Version.map56
1 files changed, 28 insertions, 28 deletions
diff --git a/lib/libcxxrt/Version.map b/lib/libcxxrt/Version.map
index cef47b9dc6a3..1276fb405b5a 100644
--- a/lib/libcxxrt/Version.map
+++ b/lib/libcxxrt/Version.map
@@ -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,10 +216,36 @@ 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:
*;
};