From 9de794e14842cdc778c4ee490e613c7163c5a976 Mon Sep 17 00:00:00 2001 From: Yufeng Zhang Date: Mon, 15 Oct 2012 14:52:06 +0000 Subject: [PATCH 1/1] Added missing alignment check to load/store uimm12 immediate offset. opcodes/ * aarch64-opc.c (operand_general_constraint_met_p): Change to check the alignment of addr.offset.imm instead of that of shifter.amount for operand type AARCH64_OPND_ADDR_UIMM12. gas/testsuite/ * gas/aarch64/illegal-2.s: Add test case. * gas/aarch64/illegal-2.l: Likewise. --- gas/testsuite/gas/aarch64/illegal-2.l | 1 + gas/testsuite/gas/aarch64/illegal-2.s | 2 ++ opcodes/aarch64-opc.c | 2 +- 3 files changed, 4 insertions(+), 1 deletion(-) diff --git a/gas/testsuite/gas/aarch64/illegal-2.l b/gas/testsuite/gas/aarch64/illegal-2.l index 2ba6894838..372596b0f3 100644 --- a/gas/testsuite/gas/aarch64/illegal-2.l +++ b/gas/testsuite/gas/aarch64/illegal-2.l @@ -6,3 +6,4 @@ [^:]*:16: Error: .*$ [^:]*:19: Error: .*$ [^:]*:20: Error: .*$ +[^:]*:24: Error: .*$ diff --git a/gas/testsuite/gas/aarch64/illegal-2.s b/gas/testsuite/gas/aarch64/illegal-2.s index 3aa7283ba7..7711e14d55 100644 --- a/gas/testsuite/gas/aarch64/illegal-2.s +++ b/gas/testsuite/gas/aarch64/illegal-2.s @@ -20,3 +20,5 @@ mov wsp, #0x33030000 .set u16, 0xfff0 + + ldr x0, [x0, #257] diff --git a/opcodes/aarch64-opc.c b/opcodes/aarch64-opc.c index 2d66a255e9..8c70938300 100644 --- a/opcodes/aarch64-opc.c +++ b/opcodes/aarch64-opc.c @@ -1426,7 +1426,7 @@ operand_general_constraint_met_p (const aarch64_opnd_info *opnds, int idx, 0, 4095 * size); return 0; } - if (!value_aligned_p (opnd->shifter.amount, size)) + if (!value_aligned_p (opnd->addr.offset.imm, size)) { set_unaligned_error (mismatch_detail, idx, size); return 0; -- 2.34.1