Commit Graph

952 Commits

Author SHA1 Message Date
Ralf Jung
2312ac8db6 lvalue: refactoring to permit applying a mir projection to a miri lvalue 2017-07-14 09:06:52 -07:00
Oliver Schneider
45ab975610 Add a comment explaining the static "local" during deallocate_local 2017-07-14 17:46:28 +02:00
Oliver Schneider
2e562a4d64
Fix static mutation tests 2017-07-14 17:39:19 +02:00
Oliver Schneider
eb01c3fdd2
Use enum instead of boolean 2017-07-14 17:39:19 +02:00
Oliver Schneider
70a914cd34
Clarify documentation 2017-07-14 17:36:06 +02:00
Oliver Schneider
192da8819f
Ensure that it is not possible to explicitly free stack memory 2017-07-14 17:36:06 +02:00
Oliver Schneider
56d4de303f Merge pull request #247 from RalfJung/packed
Re-do packed memory accesses
2017-07-14 08:30:30 +02:00
Ralf Jung
da5538f0b2 use closures to ensure proper bracketing of unaligned accesses 2017-07-13 10:29:11 -07:00
Ralf Jung
d02e7f0da8 simplify 2017-07-13 09:10:50 -07:00
Ralf Jung
62334acd66 show alignedness of ByRefs; allow converting unaligned ByRef to ptr 2017-07-13 09:09:45 -07:00
Ralf Jung
6fb6a1c4d0 make all Value::into_* methods handle alignment the same way 2017-07-13 09:06:27 -07:00
Ralf Jung
6c9fdc7922 expand comment 2017-07-13 08:40:05 -07:00
Oliver Schneider
f8757aa092 Reuse the const_eval method for syscall name resolution 2017-07-13 16:49:55 +02:00
Oliver Schneider
f78d6a0d97
Don't use magic numbers for synconf names
instead read them from the `libc` crate if available.

