diff options
| author | Louis Dionne <ldionne@apple.com> | 2019-06-27 20:17:22 +0000 |
|---|---|---|
| committer | Louis Dionne <ldionne@apple.com> | 2019-06-27 20:17:22 +0000 |
| commit | 223df5b54021cfa4c67d4e09e1dc1b3b9e6a9de7 (patch) | |
| tree | 77c9aa3010462895532a5b2f06c899ea3dcce5da /libcxxabi/src | |
| parent | a95ca2b5ff1bf90199b87fbd1b0afbe07af5c156 (diff) | |
| download | bcm5719-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.txt | 21 |
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. |

