From patchwork Tue Nov 14 09:41:22 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: "Aktemur, Tankut Baris" X-Patchwork-Id: 79811 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 D99453858C52 for ; Tue, 14 Nov 2023 09:42:10 +0000 (GMT) X-Original-To: gdb-patches@sourceware.org Delivered-To: gdb-patches@sourceware.org Received: from mgamail.intel.com (mgamail.intel.com [192.55.52.88]) by sourceware.org (Postfix) with ESMTPS id 64A6A385C6DA for ; Tue, 14 Nov 2023 09:41:54 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.2 sourceware.org 64A6A385C6DA Authentication-Results: sourceware.org; dmarc=pass (p=none dis=none) header.from=intel.com Authentication-Results: sourceware.org; spf=pass smtp.mailfrom=intel.com ARC-Filter: OpenARC Filter v1.0.0 sourceware.org 64A6A385C6DA Authentication-Results: server2.sourceware.org; arc=none smtp.remote-ip=192.55.52.88 ARC-Seal: i=1; a=rsa-sha256; d=sourceware.org; s=key; t=1699954916; cv=none; b=QRLOiFrh3iIUewZLmM5DPkJJKUT73Ew7Z88cpyKYgnoAE2ALE2YTFDOkHfNpu/1KL1s63SAsZ0M7Yn7LS4iSRoXLC2JXCL8+aetbLTLWh3FwkSSYAlsx7kQeyWoaZF0qVin7f91Az11ZeHHq/5E4VKGtMOUqCkkNPYPlNJJxYYU= ARC-Message-Signature: i=1; a=rsa-sha256; d=sourceware.org; s=key; t=1699954916; c=relaxed/simple; bh=7owyy4VkVpzXhImYt+l+3itu2/IZ9NK98s/UL/lpM60=; h=DKIM-Signature:From:To:Subject:Date:Message-Id:MIME-Version; b=PtK2nrxMK1bp66S63ijOpHPUQ+SaHgS+57McAOgM1gtdRawrAlusXHis3Sx5hD8vp2yIFeU6KbVHLSFy9kpILDfhanuCo9QROuyyjyHLTV9lkFZ21/3N/P1tE6hDgCkS3haPUNNIyDzkEkQfzI6Rktugbohq2HXaYIEifNkSIsQ= ARC-Authentication-Results: i=1; server2.sourceware.org DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=intel.com; i=@intel.com; q=dns/txt; s=Intel; t=1699954914; x=1731490914; h=from:to:subject:date:message-id:in-reply-to:references: mime-version:content-transfer-encoding; bh=7owyy4VkVpzXhImYt+l+3itu2/IZ9NK98s/UL/lpM60=; b=dtBZFApQobW5DsWE+Y45WpPEwSnCE6iRkycSW4EbHiAzsuuCBYxTQCo7 StREFmP/UOkfTrQtEVy/R5Wh+3mt4+NQtSPghYxTs7YLLeQS/Xjw0Yze3 AcFQ/xzSKbOK4Ww+EaWCLhFkB6zqZNy0bdFq7kr7GRn2WaIqsRAzXDh+7 L38N1DKrA/2zLzRqxs1htv+Vi6n09Y6T55UcYdM5qOI2j7yNGM4CH9/bX SoSKAjoEH2PNLqIwVe+wMD262FebfxZo4sW3+3+6Xf7oX283PmDzancs6 3UkNjQlakB/tKjZ0gCSNNaYxiIjHkysBcE456aZ/p0NaK7CoiwIbbuZja g==; X-IronPort-AV: E=McAfee;i="6600,9927,10893"; a="421719248" X-IronPort-AV: E=Sophos;i="6.03,301,1694761200"; d="scan'208";a="421719248" Received: from fmsmga005.fm.intel.com ([10.253.24.32]) by fmsmga101.fm.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 14 Nov 2023 01:41:52 -0800 X-ExtLoop1: 1 X-IronPort-AV: E=McAfee;i="6600,9927,10893"; a="1096028473" X-IronPort-AV: E=Sophos;i="6.03,301,1694761200"; d="scan'208";a="1096028473" Received: from gkldtt-dev-004.igk.intel.com (HELO localhost) ([10.123.221.202]) by fmsmga005-auth.fm.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 14 Nov 2023 01:41:51 -0800 From: Tankut Baris Aktemur To: gdb-patches@sourceware.org Subject: [PATCH 3/3] gdb: handle default argument in make-target-delegates.py Date: Tue, 14 Nov 2023 10:41:22 +0100 Message-Id: <476f2068afadd0d56827493eb014a90b41eea887.1699953637.git.tankut.baris.aktemur@intel.com> X-Mailer: git-send-email 2.34.1 In-Reply-To: References: MIME-Version: 1.0 X-Spam-Status: No, score=-10.5 required=5.0 tests=BAYES_00, DKIMWL_WL_HIGH, DKIM_SIGNED, DKIM_VALID, DKIM_VALID_AU, DKIM_VALID_EF, GIT_PATCH_0, RCVD_IN_MSPIKE_H3, RCVD_IN_MSPIKE_WL, SPF_HELO_NONE, SPF_NONE, TXREP, T_SCC_BODY_TEXT_LINE autolearn=ham autolearn_force=no version=3.4.6 X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on server2.sourceware.org X-BeenThere: gdb-patches@sourceware.org X-Mailman-Version: 2.1.30 Precedence: list List-Id: Gdb-patches mailing list List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: gdb-patches-bounces+patchwork=sourceware.org@sourceware.org The regular expression to dissect argument types in make-target-delegates.py does not recognize default argument values. For example, in target.h, we have virtual void rcmd (const char *command, struct ui_file *output) TARGET_DEFAULT_FUNC (default_rcmd); virtual const char *pid_to_exec_file (int pid) TARGET_DEFAULT_RETURN (NULL); Suppose we change these to the following where we define default values for the arguments. The example for the default argument of "pid" is deliberately chosen to contain a space character. virtual void rcmd (const char *command=0, struct ui_file *output = nullptr) TARGET_DEFAULT_FUNC (default_rcmd); virtual const char *pid_to_exec_file (int pid=sizeof n) TARGET_DEFAULT_RETURN (NULL); After generating the target-delegates.c file via make-target-delegates.py we obtain invalid code: void rcmd (const char *command=0 arg0, struct ui_file *output = nullptr arg1) override; const char *pid_to_exec_file (int pid=sizeof n arg0) override; ... void debug_target::rcmd (const char *command=0 arg0, struct ui_file *output = nullptr arg1) { ... target_debug_print_const_char_pcommand=0 (arg0); ... target_debug_print_struct_ui_file_poutput_=_nullptr (arg1); } ... const char * debug_target::pid_to_exec_file (int pid=sizeof n arg0) { ... target_debug_print_int_pid=sizeof_n (arg0); ... } When the fix in this patch is applied, the default argument values are correctly detected and we obtain the same generated result for target-delegates.c, which is void rcmd (const char *arg0, struct ui_file *arg1) override; const char *pid_to_exec_file (int arg0) override; ... void debug_target::rcmd (const char *arg0, struct ui_file *arg1) { ... target_debug_print_const_char_p (arg0); ... target_debug_print_struct_ui_file_p (arg1); } ... const char * debug_target::pid_to_exec_file (int arg0) { ... target_debug_print_int (arg0); ... } Currently, target.h does not contain any arguments with default values. The goal of this patch is to address potential future and downstream cases; we (Intel) have cases with default argument values. --- gdb/make-target-delegates.py | 3 +++ 1 file changed, 3 insertions(+) diff --git a/gdb/make-target-delegates.py b/gdb/make-target-delegates.py index fd5f436a43d..2758f900c9b 100755 --- a/gdb/make-target-delegates.py +++ b/gdb/make-target-delegates.py @@ -76,6 +76,8 @@ METHOD = re.compile( # Space-separated symbols. CP_SYMBOLS = CP_SYMBOL + r"(\s+" + CP_SYMBOL + r")*" +DEFAULT_ARG_VALUE = r"(\s*\=\s*[^\s].*)?" + # Regular expression used to dissect argument types. ARGTYPES = re.compile( "^(" @@ -86,6 +88,7 @@ ARGTYPES = re.compile( + CP_SYMBOLS + r"(\s|\*|&)+)" + SYMBOL + + DEFAULT_ARG_VALUE + ")$" )