diff options
author | Paul Brook <paul@codesourcery.com> | 2005-11-02 16:53:11 +0000 |
---|---|---|
committer | Paul Brook <paul@codesourcery.com> | 2005-11-02 16:53:11 +0000 |
commit | c35297969a1e8aa46be999a3cd79aacb42010d34 (patch) | |
tree | 3648e3ee8122ee7656c219b77a7865a451079d52 | |
parent | b13e090651a2c20518286d1131dcabc27f23bfb6 (diff) | |
download | binutils-redhat-c35297969a1e8aa46be999a3cd79aacb42010d34.tar.gz |
2005-11-02 Paul Brook <paul@codesourcery.com>
* arm-dis.c (print_insn_thumb32): Word align blx target address.
-rw-r--r-- | opcodes/ChangeLog | 4 | ||||
-rw-r--r-- | opcodes/arm-dis.c | 7 |
2 files changed, 10 insertions, 1 deletions
diff --git a/opcodes/ChangeLog b/opcodes/ChangeLog index 5bf79149af..7d6757c80a 100644 --- a/opcodes/ChangeLog +++ b/opcodes/ChangeLog @@ -1,3 +1,7 @@ +2005-11-02 Paul Brook <paul@codesourcery.com> + + * arm-dis.c (print_insn_thumb32): Word align blx target address. + 2005-10-31 Alan Modra <amodra@bigpond.net.au> * arm-dis.c (print_insn): Warning fix. diff --git a/opcodes/arm-dis.c b/opcodes/arm-dis.c index a19c077c06..fb3cb77bc4 100644 --- a/opcodes/arm-dis.c +++ b/opcodes/arm-dis.c @@ -2607,8 +2607,13 @@ print_insn_thumb32 (bfd_vma pc, struct disassemble_info *info, long given) offset |= (given & 0x03ff0000u) >> 4; offset |= (given & 0x000007ffu) << 1; offset -= (1 << 24); + offset += pc + 4; - info->print_address_func (pc + 4 + offset, info); + /* BLX target addresses are always word aligned. */ + if ((given & 0x00001000u) == 0) + offset &= ~2u; + + info->print_address_func (offset, info); } break; |