]> git.ipfire.org Git - thirdparty/valgrind.git/commitdiff
Handle recent binutils padding "nopw %cs:0x0(%eax,%eax,1)"
authorJulian Seward <jseward@acm.org>
Thu, 28 Dec 2006 01:49:29 +0000 (01:49 +0000)
committerJulian Seward <jseward@acm.org>
Thu, 28 Dec 2006 01:49:29 +0000 (01:49 +0000)
git-svn-id: svn://svn.valgrind.org/vex/trunk@1711

VEX/priv/guest-x86/toIR.c

index 749b4819b469bf0ab688d42bfbb32ef7915f46bd..e5a0dad204a7b27ddae9433bf41398cdc9c0978f 100644 (file)
@@ -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;