Skip to content

Commit 00ed73c

Browse files
committed
Auto merge of #132512 - workingjubilee:update-miri-for-rustc-abi, r=RalfJung
miri: Directly use rustc_abi I tried to make this a PR to the miri repo for funsies. Ironically, the integration flow meant that it would use a too-old toolchain hash, and I didn't understand the build system there enough to want to manually fiddle with the hashes.
2 parents 07cbbdd + a953b32 commit 00ed73c

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

61 files changed

+526
-485
lines changed

src/tools/miri/clippy.toml

+1-1
Original file line numberDiff line numberDiff line change
@@ -1 +1 @@
1-
arithmetic-side-effects-allowed = ["rustc_target::abi::Size"]
1+
arithmetic-side-effects-allowed = ["rustc_abi::Size"]

src/tools/miri/src/alloc_addresses/mod.rs

+1-1
Original file line numberDiff line numberDiff line change
@@ -7,9 +7,9 @@ use std::cell::RefCell;
77
use std::cmp::max;
88

99
use rand::Rng;
10+
use rustc_abi::{Align, Size};
1011
use rustc_data_structures::fx::{FxHashMap, FxHashSet};
1112
use rustc_span::Span;
12-
use rustc_target::abi::{Align, Size};
1313

1414
use self::reuse_pool::ReusePool;
1515
use crate::concurrency::VClock;

src/tools/miri/src/alloc_addresses/reuse_pool.rs

+1-1
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
//! Manages a pool of addresses that can be reused.
22
33
use rand::Rng;
4-
use rustc_target::abi::{Align, Size};
4+
use rustc_abi::{Align, Size};
55

66
use crate::concurrency::VClock;
77
use crate::{MemoryKind, MiriConfig, ThreadId};

src/tools/miri/src/alloc_bytes.rs

+1-1
Original file line numberDiff line numberDiff line change
@@ -2,8 +2,8 @@ use std::alloc::Layout;
22
use std::borrow::Cow;
33
use std::{alloc, slice};
44

5+
use rustc_abi::{Align, Size};
56
use rustc_middle::mir::interpret::AllocBytes;
6-
use rustc_target::abi::{Align, Size};
77

88
/// Allocation bytes that explicitly handle the layout of the data they're storing.
99
/// This is necessary to interface with native code that accesses the program store in Miri.

src/tools/miri/src/bin/miri.rs

+3-3
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,7 @@
1111
extern crate tracing;
1212

1313
// The rustc crates we need
14+
extern crate rustc_abi;
1415
extern crate rustc_data_structures;
1516
extern crate rustc_driver;
1617
extern crate rustc_hir;
@@ -21,14 +22,14 @@ extern crate rustc_metadata;
2122
extern crate rustc_middle;
2223
extern crate rustc_session;
2324
extern crate rustc_span;
24-
extern crate rustc_target;
2525

2626
use std::env::{self, VarError};
2727
use std::num::NonZero;
2828
use std::path::PathBuf;
2929
use std::str::FromStr;
3030

3131
use miri::{BacktraceStyle, BorrowTrackerMethod, ProvenanceMode, RetagFields, ValidationMode};
32+
use rustc_abi::ExternAbi;
3233
use rustc_data_structures::sync::Lrc;
3334
use rustc_driver::Compilation;
3435
use rustc_hir::def_id::LOCAL_CRATE;
@@ -47,7 +48,6 @@ use rustc_session::config::{CrateType, EntryFnType, ErrorOutputType, OptLevel};
4748
use rustc_session::search_paths::PathKind;
4849
use rustc_session::{CtfeBacktrace, EarlyDiagCtxt};
4950
use rustc_span::def_id::DefId;
50-
use rustc_target::spec::abi::Abi;
5151
use tracing::debug;
5252

