Commit Graph

1573 Commits

Author SHA1 Message Date
Ralf Jung
dd94930ee3 implement function barriers 2018-11-27 14:26:23 +01:00
Ralf Jung
215ec38624 track call IDs 2018-11-27 14:25:20 +01:00
Ralf Jung
e9370d2b74 adjust for memory_allocated hook, make RangeMap preallocated with a fixed size 2018-11-27 14:25:20 +01:00
Ralf Jung
53196554ec inform the user when and where we are creating a cache dir 2018-11-27 13:12:52 +01:00
Ralf Jung
bd7f4076cd we need to recursively create the dir 2018-11-27 11:43:02 +01:00
Ralf Jung
b91679539e use proper platform cache dir 2018-11-27 11:26:53 +01:00
Ralf Jung
464dee8edf std::ptr no longer needs whitelisting 2018-11-27 09:23:22 +01:00
Ralf Jung
07f78a37d4 tweaks 2018-11-27 08:16:58 +01:00
Ralf Jung
58982d655a remove unneeded backtrace feature 2018-11-27 08:16:58 +01:00
Ralf Jung
82caed1a48 cargo miri setup: print when we are executing commands 2018-11-27 08:16:58 +01:00
Ralf Jung
b09dfc14a0 there are less places now to keep the flags in sync 2018-11-27 08:16:58 +01:00
Ralf Jung
cc4dd29f54 kill xargo dir and update docs 2018-11-27 08:16:58 +01:00
Ralf Jung
16ac7ec1b1 tweak comments, remove debug output 2018-11-27 08:16:58 +01:00
Ralf Jung
738133b379 complete setup routine: instal rust-src, build libstd, use it 2018-11-27 08:16:58 +01:00
Ralf Jung
c945e30d10 setup routine to install xargo when missing 2018-11-27 08:16:58 +01:00
Ralf Jung
6bd76c7ee1 cargo miri: factor package manifest logic into separate function 2018-11-27 08:16:58 +01:00
Ralf Jung
14d58ca8a9 fix clippy lint whitelisting 2018-11-27 08:16:58 +01:00
Oliver Scherer
32e93ed776 Update to Memory -> Allocation method move 2018-11-23 17:00:31 +01:00
Ralf Jung
68ba6cdbaa fix for new Align type 2018-11-23 09:46:51 +01:00
Ralf Jung
094d07c114 Merge remote-tracking branch 'origin/master' into rustup 2018-11-22 08:21:05 +01:00
Ralf Jung
694d2490f1 slightly more verbose error msg 2018-11-21 16:02:38 +01:00
Ralf Jung
41f89beb3f if let 2018-11-21 16:01:39 +01:00
Ralf Jung
ec8cc029c1 on a deref, check that we are not using a mutable ref with a frozen tag 2018-11-21 15:44:47 +01:00
Ralf Jung
984c3368a9 remove stabilized feature flag 2018-11-21 13:41:57 +01:00
Ralf Jung
6181b29f5d bump Rust 2018-11-21 09:52:31 +01:00
Ralf Jung
f41decc6e1
Merge branch 'master' into cargo-miri-2018 2018-11-20 10:18:34 +01:00
Ralf Jung
cfa6397ad0 UnsafeCell no longer needs to be on the whitelist 2018-11-20 08:50:08 +01:00
Ralf Jung
6085865975 adjust for InboundsCheck parameter of memory bounds check 2018-11-20 08:45:25 +01:00
Ralf Jung
d619049b2d Merge branch 'miri-backtrace' into mut-visitor 2018-11-20 08:29:51 +01:00
Ralf Jung
ef2ffed93f port cargo-miri-test to 2018 edition, mostly to test that that works with cargo miri 2018-11-19 22:59:41 +01:00
Ralf Jung
19f8a9db7d Boxes can also use the fast path 2018-11-17 12:35:58 +01:00
Ralf Jung
c847071355 add comment about not using builtin_deref 2018-11-17 12:33:44 +01:00
Ralf Jung
56f1ef325a remove spurious assignments 2018-11-17 10:29:16 +01:00
Ralf Jung
662821f7f7 raw ptr deref no longer erases the tag 2018-11-17 10:11:21 +01:00
Ralf Jung
880229d4c3 escape-on-cast, now ptr-deref does not change the tag at all, ever 2018-11-17 10:05:40 +01:00
Ralf Jung
b7dbb5e2a7 also consider boxes like unique references 2018-11-17 10:05:40 +01:00
Ralf Jung
36b97cd76c Factor out common top-level code from escape-to-raw and retag 2018-11-16 11:24:01 +01:00
Ralf Jung
a1f895d6f2 retagging: descent into values, type-driven 2018-11-16 11:09:33 +01:00
Ralf Jung
60e26af323 add a sanity assertion 2018-11-16 08:40:00 +01:00
Ralf Jung
cf1746222e we no longer even try pushing to a frozen location 2018-11-15 21:22:05 +01:00
Ralf Jung
f521fd5e0f let's call this a redundant reborrow 2018-11-15 21:22:05 +01:00
Ralf Jung
c234009fdd generalize reborrow-to-raw exception to a general redundancy check 2018-11-15 09:35:40 +01:00
Ralf Jung
5a801c0dc1 adjust comment 2018-11-15 09:35:40 +01:00
Ralf Jung
a87e952102 Separate deref and access into different operations; add special exception for creating raw references 2018-11-15 09:35:40 +01:00
Ralf Jung
a94e197105 better test the special exception for reading through unique when things are shared 2018-11-15 09:35:40 +01:00
Ralf Jung
020313dd85 make freezing inherently part of the high-level reactivate/initiate operations 2018-11-15 09:35:40 +01:00
Ralf Jung
09919c2b59 Retag is the only operation that generates new tags 2018-11-15 09:35:40 +01:00
Ralf Jung
1e51a382ed update for changed FrameInfo, do not print span for all frames 2018-11-15 09:14:03 +01:00
Ralf Jung
f5bd85d009 update for memory_deallocated moving to AllocExtra 2018-11-14 16:03:38 +01:00
Ralf Jung
e7aa5c68ff Update rustc for AllocationExtra trait
Based on https://github.com/solson/miri/pull/493 but there were more conflicts
than code so I opted not to cherry-pick.
2018-11-12 08:54:12 +01:00
Ralf Jung
f4e45ff2b7 sort the fields ourselves 2018-11-08 08:29:34 +01:00
Ralf Jung
00936316d1 treat shared and raw borrows alike 2018-11-08 08:29:34 +01:00
Ralf Jung
74635a57e2 re-do large parts of stacked borrows, now with proper support for partiall frozen data 2018-11-08 08:29:34 +01:00
Ralf Jung
2ff1f24f2b bump rust 2018-11-07 10:41:15 +01:00
Ralf Jung
f6d6470bc4 move to 2018 edition
I want NLL :D
2018-11-05 15:45:27 +01:00
Ralf Jung
9edac3189a rustup 2018-11-05 08:52:02 +01:00
Ralf Jung
a8af5ae139 fix for latest nightly 2018-11-04 10:30:15 +01:00
Ralf Jung
cb691b7ed9 comment on mut-to-shr transmutes 2018-11-03 11:42:38 +01:00
Oliver S̶c̶h̶n̶e̶i̶d̶e̶r Scherer
8ac5d988e2
typo
Co-Authored-By: RalfJung <post@ralfj.de>
2018-11-03 11:39:50 +01:00
Ralf Jung
8da2c9e34e fix adding default arguments 2018-11-03 11:03:53 +01:00
Ralf Jung
dc859f345d Merge remote-tracking branch 'origin/master' into rustup 2018-11-02 14:32:56 +01:00
Ralf Jung
a68779fd16 use crate:: import to make edition port easier later 2018-11-01 09:00:09 +01:00
Ralf Jung
81534496dc rename RefKind to UsageKind, because it not only used for references now 2018-11-01 08:58:03 +01:00
Ralf Jung
478f137c39 put all the logic into reactivatable() 2018-11-01 08:58:03 +01:00
Ralf Jung
85f821d7e9 unify checks on memory access and reborrowing, and update for Machine trait change 2018-11-01 08:58:03 +01:00
Ralf Jung
bba3c49e84 basic retagging (no fn_entry); this also makes us catch more bugs even with optimizations and we can finally stop mutating the state on deref 2018-11-01 08:58:03 +01:00
Ralf Jung
7ac0e79ad5 stub Retag hook; fix tests for removal of -Zmir-emit-validate 2018-11-01 08:58:03 +01:00
Ralf Jung
fba55ba2a9 make the -Z flags we use more consistent 2018-11-01 08:58:03 +01:00
Ralf Jung
27b1f47b0a use crate:: where appropriate 2018-11-01 08:57:22 +01:00
Ralf Jung
1fe925e758
Merge branch 'master' into atomic-arith 2018-10-31 11:19:26 +01:00
Ralf Jung
40b7502613 Reject atomic arithmetic on non-integer types
Fixes #181
2018-10-31 11:04:35 +01:00
Ralf Jung
016009a301 properly recognize log levels 2018-10-31 10:58:19 +01:00
Ralf Jung
5397f2e436 when using MIRI_LOG, avoid logging for what rustc does before miri gets started 2018-10-31 10:53:37 +01:00
Ralf Jung
7a6a68731e remove unused extern crate 2018-10-31 10:19:20 +01:00
Ralf Jung
cd256448d5 dumping locals with MIRI_BACKTRACE=1 is feasible now 2018-10-31 10:16:42 +01:00
Ralf Jung
eb153810e3 Use MIRI_ env vars to set RUST_ ones
This means we can do `MIRI_LOG=debug cargo run` and get something reasonable,
even if cargo has to build some dependencies first.
2018-10-31 10:09:55 +01:00
Ralf Jung
1fa0ff88c0 fix nits 2018-10-30 10:41:01 +01:00
Ralf Jung
559f63a2b6 Merge remote-tracking branch 'origin/master' into rustup 2018-10-30 08:40:30 +01:00
Ralf Jung
4ccdcdcace rustup 2018-10-29 09:15:15 +01:00
Ralf Jung
4a98f64142 Merge remote-tracking branch 'origin/master' into rustup 2018-10-26 15:06:21 +02:00
Ralf Jung
d890a70c39 update for is_null removal 2018-10-25 11:37:42 +02:00
Ralf Jung
a34b9c7b70 make some things public for the benefit of priroda 2018-10-24 11:39:31 +02:00
Ralf Jung
5388037f8a remove code duplication by letting reactivatable() compute what reactivate() has to do 2018-10-23 15:59:50 +02:00
Ralf Jung
fe83ef323c also run compile-fail tests with and without optimizations 2018-10-23 13:09:17 +02:00
Ralf Jung
26bb4f79dc get rid of implicit Raw at bottom of stack; locals get a uniq at their bottom 2018-10-22 18:17:37 +02:00
Ralf Jung
01828fde53 respect memory's privacy 2018-10-22 16:48:10 +02:00
Ralf Jung
dd1558f337 rustc update and be very selective about what we accept on a deref 2018-10-22 16:48:09 +02:00
Ralf Jung
1ae1b9bfea adapt to rustc API changes and factor out computing the tag for ty+mutbl 2018-10-22 16:45:03 +02:00
Ralf Jung
1a7fb7ec3c expand comment about incomplete support for interior mutability 2018-10-22 12:51:47 +02:00
Ralf Jung
957d18c343 Merge remote-tracking branch 'origin/master' into rustup 2018-10-22 08:41:01 +02:00
Ralf Jung
069b661a10 typo 2018-10-19 10:09:53 +02:00
Ralf Jung
0b6e349417 automalically use start-fn if we have all the MIR 2018-10-19 10:07:17 +02:00
Ralf Jung
186e42d088 move resolve_path to helpers module 2018-10-19 09:54:41 +02:00
Andrew Poelstra
4fa5bfa2bb add some comments to clarify command-line argument munging in #482 2018-10-17 20:24:52 +00:00
Ralf Jung
b259512c57 bump for ENABLE_PTR_TRACKING_HOOKS, and remove some dead code 2018-10-17 17:36:07 +02:00
Ralf Jung
d4b78b36ab stacked borrows: enforcement at memory accesses 2018-10-17 15:15:53 +02:00
Ralf Jung
66b4bb7cf2 stacked borrows: track refs and derefs 2018-10-16 18:35:27 +02:00
Ralf Jung
348f782085 add env var emulation test, and fix it complaining about leaks 2018-10-16 18:35:27 +02:00
Ralf Jung
b84f7e2029 add Borrow tag to pointers; remove old locking code 2018-10-16 18:35:27 +02:00
Andrew Poelstra
4faf8fad10 cargo-miri: support running unit tests for libraries as well as test binaries 2018-10-15 18:38:07 +00:00
Ralf Jung
88ec62640e make rustc-tests a binary in the main project 2018-10-14 11:48:15 +02:00
Ralf Jung
9a1dd865c1 whitelist Windows Mutex 2018-10-14 11:06:36 +02:00
Ralf Jung
837a17625a Merge remote-tracking branch 'origin/master' into rustup 2018-10-14 10:35:27 +02:00
Ralf Jung
62b819ba18 whitelist std::ptr::read 2018-10-12 10:40:44 +02:00
Ralf Jung
b99e1267be atomics wrap around on overflow 2018-10-12 09:08:17 +02:00
Ralf Jung
1846f111c9 fix return place for __rust_maybe_catch_panic 2018-10-11 15:28:21 +02:00
Ralf Jung
e4dfb7013b enable validation per default, but add a flag to disable it and use that for some run-pass tests
compile-fail does not do validation yet
2018-10-11 11:24:22 +02:00
Ralf Jung
d94d32e937 enforce_validity became a function 2018-10-11 09:02:28 +02:00
Ralf Jung
791f464ea0 update for size_and_align considering extern types 2018-10-11 08:59:39 +02:00
Ralf Jung
ce5b183e8b update for new return place handling 2018-10-11 08:59:39 +02:00
Ralf Jung
8ea8cd2919 update for ptr provenance 2018-10-11 08:42:26 +02:00
Ralf Jung
a439262859
Merge branch 'master' into ptr-offset 2018-10-10 10:03:34 +02:00
Ralf Jung
edf28fa227 only allow offset-by-0 on integer pointers 2018-10-09 20:13:46 +02:00
Ralf Jung
cc275c63a9 fix for fn allocations now having an alignment (1) and a size (0) 2018-10-08 13:35:54 +02:00
Ralf Jung
146f5d8d10 rustup; test for return type mismatch 2018-10-02 21:16:55 +02:00
Ralf Jung
72cd905484 rustup 2018-10-02 09:25:55 +02:00
Ralf Jung
1ce05523c4 remove needs_drop impl 2018-10-01 08:24:42 +02:00
Ralf Jung
8d7cdbb853 rustup 2018-09-20 12:24:55 +02:00
Ralf Jung
ea4232cf22 Move TLS data to machine data
There is no good reason to let the machine store stuff in the machine *and* in memory. I plan to get rid of the latter.
2018-09-20 01:00:59 +02:00
Ralf Jung
18d7394071 more compile-fail ptr equality tests, to rule out any non-determinism; and fix ptr equality to fail all of them.
At least these are the cases I can think of right now.
2018-09-17 10:02:31 +02:00
Ralf Jung
95d79cc11e Merge remote-tracking branch 'origin/master' into zero-sized-accesses 2018-09-17 08:39:59 +02:00
Ralf Jung
f925e5dafd cargo miri: show version number 2018-09-16 15:18:18 +02:00
Ralf Jung
b488b51b66 bump Rust 2018-09-15 10:34:45 +02:00
Ralf Jung
d889da43f8 move MemoryData to memory.rs; remove all the Hashing stuff 2018-09-09 11:01:15 +02:00
Tim
72918c1a97 Remove (overflowing_)add/mul/sub(_with_overflow) 2018-09-06 16:49:08 +02:00
Tim
055c63ab0d Remove unchecked_shr/shl from intrinsics 2018-09-06 16:07:13 +02:00
Ralf Jung
6dff6e84d7
Merge branch 'master' into master 2018-09-01 11:47:52 +02:00
thedarkula
90d7cb2493 Removed transmute from intrinsic.rs 2018-09-01 11:47:20 +02:00
Ralf Jung
d3928f6356 more permissive pointer comparison logic 2018-09-01 11:26:54 +02:00
Ralf Jung
2a318264ea also allow comparing pointers with integers so big that they cannot be equal 2018-08-30 11:05:52 +02:00
Ralf Jung
fe9cd1c98d strictly enforce pointer validity even for zero-sized accesses 2018-08-30 10:50:13 +02:00
Ralf Jung
c44267960f ptr equality: only defined for ptrs in the same allocation and live ptrs 2018-08-30 10:46:09 +02:00
Ralf Jung
904923fa7a move some more helpers to rustc 2018-08-30 10:42:18 +02:00
Ralf Jung
2a244dcb48 no TLS dtor and no leak checks on macOS 2018-08-30 09:41:57 +02:00
Ralf Jung
e2ec521f21 pretend mprotect works 2018-08-30 09:22:01 +02:00
Ralf Jung
b4ebe72b1b stack address functions for macOS 2018-08-30 09:04:57 +02:00
Ralf Jung
0db1c6a1b0 ignore memory leaks on Windows 2018-08-30 08:57:33 +02:00
Ralf Jung
1b41b71827 update for MUT_STATIC_KIND 2018-08-26 13:19:03 +02:00
Ralf Jung
1ba6140891 rustup 2018-08-25 21:22:06 +02:00
Ralf Jung
823837922b update for enum discriminant changes 2018-08-25 11:07:21 +02:00
Ralf Jung
bb5079b2bf rustup 2018-08-24 19:49:57 +02:00
Ralf Jung
42bce6cb36 rustup 2018-08-24 17:44:04 +02:00
Ralf Jung
2ee4aac62f fix leaks with -Zmiri-start-fn 2018-08-24 16:45:08 +02:00
Ralf Jung
1a4ad2bb9f update for miri engine: new function handling, new static handling, fixed leaks 2018-08-24 16:45:08 +02:00
Ralf Jung
68194180a8 fix type renaming 2018-08-23 09:29:27 +02:00
Ralf Jung
ee7f22245d Merge remote-tracking branch 'origin/master' 2018-08-20 18:57:48 +02:00
Ralf Jung
1a23b3c313 rustup 2018-08-20 16:27:23 +02:00
Ralf Jung
6203bf445f update for rustc memory changes; fix (un)init intrinsic for ZST 2018-08-18 11:59:28 +02:00
Ralf Jung
ea27e46a38 fix compilation after rustc change 2018-08-17 09:36:53 +02:00
Ralf Jung
c424e21692 update for memory signedness removal; test some float casts 2018-08-16 11:35:38 +02:00
Ralf Jung
259cc6e3dc rustup for big refactor; kill most of validation 2018-08-16 10:30:43 +02:00
Ralf Jung
1179d4f8a4 fix int ptr ops on 32bit 2018-08-14 20:25:56 +02:00
Ralf Jung
04b925135d fix modulo logic 2018-08-14 20:10:25 +02:00
Ralf Jung
2b40d39c1e support computing the remainder of a ptr, if covered by alignment 2018-08-14 20:10:25 +02:00
Ralf Jung
1fbf998b65 Fix remaining windows hooks 2018-08-14 19:47:41 +02:00
Ralf Jung
e10d83c8bb fix windows hooks 2018-08-14 18:52:13 +02:00
Ralf Jung
ad5403e2e5 fix layout in discriminant_value 2018-08-14 15:58:49 +02:00
Ralf Jung
f0070fca1e remove unnecessary features 2018-08-14 09:35:31 +02:00
Oliver Schneider
7b4402746f Add comments explaining why we do something complex for (un)init 2018-08-08 10:34:49 +02:00
Oliver Schneider
be91aea0fa Rustup 2018-08-07 15:22:11 +02:00
Ralf Jung
3783cebe80 remove dependency on lazy_static and regex by getting rid of some dead validation hack 2018-08-02 12:16:09 +02:00
Ralf Jung
ff3efb4e04 clarify error message when sysroot was not found 2018-07-30 14:49:01 +02:00
Ralf Jung
bb6e7c8243
Merge branch 'master' into sanity_checks 2018-07-30 08:51:34 +02:00
Ralf Jung
f6d4814fb3 detect another printing function for nicer error 2018-07-26 17:31:00 +02:00
Ralf Jung
851f2ab98e test cargo miri output 2018-07-26 16:43:51 +02:00
Ralf Jung
e849fa47fb make miri compile again 2018-07-26 11:21:49 +02:00
Oliver Schneider
53114e3b36 Update to rustc sanity check branch 2018-07-26 11:21:49 +02:00
Oliver Schneider
b055ff03f1 Produce the exit codes that compiletest expects 2018-07-25 17:28:16 +02:00
Ralf Jung
f9a8d2618e fix for latest rust nightly 2018-07-16 22:26:32 +02:00
Ralf Jung
e1a3b9606e TLS on Windows 2018-07-16 11:42:46 +02:00
Ralf Jung
216b8f7407 shim some Windows functions 2018-07-16 10:27:19 +02:00
Ralf Jung
5be8bd987d Test some new capabilities we gained from a rustc update 2018-07-15 21:25:20 +02:00
Ralf Jung
60d18dbf87 handle all foreign items like we handle C ABI shims 2018-07-15 21:03:52 +02:00
Ralf Jung
30185d09f6 make sure we show error messages even when we cannot show span 2018-07-15 11:40:57 +02:00
Ralf Jung
a2f4d84f73
Merge branch 'master' into eq-hash 2018-07-13 08:29:42 +02:00
Ralf Jung
0e0f52df75
Merge branch 'master' into start-fn 2018-07-11 21:30:24 +02:00
Ralf Jung
e5de51a322 use -Zmiri-start-fn as a clue to REQUIRE the lang item to be present 2018-07-11 20:25:27 +02:00
Ralf Jung
dd7cc47e5c document -Zmiri-start-fn; make its logic more clear 2018-07-11 19:39:09 +02:00
Ralf Jung
197b75764c without aux builds, we don't need to set always-encode-mir any more 2018-07-11 19:36:45 +02:00
Ralf Jung
7023126094 stop producing binaries 2018-07-11 19:36:45 +02:00
bjorn3
52bf4732fd Fix some clippy lints 2018-07-10 17:32:38 +02:00
bjorn3
f321593655 Workaround for rustc bug 2018-07-10 17:20:07 +02:00
Alexander Regueiro
5b7bb32b0e Rustup 2018-07-02 17:00:36 +01:00
Oliver Schneider
e1dbbe538f Rustup 2018-07-01 16:01:42 +02:00
Dylan MacKenzie
5a7f4412ee Implement Eq and Hash for MemoryData and Evaluator
In order to implement infinite loop detection while executing MIR, both
the implementor of `Machine` (`Evaluator`) and its associated type
(`MemoryData`), must implement `Eq` and `Hash`. This PR adds the
required trait implementations.

