From: Pierre Langlois Date: Fri, 11 Sep 2015 15:47:20 +0000 (+0100) Subject: [AArch64] Fix incorrect mask when decoding b.cond instruction X-Git-Tag: users/hjl/linux/release/2.25.51.0.4~1^2~29^2~14 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=4d50586db70d366d7d9eaf42062bf23bb6073695;p=thirdparty%2Fbinutils-gdb.git [AArch64] Fix incorrect mask when decoding b.cond instruction The encoding of the b.cond instruction is described in the architecture reference manual as: b.cond 0101 0100 iiii iiii iiii iiii iii0 cccc So the mask should be 0xff000010. gdb/ChangeLog: * aarch64-tdep.c (decode_bcond): Fix incorrect mask. --- diff --git a/gdb/ChangeLog b/gdb/ChangeLog index 705b7eb4936..094298605ec 100644 --- a/gdb/ChangeLog +++ b/gdb/ChangeLog @@ -1,3 +1,7 @@ +2015-09-11 Pierre Langlois + + * aarch64-tdep.c (decode_bcond): Fix incorrect mask. + 2015-09-11 Mihail-Marian Nistor PR gdb/18947 diff --git a/gdb/aarch64-tdep.c b/gdb/aarch64-tdep.c index 9a44446fd31..a4d8186a2f1 100644 --- a/gdb/aarch64-tdep.c +++ b/gdb/aarch64-tdep.c @@ -339,7 +339,8 @@ decode_b (CORE_ADDR addr, uint32_t insn, int *is_bl, int32_t *offset) static int decode_bcond (CORE_ADDR addr, uint32_t insn, unsigned *cond, int32_t *offset) { - if (decode_masked_match (insn, 0xfe000000, 0x54000000)) + /* b.cond 0101 0100 iiii iiii iiii iiii iii0 cccc */ + if (decode_masked_match (insn, 0xff000010, 0x54000000)) { *cond = (insn >> 0) & 0xf; *offset = extract_signed_bitfield (insn, 19, 5) << 2;