This is the mail archive of the
gdb-patches@sourceware.org
mailing list for the GDB project.
[ping][RFA] Return trampoline generic pieces
- From: "Maciej W. Rozycki" <macro at codesourcery dot com>
- To: <gdb-patches at sourceware dot org>
- Cc: Joel Brobecker <brobecker at adacore dot com>
- Date: Fri, 20 Apr 2012 13:54:10 +0100
- Subject: [ping][RFA] Return trampoline generic pieces
Hi,
Would anyone please have a look at the infrun.c changes made as a part of
this submission:
http://sourceware.org/ml/gdb-patches/2012-04/msg00197.html
and tell me if they are all right or not? Here's the relevant excerpt
from the full patch description:
"4. A handler is now installed to skip over return thunks while
single-stepping at the source level, reusing the shared library return
trampoline hook. As per the comment included, there is no overlap here
as no MIPS ABI uses shared library return trampolines.
This modification, however, requires a change to generic code -- in
handle_inferior_event (infrun.c). This is because a return thunk is
called like an ordinary function and therefore once reached, things
looks as if a new frame has been created. As a result code that checks
for subroutine calls triggers, at which point there is no way to back
out -- while the trampoline handler may still be used there (like for
call thunks) to skip over the return thunk, the subroutine call handler
insists on skipping over code further, to the next source line.
Which, given that we're about to return from a function, means the
point after the return instruction. Now placing the single-stepping
breakpoint there -- doesn't quite work as expected.
Therefore my proposal is to reverse the order of the checks made in
handle_inferior_event -- it looks to me there have been no particular
reason for why they have been put in the current order, except that one
must have been chosen. Currently there are two users of the shared
library return trampoline hook: hppa-hpux-tdep.c and rs6000-tdep.c.
The latter is rather trivial and makes me almost sure that the order of
the checks does not matter. The former is less obvious to me, but I
think it does not care either. Input from people knowledgeable on
these platforms will be appreciated."
Thanks.
Maciej