Index: ELF/Symbols.cpp =================================================================== --- ELF/Symbols.cpp +++ ELF/Symbols.cpp @@ -144,12 +144,8 @@ } uint64_t Symbol::getPltVA() const { - if (this->IsInIplt) { - if (Config->ZRetpolineplt) - return In.Iplt->getVA() + Target->getPltEntryOffset(PltIndex); - return In.Iplt->getVA() + PltIndex * Target->PltEntrySize; - } - return In.Plt->getVA() + Target->getPltEntryOffset(PltIndex); + PltSection *Plt = IsInIplt ? In.Iplt : In.Plt; + return Plt->getVA() + Plt->HeaderSize + PltIndex * Target->PltEntrySize; } uint64_t Symbol::getPltOffset() const { Index: ELF/SyntheticSections.h =================================================================== --- ELF/SyntheticSections.h +++ ELF/SyntheticSections.h @@ -662,10 +662,11 @@ template void addEntry(Symbol &Sym); + size_t HeaderSize; + private: unsigned getPltRelocOff() const; std::vector> Entries; - size_t HeaderSize; bool IsIplt; };