From 8376a3cbf73ca8b623db1daa8f9c49fb83ac54bd Mon Sep 17 00:00:00 2001 From: Yao Qi Date: Fri, 17 Jun 2016 10:25:12 +0100 Subject: [PATCH] More assert checks on reinsert breakpoint 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 * 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 | 7 +++++++ gdb/gdbserver/linux-low.c | 6 ++++++ gdb/gdbserver/mem-break.c | 7 ++++++- 3 files changed, 19 insertions(+), 1 deletion(-) diff --git a/gdb/gdbserver/ChangeLog b/gdb/gdbserver/ChangeLog index 70f64fff19b..c7a95951d95 100644 --- a/gdb/gdbserver/ChangeLog +++ b/gdb/gdbserver/ChangeLog @@ -1,3 +1,10 @@ +2016-06-17 Yao Qi + + * 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 * linux-low.c (maybe_hw_step): New function. diff --git a/gdb/gdbserver/linux-low.c b/gdb/gdbserver/linux-low.c index 77c296ca2a1..5f025b5553f 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 3313459b9a2..c27e803027c 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); + } } } -- 2.30.2