This is the mail archive of the
gdb-patches@sourceware.org
mailing list for the GDB project.
[PATCH 1/2] [gdbserver] assert on step if !can_hardware_single_step
- From: Yao Qi <qiyaoltc at gmail dot com>
- To: gdb-patches at sourceware dot org
- Date: Tue, 7 Apr 2015 16:52:04 +0100
- Subject: [PATCH 1/2] [gdbserver] assert on step if !can_hardware_single_step
- Authentication-results: sourceware.org; auth=none
- References: <1428421925-18025-1-git-send-email-qiyaoltc at gmail dot com>
From: Yao Qi <yao.qi@linaro.org>
GDB sends vCont;s by mistake to GDBserver on arm target which doesn't
have single step at all. However, it is hard to find the problem from
the debugging log. With this patch applied, the problem is easy to
identify, like:
(gdb) PASS: gdb.threads/non-stop-fair-events.exp: signal_thread=2: switch to thread 6 to step it
step&^M
(gdb) PASS: gdb.threads/non-stop-fair-events.exp: signal_thread=2: set 6 thread stepping
thread /home/yao/SourceCode/gnu/gdb/git/gdb/gdbserver/linux-low.c:3686: A problem internal to GDBserver has been detected.^M
linux_resume_one_lwp_throw: Assertion `step == 0' failed.
gdb/gdbserver:
2015-04-02 Yao Qi <yao.qi@linaro.org>
* linux-low.c (linux_resume_one_lwp_throw): Assert on step.
---
gdb/gdbserver/linux-low.c | 3 +++
1 file changed, 3 insertions(+)
diff --git a/gdb/gdbserver/linux-low.c b/gdb/gdbserver/linux-low.c
index e4c5420..bc6ab1ae 100644
--- a/gdb/gdbserver/linux-low.c
+++ b/gdb/gdbserver/linux-low.c
@@ -3682,6 +3682,9 @@ linux_resume_one_lwp_throw (struct lwp_info *lwp,
if (the_low_target.prepare_to_resume != NULL)
the_low_target.prepare_to_resume (lwp);
+ if (!can_hardware_single_step ())
+ gdb_assert (step == 0);
+
regcache_invalidate_thread (thread);
errno = 0;
lwp->stepping = step;
--
1.9.1