Struct miri::MiriConfig
source · pub struct MiriConfig {Show 34 fields
pub env: Vec<(OsString, OsString)>,
pub validate: bool,
pub borrow_tracker: Option<BorrowTrackerMethod>,
pub unique_is_unique: bool,
pub check_alignment: AlignmentCheck,
pub isolated_op: IsolatedOp,
pub ignore_leaks: bool,
pub forwarded_env_vars: Vec<String>,
pub set_env_vars: FxHashMap<String, String>,
pub args: Vec<String>,
pub seed: Option<u64>,
pub tracked_pointer_tags: FxHashSet<BorTag>,
pub tracked_call_ids: FxHashSet<CallId>,
pub tracked_alloc_ids: FxHashSet<AllocId>,
pub track_alloc_accesses: bool,
pub data_race_detector: bool,
pub weak_memory_emulation: bool,
pub track_outdated_loads: bool,
pub cmpxchg_weak_failure_rate: f64,
pub measureme_out: Option<String>,
pub panic_on_unsupported: bool,
pub backtrace_style: BacktraceStyle,
pub provenance_mode: ProvenanceMode,
pub mute_stdout_stderr: bool,
pub preemption_rate: f64,
pub report_progress: Option<u32>,
pub retag_fields: RetagFields,
pub native_lib: Option<PathBuf>,
pub gc_interval: u32,
pub num_cpus: u32,
pub page_size: Option<u64>,
pub collect_leak_backtraces: bool,
pub address_reuse_rate: f64,
pub address_reuse_cross_thread_rate: f64,
}Expand description
Configuration needed to spawn a Miri instance.
Fields§
§env: Vec<(OsString, OsString)>The host environment snapshot to use as basis for what is provided to the interpreted program.
(This is still subject to isolation as well as forwarded_env_vars.)
validate: boolDetermine if validity checking is enabled.
borrow_tracker: Option<BorrowTrackerMethod>Determines if Stacked Borrows or Tree Borrows is enabled.
unique_is_unique: boolWhether core::ptr::Unique receives special treatment.
If true then Unique is reborrowed with its own new tag and permission,
otherwise Unique is just another raw pointer.
check_alignment: AlignmentCheckControls alignment checking.
isolated_op: IsolatedOpAction for an op requiring communication with the host.
ignore_leaks: boolDetermines if memory leaks should be ignored.
forwarded_env_vars: Vec<String>Environment variables that should always be forwarded from the host.
set_env_vars: FxHashMap<String, String>Additional environment variables that should be set in the interpreted program.
args: Vec<String>Command-line arguments passed to the interpreted program.
seed: Option<u64>The seed to use when non-determinism or randomness are required (e.g. ptr-to-int cast, getrandom()).
The stacked borrows pointer ids to report about
tracked_call_ids: FxHashSet<CallId>The stacked borrows call IDs to report about
tracked_alloc_ids: FxHashSet<AllocId>The allocation ids to report about.
track_alloc_accesses: boolFor the tracked alloc ids, also report read/write accesses.
data_race_detector: boolDetermine if data race detection should be enabled
weak_memory_emulation: boolDetermine if weak memory emulation should be enabled. Requires data race detection to be enabled
track_outdated_loads: boolTrack when an outdated (weak memory) load happens.
cmpxchg_weak_failure_rate: f64Rate of spurious failures for compare_exchange_weak atomic operations, between 0.0 and 1.0, defaulting to 0.8 (80% chance of failure).
measureme_out: Option<String>If Some, enable the measureme profiler, writing results to a file
with the specified prefix.
panic_on_unsupported: boolPanic when unsupported functionality is encountered.
backtrace_style: BacktraceStyleWhich style to use for printing backtraces.
provenance_mode: ProvenanceModeWhich provenance to use for int2ptr casts
mute_stdout_stderr: boolWhether to ignore any output by the program. This is helpful when debugging miri as its messages don’t get intermingled with the program messages.
preemption_rate: f64The probability of the active thread being preempted at the end of each basic block.
report_progress: Option<u32>Report the current instruction being executed every N basic blocks.
retag_fields: RetagFieldsWhether Stacked Borrows and Tree Borrows retagging should recurse into fields of datatypes.
native_lib: Option<PathBuf>The location of a shared object file to load when calling external functions FIXME! consider allowing users to specify paths to multiple files, or to a directory
gc_interval: u32Run a garbage collector for BorTags every N basic blocks.
num_cpus: u32The number of CPUs to be reported by miri.
page_size: Option<u64>Requires Miri to emulate pages of a certain size
collect_leak_backtraces: boolWhether to collect a backtrace when each allocation is created, just in case it leaks.
address_reuse_rate: f64Probability for address reuse.
address_reuse_cross_thread_rate: f64Probability for address reuse across threads.
Trait Implementations§
source§impl Clone for MiriConfig
impl Clone for MiriConfig
source§fn clone(&self) -> MiriConfig
fn clone(&self) -> MiriConfig
1.0.0 · source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
source. Read more