This is the mail archive of the
gdb@sources.redhat.com
mailing list for the GDB project.
Re: Disassembling ARM and Thumb code
On 5/5/05, Daniel Jacobowitz <drow@false.org> 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?
>
> 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