X-Git-Url: https://git.lizzy.rs/?a=blobdiff_plain;f=src%2Flib.rs;h=6a5e7af23726903d8e50da6a69258dba7d97beb5;hb=e591b83185ba60cec09225d5ed6b41325a7a331f;hp=85ee98aa3a123ee6dc87e080785314526b11b638;hpb=12170f10d8e149d62db0924849623bf1a5a38429;p=rust.git diff --git a/src/lib.rs b/src/lib.rs index 85ee98aa3a1..6a5e7af2372 100644 --- a/src/lib.rs +++ b/src/lib.rs @@ -1,22 +1,23 @@ #![feature(rustc_private)] -#![feature(option_expect_none, option_unwrap_none)] #![feature(map_first_last)] +#![feature(map_try_insert)] +#![feature(never_type)] +#![feature(try_blocks)] + #![warn(rust_2018_idioms)] #![allow(clippy::cast_lossless)] -#[macro_use] -extern crate log; -// From rustc. extern crate rustc_apfloat; -extern crate syntax; -#[macro_use] -extern crate rustc; -extern crate rustc_hir; -extern crate rustc_span; +extern crate rustc_ast; +#[macro_use] extern crate rustc_middle; extern crate rustc_data_structures; +extern crate rustc_hir; +extern crate rustc_index; extern crate rustc_mir; +extern crate rustc_span; extern crate rustc_target; +mod data_race; mod diagnostics; mod eval; mod helpers; @@ -27,26 +28,36 @@ mod range_map; mod shims; mod stacked_borrows; +mod sync; +mod thread; +mod vector_clock; + +// Establish a "crate-wide prelude": we often import `crate::*`. // Make all those symbols available in the same place as our own. pub use rustc_mir::interpret::*; // Resolve ambiguity. pub use rustc_mir::interpret::{self, AllocMap, PlaceTy}; -pub use crate::shims::dlsym::{Dlsym, EvalContextExt as DlsymEvalContextExt}; -pub use crate::shims::env::{EnvVars, EvalContextExt as EnvEvalContextExt}; -pub use crate::shims::foreign_items::EvalContextExt as ForeignItemsEvalContextExt; -pub use crate::shims::fs::{EvalContextExt as FileEvalContextExt, FileHandler}; -pub use crate::shims::intrinsics::EvalContextExt as IntrinsicsEvalContextExt; -pub use crate::shims::panic::{CatchUnwindData, EvalContextExt as PanicEvalContextExt}; -pub use crate::shims::time::EvalContextExt as TimeEvalContextExt; -pub use crate::shims::tls::{EvalContextExt as TlsEvalContextExt, TlsData}; -pub use crate::shims::EvalContextExt as ShimsEvalContextExt; +pub use crate::shims::dlsym::{Dlsym, EvalContextExt as _}; +pub use crate::shims::env::{EnvVars, EvalContextExt as _}; +pub use crate::shims::foreign_items::EvalContextExt as _; +pub use crate::shims::intrinsics::EvalContextExt as _; +pub use crate::shims::os_str::EvalContextExt as _; +pub use crate::shims::time::EvalContextExt as _; +pub use crate::shims::panic::{CatchUnwindData, EvalContextExt as _}; +pub use crate::shims::tls::{EvalContextExt as _, TlsData}; +pub use crate::shims::EvalContextExt as _; +pub use crate::data_race::{ + AtomicReadOp, AtomicWriteOp, AtomicRwOp, AtomicFenceOp, + EvalContextExt as DataRaceEvalContextExt +}; pub use crate::diagnostics::{ - register_diagnostic, report_diagnostic, EvalContextExt as DiagnosticsEvalContextExt, NonHaltingDiagnostic, + register_diagnostic, report_error, EvalContextExt as DiagnosticsEvalContextExt, + TerminationInfo, NonHaltingDiagnostic, }; -pub use crate::eval::{create_ecx, eval_main, MiriConfig, TerminationInfo}; +pub use crate::eval::{create_ecx, eval_main, AlignmentCheck, MiriConfig}; pub use crate::helpers::EvalContextExt as HelpersEvalContextExt; pub use crate::machine::{ AllocExtra, Evaluator, FrameData, MemoryExtra, MiriEvalContext, MiriEvalContextExt, @@ -56,12 +67,24 @@ pub use crate::operator::EvalContextExt as OperatorEvalContextExt; pub use crate::range_map::RangeMap; pub use crate::stacked_borrows::{ - EvalContextExt as StackedBorEvalContextExt, GlobalState, Item, Permission, PtrId, Stack, - Stacks, Tag, + EvalContextExt as StackedBorEvalContextExt, Item, Permission, CallId, PtrId, Stack, Stacks, Tag, +}; +pub use crate::thread::{ + EvalContextExt as ThreadsEvalContextExt, SchedulingAction, ThreadId, ThreadManager, ThreadState, +}; +pub use crate::sync::{ + EvalContextExt as SyncEvalContextExt, CondvarId, MutexId, RwLockId +}; +pub use crate::vector_clock::{ + VClock, VectorIdx, VTimestamp }; /// Insert rustc arguments at the beginning of the argument list that Miri wants to be /// set per default, for maximal validation power. -pub fn miri_default_args() -> &'static [&'static str] { - &["-Zalways-encode-mir", "-Zmir-emit-retag", "-Zmir-opt-level=0", "--cfg=miri", "-Cdebug-assertions=on"] -} +pub const MIRI_DEFAULT_ARGS: &[&str] = &[ + "-Zalways-encode-mir", + "-Zmir-emit-retag", + "-Zmir-opt-level=0", + "--cfg=miri", + "-Cdebug-assertions=on", +];