From 35a1e9414d48f52093679b4723578192cceeb3c5 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. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@193937 91177308-0d34-0410-b5e6-96231b3b80d8 --- include/llvm-c/Core.h | 6 ++++++ lib/Support/PrettyStackTrace.cpp | 5 +++++ 2 files changed, 11 insertions(+) diff --git a/include/llvm-c/Core.h b/include/llvm-c/Core.h index 690ffa9fdc4..47d566c03e2 100644 --- a/include/llvm-c/Core.h +++ b/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/lib/Support/PrettyStackTrace.cpp b/lib/Support/PrettyStackTrace.cpp index 315008ae810..d08abc8ce15 100644 --- a/lib/Support/PrettyStackTrace.cpp +++ b/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; +}