<div dir="ltr">Note, the corresponding changes in other LLVM subprojects are r272233-r272235; syncs in [272232,272235) may result in build failures.</div><div class="gmail_extra"><br><div class="gmail_quote">On Wed, Jun 8, 2016 at 5:53 PM, Richard Smith via llvm-commits <span dir="ltr"><<a href="mailto:llvm-commits@lists.llvm.org" target="_blank">llvm-commits@lists.llvm.org</a>></span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">Author: rsmith<br>
Date: Wed Jun  8 19:53:21 2016<br>
New Revision: 272232<br>
<br>
URL: <a href="http://llvm.org/viewvc/llvm-project?rev=272232&view=rev" rel="noreferrer" target="_blank">http://llvm.org/viewvc/llvm-project?rev=272232&view=rev</a><br>
Log:<br>
Search for llvm-symbolizer binary in the same directory as argv[0], before<br>
looking for it along $PATH. This allows installs of LLVM tools outside of<br>
$PATH to find the symbolizer and produce pretty backtraces if they crash.<br>
<br>
Modified:<br>
    llvm/trunk/include/llvm/Support/Signals.h<br>
    llvm/trunk/lib/Support/Signals.cpp<br>
    llvm/trunk/lib/Support/Unix/Signals.inc<br>
    llvm/trunk/lib/Support/Windows/Signals.inc<br>
    llvm/trunk/tools/bugpoint/bugpoint.cpp<br>
    llvm/trunk/tools/dsymutil/dsymutil.cpp<br>
    llvm/trunk/tools/llc/llc.cpp<br>
    llvm/trunk/tools/lli/lli.cpp<br>
    llvm/trunk/tools/llvm-ar/llvm-ar.cpp<br>
    llvm/trunk/tools/llvm-as/llvm-as.cpp<br>
    llvm/trunk/tools/llvm-bcanalyzer/llvm-bcanalyzer.cpp<br>
    llvm/trunk/tools/llvm-cov/CodeCoverage.cpp<br>
    llvm/trunk/tools/llvm-cov/TestingSupport.cpp<br>
    llvm/trunk/tools/llvm-cov/gcov.cpp<br>
    llvm/trunk/tools/llvm-cov/llvm-cov.cpp<br>
    llvm/trunk/tools/llvm-cxxdump/llvm-cxxdump.cpp<br>
    llvm/trunk/tools/llvm-dis/llvm-dis.cpp<br>
    llvm/trunk/tools/llvm-dwarfdump/llvm-dwarfdump.cpp<br>
    llvm/trunk/tools/llvm-extract/llvm-extract.cpp<br>
    llvm/trunk/tools/llvm-jitlistener/llvm-jitlistener.cpp<br>
    llvm/trunk/tools/llvm-link/llvm-link.cpp<br>
    llvm/trunk/tools/llvm-lto/llvm-lto.cpp<br>
    llvm/trunk/tools/llvm-mc/llvm-mc.cpp<br>
    llvm/trunk/tools/llvm-mcmarkup/llvm-mcmarkup.cpp<br>
    llvm/trunk/tools/llvm-nm/llvm-nm.cpp<br>
    llvm/trunk/tools/llvm-objdump/llvm-objdump.cpp<br>
    llvm/trunk/tools/llvm-pdbdump/llvm-pdbdump.cpp<br>
    llvm/trunk/tools/llvm-profdata/llvm-profdata.cpp<br>
    llvm/trunk/tools/llvm-readobj/llvm-readobj.cpp<br>
    llvm/trunk/tools/llvm-rtdyld/llvm-rtdyld.cpp<br>
    llvm/trunk/tools/llvm-size/llvm-size.cpp<br>
    llvm/trunk/tools/llvm-symbolizer/llvm-symbolizer.cpp<br>
    llvm/trunk/tools/obj2yaml/obj2yaml.cpp<br>
    llvm/trunk/tools/opt/opt.cpp<br>
    llvm/trunk/tools/sancov/sancov.cc<br>
    llvm/trunk/tools/verify-uselistorder/verify-uselistorder.cpp<br>
    llvm/trunk/tools/yaml2obj/yaml2obj.cpp<br>
    llvm/trunk/utils/FileCheck/FileCheck.cpp<br>
    llvm/trunk/utils/KillTheDoctor/KillTheDoctor.cpp<br>
    llvm/trunk/utils/TableGen/TableGen.cpp<br>
    llvm/trunk/utils/unittest/UnitTestMain/TestMain.cpp<br>
