[02/12] More assert checks on reinsert breakpoint

Message ID 1464859846-15619-3-git-send-email-yao.qi@linaro.org
State New, archived
Headers

Commit Message

Yao Qi June 2, 2016, 9:30 a.m. UTC
  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-05-25  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/linux-low.c | 6 ++++++
 gdb/gdbserver/mem-break.c | 7 ++++++-
 2 files changed, 12 insertions(+), 1 deletion(-)
  

Comments

Pedro Alves June 13, 2016, 2:25 p.m. UTC | #1
On 06/02/2016 10:30 AM, Yao Qi wrote:
> 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-05-25  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.

OK.

Thanks,
Pedro Alves
  

Patch

diff --git a/gdb/gdbserver/linux-low.c b/gdb/gdbserver/linux-low.c
index 77c296c..5f025b5 100644
--- a/gdb/gdbserver/linux-low.c
+++ b/gdb/gdbserver/linux-low.c
@@ -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)
     {
diff --git a/gdb/gdbserver/mem-break.c b/gdb/gdbserver/mem-break.c
index 3313459..c27e803 100644
--- a/gdb/gdbserver/mem-break.c
+++ b/gdb/gdbserver/mem-break.c
@@ -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);
+	}
     }
 }