Skip to main content

Crate miri

Crate miri 

Source

Re-exportsΒ§

pub use rustc_const_eval::interpret;
pub use rustc_const_eval::interpret::Provenance as _;
pub use crate::alloc::MiriAllocBytes;
pub use crate::alloc_addresses::EvalContextExt as _;
pub use crate::alloc_addresses::ProvenanceMode;
pub use crate::borrow_tracker::stacked_borrows::EvalContextExt as _;
pub use crate::borrow_tracker::stacked_borrows::Item;
pub use crate::borrow_tracker::stacked_borrows::Permission;
pub use crate::borrow_tracker::stacked_borrows::Stack;
pub use crate::borrow_tracker::stacked_borrows::Stacks;
pub use crate::borrow_tracker::tree_borrows::EvalContextExt as _;
pub use crate::borrow_tracker::tree_borrows::Tree;
pub use crate::borrow_tracker::BorTag;
pub use crate::borrow_tracker::BorrowTrackerMethod;
pub use crate::borrow_tracker::EvalContextExt as _;
pub use crate::borrow_tracker::TreeBorrowsParams;
pub use crate::clock::Deadline;
pub use crate::clock::Instant;
pub use crate::clock::MonotonicClock;
pub use crate::clock::TimeoutClock;
pub use crate::clock::TimeoutStyle;
pub use crate::concurrency::blocking_io::BlockingIoInterest;
pub use crate::concurrency::blocking_io::BlockingIoManager;
pub use crate::concurrency::blocking_io::EvalContextExt as _;
pub use crate::concurrency::blocking_io::SourceFileDescription;
pub use crate::concurrency::data_race::AtomicFenceOrd;
pub use crate::concurrency::data_race::AtomicReadOrd;
pub use crate::concurrency::data_race::AtomicRwOrd;
pub use crate::concurrency::data_race::AtomicWriteOrd;
pub use crate::concurrency::data_race::EvalContextExt as _;
pub use crate::concurrency::init_once::EvalContextExt as _;
pub use crate::concurrency::init_once::InitOnceRef;
pub use crate::concurrency::scheduler::EvalContextExt as _;
pub use crate::concurrency::sync::CondvarRef;
pub use crate::concurrency::sync::EvalContextExt as _;
pub use crate::concurrency::sync::MutexRef;
pub use crate::concurrency::sync::RwLockRef;
pub use crate::concurrency::sync::SemaphoreRef;
pub use crate::concurrency::thread::BlockReason;
pub use crate::concurrency::thread::DynUnblockCallback;
pub use crate::concurrency::thread::EvalContextExt as _;
pub use crate::concurrency::thread::StackEmptyCallback;
pub use crate::concurrency::thread::ThreadId;
pub use crate::concurrency::thread::ThreadManager;
pub use crate::concurrency::thread::UnblockKind;
pub use crate::concurrency::GenmcConfig;
pub use crate::concurrency::GenmcCtx;
pub use crate::concurrency::run_genmc_mode;
pub use crate::data_structures::dedup_range_map::DedupRangeMap;
pub use crate::data_structures::mono_hash_map::MonoHashMap;
pub use crate::diagnostics::EvalContextExt as _;
pub use crate::diagnostics::NonHaltingDiagnostic;
pub use crate::diagnostics::TerminationInfo;
pub use crate::diagnostics::report_result;
pub use crate::eval::MiriConfig;
pub use crate::eval::MiriEntryFnType;
pub use crate::eval::create_ecx;
pub use crate::eval::entry_fn;
pub use crate::eval::eval_entry;
pub use crate::helpers::EvalContextExt as _;
pub use crate::helpers::ToU64 as _;
pub use crate::helpers::ToUsize as _;
pub use crate::intrinsics::EvalContextExt as _;
pub use crate::machine::AlignmentCheck;
pub use crate::machine::AllocExtra;
pub use crate::machine::BacktraceStyle;
pub use crate::machine::DynMachineCallback;
pub use crate::machine::FloatRoundingErrorMode;
pub use crate::machine::FrameExtra;
pub use crate::machine::IsolatedOp;
pub use crate::machine::MachineCallback;
pub use crate::machine::MemoryKind;
pub use crate::machine::MiriInterpCx;
pub use crate::machine::MiriInterpCxExt;
pub use crate::machine::MiriMachine;
pub use crate::machine::MiriMemoryKind;
pub use crate::machine::PrimitiveLayouts;
pub use crate::machine::Provenance;
pub use crate::machine::ProvenanceExtra;
pub use crate::machine::RejectOpWith;
pub use crate::machine::ValidationMode;
pub use crate::meta_obj::EvalContextExt as _;
pub use crate::meta_obj::MetaObj;
pub use crate::operator::EvalContextExt as _;
pub use crate::provenance_gc::EvalContextExt as _;
pub use crate::provenance_gc::LiveAllocs;
pub use crate::provenance_gc::VisitProvenance;
pub use crate::provenance_gc::VisitWith;
pub use crate::shims::EmulateItemResult;
pub use crate::shims::cpu_affinity::MAX_CPUS;
pub use crate::shims::env::EnvVars;
pub use crate::shims::env::EvalContextExt as _;
pub use crate::shims::foreign_items::DynSym;
pub use crate::shims::foreign_items::EvalContextExt as _;
pub use crate::shims::io_error::EvalContextExt as _;
pub use crate::shims::io_error::IoError;
pub use crate::shims::io_error::LibcError;
pub use crate::shims::os_str::EvalContextExt as _;
pub use crate::shims::panic::EvalContextExt as _;
pub use crate::shims::readiness::EvalContextExt as _;
pub use crate::shims::readiness::Readiness;
pub use crate::shims::readiness::ReadinessInterest;
pub use crate::shims::readiness::ReadinessUpdateFlags;
pub use crate::shims::readiness::ReadinessWatched;
pub use crate::shims::readiness::ReadinessWatcher;
pub use crate::shims::sig::EvalContextExt as _;
pub use crate::shims::time::EvalContextExt as _;
pub use crate::shims::tls::TlsData;
pub use crate::shims::unwind::CatchUnwindData;
pub use crate::shims::unwind::EvalContextExt as _;
pub(crate) use rustc_data_structures::either::Either; πŸ”’
pub(crate) use tracing; πŸ”’
pub(crate) use info; πŸ”’
pub(crate) use trace; πŸ”’
pub(crate) use warn; πŸ”’
pub(crate) use bug; πŸ”’
pub(crate) use span_bug; πŸ”’
pub use rustc_const_eval::interpret::*;

