Date: Sun, 27 Jan 2013 13:28:44 +0000 From: David Chisnall <theraven@FreeBSD.org> To: toolchain@FreeBSD.org Subject: C++ runtime version patch for testing Message-ID: <EDDAA896-D752-450F-89A0-4831FB016AC5@FreeBSD.org>
index | next in thread | raw e-mail
[-- Attachment #1 --]
Hi All,
Here is a patch that, I believe, should fix the symbol version mismatches between the runtime and the STL implementation. I have run the exception tests from libcxxrt with this patch applied and:
- libsupc++ & libstdc++
- libcxxrt & libstdc++
- libcxxrt & libc++
All tests pass for me now. Please let me know if there are any problems with this, otherwise I'll aim to commit it today or tomorrow with a 1-week MFC.
David
Index: gnu/lib/libsupc++/Version.map
===================================================================
--- gnu/lib/libsupc++/Version.map (revision 245840)
+++ gnu/lib/libsupc++/Version.map (working copy)
@@ -142,6 +142,28 @@
_ZdaPvRKSt9nothrow_t;
_ZdlPv;
_ZdlPvRKSt9nothrow_t;
+ extern "C++" {
+ std::set_new_handler*;
+ std::set_terminate*;
+ std::set_unexpected*;
+ std::bad_alloc*;
+
+ std::bad_alloc*;
+ std::bad_cast*;
+ std::exception*;
+
+ "typeinfo for std::bad_alloc";
+ "typeinfo for std::bad_cast";
+ "typeinfo for std::exception";
+
+ "typeinfo name for std::bad_alloc";
+ "typeinfo name for std::bad_cast";
+ "typeinfo name for std::exception";
+
+ "vtable for std::bad_alloc";
+ "vtable for std::bad_cast";
+ "vtable for std::exception";
+ };
};
CXXABI_1.3.1 {
Index: lib/libcxxrt/Version.map
===================================================================
--- lib/libcxxrt/Version.map (revision 245840)
+++ lib/libcxxrt/Version.map (working copy)
@@ -209,18 +209,7 @@
"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
@@ -243,70 +232,25 @@
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";
- "std::type_info::__is_function_p() const";
- "std::type_info::__do_upcast(__cxxabiv1::__class_type_info const*, void**) const";
- "std::type_info::__is_pointer_p() const";
-
};
__cxa_allocate_dependent_exception;
__cxa_current_primary_exception;
@@ -317,6 +261,15 @@
} CXXABI_1.3.1;
+
+GLIBCXX_3.4.9 {
+ extern "C++" {
+ "std::bad_typeid::what() const";
+ "std::bad_cast::what() const";
+ "std::bad_alloc::what() const";
+ };
+};
+
GLIBCXX_3.4 {
extern "C++" {
"operator delete[](void*)";
@@ -327,5 +280,41 @@
"operator new[](unsigned long)";
"operator new(unsigned long)";
"operator new(unsigned long, 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::exception::~exception()";
+
+ std::set_new_handler*;
+ std::set_terminate*;
+ std::set_unexpected*;
+ std::exception*;
+ std::bad_alloc*;
+ std::bad_typeid*;
+ 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";
+
+ "typeinfo for std::bad_alloc";
+ "typeinfo for std::bad_typeid";
+ "typeinfo for std::exception";
+ "typeinfo for std::bad_cast";
+ "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::exception";
+ "typeinfo name for std::type_info";
+
};
};
[-- Attachment #2 --]
-----BEGIN PGP SIGNATURE-----
Version: GnuPG/MacGPG2 v2.0.18 (Darwin)
iQIcBAEBAgAGBQJRBSuNAAoJEKx65DEEsqIdCfIP+gLdpwTPdLYLFwc4aeWU+dp1
SG9BviCrEDWOtJ5uPr1J5GCDoXv3b0fzZarufx6OZ/M2DmarB0PzG0ILrQQldlVI
xSDBlFJmCV4nWzBuLLoVL1qf7JF75aRre85+iAiOnayW9kn6WvXFCsUYO0iZqpJg
A864hMFmQmQUbQmUeT7nGD9zBz49Bh1XLByTGcey77OHDhngKvpKsNWaw+dYG8lf
ZAOhKDQQaa5i4fbcd08UENYs/uVqIqP9D5PHQP4vzd0eh/IgX8oac6feh6pdIrHv
uN6WUkS/DGj5Yc5yzdGCD62n5qhpudI3zV8a1wK2G8PYrh3of0XprCFC1hEyL3zh
qJNNLOUJL61GLTNk2jBfoj0T/JTppuxeinf6E51N+bDxg1zuoc9D/MY5uD0iDAYG
Cw8W+Ygo4xHoW8Wu+m6BUHCh/c4jKNrhebCC1qyq0tWjX5w3N3YAovADUueusaTc
I+2uJgXuPfiUoHGLKd+MIkWqCPKlHCyXrU2VltwdWpyFD9Xz1N3OSJELibJJFCV3
mcUwmP7zESAJf7Fjlq9W1s4cYQgD06mhFmQpHS9G8ws7ipE/6fjYua5C76Fv3g//
i64fmcQnWYjEReKZP8M0+7852QlT4UWYC5Gy4mGlpbdDWXyhiL2EB+fuvemxwKzK
YKHpqhwo7RmyDFvVwnOP
=Ek76
-----END PGP SIGNATURE-----
home |
help
Want to link to this message? Use this
URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?EDDAA896-D752-450F-89A0-4831FB016AC5>
