From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: by sourceware.org (Postfix, from userid 2181) id 8A8013858D3C; Tue, 17 May 2022 10:42:47 +0000 (GMT) DKIM-Filter: OpenDKIM Filter v2.11.0 sourceware.org 8A8013858D3C 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 r13-554] libstdc++: Stop defining C++0x compat symbols for versioned namespace X-Act-Checkin: gcc X-Git-Author: Jonathan Wakely X-Git-Refname: refs/heads/master X-Git-Oldrev: 472aecb78908d47491d3e6c0beb4eb44f7109751 X-Git-Newrev: 357d6fcd41e771128226b7916166f537b2d53a29 Message-Id: <20220517104247.8A8013858D3C@sourceware.org> Date: Tue, 17 May 2022 10:42:47 +0000 (GMT) X-BeenThere: libstdc++-cvs@gcc.gnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: Libstdc++-cvs mailing list List-Unsubscribe: , List-Archive: List-Help: List-Subscribe: , X-List-Received-Date: Tue, 17 May 2022 10:42:47 -0000 https://gcc.gnu.org/g:357d6fcd41e771128226b7916166f537b2d53a29 commit r13-554-g357d6fcd41e771128226b7916166f537b2d53a29 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. 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 ea3e11efeda..e3a8b8403ca 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 7b1a5a20637..8c13642408d 100644 --- a/libstdc++-v3/src/c++11/system_error.cc +++ b/libstdc++-v3/src/c++11/system_error.cc @@ -526,11 +526,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;