Index: lld/trunk/ELF/InputFiles.cpp =================================================================== --- lld/trunk/ELF/InputFiles.cpp +++ lld/trunk/ELF/InputFiles.cpp @@ -773,12 +773,12 @@ unsigned char Endian; std::tie(Size, Endian) = getElfArchType(MB.getBuffer()); if (Endian != ELFDATA2LSB && Endian != ELFDATA2MSB) - fatal("invalid data encoding: " + MB.getBufferIdentifier()); + fatal(MB.getBufferIdentifier() + ": invalid data encoding"); size_t BufSize = MB.getBuffer().size(); if ((Size == ELFCLASS32 && BufSize < sizeof(Elf32_Ehdr)) || (Size == ELFCLASS64 && BufSize < sizeof(Elf64_Ehdr))) - fatal("file is too short"); + fatal(MB.getBufferIdentifier() + ": file is too short"); InputFile *Obj; if (Size == ELFCLASS32 && Endian == ELFDATA2LSB) @@ -790,7 +790,7 @@ else if (Size == ELFCLASS64 && Endian == ELFDATA2MSB) Obj = make>(MB); else - fatal("invalid file class: " + MB.getBufferIdentifier()); + fatal(MB.getBufferIdentifier() + ": invalid file class"); if (!Config->FirstElf) Config->FirstElf = Obj; Index: lld/trunk/ELF/InputSection.cpp =================================================================== --- lld/trunk/ELF/InputSection.cpp +++ lld/trunk/ELF/InputSection.cpp @@ -15,6 +15,7 @@ #include "LinkerScript.h" #include "Memory.h" #include "OutputSections.h" +#include "Relocations.h" #include "SyntheticSections.h" #include "Target.h" #include "Thunks.h" @@ -97,7 +98,7 @@ // Returns a string for an error message. template static std::string getName(SectionT *Sec) { - return (Sec->getFile()->getName() + "(" + Sec->Name + ")").str(); + return (Sec->getFile()->getName() + ":(" + Sec->Name + ")").str(); } template @@ -455,7 +456,7 @@ SymbolBody &Sym = this->File->getRelocTargetSym(Rel); if (Target->getRelExpr(Type, Sym) != R_ABS) { - error(getName(this) + " has non-ABS reloc"); + error(getLocation(*this, Offset) + ": has non-ABS reloc"); return; } Index: lld/trunk/test/ELF/invalid/invalid-elf.test =================================================================== --- lld/trunk/test/ELF/invalid/invalid-elf.test +++ lld/trunk/test/ELF/invalid/invalid-elf.test @@ -2,11 +2,11 @@ # RUN: not ld.lld %t %p/Inputs/data-encoding.a -o %t2 2>&1 | \ # RUN: FileCheck --check-prefix=INVALID-DATA-ENC %s -# INVALID-DATA-ENC: invalid data encoding: test.o +# INVALID-DATA-ENC: test.o: invalid data encoding # RUN: not ld.lld %t %p/Inputs/file-class.a -o %t2 2>&1 | \ # RUN: FileCheck --check-prefix=INVALID-FILE-CLASS %s -# INVALID-FILE-CLASS: invalid file class: test.o +# INVALID-FILE-CLASS: test.o: invalid file class # RUN: not ld.lld %p/Inputs/symtab-sh_info.elf -o %t2 2>&1 | \ # RUN: FileCheck --check-prefix=INVALID-SYMTAB-SHINFO %s Index: lld/trunk/test/ELF/merge-string-error.s =================================================================== --- lld/trunk/test/ELF/merge-string-error.s +++ lld/trunk/test/ELF/merge-string-error.s @@ -8,4 +8,4 @@ .data .long .rodata.str1.1 + 4 -// CHECK: merge-string-error.s.tmp.o(.rodata.str1.1): entry is past the end of the section +// CHECK: merge-string-error.s.tmp.o:(.rodata.str1.1): entry is past the end of the section Index: lld/trunk/test/ELF/non-abs-reloc.s =================================================================== --- lld/trunk/test/ELF/non-abs-reloc.s +++ lld/trunk/test/ELF/non-abs-reloc.s @@ -0,0 +1,11 @@ +// REQUIRES: x86 +// RUN: llvm-mc -filetype=obj -triple=x86_64-pc-linux %s -o %t.o +// RUN: not ld.lld %t.o -o %t.so -shared 2>&1 | FileCheck %s +// CHECK: {{.*}}:(.dummy+0x0): has non-ABS reloc + +.globl _start +_start: + nop + +.section .dummy + .long foo@gotpcrel Index: lld/trunk/test/ELF/relocation-past-merge-end.s =================================================================== --- lld/trunk/test/ELF/relocation-past-merge-end.s +++ lld/trunk/test/ELF/relocation-past-merge-end.s @@ -1,7 +1,7 @@ // REQUIRES: x86 // RUN: llvm-mc %s -o %t.o -filetype=obj -triple=x86_64-pc-linux // RUN: not ld.lld %t.o -o %t.so -shared 2>&1 | FileCheck %s -// CHECK: relocation-past-merge-end.s.tmp.o(.foo): entry is past the end of the section +// CHECK: relocation-past-merge-end.s.tmp.o:(.foo): entry is past the end of the section .data .long .foo + 10