Commit Graph

217 Commits

Author SHA1 Message Date
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
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
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
a34b9c7b70 make some things public for the benefit of priroda 2018-10-24 11:39:31 +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
957d18c343 Merge remote-tracking branch 'origin/master' into rustup 2018-10-22 08:41:01 +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
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
Ralf Jung
9a1dd865c1 whitelist Windows Mutex 2018-10-14 11:06:36 +02:00
Ralf Jung
62b819ba18 whitelist std::ptr::read 2018-10-12 10:40:44 +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
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
146f5d8d10 rustup; test for return type mismatch 2018-10-02 21:16:55 +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
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
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
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
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
1a23b3c313 rustup 2018-08-20 16:27:23 +02:00
Ralf Jung
259cc6e3dc rustup for big refactor; kill most of validation 2018-08-16 10:30:43 +02:00
Ralf Jung
f0070fca1e remove unnecessary features 2018-08-14 09:35:31 +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
e1a3b9606e TLS on Windows 2018-07-16 11:42:46 +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
bjorn3
52bf4732fd Fix some clippy lints 2018-07-10 17:32:38 +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
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
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
1d9c56ddf4 TlsKey is messy because it changes types between systems 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
27fe263669
Move back to a normal folder structure 2018-05-09 14:37:00 +02:00
Oliver Schneider
4cfa7c5d12
Prep miri repository for rustc merger 2017-07-21 11:30:56 +02:00
Oliver Schneider
d9d792ba03 Export types and functions needed by priroda 2017-07-19 11:06:07 +02:00
Oliver Schneider
4ce8be9538 Produce ConstInt from a def_id for rustc 2017-07-12 10:38:54 +02:00
Oliver Schneider
2d52054fb2
Rename Pointer to MemoryPointer 2017-07-11 10:32:01 +02:00
Oliver Schneider
5f67ba76f5 Removed unused crate imports 2017-05-05 10:37:04 +02:00
Oliver Schneider
07229d6305 Rustup to rustc 1.19.0-nightly (2d4ed8e0c 2017-05-03) 2017-05-04 17:42:43 +02:00
David Renshaw
f0bca59ad0 remove feature opt-ins that are no longer needed 2017-03-22 18:59:26 -04:00
Oliver Schneider
35502fd47d rustup 2017-02-24 10:39:55 +01:00
Scott Olson
9e24893879 Rename "vtable" mod to "traits". 2017-02-10 03:07:28 -08:00
Scott Olson
684f757139 Make clippy-suggested fixes. 2017-01-22 00:19:35 -08:00
Scott Olson
ac2bf50f9d Use the new field init shorthand. 2017-01-16 18:45:30 -08:00
Oliver Schneider
3a658e09e8
rustup (i128) 2017-01-12 08:28:42 +01:00
Scott Olson
6d1c47b6ef Update for changes in rustc. 2016-12-21 17:23:28 -08:00
Scott Olson
9093188a5c Clean up useless pub use. 2016-12-21 17:15:03 -08:00
Scott Olson
1af63171f8 Split primval into operator and value. 2016-12-10 16:23:07 -08:00
Scott Olson
fe19a014ff Move lvalue data structures out of eval_context. 2016-12-07 20:58:48 -08:00
Scott Olson
4702d97093 Flatten 'interpreter' mod tree into the root. 2016-12-07 20:30:37 -08:00
Scott Olson
020f0b782b Refactor passing of resource limits. 2016-11-26 17:54:19 -08:00
Oliver Schneider
19c44dab05
rustup to rustc 1.14.0-nightly (7c69b0d5a 2016-11-01) 2016-11-03 10:38:08 +01:00
Oliver Schneider
ed679c3d23
make some pieces public that are required by priroda 2016-10-20 13:10:22 +02:00
Scott Olson
00ae07be07 Update for changes in rustc. 2016-10-14 22:59:50 -06:00
Oliver Schneider
8df6e7275a
export StackPopCleanup (needed by priroda) 2016-09-20 13:35:19 +02:00
Scott Olson
f3589d6835 Remove unused extern crate rustc_trans. 2016-09-17 14:50:56 -06:00
Scott Olson
64eca52ad3 Run Mir passes (copied from rustc pre-trans). 2016-06-30 21:33:24 -06:00
Scott Olson
756d73b3ca Remove filling drop to prep for elaborated drops. 2016-06-30 21:30:03 -06:00
Oliver Schneider
b91338b220
things priroda needs to be public or changed 2016-06-30 11:29:25 +02:00
Scott Olson
7bda9f24d6 Make step an EvalContext method and remove Stepper. 2016-06-23 00:02:47 -06:00
Oliver Schneider
a1082b9b1a
Merge remote-tracking branch 'origin/master' into oflo 2016-06-20 12:33:09 +02:00
Scott Olson
f4cf3f3636 Get benchmarks running again and factor out some parts in common with bin/miri.rs. 2016-06-17 21:35:37 -06:00
Oliver Schneider
3ba4f6db04
remove code repetition and fix overflowing intrinsics 2016-06-17 15:16:41 +02:00
Oliver Schneider
58b4fac1ce
implement overflowing ops 2016-06-17 13:09:20 +02:00
Scott Olson
024b3d2b45 Merge remote-tracking branch 'oli/function_pointers2' into fixup-function_pointers2 2016-06-11 16:46:01 -06:00
Scott Olson
781c3a6660 Update for changes in rustc nightly. 2016-06-11 12:38:28 -06:00
Oliver Schneider
67211218f0
display the full path to the function if no MIR is found 2016-06-10 18:04:12 +02:00
Oliver Schneider
6af821f202
rename GlobalEvalContext to EvalContext 2016-06-10 16:20:17 +02:00
Oliver Schneider
b3c1713b89
expose a minimal API and use it in the binary 2016-06-10 13:01:51 +02:00
Oliver Schneider
2405c81c65
stepwise interpretation 2016-06-01 18:50:20 +02:00
Oliver Schneider
4f3f2020ed
add the log crate + env_logger to be able to choose the log granularity at runtime 2016-06-01 11:47:41 +02:00
Scott Olson
b859444562 Do or do not. 2016-05-09 18:52:53 -06:00
Scott Olson
4a863c2a6a Replace Repr with the new ty::layout in rustc.
Lvalues still need work (see lvalue_layout).
2016-04-23 00:03:59 -06:00
Scott Olson
910ad2a391 Implement filling drop. 2016-04-07 05:56:07 -06:00
Scott Olson
c55320a3db Update for changes in rustc master. 2016-04-06 19:00:34 -06:00
Scott Olson
600ff26e65 Refactor handling of relocations. 2016-03-21 05:27:34 -06:00
Scott Olson
20f152296a Implement min_align_of and a hacky mul_with_overflow. 2016-03-19 11:01:33 -06:00
Scott Olson
19bf6eec6b Arena allocate and cache type representations. 2016-03-17 05:32:00 -06:00
Scott Olson
a7c7764c93 Reorganize and simplify. 2016-03-14 21:48:00 -06:00
Scott Olson
f145017319 Add support for pointers. 2016-03-13 14:36:25 -06:00
Scott Olson
6b4d2b11a6 Add support for smaller signed integers. 2016-03-13 01:43:28 -06:00
Scott Olson
7c5ea62156 Move memory module to its own file. 2016-03-05 00:48:23 -06:00
Scott Olson
2776f55d0c WIP: Switching to a new byte-based value representation. 2016-02-27 19:20:25 -06:00
Scott Olson
064c3521c3 Restructure into separate binary and library. 2015-11-21 21:20:06 -06:00