diff options
| -rw-r--r-- | lld/ELF/InputSection.cpp | 5 | 
1 files changed, 2 insertions, 3 deletions
| diff --git a/lld/ELF/InputSection.cpp b/lld/ELF/InputSection.cpp index 6e73f6ff1d0..789b4e44968 100644 --- a/lld/ELF/InputSection.cpp +++ b/lld/ELF/InputSection.cpp @@ -315,7 +315,6 @@ static typename ELFT::uint getSymVA(uint32_t Type, typename ELFT::uint A,  template <class ELFT>  template <class RelTy>  void InputSection<ELFT>::relocateNonAlloc(uint8_t *Buf, ArrayRef<RelTy> Rels) { -  const unsigned Bits = sizeof(uintX_t) * 8;    for (const RelTy &Rel : Rels) {      uint32_t Type = Rel.getType(Config->Mips64EL);      uintX_t Offset = this->getOffset(Rel.r_offset); @@ -331,8 +330,8 @@ void InputSection<ELFT>::relocateNonAlloc(uint8_t *Buf, ArrayRef<RelTy> Rels) {      }      uintX_t AddrLoc = this->OutSec->getVA() + Offset; -    uint64_t SymVA = -        SignExtend64<Bits>(getSymVA<ELFT>(Type, Addend, AddrLoc, Sym, R_ABS)); +    uint64_t SymVA = SignExtend64<sizeof(uintX_t) * 8>( +        getSymVA<ELFT>(Type, Addend, AddrLoc, Sym, R_ABS));      Target->relocateOne(BufLoc, Type, SymVA);    }  } | 