It's possible that the `Hash` implementations need to be improved; only
the `env_vars` field of `Evaluator` and the `thread_local` field of
`MemoryData` are actually being hashed. Omitting fields from a `Hash`
implementation is not incorrect, but could lead to collisions if the
ignored fields are changing constantly. Perhaps I should instead derive
`Hash` on a few more fields related to MIR validation?
2018-06-29 17:50:57 -07:00
Mateusz Mikuła
d4b98b221d Rusutp 2018-06-29 14:10:57 +02:00
bjorn3
d1de6781e8
Add missing pub 2018-06-12 07:30:29 +02:00
bjorn3
b04391c565 Split create_ecx out of eval_main 2018-06-11 18:51:40 +02:00
bjorn3
60669cbdfd Rustup to rustc 1.28.0-nightly (2a0062974 2018-06-09) 2018-06-10 11:23:56 +02:00
bjorn3
94754de600 Convert legitimate failing errors to the new error format 2018-06-05 18:08:18 +02:00
Oliver Schneider
e1734470e7 Reenable the rustc tester 2018-06-03 13:08:51 +02:00
Oliver Schneider
675587280f Update cargo-miri 2018-06-03 13:08:51 +02:00
Oliver Schneider
cec51f8513 Use correct bit size when reading usize values 2018-06-03 13:08:51 +02:00
Oliver Schneider
8284b4e912 to_u64 and to_bytes are horribly easy to use wrongly. 2018-06-03 13:08:51 +02:00
Oliver Schneider
77c8582031 align_offset intrinsic is now a lang item 2018-06-03 13:08:51 +02:00
Oliver Schneider
1d9c56ddf4 TlsKey is messy because it changes types between systems 2018-06-03 13:08:51 +02:00
Oliver Schneider
062be7c047 Comparing non-pointer-size types should be possible 2018-06-03 13:08:51 +02:00
Oliver Schneider
9655aaf3aa Comparing Scalar's with differend defined values is false 2018-06-03 13:08:51 +02:00
Oliver Schneider
1bd088a96c memcmp returns i32 2018-06-03 13:08:51 +02:00
bjorn3
4143922d1d Partial rustup 2018-06-03 13:08:51 +02:00
bjorn3
1437a975d6 s/allocate_cached/allocate_bytes 2018-06-03 13:08:51 +02:00
bjorn3
98802769a1 Rustup to rustc 1.28.0-nightly (a3085756e 2018-05-19) 2018-06-03 13:08:51 +02:00
Oliver Schneider
601673d06f trans -> codegen_backend 2018-06-03 13:08:51 +02:00
bjorn3
b906ce84ec Rustup to rustc 1.28.0-nightly (952f344cd 2018-05-18) 2018-06-03 13:08:51 +02:00
bjorn3
574aa3bc42 Rustup to rustc 1.27.0-nightly (ff2ac35db 2018-05-12) 2018-06-03 13:08:51 +02:00
Oliver Schneider
20c2e0bede
Test miri on mac os 2018-05-11 11:29:18 +02:00
bjorn3
8d6a893a4a Rustup to 1.27.0-nightly (acd3871ba 2018-05-10) 2018-05-11 09:38:13 +02:00
Oliver Schneider
27fe263669
Move back to a normal folder structure 2018-05-09 14:37:00 +02:00
Oliver Schneider
52599adf27
Miri core has moved to rustc::mir::interpret 2017-10-06 17:13:59 +02:00
king6cong
6221bbc5a7 update trans_fulfill_obligation call signature 2017-09-30 14:55:16 +08:00
Ralf Jung
a8980fd5e8 use exchange_malloc lang item for Box statements 2017-09-25 15:55:21 +02:00
Ralf Jung
1ad9709e00 get rid of ad-hoc inhabitedness test 2017-09-22 13:24:55 +02:00
Ralf Jung
8509dbbafe validation: allow undef integers and raw pointers, as a crude work-around 2017-09-16 12:08:26 +02:00
Ralf Jung
2ea6663440 validation: check that int, float etc. are not undef 2017-09-16 11:45:56 +02:00
Oliver Schneider
ec5820c273
Use rustc's APFloat impl instead of interpreter host floats 2017-09-15 15:06:27 +02:00
Oliver Schneider
8cbfbf77f8
Remove #[linkage(foo)] statics from core miri 2017-09-15 13:03:07 +02:00
Ralf Jung
9db9308a79 Storage{Live,Dead} in generators got fixed 2017-09-15 08:58:12 +02:00
Ralf Jung
91d9b83db2 validation: remove a hack that is no longer necessary 2017-09-14 10:00:37 +02:00
Ralf Jung
59a329d4f7 use catch expression to handle the 'release undef' problem slightly better 2017-09-13 15:46:53 +02:00
Ralf Jung
bac89ae1d8 enable validation for a bunch of more tests 2017-09-13 15:46:53 +02:00
Ralf Jung
aa578de018 identify write locks by lvalues, not regions
This makes a new compile-fail test pass.
2017-09-13 14:37:31 +02:00
Oliver Schneider
2cf984d76e
This is unreachable code and it should never ever be reachable even in the future 2017-09-13 14:21:07 +02:00
Oliver Schneider
c47ee6b521
Rustup part 2/2 2017-09-13 13:46:54 +02:00
Ralf Jung
79993e63a0 rustup (part 1/2) 2017-09-13 12:58:25 +02:00
Ralf Jung
a1f71af5b2 restrict cur_frame visibility 2017-09-09 11:37:00 +02:00
Ralf Jung
41f228824f fix warnings in tests; update validation whitelist 2017-09-09 11:18:02 +02:00
Ralf Jung
1591977432 clean up suspensions when function ends 2017-09-09 11:18:02 +02:00
Oliver Schneider
bc2f9259e6 rustup 2017-09-09 11:18:02 +02:00
Oliver Schneider
e9315a60e4 Rustup 2017-09-06 10:10:15 +02:00
Ralf Jung
9a273e0192 update backtrace to newly released version 2017-09-04 12:37:42 +02:00
Ralf Jung
10101dd9f4 rename variables to match new type name 2017-09-04 12:13:05 +02:00
David Renshaw
bb2bfb4353 update for upstream rename: CodeExtent -> Scope 2017-09-03 22:39:03 -04:00
Oliver Schneider
58a59e9d23
Rustup (generator support) 2017-08-30 13:16:27 +02:00
Oliver Schneider
506a5c7910
Mir optimizations treat single variant enums as structs 2017-08-29 12:26:20 +02:00
Oliver Schneider
88fc45b37c
Get some more rustc tests working 2017-08-29 11:58:22 +02:00
Oliver Schneider
206f0bd6df
Fix panic in subslice patterns of arrays (fixes #276) 2017-08-29 10:03:00 +02:00
Oliver Schneider
dd5b0100f3
Merge remote-tracking branch 'origin/master' into memory 2017-08-28 16:13:09 +02:00
Oliver Schneider
2f0dcfba1d
Simplify write_value_to_ptr 2017-08-28 16:06:49 +02:00
Oliver Schneider
129b914bdc
int_align has no dynamic error case 2017-08-28 15:58:58 +02:00
Oliver Schneider
e53e9b9e63
Deduplicate writing null case of struct wrapped nullable pointers 2017-08-28 15:27:50 +02:00
Oliver Schneider
ac7dfcac38
Fix #313 by correctly copying relocations when doing overlapping copies 2017-08-28 14:08:55 +02:00
Oliver Schneider
1fce886ac3
Make some things public that are required by priroda 2017-08-28 14:08:10 +02:00
Oliver Schneider
3464401576 Merge branch 'master' into memory 2017-08-26 23:13:55 +02:00
David Renshaw
8b5f22c3fd use rustc version of fulfill_obligation now that we can 2017-08-26 13:48:59 -04:00
Ralf Jung
2307d6fc5b Merge branch 'master' into memory 2017-08-26 13:51:13 +02:00
Ralf Jung
8ce6b06d52 Remove specialize float/bool read/write methods from memory
Notice that the write methods were previously unused, so if this makes us handle some things incorrectly, they probably were already broken
2017-08-25 19:33:12 +02:00
Ralf Jung
b1ca65447a refactor memory write API to match read API 2017-08-25 19:08:04 +02:00
Ralf Jung
f036fe0d32 refactor memory read API: provide only size-based, no type-based methods 2017-08-25 16:20:13 +02:00
Ralf Jung
8539728607 memory: make sure we check non-NULL/undef even fore 0-sized accesses 2017-08-25 14:41:59 +02:00
Oliver Schneider
fad1bc8b20 Merge branch 'master' into drop 2017-08-24 23:52:36 +02:00
Oliver Schneider
19018852c3
Simplify dropping by reusing eval_fn_call 2017-08-24 16:04:50 +02:00
Oliver Schneider
110d50e7f9 Merge branch 'master' into libstd 2017-08-24 15:30:35 +02:00
Oliver Schneider
9ede346ee2
Refactoring: Couple values and types into an object when passed around together 2017-08-24 14:42:42 +02:00
Ralf Jung
e332ab9b13 Handle closures in get_field_ty
Fixes #304
2017-08-24 13:34:05 +02:00
Oliver Schneider
f75dd90961 Also reuse function pointer shims and drop glue from rustc 2017-08-23 17:46:36 +02:00
Oliver Schneider
7b8e2c772d
Rustup (Clone is now a builtin trait) 2017-08-23 17:24:38 +02:00
Ralf Jung
7e5d971c56 fix warnings; make test suite pass again 2017-08-12 09:45:44 -07:00
Ralf Jung
1326aed02c rustfmt
Except for error.rs, the result there looks rather ugly
2017-08-10 08:48:41 -07:00
Ralf Jung
8e8c9c862c turns out we can enable this sanity check now 2017-08-09 22:32:13 -07:00
Ralf Jung
5e018b1deb analyzing hashmap.rs uncovered a deeper problem; disable validation there for now 2017-08-09 15:49:47 -07:00
Ralf Jung
7b5f8a36ab try harder to preserve regions when doing inference
This is not complete yet, but it is enough to make unsized-tuple-impls work.
2017-08-09 15:49:47 -07:00
Ralf Jung
668491a892 Work on making validation test pass again
Turns out that tracking write locks by their lifetime is not precise enough,
but for now, we don't have an alternative.  Also, we need to force_allocate
what we acquire or else the memory will not be in the right state.
2017-08-09 15:49:47 -07:00
Ralf Jung
de80bcbdbf some tests for RangeMap 2017-08-09 15:49:47 -07:00
Oliver Schneider
91db25bdef Rename destructure method to into_alloc_id_kind 2017-08-09 14:54:37 +02:00
Oliver Schneider
81f5de7f05 rename memory::Kind to memory::MemoryKind 2017-08-09 14:53:22 +02:00
Oliver Schneider
9e787fbd82
Dump all allocs when dumping locals 2017-08-08 17:09:26 +02:00
Oliver Schneider
897b563e70
clarify which function is pushing a global 2017-08-08 17:09:26 +02:00
Oliver Schneider
3ce57d1225
Remove unused function 2017-08-08 17:09:26 +02:00
Oliver Schneider
8ab1eeef51
Implement packed statics 2017-08-08 17:09:26 +02:00
Oliver Schneider
181851fc6b
Always allocate for globals
statics are rare and constants are copied anyway.
Reading from a constant should then yield a `ByVal` again if possible.
2017-08-08 17:09:26 +02:00
Oliver Schneider
4ba2b82f31
Split the alloc id address space into functions and normal allocs
instead of interleaving them as before.
The next step is to also separate out static memory into its own
address space.
2017-08-08 17:09:25 +02:00
Ralf Jung
847396e412 Re-do memory locking (again). Now with proper support for multiple independent shared borrows of the same mutable reference. 2017-08-07 12:57:32 -07:00
Oliver Schneider
e7d8037ebf Rustup 2017-08-07 12:37:15 -07:00
Oliver Schneider
b59c0927f6 Merge pull request #283 from RalfJung/backtrace
Backtrace performance
2017-08-05 16:29:45 +02:00
Ralf Jung
2a1d7666ed Merge pull request #286 from RalfJung/mir-validate
Update MIR validation and test it
2017-08-04 22:02:52 -07:00
Ralf Jung
fb2ed457c6 consolidate making Undef release a NOP in one place 2017-08-04 16:02:16 -07:00
Ralf Jung
ac49e7c650 only collect backtrace when RUST_BACKTRACE is set; resolve symbols lazily when printing 2017-08-04 10:55:35 -07:00
Oliver Schneider
181bb30d07 Rustc reorders fields, but miri expects them in source order 2017-08-04 13:43:17 +02:00
Ralf Jung
58a17026c9 Let -Zmir-emit-validate also control whether miri even acts on the validation commands 2017-08-03 18:13:23 -07:00
Ralf Jung
3754572b0a Release of an Undef local is fine, and a NOP 2017-08-03 18:12:48 -07:00
Ralf Jung
85dc3e563e make execution with full MIR work: need to whitelist Arc drop impl and whatever it calls 2017-08-03 18:12:26 -07:00
Ralf Jung
c2c05014af with the new 'limited validation when there is unsafe', we can significantly shrink our whitelist 2017-08-03 18:12:26 -07:00
Ralf Jung
b3fa42fc0e with Validation MIR around drop being fixed, we can remove the hack working around this 2017-08-03 18:12:24 -07:00
Ralf Jung
dd533a9ec6 Revert "disable validation code so that it all compiles against current nightly"
This reverts commit 791dbaf584.
2017-08-03 18:10:47 -07:00
Oliver Schneider
726b027ba3 Merge pull request #280 from solson/archeology
Produce backtraces for miri internals
2017-08-03 23:02:29 +02:00
Ralf Jung
5d27b94b04 fix comment 2017-08-03 11:06:25 -07:00
Oliver Schneider
f7bc6ab162 Reuse the Backtrace object instead of rolling our own 2017-08-03 12:37:52 +02:00
Oliver Schneider
163821b500 Remove accidental text paste 2017-08-03 12:37:24 +02:00
Ralf Jung
c533cf8496 fix size_of_val on unsized tuples 2017-08-02 15:29:13 -07:00
Ralf Jung
8deb9387e9 step.rs: improve comment for clarity 2017-08-02 15:10:25 -07:00
Oliver Schneider
29a3c4d28c Produce backtraces for miri internals 2017-08-02 16:59:01 +02:00
Oliver Schneider
79f38bf2cd
Process untagged unions 2017-08-01 16:12:29 +02:00
Oliver Schneider
d05784f23c Address comments 2017-08-01 11:11:57 +02:00
Oliver Schneider
8de85808ec
Properly process ptr_op for const eval 2017-08-01 09:56:21 +02:00
Oliver Schneider
adfea61665
Allow machines to create new memory kinds 2017-08-01 09:56:21 +02:00
Oliver Schneider
f16b9e280b
Move all intrinsics out of interpret and fail CTFE on intrinsic calls 2017-08-01 09:56:21 +02:00
Oliver Schneider
df7c42bcc8
Move a method used everywhere out of intrinsic.rs 2017-08-01 09:56:21 +02:00
Oliver Schneider
e15d374dda
Fix doc text 2017-08-01 09:56:21 +02:00
Oliver Schneider
e5799a6af3
Reduce the chance of accidentally calling functions in CTFE
previously miri had a check for const fn and other cases that
CTFE requires. Instead the function call is completely
processed inside the machine. This allows CTFE to have full
control over what is called and miri to not have useless
CTFE-checks in normal mode.
2017-08-01 09:56:21 +02:00
Oliver Schneider
728bb878ac
Move the global_item function to the EvalContext 2017-08-01 09:56:21 +02:00
Oliver Schneider
960dca172d
Rename const_eval::Evaluator to CompileTimeFunctionEvaluator 2017-08-01 09:56:21 +02:00
Oliver Schneider
4a4640a331
Move more non-CTFE operations to the Machine 2017-08-01 09:56:21 +02:00
Oliver Schneider
36502a32b0
Implement the first machine function 2017-08-01 09:56:21 +02:00
Oliver Schneider
11e30a65e6
Split up miri into the librustc_mir and bin parts 2017-08-01 09:56:21 +02:00
Ralf Jung
69fd22f904 fix for latest nightly 2017-07-31 16:53:53 -07:00
Ralf Jung
4458001644 remove some commented-out tracing 2017-07-28 19:47:02 -07:00
Ralf Jung
eb6c743e42 avoid anonymous bool 2017-07-28 19:43:05 -07:00
Ralf Jung
14c8e834b9 use Cell for memory's aligned flag to avoid infecting interfaces with 'fake' mutability 2017-07-27 09:14:04 -07:00
Ralf Jung
4672cb7bde make force_allocation handle packed ByValPair 2017-07-26 23:45:22 -07:00
Ralf Jung
791dbaf584 disable validation code so that it all compiles against current nightly 2017-07-26 11:27:40 -07:00
Ralf Jung
fdc7071697 whitelist some more methods 2017-07-26 11:10:47 -07:00
Ralf Jung
b372de8ec9 move undef-check-on-release-validation out, to catch more cases 2017-07-25 18:15:43 -07:00
Ralf Jung
858e5eef92 check mutable UnsafeCell; hack for AtomicBool::get_mut 2017-07-25 17:31:40 -07:00
Ralf Jung
744780e794 more hacks to make test cases pass 2017-07-25 17:31:40 -07:00
Ralf Jung
e2d80d0423 whitelist things so that more tests pass 2017-07-25 13:24:23 -07:00
Ralf Jung
ec6d289c5b
suspend lvalues, not locks. refactor memory locking.
Due to this, we are back down to 88 tests
2017-07-25 10:30:12 +02:00
Ralf Jung
0b15db0cc2
make LockInfo non-Copy 2017-07-25 10:30:12 +02:00
Ralf Jung
59d49c5d6d
fix checks when releasing write locks (101) 2017-07-25 10:30:12 +02:00
Ralf Jung
b79814e281
we don't have to set the frame on every step 2017-07-25 10:30:12 +02:00
Ralf Jung
4aae2e766e
handle type of function definitions (98) 2017-07-25 10:30:12 +02:00
Ralf Jung
3f8a497bf0
we need to normalize associated types also deep in the hierarchy (89) 2017-07-25 10:30:12 +02:00
Ralf Jung
769a2b5c81
Handle trait objects. Only very superficial checking of the vtable for now. (88) 2017-07-25 10:30:12 +02:00
Ralf Jung
e5c6637d87
nits. also, rustc now emits released for drop. (72) 2017-07-25 10:30:12 +02:00
Ralf Jung
d0f043528d
exempt UnsafeCell from checks (69) 2017-07-25 10:30:12 +02:00
Ralf Jung
a41602561c move validation to its own file 2017-07-25 10:30:02 +02:00
Ralf Jung
359e5360d8
we have to permit deallocation memory for which we hold a read lock (67) 2017-07-25 10:22:11 +02:00
Ralf Jung
ee209ccd74
fix handling univariant enums (62) 2017-07-25 10:22:11 +02:00
Ralf Jung
5440fe4b52
permit locking constant memory (60) 2017-07-25 10:22:11 +02:00
Ralf Jung
66e55b0d6e
fn ptrs and never were accidentally disabled (55) 2017-07-25 10:22:11 +02:00
Ralf Jung
8e495999df
fix normalizing associated types. this brings us up to 52 passing tests! 2017-07-25 10:22:11 +02:00
Ralf Jung
bb6e5224da
handle array types 2017-07-25 10:22:11 +02:00
Ralf Jung
4457a52d4f
Re-do the way locking is done during verification
We now lock at the "leaves" on the types, rather than locking at references.
In particular, Validate for sth. of non-reference lvalue will also lock the "outer" memory.
Also change the way we release write locks, and some refactoring in the memory.
2017-07-25 10:22:11 +02:00
Ralf Jung
7c6e6cf492
for references, validate alignment and handle ZSTs 2017-07-25 10:22:10 +02:00
Ralf Jung
1f9153fac3
validate TyClosure, TyTuple, TyNever 2017-07-25 10:20:45 +02:00
Ralf Jung
dac51f41ad
various small fixes and tracing 2017-07-25 10:20:45 +02:00
Ralf Jung
046675d735
Also release locks on ReleaseValidation and EndRegion 2017-07-25 10:20:45 +02:00
Ralf Jung
aaae815b44
fix release_lock_until to no longer remove inactive locks 2017-07-25 10:20:45 +02:00
Ralf Jung
fda5cc9b4c
avoid downcasting for enum variants without further fields 2017-07-25 10:20:45 +02:00
Ralf Jung
a91ee4bb03
validate boxes 2017-07-25 10:20:45 +02:00
Ralf Jung
22f43e2d2b
implement checking for ADTs 2017-07-25 10:20:45 +02:00
Ralf Jung
02e802811b
implement stub validity check for basic types (bool, int, float); acquire locks for references 2017-07-25 10:20:45 +02:00
Ralf Jung
edc6ce30d5
implement acquiring and releasing locks 2017-07-25 10:19:27 +02:00
Ralf Jung
4372f1145f
add locking data structures and lock checks
This brings back some of the memory range ideas that were deleted with the packed refactoring.
2017-07-25 10:19:27 +02:00
Ralf Jung
d2a9235c63
update for rustc changes: treat new MIR commands as NOP 2017-07-25 10:15:00 +02:00
Oliver Schneider
03ca15e62d Merge pull request #267 from RalfJung/cast
Fix ptr-int-casts
2017-07-24 11:31:25 +02:00
Oliver Schneider
4a34a1b50e Pass HasDataLayout instead of the data layout itself 2017-07-24 09:56:02 +02:00
Oliver Schneider
9c07f424da Use rustc traits instead of our own 2017-07-23 15:00:22 +02:00
Ralf Jung
4d38f8dffb move pointer truncation to a common method in memory.rs 2017-07-22 11:28:48 -07:00
Ralf Jung
40950b2cd1 fix nits 2017-07-21 20:02:48 -07:00
Ralf Jung
b174b786b6 refactor casting code to more clearly handle pointers 2017-07-21 20:02:48 -07:00