Commit Graph

1832 Commits

Author SHA1 Message Date
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