From e98baf863126aa579e098e45280442dc6f7e8f59 Mon Sep 17 00:00:00 2001 From: Fangrui Song Date: Fri, 31 May 2019 10:35:45 +0000 Subject: [PATCH] [ELF] Delete GotEntrySize and GotPltEntrySize 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 --- lld/ELF/Arch/AArch64.cpp | 2 -- lld/ELF/Arch/AMDGPU.cpp | 1 - lld/ELF/Arch/ARM.cpp | 2 -- lld/ELF/Arch/Hexagon.cpp | 3 +-- lld/ELF/Arch/Mips.cpp | 2 -- lld/ELF/Arch/PPC64.cpp | 2 -- lld/ELF/Arch/SPARCV9.cpp | 1 - lld/ELF/Arch/X86.cpp | 2 -- lld/ELF/Arch/X86_64.cpp | 2 -- lld/ELF/Symbols.cpp | 12 +++++------- lld/ELF/SyntheticSections.cpp | 18 ++++++++---------- lld/ELF/Target.h | 2 -- 12 files changed, 14 insertions(+), 35 deletions(-) diff --git a/lld/ELF/Arch/AArch64.cpp b/lld/ELF/Arch/AArch64.cpp index 02630c3..3f35a4f 100644 --- a/lld/ELF/Arch/AArch64.cpp +++ b/lld/ELF/Arch/AArch64.cpp @@ -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; diff --git a/lld/ELF/Arch/AMDGPU.cpp b/lld/ELF/Arch/AMDGPU.cpp index 1798a29..8f434e2 100644 --- a/lld/ELF/Arch/AMDGPU.cpp +++ b/lld/ELF/Arch/AMDGPU.cpp @@ -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) { diff --git a/lld/ELF/Arch/ARM.cpp b/lld/ELF/Arch/ARM.cpp index fe3dc80..a43063c 100644 --- a/lld/ELF/Arch/ARM.cpp +++ b/lld/ELF/Arch/ARM.cpp @@ -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}; diff --git a/lld/ELF/Arch/Hexagon.cpp b/lld/ELF/Arch/Hexagon.cpp index 0ac48c8..f0a00b0 100644 --- a/lld/ELF/Arch/Hexagon.cpp +++ b/lld/ELF/Arch/Hexagon.cpp @@ -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; diff --git a/lld/ELF/Arch/Mips.cpp b/lld/ELF/Arch/Mips.cpp index e1a95ef..0f419a6 100644 --- a/lld/ELF/Arch/Mips.cpp +++ b/lld/ELF/Arch/Mips.cpp @@ -46,8 +46,6 @@ public: template MIPS::MIPS() { GotPltHeaderEntriesNum = 2; DefaultMaxPageSize = 65536; - GotEntrySize = sizeof(typename ELFT::uint); - GotPltEntrySize = sizeof(typename ELFT::uint); GotBaseSymInGotPlt = false; PltEntrySize = 16; PltHeaderSize = 32; diff --git a/lld/ELF/Arch/PPC64.cpp b/lld/ELF/Arch/PPC64.cpp index 8a1b4f8..ae0d63a 100644 --- a/lld/ELF/Arch/PPC64.cpp +++ b/lld/ELF/Arch/PPC64.cpp @@ -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; diff --git a/lld/ELF/Arch/SPARCV9.cpp b/lld/ELF/Arch/SPARCV9.cpp index 9be0696..44bc279 100644 --- a/lld/ELF/Arch/SPARCV9.cpp +++ b/lld/ELF/Arch/SPARCV9.cpp @@ -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; diff --git a/lld/ELF/Arch/X86.cpp b/lld/ELF/Arch/X86.cpp index 468ca20..ed748d8 100644 --- a/lld/ELF/Arch/X86.cpp +++ b/lld/ELF/Arch/X86.cpp @@ -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 diff --git a/lld/ELF/Arch/X86_64.cpp b/lld/ELF/Arch/X86_64.cpp index fdaf63b..5be9294 100644 --- a/lld/ELF/Arch/X86_64.cpp +++ b/lld/ELF/Arch/X86_64.cpp @@ -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 diff --git a/lld/ELF/Symbols.cpp b/lld/ELF/Symbols.cpp index 8246efc..231ba7c 100644 --- a/lld/ELF/Symbols.cpp +++ b/lld/ELF/Symbols.cpp @@ -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) @@ -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 { @@ -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 { diff --git a/lld/ELF/SyntheticSections.cpp b/lld/ELF/SyntheticSections.cpp index 672e0b2..9606eed 100644 --- a/lld/ELF/SyntheticSections.cpp +++ b/lld/ELF/SyntheticSections.cpp @@ -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 @@ -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) { @@ -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; @@ -1076,7 +1075,7 @@ 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()); @@ -1084,7 +1083,7 @@ void IgotPltSection::addEntry(Symbol &Sym) { } size_t IgotPltSection::getSize() const { - return Entries.size() * Target->GotPltEntrySize; + return Entries.size() * Config->Wordsize; } void IgotPltSection::writeTo(uint8_t *Buf) { @@ -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. @@ -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; } } diff --git a/lld/ELF/Target.h b/lld/ELF/Target.h index ca38a45..b6ccb2b 100644 --- a/lld/ELF/Target.h +++ b/lld/ELF/Target.h @@ -99,8 +99,6 @@ public: RelType TlsGotRel; RelType TlsModuleIndexRel; RelType TlsOffsetRel; - unsigned GotEntrySize = 0; - unsigned GotPltEntrySize = 0; unsigned PltEntrySize; unsigned PltHeaderSize; -- 2.7.4