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

Jonathan Wakely jwakely@redhat.com
Mon Jul 20 10:40:06 GMT 2026


On Mon, 20 Jul 2026 at 11:39, Tomasz Kamiński <tkaminsk@redhat.com> wrote:
>
> 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.
>         * configure: Regenerate.
>         * testsuite/util/testsuite_abi.cc: Update known_versions
>         and latestp.
> ---
>  libstdc++-v3/acinclude.m4                    | 2 +-
>  libstdc++-v3/config/abi/pre/gnu.ver          | 9 +++++++--
>  libstdc++-v3/configure                       | 2 +-
>  libstdc++-v3/testsuite/util/testsuite_abi.cc | 3 ++-
>  4 files changed, 11 insertions(+), 5 deletions(-)

OK, thanks


>
> 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/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