Commit Graph

2077 Commits

Author SHA1 Message Date
Ralf Jung
04c937e281 assert platform in time shims 2020-03-20 15:11:54 +01:00
Ralf Jung
4608b94bd8 implement CLOCK_MONOTONIC on Linux 2020-03-19 23:01:24 +01:00
Ralf Jung
0f1713f67c whitelist platforms where panicking should work 2020-03-19 15:54:09 +01:00
Ralf Jung
681819c8ad getting a path should never fail
we basically treat them as lang items
2020-03-19 08:26:08 +01:00
Ralf Jung
e6e8773272 start messages in lower-case 2020-03-19 08:25:08 +01:00
Ralf Jung
1103a10e2c adjust for error reform 2020-03-19 08:25:08 +01:00
bors
6b56aefa0b Auto merge of #1239 - elichai:2020-03-abort-intrinsics, r=RalfJung
Abort instead of panic on asserting intrinsics

This fixes #1222
replacing the panic with an abort and a corresponding message.
the stack trace is already printed, this just adds an optional message the caller can pass, and I just pass the same message we passed to the panic but now to the abort instead.

r? @RalfJung
2020-03-18 12:20:30 +00:00
Elichai Turkel
52e1372e03
Abort instead of panic in asserting intrinsics, because they might not be panic safe 2020-03-18 14:14:23 +02:00
Elichai Turkel
1b8979c8c7
Add an optional message to abort 2020-03-18 14:14:23 +02:00
Ralf Jung
b82cf36117 rustup; remove no longer existing intrinsics 2020-03-17 21:11:19 +01:00
Ralf Jung
8b6af3eacb avoid using unchecked casts or arithmetic 2020-03-17 15:21:43 +01:00
Youngsuk Kim
a664156440
Minor typo fix
"initializiation" => "initialization"
2020-03-15 18:06:21 -04:00
Ralf Jung
17a677f4a9 abort intrinsic is handled by librustc_mir now 2020-03-15 11:17:07 +01:00
Ralf Jung
1c4f27f1b2 adjust Miri to needs of changed unwinding strategy 2020-03-15 10:59:07 +01:00
Ralf Jung
a92b2274ce fix typo and deduplicate comment 2020-03-14 12:05:25 +01:00
Ralf Jung
497fbcbf44 rustup, fix for intrinsic rename and transmute error change 2020-03-14 09:27:35 +01:00
Ralf Jung
13ae3147f0 refactor handling of diverging intrinsics/foreign functions 2020-03-12 21:20:16 +01:00
Ralf Jung
5531a79f4c rustup, test Abort terminator 2020-03-12 20:48:04 +01:00
bors
0f22d8a208 Auto merge of #1213 - lcnr:master, r=RalfJung
rm custom `intrinsics::discriminant_value`

@RalfJung requires https://github.com/rust-lang/rust/pull/69825
2020-03-12 16:50:12 +00:00
Ralf Jung
76ee8ff458 use ctfe_backtracte variable for backtrace control 2020-03-11 20:39:18 +01:00
Ralf Jung
45d5a37787 rustup+fix 2020-03-11 20:39:18 +01:00
Ralf Jung
548c90e102 share some code between panic intrinsics, and fix the message 2020-03-11 19:53:07 +01:00
Elichai Turkel
e81ebffa59
Implement panic_if_any_invalid and panic_if_zero_invalid intrinsics 2020-03-11 16:00:08 +02:00
Ralf Jung
8394456247 properly panic in panic_if_uninhabited and align_offset shims 2020-03-08 20:00:40 +01:00
Christian Poveda
5dc60d974b
move environ place to EnvVars 2020-03-08 11:58:20 -05:00
Ralf Jung
87dbf10e84 move environ init to update_environ 2020-03-08 17:21:02 +01:00
Christian Poveda
8392a0c589
only expose environ on linux 2020-03-08 10:16:31 -05:00
Bastian Kauschke
6fd3c9174c rm custom intrinsics::discriminant_value 2020-03-08 14:31:57 +01:00
Christian Poveda
18a71ef7b3
minor corrections 2020-03-07 11:35:00 -05:00
Christian Poveda
e31b8b3342
add _NSGetEnviron foreign function for macos 2020-03-07 10:06:20 -05:00
Christian Poveda
aedc34c6e5
deallocate old environ 2020-03-06 18:11:05 -05:00
Ralf Jung
7882dfb3f5
fix env update, and expand test 2020-03-06 08:21:53 -05:00
Christian Poveda
4f5fdc5810
update the environ shim when environment changes 2020-03-06 08:21:52 -05:00
Christian Poveda
d13fe01f82
add working shim for environ 2020-03-06 08:19:56 -05:00
Ralf Jung
ade4c4e733 make the new option actually do something 2020-03-06 09:11:41 +01:00
Ralf Jung
d82d701360 add option to track a particular AllocId (does nothing yet) 2020-03-06 09:06:23 +01:00
Ralf Jung
148269dd4b finally stop using min/max_value and the integer modules 2020-03-04 13:01:06 +01:00
bors
4f437099d8 Auto merge of #1202 - RalfJung:symbols, r=RalfJung
switch extern_statics map to symbols, and use FxHashMap everywhere

