Include ARGV[0] in error messages.
authorRui Ueyama <ruiu@google.com>
Wed, 19 Oct 2016 20:05:43 +0000 (20:05 +0000)
committerRui Ueyama <ruiu@google.com>
Wed, 19 Oct 2016 20:05:43 +0000 (20:05 +0000)
This is what other linkers and clang driver do.

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

llvm-svn: 284634

lld/ELF/Driver.cpp
lld/ELF/Error.cpp
lld/ELF/Error.h
lld/test/ELF/basic.s
lld/test/ELF/copy-rel-corrupted.s
lld/test/ELF/entry.s
lld/test/ELF/linkerscript/diagnostic.s

index bbcd682..e1cfb74 100644 (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;
index 06aa281..6c9fb09 100644 (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);
 }
 
index 83392bd..6cb9548 100644 (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);
index c326dd1..809b0ae 100644 (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
index f714eab..3cdad7c 100644 (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
 
index 09cf19a..b29a623 100644 (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
 
index 7d2b57d..23b7f9b 100644 (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