Refactor i386_{insert,remove}_hw_breakpoint
authorGary Benson <gbenson@redhat.com>
Thu, 19 Jun 2014 09:50:20 +0000 (10:50 +0100)
committerGary Benson <gbenson@redhat.com>
Thu, 19 Jun 2014 09:55:12 +0000 (10:55 +0100)
This commit refactors i386_{insert,remove}_hw_breakpoint
to call i386_{insert,remove}_watchpoint rather than
duplicating functionality.

gdb/
2014-06-19  Gary Benson  <gbenson@redhat.com>

* i386-nat.c (i386_insert_hw_breakpoint): Use
i386_insert_watchpoint.
(i386_remove_hw_breakpoint): Use i386_remove_watchpoint.

gdb/ChangeLog
gdb/i386-nat.c

index bd3ccae..0ffb849 100644 (file)
@@ -1,5 +1,11 @@
 2014-06-19  Gary Benson  <gbenson@redhat.com>
 
+       * i386-nat.c (i386_insert_hw_breakpoint): Use
+       i386_insert_watchpoint.
+       (i386_remove_hw_breakpoint): Use i386_remove_watchpoint.
+
+2014-06-19  Gary Benson  <gbenson@redhat.com>
+
        * i386-nat.c (i386_dr_show): Renamed to
        i386_show_dr and made static.  All uses updated.
        (i386_dr_length_and_rw_bits): Renamed to
index 3ff0711..c956583 100644 (file)
@@ -738,27 +738,13 @@ i386_stopped_by_watchpoint (struct target_ops *ops)
 
 /* Insert a hardware-assisted breakpoint at BP_TGT->placed_address.
    Return 0 on success, EBUSY on failure.  */
+
 static int
 i386_insert_hw_breakpoint (struct target_ops *self, struct gdbarch *gdbarch,
                           struct bp_target_info *bp_tgt)
 {
-  struct i386_debug_reg_state *state
-    = i386_debug_reg_state (ptid_get_pid (inferior_ptid));
-  unsigned len_rw = i386_length_and_rw_bits (1, hw_execute);
-  CORE_ADDR addr = bp_tgt->placed_address;
-  /* Work on a local copy of the debug registers, and on success,
-     commit the change back to the inferior.  */
-  struct i386_debug_reg_state local_state = *state;
-  int retval = i386_insert_aligned_watchpoint (&local_state,
-                                              addr, len_rw) ? EBUSY : 0;
-
-  if (retval == 0)
-    i386_update_inferior_debug_regs (state, &local_state);
-
-  if (debug_hw_points)
-    i386_show_dr (state, "insert_hwbp", addr, 1, hw_execute);
-
-  return retval;
+  return i386_insert_watchpoint (self, bp_tgt->placed_address, 1,
+                                hw_execute, NULL) ? EBUSY : 0;
 }
 
 /* Remove a hardware-assisted breakpoint at BP_TGT->placed_address.
@@ -768,23 +754,8 @@ static int
 i386_remove_hw_breakpoint (struct target_ops *self, struct gdbarch *gdbarch,
                           struct bp_target_info *bp_tgt)
 {
-  struct i386_debug_reg_state *state
-    = i386_debug_reg_state (ptid_get_pid (inferior_ptid));
-  unsigned len_rw = i386_length_and_rw_bits (1, hw_execute);
-  CORE_ADDR addr = bp_tgt->placed_address;
-  /* Work on a local copy of the debug registers, and on success,
-     commit the change back to the inferior.  */
-  struct i386_debug_reg_state local_state = *state;
-  int retval = i386_remove_aligned_watchpoint (&local_state,
-                                              addr, len_rw);
-
-  if (retval == 0)
-    i386_update_inferior_debug_regs (state, &local_state);
-
-  if (debug_hw_points)
-    i386_show_dr (state, "remove_hwbp", addr, 1, hw_execute);
-
-  return retval;
+  return i386_remove_watchpoint (self, bp_tgt->placed_address, 1,
+                                hw_execute, NULL);
 }
 
 /* Returns the number of hardware watchpoints of type TYPE that we can