Index: lld/trunk/ELF/Arch/AArch64.cpp =================================================================== --- lld/trunk/ELF/Arch/AArch64.cpp +++ lld/trunk/ELF/Arch/AArch64.cpp @@ -61,8 +61,6 @@ PltRel = R_AARCH64_JUMP_SLOT; TlsDescRel = R_AARCH64_TLSDESC; TlsGotRel = R_AARCH64_TLS_TPREL64; - GotEntrySize = 8; - GotPltEntrySize = 8; PltEntrySize = 16; PltHeaderSize = 32; DefaultMaxPageSize = 65536; Index: lld/trunk/ELF/Arch/AMDGPU.cpp =================================================================== --- lld/trunk/ELF/Arch/AMDGPU.cpp +++ lld/trunk/ELF/Arch/AMDGPU.cpp @@ -35,7 +35,6 @@ RelativeRel = R_AMDGPU_RELATIVE64; GotRel = R_AMDGPU_ABS64; NoneRel = R_AMDGPU_NONE; - GotEntrySize = 8; } static uint32_t getEFlags(InputFile *File) { Index: lld/trunk/ELF/Arch/ARM.cpp =================================================================== --- lld/trunk/ELF/Arch/ARM.cpp +++ lld/trunk/ELF/Arch/ARM.cpp @@ -56,8 +56,6 @@ 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}; Index: lld/trunk/ELF/Arch/Hexagon.cpp =================================================================== --- lld/trunk/ELF/Arch/Hexagon.cpp +++ lld/trunk/ELF/Arch/Hexagon.cpp @@ -40,11 +40,10 @@ 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; Index: lld/trunk/ELF/Arch/Mips.cpp =================================================================== --- lld/trunk/ELF/Arch/Mips.cpp +++ lld/trunk/ELF/Arch/Mips.cpp @@ -46,8 +46,6 @@ template MIPS::MIPS() { GotPltHeaderEntriesNum = 2; DefaultMaxPageSize = 65536; - GotEntrySize = sizeof(typename ELFT::uint); - GotPltEntrySize = sizeof(typename ELFT::uint); GotBaseSymInGotPlt = false; PltEntrySize = 16; PltHeaderSize = 32; Index: lld/trunk/ELF/Arch/PPC64.cpp =================================================================== --- lld/trunk/ELF/Arch/PPC64.cpp +++ lld/trunk/ELF/Arch/PPC64.cpp @@ -288,9 +288,7 @@ 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; Index: lld/trunk/ELF/Arch/SPARCV9.cpp =================================================================== --- lld/trunk/ELF/Arch/SPARCV9.cpp +++ lld/trunk/ELF/Arch/SPARCV9.cpp @@ -37,7 +37,6 @@ NoneRel = R_SPARC_NONE; PltRel = R_SPARC_JMP_SLOT; RelativeRel = R_SPARC_RELATIVE; - GotEntrySize = 8; PltEntrySize = 32; PltHeaderSize = 4 * PltEntrySize; Index: lld/trunk/ELF/Arch/X86.cpp =================================================================== --- lld/trunk/ELF/Arch/X86.cpp +++ lld/trunk/ELF/Arch/X86.cpp @@ -55,8 +55,6 @@ 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 Index: lld/trunk/ELF/Arch/X86_64.cpp =================================================================== --- lld/trunk/ELF/Arch/X86_64.cpp +++ lld/trunk/ELF/Arch/X86_64.cpp @@ -59,8 +59,6 @@ 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 Index: lld/trunk/ELF/Symbols.cpp =================================================================== --- lld/trunk/ELF/Symbols.cpp +++ lld/trunk/ELF/Symbols.cpp @@ -136,9 +136,7 @@ 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::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::getPPC64LongBranchTableVA() const { assert(PPC64BranchltIndex != 0xffff); return In.PPC64LongBranchTarget->getVA() + - PPC64BranchltIndex * Target->GotPltEntrySize; + PPC64BranchltIndex * Config->Wordsize; } uint64_t Symbol::getSize() const { Index: lld/trunk/ELF/SyntheticSections.cpp =================================================================== --- lld/trunk/ELF/SyntheticSections.cpp +++ lld/trunk/ELF/SyntheticSections.cpp @@ -542,8 +542,8 @@ } 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 @@ 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 @@ } 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 @@ 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 @@ } 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 @@ } 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 @@ // must be a local-call. write64(Buf, Sym->getVA() + getPPC64GlobalEntryToLocalEntryOffset(Sym->StOther)); - Buf += Target->GotPltEntrySize; + Buf += 8; } } Index: lld/trunk/ELF/Target.h =================================================================== --- lld/trunk/ELF/Target.h +++ lld/trunk/ELF/Target.h @@ -99,8 +99,6 @@ RelType TlsGotRel; RelType TlsModuleIndexRel; RelType TlsOffsetRel; - unsigned GotEntrySize = 0; - unsigned GotPltEntrySize = 0; unsigned PltEntrySize; unsigned PltHeaderSize;