gdb backtrace after SIGILL on Xscale (ARM)
Shane Volpe
shanevolpe@gmail.com
Tue Sep 23 17:28:00 GMT 2008
I'm trying to perform a backtrace using gdb after a SIGILL event on an
Xscale (ARM) target device. In order to simplify the issue I have
wrote a small program (http://en.wikipedia.org/wiki/SIGILL) whose only
purpose is to cause a SIGINT.
The code is:
int main()
{
unsigned char insn[4] = { 0xff, 0xff, 0xff, 0xff };
void (*function)() = (void (*)()) insn;
function();
}
I compiled it as follows:
gcc -o sigill sigill.c
I then run it on my host machine 'Linux, Arch: x86"
gdb /home/sigill
(gdb) run
Starting program: /home/sigill
Program received signal SIGILL, Illegal instruction.
0xbf81d400 in ?? ()
(gdb) bt
#0 0xbf81d400 in ?? ()
#1 0x08048363 in main ()
Every thing work as expected, I got a backtrace showing me the correct steps.
I then compiled the program for my target system "Linux, Arch: Xscale (ARM)"
I ran the app and got the following:
/home/sigill
BFD: /lib/.debug/ld-2.5.so: warning: sh_link not set for section `.ARM.exidx'
BFD: /lib/.debug/libc-2.5.so: warning: sh_link not set for section `.ARM.exidx'
Program received signal SIGILL, Illegal instruction.
0xbea7fc44 in ?? ()
(gdb) bt
#0 0xbea7fc44 in ?? ()
(gdb)
There is NO real information provided in the backtrace, why is this,
what might I be doing wrong?
Regards,
Shane
More information about the Gdb
mailing list