Commit Graph

1646 Commits

Author SHA1 Message Date
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
6d3c88c061 Merge pull request #277 from RalfJung/nightly
fix for latest nightly
2017-07-31 17:14:38 -07:00
Ralf Jung
69fd22f904 fix for latest nightly 2017-07-31 16:53:53 -07:00
Oliver Schneider
7c6befe69f Merge pull request #274 from RalfJung/packed2
make force_allocation handle packed ByValPair
2017-07-31 12:41:29 +02: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
Oliver Schneider
f906c5458c Merge pull request #272 from oli-obk/mir-validate
Mir validate
2017-07-26 23:37:52 +02: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
Oliver Schneider
46324c24ca Merge pull request #273 from RalfJung/ref
Test that &* of a dangling (and even unaligned) ptr is okay
2017-07-26 07:46:39 +02: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
e5cc8aaf5b Test that &* of a dangling (and even unaligned) ptr is okay 2017-07-25 17:02:57 -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