Debugging frameless code

Kevin Buettner kevinb@cygnus.com
Fri Sep 29 02:44:00 GMT 2000


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


More information about the Gdb mailing list