From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 27493 invoked by alias); 2 Sep 2003 12:43:41 -0000 Mailing-List: contact insight-help@sources.redhat.com; run by ezmlm Precedence: bulk List-Subscribe: List-Archive: List-Post: List-Help: , Sender: insight-owner@sources.redhat.com Received: (qmail 27393 invoked from network); 2 Sep 2003 12:43:31 -0000 Received: from unknown (HELO cam-admin0.cambridge.arm.com) (193.131.176.54) by sources.redhat.com with SMTP; 2 Sep 2003 12:43:31 -0000 Received: from pc960.cambridge.arm.com (pc960.cambridge.arm.com [10.1.205.4]) by cam-admin0.cambridge.arm.com (8.9.3/8.9.3) with ESMTP id NAA05316; Tue, 2 Sep 2003 13:43:07 +0100 (BST) Received: from pc960.cambridge.arm.com (rearnsha@localhost) by pc960.cambridge.arm.com (8.11.6/8.9.3) with ESMTP id h82Ch7f24163; Tue, 2 Sep 2003 13:43:07 +0100 Message-Id: <200309021243.h82Ch7f24163@pc960.cambridge.arm.com> X-Authentication-Warning: pc960.cambridge.arm.com: rearnsha owned process doing -bs To: mckennad@esatclear.ie cc: gdb@sources.redhat.com, insight@sources.redhat.com, Richard.Earnshaw@arm.com Reply-To: Richard.Earnshaw@arm.com Organization: ARM Ltd. X-Telephone: +44 1223 400569 (direct+voicemail), +44 1223 400400 (switchbd) X-Fax: +44 1223 400410 X-Address: ARM Ltd., 110 Fulbourn Road, Cherry Hinton, Cambridge CB1 9NJ. X-Url: http://www.arm.com/ Subject: Re: ARM Simulator Bug? In-reply-to: Your message of "Tue, 02 Sep 2003 12:27:09 BST." <3f547e8d.791c.0@esatclear.ie> Mime-Version: 1.0 Content-Type: text/plain; charset=us-ascii Date: Tue, 02 Sep 2003 12:43:00 -0000 From: Richard Earnshaw X-SW-Source: 2003-q3/txt/msg00135.txt.bz2 > 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? It's more likely to be the way you are trying to get into Thumb state. Try adr r0, __start_of_thumb bx r0 .code 16 .global __start_of_thumb .thumb_func __start_of_thumb: This is really brokenness in the way gas implements ARM and Thumb code areas, but it's hard to fix properly until GAS starts using mapping symbols. R.