public inbox for gdb-patches@sourceware.org
 help / color / mirror / Atom feed
* [PATCH v2] gdb: Modify the output of "info breakpoints" and "delete breakpoints"
@ 2022-05-19  9:16 Tiezhu Yang
  2022-05-19 13:08 ` Bruno Larsen
  0 siblings, 1 reply; 4+ messages in thread
From: Tiezhu Yang @ 2022-05-19  9:16 UTC (permalink / raw)
  To: gdb-patches

The output of "info breakpoints" includes breakpoint, watchpoint,
tracepoint and catchpoint, after delete all breakpoints, it should
show tracepoint and catchpoint in the output of "info breakpoints"
to report empty list.

It should also change the output of "delete breakpoints" to make it
clear that watchpoints, tracepoints and catchpoints are also being
deleted. This is suggested by Bruno Larsen, thank you.

$ make check-gdb TESTS="gdb.base/access-mem-running.exp"
$ gdb/gdb gdb/testsuite/outputs/gdb.base/access-mem-running/access-mem-running
[...]
(gdb) break main
Breakpoint 1 at 0x12000073c: file /home/loongson/gdb.git/gdb/testsuite/gdb.base/access-mem-running.c, line 32.
(gdb) watch global_counter
Hardware watchpoint 2: global_counter
(gdb) trace maybe_stop_here
Tracepoint 3 at 0x12000071c: file /home/loongson/gdb.git/gdb/testsuite/gdb.base/access-mem-running.c, line 27.
(gdb) catch fork
Catchpoint 4 (fork)
(gdb) info breakpoints
Num     Type           Disp Enb Address            What
1       breakpoint     keep y   0x000000012000073c in main at /home/loongson/gdb.git/gdb/testsuite/gdb.base/access-mem-running.c:32
2       hw watchpoint  keep y                      global_counter
3       tracepoint     keep y   0x000000012000071c in maybe_stop_here at /home/loongson/gdb.git/gdb/testsuite/gdb.base/access-mem-running.c:27
	not installed on target
4       catchpoint     keep y                      fork

Without this patch:

(gdb) delete breakpoints
Delete all breakpoints? (y or n) y
(gdb) info breakpoints
No breakpoints or watchpoints.
(gdb) info breakpoints 3
No breakpoint or watchpoint matching '3'.

With this patch:

(gdb) delete breakpoints
Delete all breakpoints, watchpoints, tracepoints and catchpoints? (y or n) y
(gdb) info breakpoints
No breakpoints, watchpoints, tracepoints or catchpoints.
(gdb) info breakpoints 3
No breakpoint, watchpoint, tracepoint or catchpoint matching '3'.

Signed-off-by: Tiezhu Yang <yangtiezhu@loongson.cn>
---
 gdb/breakpoint.c                                        | 16 ++++++++--------
 gdb/doc/gdb.texinfo                                     | 17 +++++++++--------
 gdb/ppc-linux-nat.c                                     |  2 +-
 gdb/testsuite/gdb.arch/i386-dr3-watch.exp               |  2 +-
 gdb/testsuite/gdb.base/annota-input-while-running.exp   |  2 +-
 gdb/testsuite/gdb.base/break-unload-file.exp            |  4 ++--
 gdb/testsuite/gdb.base/break.exp                        | 12 ++++++------
 gdb/testsuite/gdb.base/breakpoint-in-ro-region.exp      |  2 +-
 .../gdb.base/continue-after-aborted-step-over.exp       |  2 +-
 gdb/testsuite/gdb.base/default.exp                      |  2 +-
 gdb/testsuite/gdb.base/del.exp                          |  4 ++--
 gdb/testsuite/gdb.base/ena-dis-br.exp                   |  2 +-
 gdb/testsuite/gdb.base/foll-fork.exp                    |  6 +++---
 gdb/testsuite/gdb.base/hbreak-unmapped.exp              |  4 ++--
 gdb/testsuite/gdb.base/hbreak2.exp                      |  2 +-
 gdb/testsuite/gdb.base/help.exp                         |  2 +-
 gdb/testsuite/gdb.base/new-ui.exp                       |  8 ++++----
 gdb/testsuite/gdb.base/save-bp.exp                      |  8 ++++----
 gdb/testsuite/gdb.base/sepdebug.exp                     |  2 +-
 gdb/testsuite/gdb.base/server-del-break.exp             |  5 +++--
 gdb/testsuite/gdb.cp/annota2.exp                        |  4 ++--
 gdb/testsuite/gdb.cp/annota3.exp                        |  4 ++--
 gdb/testsuite/gdb.cp/ovldbreak.exp                      | 10 +++++-----
 gdb/testsuite/gdb.cp/save-bp-qualified.exp              |  4 ++--
 gdb/testsuite/gdb.dwarf2/dw2-inline-header-1.exp        |  4 ++--
 gdb/testsuite/gdb.dwarf2/dw2-inline-header-2.exp        |  8 ++++----
 gdb/testsuite/gdb.dwarf2/dw2-inline-header-3.exp        |  4 ++--
 gdb/testsuite/gdb.dwarf2/dw2-inline-small-func.exp      |  4 ++--
 gdb/testsuite/gdb.guile/scm-breakpoint.exp              |  6 +++---
 gdb/testsuite/gdb.linespec/cpexplicit.exp               |  4 ++--
 gdb/testsuite/gdb.linespec/explicit.exp                 |  4 ++--
 gdb/testsuite/gdb.mi/mi-return.exp                      |  2 +-
 gdb/testsuite/gdb.opt/inline-small-func.exp             |  4 ++--
 gdb/testsuite/gdb.python/py-breakpoint.exp              |  8 ++++----
 gdb/testsuite/gdb.reverse/ppc_record_test_isa_3_1.exp   |  2 +-
 .../gdb.threads/continue-pending-after-query.exp        |  2 +-
 gdb/testsuite/gdb.threads/continue-pending-status.exp   |  7 ++++---
 gdb/testsuite/gdb.threads/thread_check.exp              |  4 ++--
 gdb/testsuite/lib/gdb.exp                               |  6 +++---
 gdb/testsuite/lib/mi-support.exp                        | 10 +++++-----
 gdbserver/mem-break.cc                                  |  7 ++++---
 gdbserver/mem-break.h                                   |  7 ++++---
 42 files changed, 112 insertions(+), 107 deletions(-)

diff --git a/gdb/breakpoint.c b/gdb/breakpoint.c
index 9abc144..52769e0 100644
--- a/gdb/breakpoint.c
+++ b/gdb/breakpoint.c
@@ -6741,9 +6741,9 @@ breakpoint_1 (const char *bp_num_list, bool show_internal,
       if (!filter)
 	{
 	  if (bp_num_list == NULL || *bp_num_list == '\0')
-	    uiout->message ("No breakpoints or watchpoints.\n");
+	    uiout->message ("No breakpoints, watchpoints, tracepoints or catchpoints.\n");
 	  else
-	    uiout->message ("No breakpoint or watchpoint matching '%s'.\n",
+	    uiout->message ("No breakpoint, watchpoint, tracepoint or catchpoint matching '%s'.\n",
 			    bp_num_list);
 	}
     }
@@ -12338,8 +12338,8 @@ delete_command (const char *arg, int from_tty)
     {
       int breaks_to_delete = 0;
 
-      /* Delete all breakpoints if no argument.  Do not delete
-	 internal breakpoints, these have to be deleted with an
+      /* Delete all breakpoints, watchpoints, tracepoints and catchpoints if no argument.
+	 Do not delete internal breakpoints, these have to be deleted with an
 	 explicit breakpoint number argument.  */
       for (breakpoint *b : all_breakpoints ())
 	if (user_breakpoint_p (b))
@@ -12350,7 +12350,7 @@ delete_command (const char *arg, int from_tty)
 
       /* Ask user only if there are some breakpoints to delete.  */
       if (!from_tty
-	  || (breaks_to_delete && query (_("Delete all breakpoints? "))))
+	  || (breaks_to_delete && query (_("Delete all breakpoints, watchpoints, tracepoints and catchpoints? "))))
 	for (breakpoint *b : all_breakpoints_safe ())
 	  if (user_breakpoint_p (b))
 	    delete_breakpoint (b);
@@ -13843,7 +13843,7 @@ delete_trace_command (const char *arg, int from_tty)
     {
       int breaks_to_delete = 0;
 
-      /* Delete all breakpoints if no argument.
+      /* Delete all tracepoints if no argument.
 	 Do not delete internal or call-dummy breakpoints, these
 	 have to be deleted with an explicit breakpoint number 
 	 argument.  */
@@ -14448,7 +14448,7 @@ This command may be abbreviated \"disable\"."),
 Delete all or some breakpoints.\n\
 Usage: delete [BREAKPOINTNUM]...\n\
 Arguments are breakpoint numbers with spaces in between.\n\
-To delete all breakpoints, give no argument.\n\
+To delete all breakpoints, watchpoints, tracepoints and catchpoints, give no argument.\n\
 \n\
 Also a prefix command for deletion of other GDB objects."),
 		      &deletelist, 1, &cmdlist);
@@ -14459,7 +14459,7 @@ Also a prefix command for deletion of other GDB objects."),
 Delete all or some breakpoints or auto-display expressions.\n\
 Usage: delete breakpoints [BREAKPOINTNUM]...\n\
 Arguments are breakpoint numbers with spaces in between.\n\
-To delete all breakpoints, give no argument.\n\
+To delete all breakpoints, watchpoints, tracepoints and catchpoints, give no argument.\n\
 This command may be abbreviated \"delete\"."),
 	   &deletelist);
 
diff --git a/gdb/doc/gdb.texinfo b/gdb/doc/gdb.texinfo
index 8cf9786..2c89815 100644
--- a/gdb/doc/gdb.texinfo
+++ b/gdb/doc/gdb.texinfo
@@ -4545,15 +4545,15 @@ optionally be surrounded by spaces.
 @cindex @code{$_} and @code{info breakpoints}
 @item info breakpoints @r{[}@var{list}@dots{}@r{]}
 @itemx info break @r{[}@var{list}@dots{}@r{]}
-Print a table of all breakpoints, watchpoints, and catchpoints set and
-not deleted.  Optional argument @var{n} means print information only
-about the specified breakpoint(s) (or watchpoint(s) or catchpoint(s)).
+Print a table of all breakpoints, watchpoints, tracepoints and catchpoints set
+and not deleted.  Optional argument @var{n} means print information only
+about the specified breakpoint(s) (or watchpoint(s) or tracepoint(s) or catchpoint(s)).
 For each breakpoint, following columns are printed:
 
 @table @emph
 @item Breakpoint Numbers
 @item Type
-Breakpoint, watchpoint, or catchpoint.
+Breakpoint, watchpoint, tracepoint or catchpoint.
 @item Disposition
 Whether the breakpoint is marked to be disabled or deleted when hit.
 @item Enabled or Disabled
@@ -5462,10 +5462,11 @@ Delete any breakpoints set at or within the code of the specified
 @kindex delete
 @kindex d @r{(@code{delete})}
 @item delete @r{[}breakpoints@r{]} @r{[}@var{list}@dots{}@r{]}
-Delete the breakpoints, watchpoints, or catchpoints of the breakpoint
-list specified as argument.  If no argument is specified, delete all
-breakpoints (@value{GDBN} asks confirmation, unless you have @code{set
-confirm off}).  You can abbreviate this command as @code{d}.
+Delete all breakpoints, watchpoints, tracepoints and catchpoints
+of the breakpoint list specified as argument.  If no argument is specified,
+delete all breakpoints, watchpoints, tracepoints and catchpoints
+(@value{GDBN} asks confirmation, unless you have @code{set confirm off}).
+You can abbreviate this command as @code{d}.
 @end table
 
 @node Disabling
diff --git a/gdb/ppc-linux-nat.c b/gdb/ppc-linux-nat.c
index 588dd7d..7414d7c 100644
--- a/gdb/ppc-linux-nat.c
+++ b/gdb/ppc-linux-nat.c
@@ -2360,7 +2360,7 @@ ppc_linux_nat_target::can_use_watchpoint_cond_accel (void)
 
   auto process_it = m_process_info.find (inferior_ptid.pid ());
 
-  /* No breakpoints or watchpoints have been requested for this process,
+  /* No breakpoints, watchpoints, tracepoints or catchpoints have been requested for this process,
      we have at least one free DVC register.  */
   if (process_it == m_process_info.end ())
     return true;
diff --git a/gdb/testsuite/gdb.arch/i386-dr3-watch.exp b/gdb/testsuite/gdb.arch/i386-dr3-watch.exp
index bab118b..575e900 100644
--- a/gdb/testsuite/gdb.arch/i386-dr3-watch.exp
+++ b/gdb/testsuite/gdb.arch/i386-dr3-watch.exp
@@ -78,7 +78,7 @@ gdb_test_multiple "watch gap1" "$test" {
 gdb_test "delete" \
     "" \
     "delete all watchpoints" \
-    {Delete all breakpoints\? \(y or n\) $} \
+    {Delete all breakpoints, watchpoints, tracepoints and catchpoints\? \(y or n\) $} \
     "y"
 
 # If debug registers were left occupied by mistake, we'll fail to set
diff --git a/gdb/testsuite/gdb.base/annota-input-while-running.exp b/gdb/testsuite/gdb.base/annota-input-while-running.exp
index 2b4c5e1..8443071 100644
--- a/gdb/testsuite/gdb.base/annota-input-while-running.exp
+++ b/gdb/testsuite/gdb.base/annota-input-while-running.exp
@@ -57,7 +57,7 @@ gdb_annota_test "set annotate 2" ".*" "annotation set at level 2"
 
 set test "delete breakpoints"
 gdb_test_multiple "delete" $test {
-    -re "Delete all breakpoints. .y or n." {
+    -re "Delete all breakpoints, watchpoints, tracepoints and catchpoints. .y or n." {
 	send_gdb "y\n"
 	exp_continue
     }
diff --git a/gdb/testsuite/gdb.base/break-unload-file.exp b/gdb/testsuite/gdb.base/break-unload-file.exp
index ed14772..596736c 100644
--- a/gdb/testsuite/gdb.base/break-unload-file.exp
+++ b/gdb/testsuite/gdb.base/break-unload-file.exp
@@ -121,8 +121,8 @@ proc test_break { initial_load always_inserted break_command } {
 	# re-insert, GDB would fill the shadow buffer with a
 	# breakpoint instruction).  Avoid delete_breakpoints as that
 	# doesn't record a pass/fail.
-	gdb_test "delete" "" "delete all breakpoints" \
-	    "Delete all breakpoints.*y or n.*$" "y"
+	gdb_test "delete" "" "delete all breakpoints, watchpoints, tracepoints and catchpoints" \
+	    "Delete all breakpoints, watchpoints, tracepoints and catchpoints.*y or n.*$" "y"
 
 	# Re-add symbols back.
 	set test "file \$binfile"
diff --git a/gdb/testsuite/gdb.base/break.exp b/gdb/testsuite/gdb.base/break.exp
index 2c939ad..f89923e 100644
--- a/gdb/testsuite/gdb.base/break.exp
+++ b/gdb/testsuite/gdb.base/break.exp
@@ -31,17 +31,17 @@ set srcfile1 break1.c
 
 send_gdb "delete breakpoints\n"
 gdb_expect {
-     -re "Delete all breakpoints.*$" {
+     -re "Delete all breakpoints, watchpoints, tracepoints and catchpoints.*$" {
 	    send_gdb "y\n"
 	    gdb_expect {
 		-re "$gdb_prompt $" {
-		    fail "delete all breakpoints when none (unexpected prompt)"
+		    fail "delete all breakpoints, watchpoints, tracepoints and catchpoints when none (unexpected prompt)"
 		}
-		timeout	{ fail "delete all breakpoints when none (timeout after unexpected prompt)" }
+		timeout	{ fail "delete all breakpoints, watchpoints, tracepoints and catchpoints when none (timeout after unexpected prompt)" }
 	    }
 	}
-     -re ".*$gdb_prompt $"       { pass "delete all breakpoints when none" }
-    timeout	            { fail "delete all breakpoints when none (timeout)" }
+     -re ".*$gdb_prompt $"       { pass "delete all breakpoints, watchpoints, tracepoints and catchpoints when none" }
+    timeout	            { fail "delete all breakpoints, watchpoints, tracepoints and catchpoints when none (timeout)" }
 }
 
 #
@@ -418,7 +418,7 @@ gdb_test "continue" \
     "continue to breakpoint at }"
 
 #
-# delete all breakpoints so we can start over, course this can be a test too
+# delete all breakpoints, watchpoints, tracepoints and catchpoints so we can start over, course this can be a test too
 #
 delete_breakpoints
 
diff --git a/gdb/testsuite/gdb.base/breakpoint-in-ro-region.exp b/gdb/testsuite/gdb.base/breakpoint-in-ro-region.exp
index a3b654b..11c7e03 100644
--- a/gdb/testsuite/gdb.base/breakpoint-in-ro-region.exp
+++ b/gdb/testsuite/gdb.base/breakpoint-in-ro-region.exp
@@ -237,7 +237,7 @@ proc test_single_step { always_inserted auto_hw } {
     }
 
     gdb_test "maint info breakpoints 0" \
-	"No breakpoint or watchpoint matching '0'\." \
+	"No breakpoint, watchpoint, tracepoint or catchpoint matching '0'\." \
 	"single-step breakpoint is not left behind"
 
     # Confirm the thread really advanced.
diff --git a/gdb/testsuite/gdb.base/continue-after-aborted-step-over.exp b/gdb/testsuite/gdb.base/continue-after-aborted-step-over.exp
index ee59ad5..30836f5 100644
--- a/gdb/testsuite/gdb.base/continue-after-aborted-step-over.exp
+++ b/gdb/testsuite/gdb.base/continue-after-aborted-step-over.exp
@@ -27,7 +27,7 @@
 #
 #  Command aborted.
 #  delete breakpoints
-#  Delete all breakpoints? (y or n) y
+#  Delete all breakpoints, watchpoints, tracepoints and catchpoints? (y or n) y
 #  (gdb) b function
 #  Breakpoint 3 at 0x40048b: file test.c, line 33.
 #  continue
diff --git a/gdb/testsuite/gdb.base/default.exp b/gdb/testsuite/gdb.base/default.exp
index 23379f6..37386de 100644
--- a/gdb/testsuite/gdb.base/default.exp
+++ b/gdb/testsuite/gdb.base/default.exp
@@ -267,7 +267,7 @@ gdb_test "info args" "No frame selected."
 #test info bogus-gdb-command
 gdb_test "info bogus-gdb-command" "Undefined info command: \"bogus-gdb-command\".  Try \"help info\".*"
 #test info breakpoints
-gdb_test "info breakpoints" "No breakpoints or watchpoints."
+gdb_test "info breakpoints" "No breakpoints, watchpoints, tracepoints or catchpoints."
 #test info copying
 # FIXME -- doesn't work worth a shit
 #send_gdb "info copying"
diff --git a/gdb/testsuite/gdb.base/del.exp b/gdb/testsuite/gdb.base/del.exp
index 29ab5f5..1fab0c8 100644
--- a/gdb/testsuite/gdb.base/del.exp
+++ b/gdb/testsuite/gdb.base/del.exp
@@ -35,7 +35,7 @@ proc test_delete_alias { alias } {
              "remove all breakpoints"
 
     gdb_test "info break" \
-             "No breakpoints or watchpoints." \
+             "No breakpoints, watchpoints, tracepoints or catchpoints." \
              "info break after clearing breakpoints"
 
 
@@ -50,7 +50,7 @@ proc test_delete_alias { alias } {
              "Remove last breakpoint"
 
     gdb_test "info break" \
-             "No breakpoints or watchpoints." \
+             "No breakpoints, watchpoints, tracepoints or catchpoints." \
              "info break after removing break on main"
 }
 
diff --git a/gdb/testsuite/gdb.base/ena-dis-br.exp b/gdb/testsuite/gdb.base/ena-dis-br.exp
index 24925cf..9b90bc3 100644
--- a/gdb/testsuite/gdb.base/ena-dis-br.exp
+++ b/gdb/testsuite/gdb.base/ena-dis-br.exp
@@ -133,7 +133,7 @@ gdb_test "continue" \
     "continue to auto-deleted break marker3"
 
 gdb_test "info break $bp" \
-    ".*No breakpoint or watchpoint matching.*" \
+    ".*No breakpoint, watchpoint, tracepoint or catchpoint matching.*" \
     "info auto-deleted break marker3"
 
 # Verify that we can set a breakpoint and manually disable it (we've
diff --git a/gdb/testsuite/gdb.base/foll-fork.exp b/gdb/testsuite/gdb.base/foll-fork.exp
index 0ab2290..3ac94a9 100644
--- a/gdb/testsuite/gdb.base/foll-fork.exp
+++ b/gdb/testsuite/gdb.base/foll-fork.exp
@@ -262,7 +262,7 @@ proc_with_prefix catch_fork_child_follow {} {
     gdb_test "delete breakpoints" \
 	"" \
 	"set follow-fork child, cleanup" \
-	"Delete all breakpoints. \\(y or n\\) $" \
+	"Delete all breakpoints, watchpoints, tracepoints and catchpoints. \\(y or n\\) $" \
 	"y"
 }
 
@@ -289,7 +289,7 @@ proc_with_prefix catch_fork_unpatch_child {} {
 	"Catchpoint \[0-9\]* \\(forked process \[0-9\]*\\),.*" \
 	"unpatch child, catch fork"
 
-    # Delete all breakpoints and catchpoints.
+    # Delete all breakpoints, watchpoints, tracepoints and catchpoints.
     delete_breakpoints
 
     # Force $srcfile as the current GDB source can be in glibc sourcetree.
@@ -366,7 +366,7 @@ proc_with_prefix tcatch_fork_parent_follow {} {
     gdb_test "delete breakpoints" \
 	"" \
 	"set follow-fork parent, cleanup" \
-	"Delete all breakpoints. \\(y or n\\) $" \
+	"Delete all breakpoints, watchpoints, tracepoints and catchpoints. \\(y or n\\) $" \
 	"y"
 }
 
diff --git a/gdb/testsuite/gdb.base/hbreak-unmapped.exp b/gdb/testsuite/gdb.base/hbreak-unmapped.exp
index 7e6d1cb..fc93ce5 100644
--- a/gdb/testsuite/gdb.base/hbreak-unmapped.exp
+++ b/gdb/testsuite/gdb.base/hbreak-unmapped.exp
@@ -73,5 +73,5 @@ gdb_test "info break" "hw breakpoint.*y.*0x0\+\[ \t\]\+" \
 gdb_test_no_output "delete \$bpnum" "" "delete" \
     "delete hw breakpoint"
 
-gdb_test "info break" "No breakpoints or watchpoints\." \
-    "info break shows no breakpoints"
+gdb_test "info break" "No breakpoints, watchpoints, tracepoints or catchpoints\." \
+    "info break shows no breakpoints, watchpoints, tracepoints or catchpoints"
diff --git a/gdb/testsuite/gdb.base/hbreak2.exp b/gdb/testsuite/gdb.base/hbreak2.exp
index aecf613..3b34fef 100644
--- a/gdb/testsuite/gdb.base/hbreak2.exp
+++ b/gdb/testsuite/gdb.base/hbreak2.exp
@@ -228,7 +228,7 @@ gdb_test "continue" \
     "continue to hardware breakpoint at }"
 
 #
-# Delete all breakpoints so we can start over, course this can be a test too.
+# Delete all breakpoints, watchpoints, tracepoints and catchpoints so we can start over, course this can be a test too.
 #
 delete_breakpoints
 
diff --git a/gdb/testsuite/gdb.base/help.exp b/gdb/testsuite/gdb.base/help.exp
index 74da29e..dfb1e3d 100644
--- a/gdb/testsuite/gdb.base/help.exp
+++ b/gdb/testsuite/gdb.base/help.exp
@@ -89,7 +89,7 @@ set expected_help_delete {
     "Delete all or some breakpoints\.\[\r\n\]+"
     "Usage: delete \\\[BREAKPOINTNUM\\\]...\[\r\n\]+"
     "Arguments are breakpoint numbers with spaces in between\.\[\r\n\]+"
-    "To delete all breakpoints, give no argument\.\[\r\n\]+"
+    "To delete all breakpoints, watchpoints, tracepoints and catchpoints, give no argument\.\[\r\n\]+"
     "Also a prefix command for deletion of other GDB objects\.\[\r\n\]+"
 }
 test_prefix_command_help {"d" "delete"} $expected_help_delete "help delete \"d\" abbreviation"
diff --git a/gdb/testsuite/gdb.base/new-ui.exp b/gdb/testsuite/gdb.base/new-ui.exp
index 2f019f6..32d902b 100644
--- a/gdb/testsuite/gdb.base/new-ui.exp
+++ b/gdb/testsuite/gdb.base/new-ui.exp
@@ -130,17 +130,17 @@ proc_with_prefix do_test {} {
     # Verify that we get proper queries on the main UI, but that they are
     # auto-answered on secondary UIs.
     with_spawn_id $gdb_main_spawn_id {
-	gdb_test "delete" "" "delete all breakpoint on main console" \
-		 "Delete all breakpoints. .y or n. $" "n"
+	gdb_test "delete" "" "delete all breakpoints, watchpoints, tracepoints and catchpoints on main console" \
+		 "Delete all breakpoints, watchpoints, tracepoints and catchpoints. .y or n. $" "n"
     }
     with_spawn_id $extra_spawn_id {
 	# Check output in two stages in order to override
 	# gdb_test_multiple's internal "got interactive prompt" fail
 	# that would otherwise match if the expect buffer happens to
 	# fill with partial output that ends in "(y or n) ".
-	set test "delete all breakpoints on extra console"
+	set test "delete all breakpoints, watchpoints, tracepoints and catchpoints on extra console"
 	gdb_test_multiple "delete" $test {
-	    -re "Delete all breakpoints. .y or n. " {
+	    -re "Delete all breakpoints, watchpoints, tracepoints and catchpoints. .y or n. " {
 		gdb_test "" \
 		    ".answered Y; input not from terminal." \
 		    $test
diff --git a/gdb/testsuite/gdb.base/save-bp.exp b/gdb/testsuite/gdb.base/save-bp.exp
index 39bd692..d2649d8 100644
--- a/gdb/testsuite/gdb.base/save-bp.exp
+++ b/gdb/testsuite/gdb.base/save-bp.exp
@@ -22,8 +22,8 @@ if { [prepare_for_testing "failed to prepare" ${testfile} $srcfile] } {
 if ![runto_main] {
     return -1
 }
-# Delete all breakpoints so that the "runto_main" breakpoint above
-# does not interfere with our testing.
+# Delete all breakpoints, watchpoints, tracepoints and catchpoints so that
+# the "runto_main" breakpoint above does not interfere with our testing.
 delete_breakpoints
 
 # Insert a bunch of breakpoints... The goal is to create breakpoints
@@ -64,8 +64,8 @@ clean_restart $testfile
 if ![runto_main] {
     return -1
 }
-# Delete all breakpoints so that the "runto_main" breakpoint above
-# does not interfere with our testing.
+# Delete all breakpoints, watchpoints, tracepoints and catchpoints so that
+# the "runto_main" breakpoint above does not interfere with our testing.
 delete_breakpoints
 
 # ... and restore the breakpoints.
diff --git a/gdb/testsuite/gdb.base/sepdebug.exp b/gdb/testsuite/gdb.base/sepdebug.exp
index 20a7f34..5ee9e6f 100644
--- a/gdb/testsuite/gdb.base/sepdebug.exp
+++ b/gdb/testsuite/gdb.base/sepdebug.exp
@@ -219,7 +219,7 @@ gdb_test "step" \
     "step onto breakpoint"
 
 #
-# delete all breakpoints so we can start over, course this can be a test too
+# delete all breakpoints, watchpoints, tracepoints and catchpoints so we can start over, course this can be a test too
 #
 delete_breakpoints
 
diff --git a/gdb/testsuite/gdb.base/server-del-break.exp b/gdb/testsuite/gdb.base/server-del-break.exp
index 9a8b6f8..2200702 100644
--- a/gdb/testsuite/gdb.base/server-del-break.exp
+++ b/gdb/testsuite/gdb.base/server-del-break.exp
@@ -29,10 +29,11 @@ gdb_test "break -q main" \
 
 # Try deleting all breakpoints, using the "server" command prefix.
 # Prefixing the "delete breakpoints" with "server" should turn
-# the confirmation request ("Delete all breakpoints? (y or n)")
+# the confirmation request
+# ("Delete all breakpoints, watchpoints, tracepoints and catchpoints? (y or n)")
 # off, hence we expect the operation to be executed without output.
 gdb_test_no_output "server delete breakpoints"
 
 # Double-check that the all breakpoints were in fact deleted.
 gdb_test "info break" \
-         "No breakpoints or watchpoints."
+         "No breakpoints, watchpoints, tracepoints or catchpoints."
diff --git a/gdb/testsuite/gdb.cp/annota2.exp b/gdb/testsuite/gdb.cp/annota2.exp
index 681235b..cbfc30d 100644
--- a/gdb/testsuite/gdb.cp/annota2.exp
+++ b/gdb/testsuite/gdb.cp/annota2.exp
@@ -149,11 +149,11 @@ gdb_test_multiple "continue" "continue until exit" {
 }
 
 #
-# delete all breakpoints
+# delete all breakpoints, watchpoints, tracepoints and catchpoints
 #
 send_gdb "delete\n"
 gdb_expect {
-  -re ".*Delete all breakpoints. \\(y or n\\) \r\n\032\032query.*$" {
+  -re ".*Delete all breakpoints, watchpoints, tracepoints and catchpoints. \\(y or n\\) \r\n\032\032query.*$" {
            send_gdb "y\n"
            gdb_expect {
 	     -re "\r\n\032\032post-query\r\n${breakpoints_invalid}$gdb_prompt$" { pass "delete bps" }
diff --git a/gdb/testsuite/gdb.cp/annota3.exp b/gdb/testsuite/gdb.cp/annota3.exp
index 0914b7c..8e45f6c 100644
--- a/gdb/testsuite/gdb.cp/annota3.exp
+++ b/gdb/testsuite/gdb.cp/annota3.exp
@@ -107,11 +107,11 @@ gdb_expect_list "continue to exit" "$gdb_prompt$" [concat {
 }]
 
 #
-# delete all breakpoints
+# delete all breakpoints, watchpoints, tracepoints and catchpoints
 #
 send_gdb "delete\n"
 gdb_expect {
-  -re ".*Delete all breakpoints. \\(y or n\\) \r\n\032\032query.*$" {
+  -re ".*Delete all breakpoints, watchpoints, tracepoints and catchpoints. \\(y or n\\) \r\n\032\032query.*$" {
            send_gdb "y\n"
            gdb_expect {
 	     -re "\r\n\032\032post-query\r\n$gdb_prompt$" { pass "delete bps" }
diff --git a/gdb/testsuite/gdb.cp/ovldbreak.exp b/gdb/testsuite/gdb.cp/ovldbreak.exp
index 681edf2..500e505 100644
--- a/gdb/testsuite/gdb.cp/ovldbreak.exp
+++ b/gdb/testsuite/gdb.cp/ovldbreak.exp
@@ -261,23 +261,23 @@ gdb_test "info break" $bptable "breakpoint info (after cancel)"
 
 send_gdb "delete breakpoints\n"
 gdb_expect {
-    -re "Delete all breakpoints.* $" {
+    -re "Delete all breakpoints, watchpoints, tracepoints and catchpoints.* $" {
         send_gdb "y\n"
         gdb_expect {
             -re ".*$gdb_prompt $" {
-                pass "delete all breakpoints"
+                pass "delete all breakpoints, watchpoints, tracepoints and catchpoints"
             }
             timeout {
-                fail "delete all breakpoints (timeout)"
+                fail "delete all breakpoints, watchpoints, tracepoints and catchpoints (timeout)"
             }
         }
     }
     timeout {
-        fail "delete all breakpoints (timeout)"
+        fail "delete all breakpoints, watchpoints, tracepoints and catchpoints (timeout)"
     }
 }
 
-gdb_test "info breakpoints" "No breakpoints or watchpoints." "breakpoint info (after delete)"
+gdb_test "info breakpoints" "No breakpoints, watchpoints, tracepoints or catchpoints." "breakpoint info (after delete)"
 
 
 
diff --git a/gdb/testsuite/gdb.cp/save-bp-qualified.exp b/gdb/testsuite/gdb.cp/save-bp-qualified.exp
index 857e9b8..ff8915f 100644
--- a/gdb/testsuite/gdb.cp/save-bp-qualified.exp
+++ b/gdb/testsuite/gdb.cp/save-bp-qualified.exp
@@ -29,8 +29,8 @@ proc restart {} {
     if ![runto_main] {
 	return 0
     }
-    # Delete all breakpoints so that the "runto_main" breakpoint above
-    # does not interfere with our testing.
+    # Delete all breakpoints, watchpoints, tracepoints and catchpoints so that
+    # the "runto_main" breakpoint above does not interfere with our testing.
     delete_breakpoints
 
     return 1
diff --git a/gdb/testsuite/gdb.dwarf2/dw2-inline-header-1.exp b/gdb/testsuite/gdb.dwarf2/dw2-inline-header-1.exp
index 19f06ad..7b5c0a6 100644
--- a/gdb/testsuite/gdb.dwarf2/dw2-inline-header-1.exp
+++ b/gdb/testsuite/gdb.dwarf2/dw2-inline-header-1.exp
@@ -167,8 +167,8 @@ proc do_test { start_label func_name tag } {
 	return -1
     }
 
-    # Delete all breakpoints so that the output of "info breakpoints"
-    # below will only contain a single breakpoint.
+    # Delete all breakpoints, watchpoints, tracepoints and catchpoints so that
+    # the output of "info breakpoints" below will only contain a single breakpoint.
     delete_breakpoints
 
     # Place a breakpoint within the function in the header file.
diff --git a/gdb/testsuite/gdb.dwarf2/dw2-inline-header-2.exp b/gdb/testsuite/gdb.dwarf2/dw2-inline-header-2.exp
index 198f355..6e78af0 100644
--- a/gdb/testsuite/gdb.dwarf2/dw2-inline-header-2.exp
+++ b/gdb/testsuite/gdb.dwarf2/dw2-inline-header-2.exp
@@ -155,8 +155,8 @@ if ![runto_main] {
     return -1
 }
 
-# Delete all breakpoints so that the output of "info breakpoints"
-# below will only contain a single breakpoint.
+# Delete all breakpoints, watchpoints, tracepoints and catchpoints so that
+# the output of "info breakpoints" below will only contain a single breakpoint.
 delete_breakpoints
 
 # Place a breakpoint within the function in the header file.
@@ -169,8 +169,8 @@ gdb_test "info breakpoints" \
     ".* in callee at \[^\r\n\]+${srcfile4}:22\\y.*" \
     "check for breakpoint at ${srcfile4}"
 
-# Delete all breakpoints so that the output of "info breakpoints"
-# below will only contain a single breakpoint.
+# Delete all breakpoints, watchpoints, tracepoints and catchpoints so that
+# the output of "info breakpoints" below will only contain a single breakpoint.
 delete_breakpoints
 
 # Place a breakpoint within the function in the header file.
diff --git a/gdb/testsuite/gdb.dwarf2/dw2-inline-header-3.exp b/gdb/testsuite/gdb.dwarf2/dw2-inline-header-3.exp
index 68261aa..7ecb3e0 100644
--- a/gdb/testsuite/gdb.dwarf2/dw2-inline-header-3.exp
+++ b/gdb/testsuite/gdb.dwarf2/dw2-inline-header-3.exp
@@ -144,8 +144,8 @@ if ![runto_main] {
     return -1
 }
 
-# Delete all breakpoints so that the output of "info breakpoints"
-# below will only contain a single breakpoint.
+# Delete all breakpoints, watchpoints, tracepoints and catchpoints so that
+# the output of "info breakpoints" below will only contain a single breakpoint.
 delete_breakpoints
 
 # Place a breakpoint within the function in the header file.
diff --git a/gdb/testsuite/gdb.dwarf2/dw2-inline-small-func.exp b/gdb/testsuite/gdb.dwarf2/dw2-inline-small-func.exp
index 05286ad..965417d 100644
--- a/gdb/testsuite/gdb.dwarf2/dw2-inline-small-func.exp
+++ b/gdb/testsuite/gdb.dwarf2/dw2-inline-small-func.exp
@@ -129,8 +129,8 @@ if ![runto_main] {
     return -1
 }
 
-# Delete all breakpoints so that the output of "info breakpoints"
-# below will only contain a single breakpoint.
+# Delete all breakpoints, watchpoints, tracepoints and catchpoints so that
+# the output of "info breakpoints" below will only contain a single breakpoint.
 delete_breakpoints
 
 # Place a breakpoint within the function in the header file.
diff --git a/gdb/testsuite/gdb.guile/scm-breakpoint.exp b/gdb/testsuite/gdb.guile/scm-breakpoint.exp
index 37607b7..94d40e1 100644
--- a/gdb/testsuite/gdb.guile/scm-breakpoint.exp
+++ b/gdb/testsuite/gdb.guile/scm-breakpoint.exp
@@ -225,7 +225,7 @@ proc_with_prefix test_bkpt_invisible { } {
     gdb_test "guile (print (breakpoint-visible? ibp))" \
 	"= #f" "check breakpoint invisibility"
     gdb_test "info breakpoints" \
-	"No breakpoints or watchpoints.*" \
+	"No breakpoints, watchpoints, tracepoints or catchpoints.*" \
 	"check info breakpoints does not show invisible breakpoints"
     gdb_test "maint info breakpoints" \
 	"scm-breakpoint\.c:$ibp_location.*" \
@@ -288,7 +288,7 @@ proc_with_prefix test_bkpt_internal { } {
     gdb_scm_test_silent_cmd "guile (register-breakpoint! wp1)" \
 	"register wp1"
     gdb_test "info breakpoints" \
-	"No breakpoints or watchpoints.*" \
+	"No breakpoints, watchpoints, tracepoints or catchpoints.*" \
 	"check info breakpoints does not show invisible watchpoint"
     gdb_test "maint info breakpoints" \
 	".*watchpoint.*result.*" \
@@ -512,7 +512,7 @@ proc_with_prefix test_bkpt_temporary { } {
 	".*$srcfile:$ibp_location.*"
     gdb_test "guile (print (breakpoint-temporary? ibp))" "Invalid object: <gdb:breakpoint>.*" \
 	"check temporary breakpoint is deleted after being hit"
-    gdb_test "info breakpoints" "No breakpoints or watchpoints.*" \
+    gdb_test "info breakpoints" "No breakpoints, watchpoints, tracepoints or catchpoints.*" \
 	"check info breakpoints shows temporary breakpoint is deleted"
 }
 
diff --git a/gdb/testsuite/gdb.linespec/cpexplicit.exp b/gdb/testsuite/gdb.linespec/cpexplicit.exp
index 038c09f..d10d21f 100644
--- a/gdb/testsuite/gdb.linespec/cpexplicit.exp
+++ b/gdb/testsuite/gdb.linespec/cpexplicit.exp
@@ -34,8 +34,8 @@ namespace eval $testfile {
     # at LOCATION.
     proc test_breakpoint {linespec location} {
 
-	# Delete all breakpoints, set a new breakpoint at LINESPEC,
-	# and attempt to run to it.
+	# Delete all breakpoints, watchpoints, tracepoints and catchpoints,
+	# set a new breakpoint at LINESPEC, and attempt to run to it.
 	delete_breakpoints
 	gdb_breakpoint $linespec
 	gdb_continue_to_breakpoint $linespec $location
diff --git a/gdb/testsuite/gdb.linespec/explicit.exp b/gdb/testsuite/gdb.linespec/explicit.exp
index 9064c13..4bbc347 100644
--- a/gdb/testsuite/gdb.linespec/explicit.exp
+++ b/gdb/testsuite/gdb.linespec/explicit.exp
@@ -33,8 +33,8 @@ namespace eval $testfile {
     proc test_breakpoint {linespec location} {
 
 	set testname "set breakpoint at \"$linespec\""
-	# Delete all breakpoints, set a new breakpoint at LINESPEC,
-	# and attempt to run to it.
+	# Delete all breakpoints, watchpoints, tracepoints and catchpoints,
+	# set a new breakpoint at LINESPEC,  and attempt to run to it.
 	delete_breakpoints
 	if {[gdb_breakpoint $linespec]} {
 	    pass $testname
diff --git a/gdb/testsuite/gdb.mi/mi-return.exp b/gdb/testsuite/gdb.mi/mi-return.exp
index 393c3a7..ed972b7 100644
--- a/gdb/testsuite/gdb.mi/mi-return.exp
+++ b/gdb/testsuite/gdb.mi/mi-return.exp
@@ -57,7 +57,7 @@ mi_runto callee4
 
 mi_gdb_test "205-break-delete" \
 	"205\\^done.*" \
-	"delete all breakpoints"
+	"delete all breakpoints, watchpoints, tracepoints and catchpoints"
 
 test_return_simple
 
diff --git a/gdb/testsuite/gdb.opt/inline-small-func.exp b/gdb/testsuite/gdb.opt/inline-small-func.exp
index 3be1955..1c95823 100644
--- a/gdb/testsuite/gdb.opt/inline-small-func.exp
+++ b/gdb/testsuite/gdb.opt/inline-small-func.exp
@@ -45,8 +45,8 @@ if ![runto_main] {
     return -1
 }
 
-# Delete all breakpoints so that the output of "info breakpoints"
-# below will only contain a single breakpoint.
+# Delete all breakpoints, watchpoints, tracepoints and catchpoints so that
+# the output of "info breakpoints" below will only contain a single breakpoint.
 delete_breakpoints
 
 # Place a breakpoint within the function in the header file.
diff --git a/gdb/testsuite/gdb.python/py-breakpoint.exp b/gdb/testsuite/gdb.python/py-breakpoint.exp
index 58b1af3..f25d112 100644
--- a/gdb/testsuite/gdb.python/py-breakpoint.exp
+++ b/gdb/testsuite/gdb.python/py-breakpoint.exp
@@ -241,7 +241,7 @@ proc_with_prefix test_bkpt_invisible { } {
 	"py-breakpoint\.c:$ibp_location*" "Check breakpoint location 2"
     gdb_test "python print (ilist\[0\].visible)" \
 	"False" "Check breakpoint visibility 2"
-    gdb_test "info breakpoints" "No breakpoints or watchpoints.*" \
+    gdb_test "info breakpoints" "No breakpoints, watchpoints, tracepoints or catchpoints.*" \
 	"Check info breakpoints does not show invisible breakpoints"
     gdb_test "maint info breakpoints" \
 	"py-breakpoint\.c:$ibp_location.*" \
@@ -313,7 +313,7 @@ proc_with_prefix test_bkpt_internal { } {
     gdb_py_test_silent_cmd  "python wp1 = gdb.Breakpoint (\"result\", type=gdb.BP_WATCHPOINT, wp_class=gdb.WP_WRITE, internal=True )" \
 	"Set watchpoint" 0
     gdb_test "info breakpoints" \
-	"No breakpoints or watchpoints.*" \
+	"No breakpoints, watchpoints, tracepoints or catchpoints.*" \
 	"Check info breakpoints does not show invisible breakpoints"
     gdb_test "maint info breakpoints" \
 	".*watchpoint.*result.*" \
@@ -475,7 +475,7 @@ proc_with_prefix test_bkpt_temporary { } {
 	"Check temporary stop callback executed before deletion."
     gdb_test "python print (ibp.temporary)" "RuntimeError: Breakpoint 2 is invalid.*" \
 	"Check temporary breakpoint is deleted after being hit"
-    gdb_test "info breakpoints" "No breakpoints or watchpoints.*" \
+    gdb_test "info breakpoints" "No breakpoints, watchpoints, tracepoints or catchpoints.*" \
 	"Check info breakpoints shows temporary breakpoint is deleted"
 }
 
@@ -484,7 +484,7 @@ proc_with_prefix test_bkpt_temporary { } {
 proc_with_prefix test_bkpt_address {} {
     global gdb_prompt decimal srcfile
 
-    # Delete all breakpoints
+    # Delete all breakpoints, watchpoints, tracepoints and catchpoints
     delete_breakpoints
 
     gdb_test "python gdb.Breakpoint(\"*main\")" \
diff --git a/gdb/testsuite/gdb.reverse/ppc_record_test_isa_3_1.exp b/gdb/testsuite/gdb.reverse/ppc_record_test_isa_3_1.exp
index 8cecb06..016b17d 100644
--- a/gdb/testsuite/gdb.reverse/ppc_record_test_isa_3_1.exp
+++ b/gdb/testsuite/gdb.reverse/ppc_record_test_isa_3_1.exp
@@ -108,7 +108,7 @@ gdb_test_no_output "set exec-direction forward" "start forward test3"
 gdb_test "record stop" ".*Process record is stopped.*" "stopped recording 2"
 set test_del_bkpts "delete breakpoints, answer prompt 2"
 
-# Delete all breakpoints and catchpoints.
+# Delete all breakpoints, watchpoints, tracepoints and catchpoints.
 delete_breakpoints
 
 gdb_test_no_output "record" "start recording test2"
diff --git a/gdb/testsuite/gdb.threads/continue-pending-after-query.exp b/gdb/testsuite/gdb.threads/continue-pending-after-query.exp
index a0a7915..13f2612 100644
--- a/gdb/testsuite/gdb.threads/continue-pending-after-query.exp
+++ b/gdb/testsuite/gdb.threads/continue-pending-after-query.exp
@@ -67,7 +67,7 @@ proc test {} {
     set test "delete breakpoints, answer prompt"
     set saw_prompt 0
     gdb_test_multiple "delete breakpoints" $test {
-	-re "Delete all breakpoints.*y or n.*$" {
+	-re "Delete all breakpoints, watchpoints, tracepoints and catchpoints.*y or n.*$" {
 	    set saw_prompt 1
 	    send_gdb "y\n"
 	    exp_continue
diff --git a/gdb/testsuite/gdb.threads/continue-pending-status.exp b/gdb/testsuite/gdb.threads/continue-pending-status.exp
index 9814fa2..a24db80 100644
--- a/gdb/testsuite/gdb.threads/continue-pending-status.exp
+++ b/gdb/testsuite/gdb.threads/continue-pending-status.exp
@@ -92,9 +92,10 @@ for {set i 0} {$i < $attempts} {incr i} {
 	    "Switching to thread $thread .*" \
 	    "switch to non-event thread"
 
-	# Delete all breakpoints so that continuing doesn't switch
-	# back to the event thread to do a step-over, which would mask
-	# away the original bug, which depended on the event thread
+	# Delete all breakpoints, watchpoints, tracepoints and catchpoints
+	# so that continuing doesn't switch back to the event
+	# thread to do a step-over, which would mask away the
+	# original bug, which depended on the event thread
 	# still having TARGET_STOPPED_BY_SW_BREAKPOINT stop_reason.
 	delete_breakpoints
 
diff --git a/gdb/testsuite/gdb.threads/thread_check.exp b/gdb/testsuite/gdb.threads/thread_check.exp
index 61ec078..b2e3ad2 100644
--- a/gdb/testsuite/gdb.threads/thread_check.exp
+++ b/gdb/testsuite/gdb.threads/thread_check.exp
@@ -28,7 +28,7 @@
 # - create 2 breakpoints #1 main() #2 tf() (the thread function)
 # - run gdb till #1 main() breakpoint is reached
 # - continue to breakpoint #2 tf()
-# - delete all breakpoints 
+# - delete all breakpoints, watchpoints, tracepoints and catchpoints
 # - exit gdb.
 
 
@@ -71,7 +71,7 @@ gdb_test "backtrace" \
 
 
 #
-# delete all breakpoints
+# delete all breakpoints, watchpoints, tracepoints and catchpoints
 #
 delete_breakpoints
 
diff --git a/gdb/testsuite/lib/gdb.exp b/gdb/testsuite/lib/gdb.exp
index 97841ca..a8ea26f 100644
--- a/gdb/testsuite/lib/gdb.exp
+++ b/gdb/testsuite/lib/gdb.exp
@@ -305,10 +305,10 @@ proc delete_breakpoints {} {
     #
     set timeout 100
 
-    set msg "delete all breakpoints in delete_breakpoints"
+    set msg "delete all breakpoints, watchpoints, tracepoints and catchpoints in delete_breakpoints"
     set deleted 0
     gdb_test_multiple "delete breakpoints" "$msg" {
-	-re "Delete all breakpoints.*y or n.*$" {
+	-re "Delete all breakpoints, watchpoints, tracepoints and catchpoints.*y or n.*$" {
 	    send_gdb "y\n" answer
 	    exp_continue
 	}
@@ -322,7 +322,7 @@ proc delete_breakpoints {} {
 	set deleted 0
 	set msg "info breakpoints"
 	gdb_test_multiple $msg $msg {
-	    -re "No breakpoints or watchpoints..*$gdb_prompt $" {
+	    -re "No breakpoints, watchpoints, tracepoints or catchpoints..*$gdb_prompt $" {
 		set deleted 1
 	    }
 	    -re "$gdb_prompt $" {
diff --git a/gdb/testsuite/lib/mi-support.exp b/gdb/testsuite/lib/mi-support.exp
index e578a7e..e98b937 100644
--- a/gdb/testsuite/lib/mi-support.exp
+++ b/gdb/testsuite/lib/mi-support.exp
@@ -364,25 +364,25 @@ proc mi_delete_breakpoints {} {
 # FIXME: The mi operation won't accept a prompt back and will use the 'all' arg
     send_gdb "102-break-delete\n"
     gdb_expect 30 {
-	 -re "Delete all breakpoints.*y or n.*$" {
+	 -re "Delete all breakpoints, watchpoints, tracepoints and catchpoints.*y or n.*$" {
 	    send_gdb "y\n"
 	    exp_continue
 	 }
 	 -re "102-break-delete\r\n102\\\^done\r\n$mi_gdb_prompt$" {
 	     # This happens if there were no breakpoints
 	 }
-	 timeout { perror "Delete all breakpoints in mi_delete_breakpoints (timeout)" ; return }
+	 timeout { perror "Delete all breakpoints, watchpoints, tracepoints and catchpoints in mi_delete_breakpoints (timeout)" ; return }
     }
 
-# The correct output is not "No breakpoints or watchpoints." but an
+# The correct output is not "No breakpoints, watchpoints, tracepoints or catchpoints." but an
 # empty BreakpointTable. Also, a query is not acceptable with mi.
     send_gdb "103-break-list\n"
     gdb_expect 30 {
 	 -re "103-break-list\r\n103\\\^done,BreakpointTable=\{\}\r\n$mi_gdb_prompt$" {}
 	 -re "103-break-list\r\n103\\\^done,BreakpointTable=\{nr_rows=\".\",nr_cols=\".\",hdr=\\\[\{width=\".*\",alignment=\".*\",col_name=\"number\",colhdr=\"Num\"\}.*colhdr=\"Type\".*colhdr=\"Disp\".*colhdr=\"Enb\".*colhdr=\"Address\".*colhdr=\"What\".*\\\],body=\\\[\\\]\}\r\n$mi_gdb_prompt$" {}
-	 -re "103-break-list\r\n103\\\^doneNo breakpoints or watchpoints.\r\n\r\n$mi_gdb_prompt$" {warning "Unexpected console text received"}
+	 -re "103-break-list\r\n103\\\^doneNo breakpoints, watchpoints, tracepoints or catchpoints.\r\n\r\n$mi_gdb_prompt$" {warning "Unexpected console text received"}
 	 -re "$mi_gdb_prompt$" { perror "Breakpoints not deleted" ; return }
-	 -re "Delete all breakpoints.*or n.*$" {
+	 -re "Delete all breakpoints, watchpoints, tracepoints and catchpoints.*or n.*$" {
 	    warning "Unexpected prompt for breakpoints deletion"
 	    send_gdb "y\n"
 	    exp_continue
diff --git a/gdbserver/mem-break.cc b/gdbserver/mem-break.cc
index 72ce8c8..d363c4b 100644
--- a/gdbserver/mem-break.cc
+++ b/gdbserver/mem-break.cc
@@ -1989,7 +1989,8 @@ check_mem_write (CORE_ADDR mem_addr, unsigned char *buf,
     delete_disabled_breakpoints ();
 }
 
-/* Delete all breakpoints, and un-insert them from the inferior.  */
+/* Delete all breakpoints, watchpoints, tracepoints and catchpoints,
+   and un-insert them from the inferior.  */
 
 void
 delete_all_breakpoints (void)
@@ -2011,8 +2012,8 @@ mark_breakpoints_out (struct process_info *proc)
     raw_bp->inserted = 0;
 }
 
-/* Release all breakpoints, but do not try to un-insert them from the
-   inferior.  */
+/* Delete all breakpoints, watchpoints, tracepoints and catchpoints,
+   but do not try to un-insert them from the inferior.  */
 
 void
 free_all_breakpoints (struct process_info *proc)
diff --git a/gdbserver/mem-break.h b/gdbserver/mem-break.h
index dc8742f..2dc271f 100644
--- a/gdbserver/mem-break.h
+++ b/gdbserver/mem-break.h
@@ -216,7 +216,8 @@ void check_mem_read (CORE_ADDR mem_addr, unsigned char *buf, int mem_len);
 void check_mem_write (CORE_ADDR mem_addr,
 		      unsigned char *buf, const unsigned char *myaddr, int mem_len);
 
-/* Delete all breakpoints.  */
+/* Delete all breakpoints, watchpoints, tracepoints and catchpoints,
+   and un-insert them from the inferior.  */
 
 void delete_all_breakpoints (void);
 
@@ -224,8 +225,8 @@ void delete_all_breakpoints (void);
 
 void mark_breakpoints_out (struct process_info *proc);
 
-/* Delete all breakpoints, but do not try to un-insert them from the
-   inferior.  */
+/* Delete all breakpoints, watchpoints, tracepoints and catchpoints,
+   but do not try to un-insert them from the inferior.  */
 
 void free_all_breakpoints (struct process_info *proc);
 
-- 
2.1.0


^ permalink raw reply	[flat|nested] 4+ messages in thread

* Re: [PATCH v2] gdb: Modify the output of "info breakpoints" and "delete breakpoints"
  2022-05-19  9:16 [PATCH v2] gdb: Modify the output of "info breakpoints" and "delete breakpoints" Tiezhu Yang
@ 2022-05-19 13:08 ` Bruno Larsen
  2024-02-18  2:06   ` Tiezhu Yang
  0 siblings, 1 reply; 4+ messages in thread
From: Bruno Larsen @ 2022-05-19 13:08 UTC (permalink / raw)
  To: Tiezhu Yang, gdb-patches


On 5/19/22 06:16, Tiezhu Yang wrote:
> The output of "info breakpoints" includes breakpoint, watchpoint,
> tracepoint and catchpoint, after delete all breakpoints, it should
> show tracepoint and catchpoint in the output of "info breakpoints"
> to report empty list.
> 
> It should also change the output of "delete breakpoints" to make it
> clear that watchpoints, tracepoints and catchpoints are also being
> deleted. This is suggested by Bruno Larsen, thank you.
> 
> $ make check-gdb TESTS="gdb.base/access-mem-running.exp"
> $ gdb/gdb gdb/testsuite/outputs/gdb.base/access-mem-running/access-mem-running
> [...]
> (gdb) break main
> Breakpoint 1 at 0x12000073c: file /home/loongson/gdb.git/gdb/testsuite/gdb.base/access-mem-running.c, line 32.
> (gdb) watch global_counter
> Hardware watchpoint 2: global_counter
> (gdb) trace maybe_stop_here
> Tracepoint 3 at 0x12000071c: file /home/loongson/gdb.git/gdb/testsuite/gdb.base/access-mem-running.c, line 27.
> (gdb) catch fork
> Catchpoint 4 (fork)
> (gdb) info breakpoints
> Num     Type           Disp Enb Address            What
> 1       breakpoint     keep y   0x000000012000073c in main at /home/loongson/gdb.git/gdb/testsuite/gdb.base/access-mem-running.c:32
> 2       hw watchpoint  keep y                      global_counter
> 3       tracepoint     keep y   0x000000012000071c in maybe_stop_here at /home/loongson/gdb.git/gdb/testsuite/gdb.base/access-mem-running.c:27
> 	not installed on target
> 4       catchpoint     keep y                      fork
> 
> Without this patch:
> 
> (gdb) delete breakpoints
> Delete all breakpoints? (y or n) y
> (gdb) info breakpoints
> No breakpoints or watchpoints.
> (gdb) info breakpoints 3
> No breakpoint or watchpoint matching '3'.
> 
> With this patch:
> 
> (gdb) delete breakpoints
> Delete all breakpoints, watchpoints, tracepoints and catchpoints? (y or n) y
> (gdb) info breakpoints
> No breakpoints, watchpoints, tracepoints or catchpoints.
> (gdb) info breakpoints 3
> No breakpoint, watchpoint, tracepoint or catchpoint matching '3'.
> 

Hey Tiezhu,

Thanks for this change, I'm fine with this patch. However, I can't approve patches to be pushed. Let's hope a maintainer shows up soon :-)

Cheers!
Bruno Larsen
> Signed-off-by: Tiezhu Yang <yangtiezhu@loongson.cn>
> ---
>   gdb/breakpoint.c                                        | 16 ++++++++--------
>   gdb/doc/gdb.texinfo                                     | 17 +++++++++--------
>   gdb/ppc-linux-nat.c                                     |  2 +-
>   gdb/testsuite/gdb.arch/i386-dr3-watch.exp               |  2 +-
>   gdb/testsuite/gdb.base/annota-input-while-running.exp   |  2 +-
>   gdb/testsuite/gdb.base/break-unload-file.exp            |  4 ++--
>   gdb/testsuite/gdb.base/break.exp                        | 12 ++++++------
>   gdb/testsuite/gdb.base/breakpoint-in-ro-region.exp      |  2 +-
>   .../gdb.base/continue-after-aborted-step-over.exp       |  2 +-
>   gdb/testsuite/gdb.base/default.exp                      |  2 +-
>   gdb/testsuite/gdb.base/del.exp                          |  4 ++--
>   gdb/testsuite/gdb.base/ena-dis-br.exp                   |  2 +-
>   gdb/testsuite/gdb.base/foll-fork.exp                    |  6 +++---
>   gdb/testsuite/gdb.base/hbreak-unmapped.exp              |  4 ++--
>   gdb/testsuite/gdb.base/hbreak2.exp                      |  2 +-
>   gdb/testsuite/gdb.base/help.exp                         |  2 +-
>   gdb/testsuite/gdb.base/new-ui.exp                       |  8 ++++----
>   gdb/testsuite/gdb.base/save-bp.exp                      |  8 ++++----
>   gdb/testsuite/gdb.base/sepdebug.exp                     |  2 +-
>   gdb/testsuite/gdb.base/server-del-break.exp             |  5 +++--
>   gdb/testsuite/gdb.cp/annota2.exp                        |  4 ++--
>   gdb/testsuite/gdb.cp/annota3.exp                        |  4 ++--
>   gdb/testsuite/gdb.cp/ovldbreak.exp                      | 10 +++++-----
>   gdb/testsuite/gdb.cp/save-bp-qualified.exp              |  4 ++--
>   gdb/testsuite/gdb.dwarf2/dw2-inline-header-1.exp        |  4 ++--
>   gdb/testsuite/gdb.dwarf2/dw2-inline-header-2.exp        |  8 ++++----
>   gdb/testsuite/gdb.dwarf2/dw2-inline-header-3.exp        |  4 ++--
>   gdb/testsuite/gdb.dwarf2/dw2-inline-small-func.exp      |  4 ++--
>   gdb/testsuite/gdb.guile/scm-breakpoint.exp              |  6 +++---
>   gdb/testsuite/gdb.linespec/cpexplicit.exp               |  4 ++--
>   gdb/testsuite/gdb.linespec/explicit.exp                 |  4 ++--
>   gdb/testsuite/gdb.mi/mi-return.exp                      |  2 +-
>   gdb/testsuite/gdb.opt/inline-small-func.exp             |  4 ++--
>   gdb/testsuite/gdb.python/py-breakpoint.exp              |  8 ++++----
>   gdb/testsuite/gdb.reverse/ppc_record_test_isa_3_1.exp   |  2 +-
>   .../gdb.threads/continue-pending-after-query.exp        |  2 +-
>   gdb/testsuite/gdb.threads/continue-pending-status.exp   |  7 ++++---
>   gdb/testsuite/gdb.threads/thread_check.exp              |  4 ++--
>   gdb/testsuite/lib/gdb.exp                               |  6 +++---
>   gdb/testsuite/lib/mi-support.exp                        | 10 +++++-----
>   gdbserver/mem-break.cc                                  |  7 ++++---
>   gdbserver/mem-break.h                                   |  7 ++++---
>   42 files changed, 112 insertions(+), 107 deletions(-)
> 
> diff --git a/gdb/breakpoint.c b/gdb/breakpoint.c
> index 9abc144..52769e0 100644
> --- a/gdb/breakpoint.c
> +++ b/gdb/breakpoint.c
> @@ -6741,9 +6741,9 @@ breakpoint_1 (const char *bp_num_list, bool show_internal,
>         if (!filter)
>   	{
>   	  if (bp_num_list == NULL || *bp_num_list == '\0')
> -	    uiout->message ("No breakpoints or watchpoints.\n");
> +	    uiout->message ("No breakpoints, watchpoints, tracepoints or catchpoints.\n");
>   	  else
> -	    uiout->message ("No breakpoint or watchpoint matching '%s'.\n",
> +	    uiout->message ("No breakpoint, watchpoint, tracepoint or catchpoint matching '%s'.\n",
>   			    bp_num_list);
>   	}
>       }
> @@ -12338,8 +12338,8 @@ delete_command (const char *arg, int from_tty)
>       {
>         int breaks_to_delete = 0;
>   
> -      /* Delete all breakpoints if no argument.  Do not delete
> -	 internal breakpoints, these have to be deleted with an
> +      /* Delete all breakpoints, watchpoints, tracepoints and catchpoints if no argument.
> +	 Do not delete internal breakpoints, these have to be deleted with an
>   	 explicit breakpoint number argument.  */
>         for (breakpoint *b : all_breakpoints ())
>   	if (user_breakpoint_p (b))
> @@ -12350,7 +12350,7 @@ delete_command (const char *arg, int from_tty)
>   
>         /* Ask user only if there are some breakpoints to delete.  */
>         if (!from_tty
> -	  || (breaks_to_delete && query (_("Delete all breakpoints? "))))
> +	  || (breaks_to_delete && query (_("Delete all breakpoints, watchpoints, tracepoints and catchpoints? "))))
>   	for (breakpoint *b : all_breakpoints_safe ())
>   	  if (user_breakpoint_p (b))
>   	    delete_breakpoint (b);
> @@ -13843,7 +13843,7 @@ delete_trace_command (const char *arg, int from_tty)
>       {
>         int breaks_to_delete = 0;
>   
> -      /* Delete all breakpoints if no argument.
> +      /* Delete all tracepoints if no argument.
>   	 Do not delete internal or call-dummy breakpoints, these
>   	 have to be deleted with an explicit breakpoint number
>   	 argument.  */
> @@ -14448,7 +14448,7 @@ This command may be abbreviated \"disable\"."),
>   Delete all or some breakpoints.\n\
>   Usage: delete [BREAKPOINTNUM]...\n\
>   Arguments are breakpoint numbers with spaces in between.\n\
> -To delete all breakpoints, give no argument.\n\
> +To delete all breakpoints, watchpoints, tracepoints and catchpoints, give no argument.\n\
>   \n\
>   Also a prefix command for deletion of other GDB objects."),
>   		      &deletelist, 1, &cmdlist);
> @@ -14459,7 +14459,7 @@ Also a prefix command for deletion of other GDB objects."),
>   Delete all or some breakpoints or auto-display expressions.\n\
>   Usage: delete breakpoints [BREAKPOINTNUM]...\n\
>   Arguments are breakpoint numbers with spaces in between.\n\
> -To delete all breakpoints, give no argument.\n\
> +To delete all breakpoints, watchpoints, tracepoints and catchpoints, give no argument.\n\
>   This command may be abbreviated \"delete\"."),
>   	   &deletelist);
>   
> diff --git a/gdb/doc/gdb.texinfo b/gdb/doc/gdb.texinfo
> index 8cf9786..2c89815 100644
> --- a/gdb/doc/gdb.texinfo
> +++ b/gdb/doc/gdb.texinfo
> @@ -4545,15 +4545,15 @@ optionally be surrounded by spaces.
>   @cindex @code{$_} and @code{info breakpoints}
>   @item info breakpoints @r{[}@var{list}@dots{}@r{]}
>   @itemx info break @r{[}@var{list}@dots{}@r{]}
> -Print a table of all breakpoints, watchpoints, and catchpoints set and
> -not deleted.  Optional argument @var{n} means print information only
> -about the specified breakpoint(s) (or watchpoint(s) or catchpoint(s)).
> +Print a table of all breakpoints, watchpoints, tracepoints and catchpoints set
> +and not deleted.  Optional argument @var{n} means print information only
> +about the specified breakpoint(s) (or watchpoint(s) or tracepoint(s) or catchpoint(s)).
>   For each breakpoint, following columns are printed:
>   
>   @table @emph
>   @item Breakpoint Numbers
>   @item Type
> -Breakpoint, watchpoint, or catchpoint.
> +Breakpoint, watchpoint, tracepoint or catchpoint.
>   @item Disposition
>   Whether the breakpoint is marked to be disabled or deleted when hit.
>   @item Enabled or Disabled
> @@ -5462,10 +5462,11 @@ Delete any breakpoints set at or within the code of the specified
>   @kindex delete
>   @kindex d @r{(@code{delete})}
>   @item delete @r{[}breakpoints@r{]} @r{[}@var{list}@dots{}@r{]}
> -Delete the breakpoints, watchpoints, or catchpoints of the breakpoint
> -list specified as argument.  If no argument is specified, delete all
> -breakpoints (@value{GDBN} asks confirmation, unless you have @code{set
> -confirm off}).  You can abbreviate this command as @code{d}.
> +Delete all breakpoints, watchpoints, tracepoints and catchpoints
> +of the breakpoint list specified as argument.  If no argument is specified,
> +delete all breakpoints, watchpoints, tracepoints and catchpoints
> +(@value{GDBN} asks confirmation, unless you have @code{set confirm off}).
> +You can abbreviate this command as @code{d}.
>   @end table
>   
>   @node Disabling
> diff --git a/gdb/ppc-linux-nat.c b/gdb/ppc-linux-nat.c
> index 588dd7d..7414d7c 100644
> --- a/gdb/ppc-linux-nat.c
> +++ b/gdb/ppc-linux-nat.c
> @@ -2360,7 +2360,7 @@ ppc_linux_nat_target::can_use_watchpoint_cond_accel (void)
>   
>     auto process_it = m_process_info.find (inferior_ptid.pid ());
>   
> -  /* No breakpoints or watchpoints have been requested for this process,
> +  /* No breakpoints, watchpoints, tracepoints or catchpoints have been requested for this process,
>        we have at least one free DVC register.  */
>     if (process_it == m_process_info.end ())
>       return true;
> diff --git a/gdb/testsuite/gdb.arch/i386-dr3-watch.exp b/gdb/testsuite/gdb.arch/i386-dr3-watch.exp
> index bab118b..575e900 100644
> --- a/gdb/testsuite/gdb.arch/i386-dr3-watch.exp
> +++ b/gdb/testsuite/gdb.arch/i386-dr3-watch.exp
> @@ -78,7 +78,7 @@ gdb_test_multiple "watch gap1" "$test" {
>   gdb_test "delete" \
>       "" \
>       "delete all watchpoints" \
> -    {Delete all breakpoints\? \(y or n\) $} \
> +    {Delete all breakpoints, watchpoints, tracepoints and catchpoints\? \(y or n\) $} \
>       "y"
>   
>   # If debug registers were left occupied by mistake, we'll fail to set
> diff --git a/gdb/testsuite/gdb.base/annota-input-while-running.exp b/gdb/testsuite/gdb.base/annota-input-while-running.exp
> index 2b4c5e1..8443071 100644
> --- a/gdb/testsuite/gdb.base/annota-input-while-running.exp
> +++ b/gdb/testsuite/gdb.base/annota-input-while-running.exp
> @@ -57,7 +57,7 @@ gdb_annota_test "set annotate 2" ".*" "annotation set at level 2"
>   
>   set test "delete breakpoints"
>   gdb_test_multiple "delete" $test {
> -    -re "Delete all breakpoints. .y or n." {
> +    -re "Delete all breakpoints, watchpoints, tracepoints and catchpoints. .y or n." {
>   	send_gdb "y\n"
>   	exp_continue
>       }
> diff --git a/gdb/testsuite/gdb.base/break-unload-file.exp b/gdb/testsuite/gdb.base/break-unload-file.exp
> index ed14772..596736c 100644
> --- a/gdb/testsuite/gdb.base/break-unload-file.exp
> +++ b/gdb/testsuite/gdb.base/break-unload-file.exp
> @@ -121,8 +121,8 @@ proc test_break { initial_load always_inserted break_command } {
>   	# re-insert, GDB would fill the shadow buffer with a
>   	# breakpoint instruction).  Avoid delete_breakpoints as that
>   	# doesn't record a pass/fail.
> -	gdb_test "delete" "" "delete all breakpoints" \
> -	    "Delete all breakpoints.*y or n.*$" "y"
> +	gdb_test "delete" "" "delete all breakpoints, watchpoints, tracepoints and catchpoints" \
> +	    "Delete all breakpoints, watchpoints, tracepoints and catchpoints.*y or n.*$" "y"
>   
>   	# Re-add symbols back.
>   	set test "file \$binfile"
> diff --git a/gdb/testsuite/gdb.base/break.exp b/gdb/testsuite/gdb.base/break.exp
> index 2c939ad..f89923e 100644
> --- a/gdb/testsuite/gdb.base/break.exp
> +++ b/gdb/testsuite/gdb.base/break.exp
> @@ -31,17 +31,17 @@ set srcfile1 break1.c
>   
>   send_gdb "delete breakpoints\n"
>   gdb_expect {
> -     -re "Delete all breakpoints.*$" {
> +     -re "Delete all breakpoints, watchpoints, tracepoints and catchpoints.*$" {
>   	    send_gdb "y\n"
>   	    gdb_expect {
>   		-re "$gdb_prompt $" {
> -		    fail "delete all breakpoints when none (unexpected prompt)"
> +		    fail "delete all breakpoints, watchpoints, tracepoints and catchpoints when none (unexpected prompt)"
>   		}
> -		timeout	{ fail "delete all breakpoints when none (timeout after unexpected prompt)" }
> +		timeout	{ fail "delete all breakpoints, watchpoints, tracepoints and catchpoints when none (timeout after unexpected prompt)" }
>   	    }
>   	}
> -     -re ".*$gdb_prompt $"       { pass "delete all breakpoints when none" }
> -    timeout	            { fail "delete all breakpoints when none (timeout)" }
> +     -re ".*$gdb_prompt $"       { pass "delete all breakpoints, watchpoints, tracepoints and catchpoints when none" }
> +    timeout	            { fail "delete all breakpoints, watchpoints, tracepoints and catchpoints when none (timeout)" }
>   }
>   
>   #
> @@ -418,7 +418,7 @@ gdb_test "continue" \
>       "continue to breakpoint at }"
>   
>   #
> -# delete all breakpoints so we can start over, course this can be a test too
> +# delete all breakpoints, watchpoints, tracepoints and catchpoints so we can start over, course this can be a test too
>   #
>   delete_breakpoints
>   
> diff --git a/gdb/testsuite/gdb.base/breakpoint-in-ro-region.exp b/gdb/testsuite/gdb.base/breakpoint-in-ro-region.exp
> index a3b654b..11c7e03 100644
> --- a/gdb/testsuite/gdb.base/breakpoint-in-ro-region.exp
> +++ b/gdb/testsuite/gdb.base/breakpoint-in-ro-region.exp
> @@ -237,7 +237,7 @@ proc test_single_step { always_inserted auto_hw } {
>       }
>   
>       gdb_test "maint info breakpoints 0" \
> -	"No breakpoint or watchpoint matching '0'\." \
> +	"No breakpoint, watchpoint, tracepoint or catchpoint matching '0'\." \
>   	"single-step breakpoint is not left behind"
>   
>       # Confirm the thread really advanced.
> diff --git a/gdb/testsuite/gdb.base/continue-after-aborted-step-over.exp b/gdb/testsuite/gdb.base/continue-after-aborted-step-over.exp
> index ee59ad5..30836f5 100644
> --- a/gdb/testsuite/gdb.base/continue-after-aborted-step-over.exp
> +++ b/gdb/testsuite/gdb.base/continue-after-aborted-step-over.exp
> @@ -27,7 +27,7 @@
>   #
>   #  Command aborted.
>   #  delete breakpoints
> -#  Delete all breakpoints? (y or n) y
> +#  Delete all breakpoints, watchpoints, tracepoints and catchpoints? (y or n) y
>   #  (gdb) b function
>   #  Breakpoint 3 at 0x40048b: file test.c, line 33.
>   #  continue
> diff --git a/gdb/testsuite/gdb.base/default.exp b/gdb/testsuite/gdb.base/default.exp
> index 23379f6..37386de 100644
> --- a/gdb/testsuite/gdb.base/default.exp
> +++ b/gdb/testsuite/gdb.base/default.exp
> @@ -267,7 +267,7 @@ gdb_test "info args" "No frame selected."
>   #test info bogus-gdb-command
>   gdb_test "info bogus-gdb-command" "Undefined info command: \"bogus-gdb-command\".  Try \"help info\".*"
>   #test info breakpoints
> -gdb_test "info breakpoints" "No breakpoints or watchpoints."
> +gdb_test "info breakpoints" "No breakpoints, watchpoints, tracepoints or catchpoints."
>   #test info copying
>   # FIXME -- doesn't work worth a shit
>   #send_gdb "info copying"
> diff --git a/gdb/testsuite/gdb.base/del.exp b/gdb/testsuite/gdb.base/del.exp
> index 29ab5f5..1fab0c8 100644
> --- a/gdb/testsuite/gdb.base/del.exp
> +++ b/gdb/testsuite/gdb.base/del.exp
> @@ -35,7 +35,7 @@ proc test_delete_alias { alias } {
>                "remove all breakpoints"
>   
>       gdb_test "info break" \
> -             "No breakpoints or watchpoints." \
> +             "No breakpoints, watchpoints, tracepoints or catchpoints." \
>                "info break after clearing breakpoints"
>   
>   
> @@ -50,7 +50,7 @@ proc test_delete_alias { alias } {
>                "Remove last breakpoint"
>   
>       gdb_test "info break" \
> -             "No breakpoints or watchpoints." \
> +             "No breakpoints, watchpoints, tracepoints or catchpoints." \
>                "info break after removing break on main"
>   }
>   
> diff --git a/gdb/testsuite/gdb.base/ena-dis-br.exp b/gdb/testsuite/gdb.base/ena-dis-br.exp
> index 24925cf..9b90bc3 100644
> --- a/gdb/testsuite/gdb.base/ena-dis-br.exp
> +++ b/gdb/testsuite/gdb.base/ena-dis-br.exp
> @@ -133,7 +133,7 @@ gdb_test "continue" \
>       "continue to auto-deleted break marker3"
>   
>   gdb_test "info break $bp" \
> -    ".*No breakpoint or watchpoint matching.*" \
> +    ".*No breakpoint, watchpoint, tracepoint or catchpoint matching.*" \
>       "info auto-deleted break marker3"
>   
>   # Verify that we can set a breakpoint and manually disable it (we've
> diff --git a/gdb/testsuite/gdb.base/foll-fork.exp b/gdb/testsuite/gdb.base/foll-fork.exp
> index 0ab2290..3ac94a9 100644
> --- a/gdb/testsuite/gdb.base/foll-fork.exp
> +++ b/gdb/testsuite/gdb.base/foll-fork.exp
> @@ -262,7 +262,7 @@ proc_with_prefix catch_fork_child_follow {} {
>       gdb_test "delete breakpoints" \
>   	"" \
>   	"set follow-fork child, cleanup" \
> -	"Delete all breakpoints. \\(y or n\\) $" \
> +	"Delete all breakpoints, watchpoints, tracepoints and catchpoints. \\(y or n\\) $" \
>   	"y"
>   }
>   
> @@ -289,7 +289,7 @@ proc_with_prefix catch_fork_unpatch_child {} {
>   	"Catchpoint \[0-9\]* \\(forked process \[0-9\]*\\),.*" \
>   	"unpatch child, catch fork"
>   
> -    # Delete all breakpoints and catchpoints.
> +    # Delete all breakpoints, watchpoints, tracepoints and catchpoints.
>       delete_breakpoints
>   
>       # Force $srcfile as the current GDB source can be in glibc sourcetree.
> @@ -366,7 +366,7 @@ proc_with_prefix tcatch_fork_parent_follow {} {
>       gdb_test "delete breakpoints" \
>   	"" \
>   	"set follow-fork parent, cleanup" \
> -	"Delete all breakpoints. \\(y or n\\) $" \
> +	"Delete all breakpoints, watchpoints, tracepoints and catchpoints. \\(y or n\\) $" \
>   	"y"
>   }
>   
> diff --git a/gdb/testsuite/gdb.base/hbreak-unmapped.exp b/gdb/testsuite/gdb.base/hbreak-unmapped.exp
> index 7e6d1cb..fc93ce5 100644
> --- a/gdb/testsuite/gdb.base/hbreak-unmapped.exp
> +++ b/gdb/testsuite/gdb.base/hbreak-unmapped.exp
> @@ -73,5 +73,5 @@ gdb_test "info break" "hw breakpoint.*y.*0x0\+\[ \t\]\+" \
>   gdb_test_no_output "delete \$bpnum" "" "delete" \
>       "delete hw breakpoint"
>   
> -gdb_test "info break" "No breakpoints or watchpoints\." \
> -    "info break shows no breakpoints"
> +gdb_test "info break" "No breakpoints, watchpoints, tracepoints or catchpoints\." \
> +    "info break shows no breakpoints, watchpoints, tracepoints or catchpoints"
> diff --git a/gdb/testsuite/gdb.base/hbreak2.exp b/gdb/testsuite/gdb.base/hbreak2.exp
> index aecf613..3b34fef 100644
> --- a/gdb/testsuite/gdb.base/hbreak2.exp
> +++ b/gdb/testsuite/gdb.base/hbreak2.exp
> @@ -228,7 +228,7 @@ gdb_test "continue" \
>       "continue to hardware breakpoint at }"
>   
>   #
> -# Delete all breakpoints so we can start over, course this can be a test too.
> +# Delete all breakpoints, watchpoints, tracepoints and catchpoints so we can start over, course this can be a test too.
>   #
>   delete_breakpoints
>   
> diff --git a/gdb/testsuite/gdb.base/help.exp b/gdb/testsuite/gdb.base/help.exp
> index 74da29e..dfb1e3d 100644
> --- a/gdb/testsuite/gdb.base/help.exp
> +++ b/gdb/testsuite/gdb.base/help.exp
> @@ -89,7 +89,7 @@ set expected_help_delete {
>       "Delete all or some breakpoints\.\[\r\n\]+"
>       "Usage: delete \\\[BREAKPOINTNUM\\\]...\[\r\n\]+"
>       "Arguments are breakpoint numbers with spaces in between\.\[\r\n\]+"
> -    "To delete all breakpoints, give no argument\.\[\r\n\]+"
> +    "To delete all breakpoints, watchpoints, tracepoints and catchpoints, give no argument\.\[\r\n\]+"
>       "Also a prefix command for deletion of other GDB objects\.\[\r\n\]+"
>   }
>   test_prefix_command_help {"d" "delete"} $expected_help_delete "help delete \"d\" abbreviation"
> diff --git a/gdb/testsuite/gdb.base/new-ui.exp b/gdb/testsuite/gdb.base/new-ui.exp
> index 2f019f6..32d902b 100644
> --- a/gdb/testsuite/gdb.base/new-ui.exp
> +++ b/gdb/testsuite/gdb.base/new-ui.exp
> @@ -130,17 +130,17 @@ proc_with_prefix do_test {} {
>       # Verify that we get proper queries on the main UI, but that they are
>       # auto-answered on secondary UIs.
>       with_spawn_id $gdb_main_spawn_id {
> -	gdb_test "delete" "" "delete all breakpoint on main console" \
> -		 "Delete all breakpoints. .y or n. $" "n"
> +	gdb_test "delete" "" "delete all breakpoints, watchpoints, tracepoints and catchpoints on main console" \
> +		 "Delete all breakpoints, watchpoints, tracepoints and catchpoints. .y or n. $" "n"
>       }
>       with_spawn_id $extra_spawn_id {
>   	# Check output in two stages in order to override
>   	# gdb_test_multiple's internal "got interactive prompt" fail
>   	# that would otherwise match if the expect buffer happens to
>   	# fill with partial output that ends in "(y or n) ".
> -	set test "delete all breakpoints on extra console"
> +	set test "delete all breakpoints, watchpoints, tracepoints and catchpoints on extra console"
>   	gdb_test_multiple "delete" $test {
> -	    -re "Delete all breakpoints. .y or n. " {
> +	    -re "Delete all breakpoints, watchpoints, tracepoints and catchpoints. .y or n. " {
>   		gdb_test "" \
>   		    ".answered Y; input not from terminal." \
>   		    $test
> diff --git a/gdb/testsuite/gdb.base/save-bp.exp b/gdb/testsuite/gdb.base/save-bp.exp
> index 39bd692..d2649d8 100644
> --- a/gdb/testsuite/gdb.base/save-bp.exp
> +++ b/gdb/testsuite/gdb.base/save-bp.exp
> @@ -22,8 +22,8 @@ if { [prepare_for_testing "failed to prepare" ${testfile} $srcfile] } {
>   if ![runto_main] {
>       return -1
>   }
> -# Delete all breakpoints so that the "runto_main" breakpoint above
> -# does not interfere with our testing.
> +# Delete all breakpoints, watchpoints, tracepoints and catchpoints so that
> +# the "runto_main" breakpoint above does not interfere with our testing.
>   delete_breakpoints
>   
>   # Insert a bunch of breakpoints... The goal is to create breakpoints
> @@ -64,8 +64,8 @@ clean_restart $testfile
>   if ![runto_main] {
>       return -1
>   }
> -# Delete all breakpoints so that the "runto_main" breakpoint above
> -# does not interfere with our testing.
> +# Delete all breakpoints, watchpoints, tracepoints and catchpoints so that
> +# the "runto_main" breakpoint above does not interfere with our testing.
>   delete_breakpoints
>   
>   # ... and restore the breakpoints.
> diff --git a/gdb/testsuite/gdb.base/sepdebug.exp b/gdb/testsuite/gdb.base/sepdebug.exp
> index 20a7f34..5ee9e6f 100644
> --- a/gdb/testsuite/gdb.base/sepdebug.exp
> +++ b/gdb/testsuite/gdb.base/sepdebug.exp
> @@ -219,7 +219,7 @@ gdb_test "step" \
>       "step onto breakpoint"
>   
>   #
> -# delete all breakpoints so we can start over, course this can be a test too
> +# delete all breakpoints, watchpoints, tracepoints and catchpoints so we can start over, course this can be a test too
>   #
>   delete_breakpoints
>   
> diff --git a/gdb/testsuite/gdb.base/server-del-break.exp b/gdb/testsuite/gdb.base/server-del-break.exp
> index 9a8b6f8..2200702 100644
> --- a/gdb/testsuite/gdb.base/server-del-break.exp
> +++ b/gdb/testsuite/gdb.base/server-del-break.exp
> @@ -29,10 +29,11 @@ gdb_test "break -q main" \
>   
>   # Try deleting all breakpoints, using the "server" command prefix.
>   # Prefixing the "delete breakpoints" with "server" should turn
> -# the confirmation request ("Delete all breakpoints? (y or n)")
> +# the confirmation request
> +# ("Delete all breakpoints, watchpoints, tracepoints and catchpoints? (y or n)")
>   # off, hence we expect the operation to be executed without output.
>   gdb_test_no_output "server delete breakpoints"
>   
>   # Double-check that the all breakpoints were in fact deleted.
>   gdb_test "info break" \
> -         "No breakpoints or watchpoints."
> +         "No breakpoints, watchpoints, tracepoints or catchpoints."
> diff --git a/gdb/testsuite/gdb.cp/annota2.exp b/gdb/testsuite/gdb.cp/annota2.exp
> index 681235b..cbfc30d 100644
> --- a/gdb/testsuite/gdb.cp/annota2.exp
> +++ b/gdb/testsuite/gdb.cp/annota2.exp
> @@ -149,11 +149,11 @@ gdb_test_multiple "continue" "continue until exit" {
>   }
>   
>   #
> -# delete all breakpoints
> +# delete all breakpoints, watchpoints, tracepoints and catchpoints
>   #
>   send_gdb "delete\n"
>   gdb_expect {
> -  -re ".*Delete all breakpoints. \\(y or n\\) \r\n\032\032query.*$" {
> +  -re ".*Delete all breakpoints, watchpoints, tracepoints and catchpoints. \\(y or n\\) \r\n\032\032query.*$" {
>              send_gdb "y\n"
>              gdb_expect {
>   	     -re "\r\n\032\032post-query\r\n${breakpoints_invalid}$gdb_prompt$" { pass "delete bps" }
> diff --git a/gdb/testsuite/gdb.cp/annota3.exp b/gdb/testsuite/gdb.cp/annota3.exp
> index 0914b7c..8e45f6c 100644
> --- a/gdb/testsuite/gdb.cp/annota3.exp
> +++ b/gdb/testsuite/gdb.cp/annota3.exp
> @@ -107,11 +107,11 @@ gdb_expect_list "continue to exit" "$gdb_prompt$" [concat {
>   }]
>   
>   #
> -# delete all breakpoints
> +# delete all breakpoints, watchpoints, tracepoints and catchpoints
>   #
>   send_gdb "delete\n"
>   gdb_expect {
> -  -re ".*Delete all breakpoints. \\(y or n\\) \r\n\032\032query.*$" {
> +  -re ".*Delete all breakpoints, watchpoints, tracepoints and catchpoints. \\(y or n\\) \r\n\032\032query.*$" {
>              send_gdb "y\n"
>              gdb_expect {
>   	     -re "\r\n\032\032post-query\r\n$gdb_prompt$" { pass "delete bps" }
> diff --git a/gdb/testsuite/gdb.cp/ovldbreak.exp b/gdb/testsuite/gdb.cp/ovldbreak.exp
> index 681edf2..500e505 100644
> --- a/gdb/testsuite/gdb.cp/ovldbreak.exp
> +++ b/gdb/testsuite/gdb.cp/ovldbreak.exp
> @@ -261,23 +261,23 @@ gdb_test "info break" $bptable "breakpoint info (after cancel)"
>   
>   send_gdb "delete breakpoints\n"
>   gdb_expect {
> -    -re "Delete all breakpoints.* $" {
> +    -re "Delete all breakpoints, watchpoints, tracepoints and catchpoints.* $" {
>           send_gdb "y\n"
>           gdb_expect {
>               -re ".*$gdb_prompt $" {
> -                pass "delete all breakpoints"
> +                pass "delete all breakpoints, watchpoints, tracepoints and catchpoints"
>               }
>               timeout {
> -                fail "delete all breakpoints (timeout)"
> +                fail "delete all breakpoints, watchpoints, tracepoints and catchpoints (timeout)"
>               }
>           }
>       }
>       timeout {
> -        fail "delete all breakpoints (timeout)"
> +        fail "delete all breakpoints, watchpoints, tracepoints and catchpoints (timeout)"
>       }
>   }
>   
> -gdb_test "info breakpoints" "No breakpoints or watchpoints." "breakpoint info (after delete)"
> +gdb_test "info breakpoints" "No breakpoints, watchpoints, tracepoints or catchpoints." "breakpoint info (after delete)"
>   
>   
>   
> diff --git a/gdb/testsuite/gdb.cp/save-bp-qualified.exp b/gdb/testsuite/gdb.cp/save-bp-qualified.exp
> index 857e9b8..ff8915f 100644
> --- a/gdb/testsuite/gdb.cp/save-bp-qualified.exp
> +++ b/gdb/testsuite/gdb.cp/save-bp-qualified.exp
> @@ -29,8 +29,8 @@ proc restart {} {
>       if ![runto_main] {
>   	return 0
>       }
> -    # Delete all breakpoints so that the "runto_main" breakpoint above
> -    # does not interfere with our testing.
> +    # Delete all breakpoints, watchpoints, tracepoints and catchpoints so that
> +    # the "runto_main" breakpoint above does not interfere with our testing.
>       delete_breakpoints
>   
>       return 1
> diff --git a/gdb/testsuite/gdb.dwarf2/dw2-inline-header-1.exp b/gdb/testsuite/gdb.dwarf2/dw2-inline-header-1.exp
> index 19f06ad..7b5c0a6 100644
> --- a/gdb/testsuite/gdb.dwarf2/dw2-inline-header-1.exp
> +++ b/gdb/testsuite/gdb.dwarf2/dw2-inline-header-1.exp
> @@ -167,8 +167,8 @@ proc do_test { start_label func_name tag } {
>   	return -1
>       }
>   
> -    # Delete all breakpoints so that the output of "info breakpoints"
> -    # below will only contain a single breakpoint.
> +    # Delete all breakpoints, watchpoints, tracepoints and catchpoints so that
> +    # the output of "info breakpoints" below will only contain a single breakpoint.
>       delete_breakpoints
>   
>       # Place a breakpoint within the function in the header file.
> diff --git a/gdb/testsuite/gdb.dwarf2/dw2-inline-header-2.exp b/gdb/testsuite/gdb.dwarf2/dw2-inline-header-2.exp
> index 198f355..6e78af0 100644
> --- a/gdb/testsuite/gdb.dwarf2/dw2-inline-header-2.exp
> +++ b/gdb/testsuite/gdb.dwarf2/dw2-inline-header-2.exp
> @@ -155,8 +155,8 @@ if ![runto_main] {
>       return -1
>   }
>   
> -# Delete all breakpoints so that the output of "info breakpoints"
> -# below will only contain a single breakpoint.
> +# Delete all breakpoints, watchpoints, tracepoints and catchpoints so that
> +# the output of "info breakpoints" below will only contain a single breakpoint.
>   delete_breakpoints
>   
>   # Place a breakpoint within the function in the header file.
> @@ -169,8 +169,8 @@ gdb_test "info breakpoints" \
>       ".* in callee at \[^\r\n\]+${srcfile4}:22\\y.*" \
>       "check for breakpoint at ${srcfile4}"
>   
> -# Delete all breakpoints so that the output of "info breakpoints"
> -# below will only contain a single breakpoint.
> +# Delete all breakpoints, watchpoints, tracepoints and catchpoints so that
> +# the output of "info breakpoints" below will only contain a single breakpoint.
>   delete_breakpoints
>   
>   # Place a breakpoint within the function in the header file.
> diff --git a/gdb/testsuite/gdb.dwarf2/dw2-inline-header-3.exp b/gdb/testsuite/gdb.dwarf2/dw2-inline-header-3.exp
> index 68261aa..7ecb3e0 100644
> --- a/gdb/testsuite/gdb.dwarf2/dw2-inline-header-3.exp
> +++ b/gdb/testsuite/gdb.dwarf2/dw2-inline-header-3.exp
> @@ -144,8 +144,8 @@ if ![runto_main] {
>       return -1
>   }
>   
> -# Delete all breakpoints so that the output of "info breakpoints"
> -# below will only contain a single breakpoint.
> +# Delete all breakpoints, watchpoints, tracepoints and catchpoints so that
> +# the output of "info breakpoints" below will only contain a single breakpoint.
>   delete_breakpoints
>   
>   # Place a breakpoint within the function in the header file.
> diff --git a/gdb/testsuite/gdb.dwarf2/dw2-inline-small-func.exp b/gdb/testsuite/gdb.dwarf2/dw2-inline-small-func.exp
> index 05286ad..965417d 100644
> --- a/gdb/testsuite/gdb.dwarf2/dw2-inline-small-func.exp
> +++ b/gdb/testsuite/gdb.dwarf2/dw2-inline-small-func.exp
> @@ -129,8 +129,8 @@ if ![runto_main] {
>       return -1
>   }
>   
> -# Delete all breakpoints so that the output of "info breakpoints"
> -# below will only contain a single breakpoint.
> +# Delete all breakpoints, watchpoints, tracepoints and catchpoints so that
> +# the output of "info breakpoints" below will only contain a single breakpoint.
>   delete_breakpoints
>   
>   # Place a breakpoint within the function in the header file.
> diff --git a/gdb/testsuite/gdb.guile/scm-breakpoint.exp b/gdb/testsuite/gdb.guile/scm-breakpoint.exp
> index 37607b7..94d40e1 100644
> --- a/gdb/testsuite/gdb.guile/scm-breakpoint.exp
> +++ b/gdb/testsuite/gdb.guile/scm-breakpoint.exp
> @@ -225,7 +225,7 @@ proc_with_prefix test_bkpt_invisible { } {
>       gdb_test "guile (print (breakpoint-visible? ibp))" \
>   	"= #f" "check breakpoint invisibility"
>       gdb_test "info breakpoints" \
> -	"No breakpoints or watchpoints.*" \
> +	"No breakpoints, watchpoints, tracepoints or catchpoints.*" \
>   	"check info breakpoints does not show invisible breakpoints"
>       gdb_test "maint info breakpoints" \
>   	"scm-breakpoint\.c:$ibp_location.*" \
> @@ -288,7 +288,7 @@ proc_with_prefix test_bkpt_internal { } {
>       gdb_scm_test_silent_cmd "guile (register-breakpoint! wp1)" \
>   	"register wp1"
>       gdb_test "info breakpoints" \
> -	"No breakpoints or watchpoints.*" \
> +	"No breakpoints, watchpoints, tracepoints or catchpoints.*" \
>   	"check info breakpoints does not show invisible watchpoint"
>       gdb_test "maint info breakpoints" \
>   	".*watchpoint.*result.*" \
> @@ -512,7 +512,7 @@ proc_with_prefix test_bkpt_temporary { } {
>   	".*$srcfile:$ibp_location.*"
>       gdb_test "guile (print (breakpoint-temporary? ibp))" "Invalid object: <gdb:breakpoint>.*" \
>   	"check temporary breakpoint is deleted after being hit"
> -    gdb_test "info breakpoints" "No breakpoints or watchpoints.*" \
> +    gdb_test "info breakpoints" "No breakpoints, watchpoints, tracepoints or catchpoints.*" \
>   	"check info breakpoints shows temporary breakpoint is deleted"
>   }
>   
> diff --git a/gdb/testsuite/gdb.linespec/cpexplicit.exp b/gdb/testsuite/gdb.linespec/cpexplicit.exp
> index 038c09f..d10d21f 100644
> --- a/gdb/testsuite/gdb.linespec/cpexplicit.exp
> +++ b/gdb/testsuite/gdb.linespec/cpexplicit.exp
> @@ -34,8 +34,8 @@ namespace eval $testfile {
>       # at LOCATION.
>       proc test_breakpoint {linespec location} {
>   
> -	# Delete all breakpoints, set a new breakpoint at LINESPEC,
> -	# and attempt to run to it.
> +	# Delete all breakpoints, watchpoints, tracepoints and catchpoints,
> +	# set a new breakpoint at LINESPEC, and attempt to run to it.
>   	delete_breakpoints
>   	gdb_breakpoint $linespec
>   	gdb_continue_to_breakpoint $linespec $location
> diff --git a/gdb/testsuite/gdb.linespec/explicit.exp b/gdb/testsuite/gdb.linespec/explicit.exp
> index 9064c13..4bbc347 100644
> --- a/gdb/testsuite/gdb.linespec/explicit.exp
> +++ b/gdb/testsuite/gdb.linespec/explicit.exp
> @@ -33,8 +33,8 @@ namespace eval $testfile {
>       proc test_breakpoint {linespec location} {
>   
>   	set testname "set breakpoint at \"$linespec\""
> -	# Delete all breakpoints, set a new breakpoint at LINESPEC,
> -	# and attempt to run to it.
> +	# Delete all breakpoints, watchpoints, tracepoints and catchpoints,
> +	# set a new breakpoint at LINESPEC,  and attempt to run to it.
>   	delete_breakpoints
>   	if {[gdb_breakpoint $linespec]} {
>   	    pass $testname
> diff --git a/gdb/testsuite/gdb.mi/mi-return.exp b/gdb/testsuite/gdb.mi/mi-return.exp
> index 393c3a7..ed972b7 100644
> --- a/gdb/testsuite/gdb.mi/mi-return.exp
> +++ b/gdb/testsuite/gdb.mi/mi-return.exp
> @@ -57,7 +57,7 @@ mi_runto callee4
>   
>   mi_gdb_test "205-break-delete" \
>   	"205\\^done.*" \
> -	"delete all breakpoints"
> +	"delete all breakpoints, watchpoints, tracepoints and catchpoints"
>   
>   test_return_simple
>   
> diff --git a/gdb/testsuite/gdb.opt/inline-small-func.exp b/gdb/testsuite/gdb.opt/inline-small-func.exp
> index 3be1955..1c95823 100644
> --- a/gdb/testsuite/gdb.opt/inline-small-func.exp
> +++ b/gdb/testsuite/gdb.opt/inline-small-func.exp
> @@ -45,8 +45,8 @@ if ![runto_main] {
>       return -1
>   }
>   
> -# Delete all breakpoints so that the output of "info breakpoints"
> -# below will only contain a single breakpoint.
> +# Delete all breakpoints, watchpoints, tracepoints and catchpoints so that
> +# the output of "info breakpoints" below will only contain a single breakpoint.
>   delete_breakpoints
>   
>   # Place a breakpoint within the function in the header file.
> diff --git a/gdb/testsuite/gdb.python/py-breakpoint.exp b/gdb/testsuite/gdb.python/py-breakpoint.exp
> index 58b1af3..f25d112 100644
> --- a/gdb/testsuite/gdb.python/py-breakpoint.exp
> +++ b/gdb/testsuite/gdb.python/py-breakpoint.exp
> @@ -241,7 +241,7 @@ proc_with_prefix test_bkpt_invisible { } {
>   	"py-breakpoint\.c:$ibp_location*" "Check breakpoint location 2"
>       gdb_test "python print (ilist\[0\].visible)" \
>   	"False" "Check breakpoint visibility 2"
> -    gdb_test "info breakpoints" "No breakpoints or watchpoints.*" \
> +    gdb_test "info breakpoints" "No breakpoints, watchpoints, tracepoints or catchpoints.*" \
>   	"Check info breakpoints does not show invisible breakpoints"
>       gdb_test "maint info breakpoints" \
>   	"py-breakpoint\.c:$ibp_location.*" \
> @@ -313,7 +313,7 @@ proc_with_prefix test_bkpt_internal { } {
>       gdb_py_test_silent_cmd  "python wp1 = gdb.Breakpoint (\"result\", type=gdb.BP_WATCHPOINT, wp_class=gdb.WP_WRITE, internal=True )" \
>   	"Set watchpoint" 0
>       gdb_test "info breakpoints" \
> -	"No breakpoints or watchpoints.*" \
> +	"No breakpoints, watchpoints, tracepoints or catchpoints.*" \
>   	"Check info breakpoints does not show invisible breakpoints"
>       gdb_test "maint info breakpoints" \
>   	".*watchpoint.*result.*" \
> @@ -475,7 +475,7 @@ proc_with_prefix test_bkpt_temporary { } {
>   	"Check temporary stop callback executed before deletion."
>       gdb_test "python print (ibp.temporary)" "RuntimeError: Breakpoint 2 is invalid.*" \
>   	"Check temporary breakpoint is deleted after being hit"
> -    gdb_test "info breakpoints" "No breakpoints or watchpoints.*" \
> +    gdb_test "info breakpoints" "No breakpoints, watchpoints, tracepoints or catchpoints.*" \
>   	"Check info breakpoints shows temporary breakpoint is deleted"
>   }
>   
> @@ -484,7 +484,7 @@ proc_with_prefix test_bkpt_temporary { } {
>   proc_with_prefix test_bkpt_address {} {
>       global gdb_prompt decimal srcfile
>   
> -    # Delete all breakpoints
> +    # Delete all breakpoints, watchpoints, tracepoints and catchpoints
>       delete_breakpoints
>   
>       gdb_test "python gdb.Breakpoint(\"*main\")" \
> diff --git a/gdb/testsuite/gdb.reverse/ppc_record_test_isa_3_1.exp b/gdb/testsuite/gdb.reverse/ppc_record_test_isa_3_1.exp
> index 8cecb06..016b17d 100644
> --- a/gdb/testsuite/gdb.reverse/ppc_record_test_isa_3_1.exp
> +++ b/gdb/testsuite/gdb.reverse/ppc_record_test_isa_3_1.exp
> @@ -108,7 +108,7 @@ gdb_test_no_output "set exec-direction forward" "start forward test3"
>   gdb_test "record stop" ".*Process record is stopped.*" "stopped recording 2"
>   set test_del_bkpts "delete breakpoints, answer prompt 2"
>   
> -# Delete all breakpoints and catchpoints.
> +# Delete all breakpoints, watchpoints, tracepoints and catchpoints.
>   delete_breakpoints
>   
>   gdb_test_no_output "record" "start recording test2"
> diff --git a/gdb/testsuite/gdb.threads/continue-pending-after-query.exp b/gdb/testsuite/gdb.threads/continue-pending-after-query.exp
> index a0a7915..13f2612 100644
> --- a/gdb/testsuite/gdb.threads/continue-pending-after-query.exp
> +++ b/gdb/testsuite/gdb.threads/continue-pending-after-query.exp
> @@ -67,7 +67,7 @@ proc test {} {
>       set test "delete breakpoints, answer prompt"
>       set saw_prompt 0
>       gdb_test_multiple "delete breakpoints" $test {
> -	-re "Delete all breakpoints.*y or n.*$" {
> +	-re "Delete all breakpoints, watchpoints, tracepoints and catchpoints.*y or n.*$" {
>   	    set saw_prompt 1
>   	    send_gdb "y\n"
>   	    exp_continue
> diff --git a/gdb/testsuite/gdb.threads/continue-pending-status.exp b/gdb/testsuite/gdb.threads/continue-pending-status.exp
> index 9814fa2..a24db80 100644
> --- a/gdb/testsuite/gdb.threads/continue-pending-status.exp
> +++ b/gdb/testsuite/gdb.threads/continue-pending-status.exp
> @@ -92,9 +92,10 @@ for {set i 0} {$i < $attempts} {incr i} {
>   	    "Switching to thread $thread .*" \
>   	    "switch to non-event thread"
>   
> -	# Delete all breakpoints so that continuing doesn't switch
> -	# back to the event thread to do a step-over, which would mask
> -	# away the original bug, which depended on the event thread
> +	# Delete all breakpoints, watchpoints, tracepoints and catchpoints
> +	# so that continuing doesn't switch back to the event
> +	# thread to do a step-over, which would mask away the
> +	# original bug, which depended on the event thread
>   	# still having TARGET_STOPPED_BY_SW_BREAKPOINT stop_reason.
>   	delete_breakpoints
>   
> diff --git a/gdb/testsuite/gdb.threads/thread_check.exp b/gdb/testsuite/gdb.threads/thread_check.exp
> index 61ec078..b2e3ad2 100644
> --- a/gdb/testsuite/gdb.threads/thread_check.exp
> +++ b/gdb/testsuite/gdb.threads/thread_check.exp
> @@ -28,7 +28,7 @@
>   # - create 2 breakpoints #1 main() #2 tf() (the thread function)
>   # - run gdb till #1 main() breakpoint is reached
>   # - continue to breakpoint #2 tf()
> -# - delete all breakpoints
> +# - delete all breakpoints, watchpoints, tracepoints and catchpoints
>   # - exit gdb.
>   
>   
> @@ -71,7 +71,7 @@ gdb_test "backtrace" \
>   
>   
>   #
> -# delete all breakpoints
> +# delete all breakpoints, watchpoints, tracepoints and catchpoints
>   #
>   delete_breakpoints
>   
> diff --git a/gdb/testsuite/lib/gdb.exp b/gdb/testsuite/lib/gdb.exp
> index 97841ca..a8ea26f 100644
> --- a/gdb/testsuite/lib/gdb.exp
> +++ b/gdb/testsuite/lib/gdb.exp
> @@ -305,10 +305,10 @@ proc delete_breakpoints {} {
>       #
>       set timeout 100
>   
> -    set msg "delete all breakpoints in delete_breakpoints"
> +    set msg "delete all breakpoints, watchpoints, tracepoints and catchpoints in delete_breakpoints"
>       set deleted 0
>       gdb_test_multiple "delete breakpoints" "$msg" {
> -	-re "Delete all breakpoints.*y or n.*$" {
> +	-re "Delete all breakpoints, watchpoints, tracepoints and catchpoints.*y or n.*$" {
>   	    send_gdb "y\n" answer
>   	    exp_continue
>   	}
> @@ -322,7 +322,7 @@ proc delete_breakpoints {} {
>   	set deleted 0
>   	set msg "info breakpoints"
>   	gdb_test_multiple $msg $msg {
> -	    -re "No breakpoints or watchpoints..*$gdb_prompt $" {
> +	    -re "No breakpoints, watchpoints, tracepoints or catchpoints..*$gdb_prompt $" {
>   		set deleted 1
>   	    }
>   	    -re "$gdb_prompt $" {
> diff --git a/gdb/testsuite/lib/mi-support.exp b/gdb/testsuite/lib/mi-support.exp
> index e578a7e..e98b937 100644
> --- a/gdb/testsuite/lib/mi-support.exp
> +++ b/gdb/testsuite/lib/mi-support.exp
> @@ -364,25 +364,25 @@ proc mi_delete_breakpoints {} {
>   # FIXME: The mi operation won't accept a prompt back and will use the 'all' arg
>       send_gdb "102-break-delete\n"
>       gdb_expect 30 {
> -	 -re "Delete all breakpoints.*y or n.*$" {
> +	 -re "Delete all breakpoints, watchpoints, tracepoints and catchpoints.*y or n.*$" {
>   	    send_gdb "y\n"
>   	    exp_continue
>   	 }
>   	 -re "102-break-delete\r\n102\\\^done\r\n$mi_gdb_prompt$" {
>   	     # This happens if there were no breakpoints
>   	 }
> -	 timeout { perror "Delete all breakpoints in mi_delete_breakpoints (timeout)" ; return }
> +	 timeout { perror "Delete all breakpoints, watchpoints, tracepoints and catchpoints in mi_delete_breakpoints (timeout)" ; return }
>       }
>   
> -# The correct output is not "No breakpoints or watchpoints." but an
> +# The correct output is not "No breakpoints, watchpoints, tracepoints or catchpoints." but an
>   # empty BreakpointTable. Also, a query is not acceptable with mi.
>       send_gdb "103-break-list\n"
>       gdb_expect 30 {
>   	 -re "103-break-list\r\n103\\\^done,BreakpointTable=\{\}\r\n$mi_gdb_prompt$" {}
>   	 -re "103-break-list\r\n103\\\^done,BreakpointTable=\{nr_rows=\".\",nr_cols=\".\",hdr=\\\[\{width=\".*\",alignment=\".*\",col_name=\"number\",colhdr=\"Num\"\}.*colhdr=\"Type\".*colhdr=\"Disp\".*colhdr=\"Enb\".*colhdr=\"Address\".*colhdr=\"What\".*\\\],body=\\\[\\\]\}\r\n$mi_gdb_prompt$" {}
> -	 -re "103-break-list\r\n103\\\^doneNo breakpoints or watchpoints.\r\n\r\n$mi_gdb_prompt$" {warning "Unexpected console text received"}
> +	 -re "103-break-list\r\n103\\\^doneNo breakpoints, watchpoints, tracepoints or catchpoints.\r\n\r\n$mi_gdb_prompt$" {warning "Unexpected console text received"}
>   	 -re "$mi_gdb_prompt$" { perror "Breakpoints not deleted" ; return }
> -	 -re "Delete all breakpoints.*or n.*$" {
> +	 -re "Delete all breakpoints, watchpoints, tracepoints and catchpoints.*or n.*$" {
>   	    warning "Unexpected prompt for breakpoints deletion"
>   	    send_gdb "y\n"
>   	    exp_continue
> diff --git a/gdbserver/mem-break.cc b/gdbserver/mem-break.cc
> index 72ce8c8..d363c4b 100644
> --- a/gdbserver/mem-break.cc
> +++ b/gdbserver/mem-break.cc
> @@ -1989,7 +1989,8 @@ check_mem_write (CORE_ADDR mem_addr, unsigned char *buf,
>       delete_disabled_breakpoints ();
>   }
>   
> -/* Delete all breakpoints, and un-insert them from the inferior.  */
> +/* Delete all breakpoints, watchpoints, tracepoints and catchpoints,
> +   and un-insert them from the inferior.  */
>   
>   void
>   delete_all_breakpoints (void)
> @@ -2011,8 +2012,8 @@ mark_breakpoints_out (struct process_info *proc)
>       raw_bp->inserted = 0;
>   }
>   
> -/* Release all breakpoints, but do not try to un-insert them from the
> -   inferior.  */
> +/* Delete all breakpoints, watchpoints, tracepoints and catchpoints,
> +   but do not try to un-insert them from the inferior.  */
>   
>   void
>   free_all_breakpoints (struct process_info *proc)
> diff --git a/gdbserver/mem-break.h b/gdbserver/mem-break.h
> index dc8742f..2dc271f 100644
> --- a/gdbserver/mem-break.h
> +++ b/gdbserver/mem-break.h
> @@ -216,7 +216,8 @@ void check_mem_read (CORE_ADDR mem_addr, unsigned char *buf, int mem_len);
>   void check_mem_write (CORE_ADDR mem_addr,
>   		      unsigned char *buf, const unsigned char *myaddr, int mem_len);
>   
> -/* Delete all breakpoints.  */
> +/* Delete all breakpoints, watchpoints, tracepoints and catchpoints,
> +   and un-insert them from the inferior.  */
>   
>   void delete_all_breakpoints (void);
>   
> @@ -224,8 +225,8 @@ void delete_all_breakpoints (void);
>   
>   void mark_breakpoints_out (struct process_info *proc);
>   
> -/* Delete all breakpoints, but do not try to un-insert them from the
> -   inferior.  */
> +/* Delete all breakpoints, watchpoints, tracepoints and catchpoints,
> +   but do not try to un-insert them from the inferior.  */
>   
>   void free_all_breakpoints (struct process_info *proc);
>   


^ permalink raw reply	[flat|nested] 4+ messages in thread

* Re: [PATCH v2] gdb: Modify the output of "info breakpoints" and "delete breakpoints"
  2022-05-19 13:08 ` Bruno Larsen
