summaryrefslogtreecommitdiffstats
path: root/libcxxabi/src
diff options
context:
space:
mode:
authorLouis Dionne <ldionne@apple.com>2019-06-27 20:17:22 +0000
committerLouis Dionne <ldionne@apple.com>2019-06-27 20:17:22 +0000
commit223df5b54021cfa4c67d4e09e1dc1b3b9e6a9de7 (patch)
tree77c9aa3010462895532a5b2f06c899ea3dcce5da /libcxxabi/src
parenta95ca2b5ff1bf90199b87fbd1b0afbe07af5c156 (diff)
downloadbcm5719-llvm-223df5b54021cfa4c67d4e09e1dc1b3b9e6a9de7.tar.gz
bcm5719-llvm-223df5b54021cfa4c67d4e09e1dc1b3b9e6a9de7.zip
[libcxxabi] Use an explicit list to export symbols from the dylib
Reviewers: EricWF Subscribers: mgorny, christof, jkorous, dexonsmith, libcxx-commits Tags: #libc Differential Revision: https://reviews.llvm.org/D63345 llvm-svn: 364586
Diffstat (limited to 'libcxxabi/src')
-rw-r--r--libcxxabi/src/CMakeLists.txt21
1 files changed, 21 insertions, 0 deletions
diff --git a/libcxxabi/src/CMakeLists.txt b/libcxxabi/src/CMakeLists.txt
index 77f00987097..45d4d025361 100644
--- a/libcxxabi/src/CMakeLists.txt
+++ b/libcxxabi/src/CMakeLists.txt
@@ -147,6 +147,12 @@ if (LLVM_ENABLE_MODULES)
string(REPLACE "-Wl,-z,defs" "" CMAKE_SHARED_LINKER_FLAGS "${CMAKE_SHARED_LINKER_FLAGS}")
endif()
+if ("${CMAKE_OSX_ARCHITECTURES}" MATCHES "^(armv6|armv7|armv7s)$")
+ set(LIBCXXABI_USE_SJLJ_EXCEPTIONS ON)
+else()
+ set(LIBCXXABI_USE_SJLJ_EXCEPTIONS OFF)
+endif()
+
# Build the shared library.
if (LIBCXXABI_ENABLE_SHARED)
add_library(cxxabi_shared SHARED ${LIBCXXABI_SOURCES} ${LIBCXXABI_HEADERS})
@@ -181,6 +187,21 @@ if (LIBCXXABI_ENABLE_SHARED)
if (LIBCXXABI_INSTALL_SHARED_LIBRARY)
list(APPEND LIBCXXABI_INSTALL_TARGETS "cxxabi_shared")
endif()
+
+ # -exported_symbols_list is only available on Apple platforms
+ if (APPLE)
+ target_link_libraries(cxxabi_shared PRIVATE "-Wl,-exported_symbols_list,${CMAKE_CURRENT_SOURCE_DIR}/../lib/itanium-base.exp")
+
+ if (LIBCXXABI_ENABLE_NEW_DELETE_DEFINITIONS)
+ target_link_libraries(cxxabi_shared PRIVATE "-Wl,-exported_symbols_list,${CMAKE_CURRENT_SOURCE_DIR}/../lib/new-delete.exp")
+ endif()
+
+ if (LIBCXXABI_USE_SJLJ_EXCEPTIONS)
+ target_link_libraries(cxxabi_shared PRIVATE "-Wl,-exported_symbols_list,${CMAKE_CURRENT_SOURCE_DIR}/../lib/personality-sjlj.exp")
+ else()
+ target_link_libraries(cxxabi_shared PRIVATE "-Wl,-exported_symbols_list,${CMAKE_CURRENT_SOURCE_DIR}/../lib/personality-v0.exp")
+ endif()
+ endif()
endif()
# Build the static library.
OpenPOWER on IntegriCloud