diff options
-rw-r--r-- | lld/ELF/SymbolTable.cpp | 3 | ||||
-rw-r--r-- | lld/test/ELF/duplicate-internal.s | 11 |
2 files changed, 13 insertions, 1 deletions
diff --git a/lld/ELF/SymbolTable.cpp b/lld/ELF/SymbolTable.cpp index f47035be9cc..6e4f55ac832 100644 --- a/lld/ELF/SymbolTable.cpp +++ b/lld/ELF/SymbolTable.cpp @@ -139,7 +139,8 @@ void SymbolTable<ELFT>::reportConflict(const Twine &Message, } std::string Msg = (Message + ": " + Old.getName() + " in " + - OldFile->getName() + " and " + NewFile->getName()) + (OldFile ? OldFile->getName() : "(internal)") + " and " + + (NewFile ? NewFile->getName() : "(internal)")) .str(); if (Warning) warning(Msg); diff --git a/lld/test/ELF/duplicate-internal.s b/lld/test/ELF/duplicate-internal.s new file mode 100644 index 00000000000..2395a6cae0d --- /dev/null +++ b/lld/test/ELF/duplicate-internal.s @@ -0,0 +1,11 @@ +# Should print an expected message in case of conflict with an internally generated symbol. + +# RUN: llvm-mc -filetype=obj -triple=mips-unknown-linux %s -o %t.o +# RUN: not ld.lld -shared %t.o -o %t.so 2>&1 | FileCheck %s + +# CHECK: duplicate symbol: _gp in (internal) and {{.*}} + +# REQUIRES: mips + + .globl _gp +_gp = 0 |