Oliver Scherer
7ead530841
Rustfmt all the things
2019-12-23 12:56:23 +01:00
Ralf Jung
bc715cb646
disable sysroot checks for distributed binaries
2019-12-22 18:13:13 +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
817f4159a2
Use the machine stop error instead of abusing other error kinds
2019-12-09 14:29:28 +01:00
Oliver Scherer
eab2538317
Rename track-id to track-pointer-tag
2019-12-08 12:20:51 +01:00
Oliver Scherer
67417945d4
Detect all variants of stack removals
2019-12-08 12:20:51 +01:00
Oliver Scherer
d363a47fcb
Add a scheme to find the place where an id was destroyed
2019-12-08 12:20:51 +01:00
Ralf Jung
67151a712d
rustup
2019-12-08 10:32:50 +01:00
Ralf Jung
0a63637e66
fix all-targets build
2019-12-07 19:04:05 +01:00
Ralf Jung
e92d16d9cd
add flag to ignore memory leaks
2019-12-07 13:44:48 +01:00
Ralf Jung
edac086f1c
rustup for find_fn rename
2019-12-04 23:31:39 +01:00
Ralf Jung
94732aaf7b
rename helper methods a bit
2019-12-04 10:43:36 +01:00
Ralf Jung
01f060b6da
avoid allocation in read_os_string_from_c_string
2019-12-04 10:16:08 +01:00
Ralf Jung
808ac8f4b9
use write_os_str_to_c_string for unix arg passing
2019-12-04 09:58:10 +01:00
Ralf Jung
ab000997db
use throw_machine_stop macro
2019-12-03 23:31:44 +01:00
Aaron Hill
a418fe9826
Rustup for BodyCache
changes
2019-12-02 20:21:03 -05:00
Ralf Jung
8e3c3eccc4
panic errors are actually still possible
2019-12-02 16:04:31 +01:00
Ralf Jung
d43e394c46
fix init_allocation_extra
2019-12-02 16:04:31 +01:00
Ralf Jung
e77258322c
some error classes should be impossible
2019-12-02 16:04:31 +01:00
Ralf Jung
1b3434c67d
adjust for init_allocation_extra
2019-12-02 16:04:31 +01:00
Ralf Jung
b2cddd27bd
better span for functions whose frame we push 'manually'
2019-12-02 16:04:31 +01:00
Ralf Jung
b91383b068
implement proper panicking for other MIR assertions
...
Requires generalizing the call_function helper to arbitrary Immediate arguments
2019-12-02 16:04:31 +01:00
Ralf Jung
8a36d12d36
implement proper panicking for failed index check
2019-12-02 16:04:31 +01:00
Ralf Jung
dcdd68b936
also indicate abort via new MachineStop variant
2019-12-02 09:13:58 +01:00
Ralf Jung
f3c00a447c
use new MachineStop error variant
2019-12-02 09:05:35 +01:00
Ralf Jung
a971b8a2ae
fix for GlobalCtxt changes
2019-11-30 12:05:35 +01:00
Ralf Jung
4a4886c0f0
avoid injected_panic_runtime which is going away
2019-11-29 21:37:59 +01:00
Ralf Jung
e5a81c6a2d
fix comment
2019-11-29 11:08:27 +01:00
Ralf Jung
fe76d33506
Add and use helper function for calling a machine function and passing it some arguments
2019-11-29 09:23:29 +01:00
Ralf Jung
a04620eb69
only run leak test on clean platforms
2019-11-27 09:13:37 +01:00
Ralf Jung
824328c6d5
adjust for goto_block refactoring
2019-11-27 08:34:15 +01:00
Ralf Jung
5339d541ef
cargo-miri: also find Rust sources when being run in a locally built, linked toolchain
2019-11-23 10:33:49 +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
Aaron Hill
2176bf6cf0
Fix nits
...
Co-Authored-By: Ralf Jung <post@ralfj.de>
2019-11-20 13:52:04 -05:00
Aaron Hill
3102129316
Improve return code propagation.
...
Don't explicitly exit if we reported an evaluation error
2019-11-20 12:43:10 -05:00
Aaron Hill
2532b86a3b
Propagate the return code from the start
lang item
...
Fixes #1064
This ensures that we set the error code properly when a panic unwinds
past `main`.
I'm not sure what the best way to write a test for this is
2019-11-19 17:25:09 -05:00
Aaron Hill
2750f60d4f
Update panic runtime comment
2019-11-19 15:33:14 -05:00
Aaron Hill
e02dc4af4b
Re-add comment
2019-11-19 15:31:37 -05:00
Aaron Hill
8936d67e7f
Delegate to the actual panic runtime crate
2019-11-19 10:11:25 -05:00
Ralf Jung
82374ad9bd
comments and slight refactoring
2019-11-19 14:51:08 +01: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
5345636f37
use new isize_max method in FS accesses; also check full buffers for validity
2019-11-17 09:54:09 +01:00
bors
9f1aec34e1
Auto merge of #1055 - RalfJung:panic-stub, r=RalfJung
...
minimal rustup for panic changes
Main patch by @Aaron1011
2019-11-17 08:21:42 +00:00
Ralf Jung
f2c0c44a09
remove some leftovers from the miri-control-attribute days
2019-11-17 09:20:50 +01:00
bors
2bdf163d69
Auto merge of #1053 - RalfJung:clean, r=RalfJung
...
remove no-longer-needed zero checks
2019-11-14 10:16:51 +00:00
Ralf Jung
c790317eb9
remove no-longer-needed zero checks
2019-11-14 10:30:00 +01:00
Ralf Jung
64244e9a18
do full deref-check before reborrowing
2019-11-14 10:24:02 +01:00
bors
09b0a8a813
Auto merge of #1022 - christianpoveda:fix-fd-access, r=RalfJung
...
Fix unchecked memory access for files
This PR takes care of two problems:
- It uses `Memory::(read|write)_bytes` to guarantee that memory accesses are checked (Fixes: https://github.com/rust-lang/miri/issues/1007 )
- It removes the `(get|remove)_handle_and` methods which were a little bit cumbersome to use. In particular `remove_handle_and`, because we were using it to avoid borrowing issues before the `Evaluator::memory` field was public.
@RalfJung @oli-obk
2019-11-13 22:58:24 +00:00
Christian Poveda
4baef7120a
Fix maximum isize
value for target
2019-11-13 14:45:00 -05:00
Christian Poveda
edd0157069
Cap count
twice
2019-11-13 11:57:20 -05:00
Steven Gu
ca983f5f80
Implments intrinsics::copysignf32
and intrinsics::copysignf64
.
2019-11-13 17:41:09 +08:00
Aaron Hill
cf5b53e52f
Rustup for panic changes
...
This gets Miri working again, but doesn't actually implement unwinding
2019-11-12 19:52:15 -05:00
Ralf Jung
2c55a508e9
rustup
2019-11-11 21:25:57 +01:00
Christian Poveda
6e37f2f3e1
Cap count
2019-11-09 15:15:52 +01:00
Christian Poveda
10b93730d3
Fix merge conflicts
2019-11-09 10:42:45 +01:00
Ralf Jung
37b1190def
rustup
2019-11-08 22:07:52 +01:00
Ralf Jung
9ca277f2e9
bump minimal xargo version so that it honors the lockfile
2019-11-08 16:36:57 +01:00
Christian Poveda
4bbaa72dc9
Use TryFrom instead
2019-11-07 20:50:16 +01:00
bors
0740a2040f
Auto merge of #1037 - JOE1994:master, r=RalfJung
...
error code E0080 is no longer printed with MIRI error message
Thanks to help from @bjorn3, @RalfJung, and @oli-obk on issue #1035 , I fixed the miri code so that error code **E0080** is no longer printed out for MIRI evaluation errors. I tested my code in my Linux machine as below.
![image](https://user-images.githubusercontent.com/10286488/68264744-e71e6c80-0017-11ea-9028-f83e19164ea2.png )
Remaining concern is whether the variable name `new_tcx` which I used is misleading or not.
Fixes https://github.com/rust-lang/miri/issues/1035
2019-11-06 13:39:22 +00:00
YOUNGSUK KIM
e5675ab0fc
follow-up to review
2019-11-06 08:25:00 -05:00
Ralf Jung
8b0c14f9f6
ptr_offset: handle negative offsets
2019-11-06 10:51:06 +01:00
Ralf Jung
4b9a7d8cff
fix error message details
2019-11-06 09:24:26 +01:00
Ralf Jung
9eb4e00f6f
refactor ptr_offset_inbounds: it can be reduced to check_ptr_access, after all!
2019-11-06 09:24:26 +01:00
YOUNGSUK KIM
2661295cdf
error code E0080 is no longer printed with MIRI error message
2019-11-05 21:56:18 -05:00
Christian Poveda
f910ea135c
Avoid using as
cast
2019-11-05 16:47:24 -05:00
Christian Poveda
56c5e53553
Handle host's usize
correctly
2019-11-04 09:38:21 -05:00
Christian Poveda
d0b4407b25
Fix casts for count
check
2019-11-03 10:04:00 -06:00
Ralf Jung
955a26fb08
calling panic_if_uninhabited is not actually UB
2019-11-03 15:39:03 +01:00
bors
4f7171585f
Auto merge of #961 - rust-lang:exact_div_reuse, r=RalfJung
...
Use the upstream `exact_div` implementation
introduced in https://github.com/rust-lang/rust/pull/63810
2019-11-03 09:16:55 +00:00
Ralf Jung
5a5fa15382
style
2019-11-03 10:03:30 +01:00
Oliver Scherer
7a39460e24
Use the upstream exact_div
implementation
2019-11-03 09:34:48 +01:00
Ralf Jung
ddb1fc9205
store scalars where appropriate
2019-11-02 11:50:21 +01:00
Ralf Jung
1e0b398cb6
Windows cmdline: avoid accessing allocations directly
2019-11-02 11:48:28 +01:00
Ralf Jung
90634121b3
fix typo
2019-10-30 15:05:44 +01:00
Ralf Jung
15ae234a42
rustup for span in intrinsic emulation
2019-10-30 10:16:58 +01:00
Christian Poveda
06ef77bfef
Check for usize to i64 overflows
2019-10-28 16:44:18 -05:00
Christian Poveda
122549fd09
Simplify read
logic
2019-10-26 09:03:45 -05:00
Christian Poveda
d7967f6b05
Drop files explicitly when closing them
2019-10-26 08:54:02 -05:00
Ralf Jung
d8a3a1f09c
rustup for projection interning
2019-10-26 09:33:24 +02:00
Christian Poveda
260b463bb0
Clean file handling functions
2019-10-24 09:34:48 -05:00
Ralf Jung
c87f106cac
update comments and some tweaks
2019-10-24 10:27:14 +02:00
Ralf Jung
cf9340113e
rustup: more flexible write_bytes avoids allocations and removes itertools dependency
2019-10-24 10:15:30 +02:00
bors
a05f2aa3ab
Auto merge of #993 - christianpoveda:os_string_helper, r=RalfJung
...
Add OsString from/to bytes helper functions
Related issue: https://github.com/rust-lang/miri/issues/989
r? @RalfJung
2019-10-23 16:52:52 +00:00
Ralf Jung
354de02c24
rustup; fix debugging
2019-10-23 16:33:54 +02:00
Christian Poveda
de12cbcb32
Fix documentation
2019-10-23 08:58:25 -05:00
Christian Poveda
fb4cb5bf4a
Make size error distinguishable from other errors
2019-10-22 16:57:07 -05:00
Christian Poveda
be415dbeda
Use new write_bytes method
2019-10-22 11:44:49 -05:00
Ralf Jung
db949af8ed
fix field index
2019-10-22 10:43:16 +02:00
Ralf Jung
2690f5948a
rustup: fix for write_bytes and new union rules
2019-10-22 10:13:11 +02:00
Christian Poveda
72bd25de83
Fix merge conflicts
2019-10-21 08:49:49 -05:00
Ralf Jung
d9aa20fb31
add some missing trailing full stops that slipped through review
2019-10-21 13:24:56 +02:00
bors
af3923bebc
Auto merge of #991 - christianpoveda:errno-place, r=RalfJung
...
Change the last OS error location to a place
r? @RalfJung
2019-10-21 09:15:51 +00:00
bors
f912a8b054
Auto merge of #1010 - RalfJung:xargo, r=RalfJung
...
when xargo is manually specified, don't try to upgrade it
2019-10-21 08:45:54 +00:00
Ralf Jung
ebdb6d4df7
when xargo is manually specified, don't try to upgrade it
2019-10-21 10:25:47 +02:00
Christian Poveda
283a130dda
Add docs for the new helper functions
2019-10-20 17:40:21 -05:00
Christian Poveda
9d50c5e758
Small corrections to docs
2019-10-20 07:55:26 -05:00
Christian Poveda
8a8fa53a5d
Transform the last error place to an immediate instead
2019-10-20 07:55:26 -05:00
Christian Poveda
619ccf3834
Rename set_last_error_from_io_result
2019-10-20 07:55:25 -05:00
Christian Poveda
5c3c738c4b
Make transformation to OS error explicit
2019-10-20 07:53:56 -05:00
Christian Poveda
338e51aa48
Rename consume_result
2019-10-20 07:53:55 -05:00
Christian Poveda
ed776f67ba
Change last_error to a place
2019-10-20 07:42:59 -05:00
Christian Poveda
4232939319
Move last error functions to helpers
2019-10-20 07:42:59 -05:00
Ralf Jung
88c88530ec
use expect_none and unwrap_none where it makes sense
2019-10-20 12:20:48 +02:00
Christian Poveda
f7c6e0efbe
Do additional bounds checks
2019-10-19 15:49:00 -05:00
Christian Poveda
ab059671cb
Change comparison order for clarity
2019-10-19 14:13:49 -05:00
Ralf Jung
324fed316f
print sysroot without any escaping
2019-10-19 16:38:37 +02:00
Ralf Jung
e574c77aa2
audit our bounds checks
2019-10-19 12:39:02 +02:00
Christian Poveda
0201cc5587
Fix writing errors
2019-10-18 15:28:06 -05:00
Christian Poveda
85941c7249
Rename write/read os string functions
2019-10-18 09:49:56 -05:00
Christian Poveda
68fec4b3fe
Use conditional compilation properly and work with OsStr
s instead
2019-10-18 09:49:56 -05:00
Christian Poveda
1241abbec4
Change helper functions to read/write
2019-10-18 09:49:55 -05:00
Christian Poveda
61da8b8428
Add OsString from/to bytes helper functions
2019-10-18 09:47:19 -05:00
Ralf Jung
5481afbaf6
cleanup now that borrow checker knows memory is a field
2019-10-18 11:33:12 +02:00
Yuki Okushi
a353e90eed
Use memory field instead of memory()
2019-10-18 11:11:50 +09:00
Ralf Jung
2967d0d13a
better error when using cargo-miri in a workspace
2019-10-16 22:03:44 +02:00
bors
358cfd290c
Auto merge of #996 - christianpoveda:unsup-wo-isolation, r=RalfJung
...
Add function to error with enabled isolation
Fixes https://github.com/rust-lang/miri/issues/986
r? @RalfJung
2019-10-16 08:17:57 +00:00
bors
49cab51ac3
Auto merge of #987 - christianpoveda:check-unsupported-fs-flags, r=RalfJung
...
Error when there is an unsupported flag for opening a file
@RalfJung this is my attempt to check for undesired flags. I also changed fcntl to error when doing any other action besides getting the flags for a fd
2019-10-16 07:52:12 +00:00
Christian Poveda
24872230dc
Check that access mode flags only use the first two bits
2019-10-15 08:01:07 -05:00
Christian Poveda
78311a7132
Add function to error with enabled isolation
2019-10-15 07:33:14 -05:00
Ralf Jung
4ba63fb0fc
explain our shell encoding
2019-10-15 11:03:32 +02:00
bors
42c1e779cb
Auto merge of #980 - JOE1994:master, r=RalfJung
...
change cargo-miri.rs to fix issue #978
In Windows 10, there was an issue with building MIRI locally and getting it running,
due to unpredictable backslash escaping issues in paths.
I added a code snippet that would only be compiled in Windows OS, which replaces all backslashes in paths to slashes.
This fix should only affect Windows users.
Building and testing MIRI locally now works fine after the fix.
![miri_result_after_fix0](https://user-images.githubusercontent.com/10286488/66260998-344abc80-e794-11e9-9d7c-b4ef098443de.PNG )
Fixes https://github.com/rust-lang/miri/issues/978
2019-10-15 08:22:26 +00: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
YOUNGSUK_KIM
65fd00665e
remove unnecessary line break
2019-10-14 22:37:54 -04:00
YOUNGSUK_KIM
e06ce728ca
Ralf Jung's great idea!
2019-10-14 20:57:57 -04:00
Christian Poveda
f9c768864a
Use places instead of ptrs to write packed immtys
2019-10-14 16:00:40 -05:00
Christian Poveda
50618b55cd
Error on negative times
2019-10-13 16:06:37 -05:00
Christian Poveda
f76f8ce63b
Correct fcntl behavior
2019-10-12 20:12:26 -05:00
Christian Poveda
508df227e5
Group libc helper functions
2019-10-12 19:48:18 -05:00
Ralf Jung
19fb53e8a3
better debugging for sysroot check
2019-10-12 18:11:44 +02:00
Christian Poveda
d73fae1b28
Remove F_SETFD command
2019-10-11 12:20:06 -05:00
Christian Poveda
a1c6797c5c
Error when there is an unsupported flag
2019-10-11 11:42:12 -05:00
Christian Poveda
2cbf4afa99
Split write_c_ints
into less specific helper functions
2019-10-11 11:41:11 -05:00
Christian Poveda
87b210df6c
Fix sign when number of seconds is zero
2019-10-11 11:39:32 -05:00
Christian Poveda
8f4d185d1b
Move time related functions to its own module
2019-10-11 11:39:31 -05:00
Christian Poveda
b8ee90d22e
Throw error instead of panicking for unfittable bits
2019-10-11 11:38:24 -05:00
Christian Poveda
9f24c12624
Add helper function to write structs
2019-10-11 11:38:22 -05:00
Christian Poveda
b7863f2509
Add gettimeofday shim for macOS
2019-10-11 11:36:33 -05:00
Christian Poveda
7a6df8504f
Get size of integers using libc
2019-10-11 11:36:33 -05:00
Christian Poveda
adfa2eb062
Return negative times when the current time is before the unix epoch
2019-10-11 11:36:33 -05:00
Christian Poveda
fcf04b5425
Reduce size of nanoseconds
2019-10-11 11:36:33 -05:00
Christian Poveda
aa3e9703d1
Add clock_gettime shim
2019-10-11 11:36:33 -05:00
Christian Poveda
003b257f87
Change error handling style for consistency
2019-10-11 08:20:32 -05:00
Christian Poveda
60cf06a03f
Use existing tcx instead
2019-10-11 04:20:18 -05:00
Christian Poveda
67ea454647
Correct style of comments
2019-10-11 04:17:43 -05:00
Christian Poveda
1c64f29811
Add comment for the flag diff check
2019-10-11 03:55:18 -05:00
Christian Poveda
12040aae88
Add comment explaining why buffer isn't overflowed
2019-10-11 03:43:20 -05:00
Christian Poveda
c8df0171e8
Move functions to eval libc constants to helpers
2019-10-11 01:53:31 -05:00
Christian Poveda
976c976f09
Rename shims::io to shims::fs
2019-10-11 01:49:28 -05:00
YOUNGSUK_KIM
610dbdd562
fixed cargo-miri bug for windows users
2019-10-10 11:03:20 -04:00
Christian Poveda
187361996f
Add errno_location shim for MacOS
2019-10-08 10:22:39 -05:00
Christian Poveda
ffc47de1b9
Add unlink shim to delete files
2019-10-08 08:50:58 -05:00
bors
9d03dd6364
Auto merge of #977 - christianpoveda:last-error-ptr, r=oli-obk
...
Move last error into memory
These changes move the `Evaluator::last_error` into miri's memory and implement the `__errno_location()` shim (which is used by the file handling functions when they fail).
2019-10-08 13:21:05 +00:00
Christian Poveda
459c65a4f9
Add method to consume io::Error
2019-10-08 08:18:51 -05:00
Christian Poveda
887d748114
Add __errno_location shim
2019-10-07 09:15:37 -05:00
Christian Poveda
11d7be9c6f
Move last_error into memory
2019-10-07 09:15:32 -05:00
Christian Poveda
905c70cfa5
Rustfmt
2019-10-07 09:12:30 -05:00
YOUNGSUK_KIM
2b3b865c28
change cargo-miri.rs to fix issue #978
2019-10-05 17:11:09 -04:00
Nicolas
0c4003631d
Add missing atomic_fence intrinsics as nops
...
Fixes #972
2019-10-05 06:12:37 -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
78e0d309ef
Avoid early return after handles are removed
2019-10-01 14:07:45 -05:00
Christian Poveda
5a05c04c85
Correct name of each shim when erroring
2019-10-01 11:14:50 -05:00
Christian Poveda
cd495cb04f
Add file writing capabilities
2019-10-01 11:10:37 -05:00
Christian Poveda
d0509d719c
Add docs for helper functions
2019-10-01 10:31:04 -05:00
Christian Poveda
50be5a83c5
Remove return argument when fd is not found
2019-10-01 09:28:48 -05:00
Christian Poveda
644467c570
Add methods to handle invalid fides
2019-09-30 15:54:43 -05:00
Christian Poveda
efbe798e62
Avoid buffer allocation to read files
2019-09-30 14:21:45 -05:00
Christian Poveda
775246e329
Add method to consume std::io::Result
2019-09-30 14:08:12 -05:00
Christian Poveda
03ed4123c0
Add FileHandle struct
2019-09-30 11:51:09 -05:00
Christian Poveda
b540e5d24e
Reserve fides for stdio and fix merge issues
2019-09-30 10:54:51 -05: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
Ralf Jung
63ea13ad0d
fix miri-rustc-tests
2019-09-28 11:00:05 -04:00
Ralf Jung
28e814ab53
rustup
2019-09-28 10:37:48 -04:00
Oliver Scherer
9fdb347ad7
Rustup to sty
-> kind
changes
2019-09-26 11:41:11 +02:00
Christian Poveda
ca3a917a6f
Enable close call for macos
2019-09-25 11:16:11 -05:00
Christian Poveda
01f64616ad
Check that the only flag change is done to enable FD_CLOEXEC
2019-09-25 11:11:20 -05:00
Christian Poveda
3726081857
Add helper function to fetch libc
constants
2019-09-25 10:49:12 -05:00
Christian Poveda
79b1f91f45
First version of file handling
2019-09-25 01:17:18 -05:00
Christian Poveda
0eed5e64de
Add chdir
shim
2019-09-24 15:50:00 -05:00
Christian Poveda
02261e4be2
Fix comments
2019-09-24 09:29:16 -05:00
Christian Poveda
e2c54e64d1
Ignore integers
2019-09-22 21:39:17 -05:00
Christian Poveda
f736636038
Throw unsupported error when alignment is not a power of two
2019-09-22 20:56:48 -05:00
Christian Poveda
0f58289b3d
fetch ERANGE value from libc
2019-09-20 11:32:07 -05:00
Christian Poveda
c0a6b5ff69
Set errno when getcwd fails
2019-09-20 03:30:55 -05:00
Christian Poveda
49275d4269
Avoid writing more bytes than necessary
2019-09-20 02:13:48 -05:00
Christian Poveda
133c2b39db
Only use getcwd without isolation
2019-09-19 10:32:18 -05:00
Christian Poveda
5cf90bc786
Add getcwd shim
2019-09-18 16:13:59 -05:00
Ralf Jung
39e2a76817
Merge remote-tracking branch 'origin/master' into rustup-retag
2019-09-18 11:22:12 +02:00
Christian Poveda
4a0b7446cf
Move truncation from the main branch
2019-09-17 13:26:12 -05:00
Christian Poveda
881929f753
Add align_offset for integers
2019-09-17 11:47:01 -05:00
Ralf Jung
130f9488d3
rustup
2019-09-17 12:31:02 +02:00
Ralf Jung
8cd215dc97
remove libstd backtrace work-around
2019-09-16 22:22:54 +02:00
bors
d0a10507e4
Auto merge of #945 - christianpoveda:ptr-align-offset, r=oli-obk
...
Use libcore's align_offset
Related issue: https://github.com/rust-lang/miri/issues/873
2019-09-16 15:52:22 +00:00
Christian Poveda
55863cb88e
Use force_ptr instead of assert_ptr
2019-09-16 10:16:06 -05:00
Ralf Jung
9e2107cef5
install ICE hook
2019-09-16 09:31:56 +02:00
Ralf Jung
1ef1d581d3
update for rustc changes
2019-09-15 23:27:58 +02:00
Santiago Pastorino
5ecb2d9356
Place projection field is now Box<[PlaceElem<'tcx>]>
2019-09-15 00:05:52 -03:00
bors
9a146243d0
Auto merge of #949 - RalfJung:ask-to-run, r=RalfJung
...
factor ask-to-run-command into helper function
2019-09-14 11:44:01 +00:00
Ralf Jung
78cfdcead2
temporarily enable backtrace feature
2019-09-14 13:06:20 +02:00
Ralf Jung
b245cb616e
factor ask-to-run-command into helper function
2019-09-13 10:39:36 +02:00
Christian Poveda
fa20338c9a
Use str::from_utf8 instead
2019-09-12 09:36:31 -05:00
Christian Poveda
62280b4b11
Use libcore's align_offset
2019-09-11 11:09:56 -05:00
Oliver Scherer
e479ab2640
Rustup
2019-09-06 11:10:24 +02:00
Christian Poveda
4afa3bccb0
Rewrite alloc_env_var
2019-08-29 15:03:10 -05:00
Christian Poveda
814fe99516
Add cargo-miri test for no isolation
2019-08-29 10:13:02 -05:00
Christian Poveda
9c54368cca
Exclude TERM env var by default
2019-08-29 04:07:20 -05:00
bors
ee8afead51
Auto merge of #935 - christianpoveda:blacklist-env-vars, r=RalfJung
...
Exclude environment variables from host communication
related issue: #933
r? @RalfJung
2019-08-29 08:09:57 +00:00
Christian Poveda
abcda6dc94
Small corrections
...
Co-Authored-By: Ralf Jung <post@ralfj.de>
2019-08-29 03:08:58 -05:00
Christian Poveda
c1cec3b247
Exclude env vars using flag
2019-08-28 17:57:41 -05:00
Christian Poveda
1ae1d71938
Add -Zmiri-env-exclude flag
2019-08-28 17:57:35 -05:00
Ralf Jung
f3ff10005a
small optimization
2019-08-28 18:45:10 +02:00
Ralf Jung
79dd70fd9b
Stacked Borrows: don't read from memory during retagging
2019-08-28 18:41:30 +02:00
bors
283928ad55
Auto merge of #925 - christianpoveda:environ-shim, r=RalfJung
...
Write name and value for each env var
In order to res0lve https://github.com/rust-lang/miri/issues/756 is necessary to have the whole `"NAME=VALUE"` sequence of bytes written into memory instead of just the value.
This change does not affect the interface of the `shim::envs::EnvVars` type in any way.
r? @RalfJung @oli-obk
2019-08-27 15:59:32 +00:00
Christian Poveda
7d93cc7b5e
Add docs
2019-08-27 08:45:37 -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
3a68d943ba
rustup
2019-08-27 08:32:31 +02:00
Christian Poveda
ace3416cf2
Write name and value for each env var
2019-08-26 18:08:26 -05:00
Ralf Jung
c6c9276d61
bump Rust and xargo
2019-08-26 19:44:27 +02:00
Ralf Jung
97f9fb1284
change flag name: enable-communication -> disable-isolation
2019-08-23 23:29:11 +02:00
bors
631d5facba
Auto merge of #914 - christianpoveda:use-host-rng, r=RalfJung
...
Use host's rng when communication is enabled
This uses the host's randomness when the communication enabled flag is used. I am not sure about the error handling. I was thinking about fallbacking to `rand` if `getrandom` fails and also print something so the user knows miri is not using the host's rng because it failed. Let me know what you think.
Related issue: https://github.com/rust-lang/miri/issues/800 .
r? @RalfJung @oli-obk
2019-08-23 09:52:54 +00:00
Christian Poveda
f53b5b0fb4
Update -Zmiri-enable-communication docs
2019-08-20 12:22:49 -05:00
Christian Poveda
98129631b5
Use err_unsup_format instead
2019-08-20 12:20:50 -05:00
Christian Poveda
b44fd97af6
Use host's rng when communication is enabled
2019-08-19 10:43:09 -05:00
Ralf Jung
4f1c9bb607
adjust for typed binary/unary_op
2019-08-18 07:42:15 +02:00
bors
4f6f264c30
Auto merge of #909 - RalfJung:deny-warn, r=oli-obk
...
deny warnings on CI
2019-08-15 09:37:38 +00:00
Ralf Jung
f9241be734
fix warning
2019-08-15 11:24:04 +02:00
bors
c71b240f85
Auto merge of #863 - RalfJung:deref-checks, r=RalfJung
...
adjust tests for eager pointer checks on deref
The Miri side of https://github.com/rust-lang/rust/pull/63075 .
Fixes https://github.com/rust-lang/miri/issues/447 .
2019-08-15 09:11:08 +00:00
Ralf Jung
a801b0ba3f
adjust for fn rename
2019-08-15 11:01:03 +02:00
Christian Poveda
aee8f173ec
Delegate writing to emulate_foreign_item
2019-08-14 16:50:36 -05:00
Christian Poveda
41f8cfa30e
Move env shims to its own module
2019-08-14 16:30:55 -05: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
451a09a685
Remove tcx parameter for EnvVars::alloc_env_value
2019-08-14 13:54:57 -05:00
Christian Poveda
46f902b67d
Rename export for shims::env::EnvVars
2019-08-14 11:31:29 -05:00
Christian Poveda
afc6713e41
Reorganize shims::env::EnvVars
2019-08-13 16:17:41 -05:00
Christian Poveda
67d13577aa
Move test env var to test_runner
2019-08-13 12:10:24 -05:00
Christian Poveda
666cd22fa6
Wrap hashmap for env vars in its own type
2019-08-13 11:34:43 -05:00
bors
47b227e24a
Auto merge of #906 - RalfJung:tls, r=RalfJung
...
make TLS state private to TLS module
2019-08-13 11:32:25 +00:00
Ralf Jung
95fb11d51f
make TLS state private to TLS module
2019-08-13 09:29:01 +02:00
Ralf Jung
7a9733929b
it's called RUSTC_CTFE_BACKTRACE now
2019-08-12 08:26:11 +02:00
Ralf Jung
04892d9155
typo
2019-08-10 11:33:33 +02:00
Ralf Jung
0743ed631e
clamp ldexp exponent to i16
2019-08-10 11:27:27 +02:00
Ralf Jung
3ae01a64bc
also support scalbn itself
2019-08-10 11:22:32 +02:00
Ralf Jung
5e3035b6cb
use apfloat for ldexp
2019-08-09 19:54:01 +02:00
Christian Poveda
e1d1cd191f
Use ldexp from cmath instead
2019-08-08 15:45:58 -05:00
Ralf Jung
19367fd8de
bump xargo version
2019-08-08 19:34:23 +02:00
Christian Poveda
253af9692a
Fix formatting
2019-08-07 10:50:46 -05:00
bors
b12ebfc3de
Auto merge of #895 - RalfJung:uninit, r=oli-obk
...
Revert "uninit intrinsic is gone"
This reverts commit fa290f1a48
.
Uninit is [being reinstated](https://github.com/rust-lang/rust/pull/63343 ) because it breaks some broken code.
2019-08-07 12:42:19 +00:00
Ralf Jung
455531c564
Revert "uninit intrinsic is gone"
...
This reverts commit fa290f1a48
.
Uninit is being reinstated because it breaks some broken code.
2019-08-07 10:49:36 +02:00
Christian Poveda
b731a6a15f
Add support for env communication
2019-08-06 17:40:07 -05:00
Christian Poveda
068c448832
Add communicate field to evaluator and fix formatting
2019-08-06 15:44:44 -05:00
Christian Poveda
655f9af7fe
Add flag to enable communication
2019-08-06 15:18:22 -05:00
Ralf Jung
3fe4eec37a
mention that we get the toolchain right
2019-08-06 20:52:09 +02:00
Ralf Jung
cc8d995605
go back to released xargo (the experiment is done)
2019-08-06 08:05:32 +02:00
Ralf Jung
b0cb603e3a
rustup
2019-08-05 15:49:19 +02: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
f830a6c69e
Apply more formatting fixes
...
Co-Authored-By: Ralf Jung <post@ralfj.de>
2019-08-04 16:57:17 -04:00
Aaron Hill
8650f02bc9
Add trailing comma
2019-08-04 16:12:24 -04:00
Aaron Hill
56a9a283e7
Cleanup formatting
2019-08-04 16:12:24 -04:00
Aaron Hill
a2bdb3bb94
Shim 'libc::getrandom' in addition to 'libc::syscall(libc::SYS_getrandom)'
2019-08-04 16:12:23 -04:00
bors
96adbf65bc
Auto merge of #885 - Aaron1011:fix/f-round, r=RalfJung
...
Add misssing 'roundf32' and 'roundf64' intrinsics
2019-08-04 20:12:02 +00:00
Aaron Hill
4d3398fc62
Replace match with expect()
2019-08-04 15:49:14 -04:00
Aaron Hill
3118b9fe42
Add misssing 'roundf32' and 'roundf64' intrinsics
2019-08-04 10:25:29 -04:00
Aaron Hill
c2f681f005
Add semicolon
...
Co-Authored-By: Ralf Jung <post@ralfj.de>
2019-08-04 10:13:29 -04:00
Aaron Hill
0505868d18
Do nothing when we try to generate random data of length 0
...
This preserves compatibility with programs that pass a null pointer and
a length of zero to getrandom(), or their platform's equivalent.
2019-08-04 09:21:17 -04:00
Ralf Jung
0096a0df2a
gen_random helper: move ptr argument to front
2019-08-04 14:49:10 +02:00
bors
ed30152b52
Auto merge of #876 - RalfJung:atomic, r=RalfJung
...
check that atomics are sufficiently aligned
Fixes https://github.com/rust-lang/miri/issues/475
2019-08-04 08:55:18 +00:00
Ralf Jung
a4cc58efc6
one more place -> ptr rename
2019-08-04 10:54:07 +02:00
Ralf Jung
19add0bb75
places and pointers are not the same thing; this is a place
2019-08-04 10:52:09 +02:00
Ralf Jung
f47e58950b
check that atomics are sufficiently aligned, and add test
2019-08-04 10:30:42 +02:00
bors
843691d612
Auto merge of #882 - RalfJung:miri-rustc, r=RalfJung
...
install xargo from git temporarily
This is so that once https://github.com/japaric/xargo/pull/246 landed, we can see if that helps with https://github.com/rust-lang/rust/pull/63162 .
2019-08-04 08:26:51 +00:00
Ralf Jung
162c0ffb1f
use postfix negation instead of prefix
2019-08-04 10:14:51 +02:00
Ralf Jung
874437d717
install xargo from git temporarily
2019-08-04 10:11:45 +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
8d99e42f47
test memalign contract (rustc is fixed)
2019-08-03 20:53:42 +02:00
Ralf Jung
f65e7cd2d1
adjust for rustc changes
2019-08-03 20:31:33 +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
Christian Poveda
c4cea035e6
Formatting
2019-08-03 10:51:23 -05:00
Ralf Jung
10f46336af
set RUSTC_DEBUG_ASSERTIONS for when we are in bootstrap
2019-08-03 17:21:30 +02:00
Ralf Jung
ab22da8ce8
annotate some unwraps with better messages
2019-08-03 16:59:30 +02:00
Ralf Jung
61d8a4e101
simplify code
2019-08-03 15:01:04 +02:00
Ralf Jung
82da68c5ca
implement all ptr comparisons through integer casts
2019-08-03 15:01:04 +02:00
Ralf Jung
bb6a91dc94
adjust for ptr_op now being called type-based
2019-08-03 14:38:36 +02:00
Ralf Jung
e71ca965b9
also let bootstrap tell us where to find xargo
2019-08-03 13:53:32 +02:00
Ralf Jung
8071034b93
fix for error refactoring
2019-08-03 10:25:55 +02:00
Christian Poveda
ff2001040f
Add shim for ldexp
2019-08-02 15:46:28 -05:00
Ralf Jung
0dab3d5ee1
honor CARGO env var (for rustc bootstrap)
2019-08-02 18:02:54 +02:00
bors
f0e871785f
Auto merge of #870 - RalfJung:miri-rustc, r=oli-obk
...
Prepare Miri for rustc bootstrap building a separate libstd for it
2019-08-02 08:08:35 +00:00
Ralf Jung
30fb027f33
comment
2019-08-02 08:38:22 +02:00
Ralf Jung
c4c2716f4e
make reborrow shallow, and fix tests for that
2019-08-02 08:09:22 +02:00
Ralf Jung
56630e0ff0
bootstrap no longer carries a copy of these flags
2019-07-31 15:15:31 +02:00
Ralf Jung
d213c64d85
let the user skip the sysroot consistency check
2019-07-31 15:15:14 +02:00
Ralf Jung
faadb86159
bump Rust
2019-07-26 22:50:01 +02:00
Lzu Tao
e6a677fe63
build: Warn if not use 2018 idioms
2019-07-24 21:24:26 +07:00
bors
aadff8560b
Auto merge of #852 - lzutao:rustup, r=RalfJung
...
build: Fix build after rust-lang/rust#60951
2019-07-24 13:05:55 +00:00
Lzu Tao
fd71fbea0f
build: Fix build after rust-lang/rust#60951
2019-07-24 07:45:34 +07:00
Ralf Jung
724cf41eb1
use checked arithmetic in intrptrcast
2019-07-23 23:43:37 +02:00
Ralf Jung
068517ae66
make sure we always have an RNG
2019-07-23 21:38:53 +02:00
Ralf Jung
a2541aacd6
bump rust
2019-07-21 11:56:10 +02:00
Ralf Jung
11d71195dd
fix miri-rustc-tests
2019-07-19 18:03:55 +02:00
Ralf Jung
66ca0f2cc2
fix for rustc_driver change
2019-07-19 17:36:25 +02:00
Ralf Jung
a11d1f55ff
avoid unnecessary allocation
2019-07-13 15:18:15 +02:00
Joshua Nelson
ebf65cbdab
Give a useful error message if user gives invalid random seed
2019-07-13 08:28:33 -04:00
Ralf Jung
f8c6eb5e8c
thread creation error for Windows
2019-07-11 18:59:11 +02:00
Ralf Jung
e7b39e382a
reenable all tests on Windows
2019-07-11 18:41:53 +02:00
Ralf Jung
11686f4be2
we do this these days
2019-07-10 14:38:49 +02:00
Ralf Jung
70a5bb7dbb
force pointers before reborrowing; fixes cargo miri test suite
2019-07-10 14:36:56 +02:00
Ralf Jung
f79f31dfa1
adjust for rustc changes; normalize mplace before doing freeze-sensitive visit
2019-07-10 14:36:56 +02:00
Lzu Tao
3ea62d3527
Remove SliceConcatExt import
2019-07-10 09:56:35 +07:00
bors
e4a98ea8d8
Auto merge of #826 - RalfJung:uninit, r=RalfJung
...
uninit intrinsic is gone
Finally. :D
However, to land this we'll need to fix the intptrcast issues that block https://github.com/rust-lang/miri/pull/803 .
2019-07-06 09:40:51 +00:00
Ralf Jung
47bfc62b5b
use Memory::read_c_str, avoid a few to_ptr
2019-07-06 11:01:07 +02:00
Ralf Jung
9e130c6c6f
fix for changd machine trait signatures
2019-07-06 10:07:22 +02:00
Ralf Jung
4fa243be78
adjust for get_fn signature change
2019-07-06 10:07:22 +02:00
Ralf Jung
3ca934f07d
gen_random: use check_ptr_access
2019-07-06 10:07:22 +02:00
Ralf Jung
8093a59ffb
move gen_random to helpers
2019-07-06 10:07:21 +02: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
2ca1b94e6d
update to FnVal changes; implement basic Dlsym support and use it for getentropy
2019-07-06 10:07:21 +02:00
Ralf Jung
fa290f1a48
uninit intrinsic is gone
2019-07-06 10:06:45 +02:00
Ralf Jung
5e022773f3
fix unused variable warning
2019-07-06 09:32:35 +02:00
Ralf Jung
b324cbf282
Merge remote-tracking branch 'origin/master' into rustup
2019-07-06 09:29:17 +02:00
Ralf Jung
1729965808
rename InterpretCx -> InterpCx
2019-07-05 23:48:51 +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
89696a4ab9
Merge remote-tracking branch 'origin/master'
2019-07-05 22:46:11 +02:00
Ralf Jung
4d76dd1f09
temporarily disable validation on Windows
2019-07-05 21:26:58 +02:00
Ralf Jung
aad5fde703
fix deallocating/reallocating with integer pointers
2019-07-05 19:21:21 +02:00
Ralf Jung
698b311a59
fix NULL in TLS dtors
2019-07-05 10:08:57 +02:00
Ralf Jung
07d5e9917c
avoid Scalar::is_null_ptr, it is going away
2019-07-05 09:56:42 +02:00
bors
3525943794
Auto merge of #822 - RalfJung:tls, r=RalfJung
...
move tls.rs into shims module
2019-07-04 08:51:19 +00:00
Ralf Jung
93c62a4912
move tls.rs into shims module
2019-07-03 23:12:44 +02:00
Ralf Jung
b29cb7d551
avoid catching errors
2019-07-03 10:56:25 +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
c8450bda4f
support integers that can be cast to pointers in in-bounds offset operation
2019-07-03 10:47:28 +02:00
Ralf Jung
c3da843ca0
we don't need zero-sized freeze-sensitive visiting
2019-07-03 10:47:28 +02:00
Ralf Jung
12b8d4366c
avoid integer overflow in ptr-to-int cast
2019-07-03 10:47:28 +02:00
Ralf Jung
c6e4f760a2
allow dangling ptr-to-int casts; use force_bits for ptr comparison
2019-07-03 10:47:28 +02:00
Ralf Jung
457c823765
only treat integer operations as such
2019-07-03 10:47:28 +02:00
bors
93f5892962
Auto merge of #815 - RalfJung:memory-audit, r=RalfJung
...
don't call Memory::get without checking the pointer first
Also avoid Memory::get if we just need to know align/size.
I audited all uses of `alloc_id`; the rest should be fine (and we can kill a bunch of them once https://github.com/rust-lang/rust/pull/62257 lands).
2019-07-01 20:59:17 +00:00
Ralf Jung
e82693fa23
Merge branch 'master' into rustup
2019-07-01 13:01:28 +02:00
Ralf Jung
7b702b9258
move find_fn (which is not specific to foreign items) out of foreign_items
2019-07-01 00:28:31 +02:00
Ralf Jung
4135441137
don't call Memory::get without checking the pointer first; avoid Memory::get if we just need to know align/size
2019-07-01 00:24:56 +02: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
e960270662
add some tracing to intptrcast
2019-06-30 21:10:47 +02:00
Ralf Jung
b8879f3d8c
move shims (foreign items and intrinsics) into submodule
2019-06-30 15:35:28 +02:00
Ralf Jung
11457a4ad9
fix comparing function pointers with intptrcast
2019-06-30 11:21:31 +02:00
bors
1ec279f290
Auto merge of #801 - RalfJung:num_cpus, r=RalfJung
...
support num_cpus crate and test that
Also make some magic numbers into proper global constants.
2019-06-30 08:42:25 +00:00
Ralf Jung
ba47d73041
Merge branch 'master' into rustup
2019-06-29 16:19:27 +02:00
Ralf Jung
019ad4bab4
move constants to machine.rs
2019-06-29 14:37:41 +02:00
Ralf Jung
c7bf9064f7
comment on STACK_ADDR
2019-06-29 14:34:08 +02:00