On 02/11/20 3:17 pm, Jonathan Wakely wrote:
On 01/11/20 20:48 +0100, François Dumont via Libstdc++ wrote:
Several tests are failing because of those missing symbols.

I understand why we need to export symbols relying in the versioned namespace but I don't understand why we need to do it for _GLIBCXX_DEBUG symbols which are not version namespace dependant.

If you don't export the symbol, it can't be found by code linking to
libstdc++.so.8

So I understand that in versioned namespace mode only gnu-versioned-namespace.ver is being used and not gnu.ver.


This linker script is the only one used to build libstdc++.so.8 so all
symbols that need to be exported by that library have to be exported
by this script. Nothing exports that debug symbol unless you add it
here.

What I don't understand is why the __istream_extract symbol isn't
matched by the wildcard in the extern "C++" block at the top of the
file.

Maybe for the same reason that the std::__copy_streambufs before this one and some others symbols in std::__8 had to be explicitely exported too.

But I don't know it.


Do you want to backport the Debug symbol ?

    libstdc++: Add mising gnu-versioned-namespace symbols

    libstdc++-v3/ChangeLog:

            * config/abi/pre/gnu-versioned-namespace.ver:
            Add __istream_extract and _Safe_local_iterator_base::_M_attach_single
            symbols.

Tested under Linux x86_64 versioned namespace.

Ok to commit ?

François


diff --git a/libstdc++-v3/config/abi/pre/gnu-versioned-namespace.ver b/libstdc++-v3/config/abi/pre/gnu-versioned-namespace.ver
index 0965854fbc3..3b6d7944d06 100644
--- a/libstdc++-v3/config/abi/pre/gnu-versioned-namespace.ver
+++ b/libstdc++-v3/config/abi/pre/gnu-versioned-namespace.ver
@@ -98,6 +98,9 @@ GLIBCXX_8.0 {
    _ZNSt3__817__copy_streambufsI*;
    _ZNSt3__821__copy_streambufs_eofI*;

+    # std::__istream_extract(wistream&, wchar_t*, streamsize)
+ _ZNSt3__817__istream_extractIwNS_11char_traitsIwEEEEvRNS_13basic_istreamIT_T0_EEPS4_[ilx];
+
    # __gnu_cxx::__atomic_add
    # __gnu_cxx::__exchange_and_add
    _ZN9__gnu_cxx3__812__atomic_addEPV[il][il];
@@ -145,6 +148,7 @@ GLIBCXX_8.0 {
_ZN11__gnu_debug30_Safe_unordered_container_base13_M_detach_allEv;
_ZN11__gnu_debug25_Safe_local_iterator_base9_M_attachEPNS_19_Safe_sequence_baseEb;
    _ZN11__gnu_debug25_Safe_local_iterator_base9_M_detachEv;
+ _ZN11__gnu_debug25_Safe_local_iterator_base16_M_attach_singleEPNS_19_Safe_sequence_baseEb;

    # parallel mode
    _ZN14__gnu_parallel9_Settings3getEv;


Reply via email to