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
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
Ralf Jung
4d38f8dffb
move pointer truncation to a common method in memory.rs
2017-07-22 11:28:48 -07:00
Ralf Jung
40950b2cd1
fix nits
2017-07-21 20:02:48 -07:00
Ralf Jung
b174b786b6
refactor casting code to more clearly handle pointers
2017-07-21 20:02:48 -07:00
Ralf Jung
f960f4c537
fix casting integers to pointers
2017-07-21 20:02:48 -07:00
Oliver Schneider
202dd5a359
Remove unused IntoValTyPair
hack
2017-07-21 14:59:58 +02:00
Oliver Schneider
4cfa7c5d12
Prep miri repository for rustc merger
2017-07-21 11:30:56 +02:00
Oliver Schneider
b4e300d577
Merge pull request #266 from RalfJung/align
...
Always test alignment in memory.rs
2017-07-21 09:46:50 +02:00
Ralf Jung
14cb85809b
always test alignment in memory.rs
2017-07-20 13:24:06 -07:00
Oliver Schneider
f2d0101065
Also test optimized MIR
2017-07-20 20:25:43 +02:00
Oliver Schneider
9710ff481e
Merge pull request #264 from oli-obk/paths
...
Reduce the usage of global paths
2017-07-20 20:00:19 +02:00
Oliver Schneider
9b526d1c85
Reduce the usage of global paths
2017-07-20 16:40:57 +02: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
Oliver Schneider
f02d9e63fd
Merge pull request #259 from RalfJung/ref-validate
...
No longer check aligment and non-NULLness on `&`
2017-07-20 07:09:52 +02:00
Ralf Jung
3b19c83c67
remove ad-hoc 'never' type check in read_lvalue
2017-07-19 20:32:51 -07:00
Ralf Jung
ede055c2be
fix checking alignment of pointer loads
2017-07-19 20:24:09 -07:00
Ralf Jung
f9818bf818
fix a warning
2017-07-19 13:31:21 -07:00
Ralf Jung
2424953055
Don't pretend that casts to bool are a thing
2017-07-19 11:35:06 -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
Oliver Schneider
27c64479cd
Merge pull request #257 from oli-obk/cleanups
...
Export types and functions needed by priroda
2017-07-19 11:40:43 +02:00
Oliver Schneider
d9d792ba03
Export types and functions needed by priroda
2017-07-19 11:06:07 +02:00
Oliver Schneider
2d5c4196f1
Merge pull request #254 from RalfJung/dangling
...
Remove reundant dangling checks in {r,d}eallocate
2017-07-18 23:34:09 +02:00
Ralf Jung
9bccfd388c
use libstd methods for floating-point <-> bytes conversion
2017-07-18 13:56:01 -07:00
Ralf Jung
ff9192e346
remove reundant dangling checks in {r,d}eallocate
2017-07-18 13:50:54 -07:00
Oliver Schneider
5328c5d1b0
Merge pull request #245 from oli-obk/funky_allocs
...
Ensure that it is not possible to explicitly free stack memory
2017-07-18 14:09:15 +02:00
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
Ralf Jung
684de68d6c
properly wrap pointer offsets at pointer size
2017-06-05 18:07:26 -07:00
Ralf Jung
7bfda59fe2
don't bother inserting integer relocations into the relocation table
2017-06-05 17:17:16 -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
a291153414
Permit ptr->int->ptr roundtrip
2017-06-05 15:18:40 -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
70227c87bf
fix arith_offset not taking the size of the type into account; test for offset
2017-06-05 14:23:35 -07:00
Ralf Jung
6197f4fac9
Permit int->ptr->int roundtrip
2017-06-05 14:23:35 -07:00
Ralf Jung
cfff91ba3e
write_bytes intrinsic: if the write count is 0, the pointer does not have to be valid
2017-06-05 14:23:34 -07:00
Ralf Jung
1b5f77e4c1
Implement Offset like the other binary operators, share code with the intrinsic
...
Also improve drop glue tests
2017-06-05 14:19:10 -07:00
Ralf Jung
31cf66d0e8
remove our array drop glue and use rustc's instead; implement the new Offset and SizeOf operators
2017-06-05 10:06:40 -07:00
David Renshaw
ca8347a1ff
update for upstream ParamEnv changes
2017-06-02 21:00:35 -04:00
Oliver Schneider
ec7f1d5248
Fix typo
2017-06-02 06:53:52 +02:00
Ralf Jung
dd7735b722
make StorageLive kill the current value of the local
2017-06-01 17:59:00 -07:00
Ralf Jung
db6ce463fe
fix some nits
2017-06-01 11:01:55 -07:00
Ralf Jung
e6eaf2083a
interpret StorageLive & StorageDead, and check dead stack slots are not used
2017-05-31 17:41:33 -07:00
Ralf Jung
44a45f7c34
run test suite also against libstd with full MIR
2017-05-31 13:39:40 -07:00
Ralf Jung
6619ed89ba
bin/miri.rs looks for RUST_SYSROOT, so should bin/cargo-miri.rs
2017-05-31 11:17:33 -07:00
David Renshaw
fbc46276ff
prevent 'attempt to shift left with overflow' panic on platforms where pthread_key_t is 64 bits
2017-05-31 10:43:36 -04:00
Ralf Jung
2b37d500f1
simplify determining size and alignment of a pointer
2017-05-30 17:03:45 -07:00
Ralf Jung
b44babf230
allocate return pointer only when we start the program via the start lang item
2017-05-30 15:40:26 -07:00
Ralf Jung
dad95474cb
test thread-local key with no dtor
2017-05-30 10:41:38 -07:00
Ralf Jung
24a9a14dfa
fix various small nits
2017-05-30 10:41:38 -07:00
Ralf Jung
1241938f97
test suite now also passes on MIR-libstd
...
Also enable some tests that were disabled for no apparant reason.
(The comment in zst.rs was wrong, the test was disabled also for miri execution.)
Delete env_args test as the args can actually be queried with MIR-libstd (currently, they are always empty)
2017-05-30 10:41:38 -07:00
Ralf Jung
99433a1ffd
improve fn pointer signature check to allow some casts that should be permitted
...
Also properly check the "non-capturing Fn to fn" case
2017-05-30 10:41:38 -07:00
Ralf Jung
cd6e3e6431
If a "start" lang item incl. MIR is present, run that instead of running main directly
...
This fixes the memory leaks when running a simple "Hello World" with MIR-libstd
2017-05-30 10:41:38 -07:00
Ralf Jung
720c5f874e
implement __rust_maybe_catch_panic
2017-05-30 10:41:38 -07:00
Ralf Jung
55438fe5bf
unify the way we intercept missing MIR and C ABI calls; only intercept C ABI calls if MIR is missing
2017-05-30 10:41:38 -07:00
Ralf Jung
14b16dcf45
use proper span for TLS dtors; fix some nits
2017-05-30 10:41:38 -07:00
Ralf Jung
a66f359d91
support TLS destructors
2017-05-30 10:41:38 -07:00
Ralf Jung
238211e1b3
implement TLS
2017-05-30 10:41:38 -07:00
Ralf Jung
452cc9b396
handle statics with linkage: initialize them with NULL
2017-05-30 10:41:38 -07:00
Ralf Jung
33d42f4b82
also support writing to stderr
2017-05-30 10:41:38 -07:00
Ralf Jung
ab90500d8c
Make println!("String") work
...
miri complains about a memory leak when the program terminates. This may be related to thread-local dtors not running.
2017-05-30 10:41:38 -07:00
David Renshaw
c384f9568d
Rvalue::Box -> Rvalue::NullaryOp
2017-05-30 09:27:08 -04:00
David Renshaw
48662d5199
update for upstream changes with ty::ParamEnv
2017-05-23 23:40:39 -04:00
David Renshaw
0641e932bc
implement __rust_allocate_zeroed C ABI function
2017-05-21 15:48:31 -04:00
David Renshaw
2b84e176fb
update for new boxier mir
2017-05-13 07:09:57 -04:00
Oliver Schneider
5f67ba76f5
Removed unused crate imports
2017-05-05 10:37:04 +02:00
Oliver Schneider
da3860a293
Address things complained about by clippy
2017-05-05 10:34:38 +02:00
Oliver Schneider
07229d6305
Rustup to rustc 1.19.0-nightly ( 2d4ed8e0c
2017-05-03)
2017-05-04 17:42:43 +02:00
Oliver Schneider
671ccca891
Update to rustc 1.19.0-nightly ( 777ee2079
2017-05-01)
2017-05-02 10:44:35 +02:00
Oliver Schneider
488fc53db9
Update to the latest rustc version
2017-04-27 13:48:47 +02:00
Oliver Schneider
538c271e05
Address clippy lints
2017-04-26 12:15:42 +02:00
Oliver Schneider
76768479b5
Update for latest rustc changes
2017-04-25 16:51:58 +02:00
David Renshaw
d666bd7e62
update for latest rustc nightly: type_needs_drop_given_env() and type_contents() are gone
2017-04-23 13:45:04 -04:00
Eduard-Mihai Burtescu
b9bd747b6c
Import EvalError in lvalue.
2017-04-21 14:02:12 +03:00
Eduard-Mihai Burtescu
738c7d262a
Handle Use of ! as Unreachable is not emitted nowadays.
2017-04-21 13:56:44 +03:00
Eduard-Mihai Burtescu
cb3799b44b
Update for changes in LocalDecl on nightly.
2017-04-21 13:27:09 +03:00
Oliver Schneider
fdeee8fb59
Cleanup the diff
2017-03-29 09:10:05 +02:00
Oliver Schneider
065e9593b4
Rustup to rustc 1.17.0-nightly (
7846dbe0c
2017-03-26)
2017-03-27 10:13:21 +02:00
Oliver Schneider
bbeb7216e0
Thinify the fat pointer on virtual function calls
2017-03-23 18:32:57 +01:00
Oliver Schneider
cb867d250a
Fix casting generic functions to concrete function pointers
2017-03-23 17:57:40 +01:00
Oliver Schneider
f4ed482c4d
print
doesn't add a stack frame, so don't write arguments
2017-03-23 17:36:10 +01:00
Oliver Schneider
fb7cc3c164
Fix single field by val tuples
2017-03-23 16:09:36 +01:00
Oliver Schneider
eecc727e87
Reduce noisyness
2017-03-23 15:52:02 +01:00
Oliver Schneider
1263d56eb0
Merge branch 'master' of https://github.com/tsion/miri
2017-03-23 15:40:47 +01:00
Oliver Schneider
1c9f5ac669
Skip the transmute checks for closure glue
2017-03-23 15:23:53 +01:00
Oliver Schneider
1391c5a10a
Reintroduce fn ptr transmute check
2017-03-23 15:17:02 +01:00
Oliver Schneider
4e83659b1d
Fix manual rust-call impls
2017-03-23 15:07:33 +01:00
Oliver Schneider
d71f24c00f
Fix virtual function calls
2017-03-23 14:57:11 +01:00
Oliver Schneider
ad4f6b920a
Fix virtual function calls
2017-03-23 14:24:02 +01:00
Oliver Schneider
d70b79c778
Refactor function calls
2017-03-23 13:36:13 +01:00
Oliver Schneider
70ea218d2b
Reuse more rustc code instead of copying it into miri
2017-03-23 13:35:19 +01:00
Oliver Schneider
0255a51468
Fix function pointer calls
2017-03-23 10:04:08 +01:00
David Renshaw
f0bca59ad0
remove feature opt-ins that are no longer needed
2017-03-22 18:59:26 -04:00
Oliver Schneider
caed365dbe
Refactor drop into its own module and fix Vec
2017-03-22 18:31:41 +01:00
Oliver Schneider
3ef0b0de2c
Dropping slices works again
2017-03-22 17:51:43 +01:00
Oliver Schneider
c409079442
Dropping trait objects works again
2017-03-22 17:48:16 +01:00
Oliver Schneider
9e4e6cdb5c
Dropping arrays works again
2017-03-22 17:32:20 +01:00
Oliver Schneider
7c12ebc78d
Roll our own MIR for dropping arrays.
2017-03-22 16:16:23 +01:00
Oliver Schneider
030f00a8a1
Fix drop terminator
2017-03-22 14:19:29 +01:00
Oliver Schneider
26c3335dbf
Closures work again
2017-03-22 13:13:52 +01:00
David Renshaw
3612d826e7
ast::Attribute no longer has a 'value' field
2017-03-21 11:04:49 -04:00
Oliver Schneider
dc1b0fb436
Compiles again
2017-03-21 13:53:55 +01:00
Oliver Schneider
c6a18cead8
Rustup to rustc 1.17.0-nightly ( 134c4a0f0
2017-03-20)
2017-03-21 09:21:51 +01:00
Scott Olson
a82924b3e2
Merge pull request #152 from oli-obk/intrinsics
...
Intrinsics and overflow
2017-03-14 13:35:51 -07:00
Scott Olson
0ca0676abd
Merge pull request #146 from oli-obk/peephole1
...
[Peephole Optimization 1/n] Don't allocate for structs with a single primval field
2017-03-14 09:57:02 -07:00
Scott Olson
6ee8595375
Merge pull request #147 from oli-obk/rustup
...
rustup to rustc 1.17.0-nightly (60a0edc6c
2017-02-26)
2017-03-14 09:49:40 -07:00
Oliver Schneider
257ac5803f
Don't unconditionally mask bitshift rhs
2017-03-14 14:24:16 +01:00
Oliver Schneider
bb33830c60
Implement more atomic intrinsics
2017-03-14 13:05:51 +01:00
Oliver Schneider
adddde7cba
Implement more float intrinsics
2017-03-14 12:35:38 +01:00
Oliver Schneider
adb3fbb285
Add a method that hides the lifetime erasing boilerplate
2017-03-14 11:12:59 +01:00
Oliver Schneider
da6f136997
I say we take off and nuke the lifetimes from orbit
2017-03-14 10:49:22 +01:00
Oliver Schneider
64d196a9dc
Use deterministic keyword renaming (append _
)
2017-03-14 09:23:15 +01:00
David Renshaw
f0e2247f4d
fix argument order on check_align
2017-03-13 21:07:25 -04:00
David Renshaw
41c2aa677a
simplify write_bytes() by using memory.write_repeat()
2017-03-13 20:47:08 -04:00
David Renshaw
e79ee140ee
write_bytes(): fix handling of types that are larger than u128
2017-03-13 20:32:43 -04:00
David Renshaw
2f3440d213
implement write_bytes intrinsic
2017-03-13 19:46:44 -04:00
Oliver Schneider
4cb1f639b7
Rustup to rustc 1.17.0-nightly ( 824c9ebbd
2017-03-12)
2017-03-13 11:28:45 +01:00
Oliver Schneider
41d59b117a
Rustup to rustc 1.17.0-nightly ( b1e31766d
2017-03-03)
2017-03-07 12:49:56 +01:00
Oliver Schneider
8405770b51
Rustup to rustc 1.17.0-nightly ( be760566c
2017-02-28)
2017-03-02 13:11:33 +01:00
Oliver Schneider
8878a4030a
rustup to rustc 1.17.0-nightly ( 60a0edc6c
2017-02-26)
2017-02-28 12:35:00 +01:00
Oliver Schneider
e2c5a6e64e
don't allocate for primvals
2017-02-24 11:04:13 +01:00
Oliver Schneider
de42764b52
drop zst fields of null pointer optimized structs and enums
...
fixes #25
2017-02-24 11:04:13 +01:00
Oliver Schneider
2282e6b582
represent single field structs as their single field
2017-02-24 11:04:13 +01:00
Oliver Schneider
1a697f9bba
move all code accessing vtable internals into the trait
module
...
fixes #124
2017-02-24 11:04:13 +01:00
Oliver Schneider
51f209a61f
write_primval used to leak memory if the destination was ByRef
...
instead of duplicating all the code from `write_value`, we forward to it.
2017-02-24 10:41:15 +01:00
Oliver Schneider
529efc51e8
detect memory leaks
2017-02-24 10:41:15 +01:00
Oliver Schneider
25c3a4fb00
drop all temporary closure allocations
2017-02-24 10:41:15 +01:00
Oliver Schneider
35502fd47d
rustup
2017-02-24 10:39:55 +01:00
Scott Olson
1af2c397bf
Merge pull request #141 from oli-obk/bug1
...
fix a bug in drop code of structs with unsized fields
2017-02-23 18:06:12 -08:00
Oliver Schneider
545f70010c
rustup
2017-02-14 17:19:43 +01:00
Oliver Schneider
4730cdf825
fix a bug in drop code of structs with unsized fields
2017-02-14 14:26:47 +01:00
Oliver Schneider
d4da7c46dd
rustup
2017-02-14 10:19:19 +01:00
Oliver Schneider
ac71d6f345
don't duplicate field access logic, always go through lvalue_field
2017-02-14 10:19:19 +01:00
Oliver Schneider
a727ceb7e9
fast path for zsts
2017-02-14 10:19:18 +01:00
Scott Olson
eeae478e74
Remove stable feature flag.
2017-02-10 15:13:50 -08:00
Scott Olson
b755a91c21
Do drop glue for closures.
2017-02-10 14:54:14 -08:00
Scott Olson
f73f001ce5
Fix fabsf{32,64} intrinsics.
2017-02-10 14:53:56 -08:00
Scott Olson
0f714b72a0
Formatting.
2017-02-10 13:35:45 -08:00
Scott Olson
6ffd7005c1
Cache string and bytestring literal allocs.
2017-02-10 13:35:33 -08:00
Scott Olson
98d28b688c
Merge pull request #139 from oli-obk/master
...
lvalue references into fields of ValPair locals
2017-02-10 22:29:54 +01:00
Oliver Schneider
35cf19f38a
only print the index part
2017-02-10 22:15:30 +01:00
Oliver Schneider
523c1877d9
print local fields as _2.1
instead of _2 (field 1)
2017-02-10 21:59:29 +01:00
Scott Olson
55bfbf58a2
Resolve Drop impls to get the right substs.
...
Fixes #133 .
2017-02-10 07:55:05 -08:00
Oliver Schneider
1e7481f96e
remove a hack that is now useless
2017-02-10 16:26:59 +01:00
Oliver Schneider
0b86d30594
enable Lvalue::Local to refer to a ValPair field
2017-02-10 16:14:59 +01:00
Scott Olson
7f0b9460cb
Merge pull request #138 from oli-obk/master
...
refactor lvalue field projection handling to prepare for fewer `force_allocation`s
2017-02-10 15:27:36 +01:00
Scott Olson
5a2cdc2689
Implement the fast float math intrinsics.
2017-02-10 05:58:34 -08:00
Oliver Schneider
31f3aabdd4
move some variables closer to their use site.
2017-02-10 14:50:24 +01:00
Oliver Schneider
2e185485b3
use the lvalue_field
function more often to save needless force_allocation
s
2017-02-10 14:34:10 +01:00
Oliver Schneider
12826fb8a3
factor out lvalue field access into its own function
2017-02-10 14:34:10 +01:00
Oliver Schneider
680e649805
get rid of useless calls into eval_lvalue
2017-02-10 14:34:10 +01:00
Oliver Schneider
07e1e7b7e5
move base computation into each projection to allow optimizations and corner cases
2017-02-10 14:34:10 +01:00
Scott Olson
d971a63c4b
Mark more errors as unsupported.
2017-02-10 05:27:02 -08:00
Scott Olson
459f898b91
Reformatting.
2017-02-10 03:28:17 -08:00
Scott Olson
68daab974d
Move relevant code into "traits" module.
2017-02-10 03:23:04 -08:00
Scott Olson
d8d813c4ad
Resolve associated constants.
...
Fixes #130 .
2017-02-10 03:22:59 -08:00
Scott Olson
9e24893879
Rename "vtable" mod to "traits".
2017-02-10 03:07:28 -08:00
Oliver Schneider
333264c956
clarify comment on drop glue
2017-02-10 08:13:18 +01:00
Oliver Schneider
e58f750a49
refactor drop glue
2017-02-09 19:27:07 +01:00
Oliver Schneider
023ec3e395
add some comments for clarification
2017-02-09 19:15:40 +01:00
Oliver Schneider
c06251b0d2
double space
2017-02-09 19:08:24 +01:00
Oliver Schneider
d92085fd0e
properly extract the inner type in a drop impl
2017-02-09 19:08:08 +01:00
Oliver Schneider
06a02187ba
move drop code into its own file
2017-02-09 18:12:59 +01:00
Scott Olson
6e9e7af8e7
Fix comment.
2017-02-09 06:58:20 -08:00
Scott Olson
3b95bf93b1
Merge pull request #132 from oli-obk/master
...
we cannot panic, thus `panicking` always returns false
2017-02-09 15:37:23 +01:00
Scott Olson
14d7501ca4
Merge pull request #128 from oli-obk/align_thyself
...
fix size of dst in size_of_val intrinsic
2017-02-09 15:35:15 +01:00
Oliver Schneider
0f183dc866
we cannot panic, thus panicking
always returns false
2017-02-09 15:07:50 +01:00
Oliver Schneider
e6006c35fb
don't unnecessarily convert Align -> u64 -> Align
2017-02-09 13:00:30 +01:00
Oliver Schneider
0d3cee2db3
fix size of dst in size_of_val intrinsic
2017-02-09 11:15:56 +01:00
Scott Olson
bc5d9b6f8d
Merge pull request #127 from oli-obk/print_panic
...
ignore `print!`, turn `panic!` into a EvalError
2017-02-09 11:14:47 +01:00
Oliver Schneider
250f66562c
ignore print!
, turn panic!
into a EvalError
2017-02-09 10:34:23 +01:00
Scott Olson
2048679eed
Merge pull request #126 from oli-obk/1>-1
...
1 > -1
2017-02-09 09:57:22 +01:00
Oliver Schneider
6aed897c70
1 > -1
2017-02-09 09:43:45 +01:00
Oliver Schneider
8030800b15
use pre-existing abi_align
method instead of magic formula
2017-02-09 08:50:35 +01:00
Oliver Schneider
1844381ad0
compute the offset of dst fields by checking the vtable
2017-02-09 08:38:01 +01:00
Oliver Schneider
4beb774caa
don't mark the zst allocation as static
2017-02-08 17:24:20 +01:00
Oliver Schneider
080d3e4355
properly prevent recursive statics from marking each other
2017-02-08 16:27:28 +01:00
Oliver Schneider
3db6ec3f11
prevent more deallocations of statics
2017-02-08 15:32:49 +01:00