From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 24272 invoked by alias); 6 May 2005 03:35:08 -0000 Mailing-List: contact gdb-help@sources.redhat.com; run by ezmlm Precedence: bulk List-Subscribe: List-Archive: List-Post: List-Help: , Sender: gdb-owner@sources.redhat.com Received: (qmail 24209 invoked from network); 6 May 2005 03:35:02 -0000 Received: from unknown (HELO rproxy.gmail.com) (64.233.170.197) by sourceware.org with SMTP; 6 May 2005 03:35:02 -0000 Received: by rproxy.gmail.com with SMTP id a36so722152rnf for ; Thu, 05 May 2005 20:35:02 -0700 (PDT) Received: by 10.11.94.34 with SMTP id r34mr46349cwb; Thu, 05 May 2005 20:35:02 -0700 (PDT) Received: by 10.11.99.70 with HTTP; Thu, 5 May 2005 20:35:02 -0700 (PDT) Message-ID: <7f45d93905050520353a1dc5ed@mail.gmail.com> Date: Fri, 06 May 2005 03:35:00 -0000 From: Shaun Jackman Reply-To: Shaun Jackman To: gdb@sources.redhat.com Subject: Re: Disassembling ARM and Thumb code In-Reply-To: <20050506015559.GA3922@nevyn.them.org> Mime-Version: 1.0 Content-Type: text/plain; charset=ISO-8859-1 Content-Transfer-Encoding: quoted-printable Content-Disposition: inline References: <7f45d93905050517053a33f3c9@mail.gmail.com> <20050506015559.GA3922@nevyn.them.org> X-SW-Source: 2005-05/txt/msg00067.txt.bz2 On 5/5/05, Daniel Jacobowitz wrote: > On Thu, May 05, 2005 at 05:05:56PM -0700, Shaun Jackman wrote: > > My ARM7TDMI processor is currently in Thumb mode, but the x/i command > > dissects the instruction as an ARM instruction. The symbol > > rdp_getargvsp is a Thumb symbol added using add-symbol-file [elf > > binary here]. What is the command to disassemble a given memory > > location as a Thumb instruction? >=20 > How is it marked as Thumb in the binary? It's marked with a $t symbol at the same address. $ nm busybox | grep 020004dd 020004dd t $t 020004dd t rdp_getargvsp I haven't read this in documentation; only noticed it from empirical evidence. For example, here's a symbol compiled for ARM marked with a $a symbol at the same address. $ nm hello | grep 000081f8 000081f8 t $a 000081f8 T main > GDB does not use the current CPSR value when disassembling; that way > lies madness. Hehe. I agree, that's probably not the best plan. However, for the unique case of 'x/i $pc' it does make a certain amount of sense to use the CPSR as a hint. I'm not sure if it's worth the special case though. An explicit switch to the x/i and disas commands to specify ARM or Thumb dissection is very much a good idea though. Cheers, Shaun