fixes #216
2017-07-13 16:31:14 +02:00
Oliver Schneider
fdef27acf5
Copy path_to_def from clippy 2017-07-13 16:31:14 +02:00
Ralf Jung
81307d7299 fix "unaligned" transmute 2017-07-12 23:50:57 -07:00
Ralf Jung
287b6be5ca track alignment also for ByRef values 2017-07-12 21:06:57 -07:00
Ralf Jung
1fe310c8ba Memory::read_ptr has to check for relocations on the edges 2017-07-12 19:30:37 -07:00
Ralf Jung
454fc854ab Rename value accessors to "into_*" so the three of them are better aligned 2017-07-12 17:52:57 -07:00
Ralf Jung
c149c3fc6a Re-do packed memory accesses
We now track in the lvalue whether what we computed is expected to be aligend or not, and then set some state in the memory system accordingly to make it (not) do alignment checks
2017-07-12 17:46:56 -07:00
Oliver Schneider
4ce8be9538 Produce ConstInt from a def_id for rustc 2017-07-12 10:38:54 +02:00
Ralf Jung
eafe659ee0 hooking mmap is no longer needed 2017-07-11 17:24:15 -07:00
Oliver Schneider
eba199a437 Document the reason for Pointer's existence 2017-07-11 12:50:03 +02:00
Oliver Schneider
0dd6ef8301 Simplify with_extra 2017-07-11 12:39:12 +02:00
Oliver Schneider
d0d1d2d5e8
Remove *offset* methods from PrimVal onto Pointer 2017-07-11 12:28:11 +02:00
Oliver Schneider
03f0a88002
Use a wrapper type to differentiate between PrimVal and pointers 2017-07-11 12:28:11 +02:00
Oliver Schneider
a8b957a0f8
Add a dedicated write_null method 2017-07-11 10:32:01 +02:00
Oliver Schneider
2d52054fb2
Rename Pointer to MemoryPointer 2017-07-11 10:32:01 +02:00
Ralf Jung
1cbf5e8962 leave notes regarding possible alignment checks 2017-07-10 18:09:46 -07:00
Ralf Jung
d2cf3d76b9 update for 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
Ralf Jung
4165051073 refine comment explaining the order of checks on deallocate 2017-07-05 10:26:15 -07:00
Oliver Schneider
9a04be974c Merge pull request #232 from oli-obk/master
Only check pointers when dereferencing
2017-07-04 09:50: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
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
f118ff43e7 implement the unchecked_ intrinsics; add all the doctests from one of the integer modules 2017-07-03 20:37:33 -07:00
Ralf Jung
440c4778fa validate size and alignment on reallocate and deallocate 2017-07-03 16:47:58 -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
823b952ef2 Only check pointers when dereferencing
Before we also checked whether pointers had alloc_ids when we created rvalue references
2017-07-03 14:16:11 +02:00
David Renshaw
e3fa4fb849 get cargo-miri to work 2017-06-29 13:06:36 -04:00
Oliver Schneider
8722ce8d4b Merge pull request #223 from oli-obk/lvalue_read
Reinstate `eval_and_read_lvalue` optimizations
2017-06-29 15:40:06 +02:00
David Renshaw
73ab5c77c2 normalize signature before passing to check_sig_compat 2017-06-29 07:58:22 -04:00
David Renshaw
32e7dcb6fb update for upstream changes to TyFnDef 2017-06-28 22:00:17 -04:00
Oliver Schneider
695f9723d2 Merge pull request #222 from oli-obk/const_eval_checks
Address comments to previous PR
2017-06-28 23:08:58 +02:00
Ralf Jung
51b43215a4 cast -> transmute 2017-06-28 11:37:15 -07:00
Oliver Schneider
917c89e697 Optimize lvalue reads from Value::ByVal and Value::ByValPair 2017-06-28 13:37:23 +02:00
Oliver Schneider
91409f1d76 Code nits 2017-06-28 13:10:50 +02:00
Oliver Schneider
c8079c652c
Address comments 2017-06-28 10:17:14 +02:00
Oliver Schneider
a724a39323 Reword comments 2017-06-28 09:46:41 +02:00
Oliver Schneider
5dfaacf310 Simplify all the code 2017-06-27 13:36:41 +02:00
Oliver Schneider
ab400f3eea Initial work towards checking const eval rules in miri 2017-06-26 17:58:47 +02:00
Ralf Jung
76a1d66e77 fix build after rebase 2017-06-24 11:05:53 -07:00
Ralf Jung
38d03392fa Clarify pattern matching 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
Oliver Schneider
eca9e3429a PrimVal used to allow comparing Undef 2017-06-23 16:12:03 +02:00
Oliver Schneider
5ee4fdcd15 fetch_tls_dtor "read" an Undef as nonzero 2017-06-23 13:31:00 +02:00
Oliver Schneider
c4fc6c677d Typo 2017-06-23 13:30:31 +02:00
Oliver Schneider
9be3e9185b Remove the zst allocation 2017-06-23 12:55:49 +02:00
Ralf Jung
d5c031640f use PrimVal::to_bool rather than bytes_to_bool 2017-06-22 20:20:26 -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
269667e152 implement _nonzero intrinsics 2017-06-22 14:46:53 -07:00
Ralf Jung
c1a6df941e permit all kinds of 0-offsets on ZSTs 2017-06-22 14:26:17 -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
57391bab10 fix unused variable warning 2017-06-22 11:33:39 -07:00
Ralf Jung
6512fa7be8 use PrimVal::is_null 2017-06-22 11:33:31 -07:00
Ralf Jung
3637aa86c8 allow any offset on integer pointers 2017-06-22 11:28:00 -07:00
Oliver Schneider
8de111018d Merge pull request #201 from oli-obk/test_suite_fails
"Support" more libc functions
2017-06-22 14:16:45 +02:00
Oliver Schneider
8733bd0e7c Update mod.rs 2017-06-22 11:40:06 +02:00
Oliver Schneider
a805606d45 malloc should return null for zst allocs 2017-06-22 08:52:53 +02:00
Ralf Jung
7b2b0dd56c test HashMap creation in libstd-MIR, and make it work again 2017-06-21 23:09:34 -07:00
Ralf Jung
894306e47d refactor pointer arithmetic handling 2017-06-21 22:59:47 -07:00
Ralf Jung
78aa93fa10 correctly reject functions pointers that had arithmetic done to them 2017-06-21 21:45:51 -07:00
Ralf Jung
7b1582b383 permit integer addition and subtraction on ptr-integers 2017-06-21 21:38:43 -07:00
Ralf Jung
b8c5e7fd0e refactor pointer handling in binops 2017-06-21 21:02:11 -07:00
Ralf Jung
184d3b3bad expand thread-local storage tests to cover dtor order and re-running dtors 2017-06-21 20:17:07 -07:00
Oliver Schneider
a630677b01 Report better errors on random numbers and threads 2017-06-21 16:34:40 +02:00
Oliver Schneider
ecc44fec7e Implement malloc and free 2017-06-21 15:51:42 +02:00
Oliver Schneider
f22c7e43df Store env vars where necessary 2017-06-21 15:46:30 +02:00
Oliver Schneider
5414825f09
Simplify numeric intrinsics 2017-06-21 15:08:19 +02:00
Oliver Schneider
a82fe9ae0c Enable more zst writes and reads 2017-06-20 16:26:53 +02:00
Oliver Schneider
ea6f6079ca
Use PrimVal instead of Pointer where applicable 2017-06-20 14:28:19 +02:00
Oliver Schneider
a6734cd890
Fix unions 2017-06-20 14:28:18 +02:00
Oliver Schneider
75fddee700
Simplify the return lvalue 2017-06-20 14:28:18 +02:00
Oliver Schneider
a2baeb516c
Run the tls destructors in the correct order 2017-06-20 14:28:18 +02:00
Oliver Schneider
43afa20dc7
Add pthread docs 2017-06-20 14:28:18 +02:00
Oliver Schneider
fcf495821e
Get rid of the integer allocation 2017-06-20 14:28:18 +02:00
Oliver Schneider
f5ca91e812
Update to latest nightly 2017-06-20 14:28:18 +02:00
David Renshaw
f14ebd1142 handle EndRegion as no-op 2017-06-20 19:35:46 +09:00
Oliver Schneider
03577a905a Fix some clippy warnings 2017-06-12 13:56:29 +02:00
David Renshaw
f174cc8a4c tcx.infer_ctxt() no longer takes an argument 2017-06-10 20:39:48 -04:00
Ralf Jung
e0559a6b24 typos 2017-06-08 10:56:49 -07: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
e1562fbe71 comments 2017-06-06 10:15:54 -07:00
David Renshaw
49fb43f293 use type_align() and type_size() instaed of size_and_align_of_dst() 2017-06-06 10:29:53 -04:00
David Renshaw
c8be312933 fix issue 184 by marking the destination as a packed struct 2017-06-06 09:49:34 -04:00
Ralf Jung
91b93bc701 less strict kind test for pointer operations 2017-06-05 18:23:25 -07:00