PR libstdc++/83834 replace wildcard pattern in linker script

Message ID 20180116124739.GA13728@redhat.com
State New
Headers show
Series
  • PR libstdc++/83834 replace wildcard pattern in linker script
Related show

Commit Message

Jonathan Wakely Jan. 16, 2018, 12:47 p.m.
The soon-to-be-released binutils 2.30 makes a small change to how
lambda functions are demangled, which causes some unwanted symbols to
match a wildcard pattern in the GLIBCXX_3.4 version node of our linker
script. The only symbol that is supposed to match the pattern is
std::cerr so we should just name that explicitly. That prevents other
new symbols matching and being added to the old version.

See PR 83893 for the general problem, which we should fix later.

	PR libstdc++/83834
	* config/abi/pre/gnu.ver (GLIBCXX_3.4): Replace std::c[a-g]* wildcard
	pattern with exact match for std::cerr.

Tested powerpc64le-linux with binutils 2.25.1-32.base.el7_4.1 and on
x86_64-linux with a binutils-2.3.0.0 snapshot from 2018-01-13.

Committed to trunk, backports to follow.
commit f8896e7451cd61008e0ceb0ac9a770d5cb77d85b
Author: Jonathan Wakely <jwakely@redhat.com>
Date:   Tue Jan 16 12:01:36 2018 +0000

    PR libstdc++/83834 replace wildcard pattern in linker script
    
            PR libstdc++/83834
            * config/abi/pre/gnu.ver (GLIBCXX_3.4): Replace std::c[a-g]* wildcard
            pattern with exact match for std::cerr.

Patch

diff --git a/libstdc++-v3/config/abi/pre/gnu.ver b/libstdc++-v3/config/abi/pre/gnu.ver
index 774bedec9bc..5e66dc5cc3f 100644
--- a/libstdc++-v3/config/abi/pre/gnu.ver
+++ b/libstdc++-v3/config/abi/pre/gnu.ver
@@ -60,7 +60,7 @@  GLIBCXX_3.4 {
       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]*;