From e3c42855205e233688c851a0f4ce8fe9a0442866 Mon Sep 17 00:00:00 2001 From: Dimitry Andric Date: Wed, 22 Feb 2017 18:44:57 +0000 Subject: [PATCH] Surround any unmangled C++ names in libcxxrt's version map with 'extern "C++"', otherwise ld refuses to make the symbols global in the final library. This causes the __int128-related symbols to go missing when the library is stripped during installation. Helpful hints: emaste MFC after: 2 weeks X-MFC-With: r314061 --- lib/libcxxrt/Version.map | 28 ++++++++++++++++------------ 1 file changed, 16 insertions(+), 12 deletions(-) diff --git a/lib/libcxxrt/Version.map b/lib/libcxxrt/Version.map index 5cb186072323..39f98e371146 100644 --- a/lib/libcxxrt/Version.map +++ b/lib/libcxxrt/Version.map @@ -255,12 +255,14 @@ CXXABI_1.3.1 { } CXXABI_1.3; CXXABI_1.3.5 { - "typeinfo for __int128 const*"; - "typeinfo for __int128"; - "typeinfo for __int128*"; - "typeinfo for unsigned __int128 const*"; - "typeinfo for unsigned __int128"; - "typeinfo for unsigned __int128*"; + extern "C++" { + "typeinfo for __int128 const*"; + "typeinfo for __int128"; + "typeinfo for __int128*"; + "typeinfo for unsigned __int128 const*"; + "typeinfo for unsigned __int128"; + "typeinfo for unsigned __int128*"; + }; } CXXABI_1.3.1; CXXABI_1.3.6 { @@ -268,12 +270,14 @@ CXXABI_1.3.6 { } CXXABI_1.3.5; CXXABI_1.3.9 { - "typeinfo name for __int128 const*"; - "typeinfo name for __int128"; - "typeinfo name for __int128*"; - "typeinfo name for unsigned __int128 const*"; - "typeinfo name for unsigned __int128"; - "typeinfo name for unsigned __int128*"; + extern "C++" { + "typeinfo name for __int128 const*"; + "typeinfo name for __int128"; + "typeinfo name for __int128*"; + "typeinfo name for unsigned __int128 const*"; + "typeinfo name for unsigned __int128"; + "typeinfo name for unsigned __int128*"; + }; } CXXABI_1.3.6; CXXRT_1.0 {