This is the mail archive of the
gdb@sources.redhat.com
mailing list for the GDB project.
ARM Simulator Bug?
- From: "David Mc Kenna" <mckennad at esatclear dot ie>
- To: gdb at sources dot redhat dot com,insight at sources dot redhat dot com
- Date: Tue, 2 Sep 2003 12:27:09 +0100
- Subject: ARM Simulator Bug?
- Reply-to: mckennad at esatclear dot ie
Hi all,
Has anyone else come across something similar to the below??
I have a startup file embedded in a header file using inline assembly. This
file contains the Interrupt vectors for an ARM7TDMi. The main file is compiled
as ARM and I can simulate this perfectly.
When I insert a BX command at the end of the inline assembly and add the
-mthumb CL option to instruct gcc to compile the main as thumb it generates
the elf. Then when I go to the simulator things go weird. If I place a "b ."
command at the end of the inline assembly, I can stop gdb at this point and
it stays at the correct point, i.e. at the b .. But if I remove the "b ." command
the simulator goes hay-wire, i.e. Does not know where it is
The embedded file:
asm(".org 0x00\n"
"\n"
" b tst_start @ SVC 0x00\n"
" b tst_start @ Undfd InstrUND 0x04\n"
" b tst_start @ SWI _StartupSVC 0x08\n"
" b tst_start @ Pre Abort ABORT 0x0C\n"
" b tst_start @ Data AbortABORT 0x10\n"
" b tst_start\n"
" b tst_start @ IRQ _StartupIRQ 0x18\n"
" b tst_start @ FIQ _Startup FIQ 0x1C\n"
".global tst_start\n"
"tst_start: \n"
" mov sp,#0x12000\n"
" adr R0,tmp+1\n"
" bx R0\n" !!!!!!!!! Problem Line
".code 16\n"
"tmp:\n"
"\n");
My main file:
#include "tester.h"
int main()
{
unsigned int b=0x01;
unsigned int count = 0x00;
while ( b != 0x00)
{
count++;
}
return 0;
}
My compile script:
arm-elf-gcc.exe -mthumb \
$1.c -mthumb-interwork -mcpu=arm7tdmi\
-g -Wall -nostartfiles -mlittle-endian -save-temps -O$2 \
-Wl,-T /c/tst/scripts/clink.x -o $1.elf
I have tried this with the same result with gcc3.2.3, gcc version 3.3.2 20030825
and gdb snapshots from 10-6-2003 and 01-09-2003
Any ideas?
Thanks,
Dave Mc Kenna
--
http://www.iol.ie