From 0a3f460d6966da30bc0128ab89959e17cf64fb04 Mon Sep 17 00:00:00 2001 From: Adam Perry Date: Wed, 1 Jan 2020 14:57:10 -0800 Subject: [PATCH 1/3] Update panic machinery to match #[track_caller] changes. This gets miri's tests passing again with https://github.com/rust-lang/rust/pull/67137. --- src/machine.rs | 1 + src/shims/panic.rs | 5 +---- 2 files changed, 2 insertions(+), 4 deletions(-) diff --git a/src/machine.rs b/src/machine.rs index 37253a260d..502120d316 100644 --- a/src/machine.rs +++ b/src/machine.rs @@ -182,6 +182,7 @@ impl<'mir, 'tcx> Machine<'mir, 'tcx> for Evaluator<'tcx> { #[inline(always)] fn find_mir_or_eval_fn( ecx: &mut InterpCx<'mir, 'tcx, Self>, + _span: Span, instance: ty::Instance<'tcx>, args: &[OpTy<'tcx, Tag>], ret: Option<(PlaceTy<'tcx, Tag>, mir::BasicBlock)>, diff --git a/src/shims/panic.rs b/src/shims/panic.rs index f242f41f6f..8f082f45c9 100644 --- a/src/shims/panic.rs +++ b/src/shims/panic.rs @@ -187,15 +187,12 @@ pub trait EvalContextExt<'mir, 'tcx: 'mir>: crate::MiriEvalContextExt<'mir, 'tcx let msg = msg.description(); let msg = this.allocate_str(msg, MiriMemoryKind::Env.into()); - // Second arg: Caller location. - let location = this.alloc_caller_location_for_span(span); - // Call the lang item. let panic = this.tcx.lang_items().panic_fn().unwrap(); let panic = ty::Instance::mono(this.tcx.tcx, panic); this.call_function( panic, - &[msg.to_ref(), location.ptr.into()], + &[msg.to_ref()], None, StackPopCleanup::Goto { ret: None, unwind }, )?; From ebacb8ae4ee46e72791e115a4cdce1344a5db53b Mon Sep 17 00:00:00 2001 From: Yuki Okushi Date: Sun, 5 Jan 2020 17:53:45 +0900 Subject: [PATCH 2/3] Rustup --- rust-version | 2 +- src/eval.rs | 2 +- src/helpers.rs | 2 +- src/lib.rs | 1 + src/machine.rs | 3 ++- src/shims/foreign_items.rs | 4 ++-- src/shims/intrinsics.rs | 2 +- src/shims/panic.rs | 2 +- 8 files changed, 10 insertions(+), 8 deletions(-) diff --git a/rust-version b/rust-version index 71bc3b30f4..44bed6b73d 100644 --- a/rust-version +++ b/rust-version @@ -1 +1 @@ -0ec370670220b712b042ee09aab067ec7e5878d5 +093241deae70ba38413aff823b31c23731debf14 diff --git a/src/eval.rs b/src/eval.rs index 0cc302b967..1968111307 100644 --- a/src/eval.rs +++ b/src/eval.rs @@ -47,7 +47,7 @@ pub fn create_ecx<'mir, 'tcx: 'mir>( config: MiriConfig, ) -> InterpResult<'tcx, (InterpCx<'mir, 'tcx, Evaluator<'tcx>>, MPlaceTy<'tcx, Tag>)> { let mut ecx = InterpCx::new( - tcx.at(syntax::source_map::DUMMY_SP), + tcx.at(rustc_span::source_map::DUMMY_SP), ty::ParamEnv::reveal_all(), Evaluator::new(config.communicate), MemoryExtra::new( diff --git a/src/helpers.rs b/src/helpers.rs index 18b433a0e4..17d74d2ef7 100644 --- a/src/helpers.rs +++ b/src/helpers.rs @@ -8,7 +8,7 @@ use rustc::ty::{ layout::{self, LayoutOf, Size, TyLayout}, List, TyCtxt, }; -use syntax::source_map::DUMMY_SP; +use rustc_span::source_map::DUMMY_SP; use rand::RngCore; diff --git a/src/lib.rs b/src/lib.rs index 32d2bda719..2ddcdf8ff7 100644 --- a/src/lib.rs +++ b/src/lib.rs @@ -10,6 +10,7 @@ extern crate rustc_apfloat; extern crate syntax; #[macro_use] extern crate rustc; +extern crate rustc_span; extern crate rustc_data_structures; extern crate rustc_mir; extern crate rustc_target; diff --git a/src/machine.rs b/src/machine.rs index 502120d316..4c1446c82c 100644 --- a/src/machine.rs +++ b/src/machine.rs @@ -14,7 +14,8 @@ use rustc::ty::{ layout::{LayoutOf, Size}, Ty, TyCtxt, }; -use syntax::{attr, source_map::Span, symbol::sym}; +use rustc_span::{source_map::Span, symbol::sym}; +use syntax::attr; use crate::*; diff --git a/src/shims/foreign_items.rs b/src/shims/foreign_items.rs index 07e3b7d758..6ad16c6f67 100644 --- a/src/shims/foreign_items.rs +++ b/src/shims/foreign_items.rs @@ -5,8 +5,8 @@ use rustc::mir; use rustc::ty; use rustc::ty::layout::{Align, LayoutOf, Size}; use rustc_apfloat::Float; +use rustc_span::symbol::sym; use syntax::attr; -use syntax::symbol::sym; use crate::*; @@ -961,7 +961,7 @@ pub trait EvalContextExt<'mir, 'tcx: 'mir>: crate::MiriEvalContextExt<'mir, 'tcx // lpBuffer : ptr to buffer that receives contents of the env_var as a null-terminated string. // Return `# of chars` stored in the buffer pointed to by lpBuffer, excluding null-terminator. // Return 0 upon failure. - + // This is not the env var you are looking for. this.set_last_error(Scalar::from_u32(203))?; // ERROR_ENVVAR_NOT_FOUND this.write_null(dest)?; diff --git a/src/shims/intrinsics.rs b/src/shims/intrinsics.rs index 37aee1f565..a7aec53c37 100644 --- a/src/shims/intrinsics.rs +++ b/src/shims/intrinsics.rs @@ -5,7 +5,7 @@ use rustc::mir::interpret::{InterpResult, PointerArithmetic}; use rustc::ty; use rustc::ty::layout::{self, Align, LayoutOf, Size}; use rustc_apfloat::Float; -use syntax::source_map::Span; +use rustc_span::source_map::Span; use crate::*; diff --git a/src/shims/panic.rs b/src/shims/panic.rs index 8f082f45c9..950a23aa59 100644 --- a/src/shims/panic.rs +++ b/src/shims/panic.rs @@ -14,7 +14,7 @@ use rustc::mir; use rustc::ty::{self, layout::LayoutOf}; use rustc_target::spec::PanicStrategy; -use syntax::source_map::Span; +use rustc_span::source_map::Span; use crate::*; From 3607dafd9b81ff2ea18861ce8bea110513e87807 Mon Sep 17 00:00:00 2001 From: Yuki Okushi Date: Mon, 6 Jan 2020 13:22:24 +0900 Subject: [PATCH 3/3] More rustup --- src/bin/miri-rustc-tests.rs | 4 ++-- src/bin/miri.rs | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/src/bin/miri-rustc-tests.rs b/src/bin/miri-rustc-tests.rs index 19816fe008..f3b271c359 100644 --- a/src/bin/miri-rustc-tests.rs +++ b/src/bin/miri-rustc-tests.rs @@ -7,7 +7,7 @@ extern crate rustc_driver; extern crate rustc_errors; extern crate rustc_interface; extern crate rustc_metadata; -extern crate syntax; +extern crate rustc_span; use std::io; use std::io::Write; @@ -40,7 +40,7 @@ impl rustc_driver::Callbacks for MiriCompilerCalls { impl<'tcx, 'hir> itemlikevisit::ItemLikeVisitor<'hir> for Visitor<'tcx> { fn visit_item(&mut self, i: &'hir hir::Item) { if let hir::ItemKind::Fn(.., body_id) = i.kind { - if i.attrs.iter().any(|attr| attr.check_name(syntax::symbol::sym::test)) + if i.attrs.iter().any(|attr| attr.check_name(rustc_span::symbol::sym::test)) { let config = MiriConfig { validate: true, diff --git a/src/bin/miri.rs b/src/bin/miri.rs index 1af79b2596..17c5fc2060 100644 --- a/src/bin/miri.rs +++ b/src/bin/miri.rs @@ -12,7 +12,7 @@ extern crate rustc_driver; extern crate rustc_errors; extern crate rustc_interface; extern crate rustc_metadata; -extern crate syntax; +extern crate rustc_span; use std::convert::TryFrom; use std::env;