update 'unsupported' message

This commit is contained in:
Ralf Jung 2024-05-04 13:45:54 +02:00
parent 9d4eea1369
commit 8b4b259da2
22 changed files with 45 additions and 22 deletions

View File

@ -141,7 +141,7 @@ interpreter will explicitly tell you when it finds something unsupported:
error: unsupported operation: can't call foreign function: bind error: unsupported operation: can't call foreign function: bind
... ...
= help: this is likely not a bug in the program; it indicates that the program \ = help: this is likely not a bug in the program; it indicates that the program \
performed an operation that the interpreter does not support performed an operation that Miri does not support
``` ```
### Cross-interpretation: running for different targets ### Cross-interpretation: running for different targets

View File

@ -320,7 +320,10 @@ pub fn report_error<'tcx, 'mir>(
#[rustfmt::skip] #[rustfmt::skip]
let helps = match e.kind() { let helps = match e.kind() {
Unsupported(_) => Unsupported(_) =>
vec![(None, format!("this is likely not a bug in the program; it indicates that the program performed an operation that the interpreter does not support"))], vec![
(None, format!("this is likely not a bug in the program; it indicates that the program performed an operation that Miri does not support")),
(None, format!("if this is a basic API commonly used on this target, please report an issue; but note that Miri does not aim to support every FFI function out there")),
],
UndefinedBehavior(AlignmentCheckFailed { .. }) UndefinedBehavior(AlignmentCheckFailed { .. })
if ecx.machine.check_alignment == AlignmentCheck::Symbolic if ecx.machine.check_alignment == AlignmentCheck::Symbolic
=> =>

View File

@ -4,7 +4,8 @@ error: unsupported operation: can't call foreign function `foo` on $OS
LL | foo(); LL | foo();
| ^^^^^ can't call foreign function `foo` on $OS | ^^^^^ can't call foreign function `foo` on $OS
| |
= help: this is likely not a bug in the program; it indicates that the program performed an operation that the interpreter does not support = help: this is likely not a bug in the program; it indicates that the program performed an operation that Miri does not support
= help: if this is a basic API commonly used on this target, please report an issue; but note that Miri does not aim to support every FFI function out there
= note: BACKTRACE: = note: BACKTRACE:
= note: inside `main` at $DIR/function_not_in_so.rs:LL:CC = note: inside `main` at $DIR/function_not_in_so.rs:LL:CC

View File

@ -4,7 +4,8 @@ error: unsupported operation: cannot close stdout
LL | libc::close(1); LL | libc::close(1);
| ^^^^^^^^^^^^^^ cannot close stdout | ^^^^^^^^^^^^^^ cannot close stdout
| |
= help: this is likely not a bug in the program; it indicates that the program performed an operation that the interpreter does not support = help: this is likely not a bug in the program; it indicates that the program performed an operation that Miri does not support
= help: if this is a basic API commonly used on this target, please report an issue; but note that Miri does not aim to support every FFI function out there
= note: BACKTRACE: = note: BACKTRACE:
= note: inside `main` at $DIR/close_stdout.rs:LL:CC = note: inside `main` at $DIR/close_stdout.rs:LL:CC

View File

@ -4,7 +4,8 @@ error: unsupported operation: cannot read from stdout
LL | libc::read(1, bytes.as_mut_ptr() as *mut libc::c_void, 512); LL | libc::read(1, bytes.as_mut_ptr() as *mut libc::c_void, 512);
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ cannot read from stdout | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ cannot read from stdout
| |
= help: this is likely not a bug in the program; it indicates that the program performed an operation that the interpreter does not support = help: this is likely not a bug in the program; it indicates that the program performed an operation that Miri does not support
= help: if this is a basic API commonly used on this target, please report an issue; but note that Miri does not aim to support every FFI function out there
= note: BACKTRACE: = note: BACKTRACE:
= note: inside `main` at $DIR/read_from_stdout.rs:LL:CC = note: inside `main` at $DIR/read_from_stdout.rs:LL:CC

View File

@ -4,7 +4,8 @@ error: unsupported operation: cannot write to stdin
LL | libc::write(0, bytes.as_ptr() as *const libc::c_void, 5); LL | libc::write(0, bytes.as_ptr() as *const libc::c_void, 5);
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ cannot write to stdin | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ cannot write to stdin
| |
= help: this is likely not a bug in the program; it indicates that the program performed an operation that the interpreter does not support = help: this is likely not a bug in the program; it indicates that the program performed an operation that Miri does not support
= help: if this is a basic API commonly used on this target, please report an issue; but note that Miri does not aim to support every FFI function out there
= note: BACKTRACE: = note: BACKTRACE:
= note: inside `main` at $DIR/write_to_stdin.rs:LL:CC = note: inside `main` at $DIR/write_to_stdin.rs:LL:CC

View File

@ -9,7 +9,8 @@ LL | | timeout,
LL | | )) LL | | ))
| |__________^ returning ready events from epoll_wait is not yet implemented | |__________^ returning ready events from epoll_wait is not yet implemented
| |
= help: this is likely not a bug in the program; it indicates that the program performed an operation that the interpreter does not support = help: this is likely not a bug in the program; it indicates that the program performed an operation that Miri does not support
= help: if this is a basic API commonly used on this target, please report an issue; but note that Miri does not aim to support every FFI function out there
error: aborting due to 1 previous error error: aborting due to 1 previous error

