This is the mail archive of the
gdb-patches@sources.redhat.com
mailing list for the GDB project.
Re: [RFA] Tru64 stack unwinding fix
- From: Joel Brobecker <brobecker at gnat dot com>
- To: Andrew Cagney <ac131313 at cygnus dot com>
- Cc: gdb-patches at sources dot redhat dot com
- Date: Tue, 18 Jun 2002 18:20:19 -0700
- Subject: Re: [RFA] Tru64 stack unwinding fix
- References: <20020614120726.G17001@gnat.com> <3D0FC7A0.10601@cygnus.com>
> > Ok to commit?
>
> Yes (you're in a better position then most to test it). The change to
> handle FP and alloca() is very important and something often missed.
Thanks. This is now in (I also corrected the little typo you found
in one of the comments).
> I suspect a non-ada aware GDB and a breakpoint on
> *__hstTransferRegistersPC would do the trick :-)
Yes it did, silly me :-).
Just for the record, here is the output before my patch:
<<
(gdb) b __hstTransferRegistersPC
Breakpoint 2 at 0x3ff8057d43c
(gdb) c
Continuing.
Breakpoint 2, 0x000003ff8057d43c in __hstTransferRegistersPC ()
from /usr/shlib/libpthread.so
(gdb) bt
#0 0x000003ff8057d43c in __hstTransferRegistersPC ()
from /usr/shlib/libpthread.so
#1 0x000003ff8056e8e4 in __osTransferContext () from /usr/shlib/libpthread.so
warning: Hit beginning of text section without finding
warning: enclosing function for address 0x13
>>
> I think someone should re-implement read_next_frame_reg() using:
>
> /* Unwind the stack frame so that the value of REGNUM, in the previous
> frame is returned. If VALUEP is NULL, don't fetch/compute the
> value. Instead just return the location of the value. */
>
> extern void frame_register_unwind (struct frame_info *frame, int regnum,
> int *optimizedp, enum lval_type *lvalp,
> CORE_ADDR *addrp, int *realnump,
> void *valuep);
>
> as this will work with CFI and generic dummy frames.
Ack, I'll try to do this when I have a spare moment...
Thanks for the quick review.
--
Joel