This is the mail archive of the
gdb-patches@sourceware.org
mailing list for the GDB project.
Re: [PATCH v2 03/23] PR13858 - Can't do displaced stepping with no symbols
- From: Pedro Alves <palves at redhat dot com>
- To: gdb-patches at sourceware dot org
- Date: Thu, 09 Apr 2015 13:46:05 +0100
- Subject: Re: [PATCH v2 03/23] PR13858 - Can't do displaced stepping with no symbols
- Authentication-results: sourceware.org; auth=none
- References: <1428410990-28560-1-git-send-email-palves at redhat dot com> <1428410990-28560-4-git-send-email-palves at redhat dot com>
On 04/07/2015 01:49 PM, Pedro Alves wrote:
> Running break-interp.exp with the target always in non-stop mode trips
> on PR13858, as enabling non-stop also enables displaced stepping.
>
> The problem is that when GDB doesn't know where the entry point is, it
> doesn't know where to put the displaced stepping scratch pad. The
> test added by this commit exercises this. Without the fix, we get:
>
> (gdb) PASS: gdb.base/step-over-no-symbols.exp: displaced=on: break *$pc
> set displaced-stepping on
> (gdb) PASS: gdb.base/step-over-no-symbols.exp: displaced=on: set displaced-stepping on
> stepi
> 0x00000000004005be in ?? ()
> Entry point address is not known.
> (gdb) PASS: gdb.base/step-over-no-symbols.exp: displaced=on: stepi
> p /x $pc
> $2 = 0x4005be
> (gdb) PASS: gdb.base/step-over-no-symbols.exp: displaced=on: get after PC
> FAIL: gdb.base/step-over-no-symbols.exp: displaced=on: advanced
>
> The fix is to fall back to stepping over the breakpoint in-line if we
> don't know where the entry point address is.
>
> This is enough to fix all-stop + "set displaced on". For non-stop,
> we'll need to teach core gdb to pause all threads to be able to start
> the in-line step-over (because then we need to remove the breakpoint
> from the target temporarily).
Hmm, actually not all targets get the entry point from symbols -- when
Cell debugging is enabled, PPC gets the entry point from AT_ENTRY from
the auxv... We should probably make that the default on GNU/Linux.
I just tried that now on x86-64 and it worked fine.
Thanks,
Pedro Alves