5353
struct MiriCompilerCalls {
@@ -368,7 +368,7 @@ fn entry_fn(tcx: TyCtxt<'_>) -> (DefId, EntryFnType) {
368368
tcx.types.isize,
369369
false,
370370
hir::Safety::Safe,
371-
Abi::Rust,
371+
ExternAbi::Rust,
372372
));
373373

374374
let correct_func_sig = check_function_signature(

src/tools/miri/src/borrow_tracker/mod.rs

+1-1
Original file line numberDiff line numberDiff line change
@@ -2,9 +2,9 @@ use std::cell::RefCell;
22
use std::fmt;
33
use std::num::NonZero;
44

5+
use rustc_abi::Size;
56
use rustc_data_structures::fx::{FxHashMap, FxHashSet};
67
use rustc_middle::mir::RetagKind;
7-
use rustc_target::abi::Size;
88
use smallvec::SmallVec;
99

1010
use crate::*;

src/tools/miri/src/borrow_tracker/stacked_borrows/diagnostics.rs

+1-1
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,8 @@
11
use std::fmt;
22

3+
use rustc_abi::Size;
34
use rustc_data_structures::fx::FxHashSet;
45
use rustc_span::{Span, SpanData};
5-
use rustc_target::abi::Size;
66
use smallvec::SmallVec;
77

88
use crate::borrow_tracker::{GlobalStateInner, ProtectorKind};

src/tools/miri/src/borrow_tracker/tree_borrows/tree.rs

+1-1
Original file line numberDiff line numberDiff line change
@@ -12,9 +12,9 @@
1212
1313
use std::{fmt, mem};
1414

15+
use rustc_abi::Size;
1516
use rustc_data_structures::fx::FxHashSet;
1617
use rustc_span::Span;
17-
use rustc_target::abi::Size;
1818
use smallvec::SmallVec;
1919

2020
use crate::borrow_tracker::tree_borrows::Permission;

src/tools/miri/src/concurrency/cpu_affinity.rs

+1-1
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
1+
use rustc_abi::Endian;
12
use rustc_middle::ty::layout::LayoutOf;
2-
use rustc_target::abi::Endian;
33

44
use crate::*;
55

src/tools/miri/src/concurrency/data_race.rs

+1-1
Original file line numberDiff line numberDiff line change
@@ -44,13 +44,13 @@ use std::cell::{Cell, Ref, RefCell, RefMut};
4444
use std::fmt::Debug;
4545
use std::mem;
4646

47+
use rustc_abi::{Align, HasDataLayout, Size};
4748
use rustc_ast::Mutability;
4849
use rustc_data_structures::fx::{FxHashMap, FxHashSet};
4950
use rustc_index::{Idx, IndexVec};
5051
use rustc_middle::mir;
5152
use rustc_middle::ty::Ty;
5253
use rustc_span::Span;
53-
use rustc_target::abi::{Align, HasDataLayout, Size};
5454

5555
use super::vector_clock::{VClock, VTimestamp, VectorIdx};
5656
use super::weak_memory::EvalContextExt as _;

src/tools/miri/src/concurrency/range_object_map.rs

+1-1
Original file line numberDiff line numberDiff line change
@@ -4,8 +4,8 @@
44
55
use std::ops::{Index, IndexMut, Range};
66

7+
use rustc_abi::Size;
78
use rustc_const_eval::interpret::AllocRange;
8-
use rustc_target::abi::Size;
99

1010
#[derive(Clone, Debug)]
1111
struct Elem<T> {

src/tools/miri/src/concurrency/sync.rs

+1-1
Original file line numberDiff line numberDiff line change
@@ -3,9 +3,9 @@ use std::collections::hash_map::Entry;
33
use std::ops::Not;
44
use std::time::Duration;
55

6+
use rustc_abi::Size;
67
use rustc_data_structures::fx::FxHashMap;
78
use rustc_index::{Idx, IndexVec};
8-
use rustc_target::abi::Size;
99

1010
use super::init_once::InitOnce;
1111
use super::vector_clock::VClock;

src/tools/miri/src/concurrency/thread.rs

+2-2
Original file line numberDiff line numberDiff line change
@@ -7,14 +7,14 @@ use std::task::Poll;
77
use std::time::{Duration, SystemTime};
88

99
use either::Either;
10+
use rustc_abi::ExternAbi;
1011
use rustc_const_eval::CTRL_C_RECEIVED;
1112
use rustc_data_structures::fx::FxHashMap;
1213
use rustc_hir::def_id::DefId;
1314
use rustc_index::{Idx, IndexVec};
1415
use rustc_middle::mir::Mutability;
1516
use rustc_middle::ty::layout::TyAndLayout;
1617
use rustc_span::Span;
17-
use rustc_target::spec::abi::Abi;
1818

1919
use crate::concurrency::data_race;
2020
use crate::shims::tls;
@@ -911,7 +911,7 @@ pub trait EvalContextExt<'tcx>: crate::MiriInterpCxExt<'tcx> {
911911
&mut self,
912912
thread: Option<MPlaceTy<'tcx>>,
913913
start_routine: Pointer,
914-
start_abi: Abi,
914+
start_abi: ExternAbi,
915915
func_arg: ImmTy<'tcx>,
916916
ret_layout: TyAndLayout<'tcx>,
917917
) -> InterpResult<'tcx, ThreadId> {

src/tools/miri/src/diagnostics.rs

+1-1
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,9 @@
11
use std::fmt::{self, Write};
22
use std::num::NonZero;
33

4+
use rustc_abi::{Align, Size};
45
use rustc_errors::{Diag, DiagMessage, Level};
56
use rustc_span::{DUMMY_SP, SpanData, Symbol};
6-
use rustc_target::abi::{Align, Size};
77

88
use crate::borrow_tracker::stacked_borrows::diagnostics::TagHistory;
99
use crate::borrow_tracker::tree_borrows::diagnostics as tree_diagnostics;

src/tools/miri/src/eval.rs

+3-3
Original file line numberDiff line numberDiff line change
@@ -6,13 +6,13 @@ use std::path::PathBuf;
66
use std::task::Poll;
77
use std::{iter, thread};
88

9+
use rustc_abi::ExternAbi;
910
use rustc_data_structures::fx::{FxHashMap, FxHashSet};
1011
use rustc_hir::def::Namespace;
1112
use rustc_hir::def_id::DefId;
1213
use rustc_middle::ty::layout::{LayoutCx, LayoutOf};
1314
use rustc_middle::ty::{self, Ty, TyCtxt};
1415
use rustc_session::config::EntryFnType;
15-
use rustc_target::spec::abi::Abi;
1616

1717
use crate::concurrency::thread::TlsAllocAction;
1818
use crate::diagnostics::report_leaks;
@@ -391,7 +391,7 @@ pub fn create_ecx<'tcx>(
391391

392392
ecx.call_function(
393393
start_instance,
394-
Abi::Rust,
394+
ExternAbi::Rust,
395395
&[
396396
ImmTy::from_scalar(
397397
Scalar::from_pointer(main_ptr, &ecx),
@@ -409,7 +409,7 @@ pub fn create_ecx<'tcx>(
409409
EntryFnType::Start => {
410410
ecx.call_function(
411411
entry_instance,
412-
Abi::Rust,
412+
ExternAbi::Rust,
413413
&[argc, argv],
414414
Some(&ret_place),
415415
StackPopCleanup::Root { cleanup: true },

src/tools/miri/src/helpers.rs

+7-8
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@ use std::time::Duration;
55
use std::{cmp, iter};
66

77
use rand::RngCore;
8+
use rustc_abi::{Align, ExternAbi, FieldIdx, FieldsShape, Size, Variants};
89
use rustc_apfloat::Float;
910
use rustc_apfloat::ieee::{Double, Half, Quad, Single};
1011
use rustc_hir::Safety;
@@ -18,8 +19,6 @@ use rustc_middle::ty::layout::{FnAbiOf, LayoutOf, MaybeResult, TyAndLayout};
1819
use rustc_middle::ty::{self, FloatTy, IntTy, Ty, TyCtxt, UintTy};
1920
use rustc_session::config::CrateType;
2021
use rustc_span::{Span, Symbol};
21-
use rustc_target::abi::{Align, FieldIdx, FieldsShape, Size, Variants};
22-
use rustc_target::spec::abi::Abi;
2322

2423
use crate::*;
2524

@@ -435,7 +434,7 @@ pub trait EvalContextExt<'tcx>: crate::MiriInterpCxExt<'tcx> {
435434
fn call_function(
436435
&mut self,
437436
f: ty::Instance<'tcx>,
438-
caller_abi: Abi,
437+
caller_abi: ExternAbi,
439438
args: &[ImmTy<'tcx>],
440439
dest: Option<&MPlaceTy<'tcx>>,
441440
stack_pop: StackPopCleanup,
@@ -917,7 +916,7 @@ pub trait EvalContextExt<'tcx>: crate::MiriInterpCxExt<'tcx> {
917916
}
918917

919918
/// Check that the ABI is what we expect.
920-
fn check_abi<'a>(&self, abi: Abi, exp_abi: Abi) -> InterpResult<'a, ()> {
919+
fn check_abi<'a>(&self, abi: ExternAbi, exp_abi: ExternAbi) -> InterpResult<'a, ()> {
921920
if abi != exp_abi {
922921
throw_ub_format!(
923922
"calling a function with ABI {} using caller ABI {}",
@@ -953,8 +952,8 @@ pub trait EvalContextExt<'tcx>: crate::MiriInterpCxExt<'tcx> {
953952

954953
fn check_abi_and_shim_symbol_clash(
955954
&mut self,
956-
abi: Abi,
957-
exp_abi: Abi,
955+
abi: ExternAbi,
956+
exp_abi: ExternAbi,
958957
link_name: Symbol,
959958
) -> InterpResult<'tcx, ()> {
960959
self.check_abi(abi, exp_abi)?;
@@ -978,8 +977,8 @@ pub trait EvalContextExt<'tcx>: crate::MiriInterpCxExt<'tcx> {
978977

979978
fn check_shim<'a, const N: usize>(
980979
&mut self,
981-
abi: Abi,
982-
exp_abi: Abi,
980+
abi: ExternAbi,
981+
exp_abi: ExternAbi,
983982
link_name: Symbol,
984983
args: &'a [OpTy<'tcx>],
985984
) -> InterpResult<'tcx, &'a [OpTy<'tcx>; N]>

src/tools/miri/src/intrinsics/mod.rs

+1-1
Original file line numberDiff line numberDiff line change
@@ -4,11 +4,11 @@ mod atomic;
44
mod simd;
55

66
use rand::Rng;
7+
use rustc_abi::Size;
78
use rustc_apfloat::{Float, Round};
89
use rustc_middle::mir;
910
use rustc_middle::ty::{self, FloatTy};
1011
use rustc_span::{Symbol, sym};
11-
use rustc_target::abi::Size;
1212

1313
use self::atomic::EvalContextExt as _;
1414
use self::helpers::{ToHost, ToSoft, check_arg_count};

src/tools/miri/src/intrinsics/simd.rs

+1-1
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,10 @@
11
use either::Either;
2+
use rustc_abi::{Endian, HasDataLayout};
23
use rustc_apfloat::{Float, Round};
34
use rustc_middle::ty::FloatTy;
45
use rustc_middle::ty::layout::LayoutOf;
56
use rustc_middle::{mir, ty};
67
use rustc_span::{Symbol, sym};
7-
use rustc_target::abi::{Endian, HasDataLayout};
88

99
use crate::helpers::{ToHost, ToSoft, bool_to_simd_element, check_arg_count, simd_element_to_bool};
1010
use crate::*;

src/tools/miri/src/machine.rs

+4-5
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,7 @@ use std::{fmt, process};
1010

1111
use rand::rngs::StdRng;
1212
use rand::{Rng, SeedableRng};
13+
use rustc_abi::{Align, ExternAbi, Size};
1314
use rustc_attr::InlineAttr;
1415
use rustc_data_structures::fx::{FxHashMap, FxHashSet};
1516
#[allow(unused)]
@@ -21,8 +22,6 @@ use rustc_middle::ty::{self, Instance, Ty, TyCtxt};
2122
use rustc_session::config::InliningThreshold;
2223
use rustc_span::def_id::{CrateNum, DefId};
2324
use rustc_span::{Span, SpanData, Symbol};
24-
use rustc_target::abi::{Align, Size};
25-
use rustc_target::spec::abi::Abi;
2625

2726
use crate::concurrency::cpu_affinity::{self, CpuAffinityMask};
2827
use crate::concurrency::data_race::{self, NaReadType, NaWriteType};
@@ -1006,7 +1005,7 @@ impl<'tcx> Machine<'tcx> for MiriMachine<'tcx> {
10061005
fn find_mir_or_eval_fn(
10071006
ecx: &mut MiriInterpCx<'tcx>,
10081007
instance: ty::Instance<'tcx>,
1009-
abi: Abi,
1008+
abi: ExternAbi,
10101009
args: &[FnArg<'tcx, Provenance>],
10111010
dest: &MPlaceTy<'tcx>,
10121011
ret: Option<mir::BasicBlock>,
@@ -1033,7 +1032,7 @@ impl<'tcx> Machine<'tcx> for MiriMachine<'tcx> {
10331032
fn call_extra_fn(
10341033
ecx: &mut MiriInterpCx<'tcx>,
10351034
fn_val: DynSym,
1036-
abi: Abi,
1035+
abi: ExternAbi,
10371036
args: &[FnArg<'tcx, Provenance>],
10381037
dest: &MPlaceTy<'tcx>,
10391038
ret: Option<mir::BasicBlock>,
@@ -1075,7 +1074,7 @@ impl<'tcx> Machine<'tcx> for MiriMachine<'tcx> {
10751074
// Call the lang item.
10761075
let panic = ecx.tcx.lang_items().get(reason.lang_item()).unwrap();
10771076
let panic = ty::Instance::mono(ecx.tcx.tcx, panic);
1078-
ecx.call_function(panic, Abi::Rust, &[], None, StackPopCleanup::Goto {
1077+
ecx.call_function(panic, ExternAbi::Rust, &[], None, StackPopCleanup::Goto {
10791078
ret: None,
10801079
unwind: mir::UnwindAction::Unreachable,
10811080
})?;

src/tools/miri/src/operator.rs

+1-1
Original file line numberDiff line numberDiff line change
@@ -2,9 +2,9 @@ use std::iter;
22

33
use rand::Rng;
44
use rand::seq::IteratorRandom;
5+
use rustc_abi::Size;
56
use rustc_apfloat::{Float, FloatConvert};
67
use rustc_middle::mir;
7-
use rustc_target::abi::Size;
88

99
use crate::*;
1010

src/tools/miri/src/range_map.rs

+1-1
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@
77
88
use std::ops;
99

10-
use rustc_target::abi::Size;
10+
use rustc_abi::Size;
1111

1212
#[derive(Clone, Debug)]
1313
struct Elem<T> {

src/tools/miri/src/shims/alloc.rs

+1-1
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
use std::iter;
22

3+
use rustc_abi::{Align, Size};
34
use rustc_ast::expand::allocator::AllocatorKind;
4-
use rustc_target::abi::{Align, Size};
55

66
use crate::*;
77

0 commit comments

Comments
 (0)