From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from simark.ca by simark.ca with LMTP id jGttHJZoDWjVlAcAWB0awg (envelope-from ) for ; Sat, 26 Apr 2025 19:13:26 -0400 Authentication-Results: simark.ca; dkim=fail reason="signature verification failed" (768-bit key; unprotected) header.d=tromey.com header.i=@tromey.com header.a=rsa-sha256 header.s=default header.b=IgyF2udd; dkim-atps=neutral Received: by simark.ca (Postfix, from userid 112) id 63B6C1E10E; Sat, 26 Apr 2025 19:13:26 -0400 (EDT) X-Spam-Checker-Version: SpamAssassin 4.0.1 (2024-03-25) on simark.ca X-Spam-Level: X-Spam-Status: No, score=-5.1 required=5.0 tests=ARC_SIGNED,ARC_VALID,BAYES_00, DKIM_INVALID,DKIM_SIGNED,MAILING_LIST_MULTI,RCVD_IN_DNSWL_MED autolearn=ham autolearn_force=no version=4.0.1 Received: from server2.sourceware.org (server2.sourceware.org [8.43.85.97]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature ECDSA (prime256v1) server-digest SHA256) (No client certificate requested) by simark.ca (Postfix) with ESMTPS id A31A61E0C2 for ; Sat, 26 Apr 2025 19:13:25 -0400 (EDT) Received: from server2.sourceware.org (localhost [IPv6:::1]) by sourceware.org (Postfix) with ESMTP id E10833857729 for ; Sat, 26 Apr 2025 23:13:24 +0000 (GMT) DKIM-Filter: OpenDKIM Filter v2.11.0 sourceware.org E10833857729 Authentication-Results: sourceware.org; dkim=fail reason="signature verification failed" (768-bit key, unprotected) header.d=tromey.com header.i=@tromey.com header.a=rsa-sha256 header.s=default header.b=IgyF2udd Received: from omta040.useast.a.cloudfilter.net (omta040.useast.a.cloudfilter.net [44.202.169.39]) by sourceware.org (Postfix) with ESMTPS id 7557D3857B9F for ; Sat, 26 Apr 2025 23:12:52 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.2 sourceware.org 7557D3857B9F Authentication-Results: sourceware.org; dmarc=none (p=none dis=none) header.from=tromey.com Authentication-Results: sourceware.org; spf=pass smtp.mailfrom=tromey.com ARC-Filter: OpenARC Filter v1.0.0 sourceware.org 7557D3857B9F Authentication-Results: server2.sourceware.org; arc=none smtp.remote-ip=44.202.169.39 ARC-Seal: i=1; a=rsa-sha256; d=sourceware.org; s=key; t=1745709172; cv=none; b=FhZNOnoW7kSEx3S+VZUi1872ae3CuOpvEDhktbIYE8dbOg4T4fPIVAwzknYl2wpvZekXtdH3QRsvxeDBd8pZwYJv6LxMSQNaZu5jH9gXJgsfOOgwQEjGxkDd0wIjUc4l8zi+h+A/CcOSs4pHeCkxgUowUTVV0t4i24I0Fs/glkc= ARC-Message-Signature: i=1; a=rsa-sha256; d=sourceware.org; s=key; t=1745709172; c=relaxed/simple; bh=TqJute8hfF4IMTewRVyvSboNl8iXcOQ6mjY5+Uah2bc=; h=DKIM-Signature:From:To:Subject:Date:Message-ID:MIME-Version; b=Y6pfl/AG07zuPUTXZVxd3Uy+KEtKXRXk4uN6Io4SMv6Uas1CySRIhUJYnMhYnpnOyxsx2XdXhex1VOxAthLNWv+gaQMu4jwMei5Ecq1SospodxN2p77ArPyYYLcu6i6i9McVV6AZ2856GfRovqgUALLKGHNZ5jUqoY7IlBHyP8s= ARC-Authentication-Results: i=1; server2.sourceware.org DKIM-Filter: OpenDKIM Filter v2.11.0 sourceware.org 7557D3857B9F Received: from eig-obgw-6008a.ext.cloudfilter.net ([10.0.30.227]) by cmsmtp with ESMTPS id 8XdzurkwnVkcR8ohXuO1jr; Sat, 26 Apr 2025 23:12:52 +0000 Received: from box5379.bluehost.com ([162.241.216.53]) by cmsmtp with ESMTPS id 8ohWuiBUqyuVj8ohWuKbb2; Sat, 26 Apr 2025 23:12:51 +0000 X-Authority-Analysis: v=2.4 cv=EYHOQumC c=1 sm=1 tr=0 ts=680d6873 a=ApxJNpeYhEAb1aAlGBBbmA==:117 a=ApxJNpeYhEAb1aAlGBBbmA==:17 a=XR8D0OoHHMoA:10 a=ItBw4LHWJt0A:10 a=GyconfELaNlWDEldtpgA:9 a=6Ogn3jAGHLSNbaov7Orx:22 DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=tromey.com; s=default; h=Content-Transfer-Encoding:MIME-Version:Message-ID:Date:Subject: Cc:To:From:Sender:Reply-To:Content-Type:Content-ID:Content-Description: Resent-Date:Resent-From:Resent-Sender:Resent-To:Resent-Cc:Resent-Message-ID: In-Reply-To:References:List-Id:List-Help:List-Unsubscribe:List-Subscribe: List-Post:List-Owner:List-Archive; bh=aJ/jeOErleT832g9JCIhUwWonjJVFBJxRAXHVmsT9x4=; b=IgyF2uddzbQj1L2+d6lb0cr7iV VTPduRwWvmXWZmkVySxZQsPQ/Km4pdxLcRMYnCpT2lmzvVIKaPWJSLjFqm5uLh6de5qEm1Om/g2uO Mgcmm3z8l1HNYad9E/X/iDP85; Received: from 97-118-46-156.hlrn.qwest.net ([97.118.46.156]:46160 helo=localhost.localdomain) by box5379.bluehost.com with esmtpsa (TLS1.2) tls TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 (Exim 4.98.1) (envelope-from ) id 1u8ohW-00000002PFV-16H0; Sat, 26 Apr 2025 17:12:50 -0600 From: Tom Tromey To: gdb-patches@sourceware.org Cc: Tom Tromey Subject: [PATCH] Fix "set debug parser" Date: Sat, 26 Apr 2025 17:12:42 -0600 Message-ID: <20250426231242.926679-1-tom@tromey.com> X-Mailer: git-send-email 2.49.0 MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-AntiAbuse: This header was added to track abuse, please include it with any abuse report X-AntiAbuse: Primary Hostname - box5379.bluehost.com X-AntiAbuse: Original Domain - sourceware.org X-AntiAbuse: Originator/Caller UID/GID - [47 12] / [47 12] X-AntiAbuse: Sender Address Domain - tromey.com X-BWhitelist: no X-Source-IP: 97.118.46.156 X-Source-L: No X-Exim-ID: 1u8ohW-00000002PFV-16H0 X-Source: X-Source-Args: X-Source-Dir: X-Source-Sender: 97-118-46-156.hlrn.qwest.net (localhost.localdomain) [97.118.46.156]:46160 X-Source-Auth: tom+tromey.com X-Email-Count: 1 X-Org: HG=bhshared;ORG=bluehost; X-Source-Cap: ZWx5bnJvYmk7ZWx5bnJvYmk7Ym94NTM3OS5ibHVlaG9zdC5jb20= X-Local-Domain: yes X-CMAE-Envelope: MS4xfLG9Ko/YJ4V/F3f8Ds0kbRIJ0MRp3VMvTRv129wccICcLSueimwbtT9HB4qJeEBSYdBwM7x6SCaa2U/uywQ71Z6pkruIpBMtBzYl8hiUDMbE8rl71OFc lGgLSLVwAIsEyj90j8NdMDthgsLl50WeiZ0rapPVi9Urb8ZMnbd4/AO/LPVj6A9TiNBK2qTrUQj4+5EhTRpJOimvcxDi/irCK1Y= 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~public-inbox=simark.ca@sourceware.org While debugging my longer series, I discovered that I broken "set debug parser" a couple years ago. This patch fixes it and adds a minimal test case so that it, hopefully, will not break again. This patch also adds parser debugging to the C++ name canonicalizer. --- gdb/cp-name-parser.y | 3 +++ gdb/parse.c | 4 ++-- gdb/parser-defs.h | 3 +++ gdb/printcmd.c | 4 +++- gdb/testsuite/gdb.base/exprs.exp | 12 ++++++++++++ 5 files changed, 23 insertions(+), 3 deletions(-) diff --git a/gdb/cp-name-parser.y b/gdb/cp-name-parser.y index 10f6e2d1491..e7317b732cc 100644 --- a/gdb/cp-name-parser.y +++ b/gdb/cp-name-parser.y @@ -2047,6 +2047,9 @@ cp_demangled_name_to_comp (const char *demangled_name, auto result = std::make_unique (); cpname_state state (demangled_name, result.get ()); + scoped_restore restore_yydebug = make_scoped_restore (&yydebug, + parser_debug); + if (yyparse (&state)) { if (state.global_errmsg && errmsg) diff --git a/gdb/parse.c b/gdb/parse.c index 3108017dbb7..64653c8ae6e 100644 --- a/gdb/parse.c +++ b/gdb/parse.c @@ -60,8 +60,8 @@ show_expressiondebug (struct ui_file *file, int from_tty, } -/* True if an expression parser should set yydebug. */ -static bool parser_debug; +/* See parser-defs.h. */ +bool parser_debug; static void show_parserdebug (struct ui_file *file, int from_tty, diff --git a/gdb/parser-defs.h b/gdb/parser-defs.h index c13a56e0505..f5618f3a9ce 100644 --- a/gdb/parser-defs.h +++ b/gdb/parser-defs.h @@ -389,4 +389,7 @@ extern bool fits_in_type (int n_sign, const gdb_mpz &n, int type_bits, extern void parser_fprintf (FILE *, const char *, ...) ATTRIBUTE_PRINTF (2, 3); +/* True if an expression parser should set yydebug. */ +extern bool parser_debug; + #endif /* GDB_PARSER_DEFS_H */ diff --git a/gdb/printcmd.c b/gdb/printcmd.c index 2be5eaa15a2..6659c5a41e5 100644 --- a/gdb/printcmd.c +++ b/gdb/printcmd.c @@ -1320,7 +1320,9 @@ process_print_command_args (const char *args, value_print_options *print_opts, value, so invert it for parse_expression. */ parser_flags flags = 0; if (!voidprint) - flags = PARSER_VOID_CONTEXT; + flags |= PARSER_VOID_CONTEXT; + if (parser_debug) + flags |= PARSER_DEBUG; expression_up expr = parse_expression (exp, nullptr, flags); return expr->evaluate (); } diff --git a/gdb/testsuite/gdb.base/exprs.exp b/gdb/testsuite/gdb.base/exprs.exp index eb2d0e4bd8b..81e78e50e62 100644 --- a/gdb/testsuite/gdb.base/exprs.exp +++ b/gdb/testsuite/gdb.base/exprs.exp @@ -284,3 +284,15 @@ gdb_test "print v_short + " \ # Test for a syntax error in the middle of an expression. gdb_test "print v_short =}{= 3" \ "A syntax error in expression, near `\\}\\{= 3'\\." + +gdb_test_no_output "set debug parse 1" +set saw_start 0 +gdb_test_multiple "print 23" "print with debugging" -lbl { + "Starting parse" { + set saw_start 1 + exp_continue + } + -re ".$decimal = 23" { + gdb_assert $saw_start $gdb_test_name + } +} -- 2.49.0