124943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner//===-- SBTarget.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 LLDB_SBTarget_h_
1124943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner#define LLDB_SBTarget_h_
1224943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner
135f81547fd786584b10999c087528b323b5945896Eli Friedman#include "lldb/API/SBDefines.h"
14a395506fb374f1f589d0d860f5e6c9fa7b1e0b9aGreg Clayton#include "lldb/API/SBAddress.h"
155f81547fd786584b10999c087528b323b5945896Eli Friedman#include "lldb/API/SBBroadcaster.h"
165f81547fd786584b10999c087528b323b5945896Eli Friedman#include "lldb/API/SBFileSpec.h"
17d6d47976b71187907c1cdeea86fabf7d5534314fJim Ingham#include "lldb/API/SBFileSpecList.h"
1896f6df8db3ce08861efe8d061b1daef328a4a4c0Sean Callanan#include "lldb/API/SBSymbolContextList.h"
19979e20d127335143ffc89c2e37ec3a8b717ff22dEnrico Granata#include "lldb/API/SBType.h"
2019b646725e7d6bebda787fa3cb55ff223a00d907Greg Clayton#include "lldb/API/SBValue.h"
211fa6b3d6c83955fe06c63d3a4025f2c0ec431d68Greg Clayton#include "lldb/API/SBWatchpoint.h"
2224943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner
2324943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattnernamespace lldb {
2424943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner
250a8dcacde404c520f1131c641041dceb9f68b6faGreg Claytonclass SBLaunchInfo
260a8dcacde404c520f1131c641041dceb9f68b6faGreg Clayton{
270a8dcacde404c520f1131c641041dceb9f68b6faGreg Claytonpublic:
2898ca1e668c33bad3095da78977aaa3ee0043e6d7Greg Clayton    SBLaunchInfo (const char **argv);
290a8dcacde404c520f1131c641041dceb9f68b6faGreg Clayton
3066c2e19e7c343e1ff0fd31180a12f8a68fc61b6cGreg Clayton    ~SBLaunchInfo();
3166c2e19e7c343e1ff0fd31180a12f8a68fc61b6cGreg Clayton
320a8dcacde404c520f1131c641041dceb9f68b6faGreg Clayton    uint32_t
330a8dcacde404c520f1131c641041dceb9f68b6faGreg Clayton    GetUserID();
340a8dcacde404c520f1131c641041dceb9f68b6faGreg Clayton
350a8dcacde404c520f1131c641041dceb9f68b6faGreg Clayton    uint32_t
360a8dcacde404c520f1131c641041dceb9f68b6faGreg Clayton    GetGroupID();
370a8dcacde404c520f1131c641041dceb9f68b6faGreg Clayton
380a8dcacde404c520f1131c641041dceb9f68b6faGreg Clayton    bool
390a8dcacde404c520f1131c641041dceb9f68b6faGreg Clayton    UserIDIsValid ();
400a8dcacde404c520f1131c641041dceb9f68b6faGreg Clayton
410a8dcacde404c520f1131c641041dceb9f68b6faGreg Clayton    bool
420a8dcacde404c520f1131c641041dceb9f68b6faGreg Clayton    GroupIDIsValid ();
430a8dcacde404c520f1131c641041dceb9f68b6faGreg Clayton
440a8dcacde404c520f1131c641041dceb9f68b6faGreg Clayton    void
450a8dcacde404c520f1131c641041dceb9f68b6faGreg Clayton    SetUserID (uint32_t uid);
460a8dcacde404c520f1131c641041dceb9f68b6faGreg Clayton
470a8dcacde404c520f1131c641041dceb9f68b6faGreg Clayton    void
480a8dcacde404c520f1131c641041dceb9f68b6faGreg Clayton    SetGroupID (uint32_t gid);
490a8dcacde404c520f1131c641041dceb9f68b6faGreg Clayton
500a8dcacde404c520f1131c641041dceb9f68b6faGreg Clayton    uint32_t
510a8dcacde404c520f1131c641041dceb9f68b6faGreg Clayton    GetNumArguments ();
520a8dcacde404c520f1131c641041dceb9f68b6faGreg Clayton
530a8dcacde404c520f1131c641041dceb9f68b6faGreg Clayton    const char *
540a8dcacde404c520f1131c641041dceb9f68b6faGreg Clayton    GetArgumentAtIndex (uint32_t idx);
550a8dcacde404c520f1131c641041dceb9f68b6faGreg Clayton
560a8dcacde404c520f1131c641041dceb9f68b6faGreg Clayton    void
570a8dcacde404c520f1131c641041dceb9f68b6faGreg Clayton    SetArguments (const char **argv, bool append);
580a8dcacde404c520f1131c641041dceb9f68b6faGreg Clayton
590a8dcacde404c520f1131c641041dceb9f68b6faGreg Clayton    uint32_t
600a8dcacde404c520f1131c641041dceb9f68b6faGreg Clayton    GetNumEnvironmentEntries ();
610a8dcacde404c520f1131c641041dceb9f68b6faGreg Clayton
620a8dcacde404c520f1131c641041dceb9f68b6faGreg Clayton    const char *
630a8dcacde404c520f1131c641041dceb9f68b6faGreg Clayton    GetEnvironmentEntryAtIndex (uint32_t idx);
640a8dcacde404c520f1131c641041dceb9f68b6faGreg Clayton
650a8dcacde404c520f1131c641041dceb9f68b6faGreg Clayton    void
660a8dcacde404c520f1131c641041dceb9f68b6faGreg Clayton    SetEnvironmentEntries (const char **envp, bool append);
670a8dcacde404c520f1131c641041dceb9f68b6faGreg Clayton
680a8dcacde404c520f1131c641041dceb9f68b6faGreg Clayton    void
690a8dcacde404c520f1131c641041dceb9f68b6faGreg Clayton    Clear ();
700a8dcacde404c520f1131c641041dceb9f68b6faGreg Clayton
710a8dcacde404c520f1131c641041dceb9f68b6faGreg Clayton    const char *
720a8dcacde404c520f1131c641041dceb9f68b6faGreg Clayton    GetWorkingDirectory () const;
730a8dcacde404c520f1131c641041dceb9f68b6faGreg Clayton
740a8dcacde404c520f1131c641041dceb9f68b6faGreg Clayton    void
750a8dcacde404c520f1131c641041dceb9f68b6faGreg Clayton    SetWorkingDirectory (const char *working_dir);
760a8dcacde404c520f1131c641041dceb9f68b6faGreg Clayton
770a8dcacde404c520f1131c641041dceb9f68b6faGreg Clayton    uint32_t
780a8dcacde404c520f1131c641041dceb9f68b6faGreg Clayton    GetLaunchFlags ();
790a8dcacde404c520f1131c641041dceb9f68b6faGreg Clayton
800a8dcacde404c520f1131c641041dceb9f68b6faGreg Clayton    void
810a8dcacde404c520f1131c641041dceb9f68b6faGreg Clayton    SetLaunchFlags (uint32_t flags);
820a8dcacde404c520f1131c641041dceb9f68b6faGreg Clayton
830a8dcacde404c520f1131c641041dceb9f68b6faGreg Clayton    const char *
840a8dcacde404c520f1131c641041dceb9f68b6faGreg Clayton    GetProcessPluginName ();
850a8dcacde404c520f1131c641041dceb9f68b6faGreg Clayton
860a8dcacde404c520f1131c641041dceb9f68b6faGreg Clayton    void
870a8dcacde404c520f1131c641041dceb9f68b6faGreg Clayton    SetProcessPluginName (const char *plugin_name);
880a8dcacde404c520f1131c641041dceb9f68b6faGreg Clayton
890a8dcacde404c520f1131c641041dceb9f68b6faGreg Clayton    const char *
900a8dcacde404c520f1131c641041dceb9f68b6faGreg Clayton    GetShell ();
910a8dcacde404c520f1131c641041dceb9f68b6faGreg Clayton
920a8dcacde404c520f1131c641041dceb9f68b6faGreg Clayton    void
930a8dcacde404c520f1131c641041dceb9f68b6faGreg Clayton    SetShell (const char * path);
940a8dcacde404c520f1131c641041dceb9f68b6faGreg Clayton
950a8dcacde404c520f1131c641041dceb9f68b6faGreg Clayton    uint32_t
960a8dcacde404c520f1131c641041dceb9f68b6faGreg Clayton    GetResumeCount ();
970a8dcacde404c520f1131c641041dceb9f68b6faGreg Clayton
980a8dcacde404c520f1131c641041dceb9f68b6faGreg Clayton    void
990a8dcacde404c520f1131c641041dceb9f68b6faGreg Clayton    SetResumeCount (uint32_t c);
1000a8dcacde404c520f1131c641041dceb9f68b6faGreg Clayton
1010a8dcacde404c520f1131c641041dceb9f68b6faGreg Clayton    bool
1020a8dcacde404c520f1131c641041dceb9f68b6faGreg Clayton    AddCloseFileAction (int fd);
1030a8dcacde404c520f1131c641041dceb9f68b6faGreg Clayton
1040a8dcacde404c520f1131c641041dceb9f68b6faGreg Clayton    bool
1050a8dcacde404c520f1131c641041dceb9f68b6faGreg Clayton    AddDuplicateFileAction (int fd, int dup_fd);
1060a8dcacde404c520f1131c641041dceb9f68b6faGreg Clayton
1070a8dcacde404c520f1131c641041dceb9f68b6faGreg Clayton    bool
1080a8dcacde404c520f1131c641041dceb9f68b6faGreg Clayton    AddOpenFileAction (int fd, const char *path, bool read, bool write);
1090a8dcacde404c520f1131c641041dceb9f68b6faGreg Clayton
1100a8dcacde404c520f1131c641041dceb9f68b6faGreg Clayton    bool
1110a8dcacde404c520f1131c641041dceb9f68b6faGreg Clayton    AddSuppressFileAction (int fd, bool read, bool write);
1120a8dcacde404c520f1131c641041dceb9f68b6faGreg Clayton
1130a8dcacde404c520f1131c641041dceb9f68b6faGreg Claytonprotected:
1140a8dcacde404c520f1131c641041dceb9f68b6faGreg Clayton    friend class SBTarget;
1150a8dcacde404c520f1131c641041dceb9f68b6faGreg Clayton
1160a8dcacde404c520f1131c641041dceb9f68b6faGreg Clayton    lldb_private::ProcessLaunchInfo &
11766c2e19e7c343e1ff0fd31180a12f8a68fc61b6cGreg Clayton    ref ();
1180a8dcacde404c520f1131c641041dceb9f68b6faGreg Clayton
1190a8dcacde404c520f1131c641041dceb9f68b6faGreg Clayton    ProcessLaunchInfoSP m_opaque_sp;
1200a8dcacde404c520f1131c641041dceb9f68b6faGreg Clayton};
1210a8dcacde404c520f1131c641041dceb9f68b6faGreg Clayton
1220a8dcacde404c520f1131c641041dceb9f68b6faGreg Claytonclass SBAttachInfo
1230a8dcacde404c520f1131c641041dceb9f68b6faGreg Clayton{
1240a8dcacde404c520f1131c641041dceb9f68b6faGreg Claytonpublic:
1250a8dcacde404c520f1131c641041dceb9f68b6faGreg Clayton    SBAttachInfo ();
1260a8dcacde404c520f1131c641041dceb9f68b6faGreg Clayton
1270a8dcacde404c520f1131c641041dceb9f68b6faGreg Clayton    SBAttachInfo (lldb::pid_t pid);
1280a8dcacde404c520f1131c641041dceb9f68b6faGreg Clayton
1290a8dcacde404c520f1131c641041dceb9f68b6faGreg Clayton    SBAttachInfo (const char *path, bool wait_for);
1300a8dcacde404c520f1131c641041dceb9f68b6faGreg Clayton
1310a8dcacde404c520f1131c641041dceb9f68b6faGreg Clayton    SBAttachInfo (const SBAttachInfo &rhs);
1320a8dcacde404c520f1131c641041dceb9f68b6faGreg Clayton
13366c2e19e7c343e1ff0fd31180a12f8a68fc61b6cGreg Clayton    ~SBAttachInfo();
13466c2e19e7c343e1ff0fd31180a12f8a68fc61b6cGreg Clayton
1350a8dcacde404c520f1131c641041dceb9f68b6faGreg Clayton    SBAttachInfo &
1360a8dcacde404c520f1131c641041dceb9f68b6faGreg Clayton    operator = (const SBAttachInfo &rhs);
1370a8dcacde404c520f1131c641041dceb9f68b6faGreg Clayton
1380a8dcacde404c520f1131c641041dceb9f68b6faGreg Clayton    lldb::pid_t
1390a8dcacde404c520f1131c641041dceb9f68b6faGreg Clayton    GetProcessID ();
1400a8dcacde404c520f1131c641041dceb9f68b6faGreg Clayton
1410a8dcacde404c520f1131c641041dceb9f68b6faGreg Clayton    void
1420a8dcacde404c520f1131c641041dceb9f68b6faGreg Clayton    SetProcessID (lldb::pid_t pid);
1430a8dcacde404c520f1131c641041dceb9f68b6faGreg Clayton
1440a8dcacde404c520f1131c641041dceb9f68b6faGreg Clayton    void
1450a8dcacde404c520f1131c641041dceb9f68b6faGreg Clayton    SetExecutable (const char *path);
1460a8dcacde404c520f1131c641041dceb9f68b6faGreg Clayton
1470a8dcacde404c520f1131c641041dceb9f68b6faGreg Clayton    void
1480a8dcacde404c520f1131c641041dceb9f68b6faGreg Clayton    SetExecutable (lldb::SBFileSpec exe_file);
1490a8dcacde404c520f1131c641041dceb9f68b6faGreg Clayton
1500a8dcacde404c520f1131c641041dceb9f68b6faGreg Clayton    bool
1510a8dcacde404c520f1131c641041dceb9f68b6faGreg Clayton    GetWaitForLaunch ();
1520a8dcacde404c520f1131c641041dceb9f68b6faGreg Clayton
1530a8dcacde404c520f1131c641041dceb9f68b6faGreg Clayton    void
1540a8dcacde404c520f1131c641041dceb9f68b6faGreg Clayton    SetWaitForLaunch (bool b);
1550a8dcacde404c520f1131c641041dceb9f68b6faGreg Clayton
1563a458eb1e413d39546b664813bba9f9ac292357eJim Ingham    bool
1573a458eb1e413d39546b664813bba9f9ac292357eJim Ingham    GetIgnoreExisting ();
1583a458eb1e413d39546b664813bba9f9ac292357eJim Ingham
1593a458eb1e413d39546b664813bba9f9ac292357eJim Ingham    void
1603a458eb1e413d39546b664813bba9f9ac292357eJim Ingham    SetIgnoreExisting (bool b);
1613a458eb1e413d39546b664813bba9f9ac292357eJim Ingham
1620a8dcacde404c520f1131c641041dceb9f68b6faGreg Clayton    uint32_t
1630a8dcacde404c520f1131c641041dceb9f68b6faGreg Clayton    GetResumeCount ();
1640a8dcacde404c520f1131c641041dceb9f68b6faGreg Clayton
1650a8dcacde404c520f1131c641041dceb9f68b6faGreg Clayton    void
1660a8dcacde404c520f1131c641041dceb9f68b6faGreg Clayton    SetResumeCount (uint32_t c);
1670a8dcacde404c520f1131c641041dceb9f68b6faGreg Clayton
1680a8dcacde404c520f1131c641041dceb9f68b6faGreg Clayton    const char *
1690a8dcacde404c520f1131c641041dceb9f68b6faGreg Clayton    GetProcessPluginName ();
1700a8dcacde404c520f1131c641041dceb9f68b6faGreg Clayton
1710a8dcacde404c520f1131c641041dceb9f68b6faGreg Clayton    void
1720a8dcacde404c520f1131c641041dceb9f68b6faGreg Clayton    SetProcessPluginName (const char *plugin_name);
1730a8dcacde404c520f1131c641041dceb9f68b6faGreg Clayton
1740a8dcacde404c520f1131c641041dceb9f68b6faGreg Clayton    uint32_t
17580efa5e90a2924575e068cc44ee53e480e1d1467Greg Clayton    GetUserID();
17680efa5e90a2924575e068cc44ee53e480e1d1467Greg Clayton
17780efa5e90a2924575e068cc44ee53e480e1d1467Greg Clayton    uint32_t
17880efa5e90a2924575e068cc44ee53e480e1d1467Greg Clayton    GetGroupID();
17980efa5e90a2924575e068cc44ee53e480e1d1467Greg Clayton
18080efa5e90a2924575e068cc44ee53e480e1d1467Greg Clayton    bool
18180efa5e90a2924575e068cc44ee53e480e1d1467Greg Clayton    UserIDIsValid ();
18280efa5e90a2924575e068cc44ee53e480e1d1467Greg Clayton
18380efa5e90a2924575e068cc44ee53e480e1d1467Greg Clayton    bool
18480efa5e90a2924575e068cc44ee53e480e1d1467Greg Clayton    GroupIDIsValid ();
18580efa5e90a2924575e068cc44ee53e480e1d1467Greg Clayton
18680efa5e90a2924575e068cc44ee53e480e1d1467Greg Clayton    void
18780efa5e90a2924575e068cc44ee53e480e1d1467Greg Clayton    SetUserID (uint32_t uid);
18880efa5e90a2924575e068cc44ee53e480e1d1467Greg Clayton
18980efa5e90a2924575e068cc44ee53e480e1d1467Greg Clayton    void
19080efa5e90a2924575e068cc44ee53e480e1d1467Greg Clayton    SetGroupID (uint32_t gid);
19180efa5e90a2924575e068cc44ee53e480e1d1467Greg Clayton
19280efa5e90a2924575e068cc44ee53e480e1d1467Greg Clayton    uint32_t
1930a8dcacde404c520f1131c641041dceb9f68b6faGreg Clayton    GetEffectiveUserID();
1940a8dcacde404c520f1131c641041dceb9f68b6faGreg Clayton
1950a8dcacde404c520f1131c641041dceb9f68b6faGreg Clayton    uint32_t
1960a8dcacde404c520f1131c641041dceb9f68b6faGreg Clayton    GetEffectiveGroupID();
1970a8dcacde404c520f1131c641041dceb9f68b6faGreg Clayton
1980a8dcacde404c520f1131c641041dceb9f68b6faGreg Clayton    bool
1990a8dcacde404c520f1131c641041dceb9f68b6faGreg Clayton    EffectiveUserIDIsValid ();
2000a8dcacde404c520f1131c641041dceb9f68b6faGreg Clayton
2010a8dcacde404c520f1131c641041dceb9f68b6faGreg Clayton    bool
2020a8dcacde404c520f1131c641041dceb9f68b6faGreg Clayton    EffectiveGroupIDIsValid ();
2030a8dcacde404c520f1131c641041dceb9f68b6faGreg Clayton
2040a8dcacde404c520f1131c641041dceb9f68b6faGreg Clayton    void
2050a8dcacde404c520f1131c641041dceb9f68b6faGreg Clayton    SetEffectiveUserID (uint32_t uid);
2060a8dcacde404c520f1131c641041dceb9f68b6faGreg Clayton
2070a8dcacde404c520f1131c641041dceb9f68b6faGreg Clayton    void
2080a8dcacde404c520f1131c641041dceb9f68b6faGreg Clayton    SetEffectiveGroupID (uint32_t gid);
2090a8dcacde404c520f1131c641041dceb9f68b6faGreg Clayton
2100a8dcacde404c520f1131c641041dceb9f68b6faGreg Clayton    lldb::pid_t
2110a8dcacde404c520f1131c641041dceb9f68b6faGreg Clayton    GetParentProcessID ();
2120a8dcacde404c520f1131c641041dceb9f68b6faGreg Clayton
2130a8dcacde404c520f1131c641041dceb9f68b6faGreg Clayton    void
2140a8dcacde404c520f1131c641041dceb9f68b6faGreg Clayton    SetParentProcessID (lldb::pid_t pid);
2150a8dcacde404c520f1131c641041dceb9f68b6faGreg Clayton
2160a8dcacde404c520f1131c641041dceb9f68b6faGreg Clayton    bool
2170a8dcacde404c520f1131c641041dceb9f68b6faGreg Clayton    ParentProcessIDIsValid();
2180a8dcacde404c520f1131c641041dceb9f68b6faGreg Clayton
2190a8dcacde404c520f1131c641041dceb9f68b6faGreg Clayton
2200a8dcacde404c520f1131c641041dceb9f68b6faGreg Claytonprotected:
2210a8dcacde404c520f1131c641041dceb9f68b6faGreg Clayton    friend class SBTarget;
2220a8dcacde404c520f1131c641041dceb9f68b6faGreg Clayton
2230a8dcacde404c520f1131c641041dceb9f68b6faGreg Clayton    lldb_private::ProcessAttachInfo &
22466c2e19e7c343e1ff0fd31180a12f8a68fc61b6cGreg Clayton    ref ();
2250a8dcacde404c520f1131c641041dceb9f68b6faGreg Clayton
2260a8dcacde404c520f1131c641041dceb9f68b6faGreg Clayton    ProcessAttachInfoSP m_opaque_sp;
2270a8dcacde404c520f1131c641041dceb9f68b6faGreg Clayton};
22824943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner
22924943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattnerclass SBTarget
23024943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner{
23124943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattnerpublic:
23224943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner    //------------------------------------------------------------------
23324943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner    // Broadcaster bits.
23424943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner    //------------------------------------------------------------------
23524943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner    enum
23624943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner    {
23724943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner        eBroadcastBitBreakpointChanged  = (1 << 0),
23824943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner        eBroadcastBitModulesLoaded      = (1 << 1),
2399c970a371511a0e31ba9360aa841d445792c1ab0Jim Ingham        eBroadcastBitModulesUnloaded    = (1 << 2),
24012fbcf5bdbc54e49bf565ec067b3b484c28a52feEnrico Granata        eBroadcastBitWatchpointChanged  = (1 << 3),
24112fbcf5bdbc54e49bf565ec067b3b484c28a52feEnrico Granata        eBroadcastBitSymbolsLoaded      = (1 << 4)
24224943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner    };
24324943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner
24424943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner    //------------------------------------------------------------------
245538eb82a89a68dbc57251915080bd5152b333978Greg Clayton    // Constructors
24624943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner    //------------------------------------------------------------------
247538eb82a89a68dbc57251915080bd5152b333978Greg Clayton    SBTarget ();
248538eb82a89a68dbc57251915080bd5152b333978Greg Clayton
24924943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner    SBTarget (const lldb::SBTarget& rhs);
25024943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner
251001cd53e9d8d9e481ada536924ea7563b84ee9cfEnrico Granata    SBTarget (const lldb::TargetSP& target_sp);
252001cd53e9d8d9e481ada536924ea7563b84ee9cfEnrico Granata
253538eb82a89a68dbc57251915080bd5152b333978Greg Clayton    const lldb::SBTarget&
254538eb82a89a68dbc57251915080bd5152b333978Greg Clayton    operator = (const lldb::SBTarget& rhs);
25524943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner
25624943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner    //------------------------------------------------------------------
25724943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner    // Destructor
25824943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner    //------------------------------------------------------------------
25924943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner    ~SBTarget();
26024943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner
26124943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner    bool
26224943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner    IsValid() const;
2635a15e6927b5b3234fb3e688717297ba6b5dd6ad7Jim Ingham
2645a15e6927b5b3234fb3e688717297ba6b5dd6ad7Jim Ingham    static const char *
2655a15e6927b5b3234fb3e688717297ba6b5dd6ad7Jim Ingham    GetBroadcasterClassName ();
26624943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner
26724943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner    lldb::SBProcess
26824943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner    GetProcess ();
26924943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner
270271a5db096ae183e9235ebd273c4a6aab6130b3eGreg Clayton    //------------------------------------------------------------------
271271a5db096ae183e9235ebd273c4a6aab6130b3eGreg Clayton    /// Launch a new process.
272271a5db096ae183e9235ebd273c4a6aab6130b3eGreg Clayton    ///
273271a5db096ae183e9235ebd273c4a6aab6130b3eGreg Clayton    /// Launch a new process by spawning a new process using the
274271a5db096ae183e9235ebd273c4a6aab6130b3eGreg Clayton    /// target object's executable module's file as the file to launch.
275271a5db096ae183e9235ebd273c4a6aab6130b3eGreg Clayton    /// Arguments are given in \a argv, and the environment variables
276271a5db096ae183e9235ebd273c4a6aab6130b3eGreg Clayton    /// are in \a envp. Standard input and output files can be
277271a5db096ae183e9235ebd273c4a6aab6130b3eGreg Clayton    /// optionally re-directed to \a stdin_path, \a stdout_path, and
278271a5db096ae183e9235ebd273c4a6aab6130b3eGreg Clayton    /// \a stderr_path.
279271a5db096ae183e9235ebd273c4a6aab6130b3eGreg Clayton    ///
280271a5db096ae183e9235ebd273c4a6aab6130b3eGreg Clayton    /// @param[in] listener
281271a5db096ae183e9235ebd273c4a6aab6130b3eGreg Clayton    ///     An optional listener that will receive all process events.
282271a5db096ae183e9235ebd273c4a6aab6130b3eGreg Clayton    ///     If \a listener is valid then \a listener will listen to all
283271a5db096ae183e9235ebd273c4a6aab6130b3eGreg Clayton    ///     process events. If not valid, then this target's debugger
284271a5db096ae183e9235ebd273c4a6aab6130b3eGreg Clayton    ///     (SBTarget::GetDebugger()) will listen to all process events.
285271a5db096ae183e9235ebd273c4a6aab6130b3eGreg Clayton    ///
286271a5db096ae183e9235ebd273c4a6aab6130b3eGreg Clayton    /// @param[in] argv
287271a5db096ae183e9235ebd273c4a6aab6130b3eGreg Clayton    ///     The argument array.
288271a5db096ae183e9235ebd273c4a6aab6130b3eGreg Clayton    ///
289271a5db096ae183e9235ebd273c4a6aab6130b3eGreg Clayton    /// @param[in] envp
290271a5db096ae183e9235ebd273c4a6aab6130b3eGreg Clayton    ///     The environment array.
291271a5db096ae183e9235ebd273c4a6aab6130b3eGreg Clayton    ///
292271a5db096ae183e9235ebd273c4a6aab6130b3eGreg Clayton    /// @param[in] launch_flags
293271a5db096ae183e9235ebd273c4a6aab6130b3eGreg Clayton    ///     Flags to modify the launch (@see lldb::LaunchFlags)
294271a5db096ae183e9235ebd273c4a6aab6130b3eGreg Clayton    ///
295271a5db096ae183e9235ebd273c4a6aab6130b3eGreg Clayton    /// @param[in] stdin_path
296271a5db096ae183e9235ebd273c4a6aab6130b3eGreg Clayton    ///     The path to use when re-directing the STDIN of the new
297271a5db096ae183e9235ebd273c4a6aab6130b3eGreg Clayton    ///     process. If all stdXX_path arguments are NULL, a pseudo
298271a5db096ae183e9235ebd273c4a6aab6130b3eGreg Clayton    ///     terminal will be used.
299271a5db096ae183e9235ebd273c4a6aab6130b3eGreg Clayton    ///
300271a5db096ae183e9235ebd273c4a6aab6130b3eGreg Clayton    /// @param[in] stdout_path
301271a5db096ae183e9235ebd273c4a6aab6130b3eGreg Clayton    ///     The path to use when re-directing the STDOUT of the new
302271a5db096ae183e9235ebd273c4a6aab6130b3eGreg Clayton    ///     process. If all stdXX_path arguments are NULL, a pseudo
303271a5db096ae183e9235ebd273c4a6aab6130b3eGreg Clayton    ///     terminal will be used.
304271a5db096ae183e9235ebd273c4a6aab6130b3eGreg Clayton    ///
305271a5db096ae183e9235ebd273c4a6aab6130b3eGreg Clayton    /// @param[in] stderr_path
306271a5db096ae183e9235ebd273c4a6aab6130b3eGreg Clayton    ///     The path to use when re-directing the STDERR of the new
307271a5db096ae183e9235ebd273c4a6aab6130b3eGreg Clayton    ///     process. If all stdXX_path arguments are NULL, a pseudo
308271a5db096ae183e9235ebd273c4a6aab6130b3eGreg Clayton    ///     terminal will be used.
309271a5db096ae183e9235ebd273c4a6aab6130b3eGreg Clayton    ///
310271a5db096ae183e9235ebd273c4a6aab6130b3eGreg Clayton    /// @param[in] working_directory
311271a5db096ae183e9235ebd273c4a6aab6130b3eGreg Clayton    ///     The working directory to have the child process run in
312271a5db096ae183e9235ebd273c4a6aab6130b3eGreg Clayton    ///
313271a5db096ae183e9235ebd273c4a6aab6130b3eGreg Clayton    /// @param[in] launch_flags
314271a5db096ae183e9235ebd273c4a6aab6130b3eGreg Clayton    ///     Some launch options specified by logical OR'ing
315271a5db096ae183e9235ebd273c4a6aab6130b3eGreg Clayton    ///     lldb::LaunchFlags enumeration values together.
316271a5db096ae183e9235ebd273c4a6aab6130b3eGreg Clayton    ///
317c22fb5ea4657d8c7c20a87de75cd57acaf32ec8aJohnny Chen    /// @param[in] stop_at_endtry
318c22fb5ea4657d8c7c20a87de75cd57acaf32ec8aJohnny Chen    ///     If false do not stop the inferior at the entry point.
319c22fb5ea4657d8c7c20a87de75cd57acaf32ec8aJohnny Chen    ///
320b5871fe4d11a06d5f468a607059a361cbdc25e1dJim Ingham    /// @param[out]
321b5871fe4d11a06d5f468a607059a361cbdc25e1dJim Ingham    ///     An error object. Contains the reason if there is some failure.
322b5871fe4d11a06d5f468a607059a361cbdc25e1dJim Ingham    ///
323271a5db096ae183e9235ebd273c4a6aab6130b3eGreg Clayton    /// @return
324b5871fe4d11a06d5f468a607059a361cbdc25e1dJim Ingham    ///      A process object for the newly created process.
325271a5db096ae183e9235ebd273c4a6aab6130b3eGreg Clayton    //------------------------------------------------------------------
326c5f728c81b4896cfbbc87ed1daedf42ba2c0ee63Greg Clayton    lldb::SBProcess
327271a5db096ae183e9235ebd273c4a6aab6130b3eGreg Clayton    Launch (SBListener &listener,
328271a5db096ae183e9235ebd273c4a6aab6130b3eGreg Clayton            char const **argv,
329d8c625380b56759fc3fef8b9cf0389ae1a07f44dGreg Clayton            char const **envp,
330de915beb5febe597505ba33fdc2c39eea2abdbd4Greg Clayton            const char *stdin_path,
331de915beb5febe597505ba33fdc2c39eea2abdbd4Greg Clayton            const char *stdout_path,
332de915beb5febe597505ba33fdc2c39eea2abdbd4Greg Clayton            const char *stderr_path,
333de915beb5febe597505ba33fdc2c39eea2abdbd4Greg Clayton            const char *working_directory,
334d8c625380b56759fc3fef8b9cf0389ae1a07f44dGreg Clayton            uint32_t launch_flags,   // See LaunchFlags
335d8c625380b56759fc3fef8b9cf0389ae1a07f44dGreg Clayton            bool stop_at_entry,
336d8c625380b56759fc3fef8b9cf0389ae1a07f44dGreg Clayton            lldb::SBError& error);
337b5871fe4d11a06d5f468a607059a361cbdc25e1dJim Ingham
338d8c625380b56759fc3fef8b9cf0389ae1a07f44dGreg Clayton
339271a5db096ae183e9235ebd273c4a6aab6130b3eGreg Clayton    //------------------------------------------------------------------
340b5871fe4d11a06d5f468a607059a361cbdc25e1dJim Ingham    /// Launch a new process with sensible defaults.
341271a5db096ae183e9235ebd273c4a6aab6130b3eGreg Clayton    ///
342271a5db096ae183e9235ebd273c4a6aab6130b3eGreg Clayton    /// @param[in] argv
343271a5db096ae183e9235ebd273c4a6aab6130b3eGreg Clayton    ///     The argument array.
344271a5db096ae183e9235ebd273c4a6aab6130b3eGreg Clayton    ///
345271a5db096ae183e9235ebd273c4a6aab6130b3eGreg Clayton    /// @param[in] envp
346271a5db096ae183e9235ebd273c4a6aab6130b3eGreg Clayton    ///     The environment array.
347271a5db096ae183e9235ebd273c4a6aab6130b3eGreg Clayton    ///
348271a5db096ae183e9235ebd273c4a6aab6130b3eGreg Clayton    /// @param[in] working_directory
349271a5db096ae183e9235ebd273c4a6aab6130b3eGreg Clayton    ///     The working directory to have the child process run in
350271a5db096ae183e9235ebd273c4a6aab6130b3eGreg Clayton    ///
351b5871fe4d11a06d5f468a607059a361cbdc25e1dJim Ingham    /// Default: listener
352b5871fe4d11a06d5f468a607059a361cbdc25e1dJim Ingham    ///     Set to the target's debugger (SBTarget::GetDebugger())
353b5871fe4d11a06d5f468a607059a361cbdc25e1dJim Ingham    ///
354b5871fe4d11a06d5f468a607059a361cbdc25e1dJim Ingham    /// Default: launch_flags
355b5871fe4d11a06d5f468a607059a361cbdc25e1dJim Ingham    ///     Empty launch flags
356b5871fe4d11a06d5f468a607059a361cbdc25e1dJim Ingham    ///
357b5871fe4d11a06d5f468a607059a361cbdc25e1dJim Ingham    /// Default: stdin_path
358b5871fe4d11a06d5f468a607059a361cbdc25e1dJim Ingham    /// Default: stdout_path
359b5871fe4d11a06d5f468a607059a361cbdc25e1dJim Ingham    /// Default: stderr_path
360b5871fe4d11a06d5f468a607059a361cbdc25e1dJim Ingham    ///     A pseudo terminal will be used.
361271a5db096ae183e9235ebd273c4a6aab6130b3eGreg Clayton    ///
362271a5db096ae183e9235ebd273c4a6aab6130b3eGreg Clayton    /// @return
363b5871fe4d11a06d5f468a607059a361cbdc25e1dJim Ingham    ///      A process object for the newly created process.
364271a5db096ae183e9235ebd273c4a6aab6130b3eGreg Clayton    //------------------------------------------------------------------
3650a8dcacde404c520f1131c641041dceb9f68b6faGreg Clayton    SBProcess
366b5871fe4d11a06d5f468a607059a361cbdc25e1dJim Ingham    LaunchSimple (const char **argv,
367b5871fe4d11a06d5f468a607059a361cbdc25e1dJim Ingham                  const char **envp,
368b5871fe4d11a06d5f468a607059a361cbdc25e1dJim Ingham                  const char *working_directory);
369b5871fe4d11a06d5f468a607059a361cbdc25e1dJim Ingham
3700a8dcacde404c520f1131c641041dceb9f68b6faGreg Clayton    SBProcess
3710a8dcacde404c520f1131c641041dceb9f68b6faGreg Clayton    Launch (SBLaunchInfo &launch_info, SBError& error);
37259b96d5fdda21be0c7abbe7567af75239748be61Greg Clayton
37359b96d5fdda21be0c7abbe7567af75239748be61Greg Clayton    SBProcess
37459b96d5fdda21be0c7abbe7567af75239748be61Greg Clayton    LoadCore (const char *core_file);
3750a8dcacde404c520f1131c641041dceb9f68b6faGreg Clayton
3760a8dcacde404c520f1131c641041dceb9f68b6faGreg Clayton    SBProcess
3770a8dcacde404c520f1131c641041dceb9f68b6faGreg Clayton    Attach (SBAttachInfo &attach_info, SBError& error);
3780a8dcacde404c520f1131c641041dceb9f68b6faGreg Clayton
37909e0a42211591a7ee4de26cdb80350568eab40ecJohnny Chen    //------------------------------------------------------------------
38009e0a42211591a7ee4de26cdb80350568eab40ecJohnny Chen    /// Attach to process with pid.
38109e0a42211591a7ee4de26cdb80350568eab40ecJohnny Chen    ///
38209e0a42211591a7ee4de26cdb80350568eab40ecJohnny Chen    /// @param[in] listener
38309e0a42211591a7ee4de26cdb80350568eab40ecJohnny Chen    ///     An optional listener that will receive all process events.
38409e0a42211591a7ee4de26cdb80350568eab40ecJohnny Chen    ///     If \a listener is valid then \a listener will listen to all
38509e0a42211591a7ee4de26cdb80350568eab40ecJohnny Chen    ///     process events. If not valid, then this target's debugger
38609e0a42211591a7ee4de26cdb80350568eab40ecJohnny Chen    ///     (SBTarget::GetDebugger()) will listen to all process events.
38709e0a42211591a7ee4de26cdb80350568eab40ecJohnny Chen    ///
38809e0a42211591a7ee4de26cdb80350568eab40ecJohnny Chen    /// @param[in] pid
38909e0a42211591a7ee4de26cdb80350568eab40ecJohnny Chen    ///     The process ID to attach to.
39009e0a42211591a7ee4de26cdb80350568eab40ecJohnny Chen    ///
39109e0a42211591a7ee4de26cdb80350568eab40ecJohnny Chen    /// @param[out]
39209e0a42211591a7ee4de26cdb80350568eab40ecJohnny Chen    ///     An error explaining what went wrong if attach fails.
39309e0a42211591a7ee4de26cdb80350568eab40ecJohnny Chen    ///
39409e0a42211591a7ee4de26cdb80350568eab40ecJohnny Chen    /// @return
39509e0a42211591a7ee4de26cdb80350568eab40ecJohnny Chen    ///      A process object for the attached process.
39609e0a42211591a7ee4de26cdb80350568eab40ecJohnny Chen    //------------------------------------------------------------------
397b5871fe4d11a06d5f468a607059a361cbdc25e1dJim Ingham    lldb::SBProcess
39809e0a42211591a7ee4de26cdb80350568eab40ecJohnny Chen    AttachToProcessWithID (SBListener &listener,
39909e0a42211591a7ee4de26cdb80350568eab40ecJohnny Chen                           lldb::pid_t pid,
40009e0a42211591a7ee4de26cdb80350568eab40ecJohnny Chen                           lldb::SBError& error);
401c5f728c81b4896cfbbc87ed1daedf42ba2c0ee63Greg Clayton
402d5b0b447221ab6e1fe5c5223c6bf7604d4377e8bGreg Clayton#if defined(__APPLE__)
403d5b0b447221ab6e1fe5c5223c6bf7604d4377e8bGreg Clayton    // We need to keep this around for a build or two since Xcode links
404d5b0b447221ab6e1fe5c5223c6bf7604d4377e8bGreg Clayton    // to the 32 bit version of this function. We will take it out soon.
405d5b0b447221ab6e1fe5c5223c6bf7604d4377e8bGreg Clayton    lldb::SBProcess
406d5b0b447221ab6e1fe5c5223c6bf7604d4377e8bGreg Clayton    AttachToProcessWithID (SBListener &listener,
407d5b0b447221ab6e1fe5c5223c6bf7604d4377e8bGreg Clayton                           ::pid_t pid,           // 32 bit int process ID
408d5b0b447221ab6e1fe5c5223c6bf7604d4377e8bGreg Clayton                           lldb::SBError& error); // DEPRECATED
409d5b0b447221ab6e1fe5c5223c6bf7604d4377e8bGreg Clayton#endif
41009e0a42211591a7ee4de26cdb80350568eab40ecJohnny Chen    //------------------------------------------------------------------
41109e0a42211591a7ee4de26cdb80350568eab40ecJohnny Chen    /// Attach to process with name.
41209e0a42211591a7ee4de26cdb80350568eab40ecJohnny Chen    ///
41309e0a42211591a7ee4de26cdb80350568eab40ecJohnny Chen    /// @param[in] listener
41409e0a42211591a7ee4de26cdb80350568eab40ecJohnny Chen    ///     An optional listener that will receive all process events.
41509e0a42211591a7ee4de26cdb80350568eab40ecJohnny Chen    ///     If \a listener is valid then \a listener will listen to all
41609e0a42211591a7ee4de26cdb80350568eab40ecJohnny Chen    ///     process events. If not valid, then this target's debugger
41709e0a42211591a7ee4de26cdb80350568eab40ecJohnny Chen    ///     (SBTarget::GetDebugger()) will listen to all process events.
41809e0a42211591a7ee4de26cdb80350568eab40ecJohnny Chen    ///
41909e0a42211591a7ee4de26cdb80350568eab40ecJohnny Chen    /// @param[in] name
42009e0a42211591a7ee4de26cdb80350568eab40ecJohnny Chen    ///     Basename of process to attach to.
42109e0a42211591a7ee4de26cdb80350568eab40ecJohnny Chen    ///
42209e0a42211591a7ee4de26cdb80350568eab40ecJohnny Chen    /// @param[in] wait_for
42309e0a42211591a7ee4de26cdb80350568eab40ecJohnny Chen    ///     If true wait for a new instance of 'name' to be launched.
42409e0a42211591a7ee4de26cdb80350568eab40ecJohnny Chen    ///
42509e0a42211591a7ee4de26cdb80350568eab40ecJohnny Chen    /// @param[out]
42609e0a42211591a7ee4de26cdb80350568eab40ecJohnny Chen    ///     An error explaining what went wrong if attach fails.
42709e0a42211591a7ee4de26cdb80350568eab40ecJohnny Chen    ///
42809e0a42211591a7ee4de26cdb80350568eab40ecJohnny Chen    /// @return
42909e0a42211591a7ee4de26cdb80350568eab40ecJohnny Chen    ///      A process object for the attached process.
43009e0a42211591a7ee4de26cdb80350568eab40ecJohnny Chen    //------------------------------------------------------------------
431c5f728c81b4896cfbbc87ed1daedf42ba2c0ee63Greg Clayton    lldb::SBProcess
43209e0a42211591a7ee4de26cdb80350568eab40ecJohnny Chen    AttachToProcessWithName (SBListener &listener,
43309e0a42211591a7ee4de26cdb80350568eab40ecJohnny Chen                             const char *name,
43409e0a42211591a7ee4de26cdb80350568eab40ecJohnny Chen                             bool wait_for,
43509e0a42211591a7ee4de26cdb80350568eab40ecJohnny Chen                             lldb::SBError& error);
436c5f728c81b4896cfbbc87ed1daedf42ba2c0ee63Greg Clayton
43709e0a42211591a7ee4de26cdb80350568eab40ecJohnny Chen    //------------------------------------------------------------------
4387b1b875d7f76905b9b1f1f347b073e87437e760cJohnny Chen    /// Connect to a remote debug server with url.
43909e0a42211591a7ee4de26cdb80350568eab40ecJohnny Chen    ///
44009e0a42211591a7ee4de26cdb80350568eab40ecJohnny Chen    /// @param[in] listener
44109e0a42211591a7ee4de26cdb80350568eab40ecJohnny Chen    ///     An optional listener that will receive all process events.
44209e0a42211591a7ee4de26cdb80350568eab40ecJohnny Chen    ///     If \a listener is valid then \a listener will listen to all
44309e0a42211591a7ee4de26cdb80350568eab40ecJohnny Chen    ///     process events. If not valid, then this target's debugger
44409e0a42211591a7ee4de26cdb80350568eab40ecJohnny Chen    ///     (SBTarget::GetDebugger()) will listen to all process events.
44509e0a42211591a7ee4de26cdb80350568eab40ecJohnny Chen    ///
44609e0a42211591a7ee4de26cdb80350568eab40ecJohnny Chen    /// @param[in] url
44709e0a42211591a7ee4de26cdb80350568eab40ecJohnny Chen    ///     The url to connect to, e.g., 'connect://localhost:12345'.
44809e0a42211591a7ee4de26cdb80350568eab40ecJohnny Chen    ///
44909e0a42211591a7ee4de26cdb80350568eab40ecJohnny Chen    /// @param[in] plugin_name
45009e0a42211591a7ee4de26cdb80350568eab40ecJohnny Chen    ///     The plugin name to be used; can be NULL.
45109e0a42211591a7ee4de26cdb80350568eab40ecJohnny Chen    ///
45209e0a42211591a7ee4de26cdb80350568eab40ecJohnny Chen    /// @param[out]
45309e0a42211591a7ee4de26cdb80350568eab40ecJohnny Chen    ///     An error explaining what went wrong if the connect fails.
45409e0a42211591a7ee4de26cdb80350568eab40ecJohnny Chen    ///
45509e0a42211591a7ee4de26cdb80350568eab40ecJohnny Chen    /// @return
45609e0a42211591a7ee4de26cdb80350568eab40ecJohnny Chen    ///      A process object for the connected process.
45709e0a42211591a7ee4de26cdb80350568eab40ecJohnny Chen    //------------------------------------------------------------------
4583809340ce8954dbeaf24907ece29cd6b179143eaJames McIlree    lldb::SBProcess
4593809340ce8954dbeaf24907ece29cd6b179143eaJames McIlree    ConnectRemote (SBListener &listener,
4603809340ce8954dbeaf24907ece29cd6b179143eaJames McIlree                   const char *url,
46109e0a42211591a7ee4de26cdb80350568eab40ecJohnny Chen                   const char *plugin_name,
4623809340ce8954dbeaf24907ece29cd6b179143eaJames McIlree                   SBError& error);
4633809340ce8954dbeaf24907ece29cd6b179143eaJames McIlree
46424943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner    lldb::SBFileSpec
46524943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner    GetExecutable ();
46624943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner
4673e8c25f62f92145b6fb699b379cbfe72b1245d4aGreg Clayton    bool
4683e8c25f62f92145b6fb699b379cbfe72b1245d4aGreg Clayton    AddModule (lldb::SBModule &module);
4693e8c25f62f92145b6fb699b379cbfe72b1245d4aGreg Clayton
4703e8c25f62f92145b6fb699b379cbfe72b1245d4aGreg Clayton    lldb::SBModule
4713e8c25f62f92145b6fb699b379cbfe72b1245d4aGreg Clayton    AddModule (const char *path,
4723e8c25f62f92145b6fb699b379cbfe72b1245d4aGreg Clayton               const char *triple,
4733e8c25f62f92145b6fb699b379cbfe72b1245d4aGreg Clayton               const char *uuid);
4743e8c25f62f92145b6fb699b379cbfe72b1245d4aGreg Clayton
475f0bc81575b0048a004add5e0212a6a15757dbdb0Greg Clayton    lldb::SBModule
476f0bc81575b0048a004add5e0212a6a15757dbdb0Greg Clayton    AddModule (const char *path,
477f0bc81575b0048a004add5e0212a6a15757dbdb0Greg Clayton               const char *triple,
478f0bc81575b0048a004add5e0212a6a15757dbdb0Greg Clayton               const char *uuid_cstr,
479f0bc81575b0048a004add5e0212a6a15757dbdb0Greg Clayton               const char *symfile);
480f9215bae3f7f76ad98bace0097821a12415690c5Greg Clayton
481f9215bae3f7f76ad98bace0097821a12415690c5Greg Clayton    lldb::SBModule
482f9215bae3f7f76ad98bace0097821a12415690c5Greg Clayton    AddModule (const SBModuleSpec &module_spec);
483f9215bae3f7f76ad98bace0097821a12415690c5Greg Clayton
48424943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner    uint32_t
48524943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner    GetNumModules () const;
48624943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner
48724943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner    lldb::SBModule
48824943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner    GetModuleAtIndex (uint32_t idx);
48924943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner
4903e8c25f62f92145b6fb699b379cbfe72b1245d4aGreg Clayton    bool
4913e8c25f62f92145b6fb699b379cbfe72b1245d4aGreg Clayton    RemoveModule (lldb::SBModule module);
4923e8c25f62f92145b6fb699b379cbfe72b1245d4aGreg Clayton
49363094e0bb161580564954dee512955c1c79d3476Greg Clayton    lldb::SBDebugger
49463094e0bb161580564954dee512955c1c79d3476Greg Clayton    GetDebugger() const;
49563094e0bb161580564954dee512955c1c79d3476Greg Clayton
49624943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner    lldb::SBModule
49724943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner    FindModule (const lldb::SBFileSpec &file_spec);
49824943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner
4991b925206e3c4867fea9eb55a4c6460962cf32564Greg Clayton    lldb::ByteOrder
5001b925206e3c4867fea9eb55a4c6460962cf32564Greg Clayton    GetByteOrder ();
5011b925206e3c4867fea9eb55a4c6460962cf32564Greg Clayton
5021b925206e3c4867fea9eb55a4c6460962cf32564Greg Clayton    uint32_t
5031b925206e3c4867fea9eb55a4c6460962cf32564Greg Clayton    GetAddressByteSize();
5041b925206e3c4867fea9eb55a4c6460962cf32564Greg Clayton
5051b925206e3c4867fea9eb55a4c6460962cf32564Greg Clayton    const char *
5061b925206e3c4867fea9eb55a4c6460962cf32564Greg Clayton    GetTriple ();
5071b925206e3c4867fea9eb55a4c6460962cf32564Greg Clayton
50867dde8e176c0ab62056911a3165b62fdcc6259edJohnny Chen    //------------------------------------------------------------------
5093e8c25f62f92145b6fb699b379cbfe72b1245d4aGreg Clayton    /// Set the base load address for a module section.
5103e8c25f62f92145b6fb699b379cbfe72b1245d4aGreg Clayton    ///
5113e8c25f62f92145b6fb699b379cbfe72b1245d4aGreg Clayton    /// @param[in] section
5123e8c25f62f92145b6fb699b379cbfe72b1245d4aGreg Clayton    ///     The section whose base load address will be set within this
5133e8c25f62f92145b6fb699b379cbfe72b1245d4aGreg Clayton    ///     target.
5143e8c25f62f92145b6fb699b379cbfe72b1245d4aGreg Clayton    ///
5153e8c25f62f92145b6fb699b379cbfe72b1245d4aGreg Clayton    /// @param[in] section_base_addr
5163e8c25f62f92145b6fb699b379cbfe72b1245d4aGreg Clayton    ///     The base address for the section.
5173e8c25f62f92145b6fb699b379cbfe72b1245d4aGreg Clayton    ///
5183e8c25f62f92145b6fb699b379cbfe72b1245d4aGreg Clayton    /// @return
5193e8c25f62f92145b6fb699b379cbfe72b1245d4aGreg Clayton    ///      An error to indicate success, fail, and any reason for
5203e8c25f62f92145b6fb699b379cbfe72b1245d4aGreg Clayton    ///     failure.
5213e8c25f62f92145b6fb699b379cbfe72b1245d4aGreg Clayton    //------------------------------------------------------------------
5223e8c25f62f92145b6fb699b379cbfe72b1245d4aGreg Clayton    lldb::SBError
5233e8c25f62f92145b6fb699b379cbfe72b1245d4aGreg Clayton    SetSectionLoadAddress (lldb::SBSection section,
5243e8c25f62f92145b6fb699b379cbfe72b1245d4aGreg Clayton                           lldb::addr_t section_base_addr);
5253e8c25f62f92145b6fb699b379cbfe72b1245d4aGreg Clayton
5263e8c25f62f92145b6fb699b379cbfe72b1245d4aGreg Clayton    //------------------------------------------------------------------
5273e8c25f62f92145b6fb699b379cbfe72b1245d4aGreg Clayton    /// Clear the base load address for a module section.
5283e8c25f62f92145b6fb699b379cbfe72b1245d4aGreg Clayton    ///
5293e8c25f62f92145b6fb699b379cbfe72b1245d4aGreg Clayton    /// @param[in] section
5303e8c25f62f92145b6fb699b379cbfe72b1245d4aGreg Clayton    ///     The section whose base load address will be cleared within
5313e8c25f62f92145b6fb699b379cbfe72b1245d4aGreg Clayton    ///     this target.
5323e8c25f62f92145b6fb699b379cbfe72b1245d4aGreg Clayton    ///
5333e8c25f62f92145b6fb699b379cbfe72b1245d4aGreg Clayton    /// @return
5343e8c25f62f92145b6fb699b379cbfe72b1245d4aGreg Clayton    ///      An error to indicate success, fail, and any reason for
5353e8c25f62f92145b6fb699b379cbfe72b1245d4aGreg Clayton    ///     failure.
5363e8c25f62f92145b6fb699b379cbfe72b1245d4aGreg Clayton    //------------------------------------------------------------------
5373e8c25f62f92145b6fb699b379cbfe72b1245d4aGreg Clayton    lldb::SBError
5383e8c25f62f92145b6fb699b379cbfe72b1245d4aGreg Clayton    ClearSectionLoadAddress (lldb::SBSection section);
5393e8c25f62f92145b6fb699b379cbfe72b1245d4aGreg Clayton
5403e8c25f62f92145b6fb699b379cbfe72b1245d4aGreg Clayton    //------------------------------------------------------------------
5413e8c25f62f92145b6fb699b379cbfe72b1245d4aGreg Clayton    /// Slide all file addresses for all module sections so that \a module
5423e8c25f62f92145b6fb699b379cbfe72b1245d4aGreg Clayton    /// appears to loaded at these slide addresses.
5433e8c25f62f92145b6fb699b379cbfe72b1245d4aGreg Clayton    ///
5443e8c25f62f92145b6fb699b379cbfe72b1245d4aGreg Clayton    /// When you need all sections within a module to be loaded at a
5453e8c25f62f92145b6fb699b379cbfe72b1245d4aGreg Clayton    /// rigid slide from the addresses found in the module object file,
5463e8c25f62f92145b6fb699b379cbfe72b1245d4aGreg Clayton    /// this function will allow you to easily and quickly slide all
5473e8c25f62f92145b6fb699b379cbfe72b1245d4aGreg Clayton    /// module sections.
5483e8c25f62f92145b6fb699b379cbfe72b1245d4aGreg Clayton    ///
5493e8c25f62f92145b6fb699b379cbfe72b1245d4aGreg Clayton    /// @param[in] module
5503e8c25f62f92145b6fb699b379cbfe72b1245d4aGreg Clayton    ///     The module to load.
5513e8c25f62f92145b6fb699b379cbfe72b1245d4aGreg Clayton    ///
5523e8c25f62f92145b6fb699b379cbfe72b1245d4aGreg Clayton    /// @param[in] sections_offset
5533e8c25f62f92145b6fb699b379cbfe72b1245d4aGreg Clayton    ///     An offset that will be applied to all section file addresses
5543e8c25f62f92145b6fb699b379cbfe72b1245d4aGreg Clayton    ///     (the virtual addresses found in the object file itself).
5553e8c25f62f92145b6fb699b379cbfe72b1245d4aGreg Clayton    ///
5563e8c25f62f92145b6fb699b379cbfe72b1245d4aGreg Clayton    /// @return
5573e8c25f62f92145b6fb699b379cbfe72b1245d4aGreg Clayton    ///     An error to indicate success, fail, and any reason for
5583e8c25f62f92145b6fb699b379cbfe72b1245d4aGreg Clayton    ///     failure.
5593e8c25f62f92145b6fb699b379cbfe72b1245d4aGreg Clayton    //------------------------------------------------------------------
5603e8c25f62f92145b6fb699b379cbfe72b1245d4aGreg Clayton    lldb::SBError
5613e8c25f62f92145b6fb699b379cbfe72b1245d4aGreg Clayton    SetModuleLoadAddress (lldb::SBModule module,
5623e8c25f62f92145b6fb699b379cbfe72b1245d4aGreg Clayton                          int64_t sections_offset);
5633e8c25f62f92145b6fb699b379cbfe72b1245d4aGreg Clayton
5643e8c25f62f92145b6fb699b379cbfe72b1245d4aGreg Clayton
5653e8c25f62f92145b6fb699b379cbfe72b1245d4aGreg Clayton    //------------------------------------------------------------------
5663e8c25f62f92145b6fb699b379cbfe72b1245d4aGreg Clayton    /// The the section base load addresses for all sections in a module.
5673e8c25f62f92145b6fb699b379cbfe72b1245d4aGreg Clayton    ///
5683e8c25f62f92145b6fb699b379cbfe72b1245d4aGreg Clayton    /// @param[in] module
5693e8c25f62f92145b6fb699b379cbfe72b1245d4aGreg Clayton    ///     The module to unload.
5703e8c25f62f92145b6fb699b379cbfe72b1245d4aGreg Clayton    ///
5713e8c25f62f92145b6fb699b379cbfe72b1245d4aGreg Clayton    /// @return
5723e8c25f62f92145b6fb699b379cbfe72b1245d4aGreg Clayton    ///     An error to indicate success, fail, and any reason for
5733e8c25f62f92145b6fb699b379cbfe72b1245d4aGreg Clayton    ///     failure.
5743e8c25f62f92145b6fb699b379cbfe72b1245d4aGreg Clayton    //------------------------------------------------------------------
5753e8c25f62f92145b6fb699b379cbfe72b1245d4aGreg Clayton    lldb::SBError
5763e8c25f62f92145b6fb699b379cbfe72b1245d4aGreg Clayton    ClearModuleLoadAddress (lldb::SBModule module);
5773e8c25f62f92145b6fb699b379cbfe72b1245d4aGreg Clayton
5783e8c25f62f92145b6fb699b379cbfe72b1245d4aGreg Clayton    //------------------------------------------------------------------
57967dde8e176c0ab62056911a3165b62fdcc6259edJohnny Chen    /// Find functions by name.
58067dde8e176c0ab62056911a3165b62fdcc6259edJohnny Chen    ///
58167dde8e176c0ab62056911a3165b62fdcc6259edJohnny Chen    /// @param[in] name
58267dde8e176c0ab62056911a3165b62fdcc6259edJohnny Chen    ///     The name of the function we are looking for.
58367dde8e176c0ab62056911a3165b62fdcc6259edJohnny Chen    ///
58467dde8e176c0ab62056911a3165b62fdcc6259edJohnny Chen    /// @param[in] name_type_mask
58567dde8e176c0ab62056911a3165b62fdcc6259edJohnny Chen    ///     A logical OR of one or more FunctionNameType enum bits that
58667dde8e176c0ab62056911a3165b62fdcc6259edJohnny Chen    ///     indicate what kind of names should be used when doing the
58767dde8e176c0ab62056911a3165b62fdcc6259edJohnny Chen    ///     lookup. Bits include fully qualified names, base names,
58867dde8e176c0ab62056911a3165b62fdcc6259edJohnny Chen    ///     C++ methods, or ObjC selectors.
58967dde8e176c0ab62056911a3165b62fdcc6259edJohnny Chen    ///     See FunctionNameType for more details.
59067dde8e176c0ab62056911a3165b62fdcc6259edJohnny Chen    ///
59167dde8e176c0ab62056911a3165b62fdcc6259edJohnny Chen    /// @return
5927dd5c51fbab8384b18f20ecc125f9a1bb3c9bcb2Greg Clayton    ///     A lldb::SBSymbolContextList that gets filled in with all of
5937dd5c51fbab8384b18f20ecc125f9a1bb3c9bcb2Greg Clayton    ///     the symbol contexts for all the matches.
59467dde8e176c0ab62056911a3165b62fdcc6259edJohnny Chen    //------------------------------------------------------------------
5957dd5c51fbab8384b18f20ecc125f9a1bb3c9bcb2Greg Clayton    lldb::SBSymbolContextList
5964ed315fdc503cfdc18e89b1eb43bf87e07fd1673Greg Clayton    FindFunctions (const char *name,
5977dd5c51fbab8384b18f20ecc125f9a1bb3c9bcb2Greg Clayton                   uint32_t name_type_mask = lldb::eFunctionNameTypeAny);
5984ed315fdc503cfdc18e89b1eb43bf87e07fd1673Greg Clayton
599bbc6342babdd58daa34bb35e35d7d53f59beada1Johnny Chen    //------------------------------------------------------------------
600bbc6342babdd58daa34bb35e35d7d53f59beada1Johnny Chen    /// Find global and static variables by name.
601bbc6342babdd58daa34bb35e35d7d53f59beada1Johnny Chen    ///
602bbc6342babdd58daa34bb35e35d7d53f59beada1Johnny Chen    /// @param[in] name
603bbc6342babdd58daa34bb35e35d7d53f59beada1Johnny Chen    ///     The name of the global or static variable we are looking
604bbc6342babdd58daa34bb35e35d7d53f59beada1Johnny Chen    ///     for.
605bbc6342babdd58daa34bb35e35d7d53f59beada1Johnny Chen    ///
606bbc6342babdd58daa34bb35e35d7d53f59beada1Johnny Chen    /// @param[in] max_matches
607bbc6342babdd58daa34bb35e35d7d53f59beada1Johnny Chen    ///     Allow the number of matches to be limited to \a max_matches.
608bbc6342babdd58daa34bb35e35d7d53f59beada1Johnny Chen    ///
609bbc6342babdd58daa34bb35e35d7d53f59beada1Johnny Chen    /// @return
610bbc6342babdd58daa34bb35e35d7d53f59beada1Johnny Chen    ///     A list of matched variables in an SBValueList.
611bbc6342babdd58daa34bb35e35d7d53f59beada1Johnny Chen    //------------------------------------------------------------------
612917c000e77fcf657099f59085d6436d179a39ea4Greg Clayton    lldb::SBValueList
613917c000e77fcf657099f59085d6436d179a39ea4Greg Clayton    FindGlobalVariables (const char *name,
614917c000e77fcf657099f59085d6436d179a39ea4Greg Clayton                         uint32_t max_matches);
615917c000e77fcf657099f59085d6436d179a39ea4Greg Clayton
616392bd8d8356a35a0ad7a9990e1e05d0509971c4bEnrico Granata    //------------------------------------------------------------------
617392bd8d8356a35a0ad7a9990e1e05d0509971c4bEnrico Granata    /// Find the first global (or static) variable by name.
618392bd8d8356a35a0ad7a9990e1e05d0509971c4bEnrico Granata    ///
619392bd8d8356a35a0ad7a9990e1e05d0509971c4bEnrico Granata    /// @param[in] name
620392bd8d8356a35a0ad7a9990e1e05d0509971c4bEnrico Granata    ///     The name of the global or static variable we are looking
621392bd8d8356a35a0ad7a9990e1e05d0509971c4bEnrico Granata    ///     for.
622392bd8d8356a35a0ad7a9990e1e05d0509971c4bEnrico Granata    ///
623392bd8d8356a35a0ad7a9990e1e05d0509971c4bEnrico Granata    /// @return
624392bd8d8356a35a0ad7a9990e1e05d0509971c4bEnrico Granata    ///     An SBValue that gets filled in with the found variable (if any).
625392bd8d8356a35a0ad7a9990e1e05d0509971c4bEnrico Granata    //------------------------------------------------------------------
626392bd8d8356a35a0ad7a9990e1e05d0509971c4bEnrico Granata    lldb::SBValue
627392bd8d8356a35a0ad7a9990e1e05d0509971c4bEnrico Granata    FindFirstGlobalVariable (const char* name);
628392bd8d8356a35a0ad7a9990e1e05d0509971c4bEnrico Granata
62943490d1332d13694fb6690365984bf0ecdd8dcc3Greg Clayton    void
63043490d1332d13694fb6690365984bf0ecdd8dcc3Greg Clayton    Clear ();
63143490d1332d13694fb6690365984bf0ecdd8dcc3Greg Clayton
632a395506fb374f1f589d0d860f5e6c9fa7b1e0b9aGreg Clayton    lldb::SBAddress
633a395506fb374f1f589d0d860f5e6c9fa7b1e0b9aGreg Clayton    ResolveLoadAddress (lldb::addr_t vm_addr);
63424943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner
635afb8186acfef6132174ca02d357fafd36b599ca3Greg Clayton    SBSymbolContext
636afb8186acfef6132174ca02d357fafd36b599ca3Greg Clayton    ResolveSymbolContextForAddress (const SBAddress& addr,
637afb8186acfef6132174ca02d357fafd36b599ca3Greg Clayton                                    uint32_t resolve_scope);
638afb8186acfef6132174ca02d357fafd36b599ca3Greg Clayton
63924943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner    lldb::SBBreakpoint
64024943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner    BreakpointCreateByLocation (const char *file, uint32_t line);
64124943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner
64224943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner    lldb::SBBreakpoint
64324943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner    BreakpointCreateByLocation (const lldb::SBFileSpec &file_spec, uint32_t line);
64424943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner
64524943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner    lldb::SBBreakpoint
64624943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner    BreakpointCreateByName (const char *symbol_name, const char *module_name = NULL);
64724943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner
6481fb8a2dd636ef408728989d8bbc6d1a7a73177ccJim Ingham    // This version uses name_type_mask = eFunctionNameTypeAuto
64924943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner    lldb::SBBreakpoint
650d6d47976b71187907c1cdeea86fabf7d5534314fJim Ingham    BreakpointCreateByName (const char *symbol_name,
651d6d47976b71187907c1cdeea86fabf7d5534314fJim Ingham                            const SBFileSpecList &module_list,
652d6d47976b71187907c1cdeea86fabf7d5534314fJim Ingham                            const SBFileSpecList &comp_unit_list);
653d6d47976b71187907c1cdeea86fabf7d5534314fJim Ingham
654d6d47976b71187907c1cdeea86fabf7d5534314fJim Ingham    lldb::SBBreakpoint
6551fb8a2dd636ef408728989d8bbc6d1a7a73177ccJim Ingham    BreakpointCreateByName (const char *symbol_name,
6561fb8a2dd636ef408728989d8bbc6d1a7a73177ccJim Ingham                            uint32_t name_type_mask,           // Logical OR one or more FunctionNameType enum bits
6571fb8a2dd636ef408728989d8bbc6d1a7a73177ccJim Ingham                            const SBFileSpecList &module_list,
6581fb8a2dd636ef408728989d8bbc6d1a7a73177ccJim Ingham                            const SBFileSpecList &comp_unit_list);
6591fb8a2dd636ef408728989d8bbc6d1a7a73177ccJim Ingham
6601fb8a2dd636ef408728989d8bbc6d1a7a73177ccJim Ingham    lldb::SBBreakpoint
6614722b10307668368bf0f12fa6b8691e4f4cb5488Jim Ingham    BreakpointCreateByNames (const char *symbol_name[],
6624722b10307668368bf0f12fa6b8691e4f4cb5488Jim Ingham                             uint32_t num_names,
6634722b10307668368bf0f12fa6b8691e4f4cb5488Jim Ingham                             uint32_t name_type_mask,           // Logical OR one or more FunctionNameType enum bits
6644722b10307668368bf0f12fa6b8691e4f4cb5488Jim Ingham                             const SBFileSpecList &module_list,
6654722b10307668368bf0f12fa6b8691e4f4cb5488Jim Ingham                             const SBFileSpecList &comp_unit_list);
6664722b10307668368bf0f12fa6b8691e4f4cb5488Jim Ingham
6674722b10307668368bf0f12fa6b8691e4f4cb5488Jim Ingham    lldb::SBBreakpoint
66824943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner    BreakpointCreateByRegex (const char *symbol_name_regex, const char *module_name = NULL);
66903c8ee5aeafcd6c43f10002a4f8096af01780f86Jim Ingham
67003c8ee5aeafcd6c43f10002a4f8096af01780f86Jim Ingham    lldb::SBBreakpoint
671d6d47976b71187907c1cdeea86fabf7d5534314fJim Ingham    BreakpointCreateByRegex (const char *symbol_name_regex,
672d6d47976b71187907c1cdeea86fabf7d5534314fJim Ingham                             const SBFileSpecList &module_list,
673d6d47976b71187907c1cdeea86fabf7d5534314fJim Ingham                             const SBFileSpecList &comp_unit_list);
674d6d47976b71187907c1cdeea86fabf7d5534314fJim Ingham
675d6d47976b71187907c1cdeea86fabf7d5534314fJim Ingham    lldb::SBBreakpoint
676d6d47976b71187907c1cdeea86fabf7d5534314fJim Ingham    BreakpointCreateBySourceRegex (const char *source_regex,
677d6d47976b71187907c1cdeea86fabf7d5534314fJim Ingham                                   const lldb::SBFileSpec &source_file,
678d6d47976b71187907c1cdeea86fabf7d5534314fJim Ingham                                   const char *module_name = NULL);
679d6d47976b71187907c1cdeea86fabf7d5534314fJim Ingham
680d6d47976b71187907c1cdeea86fabf7d5534314fJim Ingham    lldb::SBBreakpoint
681d6d47976b71187907c1cdeea86fabf7d5534314fJim Ingham    BreakpointCreateBySourceRegex (const char *source_regex,
682d6d47976b71187907c1cdeea86fabf7d5534314fJim Ingham                                   const SBFileSpecList &module_list,
683d6d47976b71187907c1cdeea86fabf7d5534314fJim Ingham                                   const lldb::SBFileSpecList &source_file);
6844722b10307668368bf0f12fa6b8691e4f4cb5488Jim Ingham
6854722b10307668368bf0f12fa6b8691e4f4cb5488Jim Ingham    lldb::SBBreakpoint
6864722b10307668368bf0f12fa6b8691e4f4cb5488Jim Ingham    BreakpointCreateForException  (lldb::LanguageType language,
6874722b10307668368bf0f12fa6b8691e4f4cb5488Jim Ingham                                   bool catch_bp,
6884722b10307668368bf0f12fa6b8691e4f4cb5488Jim Ingham                                   bool throw_bp);
68924943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner
69024943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner    lldb::SBBreakpoint
69124943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner    BreakpointCreateByAddress (addr_t address);
69224943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner
693c7f5d5c3a3b48869f5ad2a3cdc4b20ca40929ba3Greg Clayton    uint32_t
694c7f5d5c3a3b48869f5ad2a3cdc4b20ca40929ba3Greg Clayton    GetNumBreakpoints () const;
695c7f5d5c3a3b48869f5ad2a3cdc4b20ca40929ba3Greg Clayton
696c7f5d5c3a3b48869f5ad2a3cdc4b20ca40929ba3Greg Clayton    lldb::SBBreakpoint
697c7f5d5c3a3b48869f5ad2a3cdc4b20ca40929ba3Greg Clayton    GetBreakpointAtIndex (uint32_t idx) const;
698c7f5d5c3a3b48869f5ad2a3cdc4b20ca40929ba3Greg Clayton
69924943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner    bool
70024943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner    BreakpointDelete (break_id_t break_id);
70124943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner
70224943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner    lldb::SBBreakpoint
70324943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner    FindBreakpointByID (break_id_t break_id);
70424943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner
70524943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner    bool
70624943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner    EnableAllBreakpoints ();
70724943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner
70824943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner    bool
70924943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner    DisableAllBreakpoints ();
71024943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner
71124943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner    bool
71224943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner    DeleteAllBreakpoints ();
71324943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner
714096c293f8d4171448908801d5a1a74b152af1430Johnny Chen    uint32_t
7151fa6b3d6c83955fe06c63d3a4025f2c0ec431d68Greg Clayton    GetNumWatchpoints () const;
716096c293f8d4171448908801d5a1a74b152af1430Johnny Chen
7171fa6b3d6c83955fe06c63d3a4025f2c0ec431d68Greg Clayton    lldb::SBWatchpoint
7181fa6b3d6c83955fe06c63d3a4025f2c0ec431d68Greg Clayton    GetWatchpointAtIndex (uint32_t idx) const;
719096c293f8d4171448908801d5a1a74b152af1430Johnny Chen
720096c293f8d4171448908801d5a1a74b152af1430Johnny Chen    bool
7211fa6b3d6c83955fe06c63d3a4025f2c0ec431d68Greg Clayton    DeleteWatchpoint (lldb::watch_id_t watch_id);
7221fa6b3d6c83955fe06c63d3a4025f2c0ec431d68Greg Clayton
7231fa6b3d6c83955fe06c63d3a4025f2c0ec431d68Greg Clayton    lldb::SBWatchpoint
7241fa6b3d6c83955fe06c63d3a4025f2c0ec431d68Greg Clayton    FindWatchpointByID (lldb::watch_id_t watch_id);
725096c293f8d4171448908801d5a1a74b152af1430Johnny Chen
7261fa6b3d6c83955fe06c63d3a4025f2c0ec431d68Greg Clayton    lldb::SBWatchpoint
7273f883496e92fce5011f6bf585af3ac6d1cddb64fJohnny Chen    WatchAddress (lldb::addr_t addr, size_t size, bool read, bool write, SBError& error);
728096c293f8d4171448908801d5a1a74b152af1430Johnny Chen
729096c293f8d4171448908801d5a1a74b152af1430Johnny Chen    bool
7301fa6b3d6c83955fe06c63d3a4025f2c0ec431d68Greg Clayton    EnableAllWatchpoints ();
731096c293f8d4171448908801d5a1a74b152af1430Johnny Chen
732096c293f8d4171448908801d5a1a74b152af1430Johnny Chen    bool
7331fa6b3d6c83955fe06c63d3a4025f2c0ec431d68Greg Clayton    DisableAllWatchpoints ();
734096c293f8d4171448908801d5a1a74b152af1430Johnny Chen
735096c293f8d4171448908801d5a1a74b152af1430Johnny Chen    bool
7361fa6b3d6c83955fe06c63d3a4025f2c0ec431d68Greg Clayton    DeleteAllWatchpoints ();
737096c293f8d4171448908801d5a1a74b152af1430Johnny Chen
73824943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner    lldb::SBBroadcaster
73924943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner    GetBroadcaster () const;
740979e20d127335143ffc89c2e37ec3a8b717ff22dEnrico Granata
741979e20d127335143ffc89c2e37ec3a8b717ff22dEnrico Granata    lldb::SBType
742979e20d127335143ffc89c2e37ec3a8b717ff22dEnrico Granata    FindFirstType (const char* type);
743979e20d127335143ffc89c2e37ec3a8b717ff22dEnrico Granata
744979e20d127335143ffc89c2e37ec3a8b717ff22dEnrico Granata    lldb::SBTypeList
745979e20d127335143ffc89c2e37ec3a8b717ff22dEnrico Granata    FindTypes (const char* type);
746cc637461f6c59851302836c64e0cb002de4f4571Jim Ingham
7470b93a7546473b15fb14dbc129f1fe5ed6ee14976Greg Clayton    lldb::SBType
7480b93a7546473b15fb14dbc129f1fe5ed6ee14976Greg Clayton    GetBasicType(lldb::BasicType type);
7490b93a7546473b15fb14dbc129f1fe5ed6ee14976Greg Clayton
750cc637461f6c59851302836c64e0cb002de4f4571Jim Ingham    SBSourceManager
751cc637461f6c59851302836c64e0cb002de4f4571Jim Ingham    GetSourceManager();
752ef1f690aa23e81a14654d4a6fe9df7810f4eda06Sean Callanan
753ef1f690aa23e81a14654d4a6fe9df7810f4eda06Sean Callanan    lldb::SBInstructionList
754a989307c1ec2ef9cd52ec65fb2c877bb2df3aa3aGreg Clayton    ReadInstructions (lldb::SBAddress base_addr, uint32_t count);
755a989307c1ec2ef9cd52ec65fb2c877bb2df3aa3aGreg Clayton
756a989307c1ec2ef9cd52ec65fb2c877bb2df3aa3aGreg Clayton    lldb::SBInstructionList
7577d4083837c5a258375fdc185d464b4ed15759a4bJim Ingham    ReadInstructions (lldb::SBAddress base_addr, uint32_t count, const char *flavor_string);
7587d4083837c5a258375fdc185d464b4ed15759a4bJim Ingham
7597d4083837c5a258375fdc185d464b4ed15759a4bJim Ingham    lldb::SBInstructionList
760ef1f690aa23e81a14654d4a6fe9df7810f4eda06Sean Callanan    GetInstructions (lldb::SBAddress base_addr, const void *buf, size_t size);
761ef1f690aa23e81a14654d4a6fe9df7810f4eda06Sean Callanan
7627d4083837c5a258375fdc185d464b4ed15759a4bJim Ingham    // The "WithFlavor" is necessary to keep SWIG from getting confused about overloaded arguments when
7637d4083837c5a258375fdc185d464b4ed15759a4bJim Ingham    // using the buf + size -> Python Object magic.
7647d4083837c5a258375fdc185d464b4ed15759a4bJim Ingham
7657d4083837c5a258375fdc185d464b4ed15759a4bJim Ingham    lldb::SBInstructionList
7667d4083837c5a258375fdc185d464b4ed15759a4bJim Ingham    GetInstructionsWithFlavor (lldb::SBAddress base_addr,  const char *flavor_string, const void *buf, size_t size);
7677d4083837c5a258375fdc185d464b4ed15759a4bJim Ingham
768ef1f690aa23e81a14654d4a6fe9df7810f4eda06Sean Callanan    lldb::SBInstructionList
769ef1f690aa23e81a14654d4a6fe9df7810f4eda06Sean Callanan    GetInstructions (lldb::addr_t base_addr, const void *buf, size_t size);
77024943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner
7717d4083837c5a258375fdc185d464b4ed15759a4bJim Ingham    lldb::SBInstructionList
7727d4083837c5a258375fdc185d464b4ed15759a4bJim Ingham    GetInstructionsWithFlavor (lldb::addr_t base_addr, const char *flavor_string, const void *buf, size_t size);
7737d4083837c5a258375fdc185d464b4ed15759a4bJim Ingham
774b3dafc6a81a014339015701c9872624f2aeddd43Greg Clayton    lldb::SBSymbolContextList
775b3dafc6a81a014339015701c9872624f2aeddd43Greg Clayton    FindSymbols (const char *name,
776b3dafc6a81a014339015701c9872624f2aeddd43Greg Clayton                 lldb::SymbolType type = eSymbolTypeAny);
777b3dafc6a81a014339015701c9872624f2aeddd43Greg Clayton
77824943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner    bool
77924943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner    operator == (const lldb::SBTarget &rhs) const;
78024943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner
78124943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner    bool
78224943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner    operator != (const lldb::SBTarget &rhs) const;
78324943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner
78498f930f429160f9777f626c3ac6aa609f4e965d2Caroline Tice    bool
785e43cdedc77133ff4d0a0c6a39f515d0f7584891cJohnny Chen    GetDescription (lldb::SBStream &description, lldb::DescriptionLevel description_level);
78698f930f429160f9777f626c3ac6aa609f4e965d2Caroline Tice
78719b646725e7d6bebda787fa3cb55ff223a00d907Greg Clayton    lldb::SBValue
78819b646725e7d6bebda787fa3cb55ff223a00d907Greg Clayton    EvaluateExpression (const char *expr, const SBExpressionOptions &options);
78919b646725e7d6bebda787fa3cb55ff223a00d907Greg Clayton
790ad72e52945ee0560fc2b22dce0087d4c7274a218Greg Clayton    lldb::addr_t
791ad72e52945ee0560fc2b22dce0087d4c7274a218Greg Clayton    GetStackRedZoneSize();
792ad72e52945ee0560fc2b22dce0087d4c7274a218Greg Clayton
79324943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattnerprotected:
794eea264007bc5fb42c8f3239726a9d28ae42e1b7bGreg Clayton    friend class SBAddress;
7957dd5c51fbab8384b18f20ecc125f9a1bb3c9bcb2Greg Clayton    friend class SBBlock;
79624943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner    friend class SBDebugger;
7975c4c746a3a83c1aad411c6cdc5f9525a4fc2d17eGreg Clayton    friend class SBFunction;
79823b8abbe214c252028f6e09f79169529c846409dGreg Clayton    friend class SBInstruction;
79915afa9f26a38ea55876ac4ee0b17f0ac8137e9c1Greg Clayton    friend class SBModule;
80024943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner    friend class SBProcess;
8015c5a38e7c640e9448241ec2aca0c60047ec3273cGreg Clayton    friend class SBSection;
80215afa9f26a38ea55876ac4ee0b17f0ac8137e9c1Greg Clayton    friend class SBSourceManager;
8035c4c746a3a83c1aad411c6cdc5f9525a4fc2d17eGreg Clayton    friend class SBSymbol;
804979e20d127335143ffc89c2e37ec3a8b717ff22dEnrico Granata    friend class SBValue;
80524943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner
80624943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner    //------------------------------------------------------------------
80724943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner    // Constructors are private, use static Target::Create function to
80824943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner    // create an instance of this class.
80924943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner    //------------------------------------------------------------------
81024943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner
811334d33a19fd28cf41cba74cc61cf149e7101a603Greg Clayton    lldb::TargetSP
812334d33a19fd28cf41cba74cc61cf149e7101a603Greg Clayton    GetSP () const;
81324943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner
814334d33a19fd28cf41cba74cc61cf149e7101a603Greg Clayton    void
815334d33a19fd28cf41cba74cc61cf149e7101a603Greg Clayton    SetSP (const lldb::TargetSP& target_sp);
81624943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner
81715afa9f26a38ea55876ac4ee0b17f0ac8137e9c1Greg Clayton
81824943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattnerprivate:
81924943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner    //------------------------------------------------------------------
82024943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner    // For Target only
82124943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner    //------------------------------------------------------------------
82224943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner
82363094e0bb161580564954dee512955c1c79d3476Greg Clayton    lldb::TargetSP m_opaque_sp;
82424943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner};
82524943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner
82624943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner} // namespace lldb
82724943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner
82824943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner#endif  // LLDB_SBTarget_h_
829