124943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner//===-- ThreadPlanRunToAddress.h --------------------------------*- C++ -*-===// 224943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner// 324943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner// The LLVM Compiler Infrastructure 424943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner// 524943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner// This file is distributed under the University of Illinois Open Source 624943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner// License. See LICENSE.TXT for details. 724943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner// 824943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner//===----------------------------------------------------------------------===// 924943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner 1024943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner#ifndef liblldb_ThreadPlanRunToAddress_h_ 1124943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner#define liblldb_ThreadPlanRunToAddress_h_ 1224943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner 1324943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner// C Includes 1424943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner// C++ Includes 1517454cfc6a757305a7d9d4c31313c38981b57b01Jim Ingham#include <vector> 1617454cfc6a757305a7d9d4c31313c38981b57b01Jim Ingham 1724943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner// Other libraries and framework includes 1824943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner// Project includes 1924943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner#include "lldb/lldb-private.h" 2024943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner#include "lldb/Target/ThreadPlan.h" 2124943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner 2224943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattnernamespace lldb_private { 2324943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner 2424943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattnerclass ThreadPlanRunToAddress : public ThreadPlan 2524943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner{ 2624943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattnerpublic: 2724943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner ThreadPlanRunToAddress (Thread &thread, 2824943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner Address &address, 2924943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner bool stop_others); 3024943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner 3124943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner ThreadPlanRunToAddress (Thread &thread, 3224943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner lldb::addr_t address, 3324943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner bool stop_others); 3424943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner 3517454cfc6a757305a7d9d4c31313c38981b57b01Jim Ingham ThreadPlanRunToAddress (Thread &thread, 36c0fa53324d62a48257c092a3347d6e7236aa3152Greg Clayton const std::vector<lldb::addr_t> &addresses, 3717454cfc6a757305a7d9d4c31313c38981b57b01Jim Ingham bool stop_others); 3817454cfc6a757305a7d9d4c31313c38981b57b01Jim Ingham 3917454cfc6a757305a7d9d4c31313c38981b57b01Jim Ingham 4024943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner virtual 4124943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner ~ThreadPlanRunToAddress (); 4224943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner 4324943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner virtual void 4424943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner GetDescription (Stream *s, lldb::DescriptionLevel level); 4524943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner 4624943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner virtual bool 4724943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner ValidatePlan (Stream *error); 4824943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner 4924943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner virtual bool 5024943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner ShouldStop (Event *event_ptr); 5124943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner 5224943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner virtual bool 5324943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner StopOthers (); 5424943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner 5524943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner virtual void 5624943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner SetStopOthers (bool new_value); 5724943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner 5824943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner virtual lldb::StateType 59745ac7a5826fe7c392007941a4046bfb1a8dff81Jim Ingham GetPlanRunState (); 6024943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner 6124943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner virtual bool 6224943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner WillStop (); 6324943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner 6424943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner virtual bool 6524943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner MischiefManaged (); 6624943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner 6724943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattnerprotected: 687c79a27b955432dfd3ad9439640f0af2eccf37b8Jim Ingham virtual bool 697c79a27b955432dfd3ad9439640f0af2eccf37b8Jim Ingham DoPlanExplainsStop (Event *event_ptr); 707c79a27b955432dfd3ad9439640f0af2eccf37b8Jim Ingham 7117454cfc6a757305a7d9d4c31313c38981b57b01Jim Ingham void SetInitialBreakpoints(); 7224943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner bool AtOurAddress(); 7324943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattnerprivate: 7424943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner bool m_stop_others; 7517454cfc6a757305a7d9d4c31313c38981b57b01Jim Ingham std::vector<lldb::addr_t> m_addresses; // This is the address we are going to run to. 7624943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner // TODO: Would it be useful to have multiple addresses? 776db3594f1ce91d8268ef60bf5d07635d778ea786Jim Ingham std::vector<lldb::break_id_t> m_break_ids; // This is the breakpoint we are using to stop us at m_address. 7824943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner 7924943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner DISALLOW_COPY_AND_ASSIGN (ThreadPlanRunToAddress); 8024943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner 8124943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner}; 8224943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner 8324943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner} // namespace lldb_private 8424943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner 8524943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner#endif // liblldb_ThreadPlanRunToAddress_h_ 86