From ecf313c01ddefb8191d87e516586c37f84862837 Mon Sep 17 00:00:00 2001 From: Louis Dionne Date: Mon, 20 Apr 2020 05:22:20 -0400 Subject: [PATCH] [libc++] Fix the no-exceptions build of libc++ on Apple We previously tried re-exporting symbols that didn't exist when exceptions were disabled. Note that building libc++abi without exceptions still doesn't work when linking against the default-provided libSystem.dylib, because it transitively depends on libobjc.dylib, and that requires __gxx_personality_v0. But building libc++abi with exceptions and libc++ without exceptions does work. --- libcxx/lib/abi/CMakeLists.txt | 3 +- libcxx/lib/libc++abi-exceptions.exp | 10 + libcxx/lib/libc++abi-exceptions.sjlj.exp | 10 + libcxx/lib/libc++abi.v1.exp | 10 - libcxx/lib/libc++abi.v2.exp | 10 - libcxx/lib/libc++sjlj-abi.v1.exp | 160 ------------ libcxx/lib/libc++sjlj-abi.v2.exp | 310 ----------------------- libcxx/src/CMakeLists.txt | 15 +- libcxxabi/lib/exceptions.exp | 11 + libcxxabi/lib/itanium-base.exp | 13 +- libcxxabi/src/CMakeLists.txt | 18 +- 11 files changed, 51 insertions(+), 519 deletions(-) create mode 100644 libcxx/lib/libc++abi-exceptions.exp create mode 100644 libcxx/lib/libc++abi-exceptions.sjlj.exp delete mode 100644 libcxx/lib/libc++sjlj-abi.v1.exp delete mode 100644 libcxx/lib/libc++sjlj-abi.v2.exp create mode 100644 libcxxabi/lib/exceptions.exp diff --git a/libcxx/lib/abi/CMakeLists.txt b/libcxx/lib/abi/CMakeLists.txt index bb9217f884727e..0fa3aacfb0e2bd 100644 --- a/libcxx/lib/abi/CMakeLists.txt +++ b/libcxx/lib/abi/CMakeLists.txt @@ -21,7 +21,8 @@ if (EXISTS "${ABILIST_FILE}" AND TARGET cxx_shared AND ("${LIBCXX_CXX_ABI_LIBNAME}" STREQUAL "libcxxabi" OR (APPLE AND "${LIBCXX_CXX_ABI_LIBNAME}" STREQUAL "default")) - AND NOT LIBCXX_ABI_UNSTABLE) + AND NOT LIBCXX_ABI_UNSTABLE + AND LIBCXX_ENABLE_EXCEPTIONS) add_custom_target(check-cxx-abilist ${SYMDIFF_EXE} --only-stdlib-symbols --strict ${ABILIST_FILE} $ diff --git a/libcxx/lib/libc++abi-exceptions.exp b/libcxx/lib/libc++abi-exceptions.exp new file mode 100644 index 00000000000000..600a65ffead210 --- /dev/null +++ b/libcxx/lib/libc++abi-exceptions.exp @@ -0,0 +1,10 @@ +___cxa_allocate_exception +___cxa_begin_catch +___cxa_call_unexpected +___cxa_current_exception_type +___cxa_end_catch +___cxa_free_exception +___cxa_get_exception_ptr +___cxa_rethrow +___cxa_throw +___gxx_personality_v0 diff --git a/libcxx/lib/libc++abi-exceptions.sjlj.exp b/libcxx/lib/libc++abi-exceptions.sjlj.exp new file mode 100644 index 00000000000000..10073d615c2443 --- /dev/null +++ b/libcxx/lib/libc++abi-exceptions.sjlj.exp @@ -0,0 +1,10 @@ +___cxa_allocate_exception +___cxa_begin_catch +___cxa_call_unexpected +___cxa_current_exception_type +___cxa_end_catch +___cxa_free_exception +___cxa_get_exception_ptr +___cxa_rethrow +___cxa_throw +___gxx_personality_sj0 diff --git a/libcxx/lib/libc++abi.v1.exp b/libcxx/lib/libc++abi.v1.exp index 879b4dd141e51f..c245b17a9053bf 100644 --- a/libcxx/lib/libc++abi.v1.exp +++ b/libcxx/lib/libc++abi.v1.exp @@ -1,20 +1,11 @@ -___cxa_allocate_exception -___cxa_end_catch ___cxa_demangle -___cxa_current_exception_type -___cxa_call_unexpected -___cxa_free_exception -___cxa_get_exception_ptr ___cxa_get_globals ___cxa_get_globals_fast ___cxa_guard_abort ___cxa_guard_acquire ___cxa_guard_release -___cxa_rethrow ___cxa_pure_virtual ___cxa_deleted_virtual -___cxa_begin_catch -___cxa_throw ___cxa_vec_cctor ___cxa_vec_cleanup ___cxa_vec_ctor @@ -26,7 +17,6 @@ ___cxa_vec_new ___cxa_vec_new2 ___cxa_vec_new3 ___dynamic_cast -___gxx_personality_v0 __ZTIDi __ZTIDn __ZTIDs diff --git a/libcxx/lib/libc++abi.v2.exp b/libcxx/lib/libc++abi.v2.exp index dfc308f8010e05..6a3e6b9f0222e0 100644 --- a/libcxx/lib/libc++abi.v2.exp +++ b/libcxx/lib/libc++abi.v2.exp @@ -1,20 +1,11 @@ -___cxa_allocate_exception -___cxa_end_catch ___cxa_demangle -___cxa_current_exception_type -___cxa_call_unexpected -___cxa_free_exception -___cxa_get_exception_ptr ___cxa_get_globals ___cxa_get_globals_fast ___cxa_guard_abort ___cxa_guard_acquire ___cxa_guard_release -___cxa_rethrow ___cxa_pure_virtual ___cxa_deleted_virtual -___cxa_begin_catch -___cxa_throw ___cxa_throw_bad_array_new_length ___cxa_uncaught_exceptions ___cxa_vec_cctor @@ -28,7 +19,6 @@ ___cxa_vec_new ___cxa_vec_new2 ___cxa_vec_new3 ___dynamic_cast -___gxx_personality_v0 __ZTIDi __ZTIDn __ZTIDs diff --git a/libcxx/lib/libc++sjlj-abi.v1.exp b/libcxx/lib/libc++sjlj-abi.v1.exp deleted file mode 100644 index f494e17cfdeef1..00000000000000 --- a/libcxx/lib/libc++sjlj-abi.v1.exp +++ /dev/null @@ -1,160 +0,0 @@ -___cxa_allocate_exception -___cxa_end_catch -___cxa_demangle -___cxa_current_exception_type -___cxa_call_unexpected -___cxa_free_exception -___cxa_get_exception_ptr -___cxa_get_globals -___cxa_get_globals_fast -___cxa_guard_abort -___cxa_guard_acquire -___cxa_guard_release -___cxa_rethrow -___cxa_pure_virtual -___cxa_deleted_virtual -___cxa_begin_catch -___cxa_throw -___cxa_vec_cctor -___cxa_vec_cleanup -___cxa_vec_ctor -___cxa_vec_delete -___cxa_vec_delete2 -___cxa_vec_delete3 -___cxa_vec_dtor -___cxa_vec_new -___cxa_vec_new2 -___cxa_vec_new3 -___dynamic_cast -___gxx_personality_sj0 -__ZTIDi -__ZTIDn -__ZTIDs -__ZTIPDi -__ZTIPDn -__ZTIPDs -__ZTIPKDi -__ZTIPKDn -__ZTIPKDs -__ZTSPm -__ZTSPl -__ZTSPj -__ZTSPi -__ZTSPh -__ZTSPf -__ZTSPe -__ZTSPd -__ZTSPc -__ZTSPb -__ZTSPa -__ZTSPKc -__ZTSPKy -__ZTSPKx -__ZTSPKw -__ZTSPKv -__ZTSPKt -__ZTSPKs -__ZTSPKm -__ZTSPKl -__ZTSPKi -__ZTSPKh -__ZTSPs -__ZTSPt -__ZTSPv -__ZTSPw -__ZTSPKa -__ZTSPx -__ZTSPy -__ZTSPKd -__ZTSPKe -__ZTSPKj -__ZTSPKb -__ZTSPKf -__ZTSv -__ZTSt -__ZTSs -__ZTSm -__ZTSl -__ZTSj -__ZTSi -__ZTSh -__ZTSf -__ZTSe -__ZTSd -__ZTSc -__ZTSw -__ZTSx -__ZTSy -__ZTSb -__ZTSa -__ZTIPKh -__ZTIPKf -__ZTIPKe -__ZTIPKd -__ZTIPKc -__ZTIPKb -__ZTIPKa -__ZTIPy -__ZTIPx -__ZTIPw -__ZTIPv -__ZTIPt -__ZTIPs -__ZTIPm -__ZTIPl -__ZTIPj -__ZTIPi -__ZTIPKi -__ZTIPKj -__ZTIPKl -__ZTIPKm -__ZTIPKs -__ZTIPKt -__ZTIPKv -__ZTIPKw -__ZTIPKx -__ZTIPKy -__ZTIPa -__ZTIPb -__ZTIPc -__ZTIPd -__ZTIPe -__ZTIPf -__ZTIPh -__ZTVN10__cxxabiv129__pointer_to_member_type_infoE -__ZTVN10__cxxabiv116__enum_type_infoE -__ZTVN10__cxxabiv117__array_type_infoE -__ZTVN10__cxxabiv117__class_type_infoE -__ZTVN10__cxxabiv117__pbase_type_infoE -__ZTVN10__cxxabiv119__pointer_type_infoE -__ZTVN10__cxxabiv120__function_type_infoE -__ZTVN10__cxxabiv120__si_class_type_infoE -__ZTVN10__cxxabiv121__vmi_class_type_infoE -__ZTVN10__cxxabiv123__fundamental_type_infoE -__ZTIa -__ZTIb -__ZTIc -__ZTId -__ZTIe -__ZTIf -__ZTIh -__ZTIi -__ZTIj -__ZTIl -__ZTIm -__ZTIs -__ZTIt -__ZTSN10__cxxabiv129__pointer_to_member_type_infoE -__ZTSN10__cxxabiv123__fundamental_type_infoE -__ZTSN10__cxxabiv121__vmi_class_type_infoE -__ZTSN10__cxxabiv120__si_class_type_infoE -__ZTSN10__cxxabiv120__function_type_infoE -__ZTSN10__cxxabiv119__pointer_type_infoE -__ZTSN10__cxxabiv117__pbase_type_infoE -__ZTSN10__cxxabiv117__class_type_infoE -__ZTSN10__cxxabiv117__array_type_infoE -__ZTSN10__cxxabiv116__enum_type_infoE -__ZTIy -__ZTIx -__ZTIw -__ZTIv diff --git a/libcxx/lib/libc++sjlj-abi.v2.exp b/libcxx/lib/libc++sjlj-abi.v2.exp deleted file mode 100644 index 24f53e8283533e..00000000000000 --- a/libcxx/lib/libc++sjlj-abi.v2.exp +++ /dev/null @@ -1,310 +0,0 @@ -___cxa_allocate_exception -___cxa_end_catch -___cxa_demangle -___cxa_current_exception_type -___cxa_call_unexpected -___cxa_free_exception -___cxa_get_exception_ptr -___cxa_get_globals -___cxa_get_globals_fast -___cxa_guard_abort -___cxa_guard_acquire -___cxa_guard_release -___cxa_rethrow -___cxa_pure_virtual -___cxa_begin_catch -___cxa_throw -___cxa_vec_cctor -___cxa_vec_cleanup -___cxa_vec_ctor -___cxa_vec_delete -___cxa_vec_delete2 -___cxa_vec_delete3 -___cxa_vec_dtor -___cxa_vec_new -___cxa_vec_new2 -___cxa_vec_new3 -___dynamic_cast -___gxx_personality_sj0 -__ZTIDi -__ZTIDn -__ZTIDs -__ZTIPDi -__ZTIPDn -__ZTIPDs -__ZTIPKDi -__ZTIPKDn -__ZTIPKDs -__ZTSPm -__ZTSPl -__ZTSPj -__ZTSPi -__ZTSPh -__ZTSPf -__ZTSPe -__ZTSPd -__ZTSPc -__ZTSPb -__ZTSPa -__ZTSPKc -__ZTSPKy -__ZTSPKx -__ZTSPKw -__ZTSPKv -__ZTSPKt -__ZTSPKs -__ZTSPKm -__ZTSPKl -__ZTSPKi -__ZTSPKh -__ZTSPs -__ZTSPt -__ZTSPv -__ZTSPw -__ZTSPKa -__ZTSPx -__ZTSPy -__ZTSPKd -__ZTSPKe -__ZTSPKj -__ZTSPKb -__ZTSPKf -__ZTSv -__ZTSt -__ZTSs -__ZTSm -__ZTSl -__ZTSj -__ZTSi -__ZTSh -__ZTSf -__ZTSe -__ZTSd -__ZTSc -__ZTSw -__ZTSx -__ZTSy -__ZTSb -__ZTSa -__ZTIPKh -__ZTIPKf -__ZTIPKe -__ZTIPKd -__ZTIPKc -__ZTIPKb -__ZTIPKa -__ZTIPy -__ZTIPx -__ZTIPw -__ZTIPv -__ZTIPt -__ZTIPs -__ZTIPm -__ZTIPl -__ZTIPj -__ZTIPi -__ZTIPKi -__ZTIPKj -__ZTIPKl -__ZTIPKm -__ZTIPKs -__ZTIPKt -__ZTIPKv -__ZTIPKw -__ZTIPKx -__ZTIPKy -__ZTIPa -__ZTIPb -__ZTIPc -__ZTIPd -__ZTIPe -__ZTIPf -__ZTIPh -__ZTVN10__cxxabiv129__pointer_to_member_type_infoE -__ZTVN10__cxxabiv116__enum_type_infoE -__ZTVN10__cxxabiv117__array_type_infoE -__ZTVN10__cxxabiv117__class_type_infoE -__ZTVN10__cxxabiv117__pbase_type_infoE -__ZTVN10__cxxabiv119__pointer_type_infoE -__ZTVN10__cxxabiv120__function_type_infoE -__ZTVN10__cxxabiv120__si_class_type_infoE -__ZTVN10__cxxabiv121__vmi_class_type_infoE -__ZTVN10__cxxabiv123__fundamental_type_infoE -__ZTIa -__ZTIb -__ZTIc -__ZTId -__ZTIe -__ZTIf -__ZTIh -__ZTIi -__ZTIj -__ZTIl -__ZTIm -__ZTIs -__ZTIt -__ZTSN10__cxxabiv129__pointer_to_member_type_infoE -__ZTSN10__cxxabiv123__fundamental_type_infoE -__ZTSN10__cxxabiv121__vmi_class_type_infoE -__ZTSN10__cxxabiv120__si_class_type_infoE -__ZTSN10__cxxabiv120__function_type_infoE -__ZTSN10__cxxabiv119__pointer_type_infoE -__ZTSN10__cxxabiv117__pbase_type_infoE -__ZTSN10__cxxabiv117__class_type_infoE -__ZTSN10__cxxabiv117__array_type_infoE -__ZTSN10__cxxabiv116__enum_type_infoE -__ZTIy -__ZTIx -__ZTIw -__ZTIv -__ZSt13get_terminatev -__ZSt13set_terminatePFvvE -__ZSt14get_unexpectedv -__ZSt14set_unexpectedPFvvE -__ZSt15get_new_handlerv -__ZSt15set_new_handlerPFvvE -__ZSt9terminatev -__ZNSt9bad_allocD1Ev -__ZTISt9bad_alloc -__ZNSt9bad_allocC1Ev -__ZTISt13bad_exception -__ZTVSt10bad_typeid -__ZTVSt9exception -__ZNSt10bad_typeidC1Ev -__ZNSt10bad_typeidC1Ev -__ZNKSt10bad_typeid4whatEv -__ZNSt10bad_typeidD1Ev -__ZTVSt8bad_cast -__ZNSt8bad_castC1Ev -__ZNSt8bad_castC2Ev -__ZNSt8bad_castD0Ev -__ZNKSt8bad_cast4whatEv -__ZNSt8bad_castD1Ev -__ZNSt8bad_castD2Ev -__ZTVSt9bad_alloc -__ZTVSt20bad_array_new_length -__ZTVSt13bad_exception -__ZNKSt9exception4whatEv -__ZNKSt9bad_alloc4whatEv -__ZNSt9bad_allocC2Ev -__ZNSt9bad_allocD0Ev -__ZNSt9bad_allocD2Ev -__ZNSt9exceptionD0Ev -__ZNSt20bad_array_new_lengthC1Ev -__ZNKSt13bad_exception4whatEv -__ZNSt9exceptionD1Ev -__ZNKSt20bad_array_new_length4whatEv -__ZNSt13bad_exceptionD1Ev -__ZNSt20bad_array_new_lengthD1Ev -__ZNSt9exceptionD2Ev -__ZNSt9type_infoD0Ev -__ZNSt9type_infoD1Ev -__ZNSt9type_infoD2Ev -__ZNSt10bad_typeidC2Ev -__ZNSt10bad_typeidD0Ev -__ZNSt10bad_typeidD2Ev -__ZNSt13bad_exceptionD0Ev -__ZNSt13bad_exceptionD2Ev -__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 -___cxa_bad_cast -__ZTISt9exception -__ZTISt9type_info -__ZTISt20bad_array_new_length - -__ZNKSt11logic_error4whatEv -__ZNSt11logic_errorD0Ev -__ZNSt11logic_errorD1Ev -__ZNSt11logic_errorD2Ev -__ZTISt11logic_error -__ZTSSt11logic_error -__ZTVSt11logic_error - -__ZNKSt13runtime_error4whatEv -__ZNSt13runtime_errorD0Ev -__ZNSt13runtime_errorD1Ev -__ZNSt13runtime_errorD2Ev -__ZTISt13runtime_error -__ZTSSt13runtime_error -__ZTVSt13runtime_error - -__ZNSt11range_errorD0Ev -__ZNSt11range_errorD1Ev -__ZNSt11range_errorD2Ev -__ZTISt11range_error -__ZTSSt11range_error -__ZTVSt11range_error - -__ZNSt12domain_errorD0Ev -__ZNSt12domain_errorD1Ev -__ZNSt12domain_errorD2Ev -__ZTISt12domain_error -__ZTSSt12domain_error -__ZTVSt12domain_error - -__ZNSt12length_errorD0Ev -__ZNSt12length_errorD1Ev -__ZNSt12length_errorD2Ev -__ZTISt12length_error -__ZTSSt12length_error -__ZTVSt12length_error - -__ZNSt12out_of_rangeD0Ev -__ZNSt12out_of_rangeD1Ev -__ZNSt12out_of_rangeD2Ev -__ZTISt12out_of_range -__ZTSSt12out_of_range -__ZTVSt12out_of_range - -__ZNSt14overflow_errorD0Ev -__ZNSt14overflow_errorD1Ev -__ZNSt14overflow_errorD2Ev -__ZTISt14overflow_error -__ZTSSt14overflow_error -__ZTVSt14overflow_error - -__ZNSt15underflow_errorD0Ev -__ZNSt15underflow_errorD1Ev -__ZNSt15underflow_errorD2Ev -__ZTISt15underflow_error -__ZTSSt15underflow_error -__ZTVSt15underflow_error - -__ZNSt16invalid_argumentD0Ev -__ZNSt16invalid_argumentD1Ev -__ZNSt16invalid_argumentD2Ev -__ZTISt16invalid_argument -__ZTSSt16invalid_argument -__ZTVSt16invalid_argument - -__ZTSDi -__ZTSDn -__ZTSDs -__ZTSPDi -__ZTSPDn -__ZTSPDs -__ZTSPKDi -__ZTSPKDn -__ZTSPKDs - -__ZTSSt8bad_cast -__ZTSSt9bad_alloc -__ZTSSt9exception -__ZTSSt9type_info -__ZTSSt10bad_typeid -__ZTSSt13bad_exception -__ZTSSt20bad_array_new_length -__ZTVSt9type_info diff --git a/libcxx/src/CMakeLists.txt b/libcxx/src/CMakeLists.txt index 6b801b4f149235..b55946f6cac387 100644 --- a/libcxx/src/CMakeLists.txt +++ b/libcxx/src/CMakeLists.txt @@ -205,17 +205,20 @@ if (LIBCXX_ENABLE_SHARED) endif() if (LIBCXX_OSX_REEXPORT_LIBCXXABI_SYMBOLS) - if ("${CMAKE_OSX_ARCHITECTURES}" MATCHES "^(armv6|armv7|armv7s)$") - set(RE_EXPORT_LIST "${CMAKE_CURRENT_SOURCE_DIR}/../lib/libc++sjlj-abi.v${LIBCXX_LIBCPPABI_VERSION}.exp") - else() - set(RE_EXPORT_LIST "${CMAKE_CURRENT_SOURCE_DIR}/../lib/libc++abi.v${LIBCXX_LIBCPPABI_VERSION}.exp") - endif() target_link_libraries(cxx_shared PRIVATE "-Wl,-unexported_symbols_list,${CMAKE_CURRENT_SOURCE_DIR}/../lib/libc++unexp.exp" - "-Wl,-reexported_symbols_list,${RE_EXPORT_LIST}" + "-Wl,-reexported_symbols_list,${CMAKE_CURRENT_SOURCE_DIR}/../lib/libc++abi.v${LIBCXX_LIBCPPABI_VERSION}.exp" "-Wl,-force_symbols_not_weak_list,${CMAKE_CURRENT_SOURCE_DIR}/../lib/notweak.exp" "-Wl,-force_symbols_weak_list,${CMAKE_CURRENT_SOURCE_DIR}/../lib/weak.exp") + if (LIBCXX_ENABLE_EXCEPTIONS) + if ("${CMAKE_OSX_ARCHITECTURES}" MATCHES "^(armv6|armv7|armv7s)$") + target_link_libraries(cxx_shared PRIVATE "-Wl,-reexported_symbols_list,${CMAKE_CURRENT_SOURCE_DIR}/../lib/libc++abi-exceptions.sjlj.exp") + else() + target_link_libraries(cxx_shared PRIVATE "-Wl,-reexported_symbols_list,${CMAKE_CURRENT_SOURCE_DIR}/../lib/libc++abi-exceptions.exp") + endif() + endif() + if (NOT LIBCXX_ENABLE_NEW_DELETE_DEFINITIONS) target_link_libraries(cxx_shared PRIVATE "-Wl,-reexported_symbols_list,${CMAKE_CURRENT_SOURCE_DIR}/../lib/libc++abi-new-delete.exp") endif() diff --git a/libcxxabi/lib/exceptions.exp b/libcxxabi/lib/exceptions.exp new file mode 100644 index 00000000000000..c3780d2974903c --- /dev/null +++ b/libcxxabi/lib/exceptions.exp @@ -0,0 +1,11 @@ +___cxa_allocate_dependent_exception +___cxa_allocate_exception +___cxa_begin_catch +___cxa_call_unexpected +___cxa_current_exception_type +___cxa_end_catch +___cxa_free_dependent_exception +___cxa_free_exception +___cxa_get_exception_ptr +___cxa_rethrow +___cxa_throw diff --git a/libcxxabi/lib/itanium-base.exp b/libcxxabi/lib/itanium-base.exp index c08c711f7cfcc1..1b14cb8fba1753 100644 --- a/libcxxabi/lib/itanium-base.exp +++ b/libcxxabi/lib/itanium-base.exp @@ -245,22 +245,13 @@ __ZTVSt9bad_alloc __ZTVSt9exception __ZTVSt9type_info -# Itanium C++ ABI requirements -___cxa_allocate_dependent_exception -___cxa_allocate_exception +# Itanium C++ ABI requirements (minus most exception support) ___cxa_bad_cast ___cxa_bad_typeid -___cxa_begin_catch -___cxa_call_unexpected -___cxa_current_exception_type ___cxa_current_primary_exception ___cxa_decrement_exception_refcount ___cxa_deleted_virtual ___cxa_demangle -___cxa_end_catch -___cxa_free_dependent_exception -___cxa_free_exception -___cxa_get_exception_ptr ___cxa_get_globals ___cxa_get_globals_fast ___cxa_guard_abort @@ -268,9 +259,7 @@ ___cxa_guard_acquire ___cxa_guard_release ___cxa_increment_exception_refcount ___cxa_pure_virtual -___cxa_rethrow ___cxa_rethrow_primary_exception -___cxa_throw ___cxa_throw_bad_array_new_length ___cxa_uncaught_exception ___cxa_uncaught_exceptions diff --git a/libcxxabi/src/CMakeLists.txt b/libcxxabi/src/CMakeLists.txt index 44aa6384e0b71d..8e88416279ea9e 100644 --- a/libcxxabi/src/CMakeLists.txt +++ b/libcxxabi/src/CMakeLists.txt @@ -146,12 +146,6 @@ if (NOT TARGET pstl::ParallelSTL) message(STATUS "Could not find ParallelSTL, libc++abi will not attempt to use it but the build may fail if the libc++ in use needs it to be available.") 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}) @@ -200,10 +194,14 @@ if (LIBCXXABI_ENABLE_SHARED) 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") + if (LIBCXXABI_ENABLE_EXCEPTIONS) + target_link_libraries(cxxabi_shared PRIVATE "-Wl,-exported_symbols_list,${CMAKE_CURRENT_SOURCE_DIR}/../lib/exceptions.exp") + + if ("${CMAKE_OSX_ARCHITECTURES}" MATCHES "^(armv6|armv7|armv7s)$") + 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() endif()