From: Julian Seward Date: Fri, 21 Jan 2011 18:02:54 +0000 (+0000) Subject: Add alignment checking for FXSAVE/FXRSTOR. X-Git-Tag: svn/VALGRIND_3_7_0^2~125 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=5c00bf808976fe6a04d32db091f5a8b7dcedbe95;p=thirdparty%2Fvalgrind.git Add alignment checking for FXSAVE/FXRSTOR. git-svn-id: svn://svn.valgrind.org/vex/trunk@2083 --- diff --git a/VEX/priv/guest_x86_toIR.c b/VEX/priv/guest_x86_toIR.c index 50a9e327e7..10409580bc 100644 --- a/VEX/priv/guest_x86_toIR.c +++ b/VEX/priv/guest_x86_toIR.c @@ -8095,6 +8095,7 @@ DisResult disInstr_X86_WRK ( addr = disAMode ( &alen, sorb, delta+2, dis_buf ); delta += 2+alen; + gen_SEGV_if_not_16_aligned(addr); DIP("fxsave %s\n", dis_buf); @@ -8165,11 +8166,15 @@ DisResult disInstr_X86_WRK ( addr = disAMode ( &alen, sorb, delta+2, dis_buf ); delta += 2+alen; + gen_SEGV_if_not_16_aligned(addr); DIP("fxrstor %s\n", dis_buf); /* Uses dirty helper: - void x86g_do_FXRSTOR ( VexGuestX86State*, UInt ) */ + VexEmWarn x86g_do_FXRSTOR ( VexGuestX86State*, UInt ) + NOTE: + the VexEmWarn value is simply ignored (unlike for FRSTOR) + */ d = unsafeIRDirty_0_N ( 0/*regparms*/, "x86g_dirtyhelper_FXRSTOR",