aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDaniel Jacobowitz <drow@false.org>2004-02-01 18:05:09 +0000
committerDaniel Jacobowitz <drow@false.org>2004-02-01 18:05:09 +0000
commitfa5281d02b823b7a847bea43a39d6bcc7b75580a (patch)
treede40515eab996e6c8ae2cdcc9cfdfaf7a197f4e2
parentc47cebdbd2d971feefd839a61213a0ec643c46bf (diff)
downloadgdb-fa5281d02b823b7a847bea43a39d6bcc7b75580a.zip
gdb-fa5281d02b823b7a847bea43a39d6bcc7b75580a.tar.gz
gdb-fa5281d02b823b7a847bea43a39d6bcc7b75580a.tar.bz2
* 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.
-rw-r--r--gdb/ChangeLog8
-rw-r--r--gdb/breakpoint.c9
-rw-r--r--gdb/breakpoint.h2
-rw-r--r--gdb/infrun.c6
4 files changed, 20 insertions, 5 deletions
diff --git a/gdb/ChangeLog b/gdb/ChangeLog
index a190150..f3f39f0 100644
--- a/gdb/ChangeLog
+++ b/gdb/ChangeLog
@@ -1,5 +1,13 @@
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).
2004-02-01 Daniel Jacobowitz <drow@mvista.com>
diff --git a/gdb/breakpoint.c b/gdb/breakpoint.c
index 11827f4..ebd73f1 100644
--- a/gdb/breakpoint.c
+++ b/gdb/breakpoint.c
@@ -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--;
diff --git a/gdb/breakpoint.h b/gdb/breakpoint.h
index b3253c7..1a4fada 100644
--- a/gdb/breakpoint.h
+++ b/gdb/breakpoint.h
@@ -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);
/* This bpstat_what stuff tells wait_for_inferior what to do with a
breakpoint (a challenging task). */
diff --git a/gdb/infrun.c b/gdb/infrun.c
index 5ab604c..f16f423 100644
--- a/gdb/infrun.c
+++ b/gdb/infrun.c
@@ -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. */