From: Julian Seward Date: Tue, 1 Apr 2014 11:00:36 +0000 (+0000) Subject: Bug 332658 - ldrd.w r1, r2, [PC, #imm] does not adjust for 32bit alignment X-Git-Tag: svn/VALGRIND_3_10_1^2~127 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=b48f52a25d58c433bf74b6cb6498fd6bbb7ac708;p=thirdparty%2Fvalgrind.git Bug 332658 - ldrd.w r1, r2, [PC, #imm] does not adjust for 32bit alignment (dimitry@google.com) git-svn-id: svn://svn.valgrind.org/vex/trunk@2843 --- diff --git a/VEX/priv/guest_arm_toIR.c b/VEX/priv/guest_arm_toIR.c index 39d8ef8400..e3fc4b9924 100644 --- a/VEX/priv/guest_arm_toIR.c +++ b/VEX/priv/guest_arm_toIR.c @@ -20455,7 +20455,9 @@ DisResult disInstr_THUMB_WRK ( if (valid) { IRTemp preAddr = newTemp(Ity_I32); - assign(preAddr, getIRegT(rN)); + assign(preAddr, 15 == rN + ? binop(Iop_And32, getIRegT(15), mkU32(~3U)) + : getIRegT(rN)); IRTemp postAddr = newTemp(Ity_I32); assign(postAddr, binop(bU == 1 ? Iop_Add32 : Iop_Sub32,