@ 2024-02-18  2:06   ` Tiezhu Yang
  2024-02-18  3:48     ` Kevin Buettner
  0 siblings, 1 reply; 4+ messages in thread
From: Tiezhu Yang @ 2024-02-18  2:06 UTC (permalink / raw)
  To: Bruno Larsen, gdb-patches, Tom Tromey



On 05/19/2022 09:08 PM, Bruno Larsen wrote:
>
> On 5/19/22 06:16, Tiezhu Yang wrote:
>> The output of "info breakpoints" includes breakpoint, watchpoint,
>> tracepoint and catchpoint, after delete all breakpoints, it should
>> show tracepoint and catchpoint in the output of "info breakpoints"
>> to report empty list.
>>
>> It should also change the output of "delete breakpoints" to make it
>> clear that watchpoints, tracepoints and catchpoints are also being
>> deleted. This is suggested by Bruno Larsen, thank you.
>>
>> $ make check-gdb TESTS="gdb.base/access-mem-running.exp"
>> $ gdb/gdb
>> gdb/testsuite/outputs/gdb.base/access-mem-running/access-mem-running
>> [...]
>> (gdb) break main
>> Breakpoint 1 at 0x12000073c: file
>> /home/loongson/gdb.git/gdb/testsuite/gdb.base/access-mem-running.c,
>> line 32.
>> (gdb) watch global_counter
>> Hardware watchpoint 2: global_counter
>> (gdb) trace maybe_stop_here
>> Tracepoint 3 at 0x12000071c: file
>> /home/loongson/gdb.git/gdb/testsuite/gdb.base/access-mem-running.c,
>> line 27.
>> (gdb) catch fork
>> Catchpoint 4 (fork)
>> (gdb) info breakpoints
>> Num     Type           Disp Enb Address            What
>> 1       breakpoint     keep y   0x000000012000073c in main at
>> /home/loongson/gdb.git/gdb/testsuite/gdb.base/access-mem-running.c:32
>> 2       hw watchpoint  keep y                      global_counter
>> 3       tracepoint     keep y   0x000000012000071c in maybe_stop_here
>> at /home/loongson/gdb.git/gdb/testsuite/gdb.base/access-mem-running.c:27
>>     not installed on target
>> 4       catchpoint     keep y                      fork
>>
>> Without this patch:
>>
>> (gdb) delete breakpoints
>> Delete all breakpoints? (y or n) y
>> (gdb) info breakpoints
>> No breakpoints or watchpoints.
>> (gdb) info breakpoints 3
>> No breakpoint or watchpoint matching '3'.
>>
>> With this patch:
>>
>> (gdb) delete breakpoints
>> Delete all breakpoints, watchpoints, tracepoints and catchpoints? (y
>> or n) y
>> (gdb) info breakpoints
>> No breakpoints, watchpoints, tracepoints or catchpoints.
>> (gdb) info breakpoints 3
>> No breakpoint, watchpoint, tracepoint or catchpoint matching '3'.
>>
>
> Hey Tiezhu,
>
> Thanks for this change, I'm fine with this patch. However, I can't
> approve patches to be pushed. Let's hope a maintainer shows up soon :-)

