[gcc r17-2579] libstdc++: Introduce GLIBCXX_3.4.37 version for symbols not backported to GCC-16.

Tomasz Kaminski via Gcc-cvs <[email protected]>
Newsgroups gmane.comp.gcc.cvs
Message-ID <20260721054837.4EBE24BA2E0C__29708.8479901262$1784612925$gmane$org@sourceware.org>
https://gcc.gnu.org/g:fabf7b5b9ac518635dca5233661a84b0f97063be

commit r17-2579-gfabf7b5b9ac518635dca5233661a84b0f97063be
Author: Tomasz Kamiński <[email protected]>
Date:   Mon Jul 20 11:53:48 2026 +0200

    libstdc++: Introduce GLIBCXX_3.4.37 version for symbols not backported to GCC-16.
    
    As part of the backport of r17-471-ge79f0f818c0e42 and r17-2193-g50cbacfaa1e776),
    the corresponding exports of chrono::__detail::__recent_leap_second_info and
    specializations of basic_format_arg::_M_handle_unrecognized also need to be
    introduced. This also require bump of the libtool_VERSION to 3.4.36.
    
    This patch bumps version again to 3.4.37 and moves remaining symbols defined
    in GCC 17 (basic_string's _S_allocate_at_least and _M_create_plus) to it.
    
    libstdc++-v3/ChangeLog:
    
            * acinclude.m4 (libtool_VERSION): Bump version.
            * config/abi/pre/gnu.ver (GLIBCXX_3.4.37): Add new symbol
            version and move basic_string's _S_allocate_at_least and
            _M_create_plus symbols to it.
            * config/abi/post/x86_64-linux-gnu/baseline_symbols.txt:
            Regenerate and include new 3.4.36 symbols.
            * config/abi/post/powerpc64le-linux-gnu/baseline_symbols.txt:
            Likewise.
            * configure: Regenerate.
            * testsuite/util/testsuite_abi.cc: Update known_versions
            and latestp.
    
    Reviewed-by: Jonathan Wakely <[email protected]>
    Signed-off-by: Tomasz Kamiński <[email protected]>

Diff:
---
 libstdc++-v3/acinclude.m4                                        | 2 +-
 .../config/abi/post/powerpc64le-linux-gnu/baseline_symbols.txt   | 4 ++++
 .../config/abi/post/x86_64-linux-gnu/baseline_symbols.txt        | 4 ++++
 libstdc++-v3/config/abi/pre/gnu.ver                              | 9 +++++++--
 libstdc++-v3/configure                                           | 2 +-
 libstdc++-v3/testsuite/util/testsuite_abi.cc                     | 3 ++-
 6 files changed, 19 insertions(+), 5 deletions(-)

diff --git a/libstdc++-v3/acinclude.m4 b/libstdc++-v3/acinclude.m4
index c064b1271ece..7942ce0ffa21 100644
--- a/libstdc++-v3/acinclude.m4
+++ b/libstdc++-v3/acinclude.m4
@@ -4087,7 +4087,7 @@ changequote([,])dnl
 fi
 
 # For libtool versioning info, format is CURRENT:REVISION:AGE
-libtool_VERSION=6:36:0
+libtool_VERSION=6:37:0
 
 # Everything parsed; figure out what files and settings to use.
 case $enable_symvers in
diff --git a/libstdc++-v3/config/abi/post/powerpc64le-linux-gnu/baseline_symbols.txt b/libstdc++-v3/config/abi/post/powerpc64le-linux-gnu/baseline_symbols.txt
index 43eca8d251cc..276b4167c7f1 100644
--- a/libstdc++-v3/config/abi/post/powerpc64le-linux-gnu/baseline_symbols.txt
+++ b/libstdc++-v3/config/abi/post/powerpc64le-linux-gnu/baseline_symbols.txt
@@ -582,6 +582,8 @@ FUNC:_ZNKSt15basic_streambufIwSt11char_traitsIwEE6getlocEv@@GLIBCXX_3.4
 FUNC:_ZNKSt15basic_stringbufIcSt11char_traitsIcESaIcEE3strEv@@GLIBCXX_3.4
 FUNC:_ZNKSt15basic_stringbufIwSt11char_traitsIwESaIwEE3strEv@@GLIBCXX_3.4
 FUNC:_ZNKSt16bad_array_length4whatEv@@CXXABI_1.3.8
+FUNC:_ZNKSt16basic_format_argISt20basic_format_contextINSt8__format10_Sink_iterIcEEcEE22_M_handle_unrecognizedEv@@GLIBCXX_3.4.36
+FUNC:_ZNKSt16basic_format_argISt20basic_format_contextINSt8__format10_Sink_iterIwEEwEE22_M_handle_unrecognizedEv@@GLIBCXX_3.4.36
 FUNC:_ZNKSt17__gnu_cxx_ieee1287num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE14_M_extract_intB5cxx11IjEES4_S4_S4_RSt8ios_baseRSt12_Ios_IostateRT_@@GLIBCXX_IEEE128_3.4.29
 FUNC:_ZNKSt17__gnu_cxx_ieee1287num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE14_M_extract_intB5cxx11IlEES4_S4_S4_RSt8ios_baseRSt12_Ios_IostateRT_@@GLIBCXX_IEEE128_3.4.29
 FUNC:_ZNKSt17__gnu_cxx_ieee1287num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE14_M_extract_intB5cxx11ImEES4_S4_S4_RSt8ios_baseRSt12_Ios_IostateRT_@@GLIBCXX_IEEE128_3.4.29
@@ -3530,6 +3532,7 @@ FUNC:_ZNSt6chrono13get_tzdb_listEv@@GLIBCXX_3.4.31
 FUNC:_ZNSt6chrono14remote_versionB5cxx11Ev@@GLIBCXX_3.4.31
 FUNC:_ZNSt6chrono3_V212steady_clock3nowEv@@GLIBCXX_3.4.19
 FUNC:_ZNSt6chrono3_V212system_clock3nowEv@@GLIBCXX_3.4.19
+FUNC:_ZNSt6chrono8__detail25__recent_leap_second_infoERNS_16leap_second_infoEj@@GLIBCXX_3.4.36
 FUNC:_ZNSt6chrono8get_tzdbEv@@GLIBCXX_3.4.31
 FUNC:_ZNSt6chrono9gps_clock3nowEv@@GLIBCXX_3.4.35
 FUNC:_ZNSt6chrono9tai_clock3nowEv@@GLIBCXX_3.4.35
@@ -5143,6 +5146,7 @@ OBJECT:0:GLIBCXX_3.4.32
 OBJECT:0:GLIBCXX_3.4.33
 OBJECT:0:GLIBCXX_3.4.34
 OBJECT:0:GLIBCXX_3.4.35
+OBJECT:0:GLIBCXX_3.4.36
 OBJECT:0:GLIBCXX_3.4.4
 OBJECT:0:GLIBCXX_3.4.5
 OBJECT:0:GLIBCXX_3.4.6
diff --git a/libstdc++-v3/config/abi/post/x86_64-linux-gnu/baseline_symbols.txt b/libstdc++-v3/config/abi/post/x86_64-linux-gnu/baseline_symbols.txt
index 8d8858221125..f1b142c95bd1 100644
--- a/libstdc++-v3/config/abi/post/x86_64-linux-gnu/baseline_symbols.txt
+++ b/libstdc++-v3/config/abi/post/x86_64-linux-gnu/baseline_symbols.txt
@@ -582,6 +582,8 @@ FUNC:_ZNKSt15basic_streambufIwSt11char_traitsIwEE6getlocEv@@GLIBCXX_3.4
 FUNC:_ZNKSt15basic_stringbufIcSt11char_traitsIcESaIcEE3strEv@@GLIBCXX_3.4
 FUNC:_ZNKSt15basic_stringbufIwSt11char_traitsIwESaIwEE3strEv@@GLIBCXX_3.4
 FUNC:_ZNKSt16bad_array_length4whatEv@@CXXABI_1.3.8
+FUNC:_ZNKSt16basic_format_argISt20basic_format_contextINSt8__format10_Sink_iterIcEEcEE22_M_handle_unrecognizedEv@@GLIBCXX_3.4.36
+FUNC:_ZNKSt16basic_format_argISt20basic_format_contextINSt8__format10_Sink_iterIwEEwEE22_M_handle_unrecognizedEv@@GLIBCXX_3.4.36
 FUNC:_ZNKSt17bad_function_call4whatEv@@GLIBCXX_3.4.18
 FUNC:_ZNKSt18basic_stringstreamIcSt11char_traitsIcESaIcEE3strEv@@GLIBCXX_3.4
 FUNC:_ZNKSt18basic_stringstreamIcSt11char_traitsIcESaIcEE5rdbufEv@@GLIBCXX_3.4
@@ -3169,6 +3171,7 @@ FUNC:_ZNSt6chrono13get_tzdb_listEv@@GLIBCXX_3.4.31
 FUNC:_ZNSt6chrono14remote_versionB5cxx11Ev@@GLIBCXX_3.4.31
 FUNC:_ZNSt6chrono3_V212steady_clock3nowEv@@GLIBCXX_3.4.19
 FUNC:_ZNSt6chrono3_V212system_clock3nowEv@@GLIBCXX_3.4.19
+FUNC:_ZNSt6chrono8__detail25__recent_leap_second_infoERNS_16leap_second_infoEj@@GLIBCXX_3.4.36
 FUNC:_ZNSt6chrono8get_tzdbEv@@GLIBCXX_3.4.31
 FUNC:_ZNSt6chrono9gps_clock3nowEv@@GLIBCXX_3.4.35
 FUNC:_ZNSt6chrono9tai_clock3nowEv@@GLIBCXX_3.4.35
@@ -4693,6 +4696,7 @@ OBJECT:0:GLIBCXX_3.4.32
 OBJECT:0:GLIBCXX_3.4.33
 OBJECT:0:GLIBCXX_3.4.34
 OBJECT:0:GLIBCXX_3.4.35
+OBJECT:0:GLIBCXX_3.4.36
 OBJECT:0:GLIBCXX_3.4.4
 OBJECT:0:GLIBCXX_3.4.5
 OBJECT:0:GLIBCXX_3.4.6
diff --git a/libstdc++-v3/config/abi/pre/gnu.ver b/libstdc++-v3/config/abi/pre/gnu.ver
index 9e1bebb4f500..4fbb87acee3f 100644
--- a/libstdc++-v3/config/abi/pre/gnu.ver
+++ b/libstdc++-v3/config/abi/pre/gnu.ver
@@ -2623,7 +2623,7 @@ GLIBCXX_3.4.35 {
 
 } GLIBCXX_3.4.34;
 
-# GCC 17.1.0
+# GCC 16.2.0
 GLIBCXX_3.4.36 {
 
     _ZNSt6chrono8__detail25__recent_leap_second_infoERNS_16leap_second_infoEj;
@@ -2632,11 +2632,16 @@ GLIBCXX_3.4.36 {
     # basic_format_arg<wformat_context>::handle basic_format_arg<wformat_context>::_M_handle_unrecognized() const;
     _ZNKSt16basic_format_argISt20basic_format_contextINSt8__format10_Sink_iterI[cw]EE[cw]EE22_M_handle_unrecognizedEv;
 
+} GLIBCXX_3.4.35;
+
+# GCC 17.1.0
+GLIBCXX_3.4.37 {
+
     # basic_string::allocate_at_least
     _ZNSt7__cxx1112basic_stringI[cw]St11char_traitsI[cw]ESaI[cw]EE*_S_allocate_*;
     _ZNSt7__cxx1112basic_stringI[cw]St11char_traitsI[cw]ESaI[cw]EE*_M_create_*;
 
-} GLIBCXX_3.4.35;
+} GLIBCXX_3.4.36;
 
 # Symbols in the support library (libsupc++) have their own tag.
 CXXABI_1.3 {
diff --git a/libstdc++-v3/configure b/libstdc++-v3/configure
index 101212d06a81..96e3298a28b7 100755
--- a/libstdc++-v3/configure
+++ b/libstdc++-v3/configure
@@ -51016,7 +51016,7 @@ $as_echo "$as_me: WARNING: === Symbol versioning will be disabled." >&2;}
 fi
 
 # For libtool versioning info, format is CURRENT:REVISION:AGE
-libtool_VERSION=6:36:0
+libtool_VERSION=6:37:0
 
 # Everything parsed; figure out what files and settings to use.
 case $enable_symvers in
diff --git a/libstdc++-v3/testsuite/util/testsuite_abi.cc b/libstdc++-v3/testsuite/util/testsuite_abi.cc
index 4e80c5f184a6..bc637f6671c5 100644
--- a/libstdc++-v3/testsuite/util/testsuite_abi.cc
+++ b/libstdc++-v3/testsuite/util/testsuite_abi.cc
@@ -218,6 +218,7 @@ check_version(symbol& test, bool added)
       known_versions.push_back("GLIBCXX_3.4.34");
       known_versions.push_back("GLIBCXX_3.4.35");
       known_versions.push_back("GLIBCXX_3.4.36");
+      known_versions.push_back("GLIBCXX_3.4.37");
       known_versions.push_back("GLIBCXX_LDBL_3.4.31");
       known_versions.push_back("GLIBCXX_IEEE128_3.4.29");
       known_versions.push_back("GLIBCXX_IEEE128_3.4.30");
@@ -261,7 +262,7 @@ check_version(symbol& test, bool added)
 	test.version_status = symbol::incompatible;
 
       // Check that added symbols are added in the latest pre-release version.
-      bool latestp = (test.version_name == "GLIBCXX_3.4.36"
+      bool latestp = (test.version_name == "GLIBCXX_3.4.37"
 		     || test.version_name == "CXXABI_1.3.17"
 		     || test.version_name == "CXXABI_FLOAT128"
 		     || test.version_name == "CXXABI_TM_1");
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.