Commit Graph

2826 Commits

Author SHA1 Message Date
bors
28717a0e90 Auto merge of #1776 - hyd-dev:1170, r=RalfJung
Implement calls to exported symbols (#1170)

Closes #1170.
2021-06-03 15:59:56 +00:00
Ralf Jung
57e4f1d285
fix typo 2021-06-03 17:47:34 +02:00
hyd-dev
647ee17b40
original_crate_name -> crate_name 2021-06-03 10:22:31 +08:00
Aaron Hill
73700bc01c
Rustup for const_err changes 2021-05-31 10:50:25 -05:00
hyd-dev
e026ad584d
Use unwrap_or_else() 2021-05-31 11:57:15 +08:00
hyd-dev
b054a19f94
We don't need to check SymbolExportLevel 2021-05-31 11:57:14 +08:00
hyd-dev
382295cd47
Move check_abi() into EvalContextExt 2021-05-31 11:15:31 +08:00
hyd-dev
41f33a64f8
Implement calls to exported symbols 2021-05-31 11:15:29 +08:00
hyd-dev
71f4140550
Add -Zmiri-disable-abi-check 2021-05-31 11:14:23 +08:00
Ralf Jung
c89a5d62ee
add comment to debug impl 2021-05-30 17:13:49 +02:00
Aaron Hill
0317e5bfd6
Address more review comments 2021-05-30 10:04:57 -05:00
Aaron Hill
20f1b2a969
Run fmt 2021-05-29 17:16:12 -05:00
Aaron Hill
16f469280e
Address review comments 2021-05-29 17:10:54 -05:00
Aaron Hill
2166eaed90
Use active thread id 2021-05-29 17:01:54 -05:00
Aaron Hill
7e9da8d30e
Add measureme integration for profiling the interpreted program
This PR uses the `measureme` crate to profile the call stack of the
program being interpreted by Miri. This is accomplished by starting a
measureme 'event' when we enter a function call, and ending the event
when we exit the call. The `measureme` tooling can be used to produce a
call stack from the generated profile data.

Limitations:
* We currently record every single entry/exit. This might generate very
  large profile outputs for programs with a large number of function
  calls. In follow-up work, we might want to explore sampling (e.g. only
  recording every N function calls).
* This does not integrate very well with Miri's concurrency support.
  Each event we record starts when we push a frame, and ends when we pop
  a frame. As a result, switching between virtual threads will cause
  events from different threads to be interleaved. Additionally, the
  recorded for a particular frame will include all of the work Miri does
  before that frame completes, including executing another thread.

The `measureme` integration is off by default, and must be enabled via
`-Zmiri-measureme=<output_name>`
2021-05-29 17:01:52 -05:00
hyd-dev
9b2d42587f
unwind is no longer Option<BasicBlock> 2021-05-28 22:08:51 +08:00
Ralf Jung
c60efa0c69 allocate backtrace strings mutably 2021-05-23 18:04:13 +02:00
Ralf Jung
9e0e9386a6 better approach to skip ZST reborrows 2021-05-23 18:04:13 +02:00
Ralf Jung
e09c571eec avoid some borrow_mut calls in data_race 2021-05-23 18:04:13 +02:00
Ralf Jung
543777acbd avoid unnecessary RefCell calls in Stacked Borrows 2021-05-23 18:04:13 +02:00
Ralf Jung
d77d95d0a8 rustup 2021-05-23 12:39:27 +02:00
Ralf Jung
c73f8b1097 fmt 2021-05-22 14:55:33 +02:00
Ralf Jung
1bbd6e609c get rid of Rc in data_race 2021-05-22 14:47:14 +02:00
Ralf Jung
ca7283d746 get rid of Rc in Stacked Borrows 2021-05-22 13:24:08 +02:00
Ralf Jung
c151af5cf5 rustup 2021-05-20 13:32:18 +02:00
Ralf Jung
aba96b82b4 fix write_os_str_to_wide_str 2021-05-19 16:34:14 +02:00
Ralf Jung
e4a27150cb fmt 2021-05-19 16:10:28 +02:00
Ralf Jung
801a1744cd update for Memory API changes 2021-05-19 15:27:58 +02:00
Ralf Jung
1bfd9ac56c rustup 2021-05-18 00:11:05 +02:00
Ralf Jung
4f171d7fe3 stop relying on c_str/wide_str helpers in rustc 2021-05-17 14:31:59 +02:00
Ralf Jung
78f74c69e3 fix rustfmt fallout 2021-05-17 10:57:21 +02:00
Ralf Jung
cf3376e541 rustup 2021-05-17 09:34:39 +02:00
Ralf Jung
d6fdfaa047 hand-held formatting for remaining files 2021-05-16 11:51:39 +02:00
Ralf Jung
4e231bab5e format much of Miri 2021-05-16 11:48:28 +02:00
Andy Wang
0d2278c6c6
Prefer remapped filename in backtrace to match rustc behaviour 2021-05-12 15:49:33 +01:00
bors
bdce1ddf88 Auto merge of #1785 - Smittyvb:fast-math-ub, r=RalfJung
Throw UB if f*_fast intrinsic called with non-finite value

Calling these intrinsics with non-finite values is undefined behaviour, since they result in `f*` intrinsics in LLVM with the `fast` flag, and `fast` math on non-finite values results in `poison` values. (technically LLVM only considers it UB upon _using_ the value, but that shouldn't make much of a difference)
2021-05-03 17:32:50 +00:00
Smitty
e0e59f6020 Simplify finiteness checking 2021-05-03 10:08:42 -04:00
Ralf Jung
c3ae8a6f90 adjust for different 'yield' hint on aarch64 2021-05-03 11:25:05 +02:00
Ralf Jung
aac6e2ad3e fix checking os_family 2021-05-03 09:57:13 +02:00
Smitty
e591b83185 UB if f*_fast intrinsic called with nonfinite value 2021-05-02 12:25:00 -04:00
hyd-dev
b30c5fef5b
Rustup for rust-lang/rust#84401 2021-04-30 19:35:59 +08:00
bors
e6ffc689aa Auto merge of #1772 - RalfJung:less-timeout-checking, r=RalfJung
only check timeouts when a thread yields

Currently, we check for expired timeouts after each step of execution. That seems excessive. This changes the scheduler to only check for timeouts when the active thread cannot continue running any more.

`@vakaras` does this sound right? `pthread_cond_timedwait` anyway already yields, of course, since it blocks on getting the signal (or the timeout).
2021-04-11 14:59:27 +00:00
Vytautas Astrauskas
50f68dce21 Reference issue 1763 in the comment. 2021-04-11 13:39:03 +02:00
Ralf Jung
bda328e26a only check timeouts when a thread yields 2021-04-11 13:32:47 +02:00
Vytautas Astrauskas
72ca2a7a85 Attempt to fix #1763 by asking the scheduler to retry choosing an operation. 2021-04-10 20:23:32 +02:00
hyd-dev
3dff1d4fcd
Don't use MIRI_DEFAULT_ARGS to compile host crates 2021-04-09 00:57:59 +08:00
Ralf Jung
31bd77c7d8 bump miri dependencies 2021-04-04 11:48:20 +02:00
Ralf Jung
20e31dbdad fix newer getrandom on Windows 2021-04-04 11:41:04 +02:00
hyd-dev
4eed610723
Remove #![feature(or_patterns)] 2021-03-23 16:58:00 +08:00
bstrie
4f899ce9ac Replace deprecated collections::Bound 2021-03-17 18:34:44 -04:00
hyd-dev
7ec919daa4
Remove the macro and expand it manually 2021-03-17 22:27:57 +08:00
hyd-dev
3ee865461f
Revert "Don't duplicate check_abi()"
This reverts commit 1c7d7471da.
2021-03-17 21:51:07 +08:00
hyd-dev
bbc348539b
Unsupported foreign non-"C"/"system"-ABI function calls are not UB 2021-03-17 21:20:04 +08:00
hyd-dev
1c7d7471da
Don't duplicate check_abi() 2021-03-17 00:40:53 +08:00
bors
0788188c7b Auto merge of #1743 - RalfJung:callee-checks, r=RalfJung
Check callee ABI when Miri calls closures

Fixes https://github.com/rust-lang/miri/issues/1741
2021-03-14 18:05:18 +00:00
Ralf Jung
15465a5881 don't ICE when we unwind despite panic=abort 2021-03-14 17:10:45 +01:00
Ralf Jung
d1dec9cd23 don't ICE when callee has the wrong number of arguments 2021-03-14 15:38:22 +01:00
Ralf Jung
893843fd45 when Miri calls a function ptr, make sure it has the right ABI 2021-03-14 15:30:37 +01:00
Ralf Jung
98f28ac9c8 rustup 2021-03-11 09:07:05 +01:00
Mara Bos
5bd5ea21ea Remove unwrap_none as it won't be stabilized.
This upgrades to the latest rustc to be able to use try_insert()
instead.
2021-03-08 16:59:20 +01:00
Smittyvb
8d43d727f4
Check arg count
Co-authored-by: Ralf Jung <post@ralfj.de>
2021-03-05 07:16:50 -05:00
Smitty
26e97ec54f Support breakpoint intrinsic 2021-03-04 07:48:28 -05:00
Ralf Jung
9f3dbad5d0 rename atomic_op_min_max -> atomic_op 2021-03-02 19:54:45 +01:00
bors
2670839e1a Auto merge of #1721 - henryboisdequin:add-atomic-min-and-max, r=oli-obk
Add atomic min and max

Closes #1718
Previous attempt: #1653

TODO:

- [x] Merge `atomic_op` and `atomic_min_max` functions
- [x] Fix CI

**Note:** this PR also removes arbitrary trailing whitespace and generally formats the affected files
2021-03-02 14:52:32 +00:00
Henry Boisdequin
f8440d6c99 Add in atomic_{min,max}_x intrinsics
Co-authored-by: Greg Bowyer <gbowyer@fastmail.co.uk>
2021-03-02 20:17:05 +05:30
Henry Boisdequin
7d1531f3c1 fmt data_race.rs and intrinsics.rs 2021-03-02 18:06:12 +05:30
Ralf Jung
48f7c8e2e6 fix reborrowing of tagged ZST references 2021-02-27 20:10:50 +01:00
Tomasz Miąsko
0eb341417c rustup to e7c23ab933 2021-02-20 00:00:00 +00:00
Ralf Jung
2672baafe1 rustup 2021-02-18 10:34:32 +01:00
Mara Bos
c5bb29141e Remove unnecessary format!() in panic!(). 2021-02-02 21:40:30 +01:00
Ralf Jung
052cd3bff7 rustup; remove some no-longer-needed Windows shims 2021-01-31 14:23:49 +01:00
bors
b38dc837f2 Auto merge of #1670 - unseddd:abi, r=RalfJung
Add ABI check for shims

Resolves #1631
2021-01-29 19:36:30 +00:00
Yuki Okushi
53612ece7c Rustup for rust-lang/rust#79951 2021-01-28 22:31:22 +09:00
Nym Seddon
de4eea9d49
Add ABI check for shims 2021-01-27 22:32:25 +00:00
Thom Chiovoloni
d310620c11 Allow configuring the failure rate with -Zmiri-compare-exchange-weak-failure-rate 2021-01-26 00:13:54 -08:00
Thom Chiovoloni
d4b592ed17 Fail 80% of the time on weak cmpxchg, not 50% 2021-01-26 00:13:54 -08:00
Thom Chiovoloni
c678bd722e Add random failures to compare_exchange_weak 2021-01-26 00:13:54 -08:00
Ralf Jung
13dd513254 adjust Windows shims for stdlib changes (Windows XP removal) 2021-01-25 10:43:48 +01:00
Ralf Jung
7d8f8c405f macos: support aarch64 link names 2021-01-23 18:14:57 +01:00
Ralf Jung
848be1bf82 implement aarch64 hint 'intrinsic' 2021-01-23 18:11:01 +01:00
Corey Farwell
2aedbf0993 Add shim for libc::sysconf(libc::_SC_NPROCESSORS_CONF) 2021-01-22 09:16:27 -05:00
bors
903bfd82bf Auto merge of #1681 - RalfJung:rustup, r=RalfJung
rustup; remove some intrinsics that are gone or moved to rustc
2021-01-18 12:02:12 +00:00
Ralf Jung
3d01ba11c0 rustup; remove some intrinsics that are gone or moved to rustc 2021-01-18 12:55:30 +01:00
hyd-dev
9949d9e417
Remove #![feature(const_generics)] and #![allow(incomplete_features)] 2021-01-17 23:28:20 +08:00
Ralf Jung
4a035103dc rustup; make tests pass again 2021-01-15 16:41:14 +01:00
Ralf Jung
8e15f3221e rustup 2021-01-11 12:35:13 +01:00
Ralf Jung
65f5c27d61 remove intrinsic that is now implemented in the rustc side 2020-12-22 12:47:59 +01:00
JCTyblaidd
c13aabcb45 Tidy new_allocation 2020-12-13 11:14:41 +00:00
JCTyblaidd
e73579632b Rework to work with machine hook. 2020-12-13 11:04:58 +00:00
JCTyblaidd
81c4eb7d74 Update src/data_race.rs
Co-authored-by: Ralf Jung <post@ralfj.de>
2020-12-13 11:04:58 +00:00
JCTyBlaidd
aaf8ca4c77 Fix review changes 2020-12-13 11:04:58 +00:00
JCTyBlaidd
296ba8b1c8 Fix bug with reporting wrong thread for races with reads & add thread ids to data-race tests 2020-12-13 11:04:58 +00:00
JCTyblaidd
c4ccd0b6a1 Fix nits
Co-authored-by: bjorn3 <bjorn3@users.noreply.github.com>
2020-12-13 11:04:58 +00:00
JCTyBlaidd
1ded6d328a Remove old FIXME 2020-12-13 11:04:58 +00:00
JCTyBlaidd
c45b1b16be More tests, fix issue 1643 and detect races with allocation. 2020-12-13 11:04:58 +00:00
Ralf Jung
7bbd6bca77 rustup 2020-12-10 19:53:45 +01:00
JCTyblaidd
6db821537f
Fix caps
Co-authored-by: Ralf Jung <post@ralfj.de>
2020-12-06 17:59:49 +00:00
JCTyBlaidd
4cf614ef33 Update release sequence handling to C++20 semantics. 2020-12-06 16:58:32 +00:00
Ralf Jung
6145709bfc remove miri-rustc-tests 2020-11-29 21:00:50 +01:00
bors
d473242ecd Auto merge of #1617 - JCTyblaidd:data_race_detector, r=RalfJung
Add simple data-race detector

Partially fixes data-race detection, see #1372, based on Dynamic Race Detection for C++11

- This does not explore weak memory behaviour, only exploring one sequentially consistent ordering.
- Data-race detection is only enabled after the first thread is created, so should have minimal overhead for non-concurrent execution.
- ~~Does not attempt to re-use thread id's so creating and joining threads lots of time in an execution will result in the vector clocks growing in size and slowing down program execution~~ It does now
2020-11-29 18:44:28 +00:00
Ralf Jung
cbb695f782
fix some typos 2020-11-29 19:43:44 +01:00
JCTyBlaidd
6c5722933e Fix typos - looked into the papers handling of timestamps, after looking into it again, it seems the paper only increments the timestamp after release operations, so changed to approximation of that implementation. 2020-11-28 17:17:07 +00:00
JCTyBlaidd
55fc552d99 Apply review changes, incrementing the clocks twice is an unnecessary hold-over from earlier versions so fixed. 2020-11-27 19:26:06 +00:00
JCTyBlaidd
3268f56a97 Fix review changes 2020-11-22 17:28:12 +00:00
Ralf Jung
697f6e36bd rustup 2020-11-20 14:07:52 +01:00
Ralf Jung
517728bf97 avoid fallback logic (and we do not need the flag value currently anyway) 2020-11-19 09:36:33 +01:00
Mara Bos
cdb7adb4b3 Make weak syscalls in std work.
std now looks up `getrandom` and `statx` with `dlsym` before attempting
to use `syscall(SYS_.., ..)`.

It also now passes all arguments as a machine-sized word, instead of
their original types.
2020-11-19 09:34:46 +01:00
JCTyBlaidd
0b0264fc82 Run rustfmt on vector_clock.rs and data_race.rs 2020-11-15 20:19:34 +00:00
JCTyBlaidd
a3b7839bbd Add comment regarding seq-cst ordering & add test for disabling the data-race detector. 2020-11-15 20:12:58 +00:00
JCTyBlaidd
69fb6413dd Tidy up comments and function layout, should fix most of the review notes. 2020-11-15 18:30:26 +00:00
Ralf Jung
43673d9a87 rustup 2020-11-11 10:29:10 +01:00
JCTyBlaidd
2a40d9b7a0 More aggressive vector index re-use, and added some tests. 2020-11-06 17:29:54 +00:00
Ralf Jung
f31f00d5af rustup 2020-11-05 17:09:44 +01:00
JCTyBlaidd
c70bbea257 Move to use of thread termination hook for vector re-use,
convert validate atomic op to use shared reference and get_raw
 instead of get_raw_mut so it can be used for validate_atomic_load as well
2020-11-05 14:18:28 +00:00
JCTyBlaidd
9cb6b8da3f Split out vector_clock to separate file, general tidy up of some of the
code & add support for vector index re-use for multiple threads
 after termination.
2020-11-05 03:54:39 +00:00
JCTyBlaidd
95c99b2044 Detect races between atomic and non-atomic accesses of a variable,
previously only data races between two non-atomic accesses were
 detected.
2020-11-04 21:35:48 +00:00
JCTyBlaidd
fe2e857cc3 Add newlines at end of file + use replace.
add dangling thread variant of one of the benchmarks
2020-11-02 13:08:09 +00:00
JCTyBlaidd
cae4302003 Fix & rebase 2020-11-02 03:06:30 +00:00
JCTyBlaidd
ed32b260f9 Add tests, and fix bug in atomic RMW relaxed stores 2020-11-02 02:57:06 +00:00
JCTyBlaidd
89814f1b3f Initial data-race detector,
passes all current tests but additional tests are required
2020-11-02 02:57:05 +00:00
Ralf Jung
194451345d add an option to track raw pointer tags in Stacked Borrows 2020-10-28 12:23:35 +01:00
Ralf Jung
39f7b35327 Stacked Borrows: print affected memory location on errors 2020-10-28 12:04:39 +01:00
Ralf Jung
086e9c49a9 pointer tag tracking: also show when tag is being created 2020-10-27 14:22:29 +01:00
Camelid
05e9ae042c Make miri_default_args() a constant 2020-10-24 12:46:38 -07:00
est31
1ae157bc9e Replace target.target with target
Rustc removed the target wrapper and exposed the target directly.

Result of running:

find . -type f -exec sed -i -e 's/target\.target\([)\.,;]\)/target\1/g' {} \;

Plus one manual edit of the rust-version file
2020-10-15 21:18:23 +02:00
bors
73d5c42076 Auto merge of #1580 - Aaron1011:feature/backtrace-fn-ptr, r=RalfJung
Add an `fn_ptr` field to `MiriFrame`

The `backtrace-rs` crate can use this to implement
`Frame::symbol_address`, which is used to skip frames
above the call to `Backtrace::capture` on the stack.

The function pointer will not be useable for comparison purposes if the
function is generic, as CTFE creates a new function pointer for each
cast of a (monomorphized) generic function. However, this already
affects code running under Miri, and isn't a problem for `backtrace-rs`
(which only casts a non-generic function).

I've added logic to allow `MiriFrame` to have either 4 or 5 fields - if
a 5th field is present, we write the function pointer to it.
2020-10-11 22:34:57 +00:00
Aaron Hill
c889eba4b2
Add comment about deprecation 2020-10-11 17:57:49 -04:00
Aaron Hill
0893ea1973
Rustup
This gets Miri building again after the `run_compiler` changes
2020-10-11 17:31:52 -04:00
Aaron Hill
6a6767fa2a
Apply suggestions from code review
Co-authored-by: Ralf Jung <post@ralfj.de>
2020-10-11 13:40:00 -04:00
Aaron Hill
be51e6bd07
Add an fn_ptr field to MiriFrame
The `backtrace-rs` crate can use this to implement
`Frame::symbol_address`, which is used to skip frames
above the call to `Backtrace::capture` on the stack.

The function pointer will not be useable for comparison purposes if the
function is generic, as CTFE creates a new function pointer for each
cast of a (monomorphized) generic function. However, this already
affects code running under Miri, and isn't a problem for `backtrace-rs`
(which only casts a non-generic function).

I've added logic to allow `MiriFrame` to have either 4 or 5 fields - if
a 5th field is present, we write the function pointer to it.
2020-10-10 13:07:57 -04:00
Aaron Hill
8e8828259a
Use macro callsite spans in backtrace
This mirrors what we do in the debuginfo used for runtime backtraces.
2020-10-05 17:29:55 -04:00
Ralf Jung
3aaab3dd98
more punctuation 2020-10-04 23:07:19 +02:00
Aaron Hill
c1c82c2503
Properly capitalize PathConversion 2020-10-04 16:28:09 -04:00
Aaron Hill
9e6320f101
Move convert_path_separator to trait and use it in readlink 2020-10-04 12:34:13 -04:00
Aaron Hill
462f58298a
Make helper functions freestanding 2020-10-04 12:06:51 -04:00
Aaron Hill
8b89c7e1da
Use panicking coversions instead of as 2020-10-04 12:06:51 -04:00
Aaron Hill
186d59a3ec
Move some helper functions around 2020-10-04 12:06:51 -04:00
Aaron Hill
78bc89b4fc
Implement readlink
Due to the truncating behavior of `readlink`, I was not able to
directly use any of the existing C-cstring helper functions.
2020-10-04 12:06:51 -04:00
Ralf Jung
2b2a3a0cc1 check that all syscall arguments are scalars 2020-10-03 16:01:53 +02:00
Ralf Jung
b350c80a31 add backtics back in isolation error message 2020-10-03 15:25:30 +02:00
Mara Bos
68776d2921
Add FIXME about type of addr in futex implementation.
Co-authored-by: Ralf Jung <post@ralfj.de>
2020-10-03 14:32:30 +02:00
Mara Bos
c268ee2bcb
Add note about use of force_ptr in futex implementation.
Co-authored-by: Ralf Jung <post@ralfj.de>
2020-10-03 14:21:37 +02:00
Mara Bos
dfcb46a4e0 Update syscall FIXME to include note about 'wrong' types. 2020-10-03 13:39:16 +02:00
Mara Bos
9d764c5750 Add FIXME note about variadic syscall(). 2020-10-03 12:18:38 +02:00
Mara Bos
6df54c47a7 Use read_scalar_at_offset in futex_wait instead of memory.get_raw. 2020-10-03 12:11:24 +02:00
Mara Bos
66282754ff Remove backtics from isolation error.
Otherwise `FUTEX_WAIT with timeout` will look weird.
2020-10-03 11:38:16 +02:00
Mara Bos
924fd56944 Only allow FUTEX_WAIT with timeout when isoloation is disabled. 2020-10-03 11:35:13 +02:00
Mara Bos
c9627b25fb Use correct return type for syscall(SYS_futex). 2020-10-03 00:40:53 +02:00
Mara Bos
e64ead2f46 Implement timeouts for FUTEX_WAIT. 2020-10-02 23:34:14 +02:00
Mara Bos
d5b3f54b46 Use force_ptr in futex implementation. 2020-10-02 21:59:11 +02:00
Mara Bos
422b5053a9
Add note about arguments in futex implementation.
Co-authored-by: Ralf Jung <post@ralfj.de>
2020-10-02 20:56:01 +02:00
Mara Bos
dabd980567 Update note about number of arguments to SYS_futex. 2020-10-02 20:53:31 +02:00
Mara Bos
ee3eb4b223 Add comments that document SYS_futex better. 2020-10-02 10:47:53 +02:00
Mara Bos
712e8006b3 Improve handling of the addr argument in SYS_futex. 2020-10-02 10:47:36 +02:00
Mara Bos
c2fa27c3b8 Check maximum amount of arguments to SYS_futex. 2020-10-02 10:46:57 +02:00
Mara Bos
1c582e7c96 Return correct value from futex_wait. 2020-10-02 01:49:20 +02:00
Mara Bos
69cea1dc92 Only check futex pointer in futex_wait and not in futex_wake.
futex_wake doesn't access the futex itself, so should accept pointers to
memory that's no longer there.
2020-10-01 22:57:27 +02:00
Mara Bos
6c2f36eb6b Erase tag from futex pointers. 2020-10-01 21:06:16 +02:00
Mara Bos
281a538226 Move futex syscall to its own file. 2020-10-01 21:03:36 +02:00
Mara Bos
1ffc5bb563 Implement futex_wait and futex_wake.
This does not support futex_wait with a timeout yet.
2020-10-01 20:55:54 +02:00
Ralf Jung
eaf56c57e5 rustup; adjust for rustc_driver changes 2020-09-29 11:05:10 +02:00
Aaron Hill
5571bcfc4f
Require #[repr(C)] on MiriFrame 2020-09-28 13:44:46 -04:00
Aaron Hill
e1bce19ca9
Make some error messages lowercase 2020-09-28 13:44:45 -04:00
Aaron Hill
f756e3a93f
Explain encoding scheme 2020-09-28 13:44:45 -04:00
Aaron Hill
b89f6561e5
Move things around 2020-09-28 13:44:45 -04:00
Aaron Hill
ef43c5a614
Use a 'flags' parameter instead of 'version' 2020-09-28 13:44:45 -04:00
Aaron Hill
22f1eb01ee
Add API for capturing backtrace
This PR adds two new Miri-defined extern functions:
`miri_get_backtrace` and `miri_resolve_frame`, which are documented in
the README. Together, they allow obtaining a backtrace for the currently
executing program.

I've added a test showing how these APIs are used. I've also prepared a
companion PR `backtrace-rs`, which will allow
`backtrace::Backtrace::new()` to work automatically under Miri.

Once these two PRs are merged, we will be able to print backtraces from
the normal Rust panic hook (since libstd is now using backtrace-rs).

A few notes:
* Resolving the backtrace frames is *very* slow - you can actually see
  each line being printed out one at a time. Some local testing showed
  that this is not (primrary) caused by resolving a `Span` - it seems
  to be just Miri being slow.
* For the first time, we now interact directly with a user-defined
  struct (instead of just executing the user-provided MIR that
  manipulates the struct). To allow for future changes, I've added
  a 'version' parameter (currently required to be 0). This should allow
  us to change the `MiriFrame` struct should the need ever arise.
* I used the approach suggested by @oli-obk - a returned backtrace
  pointer consists of a base function allocation, with the 'offset'
  used to encode the `Span.lo`. This allows losslessly reconstructing
  the location information in `miri_resolve_frame`.
* There are a few quirks on the `backtrace-rs` side:
  * `backtrace-rs` calls `getcwd()` by default to try to simplify
    the filename. This results in an isolation error by default,
    which could be annoying when printing a backtrace from libstd.
  * `backtrace-rs` tries to remove 'internal' frames (everything between
     the call to `Backtrace::new()` and the internal API call made by
     backtrace-rs) by comparing the returned frame pointer value to
     a Rust function pointer. This doesn't work due to the way we
     construct the frame pointers passed to the caller. We could
     attempt to support this kind of comparison, or just add a
    `#[cfg(miri)]` and ignore the frames ourselves.
2020-09-28 13:44:45 -04:00
Lzu Tao
56ea94dfa3 Remove assume intrinsic from EvalContextExt
It has been moved to rustc_mir.
2020-09-27 10:00:06 +07:00
Ralf Jung
b0baa151b2 rustup 2020-09-20 13:13:57 +02:00
Ralf Jung
97a71c0c77
fmt
Co-authored-by: Oli Scherer <github35764891676564198441@oli-obk.de>
2020-09-18 13:34:25 +02:00
Ralf Jung
32cdb7131b support panic=abort 2020-09-18 13:10:18 +02:00
bors
ce29fbf406 Auto merge of #1540 - RalfJung:cargo-miri-redone, r=oli-obk
Redo cargo-miri logic

This rewrite the cargo-miri logic for running the requested crate(s) following what we outlined in https://github.com/rust-lang/miri/issues/739: `cargo miri run/test $FLAGS` (almost) literally invokes `cargo run/test $FLAGS` but with some environment variables set so that we can control what happens:
* `RUSTC_WRAPPER` is set so that we get invoked instead of `rustc`. We use that power to mess with the flags being used for the build (things to be interpreted by Miri use a different sysroot), and when we are detecting a binary crate meant to be run by Miri, we grab the info we care about and put it into a JSON file for later use.
* `CARGO_TARGET_$TARGET_RUNNER` is set so what we get invoked when cargo wants to run a binary. At that point we take that JSON info from before and use it to invoke Miri.

Overall this works great! We get all sorts of cargo magic for free, and do not even need `cargo-metadata` any more. There's one annoying point though, which I have not managed to entirely work around yet: this means we are doing a full build, not just a check-build. Given that our sysroot is MIR-only, I was surprised that this even worked, but still -- this means we are doing more work than we should. So I also added some patching of arguments to make sure `--emit` does not contain `link`, and then more patching was required of the `--extern` flags for the binary because those referenced the `.rlib` files but now only `.rmeta` exists, and that is still not fully working because cargo seems to expect those `.rmeta` files and now triggers a rebuild each time as those files are still missing. My current plan is to make our wrapper create some empty dummy files with the right names, but the amount of hacks we are stacking on top of each other here is getting worrysome.^^ `@ehuss` your input would be welcome on this issue.

Due to re-using cargo more literally, this also changes flag parsing to match `cargo`. So `-Zmiri` flags now have to be passed via an environment variable (Cc https://github.com/rust-lang/miri/issues/1416).

This PR is not ready yet, but the parts that are there I think can be reviewed already. TODO:
* [x] [Fix Windows](https://github.com/rust-lang/miri/pull/1540#issuecomment-688733741).
* [x] Figure out how we can do check-only builds without the rebuild problem above. ~~I am also worried about cases where `build.rs` script might detect check-only builds and then do less work; I think some crates in rustc are doing that and if this is a thing in the wider ecosystem we need to find a way to support this as well.~~ (postponed that until we have a concrete example)
* [x] Currently cargo runs doctests as well, and they are not run in Miri. We should at least figure out a way to not run them at all (resolving https://github.com/rust-lang/miri/issues/584 is left for a future PR).
* [x] For some time, detect the old way of passing `-Zmiri` flags and warn that this will need updating. For some simple situations we can probably make it still support the old way, but I plan to remove those hacks after a bit. This is just to give people and me time to go around and send PRs to all projects that use Miri on CI, and update their use of the flags.
* [x] Add a test for stdin handling (https://github.com/rust-lang/miri/issues/1505). This should work now but we should be sure.
* [x] Add a test for cargo env vars (https://github.com/rust-lang/miri/issues/1515).
* [x] Check if https://github.com/rust-lang/miri/issues/1516 is resolved.
* [x] Check if https://github.com/rust-lang/miri/issues/1001 and https://github.com/rust-lang/miri/issues/1514 are resolved.
* [x] Check if https://github.com/rust-lang/miri/issues/1312 is resolved (not sure if it is wort adding a test).
* [x] Check if https://github.com/rust-lang/miri/issues/1512 is resolved (not sure if it is wort adding a test).

Fixes https://github.com/rust-lang/miri/issues/700.
Fixes https://github.com/rust-lang/miri/issues/739.
Fixes https://github.com/rust-lang/miri/issues/1001.
Fixes https://github.com/rust-lang/miri/issues/1312 (without a test, as we run without cargo's stdin/stdout wrapping now, as the test for stdin confirms).
Fixes https://github.com/rust-lang/miri/issues/1416.
Fixes https://github.com/rust-lang/miri/issues/1505.
Fixes https://github.com/rust-lang/miri/issues/1512 (without a test, as cargo now does all that handling anyway, which various other tests confirm).
Fixes https://github.com/rust-lang/miri/issues/1514.
Fixes https://github.com/rust-lang/miri/issues/1516.

Cc `@alecmocatta` who reported many of the bugs above; would be great if you could help with the tests e.g. by providing some small examples I could try.
r? `@oli-obk`
2020-09-17 16:52:23 +00:00
Ralf Jung
3163242ff1 rustup; no need to special-case the guaranteed_eq/ne intrinsics any more 2020-09-17 17:42:52 +02:00
Ralf Jung
b244a2ddaa make sure subcrate tests have the right cwd 2020-09-17 17:33:47 +02:00
Samrat Man Singh
563fb8e43d Implement dup and close for stdin/stdout/stderr
Support F_DUPFD on stdin/stdout/stderr

Enable `close`-ing stdin/stdout/stderr

For `dup`, check if FD is `File` first

If not, clone the appropriate standard IO stream

Merge POSIX `close` and `dup` tests into same module

Also, add assertion that `write` on a closed FD returns an error.

Add `dup` as FileDescriptor trait fn

Also:
- Fix `close` so it drops `self` instead of reference to it
- Remove FD clamping in insert_fd_with_min_fd, since FDs 0-2 can be
closed

Fix fs_libc tests

Make error message when closing stdin/out/err more specific

Return io::Result from `FileDescriptor::dup`

Change error message when closing stdin/out/err

Refactor `FileDescriptor::dup` impl for `FileHandle`

Remove empty line
2020-09-09 23:26:33 +05:30
David Cook
b06f0d16a9 Use try block instead of closure 2020-09-07 15:09:34 -05:00
David Cook
597360f499 Simplify read_timespec error handling 2020-09-07 11:31:28 -05:00
David Cook
33e928c9ca Review comments 2020-09-07 10:54:39 -05:00
David Cook
417ac2939a Implement libc::nanosleep shim 2020-09-06 18:07:17 -05:00
David Cook
6d323e1032 Refactor timespec parsing, improve error handling 2020-09-06 18:07:14 -05:00
LeSeulArtichaut
4f2f87b2df Change ty.kind -> ty.kind() 2020-09-04 22:03:45 +02:00
David Cook
a6746ad893 Add comment 2020-09-02 20:58:41 -05:00
David Cook
7a2c6812b9 Per-thread errno storage 2020-09-02 20:57:20 -05:00
David Cook
da2f268443 Review comments 2020-08-31 19:32:14 -05:00
David Cook
3ba7f46058 Move panic payload state from Machine to Thread 2020-08-29 21:38:37 -05:00
Ralf Jung
d4e5943259 use real align_offset unless we symbolic alignment check is enabled 2020-08-16 18:26:04 +02:00
Ralf Jung
664706662f adjust diagnostics to alignment check mode 2020-08-16 17:16:53 +02:00
Ralf Jung
cb985670c1 make alignment check integer-based by default, and add an option to make it symbolic 2020-08-16 17:08:38 +02:00
Ralf Jung
df311293e2 fix Stderr::as_file_handle error message 2020-08-13 14:27:03 +02:00
Samrat Man Singh
0c25064117
Remove unnecessary whitespace
Co-authored-by: Ralf Jung <post@ralfj.de>
2020-08-13 16:18:08 +05:30
Samrat Man Singh
46852d736e Remove lifetime from FileDescriptor trait
Also:
- Remove type annotate `handles` declaration instead of every insert.
- Add note about flush being unnecessary when writing to stderr
2020-08-13 15:01:52 +05:30
Ralf Jung
80929e17ae add test for unused ill-formed constant
also use better span in TopFrameInfo
2020-08-13 08:33:36 +02:00
Oliver Scherer
94f13efefd Bump for rustc changes 2020-08-11 11:37:29 +02:00
Ralf Jung
5ea5e9fc2c accept ReferencedConstant errors in Miri (can happen post-monomorphization) 2020-08-10 09:02:45 +02:00
Ralf Jung
5657f08bea fs: move isolation handling to inside trait 2020-08-08 15:24:30 +02:00
bors
eaf5d32ac7 Auto merge of #1501 - samrat:fix-fs-error-handling, r=RalfJung
Bubble up errors from FileDescriptor::as_file_handle

Instead of indicating incorrectly that a handle was not found, return the error from `as_file_handle` indicating the operation is not supported on the FD.

Addresses some comments in #1495
2020-08-08 12:28:08 +00:00
Ralf Jung
07a4383ac8 rustup 2020-08-08 14:05:11 +02:00
Samrat Man Singh
1069f6b174 Fix handling of as_file_handle error for fullfsync 2020-08-08 17:28:41 +05:30
Samrat Man Singh
045bcab1eb Add FIXME's for dup and other syscalls to support stdin/out/err 2020-08-08 15:08:29 +05:30
Samrat Man Singh
773dfb31f0 Bubble up error from FileDescriptor::as_file_handle
...instead of handle_not_found
2020-08-08 14:42:50 +05:30
Samrat Man Singh
bdef57ea45 Flush to stdout from FileDescriptor::write for Stdout
Also, remove unnecessary `-Zmiri-disable-isolation` in test
2020-08-04 20:40:48 +05:30
Samrat Man Singh
bea7113eb8 Add impl FileDescriptor for stdin, stdout, stderr
- Use `FileDescriptor::read` for stdin reads
- Use `FileDescriptor::write` for stdout/err writes
- Handle stdout/err reads in `FileDescriptor::read`
2020-08-04 01:14:52 +05:30
bors
69d050fb6b Auto merge of #1495 - samrat:fd-trait, r=oli-obk
Add FileDescriptor trait to abstract fn's on File's and Stdin,Stdout,Stderr

Related issue: #1486

Instead of mapping FDs to `FileHandle`, map them to a `FileDescriptor` trait object. The goal is to eventually have both `FileHandle` as well as `Stdin`, `Stdout` and `Stderr` implement this trait so that syscalls involving FDs can handle both `File`s as well as the standard IO streams.

This PR adds the `FileDescriptor` trait and an `impl` for `FileHandle`. I'll open a separate PR for implementing the trait for the standard IO streams.
2020-08-03 15:50:30 +00:00
Samrat Man Singh
79e066fc95 Remove unnecessary clone() on writable 2020-08-03 20:39:09 +05:30
Samrat Man Singh
3386f12eca Wrap io::Result from FileDescriptor::{read,write,seek} in InterpResult
The outer InterpResult will be used to indicate that a fn is not
implemented for a struct(eg. `write` for Stdin).

The inner io::Result is just the result from the read/write/seek.
2020-08-03 11:01:42 +05:30
Samrat Man Singh
e3956f4200 Add FileDescriptor trait to abstract fn's on File's and Std{in,out,err} 2020-08-01 20:53:50 +05:30
Ralf Jung
2dfde5b696 remove upstreamed intrinsic impls 2020-07-30 18:31:40 +02:00
Ralf Jung
d340933112 rustup 2020-07-30 18:31:19 +02:00
Ralf Jung
bec7aab7fd Typos
Co-authored-by: Oliver Scherer <github35764891676564198441@oli-obk.de>
2020-07-27 23:32:15 +02:00
Ralf Jung
6fbaa72642 fix diagnostics printing when triggered during TLS dtor scheduling 2020-07-27 23:32:15 +02:00
Ralf Jung
c77540ce13 deallocate thread-local statics when the thread dies 2020-07-27 23:32:15 +02:00
Ralf Jung
2a42f8e93c fix and test order of TLS dtors and thread joining 2020-07-27 23:32:15 +02:00
Ralf Jung
7b07fc385c get_or_create_thread_local_alloc_id: share code with Memory::get_global_alloc 2020-07-27 23:32:15 +02:00
Ralf Jung
0a4e8caa8c adjust to canonical_alloc_id removal 2020-07-27 23:32:15 +02:00
Philippe Nadon
6dd700fd17 Changed not_undef to check_init in foreign_items.rs
Due to changes from upstream, a commit using not_undef was inserted, which had to be updated to use check_init.

related issue #71193
2020-07-27 13:07:25 -06:00
Philippe Nadon
21268157ff renamed Immediate::to_scalar_or_undef
to Immediate::to_scalar_or_uninit

in src/shims/intrinsics.rs

related issue #71193
2020-07-26 16:05:20 -06:00
Philippe Nadon
5161ba346c renamed ScalarMaybeUninit::not_undef to check_init
Related to PR https://github.com/rust-lang/rust/pull/74664
2020-07-26 16:05:20 -06:00
Ralf Jung
bc0569253f enable leak check tests on Windows 2020-07-23 15:56:38 +02:00
Ralf Jung
fef5fa2ae1 add a Miri extern fn to mark an allocation as being a static root for leak checking 2020-07-23 15:47:33 +02:00
Ralf Jung
4033358956 make miri_start_panic intrinsic an FFI function 2020-07-23 15:20:36 +02:00
bors
592b140880 Auto merge of #1482 - canova:remote-unreachable, r=RalfJung
Remove unreachable intrinsic

This is now supported by the interpreter with https://github.com/rust-lang/rust/pull/74459. We can remove this intrinsic implementation here.
This is covered by this test: https://github.com/rust-lang/miri/blob/master/tests/compile-fail/unreachable.rs

I guess we need to wait until the rust-lang/rust PR merges into nightly, and then we can update `rust-version` hash in the PR, right?

r? @oli-obk
2020-07-23 09:14:08 +00:00
Ralf Jung
7d6aec6887 rustup 2020-07-23 10:40:13 +02:00
Ralf Jung
cded9b7142 set errno on stdout write failure 2020-07-18 17:58:21 +02:00
bors
b021209b0e Auto merge of #1436 - samrat:support-stdin-read, r=RalfJung
Handle `read`s on STDIN

Closes #1434
2020-07-18 14:56:38 +00:00
Nazım Can Altınova
d1aee6965b Remove unreachable intrinsic 2020-07-18 12:48:26 +02:00
Samrat Man Singh
f4d1841811 Remove unnecessary cast 2020-07-18 10:45:06 +05:30
Samrat Man Singh
4c1beb2e45 Ensure buffer for reading from Stdin is smaller than machine usize
Also, set appropriate error code on failure
2020-07-17 20:18:07 +05:30
Ralf Jung
545aa60195 fix typo
Co-authored-by: Oliver Scherer <github35764891676564198441@oli-obk.de>
2020-07-17 13:40:13 +02:00
Ralf Jung
d617d615e4 fix non-fatal diagnostics stacktraces 2020-07-17 12:55:45 +02:00
Ralf Jung
c28786d320 remove an unnecessary intermediate cast 2020-07-16 12:16:43 +02:00
Ralf Jung
ce5ed69eac rustup; fix Windows TLS 2020-07-15 08:42:15 +02:00
Samrat Man Singh
74ff4f805a Read into buffer of fixed size for reads to STDIN
Also:
- Check isolation is disabled.
- Add FIXMEs to set error numbers in `read` and `write`.
2020-07-12 20:27:19 +05:30
Samrat Man Singh
2602e951c0 Handle reads on STDIN 2020-07-11 14:06:49 +05:30
Justus K
22e7a6263b
Early exit if program doesn't contain a main fn 2020-07-09 13:16:38 +02:00
Ralf Jung
dcb0f6309e we cannot track all machine memory any more due to int-ptr-casts 2020-07-08 12:01:49 +02:00
Gary Guo
c5b324b031
Remove likely and unlikely from intrinsics shim
They are now implemented in MIR interpreter by rust-lang/rust#73778
2020-07-02 20:00:27 +01:00
Ralf Jung
c379793cde add option to track call IDs 2020-07-02 10:33:54 +02:00
Ralf Jung
3a5bcb97ed move rwlock dequeuing to shared code, and use that code for Windows rwlocks 2020-06-28 11:28:46 +02:00
Ralf Jung
a9dc2796ca Move get/set_at_offset helpers to global helpers file 2020-06-28 09:23:01 +02:00
Ralf Jung
e54619b5e1 with this, we support panics on Windows 2020-06-27 14:43:37 +02:00
Ralf Jung
8e92969948 implement Windows SRWLock shims 2020-06-27 14:36:05 +02:00
Ralf Jung
dca00ab85e introduce platform-specific module hierarchy for dlsym (similar to foreign_items) 2020-06-27 14:36:05 +02:00
bors
bde2eb4a44 Auto merge of #1460 - RalfJung:modules, r=RalfJung
Re-organize platform-specific shims

Move platform-specific code to `shims::{posix::{linux, macos}, windows}`. Also make it private in these modules to ensure we are reasonably structured.
2020-06-27 11:27:36 +00:00
Ralf Jung
af5887e869 module organization: move platform-specific code to shims::{posix::{linux, macos}, windows} 2020-06-27 13:22:49 +02:00
Ralf Jung
395f5d40dc Rename shims::{sync -> posic_sync} and move sync_singlethread test to other sync test 2020-06-27 12:37:12 +02:00
Ralf Jung
b46f946c81 supply our own implementation of the CTFE pointer comparison intrinsics 2020-06-27 11:57:43 +02:00
Ralf Jung
5c5b61ffb0 rustup 2020-06-15 17:38:27 +02:00
Ralf Jung
e063ce2737 rustup; and a bit of UnsafeCell detection refactoring 2020-06-13 11:30:31 +02:00
bors
ffd03b3caa Auto merge of #1418 - divergentdave:file-sync, r=RalfJung
Add file sync shims

This PR adds shim implementations for these related file syncing functions.
* `fsync`, for POSIX targets, backed by `File::sync_all()`
* `fdatasync`, for POSIX targets, backed by `File::sync_data()`
* `fcntl` with command `F_FULLFSYNC`, for macOS targets, backed by `File::sync_all()`
* `sync_file_range`, for Linux targets, backed by `File::sync_data()`
2020-06-09 08:48:40 +00:00
David Cook
a60c130b0d Extract common logic for Windows host workaround 2020-06-08 23:34:02 +00:00
David Cook
e352d4fbb7 Finish fixing Windows host support 2020-06-06 16:54:13 +00:00
Ralf Jung
17dd44ee92 rustup 2020-06-01 19:23:54 +02:00
Ralf Jung
0b6ec575b9 make mutex_unlock infallible 2020-05-30 22:54:37 +02:00
Ralf Jung
acb3ec0866 test and fix for rwlock unlock bug 2020-05-30 22:48:43 +02:00
Ralf Jung
a80821e046 also combine re-locking into the dequeue-and-unblock operation 2020-05-30 22:35:58 +02:00
Ralf Jung
7589bc7ba9 sync cleanup: mark infallible ops as such; consistent combine en/dequeue with (un)block; comments 2020-05-30 22:29:27 +02:00
Ralf Jung
c77e9022d5 rustup (and account for stabilization) 2020-05-30 09:23:25 +02:00
Joe Richey
394a57fc22 Remove pointer arithmetic intrinsics
These are now implemented in rustc's mir interpreter

Signed-off-by: Joe Richey <joerichey@google.com>
2020-05-30 09:06:37 +02:00
Ralf Jung
f55c0153f1 str_strip is stable 2020-05-29 10:01:07 +02:00
bors
83b4222d9a Auto merge of #1422 - RalfJung:cargo-miri-workspace, r=oli-obk
Move cargo-miri into separate package

So far, `cargo-miri` depended on the Miri library crate. That was mostly for convenience (to avoid having to deal with workspaces), but also because until recently `cargo-miri` needed access to the ["Miri default flags"](af044209b0/src/lib.rs (L75)). But with `MIRI_BE_RUSTC` that is no longer the case, so we can remove this fake dependency. :)

@oli-obk what do you think? Also I expect the rustc bootstrap integration will need updates, hints would be appreciated. :D
2020-05-28 13:02:41 +00:00
Ralf Jung
0790f75ae4 make cargo-miri a separate crate in a workspace 2020-05-28 08:53:44 +02:00
Ralf Jung
60f466d6ad use strip_prefix where it makes sense 2020-05-28 08:51:38 +02:00
David Cook
c01bc14219 Fix fsync shim for Windows hosts with RO files 2020-05-25 21:45:29 -05:00
David Cook
7ba8bbc49f Update comments 2020-05-25 07:32:56 -05:00
Ralf Jung
a95f754a9c better error when reading from stdin 2020-05-25 10:39:43 +02:00
Ralf Jung
9ff77f6cb3 add an assertion 2020-05-25 09:59:01 +02:00
Ralf Jung
1fecbd8a87 macos does not have pthread_condattr_setclock/getclock 2020-05-25 09:42:08 +02:00
Vytautas Astrauskas
dec205757a Fix compilation errors after rebase. 2020-05-25 00:28:01 +02:00
Vytautas Astrauskas
90590a399d Small fixes. 2020-05-25 00:02:54 +02:00
Vytautas Astrauskas
6ff0af3adf Fix #1419. 2020-05-25 00:02:54 +02:00
Vytautas Astrauskas
bd97074517 Small changes. 2020-05-25 00:02:54 +02:00
Vytautas Astrauskas
8b5a9836be Small changes. 2020-05-25 00:02:54 +02:00
Vytautas Astrauskas
0838347d8f Change the scheduling to execute timeout callbacks first. 2020-05-25 00:02:54 +02:00
Vytautas Astrauskas
fdfd56b75b Small changes. 2020-05-25 00:02:54 +02:00
Vytautas Astrauskas
3da61fa427 Add comments explaining the declare_id macro. 2020-05-25 00:02:54 +02:00
Vytautas Astrauskas
0bbac12751 Change how the time is handled. 2020-05-25 00:02:54 +02:00
Vytautas Astrauskas
86eb262e8a Cleanup Condvar tests. 2020-05-25 00:02:54 +02:00
Vytautas Astrauskas
044a068c67 Improve code readability and comments. 2020-05-25 00:02:54 +02:00
Vytautas Astrauskas
d0de439ac8 Cleanup. 2020-05-25 00:02:54 +02:00
Vytautas Astrauskas
679245769b Implement support for synchronization primitives. 2020-05-25 00:02:54 +02:00
Ralf Jung
2c94ad08d8 use helper method to compute size of int type 2020-05-24 19:20:44 +02:00
Ralf Jung
cf7d88fd91 unset RUSTC_WRAPPER for xargo invocation 2020-05-24 14:46:38 +02:00
David Cook
87a846f2d6 Update to match rustc changes 2020-05-22 17:03:25 +02:00
Ralf Jung
fbb8c1526a verify the size of all shim arguments 2020-05-22 11:56:18 +02:00
Ralf Jung
402535ef86 also pretend GetSystemTimePreciseAsFileTime does not exist 2020-05-21 23:24:37 +02:00
Ralf Jung
526fae7541 GetProcAddress: basic validation for hModule argument 2020-05-21 23:06:31 +02:00
Ralf Jung
f09decb398 disentangle macos and linux dlsyms 2020-05-21 23:01:27 +02:00
Ralf Jung
08ddbd6ce0 prepare Dlsym system for dynamic symbols on Windows 2020-05-21 22:38:06 +02:00
David Cook
0b060c7364 Review comments 2020-05-19 08:57:31 -05:00
David Cook
87c4694448 Add file sync shims
Adds implementations for fsync, fdatasync, and sync_file_range
2020-05-17 22:10:40 -05:00
Ralf Jung
d90a087df9 fix libstd rebuilds due to RUSTFLAGS changes 2020-05-17 11:20:05 +02:00
Ralf Jung
e22baedb1f add test suite filter example to README and 'cargo miri --help' 2020-05-17 10:12:17 +02:00
Ralf Jung
e0f9081c5c use new rustc_driver::catch_with_exit_code 2020-05-16 11:30:11 +02:00
Ralf Jung
4a2e08f9b8 fix warnings for non-Unix builds 2020-05-11 10:58:27 +02:00
Ralf Jung
938fe00f02 fix some comments, and run_compiler return type 2020-05-11 00:09:46 +02:00
Ralf Jung
845b89c236 we do not need to set RUSTFLAGS for xargo any more as miri-as-rustc already uses these flags 2020-05-10 18:56:38 +02:00
Ralf Jung
81046fa5e5 cargo-miri: never invoke rustc, always go through 'MIRI_BE_RUSTC=1 miri' instead 2020-05-10 18:41:03 +02:00
Oliver Scherer
3fdab9c446 Update to rustc changes 2020-05-10 10:14:03 +02:00
Ralf Jung
ac65350789 adjust default sysroot when being rustc
Also while at it, refactor how we pass the default Miri flags
2020-05-09 13:42:07 +02:00
Ralf Jung
ba801a45db make Miri work in rustc bootstrap stage 0 2020-05-09 13:19:23 +02:00