Commit Graph

1470 Commits

Author SHA1 Message Date
Ralf Jung
a38f02c44c isolated operations return EPERM; tweak isolation hint 2021-06-09 18:24:59 +02:00
Smit Soni
892f706ce5 Add a support to execute isolated op without halting
In user interface, added a new flag `-Zmiri-isolation-error` which
takes one of the four values -- hide, warn, warn-nobacktrace, and
abort. This option can be used to configure Miri to either abort or
return an error code upon executing isolated op. If not aborted, Miri
prints a warning, whose verbosity can be configured using this flag.

In implementation, added a new enum `IsolatedOp` to capture all the
settings related to ops requiring communication with the
host. Old `communicate` flag in both miri configs and machine
stats is replaced with a new helper function `communicate()` which
checks `isolated_op` internally.

Added a new helper function `reject_in_isolation` which can be called
by shims to reject ops according to the reject_with settings. Use miri
specific diagnostics function `report_msg` to print backtrace in the
warning. Update it to take an enum value instead of a bool, indicating
the level of diagnostics.

Updated shims related to current dir to use the new APIs. Added a new
test for current dir ops in isolation without halting machine.
2021-06-09 05:50:52 -07:00
hyd-dev
23c0495ebd
Update Box<Any> to Box<dyn Any> in catch_panic.stderr 2021-06-08 22:18:27 +08:00
Lander Brandt
ae237098f8 Add support for panicking in the emulated application when unsupported syscalls are encountered 2021-06-07 15:21:53 -07:00
Ralf Jung
0ece55d748
expand comment 2021-06-06 10:33:46 +02:00
hyd-dev
d7aff96053
Remove 2 tests 2021-06-06 11:22:25 +08:00
hyd-dev
879000b133
Detect std by checking if the crate defines #[lang = "start"] rather than string comparison 2021-06-06 11:12:05 +08:00
bors
28717a0e90 Auto merge of #1776 - hyd-dev:1170, r=RalfJung
Implement calls to exported symbols (#1170)

Closes #1170.
2021-06-03 15:59:56 +00:00
Pointerbender
386863ac53 added a strings.rs regression test case for potential future UB 2021-06-03 17:25:23 +02:00
hyd-dev
ba3b11fa42
Remove some tests 2021-06-03 14:16:58 +08:00
hyd-dev
e4e6c25f67
Remove FIXME in tests/compile-fail/panic/bad_unwind.rs 2021-06-03 13:39:33 +08:00
Pointerbender
c6dbe5cdca use references so that potential aliasing bugs are triggered during regression test 2021-06-02 15:36:18 +02:00
Pointerbender
b8aba11de3 regression tests for pointer invalidation in core library slice methods 2021-06-02 15:36:18 +02:00
Aaron Hill
73700bc01c
Rustup for const_err changes 2021-05-31 10:50:25 -05:00
hyd-dev
a952787163
Improve tests 2021-05-31 11:57:16 +08:00
hyd-dev
45832d4031
Remove duplicated "foreign function" 2021-05-31 11:57:15 +08:00
hyd-dev
41f33a64f8
Implement calls to exported symbols 2021-05-31 11:15:29 +08:00
hyd-dev
71f4140550
Add -Zmiri-disable-abi-check 2021-05-31 11:14:23 +08:00
hyd-dev
9b2d42587f
unwind is no longer Option<BasicBlock> 2021-05-28 22:08:51 +08:00
Ralf Jung
393ce98b32 fix a Stacked Borrows test whose output changed 2021-05-23 18:04:13 +02:00
Ralf Jung
dd404cc92e avoid importing C functions in alloc_write_race test 2021-05-19 15:27:58 +02:00
Ralf Jung
801a1744cd update for Memory API changes 2021-05-19 15:27:58 +02:00
Ralf Jung
7af7e9e4f3 rustup 2021-05-11 15:32:05 +02:00
hyd-dev
1ab9fd50a4
Update pointer error messages 2021-05-08 15:33:27 +08:00
Ralf Jung
a2b227f95a stacked borrows: ensure array-to-elem casts behave correctly 2021-05-07 09:24:33 +02:00
hyd-dev
47c5b6eb08
encountered a NULL reference -> encountered a null reference 2021-05-04 15:53:19 +08:00
Smitty
e0e59f6020 Simplify finiteness checking 2021-05-03 10:08:42 -04:00
Smitty
68d29554a8 test for infinite value in f*_fast 2021-05-03 09:56:51 -04:00
Smitty
e591b83185 UB if f*_fast intrinsic called with nonfinite value 2021-05-02 12:25:00 -04:00
hyd-dev
2da6bedaec
Use harness = false instead of #![feature(custom_test_frameworks)] 2021-05-01 22:28:33 +08:00
hyd-dev
b30c5fef5b
Rustup for rust-lang/rust#84401 2021-04-30 19:35:59 +08:00
Ralf Jung
4c741e5fb2 rustup 2021-04-25 16:57:48 +02:00
Ralf Jung
2ae699c56d make TLS-drop-test more cross-platform 2021-04-20 09:59:26 +02:00
Ralf Jung
d512ba2ae2 test thread_local_const_init 2021-04-18 11:01:08 +02:00
Charles Lew
85f7dd6131 Remove main_fn.rs test. 2021-04-17 00:04:09 +08:00
Aliénore Bouttefeux
648638976a allow deref of null ptr in test 2021-04-15 10:00:39 +02:00
Ralf Jung
0674d439b6 test calling pthread_cond_timedwait with an already elapsed timeout 2021-04-11 14:21:42 +02:00
Ralf Jung
21968aa53b add test to detect dropped temporary 2021-04-10 12:09:10 +02:00
hyd-dev
3dff1d4fcd
Don't use MIRI_DEFAULT_ARGS to compile host crates 2021-04-09 00:57:59 +08:00
Ralf Jung
31bd77c7d8 bump miri dependencies 2021-04-04 11:48:20 +02:00
Ralf Jung
de0f3f930b rustup 2021-03-28 01:36:41 +01:00
Ralf Jung
585e51aabd disable MIR opts for ZST-related tests 2021-03-25 12:44:30 +01:00
Ralf Jung
b4b048cc86 rustup; better comment in storage_dead_dangling test 2021-03-22 12:35:30 +01:00
hyd-dev
633ac2a222
Remove meaningless tests 2021-03-17 21:55:45 +08:00
hyd-dev
bbc348539b
Unsupported foreign non-"C"/"system"-ABI function calls are not UB 2021-03-17 21:20:04 +08:00
bors
0788188c7b Auto merge of #1743 - RalfJung:callee-checks, r=RalfJung
Check callee ABI when Miri calls closures

Fixes https://github.com/rust-lang/miri/issues/1741
2021-03-14 18:05:18 +00:00
Ralf Jung
15465a5881 don't ICE when we unwind despite panic=abort 2021-03-14 17:10:45 +01:00
Ralf Jung
c9ff02f549 ensure we catch incorrectly unwinding calls 2021-03-14 17:03:20 +01:00
Ralf Jung
d1dec9cd23 don't ICE when callee has the wrong number of arguments 2021-03-14 15:38:22 +01:00
Ralf Jung
893843fd45 when Miri calls a function ptr, make sure it has the right ABI 2021-03-14 15:30:37 +01:00
Ralf Jung
98f28ac9c8 rustup 2021-03-11 09:07:05 +01:00
Ralf Jung
7a7f7b1a7a rustup 2021-03-10 15:21:12 +01:00
Mara Bos
90e218ad90 Fix panic test. 2021-03-08 17:06:50 +01:00
Mara Bos
5bd5ea21ea Remove unwrap_none as it won't be stabilized.
This upgrades to the latest rustc to be able to use try_insert()
instead.
2021-03-08 16:59:20 +01:00
Smitty
26e97ec54f Support breakpoint intrinsic 2021-03-04 07:48:28 -05:00
bors
2670839e1a Auto merge of #1721 - henryboisdequin:add-atomic-min-and-max, r=oli-obk
Add atomic min and max

Closes #1718
Previous attempt: #1653

TODO:

- [x] Merge `atomic_op` and `atomic_min_max` functions
- [x] Fix CI

**Note:** this PR also removes arbitrary trailing whitespace and generally formats the affected files
2021-03-02 14:52:32 +00:00
Henry Boisdequin
f8440d6c99 Add in atomic_{min,max}_x intrinsics
Co-authored-by: Greg Bowyer <gbowyer@fastmail.co.uk>
2021-03-02 20:17:05 +05:30
Ralf Jung
97e45e0699 make optimized-test-run a bit more like what cargo does 2021-03-02 11:04:35 +01:00
Ralf Jung
7acf80d2bb rustup; fix tests for new MIR optimization 2021-03-02 10:57:08 +01:00
Ralf Jung
48f7c8e2e6 fix reborrowing of tagged ZST references 2021-02-27 20:10:50 +01:00
Ralf Jung
c003fd0157 rustup 2021-02-23 09:23:49 +01:00
Ralf Jung
a5a751e795 rustup 2021-02-17 09:37:21 +01:00
Ralf Jung
4c867feeb6 add test by @eddyb 2021-02-16 10:18:31 +01:00
Ralf Jung
0b3dba8e70 rustup and temporarily disable broken tests 2021-02-16 09:55:33 +01:00
Caleb Zulawski
dd81fb3f10 Remove non-power-of-two SIMD vectors 2021-02-08 00:17:24 -05:00
Mara Bos
7fc24442bd Update rust version.
- Allow new non_fmt_panic lint in test.
- Remove stabilized feature(wake_trait).
2021-02-05 10:08:05 +01:00
Ralf Jung
d309804395 rustup 2021-02-03 23:37:40 +01:00
Ralf Jung
6f5a91f70a rustup 2021-01-31 13:12:25 +01:00
Ralf Jung
9d777d8410 add test for caller ABI check 2021-01-29 21:16:17 +01:00
bors
a0485c5a90 Auto merge of #1686 - thomcc:cmpxchg_weak, r=oli-obk
Add random failures to compare_exchange_weak

In practice this is pretty useful for detecting bugs.

This fails more frequently than realistic (~~50%~~ (now 80%, controlled by a flag) of the time). I couldn't find any existing code that tries to model this (tsan, cdschecker, etc all seem to have TODOs there). Relacy models it with a 25% or 50% failure chance depending on some settings.

CC `@JCTyblaidd` who wrote the code this modifies initially, and seems interested in this subject.
2021-01-28 09:52:04 +00:00
Ralf Jung
e308eeb3f1 rustup; more slack for timing tests 2021-01-27 10:44:08 +01:00
Ralf Jung
0e56bff5f9 erroneous_const span now changes with inlining 2021-01-26 11:48:11 +01:00
Ralf Jung
d38e861f1e rustup; allow some lints 2021-01-26 11:43:39 +01:00
Thom Chiovoloni
d4b592ed17 Fail 80% of the time on weak cmpxchg, not 50% 2021-01-26 00:13:54 -08:00
Thom Chiovoloni
efd2d55e00 review nits 2021-01-26 00:13:54 -08:00
Thom Chiovoloni
b6eccc6482 Test that _weak atomics sometimes fail 2021-01-26 00:13:54 -08:00
Thom Chiovoloni
c678bd722e Add random failures to compare_exchange_weak 2021-01-26 00:13:54 -08:00
Ralf Jung
3990debf82 rustup; test swap of element with itself 2021-01-22 09:22:53 +01:00
Ralf Jung
7125b86c33 remove some unnecessary feature gates 2021-01-16 18:27:10 +01:00
Ralf Jung
4a035103dc rustup; make tests pass again 2021-01-15 16:41:14 +01:00
Ralf Jung
82c6c77b9a test Weak into_raw/from_raw on dangling ptrs 2020-12-31 13:11:34 +01:00
Ralf Jung
7e198147df panicing now works with -Zmiri-track-raw-pointers 2020-12-31 00:17:08 +01:00
Ralf Jung
a81ebd8fe3 rustup; add an interesting alias test case 2020-12-29 19:27:45 +01:00
Ralf Jung
3d151c8b62 leak checker: also test AtomicPtr stored via 'swap' 2020-12-21 11:36:39 +01:00
JCTyBlaidd
aaf8ca4c77 Fix review changes 2020-12-13 11:04:58 +00:00
JCTyBlaidd
4e74f9f013 Change to disable mir-opt in compile-flags 2020-12-13 11:04:58 +00:00
JCTyBlaidd
3df67141e6 Disable tests in windows 2020-12-13 11:04:58 +00:00
JCTyBlaidd
a30105df0b Defeat the mir-opt=3 optimizer. 2020-12-13 11:04:58 +00:00
JCTyBlaidd
8676c60f87 Update note 2020-12-13 11:04:58 +00:00
JCTyBlaidd
296ba8b1c8 Fix bug with reporting wrong thread for races with reads & add thread ids to data-race tests 2020-12-13 11:04:58 +00:00
JCTyBlaidd
fbe7fbb890 Add concurrent caller location test 2020-12-13 11:04:58 +00:00
JCTyblaidd
c4ccd0b6a1 Fix nits
Co-authored-by: bjorn3 <bjorn3@users.noreply.github.com>
2020-12-13 11:04:58 +00:00
JCTyBlaidd
f4bcef1113 Increase sleep times for the scheduler 2020-12-13 11:04:58 +00:00
JCTyBlaidd
c45b1b16be More tests, fix issue 1643 and detect races with allocation. 2020-12-13 11:04:58 +00:00
Ralf Jung
27a518e166 enable track-raw-ptr tests on Windows 2020-12-11 11:28:33 +01:00
Ralf Jung
7bbd6bca77 rustup 2020-12-10 19:53:45 +01:00
Ralf Jung
2f0d7d38b4 rustup; test AtomicPtr leak checker 2020-12-10 00:09:52 +01:00
bors
a2fa80d277 Auto merge of #1641 - JCTyblaidd:update_release_sequences, r=RalfJung
Weaken release sequences to match the C++20 memory model

See [Weaken Release Sequences](http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2018/p0982r1.html), since the exception for relaxed writes on the same thread as a release write not blocking release sequences was removed in the C++20 memory model compared to the C11 memory model the paper was based on. The implementation can be updated and simplified to match this.  [Rust is currently specified to use the C++20 memory model](https://doc.rust-lang.org/std/sync/atomic/index.html).
2020-12-06 19:12:16 +00:00
JCTyBlaidd
a6f377e48e Fix typo 2020-12-06 17:11:24 +00:00
JCTyBlaidd
4cf614ef33 Update release sequence handling to C++20 semantics. 2020-12-06 16:58:32 +00:00