[lld] r296435 - Merge SymbolTableSection::add{Global, Local} into one function.
Rui Ueyama via llvm-commits
llvm-commits at lists.llvm.org
Mon Feb 27 20:20:16 PST 2017
Author: ruiu
Date: Mon Feb 27 22:20:16 2017
New Revision: 296435
URL: http://llvm.org/viewvc/llvm-project?rev=296435&view=rev
Log:
Merge SymbolTableSection::add{Global,Local} into one function.
Previously, these two functions put their symbols in different queues.
Now that the queues have been merged. So there's no point to keep two
separate functions.
Modified:
lld/trunk/ELF/SyntheticSections.cpp
lld/trunk/ELF/SyntheticSections.h
lld/trunk/ELF/Writer.cpp
Modified: lld/trunk/ELF/SyntheticSections.cpp
URL: http://llvm.org/viewvc/llvm-project/lld/trunk/ELF/SyntheticSections.cpp?rev=296435&r1=296434&r2=296435&view=diff
==============================================================================
--- lld/trunk/ELF/SyntheticSections.cpp (original)
+++ lld/trunk/ELF/SyntheticSections.cpp Mon Feb 27 22:20:16 2017
@@ -301,7 +301,7 @@ SymbolBody *elf::addSyntheticLocal(Strin
auto *S = make<DefinedRegular<ELFT>>(Name, /*IsLocal*/ true, STV_DEFAULT,
Type, Value, Size, Section, nullptr);
if (In<ELFT>::SymTab)
- In<ELFT>::SymTab->addLocal(S);
+ In<ELFT>::SymTab->addSymbol(S);
return S;
}
@@ -1341,13 +1341,12 @@ template <class ELFT> void SymbolTableSe
this->OutSec->Info = NumLocals + 1;
}
-template <class ELFT> void SymbolTableSection<ELFT>::addGlobal(SymbolBody *B) {
- Symbols.push_back({B, StrTabSec.addString(B->getName(), false)});
-}
+template <class ELFT> void SymbolTableSection<ELFT>::addSymbol(SymbolBody *B) {
+ // Adding a local symbol to a .dynsym is a bug.
+ assert(this->Type != SHT_DYNSYM || !B->isLocal());
-template <class ELFT> void SymbolTableSection<ELFT>::addLocal(SymbolBody *B) {
- assert(!StrTabSec.isDynamic());
- Symbols.push_back({B, StrTabSec.addString(B->getName())});
+ bool HashIt = B->isLocal();
+ Symbols.push_back({B, StrTabSec.addString(B->getName(), HashIt)});
}
template <class ELFT>
Modified: lld/trunk/ELF/SyntheticSections.h
URL: http://llvm.org/viewvc/llvm-project/lld/trunk/ELF/SyntheticSections.h?rev=296435&r1=296434&r2=296435&view=diff
==============================================================================
--- lld/trunk/ELF/SyntheticSections.h (original)
+++ lld/trunk/ELF/SyntheticSections.h Mon Feb 27 22:20:16 2017
@@ -417,8 +417,7 @@ public:
void finalizeContents() override;
void writeTo(uint8_t *Buf) override;
size_t getSize() const override { return getNumSymbols() * sizeof(Elf_Sym); }
- void addGlobal(SymbolBody *Body);
- void addLocal(SymbolBody *Body);
+ void addSymbol(SymbolBody *Body);
unsigned getNumSymbols() const { return Symbols.size() + 1; }
size_t getSymbolIndex(SymbolBody *Body);
Modified: lld/trunk/ELF/Writer.cpp
URL: http://llvm.org/viewvc/llvm-project/lld/trunk/ELF/Writer.cpp?rev=296435&r1=296434&r2=296435&view=diff
==============================================================================
--- lld/trunk/ELF/Writer.cpp (original)
+++ lld/trunk/ELF/Writer.cpp Mon Feb 27 22:20:16 2017
@@ -518,7 +518,7 @@ template <class ELFT> void Writer<ELFT>:
InputSectionBase *Sec = DR->Section;
if (!shouldKeepInSymtab<ELFT>(Sec, B->getName(), *B))
continue;
- In<ELFT>::SymTab->addLocal(B);
+ In<ELFT>::SymTab->addSymbol(B);
}
}
}
@@ -537,7 +537,7 @@ template <class ELFT> void Writer<ELFT>:
DefinedRegular<ELFT>("", /*IsLocal=*/true, /*StOther*/ 0, STT_SECTION,
/*Value*/ 0, /*Size*/ 0, IS, nullptr);
- In<ELFT>::SymTab->addLocal(B);
+ In<ELFT>::SymTab->addSymbol(B);
}
}
@@ -1104,10 +1104,10 @@ template <class ELFT> void Writer<ELFT>:
if (!includeInSymtab<ELFT>(*Body))
continue;
if (In<ELFT>::SymTab)
- In<ELFT>::SymTab->addGlobal(Body);
+ In<ELFT>::SymTab->addSymbol(Body);
if (In<ELFT>::DynSymTab && S->includeInDynsym()) {
- In<ELFT>::DynSymTab->addGlobal(Body);
+ In<ELFT>::DynSymTab->addSymbol(Body);
if (auto *SS = dyn_cast<SharedSymbol>(Body))
if (cast<SharedFile<ELFT>>(SS->File)->isNeeded())
In<ELFT>::VerNeed->addSymbol(SS);
More information about the llvm-commits
mailing list