summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorRui Ueyama <ruiu@google.com>2015-10-08 00:44:28 +0000
committerRui Ueyama <ruiu@google.com>2015-10-08 00:44:28 +0000
commitaca48ffb41e40dd9c45d545221b27812106cbb05 (patch)
treee9b65da2edfd424d90e1c6eab8e46aa37599d725
parentb7fca574937095fa7450f0c580bb9bf115952805 (diff)
downloadbcm5719-llvm-aca48ffb41e40dd9c45d545221b27812106cbb05.tar.gz
bcm5719-llvm-aca48ffb41e40dd9c45d545221b27812106cbb05.zip
ELF2: Inititalize other symbols only once as well.
llvm-svn: 249645
-rw-r--r--lld/ELF/SymbolTable.cpp2
-rw-r--r--lld/ELF/Symbols.cpp14
2 files changed, 10 insertions, 6 deletions
diff --git a/lld/ELF/SymbolTable.cpp b/lld/ELF/SymbolTable.cpp
index 705f27e9836..025b4e15d42 100644
--- a/lld/ELF/SymbolTable.cpp
+++ b/lld/ELF/SymbolTable.cpp
@@ -105,8 +105,6 @@ void SymbolTable::addSyntheticSym(StringRef Name, OutputSection<ELFT> &Section,
}
template <class ELFT> void SymbolTable::addIgnoredSym(StringRef Name) {
- DefinedAbsolute<ELFT>::IgnoreUndef.setBinding(STB_WEAK);
- DefinedAbsolute<ELFT>::IgnoreUndef.setVisibility(STV_HIDDEN);
auto Sym = new (Alloc)
DefinedAbsolute<ELFT>(Name, DefinedAbsolute<ELFT>::IgnoreUndef);
resolve<ELFT>(Sym);
diff --git a/lld/ELF/Symbols.cpp b/lld/ELF/Symbols.cpp
index b8620b16295..e92c046c1e5 100644
--- a/lld/ELF/Symbols.cpp
+++ b/lld/ELF/Symbols.cpp
@@ -86,11 +86,17 @@ std::unique_ptr<InputFile> Lazy::getMember() {
return createELFFile<ObjectFile>(MBRef);
}
+template <class ELFT> static void doInitSymbols() {
+ DefinedAbsolute<ELFT>::IgnoreUndef.setBinding(STB_WEAK);
+ DefinedAbsolute<ELFT>::IgnoreUndef.setVisibility(STV_HIDDEN);
+ Undefined<ELFT>::Optional.setVisibility(STV_HIDDEN);
+}
+
void lld::elf2::initSymbols() {
- Undefined<ELF32LE>::Optional.setVisibility(STV_HIDDEN);
- Undefined<ELF32BE>::Optional.setVisibility(STV_HIDDEN);
- Undefined<ELF64LE>::Optional.setVisibility(STV_HIDDEN);
- Undefined<ELF64BE>::Optional.setVisibility(STV_HIDDEN);
+ doInitSymbols<ELF32LE>();
+ doInitSymbols<ELF32BE>();
+ doInitSymbols<ELF64LE>();
+ doInitSymbols<ELF64BE>();
}
template int SymbolBody::compare<ELF32LE>(SymbolBody *Other);
OpenPOWER on IntegriCloud