mirror of
https://github.com/capstone-engine/llvm-capstone.git
synced 2025-01-09 17:43:57 +00:00
Rename DynamicReloc::getAddend() to computeAddend(). NFC
Summary: Before the name of the function sounded like it was just a getter for the private class member Addend. However, it actually calculates the final value for the r_addend field in Elf_Rela that is used when writing the .rela.dyn section. I also added a comment to the UseSymVA member to explain how it interacts with computeAddend(). Differential Revision: https://reviews.llvm.org/D43161 llvm-svn: 325485
This commit is contained in:
parent
d3dd9cc869
commit
048e2508ad
@ -1184,7 +1184,7 @@ uint64_t DynamicReloc::getOffset() const {
|
|||||||
return InputSec->getOutputSection()->Addr + InputSec->getOffset(OffsetInSec);
|
return InputSec->getOutputSection()->Addr + InputSec->getOffset(OffsetInSec);
|
||||||
}
|
}
|
||||||
|
|
||||||
int64_t DynamicReloc::getAddend() const {
|
int64_t DynamicReloc::computeAddend() const {
|
||||||
if (UseSymVA)
|
if (UseSymVA)
|
||||||
return Sym->getVA(Addend);
|
return Sym->getVA(Addend);
|
||||||
return Addend;
|
return Addend;
|
||||||
@ -1239,7 +1239,7 @@ template <class ELFT>
|
|||||||
static void encodeDynamicReloc(typename ELFT::Rela *P,
|
static void encodeDynamicReloc(typename ELFT::Rela *P,
|
||||||
const DynamicReloc &Rel) {
|
const DynamicReloc &Rel) {
|
||||||
if (Config->IsRela)
|
if (Config->IsRela)
|
||||||
P->r_addend = Rel.getAddend();
|
P->r_addend = Rel.computeAddend();
|
||||||
P->r_offset = Rel.getOffset();
|
P->r_offset = Rel.getOffset();
|
||||||
if (Config->EMachine == EM_MIPS && Rel.getInputSec() == InX::MipsGot)
|
if (Config->EMachine == EM_MIPS && Rel.getInputSec() == InX::MipsGot)
|
||||||
// The MIPS GOT section contains dynamic relocations that correspond to TLS
|
// The MIPS GOT section contains dynamic relocations that correspond to TLS
|
||||||
|
@ -316,16 +316,24 @@ public:
|
|||||||
UseSymVA(UseSymVA), Addend(Addend) {}
|
UseSymVA(UseSymVA), Addend(Addend) {}
|
||||||
|
|
||||||
uint64_t getOffset() const;
|
uint64_t getOffset() const;
|
||||||
int64_t getAddend() const;
|
|
||||||
uint32_t getSymIndex() const;
|
uint32_t getSymIndex() const;
|
||||||
const InputSectionBase *getInputSec() const { return InputSec; }
|
const InputSectionBase *getInputSec() const { return InputSec; }
|
||||||
|
|
||||||
|
// Computes the addend of the dynamic relocation. Note that this is not the
|
||||||
|
// same as the Addend member variable as it also includes the symbol address
|
||||||
|
// if UseSymVA is true.
|
||||||
|
int64_t computeAddend() const;
|
||||||
|
|
||||||
RelType Type;
|
RelType Type;
|
||||||
|
|
||||||
private:
|
private:
|
||||||
Symbol *Sym;
|
Symbol *Sym;
|
||||||
const InputSectionBase *InputSec = nullptr;
|
const InputSectionBase *InputSec = nullptr;
|
||||||
uint64_t OffsetInSec;
|
uint64_t OffsetInSec;
|
||||||
|
// If this member is true, the dynamic relocation will not be against the
|
||||||
|
// symbol but will instead be a relative relocation that simply adds the
|
||||||
|
// load address. This means we need to write the symbol virtual address
|
||||||
|
// plus the original addend as the final relocation addend.
|
||||||
bool UseSymVA;
|
bool UseSymVA;
|
||||||
int64_t Addend;
|
int64_t Addend;
|
||||||
};
|
};
|
||||||
|
Loading…
Reference in New Issue
Block a user