summaryrefslogtreecommitdiffstats
path: root/lib/Support/PrettyStackTrace.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'lib/Support/PrettyStackTrace.cpp')
-rw-r--r--lib/Support/PrettyStackTrace.cpp11
1 files changed, 8 insertions, 3 deletions
diff --git a/lib/Support/PrettyStackTrace.cpp b/lib/Support/PrettyStackTrace.cpp
index 14290a1..68b41a7 100644
--- a/lib/Support/PrettyStackTrace.cpp
+++ b/lib/Support/PrettyStackTrace.cpp
@@ -19,6 +19,10 @@
#include "llvm/ADT/SmallString.h"
using namespace llvm;
+namespace llvm {
+ bool DisablePrettyStackTrace = false;
+}
+
// FIXME: This should be thread local when llvm supports threads.
static sys::ThreadLocal<const PrettyStackTraceEntry> PrettyStackTraceHead;
@@ -67,15 +71,16 @@ static void CrashHandler(void *Cookie) {
}
if (!TmpStr.empty()) {
- __crashreporter_info__ = strdup(TmpStr.c_str());
- errs() << __crashreporter_info__;
+ __crashreporter_info__ = strdup(std::string(TmpStr.str()).c_str());
+ errs() << TmpStr.str();
}
#endif
}
static bool RegisterCrashPrinter() {
- sys::AddSignalHandler(CrashHandler, 0);
+ if (!DisablePrettyStackTrace)
+ sys::AddSignalHandler(CrashHandler, 0);
return false;
}
OpenPOWER on IntegriCloud