Re: Fwd: Backtrace stopped: frame did not save the PC
sravan megan <[email protected]>
| Newsgroups | gmane.comp.gdb.devel |
|---|---|
| Message-ID | <CAESop7U3jKLDqZVE=2YoUjL2r+di-RA-0pgHVUmN1AM4Ld+uEw@mail.gmail.com> |
Hello Mike, Thanks for the reply. On Tue, Aug 20, 2013 at 5:03 AM, Michael Eager <[email protected]> wrote: > On 08/19/13 00:15, sravan megan wrote: >> >> Hi All, >> >> I am working on Microblaze GDB (7.4.50) version. >> >> GDB is throwing "frame did not save the PC" error if the program is not >> compiled with "-g" >> (debugging info) > > > >> I know that without debugging information GDB will not give complete trace >> information but with >> out debugging info GDB should atleast give the function names. > > > As far as I can see from your example, gdb did print the function > names. > > 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 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 Building file: ../src/platform.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/platform.d" -MT"src/platform.d" -o "src/platform.o" "../src/platform.c" Finished building: ../src/platform.c Building target: hello.elf Invoking: MicroBlaze gcc linker mb-gcc -Wl,-T -Wl,../src/lscript.ld -L../../hello_bsp/microblaze_1/lib -mlittle-endian -mxl-pattern-compare -mno-xl-soft-div -mcpu=v8.00.b -mno-xl-soft-mul -Wl,--no-relax -Wl,--gc-sections -o "hello.elf" ./src/helloworld.o ./src/platform.o -Wl,--start-group,-lxil,-lgcc,-lc,--end-group Finished building target: hello.elf I have set the debugging level to none in xsdk i.e no "-g" option in compilation. > > >> Can anyone please let me know where to look in to GDB code so that GDBcan >> store information of >> main frame details and execute backtrace correctly. > > > You can take a look at microblaze_analyze_prologue() in > gdb/microblaze-tdep.c. > > The error is issued in get_prev_frame_1() in frame.c. > 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?? > -- > Michael Eager [email protected] > 1960 Park Blvd., Palo Alto, CA 94306 650-325-8077 Regards, Sravan