From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: by sourceware.org (Postfix, from userid 2181) id 47E79385842B; Mon, 18 Mar 2024 14:07:21 +0000 (GMT) DKIM-Filter: OpenDKIM Filter v2.11.0 sourceware.org 47E79385842B DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gcc.gnu.org; s=default; t=1710770841; bh=VtI61Cnp9VffMz5+uzbR0C85qWA+w+xcupgBDwb756U=; h=From:To:Subject:Date:From; b=JnUU5zxJkd1h+PRZY4p0mUgCz/DrP3WgSVBGBmG2HIru3XHYBKBJ/iQgZmH6ufbLC hW5lvTg6mh3A/ayHgEMYQ++M9c++yqvEkLBmtEe1B2lRTOwldRK6JJvBGG1M8KuZ0c tb/0ICRJJYJg09UR6s+OiRjg0UJgbSWtRGOPmAvM= MIME-Version: 1.0 Content-Transfer-Encoding: 7bit Content-Type: text/plain; charset="utf-8" From: Jonathan Wakely To: gcc-cvs@gcc.gnu.org, libstdc++-cvs@gcc.gnu.org Subject: [gcc r12-10266] libstdc++: Stop defining C++0x compat symbols for versioned namespace X-Act-Checkin: gcc X-Git-Author: Jonathan Wakely X-Git-Refname: refs/heads/releases/gcc-12 X-Git-Oldrev: f8ab9b7c08161739242b2760f881a3918373cd46 X-Git-Newrev: 914a226e3cda5a640c9640580a21d780eb829057 Message-Id: <20240318140721.47E79385842B@sourceware.org> Date: Mon, 18 Mar 2024 14:07:21 +0000 (GMT) List-Id: https://gcc.gnu.org/g:914a226e3cda5a640c9640580a21d780eb829057 commit r12-10266-g914a226e3cda5a640c9640580a21d780eb829057 Author: Jonathan Wakely Date: Mon May 16 16:54:52 2022 +0100 libstdc++: Stop defining C++0x compat symbols for versioned namespace The src/c++11/compatibility*-c++0x.cc files define symbols that need to be exported for ancient versions of libstdc++.so.6 due to changes between C++0x and the final C++11 standard. Those symbols are not needed in the libstdc++.so.8 library, and we can skip building them entirely. This also fixes the build failure I introduced last week when making the versioned namespace config not use the _V2 namespace for compat symbols. libstdc++-v3/ChangeLog: * src/Makefile.am [ENABLE_SYMVERS_GNU_NAMESPACE] (cxx11_sources): Do not build the compatibility*-c++0x.cc objects. * src/Makefile.in: Regenerate. * src/c++11/compatibility-c++0x.cc [_GLIBCXX_INLINE_VERSION]: Refuse to build for the versioned namespace. * src/c++11/compatibility-chrono.cc: Likewise. * src/c++11/compatibility-condvar.cc: Likewise. * src/c++11/compatibility-thread-c++0x.cc: Likewise. * src/c++11/chrono.cc (system_clock, steady_clock): Use macros to define in inline namespace _V2, matching the declarations in . * src/c++11/system_error.cc (system_category, generic_category): Likewise. (cherry picked from commit 357d6fcd41e771128226b7916166f537b2d53a29) Diff: --- libstdc++-v3/src/Makefile.am | 16 +++++++---- libstdc++-v3/src/Makefile.in | 31 +++++++++++++--------- libstdc++-v3/src/c++11/chrono.cc | 5 ++-- libstdc++-v3/src/c++11/compatibility-c++0x.cc | 4 +++ libstdc++-v3/src/c++11/compatibility-chrono.cc | 4 +++ libstdc++-v3/src/c++11/compatibility-condvar.cc | 4 +++ .../src/c++11/compatibility-thread-c++0x.cc | 4 +++ libstdc++-v3/src/c++11/system_error.cc | 8 ++++-- 8 files changed, 54 insertions(+), 22 deletions(-) diff --git a/libstdc++-v3/src/Makefile.am b/libstdc++-v3/src/Makefile.am index 9c3f4aca655..b83c222d51d 100644 --- a/libstdc++-v3/src/Makefile.am +++ b/libstdc++-v3/src/Makefile.am @@ -96,6 +96,16 @@ else ldbl_alt128_compat_sources = endif +if ENABLE_SYMVERS_GNU_NAMESPACE +cxx0x_compat_sources = +else +cxx0x_compat_sources = \ + compatibility-atomic-c++0x.cc \ + compatibility-c++0x.cc \ + compatibility-chrono.cc \ + compatibility-condvar.cc \ + compatibility-thread-c++0x.cc +endif parallel_compat_sources = \ compatibility-parallel_list.cc compatibility-parallel_list-2.cc @@ -108,11 +118,7 @@ cxx98_sources = \ ${ldbl_compat_sources} cxx11_sources = \ - compatibility-c++0x.cc \ - compatibility-atomic-c++0x.cc \ - compatibility-thread-c++0x.cc \ - compatibility-chrono.cc \ - compatibility-condvar.cc \ + ${cxx0x_compat_sources} \ ${ldbl_alt128_compat_sources} libstdc___la_SOURCES = $(cxx98_sources) $(cxx11_sources) diff --git a/libstdc++-v3/src/Makefile.in b/libstdc++-v3/src/Makefile.in index 4a06f6cfec1..cef290c5d11 100644 --- a/libstdc++-v3/src/Makefile.in +++ b/libstdc++-v3/src/Makefile.in @@ -153,14 +153,17 @@ am__DEPENDENCIES_1 = @GLIBCXX_LDBL_COMPAT_TRUE@am__objects_1 = compatibility-ldbl.lo am__objects_2 = compatibility.lo compatibility-debug_list.lo \ compatibility-debug_list-2.lo $(am__objects_1) -@ENABLE_DUAL_ABI_TRUE@@GLIBCXX_LDBL_ALT128_COMPAT_TRUE@am__objects_3 = compatibility-ldbl-alt128-cxx11.lo -@GLIBCXX_LDBL_ALT128_COMPAT_TRUE@am__objects_4 = \ +@ENABLE_SYMVERS_GNU_NAMESPACE_FALSE@am__objects_3 = compatibility-atomic-c++0x.lo \ +@ENABLE_SYMVERS_GNU_NAMESPACE_FALSE@ compatibility-c++0x.lo \ +@ENABLE_SYMVERS_GNU_NAMESPACE_FALSE@ compatibility-chrono.lo \ +@ENABLE_SYMVERS_GNU_NAMESPACE_FALSE@ compatibility-condvar.lo \ +@ENABLE_SYMVERS_GNU_NAMESPACE_FALSE@ compatibility-thread-c++0x.lo +@ENABLE_DUAL_ABI_TRUE@@GLIBCXX_LDBL_ALT128_COMPAT_TRUE@am__objects_4 = compatibility-ldbl-alt128-cxx11.lo +@GLIBCXX_LDBL_ALT128_COMPAT_TRUE@am__objects_5 = \ @GLIBCXX_LDBL_ALT128_COMPAT_TRUE@ compatibility-ldbl-alt128.lo \ -@GLIBCXX_LDBL_ALT128_COMPAT_TRUE@ $(am__objects_3) -am__objects_5 = compatibility-c++0x.lo compatibility-atomic-c++0x.lo \ - compatibility-thread-c++0x.lo compatibility-chrono.lo \ - compatibility-condvar.lo $(am__objects_4) -am_libstdc___la_OBJECTS = $(am__objects_2) $(am__objects_5) +@GLIBCXX_LDBL_ALT128_COMPAT_TRUE@ $(am__objects_4) +am__objects_6 = $(am__objects_3) $(am__objects_5) +am_libstdc___la_OBJECTS = $(am__objects_2) $(am__objects_6) libstdc___la_OBJECTS = $(am_libstdc___la_OBJECTS) @VTV_CYGMIN_FALSE@am_libstdc___la_rpath = -rpath $(toolexeclibdir) @VTV_CYGMIN_TRUE@am_libstdc___la_rpath = -rpath $(toolexeclibdir) @@ -512,6 +515,14 @@ SUBDIRS = c++98 c++11 c++17 c++20 $(filesystem_dir) $(backtrace_dir) @GLIBCXX_LDBL_ALT128_COMPAT_TRUE@ compatibility-ldbl-alt128.cc \ @GLIBCXX_LDBL_ALT128_COMPAT_TRUE@ ${ldbl_alt128_compat_cxx11_sources} +@ENABLE_SYMVERS_GNU_NAMESPACE_FALSE@cxx0x_compat_sources = \ +@ENABLE_SYMVERS_GNU_NAMESPACE_FALSE@ compatibility-atomic-c++0x.cc \ +@ENABLE_SYMVERS_GNU_NAMESPACE_FALSE@ compatibility-c++0x.cc \ +@ENABLE_SYMVERS_GNU_NAMESPACE_FALSE@ compatibility-chrono.cc \ +@ENABLE_SYMVERS_GNU_NAMESPACE_FALSE@ compatibility-condvar.cc \ +@ENABLE_SYMVERS_GNU_NAMESPACE_FALSE@ compatibility-thread-c++0x.cc + +@ENABLE_SYMVERS_GNU_NAMESPACE_TRUE@cxx0x_compat_sources = parallel_compat_sources = \ compatibility-parallel_list.cc compatibility-parallel_list-2.cc @@ -522,11 +533,7 @@ cxx98_sources = \ ${ldbl_compat_sources} cxx11_sources = \ - compatibility-c++0x.cc \ - compatibility-atomic-c++0x.cc \ - compatibility-thread-c++0x.cc \ - compatibility-chrono.cc \ - compatibility-condvar.cc \ + ${cxx0x_compat_sources} \ ${ldbl_alt128_compat_sources} libstdc___la_SOURCES = $(cxx98_sources) $(cxx11_sources) diff --git a/libstdc++-v3/src/c++11/chrono.cc b/libstdc++-v3/src/c++11/chrono.cc index 6825b5bc4bf..5539d8cbedd 100644 --- a/libstdc++-v3/src/c++11/chrono.cc +++ b/libstdc++-v3/src/c++11/chrono.cc @@ -43,8 +43,7 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION namespace chrono { - // XXX GLIBCXX_ABI Deprecated - inline namespace _V2 { +_GLIBCXX_BEGIN_INLINE_ABI_NAMESPACE(_V2) constexpr bool system_clock::is_steady; @@ -94,7 +93,7 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION #endif } - } // end inline namespace _V2 +_GLIBCXX_END_INLINE_ABI_NAMESPACE(_V2) } // namespace chrono _GLIBCXX_END_NAMESPACE_VERSION diff --git a/libstdc++-v3/src/c++11/compatibility-c++0x.cc b/libstdc++-v3/src/c++11/compatibility-c++0x.cc index d48f5bd1e28..768dd666d00 100644 --- a/libstdc++-v3/src/c++11/compatibility-c++0x.cc +++ b/libstdc++-v3/src/c++11/compatibility-c++0x.cc @@ -40,6 +40,10 @@ # error "compatibility-c++0x.cc must be compiled with -std=gnu++0x" #endif +#if _GLIBCXX_INLINE_VERSION +# error "compatibility-thread-c++0x.cc is not needed for gnu-versioned-namespace" +#endif + #ifdef _GLIBCXX_SHARED namespace std _GLIBCXX_VISIBILITY(default) diff --git a/libstdc++-v3/src/c++11/compatibility-chrono.cc b/libstdc++-v3/src/c++11/compatibility-chrono.cc index 38b96e811fb..6beb8b39a25 100644 --- a/libstdc++-v3/src/c++11/compatibility-chrono.cc +++ b/libstdc++-v3/src/c++11/compatibility-chrono.cc @@ -24,6 +24,10 @@ #include +#if _GLIBCXX_INLINE_VERSION +# error "compatibility-thread-c++0x.cc is not needed for gnu-versioned-namespace" +#endif + #ifdef _GLIBCXX_USE_C99_STDINT_TR1 #ifdef _GLIBCXX_USE_GETTIMEOFDAY diff --git a/libstdc++-v3/src/c++11/compatibility-condvar.cc b/libstdc++-v3/src/c++11/compatibility-condvar.cc index 45339c58aef..3cef3bc0714 100644 --- a/libstdc++-v3/src/c++11/compatibility-condvar.cc +++ b/libstdc++-v3/src/c++11/compatibility-condvar.cc @@ -28,6 +28,10 @@ # error "compatibility-condvar-c++0x.cc must be compiled with -std=gnu++11" #endif +#if _GLIBCXX_INLINE_VERSION +# error "compatibility-thread-c++0x.cc is not needed for gnu-versioned-namespace" +#endif + #if defined(_GLIBCXX_HAS_GTHREADS) && defined(_GLIBCXX_USE_C99_STDINT_TR1) #define condition_variable_any condition_variable_anyXX diff --git a/libstdc++-v3/src/c++11/compatibility-thread-c++0x.cc b/libstdc++-v3/src/c++11/compatibility-thread-c++0x.cc index dbacda2bc44..d920f9f0345 100644 --- a/libstdc++-v3/src/c++11/compatibility-thread-c++0x.cc +++ b/libstdc++-v3/src/c++11/compatibility-thread-c++0x.cc @@ -35,6 +35,10 @@ # error "compatibility-thread-c++0x.cc must be compiled with -std=gnu++0x" #endif +#if _GLIBCXX_INLINE_VERSION +# error "compatibility-thread-c++0x.cc is not needed for gnu-versioned-namespace" +#endif + #define _GLIBCXX_ASM_SYMVER(cur, old, version) \ asm (".symver " #cur "," #old "@@@" #version); diff --git a/libstdc++-v3/src/c++11/system_error.cc b/libstdc++-v3/src/c++11/system_error.cc index f2b645caa6f..3c69bed3f8d 100644 --- a/libstdc++-v3/src/c++11/system_error.cc +++ b/libstdc++-v3/src/c++11/system_error.cc @@ -535,11 +535,15 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION error_category::~error_category() = default; +_GLIBCXX_BEGIN_INLINE_ABI_NAMESPACE(_V2) + const error_category& - _V2::system_category() noexcept { return system_category_instance.obj; } + system_category() noexcept { return system_category_instance.obj; } const error_category& - _V2::generic_category() noexcept { return generic_category_instance.obj; } + generic_category() noexcept { return generic_category_instance.obj; } + +_GLIBCXX_END_INLINE_ABI_NAMESPACE(_V2) system_error::~system_error() = default;