From: <sv...@va...> - 2007-04-29 09:49:40
|
Author: sewardj Date: 2007-04-29 10:49:38 +0100 (Sun, 29 Apr 2007) New Revision: 1752 Log: Merge r1737 (Handle the (bizarre) no-op "26 2E 64 65 90 %es:%cs:%fs:%gs:nop") Modified: branches/VEX_3_2_BRANCH/priv/guest-x86/toIR.c Modified: branches/VEX_3_2_BRANCH/priv/guest-x86/toIR.c =================================================================== --- branches/VEX_3_2_BRANCH/priv/guest-x86/toIR.c 2007-04-29 09:40:56 UTC (rev 1751) +++ branches/VEX_3_2_BRANCH/priv/guest-x86/toIR.c 2007-04-29 09:49:38 UTC (rev 1752) @@ -7272,6 +7272,18 @@ 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++; |