commit 4bf815f73702a25d66a715445913a676edab3784 Author: Jonathan Wakely Date: Fri Oct 19 13:46:56 2018 +0100 Fix testsuite failures in Debug Mode This fixes the following testsuite failures on ia32 when compiled with -D_GLIBCXX_DEBUG: FAIL: 23_containers/map/modifiers/erase/dr130-linkage-check.cc FAIL: 23_containers/multimap/modifiers/erase/dr130-linkage-check.cc FAIL: 23_containers/multiset/modifiers/erase/dr130-linkage-check.cc FAIL: 23_containers/set/modifiers/erase/dr130-linkage-check.cc The normal mode containers already use the abi-tag to mangle these overloads differently, but the debug mode versions weren't fixed. * include/debug/map.h (map::erase(iterator)): Add abi-tag so that C++11 version mangles differently from incompatible C++98 version. * include/debug/multimap.h (multimap::erase(iterator)): Likewise. * include/debug/multiset.h (multiset::erase(iterator)) (multiset::erase(const_iterator, const_iterator)): Likewise. * include/debug/set.h (set::erase(iterator)) (multiset::erase(const_iterator, const_iterator)): Likewise. diff --git a/libstdc++-v3/include/debug/map.h b/libstdc++-v3/include/debug/map.h index 6821fc561e4..cb29e9ee2a5 100644 --- a/libstdc++-v3/include/debug/map.h +++ b/libstdc++-v3/include/debug/map.h @@ -482,6 +482,7 @@ namespace __debug return { _Base::erase(__position.base()), this }; } + _GLIBCXX_ABI_TAG_CXX11 iterator erase(iterator __position) { return erase(const_iterator(__position)); } diff --git a/libstdc++-v3/include/debug/multimap.h b/libstdc++-v3/include/debug/multimap.h index d16ed47ab74..38e38c8c1ce 100644 --- a/libstdc++-v3/include/debug/multimap.h +++ b/libstdc++-v3/include/debug/multimap.h @@ -361,6 +361,7 @@ namespace __debug return { _Base::erase(__position.base()), this }; } + _GLIBCXX_ABI_TAG_CXX11 iterator erase(iterator __position) { return erase(const_iterator(__position)); } diff --git a/libstdc++-v3/include/debug/multiset.h b/libstdc++-v3/include/debug/multiset.h index bf154ecad6e..2dd2f731627 100644 --- a/libstdc++-v3/include/debug/multiset.h +++ b/libstdc++-v3/include/debug/multiset.h @@ -324,6 +324,7 @@ namespace __debug #endif // C++17 #if __cplusplus >= 201103L + _GLIBCXX_ABI_TAG_CXX11 iterator erase(const_iterator __position) { @@ -358,6 +359,7 @@ namespace __debug } #if __cplusplus >= 201103L + _GLIBCXX_ABI_TAG_CXX11 iterator erase(const_iterator __first, const_iterator __last) { diff --git a/libstdc++-v3/include/debug/set.h b/libstdc++-v3/include/debug/set.h index c406fb424f4..d8dbaf268a2 100644 --- a/libstdc++-v3/include/debug/set.h +++ b/libstdc++-v3/include/debug/set.h @@ -338,6 +338,7 @@ namespace __debug #endif // C++17 #if __cplusplus >= 201103L + _GLIBCXX_ABI_TAG_CXX11 iterator erase(const_iterator __position) { @@ -370,6 +371,7 @@ namespace __debug } #if __cplusplus >= 201103L + _GLIBCXX_ABI_TAG_CXX11 iterator erase(const_iterator __first, const_iterator __last) {