Re: Fwd: Backtrace stopped: frame did not save the PC
Michael Eager <[email protected]>
| Newsgroups | gmane.comp.gdb.devel |
|---|---|
| Message-ID | <[email protected]> |
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 [email protected] 1960 Park Blvd., Palo Alto, CA 94306 650-325-8077