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
This commit is contained in:
Ed Maste 2018-01-23 22:41:13 +00:00
parent 8557409f20
commit 4d2a062671

View File

@ -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:
*;
};