Add output of fault address on an address related crash (ie. segfault).
llvm-svn: 183701
diff --git a/lldb/source/Plugins/Process/POSIX/ProcessMessage.cpp b/lldb/source/Plugins/Process/POSIX/ProcessMessage.cpp
index a33470b..60a29e0 100644
--- a/lldb/source/Plugins/Process/POSIX/ProcessMessage.cpp
+++ b/lldb/source/Plugins/Process/POSIX/ProcessMessage.cpp
@@ -9,12 +9,25 @@
#include "ProcessMessage.h"
+#include <sstream>
+
using namespace lldb_private;
-const char *
-ProcessMessage::GetCrashReasonString(CrashReason reason)
+namespace {
+
+inline void AppendFaultAddr(std::string& str, lldb::addr_t addr)
{
- const char *str = NULL;
+ std::stringstream ss;
+ ss << " (fault address: 0x" << std::hex << addr << ")";
+ str += ss.str();
+}
+
+}
+
+const char *
+ProcessMessage::GetCrashReasonString(CrashReason reason, lldb::addr_t fault_addr)
+{
+ static std::string str;
switch (reason)
{
@@ -24,9 +37,11 @@
case eInvalidAddress:
str = "invalid address";
+ AppendFaultAddr(str, fault_addr);
break;
case ePrivilegedAddress:
str = "address access protected";
+ AppendFaultAddr(str, fault_addr);
break;
case eIllegalOpcode:
str = "illegal instruction";
@@ -87,7 +102,7 @@
break;
}
- return str;
+ return str.c_str();
}
const char *