Commit Graph

1568 Commits

Author SHA1 Message Date
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
David Cook
341212acd6 Rewrite fs tests 2020-02-23 15:34:49 -06:00
David Cook
a82049587c Use longer file names in test 2020-02-23 15:28:50 -06:00
David Cook
d461c12c83 Add more information to test asserts 2020-02-23 15:26:47 -06:00
David Cook
5d35339111 Add shim for readdir64_r 2020-02-23 15:08:44 -06:00
David Cook
5b34f06bae Add shims for mkdir and rmdir 2020-02-23 15:02:49 -06:00
Ralf Jung
3e2f29a079 remove some no-longer-needed allow(const_err) 2020-02-21 11:05:56 +01:00
Ralf Jung
627d7cba64 fix for const-prop lint changes 2020-02-21 10:33:00 +01:00
David Cook
32a354efa3 Test error case of std::fs::rename 2020-02-20 21:54:52 -06:00
Ralf Jung
3cd13cb174 test a bit more 2020-02-19 11:14:30 +01:00
Ralf Jung
f79c453860 factor more common code 2020-02-19 11:12:30 +01:00
Ralf Jung
8b31763816 fs test: factor some common code 2020-02-19 11:12:30 +01:00
David Cook
0933314bff Rewrite file system tests 2020-02-17 22:36:33 -06:00
David Cook
962a740426 Rewrite file descriptor handling 2020-02-17 22:24:33 -06:00
David Cook
636ad629f8 Functional test of cloned file handle 2020-02-17 22:24:33 -06:00
David Cook
085874d1ff Add F_DUPFD/F_DUPFD_CLOEXEC to fcntl shim 2020-02-17 22:24:33 -06:00
bors
daaf9f7e28 Auto merge of #1177 - RalfJung:debug-assert, r=RalfJung
Make sure we evaluate debug assertions in local crate and libstd

Fixes https://github.com/rust-lang/miri/issues/1126
2020-02-16 13:04:06 +00:00
Ralf Jung
8acf52b3ca fix compile-fail tests to avoid libstd debug assertions 2020-02-16 14:01:00 +01:00
Ralf Jung
6ff5b3fcf9 make sure we also trigger debug assertions in libstd 2020-02-16 13:55:51 +01:00
Ralf Jung
39a78f0b24 make sure assertions and debug-assertions also panic (and can be caught) 2020-02-16 13:47:31 +01:00
bors
0a803c9752 Auto merge of #1158 - divergentdave:shim-rename, r=RalfJung
Add shim for rename

This adds a straightforward shim for rename, which is used by `std::fs::rename`. Testing is included.

As a heads up, I expect one or two merge conflicts between my PRs, since some of them touch the same `use` statements, or add items near the same places. I'll rebase and fix them as they come up.
2020-02-14 20:26:23 +00:00
David Cook
91868125a5
Removing file after rename must succeed
Co-Authored-By: Ralf Jung <post@ralfj.de>
2020-02-14 08:19:16 -06:00
Ralf Jung
a843fd4e17 add test for layout optimizations 2020-02-12 22:04:58 +01:00
David Cook
f7e0857644 Test that src path of rename is no longer a file 2020-02-08 22:40:46 -06:00
David Cook
38204b6321 Add shim for rename 2020-02-08 22:33:49 -06:00
bors
f9615bfd67 Auto merge of #1159 - divergentdave:shim-seek, r=RalfJung
Add shim for seeking files

This adds a shim for `lseek64` (`lseek` on macOS). This enables the use of `<File as Seek>::seek`. Testing is included.
2020-02-08 13:54:33 +00:00
Ralf Jung
45f6744fda panics dont work on Windows, just the smoke test should be enough 2020-02-07 14:20:42 +01:00
Ralf Jung
418dd641dc test more generator resume things 2020-02-07 14:02:36 +01:00
Ralf Jung
d208a5fe3b rustup; fix generator test 2020-02-07 14:02:27 +01:00
David Cook
98a1cac4ef Add tests to cover SEEK_CUR and SEEK_END 2020-02-06 17:50:33 -06:00
Ralf Jung
5d2caef3ce also test div-by-minus-1 2020-02-06 11:24:38 +01:00
Ralf Jung
4b6a0d7a8e bump rustc; adjust tests 2020-02-06 11:20:28 +01:00
bors
9c0b89cff7 Auto merge of #1163 - RalfJung:raw-cast, r=RalfJung
Test raw-ptr-cast without reborrow

With https://github.com/rust-lang/rust/pull/64588 landed, we can finally test these things adequately. :)
2020-01-30 22:20:36 +00:00
bors
e7f5c4f155 Auto merge of #1151 - divergentdave:statx-AT_EMPTY_PATH, r=RalfJung
Add support for AT_EMPTY_PATH to statx shim

This enables use of `File::metadata()`.
2020-01-30 21:30:32 +00:00
Ralf Jung
b2c9871f7d update another comment 2020-01-30 13:29:55 +01:00
Ralf Jung
3cf413e4c2 remove inadequate comment 2020-01-30 12:22:54 +01:00
Ralf Jung
e0adfe4d45 new compile-fail test involving non-reborrowing-cast-to-raw 2020-01-30 12:22:15 +01:00
Ralf Jung
acd156d722 add test that relies on non-reborrowing-cast-to-raw 2020-01-30 12:17:02 +01:00
bors
aff1e43137 Auto merge of #1154 - TimDiekmann:rename-alloc, r=RalfJung
Rename `Alloc` to `AllocRef`

Required to land https://github.com/rust-lang/rust/pull/68529. Please see that PR for details. The CI is expected to fail until the PR is landed.
2020-01-29 21:44:06 +00:00
bors
8c5dee6f88 Auto merge of #1155 - divergentdave:shim-posix_fadivse, r=RalfJung
Add no-op shim for posix_fadvise

This function is present in the libc crate, but not exposed through the standard library anywhere, so I haven't included a test for it.
2020-01-29 21:24:30 +00:00
Tim Diekmann
3d8bf92a11
Rename Alloc to AllocRef
Required to land https://github.com/rust-lang/rust/pull/68529. Please see that PR for details. The CI is expected to fail until the PR is landed.
2020-01-29 04:10:33 +01:00
David Cook
a30914bcdd Conditional compilation fix 2020-01-28 20:39:06 -06:00
David Cook
a39a5f8189 Disable posix_fadvise test on macOS, not in libc 2020-01-28 19:57:56 -06:00
David Cook
2a2dde1494 Try fixing test on i686-unknown-linux-gnu 2020-01-28 19:04:16 -06:00
David Cook
b2d404d19a Move posix_fadvise test to new libc test file 2020-01-28 18:59:49 -06:00
Ralf Jung
9f6df67238 test track_caller with fn ptrs 2020-01-28 22:55:07 +01:00
David Cook
4e42e77483 Add test for posix_fadvise 2020-01-27 06:28:45 -06:00
David Cook
03b5d95cff Add shim for lseek64 2020-01-26 12:36:36 -06:00
David Cook
d94b88ef98 Add support for AT_EMPTY_PATH to statx shim 2020-01-25 22:21:33 -06:00
David Cook
9265e0cd5e Add compiler fences to test 2020-01-25 13:48:26 -06:00
Ralf Jung
b2303a7da1 slice_patterns is stable now 2020-01-19 10:03:18 -06:00
bors
b4c54b4641 Auto merge of #1143 - christianpoveda:symlink-shim, r=RalfJung
Add shim for symbolic link creation

r? @RalfJung
2020-01-10 17:21:12 +00:00
Christian Poveda
0b5a30515e
small corrections 2020-01-10 12:01:05 -05:00
Ralf Jung
833816dd35 Unwind panicking does not currently work on Windows 2020-01-09 11:41:08 +01:00
Ralf Jung
e9b4323048 also make sure the hook actually gets called 2020-01-09 11:24:41 +01:00
Ralf Jung
b1676a3e89 test that unwrap gets us the right panic location 2020-01-09 11:20:13 +01:00
Christian Poveda
329310fbd6
Clean paths for robustness 2020-01-07 11:09:07 -05:00
Christian Poveda
4a1dbc77dc
Add shim for symbolic link creation 2020-01-06 16:30:17 -05:00
Ralf Jung
0217a25a12 remove no-longer-needed allow(const_err) 2020-01-06 11:38:35 +01:00
Ralf Jung
c68996dda7 note a FIXME 2020-01-02 15:57:33 +01:00
Wesley Wiser
959033cbfb Bump rustc version to fix miri 2020-01-01 21:33:51 -05:00
Ralf Jung
31fbb5a9b2 fix imports 2019-12-31 12:10:52 +01:00
Ralf Jung
e1fceafcea with FS access, default HashMap should work on macOS 2019-12-31 12:06:42 +01:00
Ralf Jung
e952e37a39 compile-fail tests work with optimizations now 2019-12-29 12:38:40 +01:00
Christian Poveda
75f7a118e6
remove restrictions due to stat unavailability 2019-12-25 12:38:34 -05:00
Christian Poveda
d9ecd77ada
add dummy stat shim 2019-12-25 08:27:49 -05:00
Ralf Jung
e325ad24f2 support main functions with Result return type 2019-12-23 17:45:23 +01:00
Oliver Scherer
7ead530841 Rustfmt all the things 2019-12-23 12:56:23 +01:00
bors
a3ea1cb458 Auto merge of #1101 - christianpoveda:stat-shim, r=RalfJung
Add statx shim for linux target

This is an attempt to fix: https://github.com/rust-lang/miri/issues/999 (for linux only)

Currently there is one problem that I haven't been able to solve. `std::fs::metadata` fails because the creation time is not available even though it is provided in the shim code.

In order to inform the caller that the field was provided, the `stx_flag` field must have the bits of `STATX_BTIME` set (which they are). The creation time is in the `stx_btime` field of the `statx` struct (see [1]). The relevant code in `libstd` is here (probably?): https://github.com/rust-lang/rust/blob/master/src/libstd/sys/unix/fs.rs#L322

Another important point is that we are just providing the fields that are available in "all" platforms (this is, without using any platform specific traits or so). This can be improved later.

References:
[1] Man page: http://man7.org/linux/man-pages/man2/statx.2.html
[2] libc `statx` struct: https://docs.rs/libc/0.2.63/libc/struct.statx.html

Edit: The problem is that my filesystem is not providing it and I thought all filesystems could provide it. I changed the code so it only provides those dates if they are available. now we are ready to go.

r? @RalfJung @oli-obk
2019-12-22 17:01:53 +00:00
Christian Poveda
b0c7625dd1
add statx shim for linux 2019-12-22 11:46:02 -05:00
Oliver Scherer
d9859c83fc Rustup to rustc 1.42.0-nightly (9ff30a781 2019-12-21) 2019-12-21 11:45:09 +01:00
Ralf Jung
74ef63ff0a the never type got de-stabilized again; adjust tests 2019-12-15 12:23:43 +01:00
Ralf Jung
f0d43872ad add test for sketchy vtable 2019-12-13 13:19:48 +01:00
Ralf Jung
b0a205ce6f add caller_location tests to Miri 2019-12-08 11:06:35 +01:00
bors
ab39e09b82 Auto merge of #1107 - RalfJung:rustup, r=RalfJung
bump Rust, fix error messages
2019-12-08 00:46:35 +00:00
Ralf Jung
cefc592273 bump Rust, fix error messages 2019-12-08 01:45:41 +01:00
Ralf Jung
e92d16d9cd add flag to ignore memory leaks 2019-12-07 13:44:48 +01:00
Ralf Jung
6d8e87111b bump Rust for exact_div fix 2019-12-03 17:37:42 +01:00
Ralf Jung
ce7b44b048 ignore another panicking test on Windows 2019-12-02 16:48:18 +01:00
Ralf Jung
ae53b1222a fix and expand panic tests 2019-12-02 16:04:31 +01:00
Ralf Jung
4cf83433b1 test built-in panic catching 2019-12-02 16:04:31 +01:00
Ralf Jung
9f9e547d79 test diverging closure fn ptr coercion 2019-12-02 15:42:33 +01:00
Ralf Jung
bba9359256 expand coerce fn test 2019-12-02 15:42:33 +01:00
Ralf Jung
dcdd68b936 also indicate abort via new MachineStop variant 2019-12-02 09:13:58 +01:00
Ralf Jung
1c420b0b55 improve style in catch_panic test 2019-12-02 09:11:33 +01:00
Ralf Jung
f7efe238f3 fix catch_panic.stderr 2019-12-01 11:04:51 +01:00
Ralf Jung
2789e72e18 test more panics 2019-12-01 11:04:32 +01:00
Ralf Jung
2152258b04 and another reference 2019-11-25 15:10:39 +01:00
Ralf Jung
66dc939787 rename some more tests 2019-11-25 15:08:47 +01:00
Ralf Jung
d16e12b0a4 rename test and add some references 2019-11-25 15:08:24 +01:00
Ralf Jung
51d47e8dc5 test closure-to-fn-ptr coercions a bit more 2019-11-25 15:01:05 +01:00
Ralf Jung
35e1fe1665 also test non-string panic payload 2019-11-24 10:51:48 +01:00
Ralf Jung
ee411c2a74 beef up catch_panic test 2019-11-24 10:24:41 +01:00
Ralf Jung
6941caf1df typo 2019-11-22 18:12:10 +01:00
bors
644e2a76a8 Auto merge of #1067 - Aaron1011:feature/inverse-trig, r=RalfJung
Add acos, asin, and atan foreign functions

I copied the tests from the docs pages
2019-11-22 09:23:24 +00:00
Ralf Jung
6888555ca9 rustup for never stabilization 2019-11-22 09:50:22 +01:00
Aaron Hill
a328683c4a
Add acos, asin, and atan foreign functions
I copied the tests from the docs pages
2019-11-21 17:33:30 -05:00
Ralf Jung
f16f891191 slice matching overflow got fixed 2019-11-20 19:38:41 +01:00
Ralf Jung
5cef4666e6 rename panic=abort tests to panic_abort 2019-11-19 22:44:07 +01:00
Aaron Hill
80f9484c86
Disable panic tests on Windows
Miri currently does not support `GetProcAddress`
and `GetModuleHandleW`, both of which end up getting invoked by the
libstd panic hook.
2019-11-17 13:49:31 -05:00
Aaron Hill
b06d99b8a0
Ignore '-C panic=abort' tests for now
We are currently building `libpanic_abort` with the wrong panic
strategy, due to Xargo missing a hack used by `bootstrap`.
2019-11-17 08:40:34 -05:00
Aaron Hill
08d3fbc76b
Support unwinding after a panic
Fixes #658

This commit adds support for unwinding after a panic. It requires a
companion rustc PR to be merged, in order for the necessary hooks to
work properly.

Currently implemented:
* Selecting between unwind/abort mode based on the rustc Session
* Properly popping off stack frames, unwinding back the caller
* Running 'unwind' blocks in Mir terminators

Not yet implemented:
* 'Abort' terminators

This PR was getting fairly large, so I decided to open it for review without
implementing 'Abort' terminator support. This could either be added on
to this PR, or merged separately.
2019-11-17 08:34:25 -05:00
Ralf Jung
64244e9a18 do full deref-check before reborrowing 2019-11-14 10:24:02 +01:00
Ralf Jung
82ef2bb0e2 rename miri-issue to issue-miri for grouping 2019-11-14 10:16:44 +01:00
Steven Gu
ca983f5f80 Implments intrinsics::copysignf32 and intrinsics::copysignf64. 2019-11-13 17:41:09 +08:00
bors
9316d90315 Auto merge of #1040 - RalfJung:rustup, r=RalfJung
rustup
2019-11-08 17:49:38 +00:00
Ralf Jung
4c25cf0a87 fix into_iter usage 2019-11-08 12:43:26 +01:00
Ralf Jung
428fc531d8 silence a lint that catches the bug statically 2019-11-07 09:44:00 +01:00
Ralf Jung
57dec5c791 also test Box<self> receiver 2019-11-07 09:17:40 +01:00
Ralf Jung
b7a8ce1be0 move blosure tests to closures file; test Box<dyn> a bit more 2019-11-07 09:14:23 +01:00
Ralf Jung
04c12952ca centralize and expand dyn-trait (method receiver) tests 2019-11-07 09:05:11 +01:00
Ralf Jung
c77b282695 rename call_drop_ tests to drop_ 2019-11-07 08:56:11 +01:00
Ralf Jung
8b1630cb3b tweak and slightly extend box-box-trait test 2019-11-07 08:55:59 +01:00
Ralf Jung
1f8cb476ea fix test erorr msg 2019-11-06 09:24:26 +01:00
Ralf Jung
c4f1d3f488 test that 0 cannot be offset-inbounds by 0 2019-11-06 09:24:26 +01:00
Ralf Jung
f4fb330c67 test offset_from 2019-11-05 20:17:35 +01:00
bors
9f0b99bae3 Auto merge of #1036 - RalfJung:stacked-borrows-test, r=RalfJung
add an interesting run-pass stacked borrows example
2019-11-05 10:05:59 +00:00
Ralf Jung
99282efc86 add an interesting run-pass stacked borrows example 2019-11-05 11:05:02 +01:00
Ralf Jung
9b4ceec60e update comment re: not using higher mir-opt-level 2019-11-04 11:17:40 +01:00
Ralf Jung
fcf0f886d4 adjust tests 2019-11-03 10:15:55 +01:00
Ralf Jung
459aea8f52 test align_to example 2019-10-25 20:26:01 +02:00
Christian Poveda
be415dbeda Use new write_bytes method 2019-10-22 11:44:49 -05:00
Ralf Jung
2690f5948a rustup: fix for write_bytes and new union rules 2019-10-22 10:13:11 +02:00
Christian Poveda
61da8b8428 Add OsString from/to bytes helper functions 2019-10-18 09:47:19 -05:00
bors
d902a11575 Auto merge of #975 - christianpoveda:clock-shim, r=RalfJung
Add clock_gettime shim

r? @oli-obk

I think there is no way to do proper testing of this other than checking that miri does not crash when calling `clock_gettime`.
2019-10-15 07:36:42 +00:00
Christian Poveda
f9c768864a Use places instead of ptrs to write packed immtys 2019-10-14 16:00:40 -05:00
Christian Poveda
f425f445d1 Check that fs errors have the proper kind 2019-10-14 07:24:52 -05:00
Ralf Jung
9082092a71 use temp_dir for FS test 2019-10-11 23:02:04 +02:00
Christian Poveda
aa3e9703d1 Add clock_gettime shim 2019-10-11 11:36:33 -05:00
bors
6a2776e465 Auto merge of #983 - christianpoveda:fs-shims-tweaks, r=RalfJung
Various fixes to the file related shims

Hi @RalfJung, I'll be working incrementally over your comments for the new `fs` shims module here.
2019-10-11 13:37:05 +00:00
Christian Poveda
67ea454647 Correct style of comments 2019-10-11 04:17:43 -05:00
Christian Poveda
e9138ab4d6 Rename file manipulation test to fs 2019-10-11 04:01:07 -05:00
Christian Poveda
ae9f4e1e63 Avoid using the tests folder for the file manipualtion test 2019-10-11 04:00:12 -05:00
Christian Poveda
8368d4f2b4 Add comments to explain the chdir test 2019-10-11 02:35:50 -05:00
Ralf Jung
62f08eb416 also test AcqRel fence 2019-10-09 10:29:08 +02:00
Christian Poveda
00792493ef Add tests for non-existing files 2019-10-08 08:57:30 -05:00
Christian Poveda
ffc47de1b9 Add unlink shim to delete files 2019-10-08 08:50:58 -05:00
Nicolas
bd4a2996d1 Add test for atomic fences 2019-10-05 08:20:17 -03:00
Christian Poveda
6c36a8c949 Return earlier when reading/writing 0 bytes 2019-10-02 09:12:03 -05:00
Christian Poveda
f5022b19d3 Fix dangling pointer bug for zero-sized reads 2019-10-02 08:43:23 -05:00
Christian Poveda
cd495cb04f Add file writing capabilities 2019-10-01 11:10:37 -05:00
bors
1037f69bf6 Auto merge of #962 - christianpoveda:file-shim, r=oli-obk
Add shims for file handling

This adds the bare minimum to be able to do `File::open` and `File::read`. I also need some feedback about how to handle certain things
2019-10-01 15:33:09 +00:00
Christian Poveda
b540e5d24e Reserve fides for stdio and fix merge issues 2019-09-30 10:54:51 -05:00
bors
57cc8ce1d7 Auto merge of #970 - RalfJung:align_offset, r=RalfJung
more align_offset tests

Cc @christianpoveda
2019-09-29 16:26:36 +00:00
Ralf Jung
a9c207dce2 fix tests on 32bit 2019-09-29 12:26:13 -04:00
Ralf Jung
b5d449949a comments and another test 2019-09-29 11:49:04 -04:00
Ralf Jung
9650b7868e more align_offset tests 2019-09-29 11:43:50 -04:00
Ralf Jung
8ecd767791 fix test failure from diagnostics change 2019-09-29 11:30:28 -04:00
bors
b625812092 Auto merge of #957 - christianpoveda:ptr-align-offset, r=RalfJung
Fixes for align_offset

This addresses @RalfJung's comments in https://github.com/rust-lang/miri/pull/945
2019-09-28 18:38:00 +00:00
Christian Poveda
bdaa90ceb2 Add FIXME to file reading test 2019-09-25 11:12:46 -05:00
Christian Poveda
79b1f91f45 First version of file handling 2019-09-25 01:17:18 -05:00
Christian Poveda
145a5826d5 Check that chdir fails for non-utf8 paths 2019-09-24 17:28:38 -05:00
Christian Poveda
0eed5e64de Add chdir shim 2019-09-24 15:50:00 -05:00
bors
2e17933eed Auto merge of #958 - christianpoveda:getcwd-shim, r=oli-obk
Add getcwd shim
2019-09-24 16:22:21 +00:00
Christian Poveda
e2c54e64d1 Ignore integers 2019-09-22 21:39:17 -05:00
Ralf Jung
0ab0e40e1b add another test case 2019-09-20 08:53:35 +02:00
Ralf Jung
d53d7f77a0 err on all-but-B, not just on C 2019-09-20 08:53:35 +02:00
Ralf Jung
7e65c44714 test for niche enum discriminant computation that overflows 2019-09-20 08:53:35 +02:00
Christian Poveda
133c2b39db Only use getcwd without isolation 2019-09-19 10:32:18 -05:00
Christian Poveda
6593563e46 Check that getcwd does not error 2019-09-18 20:01:09 -05:00
Christian Poveda
497de53825 Update align_offset tests 2019-09-17 11:47:36 -05:00
Christian Poveda
fa20338c9a Use str::from_utf8 instead 2019-09-12 09:36:31 -05:00
Christian Poveda
ed70617b9c Add test for u8 align_offset 2019-09-11 12:08:42 -05:00
Ralf Jung
f5c35a2584 fix async test 2019-09-11 17:13:32 +02:00
bors
dd94c7c5a3 Auto merge of #944 - rust-lang:rustup, r=oli-obk
Rustup to 1.39.0-nightly (1e869133b 2019-09-09)
2019-09-09 11:10:42 +00:00
Oliver Scherer
b952584186 Rustup to 1.39.0-nightly (1e869133b 2019-09-09) 2019-09-09 13:00:20 +02:00
Wesley Wiser
636439c33f Re-enable run-pass tests with optimizations enabled 2019-09-09 06:32:46 -04:00
Ralf Jung
f67af5a1c2 test too big slice 2019-08-31 08:41:55 +02:00
Ralf Jung
cecbe1611b test for invalid wide raw ptr 2019-08-29 17:19:09 +02:00
Christian Poveda
f4a25e530a Add env exclusion test 2019-08-28 17:57:41 -05:00
bors
2be0db4c0b Auto merge of #917 - RalfJung:isolation, r=oli-obk
change flag name: enable-communication -> disable-isolation

r? @oli-obk  -- I think this is a better name for the flag but it is still somewhat clumsy. Suggestions?
2019-08-27 10:02:07 +00:00
Ralf Jung
26afb4685d hashmap ICEs with optimizations, temporarily disable 2019-08-27 08:42:36 +02:00
Ralf Jung
55efee9140 test host randomness access 2019-08-23 23:30:23 +02:00
Ralf Jung
97f9fb1284 change flag name: enable-communication -> disable-isolation 2019-08-23 23:29:11 +02:00
Ralf Jung
1be4e2ff58 bump Rust 2019-08-21 09:07:27 +02:00
Ralf Jung
a76bc3fb87 test arrray try_from (interesting const generic usage) 2019-08-20 16:11:03 +02:00
bors
9d14a62628 Auto merge of #913 - RalfJung:uninit, r=RalfJung
test some new uninit APIs
2019-08-18 11:39:31 +00:00
Ralf Jung
be4108e27c test some new uninit APIs 2019-08-18 11:34:09 +02:00
Ralf Jung
94cd0ce734 fix test failure due to my own lint 2019-08-18 11:16:02 +02:00
Ralf Jung
2f95d4d50c remove dead code 2019-08-15 11:01:03 +02:00
Ralf Jung
60a0688185 adjust tests for eager pointer checks on deref 2019-08-15 11:01:03 +02:00
bors
1f504ea7be Auto merge of #894 - christianpoveda:env-vars-communication, r=RalfJung
Enable env communication

related issue: https://github.com/rust-lang/miri/issues/800. r? @RalfJung
2019-08-14 18:58:06 +00:00
Christian Poveda
f451fe21bd Test env isolation 2019-08-13 16:17:53 -05:00
Christian Poveda
67d13577aa Move test env var to test_runner 2019-08-13 12:10:24 -05:00
bors
a5eb61a4ad Auto merge of #902 - RalfJung:ldexp, r=RalfJung
use apfloat for ldexp
2019-08-10 09:34:31 +00:00
Ralf Jung
33eb5657d6 ldexp: test overflow behavior 2019-08-10 11:31:20 +02:00
bors
7b3de392df Auto merge of #899 - RalfJung:generators, r=RalfJung
More generator tests

Cc @tmandry -- do these look reasonable for checking the new "partial init" case that was discovered?
2019-08-09 20:04:20 +00:00
Ralf Jung
b93629262d test that even &Cell must be dereferencable 2019-08-09 19:22:47 +02:00
Ralf Jung
abcd244927 add async fn with partial initialization 2019-08-09 11:01:42 +02:00
Ralf Jung
fc06cb71bf simplify async-fn tests 2019-08-09 11:01:42 +02:00
Ralf Jung
d5294a5bf3 test generator that yields during initialization of struct with uninhabited field 2019-08-09 11:01:42 +02:00
bors
1766d1b84b Auto merge of #896 - tmandry:add-generator-uninhabited-test, r=RalfJung
Add generator, async tests with uninhabited saved local

See discussion in https://github.com/rust-lang/rust/pull/63035.
2019-08-09 08:20:00 +00:00
bors
b09ae31da0 Auto merge of #871 - RalfJung:miri-rustc-cleanup, r=RalfJung
Cleanup after rustc bootstrap tests Miri with a separate libstd

Should only be merged after https://github.com/rust-lang/rust/pull/63162 got the green light.
2019-08-08 20:43:47 +00:00
Tyler Mandry
f544721de4 Add generator, async tests with uninhabited saved local 2019-08-07 16:56:35 -07:00
Christian Poveda
253af9692a Fix formatting 2019-08-07 10:50:46 -05:00
Christian Poveda
af623dede2 Add env var test variable in compiletest 2019-08-07 09:09:13 -05:00
Christian Poveda
b731a6a15f Add support for env communication 2019-08-06 17:40:07 -05:00
Ralf Jung
d26917a9d6 fix for latest rustc 2019-08-05 10:45:48 +02:00
bors
93e110f370 Auto merge of #886 - Aaron1011:shim/getrandom, r=RalfJung
Shim 'libc::getrandom' in addition to 'libc::syscall(libc::SYS_getrandom)'
2019-08-04 21:02:08 +00:00
Aaron Hill
a208f2fccf
Improve formatting
Co-Authored-By: Ralf Jung <post@ralfj.de>
2019-08-04 16:44:32 -04:00
Aaron Hill
66d10c877d
Ignore other platforms instead of using only-linux 2019-08-04 16:40:30 -04:00
Aaron Hill
8a75817707
Fix identation 2019-08-04 16:30:33 -04:00
Aaron Hill
a74a04f356
Test 'libc::getrandom' as well 2019-08-04 16:12:25 -04:00
Aaron Hill
6b087d2536
Add test 2019-08-04 16:12:24 -04:00
Aaron Hill
4c11c6b737
Add test for f32::round and f64::round 2019-08-04 15:57:00 -04:00
Ralf Jung
f47e58950b check that atomics are sufficiently aligned, and add test 2019-08-04 10:30:42 +02:00
Ralf Jung
702f63e427 test AtomicU64 2019-08-04 10:30:42 +02:00
Ralf Jung
ca4969d4da consolidate atomic tests 2019-08-04 10:30:42 +02:00
bors
d9d6df93a9 Auto merge of #881 - RalfJung:rustup, r=RalfJung
adjust for rustc changes
2019-08-03 18:56:38 +00:00
Ralf Jung
a41ec9aacb adjust error messages in tests 2019-08-03 20:54:57 +02:00
bors
d0e8850267 Auto merge of #877 - christianpoveda:ldexp-shim, r=RalfJung
Add shim for ldexp

Fixes https://github.com/rust-lang/miri/issues/821

r? @RalfJung
2019-08-03 16:14:20 +00:00
Ralf Jung
bff6b05424 more consistent test name 2019-08-03 17:27:50 +02:00
Ralf Jung
773f6aeb4c remove some compile-fail tests that now work 2019-08-03 15:01:04 +02:00
Christian Poveda
ff2001040f Add shim for ldexp 2019-08-02 15:46:28 -05:00
Ralf Jung
2973063fa3 test dangling ZST deref 2019-08-02 14:26:15 +02:00
Ralf Jung
3318657eaf test Ref/RefMut protector interactions 2019-08-02 08:15:52 +02:00
Ralf Jung
c4c2716f4e make reborrow shallow, and fix tests for that 2019-08-02 08:09:22 +02:00
Ralf Jung
6c545ba340 the compile-fail-norustc hack is no longer needed 2019-07-31 15:29:55 +02:00
bors
5bbf6733ea Auto merge of #869 - RalfJung:tests, r=oli-obk
test suite: be fine with warnings when running on rustc CI

r? @oli-obk
2019-07-31 11:54:00 +00:00
Ralf Jung
a414492cc7 reorder for clarity 2019-07-31 13:48:49 +02:00
Ralf Jung
edf7d1c30c dedup code a bit 2019-07-31 13:48:15 +02:00
Ralf Jung
6dadb94101 test suite: be fine with warnings when running on rustc CI 2019-07-31 13:44:55 +02:00
Yuki Okushi
af7570fced Remove await_macro 2019-07-31 16:42:38 +09:00
Ralf Jung
87f20fede5 adjust for slice pattern changes 2019-07-29 10:21:59 +02:00
Ralf Jung
8bec925e04 bump Rust 2019-07-26 10:14:44 +02:00
Ralf Jung
758d88bbf9 explain better what is non-deterministic here 2019-07-24 08:57:05 +02:00
Ralf Jung
85be8ab8eb fix non-deterministic test 2019-07-23 23:48:28 +02:00
Ralf Jung
d5ca345c36 remove redundant tests / flags 2019-07-23 23:26:25 +02:00
Ralf Jung
3c1ab78196 review failing compile-fail tests 2019-07-23 23:25:06 +02:00
Ralf Jung
c094d42504 update miri-seed handling for run-pass test suite 2019-07-23 21:53:47 +02:00
Ralf Jung
59190e8542 disable some compile-fail tests for rustc 2019-07-20 22:38:41 +02:00
Ralf Jung
95e6e671bf fix compile-fail tests for latest rustc 2019-07-16 18:39:18 +02:00
Ralf Jung
f1b623c313 test some const-generic-using methods 2019-07-13 10:25:04 +02:00
Ralf Jung
e7b39e382a reenable all tests on Windows 2019-07-11 18:41:53 +02:00
Ralf Jung
70a5bb7dbb force pointers before reborrowing; fixes cargo miri test suite 2019-07-10 14:36:56 +02:00
Ralf Jung
a6f9bbc9e2 now we can also enable the ptr_int_cast test again 2019-07-10 14:36:56 +02:00
Ralf Jung
dd6cf30f60 ptr_offset works fine with intptrcast now 2019-07-10 14:36:56 +02:00
Lzu Tao
3ea62d3527 Remove SliceConcatExt import 2019-07-10 09:56:35 +07:00
Ralf Jung
4f6a56f54f better error message when the program tries to spawn a thread 2019-07-06 10:07:21 +02:00
Ralf Jung
ba8728cd8b fix test using mem::uninitialized 2019-07-06 09:33:22 +02:00
Ralf Jung
029a29407a dangling-ptr-to-int should work now; move to noseed 2019-07-05 23:54:18 +02:00
Ralf Jung
f23b782101 align small malloc-allocations even less, and test that we do 2019-07-05 23:48:48 +02:00
Ralf Jung
4d76dd1f09 temporarily disable validation on Windows 2019-07-05 21:26:58 +02:00
Ralf Jung
9b58492df1 temporarily disable intptrcast advanced testing on Windows 2019-07-05 19:22:22 +02:00
Ralf Jung
802dcb7f89 temporarily disable ptr_offset, maybe that helps 2019-07-05 00:06:41 +02:00
Christian Poveda
8dfb278ac5 Fix explicit cast test 2019-07-03 15:59:32 -05:00
Christian Poveda
074e20eb7b Add intptrcast test for explicit casts 2019-07-03 13:38:39 -05:00
Ralf Jung
b29cb7d551 avoid catching errors 2019-07-03 10:56:25 +02:00
Ralf Jung
8ec25066e7 make a test noseed for now that does not work with intptrcast yet 2019-07-03 10:47:28 +02:00
Ralf Jung
eb4128fb42 don't call Stacked Borrows hooks at all when validation is disabled 2019-07-03 10:47:28 +02:00
Ralf Jung
44298d86f0 dont add the -Zmiri-seed flag twice 2019-07-03 10:47:25 +02:00
Ralf Jung
ccbc035f6a run all run-pass tests with intrptrcast. makes many of them fail! 2019-07-02 22:20:37 +02:00
Ralf Jung
8d8481fed5 fix outdated test name: overalign -> align 2019-07-02 13:02:48 +02:00
bors
2a4c4ade30 Auto merge of #809 - RalfJung:intptrcast, r=RalfJung
use intptrcast for heap_allocator test; then it should work on Windows
2019-06-30 21:19:56 +00:00
Ralf Jung
cb6d4f0c9a test even more size-alignment combinations. found a bug in libstd! 2019-06-30 21:23:48 +02:00
Ralf Jung
709b474859 fix minimal alignment for system allocation functions 2019-06-30 21:10:47 +02:00
Ralf Jung
78261b788d fix setting rustc flags 2019-06-30 19:10:09 +02:00
bors
72b2e1045d Auto merge of #806 - varkor:patch-1, r=RalfJung
Fix `unused_must_use` inside `Box`

After https://github.com/rust-lang/rust/pull/62228, this will be linted against (and causes the test to fail). (This blocks https://github.com/rust-lang/rust/pull/62228.)
2019-06-30 15:07:03 +00:00
Ralf Jung
0ea4b50025 Miri is not deterministic any more 2019-06-30 17:02:20 +02:00
Ralf Jung
b067313552 use intptrcast for heap_allocator test; then it should work on Windows 2019-06-30 16:56:16 +02:00
Ralf Jung
e44d38e051 improve comment 2019-06-30 16:45:41 +02:00
Ralf Jung
db6283b884 better name for a test: threads -> sync 2019-06-30 16:44:25 +02:00
varkor
5d4aae8c05
Fix unused_must_use inside Box
After https://github.com/rust-lang/rust/pull/62228, this will be linted against (and causes the test to fail).
2019-06-30 15:31:14 +01:00
Ralf Jung
11457a4ad9 fix comparing function pointers with intptrcast 2019-06-30 11:21:31 +02:00
Ralf Jung
0bb50ada34 make sure we catch alignment problems even with intrptrcast 2019-06-29 14:31:54 +02:00
Ralf Jung
afe42625e5 test pointer string formatting 2019-06-28 20:42:00 +02:00
Christian Poveda
7fbf8e53a2 Fix alignment of base addresses 2019-06-26 09:08:28 -05:00
Christian Poveda
792d665a1f Fix merge conflicts 2019-06-25 00:57:33 -05:00
Ralf Jung
7e7b5d42ba
Apply suggestions from code review
Co-Authored-By: Oliver Scherer <github35764891676564198441@oli-obk.de>
2019-06-24 14:50:27 +02:00
Ralf Jung
4d65aa8f20 expand and better explain alignment check tests 2019-06-24 08:40:45 +02:00
Ralf Jung
4dc188a60e adjust for refactored memory pointer checks 2019-06-23 20:19:26 +02:00
Christian Poveda
dd732e5862 Force intptrcast for binary operations 2019-06-22 09:25:16 -05:00
Christian Poveda
e57447014d Duplicate compile-fail tests for intptrcast 2019-06-21 16:32:54 -05:00
Ralf Jung
5472755f16 add a failing test where an immovable generator gets moved 2019-06-21 21:48:27 +02:00
Ralf Jung
04fa38dd1b allow some inequality comparisons between pointers and integers 2019-06-20 16:38:55 +02:00
Ralf Jung
7ce36226e6 implement and test unchecked_{add,sub,mul} intrinsics 2019-06-16 11:10:33 +02:00
Ralf Jung
cf748149ce test unchecked_rem 2019-06-16 11:10:33 +02:00
Ralf Jung
fc90124489 test exact_div UB detection 2019-06-16 11:10:33 +02:00
Kenny Goodin
46b6a3fb7f Add more missing math functions
Add missing functions for atan2, cosh, sinh, and tan.
Also add f32 calls and tests for cbrt and hypot.
2019-06-13 22:28:22 -04:00
Kenny Goodin
535914e3dc Implement cbrt and hypot function calls
Test cases are added to `tests/run-pass/intrinsics-math.rs`
2019-06-12 15:44:30 -04:00
Ralf Jung
e2f114a5e0 test FMA a bit more 2019-06-11 19:41:43 +02:00
Ralf Jung
9c9a947bf4 test more enum-int-cast code paths 2019-06-11 19:41:43 +02:00
Ralf Jung
5e07ac335f implement min and max floating point intrinsics 2019-06-11 19:41:43 +02:00
Ralf Jung
b0b082d4d8 do not handle MIRI_SYSROOT in the driver at all, rely fully on the --sysroot flag 2019-06-09 17:10:04 +02:00
Dylan MacKenzie
1ceb81b345 Use in-core implementation of type_name.
We bump `rust-version` to pick up the new impl from
https://github.com/rust-lang/rust/pull/61498 and add a test.
2019-06-05 22:36:53 -07:00
Ralf Jung
27a66a1e42 test for no-validation-only failure 2019-06-04 13:21:04 +02:00
Ralf Jung
9f48b3029c test that we cannot access unescaped static memory with a raw ptr 2019-06-02 22:16:02 +02:00
Ralf Jung
e03255d625 fix existing tests
fix thread-local example to no longer write to pointers derived from a shared ref;
fix compile-fail test
2019-06-02 22:16:02 +02:00
Ralf Jung
dafd2e7202 rustup for ... deprecation 2019-06-01 10:04:49 +02:00
Ralf Jung
c748323eb3 move fn_item/ptr tests to closures file 2019-05-30 11:01:22 +02:00
Ralf Jung
badbd57cee update for rustc warning about missing dyn 2019-05-30 10:58:30 +02:00
Ralf Jung
0dfc1c97c5 test weak_into_raw 2019-05-29 19:36:16 +02:00
Ralf Jung
381c2897b0 test for pointer wrapping ICE 2019-05-28 22:46:56 +02:00
Ralf Jung
f10ab1991c fix error pattern 2019-05-27 19:37:31 +02:00
Ralf Jung
74f98b3803 test for new read rules 2019-05-21 15:43:18 +02:00
Ralf Jung
0c85dbf3df prepare for MaybeUninit stabilization 2019-05-20 10:53:34 +02:00
Ralf Jung
4b9e1544c2 give up on two-phase borrows 2019-05-17 15:02:31 +02:00
Ralf Jung
b9517ca9f3 this also fixed our 2-phase woes 2019-05-15 18:12:58 +02:00
Ralf Jung
f676f2265b make writes act stack-like 2019-05-15 18:12:58 +02:00
Ralf Jung
7f09e61c31 make HashMap test a bit nicer 2019-05-13 11:45:39 +02:00
Ralf Jung
b08bf47606 fix tests for latest Rust 2019-05-01 20:43:43 +02:00
Ralf Jung
617195eb12 add arielby's example 2019-04-30 20:18:29 +02:00
Ralf Jung
42b70f17d2
Merge branch 'master' into exit 2019-04-22 11:35:36 +02:00
Ralf Jung
7bb461362e Travis: test cargo miri on foreign arch 2019-04-21 22:35:47 +02:00
Ralf Jung
a87a7338e6 test System/Global allocator API: alloc_zeroed, realloc 2019-04-21 13:47:12 +02:00
Ralf Jung
d410b13139 fix compile-fail ref files 2019-04-21 13:18:05 +02:00
Ralf Jung
0694435650 implement exit
implement exit code via new error kind
2019-04-21 12:36:17 +02:00
Ralf Jung
677bd6f656 add LinkedList test and mention the bug Miri found there 2019-04-19 23:08:24 +02:00
Ralf Jung
287ffb8bba test another version of 'creating a shared ref must not leak the Unique' 2019-04-19 08:46:40 +02:00
Ralf Jung
22b57f6435
Merge branch 'master' into stacked-borrows-2 2019-04-18 19:28:25 +02:00
Tim Diekmann
9ecc07c9b2
Add handling for nullptr and size == 0 2019-04-18 15:20:32 +02:00
Ralf Jung
7d9dc6e698 test that creating a 2nd mutable ref from a NonNull invalidates the first 2019-04-18 14:43:25 +02:00
Tim Diekmann
af3c4c0c23
Merge branch 'master' into realloc 2019-04-18 12:22:58 +02:00
Tim Diekmann
0e6deee76e
Add realloc 2019-04-18 01:20:21 +02:00
Ralf Jung
e1ed855a44 more tests -- also one showing why we are not done yet 2019-04-17 16:02:57 +02:00
Ralf Jung
72cec0562c add tests for fixes: sharing no longer leaks, and we can handle entering interior mutability 2019-04-17 16:02:57 +02:00
Ralf Jung
46d5fd8487 barriers are dead, long live protectors -- this enables overlapping two-phase borrows! 2019-04-17 16:02:57 +02:00
Ralf Jung
e7a500b7e1 test creating two raw pointers from the same mutable ref 2019-04-17 16:02:57 +02:00
Ralf Jung
a503259d8b organize stacked borrows run-pass tests 2019-04-17 16:02:57 +02:00
Ralf Jung
97c34c266f try to test the problematic cast-to-raw case... unfortunately with the implicit reborrow that's not currently possible 2019-04-17 16:02:57 +02:00
Ralf Jung
ef52be031c adjust compile-fail error messages
This also passes miri-test-libstd!
2019-04-17 16:02:57 +02:00
Ralf Jung
966d638760 make run-pass tests pass. tweak how we remove barriers. 2019-04-17 16:02:57 +02:00
Ralf Jung
6fdc75024b
Merge branch 'master' into rand 2019-04-16 20:55:58 +02:00
Ralf Jung
af2b42de0a fix compile-fail test 2019-04-16 19:09:41 +02:00
Ralf Jung
ceca7c5020 tweak entropy tests a bit 2019-04-16 19:06:08 +02:00
Ralf Jung
378d9d4172 be pragmatic about ptr-int comparisons, for now 2019-04-16 17:47:37 +02:00
Ralf Jung
a246116bdc rustup 2019-04-14 10:30:00 +02:00
Ralf Jung
aa79244b62 rustup 2019-04-12 22:15:55 +02:00
Ralf Jung
8de4f34a7f Merge remote-tracking branch 'origin/master' 2019-04-11 22:09:09 +02:00
Ralf Jung
83d199eb86 fix async-fn test 2019-04-10 17:20:54 +02:00
Aaron Hill
a8763f3d8d
Don't create HashMap<K, V> when not needed 2019-04-09 23:36:27 -04:00
Oliver Scherer
2eb2c8dd57
Merge branch 'master' into feature/random 2019-04-09 21:58:15 +02:00
Aaron Hill
ae8e7f654a
Fix compile-fail error message 2019-04-09 10:19:29 -04:00
Aaron Hill
9243680588
Use 'ignore-' instead of 'only-'
Apparently 'ignore-' doesn't work with compiletest_rs
2019-04-08 23:52:33 -04:00
Aaron Hill
5e07ff6b1f
Only run 'getrandom' test on Linux 2019-04-08 23:16:13 -04:00
Aaron Hill
174874420b
OS X is "macos", not "darwin" 2019-04-08 22:48:57 -04:00
Aaron Hill
858e82bc6f
Disable normal HashMap test on OS X
Implementing random number generation on OS X will require special-casing the
'openat' system call to special-case reading from /dev/urandom
2019-04-08 22:30:38 -04:00
Aaron Hill
6d3e93c281
Refactor random number generation 2019-04-08 22:22:41 -04:00
Aaron Hill
b120e8bb88
Only run test with default hasher 2019-04-08 21:42:12 -04:00
Aaron Hill
5530d295ad
Simplify cast using as_mut_ptr() 2019-04-08 21:36:35 -04:00
Tim Diekmann
fdefac8599
Fix calloc test
Forgot to free the memory. Miri found the bug :)
2019-04-08 01:26:52 +02:00
Aaron Hill
73239573c9
Implement non-deterministc mode
Part of #653

This allows us to properly implement getrandom(),
which unlocks the default HashMap type (e.g. HashMap<K, V>)
with RandomState)

This commit adds a new '-Zmiri-seed=<seed>' option. When present,
this option takes a 64-bit hex value, which is used as the seed
to an internal PRNG. This PRNG is used to implement the 'getrandom()'
syscall.

When '-Zmiri-seed' is not passed, 'getrandom()' will be disabled.
2019-04-07 19:26:20 -04:00
Tim Diekmann
fa0755c9fd
Add calloc test 2019-04-08 01:12:50 +02:00
Ralf Jung
3f552fea26 test calling Box<dyn FnOnce> 2019-04-07 20:06:22 +02:00
Ralf Jung
336a59d264 rename MIRI_TARGET -> MIRI_COMPILETEST_TARGET to clarify that this affects compiletest only 2019-04-07 10:58:10 +02:00
Ralf Jung
72cd133d1b compiletest can just propagate MIRI_SYSROOT from the outside 2019-04-07 10:58:06 +02:00
Ralf Jung
ddb0496642 temporarily ignore async fn test 2019-04-06 22:11:59 +02:00
Matthew Jasper
3298102a64 Remove unnecessary test directive 2019-04-06 16:17:33 +01:00
Matthew Jasper
7213b91cd4 Use edition flag for 2phase test
The compiler now rejects one of the examples with #![feature(nll)]
2019-04-05 14:35:31 +01:00
Oliver Scherer
56c7656568 Remove dead code and docs 2019-03-11 10:28:03 +01:00
Alexander Regueiro
12d3ecbaff Various cosmetic improvements. 2019-02-26 18:37:46 +00:00
Alexander Regueiro
a478bfebd2 Removed copyright notices. 2019-02-26 18:37:45 +00:00
rchaser53
b1c0cf2ef9 use copy_op directly insteadof write_scalar
- fix volatile_store logic
- rename test to be able to read back from later
- expand test to use assert_eq! and confirm to fix volatile_store
- expand test to use assert_eq! and confirm normal load
2019-02-26 19:49:02 +09:00
Ralf Jung
ac23bcd298 test using the Global allocator trait to alloc/free a Box 2019-02-25 09:47:34 +01:00
Ralf Jung
5a8a15361d
Merge branch 'master' into no-two-phase-matches 2019-02-24 16:26:42 +01:00
Ralf Jung
6edf674f4f Merge remote-tracking branch 'origin/master' into btree 2019-02-24 12:22:42 +01:00
Matthew Jasper
acc304c0bd Remove test of two-phase borrows in match 2019-02-24 08:16:21 +00:00