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: sravan megan <sravan22021987 at gmail dot com>
- To: Michael Eager <eager at eagerm dot com>
- Cc: gdb at sourceware dot org
- Date: Tue, 20 Aug 2013 11:54:48 +0530
- 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>
Hello Mike,
Thanks for the reply.
On Tue, Aug 20, 2013 at 5:03 AM, Michael Eager <eager@eagerm.com> 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 eager@eagercon.com
> 1960 Park Blvd., Palo Alto, CA 94306 650-325-8077
Regards,
Sravan