From fd71fbea0f5e9f13bf33b0b1a78f3e6d5897b542 Mon Sep 17 00:00:00 2001 From: Lzu Tao Date: Wed, 24 Jul 2019 07:30:41 +0700 Subject: [PATCH] build: Fix build after rust-lang/rust#60951 --- rust-version | 2 +- src/operator.rs | 7 ++++--- src/shims/foreign_items.rs | 3 ++- 3 files changed, 7 insertions(+), 5 deletions(-) diff --git a/rust-version b/rust-version index b247139d09..973a510598 100644 --- a/rust-version +++ b/rust-version @@ -1 +1 @@ -1301422a6c2e8916560b8cc2f0564f38d8858a75 +a7f28678bbf4e16893bb6a718e427504167a9494 diff --git a/src/operator.rs b/src/operator.rs index df60acc661..977d6dd56e 100644 --- a/src/operator.rs +++ b/src/operator.rs @@ -64,12 +64,12 @@ impl<'mir, 'tcx> EvalContextExt<'tcx> for super::MiriEvalContext<'mir, 'tcx> { assert!(right.layout.ty.is_integral()); let l_bits = self.force_bits(left.imm.to_scalar()?, left.layout.size)?; let r_bits = self.force_bits(right.imm.to_scalar()?, right.layout.size)?; - + let left = ImmTy::from_scalar(Scalar::from_uint(l_bits, left.layout.size), left.layout); let right = ImmTy::from_scalar(Scalar::from_uint(r_bits, left.layout.size), right.layout); return self.binary_op(bin_op, left, right); - } + } // Operations that support fat pointers match bin_op { @@ -391,11 +391,12 @@ impl<'mir, 'tcx> EvalContextExt<'tcx> for super::MiriEvalContext<'mir, 'tcx> { pointee_ty: Ty<'tcx>, offset: i64, ) -> InterpResult<'tcx, Scalar> { + use rustc::mir::interpret::InterpError::Panic; // FIXME: assuming here that type size is less than `i64::max_value()`. let pointee_size = self.layout_of(pointee_ty)?.size.bytes() as i64; let offset = offset .checked_mul(pointee_size) - .ok_or_else(|| InterpError::Overflow(mir::BinOp::Mul))?; + .ok_or_else(|| Panic(PanicMessage::Overflow(mir::BinOp::Mul)))?; // Now let's see what kind of pointer this is. let ptr = if offset == 0 { match ptr { diff --git a/src/shims/foreign_items.rs b/src/shims/foreign_items.rs index 1deaf521ca..bcfcda2fd0 100644 --- a/src/shims/foreign_items.rs +++ b/src/shims/foreign_items.rs @@ -128,6 +128,7 @@ pub trait EvalContextExt<'mir, 'tcx: 'mir>: crate::MiriEvalContextExt<'mir, 'tcx dest: Option>, ret: Option, ) -> InterpResult<'tcx> { + use rustc::mir::interpret::InterpError::Panic; let this = self.eval_context_mut(); let attrs = this.tcx.get_attrs(def_id); let link_name = match attr::first_attr_value_str_by_name(&attrs, sym::link_name) { @@ -167,7 +168,7 @@ pub trait EvalContextExt<'mir, 'tcx: 'mir>: crate::MiriEvalContextExt<'mir, 'tcx "calloc" => { let items = this.read_scalar(args[0])?.to_usize(this)?; let len = this.read_scalar(args[1])?.to_usize(this)?; - let size = items.checked_mul(len).ok_or_else(|| InterpError::Overflow(mir::BinOp::Mul))?; + let size = items.checked_mul(len).ok_or_else(|| Panic(PanicMessage::Overflow(mir::BinOp::Mul)))?; let res = this.malloc(size, /*zero_init:*/ true, MiriMemoryKind::C); this.write_scalar(res, dest)?; }