From 32c2df87be28205eb87a12362b085917a2a58dc5 Mon Sep 17 00:00:00 2001 From: niluxv Date: Sun, 22 Aug 2021 17:48:31 +0200 Subject: [PATCH] Add support for the `volatile_set_memory` intrinsic Runtime behaviour and soundness requirements are identical to `write_bytes`. --- src/shims/intrinsics.rs | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/shims/intrinsics.rs b/src/shims/intrinsics.rs index 5a3a782382d..317bba85929 100644 --- a/src/shims/intrinsics.rs +++ b/src/shims/intrinsics.rs @@ -66,7 +66,7 @@ pub trait EvalContextExt<'mir, 'tcx: 'mir>: crate::MiriEvalContextExt<'mir, 'tcx this.copy_op(dest, &place.into())?; } - "write_bytes" => { + "write_bytes" | "volatile_set_memory" => { let &[ref ptr, ref val_byte, ref count] = check_arg_count(args)?; let ty = instance.substs.type_at(0); let ty_layout = this.layout_of(ty)?; @@ -74,7 +74,7 @@ pub trait EvalContextExt<'mir, 'tcx: 'mir>: crate::MiriEvalContextExt<'mir, 'tcx let ptr = this.read_pointer(ptr)?; let count = this.read_scalar(count)?.to_machine_usize(this)?; let byte_count = ty_layout.size.checked_mul(count, this).ok_or_else(|| { - err_ub_format!("overflow computing total size of `write_bytes`") + err_ub_format!("overflow computing total size of `{}`", intrinsic_name) })?; this.memory .write_bytes(ptr, iter::repeat(val_byte).take(byte_count.bytes() as usize))?;