Skip to content
Snippets Groups Projects
Unverified Commit 6a884a9a authored by Louis Dionne's avatar Louis Dionne Committed by GitHub
Browse files

[libc++] Always keep libc++abi re-exports up-to-date (#79012)

Previously, the list of libc++abi symbols that we re-export from libc++
would be partly encoded in libc++abi (and re-exported automatically via
the cxxabi-reexports target), and partly hard-coded in
libcxx/lib/libc++abi.exp. The duplication of information led to symbols
not being exported from libc++ after being added to libc++abi when they
should have been.

This patch removes the duplication of information. After this patch, the
full list of symbols to re-export from libc++abi is handled by the
cxxabi-reexports target and is stored in libcxxabi.

The symbols newly re-exported from libc++ are mainly new fundamental
typeinfos and a bunch of functions and classes that are part of
libc++abi but are most likely implementation details. In the future, it
would be possible to try to trim down the set of what we export from
libc++abi (and hence what we re-export from libc++) to remove some
implementation detail symbols.

Fixes #79008
parent 7b66b5d6
No related branches found
No related tags found
No related merge requests found
Showing with 579 additions and 613 deletions
...@@ -12,6 +12,71 @@ To generate a summary, re-generate the new ABI list using the ...@@ -12,6 +12,71 @@ To generate a summary, re-generate the new ABI list using the
New entries should be added directly below the "Version" header. New entries should be added directly below the "Version" header.
------------
Version 19.0
------------
* [libc++] Always keep libc++abi re-exports up-to-date
This patch makes sure that the set of libc++abi symbols re-exported from libc++
is up-to-date with the symbols that libc++abi re-exports. As such, it adds several
symbols that were left out of the libc++ re-exports list. Exporting new symbols
is not an ABI break.
<arch>-apple-darwin
-------------------
Symbol reexported: ___cxa_current_primary_exception
Symbol reexported: ___cxa_decrement_exception_refcount
Symbol reexported: ___cxa_increment_exception_refcount
Symbol reexported: ___cxa_new_handler
Symbol reexported: ___cxa_rethrow_primary_exception
Symbol reexported: ___cxa_terminate_handler
Symbol reexported: ___cxa_uncaught_exception
Symbol reexported: ___cxa_unexpected_handler
Symbol reexported: __ZTIDh
Symbol reexported: __ZTIDu
Symbol reexported: __ZTIg
Symbol reexported: __ZTIn
Symbol reexported: __ZTIN10__cxxabiv116__enum_type_infoE
Symbol reexported: __ZTIN10__cxxabiv116__shim_type_infoE
Symbol reexported: __ZTIN10__cxxabiv117__array_type_infoE
Symbol reexported: __ZTIN10__cxxabiv117__class_type_infoE
Symbol reexported: __ZTIN10__cxxabiv117__pbase_type_infoE
Symbol reexported: __ZTIN10__cxxabiv119__pointer_type_infoE
Symbol reexported: __ZTIN10__cxxabiv120__function_type_infoE
Symbol reexported: __ZTIN10__cxxabiv120__si_class_type_infoE
Symbol reexported: __ZTIN10__cxxabiv121__vmi_class_type_infoE
Symbol reexported: __ZTIN10__cxxabiv123__fundamental_type_infoE
Symbol reexported: __ZTIN10__cxxabiv129__pointer_to_member_type_infoE
Symbol reexported: __ZTIo
Symbol reexported: __ZTIPDh
Symbol reexported: __ZTIPDu
Symbol reexported: __ZTIPg
Symbol reexported: __ZTIPKDh
Symbol reexported: __ZTIPKDu
Symbol reexported: __ZTIPKg
Symbol reexported: __ZTIPKn
Symbol reexported: __ZTIPKo
Symbol reexported: __ZTIPn
Symbol reexported: __ZTIPo
Symbol reexported: __ZTSDh
Symbol reexported: __ZTSDu
Symbol reexported: __ZTSg
Symbol reexported: __ZTSn
Symbol reexported: __ZTSN10__cxxabiv116__shim_type_infoE
Symbol reexported: __ZTSo
Symbol reexported: __ZTSPDh
Symbol reexported: __ZTSPDu
Symbol reexported: __ZTSPg
Symbol reexported: __ZTSPKDh
Symbol reexported: __ZTSPKDu
Symbol reexported: __ZTSPKg
Symbol reexported: __ZTSPKn
Symbol reexported: __ZTSPKo
Symbol reexported: __ZTSPn
Symbol reexported: __ZTSPo
Symbol reexported: __ZTVN10__cxxabiv116__shim_type_infoE
------------ ------------
Version 18.0 Version 18.0
------------ ------------
......
...@@ -231,19 +231,14 @@ if (LIBCXX_ENABLE_SHARED) ...@@ -231,19 +231,14 @@ if (LIBCXX_ENABLE_SHARED)
# In particular, we don't re-export the symbols if libc++abi is merged statically # In particular, we don't re-export the symbols if libc++abi is merged statically
# into libc++ because in that case there's no dylib to re-export from. # into libc++ because in that case there's no dylib to re-export from.
if (APPLE AND LIBCXX_CXX_ABI MATCHES "libcxxabi$" if (APPLE AND LIBCXX_CXX_ABI MATCHES "libcxxabi$"
AND NOT DEFINED LIBCXX_OSX_REEXPORT_LIBCXXABI_SYMBOLS
AND NOT LIBCXX_STATICALLY_LINK_ABI_IN_SHARED_LIBRARY) AND NOT LIBCXX_STATICALLY_LINK_ABI_IN_SHARED_LIBRARY)
set(LIBCXX_OSX_REEXPORT_LIBCXXABI_SYMBOLS ON) target_link_libraries(cxx_shared PRIVATE cxxabi-reexports)
endif()
if (LIBCXX_OSX_REEXPORT_LIBCXXABI_SYMBOLS) # TODO: These exports controls should not be tied to whether we re-export libc++abi symbols
target_link_libraries(cxx_shared PRIVATE target_link_libraries(cxx_shared PRIVATE
"-Wl,-unexported_symbols_list,${CMAKE_CURRENT_SOURCE_DIR}/../lib/libc++unexp.exp" "-Wl,-unexported_symbols_list,${CMAKE_CURRENT_SOURCE_DIR}/../lib/libc++unexp.exp"
"-Wl,-reexported_symbols_list,${CMAKE_CURRENT_SOURCE_DIR}/../lib/libc++abi.exp"
"-Wl,-force_symbols_not_weak_list,${CMAKE_CURRENT_SOURCE_DIR}/../lib/notweak.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") "-Wl,-force_symbols_weak_list,${CMAKE_CURRENT_SOURCE_DIR}/../lib/weak.exp")
target_link_libraries(cxx_shared PRIVATE $<TARGET_NAME_IF_EXISTS:cxxabi-reexports>)
endif() endif()
# Generate a linker script in place of a libc++.so symlink. # Generate a linker script in place of a libc++.so symlink.
......
# 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
# 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
# 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 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 (minus most exception support) # Itanium C++ ABI requirements (minus most exception support)
___cxa_bad_cast ___cxa_bad_cast
___cxa_bad_typeid ___cxa_bad_typeid
...@@ -277,81 +30,3 @@ ___dynamic_cast ...@@ -277,81 +30,3 @@ ___dynamic_cast
___cxa_terminate_handler ___cxa_terminate_handler
___cxa_unexpected_handler ___cxa_unexpected_handler
___cxa_new_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
# Itanium C++ ABI requirements related to exceptions
___cxa_allocate_dependent_exception ___cxa_allocate_dependent_exception
___cxa_allocate_exception ___cxa_allocate_exception
___cxa_begin_catch ___cxa_begin_catch
......
# Symbols for all variants of global operator new and delete
__Znwm __Znwm
__ZnwmRKSt9nothrow_t __ZnwmRKSt9nothrow_t
__ZnwmSt11align_val_t __ZnwmSt11align_val_t
......
___cxa_demangle # Typeinfos for std:: exception types
___cxa_get_globals __ZTISt10bad_typeid
___cxa_get_globals_fast __ZTISt11logic_error
___cxa_guard_abort __ZTISt11range_error
___cxa_guard_acquire __ZTISt12domain_error
___cxa_guard_release __ZTISt12length_error
___cxa_pure_virtual __ZTISt12out_of_range
___cxa_deleted_virtual
___cxa_throw_bad_array_new_length
___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
__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 __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 std:: exception types
__ZTVSt10bad_typeid __ZTVSt10bad_typeid
__ZTVSt9exception __ZTVSt11logic_error
__ZNSt10bad_typeidC1Ev __ZTVSt11range_error
__ZNSt10bad_typeidC1Ev __ZTVSt12domain_error
__ZNKSt10bad_typeid4whatEv __ZTVSt12length_error
__ZNSt10bad_typeidD1Ev __ZTVSt12out_of_range
__ZTVSt13bad_exception
__ZTVSt13runtime_error
__ZTVSt14overflow_error
__ZTVSt15underflow_error
__ZTVSt16invalid_argument
__ZTVSt20bad_array_new_length
__ZTVSt8bad_cast __ZTVSt8bad_cast
__ZNSt8bad_castC1Ev
__ZNSt8bad_castC2Ev
__ZNSt8bad_castD0Ev
__ZNKSt8bad_cast4whatEv
__ZNSt8bad_castD1Ev
__ZNSt8bad_castD2Ev
__ZTVSt9bad_alloc __ZTVSt9bad_alloc
__ZTVSt20bad_array_new_length __ZTVSt9exception
__ZTVSt13bad_exception __ZTVSt9type_info
__ZNKSt9exception4whatEv
__ZNKSt9bad_alloc4whatEv # ::what() functions for std:: exception types
__ZNSt9bad_allocC2Ev __ZNKSt10bad_typeid4whatEv
__ZNSt9bad_allocD0Ev __ZNKSt11logic_error4whatEv
__ZNSt9bad_allocD2Ev
__ZNSt9exceptionD0Ev
__ZNSt20bad_array_new_lengthC1Ev
__ZNKSt13bad_exception4whatEv __ZNKSt13bad_exception4whatEv
__ZNSt9exceptionD1Ev __ZNKSt13runtime_error4whatEv
__ZNKSt20bad_array_new_length4whatEv __ZNKSt20bad_array_new_length4whatEv
__ZNSt13bad_exceptionD1Ev __ZNKSt8bad_cast4whatEv
__ZNSt20bad_array_new_lengthD1Ev __ZNKSt9bad_alloc4whatEv
__ZNSt9exceptionD2Ev __ZNKSt9exception4whatEv
__ZNSt9type_infoD0Ev
__ZNSt9type_infoD1Ev # Default constructors and destructors for std:: exception types
__ZNSt9type_infoD2Ev __ZNSt10bad_typeidC1Ev
__ZNSt10bad_typeidC2Ev __ZNSt10bad_typeidC2Ev
__ZNSt10bad_typeidD0Ev __ZNSt10bad_typeidD0Ev
__ZNSt10bad_typeidD1Ev
__ZNSt10bad_typeidD2Ev __ZNSt10bad_typeidD2Ev
__ZNSt13bad_exceptionD0Ev
__ZNSt13bad_exceptionD2Ev
__ZNSt20bad_array_new_lengthC2Ev
__ZNSt20bad_array_new_lengthD0Ev
__ZNSt20bad_array_new_lengthD2Ev
__ZSt10unexpectedv
__ZTISt10bad_typeid
__ZTISt8bad_cast
___cxa_bad_typeid
___cxa_bad_cast
__ZTISt9exception
__ZTISt9type_info
__ZTISt20bad_array_new_length
__ZNKSt11logic_error4whatEv
__ZNSt11logic_errorD0Ev __ZNSt11logic_errorD0Ev
__ZNSt11logic_errorD1Ev __ZNSt11logic_errorD1Ev
__ZNSt11logic_errorD2Ev __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_errorD0Ev
__ZNSt11range_errorD1Ev __ZNSt11range_errorD1Ev
__ZNSt11range_errorD2Ev __ZNSt11range_errorD2Ev
__ZTISt11range_error
__ZTSSt11range_error
__ZTVSt11range_error
__ZNSt12domain_errorD0Ev __ZNSt12domain_errorD0Ev
__ZNSt12domain_errorD1Ev __ZNSt12domain_errorD1Ev
__ZNSt12domain_errorD2Ev __ZNSt12domain_errorD2Ev
__ZTISt12domain_error
__ZTSSt12domain_error
__ZTVSt12domain_error
__ZNSt12length_errorD0Ev __ZNSt12length_errorD0Ev
__ZNSt12length_errorD1Ev __ZNSt12length_errorD1Ev
__ZNSt12length_errorD2Ev __ZNSt12length_errorD2Ev
__ZTISt12length_error
__ZTSSt12length_error
__ZTVSt12length_error
__ZNSt12out_of_rangeD0Ev __ZNSt12out_of_rangeD0Ev
__ZNSt12out_of_rangeD1Ev __ZNSt12out_of_rangeD1Ev
__ZNSt12out_of_rangeD2Ev __ZNSt12out_of_rangeD2Ev
__ZTISt12out_of_range __ZNSt13bad_exceptionD0Ev
__ZTSSt12out_of_range __ZNSt13bad_exceptionD1Ev
__ZTVSt12out_of_range __ZNSt13bad_exceptionD2Ev
__ZNSt13runtime_errorD0Ev
__ZNSt13runtime_errorD1Ev
__ZNSt13runtime_errorD2Ev
__ZNSt14overflow_errorD0Ev __ZNSt14overflow_errorD0Ev
__ZNSt14overflow_errorD1Ev __ZNSt14overflow_errorD1Ev
__ZNSt14overflow_errorD2Ev __ZNSt14overflow_errorD2Ev
__ZTISt14overflow_error
__ZTSSt14overflow_error
__ZTVSt14overflow_error
__ZNSt15underflow_errorD0Ev __ZNSt15underflow_errorD0Ev
__ZNSt15underflow_errorD1Ev __ZNSt15underflow_errorD1Ev
__ZNSt15underflow_errorD2Ev __ZNSt15underflow_errorD2Ev
__ZTISt15underflow_error
__ZTSSt15underflow_error
__ZTVSt15underflow_error
__ZNSt16invalid_argumentD0Ev __ZNSt16invalid_argumentD0Ev
__ZNSt16invalid_argumentD1Ev __ZNSt16invalid_argumentD1Ev
__ZNSt16invalid_argumentD2Ev __ZNSt16invalid_argumentD2Ev
__ZTISt16invalid_argument __ZNSt20bad_array_new_lengthC1Ev
__ZTSSt16invalid_argument __ZNSt20bad_array_new_lengthC2Ev
__ZTVSt16invalid_argument __ZNSt20bad_array_new_lengthD0Ev
__ZNSt20bad_array_new_lengthD1Ev
__ZTSDi __ZNSt20bad_array_new_lengthD2Ev
__ZTSDn __ZNSt8bad_castC1Ev
__ZTSDs __ZNSt8bad_castC2Ev
__ZTSPDi __ZNSt8bad_castD0Ev
__ZTSPDn __ZNSt8bad_castD1Ev
__ZTSPDs __ZNSt8bad_castD2Ev
__ZTSPKDi __ZNSt9bad_allocC1Ev
__ZTSPKDn __ZNSt9bad_allocC2Ev
__ZTSPKDs __ZNSt9bad_allocD0Ev
__ZNSt9bad_allocD1Ev
__ZTSSt8bad_cast __ZNSt9bad_allocD2Ev
__ZTSSt9bad_alloc __ZNSt9exceptionD0Ev
__ZTSSt9exception __ZNSt9exceptionD1Ev
__ZTSSt9type_info __ZNSt9exceptionD2Ev
__ZTSSt10bad_typeid __ZNSt9type_infoD0Ev
__ZTSSt13bad_exception __ZNSt9type_infoD1Ev
__ZTSSt20bad_array_new_length __ZNSt9type_infoD2Ev
__ZTVSt9type_info
# Other std:: functions implemented in libc++abi
__ZSt10unexpectedv
__ZSt13get_terminatev
__ZSt13set_terminatePFvvE
__ZSt14get_unexpectedv
__ZSt14set_unexpectedPFvvE
__ZSt15get_new_handlerv
__ZSt15set_new_handlerPFvvE
__ZSt9terminatev
...@@ -213,31 +213,31 @@ if (LIBCXXABI_ENABLE_SHARED) ...@@ -213,31 +213,31 @@ if (LIBCXXABI_ENABLE_SHARED)
endif() endif()
add_library(cxxabi-reexports INTERFACE) add_library(cxxabi-reexports INTERFACE)
function(reexport_symbols file)
# -exported_symbols_list is only available on Apple platforms # -exported_symbols_list is only available on Apple platforms
if (APPLE) if (APPLE)
function(export_symbols file)
target_link_libraries(cxxabi_shared PRIVATE "-Wl,-exported_symbols_list,${file}") target_link_libraries(cxxabi_shared PRIVATE "-Wl,-exported_symbols_list,${file}")
endfunction()
function(reexport_symbols file)
export_symbols("${file}")
target_link_libraries(cxxabi-reexports INTERFACE "-Wl,-reexported_symbols_list,${file}") target_link_libraries(cxxabi-reexports INTERFACE "-Wl,-reexported_symbols_list,${file}")
endfunction() endif()
endfunction()
export_symbols("${CMAKE_CURRENT_SOURCE_DIR}/../lib/itanium-base.exp") reexport_symbols("${CMAKE_CURRENT_SOURCE_DIR}/../lib/cxxabiv1.exp")
reexport_symbols("${CMAKE_CURRENT_SOURCE_DIR}/../lib/fundamental-types.exp")
reexport_symbols("${CMAKE_CURRENT_SOURCE_DIR}/../lib/itanium-base.exp")
reexport_symbols("${CMAKE_CURRENT_SOURCE_DIR}/../lib/std-misc.exp")
if (LIBCXXABI_ENABLE_NEW_DELETE_DEFINITIONS) if (LIBCXXABI_ENABLE_NEW_DELETE_DEFINITIONS)
reexport_symbols("${CMAKE_CURRENT_SOURCE_DIR}/../lib/new-delete.exp") reexport_symbols("${CMAKE_CURRENT_SOURCE_DIR}/../lib/new-delete.exp")
endif() endif()
if (LIBCXXABI_ENABLE_EXCEPTIONS) if (LIBCXXABI_ENABLE_EXCEPTIONS)
reexport_symbols("${CMAKE_CURRENT_SOURCE_DIR}/../lib/exceptions.exp") reexport_symbols("${CMAKE_CURRENT_SOURCE_DIR}/../lib/itanium-exceptions.exp")
reexport_symbols("${CMAKE_CURRENT_SOURCE_DIR}/../lib/std-exceptions.exp")
if ("${CMAKE_OSX_ARCHITECTURES}" MATCHES "^(armv6|armv7|armv7s)$") if ("${CMAKE_OSX_ARCHITECTURES}" MATCHES "^(armv6|armv7|armv7s)$")
reexport_symbols("${CMAKE_CURRENT_SOURCE_DIR}/../lib/personality-sjlj.exp") reexport_symbols("${CMAKE_CURRENT_SOURCE_DIR}/../lib/personality-sjlj.exp")
else() else()
reexport_symbols("${CMAKE_CURRENT_SOURCE_DIR}/../lib/personality-v0.exp") reexport_symbols("${CMAKE_CURRENT_SOURCE_DIR}/../lib/personality-v0.exp")
endif()
endif() endif()
endif() endif()
endif() endif()
......
...@@ -11,6 +11,13 @@ ...@@ -11,6 +11,13 @@
// This tests that libc++abi still provides __cxa_uncaught_exception() for // This tests that libc++abi still provides __cxa_uncaught_exception() for
// ABI compatibility, even though the Standard doesn't require it to. // ABI compatibility, even though the Standard doesn't require it to.
// __cxa_uncaught_exception was not re-exported from libc++ previously. This leads
// to undefined symbols when linking against a libc++ that re-exports the symbols,
// but running against a libc++ that doesn't. Fortunately, usage of __cxa_uncaught_exception()
// in the wild seems to be close to non-existent.
// XFAIL: stdlib=apple-libc++ && target={{.+}}-apple-macosx10.{{9|10|11|12|13|14|15}}
// XFAIL: stdlib=apple-libc++ && target={{.+}}-apple-macosx{{(11|12|13|14)([.][0-9]+)?}}
#include <cxxabi.h> #include <cxxabi.h>
#include <cassert> #include <cassert>
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment