Hi, Aditya + Chirag

 

You have to make sure that everything is compiled and linked with debug option set (“-g” for GNU toolchains) and then apply “objdump” on an unstripped image, where the debug symbols are removed. The final boot image is usually stripped to keep it small.

The unstripped image should also exist at the build location, and “objdump” output should look like this:

80e804d8 <wait_on_value>:

wait_on_value():

/home/.../syslib.c:60

80e804d8:       e3a0c000        mov     ip, #0

/home/.../syslib.c:59

80e804dc:       e92d4010        push    {r4, lr}

 

Frank

From: Aditya Kousik [mailto:adit267.kousik@...9...]
Sent: Wednesday, July 23, 2014 1:28 PM
To: Genode OS Framework Mailing List
Subject: Re: Kernel Initialized in iMX6

 

Hello Stefan,

Three months ago, when I received a page fault (RM error), Norman suggested using objdump and I did it as follows with Genode toolchain:
In var/run/printf:
$ /usr/local/genode-gcc/arm-elf-eabi/bin/objdump -lSd image.elf | less

While we were able to find the conflicting address and IP, it was of no help because we couldn't trace it to the faulty line (primarily because we don't speak hexa). Is there a way of doing this, that is, Finding which line of code the IP is a part of?

Thanks
Aditya.