[v2] Notify about breakpoint modification when enabling/disabling single location

Message ID 20180531085633.7830-1-jan.vrany@fit.cvut.cz
State New
Headers show
Series
  • [v2] Notify about breakpoint modification when enabling/disabling single location
Related show

Commit Message

Jan Vrany May 31, 2018, 8:56 a.m.
When a single breakpoint location enableness was modified by a CLI command,
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-location-ena-dis.cc: New file.
	* gdb.mi/mi-breakpoint-location-ena-dis.exp: New file.
---
 gdb/ChangeLog                                 |  4 ++
 gdb/breakpoint.c                              |  2 +
 gdb/testsuite/ChangeLog                       |  5 ++
 .../gdb.mi/mi-breakpoint-location-ena-dis.cc  | 36 ++++++++++++
 .../gdb.mi/mi-breakpoint-location-ena-dis.exp | 56 +++++++++++++++++++
 5 files changed, 103 insertions(+)
 create mode 100644 gdb/testsuite/gdb.mi/mi-breakpoint-location-ena-dis.cc
 create mode 100644 gdb/testsuite/gdb.mi/mi-breakpoint-location-ena-dis.exp

-- 
2.17.0

Comments

Jan Vrany June 14, 2018, 9:28 a.m. | #1
Polite ping.

On Thu, 2018-05-31 at 09:56 +0100, Jan Vrany wrote:
> When a single breakpoint location enableness was modified by a CLI

> command,

> 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-location-ena-dis.cc: New file.

> 	* gdb.mi/mi-breakpoint-location-ena-dis.exp: New file.

> ---

>  gdb/ChangeLog                                 |  4 ++

>  gdb/breakpoint.c                              |  2 +

>  gdb/testsuite/ChangeLog                       |  5 ++

>  .../gdb.mi/mi-breakpoint-location-ena-dis.cc  | 36 ++++++++++++

>  .../gdb.mi/mi-breakpoint-location-ena-dis.exp | 56

> +++++++++++++++++++

>  5 files changed, 103 insertions(+)

>  create mode 100644 gdb/testsuite/gdb.mi/mi-breakpoint-location-ena-

> dis.cc

>  create mode 100644 gdb/testsuite/gdb.mi/mi-breakpoint-location-ena-

> dis.exp

> 

> diff --git a/gdb/ChangeLog b/gdb/ChangeLog

> index c38ff5b14a..17ae4c625a 100644

> --- a/gdb/ChangeLog

> +++ b/gdb/ChangeLog

> @@ -1,3 +1,7 @@

> +2018-05-29  Jan Vrany  <jan.vrany@fit.cvut.cz>

> +

> +	* breakpoint.c (enable_disable_bp_num_loc): Notify

> observers.

> +

>  2018-05-30  Pedro Alves  <palves@redhat.com>

>  

>  	* common/common-exceptions.h (exception_rethrow): Use

> diff --git a/gdb/breakpoint.c b/gdb/breakpoint.c

> index f3101af96f..2243ba34f2 100644

> --- a/gdb/breakpoint.c

> +++ b/gdb/breakpoint.c

> @@ -14215,6 +14215,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..4ee5bb0662 100644

> --- a/gdb/testsuite/ChangeLog

> +++ b/gdb/testsuite/ChangeLog

> @@ -1,3 +1,8 @@

> +2018-05-29  Jan Vrany  <jan.vrany@fit.cvut.cz>

> +

> +	* gdb.mi/mi-breakpoint-location-ena-dis.cc: New file.

> +	* gdb.mi/mi-breakpoint-location-ena-dis.exp: New file.

> +

>  2018-05-24  Andrew Burgess  <andrew.burgess@embecosm.com>

>  

>  	PR gdb/23203

> diff --git a/gdb/testsuite/gdb.mi/mi-breakpoint-location-ena-dis.cc

> b/gdb/testsuite/gdb.mi/mi-breakpoint-location-ena-dis.cc

> new file mode 100644

> index 0000000000..981fbc8d82

> --- /dev/null

> +++ b/gdb/testsuite/gdb.mi/mi-breakpoint-location-ena-dis.cc

> @@ -0,0 +1,36 @@

> +/* 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 <http://www.gnu.org/license

> s/>.  */

> +

> +static int

> +add (int a, int b)

> +{

> +  return a + b;

> +}

> +

> +static double

> +add (double a, double b)

> +{

> +  return a + b;

> +}

> +

> +int

> +main (void)

> +{

> +  int i = add (3, 4);

> +  double d = add (3.0, 4.0);

> +  return 1;

> +}

> diff --git a/gdb/testsuite/gdb.mi/mi-breakpoint-location-ena-dis.exp

> b/gdb/testsuite/gdb.mi/mi-breakpoint-location-ena-dis.exp

> new file mode 100644

> index 0000000000..03e03d2365

> --- /dev/null

> +++ b/gdb/testsuite/gdb.mi/mi-breakpoint-location-ena-dis.exp

