Skip to content

Commit

Permalink
Rename DynamicReloc::getAddend() to computeAddend(). NFC
Browse files Browse the repository at this point in the history
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
  • Loading branch information
arichardson committed Feb 19, 2018
1 parent d3dd9cc commit 048e250
Show file tree
Hide file tree
Showing 2 changed files with 11 additions and 3 deletions.
4 changes: 2 additions & 2 deletions lld/ELF/SyntheticSections.cpp
Expand Up @@ -1184,7 +1184,7 @@ uint64_t DynamicReloc::getOffset() const {
return InputSec->getOutputSection()->Addr + InputSec->getOffset(OffsetInSec);
}

int64_t DynamicReloc::getAddend() const {
int64_t DynamicReloc::computeAddend() const {
if (UseSymVA)
return Sym->getVA(Addend);
return Addend;
Expand Down Expand Up @@ -1239,7 +1239,7 @@ template <class ELFT>
static void encodeDynamicReloc(typename ELFT::Rela *P,
const DynamicReloc &Rel) {
if (Config->IsRela)
P->r_addend = Rel.getAddend();
P->r_addend = Rel.computeAddend();
P->r_offset = Rel.getOffset();
if (Config->EMachine == EM_MIPS && Rel.getInputSec() == InX::MipsGot)
// The MIPS GOT section contains dynamic relocations that correspond to TLS
Expand Down
10 changes: 9 additions & 1 deletion lld/ELF/SyntheticSections.h
Expand Up @@ -316,16 +316,24 @@ class DynamicReloc {
UseSymVA(UseSymVA), Addend(Addend) {}

uint64_t getOffset() const;
int64_t getAddend() const;
uint32_t getSymIndex() const;
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;

private:
Symbol *Sym;
const InputSectionBase *InputSec = nullptr;
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;
int64_t Addend;
};
Expand Down

0 comments on commit 048e250

Please sign in to comment.