diff --git a/llvm/lib/ExecutionEngine/JITLink/ELF_riscv.cpp b/llvm/lib/ExecutionEngine/JITLink/ELF_riscv.cpp --- a/llvm/lib/ExecutionEngine/JITLink/ELF_riscv.cpp +++ b/llvm/lib/ExecutionEngine/JITLink/ELF_riscv.cpp @@ -322,63 +322,52 @@ case R_RISCV_ADD8: { int64_t Value = (E.getTarget().getAddress() + - *(reinterpret_cast(FixupAddress.getValue())) + - E.getAddend()) + *(reinterpret_cast(FixupPtr)) + E.getAddend()) .getValue(); *FixupPtr = static_cast(Value); break; } case R_RISCV_ADD16: { int64_t Value = (E.getTarget().getAddress() + - support::endian::read16le(reinterpret_cast( - FixupAddress.getValue())) + - E.getAddend()) + support::endian::read16le(FixupPtr) + E.getAddend()) .getValue(); *(little16_t *)FixupPtr = static_cast(Value); break; } case R_RISCV_ADD32: { int64_t Value = (E.getTarget().getAddress() + - support::endian::read32le(reinterpret_cast( - FixupAddress.getValue())) + - E.getAddend()) + support::endian::read32le(FixupPtr) + E.getAddend()) .getValue(); *(little32_t *)FixupPtr = static_cast(Value); break; } case R_RISCV_ADD64: { int64_t Value = (E.getTarget().getAddress() + - support::endian::read64le(reinterpret_cast( - FixupAddress.getValue())) + - E.getAddend()) + support::endian::read64le(FixupPtr) + E.getAddend()) .getValue(); *(little64_t *)FixupPtr = static_cast(Value); break; } case R_RISCV_SUB8: { - int64_t Value = - *(reinterpret_cast(FixupAddress.getValue())) - - E.getTarget().getAddress().getValue() - E.getAddend(); + int64_t Value = *(reinterpret_cast(FixupPtr)) - + E.getTarget().getAddress().getValue() - E.getAddend(); *FixupPtr = static_cast(Value); break; } case R_RISCV_SUB16: { - int64_t Value = support::endian::read16le(reinterpret_cast( - FixupAddress.getValue())) - + int64_t Value = support::endian::read16le(FixupPtr) - E.getTarget().getAddress().getValue() - E.getAddend(); *(little16_t *)FixupPtr = static_cast(Value); break; } case R_RISCV_SUB32: { - int64_t Value = support::endian::read32le(reinterpret_cast( - FixupAddress.getValue())) - + int64_t Value = support::endian::read32le(FixupPtr) - E.getTarget().getAddress().getValue() - E.getAddend(); *(little32_t *)FixupPtr = static_cast(Value); break; } case R_RISCV_SUB64: { - int64_t Value = support::endian::read64le(reinterpret_cast( - FixupAddress.getValue())) - + int64_t Value = support::endian::read64le(FixupPtr) - E.getTarget().getAddress().getValue() - E.getAddend(); *(little64_t *)FixupPtr = static_cast(Value); break;