Teach GDB about targets that can tell whether a trap is a breakpoint event
[deliverable/binutils-gdb.git] / gdb / ChangeLog
index 6ed6f4a167efc29ad18affb0f652a2f16fe7e3de..59fcf9a60d7ba64ebd95b90997ae9166f0b1724e 100644 (file)
@@ -1,3 +1,31 @@
+2015-03-04  Pedro Alves  <palves@redhat.com>
+
+       * breakpoint.c (need_moribund_for_location_type): New function.
+       (bpstat_stop_status): Don't skipping checking moribund locations
+       of breakpoint types which the target tell caused a stop.
+       (program_breakpoint_here_p): New function, factored out from ...
+       (bp_loc_is_permanent): ... this.
+       (update_global_location_list): Don't create a moribund location if
+       the target supports reporting stops of the type of the removed
+       breakpoint.
+       * breakpoint.h (program_breakpoint_here_p): New declaration.
+       * infrun.c (adjust_pc_after_break): Return early if the target has
+       already adjusted the PC.  Add comments.
+       (handle_signal_stop): If nothing explains a signal, and the target
+       tells us the stop was caused by a software breakpoint, check if
+       there's a breakpoint instruction in the memory.  If so, adjust the
+       PC before presenting the stop to the user.  Otherwise, ignore the
+       trap.  If nothing explains a signal, and the target tells us the
+       stop was caused by a hardware breakpoint, ignore the trap.
+       * target.h (struct target_ops) <to_stopped_by_sw_breakpoint,
+       to_supports_stopped_by_sw_breakpoint, to_stopped_by_hw_breakpoint,
+       to_supports_stopped_by_hw_breakpoint>: New fields.
+       (target_stopped_by_sw_breakpoint)
+       (target_supports_stopped_by_sw_breakpoint)
+       (target_stopped_by_hw_breakpoint)
+       (target_supports_stopped_by_hw_breakpoint): Define.
+       * target-delegates.c: Regenerate.
+
 2015-03-04  Pedro Alves  <palves@redhat.com>
 
        * infrun.c (follow_fork_inferior): Use the whole of the
This page took 0.026339 seconds and 4 git commands to generate.