Commit Graph

1573 Commits

Author SHA1 Message Date
Ralf Jung
7ce36226e6 implement and test unchecked_{add,sub,mul} intrinsics 2019-06-16 11:10:33 +02:00
Ralf Jung
fc90124489 test exact_div UB detection 2019-06-16 11:10:33 +02:00
Ralf Jung
32a2cf046f
Merge branch 'master' into foreign_math_functions 2019-06-16 10:11:32 +02:00
soc
a561f949ad Fix project dirs path
ProjectDirs::from("miri", "miri", "miri")

would get you `miri\miri` on Windows and `miri.miri.miri` on macOS.

I'm assuming here that your intention was to have only a `miri` directory on every OS.
2019-06-15 17:03:16 +02:00
Lzu Tao
fd0dccd4b1 Fix wrong lifetime of TyCtxt
Rustup rust-lang/rust#61817
2019-06-15 02:34:11 +07:00
Ralf Jung
34b0922cec fix running a Miri that was built in bootstrap 2019-06-14 12:09:43 +02:00
Ralf Jung
ac2f6cbcde change sysroot check to print the output in case of an error 2019-06-14 11:16:39 +02:00
Oliver Scherer
4db0eea010
Fix indentation 2019-06-14 10:44:08 +02:00
Kenny Goodin
46b6a3fb7f Add more missing math functions
Add missing functions for atan2, cosh, sinh, and tan.
Also add f32 calls and tests for cbrt and hypot.
2019-06-13 22:28:22 -04:00
Ralf Jung
ad0c941547 rustup for lifetime refactorings 2019-06-13 09:18:03 +02:00
Kenny Goodin
535914e3dc Implement cbrt and hypot function calls
Test cases are added to `tests/run-pass/intrinsics-math.rs`
2019-06-12 15:44:30 -04:00
Ralf Jung
a37953752d use apfloat's FMA primitive 2019-06-11 19:41:43 +02:00
Ralf Jung
5e07ac335f implement min and max floating point intrinsics 2019-06-11 19:41:43 +02:00
Ralf Jung
6eab94a459 fix from to/from f32/f64 changes 2019-06-11 19:41:43 +02:00
Ralf Jung
81debbd652
Merge branch 'master' into sysroot 2019-06-11 09:48:05 +02:00
Ralf Jung
446478cce2 fix for rustc rename mir -> body 2019-06-10 13:01:55 +02:00
Ralf Jung
0a9f9e0a0b factor out common code to determine miri binary 2019-06-09 19:47:09 +02:00
Ralf Jung
5b91ecc066 fix comments 2019-06-09 17:12:41 +02:00
Ralf Jung
b0b082d4d8 do not handle MIRI_SYSROOT in the driver at all, rely fully on the --sysroot flag 2019-06-09 17:10:04 +02:00
Ralf Jung
244011a47f don't have both MIRI_SYSROOT and --sysroot 2019-06-09 15:43:22 +02:00
Ralf Jung
619f296463 explain why we always set a sysroot; make sure we error if both MIRI_SYSROOT and --sysroot are set 2019-06-09 14:31:05 +02:00
Ralf Jung
05b7e61977 remove outdated sysroot management 2019-06-09 14:10:42 +02:00
Ralf Jung
09f30cabf0 cargo miri: make sure we see the same sysroot for rustc and miri 2019-06-09 13:53:04 +02:00
Ralf Jung
d6bcfc58e3 rustup for EvalResult rename 2019-06-08 22:14:47 +02:00
Dylan MacKenzie
1ceb81b345 Use in-core implementation of type_name.
We bump `rust-version` to pick up the new impl from
https://github.com/rust-lang/rust/pull/61498 and add a test.
2019-06-05 22:36:53 -07:00
Ralf Jung
03b74c12c8
Merge branch 'master' into debug 2019-06-03 11:02:17 +02:00
Ralf Jung
0c704151f7 use new rustc infrastructure to tag the base pointer of static allocations 2019-06-02 22:16:02 +02:00
Ralf Jung
96444c11ee remove too expensive debug assertion 2019-05-31 16:34:22 +02:00
Ralf Jung
e4cee77121 fix for rustc changes 2019-05-29 09:30:36 +02:00
Ralf Jung
7a7b853120 adjust for rustc changes 2019-05-28 22:46:56 +02:00
Ralf Jung
543e57990c
Merge branch 'master' into miri-build 2019-05-27 23:26:22 +02:00
Ralf Jung
8b219a1329 fix for latest rustc 2019-05-27 18:50:32 +02:00
Ralf Jung
cf96396fcc make miri script smarter: auto-determine MIRI_SYSROOT, handle MIRI_TEST_TARGET 2019-05-27 14:41:44 +02:00
Ralf Jung
21fb14dba1 avoid printing the tag twice 2019-05-24 13:09:29 +02:00
Ralf Jung
5569fffe7d avoid having both Debug and Display for a type and using the wrong one 2019-05-24 10:09:23 +02:00
Ralf Jung
1d92791965 use prettier printing 2019-05-23 15:54:50 +02:00
Ralf Jung
3e33e54b5b hopefully improve error message a bit 2019-05-23 11:03:08 +02:00
Ralf Jung
5c54a58c06 typo 2019-05-19 14:04:59 +02:00
Oliver Scherer
3fde45233b Prefer drain over manual implementation of drain 2019-05-19 12:40:59 +02:00
Ralf Jung
6b4164e0df nits 2019-05-17 19:42:35 +02:00
Ralf Jung
9c161b80d0 reading does not remove Unique, it just invalidates them 2019-05-17 15:29:02 +02:00
Ralf Jung
4b9e1544c2 give up on two-phase borrows 2019-05-17 15:02:31 +02:00
Ralf Jung
1447242bf9 refactor to simplify 2019-05-15 18:12:58 +02:00
Ralf Jung
f676f2265b make writes act stack-like 2019-05-15 18:12:58 +02:00
Ralf Jung
9b3f07b161 make printing return place less verbose 2019-05-15 17:23:33 +02:00
Ralf Jung
bc0c76d861 fix for latest rustc 2019-05-13 22:07:24 +02:00
Ralf Jung
ada5edbf96 RUST_LOG got renamed to RUSTC_LOG 2019-05-13 14:10:52 +02:00
Ralf Jung
be47fae173 build with latest version 2019-05-13 11:37:54 +02:00
Ralf Jung
a9e66928d6
Update src/stacked_borrows.rs
Co-Authored-By: bjorn3 <bjorn3@users.noreply.github.com>
2019-05-11 12:07:25 +02:00
Ralf Jung
8530080d03 rename per-location part of reborowing to 'granting' 2019-05-11 12:06:59 +02:00
Ralf Jung
0f96676f43 switch back to upstream xargo 2019-05-10 08:28:02 +02:00
Ralf Jung
d05159f3a9 switch to my xargo fork, because that one works with current libstd 2019-05-01 20:37:08 +02:00
bjorn3
17643af868
Apply suggestions from code review
Co-Authored-By: RalfJung <post@ralfj.de>
2019-04-30 15:31:53 +02:00
Ralf Jung
59985157d3 SharedReadOnly reborrows are never weak 2019-04-30 13:55:04 +02:00
Bastien Orivel
69a252c1b3 Update cargo_metadata to 0.7 2019-04-27 23:31:48 +02:00
Ralf Jung
53f59431a5 fix HeapFree return value 2019-04-27 18:21:10 +02:00
Ralf Jung
aaa8ee743b unify code paths 2019-04-22 13:20:51 +02:00
Ralf Jung
42b70f17d2
Merge branch 'master' into exit 2019-04-22 11:35:36 +02:00
Ralf Jung
131548a748 gen_random: handle size 0 and writing to mem 2019-04-22 11:08:23 +02:00
Ralf Jung
703b7f8a7e implement SecRandomCopyBytes for macOS RNG 2019-04-22 11:08:23 +02:00
Ralf Jung
e4970fe6ff Windows: implement heap functions 2019-04-21 16:48:02 +02:00
Ralf Jung
6a6c0cd5f0 implement ExitProcess for Windows 2019-04-21 13:25:24 +02:00
Ralf Jung
0694435650 implement exit
implement exit code via new error kind
2019-04-21 12:36:17 +02:00
Ralf Jung
2481d6091a warn when cargo miri setup does not do anything 2019-04-19 19:27:19 +02:00
Ralf Jung
0a5e541272 two-phase-borrow comment 2019-04-19 08:36:05 +02:00
Ralf Jung
22b57f6435
Merge branch 'master' into stacked-borrows-2 2019-04-18 19:28:25 +02:00
Ralf Jung
36e99a1bda remove some unneeded 'extern crate' 2019-04-18 16:16:32 +02:00
Tim Diekmann
9ecc07c9b2
Add handling for nullptr and size == 0 2019-04-18 15:20:32 +02:00
Tim Diekmann
afb64232db
Fix for latest upstream update 2019-04-18 12:39:18 +02:00
Tim Diekmann
af3c4c0c23
Merge branch 'master' into realloc 2019-04-18 12:22:58 +02:00
Tim Diekmann
0e6deee76e
Add realloc 2019-04-18 01:20:21 +02:00
Ralf Jung
39ecd05c46 embrace find_map and some whitespace changes 2019-04-17 16:25:38 +02:00
Oliver Scherer
abe8959339 Apply suggestions from code review
Co-Authored-By: RalfJung <post@ralfj.de>
2019-04-17 16:22:33 +02:00
Ralf Jung
46d5fd8487 barriers are dead, long live protectors -- this enables overlapping two-phase borrows! 2019-04-17 16:02:57 +02:00
Ralf Jung
14e701f7d8 abstract mapping over all the stacks in some memory range 2019-04-17 16:02:57 +02:00
Ralf Jung
7b7fef1b53 let the permission of a new pointer depend on the type only 2019-04-17 16:02:57 +02:00
Ralf Jung
924624f810 some failures are impossible 2019-04-17 16:02:57 +02:00
Ralf Jung
a6d377ca0b more comments 2019-04-17 16:02:57 +02:00
Ralf Jung
966d638760 make run-pass tests pass. tweak how we remove barriers. 2019-04-17 16:02:57 +02:00
Ralf Jung
3f0a2a2941 rewrite Stacked Borrows Core. this passes stacked-borrows.rs! 2019-04-17 16:02:57 +02:00
Ralf Jung
a50512f751 fix RtlGenRandom argument size 2019-04-16 21:27:27 +02:00
Ralf Jung
6fdc75024b
Merge branch 'master' into rand 2019-04-16 20:55:58 +02:00
Ralf Jung
ba567d19f0 stub out pthread_atfork to that we support thread_rng() 2019-04-16 19:53:10 +02:00
Ralf Jung
9c8ad5f9e1 fix 0-sized getrandom 2019-04-16 19:26:02 +02:00
Ralf Jung
378d9d4172 be pragmatic about ptr-int comparisons, for now 2019-04-16 17:47:37 +02:00
Ralf Jung
5f29a53992 rustup 2019-04-12 12:32:26 +02:00
Ralf Jung
8de4f34a7f Merge remote-tracking branch 'origin/master' 2019-04-11 22:09:09 +02:00
Ralf Jung
48b22b80c5 Fix typo
Co-Authored-By: Aaron1011 <aa1ronham@gmail.com>
2019-04-09 23:33:13 -04:00
Oliver Scherer
2eb2c8dd57
Merge branch 'master' into feature/random 2019-04-09 21:58:15 +02:00
Aaron Hill
0837d630f7
Some final cleanup 2019-04-09 15:49:34 -04:00
Aaron Hill
c6e0d09714
Retrieve SYS_getrandom from libc using const-eval 2019-04-09 11:04:30 -04:00
Aaron Hill
22044c878d
Improve deterministic mode error message 2019-04-09 10:16:32 -04:00
Aaron Hill
6b4c5b81da
Fix 'RtlGenRandom' argument slots 2019-04-08 23:18:10 -04:00
Aaron Hill
5f997645bc
Interpret system call numbers relative to target architecture 2019-04-08 22:37:58 -04:00
Aaron Hill
6d3e93c281
Refactor random number generation 2019-04-08 22:22:41 -04:00
Aaron Hill
6b0440e26d
Cleanup argument parsing 2019-04-08 21:40:52 -04:00
Ralf Jung
06af617b92 fix dumping uninitialized locals 2019-04-08 13:40:11 +02:00
bjorn3
32d01263a9
Update src/fn_call.rs
Co-Authored-By: TimDiekmann <21277928+TimDiekmann@users.noreply.github.com>
2019-04-08 10:44:02 +02:00
Aaron Hill
808b149671
Use raw syscall numbers 2019-04-07 20:09:53 -04:00
Aaron Hill
dddeda7f7d
Use getrandom() syscall number from libc 2019-04-07 19:57:14 -04:00
Aaron Hill
73239573c9
Implement non-deterministc mode
Part of #653

