This fixes the versioned namespace build by moving some macros and adding std::experimental in c++config.
Bootstrap works again now, but regex tests all fail with versioned namespaces due to a lookup problem with friend functions and inline namespaces (PR 59256). 2013-11-22 Jonathan Wakely <jwakely....@gmail.com> PR libstdc++/59247 * include/bits/c++config (_GLIBCXX_INLINE_VERSION): Declare namespace std::experimental::__7 as inline. * include/bits/regex.h (_GLIBCXX_BEGIN_NAMESPACE_VERSION): Do not enclose namespace __detail. * include/bits/regex.tcc (_GLIBCXX_BEGIN_NAMESPACE_VERSION): Likewise. * include/std/iomanip (_GLIBCXX_BEGIN_NAMESPACE_VERSION): Likewise. * include/ext/pb_ds/tag_and_trait.hpp (detail): Fix comment. * testsuite/ext/profile/mutex_extensions_neg.cc: Adjust line number. Tested x86_64-linux, with and without --enable-symvers=gnu-versioned-namespace, committed to trunk.
commit c318b726a14b791119b4775b631d20b665e778d7 Author: Jonathan Wakely <jwakely....@gmail.com> Date: Fri Nov 22 14:07:59 2013 +0000 PR libstdc++/59247 * include/bits/c++config (_GLIBCXX_INLINE_VERSION): Declare namespace std::experimental::__7 as inline. * include/bits/regex.h (_GLIBCXX_BEGIN_NAMESPACE_VERSION): Do not enclose namespace __detail. * include/bits/regex.tcc (_GLIBCXX_BEGIN_NAMESPACE_VERSION): Likewise. * include/std/iomanip (_GLIBCXX_BEGIN_NAMESPACE_VERSION): Likewise. * include/ext/pb_ds/tag_and_trait.hpp (detail): Fix comment. * testsuite/ext/profile/mutex_extensions_neg.cc: Adjust line number. diff --git a/libstdc++-v3/include/bits/c++config b/libstdc++-v3/include/bits/c++config index aca8484..b00bc41 100644 --- a/libstdc++-v3/include/bits/c++config +++ b/libstdc++-v3/include/bits/c++config @@ -169,6 +169,8 @@ namespace placeholders { } namespace regex_constants { } namespace this_thread { } + + namespace experimental { } } namespace abi { } @@ -222,6 +224,8 @@ namespace std namespace regex_constants { inline namespace __7 { } } namespace this_thread { inline namespace __7 { } } + namespace experimental { inline namespace __7 { } } + namespace __detail { inline namespace __7 { } } } diff --git a/libstdc++-v3/include/bits/regex.h b/libstdc++-v3/include/bits/regex.h index 84b8cf1..9f8a0eb 100644 --- a/libstdc++-v3/include/bits/regex.h +++ b/libstdc++-v3/include/bits/regex.h @@ -30,8 +30,6 @@ namespace std _GLIBCXX_VISIBILITY(default) { -_GLIBCXX_BEGIN_NAMESPACE_VERSION - namespace __detail { _GLIBCXX_BEGIN_NAMESPACE_VERSION @@ -53,6 +51,8 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION _GLIBCXX_END_NAMESPACE_VERSION } +_GLIBCXX_BEGIN_NAMESPACE_VERSION + /** * @addtogroup regex * @{ diff --git a/libstdc++-v3/include/bits/regex.tcc b/libstdc++-v3/include/bits/regex.tcc index 2ac095d..f58b32d 100644 --- a/libstdc++-v3/include/bits/regex.tcc +++ b/libstdc++-v3/include/bits/regex.tcc @@ -37,8 +37,6 @@ namespace std _GLIBCXX_VISIBILITY(default) { -_GLIBCXX_BEGIN_NAMESPACE_VERSION - namespace __detail { _GLIBCXX_BEGIN_NAMESPACE_VERSION @@ -137,6 +135,8 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION _GLIBCXX_END_NAMESPACE_VERSION } +_GLIBCXX_BEGIN_NAMESPACE_VERSION + template<typename _Ch_type> template<typename _Fwd_iter> typename regex_traits<_Ch_type>::string_type diff --git a/libstdc++-v3/include/ext/pb_ds/tag_and_trait.hpp b/libstdc++-v3/include/ext/pb_ds/tag_and_trait.hpp index 90bda95..3d16e52 100644 --- a/libstdc++-v3/include/ext/pb_ds/tag_and_trait.hpp +++ b/libstdc++-v3/include/ext/pb_ds/tag_and_trait.hpp @@ -447,7 +447,7 @@ namespace __gnu_pbds template<typename Key, typename Mapped, typename _Alloc, typename Tag, typename Policy_Tl = null_type> struct container_base_dispatch; - } // namespace __detail + } // namespace detail //@} } // namespace __gnu_pbds diff --git a/libstdc++-v3/include/std/iomanip b/libstdc++-v3/include/std/iomanip index 47284e8..e135d08 100644 --- a/libstdc++-v3/include/std/iomanip +++ b/libstdc++-v3/include/std/iomanip @@ -336,7 +336,9 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION #if __cplusplus > 201103L +_GLIBCXX_END_NAMESPACE_VERSION namespace __detail { + _GLIBCXX_BEGIN_NAMESPACE_VERSION /** * @brief Struct for delimited strings. @@ -447,8 +449,9 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION return __is; } - + _GLIBCXX_END_NAMESPACE_VERSION } // namespace __detail +_GLIBCXX_BEGIN_NAMESPACE_VERSION /** * @brief Manipulator for quoted strings. diff --git a/libstdc++-v3/testsuite/ext/profile/mutex_extensions_neg.cc b/libstdc++-v3/testsuite/ext/profile/mutex_extensions_neg.cc index 23c551b..a691e8d 100644 --- a/libstdc++-v3/testsuite/ext/profile/mutex_extensions_neg.cc +++ b/libstdc++-v3/testsuite/ext/profile/mutex_extensions_neg.cc @@ -25,4 +25,4 @@ #include <vector> -// { dg-error "multiple inlined namespaces" "" { target *-*-* } 275 } +// { dg-error "multiple inlined namespaces" "" { target *-*-* } 279 }