@@ -20,7 +20,8 @@ for example:
20
20
or an invalid enum discriminant)
21
21
* ** Experimental** : Violations of the [ Stacked Borrows] rules governing aliasing
22
22
for reference types
23
- * ** Experimental** : Data races (but no weak memory effects)
23
+ * ** Experimental** : Data races
24
+ * ** Experimental** : Weak memory emulation
24
25
25
26
On top of that, Miri will also tell you about memory leaks: when there is memory
26
27
still allocated at the end of the execution, and that memory is not reachable
@@ -62,9 +63,11 @@ in your program, and cannot run all programs:
62
63
not support networking. System API support varies between targets; if you run
63
64
on Windows it is a good idea to use ` --target x86_64-unknown-linux-gnu ` to get
64
65
better support.
65
- * Threading support is not finished yet. E.g., weak memory effects are not
66
- emulated and spin loops (without syscalls) just loop forever. There is no
67
- threading support on Windows.
66
+ * Threading support is not finished yet. E.g. spin loops (without syscalls) just
67
+ loop forever. There is no threading support on Windows.
68
+ * Weak memory emulation may produce weak behaivours unobservable by compiled
69
+ programs running on real hardware when ` SeqCst ` fences are used, and it cannot
70
+ produce all behaviors possibly observable on real hardware.
68
71
69
72
[ rust ] : https://www.rust-lang.org/
70
73
[ mir ] : https://github.com/rust-lang/rfcs/blob/master/text/1211-mir.md
@@ -253,20 +256,20 @@ environment variable:
253
256
Using this flag is **unsound**.
254
257
* `-Zmiri-disable-data-race-detector` disables checking for data races. Using
255
258
this flag is **unsound**. This implies `-Zmiri-disable-weak-memory-emulation`.
259
+ * `-Zmiri-disable-isolation` disables host isolation. As a consequence,
260
+ the program has access to host resources such as environment variables, file
261
+ systems, and randomness.
256
262
* `-Zmiri-disable-stacked-borrows` disables checking the experimental
257
263
[Stacked Borrows] aliasing rules. This can make Miri run faster, but it also
258
264
means no aliasing violations will be detected. Using this flag is **unsound**
259
265
(but the affected soundness rules are experimental).
260
- * `-Zmiri-disable-weak-memory-emulation` disables the emulation of some C++11 weak
261
- memory effects.
262
266
* `-Zmiri-disable-validation` disables enforcing validity invariants, which are
263
267
enforced by default. This is mostly useful to focus on other failures (such
264
268
as out-of-bounds accesses) first. Setting this flag means Miri can miss bugs
265
269
in your program. However, this can also help to make Miri run faster. Using
266
270
this flag is **unsound**.
267
- * `-Zmiri-disable-isolation` disables host isolation. As a consequence,
268
- the program has access to host resources such as environment variables, file
269
- systems, and randomness.
271
+ * `-Zmiri-disable-weak-memory-emulation` disables the emulation of some C++11 weak
272
+ memory effects.
270
273
* `-Zmiri-isolation-error=<action>` configures Miri's response to operations
271
274
requiring host access while isolation is enabled. `abort`, `hide`, `warn`,
272
275
and `warn-nobacktrace` are the supported actions. The default is to `abort`,
0 commit comments