@@ -857,10 +857,10 @@ class Process : public std::enable_shared_from_this<Process>,
857857 // / \see Thread:Resume()
858858 // / \see Thread:Step()
859859 // / \see Thread:Suspend()
860- Status Resume ();
860+ Status Resume (lldb::RunDirection direction = lldb::eRunForward );
861861
862862 // / Resume a process, and wait for it to stop.
863- Status ResumeSynchronous (Stream *stream);
863+ Status ResumeSynchronous (Stream *stream, lldb::RunDirection direction = lldb::eRunForward );
864864
865865 // / Halts a running process.
866866 // /
@@ -1104,9 +1104,14 @@ class Process : public std::enable_shared_from_this<Process>,
11041104 // / \see Thread:Resume()
11051105 // / \see Thread:Step()
11061106 // / \see Thread:Suspend()
1107- virtual Status DoResume () {
1108- return Status::FromErrorStringWithFormatv (
1109- " error: {0} does not support resuming processes" , GetPluginName ());
1107+ virtual Status DoResume (lldb::RunDirection direction) {
1108+ if (direction == lldb::RunDirection::eRunForward) {
1109+ return Status::FromErrorStringWithFormatv (
1110+ " error: {0} does not support resuming processes" , GetPluginName ());
1111+ } else {
1112+ return Status::FromErrorStringWithFormatv (
1113+ " error: {0} does not support reverse execution of processes" , GetPluginName ());
1114+ }
11101115 }
11111116
11121117 // / Called after resuming a process.
@@ -2332,6 +2337,8 @@ class Process : public std::enable_shared_from_this<Process>,
23322337
23332338 bool IsRunning () const ;
23342339
2340+ lldb::RunDirection GetLastRunDirection () { return m_last_run_direction; }
2341+
23352342 DynamicCheckerFunctions *GetDynamicCheckers () {
23362343 return m_dynamic_checkers_up.get ();
23372344 }
@@ -2851,7 +2858,7 @@ void PruneThreadPlans();
28512858 // /
28522859 // / \return
28532860 // / An Status object describing the success or failure of the resume.
2854- Status PrivateResume ();
2861+ Status PrivateResume (lldb::RunDirection direction = lldb::eRunForward );
28552862
28562863 // Called internally
28572864 void CompleteAttach ();
@@ -3127,6 +3134,8 @@ void PruneThreadPlans();
31273134 // m_currently_handling_do_on_removals are true,
31283135 // Resume will only request a resume, using this
31293136 // flag to check.
3137+ // The direction of execution from the last time this process was resumed.
3138+ lldb::RunDirection m_last_run_direction;
31303139
31313140 lldb::tid_t m_interrupt_tid; // / The tid of the thread that issued the async
31323141 // / interrupt, used by thread plan timeout. It
0 commit comments