From patchwork Tue May 29 19:50:20 2018 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Jan Vrany X-Patchwork-Id: 27545 Received: (qmail 89058 invoked by alias); 29 May 2018 19:50:59 -0000 Mailing-List: contact gdb-patches-help@sourceware.org; run by ezmlm Precedence: bulk List-Id: List-Unsubscribe: List-Subscribe: List-Archive: List-Post: List-Help: , Sender: gdb-patches-owner@sourceware.org Delivered-To: mailing list gdb-patches@sourceware.org Received: (qmail 78743 invoked by uid 89); 29 May 2018 19:50:56 -0000 Authentication-Results: sourceware.org; auth=none X-Virus-Found: No X-Spam-SWARE-Status: No, score=-26.9 required=5.0 tests=AWL, BAYES_00, GIT_PATCH_0, GIT_PATCH_1, GIT_PATCH_2, GIT_PATCH_3, KAM_SHORT, SPF_PASS autolearn=ham version=3.3.2 spammy=H*r:may, H*r:forged, H*Ad:D*cvut.cz X-HELO: relay.fit.cvut.cz Received: from relay.fit.cvut.cz (HELO relay.fit.cvut.cz) (147.32.232.237) by sourceware.org (qpsmtpd/0.93/v0.84-503-g423c35a) with ESMTP; Tue, 29 May 2018 19:50:53 +0000 Received: from imap.fit.cvut.cz (imap.fit.cvut.cz [IPv6:2001:718:2:2901:0:0:0:238] (may be forged)) by relay.fit.cvut.cz (8.15.2/8.15.2) with ESMTPS id w4TJomXf051353 (version=TLSv1.2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128 verify=OK); Tue, 29 May 2018 21:50:50 +0200 (CEST) (envelope-from jan.vrany@fit.cvut.cz) Received: from localhost (0279192e.bb.sky.com [2.121.25.46] (may be forged)) (authenticated bits=0 as user vranyj1) by imap.fit.cvut.cz (8.15.2/8.15.2) with ESMTPSA id w4TJoldl029400 (version=TLSv1.2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128 verify=NOT); Tue, 29 May 2018 21:50:48 +0200 (CEST) (envelope-from jan.vrany@fit.cvut.cz) From: Jan Vrany To: gdb-patches@sourceware.org Cc: Jan Vrany Subject: [PATCH] Notify about breakpoint modification when enabling/disabling single location Date: Tue, 29 May 2018 20:50:20 +0100 Message-Id: <20180529195020.12732-1-jan.vrany@fit.cvut.cz> When a single breakpoint location enableness was modified, observers were not notified about it. This issue is now fixed. gdb/ChangeLog: * breakpoint.c (enable_disable_bp_num_loc): Notify observers. gdb/testsuite/ChangeLog: * gdb.mi/mi-breakpoint-changed-2.c: New file. * gdb.mi/mi-breakpoint-changed-2.exp: New file. --- gdb/ChangeLog | 4 ++ gdb/breakpoint.c | 2 + gdb/testsuite/ChangeLog | 5 ++ .../gdb.mi/mi-breakpoint-changed-2.c | 42 ++++++++++++++ .../gdb.mi/mi-breakpoint-changed-2.exp | 57 +++++++++++++++++++ 5 files changed, 110 insertions(+) create mode 100644 gdb/testsuite/gdb.mi/mi-breakpoint-changed-2.c create mode 100644 gdb/testsuite/gdb.mi/mi-breakpoint-changed-2.exp diff --git a/gdb/ChangeLog b/gdb/ChangeLog index 98fb955126..0908a2aac4 100644 --- a/gdb/ChangeLog +++ b/gdb/ChangeLog @@ -1,3 +1,7 @@ +2018-05-29 Jan Vrany + + * breakpoint.c (enable_disable_bp_num_loc): Notify observers. + 2018-05-27 Tom Tromey * Makefile.in (DEPFILES): Don't reference REMOTE_OBS. diff --git a/gdb/breakpoint.c b/gdb/breakpoint.c index 721afd2c04..3b380ee2a8 100644 --- a/gdb/breakpoint.c +++ b/gdb/breakpoint.c @@ -14225,6 +14225,8 @@ enable_disable_bp_num_loc (int bp_num, int loc_num, bool enable) target_disable_tracepoint (loc); } update_global_location_list (UGLL_DONT_INSERT); + + gdb::observers::breakpoint_modified.notify (loc->owner); } /* Enable or disable a range of breakpoint locations. BP_NUM is the diff --git a/gdb/testsuite/ChangeLog b/gdb/testsuite/ChangeLog index b2938b1bf1..c94b236b60 100644 --- a/gdb/testsuite/ChangeLog +++ b/gdb/testsuite/ChangeLog @@ -1,3 +1,8 @@ +2018-05-29 Jan Vrany + + * gdb.mi/mi-breakpoint-changed-2.c: New file. + * gdb.mi/mi-breakpoint-changed-2.exp: New file. + 2018-05-24 Andrew Burgess PR gdb/23203 diff --git a/gdb/testsuite/gdb.mi/mi-breakpoint-changed-2.c b/gdb/testsuite/gdb.mi/mi-breakpoint-changed-2.c new file mode 100644 index 0000000000..c4a295aa21 --- /dev/null +++ b/gdb/testsuite/gdb.mi/mi-breakpoint-changed-2.c @@ -0,0 +1,42 @@ +/* This testcase is part of GDB, the GNU debugger. + + Copyright 2018 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 . */ + +#include +#include + +static inline int +add(int a, int b) { + return a + b; +} + +int +my_rand_1(void) { + return add(rand(), rand()); +} + +int +my_rand_2(void) { + int r = my_rand_1(); + return add(r, r); +} + +int +main (void) +{ + int i = my_rand_1(); + return 1; /* next-line */ +} \ No newline at end of file diff --git a/gdb/testsuite/gdb.mi/mi-breakpoint-changed-2.exp b/gdb/testsuite/gdb.mi/mi-breakpoint-changed-2.exp new file mode 100644 index 0000000000..a67be67d32 --- /dev/null +++ b/gdb/testsuite/gdb.mi/mi-breakpoint-changed-2.exp @@ -0,0 +1,57 @@ +# Copyright 2018 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 . + + +load_lib mi-support.exp +set MIFLAGS "-i=mi" + +gdb_exit +if {[mi_gdb_start]} { + continue +} + +# +# Start here +# +standard_testfile + +if {[gdb_compile "$srcdir/$subdir/$srcfile" $binfile executable {debug additional_flags=-O2}] != "" } { + return -1 +} + +mi_run_to_main + +mi_gdb_test "break add" \ + {(&.*)*.*~"Breakpoint 2 at.*\\n".*=breakpoint-created,bkpt=\{number="2",type="breakpoint".*\},\{number="2.1",enabled="y".*\}.*\n\^done} \ + "break add" + +# Modify enableness through MI commands shouldn't trigger MI +# notification. +mi_gdb_test "-break-disable 2.2" "\\^done" "-break-disable 2.2" +mi_gdb_test "-break-enable 2.2" "\\^done" "-break-enable 2.2" + +# Modify enableness through CLI commands should trigger MI +# notification. +mi_gdb_test "dis 2.2" \ + {.*=breakpoint-modified,bkpt=\{number="2",type="breakpoint".*\},\{number="2.1",enabled="y".*\},\{number="2.2",enabled="n".*\}.*\n\^done} \ + "dis 2.2" +mi_gdb_test "en 2.2" \ + {.*=breakpoint-modified,bkpt=\{number="2",type="breakpoint".*\},\{number="2.1",enabled="y".*\},\{number="2.2",enabled="y".*\}.*\n\^done} \ + "en 2.2" + + +mi_gdb_exit + +