diff options
author | Pedro Alves <palves@redhat.com> | 2008-05-02 16:49:54 +0000 |
---|---|---|
committer | Pedro Alves <palves@redhat.com> | 2008-05-02 16:49:54 +0000 |
commit | 237fc4c9cdd1a1df1e53a8321dfd7b147da722fd (patch) | |
tree | a58beb3878b7f1e95d6d4bb0f5dc84025fa8c9b7 /gdb/doc | |
parent | 0428b8f567d7966cd47efe0cc99eb8b5072c625e (diff) | |
download | gdb-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/doc')
-rw-r--r-- | gdb/doc/ChangeLog | 7 | ||||
-rw-r--r-- | gdb/doc/gdb.texinfo | 20 |
2 files changed, 27 insertions, 0 deletions
diff --git a/gdb/doc/ChangeLog b/gdb/doc/ChangeLog index 15d51f4..fd92048 100644 --- a/gdb/doc/ChangeLog +++ b/gdb/doc/ChangeLog @@ -1,3 +1,10 @@ +2008-05-02 Pedro Alves <pedro@codesourcery.com> + + * gdb.texinfo (Debugging Output): Document "set/show debug + displaced". + (Maintenance Commands): Document "maint set/show + can-use-displaced-stepping". + 2008-05-02 Daniel Jacobowitz <dan@codesourcery.com> * gdb.texinfo (ARM): Document set/show arm fallback-mode diff --git a/gdb/doc/gdb.texinfo b/gdb/doc/gdb.texinfo index 17c5b11..7abac3c 100644 --- a/gdb/doc/gdb.texinfo +++ b/gdb/doc/gdb.texinfo @@ -16483,6 +16483,13 @@ Display debugging messages about inner workings of the AIX thread module. @item show debug aix-thread Show the current state of AIX thread debugging info display. +@item set debug displaced +@cindex displaced stepping debugging info +Turns on or off display of @value{GDBN} debugging info for the +displaced stepping support. The default is off. +@item show debug displaced +Displays the current state of displaying @value{GDBN} debugging info +related to displaced stepping. @item set debug event @cindex event debugging info Turns on or off display of @value{GDBN} event debugging info. The @@ -23159,6 +23166,19 @@ Shared library events. @end table +@kindex maint set can-use-displaced-stepping +@kindex maint show can-use-displaced-stepping +@cindex displaced stepping support +@cindex out-of-line single-stepping +@item maint set can-use-displaced-stepping +@itemx maint show can-use-displaced-stepping +Control whether or not @value{GDBN} will do @dfn{displaced stepping} +if the target supports it. The default is on. Displaced stepping is +a way to single-step over breakpoints without removing them from the +inferior, by executing an out-of-line copy of the instruction that was +originally at the breakpoint location. It is also known as +out-of-line single-stepping. + @kindex maint check-symtabs @item maint check-symtabs Check the consistency of psymtabs and symtabs. |