summaryrefslogtreecommitdiffstats
path: root/lld/ELF/Writer.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'lld/ELF/Writer.cpp')
-rw-r--r--lld/ELF/Writer.cpp34
1 files changed, 17 insertions, 17 deletions
diff --git a/lld/ELF/Writer.cpp b/lld/ELF/Writer.cpp
index 81748d588bd..ba4247e01c8 100644
--- a/lld/ELF/Writer.cpp
+++ b/lld/ELF/Writer.cpp
@@ -118,7 +118,7 @@ StringRef elf::getOutputSectionName(StringRef Name) {
}
template <class ELFT> static bool needsInterpSection() {
- return !Symtab<ELFT>::X->getSharedFiles().empty() &&
+ return !SharedFile<ELFT>::Instances.empty() &&
!Config->DynamicLinker.empty() && !Script->ignoreInterpSection();
}
@@ -318,8 +318,8 @@ template <class ELFT> void Writer<ELFT>::createSyntheticSections() {
Add(InX::BssRelRo);
// Add MIPS-specific sections.
- bool HasDynSymTab = !Symtab<ELFT>::X->getSharedFiles().empty() ||
- Config->Pic || Config->ExportDynamic;
+ bool HasDynSymTab = !SharedFile<ELFT>::Instances.empty() || Config->Pic ||
+ Config->ExportDynamic;
if (Config->EMachine == EM_MIPS) {
if (!Config->Shared && HasDynSymTab) {
InX::MipsRldMap = make<MipsRldMapSection>();
@@ -471,7 +471,7 @@ static bool includeInSymtab(const SymbolBody &B) {
template <class ELFT> void Writer<ELFT>::copyLocalSymbols() {
if (!InX::SymTab)
return;
- for (elf::ObjectFile<ELFT> *F : Symtab<ELFT>::X->getObjectFiles()) {
+ for (elf::ObjectFile<ELFT> *F : ObjectFile<ELFT>::Instances) {
for (SymbolBody *B : F->getLocalSymbols()) {
if (!B->IsLocal)
fatal(toString(F) +
@@ -760,16 +760,16 @@ static Symbol *addRegular(StringRef Name, SectionBase *Sec, uint64_t Value,
uint8_t Binding = STB_WEAK) {
// The linker generated symbols are added as STB_WEAK to allow user defined
// ones to override them.
- return Symtab<ELFT>::X->addRegular(Name, StOther, STT_NOTYPE, Value,
- /*Size=*/0, Binding, Sec,
- /*File=*/nullptr);
+ return Symtab->addRegular<ELFT>(Name, StOther, STT_NOTYPE, Value,
+ /*Size=*/0, Binding, Sec,
+ /*File=*/nullptr);
}
template <class ELFT>
static DefinedRegular *
addOptionalRegular(StringRef Name, SectionBase *Sec, uint64_t Val,
uint8_t StOther = STV_HIDDEN, uint8_t Binding = STB_GLOBAL) {
- SymbolBody *S = Symtab<ELFT>::X->find(Name);
+ SymbolBody *S = Symtab->find(Name);
if (!S)
return nullptr;
if (S->isInCurrentDSO())
@@ -803,21 +803,21 @@ template <class ELFT> void Writer<ELFT>::addReservedSymbols() {
// to GOT. Default offset is 0x7ff0.
// See "Global Data Symbols" in Chapter 6 in the following document:
// ftp://www.linux-mips.org/pub/linux/mips/doc/ABI/mipsabi.pdf
- ElfSym::MipsGp = Symtab<ELFT>::X->addAbsolute("_gp", STV_HIDDEN, STB_LOCAL);
+ ElfSym::MipsGp = Symtab->addAbsolute<ELFT>("_gp", STV_HIDDEN, STB_LOCAL);
// On MIPS O32 ABI, _gp_disp is a magic symbol designates offset between
// start of function and 'gp' pointer into GOT.
- if (Symtab<ELFT>::X->find("_gp_disp"))
+ if (Symtab->find("_gp_disp"))
ElfSym::MipsGpDisp =
- Symtab<ELFT>::X->addAbsolute("_gp_disp", STV_HIDDEN, STB_LOCAL);
+ Symtab->addAbsolute<ELFT>("_gp_disp", STV_HIDDEN, STB_LOCAL);
// The __gnu_local_gp is a magic symbol equal to the current value of 'gp'
// pointer. This symbol is used in the code generated by .cpload pseudo-op
// in case of using -mno-shared option.
// https://sourceware.org/ml/binutils/2004-12/msg00094.html
- if (Symtab<ELFT>::X->find("__gnu_local_gp"))
+ if (Symtab->find("__gnu_local_gp"))
ElfSym::MipsLocalGp =
- Symtab<ELFT>::X->addAbsolute("__gnu_local_gp", STV_HIDDEN, STB_LOCAL);
+ Symtab->addAbsolute<ELFT>("__gnu_local_gp", STV_HIDDEN, STB_LOCAL);
}
// The _GLOBAL_OFFSET_TABLE_ symbol is defined by target convention to
@@ -833,7 +833,7 @@ template <class ELFT> void Writer<ELFT>::addReservedSymbols() {
// __tls_get_addr, so it's not defined anywhere. Create a hidden definition
// to avoid the undefined symbol error.
if (!InX::DynSymTab)
- Symtab<ELFT>::X->addIgnored("__tls_get_addr");
+ Symtab->addIgnored<ELFT>("__tls_get_addr");
// __ehdr_start is the location of ELF file headers. Note that we define
// this symbol unconditionally even when using a linker script, which
@@ -893,7 +893,7 @@ template <class ELFT> static void sortBySymbolsOrder() {
// Build a map from sections to their priorities.
DenseMap<SectionBase *, int> SectionOrder;
- for (elf::ObjectFile<ELFT> *File : Symtab<ELFT>::X->getObjectFiles()) {
+ for (elf::ObjectFile<ELFT> *File : ObjectFile<ELFT>::Instances) {
for (SymbolBody *Body : File->getSymbols()) {
auto *D = dyn_cast<DefinedRegular>(Body);
if (!D || !D->Section)
@@ -1224,7 +1224,7 @@ template <class ELFT> void Writer<ELFT>::finalizeSections() {
// Now that we have defined all possible global symbols including linker-
// synthesized ones. Visit all symbols to give the finishing touches.
- for (Symbol *S : Symtab<ELFT>::X->getSymbols()) {
+ for (Symbol *S : Symtab->getSymbols()) {
SymbolBody *Body = S->body();
if (!includeInSymtab(*Body))
@@ -1689,7 +1689,7 @@ template <class ELFT> void Writer<ELFT>::setPhdrs() {
template <class ELFT> uint64_t Writer<ELFT>::getEntryAddr() {
// Case 1, 2 or 3. As a special case, if the symbol is actually
// a number, we'll use that number as an address.
- if (SymbolBody *B = Symtab<ELFT>::X->find(Config->Entry))
+ if (SymbolBody *B = Symtab->find(Config->Entry))
return B->getVA();
uint64_t Addr;
if (to_integer(Config->Entry, Addr))
OpenPOWER on IntegriCloud