Cc @eddyb
2020-03-02 21:37:08 +00:00
Ralf Jung
92a28f8d8f HashMap -> FxHashMap 2020-03-02 22:36:15 +01:00
Ralf Jung
0e021ad76c switch extern_statics map to symbols 2020-03-02 22:30:20 +01:00
Ralf Jung
68f70195fa rename xargo -> xargo_check 2020-03-02 22:10:48 +01:00
Aaron Hill
5960e8b80e
Rename XARGO env var to XARGO_CHECK
This reflects the fact that we want bootstrap to override `xargo-check`,
not `xargo
2020-03-02 14:17:14 -05:00
Ralf Jung
88c45f9891 adjust for rustc changes 2020-03-02 13:51:08 +01:00
Ralf Jung
59bddba5f3 remove unused import 2020-03-02 09:05:55 +01:00
Ralf Jung
90327335fc canonicalize alloc ID for ptr-to-int cast 2020-03-02 09:03:08 +01:00
Ralf Jung
8ef303cd32 port from find_foreign_static to canonical_alloc_id 2020-03-02 09:03:08 +01:00
Ralf Jung
5d8fbfcb5f rename memory kind: Env -> Machine 2020-03-02 09:01:23 +01:00
Ralf Jung
48a4e3f4d8 format a few things 2020-03-01 11:54:19 +01:00
Ralf Jung
af98bd9a53 fix trailing indent in xargo files 2020-03-01 11:53:34 +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
Ralf Jung
2b04e3954a Remove incorrect try_lock from Windows critical section shim 2020-02-29 20:47:57 +01:00
Ralf Jung
5187e5ddd6 avoid Scalar::to_bits 2020-02-28 10:00:20 +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
62f9f4c578
fix Windows build failure 2020-02-26 15:15:16 +01:00
David Cook
df59d7ff74 Review comments 2020-02-26 07:59:11 -06:00
Ralf Jung
7e128beff9 fix build failures 2020-02-26 13:50:33 +01:00
David Cook
ad8c784009 Return length from write_os_str_to_c_str 2020-02-24 19:50:25 -06:00
David Cook
9e03b41338 Migrate readdir_r from pointers to places 2020-02-24 19:38:17 -06:00
David Cook
9fcc8a2a91 Review comments 2020-02-24 19:16:41 -06:00
Ralf Jung
25ddc659d0 move validate field from memory to machine 2020-02-24 16:25:29 +01:00
Ralf Jung
274ae0438f add an option to disable Stacked Borrows 2020-02-24 16:22:02 +01:00
Ralf Jung
443163f930 refactor cargo-miri a bit 2020-02-24 14:41:04 +01:00
Aaron Hill
e530829797 Use 'cargo check' to build the sysroot and target crate
Fixes #1057

Since we are no longer using "cargo rustc", we now use the rustc
arguments passed by Cargo to determine whether we are building a
build dependency, normal dependency, or "target" (final binary or test)
crate.
2020-02-24 14:41:04 +01:00
David Cook
dd00e5830f Use ID numbers in lieu of allocations for DIR* 2020-02-23 15:46:18 -06:00
David Cook
89cbe0ae56 Add comments 2020-02-23 15:45:04 -06:00
David Cook
725d6bfa9c Move error up, early return 2020-02-23 15:39:50 -06:00
David Cook
d6da4ab4b8 Add comments 2020-02-23 15:38:32 -06:00
David Cook
94f611348f Use os_str_length_as_c_str in readdir[64]_r 2020-02-23 15:37:22 -06:00
David Cook
947fa1fa26 Miscellaneous review comments 2020-02-23 15:36:03 -06:00
David Cook
d4b73efa81 Fix interpreted OS detection 2020-02-23 15:33:37 -06:00
David Cook
9a6921a17f Add doc comment inside DirHandler 2020-02-23 15:32:24 -06:00
David Cook
515d29aa2c Fix dirent layout for macOS 2020-02-23 15:31:07 -06:00
David Cook
ba61a9b37c Add shims for macOS-specific symbols 2020-02-23 15:26:42 -06:00
David Cook
974362ef64 Handle differing sizes of mode_t
mode_t is a u32 on Linux and a u16 on macOS
2020-02-23 15:08:44 -06:00
David Cook
5d35339111 Add shim for readdir64_r 2020-02-23 15:08:44 -06:00
David Cook
d7c3f588eb Add shims for opendir and closedir 2020-02-23 15:02:49 -06:00
David Cook
5b34f06bae Add shims for mkdir and rmdir 2020-02-23 15:02:49 -06:00
Ralf Jung
4a9a0a9078 avoid lowercasing platforms 2020-02-23 18:54:08 +01:00
Ralf Jung
e575fb1f57 improve comments 2020-02-23 18:52:12 +01:00
Ralf Jung
beb82ea4a4 add private helper trait for fs shim 2020-02-23 18:52:12 +01:00
Ralf Jung
5d35548985 helpers.rs cleanup 2020-02-23 18:52:12 +01:00
bors
2752d1b74b Auto merge of #1167 - christianpoveda:shims-refactor, r=RalfJung
Reorganize shims by platform

Fixes https://github.com/rust-lang/miri/issues/1161. I am currently testing which shims belong to which platform. If you are reading this and know the answer for any of those please write me :P

Edit: this is a list of the shims I haven't been able to figure out to which platform they belong:
 -~~`malloc`~~
 -~~`calloc`~~
 -~~`posix_memalign`~~
 -~~`free`~~
 -~~`realloc`~~
 -~~`__rust_alloc`~~
 -~~`__rust_alloc_zeroed`~~
 -~~`__rust_dealloc`~~
 -~~`__rust_realloc`~~
 -~~`__rust_maybe_catch_panic`~~
 -~~`syscall`~~
 -~~`getrandom`~~
 -~~`dlsym`~~
 -~~`memcmp`~~
 -~~`memrchr`~~
 -~~`memchr`~~
 -~~`strlen`~~
 -~~`signal`~~
 -~~`sigaction`~~
 -~~`sigaltstack`~~
 -~~`sysconf`~~
 -~~`sched_getaffinity`~~
 -~~`isatty`~~
 -~~`pthread_key_create`~~
 -~~`pthread_key_delete`~~
 -~~`pthread_getspecific`~~
 -~~`pthread_setspecific`~~
 -~~`pthread_attr_init`~~
 -~~`pthread_attr_destroy`~~
 -~~`pthread_self`~~
 -~~`pthread_attr_setstacksize`~~
 -~~`pthread_attr_getstack`~~
 -~~`pthread_create`~~
 -~~`pthread_mutexattr_init`~~
 -~~`pthread_mutexattr_settype`~~
 -~~`pthread_mutex_init`~~
 -~~`pthread_mutexattr_destroy`~~
 -~~`pthread_mutex_lock`~~
 -~~`pthread_mutex_unlock`~~
 -~~`pthread_mutex_destroy`~~
 -~~`pthread_rwlock_rdlock`~~
 -~~`pthread_rwlock_unlock`~~
 -~~`pthread_rwlock_wrlock`~~
 -~~`pthread_rwlock_destroy`~~
 -~~`pthread_condattr_init`~~
 -~~`pthread_condattr_setclock`~~
 -~~`pthread_cond_init`~~
 -~~`pthread_condattr_destroy`~~
 -~~`pthread_cond_destroy`~~
 -~~`pthread_atfork`~~
 -~~`posix_fadvise`~~
 -~~`mmap`~~
 -~~`mprotect`~~
2020-02-23 17:03:30 +00:00
Christian Poveda
208665836e
panic if target platform is incorrect instead 2020-02-22 09:02:29 -05:00
Christian Poveda
c2bcab55b0
improve docs 2020-02-22 08:55:45 -05:00
Christian Poveda
9e9a090026
minor fixes 2020-02-22 02:18:42 -05:00
Ralf Jung
08332bc730 dont overwrite bootstrap flags 2020-02-21 20:06:31 +01:00
Christian Poveda
bb3a711b3e
rename platform specific shims 2020-02-19 17:53:33 -05:00
Christian Poveda
3418b40dac
remove syscall shim from macos and move getrandom to linux module 2020-02-19 17:48:16 -05:00
Christian Poveda
b213f88b58
promote memrchr to work on any platform 2020-02-19 17:48:15 -05:00
Christian Poveda
9a7bc3972c
promote open and lseek shims to posix 2020-02-19 17:48:15 -05:00
Christian Poveda
dbef2340b2
add docs for `emulate_foreign_item_by_bame 2020-02-19 17:48:15 -05:00
Christian Poveda
32bc015e35
reorganize comments for shim's classification 2020-02-19 17:48:15 -05:00
Christian Poveda
bc7513bffd
move CreateThread to windows shims 2020-02-19 17:48:15 -05:00
Christian Poveda
1dbc0c9869
remove hack for panics 2020-02-19 17:48:15 -05:00
Christian Poveda
b819493585
move remaining shims 2020-02-19 17:48:15 -05:00
Christian Poveda
63160c66cd
move pthread related functions 2020-02-19 17:48:15 -05:00
Christian Poveda
8fe7543191
add helper function for target platform checks 2020-02-19 17:47:34 -05:00
David Cook
ae7d98b68f Extract constant for minimum fd 2020-02-18 18:06:33 -06:00
David Cook
8216f3c0f3 Back out placeholder variants from FileHandle 2020-02-17 22:24:33 -06:00