OSDN Git Service

When LLVM is embedded in a larger application, it's not OK for LLVM to intercept...
authorFilip Pizlo <fpizlo@apple.com>
Sun, 3 Nov 2013 00:29:47 +0000 (00:29 +0000)
committerFilip Pizlo <fpizlo@apple.com>
Sun, 3 Nov 2013 00:29:47 +0000 (00:29 +0000)
the ability to disable this functionality.  This patch exposes it via the C API.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@193937 91177308-0d34-0410-b5e6-96231b3b80d8

include/llvm-c/Core.h
lib/Support/PrettyStackTrace.cpp

index 690ffa9..47d566c 100644 (file)
@@ -434,6 +434,12 @@ void LLVMInstallFatalErrorHandler(LLVMFatalErrorHandler Handler);
 void LLVMResetFatalErrorHandler(void);
 
 /**
+ * Disable LLVM's built-in stack trace code. This must be called before any
+ * other LLVM APIs; otherwise the results are undefined.
+ */
+void LLVMDisablePrettyStackTrace(void);
+
+/**
  * @defgroup LLVMCCoreContext Contexts
  *
  * Contexts are execution states for the core LLVM IR system.
index 315008a..d08abc8 100644 (file)
@@ -20,6 +20,7 @@
 #include "llvm/Support/ThreadLocal.h"
 #include "llvm/Support/Watchdog.h"
 #include "llvm/Support/raw_ostream.h"
+#include "llvm-c/Core.h"
 
 #ifdef HAVE_CRASHREPORTERCLIENT_H
 #include <CrashReporterClient.h>
@@ -147,3 +148,7 @@ void PrettyStackTraceProgram::print(raw_ostream &OS) const {
     OS << ArgV[i] << ' ';
   OS << '\n';
 }
+
+void LLVMDisablePrettyStackTrace() {
+  DisablePrettyStackTrace = true;
+}