From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: by sourceware.org (Postfix, from userid 2181) id 972233858409; Mon, 13 Dec 2021 13:16:21 +0000 (GMT) DKIM-Filter: OpenDKIM Filter v2.11.0 sourceware.org 972233858409 MIME-Version: 1.0 Content-Transfer-Encoding: 7bit Content-Type: text/plain; charset="utf-8" From: Jonathan Wakely To: gcc-cvs@gcc.gnu.org, libstdc++-cvs@gcc.gnu.org Subject: [gcc r12-5927] libstdc++: Add support for '?' in linker script globs X-Act-Checkin: gcc X-Git-Author: Jonathan Wakely X-Git-Refname: refs/heads/master X-Git-Oldrev: 494ebfa7c9aacaeb6ec1fccc47a0e49f31eb2bb8 X-Git-Newrev: 7bf710b5116e6186204edd6a0168202fd8ef0389 Message-Id: <20211213131621.972233858409@sourceware.org> Date: Mon, 13 Dec 2021 13:16:21 +0000 (GMT) X-BeenThere: gcc-cvs@gcc.gnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: Gcc-cvs mailing list List-Unsubscribe: , List-Archive: List-Help: List-Subscribe: , X-List-Received-Date: Mon, 13 Dec 2021 13:16:21 -0000 https://gcc.gnu.org/g:7bf710b5116e6186204edd6a0168202fd8ef0389 commit r12-5927-g7bf710b5116e6186204edd6a0168202fd8ef0389 Author: Jonathan Wakely Date: Mon Dec 13 13:09:57 2021 +0000 libstdc++: Add support for '?' in linker script globs 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. Diff: --- libstdc++-v3/scripts/make_exports.pl | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) 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 () { 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; }