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 <trodg...@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 <jwak...@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 {


commit c6bfc4eb3c961181912647781d7dd38057db655b
Author: Jonathan Wakely <jwak...@redhat.com>
Date:   Thu Oct 29 01:05:03 2020

    libstdc++: Fix new basic_stringbuf constructor
    
    libstdc++-v3/ChangeLog:
    
            * include/std/sstream (basic_stringbuf(__string_type&&, openmode)):
            Call _M_init_syncbuf to set up get/put areas. Also qualify
            std::move.

diff --git a/libstdc++-v3/include/std/sstream b/libstdc++-v3/include/std/sstream
index f03f3abd6fc..33a00486606 100644
--- a/libstdc++-v3/include/std/sstream
+++ b/libstdc++-v3/include/std/sstream
@@ -181,8 +181,8 @@ _GLIBCXX_BEGIN_NAMESPACE_CXX11
       basic_stringbuf(__string_type&& __s,
 	              ios_base::openmode __mode = ios_base::in
 						  | ios_base::out )
-      : __streambuf_type(), _M_mode(__mode), _M_string(move(__s))
-      { }
+      : __streambuf_type(), _M_mode(__mode), _M_string(std::move(__s))
+      { _M_stringbuf_init(__mode); }
 
       template<typename _SAlloc>
       basic_stringbuf(const basic_string<_CharT, _Traits, _SAlloc>& __s,

Reply via email to