Include ARGV[0] in error messages.

This is what other linkers and clang driver do.

Differential Revision: https://reviews.llvm.org/D25780

llvm-svn: 284634
This commit is contained in:
Rui Ueyama 2016-10-19 20:05:43 +00:00
parent f8d1d12fef
commit 22646a80f4
7 changed files with 13 additions and 10 deletions

View File

@ -41,6 +41,7 @@ LinkerDriver *elf::Driver;
bool elf::link(ArrayRef<const char *> Args, raw_ostream &Error) {
HasError = false;
ErrorOS = &Error;
Argv0 = Args[0];
Configuration C;
LinkerDriver D;

View File

@ -20,21 +20,22 @@ namespace lld {
bool elf::HasError;
raw_ostream *elf::ErrorOS;
StringRef elf::Argv0;
void elf::log(const Twine &Msg) {
if (Config->Verbose)
outs() << Msg << "\n";
outs() << Argv0 << ": " << Msg << "\n";
}
void elf::warn(const Twine &Msg) {
if (Config->FatalWarnings)
error(Msg);
else
*ErrorOS << "warning: " << Msg << "\n";
*ErrorOS << Argv0 << ": warning: " << Msg << "\n";
}
void elf::error(const Twine &Msg) {
*ErrorOS << "error: " << Msg << "\n";
*ErrorOS << Argv0 << ": error: " << Msg << "\n";
HasError = true;
}
@ -43,7 +44,7 @@ void elf::error(std::error_code EC, const Twine &Prefix) {
}
void elf::fatal(const Twine &Msg) {
*ErrorOS << "error: " << Msg << "\n";
*ErrorOS << Argv0 << ": error: " << Msg << "\n";
exit(1);
}

View File

@ -33,6 +33,7 @@ namespace elf {
extern bool HasError;
extern llvm::raw_ostream *ErrorOS;
extern llvm::StringRef Argv0;
void log(const Twine &Msg);
void warn(const Twine &Msg);

View File

@ -207,7 +207,7 @@ _start:
# RUN: not ld.lld -o %t2 2>&1 | \
# RUN: FileCheck --check-prefix=NO_INPUT %s
# NO_INPUT: no input files
# NO_INPUT: ld.lld{{.*}}: no input files
# RUN: not ld.lld %t.no.such.file -o %t2 2>&1 | \
# RUN: FileCheck --check-prefix=CANNOT_OPEN %s

View File

@ -1,7 +1,7 @@
// RUN: llvm-mc %s -o %t.o -filetype=obj -triple=x86_64-pc-linux
// RUN: llvm-mc %p/Inputs/copy-rel-corrupted.s -o %t2.o -filetype=obj -triple=x86_64-pc-linux
// RUN: ld.lld %t2.o -o %t2.so -shared
// RUN: not ld.lld %t.o %t2.so -o %t.exe 2>&1 | FileCheck %s --match-full-lines
// RUN: not ld.lld %t.o %t2.so -o %t.exe 2>&1 | FileCheck %s
// CHECK: error: cannot create a copy relocation for symbol x

View File

@ -2,9 +2,9 @@
# RUN: ld.lld -e foobar %t1 -o %t2 2>&1 | FileCheck -check-prefix=WARN %s
# RUN: llvm-readobj -file-headers %t2 | FileCheck -check-prefix=NOENTRY %s
# RUN: ld.lld %t1 -o %t2 2>&1 | FileCheck -check-prefix=WARN2 %s --match-full-lines
# RUN: ld.lld %t1 -o %t2 2>&1 | FileCheck -check-prefix=WARN2 %s
# RUN: ld.lld -shared -e foobar %t1 -o %t2 2>&1 | FileCheck -check-prefix=WARN --match-full-lines %s
# RUN: ld.lld -shared -e foobar %t1 -o %t2 2>&1 | FileCheck -check-prefix=WARN %s
# RUN: ld.lld -shared --fatal-warnings -e entry %t1 -o %t2
# RUN: ld.lld -shared --fatal-warnings %t1 -o %t2

View File

@ -52,7 +52,7 @@
# RUN: FileCheck -check-prefix=ERR6 %s < %t.log
# ERR6: line 1:
# ERR6-NEXT: UNKNOWN_TAG {
# RUN: grep '^error: ^' %t.log
# RUN: grep 'error: ^' %t.log
## One more check that text of lines and pointer to 'bad' token are working ok.
# RUN: echo "SECTIONS {" > %t.script
@ -63,4 +63,4 @@
# RUN: FileCheck -check-prefix=ERR7 %s < %t.log
# ERR7: line 4: malformed number: .temp
# ERR7-NEXT: boom .temp : { *(.temp) } }
# RUN: grep '^error: ^' %t.log
# RUN: grep 'error: ^' %t.log