* [PATCH] Add missing gnu-versioned-namespace symbols
@ 2020-11-01 19:48 François Dumont
2020-11-02 14:17 ` Jonathan Wakely
0 siblings, 1 reply; 4+ messages in thread
From: François Dumont @ 2020-11-01 19:48 UTC (permalink / raw)
To: libstdc++, gcc-patches
[-- Attachment #1: Type: text/plain, Size: 670 bytes --]
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.
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
[-- Attachment #2: gnu-versioned-ns.patch --]
[-- Type: text/x-patch, Size: 1096 bytes --]
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;
^ permalink raw reply [flat|nested] 4+ messages in thread
* Re: [PATCH] Add missing gnu-versioned-namespace symbols
2020-11-01 19:48 [PATCH] Add missing gnu-versioned-namespace symbols François Dumont
@ 2020-11-02 14:17 ` Jonathan Wakely
2020-11-02 20:52 ` François Dumont
0 siblings, 1 reply; 4+ messages in thread
From: Jonathan Wakely @ 2020-11-02 14:17 UTC (permalink / raw)
To: François Dumont; +Cc: libstdc++, gcc-patches
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
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.
>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;
^ permalink raw reply [flat|nested] 4+ messages in thread
* Re: [PATCH] Add missing gnu-versioned-namespace symbols
2020-11-02 14:17 ` Jonathan Wakely
@ 2020-11-02 20:52 ` François Dumont
2020-11-03 8:25 ` Jonathan Wakely
0 siblings, 1 reply; 4+ messages in thread
From: François Dumont @ 2020-11-02 20:52 UTC (permalink / raw)
To: Jonathan Wakely; +Cc: libstdc++, gcc-patches
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;
>
^ permalink raw reply [flat|nested] 4+ messages in thread
* Re: [PATCH] Add missing gnu-versioned-namespace symbols
2020-11-02 20:52 ` François Dumont
@ 2020-11-03 8:25 ` Jonathan Wakely
0 siblings, 0 replies; 4+ messages in thread
From: Jonathan Wakely @ 2020-11-03 8:25 UTC (permalink / raw)
To: François Dumont; +Cc: libstdc++, gcc-patches
On 02/11/20 21:52 +0100, François Dumont via Libstdc++ wrote:
>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.
Right.
>>
>>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.
Yeah, I don't understand those either.
OK for trunk anyway. I'll investigate another day.
^ permalink raw reply [flat|nested] 4+ messages in thread
end of thread, other threads:[~2020-11-03 8:25 UTC | newest]
Thread overview: 4+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2020-11-01 19:48 [PATCH] Add missing gnu-versioned-namespace symbols François Dumont
2020-11-02 14:17 ` Jonathan Wakely
2020-11-02 20:52 ` François Dumont
2020-11-03 8:25 ` Jonathan Wakely
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).