};
memcpy(Buf, PltData, sizeof(PltData));
- uint64_t Off = getPltEntryOffset(Index);
+ uint64_t Off = PltHeaderSize + PltEntrySize * Index;
relocateOne(Buf, R_SPARC_22, Off);
relocateOne(Buf + 4, R_SPARC_WDISP19, -(Off + 4 - PltEntrySize));
}
}
write32le(Buf + 7, RelOff);
- write32le(Buf + 12, -getPltEntryOffset(Index) - 16);
+ write32le(Buf + 12, -PltHeaderSize - PltEntrySize * Index - 16);
}
int64_t X86::getImplicitAddend(const uint8_t *Buf, RelType Type) const {
memcpy(Buf, Insn, sizeof(Insn));
uint32_t Ebx = In.GotPlt->getVA();
- unsigned Off = getPltEntryOffset(Index);
+ unsigned Off = PltHeaderSize + PltEntrySize * Index;
write32le(Buf + 3, GotPltEntryAddr - Ebx);
write32le(Buf + 8, -Off - 12 + 32);
write32le(Buf + 13, -Off - 17 + 18);
};
memcpy(Buf, Insn, sizeof(Insn));
- unsigned Off = getPltEntryOffset(Index);
+ unsigned Off = PltHeaderSize + PltEntrySize * Index;
write32le(Buf + 2, GotPltEntryAddr);
write32le(Buf + 7, -Off - 11 + 32);
write32le(Buf + 12, -Off - 16 + 17);
write32le(Buf + 2, GotPltEntryAddr - PltEntryAddr - 6);
write32le(Buf + 7, Index);
- write32le(Buf + 12, -getPltEntryOffset(Index) - 16);
+ write32le(Buf + 12, -this->PltHeaderSize - this->PltEntrySize * Index - 16);
}
template <class ELFT> RelType X86_64<ELFT>::getDynRel(RelType Type) const {
};
memcpy(Buf, Insn, sizeof(Insn));
- uint64_t Off = getPltEntryOffset(Index);
+ uint64_t Off = this->PltHeaderSize + this->PltEntrySize * Index;
write32le(Buf + 3, GotPltEntryAddr - PltEntryAddr - 7);
write32le(Buf + 8, -Off - 12 + 32);
memcpy(Buf, Insn, sizeof(Insn));
write32le(Buf + 3, GotPltEntryAddr - PltEntryAddr - 7);
- write32le(Buf + 8, -getPltEntryOffset(Index) - 12);
+ write32le(Buf + 8, -this->PltHeaderSize - this->PltEntrySize * Index - 12);
}
template <class ELFT> static TargetInfo *getTargetInfo() {
if (!Sym.isInPlt())
addPltEntry<ELFT>(In.Plt, In.GotPlt, In.RelaPlt, Target->PltRel, Sym);
if (!Sym.isDefined())
- replaceWithDefined(Sym, In.Plt, getPltEntryOffset(Sym.PltIndex), 0);
+ replaceWithDefined(
+ Sym, In.Plt,
+ Target->PltHeaderSize + Target->PltEntrySize * Sym.PltIndex, 0);
Sym.NeedsPltAddr = true;
Sec.Relocations.push_back({Expr, Type, Offset, Addend, &Sym});
return;
", " + Twine(Max).str() + "]" + Hint);
}
-inline unsigned getPltEntryOffset(unsigned Idx) {
- return Target->PltHeaderSize + Target->PltEntrySize * Idx;
-}
-
// Make sure that V can be represented as an N bit signed integer.
inline void checkInt(uint8_t *Loc, int64_t V, int N, RelType Type) {
if (V != llvm::SignExtend64(V, N))