diff options
author | Daniel Jacobowitz <drow@false.org> | 2004-02-01 18:05:09 +0000 |
---|---|---|
committer | Daniel Jacobowitz <drow@false.org> | 2004-02-01 18:05:09 +0000 |
commit | fa5281d02b823b7a847bea43a39d6bcc7b75580a (patch) | |
tree | de40515eab996e6c8ae2cdcc9cfdfaf7a197f4e2 | |
parent | c47cebdbd2d971feefd839a61213a0ec643c46bf (diff) | |
download | gdb-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/ChangeLog | 8 | ||||
-rw-r--r-- | gdb/breakpoint.c | 9 | ||||
-rw-r--r-- | gdb/breakpoint.h | 2 | ||||
-rw-r--r-- | gdb/infrun.c | 6 |
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. */ |