1 //===-- ThreadPlanStepInstruction.h -----------------------------*- C++ -*-===// 2 // 3 // The LLVM Compiler Infrastructure 4 // 5 // This file is distributed under the University of Illinois Open Source 6 // License. See LICENSE.TXT for details. 7 // 8 //===----------------------------------------------------------------------===// 9 10 #ifndef liblldb_ThreadPlanStepInstruction_h_ 11 #define liblldb_ThreadPlanStepInstruction_h_ 12 13 // C Includes 14 // C++ Includes 15 // Other libraries and framework includes 16 // Project includes 17 #include "lldb/lldb-private.h" 18 #include "lldb/Target/Thread.h" 19 #include "lldb/Target/ThreadPlan.h" 20 21 namespace lldb_private { 22 23 class ThreadPlanStepInstruction : public ThreadPlan 24 { 25 public: 26 virtual ~ThreadPlanStepInstruction (); 27 28 virtual void GetDescription (Stream *s, lldb::DescriptionLevel level); 29 virtual bool ValidatePlan (Stream *error); 30 virtual bool ShouldStop (Event *event_ptr); 31 virtual bool StopOthers (); 32 virtual lldb::StateType GetPlanRunState (); 33 virtual bool WillStop (); 34 virtual bool MischiefManaged (); 35 virtual bool IsPlanStale (); 36 37 protected: 38 virtual bool DoPlanExplainsStop (Event *event_ptr); 39 40 ThreadPlanStepInstruction (Thread &thread, 41 bool step_over, 42 bool stop_others, 43 Vote stop_vote, 44 Vote run_vote); 45 void SetUpState (); 46 47 private: 48 friend lldb::ThreadPlanSP 49 Thread::QueueThreadPlanForStepSingleInstruction (bool step_over, bool abort_other_plans, bool stop_other_threads); 50 51 lldb::addr_t m_instruction_addr; 52 bool m_stop_other_threads; 53 bool m_step_over; 54 // These two are used only for the step over case. 55 bool m_start_has_symbol; 56 StackID m_stack_id; 57 StackID m_parent_frame_id; 58 59 DISALLOW_COPY_AND_ASSIGN (ThreadPlanStepInstruction); 60 61 }; 62 63 64 } // namespace lldb_private 65 66 #endif // liblldb_ThreadPlanStepInstruction_h_ 67