Ralf Jung
cf9340113e
rustup: more flexible write_bytes avoids allocations and removes itertools dependency
2019-10-24 10:15:30 +02: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
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
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
Ralf Jung
e574c77aa2
audit our bounds checks
2019-10-19 12:39:02 +02: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
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
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
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
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
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
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
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
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
Christian Poveda
55863cb88e
Use force_ptr instead of assert_ptr
2019-09-16 10:16:06 -05: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
Christian Poveda
c1cec3b247
Exclude env vars using flag
2019-08-28 17:57:41 -05: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
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
4f1c9bb607
adjust for typed binary/unary_op
2019-08-18 07:42:15 +02:00
Ralf Jung
f9241be734
fix warning
2019-08-15 11:24:04 +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
666cd22fa6
Wrap hashmap for env vars in its own type
2019-08-13 11:34:43 -05:00
Ralf Jung
95fb11d51f
make TLS state private to TLS module
2019-08-13 09:29:01 +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
Christian Poveda
253af9692a
Fix formatting
2019-08-07 10:50:46 -05: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
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
Aaron Hill
3118b9fe42
Add misssing 'roundf32' and 'roundf64' intrinsics
2019-08-04 10:25:29 -04:00
Ralf Jung
0096a0df2a
gen_random helper: move ptr argument to front
2019-08-04 14:49:10 +02: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
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
61d8a4e101
simplify code
2019-08-03 15:01:04 +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
Lzu Tao
fd71fbea0f
build: Fix build after rust-lang/rust#60951
2019-07-24 07:45:34 +07:00
Ralf Jung
a2541aacd6
bump rust
2019-07-21 11:56:10 +02:00
Ralf Jung
f8c6eb5e8c
thread creation error for Windows
2019-07-11 18:59:11 +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
4fa243be78
adjust for get_fn signature change
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
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
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
Ralf Jung
93c62a4912
move tls.rs into shims module
2019-07-03 23:12:44 +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
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
b8879f3d8c
move shims (foreign items and intrinsics) into submodule
2019-06-30 15:35:28 +02:00