From: Julian Seward Date: Thu, 28 Dec 2006 01:49:29 +0000 (+0000) Subject: Handle recent binutils padding "nopw %cs:0x0(%eax,%eax,1)" X-Git-Tag: svn/VALGRIND_3_3_1^2~69 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=dcf538ca85dd2af3f5d218d82841b5206c27e1f9;p=thirdparty%2Fvalgrind.git Handle recent binutils padding "nopw %cs:0x0(%eax,%eax,1)" git-svn-id: svn://svn.valgrind.org/vex/trunk@1711 --- diff --git a/VEX/priv/guest-x86/toIR.c b/VEX/priv/guest-x86/toIR.c index 749b4819b4..e5a0dad204 100644 --- a/VEX/priv/guest-x86/toIR.c +++ b/VEX/priv/guest-x86/toIR.c @@ -7290,6 +7290,21 @@ DisResult disInstr_X86_WRK ( break; } } + /* don't barf on recent binutils padding + 66 2e 0f 1f 84 00 00 00 00 00 nopw %cs:0x0(%eax,%eax,1) + */ + { + UChar* code = (UChar*)(guest_code + delta); + if (sz == 2 + && code[-1] == 0x66 + && code[0] == 0x2E && code[1] == 0x0F && code[2] == 0x1F + && code[3] == 0x84 && code[4] == 0x00 && code[5] == 0x00 + && code[6] == 0x00 && code[7] == 0x00 && code[8] == 0x00 ) { + DIP("nopw %%cs:0x0(%%eax,%%eax,1)\n"); + delta += 9; + goto decode_success; + } + } unimplemented("x86 segment override (SEG=CS) prefix"); /*NOTREACHED*/ break;