linux: initial support for 'real' signal handling
This patch upgrades the Linux process plugin to handle a larger range of signal
events. For example, we can detect when the inferior has "crashed" and why,
interrupt a running process, deliver an arbitrary signal, and so on.
git-svn-id: https://llvm.org/svn/llvm-project/llvdb/trunk@128547 91177308-0d34-0410-b5e6-96231b3b80d8
diff --git a/source/Plugins/Process/Linux/ProcessLinux.h b/source/Plugins/Process/Linux/ProcessLinux.h
index 7335611..762f817 100644
--- a/source/Plugins/Process/Linux/ProcessLinux.h
+++ b/source/Plugins/Process/Linux/ProcessLinux.h
@@ -17,6 +17,7 @@
// Other libraries and framework includes
#include "lldb/Target/Process.h"
+#include "LinuxSignals.h"
#include "ProcessMessage.h"
class ProcessMonitor;
@@ -178,6 +179,9 @@
ProcessMonitor &GetMonitor() { return *m_monitor; }
+ lldb_private::UnixSignals &
+ GetUnixSignals();
+
private:
/// Target byte order.
lldb::ByteOrder m_byte_order;
@@ -192,6 +196,19 @@
lldb_private::Mutex m_message_mutex;
std::queue<ProcessMessage> m_message_queue;
+ /// True when the process has entered a state of "limbo".
+ ///
+ /// This flag qualifies eStateStopped. It lets us know that when we
+ /// continue from this state the process will exit. Also, when true,
+ /// Process::m_exit_status is set.
+ bool m_in_limbo;
+
+ /// Drive any exit events to completion.
+ bool m_exit_now;
+
+ /// Linux-specific signal set.
+ LinuxSignals m_linux_signals;
+
/// Updates the loaded sections provided by the executable.
///
/// FIXME: It would probably be better to delegate this task to the
@@ -200,6 +217,9 @@
/// Returns true if the process has exited.
bool HasExited();
+
+ /// Returns true if the process is stopped.
+ bool IsStopped();
};
#endif // liblldb_MacOSXProcess_H_