Commit Graph

5061 Commits

Author SHA1 Message Date
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
bors
515287f114 Auto merge of #1480 - RalfJung:diagnostic-stacktrace-fix, r=oli-obk
fix non-fatal diagnostics stacktraces

Our non-fatal diagnostics are printed *after* completing the step that triggered them, which means the span and stacktrace used for them is that of the *next* MIR statement being executed. That's quite bad, obviously, as pointing to where in the source something happens is their entire point.

Here's an example:
```rust
use std::ptr;

static mut PTR: *mut u8 = ptr::null_mut();

fn get_ptr() -> *const u8 { unsafe { PTR }}

fn cause_ub() { unsafe {
    let _x = &*get_ptr();
} }

fn main() { unsafe {
   let mut l = 0;
   PTR = &mut l;
   let r = &mut *PTR;
   cause_ub();
   let _x = *r;
} }
```
This example is UB; if you track the pointer tag that is given in the final error, it points to the entire body of `cause_ub` as a span, instead of the `&*get_ptr();`.

I am not sure what the best way is to fix this. The cleanest way would be to capture a stack trace before the step and use it in case of a diagnostic, but that seems silly perf-wise. So instead I went with reconstructing the old stacktrace by going back one step in the MIR. This is however not possible if we were executing a `Terminator`... I think those cannot cause diagnostics but still, this is not great.

Any ideas?
r? @oli-obk
2020-07-17 11:40:40 +00:00
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
bors
0454dabcfb Auto merge of #1479 - RalfJung:fs-nocast, r=RalfJung
fs: remove an unnecessary intermediate cast
2020-07-16 10:17:23 +00:00
Ralf Jung
c28786d320 remove an unnecessary intermediate cast 2020-07-16 12:16:43 +02:00
bors
e5f2b1b3ef Auto merge of #1478 - RalfJung:readme, r=RalfJung
make cfg(miri) greppable
2020-07-15 08:10:02 +00:00
Ralf Jung
6dbfb2d9de make cfg(miri) greppable 2020-07-15 10:09:28 +02:00
bors
c830142e60 Auto merge of #1477 - RalfJung:rustup, r=RalfJung
rustup; fix Windows TLS
2020-07-15 06:43:14 +00: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
bors
3e734ac6ef Auto merge of #1475 - RalfJung:dangcast, r=RalfJung
test casting a dangling ptr back from an int
2020-07-11 18:57:28 +00:00
Ralf Jung
f68bba9906 test casting a dangling ptr back from an int 2020-07-11 20:56:47 +02:00
bors
eee22ffdda Auto merge of #1474 - RalfJung:canonical, r=RalfJung
go back to using canonicalize()

Newer xargo should hopefully work with the paths this produces on Windows.
2020-07-11 09:08:03 +00:00
Ralf Jung
15466e00b0 go back to using canonicalize() 2020-07-11 11:07:17 +02:00
Samrat Man Singh
2602e951c0 Handle reads on STDIN 2020-07-11 14:06:49 +05:30
bors
ade99c3bed Auto merge of #1473 - Stupremee:no-ice-if-no-main-fn, r=oli-obk
Early exit if program doesn't contain a main function

Resolves #1452
2020-07-09 15:35:28 +00:00
Justus K
d23e245f38
Move no_main test to compile-fail 2020-07-09 17:21:09 +02:00
Justus K
c93fc933bd
Add ui test for early exiting if no main 2020-07-09 14:08:45 +02:00
Justus K
22e7a6263b
Early exit if program doesn't contain a main fn 2020-07-09 13:16:38 +02:00
bors
eb5ff1791b Auto merge of #1472 - RalfJung:abs, r=RalfJung
better way to get an absolute path

suggested by @matklad
2020-07-09 11:03:15 +00:00
Ralf Jung
2fbc4aa7ca
Cleanup code
Co-authored-by: Aleksey Kladov <aleksey.kladov@gmail.com>
2020-07-09 13:02:42 +02:00
Ralf Jung
ee056ccf7b better way to get an absolute path 2020-07-09 12:45:35 +02:00
bors
b245786f9d Auto merge of #1471 - RalfJung:win, r=RalfJung
on Windows, strip the '\\?\' prefix from the canonical path

This should help with https://github.com/rust-lang/rust/pull/74146#issuecomment-655723028
2020-07-09 07:00:39 +00:00
Ralf Jung
7d9d74e065 on Windows, strip the '\\?\' prefix from the canonical path 2020-07-09 08:59:47 +02:00
bors
578aebf478 Auto merge of #1470 - RalfJung:machine-tracking, r=RalfJung
we cannot track all machine memory any more due to int-ptr-casts

Fixes a regression introduced by https://github.com/rust-lang/rust/pull/74006
2020-07-08 10:02:13 +00: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
bors
5e94f57cb3 Auto merge of #1468 - RalfJung:uninit-validation, r=RalfJung
Test uninit memory validation

This adds the tests for https://github.com/rust-lang/rust/pull/74059.
2020-07-07 20:59:17 +00:00
Ralf Jung
04019eec3c rustup 2020-07-07 22:57:58 +02:00
Ralf Jung
6c2521f54f adjust error messages 2020-07-07 22:48:51 +02:00
Ralf Jung
28b44d970c test validation of uninit memory (used to ICE) 2020-07-07 22:48:51 +02:00
bors
975513728e Auto merge of #1469 - RalfJung:relative, r=RalfJung
support relative XARGO_RUST_SRC
2020-07-05 18:01:56 +00:00
Ralf Jung
ab65cb3c67 support relative XARGO_RUST_SRC 2020-07-05 20:01:12 +02:00
bors
9a0605d62f Auto merge of #1466 - RalfJung:target, r=RalfJung
set --target when building miri

This helps cargo tell apart `./miri` builds and `cargo check` (e.g. through rust-analyzer).
See https://github.com/rust-lang/cargo/issues/8440.
2020-07-03 09:20:07 +00:00
Ralf Jung
e310e2f0b9 set --target when building miri
This helps cargo tell apart `./miri` builds and `cargo check` (e.g. through rust-analyzer).
See https://github.com/rust-lang/cargo/issues/8440.
2020-07-03 11:18:47 +02:00
bors
86a7c555ed Auto merge of #1465 - nbdd0121:patch-1, r=RalfJung
Remove likely and unlikely from intrinsics shim

They are now implemented in MIR interpreter by rust-lang/rust#73778
2020-07-03 06:06:37 +00: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
bors
e7ef64fb74 Auto merge of #1463 - RalfJung:track-call-id, r=oli-obk
add option to track call IDs
2020-07-02 12:52:33 +00:00
bors
b4ccb07cc8 Auto merge of #1464 - RalfJung:rustup, r=RalfJung
rustup
2020-07-02 08:48:45 +00:00
Ralf Jung
6ca67a346b rustup 2020-07-02 10:48:01 +02:00
Ralf Jung
c379793cde add option to track call IDs 2020-07-02 10:33:54 +02:00
bors
fd81012477 Auto merge of #1462 - RalfJung:ignore-windows, r=RalfJung
fix some ignore-windows comments

and make that more consistent
2020-06-28 18:41:17 +00:00
Ralf Jung
fcdacce4b1 fix some ignore-windows comments 2020-06-28 20:40:20 +02:00
bors
2dfa6c1a46 Auto merge of #1461 - RalfJung:rwlock-win, r=oli-obk
Implement rwlocks on Windows

Fixes https://github.com/rust-lang/miri/issues/1059
2020-06-28 10:59:34 +00: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