This allows us to properly implement getrandom(),
which unlocks the default HashMap type (e.g. HashMap<K, V>)
with RandomState)

This commit adds a new '-Zmiri-seed=<seed>' option. When present,
this option takes a 64-bit hex value, which is used as the seed
to an internal PRNG. This PRNG is used to implement the 'getrandom()'
syscall.

When '-Zmiri-seed' is not passed, 'getrandom()' will be disabled.
2019-04-07 19:26:20 -04:00
Tim Diekmann
a59e155206
Tidy up calloc code 2019-04-08 01:12:44 +02:00
Tim Diekmann
d1d05c8b41
Fix tagging order 2019-04-07 21:09:21 +02:00
Tim Diekmann
6e4264bf27
Add calloc 2019-04-07 20:52:12 +02:00
Oliver Scherer
9a0eaf6ebd Update to rustc nightly 2019-04-03 10:48:11 +02:00
kenta7777
d9178b9300 renames EvalContext to InterpretCx 2019-03-30 10:58:28 +09:00
Oliver Scherer
5d3825fc48
Update src/bin/miri-rustc-tests.rs
Co-Authored-By: RalfJung <post@ralfj.de>
2019-03-18 15:08:36 +01:00
Ralf Jung
8ee67994cc fix for rustc change 2019-03-18 13:48:37 +01:00
Ralf Jung
687c5d13ea bump Rust; remove stabilized feature 2019-03-18 13:31:29 +01:00
Oliver Scherer
56c7656568 Remove dead code and docs 2019-03-11 10:28:03 +01:00
Oliver Scherer
a672abddfa Make the rustc test runner build again 2019-03-11 10:25:21 +01:00
Oliver Scherer
ecae3751b4 Reintroduce prepending the input file name to the miri arguments 2019-03-11 09:43:52 +01:00
John Kåre Alsaker
7d142ecf75 Use the new rustc interface 2019-03-11 09:43:52 +01:00
Ralf Jung
8c74325441 mention --exclude-should-panic 2019-03-10 17:53:30 +01:00
Santiago Pastorino
0bb6ae8f62
Place::Local(x) is now Place::Base(PlaceBase::Local(x)) 2019-03-01 11:27:30 -03:00
Ralf Jung
a9b03f9411 avoid [..] 2019-02-27 11:39:59 +01:00
Alexander Regueiro
205490b85c Fixed nits raised in review. 2019-02-26 18:37:46 +00:00
Alexander Regueiro
12d3ecbaff Various cosmetic improvements. 2019-02-26 18:37:46 +00:00
rchaser53
b1c0cf2ef9 use copy_op directly insteadof write_scalar
- fix volatile_store logic
- rename test to be able to read back from later
- expand test to use assert_eq! and confirm to fix volatile_store
- expand test to use assert_eq! and confirm normal load
2019-02-26 19:49:02 +09:00
Ralf Jung
9397b36ab8 typo and comments 2019-02-15 09:35:55 +01:00
Ralf Jung
2c3ee678b1 Fix comparing fat pointers 2019-02-15 09:35:55 +01:00
Ralf Jung
457741d6d2 update for new bin_op APIs 2019-02-15 09:35:55 +01:00
Ralf Jung
2d323857e9 implement and test posix_memalign 2019-02-13 17:47:54 +01:00
Ralf Jung
2d892c160b skip installing rust-src if XARGO_RUST_SRC is set 2019-02-13 12:10:05 +01:00
Ralf Jung
fd6bd5ba4b rename things away from 'Shr' that are used for much more than just shared references 2019-02-12 10:58:18 +01:00
Ralf Jung
3c652032c0 be more clear which stack we are talking about 2019-02-12 10:51:03 +01:00
Ralf Jung
35ed590075 also enable passing arguments through from cargo-miri 2019-02-09 20:00:40 +01:00
Ralf Jung
5e468766b7 also pass actual arguments to Windows 2019-02-09 20:00:40 +01:00
Ralf Jung
e400b42c21 fix build 2019-02-09 20:00:40 +01:00
Ralf Jung
0802b3a108 implement passing arguments to the interpreted program 2019-02-09 20:00:40 +01:00
Ralf Jung
0f6e82db36 fix (un)likely intrinsics 2019-02-09 13:08:23 +01:00
Ralf Jung
7af75abdd7 we don't need to flush stderr 2019-02-08 10:41:44 +01:00
Ralf Jung
68e8ff1a09 flush stdout/stderr to make sure it appears on the screen 2019-02-07 18:04:58 +01:00
Ralf Jung
e0891bd619 Fix cargo miri test on lib crates 2019-02-07 16:33:46 +01:00
Ralf Jung
5766b32871 update test for cargo-miri 2019-02-07 13:03:03 +01:00
Ralf Jung
4309539efe cargo miri: refactor how we detect what to interpret and how we run cargo rustc, fix running unit tests 2019-02-07 13:00:27 +01:00
Ralf Jung
48ac35f072 panic_impl is another way to panic 2019-02-06 11:41:45 +01:00
Ralf Jung
661ed7b82d implement atomic_nand 2019-02-06 11:40:10 +01:00
Ralf Jung
76985f1e2d remove outdated comment 2019-01-25 08:59:12 +01:00
Oliver Scherer
9f06cdc87a Explain Ref problems 2019-01-22 17:19:19 +01:00
Oliver Scherer
7269a884c9 Expose AllocIds for priroda 2019-01-22 16:46:45 +01:00
Oliver Scherer
9c1c407a02 Update to latest rustc master 2019-01-21 17:29:09 +01:00
Ralf Jung
c54d7eef07 expand docs 2019-01-07 19:41:18 +01:00
Ralf Jung
a957a36ddc tweak merging to give up if we don't make any progress 2019-01-07 19:36:25 +01:00
Ralf Jung
17d11ebe6e be explicit about doing a binary search; fix out-of-bounds check 2019-01-07 15:10:22 +01:00
Ralf Jung
4f9c14c256 deduplicate RangeMap elements in iter_mut
This cuts down execution time of the benchmark in the OP of https://github.com/solson/miri/issues/593 by another 25%, and it cuts max-RSS by 90% (!)
2019-01-07 15:10:22 +01:00
Ralf Jung
f24d0354f9 rewrite RangeMap to use a sorted Vec instead of a RangeMap
This gives us a 20% perf improve for the benchmark from https://github.com/solson/miri/issues/593
2019-01-07 15:10:22 +01:00
Ralf Jung
6c9e702d9b range_map: also test size of the internal representation 2019-01-07 15:10:22 +01:00
Ralf Jung
e81d81e5af implement panic_if_uninhabited intrinsic 2019-01-07 11:23:08 +01:00
Ralf Jung
fced2ac865 move env var stuff out of the miri lib 2019-01-04 15:37:51 +01:00