Skip to content

Commit

Permalink
[ELF] Delete GotEntrySize and GotPltEntrySize
Browse files Browse the repository at this point in the history
GotEntrySize and GotPltEntrySize were added in D22288. Later, with
the introduction of wordsize() (then Config->Wordsize), they become
redundant, because there is no target that sets GotEntrySize or
GotPltEntrySize to a number different from Config->Wordsize.

Reviewed By: grimar, ruiu

Differential Revision: https://reviews.llvm.org/D62727

llvm-svn: 362220
  • Loading branch information
MaskRay committed May 31, 2019
1 parent 802c9b5 commit e98baf8
Show file tree
Hide file tree
Showing 12 changed files with 14 additions and 35 deletions.
2 changes: 0 additions & 2 deletions lld/ELF/Arch/AArch64.cpp
Expand Up @@ -61,8 +61,6 @@ AArch64::AArch64() {
PltRel = R_AARCH64_JUMP_SLOT;
TlsDescRel = R_AARCH64_TLSDESC;
TlsGotRel = R_AARCH64_TLS_TPREL64;
GotEntrySize = 8;
GotPltEntrySize = 8;
PltEntrySize = 16;
PltHeaderSize = 32;
DefaultMaxPageSize = 65536;
Expand Down
1 change: 0 additions & 1 deletion lld/ELF/Arch/AMDGPU.cpp
Expand Up @@ -35,7 +35,6 @@ AMDGPU::AMDGPU() {
RelativeRel = R_AMDGPU_RELATIVE64;
GotRel = R_AMDGPU_ABS64;
NoneRel = R_AMDGPU_NONE;
GotEntrySize = 8;
}

static uint32_t getEFlags(InputFile *File) {
Expand Down
2 changes: 0 additions & 2 deletions lld/ELF/Arch/ARM.cpp
Expand Up @@ -56,8 +56,6 @@ ARM::ARM() {
TlsModuleIndexRel = R_ARM_TLS_DTPMOD32;
TlsOffsetRel = R_ARM_TLS_DTPOFF32;
GotBaseSymInGotPlt = false;
GotEntrySize = 4;
GotPltEntrySize = 4;
PltEntrySize = 16;
PltHeaderSize = 32;
TrapInstr = {0xd4, 0xd4, 0xd4, 0xd4};
Expand Down
3 changes: 1 addition & 2 deletions lld/ELF/Arch/Hexagon.cpp
Expand Up @@ -40,11 +40,10 @@ Hexagon::Hexagon() {
PltRel = R_HEX_JMP_SLOT;
RelativeRel = R_HEX_RELATIVE;
GotRel = R_HEX_GLOB_DAT;
GotEntrySize = 4;

// The zero'th GOT entry is reserved for the address of _DYNAMIC. The
// next 3 are reserved for the dynamic loader.
GotPltHeaderEntriesNum = 4;
GotPltEntrySize = 4;

PltEntrySize = 16;
PltHeaderSize = 32;
Expand Down
2 changes: 0 additions & 2 deletions lld/ELF/Arch/Mips.cpp
Expand Up @@ -46,8 +46,6 @@ template <class ELFT> class MIPS final : public TargetInfo {
template <class ELFT> MIPS<ELFT>::MIPS() {
GotPltHeaderEntriesNum = 2;
DefaultMaxPageSize = 65536;
GotEntrySize = sizeof(typename ELFT::uint);
GotPltEntrySize = sizeof(typename ELFT::uint);
GotBaseSymInGotPlt = false;
PltEntrySize = 16;
PltHeaderSize = 32;
Expand Down
2 changes: 0 additions & 2 deletions lld/ELF/Arch/PPC64.cpp
Expand Up @@ -288,9 +288,7 @@ PPC64::PPC64() {
PltRel = R_PPC64_JMP_SLOT;
RelativeRel = R_PPC64_RELATIVE;
IRelativeRel = R_PPC64_IRELATIVE;
GotEntrySize = 8;
PltEntrySize = 4;
GotPltEntrySize = 8;
GotBaseSymInGotPlt = false;
GotHeaderEntriesNum = 1;
GotPltHeaderEntriesNum = 2;
Expand Down
1 change: 0 additions & 1 deletion lld/ELF/Arch/SPARCV9.cpp
Expand Up @@ -37,7 +37,6 @@ SPARCV9::SPARCV9() {
NoneRel = R_SPARC_NONE;
PltRel = R_SPARC_JMP_SLOT;
RelativeRel = R_SPARC_RELATIVE;
GotEntrySize = 8;
PltEntrySize = 32;
PltHeaderSize = 4 * PltEntrySize;

Expand Down
2 changes: 0 additions & 2 deletions lld/ELF/Arch/X86.cpp
Expand Up @@ -55,8 +55,6 @@ X86::X86() {
TlsGotRel = R_386_TLS_TPOFF;
TlsModuleIndexRel = R_386_TLS_DTPMOD32;
TlsOffsetRel = R_386_TLS_DTPOFF32;
GotEntrySize = 4;
GotPltEntrySize = 4;
PltEntrySize = 16;
PltHeaderSize = 16;
TrapInstr = {0xcc, 0xcc, 0xcc, 0xcc}; // 0xcc = INT3
Expand Down
2 changes: 0 additions & 2 deletions lld/ELF/Arch/X86_64.cpp
Expand Up @@ -59,8 +59,6 @@ X86_64::X86_64() {
TlsGotRel = R_X86_64_TPOFF64;
TlsModuleIndexRel = R_X86_64_DTPMOD64;
TlsOffsetRel = R_X86_64_DTPOFF64;
GotEntrySize = 8;
GotPltEntrySize = 8;
PltEntrySize = 16;
PltHeaderSize = 16;
TrapInstr = {0xcc, 0xcc, 0xcc, 0xcc}; // 0xcc = INT3
Expand Down
12 changes: 5 additions & 7 deletions lld/ELF/Symbols.cpp
Expand Up @@ -136,9 +136,7 @@ uint64_t Symbol::getGotVA() const {
return In.Got->getVA() + getGotOffset();
}

uint64_t Symbol::getGotOffset() const {
return GotIndex * Target->GotEntrySize;
}
uint64_t Symbol::getGotOffset() const { return GotIndex * Config->Wordsize; }

uint64_t Symbol::getGotPltVA() const {
if (IsInIplt)
Expand All @@ -148,13 +146,13 @@ uint64_t Symbol::getGotPltVA() const {

uint64_t Symbol::getGotPltOffset() const {
if (IsInIplt)
return PltIndex * Target->GotPltEntrySize;
return (PltIndex + Target->GotPltHeaderEntriesNum) * Target->GotPltEntrySize;
return PltIndex * Config->Wordsize;
return (PltIndex + Target->GotPltHeaderEntriesNum) * Config->Wordsize;
}

uint64_t Symbol::getPPC64LongBranchOffset() const {
assert(PPC64BranchltIndex != 0xffff);
return PPC64BranchltIndex * Target->GotPltEntrySize;
return PPC64BranchltIndex * Config->Wordsize;
}

uint64_t Symbol::getPltVA() const {
Expand All @@ -172,7 +170,7 @@ uint64_t Symbol::getPltVA() const {
uint64_t Symbol::getPPC64LongBranchTableVA() const {
assert(PPC64BranchltIndex != 0xffff);
return In.PPC64LongBranchTarget->getVA() +
PPC64BranchltIndex * Target->GotPltEntrySize;
PPC64BranchltIndex * Config->Wordsize;
}

uint64_t Symbol::getSize() const {
Expand Down
18 changes: 8 additions & 10 deletions lld/ELF/SyntheticSections.cpp
Expand Up @@ -542,8 +542,8 @@ void EhFrameSection::writeTo(uint8_t *Buf) {
}

GotSection::GotSection()
: SyntheticSection(SHF_ALLOC | SHF_WRITE, SHT_PROGBITS,
Target->GotEntrySize, ".got") {
: SyntheticSection(SHF_ALLOC | SHF_WRITE, SHT_PROGBITS, Config->Wordsize,
".got") {
// PPC64 saves the ElfSym::GlobalOffsetTable .TOC. as the first entry in the
// .got. If there are no references to .TOC. in the symbol table,
// ElfSym::GlobalOffsetTable will not be defined and we won't need to save
Expand Down Expand Up @@ -1030,7 +1030,7 @@ void MipsGotSection::writeTo(uint8_t *Buf) {
GotPltSection::GotPltSection()
: SyntheticSection(SHF_ALLOC | SHF_WRITE,
Config->EMachine == EM_PPC64 ? SHT_NOBITS : SHT_PROGBITS,
Target->GotPltEntrySize,
Config->Wordsize,
Config->EMachine == EM_PPC64 ? ".plt" : ".got.plt") {}

void GotPltSection::addEntry(Symbol &Sym) {
Expand All @@ -1039,13 +1039,12 @@ void GotPltSection::addEntry(Symbol &Sym) {
}

size_t GotPltSection::getSize() const {
return (Target->GotPltHeaderEntriesNum + Entries.size()) *
Target->GotPltEntrySize;
return (Target->GotPltHeaderEntriesNum + Entries.size()) * Config->Wordsize;
}

void GotPltSection::writeTo(uint8_t *Buf) {
Target->writeGotPltHeader(Buf);
Buf += Target->GotPltHeaderEntriesNum * Target->GotPltEntrySize;
Buf += Target->GotPltHeaderEntriesNum * Config->Wordsize;
for (const Symbol *B : Entries) {
Target->writeGotPlt(Buf, *B);
Buf += Config->Wordsize;
Expand Down Expand Up @@ -1076,15 +1075,15 @@ static StringRef getIgotPltName() {
IgotPltSection::IgotPltSection()
: SyntheticSection(SHF_ALLOC | SHF_WRITE,
Config->EMachine == EM_PPC64 ? SHT_NOBITS : SHT_PROGBITS,
Target->GotPltEntrySize, getIgotPltName()) {}
Config->Wordsize, getIgotPltName()) {}

void IgotPltSection::addEntry(Symbol &Sym) {
assert(Sym.PltIndex == Entries.size());
Entries.push_back(&Sym);
}

size_t IgotPltSection::getSize() const {
return Entries.size() * Target->GotPltEntrySize;
return Entries.size() * Config->Wordsize;
}

void IgotPltSection::writeTo(uint8_t *Buf) {
Expand Down Expand Up @@ -3228,7 +3227,6 @@ size_t PPC64LongBranchTargetSection::getSize() const {
}

void PPC64LongBranchTargetSection::writeTo(uint8_t *Buf) {
assert(Target->GotPltEntrySize == 8);
// If linking non-pic we have the final addresses of the targets and they get
// written to the table directly. For pic the dynamic linker will allocate
// the section and fill it it.
Expand All @@ -3241,7 +3239,7 @@ void PPC64LongBranchTargetSection::writeTo(uint8_t *Buf) {
// must be a local-call.
write64(Buf,
Sym->getVA() + getPPC64GlobalEntryToLocalEntryOffset(Sym->StOther));
Buf += Target->GotPltEntrySize;
Buf += 8;
}
}

Expand Down
2 changes: 0 additions & 2 deletions lld/ELF/Target.h
Expand Up @@ -99,8 +99,6 @@ class TargetInfo {
RelType TlsGotRel;
RelType TlsModuleIndexRel;
RelType TlsOffsetRel;
unsigned GotEntrySize = 0;
unsigned GotPltEntrySize = 0;
unsigned PltEntrySize;
unsigned PltHeaderSize;

Expand Down

0 comments on commit e98baf8

Please sign in to comment.