|
From: Greg P. <gp...@us...> - 2006-12-13 05:28:39
|
gcc 4.0.1 emitted this ten-byte i386 NOP (to align a loop, I think):
66 2e 0f 1f 84 00 00 00 00 00
VEX didn't like the 2e prefix on the 0f 1f NOP. This patch allows it.
Index: VEX/priv/guest-x86/toIR.c
===================================================================
--- VEX/priv/guest-x86/toIR.c (revision 1686)
+++ VEX/priv/guest-x86/toIR.c (working copy)
@@ -7245,9 +7245,9 @@
sorb = getIByte(delta); delta++;
break;
case 0x2E: /* %CS: */
- /* 2E prefix on a conditional branch instruction is a
- branch-prediction hint, which can safely be ignored. */
{
+ /* 2E prefix on a conditional branch instruction is a
+ branch-prediction hint, which can safely be ignored. */
UChar op1 = getIByte(delta+1);
UChar op2 = getIByte(delta+2);
if ((op1 >= 0x70 && op1 <= 0x7F)
@@ -7257,6 +7257,12 @@
sorb = getIByte(delta); delta++;
break;
}
+
+ /* 2E 0F 1F is a multi-byte nop */
+ if ((op1 == 0x0F && op2 == 0x1F)) {
+ delta++;
+ break;
+ }
}
unimplemented("x86 segment override (SEG=CS) prefix");
/*NOTREACHED*/
--
Greg Parker gp...@us...
|