hyd-dev
ce7040075a
Disallow #[no_mangle]
/#[export_name = ...]
functions that have the same symbol name as built-in shims
2021-06-11 15:18:47 +08:00
hyd-dev
6aef1d687d
Remove erroneous exit()
and ExitProcess()
in tests/run-pass/function_calls/exported_symbol.rs
2021-06-11 13:32:00 +08:00
hyd-dev
4f3718ef85
Fix the wrong EmulateByNameResult::NotSupported
in syscall
shim
2021-06-11 11:44:57 +08:00
bors
e5c3af6f51
Auto merge of #1818 - landaire:feature/panic-on-unsupported-syscalls, r=RalfJung
...
Add support for panicking in the emulated application when unsupported functionality is encountered
This PR fixes #1807 and allows an optional flag to be specified to panic when an unsupported syscall is encountered. In essence, instead of bubbling up an error in the context of the Miri application Miri will panic within the context of the *emulated* application. This feature is desired to allow CI pipelines to determine if a Miri failure is unsupported functionality or actual UB. Please read [this comment](https://github.com/rust-lang/miri/issues/1807#issuecomment-845425076 ) for the rationale behind this change.
Note: this change does not cover all cases where unsupported functionality errors may be raised. If you search the repo for `throw_unsup_format!` there are many cases that I think are less likely to occur and may still be problematic for some folks.
TODO:
- [x] README documentation on this new flag
- [x] Add tests
2021-06-09 18:09:06 +00:00
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
Mara Bos
de5b26d7f0
Use new std::alloc::Allocator interface.
...
This was changed in core.
2020-12-05 00:13:33 +01:00
bors
d473242ecd
Auto merge of #1617 - JCTyblaidd:data_race_detector, r=RalfJung
...
Add simple data-race detector
Partially fixes data-race detection, see #1372 , based on Dynamic Race Detection for C++11
- This does not explore weak memory behaviour, only exploring one sequentially consistent ordering.
- Data-race detection is only enabled after the first thread is created, so should have minimal overhead for non-concurrent execution.
- ~~Does not attempt to re-use thread id's so creating and joining threads lots of time in an execution will result in the vector clocks growing in size and slowing down program execution~~ It does now
2020-11-29 18:44:28 +00:00
JCTyBlaidd
55fc552d99
Apply review changes, incrementing the clocks twice is an unnecessary hold-over from earlier versions so fixed.
2020-11-27 19:26:06 +00:00
JCTyBlaidd
3268f56a97
Fix review changes
2020-11-22 17:28:12 +00:00
Ralf Jung
7a2c2f8dde
rustup; test sorting for provenance-correctness
2020-11-22 18:08:57 +01:00
est31
4de113acba
Normalize column numbers
2020-11-19 09:21:11 +01:00
JCTyBlaidd
a3b7839bbd
Add comment regarding seq-cst ordering & add test for disabling the data-race detector.
2020-11-15 20:12:58 +00:00
JCTyBlaidd
69fb6413dd
Tidy up comments and function layout, should fix most of the review notes.
2020-11-15 18:30:26 +00:00
Ralf Jung
915d091973
rustup; less strict timing tests
2020-11-12 16:50:24 +01:00
Ralf Jung
df0de77fd1
test btreemap with raw ptr tracking
2020-11-10 16:51:55 +01:00
Ralf Jung
db718d72ae
remove some unnecessary feature flags
2020-11-10 16:51:07 +01:00
Ralf Jung
737ecef376
rustup and update test
2020-11-10 16:47:56 +01:00
JCTyBlaidd
2a40d9b7a0
More aggressive vector index re-use, and added some tests.
2020-11-06 17:29:54 +00:00
Ralf Jung
f31f00d5af
rustup
2020-11-05 17:09:44 +01:00
JCTyBlaidd
95c99b2044
Detect races between atomic and non-atomic accesses of a variable,
...
previously only data races between two non-atomic accesses were
detected.
2020-11-04 21:35:48 +00:00
JCTyBlaidd
fe2e857cc3
Add newlines at end of file + use replace.
...
add dangling thread variant of one of the benchmarks
2020-11-02 13:08:09 +00:00
JCTyBlaidd
2e75de5ac9
Mark all new tests as disabled on windows
2020-11-02 12:40:12 +00:00
JCTyBlaidd
ed32b260f9
Add tests, and fix bug in atomic RMW relaxed stores
2020-11-02 02:57:06 +00:00
Ralf Jung
00bc944eea
test Rc with raw pointer tracking
2020-10-31 16:24:34 +01:00
Ralf Jung
f936bc6b92
fix writing to read-only raw pointer in thread-local test
2020-10-31 16:24:34 +01:00
Ralf Jung
80a0a12b07
Stacked Borrows: test raw-ref-to-field with raw ptr tracking
2020-10-31 16:24:34 +01:00
Ralf Jung
e7246be4f0
backtrace tests: support more ways of checking out Rust locally
2020-10-31 13:47:42 +01:00
Ralf Jung
2a4faf638b
increase timeout to avoid spurious test failures
2020-10-30 18:59:58 +01:00
Ralf Jung
1ad827c511
rustup
2020-10-29 20:57:38 +01:00
bors
83f7657ed0
Auto merge of #1603 - RalfJung:track-raw, r=oli-obk
...
add an option to track raw pointer tags in Stacked Borrows
Also make error messages more informative by printing the affected memory location
2020-10-28 13:19:25 +00:00
Ralf Jung
bf54607ba0
test raw pointer tracking; we cannot track raw pointers on Windows
2020-10-28 13:54:50 +01:00
Ralf Jung
1044099c19
disable debug assertions in the standard library
2020-10-28 12:43:11 +01:00
Ralf Jung
19e78a65d9
run some tests with raw pointer tracking
2020-10-28 12:35:05 +01:00
Ralf Jung
ecf330f39e
test Box::into_raw aliasing
2020-10-27 17:26:36 +01:00
Ralf Jung
ddcc4f241e
rustup; make panic output less dependent on stdlib internals
2020-10-25 10:00:50 +01:00
Ralf Jung
80c4b5d674
fix './miri test'
2020-10-22 10:36:05 +02:00
Ralf Jung
ad07b2bd44
rustup; increase slack for timing tests
2020-10-22 09:47:02 +02:00
Aaron Hill
05bb560de2
Enable backtrace
feature in the generated Xargo.toml
...
This allows the normal std panic hook to print a backtrace if
`RUST_BACKTRACE=1` and `-Z miri-disable-isolation` are set
2020-10-20 18:27:55 -04:00
bors
d5380be209
Auto merge of #1586 - RalfJung:available-concurrency, r=RalfJung
...
test new available_concurrency function
Cc https://github.com/rust-lang/rust/pull/74480
2020-10-18 09:22:59 +00:00
Ralf Jung
5df6d8bec6
test new available_concurrency function
2020-10-18 11:22:09 +02:00
Aaron Hill
8b10dbfeaa
Test std::backtrace::Backtrace
...
Fixes #1578
2020-10-17 19:45:26 -04:00
Ralf Jung
67cf6c2176
rustup; the bad compile times for the float test are fixed
2020-10-18 00:49:52 +02:00
Aaron Hill
be51e6bd07
Add an fn_ptr
field to MiriFrame
...
The `backtrace-rs` crate can use this to implement
`Frame::symbol_address`, which is used to skip frames
above the call to `Backtrace::capture` on the stack.
The function pointer will not be useable for comparison purposes if the
function is generic, as CTFE creates a new function pointer for each
cast of a (monomorphized) generic function. However, this already
affects code running under Miri, and isn't a problem for `backtrace-rs`
(which only casts a non-generic function).
I've added logic to allow `MiriFrame` to have either 4 or 5 fields - if
a 5th field is present, we write the function pointer to it.
2020-10-10 13:07:57 -04:00
Ralf Jung
3e655665b7
test VecDeque::iter_mut aliasing
2020-10-07 09:00:55 +02:00
Aaron Hill
8e8828259a
Use macro callsite spans in backtrace
...
This mirrors what we do in the debuginfo used for runtime backtraces.
2020-10-05 17:29:55 -04:00
bors
60c1075820
Auto merge of #1564 - Aaron1011:readlink, r=RalfJung
...
Implement `readlink`
Due to the truncating behavior of `readlink`, I was not able to
directly use any of the existing C-cstring helper functions.
2020-10-04 21:07:55 +00:00
Aaron Hill
4eea02e725
Normalize MIRI_TEMP before using it
2020-10-04 16:26:09 -04:00
Ralf Jung
02257870a6
rustup; test NaN conversion issue
2020-10-04 18:56:51 +02:00
Aaron Hill
bbba87ce54
Swap order of assertions for easier debugging
2020-10-04 12:06:51 -04:00
Aaron Hill
5fc5490bc8
Add trailing punctuation
...
Co-authored-by: Ralf Jung <post@ralfj.de>
2020-10-04 12:06:51 -04:00
Aaron Hill
0e59b6f673
Merge fs
and fs_libc
tests
2020-10-04 12:06:51 -04:00
Aaron Hill
78bc89b4fc
Implement readlink
...
Due to the truncating behavior of `readlink`, I was not able to
directly use any of the existing C-cstring helper functions.
2020-10-04 12:06:51 -04:00
Ralf Jung
a4cbbddc8e
merge parking test into general synchronization test
2020-10-03 15:27:23 +02:00
Ralf Jung
b350c80a31
add backtics back in isolation error message
2020-10-03 15:25:30 +02:00
Mara Bos
dc36988f38
Add test for futex syscall.
2020-10-03 13:34:49 +02:00
Mara Bos
5880e7d809
Update expected error messages in tests.
2020-10-03 12:00:29 +02:00
Mara Bos
81138825b3
Add park/park_timeout/unpark test.
2020-10-02 23:35:00 +02:00
Ralf Jung
17e16aad62
normalize backtrace stderr even more
2020-09-30 10:02:53 +02:00
Aaron Hill
7fba3c2cf2
Normalize out generic arguments in backtrace-api stderr
2020-09-28 13:55:23 -04:00
Aaron Hill
5571bcfc4f
Require #[repr(C)] on MiriFrame
2020-09-28 13:44:46 -04:00
Aaron Hill
dba7f13549
Apply #[inline(never)] to functions that we want in the backtrace
2020-09-28 13:44:46 -04:00
Aaron Hill
e1bce19ca9
Make some error messages lowercase
2020-09-28 13:44:45 -04:00
Aaron Hill
b89f6561e5
Move things around
2020-09-28 13:44:45 -04:00
Aaron Hill
9fc384fcf9
Print non-std frames to stdout in backtrace-api
test
2020-09-28 13:44:45 -04:00
Aaron Hill
ef43c5a614
Use a 'flags' parameter instead of 'version'
2020-09-28 13:44:45 -04:00
Aaron Hill
ae18659d52
Normalize line and column numbers from the sysroot
2020-09-28 13:44:45 -04:00
Aaron Hill
22f1eb01ee
Add API for capturing backtrace
...
This PR adds two new Miri-defined extern functions:
`miri_get_backtrace` and `miri_resolve_frame`, which are documented in
the README. Together, they allow obtaining a backtrace for the currently
executing program.
I've added a test showing how these APIs are used. I've also prepared a
companion PR `backtrace-rs`, which will allow
`backtrace::Backtrace::new()` to work automatically under Miri.
Once these two PRs are merged, we will be able to print backtraces from
the normal Rust panic hook (since libstd is now using backtrace-rs).
A few notes:
* Resolving the backtrace frames is *very* slow - you can actually see
each line being printed out one at a time. Some local testing showed
that this is not (primrary) caused by resolving a `Span` - it seems
to be just Miri being slow.
* For the first time, we now interact directly with a user-defined
struct (instead of just executing the user-provided MIR that
manipulates the struct). To allow for future changes, I've added
a 'version' parameter (currently required to be 0). This should allow
us to change the `MiriFrame` struct should the need ever arise.
* I used the approach suggested by @oli-obk - a returned backtrace
pointer consists of a base function allocation, with the 'offset'
used to encode the `Span.lo`. This allows losslessly reconstructing
the location information in `miri_resolve_frame`.
* There are a few quirks on the `backtrace-rs` side:
* `backtrace-rs` calls `getcwd()` by default to try to simplify
the filename. This results in an isolation error by default,
which could be annoying when printing a backtrace from libstd.
* `backtrace-rs` tries to remove 'internal' frames (everything between
the call to `Backtrace::new()` and the internal API call made by
backtrace-rs) by comparing the returned frame pointer value to
a Rust function pointer. This doesn't work due to the way we
construct the frame pointers passed to the caller. We could
attempt to support this kind of comparison, or just add a
`#[cfg(miri)]` and ignore the frames ourselves.
2020-09-28 13:44:45 -04:00
Ralf Jung
67c5067a2f
rustup; fix tests
2020-09-24 09:19:03 +02:00
Ralf Jung
4b5e78052a
rustup; support panic=abort on Windows
2020-09-20 15:55:36 +02:00
Ralf Jung
08e076c658
account for mir-opts masking more errors
2020-09-20 12:18:02 +02:00
Ralf Jung
83a339e5a9
rustup; make sure the iterator moves even with smarter optimizations
2020-09-20 10:26:22 +02:00
Ralf Jung
32cdb7131b
support panic=abort
2020-09-18 13:10:18 +02:00
Ralf Jung
9a9988a4b0
update docs, and also use MIRIFLAGS for the test suite
2020-09-17 17:29:19 +02:00
Ralf Jung
bc548d3004
test BTreeMap::drain_filter for leaks
2020-09-11 12:20:08 +02:00
Ralf Jung
e61be0b8b8
expand collection tests
2020-09-10 08:44:27 +02:00
Samrat Man Singh
563fb8e43d
Implement dup and close for stdin/stdout/stderr
...
Support F_DUPFD on stdin/stdout/stderr
Enable `close`-ing stdin/stdout/stderr
For `dup`, check if FD is `File` first
If not, clone the appropriate standard IO stream
Merge POSIX `close` and `dup` tests into same module
Also, add assertion that `write` on a closed FD returns an error.
Add `dup` as FileDescriptor trait fn
Also:
- Fix `close` so it drops `self` instead of reference to it
- Remove FD clamping in insert_fd_with_min_fd, since FDs 0-2 can be
closed
Fix fs_libc tests
Make error message when closing stdin/out/err more specific
Return io::Result from `FileDescriptor::dup`
Change error message when closing stdin/out/err
Refactor `FileDescriptor::dup` impl for `FileHandle`
Remove empty line
2020-09-09 23:26:33 +05:30
bors
604a674ea3
Auto merge of #1536 - divergentdave:nanosleep, r=RalfJung
...
Nanosleep
This PR adds a shim for `libc::nanosleep`, (available under -Zmiri-disable-isolation only) which backs `thread::sleep` on Linux and macOS. I started off by extracting the `timespec` parsing from the `pthread_cond_timedwait` shim into a helper method, and adding checks for invalid values. The second commit adds the new shim and a small test. The shim blocks the current thread, and registers a timeout callback to unblock the thread again, using the same method as `pthread_cond_timedwait` does.
2020-09-08 08:26:33 +00:00
David Cook
06aaea1d6b
Update comment
2020-09-07 15:05:26 -05:00
David Cook
33e928c9ca
Review comments
2020-09-07 10:54:39 -05:00
Ralf Jung
3fdbc0fd3f
fix referenced issue
2020-09-07 13:10:31 +02:00
Ralf Jung
3ba1035d27
use standard black_box function
2020-09-07 11:29:47 +02:00
Ralf Jung
029c851d7c
another optimization work-around
2020-09-07 11:23:09 +02:00
Ralf Jung
088af66f85
better optimization suppression
...
Co-authored-by: bjorn3 <bjorn3@users.noreply.github.com>
2020-09-07 11:16:16 +02:00
Ralf Jung
d9bc19a7b0
test opt-level 2
2020-09-07 10:43:49 +02:00
Ralf Jung
210f18d6c7
work around rustc optimizations becoming too smart
2020-09-07 10:24:38 +02:00
David Cook
417ac2939a
Implement libc::nanosleep shim
2020-09-06 18:07:17 -05:00
David Cook
6d323e1032
Refactor timespec parsing, improve error handling
2020-09-06 18:07:14 -05:00
bors
c28a8eeb74
Auto merge of #1532 - divergentdave:thread-panic-payload, r=RalfJung
...
Move panic payload state from Machine to Thread
This PR moves the panic payload storage from the `Machine` state to per-thread state. Prior to this change, if one thread panicked while another was still unwinding, Miri would fail with `thread 'rustc' panicked at 'the panic runtime should avoid double-panics', src/shims/panic.rs:51:9`. I ran into this issue while prototyping a round-robin scheduler, but it's also reachable with the current scheduler and contrived programs that use blocking API calls to cause thread switching during unwinding. I wrote a test case along those lines for this change.
2020-09-03 10:09:34 +00:00
David Cook
7a2c6812b9
Per-thread errno storage
2020-09-02 20:57:20 -05:00
Ralf Jung
3466462306
rustup, fix test
2020-09-01 10:55:09 +02:00
David Cook
da2f268443
Review comments
2020-08-31 19:32:14 -05:00
David Cook
3ba7f46058
Move panic payload state from Machine to Thread
2020-08-29 21:38:37 -05:00
Ralf Jung
39e6baeb91
rustup
2020-08-27 09:27:58 +02:00
Ralf Jung
2f9de18f88
rustup; account for ptr_offset_from stabilization
2020-08-24 10:06:44 +02:00
Ralf Jung
df9b2127ce
fix a test for big-endian targets
2020-08-22 18:07:43 +02:00
Ralf Jung
237bea2c17
avoid promotion in alignment test to get different alignment on each try
2020-08-20 10:14:13 +02:00
Ralf Jung
d5b15297ac
forgot to add alignment test loop in one test
2020-08-18 10:19:29 +02:00
Ralf Jung
5b1bc4ba94
make another test more robust against random alignment
2020-08-17 18:22:46 +02:00
Ralf Jung
0913653e06
make sure we test panic of interpreter-impelemted align_offset
2020-08-16 18:31:48 +02:00
Ralf Jung
d4e5943259
use real align_offset unless we symbolic alignment check is enabled
2020-08-16 18:26:04 +02:00
Ralf Jung
cb985670c1
make alignment check integer-based by default, and add an option to make it symbolic
2020-08-16 17:08:38 +02:00
Ralf Jung
80929e17ae
add test for unused ill-formed constant
...
also use better span in TopFrameInfo
2020-08-13 08:33:36 +02:00
Ralf Jung
da2260db44
make sure opening a file fails with isolation enabled
2020-08-10 10:10:08 +02:00
Ralf Jung
5657f08bea
fs: move isolation handling to inside trait
2020-08-08 15:24:30 +02:00
bors
cf633d0e89
Auto merge of #1498 - RalfJung:rustup, r=RalfJung
...
rustup
The allocator API changed *again*, adjust our test.
2020-08-05 11:39:07 +00:00
Ralf Jung
422113a491
rustup
2020-08-05 13:38:15 +02:00
Samrat Man Singh
bdef57ea45
Flush to stdout from FileDescriptor::write for Stdout
...
Also, remove unnecessary `-Zmiri-disable-isolation` in test
2020-08-04 20:40:48 +05:30
Samrat Man Singh
bea7113eb8
Add impl FileDescriptor
for stdin, stdout, stderr
...
- Use `FileDescriptor::read` for stdin reads
- Use `FileDescriptor::write` for stdout/err writes
- Handle stdout/err reads in `FileDescriptor::read`
2020-08-04 01:14:52 +05:30
Ralf Jung
5d22145069
test unwinding past topmost frame of a stack
2020-08-01 14:20:05 +02:00
Ralf Jung
35309a200b
rustup; fix linked_list test
2020-08-01 14:18:52 +02:00
Ralf Jung
729ccbc65e
test track_caller on trait objects
2020-07-31 18:30:07 +02:00
Ralf Jung
ee39ac9840
rustup for new folder layout
2020-07-29 14:27:14 +02:00
Ralf Jung
cae90b6d29
rustup and test fixes
2020-07-27 23:40:27 +02:00
Ralf Jung
c77540ce13
deallocate thread-local statics when the thread dies
2020-07-27 23:32:15 +02:00
Ralf Jung
2a42f8e93c
fix and test order of TLS dtors and thread joining
2020-07-27 23:32:15 +02:00
Ralf Jung
390899e8b9
test referencing unsupported extern static
2020-07-27 23:32:15 +02:00
Ralf Jung
bc0569253f
enable leak check tests on Windows
2020-07-23 15:56:38 +02:00
Ralf Jung
f68bba9906
test casting a dangling ptr back from an int
2020-07-11 20:56:47 +02:00
Justus K
d23e245f38
Move no_main test to compile-fail
2020-07-09 17:21:09 +02:00
Justus K
c93fc933bd
Add ui test for early exiting if no main
2020-07-09 14:08:45 +02:00
Ralf Jung
6c2521f54f
adjust error messages
2020-07-07 22:48:51 +02:00
Ralf Jung
28b44d970c
test validation of uninit memory (used to ICE)
2020-07-07 22:48:51 +02:00
Ralf Jung
6ca67a346b
rustup
2020-07-02 10:48:01 +02:00
Ralf Jung
fcdacce4b1
fix some ignore-windows comments
2020-06-28 20:40:20 +02:00
Ralf Jung
3a5bcb97ed
move rwlock dequeuing to shared code, and use that code for Windows rwlocks
2020-06-28 11:28:46 +02:00
Ralf Jung
e54619b5e1
with this, we support panics on Windows
2020-06-27 14:43:37 +02:00
Ralf Jung
dca00ab85e
introduce platform-specific module hierarchy for dlsym (similar to foreign_items)
2020-06-27 14:36:05 +02:00
bors
bde2eb4a44
Auto merge of #1460 - RalfJung:modules, r=RalfJung
...
Re-organize platform-specific shims
Move platform-specific code to `shims::{posix::{linux, macos}, windows}`. Also make it private in these modules to ensure we are reasonably structured.
2020-06-27 11:27:36 +00:00
Ralf Jung
395f5d40dc
Rename shims::{sync -> posic_sync} and move sync_singlethread test to other sync test
2020-06-27 12:37:12 +02:00
Ralf Jung
b46f946c81
supply our own implementation of the CTFE pointer comparison intrinsics
2020-06-27 11:57:43 +02:00
Ralf Jung
3ea8c5fa33
bump Rust
2020-06-26 20:36:08 +02:00
Ralf Jung
2e5a0dc172
add a miscompilation test
2020-06-22 11:32:01 +02:00
Ralf Jung
8d1d572472
unaligned-raw-deref is always UB
2020-06-20 14:34:57 +02:00
Ralf Jung
03fe3772a8
make sure the raw_ptr macros also avoid UB
2020-06-20 14:31:47 +02:00
Ralf Jung
a29f86b512
make sure '&raw *' on a dangling raw ptr is UB
2020-06-20 14:28:55 +02:00
Ralf Jung
2940da9d1f
bump Rust
2020-06-20 11:48:42 +02:00
bors
ffd03b3caa
Auto merge of #1418 - divergentdave:file-sync, r=RalfJung
...
Add file sync shims
This PR adds shim implementations for these related file syncing functions.
* `fsync`, for POSIX targets, backed by `File::sync_all()`
* `fdatasync`, for POSIX targets, backed by `File::sync_data()`
* `fcntl` with command `F_FULLFSYNC`, for macOS targets, backed by `File::sync_all()`
* `sync_file_range`, for Linux targets, backed by `File::sync_data()`
2020-06-09 08:48:40 +00:00
David Cook
e352d4fbb7
Finish fixing Windows host support
2020-06-06 16:54:13 +00:00
Ralf Jung
dcb2b30982
rustup, and adjust timing tests
2020-06-03 09:40:21 +02:00
Ralf Jung
7d406b152a
test WTF8 encoding corner cases
2020-06-01 01:12:31 +02:00
bors
4fd0aa316e
Auto merge of #1441 - RalfJung:sync-cleanup, r=RalfJung
...
Synchronization primitive cleanup
Make some methods infallible, move a bit more work into the platform-independent `sync.rs`, and fix a bug in rwlock unlocking.
2020-05-31 09:10:19 +00:00
Ralf Jung
3032224d19
rustup, adjust error message
2020-05-31 10:30:25 +02:00
Ralf Jung
acb3ec0866
test and fix for rwlock unlock bug
2020-05-30 22:48:43 +02:00
Ralf Jung
c77e9022d5
rustup (and account for stabilization)
2020-05-30 09:23:25 +02:00
Ralf Jung
ac454a2485
cargo-miri: allow overwriting miri command, and make that consistent with compiletest
2020-05-28 08:53:44 +02:00
David Cook
3252082474
Fix test on Windows hosts
...
FlushFileBuffers requires that a file be opened for writing
2020-05-25 13:20:29 -05:00
David Cook
7ba8bbc49f
Update comments
2020-05-25 07:32:56 -05:00
Vytautas Astrauskas
34ddd775e8
Increase the elapsed time window.
2020-05-25 08:07:07 +02:00
Vytautas Astrauskas
90590a399d
Small fixes.
2020-05-25 00:02:54 +02:00
Vytautas Astrauskas
6ff0af3adf
Fix #1419 .
2020-05-25 00:02:54 +02:00
Vytautas Astrauskas
bd97074517
Small changes.
2020-05-25 00:02:54 +02:00
Vytautas Astrauskas
babedc938e
Rewrite notify all test.
2020-05-25 00:02:54 +02:00
Vytautas Astrauskas
8b5a9836be
Small changes.
2020-05-25 00:02:54 +02:00
Vytautas Astrauskas
fdfd56b75b
Small changes.
2020-05-25 00:02:54 +02:00
Vytautas Astrauskas
86eb262e8a
Cleanup Condvar tests.
2020-05-25 00:02:54 +02:00
Vytautas Astrauskas
4a303b1309
Add a timeout test for conditional variables.
2020-05-25 00:02:54 +02:00
Vytautas Astrauskas
6e774dec86
Move all run-pass synchronization primitive tests to sync.rs.
2020-05-25 00:02:54 +02:00
Vytautas Astrauskas
679245769b
Implement support for synchronization primitives.
2020-05-25 00:02:54 +02:00
Ralf Jung
e6ced2f9c4
add interesting unsizing test
2020-05-24 12:03:06 +02:00
bors
70d5caf17e
Auto merge of #1429 - RalfJung:discriminant_value, r=RalfJung
...
test discriminant_value intrinsic
Make sure this works for all types, not just enums/generators.
2020-05-23 14:31:37 +00:00
Ralf Jung
404c37999b
test discriminant_value intrinsic
2020-05-23 16:30:50 +02:00
David Cook
87a846f2d6
Update to match rustc changes
2020-05-22 17:03:25 +02:00
Ralf Jung
cc1a2119f6
adjust for changed allocation strategy
2020-05-20 00:00:35 +02:00
David Cook
0b060c7364
Review comments
2020-05-19 08:57:31 -05:00
David Cook
87c4694448
Add file sync shims
...
Adds implementations for fsync, fdatasync, and sync_file_range
2020-05-17 22:10:40 -05:00
Ralf Jung
791ec8fef7
fmt
2020-05-11 10:54:21 +02:00
Ralf Jung
88fc42bbc8
compiletest: no need to call rustc here
2020-05-11 10:52:44 +02:00
Oliver Scherer
3fdab9c446
Update to rustc changes
2020-05-10 10:14:03 +02:00
Ralf Jung
b4ad90669b
rustup
2020-05-07 23:59:26 +02:00
Ralf Jung
fb3a067ac6
rustup; fix error messages
2020-05-07 08:38:59 +02:00
Ralf Jung
da6846c8a9
copy some float cast tests from rustc
2020-05-06 22:46:42 +02:00
Chase Albert
f741f2cc71
Correct the test.
2020-05-04 23:22:00 -04:00
Chase Albert
f46d197431
Test for too many args.
2020-05-04 13:51:23 -04:00
Chase Albert
46aaab30fe
Add a test for check_arg_count.
2020-05-04 13:51:23 -04:00
Ralf Jung
ec95ed4556
rename single-threaded sync test
2020-05-04 09:45:15 +02:00
Ralf Jung
f2f4e6fc65
also test panic from thread with name
2020-05-03 12:51:48 +02:00
Ralf Jung
c26fb591fa
also test std::hint::spin_loop
2020-05-03 12:47:23 +02:00
Ralf Jung
2b591b849f
test panics in threads
2020-05-03 12:43:38 +02:00
Ralf Jung
ff1f0b06cc
explain what happens in a test
2020-05-03 12:43:38 +02:00
Ralf Jung
dbd6403955
rustup for fixed error messages
2020-05-02 02:13:48 +02:00
Ralf Jung
393165f859
rustup; fix for changed error messages
2020-05-01 14:43:59 +02:00
Ralf Jung
1a704a517a
rustup, adjust error messages
2020-05-01 10:29:39 +02:00
Vytautas Astrauskas
48da0cf489
Fix prctl SET_NAME and GET_NAME behaviour.
2020-04-30 08:35:59 -07:00
Vytautas Astrauskas
3b5854191c
Fix MacOS and Windows builds.
2020-04-27 15:21:01 -07:00
Vytautas Astrauskas
331dbd1469
Add a test for joining in a destructor.
2020-04-27 14:26:36 -07:00
Vytautas Astrauskas
39efdf31cf
Move prctl test to the same file as other libc tests.
2020-04-27 14:26:36 -07:00
Vytautas Astrauskas
60cd8aa4b0
Delete a duplicate test.
2020-04-27 14:26:36 -07:00
Vytautas Astrauskas
ff5e35b90a
Added a test that joining main is UB.
2020-04-27 14:26:36 -07:00
Vytautas Astrauskas
feb188360e
Unify TLS dtors; move stepping outside.
2020-04-27 14:26:36 -07:00
Vytautas Astrauskas
8240ed26a9
Change the test not to rely on internals.
2020-04-27 14:26:36 -07:00
Vytautas Astrauskas
90e9a87fa7
Add an explanatory comment to the test.
2020-04-27 14:26:36 -07:00
Vytautas Astrauskas
cc9248a7c8
Ignore prctl test on MacOS because it does not support it.
2020-04-27 14:26:36 -07:00
Vytautas Astrauskas
eaa63266d8
Make multiple threads to try to join a thread while it is still running.
2020-04-27 14:26:36 -07:00
Vytautas Astrauskas
8a7dbde372
Check prctl argument types and fix the test.
2020-04-27 14:26:36 -07:00
Vytautas Astrauskas
40e50bf58b
Clarify test comments.
2020-04-27 14:26:36 -07:00
Vytautas Astrauskas
e7b82fde4a
Fix the test annotation.
2020-04-27 14:26:36 -07:00
Vytautas Astrauskas
e7c2694b8b
Make the main thread detached.
2020-04-27 14:26:36 -07:00
Vytautas Astrauskas
9a01c3fa3e
Clarify comments about TLS destructor handling in Windows, add a test for TLS destructors.
2020-04-27 14:26:36 -07:00
Vytautas Astrauskas
5b55e0706c
Add more concurrency tests.
2020-04-27 14:26:36 -07:00
Vytautas Astrauskas
80459bbf77
Improve concurrency tests.
2020-04-27 14:26:36 -07:00
Vytautas Astrauskas
75e6549c11
Improve prctl, add a test.
2020-04-27 14:26:36 -07:00
Vytautas Astrauskas
421be273cc
Add concurrency tests.
2020-04-27 14:26:36 -07:00
Vytautas Astrauskas
d9ec0f2b36
Add a missing newline in the test.
2020-04-27 14:26:36 -07:00
Vytautas Astrauskas
325c31e578
Address some of the reviewers comments.
2020-04-27 14:26:36 -07:00
Vytautas Astrauskas
1c8a59c691
Rebase on PR 1157.
2020-04-27 14:23:32 -07:00
Vytautas Astrauskas
b04bf8a514
Rustfmt the test.
2020-04-27 14:23:32 -07:00
Vytautas Astrauskas
aef4c95599
Fix the problem of sending pointed to thread local statics. Add a regression test.
2020-04-27 14:23:32 -07:00
Vytautas Astrauskas
92946b5a9c
Add a test for thread locals.
2020-04-27 14:23:32 -07:00
Vytautas Astrauskas
82f17ab917
Implement basic support for concurrency (Linux only).
2020-04-27 14:23:32 -07:00
bors
e06df3a881
Auto merge of #1373 - RalfJung:test-rename, r=RalfJung
...
rename tests: undefined -> uninit
2020-04-27 10:54:57 +00:00
bors
4556daadc2
Auto merge of #1370 - samrat:add-scalar-size-test, r=RalfJung
...
Add test to verify that argument size mismatch throws UB
Also, bump up `rust-version`
Closes #1355
2020-04-27 10:33:29 +00:00
Ralf Jung
a5ddaa07eb
rename tests: undefined -> uninit
2020-04-27 12:32:03 +02:00
Samrat Man Singh
73f258c451
Replace error-pattern with annotation; remove unreachable line
2020-04-27 15:34:42 +05:30
bors
da940eb91f
Auto merge of #1354 - divergentdave:dump-alloc-on-undef-read, r=RalfJung
...
Print hex dump of alloc on reading undef bytes
Here's a small addition I made locally to the UB diagnostics, in case you're interested in it. This PR calls `dump_alloc()` on the relevant allocation if Miri fails on UB due to reading undefined bytes. This came in handy when diagnosing such an issue in a large program using unsafe Rust, in part because it wasn't deterministic enough to use `-Zmiri-track-alloc-id=`. If you'd like to put this behind another -Z flag, let me know.
2020-04-27 09:33:30 +00:00
Samrat Man Singh
ae9796b9d8
Fix shim_arg_size test for 32-bit machines
2020-04-27 10:00:35 +05:30
Samrat Man Singh
da86c81e39
Add test to verify arg size mismatch throws UB
...
Also: bump up `rust-version`
2020-04-27 09:37:31 +05:30
Ralf Jung
c46668c556
fix exit code on rustc errors
2020-04-25 11:12:50 +02:00
David Cook
7f92eab3c4
Add test to exercise InvalidUndefBytes
2020-04-23 20:00:25 -05:00
Ralf Jung
a5eaa5703c
test suite: rely on CARGO_BIN_EXE_ env vars to find Miri binary
2020-04-23 19:20:09 +02:00
bors
26baf87e43
Auto merge of #1348 - RalfJung:raw-addr-of-align, r=RalfJung
...
Stacked Borrows: alignment does not matter
Fixes https://github.com/rust-lang/miri/issues/1339
Requires https://github.com/rust-lang/rust/pull/71280
2020-04-22 21:44:14 +00:00
Ralf Jung
270adbc7c6
Stacked Borrows: alignment does not matter
2020-04-22 23:32:19 +02:00
David Cook
54897f66f8
Implement ftruncate64/ftruncate for File::set_len
2020-04-21 21:17:54 -05:00
bors
8d9db57a0d
Auto merge of #1335 - vakaras:add-threads-noop, r=RalfJung
...
Move the stack to the evaluator. (no-op PR for 70598)
The changes to Miri to make it to compile with Rustc PR https://github.com/rust-lang/rust/pull/70598 .
2020-04-20 08:39:29 +00:00
Ralf Jung
73772fede6
adjust for Weak::as_raw -> as_ptr rename
2020-04-20 10:04:17 +02:00
bors
763782aa08
Auto merge of #1342 - divergentdave:pause-instruction, r=RalfJung
...
Handle std::sync::atomic::spin_loop_hint()
This PR adds support for `std::sync::atomic::spin_loop_hint()` by implementing the `llvm.x86.sse2.pause` intrinsic when the target is x86-based. It appears this is the first LLVM intrinsic in foreign_items, so I added a couple match blocks to handle it or fall through to the different OS-specific methods. I added a basic smoke test to `tests/run-pass/sync.rs`. I came across this by way of `crossbeam::utils::Backoff::spin()`, FWIW.
2020-04-19 14:53:02 +00:00
Ralf Jung
70c828b761
test some more extreme cast cases
2020-04-19 09:34:54 +02:00
Ralf Jung
fbf47d1784
note source of test values
2020-04-19 09:21:00 +02:00
David Cook
7b69a6271e
Add support for std: 🧵 :yield_now
2020-04-18 19:31:02 -05:00
Ralf Jung
699685c07c
rename test_cast -> test_both_cast to make purpose clearer
2020-04-18 13:07:50 +02:00
bors
45113eb6a4
Auto merge of #1325 - RalfJung:float_to_int_unchecked, r=RalfJung
...
implement float_to_int_unchecked
@hanna-kruppe would be great if you could have a look at this.
`float.rs` tests legal casts. `test_cast` checks that both `as` casts and unchecked casts work (i.e., these are not saturating). The `compile-fail` tests should ensure that illegal casts via the intrinsic are detected as such.
Fixes https://github.com/rust-lang/miri/issues/1264
2020-04-18 08:13:24 +00:00
Ralf Jung
bb38ab4340
use u128::MAX symbolic name
2020-04-18 10:11:45 +02:00
Ralf Jung
0345ee42da
some UB gets masked by optimizations
2020-04-18 09:15:59 +02:00
Ralf Jung
c6ab27577b
test that we check dynamic actual size of object
2020-04-18 02:06:36 +02:00
Ralf Jung
521e77d712
test that we properly check dynamic alignment
2020-04-17 20:43:54 +02:00
Ralf Jung
6a81014ae9
test #[derive] on packed struct
2020-04-17 11:04:48 +02:00
David Cook
57c7119315
Handle std::sync::atomic::spin_loop_hint()
2020-04-16 23:24:57 -05:00
Ralf Jung
3e3613f2e2
merge packed_static and packed_struct
2020-04-16 09:33:22 +02:00
Ralf Jung
974f9c3023
avoid test-wide allowance of unused/dead code
2020-04-16 09:25:12 +02:00
Ralf Jung
b0fe99e81d
consolidate ptr tests in fewer files
2020-04-16 09:06:21 +02:00
Ralf Jung
07c696e27e
test some so-far untested intrinsics
2020-04-15 18:00:16 +02:00
Ralf Jung
a85dab42ea
tighten Instance sanity check
2020-04-15 13:13:17 +02:00
bors
669191bca9
Auto merge of #1331 - samrat:macos-mach-timebase-info, r=RalfJung
...
Implement `mach_timebase_info` for macOS
Since we return nanoseceonds instead of ticks from `mach_absolute_time`, we don't need to scale the absolute time
Fixes #1288
2020-04-14 09:30:22 +00:00
Ralf Jung
e6822d60b3
make sure we find some things without validation or stacked borrows, respectively
2020-04-14 10:23:47 +02:00
Ralf Jung
179e78d0ad
make sure our disable flags do not miss all bugs; move type-assert intrinsic tests to their folder
2020-04-14 10:23:47 +02:00
Ralf Jung
f4a15444cf
fix comment in alignment test
2020-04-14 09:50:20 +02:00
Samrat Man Singh
f6bb8111f2
Use pre-defined u32 layout
...
Also fix typo and remove newline
2020-04-14 09:40:40 +05:30
Ralf Jung
fd8beaf5c4
add option to disable alignment checks
2020-04-13 17:58:03 +02:00
Samrat Man Singh
5f6d250b30
[macOS] Implement mach_timebase_info
...
Since we return nanoseceonds instead of ticks from
`mach_absolute_time`, we don't need to scale the absolute time
2020-04-13 21:18:34 +05:30
Ralf Jung
17c52d47e7
add tests for invalid float-to-int casts
2020-04-12 12:01:20 +02:00
Ralf Jung
25c71e5c0e
test some more corner cases in happy float casts
2020-04-12 12:01:20 +02:00
Ralf Jung
30d07c8616
move error-pattern to inline annotation where possible
2020-04-12 12:01:20 +02:00
Ralf Jung
78ce616490
implement float_to_int_unchecked
2020-04-12 12:01:20 +02:00
Ralf Jung
8d1f5336c2
also test unsafe cast intrinsic (happy cases)
2020-04-12 12:01:20 +02:00
bors
aad2c5af06
Auto merge of #1321 - RalfJung:float, r=RalfJung
...
Even more float cast tests
Copy a bunch of float cast tests from https://github.com/WebAssembly/testsuite/blob/master/conversions.wast . I didn't do all of them though, too lazy... maybe we should have a wasm interpreter written in Rust and run that in Miri and use the wasm test suite directly that way? :P
2020-04-11 18:39:06 +00:00
Ralf Jung
e5e0ced87e
smoketest f32 fast-math intrinsics
2020-04-11 11:37:26 +02:00
Ralf Jung
faff175f3e
some some int-to-float and float-to-float cast tests from wasm test suite
2020-04-11 11:37:26 +02:00
Ralf Jung
5db01f7371
copy lots of float-to-int cast tests from wasm test suite
2020-04-11 11:37:26 +02:00
Ralf Jung
c63c413331
a few more inf/nan/negz tests
2020-04-11 11:37:26 +02:00
Ralf Jung
b2bf4ec2f5
organize compile-fail tests in folders
2020-04-11 11:36:55 +02:00
Ralf Jung
d276d952ff
fix unused warnings in tests
2020-04-10 10:27:59 +02:00
bors
325682ad56
Auto merge of #1301 - RalfJung:global-leaks, r=RalfJung
...
memory reachable through globals is not a leak
Blocked on https://github.com/rust-lang/rust/pull/70762
Fixes https://github.com/rust-lang/miri/issues/940
2020-04-07 17:33:24 +00:00
Ralf Jung
7841f44593
rustup
2020-04-07 19:33:03 +02:00
Ralf Jung
f462b4c257
memory reachable through globals is not a leak any more; adjust for better memory dumping
2020-04-07 19:03:41 +02:00
bors
3342f155e1
Auto merge of #1310 - RalfJung:float-assoc, r=RalfJung
...
prefer float assoc consts over std module
2020-04-07 14:42:34 +00:00
Ralf Jung
a46f8b66c3
prefer float assoc consts over std module
2020-04-07 16:13:19 +02:00
bors
d935f62172
Auto merge of #1157 - divergentdave:shim-pthread-try-lock, r=RalfJung
...
Add shims for RwLock::try_read/RwLock::try_write
This implements proper locking so that we can check for reentrancy and implement the `try_*` methods.
Fixes https://github.com/rust-lang/miri/issues/781
2020-04-06 13:55:53 +00:00
David Cook
80497e5d3c
Clean up conditional compilation
2020-04-06 07:23:58 -05:00
David Cook
134d6a2faa
Add tests, improve test coverage
2020-04-05 14:55:57 -05:00
David Cook
d5d5a56926
Add tests
2020-04-05 13:25:49 -05:00
Ralf Jung
177c0d3baa
also test push_str ptr stability (the original report)
2020-04-05 19:13:52 +02:00
David Cook
79f3307f30
Update comments, rearrange code
2020-04-05 12:09:31 -05:00
Ralf Jung
3eb76f4a77
rustup
2020-04-05 18:28:05 +02:00
Ralf Jung
41abcdb422
for consistency also rename floats.rs
2020-04-05 18:26:51 +02:00
Ralf Jung
ab32084ddb
use mutable reference
2020-04-05 18:26:51 +02:00
Ralf Jung
9159b1eef8
test some more vec ptr invalidation
2020-04-05 18:26:51 +02:00
Ralf Jung
b8444deb64
test Vec::extend
2020-04-05 18:26:51 +02:00
David Cook
37ddde9f70
Implement TryEnterCriticalSection
2020-04-05 10:33:32 -05:00
David Cook
bb06a0cf0e
Restrict mutex static initializer test to Linux
...
On macOS, libc does not have a static initializer for recursive mutexes
2020-04-05 10:33:09 -05:00
David Cook
de29546414
Add and rearrange mutex tests
2020-04-05 10:27:39 -05:00
David Cook
d11315ebfb
Fix misleading function names
2020-04-05 10:05:34 -05:00
David Cook
5cc091bc6e
Add test of recursive mutex using libc FFI
2020-04-05 10:05:14 -05:00
David Cook
c773ca8614
Style fixes
2020-04-05 10:04:53 -05:00
David Cook
dca83d73cb
Add test that exercises ReentrantMutex
2020-04-05 10:04:33 -05:00
David Cook
dd9896b0f8
Implement mutex and rwlock functions
2020-04-05 10:03:22 -05:00
David Cook
c2683dad34
Clean up test case
2020-04-05 09:25:21 -05:00
David Cook
88f319fb4c
Add failing tests for mutex and rwlock
2020-04-05 09:25:21 -05:00
David Cook
46679bc9ef
Add shims for RwLock::try_read/RwLock::try_write
2020-04-05 09:25:21 -05:00
bors
0e8a1a40f2
Auto merge of #1294 - JOE1994:windows_instant, r=RalfJung
...
Add support for 'std::time::Instant' in Windows
Add support for creating `std::time::Instant` in Windows
Includes shims for `QueryPerformanceCounter` & `QueryPerformanceFrequency` in Windows, which are both called in Windows when `std::time::Instant` is created.
Windows docs page ["Acquiring high-resolution time stamps"](https://docs.microsoft.com/en-us/windows/win32/sysinfo/acquiring-high-resolution-time-stamps ) was helpful in learning how `QueryPerformanceCounter` & `QueryPerformanceFrequency` work.
closes #1291
2020-04-03 06:36:15 +00:00
JOE1994
d5de67a5a0
change cfg gate to enable testing Instant subtraction in Windows
2020-04-02 16:15:23 -04:00
Ralf Jung
cd132f563e
port compile-fail allocator tests to stable API
2020-04-02 13:33:59 +02:00
Ralf Jung
033eae5ad7
rustup for AllocRef changes
2020-04-02 11:45:17 +02:00
Ralf Jung
5130aa55a2
adjust stacktrace printing to rustc changes
2020-04-02 09:14:17 +02:00
JOE1994
957ec2be10
Add support for 'std::time::Instant' in Windows
2020-04-01 20:35:56 -04:00
Ralf Jung
41d90709f2
sanity check time values a bit more
2020-04-01 20:34:12 +02:00
JOE1994
b3f9e53049
Implement 'GetSystemTimeAsFileTime' shim for Windows
2020-04-01 10:55:26 -04:00
Ralf Jung
26b5012368
add TODO
2020-03-31 17:53:27 +02:00
Ralf Jung
62eaecd2aa
test subtracting SystemTime and Instant
2020-03-31 17:50:10 +02:00
bors
319f2dd9e1
Auto merge of #1279 - divergentdave:open_O_EXCL, r=RalfJung
...
Add support for OpenOptions::create_new()/O_EXCL
This PR extends the POSIX shim for `open` to support the `O_EXCL` flag, when it is used alongside `O_CREAT`, and exercises it by testing `OpenOptions::create_new`.
2020-03-30 15:49:45 +00:00
Ralf Jung
846ce3c261
test const-generic Vec::from(array)
2020-03-30 10:23:16 +02:00
David Cook
808709c288
Add support for OpenOptions::create_new()/O_EXCL
2020-03-29 16:06:41 -05:00
JOE1994
1141b21e50
Windows shims for GetCurrentDirectoryW/SetCurrentDirectoryW
2020-03-29 11:30:08 -04:00
Ralf Jung
4e471f745f
fix float test comments and test a few more int->float casts
2020-03-28 15:47:00 +01:00
bors
fc30266540
Auto merge of #1265 - RalfJung:float-cast, r=RalfJung
...
test floating point casting better
2020-03-28 14:19:29 +00:00
Ralf Jung
b8a817fc03
avoid promotion so this can be compared with rustc
2020-03-28 09:20:07 +01:00
Ralf Jung
032d9aa7d5
also do some float-to-float cast testing
2020-03-28 09:10:34 +01:00
bors
f4308a0728
Auto merge of #1267 - RalfJung:macos-dtors, r=RalfJung
...
implement TLS cleanup for macOS
Now that I can run macOS interpretation locally, this was not that hard to fix. ;)
Fixes https://github.com/rust-lang/miri/issues/443
2020-03-28 07:55:42 +00:00
Ralf Jung
c5ef8a656f
enable leak tests on macOS
2020-03-27 19:39:35 +01:00
JOE1994
ea836eeb0d
remove or update 'ignore-windows' annotations in some tests
2020-03-27 14:18:19 -04:00
JOE1994
2fa07009f2
Windows shims for env var emulation
...
Shims for GetEnvironmentVariableW / SetEnvironmentVariableW /
GetEnvironmentStringsW.
Passes test 'tests/run-pass/env.rs'
2020-03-27 08:43:08 -04:00
Ralf Jung
a97ce8d94b
test floating point casting better
2020-03-26 19:25:51 +01:00
Ralf Jung
47b91e619a
test unreachable intrinsic
2020-03-25 09:32:15 +01:00
Ralf Jung
8817397828
test harness informs tests about suitable temp dir
2020-03-24 09:11:48 +01:00
Ralf Jung
3ba588db49
make fs.rs at least build under Windows
2020-03-24 09:11:48 +01:00
Ralf Jung
9091811147
use Wake trait for async-fn driver
2020-03-23 23:53:54 +01:00
Ralf Jung
b4b8750e44
bump Rust; HashMap should now work on macOS even with isolation
2020-03-23 10:34:15 +01:00
Ralf Jung
d85f09c4e4
platform -> target
2020-03-22 08:55:39 +01:00
Ralf Jung
238ed49a07
detect UB: overflow in copy/write_bytes
2020-03-21 17:54:33 +01:00
Ralf Jung
8acfafe186
test for zero-sized write_bytes to NULL
2020-03-21 17:54:18 +01:00
Ralf Jung
e890d4d5e1
call error location was fixed by rustup
2020-03-21 12:52:23 +01:00
bors
b2605d809d
Auto merge of #1241 - RalfJung:dont-panic, r=RalfJung
...
whitelist platforms where panicking should work
@CAD97 [proposed](https://github.com/rust-lang/miri/issues/1059#issuecomment-601217992 ) trying to get a better error for failed panics on Windows.
Could you test if this works for you?
2020-03-21 09:55:23 +00:00
Ralf Jung
5c09047411
fix tests
2020-03-21 10:54:56 +01:00
Ralf Jung
bde3111c61
test windows panic message
2020-03-21 10:17:57 +01:00
Ralf Jung
4608b94bd8
implement CLOCK_MONOTONIC on Linux
2020-03-19 23:01:24 +01:00
Ralf Jung
49051e05ea
rustup, and some final message adjustments
2020-03-19 08:41:01 +01:00
Ralf Jung
e1e158e103
adjust error messages for lower-case start
2020-03-19 08:26:08 +01:00
Ralf Jung
77cc0cddd9
add test for validation finding use-after-free
2020-03-19 08:25:08 +01:00
Ralf Jung
1103a10e2c
adjust for error reform
2020-03-19 08:25:08 +01:00
bors
6b56aefa0b
Auto merge of #1239 - elichai:2020-03-abort-intrinsics, r=RalfJung
...
Abort instead of panic on asserting intrinsics
This fixes #1222
replacing the panic with an abort and a corresponding message.
the stack trace is already printed, this just adds an optional message the caller can pass, and I just pass the same message we passed to the panic but now to the abort instead.
r? @RalfJung
2020-03-18 12:20:30 +00:00
Elichai Turkel
0826899ca0
Remove uninhabit/zeroed tests to a new test file for abort checking
2020-03-18 14:14:23 +02:00
Ralf Jung
a32e25677f
move repeated run of test suite (without and with MIR optimizations) out of compiletest
2020-03-18 11:19:01 +01:00
Ralf Jung
8a26a288c2
rustup
2020-03-16 21:32:57 +01:00
Ralf Jung
497fbcbf44
rustup, fix for intrinsic rename and transmute error change
2020-03-14 09:27:35 +01:00
Ralf Jung
5531a79f4c
rustup, test Abort terminator
2020-03-12 20:48:04 +01:00
Ralf Jung
548c90e102
share some code between panic intrinsics, and fix the message
2020-03-11 19:53:07 +01:00
Elichai Turkel
2802c3cf0b
Add tests for the new panic_if_any_invalid, panic_if_zero_invalid intrinsics
2020-03-11 16:02:49 +02:00
Ralf Jung
5ef48593fb
adjust error
2020-03-09 17:03:39 +01:00
Ralf Jung
8394456247
properly panic in panic_if_uninhabited and align_offset shims
2020-03-08 20:00:40 +01:00
bors
574d81ce79
Auto merge of #1208 - christianpoveda:environ-shim, r=RalfJung
...
Environ shim
Remake of https://github.com/rust-lang/miri/pull/1147 . There are three main problems with this:
1. For some reason `update_environ` is not updating `environ` when `setenv` or `unsetenv` are called. Even then it works during initialization.
2. I am not deallocating the old array with the variables in `update_environ`.
3. I had to store the `environ` place into `MemoryExtra` as a field to update it. I was thinking about changing `extern_statics` to store places instead of `AllocID`s to avoid this.
@RalfJung
2020-03-08 15:39:43 +00:00
Christian Poveda
8392a0c589
only expose environ on linux
2020-03-08 10:16:31 -05:00
Christian Poveda
18a71ef7b3
minor corrections
2020-03-07 11:35:00 -05:00
Christian Poveda
6eccc809f2
test that environ
gets deallocated on changes
2020-03-07 09:39:55 -05:00
Ralf Jung
fefa8e5344
expand clock and fs tests a bit
2020-03-06 14:32:46 +01:00
Ralf Jung
7882dfb3f5
fix env update, and expand test
2020-03-06 08:21:53 -05:00
Christian Poveda
a28330febb
add testcase for environ
shim
2020-03-06 08:21:53 -05:00
Ralf Jung
148269dd4b
finally stop using min/max_value and the integer modules
2020-03-04 13:01:06 +01:00
Ralf Jung
db0d03229c
fix allocator tests
2020-03-04 10:19:35 +01:00
Ralf Jung
58519a7a79
try even harder to catch invalid generator fields
2020-03-03 15:02:06 +01:00
Ralf Jung
88c45f9891
adjust for rustc changes
2020-03-02 13:51:08 +01:00
bors
c0934e1eca
Auto merge of #1152 - divergentdave:shim-directory, r=RalfJung
...
Add directory-related shims
This PR adds support for `mkdir`, `rmdir`, `opendir`, `closedir`, and `readdir64_r`.
Open directory streams are tracked through a HashMap indexed by pointer locations, which holds directory iterators. Since `DIR` is an opaque type in glibc, I represent them with 1-byte allocations, and then just use their pointers in HashMap lookups.
Tests are included to exercise the new functionality.
2020-02-26 14:15:55 +00:00
David Cook
9fcc8a2a91
Review comments
2020-02-24 19:16:41 -06:00
Ralf Jung
274ae0438f
add an option to disable Stacked Borrows
2020-02-24 16:22:02 +01:00