summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--lld/ELF/SymbolTable.cpp3
-rw-r--r--lld/test/ELF/duplicate-internal.s11
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
OpenPOWER on IntegriCloud