124943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner//===-- SBProcess.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_SBProcess_h_
1124943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner#define LLDB_SBProcess_h_
1224943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner
135f81547fd786584b10999c087528b323b5945896Eli Friedman#include "lldb/API/SBDefines.h"
145f81547fd786584b10999c087528b323b5945896Eli Friedman#include "lldb/API/SBError.h"
155f81547fd786584b10999c087528b323b5945896Eli Friedman#include "lldb/API/SBTarget.h"
167884ab842f7f0be6c583eac2904f5763706816bcEli Friedman#include <stdio.h>
1724943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner
1824943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattnernamespace lldb {
1924943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner
2024943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattnerclass SBEvent;
2124943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner
2224943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattnerclass SBProcess
2324943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner{
2424943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattnerpublic:
2524943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner    //------------------------------------------------------------------
2624943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner    /// Broadcaster event bits definitions.
2724943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner    //------------------------------------------------------------------
2824943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner    enum
2924943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner    {
3024943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner        eBroadcastBitStateChanged   = (1 << 0),
3124943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner        eBroadcastBitInterrupt      = (1 << 1),
3224943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner        eBroadcastBitSTDOUT         = (1 << 2),
33fb9cee64303d36d6fe5d87e63dd8701d1ddb70a9Han Ming Ong        eBroadcastBitSTDERR         = (1 << 3),
34fb9cee64303d36d6fe5d87e63dd8701d1ddb70a9Han Ming Ong        eBroadcastBitProfileData    = (1 << 4)
3524943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner    };
3624943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner
3724943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner    SBProcess ();
3824943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner
3924943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner    SBProcess (const lldb::SBProcess& rhs);
4024943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner
41538eb82a89a68dbc57251915080bd5152b333978Greg Clayton    const lldb::SBProcess&
42538eb82a89a68dbc57251915080bd5152b333978Greg Clayton    operator = (const lldb::SBProcess& rhs);
43538eb82a89a68dbc57251915080bd5152b333978Greg Clayton
44155ee91cc315888c26de1bfebd876bf35b857329Enrico Granata    SBProcess (const lldb::ProcessSP &process_sp);
45155ee91cc315888c26de1bfebd876bf35b857329Enrico Granata
4624943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner    ~SBProcess();
4724943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner
485a15e6927b5b3234fb3e688717297ba6b5dd6ad7Jim Ingham    static const char *
495a15e6927b5b3234fb3e688717297ba6b5dd6ad7Jim Ingham    GetBroadcasterClassName ();
505a15e6927b5b3234fb3e688717297ba6b5dd6ad7Jim Ingham
51fee26ee9a5db37e71f5d5aed279c634bbdab7c8cJim Ingham    const char *
52fee26ee9a5db37e71f5d5aed279c634bbdab7c8cJim Ingham    GetPluginName ();
53fee26ee9a5db37e71f5d5aed279c634bbdab7c8cJim Ingham
540e191607adcb0ea8ebd06c278be648a7f5c0097fGreg Clayton    // DEPRECATED: use GetPluginName()
55fee26ee9a5db37e71f5d5aed279c634bbdab7c8cJim Ingham    const char *
56fee26ee9a5db37e71f5d5aed279c634bbdab7c8cJim Ingham    GetShortPluginName ();
57fee26ee9a5db37e71f5d5aed279c634bbdab7c8cJim Ingham
5824943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner    void
5924943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner    Clear ();
6024943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner
6124943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner    bool
6224943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner    IsValid() const;
6324943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner
6424943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner    lldb::SBTarget
6524943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner    GetTarget() const;
6624943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner
6760a544f23362d4f2fbe1e68b9c5340aa5e11302cJohnny Chen    lldb::ByteOrder
6860a544f23362d4f2fbe1e68b9c5340aa5e11302cJohnny Chen    GetByteOrder() const;
6960a544f23362d4f2fbe1e68b9c5340aa5e11302cJohnny Chen
7024943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner    size_t
7124943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner    PutSTDIN (const char *src, size_t src_len);
7224943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner
7324943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner    size_t
7424943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner    GetSTDOUT (char *dst, size_t dst_len) const;
7524943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner
7624943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner    size_t
7724943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner    GetSTDERR (char *dst, size_t dst_len) const;
7824943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner
79fb9cee64303d36d6fe5d87e63dd8701d1ddb70a9Han Ming Ong    size_t
80fb9cee64303d36d6fe5d87e63dd8701d1ddb70a9Han Ming Ong    GetAsyncProfileData(char *dst, size_t dst_len) const;
81fb9cee64303d36d6fe5d87e63dd8701d1ddb70a9Han Ming Ong
8224943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner    void
83c833295baeec641086f536e78050388af36784f8Jim Ingham    ReportEventState (const lldb::SBEvent &event, FILE *out) const;
8424943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner
8524943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner    void
86c833295baeec641086f536e78050388af36784f8Jim Ingham    AppendEventStateReport (const lldb::SBEvent &event, lldb::SBCommandReturnObject &result);
8724943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner
8824943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner    //------------------------------------------------------------------
89faf7f05749ea6e4011295cfd6947ea194e81d797Johnny Chen    /// Remote connection related functions. These will fail if the
90faf7f05749ea6e4011295cfd6947ea194e81d797Johnny Chen    /// process is not in eStateConnected. They are intended for use
91faf7f05749ea6e4011295cfd6947ea194e81d797Johnny Chen    /// when connecting to an externally managed debugserver instance.
923809340ce8954dbeaf24907ece29cd6b179143eaJames McIlree    //------------------------------------------------------------------
933809340ce8954dbeaf24907ece29cd6b179143eaJames McIlree    bool
943809340ce8954dbeaf24907ece29cd6b179143eaJames McIlree    RemoteAttachToProcessWithID (lldb::pid_t pid,
953809340ce8954dbeaf24907ece29cd6b179143eaJames McIlree                                 lldb::SBError& error);
963809340ce8954dbeaf24907ece29cd6b179143eaJames McIlree
973809340ce8954dbeaf24907ece29cd6b179143eaJames McIlree    bool
983809340ce8954dbeaf24907ece29cd6b179143eaJames McIlree    RemoteLaunch (char const **argv,
993809340ce8954dbeaf24907ece29cd6b179143eaJames McIlree                  char const **envp,
1003809340ce8954dbeaf24907ece29cd6b179143eaJames McIlree                  const char *stdin_path,
1013809340ce8954dbeaf24907ece29cd6b179143eaJames McIlree                  const char *stdout_path,
1023809340ce8954dbeaf24907ece29cd6b179143eaJames McIlree                  const char *stderr_path,
1033809340ce8954dbeaf24907ece29cd6b179143eaJames McIlree                  const char *working_directory,
1043809340ce8954dbeaf24907ece29cd6b179143eaJames McIlree                  uint32_t launch_flags,
1053809340ce8954dbeaf24907ece29cd6b179143eaJames McIlree                  bool stop_at_entry,
1063809340ce8954dbeaf24907ece29cd6b179143eaJames McIlree                  lldb::SBError& error);
1073809340ce8954dbeaf24907ece29cd6b179143eaJames McIlree
1083809340ce8954dbeaf24907ece29cd6b179143eaJames McIlree    //------------------------------------------------------------------
10924943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner    // Thread related functions
11024943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner    //------------------------------------------------------------------
11124943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner    uint32_t
11224943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner    GetNumThreads ();
11324943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner
11424943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner    lldb::SBThread
11524943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner    GetThreadAtIndex (size_t index);
11624943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner
11724943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner    lldb::SBThread
11824943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner    GetThreadByID (lldb::tid_t sb_thread_id);
11924943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner
12024943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner    lldb::SBThread
121efbdd2280873cc87634bf4f4a37ab8b99662522aJim Ingham    GetThreadByIndexID (uint32_t index_id);
122efbdd2280873cc87634bf4f4a37ab8b99662522aJim Ingham
123efbdd2280873cc87634bf4f4a37ab8b99662522aJim Ingham    lldb::SBThread
124c833295baeec641086f536e78050388af36784f8Jim Ingham    GetSelectedThread () const;
12524943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner
12652ebc0aab1fdecb634801deceeddd71a14c2148cGreg Clayton    //------------------------------------------------------------------
12752ebc0aab1fdecb634801deceeddd71a14c2148cGreg Clayton    // Function for lazily creating a thread using the current OS
12852ebc0aab1fdecb634801deceeddd71a14c2148cGreg Clayton    // plug-in. This function will be removed in the future when there
12952ebc0aab1fdecb634801deceeddd71a14c2148cGreg Clayton    // are APIs to create SBThread objects through the interface and add
13052ebc0aab1fdecb634801deceeddd71a14c2148cGreg Clayton    // them to the process through the SBProcess API.
13152ebc0aab1fdecb634801deceeddd71a14c2148cGreg Clayton    //------------------------------------------------------------------
13252ebc0aab1fdecb634801deceeddd71a14c2148cGreg Clayton    lldb::SBThread
13352ebc0aab1fdecb634801deceeddd71a14c2148cGreg Clayton    CreateOSPluginThread (lldb::tid_t tid, lldb::addr_t context);
13452ebc0aab1fdecb634801deceeddd71a14c2148cGreg Clayton
13524943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner    bool
136c833295baeec641086f536e78050388af36784f8Jim Ingham    SetSelectedThread (const lldb::SBThread &thread);
13724943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner
13824943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner    bool
13982560f25ae1b4a55c927df9ccf1bd1becc01b1c1Greg Clayton    SetSelectedThreadByID (lldb::tid_t tid);
140efbdd2280873cc87634bf4f4a37ab8b99662522aJim Ingham
141efbdd2280873cc87634bf4f4a37ab8b99662522aJim Ingham    bool
142efbdd2280873cc87634bf4f4a37ab8b99662522aJim Ingham    SetSelectedThreadByIndexID (uint32_t index_id);
14324943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner
14424943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner    //------------------------------------------------------------------
14524943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner    // Stepping related functions
14624943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner    //------------------------------------------------------------------
14724943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner
14824943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner    lldb::StateType
14924943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner    GetState ();
15024943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner
15124943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner    int
15224943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner    GetExitStatus ();
15324943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner
15424943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner    const char *
15524943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner    GetExitDescription ();
15624943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner
15764742744396c966e8de770e765130629b0c78335Greg Clayton    //------------------------------------------------------------------
15864742744396c966e8de770e765130629b0c78335Greg Clayton    /// Gets the process ID
15964742744396c966e8de770e765130629b0c78335Greg Clayton    ///
16064742744396c966e8de770e765130629b0c78335Greg Clayton    /// Returns the process identifier for the process as it is known
16164742744396c966e8de770e765130629b0c78335Greg Clayton    /// on the system on which the process is running. For unix systems
16264742744396c966e8de770e765130629b0c78335Greg Clayton    /// this is typically the same as if you called "getpid()" in the
16364742744396c966e8de770e765130629b0c78335Greg Clayton    /// process.
16464742744396c966e8de770e765130629b0c78335Greg Clayton    ///
16564742744396c966e8de770e765130629b0c78335Greg Clayton    /// @return
16664742744396c966e8de770e765130629b0c78335Greg Clayton    ///     Returns LLDB_INVALID_PROCESS_ID if this object does not
16764742744396c966e8de770e765130629b0c78335Greg Clayton    ///     contain a valid process object, or if the process has not
16864742744396c966e8de770e765130629b0c78335Greg Clayton    ///     been launched. Returns a valid process ID if the process is
16964742744396c966e8de770e765130629b0c78335Greg Clayton    ///     valid.
17064742744396c966e8de770e765130629b0c78335Greg Clayton    //------------------------------------------------------------------
17124943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner    lldb::pid_t
17224943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner    GetProcessID ();
17324943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner
17464742744396c966e8de770e765130629b0c78335Greg Clayton    //------------------------------------------------------------------
17564742744396c966e8de770e765130629b0c78335Greg Clayton    /// Gets the unique ID associated with this process object
17664742744396c966e8de770e765130629b0c78335Greg Clayton    ///
17764742744396c966e8de770e765130629b0c78335Greg Clayton    /// Unique IDs start at 1 and increment up with each new process
17864742744396c966e8de770e765130629b0c78335Greg Clayton    /// instance. Since starting a process on a system might always
17964742744396c966e8de770e765130629b0c78335Greg Clayton    /// create a process with the same process ID, there needs to be a
18064742744396c966e8de770e765130629b0c78335Greg Clayton    /// way to tell two process instances apart.
18164742744396c966e8de770e765130629b0c78335Greg Clayton    ///
18264742744396c966e8de770e765130629b0c78335Greg Clayton    /// @return
18364742744396c966e8de770e765130629b0c78335Greg Clayton    ///     Returns a non-zero integer ID if this object contains a
18464742744396c966e8de770e765130629b0c78335Greg Clayton    ///     valid process object, zero if this object does not contain
18564742744396c966e8de770e765130629b0c78335Greg Clayton    ///     a valid process object.
18664742744396c966e8de770e765130629b0c78335Greg Clayton    //------------------------------------------------------------------
18764742744396c966e8de770e765130629b0c78335Greg Clayton    uint32_t
18864742744396c966e8de770e765130629b0c78335Greg Clayton    GetUniqueID();
18964742744396c966e8de770e765130629b0c78335Greg Clayton
19024943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner    uint32_t
19124943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner    GetAddressByteSize() const;
19224943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner
1930baa394cd55c6dfb7a6259d215d0dea2b708067bGreg Clayton    lldb::SBError
19424943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner    Destroy ();
19524943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner
1960baa394cd55c6dfb7a6259d215d0dea2b708067bGreg Clayton    lldb::SBError
19724943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner    Continue ();
19824943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner
1990baa394cd55c6dfb7a6259d215d0dea2b708067bGreg Clayton    lldb::SBError
20024943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner    Stop ();
20124943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner
2020baa394cd55c6dfb7a6259d215d0dea2b708067bGreg Clayton    lldb::SBError
20324943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner    Kill ();
20424943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner
2050baa394cd55c6dfb7a6259d215d0dea2b708067bGreg Clayton    lldb::SBError
20624943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner    Detach ();
20724943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner
2080baa394cd55c6dfb7a6259d215d0dea2b708067bGreg Clayton    lldb::SBError
209761afb822b18c46b2ad84be03f372e90ac1e6143Jim Ingham    Detach (bool keep_stopped);
210761afb822b18c46b2ad84be03f372e90ac1e6143Jim Ingham
211761afb822b18c46b2ad84be03f372e90ac1e6143Jim Ingham    lldb::SBError
21224943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner    Signal (int signal);
21324943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner
2145d90ade8e8e0d776fe8e1b9e88fc1c86d02e8e4eJim Ingham    void
2155d90ade8e8e0d776fe8e1b9e88fc1c86d02e8e4eJim Ingham    SendAsyncInterrupt();
2165d90ade8e8e0d776fe8e1b9e88fc1c86d02e8e4eJim Ingham
2170e3b98e7de6d69613a9729bac9d4b965c0635698Jim Ingham    uint32_t
2180e3b98e7de6d69613a9729bac9d4b965c0635698Jim Ingham    GetStopID(bool include_expression_stops = false);
2190e3b98e7de6d69613a9729bac9d4b965c0635698Jim Ingham
22024943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner    size_t
2210baa394cd55c6dfb7a6259d215d0dea2b708067bGreg Clayton    ReadMemory (addr_t addr, void *buf, size_t size, lldb::SBError &error);
22224943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner
22324943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner    size_t
2240baa394cd55c6dfb7a6259d215d0dea2b708067bGreg Clayton    WriteMemory (addr_t addr, const void *buf, size_t size, lldb::SBError &error);
22524943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner
2264a2e33769873d68d5703da5742c0e248f46e3a72Greg Clayton    size_t
2274a2e33769873d68d5703da5742c0e248f46e3a72Greg Clayton    ReadCStringFromMemory (addr_t addr, void *buf, size_t size, lldb::SBError &error);
2284a2e33769873d68d5703da5742c0e248f46e3a72Greg Clayton
2294a2e33769873d68d5703da5742c0e248f46e3a72Greg Clayton    uint64_t
2304a2e33769873d68d5703da5742c0e248f46e3a72Greg Clayton    ReadUnsignedFromMemory (addr_t addr, uint32_t byte_size, lldb::SBError &error);
2314a2e33769873d68d5703da5742c0e248f46e3a72Greg Clayton
2324a2e33769873d68d5703da5742c0e248f46e3a72Greg Clayton    lldb::addr_t
2334a2e33769873d68d5703da5742c0e248f46e3a72Greg Clayton    ReadPointerFromMemory (addr_t addr, lldb::SBError &error);
2344a2e33769873d68d5703da5742c0e248f46e3a72Greg Clayton
23524943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner    // Events
23624943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner    static lldb::StateType
23724943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner    GetStateFromEvent (const lldb::SBEvent &event);
23824943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner
23924943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner    static bool
24024943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner    GetRestartedFromEvent (const lldb::SBEvent &event);
24189e248f04ecb87d0df4a4b96158c3fac0a3e43c7Jim Ingham
24289e248f04ecb87d0df4a4b96158c3fac0a3e43c7Jim Ingham    static size_t
24389e248f04ecb87d0df4a4b96158c3fac0a3e43c7Jim Ingham    GetNumRestartedReasonsFromEvent (const lldb::SBEvent &event);
24489e248f04ecb87d0df4a4b96158c3fac0a3e43c7Jim Ingham
24589e248f04ecb87d0df4a4b96158c3fac0a3e43c7Jim Ingham    static const char *
24689e248f04ecb87d0df4a4b96158c3fac0a3e43c7Jim Ingham    GetRestartedReasonAtIndexFromEvent (const lldb::SBEvent &event, size_t idx);
24724943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner
24824943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner    static lldb::SBProcess
24924943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner    GetProcessFromEvent (const lldb::SBEvent &event);
25028e23861bedbeb5e46be7d2af4c33bf5132422c6Jim Ingham
25128e23861bedbeb5e46be7d2af4c33bf5132422c6Jim Ingham    static bool
25228e23861bedbeb5e46be7d2af4c33bf5132422c6Jim Ingham    EventIsProcessEvent (const lldb::SBEvent &event);
25324943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner
25424943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner    lldb::SBBroadcaster
25524943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner    GetBroadcaster () const;
25624943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner
2575a15e6927b5b3234fb3e688717297ba6b5dd6ad7Jim Ingham    static const char *
2585a15e6927b5b3234fb3e688717297ba6b5dd6ad7Jim Ingham    GetBroadcasterClass ();
2595a15e6927b5b3234fb3e688717297ba6b5dd6ad7Jim Ingham
26098f930f429160f9777f626c3ac6aa609f4e965d2Caroline Tice    bool
26198f930f429160f9777f626c3ac6aa609f4e965d2Caroline Tice    GetDescription (lldb::SBStream &description);
26298f930f429160f9777f626c3ac6aa609f4e965d2Caroline Tice
2630baa394cd55c6dfb7a6259d215d0dea2b708067bGreg Clayton    uint32_t
264191343e7213d3d717327319352d086f981fa8e58Johnny Chen    GetNumSupportedHardwareWatchpoints (lldb::SBError &error) const;
265191343e7213d3d717327319352d086f981fa8e58Johnny Chen
266191343e7213d3d717327319352d086f981fa8e58Johnny Chen    uint32_t
2670baa394cd55c6dfb7a6259d215d0dea2b708067bGreg Clayton    LoadImage (lldb::SBFileSpec &image_spec, lldb::SBError &error);
2680baa394cd55c6dfb7a6259d215d0dea2b708067bGreg Clayton
2690baa394cd55c6dfb7a6259d215d0dea2b708067bGreg Clayton    lldb::SBError
2700baa394cd55c6dfb7a6259d215d0dea2b708067bGreg Clayton    UnloadImage (uint32_t image_token);
2719f074f0e030a74a3efd716a476b436f2d32bdf74Johnny Chen
27224943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattnerprotected:
27324943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner    friend class SBAddress;
27424943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner    friend class SBBreakpoint;
27524943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner    friend class SBBreakpointLocation;
27624943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner    friend class SBCommandInterpreter;
27724943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner    friend class SBDebugger;
2785c4c746a3a83c1aad411c6cdc5f9525a4fc2d17eGreg Clayton    friend class SBFunction;
279b5a8f1498e1ddaeed5187a878d57ea0b74af9c26Greg Clayton    friend class SBModule;
28024943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner    friend class SBTarget;
28124943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner    friend class SBThread;
28224943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner    friend class SBValue;
28324943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner
284334d33a19fd28cf41cba74cc61cf149e7101a603Greg Clayton    lldb::ProcessSP
285334d33a19fd28cf41cba74cc61cf149e7101a603Greg Clayton    GetSP() const;
286334d33a19fd28cf41cba74cc61cf149e7101a603Greg Clayton
28724943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner    void
288334d33a19fd28cf41cba74cc61cf149e7101a603Greg Clayton    SetSP (const lldb::ProcessSP &process_sp);
28924943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner
290bcaf99a74367d464dd38011e26b9b4be56b503baGreg Clayton    lldb::ProcessWP m_opaque_wp;
29124943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner};
29224943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner
29324943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner}  // namespace lldb
29424943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner
29524943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner#endif  // LLDB_SBProcess_h_
296