[ELF] - Report valid binary filename when reporting error.
authorGeorge Rimar <grimar@accesssoftek.com>
Mon, 5 Feb 2018 09:47:24 +0000 (09:47 +0000)
committerGeorge Rimar <grimar@accesssoftek.com>
Mon, 5 Feb 2018 09:47:24 +0000 (09:47 +0000)
We did not report valid filename for duplicate symbol error when
symbol came from binary input file.
Patch fixes it.

Differential revision: https://reviews.llvm.org/D42635

llvm-svn: 324217

lld/ELF/InputFiles.cpp
lld/ELF/InputFiles.h
lld/test/ELF/duplicated-synthetic-sym.s

index 2326a7d..4edabc5 100644 (file)
@@ -1032,8 +1032,8 @@ static ELFKind getELFKind(MemoryBufferRef MB) {
 
 void BinaryFile::parse() {
   ArrayRef<uint8_t> Data = toArrayRef(MB.getBuffer());
-  auto *Section = make<InputSection>(nullptr, SHF_ALLOC | SHF_WRITE,
-                                     SHT_PROGBITS, 8, Data, ".data");
+  auto *Section = make<InputSection>(this, SHF_ALLOC | SHF_WRITE, SHT_PROGBITS,
+                                     8, Data, ".data");
   Sections.push_back(Section);
 
   // For each input file foo that is embedded to a result as a binary
index dda1de8..a2251a4 100644 (file)
@@ -90,8 +90,8 @@ public:
   // Returns object file symbols. It is a runtime error to call this
   // function on files of other types.
   ArrayRef<Symbol *> getSymbols() {
-    assert(FileKind == ObjKind || FileKind == BitcodeKind ||
-           FileKind == ArchiveKind);
+    assert(FileKind == BinaryKind || FileKind == ObjKind ||
+           FileKind == BitcodeKind || FileKind == ArchiveKind);
     return Symbols;
   }
 
index d9bc8bc..095f581 100644 (file)
@@ -9,7 +9,7 @@
 
 // CHECK:      duplicate symbol: _binary_file_bin_start
 // CHECK-NEXT: defined at {{.*}}.o:(.text+0x0)
-// CHECK-NEXT: defined at <internal>:(.data+0x0)
+// CHECK-NEXT: defined at file.bin:(.data+0x0)
 
 .globl  _binary_file_bin_start
 _binary_file_bin_start: