From: Fangrui Song Date: Tue, 20 Aug 2019 12:49:15 +0000 (+0000) Subject: [llvm-readobj] Prepend argv[0] to error/warning messages X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=1931ad8cc9b62a4caf448a184a750fe45c441ae4;p=llvm [llvm-readobj] Prepend argv[0] to error/warning messages Summary: Currently, we report: error: ... Prepend argv[0] (tool name): llvm-readobj: error: ... This is consistent with most GNU binutils/clang/lld, and gives a bit more context in a long build log. Reviewed By: grimar, jhenderson, rupprecht Differential Revision: https://reviews.llvm.org/D66425 git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@369377 91177308-0d34-0410-b5e6-96231b3b80d8 --- diff --git a/test/tools/llvm-readobj/error-format.test b/test/tools/llvm-readobj/error-format.test new file mode 100644 index 00000000000..e0ead99aee2 --- /dev/null +++ b/test/tools/llvm-readobj/error-format.test @@ -0,0 +1,19 @@ +## This test shows that we include the tool name in error/warning messages. + +# RUN: not llvm-readelf %S/non-existent 2>&1 | FileCheck --check-prefix=ERR %s -DTOOL=readelf +# RUN: not llvm-readobj %S/non-existent 2>&1 | FileCheck --check-prefix=ERR %s -DTOOL=readobj + +# ERR: llvm-[[TOOL]]{{(\.exe)?}}: error: '{{.*}}': {{[Nn]}}o such file or directory + +# RUN: yaml2obj %s -o %t +# RUN: llvm-readelf -x 10 %t 2>&1 | FileCheck --check-prefix=WARN %s -DTOOL=readelf +# RUN: llvm-readobj -x 10 %t 2>&1 | FileCheck --check-prefix=WARN %s -DTOOL=readobj + +# WARN: llvm-[[TOOL]]{{(\.exe)?}}: warning: '{{.*}}': could not find section 10 + +--- !ELF +FileHeader: + Class: ELFCLASS64 + Data: ELFDATA2LSB + Type: ET_DYN + Machine: EM_RISCV diff --git a/tools/llvm-readobj/llvm-readobj.cpp b/tools/llvm-readobj/llvm-readobj.cpp index bc24b6a7033..4133226410c 100644 --- a/tools/llvm-readobj/llvm-readobj.cpp +++ b/tools/llvm-readobj/llvm-readobj.cpp @@ -373,6 +373,8 @@ namespace opts { 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 @@ LLVM_ATTRIBUTE_NORETURN static void error(Twine Msg) { // proper place. fouts().flush(); errs() << "\n"; - WithColor::error(errs()) << Msg << "\n"; + WithColor::error(errs(), ToolName) << Msg << "\n"; exit(1); } @@ -401,11 +403,11 @@ void reportWarning(Error Err, StringRef Input) { // 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 @@ static void registerReadelfAliases() { int main(int argc, const char *argv[]) { InitLLVM X(argc, argv); + ToolName = argv[0]; // Register the target printer for --version. cl::AddExtraVersionPrinter(TargetRegistry::printRegisteredTargetsForVersion);