gdb: move displaced stepping logic to gdbarch, allow starting concurrent displaced...
[deliverable/binutils-gdb.git] / gdb / gdbthread.h
index 4f956f19b21cd26b2610476abc0e6bdab0db1b77..95ba32fcc60122f4401596a46b21d422e3ffe255 100644 (file)
@@ -32,6 +32,7 @@ struct symtab;
 #include "gdbsupport/refcounted-object.h"
 #include "gdbsupport/common-gdbthread.h"
 #include "gdbsupport/forward-scope-exit.h"
+#include "displaced-stepping.h"
 
 struct inferior;
 struct process_stratum_target;
@@ -252,6 +253,9 @@ public:
   /* Mark this thread as running and notify observers.  */
   void set_running (bool running);
 
+  struct regcache *regcache ();
+  struct gdbarch *arch ();
+
   struct thread_info *next = NULL;
   ptid_t ptid;                 /* "Actual process id";
                                    In fact, this may be overloaded with 
@@ -406,6 +410,8 @@ public:
      fields point to self.  */
   struct thread_info *step_over_prev = NULL;
   struct thread_info *step_over_next = NULL;
+
+  displaced_step_thread_state displaced_step_state;
 };
 
 /* A gdb::ref_ptr pointer to a thread_info.  */
@@ -752,19 +758,34 @@ extern bool value_in_thread_stack_temporaries (struct value *,
 
 extern void global_thread_step_over_chain_enqueue (struct thread_info *tp);
 
+/* Remove TP from step-over chain LIST_P.  */
+
+extern void thread_step_over_chain_remove (thread_info **list_p,
+                                          thread_info *tp);
+
 /* Remove TP from the global pending step-over chain.  */
 
-extern void global_thread_step_over_chain_remove (struct thread_info *tp);
+extern void global_thread_step_over_chain_remove (thread_info *tp);
 
-/* Return the next thread in the global step-over chain.  NULL
-   if TP is the last entry in the chain.  */
+/* Return the next thread in the step-over chain whose head is CHAIN_HEAD.
+   Return NULL if TP is the last entry in the chain.  */
 
-extern struct thread_info *global_thread_step_over_chain_next (struct thread_info *tp);
+extern thread_info *thread_step_over_chain_next (thread_info *chain_head,
+                                                thread_info *tp);
+
+/* Return the next thread in the global step-over chain.  Return NULL if TP is
+   the last entry in the chain.  */
+
+extern thread_info *global_thread_step_over_chain_next (thread_info *tp);
 
 /* Return true if TP is in any step-over chain.  */
 
 extern int thread_is_in_step_over_chain (struct thread_info *tp);
 
+/* Return the length of the the step over chain TP is in.  */
+
+extern int thread_step_over_chain_length (thread_info *tp);
+
 /* Cancel any ongoing execution command.  */
 
 extern void thread_cancel_execution_command (struct thread_info *thr);
This page took 0.02491 seconds and 4 git commands to generate.