gdb: show task number in describe_other_breakpoints
authorAndrew Burgess <aburgess@redhat.com>
Wed, 8 Feb 2023 13:23:14 +0000 (13:23 +0000)
committerAndrew Burgess <aburgess@redhat.com>
Sat, 11 Feb 2023 17:36:24 +0000 (17:36 +0000)
I noticed that describe_other_breakpoints doesn't show the task
number, but does show the thread-id.  I can't see any reason why we'd
want to not show the task number in this situation, so this commit
adds this missing information, and extends gdb.ada/tasks.exp to check
this case.

Approved-By: Pedro Alves <pedro@palves.net>
gdb/breakpoint.c
gdb/testsuite/gdb.ada/tasks.exp

index 68163283ec6797a1d53195d95bd5109433731234..5959013b2b4a57c8f7e48a59e5e5bd768318e769 100644 (file)
@@ -7049,6 +7049,8 @@ describe_other_breakpoints (struct gdbarch *gdbarch,
                struct thread_info *thr = find_thread_global_id (b->thread);
                gdb_printf (" (thread %s)", print_thread_id (thr));
              }
+           else if (b->task != 0)
+             gdb_printf (" (task %d)", b->task);
            gdb_printf ("%s%s ",
                        ((b->enable_state == bp_disabled
                          || b->enable_state == bp_call_disabled)
index 88ef123865bab8516327b02d7d43c10580392c8b..19aca7a43623d88431a8d970a4a49ed2f3e30790 100644 (file)
@@ -50,16 +50,21 @@ gdb_test "watch j task 1 task 3" "You can specify only one task\\."
 # breakpoint in the list that matched the triggered-breakpoint's
 # address, no matter which task it was specific to.
 gdb_test "break break_me task 1" "Breakpoint .* at .*"
+set bp_number [get_integer_valueof "\$bpnum" "INVALID" \
+                  "get number of breakpoint for task 1"]
 gdb_test "info breakpoints" "foo.adb:${decimal}\r\n\\s+stop only in task 1" \
     "check info breakpoints for task 1 breakpoint"
 
 # Now, insert a breakpoint that should stop only if task 3 stops, and
-# extract its number.
-gdb_breakpoint "break_me task 3" message
-set bp_number [get_integer_valueof "\$bpnum" -1]
-if {$bp_number < 0} {
-    return
-}
+# extract its number.  Use gdb_test here so that we can validate that
+# the 'Breakpoint ... also set at' line correctly includes the task
+# number of the previous breakpoint.
+gdb_test "break break_me task 3" \
+    [multi_line \
+        "Note: breakpoint $bp_number \\(task 1\\) also set at pc $hex\\." \
+        "Breakpoint $decimal at $hex: \[^\r\n\]+"]
+set bp_number [get_integer_valueof "\$bpnum" "INVALID" \
+                  "get number of breakpoint for task 3"]
 gdb_test "info breakpoints" "foo.adb:${decimal}\r\n\\s+stop only in task 3" \
     "check info breakpoints for task 3 breakpoint"