This is the mail archive of the
gdb@sources.redhat.com
mailing list for the GDB project.
Re: Debugging frameless code
- To: Nicolas dot Thery at Symbian dot com, gdb at sources dot redhat dot com
- Subject: Re: Debugging frameless code
- From: Kevin Buettner <kevinb at cygnus dot com>
- Date: Fri, 29 Sep 2000 02:43:41 -0700
- References: <OF27956B0F.BD422E09-ON80256969.0032B0C3@symbian.com>
On Sep 29, 10:26am, Nicolas.Thery@Symbian.com wrote:
> Kevin Buettner <kevinb@cygnus.com> wrote:
>
> > > To be more precise, is it possible to dump stack backtrace for
> frameless
> > > code using a recent version of gdb and elf/dwarf2 (and gcc as the
> > > compiler)?
> >
> > In some cases, yes. For example, I've been able to do this for
> > Linux/IA-64. (But it's also the case that as the optimization gets
> > more aggressive, this could fail.)
> >
> > Which target in particular were you wondering about?
>
> Thanks for your answer.
>
> I'm interested in ARM/THUMB debugging. Currently I use GDB 4.17 (from
> Cygnus GNUPro 98r2) with PE-COFF/STABS. With that configuration backtrace
> does not work if the involved functions are frameless. I was wondering
> whether the situation would be improved by using a more recent version of
> GDB and/or ELF/DWARF.
>
> I looked at the ARM backtrace code in the GDB CVS repository a couple of
> months ago and it seemed quite similar to GDB 4.17 but I may be wrong.
I haven't tried frameless functions for ARM (and certainly not for
THUMB). However, I did commit the following change recently which
does help gdb better deal with optimized code (the arm_scan_prologue
bit):
2000-09-05 Kevin Buettner <kevinb@redhat.com>
* config/arm/tm-linux.h (arm_linux_sigcontext_register_address,
arm_linux_in_sigtramp): Declare.
(IN_SIGTRAMP, SIGCONTEXT_REGISTER_ADDRESS): Define.
* arm-tdep.c (SIGCONTEXT_REGISTER_ADDRESS): Define to be 0
if not already defined by tm.h.
(arm_scan_prologue): Don't assume that the prologue instructions
will be in a contiguous clump.
(arm_init_extra_frame_info): Add support for sigtramp frames.
(arm_pc_is_thumb, arm_pc_is_thumb_dummy): Change type of
`memaddr' from bfd_vma to CORE_ADDR.
* arm-linux-tdep.c (gdbcore.h, frame.h): Include.
(arm_pc_is_thumb): Declare.
(arm_linux_skip_solib_resolver): Fix printf() statement. [Which
shouldn't be there anyway.]
(ARM_LINUX_SIGRETURN_INSTR, ARM_LINUX_RT_SIGRETURN_INSTR): New
defines.
(arm_linux_in_sigtramp, arm_linux_sigcontext_register_address):
New functions.
You may want to try the current development sources and see how they
work for you.
Kevin