C++ runtime version patch for testing
Konstantin Belousov
kostikbel at gmail.com
Sun Jan 27 15:03:18 UTC 2013
On Sun, Jan 27, 2013 at 01:28:44PM +0000, David Chisnall wrote:
> 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*;
What are the symbols you assigning the version there ? I cannot find
anything in the libstdc++.so export list which would match the line.
> + std::set_terminate*;
> + std::set_unexpected*;
> + std::bad_alloc*;
> +
> + std::bad_alloc*;
std::bad_alloc seems to be duplicated.
Besides that, pristine libstdc++.so exports 'std::bad_alloc::what() const'
at the GLIBCXX_3.4.9 namespace. You did this for the *::what()' from
libcxxrt but not for the libsupc++.
> + 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&)";
[omitted]
Do applications record the dependency on the libcxxrt directly,
using the DT_NEEDED tag ?
-------------- next part --------------
A non-text attachment was scrubbed...
Name: not available
Type: application/pgp-signature
Size: 834 bytes
Desc: not available
URL: <http://lists.freebsd.org/pipermail/freebsd-toolchain/attachments/20130127/200a86c3/attachment.sig>
More information about the freebsd-toolchain
mailing list