Index: lld/trunk/ELF/SymbolTable.cpp =================================================================== --- lld/trunk/ELF/SymbolTable.cpp +++ lld/trunk/ELF/SymbolTable.cpp @@ -410,20 +410,17 @@ return S; } -static void warnOrError(const Twine &Msg) { - if (Config->AllowMultipleDefinition) - warn(Msg); - else - error(Msg); -} - static void reportDuplicate(Symbol *Sym, InputFile *NewFile) { - warnOrError("duplicate symbol: " + toString(*Sym) + "\n>>> defined in " + - toString(Sym->File) + "\n>>> defined in " + toString(NewFile)); + if (!Config->AllowMultipleDefinition) + error("duplicate symbol: " + toString(*Sym) + "\n>>> defined in " + + toString(Sym->File) + "\n>>> defined in " + toString(NewFile)); } static void reportDuplicate(Symbol *Sym, InputFile *NewFile, InputSectionBase *ErrSec, uint64_t ErrOffset) { + if (Config->AllowMultipleDefinition) + return; + Defined *D = cast(Sym); if (!D->Section || !ErrSec) { reportDuplicate(Sym, NewFile); @@ -450,7 +447,7 @@ if (!Src2.empty()) Msg += Src2 + "\n>>> "; Msg += Obj2; - warnOrError(Msg); + error(Msg); } Symbol *SymbolTable::addRegular(StringRef Name, uint8_t StOther, uint8_t Type, Index: lld/trunk/test/ELF/allow-multiple-definition.s =================================================================== --- lld/trunk/test/ELF/allow-multiple-definition.s +++ lld/trunk/test/ELF/allow-multiple-definition.s @@ -4,13 +4,13 @@ # RUN: llvm-mc -filetype=obj -triple=x86_64-unknown-linux %p/Inputs/allow-multiple-definition.s -o %t2 # RUN: not ld.lld %t1 %t2 -o %t3 # RUN: not ld.lld --allow-multiple-definition --no-allow-multiple-definition %t1 %t2 -o %t3 -# RUN: ld.lld --allow-multiple-definition %t1 %t2 -o %t3 -# RUN: ld.lld --allow-multiple-definition %t2 %t1 -o %t4 +# RUN: ld.lld --allow-multiple-definition --fatal-warnings %t1 %t2 -o %t3 +# RUN: ld.lld --allow-multiple-definition --fatal-warnings %t2 %t1 -o %t4 # RUN: llvm-objdump -d %t3 | FileCheck %s # RUN: llvm-objdump -d %t4 | FileCheck -check-prefix=REVERT %s -# RUN: ld.lld -z muldefs %t1 %t2 -o %t3 -# RUN: ld.lld -z muldefs %t2 %t1 -o %t4 +# RUN: ld.lld -z muldefs --fatal-warnings %t1 %t2 -o %t3 +# RUN: ld.lld -z muldefs --fatal-warnings %t2 %t1 -o %t4 # RUN: llvm-objdump -d %t3 | FileCheck %s # RUN: llvm-objdump -d %t4 | FileCheck -check-prefix=REVERT %s