* breakpoint.c (breakpoint_init_inferior): Mark as not inserted only
[deliverable/binutils-gdb.git] / gdb / i386-tdep.c
index 3e215fce29457d017342846afc29bb0a09feb51f..40cbde5bfff179ab5f1bd78803f13482ba5b1157 100644 (file)
@@ -2624,6 +2624,18 @@ i386_fetch_pointer_argument (struct frame_info *frame, int argi,
   return read_memory_unsigned_integer (sp + (4 * (argi + 1)), 4);
 }
 
+static void
+i386_skip_permanent_breakpoint (struct regcache *regcache)
+{
+  CORE_ADDR current_pc = regcache_read_pc (regcache);
+
+ /* On i386, breakpoint is exactly 1 byte long, so we just
+    adjust the PC in the regcache.  */
+  current_pc += 1;
+  regcache_write_pc (regcache, current_pc);
+}
+
+
 \f
 static struct gdbarch *
 i386_gdbarch_init (struct gdbarch_info info, struct gdbarch_list *arches)
@@ -2812,6 +2824,9 @@ i386_gdbarch_init (struct gdbarch_info info, struct gdbarch_list *arches)
   if (tdep->mm0_regnum == 0)
     tdep->mm0_regnum = gdbarch_num_regs (gdbarch);
 
+  set_gdbarch_skip_permanent_breakpoint (gdbarch,
+                                        i386_skip_permanent_breakpoint);
+
   return gdbarch;
 }
 
This page took 0.023392 seconds and 4 git commands to generate.