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] Displaced stepping (non-stop debugging) support for ARM Linux


Hi Julian,

On Tuesday 20 January 2009 22:13:55, Julian Brown wrote:
> As a side-effect of the lack of h/w single-stepping support, we've
> enabled displaced stepping in all cases, not just when stepping over
> breakpoints (a patch of Pedro Alves's, attached, but mangled by me to
> apply to mainline). I'm not sure if that's the most sensible approach
> (for displaced stepping, we only care about not *removing* breakpoints
> which might be hit by other threads. We can still add temporary
> breakpoints for the purpose of software single-stepping).

Right, you may end up with a temporary breakpoint over another breakpoint,
though.  It would be better to use the standard software
single-stepping (set temp break at next pc, continue, remove break) for
standard stepping requests, and use displaced stepping only for stepping
over breakpoints.  Unfortunately, you don't get that for free --- infrun.c
and friends don't know how to handle multiple simultaneous software
single-stepping requests, and that is required in non-stop mode.

On Tuesday 20 January 2009 22:13:55, Julian Brown wrote:
> 2008-11-19  Pedro Alves  <pedro@codesourcery.com>
> 
>     * infrun.c (displaced_step_fixup): If this is a software
>     single-stepping arch, don't tell the target to single-step.
>     (resume): If this is a software single-stepping arch, and
>     displaced-stepping is enabled, use it for all single-step
>     requests.  

By default, displaced stepping is only enabled in non-stop mode, so,
I'm fine with this being placed in the tree, as an incremental step.
This should not affect standard all-stop mode.  It is a step in the
right direction, IMO.

You'll need someone else to look over the ARM bits.  I wouldn't
mind at all if you added a general description of what you're doing
to arm-tdep.c, though.  Perhaps, even based on:

On Tuesday 20 January 2009 22:13:55, Julian Brown wrote:
> ARM support is relatively tricky compared to some other architectures,
> because there's no hardware single-stepping support. However we can
> fake it by making sure that displaced instructions don't modify control
> flow, and placing a software breakpoint after each displaced
> instruction. Also registers are rewritten to handle instructions which
> might read/write the PC. We must of course take care that the cleanup
> routine puts things back in the correct places.

-- 
Pedro Alves


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