SBTarget.h revision c833295baeec641086f536e78050388af36784f8
12da489cd246702bee5938545b18a6f710ed214bcJamie Gennis//===-- SBTarget.h ----------------------------------------------*- C++ -*-===//
22da489cd246702bee5938545b18a6f710ed214bcJamie Gennis//
32da489cd246702bee5938545b18a6f710ed214bcJamie Gennis//                     The LLVM Compiler Infrastructure
42da489cd246702bee5938545b18a6f710ed214bcJamie Gennis//
52da489cd246702bee5938545b18a6f710ed214bcJamie Gennis// This file is distributed under the University of Illinois Open Source
62da489cd246702bee5938545b18a6f710ed214bcJamie Gennis// License. See LICENSE.TXT for details.
72da489cd246702bee5938545b18a6f710ed214bcJamie Gennis//
82da489cd246702bee5938545b18a6f710ed214bcJamie Gennis//===----------------------------------------------------------------------===//
92da489cd246702bee5938545b18a6f710ed214bcJamie Gennis
102da489cd246702bee5938545b18a6f710ed214bcJamie Gennis#ifndef LLDB_SBTarget_h_
112da489cd246702bee5938545b18a6f710ed214bcJamie Gennis#define LLDB_SBTarget_h_
122da489cd246702bee5938545b18a6f710ed214bcJamie Gennis
132da489cd246702bee5938545b18a6f710ed214bcJamie Gennis#include "lldb/API/SBDefines.h"
142da489cd246702bee5938545b18a6f710ed214bcJamie Gennis#include "lldb/API/SBBroadcaster.h"
152da489cd246702bee5938545b18a6f710ed214bcJamie Gennis#include "lldb/API/SBFileSpec.h"
162da489cd246702bee5938545b18a6f710ed214bcJamie Gennis
172da489cd246702bee5938545b18a6f710ed214bcJamie Gennisnamespace lldb {
182da489cd246702bee5938545b18a6f710ed214bcJamie Gennis
192da489cd246702bee5938545b18a6f710ed214bcJamie Gennisclass SBBreakpoint;
202da489cd246702bee5938545b18a6f710ed214bcJamie Gennis
212da489cd246702bee5938545b18a6f710ed214bcJamie Gennisclass SBTarget
222da489cd246702bee5938545b18a6f710ed214bcJamie Gennis{
232da489cd246702bee5938545b18a6f710ed214bcJamie Gennispublic:
242da489cd246702bee5938545b18a6f710ed214bcJamie Gennis    //------------------------------------------------------------------
252da489cd246702bee5938545b18a6f710ed214bcJamie Gennis    // Broadcaster bits.
262da489cd246702bee5938545b18a6f710ed214bcJamie Gennis    //------------------------------------------------------------------
272da489cd246702bee5938545b18a6f710ed214bcJamie Gennis    enum
282da489cd246702bee5938545b18a6f710ed214bcJamie Gennis    {
292da489cd246702bee5938545b18a6f710ed214bcJamie Gennis        eBroadcastBitBreakpointChanged  = (1 << 0),
302da489cd246702bee5938545b18a6f710ed214bcJamie Gennis        eBroadcastBitModulesLoaded      = (1 << 1),
312da489cd246702bee5938545b18a6f710ed214bcJamie Gennis        eBroadcastBitModulesUnloaded    = (1 << 2)
322da489cd246702bee5938545b18a6f710ed214bcJamie Gennis    };
332da489cd246702bee5938545b18a6f710ed214bcJamie Gennis
342da489cd246702bee5938545b18a6f710ed214bcJamie Gennis    //------------------------------------------------------------------
352da489cd246702bee5938545b18a6f710ed214bcJamie Gennis    // Constructors and Destructors
362da489cd246702bee5938545b18a6f710ed214bcJamie Gennis    //------------------------------------------------------------------
372da489cd246702bee5938545b18a6f710ed214bcJamie Gennis    SBTarget (const lldb::SBTarget& rhs);
382da489cd246702bee5938545b18a6f710ed214bcJamie Gennis
392da489cd246702bee5938545b18a6f710ed214bcJamie Gennis    SBTarget ();  // Required for SWIG.
402da489cd246702bee5938545b18a6f710ed214bcJamie Gennis
412da489cd246702bee5938545b18a6f710ed214bcJamie Gennis    //------------------------------------------------------------------
422da489cd246702bee5938545b18a6f710ed214bcJamie Gennis    // Destructor
432da489cd246702bee5938545b18a6f710ed214bcJamie Gennis    //------------------------------------------------------------------
442da489cd246702bee5938545b18a6f710ed214bcJamie Gennis    ~SBTarget();
452da489cd246702bee5938545b18a6f710ed214bcJamie Gennis
462da489cd246702bee5938545b18a6f710ed214bcJamie Gennis    const lldb::SBTarget&
472da489cd246702bee5938545b18a6f710ed214bcJamie Gennis    Assign (const lldb::SBTarget& rhs);
482da489cd246702bee5938545b18a6f710ed214bcJamie Gennis
492da489cd246702bee5938545b18a6f710ed214bcJamie Gennis    bool
502da489cd246702bee5938545b18a6f710ed214bcJamie Gennis    IsValid() const;
512da489cd246702bee5938545b18a6f710ed214bcJamie Gennis
522da489cd246702bee5938545b18a6f710ed214bcJamie Gennis    lldb::SBProcess
532da489cd246702bee5938545b18a6f710ed214bcJamie Gennis    GetProcess ();
542da489cd246702bee5938545b18a6f710ed214bcJamie Gennis
552da489cd246702bee5938545b18a6f710ed214bcJamie Gennis    lldb::SBProcess
562da489cd246702bee5938545b18a6f710ed214bcJamie Gennis    CreateProcess ();
572da489cd246702bee5938545b18a6f710ed214bcJamie Gennis
582da489cd246702bee5938545b18a6f710ed214bcJamie Gennis    lldb::SBProcess
592da489cd246702bee5938545b18a6f710ed214bcJamie Gennis    LaunchProcess (char const **argv,
602da489cd246702bee5938545b18a6f710ed214bcJamie Gennis                   char const **envp,
612da489cd246702bee5938545b18a6f710ed214bcJamie Gennis                   const char *tty,
622da489cd246702bee5938545b18a6f710ed214bcJamie Gennis                   bool stop_at_entry);
632da489cd246702bee5938545b18a6f710ed214bcJamie Gennis
642da489cd246702bee5938545b18a6f710ed214bcJamie Gennis    lldb::SBFileSpec
652da489cd246702bee5938545b18a6f710ed214bcJamie Gennis    GetExecutable ();
662da489cd246702bee5938545b18a6f710ed214bcJamie Gennis
672da489cd246702bee5938545b18a6f710ed214bcJamie Gennis    uint32_t
682da489cd246702bee5938545b18a6f710ed214bcJamie Gennis    GetNumModules () const;
692da489cd246702bee5938545b18a6f710ed214bcJamie Gennis
702da489cd246702bee5938545b18a6f710ed214bcJamie Gennis    lldb::SBModule
712da489cd246702bee5938545b18a6f710ed214bcJamie Gennis    GetModuleAtIndex (uint32_t idx);
722da489cd246702bee5938545b18a6f710ed214bcJamie Gennis
732da489cd246702bee5938545b18a6f710ed214bcJamie Gennis    lldb::SBDebugger
742da489cd246702bee5938545b18a6f710ed214bcJamie Gennis    GetDebugger() const;
752da489cd246702bee5938545b18a6f710ed214bcJamie Gennis
762da489cd246702bee5938545b18a6f710ed214bcJamie Gennis    lldb::SBModule
772da489cd246702bee5938545b18a6f710ed214bcJamie Gennis    FindModule (const lldb::SBFileSpec &file_spec);
782da489cd246702bee5938545b18a6f710ed214bcJamie Gennis
792da489cd246702bee5938545b18a6f710ed214bcJamie Gennis    void
802da489cd246702bee5938545b18a6f710ed214bcJamie Gennis    Clear ();
812da489cd246702bee5938545b18a6f710ed214bcJamie Gennis
822da489cd246702bee5938545b18a6f710ed214bcJamie Gennis    bool
832da489cd246702bee5938545b18a6f710ed214bcJamie Gennis    DeleteTargetFromList (lldb_private::TargetList *list);
842da489cd246702bee5938545b18a6f710ed214bcJamie Gennis
852da489cd246702bee5938545b18a6f710ed214bcJamie Gennis    lldb::SBBreakpoint
862da489cd246702bee5938545b18a6f710ed214bcJamie Gennis    BreakpointCreateByLocation (const char *file, uint32_t line);
872da489cd246702bee5938545b18a6f710ed214bcJamie Gennis
882da489cd246702bee5938545b18a6f710ed214bcJamie Gennis    lldb::SBBreakpoint
892da489cd246702bee5938545b18a6f710ed214bcJamie Gennis    BreakpointCreateByLocation (const lldb::SBFileSpec &file_spec, uint32_t line);
902da489cd246702bee5938545b18a6f710ed214bcJamie Gennis
912da489cd246702bee5938545b18a6f710ed214bcJamie Gennis    lldb::SBBreakpoint
922da489cd246702bee5938545b18a6f710ed214bcJamie Gennis    BreakpointCreateByName (const char *symbol_name, const char *module_name = NULL);
932da489cd246702bee5938545b18a6f710ed214bcJamie Gennis
942da489cd246702bee5938545b18a6f710ed214bcJamie Gennis    lldb::SBBreakpoint
952da489cd246702bee5938545b18a6f710ed214bcJamie Gennis    BreakpointCreateByRegex (const char *symbol_name_regex, const char *module_name = NULL);
962da489cd246702bee5938545b18a6f710ed214bcJamie Gennis
972da489cd246702bee5938545b18a6f710ed214bcJamie Gennis    lldb::SBBreakpoint
982da489cd246702bee5938545b18a6f710ed214bcJamie Gennis    BreakpointCreateByAddress (addr_t address);
992da489cd246702bee5938545b18a6f710ed214bcJamie Gennis
1002da489cd246702bee5938545b18a6f710ed214bcJamie Gennis    uint32_t
1012da489cd246702bee5938545b18a6f710ed214bcJamie Gennis    GetNumBreakpoints () const;
1022da489cd246702bee5938545b18a6f710ed214bcJamie Gennis
1032da489cd246702bee5938545b18a6f710ed214bcJamie Gennis    lldb::SBBreakpoint
1042da489cd246702bee5938545b18a6f710ed214bcJamie Gennis    GetBreakpointAtIndex (uint32_t idx) const;
1052da489cd246702bee5938545b18a6f710ed214bcJamie Gennis
1062da489cd246702bee5938545b18a6f710ed214bcJamie Gennis    bool
1072da489cd246702bee5938545b18a6f710ed214bcJamie Gennis    BreakpointDelete (break_id_t break_id);
1082da489cd246702bee5938545b18a6f710ed214bcJamie Gennis
1092da489cd246702bee5938545b18a6f710ed214bcJamie Gennis    lldb::SBBreakpoint
1102da489cd246702bee5938545b18a6f710ed214bcJamie Gennis    FindBreakpointByID (break_id_t break_id);
1112da489cd246702bee5938545b18a6f710ed214bcJamie Gennis
1122da489cd246702bee5938545b18a6f710ed214bcJamie Gennis    bool
1132da489cd246702bee5938545b18a6f710ed214bcJamie Gennis    EnableAllBreakpoints ();
1142da489cd246702bee5938545b18a6f710ed214bcJamie Gennis
1152da489cd246702bee5938545b18a6f710ed214bcJamie Gennis    bool
1162da489cd246702bee5938545b18a6f710ed214bcJamie Gennis    DisableAllBreakpoints ();
1172da489cd246702bee5938545b18a6f710ed214bcJamie Gennis
1182da489cd246702bee5938545b18a6f710ed214bcJamie Gennis    bool
1192da489cd246702bee5938545b18a6f710ed214bcJamie Gennis    DeleteAllBreakpoints ();
1202da489cd246702bee5938545b18a6f710ed214bcJamie Gennis
1212da489cd246702bee5938545b18a6f710ed214bcJamie Gennis    lldb::SBBroadcaster
1222da489cd246702bee5938545b18a6f710ed214bcJamie Gennis    GetBroadcaster () const;
1232da489cd246702bee5938545b18a6f710ed214bcJamie Gennis
1242da489cd246702bee5938545b18a6f710ed214bcJamie Gennis    //void
1252da489cd246702bee5938545b18a6f710ed214bcJamie Gennis    //Disassemble ();
1262da489cd246702bee5938545b18a6f710ed214bcJamie Gennis
1272da489cd246702bee5938545b18a6f710ed214bcJamie Gennis    void
1282da489cd246702bee5938545b18a6f710ed214bcJamie Gennis    Disassemble (lldb::addr_t start_address,
1292da489cd246702bee5938545b18a6f710ed214bcJamie Gennis                 lldb::addr_t end_address = LLDB_INVALID_ADDRESS,
1302da489cd246702bee5938545b18a6f710ed214bcJamie Gennis                 const char *module_name = NULL);
131
132    void
133    Disassemble (const char *function_name, const char *module_name = NULL);
134
135#ifndef SWIG
136    bool
137    operator == (const lldb::SBTarget &rhs) const;
138
139    bool
140    operator != (const lldb::SBTarget &rhs) const;
141
142#endif
143
144protected:
145    friend class SBDebugger;
146    friend class SBProcess;
147
148    //------------------------------------------------------------------
149    // Constructors are private, use static Target::Create function to
150    // create an instance of this class.
151    //------------------------------------------------------------------
152
153    SBTarget (const lldb::TargetSP& target_sp);
154
155    void
156    reset (const lldb::TargetSP& target_sp);
157
158    lldb_private::Target *
159    operator ->() const;
160
161    lldb_private::Target *
162    get() const;
163
164private:
165    //------------------------------------------------------------------
166    // For Target only
167    //------------------------------------------------------------------
168
169    lldb::TargetSP m_opaque_sp;
170};
171
172} // namespace lldb
173
174#endif  // LLDB_SBTarget_h_
175