Hi,

Is it necessary to rebase and update this patch?
Should I drop it or send a new version?

Thanks,
Tiezhu


^ permalink raw reply	[flat|nested] 4+ messages in thread

* Re: [PATCH v2] gdb: Modify the output of "info breakpoints" and "delete breakpoints"
  2024-02-18  2:06   ` Tiezhu Yang
@ 2024-02-18  3:48     ` Kevin Buettner
  0 siblings, 0 replies; 4+ messages in thread
From: Kevin Buettner @ 2024-02-18  3:48 UTC (permalink / raw)
  To: Tiezhu Yang; +Cc: gdb-patches, Bruno Larsen, Tom Tromey

Hi Tiezhu,

On Sun, 18 Feb 2024 10:06:48 +0800
Tiezhu Yang <yangtiezhu@loongson.cn> wrote:

> Is it necessary to rebase and update this patch?
> Should I drop it or send a new version?

Please update/rebase this patch and resend.

Also, add me on the CC line...

Kevin


^ permalink raw reply	[flat|nested] 4+ messages in thread

end of thread, other threads:[~2024-02-18  3:48 UTC | newest]

Thread overview: 4+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2022-05-19  9:16 [PATCH v2] gdb: Modify the output of "info breakpoints" and "delete breakpoints" Tiezhu Yang
2022-05-19 13:08 ` Bruno Larsen
2024-02-18  2:06   ` Tiezhu Yang
2024-02-18  3:48     ` Kevin Buettner

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).