View File

@ -4,7 +4,8 @@ error: unsupported operation: can't call foreign function `signal` on $OS
LL | libc::signal(libc::SIGPIPE, libc::SIG_IGN); LL | libc::signal(libc::SIGPIPE, libc::SIG_IGN);
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ can't call foreign function `signal` on $OS | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ can't call foreign function `signal` on $OS
| |
= help: this is likely not a bug in the program; it indicates that the program performed an operation that the interpreter does not support = help: this is likely not a bug in the program; it indicates that the program performed an operation that Miri does not support
= help: if this is a basic API commonly used on this target, please report an issue; but note that Miri does not aim to support every FFI function out there
= note: BACKTRACE: = note: BACKTRACE:
= note: inside `main` at $DIR/unsupported_incomplete_function.rs:LL:CC = note: inside `main` at $DIR/unsupported_incomplete_function.rs:LL:CC

View File

@ -4,7 +4,8 @@ error: unsupported operation: can't call foreign function `__rust_alloc` on $OS
LL | __rust_alloc(1, 1); LL | __rust_alloc(1, 1);
| ^^^^^^^^^^^^^^^^^^ can't call foreign function `__rust_alloc` on $OS | ^^^^^^^^^^^^^^^^^^ can't call foreign function `__rust_alloc` on $OS
| |
= help: this is likely not a bug in the program; it indicates that the program performed an operation that the interpreter does not support = help: this is likely not a bug in the program; it indicates that the program performed an operation that Miri does not support
= help: if this is a basic API commonly used on this target, please report an issue; but note that Miri does not aim to support every FFI function out there
= note: BACKTRACE: = note: BACKTRACE:
= note: inside `start` at $DIR/no_global_allocator.rs:LL:CC = note: inside `start` at $DIR/no_global_allocator.rs:LL:CC

View File

@ -4,7 +4,8 @@ error: unsupported operation: `extern type` does not have a known offset
LL | let _field = &x.a; LL | let _field = &x.a;
| ^^^^ `extern type` does not have a known offset | ^^^^ `extern type` does not have a known offset
| |
= help: this is likely not a bug in the program; it indicates that the program performed an operation that the interpreter does not support = help: this is likely not a bug in the program; it indicates that the program performed an operation that Miri does not support
= help: if this is a basic API commonly used on this target, please report an issue; but note that Miri does not aim to support every FFI function out there
= note: BACKTRACE: = note: BACKTRACE:
= note: inside `main` at $DIR/extern-type-field-offset.rs:LL:CC = note: inside `main` at $DIR/extern-type-field-offset.rs:LL:CC

View File

@ -4,7 +4,8 @@ error: unsupported operation: extern static `FOO` is not supported by Miri
LL | let _val = unsafe { std::ptr::addr_of!(FOO) }; LL | let _val = unsafe { std::ptr::addr_of!(FOO) };
| ^^^ extern static `FOO` is not supported by Miri | ^^^ extern static `FOO` is not supported by Miri
| |
= help: this is likely not a bug in the program; it indicates that the program performed an operation that the interpreter does not support = help: this is likely not a bug in the program; it indicates that the program performed an operation that Miri does not support
= help: if this is a basic API commonly used on this target, please report an issue; but note that Miri does not aim to support every FFI function out there
= note: BACKTRACE: = note: BACKTRACE:
= note: inside `main` at $DIR/extern_static.rs:LL:CC = note: inside `main` at $DIR/extern_static.rs:LL:CC

View File

@ -4,7 +4,8 @@ error: unsupported operation: extern static `E` is not supported by Miri
LL | let _val = X; LL | let _val = X;
| ^ extern static `E` is not supported by Miri | ^ extern static `E` is not supported by Miri
| |
= help: this is likely not a bug in the program; it indicates that the program performed an operation that the interpreter does not support = help: this is likely not a bug in the program; it indicates that the program performed an operation that Miri does not support
= help: if this is a basic API commonly used on this target, please report an issue; but note that Miri does not aim to support every FFI function out there
= note: BACKTRACE: = note: BACKTRACE:
= note: inside `main` at $DIR/extern_static_in_const.rs:LL:CC = note: inside `main` at $DIR/extern_static_in_const.rs:LL:CC

View File

@ -4,7 +4,8 @@ error: unsupported operation: extern static `environ` has been declared as `exte
LL | let _val = unsafe { environ }; LL | let _val = unsafe { environ };
| ^^^^^^^ extern static `environ` has been declared as `extern_static_wrong_size::environ` with a size of 1 bytes and alignment of 1 bytes, but Miri emulates it via an extern static shim with a size of N bytes and alignment of N bytes | ^^^^^^^ extern static `environ` has been declared as `extern_static_wrong_size::environ` with a size of 1 bytes and alignment of 1 bytes, but Miri emulates it via an extern static shim with a size of N bytes and alignment of N bytes
| |
= help: this is likely not a bug in the program; it indicates that the program performed an operation that the interpreter does not support = help: this is likely not a bug in the program; it indicates that the program performed an operation that Miri does not support
= help: if this is a basic API commonly used on this target, please report an issue; but note that Miri does not aim to support every FFI function out there
= note: BACKTRACE: = note: BACKTRACE:
= note: inside `main` at $DIR/extern_static_wrong_size.rs:LL:CC = note: inside `main` at $DIR/extern_static_wrong_size.rs:LL:CC

View File

@ -4,7 +4,8 @@ error: unsupported operation: extern static `_dispatch_queue_attr_concurrent` is
LL | let _val = *DISPATCH_QUEUE_CONCURRENT; LL | let _val = *DISPATCH_QUEUE_CONCURRENT;
| ^^^^^^^^^^^^^^^^^^^^^^^^^ extern static `_dispatch_queue_attr_concurrent` is not supported by Miri | ^^^^^^^^^^^^^^^^^^^^^^^^^ extern static `_dispatch_queue_attr_concurrent` is not supported by Miri
| |
= help: this is likely not a bug in the program; it indicates that the program performed an operation that the interpreter does not support = help: this is likely not a bug in the program; it indicates that the program performed an operation that Miri does not support
= help: if this is a basic API commonly used on this target, please report an issue; but note that Miri does not aim to support every FFI function out there
= note: BACKTRACE: = note: BACKTRACE:
= note: inside `main` at $DIR/issue-miri-3288-ice-symbolic-alignment-extern-static.rs:LL:CC = note: inside `main` at $DIR/issue-miri-3288-ice-symbolic-alignment-extern-static.rs:LL:CC

View File

@ -4,7 +4,8 @@ error: unsupported operation: unknown `miri_get_backtrace` flags 2
LL | miri_get_backtrace(2, std::ptr::null_mut()); LL | miri_get_backtrace(2, std::ptr::null_mut());
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ unknown `miri_get_backtrace` flags 2 | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ unknown `miri_get_backtrace` flags 2
| |
= help: this is likely not a bug in the program; it indicates that the program performed an operation that the interpreter does not support = help: this is likely not a bug in the program; it indicates that the program performed an operation that Miri does not support
= help: if this is a basic API commonly used on this target, please report an issue; but note that Miri does not aim to support every FFI function out there
= note: BACKTRACE: = note: BACKTRACE:
= note: inside `main` at $DIR/bad-backtrace-flags.rs:LL:CC = note: inside `main` at $DIR/bad-backtrace-flags.rs:LL:CC

View File

@ -4,7 +4,8 @@ error: unsupported operation: unknown `miri_resolve_frame` flags 2
LL | miri_resolve_frame(buf[0], 2); LL | miri_resolve_frame(buf[0], 2);
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ unknown `miri_resolve_frame` flags 2 | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ unknown `miri_resolve_frame` flags 2
| |
= help: this is likely not a bug in the program; it indicates that the program performed an operation that the interpreter does not support = help: this is likely not a bug in the program; it indicates that the program performed an operation that Miri does not support
= help: if this is a basic API commonly used on this target, please report an issue; but note that Miri does not aim to support every FFI function out there
= note: BACKTRACE: = note: BACKTRACE:
= note: inside `main` at $DIR/bad-backtrace-resolve-flags.rs:LL:CC = note: inside `main` at $DIR/bad-backtrace-resolve-flags.rs:LL:CC

View File

@ -4,7 +4,8 @@ error: unsupported operation: unknown `miri_resolve_frame_names` flags 2
LL | ... miri_resolve_frame_names(buf[0], 2, std::ptr::null_mut(), std::ptr::null_mut()); LL | ... miri_resolve_frame_names(buf[0], 2, std::ptr::null_mut(), std::ptr::null_mut());
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ unknown `miri_resolve_frame_names` flags 2 | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ unknown `miri_resolve_frame_names` flags 2
| |
= help: this is likely not a bug in the program; it indicates that the program performed an operation that the interpreter does not support = help: this is likely not a bug in the program; it indicates that the program performed an operation that Miri does not support
= help: if this is a basic API commonly used on this target, please report an issue; but note that Miri does not aim to support every FFI function out there
= note: BACKTRACE: = note: BACKTRACE:
= note: inside `main` at $DIR/bad-backtrace-resolve-names-flags.rs:LL:CC = note: inside `main` at $DIR/bad-backtrace-resolve-names-flags.rs:LL:CC

View File

@ -4,7 +4,8 @@ error: unsupported operation: unknown `miri_backtrace_size` flags 2
LL | miri_backtrace_size(2); LL | miri_backtrace_size(2);
| ^^^^^^^^^^^^^^^^^^^^^^ unknown `miri_backtrace_size` flags 2 | ^^^^^^^^^^^^^^^^^^^^^^ unknown `miri_backtrace_size` flags 2
| |
= help: this is likely not a bug in the program; it indicates that the program performed an operation that the interpreter does not support = help: this is likely not a bug in the program; it indicates that the program performed an operation that Miri does not support
= help: if this is a basic API commonly used on this target, please report an issue; but note that Miri does not aim to support every FFI function out there
= note: BACKTRACE: = note: BACKTRACE:
= note: inside `main` at $DIR/bad-backtrace-size-flags.rs:LL:CC = note: inside `main` at $DIR/bad-backtrace-size-flags.rs:LL:CC

View File

@ -4,7 +4,8 @@ error: unsupported operation: `miri_promise_symbolic_alignment`: pointer is not
LL | unsafe { utils::miri_promise_symbolic_alignment(align8.add(1).cast(), 8) }; LL | unsafe { utils::miri_promise_symbolic_alignment(align8.add(1).cast(), 8) };
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ `miri_promise_symbolic_alignment`: pointer is not actually aligned | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ `miri_promise_symbolic_alignment`: pointer is not actually aligned
| |
= help: this is likely not a bug in the program; it indicates that the program performed an operation that the interpreter does not support = help: this is likely not a bug in the program; it indicates that the program performed an operation that Miri does not support
= help: if this is a basic API commonly used on this target, please report an issue; but note that Miri does not aim to support every FFI function out there
= note: BACKTRACE: = note: BACKTRACE:
= note: inside `main` at $DIR/promise_alignment.rs:LL:CC = note: inside `main` at $DIR/promise_alignment.rs:LL:CC

View File

@ -4,7 +4,8 @@ error: unsupported operation: `miri_promise_symbolic_alignment`: alignment must
LL | unsafe { utils::miri_promise_symbolic_alignment(buffer.as_ptr().cast(), 0) }; LL | unsafe { utils::miri_promise_symbolic_alignment(buffer.as_ptr().cast(), 0) };
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ `miri_promise_symbolic_alignment`: alignment must be a power of 2, got 0 | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ `miri_promise_symbolic_alignment`: alignment must be a power of 2, got 0
| |
= help: this is likely not a bug in the program; it indicates that the program performed an operation that the interpreter does not support = help: this is likely not a bug in the program; it indicates that the program performed an operation that Miri does not support
= help: if this is a basic API commonly used on this target, please report an issue; but note that Miri does not aim to support every FFI function out there
= note: BACKTRACE: = note: BACKTRACE:
= note: inside `main` at $DIR/promise_alignment_zero.rs:LL:CC = note: inside `main` at $DIR/promise_alignment_zero.rs:LL:CC

View File

@ -4,7 +4,8 @@ error: unsupported operation: unsized locals are not supported
LL | let x = *(Box::new(A) as Box<dyn Foo>); LL | let x = *(Box::new(A) as Box<dyn Foo>);
| ^ unsized locals are not supported | ^ unsized locals are not supported
| |
= help: this is likely not a bug in the program; it indicates that the program performed an operation that the interpreter does not support = help: this is likely not a bug in the program; it indicates that the program performed an operation that Miri does not support
= help: if this is a basic API commonly used on this target, please report an issue; but note that Miri does not aim to support every FFI function out there
= note: BACKTRACE: = note: BACKTRACE:
= note: inside `main` at $DIR/unsized-local.rs:LL:CC = note: inside `main` at $DIR/unsized-local.rs:LL:CC

View File

@ -4,7 +4,8 @@ error: unsupported operation: can't call foreign function `foo` on $OS
LL | foo(); LL | foo();
| ^^^^^ can't call foreign function `foo` on $OS | ^^^^^ can't call foreign function `foo` on $OS
| |
= help: this is likely not a bug in the program; it indicates that the program performed an operation that the interpreter does not support = help: this is likely not a bug in the program; it indicates that the program performed an operation that Miri does not support
= help: if this is a basic API commonly used on this target, please report an issue; but note that Miri does not aim to support every FFI function out there
= note: BACKTRACE: = note: BACKTRACE:
= note: inside `main` at $DIR/unsupported_foreign_function.rs:LL:CC = note: inside `main` at $DIR/unsupported_foreign_function.rs:LL:CC