diff options
| -rw-r--r-- | lld/ELF/OutputSections.cpp | 13 | 
1 files changed, 3 insertions, 10 deletions
diff --git a/lld/ELF/OutputSections.cpp b/lld/ELF/OutputSections.cpp index 1f72e123cd3..d237f33033c 100644 --- a/lld/ELF/OutputSections.cpp +++ b/lld/ELF/OutputSections.cpp @@ -261,19 +261,12 @@ typename ELFFile<ELFT>::uintX_t DynamicReloc<ELFT>::getOffset() const {  template <class ELFT> void RelocationSection<ELFT>::writeTo(uint8_t *Buf) {    for (const DynamicReloc<ELFT> &Rel : Relocs) { -    auto *P = reinterpret_cast<Elf_Rel *>(Buf); +    auto *P = reinterpret_cast<Elf_Rela *>(Buf);      Buf += IsRela ? sizeof(Elf_Rela) : sizeof(Elf_Rel);      SymbolBody *Sym = Rel.Sym; -    if (IsRela) { -      uintX_t VA; -      if (Rel.UseSymVA) -        VA = Sym->getVA<ELFT>(Rel.Addend); -      else -        VA = Rel.Addend; -      reinterpret_cast<Elf_Rela *>(P)->r_addend = VA; -    } - +    if (IsRela) +      P->r_addend = Rel.UseSymVA ? Sym->getVA<ELFT>(Rel.Addend) : Rel.Addend;      P->r_offset = Rel.getOffset();      uint32_t SymIdx = (!Rel.UseSymVA && Sym) ? Sym->DynsymIndex : 0;      P->setSymbolAndType(SymIdx, Rel.Type, Config->Mips64EL);  | 

