Sign-extend ARM B targets.
Examples:
0x60cdd7c4: 1a00000b bne 44 (0x60cdd7f8)
0x60cdd804: eaffffef b -68 (0x60cdd7c8)
Change-Id: Id8c895dcd6153654975e652fa28638a15e00b538
diff --git a/src/disassembler_arm.cc b/src/disassembler_arm.cc
index 2baf02c..4726c63 100644
--- a/src/disassembler_arm.cc
+++ b/src/disassembler_arm.cc
@@ -251,7 +251,8 @@
{
bool bl = (instruction & (1 << 24)) != 0;
opcode = (bl ? "bl" : "b");
- uint32_t imm32 = (instruction & 0xffffff) << 2;
+ int32_t imm26 = (instruction & 0xffffff) << 2;
+ int32_t imm32 = (imm26 << 6) >> 6; // Sign extend.
DumpBranchTarget(args, instr_ptr + 8, imm32);
}
break;