diff options
author | theraven <theraven@FreeBSD.org> | 2012-03-19 11:53:33 +0000 |
---|---|---|
committer | theraven <theraven@FreeBSD.org> | 2012-03-19 11:53:33 +0000 |
commit | 3cb70b8f4072fdd502498c3b185e78bf54bb81de (patch) | |
tree | f9aaa290fad4be1be1014c8e05fb52bed05dab41 /lib/libcxxrt | |
parent | f3af7bf15c147f127fc859b2bd4ecea90514e65a (diff) | |
download | FreeBSD-src-3cb70b8f4072fdd502498c3b185e78bf54bb81de.zip FreeBSD-src-3cb70b8f4072fdd502498c3b185e78bf54bb81de.tar.gz |
Add symbol versioning to libcxxrt.
Approved by: dim (mentor)
Diffstat (limited to 'lib/libcxxrt')
-rw-r--r-- | lib/libcxxrt/Makefile | 1 | ||||
-rw-r--r-- | lib/libcxxrt/Version.map | 318 |
2 files changed, 319 insertions, 0 deletions
diff --git a/lib/libcxxrt/Makefile b/lib/libcxxrt/Makefile index f1dd957..e710546 100644 --- a/lib/libcxxrt/Makefile +++ b/lib/libcxxrt/Makefile @@ -21,5 +21,6 @@ SRCS+= libelftc_dem_gnu3.c\ WARNS= 0 CFLAGS+= -I${SRCDIR} +VERSION_MAP= ${.CURDIR}/Version.map .include <bsd.lib.mk> diff --git a/lib/libcxxrt/Version.map b/lib/libcxxrt/Version.map new file mode 100644 index 0000000..35d0e75 --- /dev/null +++ b/lib/libcxxrt/Version.map @@ -0,0 +1,318 @@ +# $FreeBSD$ +# 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_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; + __cxa_guard_abort; + __cxa_guard_acquire; + __cxa_guard_release; + __cxa_pure_virtual; + __cxa_rethrow; + __cxa_throw; + __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. + "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::type_info(std::type_info const&)"; + "std::type_info::~type_info()"; + "std::type_info::~type_info()"; + "std::type_info::~type_info()"; + "std::type_info::operator=(std::type_info const&)"; + "std::unexpected()"; + "std::get_terminate()"; + "std::set_terminate(void (*)())"; + "std::get_unexpected()"; + "std::set_unexpected(void (*)())"; + "std::set_new_handler(void (*)())"; + "std::uncaught_exception()"; + "std::terminate()"; + + + # Extensions + "pathscale::set_terminate(void (*)())"; + "pathscale::set_unexpected(void (*)())"; + "pathscale::set_use_thread_local_handlers(bool)"; + + + }; + + local: + *; +}; + +CXXABI_1.3.1 { + __cxa_get_exception_ptr; +} CXXABI_1.3; + + +CXXRT_1.0 { + + extern "C++" { + "std::bad_cast::what() const"; + "std::bad_typeid::what() const"; + "std::bad_alloc::what() const"; + "std::exception::what() const"; + "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_typeid::bad_typeid(std::bad_typeid const&)"; + "std::bad_typeid::bad_typeid()"; + "std::bad_typeid::bad_typeid(std::bad_typeid const&)"; + "std::bad_typeid::bad_typeid()"; + "std::bad_typeid::~bad_typeid()"; + "std::bad_typeid::~bad_typeid()"; + "std::bad_typeid::~bad_typeid()"; + "std::bad_typeid::operator=(std::bad_typeid const&)"; + "std::bad_cast::bad_cast(std::bad_cast const&)"; + "std::bad_cast::bad_cast()"; + "std::bad_cast::bad_cast(std::bad_cast const&)"; + "std::bad_cast::bad_cast()"; + "std::bad_cast::~bad_cast()"; + "std::bad_cast::~bad_cast()"; + "std::bad_cast::~bad_cast()"; + "std::bad_cast::operator=(std::bad_cast const&)"; + "std::bad_alloc::bad_alloc(std::bad_alloc const&)"; + "std::bad_alloc::bad_alloc()"; + "std::bad_alloc::bad_alloc(std::bad_alloc const&)"; + "std::bad_alloc::bad_alloc()"; + "std::bad_alloc::~bad_alloc()"; + "std::bad_alloc::~bad_alloc()"; + "std::bad_alloc::~bad_alloc()"; + "std::bad_alloc::operator=(std::bad_alloc const&)"; + "std::exception::exception(std::exception const&)"; + "std::exception::exception()"; + "std::exception::exception(std::exception const&)"; + "std::exception::exception()"; + "std::exception::~exception()"; + "std::exception::~exception()"; + "std::exception::~exception()"; + "std::exception::operator=(std::exception const&)"; + + + "vtable for std::bad_typeid"; + "vtable for std::bad_cast"; + "vtable for std::bad_alloc"; + "vtable for std::exception"; + "vtable for std::type_info"; + "typeinfo for std::bad_typeid"; + "typeinfo for std::bad_cast"; + "typeinfo for std::bad_alloc"; + "typeinfo for std::exception"; + "typeinfo for std::type_info"; + "typeinfo name for std::bad_typeid"; + "typeinfo name for std::bad_cast"; + "typeinfo name for std::bad_alloc"; + "typeinfo name for std::exception"; + "typeinfo name for std::type_info"; + + "operator delete[](void*)"; + "operator delete(void*)"; + "operator new[](unsigned long)"; + "operator new(unsigned long)"; + "operator new(unsigned long, std::nothrow_t 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.1; |