]> CyberLeo.Net >> Repos - FreeBSD/releng/10.2.git/blob - contrib/llvm/tools/lldb/source/Plugins/Process/POSIX/POSIXStopInfo.h
- Copy stable/10@285827 to releng/10.2 in preparation for 10.2-RC1
[FreeBSD/releng/10.2.git] / contrib / llvm / tools / lldb / source / Plugins / Process / POSIX / POSIXStopInfo.h
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 ///
26 class POSIXStopInfo
27     : public lldb_private::StopInfo
28 {
29 public:
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 ///
39 class POSIXLimboStopInfo
40     : public POSIXStopInfo
41 {
42 public:
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 ///
67 class POSIXCrashStopInfo
68     : public POSIXStopInfo
69 {
70 public:
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
87 private:
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
97 class POSIXNewThreadStopInfo
98     : public POSIXStopInfo
99 {
100 public:
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