This is the mail archive of the
gdb-patches@sourceware.org
mailing list for the GDB project.
Re: [PATCH v3 10/17] Implement all-stop on top of a target running non-stop mode
- From: Yao Qi <qiyaoltc at gmail dot com>
- To: Pedro Alves <palves at redhat dot com>
- Cc: Yao Qi <qiyaoltc at gmail dot com>, gdb-patches at sourceware dot org
- Date: Fri, 24 Apr 2015 08:39:11 +0100
- Subject: Re: [PATCH v3 10/17] Implement all-stop on top of a target running non-stop mode
- Authentication-results: sourceware.org; auth=none
- References: <1429267521-21047-1-git-send-email-palves at redhat dot com> <1429267521-21047-11-git-send-email-palves at redhat dot com> <86a8y1zqkd dot fsf at gmail dot com> <5538017B dot 9040907 at redhat dot com>
Pedro Alves <palves@redhat.com> writes:
>> This path is about the case that a signal is got while in in-line
>> stepping, isn't? If so, non_stop should be an invariant false. We
>> don't need to check it.
>
> Hmm, not sure what you mean:
>
Let me ask it in another way, when we get here, it means a signal
arrived, the code some lines above is:
if (debug_infrun)
fprintf_unfiltered (gdb_stdlog,
"infrun: signal arrived while stepping over "
"breakpoint\n");
GDB just did the breakpoint step over, via in-line stepping or
out-of-line stepping, right? as your patch below shows.
> - We need to do this with displaced stepping too, because we can't
> deliver signals while doing a displaced step. See comments at the
> top of displaced_step_prepare and in do_target_resume.
The first sentence is contradictory, or you mean we *can* do either
out-of-line stepping or in-line stepping, but we can't deliver a signal
while doing a displaced stepping...
>
> - We can certainly get a signal while doing an in-line step-over.
> The simplest would be, trying to step-over a breakpoint here:
>
> *(volatile int *)0 = 1;
>
> which usually results SIGSEGV.
... while we can deliver a signal in in-line stepping. Is it correct?
--
Yao (éå)