diff --git a/llvm/lib/ExecutionEngine/RuntimeDyld/RuntimeDyldELF.cpp b/llvm/lib/ExecutionEngine/RuntimeDyld/RuntimeDyldELF.cpp --- a/llvm/lib/ExecutionEngine/RuntimeDyld/RuntimeDyldELF.cpp +++ b/llvm/lib/ExecutionEngine/RuntimeDyld/RuntimeDyldELF.cpp @@ -268,7 +268,8 @@ break; case ELF::R_X86_64_8: { Value += Addend; - assert((int64_t)Value <= INT8_MAX && (int64_t)Value >= INT8_MIN); + assert(((int64_t)Value <= INT8_MAX && (int64_t)Value >= INT8_MIN) || + (Value <= UINT8_MAX)); uint8_t TruncatedAddr = (Value & 0xFF); *Section.getAddressWithOffset(Offset) = TruncatedAddr; LLVM_DEBUG(dbgs() << "Writing " << format("%p", TruncatedAddr) << " at " @@ -277,7 +278,8 @@ } case ELF::R_X86_64_16: { Value += Addend; - assert((int64_t)Value <= INT16_MAX && (int64_t)Value >= INT16_MIN); + assert(((int64_t)Value <= INT16_MAX && (int64_t)Value >= INT16_MIN) || + (Value <= UINT16_MAX)); uint16_t TruncatedAddr = (Value & 0xFFFF); support::ulittle16_t::ref(Section.getAddressWithOffset(Offset)) = TruncatedAddr;