From 9f50ccd1a364b27a2f0e18040c517e95e53794cc Mon Sep 17 00:00:00 2001 From: Filip Pizlo Date: Sun, 3 Nov 2013 00:29:47 +0000 Subject: [PATCH] When LLVM is embedded in a larger application, it's not OK for LLVM to intercept crashes. LLVM already has the ability to disable this functionality. This patch exposes it via the C API. llvm-svn: 193937 --- llvm/include/llvm-c/Core.h | 6 ++++++ llvm/lib/Support/PrettyStackTrace.cpp | 5 +++++ 2 files changed, 11 insertions(+) diff --git a/llvm/include/llvm-c/Core.h b/llvm/include/llvm-c/Core.h index 690ffa9fdc4d..47d566c03e2c 100644 --- a/llvm/include/llvm-c/Core.h +++ b/llvm/include/llvm-c/Core.h @@ -433,6 +433,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 * diff --git a/llvm/lib/Support/PrettyStackTrace.cpp b/llvm/lib/Support/PrettyStackTrace.cpp index 315008ae810e..d08abc8ce155 100644 --- a/llvm/lib/Support/PrettyStackTrace.cpp +++ b/llvm/lib/Support/PrettyStackTrace.cpp @@ -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 @@ -147,3 +148,7 @@ void PrettyStackTraceProgram::print(raw_ostream &OS) const { OS << ArgV[i] << ' '; OS << '\n'; } + +void LLVMDisablePrettyStackTrace() { + DisablePrettyStackTrace = true; +}