Index: COFF/Chunks.cpp =================================================================== --- COFF/Chunks.cpp +++ COFF/Chunks.cpp @@ -11,6 +11,7 @@ #include "InputFiles.h" #include "Symbols.h" #include "Writer.h" +#include "SymbolTable.h" #include "lld/Common/ErrorHandler.h" #include "llvm/ADT/Twine.h" #include "llvm/BinaryFormat/COFF.h" @@ -356,7 +357,8 @@ // with relocations against discarded comdat sections. Such sections // are left as is, with relocations untouched. if (!Config->MinGW) - error("relocation against symbol in discarded section: " + Name); + error("relocation against symbol in discarded section: " + Name + + getSymbolLocations(File, Rel.SymbolTableIndex)); continue; } // Get the output section of the symbol for this relocation. The output @@ -374,7 +376,7 @@ if (isCodeView() || isDWARF()) continue; error("relocation against symbol in discarded section: " + - Sym->getName()); + Sym->getName() + getSymbolLocations(File, Rel.SymbolTableIndex)); continue; } uint64_t S = Sym->getRVA(); Index: COFF/SymbolTable.h =================================================================== --- COFF/SymbolTable.h +++ COFF/SymbolTable.h @@ -123,6 +123,8 @@ extern SymbolTable *Symtab; +std::string getSymbolLocations(ObjFile *File, uint32_t SymIndex); + } // namespace coff } // namespace lld Index: COFF/SymbolTable.cpp =================================================================== --- COFF/SymbolTable.cpp +++ COFF/SymbolTable.cpp @@ -84,7 +84,7 @@ return Candidate; } -static std::string getSymbolLocations(ObjFile *File, uint32_t SymIndex) { +std::string lld::coff::getSymbolLocations(ObjFile *File, uint32_t SymIndex) { struct Location { Symbol *Sym; std::pair FileLine; Index: test/COFF/reloc-discarded.s =================================================================== --- test/COFF/reloc-discarded.s +++ test/COFF/reloc-discarded.s @@ -10,6 +10,7 @@ # RUN: not lld-link -entry:main -nodefaultlib %t1.obj %t2.obj -out:%t.exe -opt:noref 2>&1 | FileCheck %s # CHECK: error: relocation against symbol in discarded section: assoc_global +# CHECK: >>> referenced by {{.*}}reloc-discarded{{.*}}.obj:(main) .section .bss,"bw",discard,main_global .globl main_global