From: Julian Seward Date: Thu, 16 Dec 2004 02:54:54 +0000 (+0000) Subject: Don't inadvertantly invert the D flag when doing pushfl. Real needle X-Git-Tag: svn/VALGRIND_3_0_1^2~670 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=c2c2e989f86752778cb520459a4b4bfbc12119b1;p=thirdparty%2Fvalgrind.git Don't inadvertantly invert the D flag when doing pushfl. Real needle in a haystack job, finding this one. git-svn-id: svn://svn.valgrind.org/vex/trunk@664 --- diff --git a/VEX/priv/guest-x86/toIR.c b/VEX/priv/guest-x86/toIR.c index 430afa555b..c5df36f39f 100644 --- a/VEX/priv/guest-x86/toIR.c +++ b/VEX/priv/guest-x86/toIR.c @@ -12155,13 +12155,13 @@ static DisResult disInstr ( /*IN*/ Bool resteerOK, t2 = newTemp(Ity_I32); assign( t2, mk_x86g_calculate_eflags_all() ); - /* Patch in the D flag. This can simply be the inversion - of bit 10 of baseBlock[OFFB_DFLAG]. */ + /* Patch in the D flag. This can simply be a copy of bit 10 of + baseBlock[OFFB_DFLAG]. */ t3 = newTemp(Ity_I32); assign( t3, binop(Iop_Or32, mkexpr(t2), binop(Iop_And32, - unop(Iop_Not32, IRExpr_Get(OFFB_DFLAG,Ity_I32)), + IRExpr_Get(OFFB_DFLAG,Ity_I32), mkU32(1<<10))) );