| Age | Commit message (Collapse) | Author | Lines |
|
|
|
|
|
r=compiler-errors
MIR validation: ensure that downcast projection is followed by field projection
Cc https://github.com/rust-lang/rust/issues/120369
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
avoid using macro_use
This is the Miri version of https://github.com/rust-lang/rust/pull/124914
|
|
|
|
solarish platform: add support for available-parallelism.
|
|
|
|
|
|
completely refactor how we manage blocking and unblocking threads
This hides a lot of invariants from the implementation of the synchronization primitives, and makes sure we never have to release or acquire a vector clock on another thread but the active one.
|
|
|
|
unix/fs: a bit of cleanup in macos_fbsd_readdir_r
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
solaris add support for threadname.
from std::unix::thread::set_name, pthread_setname_np is a weak symbol (not always had been available). Other than that, similar to linux only having twice of its buffer limit.
|
|
Bugfix `MiriAllocBytes` to guarantee different addresses
Fix in `alloc_bytes.rs` following https://github.com/rust-lang/miri/pull/3526
Currently when an allocation of `size == 0` is requested we return a `std::ptr::without_provenance_mut(align)`, but this means returned `ptr`s may overlap, which breaks things.
|
|
|
|
add back some tokio features
Turns out I went a bit too fer when I removed features, so `socketpair` was no longer used.
|
|
|
|
|
|
|
|
|
|
from std::unix::thread::set_name, pthread_setname_np is a weak symbol
(not always had been available). Other than that, similar to
linux only having twice of its buffer limit.
|
|
|
|
|
|
rustc: Use `tcx.used_crates(())` more
And explain when it should be used.
Addresses comments from https://github.com/rust-lang/rust/pull/121167.
|
|
|
|
|
|
|
|
interpret: make overflowing binops just normal binops
Follow-up to https://github.com/rust-lang/rust/pull/125173 (Cc `@scottmcm)`
|
|
miri: rename intrinsic_fallback_checks_ub to intrinsic_fallback_is_spec
Checking UB is not the only concern, we also have to make sure we are not losing out on non-determinism.
r? ``@oli-obk`` (not urgent, take your time)
|
|
clock_gettime support CLOCK_REALTIME/CLOCK_MONOTONIC clockid_t.
localtime_r is supported only tm struct is more limited than other
supported platforms.
|
|
And explain when it should be used.
|
|
offset: allow zero-byte offset on arbitrary pointers
As per prior `@rust-lang/opsem` [discussion](https://github.com/rust-lang/opsem-team/issues/10) and [FCP](https://github.com/rust-lang/unsafe-code-guidelines/issues/472#issuecomment-1793409130):
- Zero-sized reads and writes are allowed on all sufficiently aligned pointers, including the null pointer
- Inbounds-offset-by-zero is allowed on all pointers, including the null pointer
- `offset_from` on two pointers derived from the same allocation is always allowed when they have the same address
This removes surprising UB (in particular, even C++ allows "nullptr + 0", which we currently disallow), and it brings us one step closer to an important theoretical property for our semantics ("provenance monotonicity": if operations are valid on bytes without provenance, then adding provenance can't make them invalid).
The minimum LLVM we require (v17) includes https://reviews.llvm.org/D154051, so we can finally implement this.
The `offset_from` change is needed to maintain the equivalence with `offset`: if `let ptr2 = ptr1.offset(N)` is well-defined, then `ptr2.offset_from(ptr1)` should be well-defined and return N. Now consider the case where N is 0 and `ptr1` dangles: we want to still allow offset_from here.
I think we should change offset_from further, but that's a separate discussion.
Fixes https://github.com/rust-lang/rust/issues/65108
[Tracking issue](https://github.com/rust-lang/rust/issues/117945) | [T-lang summary](https://github.com/rust-lang/rust/pull/117329#issuecomment-1951981106)
Cc `@nikic`
|
|
|
|
|
|
|