]> git.ipfire.org Git - thirdparty/valgrind.git/commitdiff
Stop mkU16 asserting if d32 is a negative 16-bit number (bug #132813).
authorJulian Seward <jseward@acm.org>
Mon, 28 Aug 2006 18:04:33 +0000 (18:04 +0000)
committerJulian Seward <jseward@acm.org>
Mon, 28 Aug 2006 18:04:33 +0000 (18:04 +0000)
git-svn-id: svn://svn.valgrind.org/vex/trunk@1652

VEX/priv/guest-x86/toIR.c

index e349cd0cf5b0b92acb8473052eda554e305abe87..8edb730d154d9bdf9e32e61a4a77653610f12414 100644 (file)
@@ -11728,6 +11728,10 @@ DisResult disInstr_X86_WRK (
       t1 = newTemp(Ity_I32); t2 = newTemp(ty);
       assign( t1, binop(Iop_Sub32,getIReg(4,R_ESP),mkU32(sz)) );
       putIReg(4, R_ESP, mkexpr(t1) );
+      /* stop mkU16 asserting if d32 is a negative 16-bit number
+         (bug #132813) */
+      if (ty == Ity_I16)
+         d32 &= 0xFFFF;
       storeLE( mkexpr(t1), mkU(ty,d32) );
       DIP("push%c $0x%x\n", nameISize(sz), d32);
       break;