remove -Zmiri-panic-on-unsupported flag
This commit is contained in:
parent
7e21dce98c
commit
9e2688c5f5
7 changed files with 2 additions and 42 deletions
|
|
@ -392,11 +392,6 @@ to Miri failing to detect cases of undefined behavior in a program.
|
|||
but reports to the program that it did actually write. This is useful when you
|
||||
are not interested in the actual program's output, but only want to see Miri's
|
||||
errors and warnings.
|
||||
* `-Zmiri-panic-on-unsupported` will make some forms of unsupported functionality,
|
||||
such as FFI and unsupported syscalls, panic within the context of the emulated
|
||||
application instead of raising an error within the context of Miri (and halting
|
||||
execution). Note that code might not expect these operations to ever panic, so
|
||||
this flag can lead to strange (mis)behavior.
|
||||
* `-Zmiri-recursive-validation` is a *highly experimental* flag that makes validity checking
|
||||
recurse below references.
|
||||
* `-Zmiri-retag-fields[=<all|none|scalar>]` controls when Stacked Borrows retagging recurses into
|
||||
|
|
|
|||
|
|
@ -530,8 +530,6 @@ fn main() {
|
|||
} else if arg == "-Zmiri-ignore-leaks" {
|
||||
miri_config.ignore_leaks = true;
|
||||
miri_config.collect_leak_backtraces = false;
|
||||
} else if arg == "-Zmiri-panic-on-unsupported" {
|
||||
miri_config.panic_on_unsupported = true;
|
||||
} else if arg == "-Zmiri-strict-provenance" {
|
||||
miri_config.provenance_mode = ProvenanceMode::Strict;
|
||||
} else if arg == "-Zmiri-permissive-provenance" {
|
||||
|
|
|
|||
|
|
@ -129,8 +129,6 @@ pub struct MiriConfig {
|
|||
/// If `Some`, enable the `measureme` profiler, writing results to a file
|
||||
/// with the specified prefix.
|
||||
pub measureme_out: Option<String>,
|
||||
/// Panic when unsupported functionality is encountered.
|
||||
pub panic_on_unsupported: bool,
|
||||
/// Which style to use for printing backtraces.
|
||||
pub backtrace_style: BacktraceStyle,
|
||||
/// Which provenance to use for int2ptr casts
|
||||
|
|
@ -183,7 +181,6 @@ impl Default for MiriConfig {
|
|||
track_outdated_loads: false,
|
||||
cmpxchg_weak_failure_rate: 0.8, // 80%
|
||||
measureme_out: None,
|
||||
panic_on_unsupported: false,
|
||||
backtrace_style: BacktraceStyle::Short,
|
||||
provenance_mode: ProvenanceMode::Default,
|
||||
mute_stdout_stderr: false,
|
||||
|
|
|
|||
|
|
@ -496,11 +496,6 @@ pub struct MiriMachine<'tcx> {
|
|||
/// `None` means no `Instance` exported under the given name is found.
|
||||
pub(crate) exported_symbols_cache: FxHashMap<Symbol, Option<Instance<'tcx>>>,
|
||||
|
||||
/// Whether to raise a panic in the context of the evaluated process when unsupported
|
||||
/// functionality is encountered. If `false`, an error is propagated in the Miri application context
|
||||
/// instead (default behavior)
|
||||
pub(crate) panic_on_unsupported: bool,
|
||||
|
||||
/// Equivalent setting as RUST_BACKTRACE on encountering an error.
|
||||
pub(crate) backtrace_style: BacktraceStyle,
|
||||
|
||||
|
|
@ -667,7 +662,6 @@ impl<'tcx> MiriMachine<'tcx> {
|
|||
profiler,
|
||||
string_cache: Default::default(),
|
||||
exported_symbols_cache: FxHashMap::default(),
|
||||
panic_on_unsupported: config.panic_on_unsupported,
|
||||
backtrace_style: config.backtrace_style,
|
||||
local_crates,
|
||||
extern_statics: FxHashMap::default(),
|
||||
|
|
@ -807,7 +801,6 @@ impl VisitProvenance for MiriMachine<'_> {
|
|||
profiler: _,
|
||||
string_cache: _,
|
||||
exported_symbols_cache: _,
|
||||
panic_on_unsupported: _,
|
||||
backtrace_style: _,
|
||||
local_crates: _,
|
||||
rng: _,
|
||||
|
|
|
|||
|
|
@ -83,17 +83,10 @@ pub trait EvalContextExt<'tcx>: crate::MiriInterpCxExt<'tcx> {
|
|||
return interp_ok(Some(body));
|
||||
}
|
||||
|
||||
let error_msg = format!(
|
||||
throw_machine_stop!(TerminationInfo::UnsupportedForeignItem(format!(
|
||||
"can't call foreign function `{link_name}` on OS `{os}`",
|
||||
os = this.tcx.sess.target.os,
|
||||
);
|
||||
if this.machine.panic_on_unsupported {
|
||||
// message is slightly different here to make automated analysis easier
|
||||
let error_msg = format!("unsupported Miri functionality: {error_msg}");
|
||||
this.start_panic(error_msg.as_ref(), mir::UnwindAction::Continue)?;
|
||||
} else {
|
||||
throw_machine_stop!(TerminationInfo::UnsupportedForeignItem(error_msg));
|
||||
}
|
||||
)));
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -1,12 +0,0 @@
|
|||
//@compile-flags: -Zmiri-panic-on-unsupported
|
||||
//@normalize-stderr-test: "OS `.*`" -> "$$OS"
|
||||
|
||||
fn main() {
|
||||
extern "Rust" {
|
||||
fn foo();
|
||||
}
|
||||
|
||||
unsafe {
|
||||
foo();
|
||||
}
|
||||
}
|
||||
|
|
@ -1,4 +0,0 @@
|
|||
thread 'main' panicked at tests/panic/unsupported_foreign_function.rs:LL:CC:
|
||||
unsupported Miri functionality: can't call foreign function `foo` on $OS
|
||||
note: run with `RUST_BACKTRACE=1` environment variable to display a backtrace
|
||||
note: in Miri, you may have to set `MIRIFLAGS=-Zmiri-env-forward=RUST_BACKTRACE` for the environment variable to have an effect
|
||||
Loading…
Add table
Add a link
Reference in a new issue