1//===-- ThreadPlanRunToAddress.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_ThreadPlanRunToAddress_h_ 11#define liblldb_ThreadPlanRunToAddress_h_ 12 13// C Includes 14// C++ Includes 15#include <vector> 16 17// Other libraries and framework includes 18// Project includes 19#include "lldb/lldb-private.h" 20#include "lldb/Target/ThreadPlan.h" 21 22namespace lldb_private { 23 24class ThreadPlanRunToAddress : public ThreadPlan 25{ 26public: 27 ThreadPlanRunToAddress (Thread &thread, 28 Address &address, 29 bool stop_others); 30 31 ThreadPlanRunToAddress (Thread &thread, 32 lldb::addr_t address, 33 bool stop_others); 34 35 ThreadPlanRunToAddress (Thread &thread, 36 const std::vector<lldb::addr_t> &addresses, 37 bool stop_others); 38 39 40 virtual 41 ~ThreadPlanRunToAddress (); 42 43 virtual void 44 GetDescription (Stream *s, lldb::DescriptionLevel level); 45 46 virtual bool 47 ValidatePlan (Stream *error); 48 49 virtual bool 50 ShouldStop (Event *event_ptr); 51 52 virtual bool 53 StopOthers (); 54 55 virtual void 56 SetStopOthers (bool new_value); 57 58 virtual lldb::StateType 59 GetPlanRunState (); 60 61 virtual bool 62 WillStop (); 63 64 virtual bool 65 MischiefManaged (); 66 67protected: 68 virtual bool 69 DoPlanExplainsStop (Event *event_ptr); 70 71 void SetInitialBreakpoints(); 72 bool AtOurAddress(); 73private: 74 bool m_stop_others; 75 std::vector<lldb::addr_t> m_addresses; // This is the address we are going to run to. 76 // TODO: Would it be useful to have multiple addresses? 77 std::vector<lldb::break_id_t> m_break_ids; // This is the breakpoint we are using to stop us at m_address. 78 79 DISALLOW_COPY_AND_ASSIGN (ThreadPlanRunToAddress); 80 81}; 82 83} // namespace lldb_private 84 85#endif // liblldb_ThreadPlanRunToAddress_h_ 86