[PATCH] libstdc++: Implement C++20 features for <sstream>
Jonathan Wakely
jwakely@redhat.com
Thu Oct 29 01:30:45 GMT 2020
On 28/10/20 23:59 +0000, Jonathan Wakely wrote:
>On 26/10/20 21:09 +0000, Jonathan Wakely wrote:
>>On 26/10/20 13:47 -0700, Thomas Rodgers wrote:
>>>From: Thomas Rodgers <trodgers@redhat.com>
>>>
>>>New ctors and ::view() accessor for -
>>>* basic_stingbuf
>>>* basic_istringstream
>>>* basic_ostringstream
>>>* basic_stringstreamm
>>>
>>>New ::get_allocator() accessor for basic_stringbuf.
>>>
>>>libstdc++-v3/ChangeLog:
>>> * acinclude.m4 (glibcxx_SUBDIRS): Add src/c++20.
>>> * config/abi/pre/gnu.ver: Update GLIBCXX_3.4.29 for the addition of -
>>> basic_stringbuf::basic_stringbuf(allocator const&),
>>> basic_stringbuf::basic_stringbuf(openmode, allocator const&),
>>> basic_stringbuf::basic_stringbuf(basic_string&&, openmode),
>>> basic_stringbuf::basic_stringbuf(basic_stringbuf&&, allocator const&),
>>> basic_stringbuf::get_allocator(),
>>> basic_stringbuf::view(),
>>> basic_istringstream::basic_istringstream(basic_string&&, openmode),
>>> basic_istringstream::basic_istringstream(openmode, allocator const&),
>>> basic_istringstream::view(),
>>> basic_ostringstream::basic_ostringstream(basic_string&&, openmode),
>>> basic_ostringstream::basic_ostringstream(openmode, allocator const&),
>>> basic_ostringstream::view(),
>>> basic_stringstream::basic_stringstream(basic_string&&, openmode),
>>> basic_stringstream::basic_stringstream(openmode, allocator const&),
>>> basic_stringstream::view().
>>
>>As discussed on IRC< please don't name every one of these functions
>>for the linker script changes, it's just redundant noise. They're
>>already listed below in the include/std/sstream changes.
>>
>>Look at past changelog entries for the gnu.ver file.
>>
>>> * configure: Regenerate.
>>> * include/std/sstream:
>>> (basic_stringbuf::basic_stringbuf(allocator const&)): New constructor.
>>> (basic_stringbuf::basic_stringbuf(openmode, allocator const&)): Likewise.
>>> (basic_stringbuf::basic_stringbuf(basic_string&&, openmode)): Likewise.
>>> (basic_stringbuf::basic_stringbuf(basic_stringbuf&&, allocator const&)): Likewise.
>>
>>New line before the Likewise.
>>
>>
>>There are a few formatting changes mentioned below. OK for trunk with
>>those changes. Thanks. Go ahead and commit the <syncstream> patch
>>after this one too.
>
>The patch that was committed broke the linker script. The attached
>patch restores the piece that got lost, and removes the duplicate
>patterns added for the new symbols. Pushed to trunk.
>
>This fixes all the failures related to exception_ptr. I'm still seeing
>four new failures which weren't there before:
>
>FAIL: 24_iterators/istream_iterator/sentinel.cc execution test
>FAIL: 24_iterators/istreambuf_iterator/sentinel.cc execution test
>FAIL: 27_io/basic_istream/extractors_character/char/lwg2499.cc execution test
>FAIL: std/ranges/istream_view.cc execution test
>
>I'm not sure what's happening there. It looks like some symbols I
>added recently are not present now. I'm investigating.
The attached patch fixes the failing tests. Not fully tested, but
pushed to trunk.
>Also, it looks like the get_allocator() members of the streams are not
>exported (only basic_stringbuf::get_allocator() is).
>
>
>commit f4f9364d2074e027490c1b08956ac1cbd9617575
>Author: Jonathan Wakely <jwakely@redhat.com>
>Date: Wed Oct 28 23:10:21 2020
>
> libstdc++: Fix linker script
>
> libstdc++-v3/ChangeLog:
>
> * config/abi/pre/gnu.ver (GLIBCXX_3.4.29): Remove duplicate
> patterns.
> (CXXABI_1.3.13): Restore missing piece.
>
>diff --git a/libstdc++-v3/config/abi/pre/gnu.ver b/libstdc++-v3/config/abi/pre/gnu.ver
>index 2648c813616..80994b203df 100644
>--- a/libstdc++-v3/config/abi/pre/gnu.ver
>+++ b/libstdc++-v3/config/abi/pre/gnu.ver
>@@ -2335,51 +2335,6 @@ GLIBCXX_3.4.29 {
> # std::__throw_bad_array_new_length()
> _ZSt28__throw_bad_array_new_lengthv;
>
>- # basic_stringbuf::basic_stringbuf(allocator const&)
>- _ZNSt7__cxx1115basic_stringbufI[cw]St11char_traitsI[cw]ESaI[cw]EEC1ERKS3_;
>-
>- # basic_stringbuf::basic_stringbuf(ios_base::openmode, allocator const&)
>- _ZNSt7__cxx1115basic_stringbufI[cw]St11char_traitsI[cw]ESaI[cw]EEC1ESt13_Ios_OpenmodeRKS3;
>-
>- # basic_stringbuf::basic_stringbuf(basic_string&&, ios_base::openmode)
>- _ZNSt7__cxx1115basic_stringbufI[cw]St11char_traitsI[cw]ESaI[cw]EEC1EONS_12basic_stringI[cw]S2_S3_EESt13_Ios_Openmode;
>-
>- # basic_stringbuf::basic_stringbuf(basic_stringbuf&&, allocator const&)
>- _ZNSt7__cxx1115basic_stringbufI[cw]St11char_traitsI[cw]ESaIcEEC1EOS4_RKS3_;
>-
>- # basic_stringbuf::get_allocator()
>- _ZNKSt7__cxx1115basic_stringbufI[cw]St11char_traitsI[cw]ESaI[cw]EE13get_allocatorEv;
>-
>- # basic_stringbuf::view()
>- _ZNKSt7__cxx1115basic_stringbufI[cw]St11char_traitsI[cw]ESaI[cw]EE4viewEv;
>-
>- # basic_istringstream::basic_istringstream(basic_string&&, ios_base::openmode)
>- _ZNSt7__cxx1119basic_istringstreamI[cw]St11char_traitsI[cw]ESaIcEEC1EONS_12basic_stringI[cw]S2_S3_EESt13_Ios_Openmode;
>-
>- # basic_istringstream::basic_istringstream(ios_base::openmode, allocator const&)
>- _ZNSt7__cxx1119basic_istringstreamI[cw]St11char_traitsI[cw]ESaI[cw]EEC1ESt13_Ios_OpenmodeRKS3_;
>-
>- # basic_istringstream::view()
>- _ZNKSt7__cxx1119basic_istringstreamI[cw]St11char_traitsI[cw]ESaI[cw]EE4viewEv;
>-
>- # basic_ostringstream::basic_ostringstream(basic_string&&, ios_base::openmode)
>- _ZNSt7__cxx1119basic_ostringstreamI[cw]St11char_traitsI[cw]ESaIcEEC1EONS_12basic_stringI[cw]S2_S3_EESt13_Ios_Openmode;
>-
>- # basic_ostringstream::basic_ostringstream(ios_base::openmode, allocator const&)
>- _ZNSt7__cxx1119basic_ostringstreamI[cw]St11char_traitsI[cw]ESaIcEEC1ESt13_Ios_OpenmodeRKS3_;
>-
>- # basic_ostringstream::view()
>- _ZNKSt7__cxx1119basic_ostringstreamI[cw]St11char_traitsI[cw]ESaI[cw]EE4viewEv;
>-
>- # basic_stringstream::basic_stringstream(basic_string&&, ios_base::openmode)
>- _ZNSt7__cxx1119basic_stringstreamI[cw]St11char_traitsI[cw]ESaIcEEC1EONS_12basic_stringI[cw]S2_S3_EESt13_Ios_Openmode;
>-
>- # basic_stringstream::basic_stringstream(ios_base::openmode, allocator const&)
>- _ZNSt7__cxx1119basic_stringstreamI[cw]St11char_traitsI[cw]ESaIcEEC1ESt13_Ios_OpenmodeRKS3_;
>-
>- # basic_stringstream::view()
>- _ZNKSt7__cxx1119basic_stringstreamI[cw]St11char_traitsI[cw]ESaI[cw]EE4viewEv;
>-
> # basic_stringbuf::basic_stringbuf(allocator const&)
> _ZNSt7__cxx1115basic_stringbufI[cw]St11char_traitsI[cw]ESaI[cw]EEC[12]ERKS3_;
>
>@@ -2398,13 +2353,13 @@ GLIBCXX_3.4.29 {
> # basic_stringbuf::view()
> _ZNKSt7__cxx1115basic_stringbufI[cw]St11char_traitsI[cw]ESaI[cw]EE4viewEv;
>
>- # basic_istringstream::basic_istringstream(basic_string&&, ios_base::openmode)
>+ # basic_[io]stringstream::basic_[io]stringstream(basic_string&&, ios_base::openmode)
> _ZNSt7__cxx1119basic_[io]stringstreamI[cw]St11char_traitsI[cw]ESaI[cw]EEC[12]EONS_12basic_stringI[cw]S2_S3_EESt13_Ios_Openmode;
>
> # basic_[io]stringstream::basic_[io]stringstream(ios_base::openmode, allocator const&)
> _ZNSt7__cxx1119basic_[io]stringstreamI[cw]St11char_traitsI[cw]ESaI[cw]EEC[12]ESt13_Ios_OpenmodeRKS3_;
>
>- # basic_istringstream::view()
>+ # basic_[io]stringstream::view()
> _ZNKSt7__cxx1119basic_[io]stringstreamI[cw]St11char_traitsI[cw]ESaI[cw]EE4viewEv;
>
> # basic_stringstream::basic_stringstream(basic_string&&, ios_base::openmode)
>@@ -2716,6 +2671,15 @@ CXXABI_1.3.12 {
>
> } CXXABI_1.3.11;
>
>+CXXABI_1.3.13 {
>+
>+ # std::exception_ptr::_M_addref()
>+ _ZNSt15__exception_ptr13exception_ptr9_M_addrefEv;
>+ # std::exception_ptr::_M_release()
>+ _ZNSt15__exception_ptr13exception_ptr10_M_releaseEv;
>+
>+} CXXABI_1.3.12;
>+
> # Symbols in the support library (libsupc++) supporting transactional memory.
> CXXABI_TM_1 {
>
-------------- next part --------------
A non-text attachment was scrubbed...
Name: patch.txt
Type: text/x-patch
Size: 1065 bytes
Desc: not available
URL: <https://gcc.gnu.org/pipermail/gcc-patches/attachments/20201029/61783abf/attachment.bin>
More information about the Gcc-patches
mailing list