[PATCH v2] libstdc++: Introduce GLIBCXX_3.4.37 version for symbols not backported to GCC-16.
Tomasz Kamiński
tkaminsk@redhat.com
Mon Jul 20 12:03:54 GMT 2026
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:
Regenereate 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 <jwakely@redhat.com>
Signed-off-by: Tomasz Kamiński <tkaminsk@redhat.com>
---
v2 updates baseline symbols for x86_64-linux and powerpc64-le.
OK for trunk?
libstdc++-v3/acinclude.m4 | 2 +-
.../abi/post/powerpc64le-linux-gnu/baseline_symbols.txt | 4 ++++
.../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 c064b1271ec..7942ce0ffa2 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 43eca8d251c..276b4167c7f 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 8d885822112..f1b142c95bd 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 9e1bebb4f50..4fbb87acee3 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 101212d06a8..96e3298a28b 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 4e80c5f184a..bc637f6671c 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");
--
2.55.0
More information about the Libstdc++
mailing list