[committed] libstdc++: Add support for '?' in linker script globs

Message ID 20211213131635.1950304-1-jwakely@redhat.com
State Committed
Commit 7bf710b5116e6186204edd6a0168202fd8ef0389
Headers
Series [committed] libstdc++: Add support for '?' in linker script globs |

Commit Message

Jonathan Wakely Dec. 13, 2021, 1:16 p.m. UTC
  Pushed to trunk.


The scripts/make_exports.pl script used for darwin only replaces '*'
wildcards in globs, it doesn't handle '?'. This means the recent changes
to std::__timepunct exports broke darwin.

Rather than use mangled names in the linker script, this adds support
for '?' to the perl script.

This also removes some unnecessary escaping of the replacement strings
in s// substitutions.

libstdc++-v3/ChangeLog:

	* scripts/make_exports.pl: Replace '?' with '.' when turning
	a glob into a regex.
---
 libstdc++-v3/scripts/make_exports.pl | 6 ++++--
 1 file changed, 4 insertions(+), 2 deletions(-)
  

Patch

diff --git a/libstdc++-v3/scripts/make_exports.pl b/libstdc++-v3/scripts/make_exports.pl
index 93100e17ddf..7f4670f8a91 100644
--- a/libstdc++-v3/scripts/make_exports.pl
+++ b/libstdc++-v3/scripts/make_exports.pl
@@ -52,11 +52,13 @@  while (<F>) {
 	next;
     }
     # Catch globs.  Note that '{}' is not allowed in globs by this script,
-    # so only '*' and '[]' are available.
+    # so only '*' and '?' and '[]' are available.
     if (/^[ \t]*([^ \t;{}#]+);?[ \t]*$/) {
 	my $ptn = $1;
 	# Turn the glob into a regex by replacing '*' with '.*'.
-	$ptn =~ s/\*/\.\*/g;
+	$ptn =~ s/\*/.*/g;
+	# And replacing '?' with '.'.
+	$ptn =~ s/\?/./g;
 	push @$glob,$ptn;
 	next;
     }