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; - const error_category& - _V2::system_category() noexcept { return system_category_instance.obj; } +_GLIBCXX_BEGIN_INLINE_ABI_NAMESPACE(_V2) const error_category& - _V2::generic_category() noexcept { return generic_category_instance.obj; } + system_category() noexcept { return system_category_instance.obj; } + + const error_category& + generic_category() noexcept { return generic_category_instance.obj; } + +_GLIBCXX_END_INLINE_ABI_NAMESPACE(_V2) system_error::~system_error() = default;