From patchwork Mon Aug 23 20:13:48 2021 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Olivier Galibert X-Patchwork-Id: 44766 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 1A1F5385780B for ; Mon, 23 Aug 2021 20:18:41 +0000 (GMT) DKIM-Filter: OpenDKIM Filter v2.11.0 sourceware.org 1A1F5385780B DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=sourceware.org; s=default; t=1629749921; bh=6Rn3kN+89IWyOkRGDzUJW2tcSf5muBuZ2SZp+agbZkA=; h=To:Subject:Date:In-Reply-To:References:List-Id:List-Unsubscribe: List-Archive:List-Post:List-Help:List-Subscribe:From:Reply-To:Cc: From; b=Nb/yAa98hPSWPsB/RwuO5alIXaon8WdI8FxIqzFqtQTKTnfATuWPOonfipZ/HCTWn fHKNQ2yVO+xAeUEA9P7nURIEyF8ezB+ZJQXAtrVRRZz9Qc5k2vF1KxiE7TYAzGIPaL g8mreXLFQ1Gv4YHkRIUR/Fo1uXWwZ8+G59ofHEEQ= X-Original-To: libc-alpha@sourceware.org Delivered-To: libc-alpha@sourceware.org Received: from pb-smtp21.pobox.com (pb-smtp21.pobox.com [173.228.157.53]) by sourceware.org (Postfix) with ESMTPS id 291E83857423 for ; Mon, 23 Aug 2021 20:14:24 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.1 sourceware.org 291E83857423 Received: from pb-smtp21.pobox.com (unknown [127.0.0.1]) by pb-smtp21.pobox.com (Postfix) with ESMTP id 9BD93139934; Mon, 23 Aug 2021 16:14:21 -0400 (EDT) (envelope-from galibert@pobox.com) Received: from pb-smtp21.sea.icgroup.com (unknown [127.0.0.1]) by pb-smtp21.pobox.com (Postfix) with ESMTP id 94A27139931; Mon, 23 Aug 2021 16:14:21 -0400 (EDT) (envelope-from galibert@pobox.com) Received: from localhost.localdomain (unknown [78.197.126.194]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by pb-smtp21.pobox.com (Postfix) with ESMTPSA id B10A813992F; Mon, 23 Aug 2021 16:14:16 -0400 (EDT) (envelope-from galibert@pobox.com) To: libc-alpha@sourceware.org Subject: [PATCH] glibcextract: Make compute_c_consts compatible with both clang and gcc Date: Mon, 23 Aug 2021 22:13:48 +0200 Message-Id: <20210823201347.599807-1-galibert@pobox.com> X-Mailer: git-send-email 2.33.0 In-Reply-To: References: MIME-Version: 1.0 X-Pobox-Relay-ID: B19E844A-044E-11EC-94C1-FA9E2DDBB1FC-92059326!pb-smtp21.pobox.com X-Spam-Status: No, score=-13.6 required=5.0 tests=BAYES_00, DKIM_SIGNED, DKIM_VALID, DKIM_VALID_AU, DKIM_VALID_EF, GIT_PATCH_0, JMQ_SPF_NEUTRAL, RCVD_IN_DNSWL_LOW, RCVD_IN_MSPIKE_H2, SPF_HELO_NONE, SPF_PASS, TXREP autolearn=ham autolearn_force=no version=3.4.4 X-Spam-Checker-Version: SpamAssassin 3.4.4 (2020-01-24) on server2.sourceware.org X-BeenThere: libc-alpha@sourceware.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: Libc-alpha mailing list List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-Patchwork-Original-From: Olivier Galibert via Libc-alpha From: Olivier Galibert Reply-To: Olivier Galibert Cc: Joseph Myers Errors-To: libc-alpha-bounces+patchwork=sourceware.org@sourceware.org Sender: "Libc-alpha" clang parses the asm() contents even when using -S, so you can't generate nonsensical code. Use normal .ascii/.long instead. v2: Remove leftover debugging code. Signed-off-by: Olivier Galibert --- scripts/glibcextract.py | 23 ++++++++++++++--------- 1 file changed, 14 insertions(+), 9 deletions(-) diff --git a/scripts/glibcextract.py b/scripts/glibcextract.py index 752ff6223b..66f8c96a32 100644 --- a/scripts/glibcextract.py +++ b/scripts/glibcextract.py @@ -45,7 +45,7 @@ def compute_c_consts(sym_data, cc): continue name = arg[0] value = arg[1] - out_lines.append('asm ("@@@name@@@%s@@@value@@@%%0@@@end@@@" ' + out_lines.append('asm (".ascii \\\"%s\\\"\\n\\t.long %%0\\n" ' ': : \"i\" ((long int) (%s)));' % (name, value)) out_lines.append('}') @@ -62,16 +62,21 @@ def compute_c_consts(sym_data, cc): subprocess.check_call(cmd, shell=True) consts = {} with open(s_file_name, 'r') as s_file: + symbol = None for line in s_file: - match = re.search('@@@name@@@([^@]*)' - '@@@value@@@[^0-9Xxa-fA-F-]*' - '([0-9Xxa-fA-F-]+).*@@@end@@@', line) + match = re.search('[.]ascii[ \t]*"([^"]*)"', line) if match: - if (match.group(1) in consts - and match.group(2) != consts[match.group(1)]): - raise ValueError('duplicate constant %s' - % match.group(1)) - consts[match.group(1)] = match.group(2) + symbol = match.group(1) + elif symbol != None: + match = re.search('[.]long[ \t]*[(]?[$]([0-9Xxa-fA-F-]+)', line) + if match: + if (symbol in consts + and match.group(1) != consts[symbol]): + raise ValueError('duplicate constant %s' + % symbol) + consts[symbol] = match.group(1) + else: + symbol = None return consts