https://gcc.gnu.org/bugzilla/show_bug.cgi?id=83834
--- Comment #10 from Jonathan Wakely <redi at gcc dot gnu.org> --- It looks like the std::c[a-z] pattern only matches one symbol anyway: "std::cerr" This should fix it: --- a/libstdc++-v3/config/abi/pre/gnu.ver +++ b/libstdc++-v3/config/abi/pre/gnu.ver @@ -58,9 +58,7 @@ GLIBCXX_3.4 { # std::basic_stringbuf # std::basic_stringstream; std::basic_[t-z]*; - std::ba[t-z]*; - std::b[b-z]*; - std::c[a-g]*; + std::cerr; # std::char_traits; # std::c[i-z]*; std::c[i-n]*; IMHO it's a bad idea to have such greedy patterns in the base GLIBCXX_3.4 version anyway, because we never want them to match new symbols, only the ones that already exist in GLIBCXX_3.4 If there are no other symbols that match std::c[a-g]* today, then there should never be symbols that match it in future either, and so we shouldn't have that pattern there. Similarly for std::ba[t-z]* and std::b[b-z]* (and others, but I haven't tried to clean the rest up now).