|
From: <sv...@va...> - 2008-05-11 10:11:54
|
Author: sewardj
Date: 2008-05-11 11:11:58 +0100 (Sun, 11 May 2008)
New Revision: 1838
Log:
Compute the starting address of the instruction correctly. This has
always been wrong and can cause the next-instruction-address to be
wrong in obscure circumstances. Fixes #152818.
Modified:
trunk/priv/guest-x86/toIR.c
Modified: trunk/priv/guest-x86/toIR.c
===================================================================
--- trunk/priv/guest-x86/toIR.c 2008-05-09 13:27:47 UTC (rev 1837)
+++ trunk/priv/guest-x86/toIR.c 2008-05-11 10:11:58 UTC (rev 1838)
@@ -13347,7 +13347,7 @@
/* REPNE prefix insn */
case 0xF2: {
- Addr32 eip_orig = guest_EIP_bbstart + delta - 1;
+ Addr32 eip_orig = guest_EIP_bbstart + delta_start;
if (sorb != 0) goto decode_failure;
abyte = getIByte(delta); delta++;
@@ -13390,7 +13390,7 @@
/* REP/REPE prefix insn (for SCAS and CMPS, 0xF3 means REPE,
for the rest, it means REP) */
case 0xF3: {
- Addr32 eip_orig = guest_EIP_bbstart + delta - 1;
+ Addr32 eip_orig = guest_EIP_bbstart + delta_start;
if (sorb != 0) goto decode_failure;
abyte = getIByte(delta); delta++;
|