2004-12-13 Randolph Chung <tausq@debian.org>
[binutils-gdb.git] / gdb / gdbthread.h
index 7483a53eb4b4e50a20a216f240730a0030ca940e..c58a38eab674436130ded86f845fb161b08922ce 100644 (file)
 #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;
@@ -37,13 +44,12 @@ struct thread_info
   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;
@@ -59,10 +65,6 @@ struct thread_info
      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;
 };
@@ -78,6 +80,9 @@ extern struct thread_info *add_thread (ptid_t ptid);
 /* 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);
@@ -105,37 +110,33 @@ extern struct thread_info *iterate_over_threads (thread_callback_func, void *);
 /* 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;