1//===-- POSIXStopInfo.h -----------------------------------------*- C++ -*-===//
2//
3//                     The LLVM Compiler Infrastructure
4//
5// This file is distributed under the University of Illinois Open Source
6// License. See LICENSE.TXT for details.
7//
8//===----------------------------------------------------------------------===//
9
10#ifndef liblldb_POSIXStopInfo_H_
11#define liblldb_POSIXStopInfo_H_
12
13// C Includes
14// C++ Includes
15// Other libraries and framework includes
16// Project includes
17#include "lldb/Target/StopInfo.h"
18
19#include "POSIXThread.h"
20#include "ProcessMessage.h"
21
22//===----------------------------------------------------------------------===//
23/// @class POSIXStopInfo
24/// @brief Simple base class for all POSIX-specific StopInfo objects.
25///
26class POSIXStopInfo
27    : public lldb_private::StopInfo
28{
29public:
30    POSIXStopInfo(lldb_private::Thread &thread, uint32_t status)
31        : StopInfo(thread, status)
32        { }
33};
34
35//===----------------------------------------------------------------------===//
36/// @class POSIXLimboStopInfo
37/// @brief Represents the stop state of a process ready to exit.
38///
39class POSIXLimboStopInfo
40    : public POSIXStopInfo
41{
42public:
43    POSIXLimboStopInfo(POSIXThread &thread)
44        : POSIXStopInfo(thread, 0)
45        { }
46
47    ~POSIXLimboStopInfo();
48
49    lldb::StopReason
50    GetStopReason() const;
51
52    const char *
53    GetDescription();
54
55    bool
56    ShouldStop(lldb_private::Event *event_ptr);
57
58    bool
59    ShouldNotify(lldb_private::Event *event_ptr);
60};
61
62
63//===----------------------------------------------------------------------===//
64/// @class POSIXCrashStopInfo
65/// @brief Represents the stop state of process that is ready to crash.
66///
67class POSIXCrashStopInfo
68    : public POSIXStopInfo
69{
70public:
71    POSIXCrashStopInfo(POSIXThread &thread, uint32_t status,
72                       ProcessMessage::CrashReason reason,
73                       lldb::addr_t fault_addr)
74        : POSIXStopInfo(thread, status),
75          m_crash_reason(reason),
76          m_fault_addr(fault_addr)
77        { }
78
79    ~POSIXCrashStopInfo();
80
81    lldb::StopReason
82    GetStopReason() const;
83
84    const char *
85    GetDescription();
86
87private:
88    ProcessMessage::CrashReason m_crash_reason;
89    lldb::addr_t m_fault_addr;
90};
91
92//===----------------------------------------------------------------------===//
93/// @class POSIXNewThreadStopInfo
94/// @brief Represents the stop state of process when a new thread is spawned.
95///
96
97class POSIXNewThreadStopInfo
98    : public POSIXStopInfo
99{
100public:
101    POSIXNewThreadStopInfo (POSIXThread &thread)
102        : POSIXStopInfo (thread, 0)
103        { }
104
105    ~POSIXNewThreadStopInfo();
106
107    lldb::StopReason
108    GetStopReason() const;
109
110    const char *
111    GetDescription();
112
113    bool
114    ShouldStop(lldb_private::Event *event_ptr);
115
116    bool
117    ShouldNotify(lldb_private::Event *event_ptr);
118};
119
120#endif
121