[PATCH] D66425: [llvm-readobj] Prepend argv[0] to error messages

Fangrui Song via Phabricator via llvm-commits llvm-commits at lists.llvm.org
Mon Aug 19 09:21:24 PDT 2019


MaskRay created this revision.
MaskRay added reviewers: alexshap, grimar, jakehehrlich, jhenderson, rupprecht.
Herald added subscribers: llvm-commits, seiya.
Herald added a project: LLVM.

Currently, we report:

  error: ...

Prepend argv[0] (tool name):

  llvm-readobj: error: ...

This is consistent with most GNU binutils/clang/lld. It gives a bit more
context in a long build log.


Repository:
  rL LLVM

https://reviews.llvm.org/D66425

Files:
  test/tools/llvm-readobj/error-format.test
  tools/llvm-readobj/llvm-readobj.cpp


Index: tools/llvm-readobj/llvm-readobj.cpp
===================================================================
--- tools/llvm-readobj/llvm-readobj.cpp
+++ tools/llvm-readobj/llvm-readobj.cpp
@@ -373,6 +373,8 @@
       HelpResponse("\nPass @FILE as argument to read options from FILE.\n");
 } // namespace opts
 
+static StringRef ToolName;
+
 namespace llvm {
 
 LLVM_ATTRIBUTE_NORETURN static void error(Twine Msg) {
@@ -380,7 +382,7 @@
   // proper place.
   fouts().flush();
   errs() << "\n";
-  WithColor::error(errs()) << Msg << "\n";
+  WithColor::error(errs(), ToolName) << Msg << "\n";
   exit(1);
 }
 
@@ -401,11 +403,11 @@
   // Flush the standard output to print the warning at a
   // proper place.
   fouts().flush();
-  handleAllErrors(createFileError(Input, std::move(Err)),
-                  [&](const ErrorInfoBase &EI) {
-                    errs() << "\n";
-                    WithColor::warning(errs()) << EI.message() << "\n";
-                  });
+  handleAllErrors(
+      createFileError(Input, std::move(Err)), [&](const ErrorInfoBase &EI) {
+        errs() << "\n";
+        WithColor::warning(errs(), ToolName) << EI.message() << "\n";
+      });
 }
 
 LLVM_ATTRIBUTE_NORETURN void reportError(std::error_code EC, StringRef Input) {
@@ -703,6 +705,7 @@
 
 int main(int argc, const char *argv[]) {
   InitLLVM X(argc, argv);
+  ToolName = argv[0];
 
   // Register the target printer for --version.
   cl::AddExtraVersionPrinter(TargetRegistry::printRegisteredTargetsForVersion);
Index: test/tools/llvm-readobj/error-format.test
===================================================================
--- /dev/null
+++ test/tools/llvm-readobj/error-format.test
@@ -0,0 +1,7 @@
+## This test shows that we include the tool name in error messages.
+
+# RUN: not llvm-readelf %S/non-existent 2>&1 | FileCheck --check-prefix=READELF %s
+# RUN: not llvm-readobj %S/non-existent 2>&1 | FileCheck --check-prefix=READOBJ %s
+
+# READELF: llvm-readelf: error: '{{.*}}':
+# READOBJ: llvm-readobj: error: '{{.*}}':


-------------- next part --------------
A non-text attachment was scrubbed...
Name: D66425.215925.patch
Type: text/x-patch
Size: 2031 bytes
Desc: not available
URL: <http://lists.llvm.org/pipermail/llvm-commits/attachments/20190819/5255aae8/attachment.bin>


More information about the llvm-commits mailing list