From patchwork Tue Apr 7 15:52:04 2015 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Yao Qi X-Patchwork-Id: 6072 Received: (qmail 92762 invoked by alias); 7 Apr 2015 15:52:15 -0000 Mailing-List: contact gdb-patches-help@sourceware.org; run by ezmlm Precedence: bulk List-Id: List-Unsubscribe: List-Subscribe: List-Archive: List-Post: List-Help: , Sender: gdb-patches-owner@sourceware.org Delivered-To: mailing list gdb-patches@sourceware.org Received: (qmail 92703 invoked by uid 89); 7 Apr 2015 15:52:15 -0000 Authentication-Results: sourceware.org; auth=none X-Virus-Found: No X-Spam-SWARE-Status: No, score=-0.4 required=5.0 tests=AWL, BAYES_00, FREEMAIL_FROM, RCVD_IN_DNSWL_LOW, SPF_PASS autolearn=ham version=3.3.2 X-HELO: mail-pd0-f172.google.com Received: from mail-pd0-f172.google.com (HELO mail-pd0-f172.google.com) (209.85.192.172) by sourceware.org (qpsmtpd/0.93/v0.84-503-g423c35a) with (AES128-GCM-SHA256 encrypted) ESMTPS; Tue, 07 Apr 2015 15:52:12 +0000 Received: by pdbnk13 with SMTP id nk13so83116137pdb.0 for ; Tue, 07 Apr 2015 08:52:10 -0700 (PDT) X-Received: by 10.66.235.36 with SMTP id uj4mr37601902pac.123.1428421930623; Tue, 07 Apr 2015 08:52:10 -0700 (PDT) Received: from E107787-LIN.cambridge.arm.com (gcc1-power7.osuosl.org. [140.211.15.137]) by mx.google.com with ESMTPSA id u8sm6893859pdj.46.2015.04.07.08.52.09 for (version=TLSv1.2 cipher=ECDHE-RSA-AES128-SHA bits=128/128); Tue, 07 Apr 2015 08:52:10 -0700 (PDT) From: Yao Qi To: gdb-patches@sourceware.org Subject: [PATCH 1/2] [gdbserver] assert on step if !can_hardware_single_step Date: Tue, 7 Apr 2015 16:52:04 +0100 Message-Id: <1428421925-18025-2-git-send-email-qiyaoltc@gmail.com> In-Reply-To: <1428421925-18025-1-git-send-email-qiyaoltc@gmail.com> References: <1428421925-18025-1-git-send-email-qiyaoltc@gmail.com> X-IsSubscribed: yes From: Yao Qi 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 * 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;