[lld] r320327 - Move RelaPlt and RelaIplt to InX. NFC.
Rafael Espindola via llvm-commits
llvm-commits at lists.llvm.org
Sun Dec 10 12:07:03 PST 2017
Author: rafael
Date: Sun Dec 10 12:07:03 2017
New Revision: 320327
URL: http://llvm.org/viewvc/llvm-project?rev=320327&view=rev
Log:
Move RelaPlt and RelaIplt to InX. NFC.
Modified:
lld/trunk/ELF/Relocations.cpp
lld/trunk/ELF/SyntheticSections.cpp
lld/trunk/ELF/SyntheticSections.h
lld/trunk/ELF/Writer.cpp
Modified: lld/trunk/ELF/Relocations.cpp
URL: http://llvm.org/viewvc/llvm-project/lld/trunk/ELF/Relocations.cpp?rev=320327&r1=320326&r2=320327&view=diff
==============================================================================
--- lld/trunk/ELF/Relocations.cpp (original)
+++ lld/trunk/ELF/Relocations.cpp Sun Dec 10 12:07:03 2017
@@ -803,7 +803,7 @@ private:
template <class ELFT, class GotPltSection>
static void addPltEntry(PltSection *Plt, GotPltSection *GotPlt,
- RelocationSection<ELFT> *Rel, RelType Type, Symbol &Sym,
+ RelocationBaseSection *Rel, RelType Type, Symbol &Sym,
bool UseSymVA) {
Plt->addEntry<ELFT>(Sym);
GotPlt->addEntry(Sym);
@@ -947,11 +947,11 @@ static void scanRelocs(InputSectionBase
// If a relocation needs PLT, we create PLT and GOTPLT slots for the symbol.
if (needsPlt(Expr) && !Sym.isInPlt()) {
if (Sym.isGnuIFunc() && !Preemptible)
- addPltEntry(InX::Iplt, InX::IgotPlt, In<ELFT>::RelaIplt,
- Target->IRelativeRel, Sym, true);
+ addPltEntry<ELFT>(InX::Iplt, InX::IgotPlt, InX::RelaIplt,
+ Target->IRelativeRel, Sym, true);
else
- addPltEntry(InX::Plt, InX::GotPlt, In<ELFT>::RelaPlt, Target->PltRel,
- Sym, !Preemptible);
+ addPltEntry<ELFT>(InX::Plt, InX::GotPlt, InX::RelaPlt, Target->PltRel,
+ Sym, !Preemptible);
}
// Create a GOT slot if a relocation needs GOT.
Modified: lld/trunk/ELF/SyntheticSections.cpp
URL: http://llvm.org/viewvc/llvm-project/lld/trunk/ELF/SyntheticSections.cpp?rev=320327&r1=320326&r2=320327&view=diff
==============================================================================
--- lld/trunk/ELF/SyntheticSections.cpp (original)
+++ lld/trunk/ELF/SyntheticSections.cpp Sun Dec 10 12:07:03 2017
@@ -1095,9 +1095,9 @@ template <class ELFT> void DynamicSectio
addInt(IsRela ? DT_RELACOUNT : DT_RELCOUNT, NumRelativeRels);
}
}
- if (In<ELFT>::RelaPlt->getParent() && !In<ELFT>::RelaPlt->empty()) {
- addInSec(DT_JMPREL, In<ELFT>::RelaPlt);
- addSize(DT_PLTRELSZ, In<ELFT>::RelaPlt->getParent());
+ if (InX::RelaPlt->getParent() && !InX::RelaPlt->empty()) {
+ addInSec(DT_JMPREL, InX::RelaPlt);
+ addSize(DT_PLTRELSZ, InX::RelaPlt->getParent());
switch (Config->EMachine) {
case EM_MIPS:
addInSec(DT_MIPS_PLTGOT, InX::GotPlt);
@@ -1880,12 +1880,13 @@ void PltSection::writeTo(uint8_t *Buf) {
template <class ELFT> void PltSection::addEntry(Symbol &Sym) {
Sym.PltIndex = Entries.size();
- RelocationSection<ELFT> *PltRelocSection = In<ELFT>::RelaPlt;
+ RelocationBaseSection *PltRelocSection = InX::RelaPlt;
if (HeaderSize == 0) {
- PltRelocSection = In<ELFT>::RelaIplt;
+ PltRelocSection = InX::RelaIplt;
Sym.IsInIplt = true;
}
- unsigned RelOff = PltRelocSection->getRelocOffset();
+ unsigned RelOff =
+ static_cast<RelocationSection<ELFT> *>(PltRelocSection)->getRelocOffset();
Entries.push_back(std::make_pair(&Sym, RelOff));
}
@@ -2634,6 +2635,8 @@ MipsRldMapSection *InX::MipsRldMap;
PltSection *InX::Plt;
PltSection *InX::Iplt;
RelocationBaseSection *InX::RelaDyn;
+RelocationBaseSection *InX::RelaPlt;
+RelocationBaseSection *InX::RelaIplt;
StringTableSection *InX::ShStrTab;
StringTableSection *InX::StrTab;
SymbolTableBaseSection *InX::SymTab;
Modified: lld/trunk/ELF/SyntheticSections.h
URL: http://llvm.org/viewvc/llvm-project/lld/trunk/ELF/SyntheticSections.h?rev=320327&r1=320326&r2=320327&view=diff
==============================================================================
--- lld/trunk/ELF/SyntheticSections.h (original)
+++ lld/trunk/ELF/SyntheticSections.h Sun Dec 10 12:07:03 2017
@@ -841,21 +841,19 @@ struct InX {
static PltSection *Plt;
static PltSection *Iplt;
static RelocationBaseSection *RelaDyn;
+ static RelocationBaseSection *RelaPlt;
+ static RelocationBaseSection *RelaIplt;
static StringTableSection *ShStrTab;
static StringTableSection *StrTab;
static SymbolTableBaseSection *SymTab;
};
template <class ELFT> struct In {
- static RelocationSection<ELFT> *RelaPlt;
- static RelocationSection<ELFT> *RelaIplt;
static VersionDefinitionSection<ELFT> *VerDef;
static VersionTableSection<ELFT> *VerSym;
static VersionNeedSection<ELFT> *VerNeed;
};
-template <class ELFT> RelocationSection<ELFT> *In<ELFT>::RelaPlt;
-template <class ELFT> RelocationSection<ELFT> *In<ELFT>::RelaIplt;
template <class ELFT> VersionDefinitionSection<ELFT> *In<ELFT>::VerDef;
template <class ELFT> VersionTableSection<ELFT> *In<ELFT>::VerSym;
template <class ELFT> VersionNeedSection<ELFT> *In<ELFT>::VerNeed;
Modified: lld/trunk/ELF/Writer.cpp
URL: http://llvm.org/viewvc/llvm-project/lld/trunk/ELF/Writer.cpp?rev=320327&r1=320326&r2=320327&view=diff
==============================================================================
--- lld/trunk/ELF/Writer.cpp (original)
+++ lld/trunk/ELF/Writer.cpp Sun Dec 10 12:07:03 2017
@@ -360,9 +360,9 @@ template <class ELFT> static void create
// We always need to add rel[a].plt to output if it has entries.
// Even for static linking it can contain R_[*]_IRELATIVE relocations.
- In<ELFT>::RelaPlt = make<RelocationSection<ELFT>>(
+ InX::RelaPlt = make<RelocationSection<ELFT>>(
Config->IsRela ? ".rela.plt" : ".rel.plt", false /*Sort*/);
- Add(In<ELFT>::RelaPlt);
+ Add(InX::RelaPlt);
// The RelaIplt immediately follows .rel.plt (.rel.dyn for ARM) to ensure
// that the IRelative relocations are processed last by the dynamic loader.
@@ -370,12 +370,12 @@ template <class ELFT> static void create
// packing is enabled because that would cause a section type mismatch.
// However, because the Android dynamic loader reads .rel.plt after .rel.dyn,
// we can get the desired behaviour by placing the iplt section in .rel.plt.
- In<ELFT>::RelaIplt = make<RelocationSection<ELFT>>(
+ InX::RelaIplt = make<RelocationSection<ELFT>>(
(Config->EMachine == EM_ARM && !Config->AndroidPackDynRelocs)
? ".rel.dyn"
- : In<ELFT>::RelaPlt->Name,
+ : InX::RelaPlt->Name,
false /*Sort*/);
- Add(In<ELFT>::RelaIplt);
+ Add(InX::RelaIplt);
InX::Plt = make<PltSection>(Target->PltHeaderSize);
Add(InX::Plt);
@@ -843,10 +843,10 @@ template <class ELFT> void Writer<ELFT>:
if (!Config->Static)
return;
StringRef S = Config->IsRela ? "__rela_iplt_start" : "__rel_iplt_start";
- addOptionalRegular<ELFT>(S, In<ELFT>::RelaIplt, 0, STV_HIDDEN, STB_WEAK);
+ addOptionalRegular<ELFT>(S, InX::RelaIplt, 0, STV_HIDDEN, STB_WEAK);
S = Config->IsRela ? "__rela_iplt_end" : "__rel_iplt_end";
- addOptionalRegular<ELFT>(S, In<ELFT>::RelaIplt, -1, STV_HIDDEN, STB_WEAK);
+ addOptionalRegular<ELFT>(S, InX::RelaIplt, -1, STV_HIDDEN, STB_WEAK);
}
template <class ELFT>
@@ -1344,12 +1344,12 @@ template <class ELFT> void Writer<ELFT>:
// Dynamic section must be the last one in this list and dynamic
// symbol table section (DynSymTab) must be the first one.
applySynthetic(
- {InX::DynSymTab, InX::Bss, InX::BssRelRo, InX::GnuHashTab,
- InX::HashTab, InX::SymTab, InX::ShStrTab, InX::StrTab,
- In<ELFT>::VerDef, InX::DynStrTab, InX::Got, InX::MipsGot,
- InX::IgotPlt, InX::GotPlt, InX::RelaDyn, In<ELFT>::RelaIplt,
- In<ELFT>::RelaPlt, InX::Plt, InX::Iplt, InX::EhFrameHdr,
- In<ELFT>::VerSym, In<ELFT>::VerNeed, InX::Dynamic},
+ {InX::DynSymTab, InX::Bss, InX::BssRelRo, InX::GnuHashTab,
+ InX::HashTab, InX::SymTab, InX::ShStrTab, InX::StrTab,
+ In<ELFT>::VerDef, InX::DynStrTab, InX::Got, InX::MipsGot,
+ InX::IgotPlt, InX::GotPlt, InX::RelaDyn, InX::RelaIplt,
+ InX::RelaPlt, InX::Plt, InX::Iplt, InX::EhFrameHdr,
+ In<ELFT>::VerSym, In<ELFT>::VerNeed, InX::Dynamic},
[](SyntheticSection *SS) { SS->finalizeContents(); });
if (!Script->HasSectionsCommand && !Config->Relocatable)
More information about the llvm-commits
mailing list