diff options
author | Brooks Davis <brooks@FreeBSD.org> | 2024-04-16 17:04:16 +0000 |
---|---|---|
committer | Brooks Davis <brooks@FreeBSD.org> | 2024-04-16 21:14:21 +0000 |
commit | da77a1b4f0dffcafee3675375ec71e9ab8319daa (patch) | |
tree | e5a168cdd868b780b9716786bf2913de5b68ceda /lib/libcxxrt | |
parent | b457144ceaf71be9de20f1879bb376162197cd9b (diff) | |
download | src-da77a1b4f0dffcafee3675375ec71e9ab8319daa.tar.gz src-da77a1b4f0dffcafee3675375ec71e9ab8319daa.zip |
Diffstat (limited to 'lib/libcxxrt')
-rw-r--r-- | lib/libcxxrt/Makefile | 18 | ||||
-rw-r--r-- | lib/libcxxrt/Version.map | 47 | ||||
-rw-r--r-- | lib/libcxxrt/Version.map.arm | 362 |
3 files changed, 384 insertions, 43 deletions
diff --git a/lib/libcxxrt/Makefile b/lib/libcxxrt/Makefile index 48a724dd42f2..57f41e9bf59b 100644 --- a/lib/libcxxrt/Makefile +++ b/lib/libcxxrt/Makefile @@ -1,3 +1,4 @@ +.include <bsd.own.mk> PACKAGE= clibs SRCDIR= ${SRCTOP}/contrib/libcxxrt @@ -22,6 +23,21 @@ SRCS+= typeinfo.cc WARNS?= 0 CFLAGS+= -isystem ${SRCDIR} -nostdinc++ CXXSTD?= c++14 -VERSION_MAP= ${.CURDIR}/Version.map + +.if exists(Version.map.${MACHINE}) +VERSION_MAP= ${.CURDIR}/Version.map.${MACHINE} +.else +.if ${MACHINE_ABI:Mlong32} +VERSION_MAP= Version-32.map +.else +VERSION_MAP= Version-64.map +.endif + +Version-32.map: Version.map + sed 's/%%NEW_DELETE_TYPE%%/int/' ${.ALLSRC} > ${.TARGET} + +Version-64.map: Version.map + sed 's/%%NEW_DELETE_TYPE%%/long/' ${.ALLSRC} > ${.TARGET} +.endif .include <bsd.lib.mk> diff --git a/lib/libcxxrt/Version.map b/lib/libcxxrt/Version.map index a54b6a4daad5..012026079e33 100644 --- a/lib/libcxxrt/Version.map +++ b/lib/libcxxrt/Version.map @@ -10,12 +10,10 @@ CXXABI_1.3 { __cxa_bad_cast; __cxa_bad_typeid; __cxa_begin_catch; - __cxa_begin_cleanup; __cxa_call_unexpected; __cxa_current_exception_type; __cxa_demangle; __cxa_end_catch; - __cxa_end_cleanup; __cxa_free_exception; __cxa_get_globals; __cxa_get_globals_fast; @@ -26,42 +24,20 @@ CXXABI_1.3 { __cxa_rethrow; __cxa_throw; __cxa_throw_bad_array_new_length; - __cxa_type_match; - __cxa_vec_cctor; - __cxa_vec_cleanup; - __cxa_vec_ctor; - __cxa_vec_delete2; - __cxa_vec_delete3; - __cxa_vec_delete; - __cxa_vec_dtor; - __cxa_vec_new2; - __cxa_vec_new3; - __cxa_vec_new; __dynamic_cast; - __gxx_personality_sj0; __gxx_personality_v0; extern "C++" { # Type info classes and their destructors - "__cxxabiv1::__array_type_info"; "__cxxabiv1::__array_type_info::~__array_type_info()"; - "__cxxabiv1::__class_type_info"; "__cxxabiv1::__class_type_info::~__class_type_info()"; - "__cxxabiv1::__enum_type_info"; "__cxxabiv1::__enum_type_info::~__enum_type_info()"; - "__cxxabiv1::__function_type_info::"; "__cxxabiv1::__function_type_info::~__function_type_info()"; - "__cxxabiv1::__fundamental_type_info"; "__cxxabiv1::__fundamental_type_info::~__fundamental_type_info()"; - "__cxxabiv1::__pbase_type_info"; "__cxxabiv1::__pbase_type_info::~__pbase_type_info()"; - "__cxxabiv1::__pointer_to_member_type_info"; "__cxxabiv1::__pointer_to_member_type_info::~__pointer_to_member_type_info()"; - "__cxxabiv1::__pointer_type_info"; "__cxxabiv1::__pointer_type_info::~__pointer_type_info()"; - "__cxxabiv1::__si_class_type_info"; "__cxxabiv1::__si_class_type_info::~__si_class_type_info()"; - "__cxxabiv1::__vmi_class_type_info"; "__cxxabiv1::__vmi_class_type_info::~__vmi_class_type_info()"; # vtables typeinfo classes. @@ -224,10 +200,6 @@ CXXABI_1.3 { _ZTIDi;_ZTIPDi;_ZTIPKDi; # char32_t _ZTIDs;_ZTIPDs;_ZTIPKDs; - # IEEE 754r decimal floating point - _ZTIDd;_ZTIPDd;_ZTIPKDd; - _ZTIDe;_ZTIPDe;_ZTIPKDe; - _ZTIDf;_ZTIPDf;_ZTIPKDf; # IEEE 754r half-precision floating point _ZTIDh;_ZTIPDh;_ZTIPKDh; @@ -238,10 +210,6 @@ CXXABI_1.3 { _ZTSDi;_ZTSPDi;_ZTSPKDi; # char32_t _ZTSDs;_ZTSPDs;_ZTSPKDs; - # IEEE 754r decimal floating point - _ZTSDd;_ZTSPDd;_ZTSPKDd; - _ZTSDe;_ZTSPDe;_ZTSPKDe; - _ZTSDf;_ZTSPDf;_ZTSPKDf; # IEEE 754r half-precision floating point _ZTSDh;_ZTSPDh;_ZTSPKDh; @@ -276,10 +244,8 @@ CXXABI_1.3.9 { "typeinfo name for unsigned __int128 const*"; "typeinfo name for unsigned __int128"; "typeinfo name for unsigned __int128*"; - "operator delete[](void*, unsigned int)"; - "operator delete(void*, unsigned int)"; - "operator delete[](void*, unsigned long)"; - "operator delete(void*, unsigned long)"; + "operator delete[](void*, unsigned %%NEW_DELETE_TYPE%%)"; + "operator delete(void*, unsigned %%NEW_DELETE_TYPE%%)"; }; } CXXABI_1.3.6; @@ -325,12 +291,9 @@ GLIBCXX_3.4 { extern "C++" { "operator delete[](void*)"; "operator delete(void*)"; - "operator new[](unsigned int)"; - "operator new(unsigned int)"; - "operator new(unsigned int, std::nothrow_t const&)"; - "operator new[](unsigned long)"; - "operator new(unsigned long)"; - "operator new(unsigned long, std::nothrow_t const&)"; + "operator new[](unsigned %%NEW_DELETE_TYPE%%)"; + "operator new(unsigned %%NEW_DELETE_TYPE%%)"; + "operator new(unsigned %%NEW_DELETE_TYPE%%, std::nothrow_t const&)"; "std::unexpected()"; "std::get_terminate()"; diff --git a/lib/libcxxrt/Version.map.arm b/lib/libcxxrt/Version.map.arm new file mode 100644 index 000000000000..bc4cf68a3654 --- /dev/null +++ b/lib/libcxxrt/Version.map.arm @@ -0,0 +1,362 @@ +# Define the same version as the libsupc++ from gcc 4.2.1 so that we can use +# libcxxrt as a drop-in replacement. + +CXXABI_1.3 { + + global: + + # ABI functions with C linkage + __cxa_allocate_exception; + __cxa_bad_cast; + __cxa_bad_typeid; + __cxa_begin_catch; + __cxa_call_unexpected; + __cxa_current_exception_type; + __cxa_demangle; + __cxa_end_catch; + __cxa_end_cleanup; + __cxa_free_exception; + __cxa_get_globals; + __cxa_get_globals_fast; + __cxa_guard_abort; + __cxa_guard_acquire; + __cxa_guard_release; + __cxa_pure_virtual; + __cxa_rethrow; + __cxa_throw; + __cxa_throw_bad_array_new_length; + __dynamic_cast; + __gxx_personality_v0; + + extern "C++" { + # Type info classes and their destructors + "__cxxabiv1::__array_type_info::~__array_type_info()"; + "__cxxabiv1::__class_type_info::~__class_type_info()"; + "__cxxabiv1::__enum_type_info::~__enum_type_info()"; + "__cxxabiv1::__function_type_info::~__function_type_info()"; + "__cxxabiv1::__fundamental_type_info::~__fundamental_type_info()"; + "__cxxabiv1::__pbase_type_info::~__pbase_type_info()"; + "__cxxabiv1::__pointer_to_member_type_info::~__pointer_to_member_type_info()"; + "__cxxabiv1::__pointer_type_info::~__pointer_type_info()"; + "__cxxabiv1::__si_class_type_info::~__si_class_type_info()"; + "__cxxabiv1::__vmi_class_type_info::~__vmi_class_type_info()"; + + # vtables typeinfo classes. + "vtable for __cxxabiv1::__array_type_info"; + "vtable for __cxxabiv1::__class_type_info"; + "vtable for __cxxabiv1::__enum_type_info"; + "vtable for __cxxabiv1::__function_type_info"; + "vtable for __cxxabiv1::__fundamental_type_info"; + "vtable for __cxxabiv1::__pbase_type_info"; + "vtable for __cxxabiv1::__pointer_to_member_type_info"; + "vtable for __cxxabiv1::__pointer_type_info"; + "vtable for __cxxabiv1::__si_class_type_info"; + "vtable for __cxxabiv1::__vmi_class_type_info"; + + # Type info for built-in types + "typeinfo for bool const*"; + "typeinfo for bool"; + "typeinfo for char const*"; + "typeinfo for char"; + "typeinfo for double const*"; + "typeinfo for double"; + "typeinfo for float const*"; + "typeinfo for float"; + "typeinfo for int const*"; + "typeinfo for int"; + "typeinfo for long const*"; + "typeinfo for long double const*"; + "typeinfo for long double"; + "typeinfo for long long const*"; + "typeinfo for long long"; + "typeinfo for long"; + "typeinfo for short const*"; + "typeinfo for short"; + "typeinfo for signed char const*"; + "typeinfo for signed char"; + "typeinfo for unsigned char const*"; + "typeinfo for unsigned char"; + "typeinfo for unsigned int const*"; + "typeinfo for unsigned int"; + "typeinfo for unsigned long const*"; + "typeinfo for unsigned long long const*"; + "typeinfo for unsigned long long"; + "typeinfo for unsigned long"; + "typeinfo for unsigned short const*"; + "typeinfo for unsigned short"; + "typeinfo for void const*"; + "typeinfo for void"; + "typeinfo for wchar_t const*"; + "typeinfo for wchar_t"; + + "typeinfo for bool*"; + "typeinfo for wchar_t*"; + "typeinfo for short*"; + "typeinfo for char*"; + "typeinfo for unsigned char*"; + "typeinfo for long long*"; + "typeinfo for unsigned short*"; + "typeinfo for long*"; + "typeinfo for double*"; + "typeinfo for unsigned long*"; + "typeinfo for unsigned long long*"; + "typeinfo for int*"; + "typeinfo for long double*"; + "typeinfo for signed char*"; + "typeinfo for void*"; + "typeinfo for unsigned int*"; + "typeinfo for float*"; + + "typeinfo for __cxxabiv1::__array_type_info"; + "typeinfo for __cxxabiv1::__class_type_info"; + "typeinfo for __cxxabiv1::__enum_type_info"; + "typeinfo for __cxxabiv1::__function_type_info"; + "typeinfo for __cxxabiv1::__fundamental_type_info"; + "typeinfo for __cxxabiv1::__pbase_type_info"; + "typeinfo for __cxxabiv1::__pointer_to_member_type_info"; + "typeinfo for __cxxabiv1::__pointer_type_info"; + "typeinfo for __cxxabiv1::__si_class_type_info"; + "typeinfo for __cxxabiv1::__vmi_class_type_info"; + + # Typeinfo names. + + "typeinfo name for unsigned char const*"; + "typeinfo name for long const*"; + "typeinfo name for double const*"; + "typeinfo name for unsigned long long const*"; + "typeinfo name for unsigned short const*"; + "typeinfo name for char const*"; + "typeinfo name for long long const*"; + "typeinfo name for short const*"; + "typeinfo name for unsigned int const*"; + "typeinfo name for float const*"; + "typeinfo name for bool const*"; + "typeinfo name for wchar_t const*"; + "typeinfo name for int const*"; + "typeinfo name for unsigned long const*"; + "typeinfo name for void const*"; + "typeinfo name for long double const*"; + "typeinfo name for signed char const*"; + "typeinfo name for wchar_t"; + "typeinfo name for short"; + "typeinfo name for char"; + "typeinfo name for float"; + "typeinfo name for void"; + "typeinfo name for unsigned int"; + "typeinfo name for bool"; + "typeinfo name for signed char"; + "typeinfo name for long double"; + "typeinfo name for int"; + "typeinfo name for unsigned long long"; + "typeinfo name for unsigned long"; + "typeinfo name for unsigned char"; + "typeinfo name for long"; + "typeinfo name for long long"; + "typeinfo name for unsigned short"; + "typeinfo name for double"; + + "typeinfo name for bool*"; + "typeinfo name for wchar_t*"; + "typeinfo name for short*"; + "typeinfo name for char*"; + "typeinfo name for unsigned char*"; + "typeinfo name for long long*"; + "typeinfo name for unsigned short*"; + "typeinfo name for long*"; + "typeinfo name for double*"; + "typeinfo name for unsigned long*"; + "typeinfo name for unsigned long long*"; + "typeinfo name for int*"; + "typeinfo name for long double*"; + "typeinfo name for signed char*"; + "typeinfo name for void*"; + "typeinfo name for unsigned int*"; + "typeinfo name for float*"; + + "typeinfo name for __cxxabiv1::__array_type_info"; + "typeinfo name for __cxxabiv1::__class_type_info"; + "typeinfo name for __cxxabiv1::__enum_type_info"; + "typeinfo name for __cxxabiv1::__function_type_info"; + "typeinfo name for __cxxabiv1::__fundamental_type_info"; + "typeinfo name for __cxxabiv1::__pbase_type_info"; + "typeinfo name for __cxxabiv1::__pointer_to_member_type_info"; + "typeinfo name for __cxxabiv1::__pointer_type_info"; + "typeinfo name for __cxxabiv1::__si_class_type_info"; + "typeinfo name for __cxxabiv1::__vmi_class_type_info"; + + "std::type_info::type_info(std::type_info const&)"; + "std::type_info::operator=(std::type_info const&)"; + + + # Extensions + "pathscale::set_terminate(void (*)())"; + "pathscale::set_unexpected(void (*)())"; + "pathscale::set_use_thread_local_handlers(bool)"; + }; + + # C++11 typeinfo not understood by ld.bfd 2.17.50 + # std::nullptr_t + _ZTIDn;_ZTIPDn;_ZTIPKDn; + # char16_t + _ZTIDi;_ZTIPDi;_ZTIPKDi; + # char32_t + _ZTIDs;_ZTIPDs;_ZTIPKDs; + # IEEE 754r half-precision floating point + _ZTIDh;_ZTIPDh;_ZTIPKDh; + + # C++11 typeinfo name not understood by ld.bfd 2.17.50 + # std::nullptr_t + _ZTSDn;_ZTSPDn;_ZTSPKDn; + # char16_t + _ZTSDi;_ZTSPDi;_ZTSPKDi; + # char32_t + _ZTSDs;_ZTSPDs;_ZTSPKDs; + # IEEE 754r half-precision floating point + _ZTSDh;_ZTSPDh;_ZTSPKDh; + + local: + *; +}; + +CXXABI_1.3.1 { + __cxa_get_exception_ptr; +} CXXABI_1.3; + +CXXABI_1.3.5 { + extern "C++" { + "typeinfo for __int128 const*"; + "typeinfo for __int128"; + "typeinfo for __int128*"; + "typeinfo for unsigned __int128 const*"; + "typeinfo for unsigned __int128"; + "typeinfo for unsigned __int128*"; + }; +} CXXABI_1.3.1; + +CXXABI_1.3.6 { + __cxa_deleted_virtual; +} CXXABI_1.3.5; + +CXXABI_1.3.9 { + extern "C++" { + "typeinfo name for __int128 const*"; + "typeinfo name for __int128"; + "typeinfo name for __int128*"; + "typeinfo name for unsigned __int128 const*"; + "typeinfo name for unsigned __int128"; + "typeinfo name for unsigned __int128*"; + "operator delete[](void*, unsigned int)"; + "operator delete(void*, unsigned int)"; + }; +} CXXABI_1.3.6; + +CXXABI_1.3.11 { + __cxa_init_primary_exception; +} CXXABI_1.3.9; + +CXXRT_1.0 { + + extern "C++" { + "std::type_info::name() const"; + "std::type_info::before(std::type_info const&) const"; + "std::type_info::operator==(std::type_info const&) const"; + "std::type_info::operator!=(std::type_info const&) const"; + "std::bad_cast::bad_cast(std::bad_cast const&)"; + "std::bad_cast::bad_cast()"; + "std::bad_cast::operator=(std::bad_cast const&)"; + "std::bad_typeid::bad_typeid(std::bad_typeid const&)"; + "std::bad_typeid::bad_typeid()"; + "std::bad_typeid::operator=(std::bad_typeid const&)"; + "std::exception::exception(std::exception const&)"; + "std::exception::exception()"; + "std::exception::operator=(std::exception const&)"; + "std::bad_alloc::bad_alloc(std::bad_alloc const&)"; + "std::bad_alloc::bad_alloc()"; + "std::bad_alloc::operator=(std::bad_alloc const&)"; + "std::bad_array_new_length::bad_array_new_length(std::bad_array_new_length const&)"; + "std::bad_array_new_length::bad_array_new_length()"; + "std::bad_array_new_length::operator=(std::bad_array_new_length const&)"; + + }; + __cxa_allocate_dependent_exception; + __cxa_current_primary_exception; + __cxa_decrement_exception_refcount; + __cxa_free_dependent_exception; + __cxa_increment_exception_refcount; + __cxa_rethrow_primary_exception; + +} CXXABI_1.3.6; + + +GLIBCXX_3.4 { + extern "C++" { + "operator delete[](void*)"; + "operator delete(void*)"; + "operator new[](unsigned int)"; + "operator new(unsigned int)"; + "operator new(unsigned int, std::nothrow_t const&)"; + + "std::unexpected()"; + "std::get_terminate()"; + "std::get_unexpected()"; + "std::uncaught_exception()"; + "std::terminate()"; + + "std::type_info::~type_info()"; + "std::bad_cast::~bad_cast()"; + "std::bad_typeid::~bad_typeid()"; + "std::exception::~exception()"; + "std::bad_alloc::~bad_alloc()"; + "std::bad_array_new_length::~bad_array_new_length()"; + + "std::exception::what() const"; + + std::set_new_handler*; + std::set_terminate*; + std::set_unexpected*; + std::type_info::__*; + + "vtable for std::bad_alloc"; + "vtable for std::bad_cast"; + "vtable for std::bad_typeid"; + "vtable for std::exception"; + "vtable for std::type_info"; + "vtable for std::bad_array_new_length"; + + "typeinfo for std::bad_alloc"; + "typeinfo for std::bad_typeid"; + "typeinfo for std::bad_cast"; + "typeinfo for std::exception"; + "typeinfo for std::type_info"; + "typeinfo for std::bad_array_new_length"; + "typeinfo name for std::bad_alloc"; + "typeinfo name for std::bad_typeid"; + "typeinfo name for std::bad_cast"; + "typeinfo name for std::exception"; + "typeinfo name for std::type_info"; + "typeinfo name for std::bad_array_new_length"; + + }; +}; + +GLIBCXX_3.4.9 { + extern "C++" { + "std::bad_typeid::what() const"; + "std::bad_cast::what() const"; + "std::bad_alloc::what() const"; + "std::bad_array_new_length::what() const"; + }; +} GLIBCXX_3.4; + +GLIBCXX_3.4.20 { + extern "C++" { + "std::get_new_handler()"; + }; +} GLIBCXX_3.4.9; + +GLIBCXX_3.4.22 { + extern "C++" { + "std::uncaught_exceptions()"; + }; +} GLIBCXX_3.4.20; + |