Home | History | Annotate | Download | only in Target
      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 
     22 namespace lldb_private {
     23 
     24 class ThreadPlanRunToAddress : public ThreadPlan
     25 {
     26 public:
     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 
     67 protected:
     68     virtual bool
     69     DoPlanExplainsStop (Event *event_ptr);
     70 
     71     void SetInitialBreakpoints();
     72     bool AtOurAddress();
     73 private:
     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