diff options
Diffstat (limited to 'source/Plugins/Process/POSIX/ProcessMessage.h')
-rw-r--r-- | source/Plugins/Process/POSIX/ProcessMessage.h | 299 |
1 files changed, 143 insertions, 156 deletions
diff --git a/source/Plugins/Process/POSIX/ProcessMessage.h b/source/Plugins/Process/POSIX/ProcessMessage.h index f932e9fff278..3c596ca68549 100644 --- a/source/Plugins/Process/POSIX/ProcessMessage.h +++ b/source/Plugins/Process/POSIX/ProcessMessage.h @@ -18,165 +18,152 @@ #include "lldb/lldb-defines.h" #include "lldb/lldb-types.h" -class ProcessMessage -{ +class ProcessMessage { public: - - /// The type of signal this message can correspond to. - enum Kind - { - eInvalidMessage, - eAttachMessage, - eExitMessage, - eLimboMessage, - eSignalMessage, - eSignalDeliveredMessage, - eTraceMessage, - eBreakpointMessage, - eWatchpointMessage, - eCrashMessage, - eNewThreadMessage, - eExecMessage - }; - - ProcessMessage() - : m_tid(LLDB_INVALID_PROCESS_ID), - m_kind(eInvalidMessage), - m_crash_reason(CrashReason::eInvalidCrashReason), - m_status(0), - m_addr(0) { } - - Kind GetKind() const { return m_kind; } - - lldb::tid_t GetTID() const { return m_tid; } - - /// Indicates that the process @p pid has successfully attached. - static ProcessMessage Attach(lldb::pid_t pid) { - return ProcessMessage(pid, eAttachMessage); - } - - /// Indicates that the thread @p tid is about to exit with status @p status. - static ProcessMessage Limbo(lldb::tid_t tid, int status) { - return ProcessMessage(tid, eLimboMessage, status); - } - - /// Indicates that the thread @p tid had the signal @p signum delivered. - static ProcessMessage Signal(lldb::tid_t tid, int signum) { - return ProcessMessage(tid, eSignalMessage, signum); - } - - /// Indicates that a signal @p signum generated by the debugging process was - /// delivered to the thread @p tid. - static ProcessMessage SignalDelivered(lldb::tid_t tid, int signum) { - return ProcessMessage(tid, eSignalDeliveredMessage, signum); - } - - /// Indicates that the thread @p tid encountered a trace point. - static ProcessMessage Trace(lldb::tid_t tid) { - return ProcessMessage(tid, eTraceMessage); - } - - /// Indicates that the thread @p tid encountered a break point. - static ProcessMessage Break(lldb::tid_t tid) { - return ProcessMessage(tid, eBreakpointMessage); - } - - static ProcessMessage Watch(lldb::tid_t tid, lldb::addr_t wp_addr) { - return ProcessMessage(tid, eWatchpointMessage, 0, wp_addr); - } - - /// Indicates that the thread @p tid crashed. - static ProcessMessage Crash(lldb::pid_t pid, CrashReason reason, - int signo, lldb::addr_t fault_addr) { - ProcessMessage message(pid, eCrashMessage, signo, fault_addr); - message.m_crash_reason = reason; - return message; - } - - /// Indicates that the thread @p child_tid was spawned. - static ProcessMessage NewThread(lldb::tid_t parent_tid, lldb::tid_t child_tid) { - return ProcessMessage(parent_tid, eNewThreadMessage, child_tid); - } - - /// Indicates that the thread @p tid is about to exit with status @p status. - static ProcessMessage Exit(lldb::tid_t tid, int status) { - return ProcessMessage(tid, eExitMessage, status); - } - - /// Indicates that the thread @p pid has exec'd. - static ProcessMessage Exec(lldb::tid_t tid) { - return ProcessMessage(tid, eExecMessage); - } - - int GetExitStatus() const { - assert(GetKind() == eExitMessage || GetKind() == eLimboMessage); - return m_status; - } - - int GetSignal() const { - assert(GetKind() == eSignalMessage || GetKind() == eCrashMessage || - GetKind() == eSignalDeliveredMessage); - return m_status; - } - - int GetStopStatus() const { - assert(GetKind() == eSignalMessage); - return m_status; - } - - CrashReason GetCrashReason() const { - assert(GetKind() == eCrashMessage); - return m_crash_reason; - } - - lldb::addr_t GetFaultAddress() const { - assert(GetKind() == eCrashMessage); - return m_addr; - } - - lldb::addr_t GetHWAddress() const { - assert(GetKind() == eWatchpointMessage || GetKind() == eTraceMessage); - return m_addr; - } - - lldb::tid_t GetChildTID() const { - assert(GetKind() == eNewThreadMessage); - return m_child_tid; - } - - const char * - PrintCrashReason() const; - - const char * - PrintKind() const; - - static const char * - PrintKind(Kind); + /// The type of signal this message can correspond to. + enum Kind { + eInvalidMessage, + eAttachMessage, + eExitMessage, + eLimboMessage, + eSignalMessage, + eSignalDeliveredMessage, + eTraceMessage, + eBreakpointMessage, + eWatchpointMessage, + eCrashMessage, + eNewThreadMessage, + eExecMessage + }; + + ProcessMessage() + : m_tid(LLDB_INVALID_PROCESS_ID), m_kind(eInvalidMessage), + m_crash_reason(CrashReason::eInvalidCrashReason), m_status(0), + m_addr(0) {} + + Kind GetKind() const { return m_kind; } + + lldb::tid_t GetTID() const { return m_tid; } + + /// Indicates that the process @p pid has successfully attached. + static ProcessMessage Attach(lldb::pid_t pid) { + return ProcessMessage(pid, eAttachMessage); + } + + /// Indicates that the thread @p tid is about to exit with status @p status. + static ProcessMessage Limbo(lldb::tid_t tid, int status) { + return ProcessMessage(tid, eLimboMessage, status); + } + + /// Indicates that the thread @p tid had the signal @p signum delivered. + static ProcessMessage Signal(lldb::tid_t tid, int signum) { + return ProcessMessage(tid, eSignalMessage, signum); + } + + /// Indicates that a signal @p signum generated by the debugging process was + /// delivered to the thread @p tid. + static ProcessMessage SignalDelivered(lldb::tid_t tid, int signum) { + return ProcessMessage(tid, eSignalDeliveredMessage, signum); + } + + /// Indicates that the thread @p tid encountered a trace point. + static ProcessMessage Trace(lldb::tid_t tid) { + return ProcessMessage(tid, eTraceMessage); + } + + /// Indicates that the thread @p tid encountered a break point. + static ProcessMessage Break(lldb::tid_t tid) { + return ProcessMessage(tid, eBreakpointMessage); + } + + static ProcessMessage Watch(lldb::tid_t tid, lldb::addr_t wp_addr) { + return ProcessMessage(tid, eWatchpointMessage, 0, wp_addr); + } + + /// Indicates that the thread @p tid crashed. + static ProcessMessage Crash(lldb::pid_t pid, CrashReason reason, int signo, + lldb::addr_t fault_addr) { + ProcessMessage message(pid, eCrashMessage, signo, fault_addr); + message.m_crash_reason = reason; + return message; + } + + /// Indicates that the thread @p child_tid was spawned. + static ProcessMessage NewThread(lldb::tid_t parent_tid, + lldb::tid_t child_tid) { + return ProcessMessage(parent_tid, eNewThreadMessage, child_tid); + } + + /// Indicates that the thread @p tid is about to exit with status @p status. + static ProcessMessage Exit(lldb::tid_t tid, int status) { + return ProcessMessage(tid, eExitMessage, status); + } + + /// Indicates that the thread @p pid has exec'd. + static ProcessMessage Exec(lldb::tid_t tid) { + return ProcessMessage(tid, eExecMessage); + } + + int GetExitStatus() const { + assert(GetKind() == eExitMessage || GetKind() == eLimboMessage); + return m_status; + } + + int GetSignal() const { + assert(GetKind() == eSignalMessage || GetKind() == eCrashMessage || + GetKind() == eSignalDeliveredMessage); + return m_status; + } + + int GetStopStatus() const { + assert(GetKind() == eSignalMessage); + return m_status; + } + + CrashReason GetCrashReason() const { + assert(GetKind() == eCrashMessage); + return m_crash_reason; + } + + lldb::addr_t GetFaultAddress() const { + assert(GetKind() == eCrashMessage); + return m_addr; + } + + lldb::addr_t GetHWAddress() const { + assert(GetKind() == eWatchpointMessage || GetKind() == eTraceMessage); + return m_addr; + } + + lldb::tid_t GetChildTID() const { + assert(GetKind() == eNewThreadMessage); + return m_child_tid; + } + + const char *PrintCrashReason() const; + + const char *PrintKind() const; + + static const char *PrintKind(Kind); private: - ProcessMessage(lldb::tid_t tid, Kind kind, - int status = 0, lldb::addr_t addr = 0) - : m_tid(tid), - m_kind(kind), - m_crash_reason(CrashReason::eInvalidCrashReason), - m_status(status), - m_addr(addr), - m_child_tid(0) { } - - ProcessMessage(lldb::tid_t tid, Kind kind, lldb::tid_t child_tid) - : m_tid(tid), - m_kind(kind), - m_crash_reason(CrashReason::eInvalidCrashReason), - m_status(0), - m_addr(0), - m_child_tid(child_tid) { } - - lldb::tid_t m_tid; - Kind m_kind : 8; - CrashReason m_crash_reason; - int m_status; - lldb::addr_t m_addr; - lldb::tid_t m_child_tid; + ProcessMessage(lldb::tid_t tid, Kind kind, int status = 0, + lldb::addr_t addr = 0) + : m_tid(tid), m_kind(kind), + m_crash_reason(CrashReason::eInvalidCrashReason), m_status(status), + m_addr(addr), m_child_tid(0) {} + + ProcessMessage(lldb::tid_t tid, Kind kind, lldb::tid_t child_tid) + : m_tid(tid), m_kind(kind), + m_crash_reason(CrashReason::eInvalidCrashReason), m_status(0), + m_addr(0), m_child_tid(child_tid) {} + + lldb::tid_t m_tid; + Kind m_kind : 8; + CrashReason m_crash_reason; + int m_status; + lldb::addr_t m_addr; + lldb::tid_t m_child_tid; }; #endif // #ifndef liblldb_ProcessMessage_H_ |