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");
