More assert checks on reinsert breakpoint
authorYao Qi <yao.qi@linaro.org>
Fri, 17 Jun 2016 09:25:12 +0000 (10:25 +0100)
committerYao Qi <yao.qi@linaro.org>
Fri, 17 Jun 2016 09:38:19 +0000 (10:38 +0100)
This patch adds more asserts, so the incorrect or sub-optimal
reinsert breakpoints manipulations (from the tests in the following
patches) can trigger them.

gdb/gdbserver:

2016-06-17  Yao Qi  <yao.qi@linaro.org>

* linux-low.c (linux_resume_one_lwp_throw): Assert
has_reinsert_breakpoints returns false.
* mem-break.c (delete_disabled_breakpoints): Assert
bp type isn't reinsert_breakpoint.

gdb/gdbserver/ChangeLog
gdb/gdbserver/linux-low.c
gdb/gdbserver/mem-break.c

index 70f64fff19b80ec92847dd1914f0cab12924611f..c7a95951d95418cdac31d6ad91484793802f5f7d 100644 (file)
@@ -1,3 +1,10 @@
+2016-06-17  Yao Qi  <yao.qi@linaro.org>
+
+       * linux-low.c (linux_resume_one_lwp_throw): Assert
+       has_reinsert_breakpoints returns false.
+       * mem-break.c (delete_disabled_breakpoints): Assert
+       bp type isn't reinsert_breakpoint.
+
 2016-06-17  Yao Qi  <yao.qi@linaro.org>
 
        * linux-low.c (maybe_hw_step): New function.
index 77c296ca2a1970ff0c8a6a9573ad90de7e53da81..5f025b5553ff9e052c0eec93492cedfde4bfc7fe 100644 (file)
@@ -4237,6 +4237,12 @@ linux_resume_one_lwp_throw (struct lwp_info *lwp,
 
       step = maybe_hw_step (thread);
     }
+  else
+    {
+      /* If the thread isn't doing step-over, there shouldn't be any
+        reinsert breakpoints.  */
+      gdb_assert (!has_reinsert_breakpoints (proc));
+    }
 
   if (fast_tp_collecting == 1)
     {
index 3313459b9a21d804dc4d683ddb1f5407c8925785..c27e803027ce44b1bd0acee51a10f5b2127dc31d 100644 (file)
@@ -1740,7 +1740,12 @@ delete_disabled_breakpoints (void)
     {
       next = bp->next;
       if (bp->raw->inserted < 0)
-       delete_breakpoint_1 (proc, bp);
+       {
+         /* If reinsert_breakpoints become disabled, that means the
+            manipulations (insertion and removal) of them are wrong.  */
+         gdb_assert (bp->type != reinsert_breakpoint);
+         delete_breakpoint_1 (proc, bp);
+       }
     }
 }