|
From: <sv...@va...> - 2012-07-14 14:31:23
|
sewardj 2012-07-14 15:31:17 +0100 (Sat, 14 Jul 2012)
New Revision: 2433
Log:
Handle UD2 a bit better. This change causes Vex to decode UD2 like
any other instruction -- so it doesn't complain -- but Valgrind still
complains when synthesising the SIGILL for the guest. Marginally less
confusing than it was before.
Modified files:
trunk/priv/guest_amd64_toIR.c
Modified: trunk/priv/guest_amd64_toIR.c (+7 -0)
===================================================================
--- trunk/priv/guest_amd64_toIR.c 2012-07-14 15:21:56 +01:00 (rev 2432)
+++ trunk/priv/guest_amd64_toIR.c 2012-07-14 15:31:17 +01:00 (rev 2433)
@@ -19653,6 +19653,13 @@
DIP("syscall\n");
return delta;
+ case 0x0B: /* UD2 */
+ stmt( IRStmt_Put( OFFB_RIP, mkU64(guest_RIP_curr_instr) ) );
+ jmp_lit(dres, Ijk_NoDecode, guest_RIP_curr_instr);
+ vassert(dres->whatNext == Dis_StopHere);
+ DIP("ud2\n");
+ return delta;
+
case 0x1F:
if (haveF2orF3(pfx)) goto decode_failure;
modrm = getUChar(delta);
|