Ralf Jung
bc548d3004
test BTreeMap::drain_filter for leaks
2020-09-11 12:20:08 +02:00
Ralf Jung
e61be0b8b8
expand collection tests
2020-09-10 08:44:27 +02:00
Samrat Man Singh
563fb8e43d
Implement dup and close for stdin/stdout/stderr
...
Support F_DUPFD on stdin/stdout/stderr
Enable `close`-ing stdin/stdout/stderr
For `dup`, check if FD is `File` first
If not, clone the appropriate standard IO stream
Merge POSIX `close` and `dup` tests into same module
Also, add assertion that `write` on a closed FD returns an error.
Add `dup` as FileDescriptor trait fn
Also:
- Fix `close` so it drops `self` instead of reference to it
- Remove FD clamping in insert_fd_with_min_fd, since FDs 0-2 can be
closed
Fix fs_libc tests
Make error message when closing stdin/out/err more specific
Return io::Result from `FileDescriptor::dup`
Change error message when closing stdin/out/err
Refactor `FileDescriptor::dup` impl for `FileHandle`
Remove empty line
2020-09-09 23:26:33 +05:30
bors
604a674ea3
Auto merge of #1536 - divergentdave:nanosleep, r=RalfJung
...
Nanosleep
This PR adds a shim for `libc::nanosleep`, (available under -Zmiri-disable-isolation only) which backs `thread::sleep` on Linux and macOS. I started off by extracting the `timespec` parsing from the `pthread_cond_timedwait` shim into a helper method, and adding checks for invalid values. The second commit adds the new shim and a small test. The shim blocks the current thread, and registers a timeout callback to unblock the thread again, using the same method as `pthread_cond_timedwait` does.
2020-09-08 08:26:33 +00:00
David Cook
06aaea1d6b
Update comment
2020-09-07 15:05:26 -05:00
David Cook
33e928c9ca
Review comments
2020-09-07 10:54:39 -05:00
Ralf Jung
3fdbc0fd3f
fix referenced issue
2020-09-07 13:10:31 +02:00
Ralf Jung
3ba1035d27
use standard black_box function
2020-09-07 11:29:47 +02:00
Ralf Jung
d9bc19a7b0
test opt-level 2
2020-09-07 10:43:49 +02:00
David Cook
417ac2939a
Implement libc::nanosleep shim
2020-09-06 18:07:17 -05:00
David Cook
6d323e1032
Refactor timespec parsing, improve error handling
2020-09-06 18:07:14 -05:00
bors
c28a8eeb74
Auto merge of #1532 - divergentdave:thread-panic-payload, r=RalfJung
...
Move panic payload state from Machine to Thread
This PR moves the panic payload storage from the `Machine` state to per-thread state. Prior to this change, if one thread panicked while another was still unwinding, Miri would fail with `thread 'rustc' panicked at 'the panic runtime should avoid double-panics', src/shims/panic.rs:51:9`. I ran into this issue while prototyping a round-robin scheduler, but it's also reachable with the current scheduler and contrived programs that use blocking API calls to cause thread switching during unwinding. I wrote a test case along those lines for this change.
2020-09-03 10:09:34 +00:00
David Cook
7a2c6812b9
Per-thread errno storage
2020-09-02 20:57:20 -05:00
Ralf Jung
3466462306
rustup, fix test
2020-09-01 10:55:09 +02:00
David Cook
da2f268443
Review comments
2020-08-31 19:32:14 -05:00
David Cook
3ba7f46058
Move panic payload state from Machine to Thread
2020-08-29 21:38:37 -05:00
Ralf Jung
39e6baeb91
rustup
2020-08-27 09:27:58 +02:00
Ralf Jung
2f9de18f88
rustup; account for ptr_offset_from stabilization
2020-08-24 10:06:44 +02:00
Ralf Jung
df9b2127ce
fix a test for big-endian targets
2020-08-22 18:07:43 +02:00
Ralf Jung
0913653e06
make sure we test panic of interpreter-impelemted align_offset
2020-08-16 18:31:48 +02:00
Ralf Jung
d4e5943259
use real align_offset unless we symbolic alignment check is enabled
2020-08-16 18:26:04 +02:00
Ralf Jung
cb985670c1
make alignment check integer-based by default, and add an option to make it symbolic
2020-08-16 17:08:38 +02:00
Ralf Jung
422113a491
rustup
2020-08-05 13:38:15 +02:00
Ralf Jung
35309a200b
rustup; fix linked_list test
2020-08-01 14:18:52 +02:00
Ralf Jung
729ccbc65e
test track_caller on trait objects
2020-07-31 18:30:07 +02:00
Ralf Jung
ee39ac9840
rustup for new folder layout
2020-07-29 14:27:14 +02:00
Ralf Jung
cae90b6d29
rustup and test fixes
2020-07-27 23:40:27 +02:00
Ralf Jung
2a42f8e93c
fix and test order of TLS dtors and thread joining
2020-07-27 23:32:15 +02:00
Ralf Jung
f68bba9906
test casting a dangling ptr back from an int
2020-07-11 20:56:47 +02:00
Ralf Jung
6ca67a346b
rustup
2020-07-02 10:48:01 +02:00
Ralf Jung
fcdacce4b1
fix some ignore-windows comments
2020-06-28 20:40:20 +02:00
Ralf Jung
e54619b5e1
with this, we support panics on Windows
2020-06-27 14:43:37 +02:00
Ralf Jung
dca00ab85e
introduce platform-specific module hierarchy for dlsym (similar to foreign_items)
2020-06-27 14:36:05 +02:00
bors
bde2eb4a44
Auto merge of #1460 - RalfJung:modules, r=RalfJung
...
Re-organize platform-specific shims
Move platform-specific code to `shims::{posix::{linux, macos}, windows}`. Also make it private in these modules to ensure we are reasonably structured.
2020-06-27 11:27:36 +00:00
Ralf Jung
395f5d40dc
Rename shims::{sync -> posic_sync} and move sync_singlethread test to other sync test
2020-06-27 12:37:12 +02:00
Ralf Jung
b46f946c81
supply our own implementation of the CTFE pointer comparison intrinsics
2020-06-27 11:57:43 +02:00
Ralf Jung
2e5a0dc172
add a miscompilation test
2020-06-22 11:32:01 +02:00
Ralf Jung
03fe3772a8
make sure the raw_ptr macros also avoid UB
2020-06-20 14:31:47 +02:00
Ralf Jung
2940da9d1f
bump Rust
2020-06-20 11:48:42 +02:00
bors
ffd03b3caa
Auto merge of #1418 - divergentdave:file-sync, r=RalfJung
...
Add file sync shims
This PR adds shim implementations for these related file syncing functions.
* `fsync`, for POSIX targets, backed by `File::sync_all()`
* `fdatasync`, for POSIX targets, backed by `File::sync_data()`
* `fcntl` with command `F_FULLFSYNC`, for macOS targets, backed by `File::sync_all()`
* `sync_file_range`, for Linux targets, backed by `File::sync_data()`
2020-06-09 08:48:40 +00:00
David Cook
e352d4fbb7
Finish fixing Windows host support
2020-06-06 16:54:13 +00:00
Ralf Jung
dcb2b30982
rustup, and adjust timing tests
2020-06-03 09:40:21 +02:00
Ralf Jung
7d406b152a
test WTF8 encoding corner cases
2020-06-01 01:12:31 +02:00
Ralf Jung
acb3ec0866
test and fix for rwlock unlock bug
2020-05-30 22:48:43 +02:00
Ralf Jung
c77e9022d5
rustup (and account for stabilization)
2020-05-30 09:23:25 +02:00
David Cook
3252082474
Fix test on Windows hosts
...
FlushFileBuffers requires that a file be opened for writing
2020-05-25 13:20:29 -05:00
David Cook
7ba8bbc49f
Update comments
2020-05-25 07:32:56 -05:00
Vytautas Astrauskas
34ddd775e8
Increase the elapsed time window.
2020-05-25 08:07:07 +02:00
Vytautas Astrauskas
bd97074517
Small changes.
2020-05-25 00:02:54 +02:00
Vytautas Astrauskas
babedc938e
Rewrite notify all test.
2020-05-25 00:02:54 +02:00
Vytautas Astrauskas
8b5a9836be
Small changes.
2020-05-25 00:02:54 +02:00
Vytautas Astrauskas
86eb262e8a
Cleanup Condvar tests.
2020-05-25 00:02:54 +02:00
Vytautas Astrauskas
4a303b1309
Add a timeout test for conditional variables.
2020-05-25 00:02:54 +02:00
Vytautas Astrauskas
6e774dec86
Move all run-pass synchronization primitive tests to sync.rs.
2020-05-25 00:02:54 +02:00
Vytautas Astrauskas
679245769b
Implement support for synchronization primitives.
2020-05-25 00:02:54 +02:00
Ralf Jung
e6ced2f9c4
add interesting unsizing test
2020-05-24 12:03:06 +02:00
Ralf Jung
404c37999b
test discriminant_value intrinsic
2020-05-23 16:30:50 +02:00
Ralf Jung
cc1a2119f6
adjust for changed allocation strategy
2020-05-20 00:00:35 +02:00
David Cook
0b060c7364
Review comments
2020-05-19 08:57:31 -05:00
David Cook
87c4694448
Add file sync shims
...
Adds implementations for fsync, fdatasync, and sync_file_range
2020-05-17 22:10:40 -05:00
Ralf Jung
da6846c8a9
copy some float cast tests from rustc
2020-05-06 22:46:42 +02: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
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
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
cc9248a7c8
Ignore prctl test on MacOS because it does not support it.
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
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
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
Ralf Jung
a5ddaa07eb
rename tests: undefined -> uninit
2020-04-27 12:32:03 +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
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
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
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
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
25c71e5c0e
test some more corner cases in happy float casts
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
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
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
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
033eae5ad7
rustup for AllocRef changes
2020-04-02 11:45: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
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
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
4608b94bd8
implement CLOCK_MONOTONIC on Linux
2020-03-19 23:01:24 +01: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
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
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
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
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
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
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
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
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
Ralf Jung
74ef63ff0a
the never type got de-stabilized again; adjust tests
2019-12-15 12:23:43 +01:00
Ralf Jung
b0a205ce6f
add caller_location tests to Miri
2019-12-08 11:06:35 +01:00
Ralf Jung
e92d16d9cd
add flag to ignore memory leaks
2019-12-07 13:44:48 +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