Commit graph

866 commits

Author SHA1 Message Date
Ralf Jung
26af88aced add test for concurrent env var access 2024-04-26 19:47:35 +02:00
bors
d7c89cfbf8 Auto merge of #3516 - RalfJung:pathbuf, r=RalfJung
add smoke tests for basic PathBuf interactions

I wrote these while debugging [this](https://github.com/rust-lang/miri-test-libstd/actions/runs/8849912635/job/24302962983); it turns out the issue is [more complicated](https://github.com/rust-lang/rust/issues/124409) but these tests still seemed worth keeping.
2024-04-26 15:47:17 +00:00
Ralf Jung
2935cd93c2 add smoke tests for basic PathBuf interactions 2024-04-26 17:44:37 +02:00
Vadim Petrochenkov
98804c1786 debuginfo: Stabilize -Z debug-macros, -Z collapse-macro-debuginfo and #[collapse_debuginfo]
`-Z debug-macros` is "stabilized" by enabling it by default and removing.

`-Z collapse-macro-debuginfo` is stabilized as `-C collapse-macro-debuginfo`.
It now supports all typical boolean values (`parse_opt_bool`) in addition to just yes/no.

Default value of `collapse_debuginfo` was changed from `false` to `external` (i.e. collapsed if external, not collapsed if local).
`#[collapse_debuginfo]` attribute without a value is no longer supported to avoid guessing the default.
2024-04-25 22:14:47 +03:00
Ralf Jung
247e82cb83 run many-seeds tests at least a few times on all tier 1 targets 2024-04-25 09:53:34 +02:00
Ralf Jung
ea9cff254f add a test for the TLS memory leak 2024-04-25 09:51:15 +02:00
The Miri Cronjob Bot
258e5043a1 fmt 2024-04-25 05:05:41 +00:00
The Miri Cronjob Bot
ff6fc75781 Merge from rustc 2024-04-25 05:04:32 +00:00
Matthias Krüger
ecf794bc69
Rollup merge of #124335 - ChrisDenton:stabilize-absolute, r=dtolnay
Stabilize `std::path::absolute`

FCP complete in https://github.com/rust-lang/rust/issues/92750#issuecomment-2075046985
2024-04-25 00:19:56 +02:00
Chris Denton
f56afa0477
Stabilize std::path::absolute 2024-04-24 14:35:02 +00:00
bors
c1073fb36e Auto merge of #3492 - eduardosm:intrinsics-x86-avx2, r=oli-obk
Implement LLVM x86 AVX2 intrinsics
2024-04-24 12:23:03 +00:00
Gary Guo
8169c4c121 Fix miri test 2024-04-24 13:12:33 +01:00
Oli Scherer
aef0f4024a Error on using yield without also using #[coroutine] on the closure
And suggest adding the `#[coroutine]` to the closure
2024-04-24 08:05:29 +00:00
bors
bd6766fdcc Auto merge of #3507 - RalfJung:let-underscore, r=RalfJung
avoid 'let _' in tests where we actually want the value to be computed
2024-04-24 08:04:33 +00:00
Ralf Jung
193b37dbaf avoid 'let _' in tests where we actually want the value to be computed 2024-04-24 10:03:11 +02:00
bors
6c34d4605e Auto merge of #3502 - RalfJung:GetUserProfileDirectoryW, r=RalfJung
windows: basic support for GetUserProfileDirectoryW

Fixes https://github.com/rust-lang/miri/issues/3499
2024-04-24 07:09:38 +00:00
Ralf Jung
342943bc77 windows: basic support for GetUserProfileDirectoryW 2024-04-24 08:48:59 +02:00
The Miri Cronjob Bot
7e968351aa Merge from rustc 2024-04-24 05:04:52 +00:00
Matthias Krüger
918304b190
Rollup merge of #124003 - WaffleLapkin:dellvmization, r=scottmcm,RalfJung,antoyo
Dellvmize some intrinsics (use `u32` instead of `Self` in some integer intrinsics)

This implements https://github.com/rust-lang/compiler-team/issues/693 minus what was implemented in #123226.

Note: I decided to _not_ change `shl`/... builder methods, as it just doesn't seem worth it.

r? ``@scottmcm``
2024-04-23 20:17:51 +02:00
Eduardo Sánchez Muñoz
799a4ded54 Implement LLVM x86 AVX2 intrinsics 2024-04-23 18:59:53 +02:00
forcedebug
15a1b0df63 chore: fix some typos in comments
Signed-off-by: forcedebug <forcedebug@outlook.com>
2024-04-23 19:12:04 +08:00
bors
3b5d663135 Auto merge of #3493 - eduardosm:env-set, r=oli-obk
Add `-Zmiri-env-set` to set environment variables without modifying the host environment

This option allows to pass environment variables to the interpreted program without needing to modify the host environment (which may have undesired effects in some cases).
2024-04-23 09:18:59 +00:00
The Miri Cronjob Bot
cc1bf5e471 Merge from rustc 2024-04-23 05:03:55 +00:00
Matthias Krüger
8039488e59
Rollup merge of #124220 - RalfJung:interpret-wrong-vtable, r=oli-obk
Miri: detect wrong vtables in wide pointers

Fixes https://github.com/rust-lang/miri/issues/3497.
Needed to catch the UB that https://github.com/rust-lang/rust/pull/123572 will start exploiting.

r? `@oli-obk`
2024-04-23 06:24:57 +02:00
bors
aca749eefc Auto merge of #121801 - zetanumbers:async_drop_glue, r=oli-obk
Add simple async drop glue generation

This is a prototype of the async drop glue generation for some simple types. Async drop glue is intended to behave very similar to the regular drop glue except for being asynchronous. Currently it does not execute synchronous drops but only calls user implementations of `AsyncDrop::async_drop` associative function and awaits the returned future. It is not complete as it only recurses into arrays, slices, tuples, and structs and does not have same sensible restrictions as the old `Drop` trait implementation like having the same bounds as the type definition, while code assumes their existence (requires a future work).

This current design uses a workaround as it does not create any custom async destructor state machine types for ADTs, but instead uses types defined in the std library called future combinators (deferred_async_drop, chain, ready_unit).

Also I recommend reading my [explainer](https://zetanumbers.github.io/book/async-drop-design.html).

This is a part of the [MCP: Low level components for async drop](https://github.com/rust-lang/compiler-team/issues/727) work.

Feature completeness:

 - [x] `AsyncDrop` trait
 - [ ] `async_drop_in_place_raw`/async drop glue generation support for
   - [x] Trivially destructible types (integers, bools, floats, string slices, pointers, references, etc.)
   - [x] Arrays and slices (array pointer is unsized into slice pointer)
   - [x] ADTs (enums, structs, unions)
   - [x] tuple-like types (tuples, closures)
   - [ ] Dynamic types (`dyn Trait`, see explainer's [proposed design](https://github.com/zetanumbers/posts/blob/main/async-drop-design.md#async-drop-glue-for-dyn-trait))
   - [ ] coroutines (https://github.com/rust-lang/rust/pull/123948)
 - [x] Async drop glue includes sync drop glue code
 - [x] Cleanup branch generation for `async_drop_in_place_raw`
 - [ ] Union rejects non-trivially async destructible fields
 - [ ] `AsyncDrop` implementation requires same bounds as type definition
 - [ ] Skip trivially destructible fields (optimization)
 - [ ] New [`TyKind::AdtAsyncDestructor`](https://github.com/zetanumbers/posts/blob/main/async-drop-design.md#adt-async-destructor-types) and get rid of combinators
 - [ ] [Synchronously undroppable types](https://github.com/zetanumbers/posts/blob/main/async-drop-design.md#exclusively-async-drop)
 - [ ] Automatic async drop at the end of the scope in async context
2024-04-23 02:10:23 +00:00
tiif
fde24ed5bf Add localtime_r shim 2024-04-22 06:30:10 +00:00
Eduardo Sánchez Muñoz
9b9c548156 Add -Zmiri-env-set to set environment variables without modifying the host environment
This option allows to pass environment variables to the interpreted program without needing to modify the host environment (which may have undesired effects in some cases).
2024-04-21 23:08:07 +02:00
Ralf Jung
875f0c2da0 Miri: detect wrong vtables in wide pointers 2024-04-21 13:04:51 +02:00
Ralf Jung
ae37b6ec58 the mir-validation ICE test behaves strangely on Windows hosts
let's just disable it there, this code is not platform-dependent anyway
2024-04-21 12:36:16 +02:00
Ralf Jung
61a7d3d523 ensure the ICE-to-file logic does not affect our test 2024-04-20 11:42:10 +02:00
Ralf Jung
7952316aff re-bless tests 2024-04-20 08:26:48 +02:00
The Miri Cronjob Bot
b63bb1b374 Merge from rustc 2024-04-20 05:12:44 +00:00
bors
e9ebc6f800 Auto merge of #3475 - RalfJung:reduce-reuse-recycle, r=RalfJung
Address reuse improvements and fixes

- when an address gets reused, establish a happens-before link in the data race model
- do not reuse stack addresses, and make the reuse rate configurable

Fixes https://github.com/rust-lang/miri/issues/3450
2024-04-19 20:50:04 +00:00
Ralf Jung
fecd7fc937 make test not leak rustc crate hash 2024-04-19 10:59:27 +02:00
Ralf Jung
9b419a1b83 when reusing an address, most of the time only reuse from the current thread 2024-04-18 23:02:21 +02:00
Ralf Jung
48fd549cd3 when an address gets reused, establish a happens-before link in the data race model 2024-04-18 12:37:03 +02:00
bors
1ce64e717f Auto merge of #3484 - RalfJung:realloc, r=RalfJung
make realloc with a size of zero fail

Fixes https://github.com/rust-lang/miri/issues/2774
2024-04-18 10:27:42 +00:00
Ralf Jung
73e333ac44 make realloc with a size of zero fail 2024-04-18 12:06:29 +02:00
Ralf Jung
3e633981ef when suggesting RUST_BACKTRACE=1, add a special note for Miri's env var isolation 2024-04-18 12:05:08 +02:00
Ralf Jung
5ef38aca35 add test checking that we do run MIR validation 2024-04-18 11:49:56 +02:00
Ralf Jung
5c352a4e75 add test for Drop terminator on non-drop type 2024-04-18 10:23:22 +02:00
Ralf Jung
3d3550ffa0 Merge from rustc 2024-04-17 20:38:23 +02:00
Matthias Krüger
6388167811
Rollup merge of #124030 - RalfJung:adjust_alloc_base_pointer, r=oli-obk
interpret: pass MemoryKind to adjust_alloc_base_pointer

Another puzzle piece for https://github.com/rust-lang/miri/pull/3475.

The 2nd commit renames base_pointer -> root_pointer; that's how Tree Borrows already calls them and I think the term is more clear than "base pointer". In particular, this distinguishes it from "base address", since a root pointer can point anywhere into an allocation, not just its base address.

https://github.com/rust-lang/rust/pull/124018 has been rolled up already so I couldn't add it there any more.

r? ```@oli-obk```
2024-04-17 18:01:38 +02:00
bors
9776f647e6 Auto merge of #3480 - RalfJung:alloc_error_handler, r=RalfJung
directly call handle_alloc_error

Also test more codepaths. There's like 5 different things that can happen on allocation failure! Between `-Zoom`, `#[alloc_error_handler]`, and `set_alloc_error_hook`, we have 3 layers of behavior overrides. It's all a bit messy.

https://github.com/rust-lang/rust/pull/112331 seems intended to clean this up, but has not yet reached consensus.
2024-04-17 09:41:06 +00:00
Ralf Jung
9f156d38a5 no need to use miri's native stderr here 2024-04-17 09:47:16 +02:00
Ralf Jung
d7f79cc2b2 tests/utils: add fmt::Write implementations for miri's native stdout/stderr 2024-04-17 09:47:16 +02:00
Ralf Jung
d10f61313f alloc_error_handler tests: directly call handle_alloc_error; test more codepaths 2024-04-17 09:27:55 +02:00
Ralf Jung
ae7b07f2dc interpret: rename base_pointer -> root_pointer
also in Miri, "base tag" -> "root tag"
2024-04-17 07:35:48 +02:00
The Miri Cronjob Bot
2cb03ef739 fmt 2024-04-17 05:09:14 +00:00
The Miri Cronjob Bot
e8739886f2 Merge from rustc 2024-04-17 05:08:05 +00:00