ModulesΒ§

alloc πŸ”’
alloc_addresses πŸ”’
This module is responsible for managing the absolute addresses that allocations are located at, and for casting between pointers and integers based on those addresses.
borrow_tracker πŸ”’
clock πŸ”’
concurrency πŸ”’
data_structures πŸ”’
diagnostics πŸ”’
eval πŸ”’
Main evaluator loop and setting up the initial stack frame.
helpers πŸ”’
intrinsics πŸ”’
machine πŸ”’
Global machine state as well as implementation of the interpreter engine Machine trait.
math πŸ”’
meta_obj πŸ”’
native_lib
operator πŸ”’
provenance_gc πŸ”’
shims πŸ”’
sym

MacrosΒ§

callback
Creates a DynMachineCallback:
enter_trace_span
Enters a [tracing::info_span] only if the β€œtracing” feature is enabled, otherwise does nothing. This calls [rustc_const_eval::enter_trace_span] with MiriMachine as the first argument, which will in turn call MiriMachine::enter_trace_span, which takes care of determining at compile time whether to trace or not (and supposedly the call is compiled out if tracing is disabled). Look at [rustc_const_eval::enter_trace_span] for complete documentation, examples and tips.
shim_sig
Construct a ShimSig with convenient syntax:
shim_sig_arg
Helper for shim_sig!.
shim_sig_args_sep
Helper for shim_sig!.
shim_varargs
Computes a list of types for varargs, using the same syntax as shim_sig!.

ConstantsΒ§

MIRI_DEFAULT_ARGS
Insert rustc arguments at the beginning of the argument list that Miri wants to be set per default, for maximal validation power. Also disable the MIR pass that inserts an alignment check on every pointer dereference. Miri does that too, and with a better error message.

Type AliasesΒ§

FnArg
ImmTy
MPlaceTy
OpTy
PlaceTy
Pointer
Scalar
StrictPointer