> @@ -0,0 +1,56 @@

> +# 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 <http://www.gnu.org/licenses

> />.

> +

> +# Tests whether =breakpoint=modified notification is sent when a

> single

> +# breakpoint location is enabled or disabled via CLI.

> +

> +load_lib mi-support.exp

> +set MIFLAGS "-i=mi"

> +

> +gdb_exit

> +if {[mi_gdb_start]} {

> +    continue

> +}

> +

> +#

> +# Start here

> +#

> +standard_testfile .cc

> +

> +if {[gdb_compile "$srcdir/$subdir/$srcfile" $binfile executable

> {debug c++}] != "" } {

> +    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",enable

> d="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",enabl

> ed="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",enabl

> ed="y".*\},\{number="2.2",enabled="y".*\}.*\n\^done} \

> +	"en 2.2"

> +

> +mi_gdb_exit
Jan Vrany June 25, 2018, 9:01 p.m. | #2
Polite ping.

On Thu, 2018-06-14 at 10:28 +0100, Jan Vrany wrote:
> Polite ping.

> 

> On Thu, 2018-05-31 at 09:56 +0100, Jan Vrany wrote:

> > When a single breakpoint location enableness was modified by a CLI

> > command,

> > 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-location-ena-dis.cc: New file.

> > 	* gdb.mi/mi-breakpoint-location-ena-dis.exp: New file.

> > ---

> >  gdb/ChangeLog                                 |  4 ++

> >  gdb/breakpoint.c                              |  2 +

> >  gdb/testsuite/ChangeLog                       |  5 ++

> >  .../gdb.mi/mi-breakpoint-location-ena-dis.cc  | 36 ++++++++++++

> >  .../gdb.mi/mi-breakpoint-location-ena-dis.exp | 56

> > +++++++++++++++++++

> >  5 files changed, 103 insertions(+)

> >  create mode 100644 gdb/testsuite/gdb.mi/mi-breakpoint-location-

> > ena-

> > dis.cc

> >  create mode 100644 gdb/testsuite/gdb.mi/mi-breakpoint-location-

> > ena-

> > dis.exp

> > 

> > diff --git a/gdb/ChangeLog b/gdb/ChangeLog

> > index c38ff5b14a..17ae4c625a 100644

> > --- a/gdb/ChangeLog

> > +++ b/gdb/ChangeLog

> > @@ -1,3 +1,7 @@

> > +2018-05-29  Jan Vrany  <jan.vrany@fit.cvut.cz>

> > +

> > +	* breakpoint.c (enable_disable_bp_num_loc): Notify

> > observers.

> > +

> >  2018-05-30  Pedro Alves  <palves@redhat.com>

> >  

> >  	* common/common-exceptions.h (exception_rethrow): Use

> > diff --git a/gdb/breakpoint.c b/gdb/breakpoint.c

> > index f3101af96f..2243ba34f2 100644

> > --- a/gdb/breakpoint.c

> > +++ b/gdb/breakpoint.c

> > @@ -14215,6 +14215,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..4ee5bb0662 100644

> > --- a/gdb/testsuite/ChangeLog

> > +++ b/gdb/testsuite/ChangeLog

> > @@ -1,3 +1,8 @@

> > +2018-05-29  Jan Vrany  <jan.vrany@fit.cvut.cz>

> > +

> > +	* gdb.mi/mi-breakpoint-location-ena-dis.cc: New file.

> > +	* gdb.mi/mi-breakpoint-location-ena-dis.exp: New file.

> > +

> >  2018-05-24  Andrew Burgess  <andrew.burgess@embecosm.com>

> >  

> >  	PR gdb/23203

> > diff --git a/gdb/testsuite/gdb.mi/mi-breakpoint-location-ena-dis.cc

> > b/gdb/testsuite/gdb.mi/mi-breakpoint-location-ena-dis.cc

> > new file mode 100644

> > index 0000000000..981fbc8d82

> > --- /dev/null

> > +++ b/gdb/testsuite/gdb.mi/mi-breakpoint-location-ena-dis.cc

> > @@ -0,0 +1,36 @@

> > +/* 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 <http://www.gnu.org/licen

> > se

> > s/>.  */

> > +

> > +static int

> > +add (int a, int b)

> > +{

> > +  return a + b;

> > +}

> > +

> > +static double

> > +add (double a, double b)

> > +{

> > +  return a + b;

> > +}

> > +

> > +int

> > +main (void)

> > +{

> > +  int i = add (3, 4);

> > +  double d = add (3.0, 4.0);

> > +  return 1;

> > +}

> > diff --git a/gdb/testsuite/gdb.mi/mi-breakpoint-location-ena-

> > dis.exp

> > b/gdb/testsuite/gdb.mi/mi-breakpoint-location-ena-dis.exp

> > new file mode 100644

> > index 0000000000..03e03d2365

> > --- /dev/null

> > +++ b/gdb/testsuite/gdb.mi/mi-breakpoint-location-ena-dis.exp

> > @@ -0,0 +1,56 @@