<br>
Modified: llvm/trunk/include/llvm/Support/Signals.h<br>
URL: <a href="http://llvm.org/viewvc/llvm-project/llvm/trunk/include/llvm/Support/Signals.h?rev=272232&r1=272231&r2=272232&view=diff" rel="noreferrer" target="_blank">http://llvm.org/viewvc/llvm-project/llvm/trunk/include/llvm/Support/Signals.h?rev=272232&r1=272231&r2=272232&view=diff</a><br>
==============================================================================<br>
--- llvm/trunk/include/llvm/Support/Signals.h (original)<br>
+++ llvm/trunk/include/llvm/Support/Signals.h Wed Jun  8 19:53:21 2016<br>
@@ -38,8 +38,14 @@ namespace sys {<br>
<br>
   /// When an error signal (such as SIBABRT or SIGSEGV) is delivered to the<br>
   /// process, print a stack trace and then exit.<br>
-  /// @brief Print a stack trace if a fatal signal occurs.<br>
-  void PrintStackTraceOnErrorSignal(bool DisableCrashReporting = false);<br>
+  /// \brief Print a stack trace if a fatal signal occurs.<br>
+  /// \param Argv0 the current binary name, used to find the symbolizer<br>
+  ///        relative to the current binary before searching $PATH; can be<br>
+  ///        StringRef(), in which case we will only search $PATH.<br>
+  /// \param DisableCrashReporting if \c true, disable the normal crash<br>
+  ///        reporting mechanisms on the underlying operating system.<br>
+  void PrintStackTraceOnErrorSignal(StringRef Argv0,<br>
+                                    bool DisableCrashReporting = false);<br>
<br>
   /// Disable all system dialog boxes that appear when the process crashes.<br>
   void DisableSystemDialogsOnCrash();<br>
<br>
Modified: llvm/trunk/lib/Support/Signals.cpp<br>
URL: <a href="http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/Support/Signals.cpp?rev=272232&r1=272231&r2=272232&view=diff" rel="noreferrer" target="_blank">http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/Support/Signals.cpp?rev=272232&r1=272231&r2=272232&view=diff</a><br>
==============================================================================<br>
--- llvm/trunk/lib/Support/Signals.cpp (original)<br>
+++ llvm/trunk/lib/Support/Signals.cpp Wed Jun  8 19:53:21 2016<br>
@@ -62,28 +62,40 @@ static FormattedNumber format_ptr(void *<br>
   return format_hex((uint64_t)PC, PtrWidth);<br>
 }<br>
<br>
-static bool printSymbolizedStackTrace(void **StackTrace, int Depth,<br>
+static bool printSymbolizedStackTrace(StringRef Argv0,<br>
+                                      void **StackTrace, int Depth,<br>
                                       llvm::raw_ostream &OS)<br>
   LLVM_ATTRIBUTE_USED;<br>
<br>
 /// Helper that launches llvm-symbolizer and symbolizes a backtrace.<br>
-static bool printSymbolizedStackTrace(void **StackTrace, int Depth,<br>
+static bool printSymbolizedStackTrace(StringRef Argv0,<br>
+                                      void **StackTrace, int Depth,<br>
                                       llvm::raw_ostream &OS) {<br>
+  // Don't recursively invoke the llvm-symbolizer binary.<br>
+  if (Argv0.find("llvm-symbolizer") != std::string::npos)<br>
+    return false;<br>
+<br>
   // FIXME: Subtract necessary number from StackTrace entries to turn return addresses<br>
   // into actual instruction addresses.<br>
-  // Use llvm-symbolizer tool to symbolize the stack traces.<br>
-  ErrorOr<std::string> LLVMSymbolizerPathOrErr =<br>
-      sys::findProgramByName("llvm-symbolizer");<br>
+  // Use llvm-symbolizer tool to symbolize the stack traces. First look for it<br>
+  // alongside our binary, then in $PATH.<br>
+  ErrorOr<std::string> LLVMSymbolizerPathOrErr = std::error_code();<br>
+  if (!Argv0.empty()) {<br>
+    StringRef Parent = llvm::sys::path::parent_path(Argv0);<br>
+    if (!Parent.empty())<br>
+      LLVMSymbolizerPathOrErr = sys::findProgramByName("llvm-symbolizer", Parent);<br>
+  }<br>
+  if (!LLVMSymbolizerPathOrErr)<br>
+    LLVMSymbolizerPathOrErr = sys::findProgramByName("llvm-symbolizer");<br>
   if (!LLVMSymbolizerPathOrErr)<br>
     return false;<br>
   const std::string &LLVMSymbolizerPath = *LLVMSymbolizerPathOrErr;<br>
-  // We don't know argv0 or the address of main() at this point, but try<br>
-  // to guess it anyway (it's possible on some platforms).<br>
-  std::string MainExecutableName = sys::fs::getMainExecutable(nullptr, nullptr);<br>
-  if (MainExecutableName.empty() ||<br>
-      MainExecutableName.find("llvm-symbolizer") != std::string::npos)<br>
-    return false;<br>
<br>
+  // If we don't know argv0 or the address of main() at this point, try<br>
+  // to guess it anyway (it's possible on some platforms).<br>
+  std::string MainExecutableName =<br>
+      Argv0.empty() ? sys::fs::getMainExecutable(nullptr, nullptr)<br>
+                    : (std::string)Argv0;<br>
   BumpPtrAllocator Allocator;<br>
   StringSaver StrPool(Allocator);<br>
   std::vector<const char *> Modules(Depth, nullptr);<br>
<br>
Modified: llvm/trunk/lib/Support/Unix/Signals.inc<br>
URL: <a href="http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/Support/Unix/Signals.inc?rev=272232&r1=272231&r2=272232&view=diff" rel="noreferrer" target="_blank">http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/Support/Unix/Signals.inc?rev=272232&r1=272231&r2=272232&view=diff</a><br>
==============================================================================<br>
--- llvm/trunk/lib/Support/Unix/Signals.inc (original)<br>
+++ llvm/trunk/lib/Support/Unix/Signals.inc Wed Jun  8 19:53:21 2016<br>
@@ -68,6 +68,8 @@ static void (*InterruptFunction)() = nul<br>
<br>
 static ManagedStatic<std::vector<std::string>> FilesToRemove;<br>
<br>
+static StringRef Argv0;<br>
+<br>
 // IntSigs - Signals that represent requested termination. There's no bug<br>
 // or failure, or if there is, it's not our direct responsibility. For whatever<br>
 // reason, our continued execution is no longer desirable.<br>
@@ -408,7 +410,7 @@ void llvm::sys::PrintStackTrace(raw_ostr<br>
   if (!depth)<br>
     return;<br>
<br>
-  if (printSymbolizedStackTrace(StackTrace, depth, OS))<br>
+  if (printSymbolizedStackTrace(Argv0, StackTrace, depth, OS))<br>
     return;<br>
 #if HAVE_DLFCN_H && __GNUG__<br>
   int width = 0;<br>
@@ -471,7 +473,10 @@ void llvm::sys::DisableSystemDialogsOnCr<br>
<br>
 /// PrintStackTraceOnErrorSignal - When an error signal (such as SIGABRT or<br>
 /// SIGSEGV) is delivered to the process, print a stack trace and then exit.<br>
-void llvm::sys::PrintStackTraceOnErrorSignal(bool DisableCrashReporting) {<br>
+void llvm::sys::PrintStackTraceOnErrorSignal(StringRef Argv0,<br>
+                                             bool DisableCrashReporting) {<br>
+  ::Argv0 = Argv0;<br>
+<br>
   AddSignalHandler(PrintStackTraceSignalHandler, nullptr);<br>
<br>
 #if defined(__APPLE__) && defined(ENABLE_CRASH_OVERRIDES)<br>
<br>
Modified: llvm/trunk/lib/Support/Windows/Signals.inc<br>
URL: <a href="http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/Support/Windows/Signals.inc?rev=272232&r1=272231&r2=272232&view=diff" rel="noreferrer" target="_blank">http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/Support/Windows/Signals.inc?rev=272232&r1=272231&r2=272232&view=diff</a><br>
==============================================================================<br>
--- llvm/trunk/lib/Support/Windows/Signals.inc (original)<br>
+++ llvm/trunk/lib/Support/Windows/Signals.inc Wed Jun  8 19:53:21 2016<br>
@@ -206,6 +206,8 @@ static PTOP_LEVEL_EXCEPTION_FILTER OldFi<br>
 static CRITICAL_SECTION CriticalSection;<br>
 static bool CriticalSectionInitialized = false;<br>
<br>
+static StringRef Argv0;<br>
+<br>
 enum {<br>
 #if defined(_M_X64)<br>
   NativeMachineType = IMAGE_FILE_MACHINE_AMD64<br>
@@ -240,7 +242,7 @@ static bool printStackTraceWithLLVMSymbo<br>
       break;<br>
   }<br>
<br>
-  return printSymbolizedStackTrace(&StackTrace[0], Depth, OS);<br>
+  return printSymbolizedStackTrace(Argv0, &StackTrace[0], Depth, OS);<br>
 }<br>
<br>
 namespace {<br>
@@ -496,7 +498,10 @@ void sys::DisableSystemDialogsOnCrash()<br>
<br>
 /// PrintStackTraceOnErrorSignal - When an error signal (such as SIBABRT or<br>
 /// SIGSEGV) is delivered to the process, print a stack trace and then exit.<br>
-void sys::PrintStackTraceOnErrorSignal(bool DisableCrashReporting) {<br>
+void sys::PrintStackTraceOnErrorSignal(StringRef Argv0,<br>
+                                       bool DisableCrashReporting) {<br>
+  ::Argv0 = Argv0;<br>
+<br>
   if (DisableCrashReporting || getenv("LLVM_DISABLE_CRASH_REPORT"))<br>
     Process::PreventCoreFiles();<br>
<br>
<br>
Modified: llvm/trunk/tools/bugpoint/bugpoint.cpp<br>
URL: <a href="http://llvm.org/viewvc/llvm-project/llvm/trunk/tools/bugpoint/bugpoint.cpp?rev=272232&r1=272231&r2=272232&view=diff" rel="noreferrer" target="_blank">http://llvm.org/viewvc/llvm-project/llvm/trunk/tools/bugpoint/bugpoint.cpp?rev=272232&r1=272231&r2=272232&view=diff</a><br>
==============================================================================<br>
--- llvm/trunk/tools/bugpoint/bugpoint.cpp (original)<br>
+++ llvm/trunk/tools/bugpoint/bugpoint.cpp Wed Jun  8 19:53:21 2016<br>
@@ -113,7 +113,7 @@ void initializePollyPasses(llvm::PassReg<br>
<br>
 int main(int argc, char **argv) {<br>
 #ifndef DEBUG_BUGPOINT<br>
-  llvm::sys::PrintStackTraceOnErrorSignal();<br>
+  llvm::sys::PrintStackTraceOnErrorSignal(argv[0]);<br>
   llvm::PrettyStackTraceProgram X(argc, argv);<br>
   llvm_shutdown_obj Y;  // Call llvm_shutdown() on exit.<br>
 #endif<br>
<br>
Modified: llvm/trunk/tools/dsymutil/dsymutil.cpp<br>
URL: <a href="http://llvm.org/viewvc/llvm-project/llvm/trunk/tools/dsymutil/dsymutil.cpp?rev=272232&r1=272231&r2=272232&view=diff" rel="noreferrer" target="_blank">http://llvm.org/viewvc/llvm-project/llvm/trunk/tools/dsymutil/dsymutil.cpp?rev=272232&r1=272231&r2=272232&view=diff</a><br>
==============================================================================<br>
--- llvm/trunk/tools/dsymutil/dsymutil.cpp (original)<br>
+++ llvm/trunk/tools/dsymutil/dsymutil.cpp Wed Jun  8 19:53:21 2016<br>
@@ -237,7 +237,7 @@ void llvm::dsymutil::exitDsymutil(int Ex<br>
 }<br>
<br>
 int main(int argc, char **argv) {<br>
-  llvm::sys::PrintStackTraceOnErrorSignal();<br>
+  llvm::sys::PrintStackTraceOnErrorSignal(argv[0]);<br>
   llvm::PrettyStackTraceProgram StackPrinter(argc, argv);<br>
   llvm::llvm_shutdown_obj Shutdown;<br>
   LinkOptions Options;<br>
<br>
Modified: llvm/trunk/tools/llc/llc.cpp<br>
URL: <a href="http://llvm.org/viewvc/llvm-project/llvm/trunk/tools/llc/llc.cpp?rev=272232&r1=272231&r2=272232&view=diff" rel="noreferrer" target="_blank">http://llvm.org/viewvc/llvm-project/llvm/trunk/tools/llc/llc.cpp?rev=272232&r1=272231&r2=272232&view=diff</a><br>
==============================================================================<br>
--- llvm/trunk/tools/llc/llc.cpp (original)<br>
+++ llvm/trunk/tools/llc/llc.cpp Wed Jun  8 19:53:21 2016<br>
@@ -202,7 +202,7 @@ static void DiagnosticHandler(const Diag<br>
 // main - Entry point for the llc compiler.<br>
 //<br>
 int main(int argc, char **argv) {<br>
-  sys::PrintStackTraceOnErrorSignal();<br>
+  sys::PrintStackTraceOnErrorSignal(argv[0]);<br>
   PrettyStackTraceProgram X(argc, argv);<br>
<br>
   // Enable debug stream buffering.<br>
<br>
Modified: llvm/trunk/tools/lli/lli.cpp<br>
URL: <a href="http://llvm.org/viewvc/llvm-project/llvm/trunk/tools/lli/lli.cpp?rev=272232&r1=272231&r2=272232&view=diff" rel="noreferrer" target="_blank">http://llvm.org/viewvc/llvm-project/llvm/trunk/tools/lli/lli.cpp?rev=272232&r1=272231&r2=272232&view=diff</a><br>
==============================================================================<br>
--- llvm/trunk/tools/lli/lli.cpp (original)<br>
+++ llvm/trunk/tools/lli/lli.cpp Wed Jun  8 19:53:21 2016<br>
@@ -365,7 +365,7 @@ CodeGenOpt::Level getOptLevel() {<br>
 // main Driver function<br>
 //<br>
 int main(int argc, char **argv, char * const *envp) {<br>
-  sys::PrintStackTraceOnErrorSignal();<br>
+  sys::PrintStackTraceOnErrorSignal(argv[0]);<br>
   PrettyStackTraceProgram X(argc, argv);<br>
<br>
   atexit(llvm_shutdown); // Call llvm_shutdown() on exit.<br>
<br>
Modified: llvm/trunk/tools/llvm-ar/llvm-ar.cpp<br>
URL: <a href="http://llvm.org/viewvc/llvm-project/llvm/trunk/tools/llvm-ar/llvm-ar.cpp?rev=272232&r1=272231&r2=272232&view=diff" rel="noreferrer" target="_blank">http://llvm.org/viewvc/llvm-project/llvm/trunk/tools/llvm-ar/llvm-ar.cpp?rev=272232&r1=272231&r2=272232&view=diff</a><br>
==============================================================================<br>
--- llvm/trunk/tools/llvm-ar/llvm-ar.cpp (original)<br>
+++ llvm/trunk/tools/llvm-ar/llvm-ar.cpp Wed Jun  8 19:53:21 2016<br>
@@ -773,7 +773,7 @@ static int ranlib_main() {<br>
 int main(int argc, char **argv) {<br>
   ToolName = argv[0];<br>
   // Print a stack trace if we signal out.<br>
-  sys::PrintStackTraceOnErrorSignal();<br>
+  sys::PrintStackTraceOnErrorSignal(argv[0]);<br>
   PrettyStackTraceProgram X(argc, argv);<br>
   llvm_shutdown_obj Y;  // Call llvm_shutdown() on exit.<br>
<br>
<br>
Modified: llvm/trunk/tools/llvm-as/llvm-as.cpp<br>
URL: <a href="http://llvm.org/viewvc/llvm-project/llvm/trunk/tools/llvm-as/llvm-as.cpp?rev=272232&r1=272231&r2=272232&view=diff" rel="noreferrer" target="_blank">http://llvm.org/viewvc/llvm-project/llvm/trunk/tools/llvm-as/llvm-as.cpp?rev=272232&r1=272231&r2=272232&view=diff</a><br>
==============================================================================<br>
--- llvm/trunk/tools/llvm-as/llvm-as.cpp (original)<br>
+++ llvm/trunk/tools/llvm-as/llvm-as.cpp Wed Jun  8 19:53:21 2016<br>
@@ -89,7 +89,7 @@ static void WriteOutputFile(const Module<br>
<br>
 int main(int argc, char **argv) {<br>
   // Print a stack trace if we signal out.<br>
-  sys::PrintStackTraceOnErrorSignal();<br>
+  sys::PrintStackTraceOnErrorSignal(argv[0]);<br>
   PrettyStackTraceProgram X(argc, argv);<br>
   LLVMContext Context;<br>
   llvm_shutdown_obj Y; // Call llvm_shutdown() on exit.<br>
<br>
Modified: llvm/trunk/tools/llvm-bcanalyzer/llvm-bcanalyzer.cpp<br>
URL: <a href="http://llvm.org/viewvc/llvm-project/llvm/trunk/tools/llvm-bcanalyzer/llvm-bcanalyzer.cpp?rev=272232&r1=272231&r2=272232&view=diff" rel="noreferrer" target="_blank">http://llvm.org/viewvc/llvm-project/llvm/trunk/tools/llvm-bcanalyzer/llvm-bcanalyzer.cpp?rev=272232&r1=272231&r2=272232&view=diff</a><br>
==============================================================================<br>
--- llvm/trunk/tools/llvm-bcanalyzer/llvm-bcanalyzer.cpp (original)<br>
+++ llvm/trunk/tools/llvm-bcanalyzer/llvm-bcanalyzer.cpp Wed Jun  8 19:53:21 2016<br>
@@ -915,7 +915,7 @@ static int AnalyzeBitcode() {<br>
<br>
 int main(int argc, char **argv) {<br>
   // Print a stack trace if we signal out.<br>
-  sys::PrintStackTraceOnErrorSignal();<br>
+  sys::PrintStackTraceOnErrorSignal(argv[0]);<br>
   PrettyStackTraceProgram X(argc, argv);<br>
   llvm_shutdown_obj Y;  // Call llvm_shutdown() on exit.<br>
   cl::ParseCommandLineOptions(argc, argv, "llvm-bcanalyzer file analyzer\n");<br>
<br>
Modified: llvm/trunk/tools/llvm-cov/CodeCoverage.cpp<br>
URL: <a href="http://llvm.org/viewvc/llvm-project/llvm/trunk/tools/llvm-cov/CodeCoverage.cpp?rev=272232&r1=272231&r2=272232&view=diff" rel="noreferrer" target="_blank">http://llvm.org/viewvc/llvm-project/llvm/trunk/tools/llvm-cov/CodeCoverage.cpp?rev=272232&r1=272231&r2=272232&view=diff</a><br>
==============================================================================<br>
--- llvm/trunk/tools/llvm-cov/CodeCoverage.cpp (original)<br>
+++ llvm/trunk/tools/llvm-cov/CodeCoverage.cpp Wed Jun  8 19:53:21 2016<br>
@@ -26,11 +26,8 @@<br>
 #include "llvm/Support/CommandLine.h"<br>
 #include "llvm/Support/FileSystem.h"<br>
 #include "llvm/Support/Format.h"<br>
-#include "llvm/Support/ManagedStatic.h"<br>
 #include "llvm/Support/Path.h"<br>
-#include "llvm/Support/PrettyStackTrace.h"<br>
 #include "llvm/Support/Process.h"<br>
-#include "llvm/Support/Signals.h"<br>
 #include <functional><br>
 #include <system_error><br>
<br>
@@ -240,11 +237,6 @@ std::unique_ptr<CoverageMapping> CodeCov<br>
 }<br>
<br>
 int CodeCoverageTool::run(Command Cmd, int argc, const char **argv) {<br>
-  // Print a stack trace if we signal out.<br>
-  sys::PrintStackTraceOnErrorSignal();<br>
-  PrettyStackTraceProgram X(argc, argv);<br>
-  llvm_shutdown_obj Y; // Call llvm_shutdown() on exit.<br>
-<br>
   cl::opt<std::string, true> ObjectFilename(<br>
       cl::Positional, cl::Required, cl::location(this->ObjectFilename),<br>
       cl::desc("Covered executable or object file."));<br>
<br>
Modified: llvm/trunk/tools/llvm-cov/TestingSupport.cpp<br>
URL: <a href="http://llvm.org/viewvc/llvm-project/llvm/trunk/tools/llvm-cov/TestingSupport.cpp?rev=272232&r1=272231&r2=272232&view=diff" rel="noreferrer" target="_blank">http://llvm.org/viewvc/llvm-project/llvm/trunk/tools/llvm-cov/TestingSupport.cpp?rev=272232&r1=272231&r2=272232&view=diff</a><br>
==============================================================================<br>
--- llvm/trunk/tools/llvm-cov/TestingSupport.cpp (original)<br>
+++ llvm/trunk/tools/llvm-cov/TestingSupport.cpp Wed Jun  8 19:53:21 2016<br>
@@ -11,9 +11,6 @@<br>
 #include "llvm/ProfileData/InstrProf.h"<br>
 #include "llvm/Support/CommandLine.h"<br>
 #include "llvm/Support/LEB128.h"<br>
-#include "llvm/Support/ManagedStatic.h"<br>
-#include "llvm/Support/PrettyStackTrace.h"<br>
-#include "llvm/Support/Signals.h"<br>
 #include "llvm/Support/raw_ostream.h"<br>
 #include <functional><br>
 #include <system_error><br>
@@ -22,10 +19,6 @@ using namespace llvm;<br>
 using namespace object;<br>
<br>
 int convertForTestingMain(int argc, const char *argv[]) {<br>
-  sys::PrintStackTraceOnErrorSignal();<br>
-  PrettyStackTraceProgram X(argc, argv);<br>
-  llvm_shutdown_obj Y; // Call llvm_shutdown() on exit.<br>
-<br>
   cl::opt<std::string> InputSourceFile(cl::Positional, cl::Required,<br>
                                        cl::desc("<Source file>"));<br>
<br>
<br>
Modified: llvm/trunk/tools/llvm-cov/gcov.cpp<br>
URL: <a href="http://llvm.org/viewvc/llvm-project/llvm/trunk/tools/llvm-cov/gcov.cpp?rev=272232&r1=272231&r2=272232&view=diff" rel="noreferrer" target="_blank">http://llvm.org/viewvc/llvm-project/llvm/trunk/tools/llvm-cov/gcov.cpp?rev=272232&r1=272231&r2=272232&view=diff</a><br>
==============================================================================<br>
--- llvm/trunk/tools/llvm-cov/gcov.cpp (original)<br>
+++ llvm/trunk/tools/llvm-cov/gcov.cpp Wed Jun  8 19:53:21 2016<br>
@@ -16,10 +16,7 @@<br>
 #include "llvm/Support/Errc.h"<br>
 #include "llvm/Support/FileSystem.h"<br>
 #include "llvm/Support/GCOV.h"<br>
-#include "llvm/Support/ManagedStatic.h"<br>
 #include "llvm/Support/Path.h"<br>
-#include "llvm/Support/PrettyStackTrace.h"<br>
-#include "llvm/Support/Signals.h"<br>
 #include <system_error><br>
 using namespace llvm;<br>
<br>
@@ -85,11 +82,6 @@ static void reportCoverage(StringRef Sou<br>
 }<br>
<br>
 int gcovMain(int argc, const char *argv[]) {<br>
-  // Print a stack trace if we signal out.<br>
-  sys::PrintStackTraceOnErrorSignal();<br>
-  PrettyStackTraceProgram X(argc, argv);<br>
-  llvm_shutdown_obj Y; // Call llvm_shutdown() on exit.<br>
-<br>
   cl::list<std::string> SourceFiles(cl::Positional, cl::OneOrMore,<br>
                                     cl::desc("SOURCEFILE"));<br>
<br>
<br>
Modified: llvm/trunk/tools/llvm-cov/llvm-cov.cpp<br>
URL: <a href="http://llvm.org/viewvc/llvm-project/llvm/trunk/tools/llvm-cov/llvm-cov.cpp?rev=272232&r1=272231&r2=272232&view=diff" rel="noreferrer" target="_blank">http://llvm.org/viewvc/llvm-project/llvm/trunk/tools/llvm-cov/llvm-cov.cpp?rev=272232&r1=272231&r2=272232&view=diff</a><br>
==============================================================================<br>
--- llvm/trunk/tools/llvm-cov/llvm-cov.cpp (original)<br>
+++ llvm/trunk/tools/llvm-cov/llvm-cov.cpp Wed Jun  8 19:53:21 2016<br>
@@ -14,8 +14,11 @@<br>
 #include "llvm/ADT/StringRef.h"<br>
 #include "llvm/ADT/StringSwitch.h"<br>
 #include "llvm/Support/CommandLine.h"<br>
+#include "llvm/Support/ManagedStatic.h"<br>
 #include "llvm/Support/Path.h"<br>
+#include "llvm/Support/PrettyStackTrace.h"<br>
 #include "llvm/Support/Process.h"<br>
+#include "llvm/Support/Signals.h"<br>
 #include "llvm/Support/raw_ostream.h"<br>
 #include <string><br>
<br>
@@ -51,6 +54,11 @@ static int versionMain(int argc, const c<br>
 }<br>
<br>
 int main(int argc, const char **argv) {<br>
+  // Print a stack trace if we signal out.<br>
+  sys::PrintStackTraceOnErrorSignal(argv[0]);<br>
+  PrettyStackTraceProgram X(argc, argv);<br>
+  llvm_shutdown_obj Y; // Call llvm_shutdown() on exit.<br>
+<br>
   // If argv[0] is or ends with 'gcov', always be gcov compatible<br>
   if (sys::path::stem(argv[0]).endswith_lower("gcov"))<br>
     return gcovMain(argc, argv);<br>
<br>
Modified: llvm/trunk/tools/llvm-cxxdump/llvm-cxxdump.cpp<br>
URL: <a href="http://llvm.org/viewvc/llvm-project/llvm/trunk/tools/llvm-cxxdump/llvm-cxxdump.cpp?rev=272232&r1=272231&r2=272232&view=diff" rel="noreferrer" target="_blank">http://llvm.org/viewvc/llvm-project/llvm/trunk/tools/llvm-cxxdump/llvm-cxxdump.cpp?rev=272232&r1=272231&r2=272232&view=diff</a><br>
==============================================================================<br>
--- llvm/trunk/tools/llvm-cxxdump/llvm-cxxdump.cpp (original)<br>
+++ llvm/trunk/tools/llvm-cxxdump/llvm-cxxdump.cpp Wed Jun  8 19:53:21 2016<br>
@@ -525,7 +525,7 @@ static void dumpInput(StringRef File) {<br>
 }<br>
<br>
 int main(int argc, const char *argv[]) {<br>
-  sys::PrintStackTraceOnErrorSignal();<br>
+  sys::PrintStackTraceOnErrorSignal(argv[0]);<br>
   PrettyStackTraceProgram X(argc, argv);<br>
   llvm_shutdown_obj Y;<br>
<br>
<br>
Modified: llvm/trunk/tools/llvm-dis/llvm-dis.cpp<br>
URL: <a href="http://llvm.org/viewvc/llvm-project/llvm/trunk/tools/llvm-dis/llvm-dis.cpp?rev=272232&r1=272231&r2=272232&view=diff" rel="noreferrer" target="_blank">http://llvm.org/viewvc/llvm-project/llvm/trunk/tools/llvm-dis/llvm-dis.cpp?rev=272232&r1=272231&r2=272232&view=diff</a><br>
==============================================================================<br>
--- llvm/trunk/tools/llvm-dis/llvm-dis.cpp (original)<br>
+++ llvm/trunk/tools/llvm-dis/llvm-dis.cpp Wed Jun  8 19:53:21 2016<br>
@@ -134,7 +134,7 @@ static void diagnosticHandler(const Diag<br>
<br>
 int main(int argc, char **argv) {<br>
   // Print a stack trace if we signal out.<br>
-  sys::PrintStackTraceOnErrorSignal();<br>
+  sys::PrintStackTraceOnErrorSignal(argv[0]);<br>
   PrettyStackTraceProgram X(argc, argv);<br>
<br>
   LLVMContext Context;<br>
<br>
Modified: llvm/trunk/tools/llvm-dwarfdump/llvm-dwarfdump.cpp<br>
URL: <a href="http://llvm.org/viewvc/llvm-project/llvm/trunk/tools/llvm-dwarfdump/llvm-dwarfdump.cpp?rev=272232&r1=272231&r2=272232&view=diff" rel="noreferrer" target="_blank">http://llvm.org/viewvc/llvm-project/llvm/trunk/tools/llvm-dwarfdump/llvm-dwarfdump.cpp?rev=272232&r1=272231&r2=272232&view=diff</a><br>
==============================================================================<br>
--- llvm/trunk/tools/llvm-dwarfdump/llvm-dwarfdump.cpp (original)<br>
+++ llvm/trunk/tools/llvm-dwarfdump/llvm-dwarfdump.cpp Wed Jun  8 19:53:21 2016<br>
@@ -146,7 +146,7 @@ static std::vector<std::string> expandBu<br>
<br>
 int main(int argc, char **argv) {<br>
   // Print a stack trace if we signal out.<br>
-  sys::PrintStackTraceOnErrorSignal();<br>
+  sys::PrintStackTraceOnErrorSignal(argv[0]);<br>
   PrettyStackTraceProgram X(argc, argv);<br>
   llvm_shutdown_obj Y;  // Call llvm_shutdown() on exit.<br>
<br>
<br>
Modified: llvm/trunk/tools/llvm-extract/llvm-extract.cpp<br>
URL: <a href="http://llvm.org/viewvc/llvm-project/llvm/trunk/tools/llvm-extract/llvm-extract.cpp?rev=272232&r1=272231&r2=272232&view=diff" rel="noreferrer" target="_blank">http://llvm.org/viewvc/llvm-project/llvm/trunk/tools/llvm-extract/llvm-extract.cpp?rev=272232&r1=272231&r2=272232&view=diff</a><br>
==============================================================================<br>
--- llvm/trunk/tools/llvm-extract/llvm-extract.cpp (original)<br>
+++ llvm/trunk/tools/llvm-extract/llvm-extract.cpp Wed Jun  8 19:53:21 2016<br>
@@ -102,7 +102,7 @@ static cl::opt<bool> PreserveAssemblyUse<br>
<br>
 int main(int argc, char **argv) {<br>
   // Print a stack trace if we signal out.<br>
-  sys::PrintStackTraceOnErrorSignal();<br>
+  sys::PrintStackTraceOnErrorSignal(argv[0]);<br>
   PrettyStackTraceProgram X(argc, argv);<br>
<br>
   LLVMContext Context;<br>
<br>
Modified: llvm/trunk/tools/llvm-jitlistener/llvm-jitlistener.cpp<br>
URL: <a href="http://llvm.org/viewvc/llvm-project/llvm/trunk/tools/llvm-jitlistener/llvm-jitlistener.cpp?rev=272232&r1=272231&r2=272232&view=diff" rel="noreferrer" target="_blank">http://llvm.org/viewvc/llvm-project/llvm/trunk/tools/llvm-jitlistener/llvm-jitlistener.cpp?rev=272232&r1=272231&r2=272232&view=diff</a><br>
==============================================================================<br>
--- llvm/trunk/tools/llvm-jitlistener/llvm-jitlistener.cpp (original)<br>
+++ llvm/trunk/tools/llvm-jitlistener/llvm-jitlistener.cpp Wed Jun  8 19:53:21 2016<br>
@@ -179,7 +179,7 @@ InputFilename(cl::Positional, cl::desc("<br>
<br>
 int main(int argc, char **argv) {<br>
   // Print a stack trace if we signal out.<br>
-  sys::PrintStackTraceOnErrorSignal();<br>
+  sys::PrintStackTraceOnErrorSignal(argv[0]);<br>
   PrettyStackTraceProgram X(argc, argv);<br>
   llvm_shutdown_obj Y;  // Call llvm_shutdown() on exit.<br>
<br>
<br>
Modified: llvm/trunk/tools/llvm-link/llvm-link.cpp<br>
URL: <a href="http://llvm.org/viewvc/llvm-project/llvm/trunk/tools/llvm-link/llvm-link.cpp?rev=272232&r1=272231&r2=272232&view=diff" rel="noreferrer" target="_blank">http://llvm.org/viewvc/llvm-project/llvm/trunk/tools/llvm-link/llvm-link.cpp?rev=272232&r1=272231&r2=272232&view=diff</a><br>
==============================================================================<br>
--- llvm/trunk/tools/llvm-link/llvm-link.cpp (original)<br>
+++ llvm/trunk/tools/llvm-link/llvm-link.cpp Wed Jun  8 19:53:21 2016<br>
@@ -335,7 +335,7 @@ static bool linkFiles(const char *argv0,<br>
<br>
 int main(int argc, char **argv) {<br>
   // Print a stack trace if we signal out.<br>
-  sys::PrintStackTraceOnErrorSignal();<br>
+  sys::PrintStackTraceOnErrorSignal(argv[0]);<br>
   PrettyStackTraceProgram X(argc, argv);<br>
<br>
   LLVMContext Context;<br>
<br>
Modified: llvm/trunk/tools/llvm-lto/llvm-lto.cpp<br>
URL: <a href="http://llvm.org/viewvc/llvm-project/llvm/trunk/tools/llvm-lto/llvm-lto.cpp?rev=272232&r1=272231&r2=272232&view=diff" rel="noreferrer" target="_blank">http://llvm.org/viewvc/llvm-project/llvm/trunk/tools/llvm-lto/llvm-lto.cpp?rev=272232&r1=272231&r2=272232&view=diff</a><br>
==============================================================================<br>
--- llvm/trunk/tools/llvm-lto/llvm-lto.cpp (original)<br>
+++ llvm/trunk/tools/llvm-lto/llvm-lto.cpp Wed Jun  8 19:53:21 2016<br>
@@ -691,7 +691,7 @@ private:<br>
<br>
 int main(int argc, char **argv) {<br>
   // Print a stack trace if we signal out.<br>
-  sys::PrintStackTraceOnErrorSignal();<br>
+  sys::PrintStackTraceOnErrorSignal(argv[0]);<br>
   PrettyStackTraceProgram X(argc, argv);<br>
<br>
   llvm_shutdown_obj Y; // Call llvm_shutdown() on exit.<br>
<br>
Modified: llvm/trunk/tools/llvm-mc/llvm-mc.cpp<br>
URL: <a href="http://llvm.org/viewvc/llvm-project/llvm/trunk/tools/llvm-mc/llvm-mc.cpp?rev=272232&r1=272231&r2=272232&view=diff" rel="noreferrer" target="_blank">http://llvm.org/viewvc/llvm-project/llvm/trunk/tools/llvm-mc/llvm-mc.cpp?rev=272232&r1=272231&r2=272232&view=diff</a><br>
==============================================================================<br>
--- llvm/trunk/tools/llvm-mc/llvm-mc.cpp (original)<br>
+++ llvm/trunk/tools/llvm-mc/llvm-mc.cpp Wed Jun  8 19:53:21 2016<br>
@@ -369,7 +369,7 @@ static int AssembleInput(const char *Pro<br>
<br>
 int main(int argc, char **argv) {<br>
   // Print a stack trace if we signal out.<br>
-  sys::PrintStackTraceOnErrorSignal();<br>
+  sys::PrintStackTraceOnErrorSignal(argv[0]);<br>
   PrettyStackTraceProgram X(argc, argv);<br>
   llvm_shutdown_obj Y;  // Call llvm_shutdown() on exit.<br>
<br>
<br>
Modified: llvm/trunk/tools/llvm-mcmarkup/llvm-mcmarkup.cpp<br>
URL: <a href="http://llvm.org/viewvc/llvm-project/llvm/trunk/tools/llvm-mcmarkup/llvm-mcmarkup.cpp?rev=272232&r1=272231&r2=272232&view=diff" rel="noreferrer" target="_blank">http://llvm.org/viewvc/llvm-project/llvm/trunk/tools/llvm-mcmarkup/llvm-mcmarkup.cpp?rev=272232&r1=272231&r2=272232&view=diff</a><br>
==============================================================================<br>
--- llvm/trunk/tools/llvm-mcmarkup/llvm-mcmarkup.cpp (original)<br>
+++ llvm/trunk/tools/llvm-mcmarkup/llvm-mcmarkup.cpp Wed Jun  8 19:53:21 2016<br>
@@ -208,7 +208,7 @@ static void parseMCMarkup(StringRef File<br>
<br>
 int main(int argc, char **argv) {<br>
   // Print a stack trace if we signal out.<br>
-  sys::PrintStackTraceOnErrorSignal();<br>
+  sys::PrintStackTraceOnErrorSignal(argv[0]);<br>
   PrettyStackTraceProgram X(argc, argv);<br>
<br>
   llvm_shutdown_obj Y;  // Call llvm_shutdown() on exit.<br>
<br>
Modified: llvm/trunk/tools/llvm-nm/llvm-nm.cpp<br>
URL: <a href="http://llvm.org/viewvc/llvm-project/llvm/trunk/tools/llvm-nm/llvm-nm.cpp?rev=272232&r1=272231&r2=272232&view=diff" rel="noreferrer" target="_blank">http://llvm.org/viewvc/llvm-project/llvm/trunk/tools/llvm-nm/llvm-nm.cpp?rev=272232&r1=272231&r2=272232&view=diff</a><br>
==============================================================================<br>
--- llvm/trunk/tools/llvm-nm/llvm-nm.cpp (original)<br>
+++ llvm/trunk/tools/llvm-nm/llvm-nm.cpp Wed Jun  8 19:53:21 2016<br>
@@ -1347,7 +1347,7 @@ static void dumpSymbolNamesFromFile(std:<br>
<br>
 int main(int argc, char **argv) {<br>
   // Print a stack trace if we signal out.<br>
-  sys::PrintStackTraceOnErrorSignal();<br>
+  sys::PrintStackTraceOnErrorSignal(argv[0]);<br>
   PrettyStackTraceProgram X(argc, argv);<br>
<br>
   llvm_shutdown_obj Y; // Call llvm_shutdown() on exit.<br>
<br>
Modified: llvm/trunk/tools/llvm-objdump/llvm-objdump.cpp<br>
URL: <a href="http://llvm.org/viewvc/llvm-project/llvm/trunk/tools/llvm-objdump/llvm-objdump.cpp?rev=272232&r1=272231&r2=272232&view=diff" rel="noreferrer" target="_blank">http://llvm.org/viewvc/llvm-project/llvm/trunk/tools/llvm-objdump/llvm-objdump.cpp?rev=272232&r1=272231&r2=272232&view=diff</a><br>
==============================================================================<br>
--- llvm/trunk/tools/llvm-objdump/llvm-objdump.cpp (original)<br>
+++ llvm/trunk/tools/llvm-objdump/llvm-objdump.cpp Wed Jun  8 19:53:21 2016<br>
@@ -1736,7 +1736,7 @@ static void DumpInput(StringRef file) {<br>
<br>
 int main(int argc, char **argv) {<br>
   // Print a stack trace if we signal out.<br>
-  sys::PrintStackTraceOnErrorSignal();<br>
+  sys::PrintStackTraceOnErrorSignal(argv[0]);<br>
   PrettyStackTraceProgram X(argc, argv);<br>
   llvm_shutdown_obj Y;  // Call llvm_shutdown() on exit.<br>
<br>
<br>
Modified: llvm/trunk/tools/llvm-pdbdump/llvm-pdbdump.cpp<br>
URL: <a href="http://llvm.org/viewvc/llvm-project/llvm/trunk/tools/llvm-pdbdump/llvm-pdbdump.cpp?rev=272232&r1=272231&r2=272232&view=diff" rel="noreferrer" target="_blank">http://llvm.org/viewvc/llvm-project/llvm/trunk/tools/llvm-pdbdump/llvm-pdbdump.cpp?rev=272232&r1=272231&r2=272232&view=diff</a><br>
==============================================================================<br>
--- llvm/trunk/tools/llvm-pdbdump/llvm-pdbdump.cpp (original)<br>
+++ llvm/trunk/tools/llvm-pdbdump/llvm-pdbdump.cpp Wed Jun  8 19:53:21 2016<br>
@@ -433,7 +433,7 @@ static void dumpInput(StringRef Path) {<br>
<br>
 int main(int argc_, const char *argv_[]) {<br>
   // Print a stack trace if we signal out.<br>
-  sys::PrintStackTraceOnErrorSignal();<br>
+  sys::PrintStackTraceOnErrorSignal(argv_[0]);<br>
   PrettyStackTraceProgram X(argc_, argv_);<br>
<br>
   ExitOnErr.setBanner("llvm-pdbdump: ");<br>
<br>
Modified: llvm/trunk/tools/llvm-profdata/llvm-profdata.cpp<br>
URL: <a href="http://llvm.org/viewvc/llvm-project/llvm/trunk/tools/llvm-profdata/llvm-profdata.cpp?rev=272232&r1=272231&r2=272232&view=diff" rel="noreferrer" target="_blank">http://llvm.org/viewvc/llvm-project/llvm/trunk/tools/llvm-profdata/llvm-profdata.cpp?rev=272232&r1=272231&r2=272232&view=diff</a><br>
==============================================================================<br>
--- llvm/trunk/tools/llvm-profdata/llvm-profdata.cpp (original)<br>
+++ llvm/trunk/tools/llvm-profdata/llvm-profdata.cpp Wed Jun  8 19:53:21 2016<br>
@@ -518,7 +518,7 @@ static int show_main(int argc, const cha<br>
<br>
 int main(int argc, const char *argv[]) {<br>
   // Print a stack trace if we signal out.<br>
-  sys::PrintStackTraceOnErrorSignal();<br>
+  sys::PrintStackTraceOnErrorSignal(argv[0]);<br>
   PrettyStackTraceProgram X(argc, argv);<br>
   llvm_shutdown_obj Y; // Call llvm_shutdown() on exit.<br>
<br>
<br>
Modified: llvm/trunk/tools/llvm-readobj/llvm-readobj.cpp<br>
URL: <a href="http://llvm.org/viewvc/llvm-project/llvm/trunk/tools/llvm-readobj/llvm-readobj.cpp?rev=272232&r1=272231&r2=272232&view=diff" rel="noreferrer" target="_blank">http://llvm.org/viewvc/llvm-project/llvm/trunk/tools/llvm-readobj/llvm-readobj.cpp?rev=272232&r1=272231&r2=272232&view=diff</a><br>
==============================================================================<br>
--- llvm/trunk/tools/llvm-readobj/llvm-readobj.cpp (original)<br>
+++ llvm/trunk/tools/llvm-readobj/llvm-readobj.cpp Wed Jun  8 19:53:21 2016<br>
@@ -487,7 +487,7 @@ static void dumpInput(StringRef File) {<br>
 }<br>
<br>
 int main(int argc, const char *argv[]) {<br>
-  sys::PrintStackTraceOnErrorSignal();<br>
+  sys::PrintStackTraceOnErrorSignal(argv[0]);<br>
   PrettyStackTraceProgram X(argc, argv);<br>
   llvm_shutdown_obj Y;<br>
<br>
<br>
Modified: llvm/trunk/tools/llvm-rtdyld/llvm-rtdyld.cpp<br>
URL: <a href="http://llvm.org/viewvc/llvm-project/llvm/trunk/tools/llvm-rtdyld/llvm-rtdyld.cpp?rev=272232&r1=272231&r2=272232&view=diff" rel="noreferrer" target="_blank">http://llvm.org/viewvc/llvm-project/llvm/trunk/tools/llvm-rtdyld/llvm-rtdyld.cpp?rev=272232&r1=272231&r2=272232&view=diff</a><br>
==============================================================================<br>
--- llvm/trunk/tools/llvm-rtdyld/llvm-rtdyld.cpp (original)<br>
+++ llvm/trunk/tools/llvm-rtdyld/llvm-rtdyld.cpp Wed Jun  8 19:53:21 2016<br>
@@ -726,7 +726,7 @@ static int linkAndVerify() {<br>
 }<br>
<br>
 int main(int argc, char **argv) {<br>
-  sys::PrintStackTraceOnErrorSignal();<br>
+  sys::PrintStackTraceOnErrorSignal(argv[0]);<br>
   PrettyStackTraceProgram X(argc, argv);<br>
<br>
   ProgramName = argv[0];<br>
<br>
Modified: llvm/trunk/tools/llvm-size/llvm-size.cpp<br>
URL: <a href="http://llvm.org/viewvc/llvm-project/llvm/trunk/tools/llvm-size/llvm-size.cpp?rev=272232&r1=272231&r2=272232&view=diff" rel="noreferrer" target="_blank">http://llvm.org/viewvc/llvm-project/llvm/trunk/tools/llvm-size/llvm-size.cpp?rev=272232&r1=272231&r2=272232&view=diff</a><br>
==============================================================================<br>
--- llvm/trunk/tools/llvm-size/llvm-size.cpp (original)<br>
+++ llvm/trunk/tools/llvm-size/llvm-size.cpp Wed Jun  8 19:53:21 2016<br>
@@ -806,7 +806,7 @@ static void printFileSectionSizes(String<br>
<br>
 int main(int argc, char **argv) {<br>
   // Print a stack trace if we signal out.<br>
-  sys::PrintStackTraceOnErrorSignal();<br>
+  sys::PrintStackTraceOnErrorSignal(argv[0]);<br>
   PrettyStackTraceProgram X(argc, argv);<br>
<br>
   llvm_shutdown_obj Y; // Call llvm_shutdown() on exit.<br>
<br>
Modified: llvm/trunk/tools/llvm-symbolizer/llvm-symbolizer.cpp<br>
URL: <a href="http://llvm.org/viewvc/llvm-project/llvm/trunk/tools/llvm-symbolizer/llvm-symbolizer.cpp?rev=272232&r1=272231&r2=272232&view=diff" rel="noreferrer" target="_blank">http://llvm.org/viewvc/llvm-project/llvm/trunk/tools/llvm-symbolizer/llvm-symbolizer.cpp?rev=272232&r1=272231&r2=272232&view=diff</a><br>
==============================================================================<br>
--- llvm/trunk/tools/llvm-symbolizer/llvm-symbolizer.cpp (original)<br>
+++ llvm/trunk/tools/llvm-symbolizer/llvm-symbolizer.cpp Wed Jun  8 19:53:21 2016<br>
@@ -140,7 +140,7 @@ static bool parseCommand(StringRef Input<br>
<br>
 int main(int argc, char **argv) {<br>
   // Print stack trace if we signal out.<br>
-  sys::PrintStackTraceOnErrorSignal();<br>
+  sys::PrintStackTraceOnErrorSignal(argv[0]);<br>
   PrettyStackTraceProgram X(argc, argv);<br>
   llvm_shutdown_obj Y; // Call llvm_shutdown() on exit.<br>
<br>
<br>
Modified: llvm/trunk/tools/obj2yaml/obj2yaml.cpp<br>
URL: <a href="http://llvm.org/viewvc/llvm-project/llvm/trunk/tools/obj2yaml/obj2yaml.cpp?rev=272232&r1=272231&r2=272232&view=diff" rel="noreferrer" target="_blank">http://llvm.org/viewvc/llvm-project/llvm/trunk/tools/obj2yaml/obj2yaml.cpp?rev=272232&r1=272231&r2=272232&view=diff</a><br>
==============================================================================<br>
--- llvm/trunk/tools/obj2yaml/obj2yaml.cpp (original)<br>
+++ llvm/trunk/tools/obj2yaml/obj2yaml.cpp Wed Jun  8 19:53:21 2016<br>
@@ -48,7 +48,7 @@ cl::opt<std::string> InputFilename(cl::P<br>
<br>
 int main(int argc, char *argv[]) {<br>
   cl::ParseCommandLineOptions(argc, argv);<br>
-  sys::PrintStackTraceOnErrorSignal();<br>
+  sys::PrintStackTraceOnErrorSignal(argv[0]);<br>
   PrettyStackTraceProgram X(argc, argv);<br>
   llvm_shutdown_obj Y; // Call llvm_shutdown() on exit.<br>
<br>
<br>
Modified: llvm/trunk/tools/opt/opt.cpp<br>
URL: <a href="http://llvm.org/viewvc/llvm-project/llvm/trunk/tools/opt/opt.cpp?rev=272232&r1=272231&r2=272232&view=diff" rel="noreferrer" target="_blank">http://llvm.org/viewvc/llvm-project/llvm/trunk/tools/opt/opt.cpp?rev=272232&r1=272231&r2=272232&view=diff</a><br>
==============================================================================<br>
--- llvm/trunk/tools/opt/opt.cpp (original)<br>
+++ llvm/trunk/tools/opt/opt.cpp Wed Jun  8 19:53:21 2016<br>
@@ -327,7 +327,7 @@ void initializePollyPasses(llvm::PassReg<br>
 // main for opt<br>
 //<br>
 int main(int argc, char **argv) {<br>
-  sys::PrintStackTraceOnErrorSignal();<br>
+  sys::PrintStackTraceOnErrorSignal(argv[0]);<br>
   llvm::PrettyStackTraceProgram X(argc, argv);<br>
<br>
   // Enable debug stream buffering.<br>
<br>
Modified: llvm/trunk/tools/sancov/sancov.cc<br>
URL: <a href="http://llvm.org/viewvc/llvm-project/llvm/trunk/tools/sancov/sancov.cc?rev=272232&r1=272231&r2=272232&view=diff" rel="noreferrer" target="_blank">http://llvm.org/viewvc/llvm-project/llvm/trunk/tools/sancov/sancov.cc?rev=272232&r1=272231&r2=272232&view=diff</a><br>
==============================================================================<br>
--- llvm/trunk/tools/sancov/sancov.cc (original)<br>
+++ llvm/trunk/tools/sancov/sancov.cc Wed Jun  8 19:53:21 2016<br>
@@ -1197,7 +1197,7 @@ private:<br>
<br>
 int main(int argc, char **argv) {<br>
   // Print stack trace if we signal out.<br>
-  sys::PrintStackTraceOnErrorSignal();<br>
+  sys::PrintStackTraceOnErrorSignal(argv[0]);<br>
   PrettyStackTraceProgram X(argc, argv);<br>
   llvm_shutdown_obj Y; // Call llvm_shutdown() on exit.<br>
<br>
<br>
Modified: llvm/trunk/tools/verify-uselistorder/verify-uselistorder.cpp<br>
URL: <a href="http://llvm.org/viewvc/llvm-project/llvm/trunk/tools/verify-uselistorder/verify-uselistorder.cpp?rev=272232&r1=272231&r2=272232&view=diff" rel="noreferrer" target="_blank">http://llvm.org/viewvc/llvm-project/llvm/trunk/tools/verify-uselistorder/verify-uselistorder.cpp?rev=272232&r1=272231&r2=272232&view=diff</a><br>
==============================================================================<br>
--- llvm/trunk/tools/verify-uselistorder/verify-uselistorder.cpp (original)<br>
+++ llvm/trunk/tools/verify-uselistorder/verify-uselistorder.cpp Wed Jun  8 19:53:21 2016<br>
@@ -526,7 +526,7 @@ static void reverseUseLists(Module &M) {<br>
 }<br>
<br>
 int main(int argc, char **argv) {<br>
-  sys::PrintStackTraceOnErrorSignal();<br>
+  sys::PrintStackTraceOnErrorSignal(argv[0]);<br>
   llvm::PrettyStackTraceProgram X(argc, argv);<br>
<br>
   // Enable debug stream buffering.<br>
<br>
Modified: llvm/trunk/tools/yaml2obj/yaml2obj.cpp<br>
URL: <a href="http://llvm.org/viewvc/llvm-project/llvm/trunk/tools/yaml2obj/yaml2obj.cpp?rev=272232&r1=272231&r2=272232&view=diff" rel="noreferrer" target="_blank">http://llvm.org/viewvc/llvm-project/llvm/trunk/tools/yaml2obj/yaml2obj.cpp?rev=272232&r1=272231&r2=272232&view=diff</a><br>
==============================================================================<br>
--- llvm/trunk/tools/yaml2obj/yaml2obj.cpp (original)<br>
+++ llvm/trunk/tools/yaml2obj/yaml2obj.cpp Wed Jun  8 19:53:21 2016<br>
@@ -79,7 +79,7 @@ static int convertYAML(yaml::Input &YIn,<br>
<br>
 int main(int argc, char **argv) {<br>
   cl::ParseCommandLineOptions(argc, argv);<br>
-  sys::PrintStackTraceOnErrorSignal();<br>
+  sys::PrintStackTraceOnErrorSignal(argv[0]);<br>
   PrettyStackTraceProgram X(argc, argv);<br>
   llvm_shutdown_obj Y;  // Call llvm_shutdown() on exit.<br>
<br>
<br>
Modified: llvm/trunk/utils/FileCheck/FileCheck.cpp<br>
URL: <a href="http://llvm.org/viewvc/llvm-project/llvm/trunk/utils/FileCheck/FileCheck.cpp?rev=272232&r1=272231&r2=272232&view=diff" rel="noreferrer" target="_blank">http://llvm.org/viewvc/llvm-project/llvm/trunk/utils/FileCheck/FileCheck.cpp?rev=272232&r1=272231&r2=272232&view=diff</a><br>
==============================================================================<br>
--- llvm/trunk/utils/FileCheck/FileCheck.cpp (original)<br>
+++ llvm/trunk/utils/FileCheck/FileCheck.cpp Wed Jun  8 19:53:21 2016<br>
@@ -1306,7 +1306,7 @@ static void DumpCommandLine(int argc, ch<br>
 }<br>
<br>
 int main(int argc, char **argv) {<br>
-  sys::PrintStackTraceOnErrorSignal();<br>
+  sys::PrintStackTraceOnErrorSignal(argv[0]);<br>
   PrettyStackTraceProgram X(argc, argv);<br>
   cl::ParseCommandLineOptions(argc, argv);<br>
<br>
<br>
Modified: llvm/trunk/utils/KillTheDoctor/KillTheDoctor.cpp<br>
URL: <a href="http://llvm.org/viewvc/llvm-project/llvm/trunk/utils/KillTheDoctor/KillTheDoctor.cpp?rev=272232&r1=272231&r2=272232&view=diff" rel="noreferrer" target="_blank">http://llvm.org/viewvc/llvm-project/llvm/trunk/utils/KillTheDoctor/KillTheDoctor.cpp?rev=272232&r1=272231&r2=272232&view=diff</a><br>
==============================================================================<br>
--- llvm/trunk/utils/KillTheDoctor/KillTheDoctor.cpp (original)<br>
+++ llvm/trunk/utils/KillTheDoctor/KillTheDoctor.cpp Wed Jun  8 19:53:21 2016<br>
@@ -296,7 +296,7 @@ static StringRef ExceptionCodeToString(D<br>
<br>
 int main(int argc, char **argv) {<br>
   // Print a stack trace if we signal out.<br>
-  sys::PrintStackTraceOnErrorSignal();<br>
+  sys::PrintStackTraceOnErrorSignal(argv[0]);<br>
   PrettyStackTraceProgram X(argc, argv);<br>
   llvm_shutdown_obj Y;  // Call llvm_shutdown() on exit.<br>
<br>
<br>
Modified: llvm/trunk/utils/TableGen/TableGen.cpp<br>
URL: <a href="http://llvm.org/viewvc/llvm-project/llvm/trunk/utils/TableGen/TableGen.cpp?rev=272232&r1=272231&r2=272232&view=diff" rel="noreferrer" target="_blank">http://llvm.org/viewvc/llvm-project/llvm/trunk/utils/TableGen/TableGen.cpp?rev=272232&r1=272231&r2=272232&view=diff</a><br>
==============================================================================<br>
--- llvm/trunk/utils/TableGen/TableGen.cpp (original)<br>
+++ llvm/trunk/utils/TableGen/TableGen.cpp Wed Jun  8 19:53:21 2016<br>
@@ -179,7 +179,7 @@ bool LLVMTableGenMain(raw_ostream &OS, R<br>
 }<br>
<br>
 int main(int argc, char **argv) {<br>
-  sys::PrintStackTraceOnErrorSignal();<br>
+  sys::PrintStackTraceOnErrorSignal(argv[0]);<br>
   PrettyStackTraceProgram X(argc, argv);<br>
   cl::ParseCommandLineOptions(argc, argv);<br>
<br>
<br>
Modified: llvm/trunk/utils/unittest/UnitTestMain/TestMain.cpp<br>
URL: <a href="http://llvm.org/viewvc/llvm-project/llvm/trunk/utils/unittest/UnitTestMain/TestMain.cpp?rev=272232&r1=272231&r2=272232&view=diff" rel="noreferrer" target="_blank">http://llvm.org/viewvc/llvm-project/llvm/trunk/utils/unittest/UnitTestMain/TestMain.cpp?rev=272232&r1=272231&r2=272232&view=diff</a><br>
==============================================================================<br>
--- llvm/trunk/utils/unittest/UnitTestMain/TestMain.cpp (original)<br>
+++ llvm/trunk/utils/unittest/UnitTestMain/TestMain.cpp Wed Jun  8 19:53:21 2016<br>
@@ -22,7 +22,8 @@<br>
 const char *TestMainArgv0;<br>
<br>
 int main(int argc, char **argv) {<br>
-  llvm::sys::PrintStackTraceOnErrorSignal(true /* Disable crash reporting */);<br>
+  llvm::sys::PrintStackTraceOnErrorSignal(argv[0],<br>
+                                          true /* Disable crash reporting */);<br>
   testing::InitGoogleTest(&argc, argv);<br>
   llvm::cl::ParseCommandLineOptions(argc, argv);<br>
<br>
<br>
<br>
_______________________________________________<br>
llvm-commits mailing list<br>
<a href="mailto:llvm-commits@lists.llvm.org">llvm-commits@lists.llvm.org</a><br>
<a href="http://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-commits" rel="noreferrer" target="_blank">http://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-commits</a><br>
</blockquote></div><br></div>