diff options
author | Rui Ueyama <ruiu@google.com> | 2015-10-08 00:44:28 +0000 |
---|---|---|
committer | Rui Ueyama <ruiu@google.com> | 2015-10-08 00:44:28 +0000 |
commit | aca48ffb41e40dd9c45d545221b27812106cbb05 (patch) | |
tree | e9b65da2edfd424d90e1c6eab8e46aa37599d725 | |
parent | b7fca574937095fa7450f0c580bb9bf115952805 (diff) | |
download | bcm5719-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.cpp | 2 | ||||
-rw-r--r-- | lld/ELF/Symbols.cpp | 14 |
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); |