struct address_space;
struct return_value_info;
struct process_stratum_target;
+struct thread_info;
/* True if we are debugging run control. */
extern unsigned int debug_infrun;
triggers a non-steppable watchpoint. */
extern int stepping_past_nonsteppable_watchpoint (void);
-extern void set_step_info (struct frame_info *frame,
+/* Record in TP the frame and location we're currently stepping through. */
+extern void set_step_info (thread_info *tp,
+ struct frame_info *frame,
struct symtab_and_line sal);
/* Several print_*_reason helper functions to print why the inferior
virtual ~displaced_step_closure () = 0;
};
+using displaced_step_closure_up = std::unique_ptr<displaced_step_closure>;
+
/* A simple displaced step closure that contains only a byte buffer. */
struct buf_displaced_step_closure : displaced_step_closure
failed_before = 0;
step_thread = nullptr;
step_gdbarch = nullptr;
- step_closure = nullptr;
+ step_closure.reset ();
step_original = 0;
step_copy = 0;
step_saved_copy.clear ();
/* The closure provided gdbarch_displaced_step_copy_insn, to be used
for post-step cleanup. */
- displaced_step_closure *step_closure;
+ displaced_step_closure_up step_closure;
/* The address of the original instruction, and the copy we
made. */