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; +}