summaryrefslogtreecommitdiffstats
path: root/lldb/source/Plugins/Process/Linux/ProcessMessage.cpp
diff options
context:
space:
mode:
authorStephen Wilson <wilsons@start.ca>2011-03-30 15:55:52 +0000
committerStephen Wilson <wilsons@start.ca>2011-03-30 15:55:52 +0000
commit84ffe7033c41fd3501eab22632cab93d7df7b1a9 (patch)
tree24cc9529cf897be63fa3db393e0441e53d6914b9 /lldb/source/Plugins/Process/Linux/ProcessMessage.cpp
parent8564e0de96d18eba9d8501611591c7c3ef9d8be3 (diff)
downloadbcm5719-llvm-84ffe7033c41fd3501eab22632cab93d7df7b1a9.tar.gz
bcm5719-llvm-84ffe7033c41fd3501eab22632cab93d7df7b1a9.zip
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. llvm-svn: 128547
Diffstat (limited to 'lldb/source/Plugins/Process/Linux/ProcessMessage.cpp')
-rw-r--r--lldb/source/Plugins/Process/Linux/ProcessMessage.cpp91
1 files changed, 91 insertions, 0 deletions
diff --git a/lldb/source/Plugins/Process/Linux/ProcessMessage.cpp b/lldb/source/Plugins/Process/Linux/ProcessMessage.cpp
new file mode 100644
index 00000000000..db7827d551d
--- /dev/null
+++ b/lldb/source/Plugins/Process/Linux/ProcessMessage.cpp
@@ -0,0 +1,91 @@
+//===-- ProcessMessage.cpp --------------------------------------*- C++ -*-===//
+//
+// The LLVM Compiler Infrastructure
+//
+// This file is distributed under the University of Illinois Open Source
+// License. See LICENSE.TXT for details.
+//
+//===----------------------------------------------------------------------===//
+
+#include "ProcessMessage.h"
+
+using namespace lldb_private;
+
+const char *
+ProcessMessage::GetCrashReasonString(CrashReason reason)
+{
+ const char *str = NULL;
+
+ switch (reason)
+ {
+ default:
+ assert(false && "invalid CrashReason");
+ break;
+
+ case eInvalidAddress:
+ str = "invalid address";
+ break;
+ case ePrivilegedAddress:
+ str = "address access protected";
+ break;
+ case eIllegalOpcode:
+ str = "illegal instruction";
+ break;
+ case eIllegalOperand:
+ str = "illegal instruction operand";
+ break;
+ case eIllegalAddressingMode:
+ str = "illegal addressing mode";
+ break;
+ case eIllegalTrap:
+ str = "illegal trap";
+ break;
+ case ePrivilegedOpcode:
+ str = "privileged instruction";
+ break;
+ case ePrivilegedRegister:
+ str = "privileged register";
+ break;
+ case eCoprocessorError:
+ str = "coprocessor error";
+ break;
+ case eInternalStackError:
+ str = "internal stack error";
+ break;
+ case eIllegalAlignment:
+ str = "illegal alignment";
+ break;
+ case eIllegalAddress:
+ str = "illegal address";
+ break;
+ case eHardwareError:
+ str = "hardware error";
+ break;
+ case eIntegerDivideByZero:
+ str = "integer divide by zero";
+ break;
+ case eIntegerOverflow:
+ str = "integer overflow";
+ break;
+ case eFloatDivideByZero:
+ str = "floating point divide by zero";
+ break;
+ case eFloatOverflow:
+ str = "floating point overflow";
+ break;
+ case eFloatUnderflow:
+ str = "floating point underflow";
+ break;
+ case eFloatInexactResult:
+ str = "inexact floating point result";
+ break;
+ case eFloatInvalidOperation:
+ str = "invalid floating point operation";
+ break;
+ case eFloatSubscriptRange:
+ str = "invalid floating point subscript range";
+ break;
+ }
+
+ return str;
+}
OpenPOWER on IntegriCloud