> > +# 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 <http://www.gnu.org/licens

> > es

> > />.

> > +

> > +# Tests whether =breakpoint=modified notification is sent when a

> > single

> > +# breakpoint location is enabled or disabled via CLI.

> > +

> > +load_lib mi-support.exp

> > +set MIFLAGS "-i=mi"

> > +

> > +gdb_exit

> > +if {[mi_gdb_start]} {

> > +    continue

> > +}

> > +

> > +#

> > +# Start here

> > +#

> > +standard_testfile .cc

> > +

> > +if {[gdb_compile "$srcdir/$subdir/$srcfile" $binfile executable

> > {debug c++}] != "" } {

> > +    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",enab

> > le

> > d="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",ena

> > bl

> > ed="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",ena

> > bl

> > ed="y".*\},\{number="2.2",enabled="y".*\}.*\n\^done} \

> > +	"en 2.2"

> > +

> > +mi_gdb_exit
Simon Marchi June 26, 2018, 3:11 p.m. | #3
On 2018-05-31 04:56, Jan Vrany wrote:
> When a single breakpoint location enableness was modified by a CLI 

> command,

> 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-location-ena-dis.cc: New file.

> 	* gdb.mi/mi-breakpoint-location-ena-dis.exp: New file.


LGTM, thanks.

Simon
Simon Marchi July 25, 2018, 5:49 p.m. | #4
On 2018-06-26 11:11 AM, Simon Marchi wrote:
> On 2018-05-31 04:56, Jan Vrany wrote:

>> When a single breakpoint location enableness was modified by a CLI command,

>> 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-location-ena-dis.cc: New file.

>>     * gdb.mi/mi-breakpoint-location-ena-dis.exp: New file.

> 

> LGTM, thanks.

> 

> Simon


I pushed this patch, now that Jan now has a valid copyright assignment.

Simon

Patch

diff --git a/gdb/ChangeLog b/gdb/ChangeLog
index c38ff5b14a..17ae4c625a 100644
--- a/gdb/ChangeLog
+++ b/gdb/ChangeLog
@@ -1,3 +1,7 @@ 
+2018-05-29  Jan Vrany  <jan.vrany@fit.cvut.cz>
+
+	* breakpoint.c (enable_disable_bp_num_loc): Notify observers.
+
 2018-05-30  Pedro Alves  <palves@redhat.com>
 
 	* common/common-exceptions.h (exception_rethrow): Use
diff --git a/gdb/breakpoint.c b/gdb/breakpoint.c
index f3101af96f..2243ba34f2 100644
--- a/gdb/breakpoint.c
+++ b/gdb/breakpoint.c
@@ -14215,6 +14215,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..4ee5bb0662 100644
--- a/gdb/testsuite/ChangeLog
+++ b/gdb/testsuite/ChangeLog
@@ -1,3 +1,8 @@ 
+2018-05-29  Jan Vrany  <jan.vrany@fit.cvut.cz>
+
+	* gdb.mi/mi-breakpoint-location-ena-dis.cc: New file.
+	* gdb.mi/mi-breakpoint-location-ena-dis.exp: New file.
+
 2018-05-24  Andrew Burgess  <andrew.burgess@embecosm.com>
 
 	PR gdb/23203
diff --git a/gdb/testsuite/gdb.mi/mi-breakpoint-location-ena-dis.cc b/gdb/testsuite/gdb.mi/mi-breakpoint-location-ena-dis.cc
new file mode 100644
index 0000000000..981fbc8d82
--- /dev/null
+++ b/gdb/testsuite/gdb.mi/mi-breakpoint-location-ena-dis.cc
@@ -0,0 +1,36 @@ 
+/* 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 <http://www.gnu.org/licenses/>.  */
+
+static int
+add (int a, int b)
+{
+  return a + b;
+}
+
+static double
+add (double a, double b)
+{
+  return a + b;
+}
+
+int
+main (void)
+{
+  int i = add (3, 4);
+  double d = add (3.0, 4.0);
+  return 1;
+}
diff --git a/gdb/testsuite/gdb.mi/mi-breakpoint-location-ena-dis.exp b/gdb/testsuite/gdb.mi/mi-breakpoint-location-ena-dis.exp
new file mode 100644
index 0000000000..03e03d2365
--- /dev/null
+++ b/gdb/testsuite/gdb.mi/mi-breakpoint-location-ena-dis.exp
@@ -0,0 +1,56 @@ 
+# 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 <http://www.gnu.org/licenses/>.
+
+# Tests whether =breakpoint=modified notification is sent when a single
+# breakpoint location is enabled or disabled via CLI.
+
+load_lib mi-support.exp
+set MIFLAGS "-i=mi"
+
+gdb_exit
+if {[mi_gdb_start]} {
+    continue
+}
+
+#
+# Start here
+#
+standard_testfile .cc
+
+if {[gdb_compile "$srcdir/$subdir/$srcfile" $binfile executable {debug c++}] != "" } {
+    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