https://gcc.gnu.org/bugzilla/show_bug.cgi?id=88125
--- Comment #5 from Jonathan Wakely <redi at gcc dot gnu.org> --- Done. Do we also want this patch? --- a/libstdc++-v3/config/abi/pre/gnu.ver +++ b/libstdc++-v3/config/abi/pre/gnu.ver @@ -1123,6 +1123,7 @@ GLIBCXX_3.4.4 { GLIBCXX_3.4.5 { +#ifndef HAVE_SYMVER_SYMBOL_RENAMING_RUNTIME_SUPPORT # std::string _ZNKSs11_M_disjunctEPKc; _ZNKSs15_M_check_lengthE[jmy][jmy]PKc; @@ -1154,6 +1155,7 @@ GLIBCXX_3.4.5 { #if !defined(__sun__) && !defined(__svr4__) _ZNSt19istreambuf_iteratorI[cw]St11char_traitsI[cw]EEppEv; #endif +#endif } GLIBCXX_3.4.4; GLIBCXX_3.4.6 { The patterns in the GLIBCXX_3.4.5 node are duplicates of ones in the base version, that depend on that macro (starting at line 1024): #ifdef HAVE_SYMVER_SYMBOL_RENAMING_RUNTIME_SUPPORT # GLIBCXX_ABI compatibility only. # std::string _ZNKSs11_M_disjunctEPKc; _ZNKSs15_M_check_lengthE[jmy][jmy]PKc; _ZNSs4_Rep26_M_set_length_and_sharableE*; _ZNSs7_M_copyEPcPKc[jmy]; _ZNSs7_M_moveEPcPKc[jmy]; _ZNSs9_M_assignEPc[jmy]c; # std::wstring _ZNKSbIwSt11char_traitsIwESaIwEE11_M_disjunctEPKw; _ZNKSbIwSt11char_traitsIwESaIwEE15_M_check_lengthE[jmy][jmy]PKc; _ZNSbIwSt11char_traitsIwESaIwEE4_Rep26_M_set_length_and_sharableE*; _ZNSbIwSt11char_traitsIwESaIwEE7_M_copyEPwPKw[jmy]; _ZNSbIwSt11char_traitsIwESaIwEE7_M_moveEPwPKw[jmy]; _ZNSbIwSt11char_traitsIwESaIwEE9_M_assignEPw[jmy]w; _ZNKSt13basic_fstreamI[cw]St11char_traitsI[cw]EE7is_openEv; _ZNKSt14basic_ifstreamI[cw]St11char_traitsI[cw]EE7is_openEv; _ZNKSt14basic_ofstreamI[cw]St11char_traitsI[cw]EE7is_openEv; _ZNSi6ignoreE[ilvx]; _ZNSt13basic_istreamIwSt11char_traitsIwEE6ignoreE[ilvx]; _ZNSt11char_traitsI[cw]E2eqERK[cw]S2_; _ZNSt19istreambuf_iteratorI[cw]St11char_traitsI[cw]EEppEv; #endif This means that when HAVE_SYMVER_SYMBOL_RENAMING_RUNTIME_SUPPORT is defined those patterns appear twice. Those symbols are meant to have multiple versions (as Brooks pointed out in comment 0) but they are given those versions by asm .symver directive in src/c++98/compatibility.cc so I don't think the dups in the linker script are needed. But I might be misunderstanding something.