From patchwork Mon Dec 13 13:16:35 2021 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Jonathan Wakely X-Patchwork-Id: 48866 Return-Path: X-Original-To: patchwork@sourceware.org Delivered-To: patchwork@sourceware.org Received: from server2.sourceware.org (localhost [IPv6:::1]) by sourceware.org (Postfix) with ESMTP id C00383858414 for ; Mon, 13 Dec 2021 13:17:40 +0000 (GMT) DKIM-Filter: OpenDKIM Filter v2.11.0 sourceware.org C00383858414 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gcc.gnu.org; s=default; t=1639401460; bh=47xqD/LRWYELDuGwU3Zlw9EmqUFhdkSH9CqyTMYWAKE=; h=To:Subject:Date:List-Id:List-Unsubscribe:List-Archive:List-Post: List-Help:List-Subscribe:From:Reply-To:From; b=E7jiqOqkjRMt1CIzaay9KPpCmv34noem4sK+/8IdcSNgM1d7gTJ8YqtFFw8cW3exn JfVVOXpLvQo/sy17dO6HoY5QtcgeT4gyhLzpJzUXQaUIgO6gvncTCO2i4WoWF66xrm XfIB49BdshoJkX/wPRjG0sxIZ98uMYXaqFPt5hJ0= X-Original-To: gcc-patches@gcc.gnu.org Delivered-To: gcc-patches@gcc.gnu.org Received: from us-smtp-delivery-124.mimecast.com (us-smtp-delivery-124.mimecast.com [170.10.129.124]) by sourceware.org (Postfix) with ESMTPS id 509503858409 for ; Mon, 13 Dec 2021 13:16:41 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.1 sourceware.org 509503858409 Received: from mimecast-mx01.redhat.com (mimecast-mx01.redhat.com [209.132.183.4]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id us-mta-589-caMy2l15N4y4tpy4Va7V9A-1; Mon, 13 Dec 2021 08:16:38 -0500 X-MC-Unique: caMy2l15N4y4tpy4Va7V9A-1 Received: from smtp.corp.redhat.com (int-mx04.intmail.prod.int.phx2.redhat.com [10.5.11.14]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by mimecast-mx01.redhat.com (Postfix) with ESMTPS id EA649801ADC; Mon, 13 Dec 2021 13:16:36 +0000 (UTC) Received: from localhost (unknown [10.33.36.71]) by smtp.corp.redhat.com (Postfix) with ESMTP id 9C6815DF4B; Mon, 13 Dec 2021 13:16:36 +0000 (UTC) To: libstdc++@gcc.gnu.org, gcc-patches@gcc.gnu.org Subject: [committed] libstdc++: Add support for '?' in linker script globs Date: Mon, 13 Dec 2021 13:16:35 +0000 Message-Id: <20211213131635.1950304-1-jwakely@redhat.com> MIME-Version: 1.0 X-Scanned-By: MIMEDefang 2.79 on 10.5.11.14 X-Mimecast-Spam-Score: 0 X-Mimecast-Originator: redhat.com X-Spam-Status: No, score=-14.0 required=5.0 tests=BAYES_00, DKIMWL_WL_HIGH, DKIM_SIGNED, DKIM_VALID, DKIM_VALID_AU, DKIM_VALID_EF, GIT_PATCH_0, RCVD_IN_DNSWL_LOW, RCVD_IN_MSPIKE_H3, RCVD_IN_MSPIKE_WL, SPF_HELO_NONE, SPF_NONE, TXREP autolearn=unavailable autolearn_force=no version=3.4.4 X-Spam-Checker-Version: SpamAssassin 3.4.4 (2020-01-24) on server2.sourceware.org X-BeenThere: gcc-patches@gcc.gnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: Gcc-patches mailing list List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-Patchwork-Original-From: Jonathan Wakely via Gcc-patches From: Jonathan Wakely Reply-To: Jonathan Wakely Errors-To: gcc-patches-bounces+patchwork=sourceware.org@gcc.gnu.org Sender: "Gcc-patches" 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(-) 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; }