summaryrefslogtreecommitdiff
path: root/lib/Support/PrettyStackTrace.cpp
diff options
context:
space:
mode:
authorRoman Divacky <rdivacky@FreeBSD.org>2009-10-14 17:57:32 +0000
committerRoman Divacky <rdivacky@FreeBSD.org>2009-10-14 17:57:32 +0000
commit59850d0874429601812bc13408cb1f776649027c (patch)
treeb21f6de4e08b89bb7931806bab798fc2a5e3a686 /lib/Support/PrettyStackTrace.cpp
parent18f153bdb9db52e7089a2d5293b96c45a3124a26 (diff)
Notes
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 14290a1284fee..68b41a7f09427 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;
}