summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--lld/ELF/SymbolTable.cpp2
-rw-r--r--lld/ELF/Symbols.cpp9
-rw-r--r--lld/ELF/Symbols.h2
3 files changed, 4 insertions, 9 deletions
diff --git a/lld/ELF/SymbolTable.cpp b/lld/ELF/SymbolTable.cpp
index 5bda2870ac9..54f5f550529 100644
--- a/lld/ELF/SymbolTable.cpp
+++ b/lld/ELF/SymbolTable.cpp
@@ -240,7 +240,7 @@ template <class ELFT> void SymbolTable<ELFT>::resolve(SymbolBody *New) {
// compare() returns -1, 0, or 1 if the lhs symbol is less preferable,
// equivalent (conflicting), or more preferable, respectively.
- int Comp = Existing->compare<ELFT>(New);
+ int Comp = Existing->compare(New);
if (Comp == 0) {
std::string S = "duplicate symbol: " + conflictMsg(Existing, New);
if (Config->AllowMultipleDefinition)
diff --git a/lld/ELF/Symbols.cpp b/lld/ELF/Symbols.cpp
index 9136b90bca4..cdf99791ac5 100644
--- a/lld/ELF/Symbols.cpp
+++ b/lld/ELF/Symbols.cpp
@@ -184,7 +184,7 @@ static int compareCommons(DefinedCommon *A, DefinedCommon *B) {
// Returns 1, 0 or -1 if this symbol should take precedence
// over the Other, tie or lose, respectively.
-template <class ELFT> int SymbolBody::compare(SymbolBody *Other) {
+int SymbolBody::compare(SymbolBody *Other) {
assert(!isLazy() && !Other->isLazy());
std::tuple<bool, bool, bool> L(isDefined(), !isShared(), !isWeak());
std::tuple<bool, bool, bool> R(Other->isDefined(), !Other->isShared(),
@@ -192,7 +192,7 @@ template <class ELFT> int SymbolBody::compare(SymbolBody *Other) {
// Normalize
if (L > R)
- return -Other->compare<ELFT>(this);
+ return -Other->compare(this);
uint8_t V = getMinVisibility(getVisibility(), Other->getVisibility());
setVisibility(V);
@@ -347,11 +347,6 @@ template uint32_t SymbolBody::template getThunkVA<ELF32BE>() const;
template uint64_t SymbolBody::template getThunkVA<ELF64LE>() const;
template uint64_t SymbolBody::template getThunkVA<ELF64BE>() const;
-template int SymbolBody::compare<ELF32LE>(SymbolBody *Other);
-template int SymbolBody::compare<ELF32BE>(SymbolBody *Other);
-template int SymbolBody::compare<ELF64LE>(SymbolBody *Other);
-template int SymbolBody::compare<ELF64BE>(SymbolBody *Other);
-
template class elf::UndefinedElf<ELF32LE>;
template class elf::UndefinedElf<ELF32BE>;
template class elf::UndefinedElf<ELF64LE>;
diff --git a/lld/ELF/Symbols.h b/lld/ELF/Symbols.h
index 9edeb47bdf1..5327b8c0d61 100644
--- a/lld/ELF/Symbols.h
+++ b/lld/ELF/Symbols.h
@@ -121,7 +121,7 @@ public:
// Decides which symbol should "win" in the symbol table, this or
// the Other. Returns 1 if this wins, -1 if the Other wins, or 0 if
// they are duplicate (conflicting) symbols.
- template <class ELFT> int compare(SymbolBody *Other);
+ int compare(SymbolBody *Other);
protected:
SymbolBody(Kind K, StringRef Name, uint8_t Binding, uint8_t StOther,
OpenPOWER on IntegriCloud