Ugh. While doing other things I realized that the namespace versioning
for regex header files is off: it's not on the inner-most nested
namespace.
Fixed thusly.
tested x86/linux
tested x86/linux --enable-symvers=gnu-namespace-versioned
-benjamin
2011-03-14 Benjamin Kosnik <b...@redhat.com>
* include/bits/regex_compiler.h: Nest namespace versioning.
* include/bits/regex_grep_matcher.tcc: Same.
* include/bits/regex_grep_matcher.h: Same.
* include/bits/regex_cursor.h: Same.
* include/bits/regex_nfa.h: Same.
* include/bits/regex_nfa.tcc: Same.
* include/bits/regex_grep_matcher.h: Version forward declarations.
* include/bits/c++config: Add namespace association for __regex.
* include/bits/regex.h: Make sub_match consistent.
Index: include/bits/regex_grep_matcher.h
===================================================================
--- include/bits/regex_grep_matcher.h (revision 170975)
+++ include/bits/regex_grep_matcher.h (working copy)
@@ -30,12 +30,15 @@
namespace std _GLIBCXX_VISIBILITY(default)
{
+_GLIBCXX_BEGIN_NAMESPACE_VERSION
template<typename _BiIter>
class sub_match;
template<typename _Bi_iter, typename _Allocator>
class match_results;
+
+_GLIBCXX_END_NAMESPACE_VERSION
namespace __regex
{
Index: include/bits/c++config
===================================================================
--- include/bits/c++config (revision 170975)
+++ include/bits/c++config (working copy)
@@ -170,9 +170,6 @@
{
inline namespace _6 { }
- namespace __detail { inline namespace _6 { } }
-
-
namespace rel_ops { inline namespace _6 { } }
namespace tr1
@@ -189,6 +186,9 @@
namespace placeholders { inline namespace _6 { } }
namespace regex_constants { inline namespace _6 { } }
namespace this_thread { inline namespace _6 { } }
+
+ namespace __detail { inline namespace _6 { } }
+ namespace __regex { inline namespace _6 { } }
}
namespace __gnu_cxx
Index: include/bits/regex.h
===================================================================
--- include/bits/regex.h (revision 170975)
+++ include/bits/regex.h (working copy)
@@ -1459,7 +1459,7 @@
template<typename _Bi_iter,
typename _Allocator = allocator<sub_match<_Bi_iter> > >
class match_results
- : private std::vector<std::sub_match<_Bi_iter>, _Allocator>
+ : private std::vector<sub_match<_Bi_iter>, _Allocator>
{
private:
/*
@@ -1473,8 +1473,7 @@
* [n+1] prefix
* [n+2] suffix
*/
- typedef std::vector<std::sub_match<_Bi_iter>, _Allocator>
- _Base_type;
+ typedef std::vector<sub_match<_Bi_iter>, _Allocator> _Base_type;
public:
/**