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 AllocId
s 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
Ralf Jung
f2e14d9314
use memory::check_bounds_ptr for offset check
2018-12-26 13:16:47 +01:00
Ralf Jung
5a8f9e58f7
properly compare unequal function pointers
2018-12-25 13:29:38 +01:00
Ralf Jung
4e4569cf4b
fix build and tests with latest nightly
2018-12-25 13:26:40 +01:00
Ralf Jung
4f659ed507
fix for infallible allocation
2018-12-23 14:13:16 +01:00
Ralf Jung
a03d184648
Merge branch 'master' into rustup
2018-12-20 13:34:24 +01:00
Ralf Jung
750cd442be
fix argv null terminator
2018-12-19 15:45:23 +01:00
Ralf Jung
af4fb6655e
implement GetCommandLineW, GetEnvironmentVariableW, GetConsoleScreenBufferInfo, SetConsoleTextAttribute, GetSystemInfo
2018-12-19 15:25:25 +01:00
Ralf Jung
51ed485ba4
implement stdout/stderr on Windows
2018-12-19 12:16:07 +01:00
Ralf Jung
d67da9f04b
no need to set the cargo-miri feature twice
2018-12-19 11:12:56 +01:00
Ralf Jung
11433bf38e
actually show warnings about suppressed output
2018-12-19 11:07:24 +01:00
Ralf Jung
ecf6599051
xargo version check: also check application name, just to be sure
2018-12-19 11:06:46 +01:00
Ralf Jung
4e0fe62bd9
typo
2018-12-18 19:45:10 +01:00
Ralf Jung
e4fd710606
there is a new xargo released, use that
2018-12-18 19:41:32 +01:00
Ralf Jung
e8c53e81f8
implement macOS functions for argc, argv
2018-12-18 19:26:57 +01:00
Ralf Jung
93b8c23f7b
Merge remote-tracking branch 'origin/master' into cargo-miri-test
2018-12-18 18:36:19 +01:00
Ralf Jung
96b2c347d7
temporarily use git version of xargo
2018-12-15 18:39:42 +01:00
Ralf Jung
6a37e723c4
detect outdated xargo version
2018-12-15 15:08:03 +01:00
Ralf Jung
e6147ae67e
*oops*
2018-12-12 17:30:20 +01:00
Ralf Jung
b6a4556cb9
use show_error to terminate
2018-12-12 17:05:23 +01:00
Ralf Jung
ed83cc2600
use RUSTC_WRAPPER for the cargo hook
2018-12-12 17:03:40 +01:00
Ralf Jung
7e9098ff69
treat ref-to-raw cast like a reborrow: do a special kind of retag
2018-12-12 11:11:20 +01:00
Ralf Jung
ce5089c390
rebase fallout
2018-12-11 17:54:39 +01:00
Ralf Jung
9417b28de5
treat test binaries like all others
2018-12-11 17:42:18 +01:00
Ralf Jung
f31bb43804
implement some libc hooks needed by libtest
2018-12-11 17:39:46 +01:00
Ralf Jung
6b376dc394
get rid of to_bytes hack
2018-12-11 14:32:59 +01:00
Ralf Jung
383d215386
make some functions private to StackedBorrows
2018-12-11 14:18:51 +01:00
Ralf Jung
9de605b32f
avoid repeating signatures in EvalContext extension traits
2018-12-11 14:16:58 +01:00
Ralf Jung
05f2b2ed3d
remove support for not having libstd MIR
2018-12-10 12:26:20 +01:00
Ralf Jung
b50662d68c
fix CI
2018-12-10 12:21:39 +01:00
Ralf Jung
b8e6af49d9
fix setting the manifest path manually when using cargo miri
2018-12-10 10:53:32 +01:00
Ralf Jung
b6eb2cd08e
cargo miri: support foreign targets
2018-12-10 09:53:14 +01:00
Ralf Jung
c84c1527e2
factor grabbing of cargo options into separate function and make it better
2018-12-10 09:28:24 +01:00
Ralf Jung
f06e25f9b2
bump Rust version, fix build
2018-12-08 10:38:36 +01:00
Ralf Jung
61f20761d3
Merge branch 'master' into stacked-borrows-2-phase
2018-12-03 11:11:32 +01:00
Ralf Jung
d11a6766ad
use assert
2018-12-03 10:26:39 +01:00
Ralf Jung
0e44876a2d
fix mutability gap: do not allow shared mutation when creating frozen reference
2018-12-03 09:15:18 +01:00
Ralf Jung
6df89de68a
we don't need no whitelist
2018-12-02 17:18:25 +01:00
Ralf Jung
e12d4bc70c
build libstd with minimal features
2018-12-02 14:05:14 +01:00
Ralf Jung
b2305da8d0
assert some sense
2018-12-02 13:30:09 +01:00
Ralf Jung
479eb3bd2b
support for basic (non-overlapping) 2-phase borrows
2018-12-02 13:30:09 +01:00
Ralf Jung
dcfc2f207e
do not even look for cargo metadata in 'cargo miri setup'
2018-12-02 10:29:57 +01:00
Ralf Jung
86e6470a12
update README to first describe the usual user setup, and to always set up a proper libstd
2018-11-30 09:23:44 +01:00
Ralf Jung
c10811a82d
Merge remote-tracking branch 'origin/master' into rustup
2018-11-28 16:15:56 +01:00
Oliver S̶c̶h̶n̶e̶i̶d̶e̶r Scherer
26fe778c55
Typo
...
Co-Authored-By: RalfJung <post@ralfj.de>
2018-11-28 09:58:23 +01:00
Ralf Jung
6ca4fc7125
Merge remote-tracking branches 'origin/master' and 'ralf/shrink-whitelist' into memory-data-revived
2018-11-28 08:09:58 +01:00
Oliver S̶c̶h̶n̶e̶i̶d̶e̶r Scherer
f42b708568
Merge branch 'master' into oli-obk-patch-1
2018-11-27 17:18:16 +01:00
Oliver Scherer
5958fa6a70
Use explicit dyn
trait object
2018-11-27 16:20:15 +01:00
Oliver Scherer
edc2fb5f60
Expose some internals for priroda
2018-11-27 14:41:53 +01:00
Ralf Jung
97e010f5b9
barriers prevent deallocation
2018-11-27 14:26:23 +01:00
Ralf Jung
194710e112
no barriers for boxes
2018-11-27 14:26:23 +01:00
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