Commit Graph

227 Commits

Author SHA1 Message Date
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
cd138bcd0b test more operations on dangling ZST pointers 2018-09-17 10:02:31 +02:00
Ralf Jung
130d803b32 fix test for rustup 2018-09-17 09:18:57 +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
95eb77c18e add some compile-fail tests 2018-09-16 17:29:53 +02:00
Ralf Jung
1697b93ed9
Merge branch 'master' into rustup 2018-09-01 10:35:19 +02:00
Ralf Jung
f56841d974 unignore a bunch of tests that actually work 2018-08-30 15:57:17 +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
e239fcffc1 new tests for new fn arg passing code 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
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
40cc72604a update for bool/char being checked at binops 2018-08-24 19:18:21 +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
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
354ec11c3e try using types with lower alignment, maybe that helps for Windows 2018-08-14 18:52:13 +02:00
Ralf Jung
1538b36c80 make sure that StorageDead invalidates the backing store 2018-07-31 20:29:28 +02:00
Ralf Jung
b7c57fee61 Ignore tests
the bool thing will be fixed by the validation I have planned, and we already ignored another test around modifing constants.
2018-07-26 11:21:49 +02:00
Ralf Jung
0b8809bf5f port some tests to check the new error format 2018-07-15 12:00:02 +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
01578ca6b3 don't run all compile-fail tests with full MIR 2018-07-12 11:02:48 +02:00
Ralf Jung
949106148c ignore panic test on Windows 2018-07-12 10:24:25 +02:00
Ralf Jung
5f2f254695 move tests that no longer need MIR out of fullmir 2018-07-12 10:22:23 +02:00
Ralf Jung
ff5b0fee33 fix many tests and ignore some others; enable compile_fail tests again 2018-07-12 10:22:23 +02:00
bjorn3
ac25a513af Re-enable never_transmute_humans.rs 2018-06-05 18:08:18 +02:00
bjorn3
94754de600 Convert legitimate failing errors to the new error format 2018-06-05 18:08:18 +02:00
bjorn3
8ae66db798 Convert some of the tests to the new format 2018-06-05 18:08:18 +02:00
bjorn3
569792acbc Address some review comments 2018-06-05 18:08:18 +02:00
bjorn3
3db0568c40 Fix a couple of tests 2018-06-05 18:08:18 +02:00
Oliver Schneider
bf26b96dc7 Update to latest rustc changes 2017-12-05 17:06:03 +01:00
Oliver Schneider
4e8b9451ab Update error messages 2017-11-27 14:31:51 +01:00
Oliver Schneider
042430270f repeat expressions abort due to OOM instead of execution time exhaustion 2017-10-12 11:13:56 +02:00
Ralf Jung
6e8650395d fix oom2 test 2017-09-25 16:21:20 +02:00
Ralf Jung
1ad9709e00 get rid of ad-hoc inhabitedness test 2017-09-22 13:24:55 +02:00
Ralf Jung
bc240ff606 add an undef validation test 2017-09-16 12:11:48 +02:00
Ralf Jung
2ea6663440 validation: check that int, float etc. are not undef 2017-09-16 11:45:56 +02:00
Ralf Jung
5d2ed4d2ba Something in panic handling fails validation with full-MIR 2017-09-13 18:15:59 +02:00
Ralf Jung
c1630973d0 Disable the address-of-ZST test for now; it is buggy as it disagrees with rustc 2017-09-13 18:15:59 +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
Ralf Jung
41f228824f fix warnings in tests; update validation whitelist 2017-09-09 11:18:02 +02:00
Oliver Schneider
dd5b0100f3
Merge remote-tracking branch 'origin/master' into memory 2017-08-28 16:13:09 +02:00
Oliver Schneider
02a0f0f814 Turn off validation for some compile-fail tests 2017-08-28 15:04:32 +02:00
Ralf Jung
907d2c7310 rustc #43457 got fixed, we can enable more tests 2017-08-27 18:18:32 +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
Ralf Jung
2fccae8aac add another compile-fail test for validation 2017-08-18 11:30:18 +02:00
Ralf Jung
34685044f9 add a bunch of compile-fail tests for validation 2017-08-09 18:01:10 -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
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
Ralf Jung
44a45f7c34 run test suite also against libstd with full MIR 2017-05-31 13:39:40 -07:00