This is the mail archive of the
gdb@sourceware.org
mailing list for the GDB project.
Re: Fwd: Backtrace stopped: frame did not save the PC
- From: Michael Eager <eager at eagerm dot com>
- To: sravan megan <sravan22021987 at gmail dot com>
- Cc: gdb at sourceware dot org
- Date: Tue, 20 Aug 2013 09:54:49 -0700
- Subject: Re: Fwd: Backtrace stopped: frame did not save the PC
- References: <CAESop7Uxpo46gbxiPU9-RnvcEbnzNEOsupuWQCotE0Ev9ha_RQ at mail dot gmail dot com> <CAESop7UvR-HURs3kimaeEju=HVq+xwx21sms-OpRBszB2hsjew at mail dot gmail dot com> <5212AB55 dot 9050203 at eagerm dot com> <CAESop7U3jKLDqZVE=2YoUjL2r+di-RA-0pgHVUmN1AM4Ld+uEw at mail dot gmail dot com>
On 08/19/13 23:24, sravan megan wrote:
You don't indicate what options were used when you compile.
When you compile without optimization, MicroBlaze stores
the previous frame pointer in the stack frame. With -O1,
MicroBlaze does not save the frame pointer in the stack frame.
I have used the XSDK to build my application. Below are the compiler flags
You should contact Xilinx technical support for help with
gdb distributed in the Xilinx SDK. There are differences between
FSF gcc/gdb sources and the sources used to build the SDK.
If you are using a tool chain built with the FSF sources,
I'm better able to help you.
Building file: ../src/helloworld.c
Invoking: MicroBlaze gcc compiler
mb-gcc -Wall -O0 -c -fmessage-length=0
-I../../hello_bsp/microblaze_1/include -mlittle-endian
-mxl-pattern-compare -mno-xl-soft-div -mcpu=v8.00.b -mno-xl-soft-mul
-Wl,--no-relax -ffunction-sections -fdata-sections -MMD -MP
-MF"src/helloworld.d" -MT"src/helloworld.d" -o "src/helloworld.o"
"../src/helloworld.c"
Finished building: ../src/helloworld.c
You can check the generated code (either assembly or by using objdump)
to confirm that a frame pointer is being saved.
I looked at them they seem to be good but I have doubt on
"microblaze_frame_prev_register" function.
This function seems to always return r15/r1 registers as regnum for
"trad_frame_get_prev_register" function for any frame in my case. Is
this behaviour correct??
It depends on whether microblaze_analyze_prologue() determines
if there is a frame or not. If it believes that there is no
frame, then it always returns R15/R1 for PC/SP.
--
Michael Eager eager@eagercon.com
1960 Park Blvd., Palo Alto, CA 94306 650-325-8077