summaryrefslogtreecommitdiffstats
path: root/libcxx
diff options
context:
space:
mode:
authorEric Fiselier <eric@efcs.ca>2017-04-15 05:41:45 +0000
committerEric Fiselier <eric@efcs.ca>2017-04-15 05:41:45 +0000
commit9b25fb7f4b5f0a4e9a99b32c8e08d57586c2ad34 (patch)
treec467cd63fd6e0d4703e3421c042d99f1d8e947de /libcxx
parentdad52660449aca2ba77e61a06afcc9cb52fd44fd (diff)
downloadbcm5719-llvm-9b25fb7f4b5f0a4e9a99b32c8e08d57586c2ad34.tar.gz
bcm5719-llvm-9b25fb7f4b5f0a4e9a99b32c8e08d57586c2ad34.zip
[libcxx] Fix check-cxx-abilist on OS X
Summary: Recent commits broke the check-cxx-abilist by changing the default OS X to use `-rexport_library` instead of `-reexport_symbol_list`. Apparently `-reexport_library` doesn't export the symbols into `libc++.dylib`s symbol table, whereas `-reexport_symbol_list` does. This means the change removed ~500 symbols from the symbol table. I've been told this change is non ABI breaking, but it does make it harder to maintain the ABI lists, and hence the ABI. This patch fixes the issue by switching back to `-reexport_symbol_list`. It still avoid the issues fixed in r299052 by putting the new/delete symbols in a different symbol list file, which is only exported when LIBCXX_ENABLE_NEW_DELETE_DEFINITIONS in OFF. Reviewers: mehdi_amini, smeenai, dexonsmith Reviewed By: smeenai Subscribers: mgorny, cfe-commits Differential Revision: https://reviews.llvm.org/D31644 llvm-svn: 300390
Diffstat (limited to 'libcxx')
-rw-r--r--libcxx/lib/CMakeLists.txt10
-rw-r--r--libcxx/lib/libc++abi-new-delete.exp8
-rw-r--r--libcxx/lib/libc++abi2.exp8
3 files changed, 12 insertions, 14 deletions
diff --git a/libcxx/lib/CMakeLists.txt b/libcxx/lib/CMakeLists.txt
index bc15be6798e..8f1d5715802 100644
--- a/libcxx/lib/CMakeLists.txt
+++ b/libcxx/lib/CMakeLists.txt
@@ -155,11 +155,7 @@ if (LIBCXX_OSX_REEXPORT_SYSTEM_ABI_LIBRARY)
"-Wl,-unexported_symbols_list,${CMAKE_CURRENT_SOURCE_DIR}/libc++unexp.exp"
"/usr/lib/libSystem.B.dylib")
else()
- if (LIBCXX_ENABLE_NEW_DELETE_DEFINITIONS)
- # We can't use the "-reexported_symbols_list" when we build the
- # new/delete operators as part of the dylib: the linker would fail.
- set(OSX_RE_EXPORT_LINE "-Wl,-reexport_library,${CMAKE_OSX_SYSROOT}/usr/lib/libc++abi.dylib")
- elseif (DEFINED CMAKE_OSX_SYSROOT AND NOT CMAKE_OSX_SYSROOT STREQUAL "")
+ if (DEFINED CMAKE_OSX_SYSROOT AND NOT CMAKE_OSX_SYSROOT STREQUAL "")
list(FIND CMAKE_OSX_ARCHITECTURES "armv7" OSX_HAS_ARMV7)
if (NOT OSX_HAS_ARMV7 EQUAL -1)
set(OSX_RE_EXPORT_LINE
@@ -171,8 +167,10 @@ if (LIBCXX_OSX_REEXPORT_SYSTEM_ABI_LIBRARY)
endif()
else()
set(OSX_RE_EXPORT_LINE "/usr/lib/libc++abi.dylib -Wl,-reexported_symbols_list,${CMAKE_CURRENT_SOURCE_DIR}/libc++abi${LIBCXX_LIBCPPABI_VERSION}.exp")
+ if (NOT LIBCXX_ENABLE_NEW_DELETE_DEFINITIONS)
+ add_link_flags("/usr/lib/libc++abi.dylib -Wl,-reexported_symbols_list,${CMAKE_CURRENT_SOURCE_DIR}/libc++abi-new-delete.exp")
+ endif()
endif()
-
add_link_flags(
"-compatibility_version 1"
"-install_name /usr/lib/libc++.1.dylib"
diff --git a/libcxx/lib/libc++abi-new-delete.exp b/libcxx/lib/libc++abi-new-delete.exp
new file mode 100644
index 00000000000..a9e651dd67e
--- /dev/null
+++ b/libcxx/lib/libc++abi-new-delete.exp
@@ -0,0 +1,8 @@
+__ZdaPv
+__ZdlPv
+__ZdlPvRKSt9nothrow_t
+__Znam
+__ZdaPvRKSt9nothrow_t
+__Znwm
+__ZnwmRKSt9nothrow_t
+__ZnamRKSt9nothrow_t
diff --git a/libcxx/lib/libc++abi2.exp b/libcxx/lib/libc++abi2.exp
index 6716a38b0f5..eb088f37057 100644
--- a/libcxx/lib/libc++abi2.exp
+++ b/libcxx/lib/libc++abi2.exp
@@ -209,14 +209,6 @@ __ZNSt20bad_array_new_lengthC2Ev
__ZNSt20bad_array_new_lengthD0Ev
__ZNSt20bad_array_new_lengthD2Ev
__ZSt10unexpectedv
-__ZdaPv
-__ZdlPv
-__ZdlPvRKSt9nothrow_t
-__Znam
-__ZdaPvRKSt9nothrow_t
-__Znwm
-__ZnwmRKSt9nothrow_t
-__ZnamRKSt9nothrow_t
__ZTISt10bad_typeid
__ZTISt8bad_cast
___cxa_bad_typeid
OpenPOWER on IntegriCloud