From 2ad6d48b0c631d7fa8416c07f8b47f167cfd2fd8 Mon Sep 17 00:00:00 2001 From: Richard Smith Date: Thu, 9 Jun 2016 00:53:21 +0000 Subject: Search for llvm-symbolizer binary in the same directory as argv[0], before looking for it along $PATH. This allows installs of LLVM tools outside of $PATH to find the symbolizer and produce pretty backtraces if they crash. llvm-svn: 272232 --- llvm/tools/llvm-cov/llvm-cov.cpp | 8 ++++++++ 1 file changed, 8 insertions(+) (limited to 'llvm/tools/llvm-cov/llvm-cov.cpp') diff --git a/llvm/tools/llvm-cov/llvm-cov.cpp b/llvm/tools/llvm-cov/llvm-cov.cpp index 8c5acae..ba60cd9 100644 --- a/llvm/tools/llvm-cov/llvm-cov.cpp +++ b/llvm/tools/llvm-cov/llvm-cov.cpp @@ -14,8 +14,11 @@ #include "llvm/ADT/StringRef.h" #include "llvm/ADT/StringSwitch.h" #include "llvm/Support/CommandLine.h" +#include "llvm/Support/ManagedStatic.h" #include "llvm/Support/Path.h" +#include "llvm/Support/PrettyStackTrace.h" #include "llvm/Support/Process.h" +#include "llvm/Support/Signals.h" #include "llvm/Support/raw_ostream.h" #include @@ -51,6 +54,11 @@ static int versionMain(int argc, const char *argv[]) { } int main(int argc, const char **argv) { + // Print a stack trace if we signal out. + sys::PrintStackTraceOnErrorSignal(argv[0]); + PrettyStackTraceProgram X(argc, argv); + llvm_shutdown_obj Y; // Call llvm_shutdown() on exit. + // If argv[0] is or ends with 'gcov', always be gcov compatible if (sys::path::stem(argv[0]).endswith_lower("gcov")) return gcovMain(argc, argv); -- cgit v1.1