Commit graph

11 commits

Author SHA1 Message Date
Pedro Alves
237fc4c9cd 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".
2008-05-02 16:49:54 +00:00
Jim Blandy
0ce17860b0 * gdb.asm/asm-source.exp: Use gdb_get_line_number, instead of
hard-coding source line numbers into the test.
	* gdb.asm/asmsrc1.s, gdb.asm/asmsrc2.s: Add comments for
	gdb_get_line_number to find.
2007-12-22 06:44:28 +00:00
Randolph Chung
5f2c56f79b 2005-12-09 Randolph Chung <tausq@debian.org>
* gdb.asm/common.inc: Indent commands.
	* gdb.asm/asmsrc1.s: Likewise.
	* gdb.asm/asmsrc2.s: Likewise.
2005-12-09 11:02:09 +00:00
Mark Kettenis
71507b5617 * gdb.asm/asm-source.exp: Initialize asm-note to "empty". Set
asm-note to "netbsd" for *-*-netbsdelf* and x86_64-*-netbsd*.  Use
it to create the appropriate note.inc.
* gdb.asm/asmsrc1.s: Include "note.inc".
* gdb.asm/netbsd.inc: New file.
* gdb.asm/empty.inc: New file.
2003-11-29 13:55:17 +00:00
Daniel Jacobowitz
8b1d7e37a4 * gdb.asm/asm-source.exp: Add "mips*-*" pattern. Update line
numbers.  Allow "foo2|selected stack frame".
        * gdb.asm/asmsrc1.s: Use gdbasm_declare and gdbasm_end.
        * gdb.asm/asmsrc2.s: Likewise.
        * gdb.asm/common.inc: Define gdbasm_declare and gdbasm_end.  Update
        comments.
        * gdb.asm/mips.inc: New file.
2002-10-22 01:43:37 +00:00
Michael Snyder
ca9efc9063 2001-11-30 Michael Snyder <msnyder@redhat.com>
* gdb.asm/asm-source.exp: Add tests for list, search, finish, return,
	next, info source, info sources, info line, global and static
	variables, and static functions.
	* gdb.asm/common.inc: New macro gdbasm_datavar (default definition).
	* gdb.asm/i386.inc: Override default definition of gdbasm_datavar.
	* gdb.asm/asmsrc1.s: Add a static function and some variables.
	* gdb.asm/asmsrc2.s: Make foo2 call foo3 twice (to test 'next').
	* gdb.asm/d10v.inc (gdbasm_enter): Set up frame pointer.
	(gdbasm_leave): Restore frame pointer.
	(gdbasm_startup): Copy stack set-up from crt0.S.
2001-12-04 19:45:57 +00:00
Andrew Cagney
45b074e11d * gdb.asm/asmsrc1.s: Add ``gdbasm_'' prefix to all macros.
* gdb.asm/asmsrc2.s, gdb.asm/d10v.inc: Update.
2001-11-10 17:55:48 +00:00
Andrew Cagney
78492fde3d Rewrite gdb.asm so that it doesn't assume a C comiler (or any C
support).
2000-07-04 02:47:08 +00:00
Stan Shebs
c906108c21 Initial creation of sourceware repository 1999-04-16 01:35:26 +00:00
Stan Shebs
071ea11e85 Initial creation of sourceware repository 1999-04-16 01:34:07 +00:00
Doug Evans
681a9f4adb snapshot 1998-03-13 01:36:59 +00:00