From d832cb68fbbd28120e6311f77e9564d91bc18bee Mon Sep 17 00:00:00 2001 From: David Daney Date: Tue, 16 Sep 2008 18:55:01 +0000 Subject: [PATCH] * breakpoint.c (bpstat_stop_status): Clear breakpoint_at for all hardware bpstats. --- gdb/ChangeLog | 5 +++++ gdb/breakpoint.c | 12 +++++++++--- 2 files changed, 14 insertions(+), 3 deletions(-) diff --git a/gdb/ChangeLog b/gdb/ChangeLog index 0578859..16d6891 100644 --- a/gdb/ChangeLog +++ b/gdb/ChangeLog @@ -1,3 +1,8 @@ +2008-09-16 David Daney + + * breakpoint.c (bpstat_stop_status): Clear breakpoint_at for + all hardware bpstats. + 2008-09-16 Joel Brobecker * gstdint.h: Delete. diff --git a/gdb/breakpoint.c b/gdb/breakpoint.c index 9454428..6e863d7 100644 --- a/gdb/breakpoint.c +++ b/gdb/breakpoint.c @@ -3054,6 +3054,7 @@ bpstat_stop_status (CORE_ADDR bp_addr, ptid_t ptid) /* Pointer to the last thing in the chain currently. */ bpstat bs = root_bs; int ix; + int need_remove_insert; ALL_BP_LOCATIONS (bl) { @@ -3146,6 +3147,7 @@ bpstat_stop_status (CORE_ADDR bp_addr, ptid_t ptid) if (bs->stop) break; + need_remove_insert = 0; if (bs == NULL) for (bs = root_bs->next; bs != NULL; bs = bs->next) if (!bs->stop @@ -3158,11 +3160,15 @@ bpstat_stop_status (CORE_ADDR bp_addr, ptid_t ptid) location is no longer used by the watchpoint. Prevent further code from trying to use it. */ bs->breakpoint_at = NULL; - remove_breakpoints (); - insert_breakpoints (); - break; + need_remove_insert = 1; } + if (need_remove_insert) + { + remove_breakpoints (); + insert_breakpoints (); + } + return root_bs->next; } -- 2.7.4