OSDN Git Service

* breakpoint.c (bpstat_stop_status): Clear breakpoint_at for
authordaney <daney>
Tue, 16 Sep 2008 18:54:59 +0000 (18:54 +0000)
committerdaney <daney>
Tue, 16 Sep 2008 18:54:59 +0000 (18:54 +0000)
all hardware bpstats.

gdb/ChangeLog
gdb/breakpoint.c

index 0578859..16d6891 100644 (file)
@@ -1,3 +1,8 @@
+2008-09-16  David Daney  <ddaney@avtrex.com>
+
+       * breakpoint.c (bpstat_stop_status): Clear breakpoint_at for
+       all hardware bpstats.
+
 2008-09-16  Joel Brobecker  <brobecker@adacore.com>
 
        * gstdint.h: Delete.
index 9454428..6e863d7 100644 (file)
@@ -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;
 }
 \f