]> git.ipfire.org Git - thirdparty/valgrind.git/commitdiff
Merge r1736 and r1741: int $3 support (x86 and amd64)
authorJulian Seward <jseward@acm.org>
Sun, 29 Apr 2007 09:40:56 +0000 (09:40 +0000)
committerJulian Seward <jseward@acm.org>
Sun, 29 Apr 2007 09:40:56 +0000 (09:40 +0000)
git-svn-id: svn://svn.valgrind.org/vex/branches/VEX_3_2_BRANCH@1751

VEX/priv/guest-amd64/toIR.c
VEX/priv/guest-x86/toIR.c
VEX/priv/host-amd64/hdefs.c
VEX/priv/host-x86/hdefs.c

index 506db5d8344fffbc82dbb8c5718c1374f79a6f4d..a717ab3e943a36f8ee70a86b5d10f8f2931089bb 100644 (file)
@@ -12380,6 +12380,12 @@ DisResult disInstr_AMD64_WRK (
 
    /* ------------------------ INT ------------------------ */
 
+   case 0xCC: /* INT 3 */
+      jmp_lit(Ijk_Trap, guest_RIP_bbstart + delta);
+      dres.whatNext = Dis_StopHere;
+      DIP("int $0x3\n");
+      break;
+
    case 0xCD: { /* INT imm8 */
       IRJumpKind jk = Ijk_Boring;
       if (have66orF2orF3(pfx)) goto decode_failure;
index 89e395d672b473f857dafafa90def5d8bb3c0cb5..6a1203710836910ee60467983aaf2a786b898678 100644 (file)
@@ -11208,6 +11208,12 @@ DisResult disInstr_X86_WRK (
 
    /* ------------------------ INT ------------------------ */
 
+   case 0xCC: /* INT 3 */
+      jmp_lit(Ijk_Trap,((Addr32)guest_EIP_bbstart)+delta);
+      dres.whatNext = Dis_StopHere;
+      DIP("int $0x3\n");
+      break;
+
    case 0xCD: /* INT imm8 */
       d32 = getIByte(delta); delta++;
       if (d32 != 0x80) goto decode_failure;
index 9d5f775545fabfa94a0946ed406e84c771da844e..6986077f760703f500eeed18a0ab88983e4c79f1 100644 (file)
@@ -2640,6 +2640,9 @@ Int emit_AMD64Instr ( UChar* buf, Int nbuf, AMD64Instr* i,
          case Ijk_NoRedir:
             *p++ = 0xBD;
             p = emit32(p, VEX_TRC_JMP_NOREDIR); break;
+         case Ijk_Trap:
+            *p++ = 0xBD;
+            p = emit32(p, VEX_TRC_JMP_TRAP); break;
          case Ijk_Ret:
          case Ijk_Call:
          case Ijk_Boring:
index a88a03500c5dce727a1ade12feb55c126f68ecc0..9f6157f1a9996efcaa0c9bcff89047b8f5224e85 100644 (file)
@@ -2184,6 +2184,9 @@ Int emit_X86Instr ( UChar* buf, Int nbuf, X86Instr* i,
          case Ijk_Sys_sysenter:
             *p++ = 0xBD;
             p = emit32(p, VEX_TRC_JMP_SYS_SYSENTER); break;
+         case Ijk_Trap:
+            *p++ = 0xBD;
+            p = emit32(p, VEX_TRC_JMP_TRAP); break;
          case Ijk_Ret:
         case Ijk_Call:
          case Ijk_Boring: