gdb: move displaced stepping types to displaced-stepping.{h,c}

Move displaced-stepping related stuff unchanged to displaced-stepping.h
and displaced-stepping.c.  This helps make the following patch a bit
smaller and easier to read.

gdb/ChangeLog:

	* Makefile.in (COMMON_SFILES): Add displaced-stepping.c.
	* aarch64-tdep.h: Include displaced-stepping.h.
	* displaced-stepping.h (struct displaced_step_copy_insn_closure):
	Move here.
	(displaced_step_copy_insn_closure_up): Move here.
	(struct buf_displaced_step_copy_insn_closure): Move here.
	(struct displaced_step_inferior_state): Move here.
	(debug_displaced): Move here.
	(displaced_debug_printf_1): Move here.
	(displaced_debug_printf): Move here.
	* displaced-stepping.c: New file.
	* gdbarch.sh: Include displaced-stepping.h in gdbarch.h.
	* gdbarch.h: Re-generate.
	* inferior.h: Include displaced-stepping.h.
	* infrun.h (debug_displaced): Move to displaced-stepping.h.
	(displaced_debug_printf_1): Likewise.
	(displaced_debug_printf): Likewise.
	(struct displaced_step_copy_insn_closure): Likewise.
	(displaced_step_copy_insn_closure_up): Likewise.
	(struct buf_displaced_step_copy_insn_closure): Likewise.
	(struct displaced_step_inferior_state): Likewise.
	* infrun.c (show_debug_displaced): Move to displaced-stepping.c.
	(displaced_debug_printf_1): Likewise.
	(displaced_step_copy_insn_closure::~displaced_step_copy_insn_closure):
	Likewise.
	(_initialize_infrun): Don't register "set/show debug displaced".

Change-Id: I29935f5959b80425370630a45148fc06cd4227ca
This commit is contained in:
Simon Marchi 2020-12-04 16:43:55 -05:00
parent 94b24c74e8
commit c7acb87bc6
10 changed files with 170 additions and 100 deletions

View file

@ -41,19 +41,6 @@ extern unsigned int debug_infrun;
} \
while (0)
/* True if we are debugging displaced stepping. */
extern bool debug_displaced;
/* Print a "displaced" debug statement. */
#define displaced_debug_printf(fmt, ...) \
do \
{ \
if (debug_displaced) \
debug_prefixed_printf ("displaced", __func__, fmt, ##__VA_ARGS__); \
} \
while (0)
/* Nonzero if we want to give control to the user when we're notified
of shared library events by the dynamic linker. */
extern int stop_on_solib_events;
@ -280,69 +267,4 @@ extern void all_uis_check_sync_execution_done (void);
started or re-started). */
extern void all_uis_on_sync_execution_starting (void);
/* Base class for displaced stepping closures (the arch-specific data). */
struct displaced_step_copy_insn_closure
{
virtual ~displaced_step_copy_insn_closure () = 0;
};
using displaced_step_copy_insn_closure_up
= std::unique_ptr<displaced_step_copy_insn_closure>;
/* A simple displaced step closure that contains only a byte buffer. */
struct buf_displaced_step_copy_insn_closure : displaced_step_copy_insn_closure
{
buf_displaced_step_copy_insn_closure (int buf_size)
: buf (buf_size)
{}
gdb::byte_vector buf;
};
/* Per-inferior displaced stepping state. */
struct displaced_step_inferior_state
{
displaced_step_inferior_state ()
{
reset ();
}
/* Put this object back in its original state. */
void reset ()
{
failed_before = 0;
step_thread = nullptr;
step_gdbarch = nullptr;
step_closure.reset ();
step_original = 0;
step_copy = 0;
step_saved_copy.clear ();
}
/* True if preparing a displaced step ever failed. If so, we won't
try displaced stepping for this inferior again. */
int failed_before;
/* If this is not nullptr, this is the thread carrying out a
displaced single-step in process PID. This thread's state will
require fixing up once it has completed its step. */
thread_info *step_thread;
/* The architecture the thread had when we stepped it. */
gdbarch *step_gdbarch;
/* The closure provided gdbarch_displaced_step_copy_insn, to be used
for post-step cleanup. */
displaced_step_copy_insn_closure_up step_closure;
/* The address of the original instruction, and the copy we
made. */
CORE_ADDR step_original, step_copy;
/* Saved contents of copy area. */
gdb::byte_vector step_saved_copy;
};
#endif /* INFRUN_H */