| Age | Commit message (Collapse) | Author | Lines |
|
|
|
|
|
Rollup of 7 pull requests
Successful merges:
- #124570 (Miscellaneous cleanups)
- #124772 (Refactor documentation for Apple targets)
- #125011 (Add opt-for-size core lib feature flag)
- #125218 (Migrate `run-make/no-intermediate-extras` to new `rmake.rs`)
- #125225 (Use functions from `crt_externs.h` on iOS/tvOS/watchOS/visionOS)
- #125266 (compiler: add simd_ctpop intrinsic)
- #125348 (Small fixes to `std::path::absolute` docs)
Failed merges:
- #125296 (Fix `unexpected_cfgs` lint on std)
r? `@ghost`
`@rustbot` modify labels: rollup
|
|
compiler: add simd_ctpop intrinsic
Fairly straightforward addition.
cc `@rust-lang/opsem` new (extremely boring) intrinsic
|
|
|
|
|
|
|
|
Miri subtree update
r? `@ghost`
|
|
Directly implement native exception raise methods in miri
This implements the `_Unwind_RaiseException` function used on pretty much every unix system for starting unwinding. This allows removing the miri special case from libpanic_unwind for unix.
Windows still needs `miri_start_unwind` as SEH unwinding isn't supported by miri. Unlike DWARF unwinding, SEH preserves all stack frames until right after the do_catch function has executed. Because of this panic_unwind stack allocates the exception object. Miri can't currently model unwinding without destroying stack frames and as such will report a use-after-free of the exception object.
|
|
- share implementation with miri_starting_unwind
- make test use a custom unwinding class
- extend comments
- use NeedsUnwind more consistently
|
|
Windows still needs the old custom ABI as SEH unwinding isn't supported
by miri. Unlike DWARF unwinding it preserves all stack frames until
right after the do_catch function has executed. Because of this
panic_unwind stack allocates the exception object. Miri can't currently
model unwinding without destroying stack frames and as such will report
a use-after-free of the exception object.
|
|
|
|
|
|
|
|
make basic things work on Android
Fixes https://github.com/rust-lang/miri/issues/3608
|
|
support aligned_alloc for unixes.
Fixes https://github.com/rust-lang/miri/issues/3577
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Give `FileDescription::{read, write}` access to the `MiriInterpCx `
fixes #3572
|
|
Adjust Allocation Bytes used by Miri to custom MiriAllocBytes
Previously, the `MiriMachine` used `type Bytes = Box<[u8]>` for its allocations.
This PR swaps this out for a custom `MiriAllocBytes` type implemented in `alloc_bytes.rs`.
This is in anticipation of an extension to Miri's FFI, which will require its allocations to take care of alignment (the methods in `impl AllocBytes for Box<[u8]>` ignore this `_align: Align` argument).
Needs https://github.com/rust-lang/rust/pull/124492
|
|
attempt changing Bytes in MiriMachine to MiriAllocBytes
rename miri_alloc_bytes to alloc_bytes
generalize impl VisitProvenance for Allocation for any Bytes: AllocBytes
mend MiriAllocBytes -> Self::Bytes
fix Invariant documentation and bugs (drop), impl Clone
Update MiriAllocBytes description
Co-authored-by: Ralf Jung <post@ralfj.de>
Rephrase MiriAllocBytes ptr invariant
Co-authored-by: Ralf Jung <post@ralfj.de>
Update MiriAllocBytes ptr documentation
Co-authored-by: Ralf Jung <post@ralfj.de>
fix safety comment in MiriAllocBytes::clone
fix safety comment in MiriAllocBytes::from_bytes
try implementing clone without unsafe
remove derive(PartialEq,Eq,Hash), fix fmt
move ptr.is_null() check inside only necessary branch
use std::ptr::without_provenance_mut, requiring feature(strict_provenance)
align.bytes_usize() instead of align.bytes().try_into().unwrap()
Update src/provenance_gc.rs
Co-authored-by: Ralf Jung <post@ralfj.de>
fix clippy error on deref
|
|
|
|
|
|
|
|
intrinsics: just panic when they get used incorrectly
This is already what we do most of the time, so do it consistently.
|
|
|
|
|
|
Illumos part3
Fixes https://github.com/rust-lang/miri/issues/3567
|
|
fixing part of `miri test alloc/hashmap`.
|
|
Don't print unnecessary sysroot messages
Currently, when running `cargo miri setup`, we always print that a sysroot is being prepared, even if we just bail out of building after checking the hash. So that message is wrong; we didn't actually prepare a sysroot.
We also always print the preparing message for `cargo miri run`, even if no sysroot is prepared.
With this PR, `cargo miri run` prints no sysroot messages when an existing one is reused, and when a redundant `cargo miri setup` is requested, we print:
```
A sysroot for Miri is already available in `/home/ben/.cache/miri`.
```
|
|
|
|
|
|
|
|
|
|
|
|
|
|
support `f*_algebraic`
supports the [`f*_algebraic`](https://doc.rust-lang.org/std/intrinsics/fn.fadd_algebraic.html) intrinsics.
|
|
|
|
alloc: update comments around malloc() alignment
Also separate the C heap shims form the Windows heap shims; their guarantees aren't quite the same.
|
|
|
|
|
|
|
|
|
|
|
|
Make `Ty::builtin_deref` just return a `Ty`
Nowhere in the compiler are we using the mutability part of the `TyAndMut` that we used to return.
|
|
|