From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mail-io1-xd2e.google.com (mail-io1-xd2e.google.com [IPv6:2607:f8b0:4864:20::d2e]) by sourceware.org (Postfix) with ESMTPS id B674D3858432 for ; Mon, 14 Feb 2022 19:28:57 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.1 sourceware.org B674D3858432 Received: by mail-io1-xd2e.google.com with SMTP id w7so21210699ioj.5 for ; Mon, 14 Feb 2022 11:28:57 -0800 (PST) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references:mime-version:content-transfer-encoding; bh=GBjIoymHzFnN5oQ1W/3axnTyto9BT2l4v+Je6uW6xN4=; b=SBXRuov970bX6GNLSN3lJSNsTqHo/EMmMBKr8uwLcp3WQx9fZSTJx8akGcy5e4s4Mi NPtjOIUr3JAvSs445cXI4j5EqaTCOQnf3H7JSWl5+Z6/3CYF7aZi+a1Jykw25V5RsYNc 3Z5EkyczZIZftIvKQ3sSCghwf+11XrAgS2wEBpbY553UZSwvvaGkZfePsMig7mlc/ayt vOVJdObwtGuNMa/5Rad6iUGPUZA/A5CsjKp/Dx9DVWRzmjSTjPEunK7nD+SfK6aSaq9V XnYgkSXUmuds5YgRwU3yl1xIuFs+7CKHgKaldG1cSY00wn1C4am3dIhJI+2piufh/Y+u XVWQ== X-Gm-Message-State: AOAM531Woy0Zlq5Cs9aAkLoQOmKdi8UAlgOJGtIHpWc5veMtfSvrwqFB 6i32mg12qZXmQFLoTdowbUXIEgKdFiudkQ== X-Google-Smtp-Source: ABdhPJzdwwkqH4Zns9T/6zXx+/zTb/IVXMauzQYONBMXOMRHZqPMIevUJH5nS4arIilYCWGOwCW7Dg== X-Received: by 2002:a05:6602:13d3:: with SMTP id o19mr227956iov.66.1644866937112; Mon, 14 Feb 2022 11:28:57 -0800 (PST) Received: from murgatroyd.Home (75-166-128-165.hlrn.qwest.net. [75.166.128.165]) by smtp.gmail.com with ESMTPSA id g8sm19313065ilc.10.2022.02.14.11.28.56 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 14 Feb 2022 11:28:56 -0800 (PST) From: Tom Tromey To: gdb-patches@sourceware.org Cc: Tom Tromey Subject: [PATCH 2/2] Rewrite make-target-delegates in Python Date: Mon, 14 Feb 2022 12:28:52 -0700 Message-Id: <20220214192852.3637933-3-tromey@adacore.com> X-Mailer: git-send-email 2.31.1 In-Reply-To: <20220214192852.3637933-1-tromey@adacore.com> References: <20220214192852.3637933-1-tromey@adacore.com> MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Spam-Status: No, score=-11.6 required=5.0 tests=BAYES_00, DKIM_SIGNED, DKIM_VALID, DKIM_VALID_AU, DKIM_VALID_EF, GIT_PATCH_0, KAM_SHORT, RCVD_IN_DNSWL_NONE, SPF_HELO_NONE, SPF_PASS, TXREP, T_SCC_BODY_TEXT_LINE 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: gdb-patches@sourceware.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: Gdb-patches mailing list List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Mon, 14 Feb 2022 19:29:01 -0000 I think gdb is probably better off having fewer languages involved when generating code. 'sh' is unavoidable for build-time generation, but for other things, let's use Python. This rewrites make-target-delegates in Python. I've stuck pretty closely to the original code in this rewrite, so it may look slightly weird from a Python perspective. The only output difference is that a copyright header is now generated, using the code introduced in the previous patch. make-target-delegates.py is simpler to invoke, as it knows the correct input file to scan and it creates the output file itself. --- gdb/make-target-delegates | 421 ----------------------------------- gdb/make-target-delegates.py | 340 ++++++++++++++++++++++++++++ gdb/target-delegates.c | 26 ++- 3 files changed, 363 insertions(+), 424 deletions(-) delete mode 100755 gdb/make-target-delegates create mode 100755 gdb/make-target-delegates.py diff --git a/gdb/make-target-delegates b/gdb/make-target-delegates deleted file mode 100755 index f759b5507ca..00000000000 --- a/gdb/make-target-delegates +++ /dev/null @@ -1,421 +0,0 @@ -#!/usr/bin/perl - -# Copyright (C) 2013-2022 Free Software Foundation, Inc. -# -# This file is part of GDB. -# -# This program is free software; you can redistribute it and/or modify -# it under the terms of the GNU General Public License as published by -# the Free Software Foundation; either version 3 of the License, or -# (at your option) any later version. -# -# This program is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU General Public License for more details. -# -# You should have received a copy of the GNU General Public License -# along with this program. If not, see . - - -# Usage: -# make-target-delegates target.h > target-delegates.c - -# The line we search for in target.h that marks where we should start -# looking for methods. -$TRIGGER = qr,^struct target_ops$,; -# The end of the methods part. -$ENDER = qr,^\s*};$,; - -# Match a C symbol. -$SYMBOL = qr,[a-zA-Z_][a-zA-Z0-9_]*,; -# Match the name part of a method in struct target_ops. -$NAME_PART = qr,(?${SYMBOL}+)\s,; -# Match the arguments to a method. -$ARGS_PART = qr,(?\(.*\)),; -# We strip the indentation so here we only need the caret. -$INTRO_PART = qr,^,; - -$POINTER_PART = qr,\s*(\*)?\s*,; - -# Match a C++ symbol, including scope operators and template -# parameters. E.g., 'std::vector'. -$CP_SYMBOL = qr,[a-zA-Z_][a-zA-Z0-9_<>:]*,; -# Match the return type when it is "ordinary". -$SIMPLE_RETURN_PART = qr,((struct|class|enum|union)\s+)?${CP_SYMBOL}+,; - -# Match a return type. -$RETURN_PART = qr,((const|volatile)\s+)?(${SIMPLE_RETURN_PART})${POINTER_PART},; - -# Match "virtual". -$VIRTUAL_PART = qr,virtual\s,; - -# Match the TARGET_DEFAULT_* attribute for a method. -$TARGET_DEFAULT_PART = qr,TARGET_DEFAULT_(?