From ded886e371882f3a08e9dc9f5808454f032823bf Mon Sep 17 00:00:00 2001 From: pancake Date: Thu, 25 Oct 2012 13:10:33 +0200 Subject: [PATCH] Add dkreuter's fix for ARM's gnu disassembler --- AUTHORS | 1 + libr/asm/arch/arm/gnu/arm-dis.c | 8 ++++---- 2 files changed, 5 insertions(+), 4 deletions(-) diff --git a/AUTHORS b/AUTHORS index 4b5cbfb5c5..8470774e96 100644 --- a/AUTHORS +++ b/AUTHORS @@ -14,6 +14,7 @@ Contributors: (sorted by length) - schrotthaufen - elektranox - neuroflip + - dkreuter - rvalles - esteve - capi_x diff --git a/libr/asm/arch/arm/gnu/arm-dis.c b/libr/asm/arch/arm/gnu/arm-dis.c index 9e6b95a52f..8678f360b4 100644 --- a/libr/asm/arch/arm/gnu/arm-dis.c +++ b/libr/asm/arch/arm/gnu/arm-dis.c @@ -4099,7 +4099,7 @@ is_thumb = (info->bytes_per_line == 2)?1:0; info->bytes_per_chunk = 2; size = 2; - status = info->read_memory_func (pc, (bfd_byte *)b, 2, info); + status = info->read_memory_func (pc, (bfd_byte *)b, 4, info); if (little) given = (b[0]) | (b[1] << 8); else @@ -4113,11 +4113,11 @@ is_thumb = (info->bytes_per_line == 2)?1:0; || (given & 0xF800) == 0xF000 || (given & 0xF800) == 0xE800) { - status = info->read_memory_func (pc + 2, (bfd_byte *)b, 2, info); + //status = info->read_memory_func (pc + 2, (bfd_byte *)b, 2, info); if (little) - given = (b[0]) | (b[1] << 8) | (given << 16); + given = (b[2]) | (b[3] << 8) | (given << 16); else - given = (b[1]) | (b[0] << 8) | (given << 16); + given = (b[3]) | (b[2] << 8) | (given << 16); printer = print_insn_thumb32; size = 4;