Skip site navigation (1)Skip section navigation (2)
Date:      Sun, 27 Jan 2013 17:03:13 +0200
From:      Konstantin Belousov <kostikbel@gmail.com>
To:        David Chisnall <theraven@FreeBSD.org>
Cc:        toolchain@FreeBSD.org
Subject:   Re: C++ runtime version patch for testing
Message-ID:  <20130127150313.GM2522@kib.kiev.ua>
In-Reply-To: <EDDAA896-D752-450F-89A0-4831FB016AC5@FreeBSD.org>

index | next in thread | previous in thread | raw e-mail

[-- Attachment #1 --]
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 ?

[-- Attachment #2 --]
-----BEGIN PGP SIGNATURE-----
Version: GnuPG v2.0.19 (FreeBSD)

iQIcBAEBAgAGBQJRBUGwAAoJEJDCuSvBvK1BIQcQAJJYvqkp7yN1E6yMdJ9CZHOh
wXz6k77UMxuaEuQ/d0sdqKkwnKwZocrhG1i5pGctJ+kzSVOTBRL+pJsxB2MA/fK7
85tpFn2GtSwT4CGFsEpu2Ij71sh6fz1hsGEEM2nWhkZwF2zG9VM83Q67YaiBj4ee
0SRh7/JMlQWMsKGgeOiz8hTQkNJug2eb5SteKNy4kBCDB/9JNQTpMb6DFPofwWSY
YsqBmmHMmhRQhpnNuX+1LU+qXUqs07WX0qISX8bDTgcrfMLeU55uGE5KhKkRWHYT
qkWikhiXSh3TzNE+iHK3YJJr7D/vnWHjY6S+bhCkY1JyjgEo5aWfUutCZQan4c3n
rlHcAXeUAGHqDMPMtFouQTgL9PgF2fhUzdSFV/s9V5HhF1JHhuEB6fpMKsMgX8ZM
AckE2bJhUvOfKY320iH0p9UdwqyGxoT0Jwe0P3P3iq/4INzWuu8wm+OaQrIAqSBF
0yiF0J+Px91owTlzCXbQEu3q00SDiFuaG9DXigkuIM4Uu1XKpnqAMAxPWf/tpi0E
lb8WbvGQ/oWeIaCE1ThJfuAAn+9SnA2HwNzcS85JkXYnakHKoIISYA+D/6SZCfkP
VaiV+JBgOBJvTq2LCiIp/JtNbXHUYA7JaWKToq3P+QgfZc5hNhHIrL2EIUyVCE+E
5IQyZl8xnoi1Ts5g6sEe
=5a59
-----END PGP SIGNATURE-----
help

Want to link to this message? Use this
URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?20130127150313.GM2522>