aboutsummaryrefslogtreecommitdiff
path: root/gdb/ChangeLog
diff options
context:
space:
mode:
authorPedro Alves <palves@redhat.com>2008-05-02 16:49:54 +0000
committerPedro Alves <palves@redhat.com>2008-05-02 16:49:54 +0000
commit237fc4c9cdd1a1df1e53a8321dfd7b147da722fd (patch)
treea58beb3878b7f1e95d6d4bb0f5dc84025fa8c9b7 /gdb/ChangeLog
parent0428b8f567d7966cd47efe0cc99eb8b5072c625e (diff)
downloadgdb-237fc4c9cdd1a1df1e53a8321dfd7b147da722fd.zip
gdb-237fc4c9cdd1a1df1e53a8321dfd7b147da722fd.tar.gz
gdb-237fc4c9cdd1a1df1e53a8321dfd7b147da722fd.tar.bz2
Implement displaced stepping.
gdb/ * gdbarch.sh (max_insn_length): New 'variable'. (displaced_step_copy, displaced_step_fixup) (displaced_step_free_closure, displaced_step_location): New functions. (struct displaced_step_closure): Add forward declaration. * gdbarch.c, gdbarch.h: Regenerated. * arch-utils.c: #include "objfiles.h". (simple_displaced_step_copy_insn) (simple_displaced_step_free_closure) (displaced_step_at_entry_point): New functions. * arch-utils.h (simple_displaced_step_copy_insn) (simple_displaced_step_free_closure) (displaced_step_at_entry_point): New prototypes. * i386-tdep.c (I386_MAX_INSN_LEN): Rename to... (I386_MAX_MATCHED_INSN_LEN): ... this. (i386_absolute_jmp_p, i386_absolute_call_p) (i386_ret_p, i386_call_p, i386_breakpoint_p, i386_syscall_p) (i386_displaced_step_fixup): New functions. (struct i386_insn, i386_match_insn): Update. (i386_gdbarch_init): Set gdbarch_max_insn_length. * i386-tdep.h (I386_MAX_INSN_LEN): New. (i386_displaced_step_fixup): New prototype. * i386-linux-tdep.c (i386_linux_init_abi): Include "arch-utils.h". Register gdbarch_displaced_step_copy, gdbarch_displaced_step_fixup, gdbarch_displaced_step_free_closure, and gdbarch_displaced_step_location functions. * infrun.c (debug_displaced): New variable. (show_debug_displaced): New function. (struct displaced_step_request): New struct. (displaced_step_request_queue, displaced_step_ptid) (displaced_step_gdbarch, displaced_step_closure) (displaced_step_original, displaced_step_copy) (displaced_step_saved_copy, can_use_displaced_stepping): New variables. (show_can_use_displaced_stepping, use_displaced_stepping) (displaced_step_clear, cleanup_displaced_step_closure) (displaced_step_dump_bytes, displaced_step_prepare) (displaced_step_clear_cleanup, write_memory_ptid) (displaced_step_fixup): New functions. (resume): Call displaced_step_prepare. (proceed): Call read_pc once, and remember the value. If using displaced stepping, don't remove breakpoints. (handle_inferior_event): Call displaced_step_fixup. Add some debugging output. When we try to step over a breakpoint, but get a signal to deliver to the thread instead, ensure the step-resume breakpoint is actually inserted. If a thread hop is needed, and displaced stepping is enabled, don't remove breakpoints. (init_wait_for_inferior): Call displaced_step_clear. (_initialize_infrun): Add "set debug displaced" command. Add "maint set can-use-displaced-stepping" command. Clear displaced_step_ptid. * inferior.h (debug_displaced): Declare variable. (displaced_step_dump_bytes): Declare function. * Makefile.in (arch-utils.o, i386-linux-tdep.o): Update dependencies. gdb/testsuite/ * gdb.asm/asmsrc1.s: Add scratch space. gdb/doc/ * gdb.texinfo (Debugging Output): Document "set/show debug displaced". (Maintenance Commands): Document "maint set/show can-use-displaced-stepping".
Diffstat (limited to 'gdb/ChangeLog')
-rw-r--r--gdb/ChangeLog65
1 files changed, 65 insertions, 0 deletions
diff --git a/gdb/ChangeLog b/gdb/ChangeLog
index 9c6f600..9c9e09b 100644
--- a/gdb/ChangeLog
+++ b/gdb/ChangeLog
@@ -1,3 +1,68 @@
+2008-05-02 Jim Blandy <jimb@codesourcery.com>
+ Pedro Alves <pedro@codesourcery.com>
+
+ Implement displaced stepping.
+
+ * gdbarch.sh (max_insn_length): New 'variable'.
+ (displaced_step_copy, displaced_step_fixup)
+ (displaced_step_free_closure, displaced_step_location): New
+ functions.
+ (struct displaced_step_closure): Add forward declaration.
+ * gdbarch.c, gdbarch.h: Regenerated.
+
+ * arch-utils.c: #include "objfiles.h".
+ (simple_displaced_step_copy_insn)
+ (simple_displaced_step_free_closure)
+ (displaced_step_at_entry_point): New functions.
+ * arch-utils.h (simple_displaced_step_copy_insn)
+ (simple_displaced_step_free_closure)
+ (displaced_step_at_entry_point): New prototypes.
+
+ * i386-tdep.c (I386_MAX_INSN_LEN): Rename to...
+ (I386_MAX_MATCHED_INSN_LEN): ... this.
+ (i386_absolute_jmp_p, i386_absolute_call_p)
+ (i386_ret_p, i386_call_p, i386_breakpoint_p, i386_syscall_p)
+ (i386_displaced_step_fixup): New functions.
+ (struct i386_insn, i386_match_insn): Update.
+ (i386_gdbarch_init): Set gdbarch_max_insn_length.
+ * i386-tdep.h (I386_MAX_INSN_LEN): New.
+ (i386_displaced_step_fixup): New prototype.
+ * i386-linux-tdep.c (i386_linux_init_abi): Include "arch-utils.h".
+ Register gdbarch_displaced_step_copy,
+ gdbarch_displaced_step_fixup, gdbarch_displaced_step_free_closure,
+ and gdbarch_displaced_step_location functions.
+
+ * infrun.c (debug_displaced): New variable.
+ (show_debug_displaced): New function.
+ (struct displaced_step_request): New struct.
+ (displaced_step_request_queue, displaced_step_ptid)
+ (displaced_step_gdbarch, displaced_step_closure)
+ (displaced_step_original, displaced_step_copy)
+ (displaced_step_saved_copy, can_use_displaced_stepping): New
+ variables.
+ (show_can_use_displaced_stepping, use_displaced_stepping)
+ (displaced_step_clear, cleanup_displaced_step_closure)
+ (displaced_step_dump_bytes, displaced_step_prepare)
+ (displaced_step_clear_cleanup, write_memory_ptid)
+ (displaced_step_fixup): New functions.
+ (resume): Call displaced_step_prepare.
+ (proceed): Call read_pc once, and remember the value. If using
+ displaced stepping, don't remove breakpoints.
+ (handle_inferior_event): Call displaced_step_fixup. Add some
+ debugging output. When we try to step over a breakpoint, but get
+ a signal to deliver to the thread instead, ensure the step-resume
+ breakpoint is actually inserted. If a thread hop is needed, and
+ displaced stepping is enabled, don't remove breakpoints.
+ (init_wait_for_inferior): Call displaced_step_clear.
+ (_initialize_infrun): Add "set debug displaced" command. Add
+ "maint set can-use-displaced-stepping" command. Clear
+ displaced_step_ptid.
+ * inferior.h (debug_displaced): Declare variable.
+ (displaced_step_dump_bytes): Declare function.
+
+ * Makefile.in (arch-utils.o, i386-linux-tdep.o): Update
+ dependencies.
+
2008-05-02 Daniel Jacobowitz <dan@codesourcery.com>
* arm-tdep.c (arm_mode_strings, arm_fallback_mode_string)