Re: [PATCH 2/2] Enable range stepping for ARM on GDBServer

Antoine Tremblay
2016-08-31T18:15:47Z

Pedro Alves writes:

> On 08/31/2016 06:14 PM, Antoine Tremblay wrote:
>> This patch enables range stepping to be done in GDBServer with an ARM
>> target.
>>
>> There is one problem however with the gdb.threads/non-stop-fair-events.exp
>> test.
>>
>> Since single stepping is done in software and that displaced stepping is
>> not supported, threads end up hitting each others breakpoints and the main
>> thread can't make any progress passed a number of threads on my system.
>>
>> Thus we get:
>> FAIL: gdb.threads/non-stop-fair-events.exp: signal_thread=5: thread 1
>> broke out of loop (timeout)
>>
>> Note that even letting it go an hour doesn't help so bumping the timeout
>> is out of the question.
>>
>> I'm not sure what to do about this one ? kfail ? ideas ?
>
> Hmm, this is exactly the sort of problem the test is meant to
> catch, and the reason we do event thread randomization:
>
> # Test that GDB in non-stop mode gives roughly equal priority to
> # events of all threads.
>
> Why does it work without range stepping, but not with?
>

If I recall correctly GDBServer will report each stepi to GDB
without range stepping but will continue in gdbserver when range
stepping is on, thus the run control is different.

And that GDBServer's run control is not as fair as GDB's for such
situations.

Maybe it could be made to work, I remember trying a few things but after
spending quite some time on it I could not wrap my head around it. Thus
my call for ideas here.

(It's been a few weeks since I've touched this, please forgive my lack
of details)

> E.g., back when we did:
>
> commit 1ed415e2b9b985aac087c35949d0e1e489ab496d
> Author: Pedro Alves <palves@redhat.com>
> AuthorDate: Wed Sep 16 15:51:36 2015 +0100
>
> non-stop-fair-events.exp slower on software single-step && !displ-step targets
>
> On software single-step targets that don't support displaced stepping,
> threads keep hitting each other's single-step breakpoints, and then
> GDB needs to pause all threads to step past those. The end result is
> that progress in the main thread will be slower and it may take a bit
> longer for the signal to be queued. This patch bumps the timeout on
> such targets.
>
> gdb/testsuite/ChangeLog:
> 2015-09-16 Pedro Alves <palves@redhat.com>
> Sandra Loosemore <sandra@codesourcery.com>
> [...]
>
>
> ... the test always managed to complete on sss && !displ-step targets.
>

But that was with GDB only right ? Since ARM is the only target with
software single step in GDBServer.