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
11f0aedc3d
add some tests making sure we get the alias checking right
2017-08-09 15:49:47 -07: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
4957031e3c
selectively disable validation in compile-fail where appropriate. cargo test now passes :)
2017-08-03 18:13:23 -07: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
Oliver Schneider
adfea61665
Allow machines to create new memory kinds
2017-08-01 09:56:21 +02:00
Ralf Jung
14cb85809b
always test alignment in memory.rs
2017-07-20 13:24:06 -07:00
Eduard-Mihai Burtescu
e79bb42ab3
Merge pull request #262 from RalfJung/never
...
remove ad-hoc 'never' type check in read_lvalue
2017-07-20 15:13:21 +03:00
Ralf Jung
3b19c83c67
remove ad-hoc 'never' type check in read_lvalue
2017-07-19 20:32:51 -07:00
Ralf Jung
7648ccaae1
add test for misaligned pointer loads
2017-07-19 20:26:30 -07:00
Ralf Jung
72664e42aa
No longer check aligment and non-NULLness on &
...
This breaks creating unaligned raw pointers via `&packed.field as *const _`, which needs to be legal.
Also it doesn't seem like LLVM still relies on this, see
* https://github.com/solson/miri/issues/244#issuecomment-315563640
* https://internals.rust-lang.org/t/rules-for-alignment-and-non-nullness-of-references/5430/16
We probably want to handle this invariant like the others that validation is concerned with, and only
check it on function boundaries for now.
2017-07-19 11:28:35 -07:00
Ralf Jung
ff9192e346
remove reundant dangling checks in {r,d}eallocate
2017-07-18 13:50:54 -07:00
Oliver Schneider
2e562a4d64
Fix static mutation tests
2017-07-14 17:39:19 +02:00
Oliver Schneider
7701ff2f89
Remove duplicate test
2017-07-14 17:39:19 +02:00
Oliver Schneider
192da8819f
Ensure that it is not possible to explicitly free stack memory
2017-07-14 17:36:06 +02:00
Ralf Jung
1fe310c8ba
Memory::read_ptr has to check for relocations on the edges
2017-07-12 19:30:37 -07:00
Oliver Schneider
4a03e45169
Add tests for #113
...
resolves #113
2017-07-12 09:29:18 +02:00
Ralf Jung
9a9666e2a6
Add a test for using a too big alignment on reallocate
2017-07-11 10:28:32 -07:00
Ralf Jung
ea730ab20f
update tests for new allocator API
2017-07-10 16:15:58 -07:00
Ralf Jung
3c0a6d6922
simplify reallocate
2017-07-10 13:34:54 -07:00
Oliver Schneider
b8bd42e8d4
Merge pull request #234 from RalfJung/reallocate
...
Make Reallocate & Deallocate less permissive
2017-07-05 19:54:54 +02:00
Oliver Schneider
10ec543b9e
Merge pull request #235 from RalfJung/intrinsics
...
Implement some missing intrinsics
2017-07-04 08:38:22 +02:00
Ralf Jung
19d6ad74e5
add test for div-by-zero with the operator (rather than the intrinsic)
2017-07-03 20:59:47 -07:00
Ralf Jung
30f92f8a27
catch overflows that are hidden by first casting the RHS to u32
2017-07-03 20:50:19 -07:00
Ralf Jung
ffd482e2f5
check the assumptions made by the unchecked_ and copy_nonoverlapping intrinsics
2017-07-03 20:37:38 -07:00
Ralf Jung
440c4778fa
validate size and alignment on reallocate and deallocate
2017-07-03 16:47:58 -07:00
Ralf Jung
bdcdb605a4
fix test on i686
2017-07-03 16:16:05 -07:00
Ralf Jung
dc9f5a205f
properly check for: double-free, use-after-reallocate
2017-07-03 16:12:11 -07:00
Ralf Jung
030166757c
Fix transmute on ByValPair
...
Fixes #227
2017-07-03 13:58:50 -07:00
Oliver Schneider
42d3edada7
Merge pull request #220 from oli-obk/undo_single_field_opt
...
Remove the `field` field from `Lvalue::Local`
2017-06-28 10:15:36 +02:00
David Renshaw
54821102b4
update tests for new error message
2017-06-27 21:31:38 -04:00
Oliver Schneider
5dfaacf310
Simplify all the code
2017-06-27 13:36:41 +02:00
Ralf Jung
4e90e3bcf6
remove redundant test
2017-06-24 11:05:13 -07:00
Ralf Jung
b1acc130bb
check alignment of pointers on Ref
2017-06-24 11:05:13 -07:00
Ralf Jung
f0c8df2291
handle ptr-int casts explicitly in cast.rs
2017-06-24 11:05:13 -07:00
Ralf Jung
7b7f690274
Make sure that casting a ptr-integer down to u8 makes it unusable
2017-06-24 11:05:13 -07:00
Oliver Schneider
4aca1d0e0b
Make zst compile-fail tests more readable
2017-06-24 12:46:35 +02:00
Oliver Schneider
377fcce9b8
Ensure tests run with and without full MIR
2017-06-23 16:41:56 +02:00
Oliver Schneider
9be3e9185b
Remove the zst allocation
2017-06-23 12:55:49 +02:00
Ralf Jung
12935b6514
add some compile-fail tests
2017-06-22 14:46:53 -07:00
Ralf Jung
14cb31fb88
permit bit-anding in pointer values below the alignment
...
This makes HashMap work!
2017-06-22 14:46:53 -07:00
Ralf Jung
2f61356858
permit offsetting a NULL-ptr by 0, to fix hashmap test
2017-06-22 13:41:13 -07:00
Ralf Jung
6eafb10b87
add test for function pointer offsets
2017-06-21 21:54:42 -07:00
Oliver Schneider
a6cd7a2e08
Also move some compile-fail tests to fullmir-only
2017-06-21 15:07:40 +02:00
Oliver Schneider
fcf495821e
Get rid of the integer allocation
2017-06-20 14:28:18 +02:00
Ralf Jung
3e1596d8c9
Error out when "primitive MIR math" (as opposed to unchecked intrinsics) overflows
...
Fixes #178
2017-06-07 15:39:44 -07:00
Ralf Jung
36505c7b40
fix bitops being accidentally allowed on pointers from the same allocation
2017-06-05 17:17:16 -07:00
Ralf Jung
2a231d66fc
check bounds when using offset intrinsic or MIR op
2017-06-05 14:27:26 -07:00
Ralf Jung
f39e015163
check for overflow when doing pointer arithmetic
2017-06-05 14:23:35 -07:00
Ralf Jung
1d0e622a81
test that we cannot observe the bytes representing a pointer
2017-06-05 14:23:35 -07:00