Changeset View
Changeset View
Standalone View
Standalone View
contrib/llvm/tools/lld/ELF/Symbols.cpp
Show First 20 Lines • Show All 115 Lines • ▼ Show 20 Lines | static uint64_t getSymVA(const Symbol &Sym, int64_t &Addend) { | ||||
llvm_unreachable("invalid symbol kind"); | llvm_unreachable("invalid symbol kind"); | ||||
} | } | ||||
uint64_t Symbol::getVA(int64_t Addend) const { | uint64_t Symbol::getVA(int64_t Addend) const { | ||||
uint64_t OutVA = getSymVA(*this, Addend); | uint64_t OutVA = getSymVA(*this, Addend); | ||||
return OutVA + Addend; | return OutVA + Addend; | ||||
} | } | ||||
uint64_t Symbol::getGotVA() const { return In.Got->getVA() + getGotOffset(); } | uint64_t Symbol::getGotVA() const { | ||||
if (GotInIgot) | |||||
return In.IgotPlt->getVA() + getGotPltOffset(); | |||||
return In.Got->getVA() + getGotOffset(); | |||||
} | |||||
uint64_t Symbol::getGotOffset() const { | uint64_t Symbol::getGotOffset() const { | ||||
return GotIndex * Target->GotEntrySize; | return GotIndex * Target->GotEntrySize; | ||||
} | } | ||||
uint64_t Symbol::getGotPltVA() const { | uint64_t Symbol::getGotPltVA() const { | ||||
if (this->IsInIgot) | if (IsInIplt) | ||||
return In.IgotPlt->getVA() + getGotPltOffset(); | return In.IgotPlt->getVA() + getGotPltOffset(); | ||||
return In.GotPlt->getVA() + getGotPltOffset(); | return In.GotPlt->getVA() + getGotPltOffset(); | ||||
} | } | ||||
uint64_t Symbol::getGotPltOffset() const { | uint64_t Symbol::getGotPltOffset() const { | ||||
if (IsInIgot) | if (IsInIplt) | ||||
return PltIndex * Target->GotPltEntrySize; | return PltIndex * Target->GotPltEntrySize; | ||||
return (PltIndex + Target->GotPltHeaderEntriesNum) * Target->GotPltEntrySize; | return (PltIndex + Target->GotPltHeaderEntriesNum) * Target->GotPltEntrySize; | ||||
} | } | ||||
uint64_t Symbol::getPPC64LongBranchOffset() const { | uint64_t Symbol::getPPC64LongBranchOffset() const { | ||||
assert(PPC64BranchltIndex != 0xffff); | assert(PPC64BranchltIndex != 0xffff); | ||||
return PPC64BranchltIndex * Target->GotPltEntrySize; | return PPC64BranchltIndex * Target->GotPltEntrySize; | ||||
} | } | ||||
▲ Show 20 Lines • Show All 160 Lines • Show Last 20 Lines |