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:
parent
94b24c74e8
commit
c7acb87bc6
10 changed files with 170 additions and 100 deletions
78
gdb/infrun.h
78
gdb/infrun.h
|
@ -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 */
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue