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
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