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