This is the mail archive of the gdb-patches@sourceware.org mailing list for the GDB project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

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


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 (éå)


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]