From: Julian Seward Date: Thu, 1 Mar 2007 18:42:07 +0000 (+0000) Subject: Handle the (bizarre) no-op "26 2E 64 65 90 %es:%cs:%fs:%gs:nop". This X-Git-Tag: svn/VALGRIND_3_3_1^2~53 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=eb0c38f6dacbf3ee9e7eeb84a2e93b5ab561fe92;p=thirdparty%2Fvalgrind.git Handle the (bizarre) no-op "26 2E 64 65 90 %es:%cs:%fs:%gs:nop". This makes it possible to run Sun's JVM 1.5.0 on Valgrind. git-svn-id: svn://svn.valgrind.org/vex/trunk@1737 --- diff --git a/VEX/priv/guest-x86/toIR.c b/VEX/priv/guest-x86/toIR.c index 7a3acf6b32..0b7d0dbe92 100644 --- a/VEX/priv/guest-x86/toIR.c +++ b/VEX/priv/guest-x86/toIR.c @@ -7272,6 +7272,18 @@ DisResult disInstr_X86_WRK ( switch (getIByte(delta)) { case 0x3E: /* %DS: */ case 0x26: /* %ES: */ + /* Sun's JVM 1.5.0 uses the following as a NOP: + 26 2E 64 65 90 %es:%cs:%fs:%gs:nop */ + { + UChar* code = (UChar*)(guest_code + delta); + if (code[0] == 0x26 && code[1] == 0x2E && code[2] == 0x64 + && code[3] == 0x65 && code[4] == 0x90) { + DIP("%%es:%%cs:%%fs:%%gs:nop\n"); + delta += 5; + goto decode_success; + } + /* else fall through */ + } case 0x64: /* %FS: */ case 0x65: /* %GS: */ sorb = getIByte(delta); delta++;