Ralf Jung
b29cb7d551
avoid catching errors
2019-07-03 10:56:25 +02:00
Ralf Jung
eb4128fb42
don't call Stacked Borrows hooks at all when validation is disabled
2019-07-03 10:47:28 +02:00
Ralf Jung
c8450bda4f
support integers that can be cast to pointers in in-bounds offset operation
2019-07-03 10:47:28 +02:00
Ralf Jung
c3da843ca0
we don't need zero-sized freeze-sensitive visiting
2019-07-03 10:47:28 +02:00
Ralf Jung
12b8d4366c
avoid integer overflow in ptr-to-int cast
2019-07-03 10:47:28 +02:00
Ralf Jung
c6e4f760a2
allow dangling ptr-to-int casts; use force_bits for ptr comparison
2019-07-03 10:47:28 +02:00
Ralf Jung
457c823765
only treat integer operations as such
2019-07-03 10:47:28 +02:00
bors
93f5892962
Auto merge of #815 - RalfJung:memory-audit, r=RalfJung
...
don't call Memory::get without checking the pointer first
Also avoid Memory::get if we just need to know align/size.
I audited all uses of `alloc_id`; the rest should be fine (and we can kill a bunch of them once https://github.com/rust-lang/rust/pull/62257 lands).
2019-07-01 20:59:17 +00:00
Ralf Jung
e82693fa23
Merge branch 'master' into rustup
2019-07-01 13:01:28 +02:00
Ralf Jung
7b702b9258
move find_fn (which is not specific to foreign items) out of foreign_items
2019-07-01 00:28:31 +02:00
Ralf Jung
4135441137
don't call Memory::get without checking the pointer first; avoid Memory::get if we just need to know align/size
2019-07-01 00:24:56 +02:00
Ralf Jung
cb6d4f0c9a
test even more size-alignment combinations. found a bug in libstd!
2019-06-30 21:23:48 +02:00
Ralf Jung
709b474859
fix minimal alignment for system allocation functions
2019-06-30 21:10:47 +02:00
Ralf Jung
e960270662
add some tracing to intptrcast
2019-06-30 21:10:47 +02:00
Ralf Jung
b8879f3d8c
move shims (foreign items and intrinsics) into submodule
2019-06-30 15:35:28 +02:00
Ralf Jung
11457a4ad9
fix comparing function pointers with intptrcast
2019-06-30 11:21:31 +02:00
bors
1ec279f290
Auto merge of #801 - RalfJung:num_cpus, r=RalfJung
...
support num_cpus crate and test that
Also make some magic numbers into proper global constants.
2019-06-30 08:42:25 +00:00
Ralf Jung
ba47d73041
Merge branch 'master' into rustup
2019-06-29 16:19:27 +02:00
Ralf Jung
019ad4bab4
move constants to machine.rs
2019-06-29 14:37:41 +02:00
Ralf Jung
c7bf9064f7
comment on STACK_ADDR
2019-06-29 14:34:08 +02:00
Ralf Jung
0fac868685
support num_cpus and test that
2019-06-29 14:34:08 +02:00
Ralf Jung
c1645f6c65
don't compute residue twice
2019-06-29 14:31:54 +02:00
Ralf Jung
9b66527075
more sensible slack
2019-06-29 14:31:54 +02:00
Ralf Jung
c0b44ca98c
tweak inttoptr allocation behavior
...
- Make `align_addr` not offset by `align` for no reason.
- Add some random slack between allocations to give them the chance to not be aligned.
2019-06-29 14:31:54 +02:00
Ralf Jung
aa5a9bc152
some module comments
2019-06-29 14:15:05 +02:00
Ralf Jung
857305ff67
Merge remote-tracking branch 'ralf/machine' into rustup
2019-06-29 14:04:50 +02:00
Ralf Jung
67d3779b0c
move most of the stuff from lib.rs into machine.rs, and initialization + main loop into eval.rs
2019-06-29 13:48:59 +02:00
Ralf Jung
6886864862
ptr-to-int alignment sanity check
2019-06-28 09:12:11 +02:00
Christian Poveda
373a4ee1e9
Remove default derive for MemoryExtra
2019-06-26 13:55:56 -05:00
Christian Poveda
413a351552
Initialize MemoryExtra with StdRng
2019-06-26 13:09:50 -05:00
Christian Poveda
7fbf8e53a2
Fix alignment of base addresses
2019-06-26 09:08:28 -05:00
Christian Poveda
792d665a1f
Fix merge conflicts
2019-06-25 00:57:33 -05:00
Christian Poveda
84cfbb01b7
Reorganize MemoryExtra and AllocExtra structures
2019-06-24 17:18:25 -05:00
Christian Poveda
2861ceb2fa
Rename new fields and move rng to MemoryExtra
2019-06-24 10:03:16 -05:00
Ralf Jung
7e7b5d42ba
Apply suggestions from code review
...
Co-Authored-By: Oliver Scherer <github35764891676564198441@oli-obk.de>
2019-06-24 14:50:27 +02:00
Ralf Jung
69e8318b60
de-obfuscate ptr comparison a bit
2019-06-23 20:30:33 +02:00
Ralf Jung
4dc188a60e
adjust for refactored memory pointer checks
2019-06-23 20:19:26 +02:00
Christian Poveda
dd732e5862
Force intptrcast for binary operations
2019-06-22 09:25:16 -05:00
Ralf Jung
72c269eebe
fix compilation with latest rustc
2019-06-22 11:05:12 +02:00
Christian Poveda
fd3a291db4
Implement intptrcast methods
2019-06-21 14:55:37 -05:00
Oliver Scherer
5edb9c915f
Merge branch 'master' into master
2019-06-21 12:37:13 +02:00
Christian Poveda
17dbecfa32
Merge branch 'master' into master
2019-06-20 21:38:10 -05:00
Christian Poveda
4211d7e1a0
Update tag methods to match Machine changes
2019-06-20 16:58:57 -05:00
Ralf Jung
86868b6946
Merge branch 'master' into rustup
2019-06-20 21:37:12 +02:00
Ralf Jung
6f5529a05b
Merge branch 'master' into patch-1
2019-06-20 20:47:27 +02:00
Ralf Jung
03eff5981b
use org.rust-lang.miri folder on macOS
2019-06-20 19:45:39 +02:00
Ralf Jung
04fa38dd1b
allow some inequality comparisons between pointers and integers
2019-06-20 16:38:55 +02:00
Ralf Jung
7ce36226e6
implement and test unchecked_{add,sub,mul} intrinsics
2019-06-16 11:10:33 +02:00
Ralf Jung
fc90124489
test exact_div UB detection
2019-06-16 11:10:33 +02:00
Ralf Jung
32a2cf046f
Merge branch 'master' into foreign_math_functions
2019-06-16 10:11:32 +02:00
soc
a561f949ad
Fix project dirs path
...
ProjectDirs::from("miri", "miri", "miri")
would get you `miri\miri` on Windows and `miri.miri.miri` on macOS.
I'm assuming here that your intention was to have only a `miri` directory on every OS.
2019-06-15 17:03:16 +02:00
Lzu Tao
fd0dccd4b1
Fix wrong lifetime of TyCtxt
...
Rustup rust-lang/rust#61817
2019-06-15 02:34:11 +07:00
Ralf Jung
34b0922cec
fix running a Miri that was built in bootstrap
2019-06-14 12:09:43 +02:00
Ralf Jung
ac2f6cbcde
change sysroot check to print the output in case of an error
2019-06-14 11:16:39 +02:00
Oliver Scherer
4db0eea010
Fix indentation
2019-06-14 10:44:08 +02:00
Kenny Goodin
46b6a3fb7f
Add more missing math functions
...
Add missing functions for atan2, cosh, sinh, and tan.
Also add f32 calls and tests for cbrt and hypot.
2019-06-13 22:28:22 -04:00
Ralf Jung
ad0c941547
rustup for lifetime refactorings
2019-06-13 09:18:03 +02:00
Kenny Goodin
535914e3dc
Implement cbrt and hypot function calls
...
Test cases are added to `tests/run-pass/intrinsics-math.rs`
2019-06-12 15:44:30 -04:00
Ralf Jung
a37953752d
use apfloat's FMA primitive
2019-06-11 19:41:43 +02:00
Ralf Jung
5e07ac335f
implement min and max floating point intrinsics
2019-06-11 19:41:43 +02:00
Ralf Jung
6eab94a459
fix from to/from f32/f64 changes
2019-06-11 19:41:43 +02:00
Ralf Jung
81debbd652
Merge branch 'master' into sysroot
2019-06-11 09:48:05 +02:00
Ralf Jung
446478cce2
fix for rustc rename mir -> body
2019-06-10 13:01:55 +02:00
Ralf Jung
0a9f9e0a0b
factor out common code to determine miri binary
2019-06-09 19:47:09 +02:00
Ralf Jung
5b91ecc066
fix comments
2019-06-09 17:12:41 +02:00
Ralf Jung
b0b082d4d8
do not handle MIRI_SYSROOT in the driver at all, rely fully on the --sysroot flag
2019-06-09 17:10:04 +02:00
Ralf Jung
244011a47f
don't have both MIRI_SYSROOT and --sysroot
2019-06-09 15:43:22 +02:00
Ralf Jung
619f296463
explain why we always set a sysroot; make sure we error if both MIRI_SYSROOT and --sysroot are set
2019-06-09 14:31:05 +02:00
Ralf Jung
05b7e61977
remove outdated sysroot management
2019-06-09 14:10:42 +02:00
Ralf Jung
09f30cabf0
cargo miri: make sure we see the same sysroot for rustc and miri
2019-06-09 13:53:04 +02:00
Ralf Jung
d6bcfc58e3
rustup for EvalResult rename
2019-06-08 22:14:47 +02:00
Dylan MacKenzie
1ceb81b345
Use in-core implementation of type_name
.
...
We bump `rust-version` to pick up the new impl from
https://github.com/rust-lang/rust/pull/61498 and add a test.
2019-06-05 22:36:53 -07:00
Ralf Jung
03b74c12c8
Merge branch 'master' into debug
2019-06-03 11:02:17 +02:00
Ralf Jung
0c704151f7
use new rustc infrastructure to tag the base pointer of static allocations
2019-06-02 22:16:02 +02:00
Ralf Jung
96444c11ee
remove too expensive debug assertion
2019-05-31 16:34:22 +02:00
Ralf Jung
e4cee77121
fix for rustc changes
2019-05-29 09:30:36 +02:00
Ralf Jung
7a7b853120
adjust for rustc changes
2019-05-28 22:46:56 +02:00
Ralf Jung
543e57990c
Merge branch 'master' into miri-build
2019-05-27 23:26:22 +02:00
Ralf Jung
8b219a1329
fix for latest rustc
2019-05-27 18:50:32 +02:00
Ralf Jung
cf96396fcc
make miri script smarter: auto-determine MIRI_SYSROOT, handle MIRI_TEST_TARGET
2019-05-27 14:41:44 +02:00
Ralf Jung
21fb14dba1
avoid printing the tag twice
2019-05-24 13:09:29 +02:00
Ralf Jung
5569fffe7d
avoid having both Debug and Display for a type and using the wrong one
2019-05-24 10:09:23 +02:00
Ralf Jung
1d92791965
use prettier printing
2019-05-23 15:54:50 +02:00
Ralf Jung
3e33e54b5b
hopefully improve error message a bit
2019-05-23 11:03:08 +02:00
Ralf Jung
5c54a58c06
typo
2019-05-19 14:04:59 +02:00
Oliver Scherer
3fde45233b
Prefer drain
over manual implementation of drain
2019-05-19 12:40:59 +02:00
Ralf Jung
6b4164e0df
nits
2019-05-17 19:42:35 +02:00
Ralf Jung
9c161b80d0
reading does not remove Unique, it just invalidates them
2019-05-17 15:29:02 +02:00
Ralf Jung
4b9e1544c2
give up on two-phase borrows
2019-05-17 15:02:31 +02:00
Ralf Jung
1447242bf9
refactor to simplify
2019-05-15 18:12:58 +02:00
Ralf Jung
f676f2265b
make writes act stack-like
2019-05-15 18:12:58 +02:00
Ralf Jung
9b3f07b161
make printing return place less verbose
2019-05-15 17:23:33 +02:00
Ralf Jung
bc0c76d861
fix for latest rustc
2019-05-13 22:07:24 +02:00
Ralf Jung
ada5edbf96
RUST_LOG got renamed to RUSTC_LOG
2019-05-13 14:10:52 +02:00
Ralf Jung
be47fae173
build with latest version
2019-05-13 11:37:54 +02:00
Ralf Jung
a9e66928d6
Update src/stacked_borrows.rs
...
Co-Authored-By: bjorn3 <bjorn3@users.noreply.github.com>
2019-05-11 12:07:25 +02:00
Ralf Jung
8530080d03
rename per-location part of reborowing to 'granting'
2019-05-11 12:06:59 +02:00
Ralf Jung
0f96676f43
switch back to upstream xargo
2019-05-10 08:28:02 +02:00
Ralf Jung
d05159f3a9
switch to my xargo fork, because that one works with current libstd
2019-05-01 20:37:08 +02:00
bjorn3
17643af868
Apply suggestions from code review
...
Co-Authored-By: RalfJung <post@ralfj.de>
2019-04-30 15:31:53 +02:00
Ralf Jung
59985157d3
SharedReadOnly reborrows are never weak
2019-04-30 13:55:04 +02:00
Bastien Orivel
69a252c1b3
Update cargo_metadata to 0.7
2019-04-27 23:31:48 +02:00
Ralf Jung
53f59431a5
fix HeapFree return value
2019-04-27 18:21:10 +02:00
Ralf Jung
aaa8ee743b
unify code paths
2019-04-22 13:20:51 +02:00
Ralf Jung
42b70f17d2
Merge branch 'master' into exit
2019-04-22 11:35:36 +02:00
Ralf Jung
131548a748
gen_random: handle size 0 and writing to mem
2019-04-22 11:08:23 +02:00
Ralf Jung
703b7f8a7e
implement SecRandomCopyBytes for macOS RNG
2019-04-22 11:08:23 +02:00
Ralf Jung
e4970fe6ff
Windows: implement heap functions
2019-04-21 16:48:02 +02:00
Ralf Jung
6a6c0cd5f0
implement ExitProcess for Windows
2019-04-21 13:25:24 +02:00
Ralf Jung
0694435650
implement exit
...
implement exit code via new error kind
2019-04-21 12:36:17 +02:00
Ralf Jung
2481d6091a
warn when cargo miri setup does not do anything
2019-04-19 19:27:19 +02:00
Ralf Jung
0a5e541272
two-phase-borrow comment
2019-04-19 08:36:05 +02:00
Ralf Jung
22b57f6435
Merge branch 'master' into stacked-borrows-2
2019-04-18 19:28:25 +02:00
Ralf Jung
36e99a1bda
remove some unneeded 'extern crate'
2019-04-18 16:16:32 +02:00
Tim Diekmann
9ecc07c9b2
Add handling for nullptr
and size == 0
2019-04-18 15:20:32 +02:00
Tim Diekmann
afb64232db
Fix for latest upstream update
2019-04-18 12:39:18 +02:00
Tim Diekmann
af3c4c0c23
Merge branch 'master' into realloc
2019-04-18 12:22:58 +02:00
Tim Diekmann
0e6deee76e
Add realloc
2019-04-18 01:20:21 +02:00
Ralf Jung
39ecd05c46
embrace find_map and some whitespace changes
2019-04-17 16:25:38 +02:00
Oliver Scherer
abe8959339
Apply suggestions from code review
...
Co-Authored-By: RalfJung <post@ralfj.de>
2019-04-17 16:22:33 +02:00
Ralf Jung
46d5fd8487
barriers are dead, long live protectors -- this enables overlapping two-phase borrows!
2019-04-17 16:02:57 +02:00
Ralf Jung
14e701f7d8
abstract mapping over all the stacks in some memory range
2019-04-17 16:02:57 +02:00
Ralf Jung
7b7fef1b53
let the permission of a new pointer depend on the type only
2019-04-17 16:02:57 +02:00
Ralf Jung
924624f810
some failures are impossible
2019-04-17 16:02:57 +02:00
Ralf Jung
a6d377ca0b
more comments
2019-04-17 16:02:57 +02:00
Ralf Jung
966d638760
make run-pass tests pass. tweak how we remove barriers.
2019-04-17 16:02:57 +02:00
Ralf Jung
3f0a2a2941
rewrite Stacked Borrows Core. this passes stacked-borrows.rs!
2019-04-17 16:02:57 +02:00
Ralf Jung
a50512f751
fix RtlGenRandom argument size
2019-04-16 21:27:27 +02:00
Ralf Jung
6fdc75024b
Merge branch 'master' into rand
2019-04-16 20:55:58 +02:00
Ralf Jung
ba567d19f0
stub out pthread_atfork to that we support thread_rng()
2019-04-16 19:53:10 +02:00
Ralf Jung
9c8ad5f9e1
fix 0-sized getrandom
2019-04-16 19:26:02 +02:00
Ralf Jung
378d9d4172
be pragmatic about ptr-int comparisons, for now
2019-04-16 17:47:37 +02:00
Ralf Jung
5f29a53992
rustup
2019-04-12 12:32:26 +02:00
Ralf Jung
8de4f34a7f
Merge remote-tracking branch 'origin/master'
2019-04-11 22:09:09 +02:00
Ralf Jung
48b22b80c5
Fix typo
...
Co-Authored-By: Aaron1011 <aa1ronham@gmail.com>
2019-04-09 23:33:13 -04:00
Oliver Scherer
2eb2c8dd57
Merge branch 'master' into feature/random
2019-04-09 21:58:15 +02:00
Aaron Hill
0837d630f7
Some final cleanup
2019-04-09 15:49:34 -04:00
Aaron Hill
c6e0d09714
Retrieve SYS_getrandom from libc using const-eval
2019-04-09 11:04:30 -04:00
Aaron Hill
22044c878d
Improve deterministic mode error message
2019-04-09 10:16:32 -04:00
Aaron Hill
6b4c5b81da
Fix 'RtlGenRandom' argument slots
2019-04-08 23:18:10 -04:00
Aaron Hill
5f997645bc
Interpret system call numbers relative to target architecture
2019-04-08 22:37:58 -04:00
Aaron Hill
6d3e93c281
Refactor random number generation
2019-04-08 22:22:41 -04:00
Aaron Hill
6b0440e26d
Cleanup argument parsing
2019-04-08 21:40:52 -04:00
Ralf Jung
06af617b92
fix dumping uninitialized locals
2019-04-08 13:40:11 +02:00
bjorn3
32d01263a9
Update src/fn_call.rs
...
Co-Authored-By: TimDiekmann <21277928+TimDiekmann@users.noreply.github.com>
2019-04-08 10:44:02 +02:00
Aaron Hill
808b149671
Use raw syscall numbers
2019-04-07 20:09:53 -04:00
Aaron Hill
dddeda7f7d
Use getrandom() syscall number from libc
2019-04-07 19:57:14 -04:00
Aaron Hill
73239573c9
Implement non-deterministc mode
...
Part of #653
This allows us to properly implement getrandom(),
which unlocks the default HashMap type (e.g. HashMap<K, V>)
with RandomState)
This commit adds a new '-Zmiri-seed=<seed>' option. When present,
this option takes a 64-bit hex value, which is used as the seed
to an internal PRNG. This PRNG is used to implement the 'getrandom()'
syscall.
When '-Zmiri-seed' is not passed, 'getrandom()' will be disabled.
2019-04-07 19:26:20 -04:00
Tim Diekmann
a59e155206
Tidy up calloc code
2019-04-08 01:12:44 +02:00
Tim Diekmann
d1d05c8b41
Fix tagging order
2019-04-07 21:09:21 +02:00