summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorChris Lattner <sabre@nondot.org>2009-07-16 06:17:45 +0000
committerChris Lattner <sabre@nondot.org>2009-07-16 06:17:45 +0000
commit90bb3f3706cdf4e26df5e2c977d9232ba7b89c4e (patch)
treeefef596bd2dfbe27b116a3455b40d216fa6bb788
parent8e25e2d801bb1119cea080c7c860adcfbf85d65d (diff)
downloadllvm-90bb3f3706cdf4e26df5e2c977d9232ba7b89c4e.tar.gz
llvm-90bb3f3706cdf4e26df5e2c977d9232ba7b89c4e.tar.bz2
llvm-90bb3f3706cdf4e26df5e2c977d9232ba7b89c4e.tar.xz
add a knob to turn off PrettyStackTrace globally. Patch by Zoltan
Varga! git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@75897 91177308-0d34-0410-b5e6-96231b3b80d8
-rw-r--r--include/llvm/Support/PrettyStackTrace.h6
-rw-r--r--lib/Support/PrettyStackTrace.cpp7
2 files changed, 12 insertions, 1 deletions
diff --git a/include/llvm/Support/PrettyStackTrace.h b/include/llvm/Support/PrettyStackTrace.h
index 909d286f28..0db84e1a14 100644
--- a/include/llvm/Support/PrettyStackTrace.h
+++ b/include/llvm/Support/PrettyStackTrace.h
@@ -18,6 +18,12 @@
namespace llvm {
class raw_ostream;
+
+ /// DisablePrettyStackTrace - Set this to true to disable this module. This
+ /// might be neccessary if the host application installs its own signal
+ /// handlers which conflict with the ones installed by this module.
+ /// Defaults to false.
+ extern bool DisablePrettyStackTrace;
/// PrettyStackTraceEntry - This class is used to represent a frame of the
/// "pretty" stack trace that is dumped when a program crashes. You can define
diff --git a/lib/Support/PrettyStackTrace.cpp b/lib/Support/PrettyStackTrace.cpp
index 14290a1284..536d9b023f 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;
@@ -75,7 +79,8 @@ static void CrashHandler(void *Cookie) {
}
static bool RegisterCrashPrinter() {
- sys::AddSignalHandler(CrashHandler, 0);
+ if (!DisablePrettyStackTrace)
+ sys::AddSignalHandler(CrashHandler, 0);
return false;
}