diff options
Diffstat (limited to 'lld/lib/ReaderWriter/ELF/Mips/MipsRelocationHandler.cpp')
-rw-r--r-- | lld/lib/ReaderWriter/ELF/Mips/MipsRelocationHandler.cpp | 4 |
1 files changed, 3 insertions, 1 deletions
diff --git a/lld/lib/ReaderWriter/ELF/Mips/MipsRelocationHandler.cpp b/lld/lib/ReaderWriter/ELF/Mips/MipsRelocationHandler.cpp index fe1c2b6494e..96d664bdc00 100644 --- a/lld/lib/ReaderWriter/ELF/Mips/MipsRelocationHandler.cpp +++ b/lld/lib/ReaderWriter/ELF/Mips/MipsRelocationHandler.cpp @@ -117,6 +117,7 @@ static MipsRelocationParams getRelocationParams(uint32_t rType) { case R_MIPS_TLS_GD: case R_MIPS_TLS_LDM: case R_MIPS_TLS_GOTTPREL: + case R_MIPS_LITERAL: return {4, 0xffff, 0, false, signedCheck<16>}; case R_MIPS_GOT_HI16: case R_MIPS_GOT_LO16: @@ -455,7 +456,7 @@ static ErrorOr<int64_t> calculateRelocation(Reference::KindValue kind, return relocLo16(0, tgtAddr, addend, false, true); case R_MIPS_GPREL16: case R_MIPS_GPREL32: - return tgtAddr + addend - gpAddr; + case R_MIPS_LITERAL: case R_MICROMIPS_GPREL16: case R_MICROMIPS_GPREL7_S2: return tgtAddr + addend - gpAddr; @@ -634,6 +635,7 @@ Reference::Addend readMipsRelocAddend(Reference::KindValue kind, case R_MIPS_GPREL16: case R_MICROMIPS_GPREL16: case R_MIPS_PCLO16: + case R_MIPS_LITERAL: return llvm::SignExtend32<16>(res); case R_MICROMIPS_GPREL7_S2: return llvm::SignExtend32<9>(res); |