From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from rock.gnat.com (rock.gnat.com [205.232.38.15]) by sourceware.org (Postfix) with ESMTP id AF7F23857C59 for ; Wed, 16 Sep 2020 18:10:59 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.3.2 sourceware.org AF7F23857C59 Authentication-Results: sourceware.org; dmarc=none (p=none dis=none) header.from=adacore.com Authentication-Results: sourceware.org; spf=pass smtp.mailfrom=tromey@adacore.com Received: from localhost (localhost.localdomain [127.0.0.1]) by filtered-rock.gnat.com (Postfix) with ESMTP id 8FEE7562B2; Wed, 16 Sep 2020 14:10:59 -0400 (EDT) X-Virus-Scanned: Debian amavisd-new at gnat.com Received: from rock.gnat.com ([127.0.0.1]) by localhost (rock.gnat.com [127.0.0.1]) (amavisd-new, port 10024) with LMTP id hBxFjly0Zk50; Wed, 16 Sep 2020 14:10:59 -0400 (EDT) Received: from murgatroyd.Home (75-166-96-88.hlrn.qwest.net [75.166.96.88]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by rock.gnat.com (Postfix) with ESMTPSA id 4CBEA562B1; Wed, 16 Sep 2020 14:10:59 -0400 (EDT) From: Tom Tromey To: gdb-patches@sourceware.org Cc: Tom Tromey Subject: [PATCH] Match demangled name in "skip" Date: Wed, 16 Sep 2020 12:10:57 -0600 Message-Id: <20200916181057.268427-1-tromey@adacore.com> X-Mailer: git-send-email 2.26.2 MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Spam-Status: No, score=-10.5 required=5.0 tests=BAYES_00, GIT_PATCH_0, JMQ_SPF_NEUTRAL, KAM_DMARC_STATUS, KAM_SHORT, SPF_HELO_NONE, SPF_PASS, TXREP autolearn=ham autolearn_force=no version=3.4.2 X-Spam-Checker-Version: SpamAssassin 3.4.2 (2018-09-13) 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: Wed, 16 Sep 2020 18:11:02 -0000 PR gdb/26598 notes that, before commit bcfe6157ca28 ("Use the linkage name if it exists"), the "skip" command would match the demangled name of a symbol, but now only matches the linkage name. This patch fixes this regression. I looked at all calls to function_name_is_marked_for_skip, and only one used the linkage name. gdb/ChangeLog 2020-09-16 Tom Tromey PR gdb/26598: * infrun.c (fill_in_stop_func): Use find_pc_partial_function_sym. gdb/testsuite/ChangeLog 2020-09-16 Tom Tromey PR gdb/26598: * gdb.base/skipcxx.exp: New file. * gdb.base/skipcxx.cc: New file. --- gdb/ChangeLog | 5 +++++ gdb/infrun.c | 12 ++++++----- gdb/testsuite/ChangeLog | 6 ++++++ gdb/testsuite/gdb.base/skipcxx.cc | 32 ++++++++++++++++++++++++++++++ gdb/testsuite/gdb.base/skipcxx.exp | 29 +++++++++++++++++++++++++++ 5 files changed, 79 insertions(+), 5 deletions(-) create mode 100644 gdb/testsuite/gdb.base/skipcxx.cc create mode 100644 gdb/testsuite/gdb.base/skipcxx.exp diff --git a/gdb/infrun.c b/gdb/infrun.c index 5773fd03951..780d5bc791e 100644 --- a/gdb/infrun.c +++ b/gdb/infrun.c @@ -4358,14 +4358,16 @@ fill_in_stop_func (struct gdbarch *gdbarch, if (!ecs->stop_func_filled_in) { const block *block; + const general_symbol_info *gsi; /* Don't care about return value; stop_func_start and stop_func_name will both be 0 if it doesn't work. */ - find_pc_partial_function (ecs->event_thread->suspend.stop_pc, - &ecs->stop_func_name, - &ecs->stop_func_start, - &ecs->stop_func_end, - &block); + find_pc_partial_function_sym (ecs->event_thread->suspend.stop_pc, + &gsi, + &ecs->stop_func_start, + &ecs->stop_func_end, + &block); + ecs->stop_func_name = gsi == nullptr ? nullptr : gsi->print_name (); /* The call to find_pc_partial_function, above, will set stop_func_start and stop_func_end to the start and end diff --git a/gdb/testsuite/gdb.base/skipcxx.cc b/gdb/testsuite/gdb.base/skipcxx.cc new file mode 100644 index 00000000000..5f653455c36 --- /dev/null +++ b/gdb/testsuite/gdb.base/skipcxx.cc @@ -0,0 +1,32 @@ +/* This testcase is part of GDB, the GNU debugger. + + Copyright 2020 Free Software Foundation, Inc. + + 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 . */ + +namespace somename +{ +int func() +{ + return 23; +} +} + +int +main () +{ + int x = somename::func (); + + return 0; +} diff --git a/gdb/testsuite/gdb.base/skipcxx.exp b/gdb/testsuite/gdb.base/skipcxx.exp new file mode 100644 index 00000000000..19144519eee --- /dev/null +++ b/gdb/testsuite/gdb.base/skipcxx.exp @@ -0,0 +1,29 @@ +# Copyright 2020 Free Software Foundation, Inc. + +# 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 . + +standard_testfile .cc + +if {[prepare_for_testing "failed to prepare" $testfile $srcfile debug]} { + return -1 +} + +if ![runto_main] { + fail "can't run to main" + return +} + +gdb_test "skip -rfu ^somename::" \ + [string_to_regexp "Function(s) ^somename:: will be skipped when stepping."] +gdb_test "step" ".* return 0;" -- 2.26.2