aboutsummaryrefslogtreecommitdiff
path: root/lib/libcxxrt
diff options
context:
space:
mode:
Diffstat (limited to 'lib/libcxxrt')
-rw-r--r--lib/libcxxrt/Makefile53
-rw-r--r--lib/libcxxrt/Makefile.depend15
-rw-r--r--lib/libcxxrt/Makefile.depend.host10
-rw-r--r--lib/libcxxrt/Version.map365
-rw-r--r--lib/libcxxrt/Version.map.arm366
5 files changed, 809 insertions, 0 deletions
diff --git a/lib/libcxxrt/Makefile b/lib/libcxxrt/Makefile
new file mode 100644
index 000000000000..0f203b3a7cb1
--- /dev/null
+++ b/lib/libcxxrt/Makefile
@@ -0,0 +1,53 @@
+PACKAGE= clibs
+SHLIBDIR?= /lib
+
+.include <src.opts.mk>
+
+SRCDIR= ${SRCTOP}/contrib/libcxxrt
+
+SHLIB_MAJOR= 1
+
+.PATH: ${SRCDIR}
+
+LIB= cxxrt
+
+SRCS+= auxhelper.cc
+SRCS+= dynamic_cast.cc
+SRCS+= exception.cc
+SRCS+= guard.cc
+SRCS+= libelftc_dem_gnu3.c
+SRCS+= memory.cc
+SRCS+= stdexcept.cc
+SRCS+= terminate.cc
+SRCS+= typeinfo.cc
+
+WARNS?= 0
+CFLAGS+= -isystem ${SRCDIR} -nostdinc++
+
+.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>
+
+# gcc13 doesn't support _Float16 on riscv, powerpc64, and x86 or __int128
+# on i386. Disable checks for missing symbols to allow this to link.
+#
+# XXX: This is a hack that hides an ABI divergence between clang and gcc.
+.if ${COMPILER_TYPE} == "gcc" && \
+ (${MACHINE_ARCH} == "amd64" || ${MACHINE_ARCH} == "i386" || \
+ ${MACHINE_ARCH:Mpowerpc64*} || ${MACHINE_ARCH} == "riscv64")
+LDFLAGS+= -Wl,--undefined-version
+.endif
diff --git a/lib/libcxxrt/Makefile.depend b/lib/libcxxrt/Makefile.depend
new file mode 100644
index 000000000000..6ef78fac5cbf
--- /dev/null
+++ b/lib/libcxxrt/Makefile.depend
@@ -0,0 +1,15 @@
+# Autogenerated - do NOT edit!
+
+DIRDEPS = \
+ include \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libcompiler_rt \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/lib/libcxxrt/Makefile.depend.host b/lib/libcxxrt/Makefile.depend.host
new file mode 100644
index 000000000000..11aba52f82cf
--- /dev/null
+++ b/lib/libcxxrt/Makefile.depend.host
@@ -0,0 +1,10 @@
+# Autogenerated - do NOT edit!
+
+DIRDEPS = \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/lib/libcxxrt/Version.map b/lib/libcxxrt/Version.map
new file mode 100644
index 000000000000..02cce34c234f
--- /dev/null
+++ b/lib/libcxxrt/Version.map
@@ -0,0 +1,365 @@
+# 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_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 %%NEW_DELETE_TYPE%%)";
+ "operator delete(void*, unsigned %%NEW_DELETE_TYPE%%)";
+ };
+} CXXABI_1.3.6;
+
+CXXABI_1.3.11 {
+ __cxa_init_primary_exception;
+} CXXABI_1.3.9;
+
+CXXABI_1.3.15 {
+ __cxa_call_terminate;
+} CXXABI_1.3.11;
+
+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 %%NEW_DELETE_TYPE%%)";
+ "operator new(unsigned %%NEW_DELETE_TYPE%%)";
+ "operator new(unsigned %%NEW_DELETE_TYPE%%, 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;
+
diff --git a/lib/libcxxrt/Version.map.arm b/lib/libcxxrt/Version.map.arm
new file mode 100644
index 000000000000..aef918149b79
--- /dev/null
+++ b/lib/libcxxrt/Version.map.arm
@@ -0,0 +1,366 @@
+# 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;
+
+CXXABI_1.3.15 {
+ __cxa_call_terminate;
+} CXXABI_1.3.11;
+
+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;
+