The only symbols matched by std::e[a-q]* and std::e[s-z]* that are supposed to be in the GLIBCXX_3.4 version are std::exception::* and std::endl and std::ends. The latter two already have explicit patterns matching them, so we just need to match std::exception::*.
This change ensures that any new symbols with a return type of std::enable_if<...> are not added to the GLIBCXX_3.4 version. * config/abi/pre/gnu.ver: Tighten up greedy wildcards. Tested powerpc64le-linux and x86_64-linux, committed to trunk.
commit 2f33800e0b630a6e719a9f4c76934dfcb872bc7f Author: Jonathan Wakely <jwak...@redhat.com> Date: Wed Oct 2 15:49:18 2019 +0100 Remove greedy wildcards from libstdc++ linker script The only symbols matched by std::e[a-q]* and std::e[s-z]* that are supposed to be in the GLIBCXX_3.4 version are std::exception::* and std::endl and std::ends. The latter two already have explicit patterns matching them, so we just need to match std::exception::*. This change ensures that any new symbols with a return type of std::enable_if<...> are not added to the GLIBCXX_3.4 version. * config/abi/pre/gnu.ver: Tighten up greedy wildcards. diff --git a/libstdc++-v3/config/abi/pre/gnu.ver b/libstdc++-v3/config/abi/pre/gnu.ver index 07a00036827..e61fbe0ad66 100644 --- a/libstdc++-v3/config/abi/pre/gnu.ver +++ b/libstdc++-v3/config/abi/pre/gnu.ver @@ -80,9 +80,8 @@ GLIBCXX_3.4 { # std::domain_error::d*; # std::domain_error::~d*; std::d[p-z]*; - std::e[a-q]*; std::error[^_]*; - std::e[s-z]*; + std::exception::*; std::gslice*; std::h[^a]*; std::i[a-m]*;