This is the mail archive of the mailing list for the GDB project.

Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

ARM Simulator Bug?

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"
"	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"

My main file:

#include "tester.h"

int main()
	unsigned int b=0x01;
	unsigned int count = 0x00;	
	while ( b != 0x00)
	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?

Dave Mc Kenna


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]