This is the mail archive of the gdb@sourceware.org mailing list for the GDB project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

Re: Does GDB 6.7.1 for PowerPC require the framepointer register for backtracing?


Hi Daniel,

Thanks for your information. We use GCC 3.4.4, and when debugging we use the compiler options -g -O0. I tried to add the compiler option -fomit-frame-pointer (which seems to be included by -O1 and higher but not by -O0) and then it works!!! So, my conclusion is that GDB 6.7.1 for PowerPC tries to take advantage of frame pointer information in the DWARF-2 debug information while GDB 6.3 does not. Is that correct? Is it always safe to use -fomit-frame-pointer on PowerPC, i.e. will it not make some type of C/C++ code undebuggable?

Regards,
Stefan


Daniel Jacobowitz wrote:


On Mon, Feb 11, 2008 at 12:03:25PM +0100, Stefan Bylund wrote:


Hi,

We recently upgraded from GDB 6.3 to GDB 6.7.1 and noticed that for PowerPC we can longer get a backtrace in certain cases. The problem is that when we initially attach to an existing process on a remote target, only the PC and SP registers are available. This worked fine with GDB 6.3 when doing a backtrace. However, GDB 6.7.1 fails when doing a backtrace in this case, and it seems that it tries to use the framepointer register (R31) for doing the backtrace and since this register is not available (i.e. it has value 0 in GDB's perspective), the backtrace fails.

Does GDB 6.7.1 requires the framepoint register (R31) for doing a backtrace?



It depends on your program and the available symbols and unwind information. For instance, it will use DWARF unwind tables if they are provided.



I have also noticed that if I don't install the dwarf2_frame_sniffer() and rs6000_adjust_frame_regnum() functions in rs6000_gdbarch_init() in rs6000-tdep.c, the backtrace works again even if the framepointer register is not available. However, I'm not sure exactly why... Is it safe to omit these two functions?



It sounds to me like you have DWARF information that says to use the frame pointer. Do you know if that's true?





--
---------------------------------
Stefan Bylund
Senior Software Engineer
Enea
Skalholtsgatan 9,
Box 1033, SE-164 21 Kista, Sweden
Direct: +46 8 50 71 43 25
Mobile: +46 709 71 43 25
stefan.bylund@enea.com
www.enea.com
---------------------------------
Enea - Embedded for Leaders
---------------------------------


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]