Re: [PATCH v3 10/17] Implement all-stop on top of a target running non-stop mode

Yao Qi
2015-04-24T07:39:21Z

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 (齐尧)