* breakpoint.c (bpstat_stop_status): Take a ptid_t argument,
authorDaniel Jacobowitz <drow@false.org>
Sun, 1 Feb 2004 18:05:09 +0000 (18:05 +0000)
committerDaniel Jacobowitz <drow@false.org>
Sun, 1 Feb 2004 18:05:09 +0000 (18:05 +0000)
and check the specified thread for each breakpoint.
* breakpoint.h (bpstat_stop_status): Update prototype.
* infrun.c (handle_inferior_event): Update calls to
bpstat_stop_status.

gdb/ChangeLog
gdb/breakpoint.c
gdb/breakpoint.h
gdb/infrun.c

index a190150790ed321cd5c6d00c7ad5a331e04300e9..f3f39f021c415e8b62af0f1bc2f38c717e783b0f 100644 (file)
@@ -1,3 +1,11 @@
+2004-02-01  Daniel Jacobowitz  <drow@mvista.com>
+
+       * breakpoint.c (bpstat_stop_status): Take a ptid_t argument,
+       and check the specified thread for each breakpoint.
+       * breakpoint.h (bpstat_stop_status): Update prototype.
+       * infrun.c (handle_inferior_event): Update calls to
+       bpstat_stop_status.
+
 2004-02-01  Daniel Jacobowitz  <drow@mvista.com>
 
        * Makefile.in (cli-cmds.o): Add $(readline_h).
index 11827f471fd25027d69cd0e8b42c67a68b797465..ebd73f18a50372e655b0cfec5b7498c6589dfaaf 100644 (file)
@@ -2588,7 +2588,7 @@ which its expression is valid.\n");
    commands, FIXME??? fields.  */
 
 bpstat
-bpstat_stop_status (CORE_ADDR bp_addr)
+bpstat_stop_status (CORE_ADDR bp_addr, ptid_t ptid)
 {
   struct breakpoint *b, *temp;
   /* True if we've hit a breakpoint (as opposed to a watchpoint).  */
@@ -2597,6 +2597,7 @@ bpstat_stop_status (CORE_ADDR bp_addr)
   struct bpstats root_bs[1];
   /* Pointer to the last thing in the chain currently.  */
   bpstat bs = root_bs;
+  int thread_id = pid_to_thread_id (ptid);
 
   ALL_BREAKPOINTS_SAFE (b, temp)
   {
@@ -2850,6 +2851,12 @@ bpstat_stop_status (CORE_ADDR bp_addr)
            /* Don't consider this a hit.  */
            --(b->hit_count);
          }
+       else if (b->thread != -1 && b->thread != thread_id)
+         {
+           bs->stop = 0;
+           /* Don't consider this a hit.  */
+           --(b->hit_count);
+         }
        else if (b->ignore_count > 0)
          {
            b->ignore_count--;
index b3253c73c8040c4741aca2ed64f9f04993b3d619..1a4fada42f7a3081c8872b1e8b069bb51953d3d1 100644 (file)
@@ -403,7 +403,7 @@ extern void bpstat_clear (bpstat *);
    is part of the bpstat is copied as well.  */
 extern bpstat bpstat_copy (bpstat);
 
-extern bpstat bpstat_stop_status (CORE_ADDR pc);
+extern bpstat bpstat_stop_status (CORE_ADDR pc, ptid_t ptid);
 \f
 /* This bpstat_what stuff tells wait_for_inferior what to do with a
    breakpoint (a challenging task).  */
index 5ab604c9033568e4a9da5d846dc30a27eafee7d0..f16f42395fe00315e192844eb9f6771cd0cb3bf6 100644 (file)
@@ -1589,7 +1589,7 @@ handle_inferior_event (struct execution_control_state *ecs)
 
       stop_pc = read_pc ();
 
-      stop_bpstat = bpstat_stop_status (stop_pc);
+      stop_bpstat = bpstat_stop_status (stop_pc, ecs->ptid);
 
       ecs->random_signal = !bpstat_explains_signal (stop_bpstat);
 
@@ -1638,7 +1638,7 @@ handle_inferior_event (struct execution_control_state *ecs)
       ecs->saved_inferior_ptid = inferior_ptid;
       inferior_ptid = ecs->ptid;
 
-      stop_bpstat = bpstat_stop_status (stop_pc);
+      stop_bpstat = bpstat_stop_status (stop_pc, ecs->ptid);
 
       ecs->random_signal = !bpstat_explains_signal (stop_bpstat);
       inferior_ptid = ecs->saved_inferior_ptid;
@@ -2028,7 +2028,7 @@ handle_inferior_event (struct execution_control_state *ecs)
       else
        {
          /* See if there is a breakpoint at the current PC.  */
-         stop_bpstat = bpstat_stop_status (stop_pc);
+         stop_bpstat = bpstat_stop_status (stop_pc, ecs->ptid);
 
          /* Following in case break condition called a
             function.  */