From 270742f3e2d21bc2d600beefe8ba788df2457c77 Mon Sep 17 00:00:00 2001 From: Julian Seward Date: Thu, 28 Dec 2006 02:03:07 +0000 Subject: [PATCH] Merge r1711 (Handle recent binutils padding "nopw %cs:0x0(%eax,%eax,1)") git-svn-id: svn://svn.valgrind.org/vex/branches/VEX_3_2_BRANCH@1712 --- VEX/priv/guest-x86/toIR.c | 15 +++++++++++++++ 1 file changed, 15 insertions(+) diff --git a/VEX/priv/guest-x86/toIR.c b/VEX/priv/guest-x86/toIR.c index 3239cf8aa3..c2ec208e86 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; -- 2.47.2