diff options
Diffstat (limited to 'llvm/lib')
| -rw-r--r-- | llvm/lib/Support/Signals.cpp | 16 | 
1 files changed, 11 insertions, 5 deletions
diff --git a/llvm/lib/Support/Signals.cpp b/llvm/lib/Support/Signals.cpp index 052a7424709..256a22dee87 100644 --- a/llvm/lib/Support/Signals.cpp +++ b/llvm/lib/Support/Signals.cpp @@ -26,15 +26,21 @@  #include "llvm/Support/Program.h"  #include "llvm/Support/StringSaver.h"  #include "llvm/Support/raw_ostream.h" +#include "llvm/Support/Options.h"  #include <vector> -namespace llvm { -  //===----------------------------------------------------------------------===//  //=== WARNING: Implementation here must contain only TRULY operating system  //===          independent code.  //===----------------------------------------------------------------------===// +using namespace llvm; + +static cl::opt<bool> +    DisableSymbolication("disable-symbolication", +                         cl::desc("Disable symbolizing crash backtraces."), +                         cl::init(false), cl::Hidden); +  static ManagedStatic<std::vector<std::pair<void (*)(void *), void *>>>      CallBacksToRun;  void sys::RunSignalHandlers() { @@ -44,9 +50,6 @@ void sys::RunSignalHandlers() {      I.first(I.second);    CallBacksToRun->clear();  } -} - -using namespace llvm;  static bool findModulesAndOffsets(void **StackTrace, int Depth,                                    const char **Modules, intptr_t *Offsets, @@ -70,6 +73,9 @@ static bool printSymbolizedStackTrace(StringRef Argv0,  static bool printSymbolizedStackTrace(StringRef Argv0,                                        void **StackTrace, int Depth,                                        llvm::raw_ostream &OS) { +  if (DisableSymbolication) +    return false; +    // Don't recursively invoke the llvm-symbolizer binary.    if (Argv0.find("llvm-symbolizer") != std::string::npos)      return false;  | 

