[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
This commit is contained in:
Louis Dionne 2019-06-27 20:17:22 +00:00
parent a95ca2b5ff
commit 223df5b540
5 changed files with 416 additions and 0 deletions

View File

@ -0,0 +1,373 @@
# Typeinfos for fundamental types
__ZTIa
__ZTIb
__ZTIc
__ZTId
__ZTIDh
__ZTIDi
__ZTIDn
__ZTIDs
__ZTIDu
__ZTIe
__ZTIf
__ZTIg
__ZTIh
__ZTIi
__ZTIj
__ZTIl
__ZTIm
__ZTIn
__ZTIo
__ZTIPa
__ZTIPb
__ZTIPc
__ZTIPd
__ZTIPDh
__ZTIPDi
__ZTIPDn
__ZTIPDs
__ZTIPDu
__ZTIPe
__ZTIPf
__ZTIPg
__ZTIPh
__ZTIPi
__ZTIPj
__ZTIPKa
__ZTIPKb
__ZTIPKc
__ZTIPKd
__ZTIPKDh
__ZTIPKDi
__ZTIPKDn
__ZTIPKDs
__ZTIPKDu
__ZTIPKe
__ZTIPKf
__ZTIPKg
__ZTIPKh
__ZTIPKi
__ZTIPKj
__ZTIPKl
__ZTIPKm
__ZTIPKn
__ZTIPKo
__ZTIPKs
__ZTIPKt
__ZTIPKv
__ZTIPKw
__ZTIPKx
__ZTIPKy
__ZTIPl
__ZTIPm
__ZTIPn
__ZTIPo
__ZTIPs
__ZTIPt
__ZTIPv
__ZTIPw
__ZTIPx
__ZTIPy
__ZTIs
__ZTIt
__ZTIv
__ZTIw
__ZTIx
__ZTIy
# Typeinfo names for fundamental types
__ZTSa
__ZTSb
__ZTSc
__ZTSd
__ZTSDh
__ZTSDi
__ZTSDn
__ZTSDs
__ZTSDu
__ZTSe
__ZTSf
__ZTSg
__ZTSh
__ZTSi
__ZTSj
__ZTSl
__ZTSm
__ZTSn
__ZTSo
__ZTSPa
__ZTSPb
__ZTSPc
__ZTSPd
__ZTSPDh
__ZTSPDi
__ZTSPDn
__ZTSPDs
__ZTSPDu
__ZTSPe
__ZTSPf
__ZTSPg
__ZTSPh
__ZTSPi
__ZTSPj
__ZTSPKa
__ZTSPKb
__ZTSPKc
__ZTSPKd
__ZTSPKDh
__ZTSPKDi
__ZTSPKDn
__ZTSPKDs
__ZTSPKDu
__ZTSPKe
__ZTSPKf
__ZTSPKg
__ZTSPKh
__ZTSPKi
__ZTSPKj
__ZTSPKl
__ZTSPKm
__ZTSPKn
__ZTSPKo
__ZTSPKs
__ZTSPKt
__ZTSPKv
__ZTSPKw
__ZTSPKx
__ZTSPKy
__ZTSPl
__ZTSPm
__ZTSPn
__ZTSPo
__ZTSPs
__ZTSPt
__ZTSPv
__ZTSPw
__ZTSPx
__ZTSPy
__ZTSs
__ZTSt
__ZTSv
__ZTSw
__ZTSx
__ZTSy
# Typeinfos for types from libc++abi
__ZTIN10__cxxabiv116__enum_type_infoE
__ZTIN10__cxxabiv116__shim_type_infoE
__ZTIN10__cxxabiv117__array_type_infoE
__ZTIN10__cxxabiv117__class_type_infoE
__ZTIN10__cxxabiv117__pbase_type_infoE
__ZTIN10__cxxabiv119__pointer_type_infoE
__ZTIN10__cxxabiv120__function_type_infoE
__ZTIN10__cxxabiv120__si_class_type_infoE
__ZTIN10__cxxabiv121__vmi_class_type_infoE
__ZTIN10__cxxabiv123__fundamental_type_infoE
__ZTIN10__cxxabiv129__pointer_to_member_type_infoE
# Typeinfo names for types from libc++abi
__ZTSN10__cxxabiv116__enum_type_infoE
__ZTSN10__cxxabiv116__shim_type_infoE
__ZTSN10__cxxabiv117__array_type_infoE
__ZTSN10__cxxabiv117__class_type_infoE
__ZTSN10__cxxabiv117__pbase_type_infoE
__ZTSN10__cxxabiv119__pointer_type_infoE
__ZTSN10__cxxabiv120__function_type_infoE
__ZTSN10__cxxabiv120__si_class_type_infoE
__ZTSN10__cxxabiv121__vmi_class_type_infoE
__ZTSN10__cxxabiv123__fundamental_type_infoE
__ZTSN10__cxxabiv129__pointer_to_member_type_infoE
# Typeinfos for std:: exception types
__ZTISt10bad_typeid
__ZTISt11logic_error
__ZTISt11range_error
__ZTISt12domain_error
__ZTISt12length_error
__ZTISt12out_of_range
__ZTISt13bad_exception
__ZTISt13runtime_error
__ZTISt14overflow_error
__ZTISt15underflow_error
__ZTISt16invalid_argument
__ZTISt20bad_array_new_length
__ZTISt8bad_cast
__ZTISt9bad_alloc
__ZTISt9exception
__ZTISt9type_info
# Typeinfo names for std:: exception types
__ZTSSt10bad_typeid
__ZTSSt11logic_error
__ZTSSt11range_error
__ZTSSt12domain_error
__ZTSSt12length_error
__ZTSSt12out_of_range
__ZTSSt13bad_exception
__ZTSSt13runtime_error
__ZTSSt14overflow_error
__ZTSSt15underflow_error
__ZTSSt16invalid_argument
__ZTSSt20bad_array_new_length
__ZTSSt8bad_cast
__ZTSSt9bad_alloc
__ZTSSt9exception
__ZTSSt9type_info
# Vtables for libc++abi types
__ZTVN10__cxxabiv116__enum_type_infoE
__ZTVN10__cxxabiv116__shim_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
__ZTVN10__cxxabiv129__pointer_to_member_type_infoE
# Vtables for std:: exception types
__ZTVSt10bad_typeid
__ZTVSt11logic_error
__ZTVSt11range_error
__ZTVSt12domain_error
__ZTVSt12length_error
__ZTVSt12out_of_range
__ZTVSt13bad_exception
__ZTVSt13runtime_error
__ZTVSt14overflow_error
__ZTVSt15underflow_error
__ZTVSt16invalid_argument
__ZTVSt20bad_array_new_length
__ZTVSt8bad_cast
__ZTVSt9bad_alloc
__ZTVSt9exception
__ZTVSt9type_info
# Itanium C++ ABI requirements
___cxa_allocate_dependent_exception
___cxa_allocate_exception
___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
___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
___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
___cxa_terminate_handler
___cxa_unexpected_handler
___cxa_new_handler
# ::what() functions for std:: exception types
__ZNKSt10bad_typeid4whatEv
__ZNKSt11logic_error4whatEv
__ZNKSt13bad_exception4whatEv
__ZNKSt13runtime_error4whatEv
__ZNKSt20bad_array_new_length4whatEv
__ZNKSt8bad_cast4whatEv
__ZNKSt9bad_alloc4whatEv
__ZNKSt9exception4whatEv
# Default constructors and destructors for std:: exception types
__ZNSt10bad_typeidC1Ev
__ZNSt10bad_typeidC2Ev
__ZNSt10bad_typeidD0Ev
__ZNSt10bad_typeidD1Ev
__ZNSt10bad_typeidD2Ev
__ZNSt11logic_errorD0Ev
__ZNSt11logic_errorD1Ev
__ZNSt11logic_errorD2Ev
__ZNSt11range_errorD0Ev
__ZNSt11range_errorD1Ev
__ZNSt11range_errorD2Ev
__ZNSt12domain_errorD0Ev
__ZNSt12domain_errorD1Ev
__ZNSt12domain_errorD2Ev
__ZNSt12length_errorD0Ev
__ZNSt12length_errorD1Ev
__ZNSt12length_errorD2Ev
__ZNSt12out_of_rangeD0Ev
__ZNSt12out_of_rangeD1Ev
__ZNSt12out_of_rangeD2Ev
__ZNSt13bad_exceptionD0Ev
__ZNSt13bad_exceptionD1Ev
__ZNSt13bad_exceptionD2Ev
__ZNSt13runtime_errorD0Ev
__ZNSt13runtime_errorD1Ev
__ZNSt13runtime_errorD2Ev
__ZNSt14overflow_errorD0Ev
__ZNSt14overflow_errorD1Ev
__ZNSt14overflow_errorD2Ev
__ZNSt15underflow_errorD0Ev
__ZNSt15underflow_errorD1Ev
__ZNSt15underflow_errorD2Ev
__ZNSt16invalid_argumentD0Ev
__ZNSt16invalid_argumentD1Ev
__ZNSt16invalid_argumentD2Ev
__ZNSt20bad_array_new_lengthC1Ev
__ZNSt20bad_array_new_lengthC2Ev
__ZNSt20bad_array_new_lengthD0Ev
__ZNSt20bad_array_new_lengthD1Ev
__ZNSt20bad_array_new_lengthD2Ev
__ZNSt8bad_castC1Ev
__ZNSt8bad_castC2Ev
__ZNSt8bad_castD0Ev
__ZNSt8bad_castD1Ev
__ZNSt8bad_castD2Ev
__ZNSt9bad_allocC1Ev
__ZNSt9bad_allocC2Ev
__ZNSt9bad_allocD0Ev
__ZNSt9bad_allocD1Ev
__ZNSt9bad_allocD2Ev
__ZNSt9exceptionD0Ev
__ZNSt9exceptionD1Ev
__ZNSt9exceptionD2Ev
__ZNSt9type_infoD0Ev
__ZNSt9type_infoD1Ev
__ZNSt9type_infoD2Ev
# Other std:: functions implemented in libc++abi
__ZSt10unexpectedv
__ZSt13get_terminatev
__ZSt13set_terminatePFvvE
__ZSt14get_unexpectedv
__ZSt14set_unexpectedPFvvE
__ZSt15get_new_handlerv
__ZSt15set_new_handlerPFvvE
__ZSt9terminatev
# Misc
__ZN10__cxxabiv119__getExceptionClassEPK17_Unwind_Exception
__ZN10__cxxabiv119__setExceptionClassEP17_Unwind_Exceptiony
__ZN10__cxxabiv121__isOurExceptionClassEPK17_Unwind_Exception

View File

@ -0,0 +1,20 @@
__Znwm
__ZnwmRKSt9nothrow_t
__ZnwmSt11align_val_t
__ZnwmSt11align_val_tRKSt9nothrow_t
__ZdaPv
__ZdaPvm
__ZdaPvmSt11align_val_t
__ZdaPvRKSt9nothrow_t
__ZdaPvSt11align_val_t
__ZdaPvSt11align_val_tRKSt9nothrow_t
__ZdlPv
__ZdlPvm
__ZdlPvmSt11align_val_t
__ZdlPvRKSt9nothrow_t
__ZdlPvSt11align_val_t
__ZdlPvSt11align_val_tRKSt9nothrow_t
__Znam
__ZnamRKSt9nothrow_t
__ZnamSt11align_val_t
__ZnamSt11align_val_tRKSt9nothrow_t

View File

@ -0,0 +1 @@
___gxx_personality_sj0

View File

@ -0,0 +1 @@
___gxx_personality_v0

View File

@ -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.