#ifndef GDBTHREAD_H
#define GDBTHREAD_H
+struct breakpoint;
+struct frame_id;
+struct symtab;
+
/* For bpstat */
#include "breakpoint.h"
+/* For struct frame_id. */
+#include "frame.h"
+
struct thread_info
{
struct thread_info *next;
int num; /* Convenient handle (GDB thread id) */
/* State from wait_for_inferior */
CORE_ADDR prev_pc;
- CORE_ADDR prev_func_start;
- char *prev_func_name;
struct breakpoint *step_resume_breakpoint;
- struct breakpoint *through_sigtramp_breakpoint;
CORE_ADDR step_range_start;
CORE_ADDR step_range_end;
- CORE_ADDR step_frame_address;
+ struct frame_id step_frame_id;
+ int current_line;
+ struct symtab *current_symtab;
int trap_expected;
int handling_longjmp;
int another_trap;
when we finally do stop stepping. */
bpstat stepping_through_solib_catchpoints;
- /* This is set to TRUE when this thread is in a signal handler
- trampoline and we're single-stepping through it. */
- int stepping_through_sigtramp;
-
/* Private data used by the target vector implementation. */
struct private_thread_info *private;
};
/* Delete an existing thread list entry. */
extern void delete_thread (ptid_t);
+/* Delete a step_resume_breakpoint from the thread database. */
+extern void delete_step_resume_breakpoint (void *);
+
/* Translate the integer thread id (GDB's homegrown id, not the system's)
into a "pid" (which may be overloaded with extra thread information). */
extern ptid_t thread_id_to_pid (int);
/* infrun context switch: save the debugger state for the given thread. */
extern void save_infrun_state (ptid_t ptid,
CORE_ADDR prev_pc,
- CORE_ADDR prev_func_start,
- char *prev_func_name,
int trap_expected,
struct breakpoint *step_resume_breakpoint,
- struct breakpoint *through_sigtramp_breakpoint,
CORE_ADDR step_range_start,
CORE_ADDR step_range_end,
- CORE_ADDR step_frame_address,
+ const struct frame_id *step_frame_id,
int handling_longjmp,
int another_trap,
int stepping_through_solib_after_catch,
bpstat stepping_through_solib_catchpoints,
- int stepping_through_sigtramp);
+ int current_line,
+ struct symtab *current_symtab);
/* infrun context switch: load the debugger state previously saved
for the given thread. */
extern void load_infrun_state (ptid_t ptid,
CORE_ADDR *prev_pc,
- CORE_ADDR *prev_func_start,
- char **prev_func_name,
int *trap_expected,
struct breakpoint **step_resume_breakpoint,
- struct breakpoint **through_sigtramp_breakpoint,
CORE_ADDR *step_range_start,
CORE_ADDR *step_range_end,
- CORE_ADDR *step_frame_address,
+ struct frame_id *step_frame_id,
int *handling_longjmp,
int *another_trap,
int *stepping_through_solib_affter_catch,
bpstat *stepping_through_solib_catchpoints,
- int *stepping_through_sigtramp);
+ int *current_line,
+ struct symtab **current_symtab);
/* Commands with a prefix of `thread'. */
extern struct cmd_list_element *thread_cmd_list;