269 Commits

Author SHA1 Message Date
DrMeepster
84b058ac47 add support for #[start] 2021-09-02 15:41:10 -07:00
Ralf Jung
a1233a721d adjust Miri to Pointer type overhaul 2021-07-16 10:10:12 +02:00
Smit Soni
892f706ce5 Add a support to execute isolated op without halting
In user interface, added a new flag `-Zmiri-isolation-error` which
takes one of the four values -- hide, warn, warn-nobacktrace, and
abort. This option can be used to configure Miri to either abort or
return an error code upon executing isolated op. If not aborted, Miri
prints a warning, whose verbosity can be configured using this flag.

In implementation, added a new enum `IsolatedOp` to capture all the
settings related to ops requiring communication with the
host. Old `communicate` flag in both miri configs and machine
stats is replaced with a new helper function `communicate()` which
checks `isolated_op` internally.

Added a new helper function `reject_in_isolation` which can be called
by shims to reject ops according to the reject_with settings. Use miri
specific diagnostics function `report_msg` to print backtrace in the
warning. Update it to take an enum value instead of a bool, indicating
the level of diagnostics.

Updated shims related to current dir to use the new APIs. Added a new
test for current dir ops in isolation without halting machine.
2021-06-09 05:50:52 -07:00
hyd-dev
41f33a64f8
Implement calls to exported symbols 2021-05-31 11:15:29 +08:00
Ralf Jung
4e231bab5e format much of Miri 2021-05-16 11:48:28 +02:00
hyd-dev
4eed610723
Remove #![feature(or_patterns)] 2021-03-23 16:58:00 +08: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
Yuki Okushi
53612ece7c Rustup for rust-lang/rust#79951 2021-01-28 22:31:22 +09:00
hyd-dev
9949d9e417
Remove #![feature(const_generics)] and #![allow(incomplete_features)] 2021-01-17 23:28:20 +08:00
JCTyBlaidd
4cf614ef33 Update release sequence handling to C++20 semantics. 2020-12-06 16:58:32 +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
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
89814f1b3f Initial data-race detector,
passes all current tests but additional tests are required
2020-11-02 02:57:05 +00:00
Camelid
05e9ae042c Make miri_default_args() a constant 2020-10-24 12:46:38 -07:00
David Cook
b06f0d16a9 Use try block instead of closure 2020-09-07 15:09:34 -05: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
c379793cde add option to track call IDs 2020-07-02 10:33:54 +02: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
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
Chase Albert
78f329513a Check that shims are called with the correct number of arguments 2020-05-04 13:51:21 -04:00
Vytautas Astrauskas
d062f63519 Fix support for MacOS. 2020-04-27 14:26:36 -07:00
Vytautas Astrauskas
44e9305599 Rename threads to thread to match the Rust standard library. 2020-04-27 14:26:36 -07:00
Vytautas Astrauskas
552080a5b7 Fix imports. 2020-04-27 14:26:36 -07:00
Vytautas Astrauskas
1f33f04fd4 Move pthread_create and related shims to a separate file. 2020-04-27 14:23:32 -07:00
Vytautas Astrauskas
82f17ab917 Implement basic support for concurrency (Linux only). 2020-04-27 14:23:32 -07:00
David Cook
bc54c7628d Eagerly compute i32 and u32 layouts 2020-04-05 16:03:44 -05:00
David Cook
ac8c98da8e Store layouts of i32 and u32 inside Evaluator 2020-04-05 10:37:57 -05:00
David Cook
dd9896b0f8 Implement mutex and rwlock functions 2020-04-05 10:03:22 -05:00
Ralf Jung
8948a29a4c adjust for librustc rename; reduce 'extern crate' to rustc crates 2020-03-30 11:07:32 +02:00
bors
ad14b684cc Auto merge of #1275 - JOE1994:move_string_helpers, r=RalfJung
move OsStr helpers to a separate file

Moved OsStr read/write functions from `src/helpers.rs` to `src/shims/os_str.rs`, in order to keep `src/helpers.rs` from bloating too much.
2020-03-28 15:32:16 +00:00
JOE1994
99600ba7a9 move OsStr helpers to a separate file 2020-03-28 10:43:47 -04:00
Ralf Jung
204c13b8c7 env shim: make sure we clean up all the memory we allocate 2020-03-28 11:06:56 +01:00
Ralf Jung
6dcca62b63 move -Zmiri-disable-isolation hint to help 2020-03-22 19:48:59 +01:00
Ralf Jung
5531a79f4c rustup, test Abort terminator 2020-03-12 20:48:04 +01:00
Ralf Jung
cc1ebd0af6 some formatting 2020-03-01 10:29:05 +01:00
Ralf Jung
ea5aa19487 rustup 2020-03-01 10:22:13 +01:00
bors
c0934e1eca Auto merge of #1152 - divergentdave:shim-directory, r=RalfJung
Add directory-related shims

This PR adds support for `mkdir`, `rmdir`, `opendir`, `closedir`, and `readdir64_r`.

Open directory streams are tracked through a HashMap indexed by pointer locations, which holds directory iterators. Since `DIR` is an opaque type in glibc, I represent them with 1-byte allocations, and then just use their pointers in HashMap lookups.

Tests are included to exercise the new functionality.
2020-02-26 14:15:55 +00:00
Ralf Jung
274ae0438f add an option to disable Stacked Borrows 2020-02-24 16:22:02 +01:00
David Cook
d7c3f588eb Add shims for opendir and closedir 2020-02-23 15:02:49 -06:00
David Cook
a6a8f09f1e Address review comments 2020-02-17 22:24:33 -06:00
Ralf Jung
6ff5b3fcf9 make sure we also trigger debug assertions in libstd 2020-02-16 13:55:51 +01:00
Oliver Scherer
dbffbe5214 Document all the things 2020-01-09 12:42:56 +01:00
Oliver Scherer
c69ebaaed2 Use names that actually represent what's going on 2020-01-08 13:43:23 +01:00
Oliver Scherer
90a8f2f6a3 Make the non-halting diagnostic scheme independent of InterpError 2020-01-08 13:02:55 +01:00
Oliver Scherer
96d6efdf32 Emit errors without halting interpretation 2020-01-08 12:37:25 +01:00
Oliver Scherer
4411903cca Add a scheme for registering and obtaining errors even without access to an InterpCx 2020-01-08 12:37:25 +01:00
Oliver Scherer
4de031b3da Move error reporting to its own module 2020-01-08 12:37:25 +01:00
Yuki Okushi
86ee705cd5 Rustup 2020-01-07 05:13:18 +09:00