Commit Graph

152209 Commits

Author SHA1 Message Date
onur-ozkan f6d3cd7345 invoke cmake check with run_always
Signed-off-by: onur-ozkan <work@onurozkan.dev>
2024-09-23 19:47:12 +03:00
onur-ozkan 37ce36f130 skip FileCheck check when running in dry-run mode
Signed-off-by: onur-ozkan <work@onurozkan.dev>
2024-09-20 19:33:14 +03:00
onur-ozkan 17aab60d6f remove workaround for make prepare and use dry-run build instead
Signed-off-by: onur-ozkan <work@onurozkan.dev>
2024-09-20 17:31:36 +03:00
bors 28e8f01c2a Auto merge of #130483 - matthiaskrgr:rollup-q1r0g0y, r=matthiaskrgr
Rollup of 5 pull requests

Successful merges:

 - #129477 (Fix fluent diagnostics)
 - #129674 (Add new_cyclic_in for Rc and Arc)
 - #130452 (Update Trusty target maintainers)
 - #130467 (Miri subtree update)
 - #130477 (Revert #129749 to fix segfault in LLVM)

r? `@ghost`
`@rustbot` modify labels: rollup
2024-09-17 19:37:03 +00:00
Matthias Krüger 90873122a7 Rollup merge of #130467 - RalfJung:miri-sync, r=RalfJung
Miri subtree update

r? `@ghost`
2024-09-17 20:45:51 +02:00
Matthias Krüger 084e93a1cf Rollup merge of #130452 - randomPoison:trusty-update-maintainers, r=ehuss
Update Trusty target maintainers

Remove Stephen Crane from the list of Trusty target maintainers and add Andrei Homescu (`@ahomescu)` and Chris Wailes.
2024-09-17 20:45:50 +02:00
Matthias Krüger 732ad59779 Rollup merge of #129988 - arnaudgolfouse:modify-locale_resources, r=davidtwco
Use `Vec` in `rustc_interface::Config::locale_resources`

This allows a third-party tool to injects its own resources, when receiving the config via `rustc_driver::Callbacks::config`.
2024-09-17 17:28:32 +02:00
bors b880024f29 Auto merge of #3891 - tiif:tokiotest, r=RalfJung
Fix tokio test ICE

Fixes #3858

It turned out that the issue mentioned [here](https://github.com/rust-lang/miri/issues/3858#issuecomment-2336726299) is the exact cause of ICE.
So in this PR, I changed the type of ``EpollEventInterest::epfd`` from ``i32`` to ``WeakFileDescriptionRef``.
2024-09-17 09:49:34 +00:00
tiif 143710ff45 Tokio ICE fix: Changed the type of EpollEventInterest::epfd from i32 to WeakFileDescriptionRef 2024-09-17 17:46:33 +08:00
bors d0f4a526cb Auto merge of #3894 - rust-lang:rustup-2024-09-17, r=RalfJung
Automatic Rustup
2024-09-17 07:26:48 +00:00
bors 9c3a392348 Auto merge of #3893 - rust-lang:autolabel, r=RalfJung
Automatically add/remove labels when github review (requests) are used
2024-09-17 07:00:09 +00:00
The Miri Cronjob Bot c5f5cfcfbc fmt 2024-09-17 05:05:40 +00:00
The Miri Cronjob Bot 48440b1403 Merge from rustc 2024-09-17 05:04:34 +00:00
The Miri Cronjob Bot 540b4da0f1 Preparing for merge from rustc 2024-09-17 04:56:57 +00:00
bors c8dff289a0 Auto merge of #130456 - matthiaskrgr:rollup-h2qvk1f, r=matthiaskrgr
Rollup of 4 pull requests

Successful merges:

 - #130380 (coverage: Clarify some parts of coverage counter creation)
 - #130427 (run_make_support: rectify symlink handling)
 - #130447 (rustc_llvm: update for llvm/llvm-project@2ae968a0d9fb61606b020e898d88…)
 - #130448 (fix: Remove duplicate `LazyLock` example.)

r? `@ghost`
`@rustbot` modify labels: rollup
2024-09-17 03:40:29 +00:00
Nicole LeGare 1b252980ba Update Trusty target maintainers 2024-09-16 16:24:01 -07:00
Lukas Markeffsky 3db930a463 assert that unexpectedly unsized fields are sized in the param env 2024-09-17 00:06:56 +02:00
Oli Scherer e04dc624a7 Automatically add/remove labesl when github review (requests) are used 2024-09-16 23:09:32 +02:00
Oli Scherer 4dabcc3ab4 Fix run --dep 2024-09-16 23:05:42 +02:00
Oli Scherer 987702f6b9 Refator DependencyBuilder construction 2024-09-16 23:05:42 +02:00
Oli Scherer 9f9f19810f Bump ui test 2024-09-16 23:05:42 +02:00
Lukas Markeffsky 697450151c layout computation: eagerly error for unexpected unsized fields 2024-09-16 15:53:21 +02:00
Lukas Markeffsky 16be6666d4 make LayoutCx not generic 2024-09-16 15:53:17 +02:00
许杰友 Jieyou Xu (Joe) 1b86340218 run_make_support: rectify symlink handling
Avoid confusing Unix symlinks and Windows symlinks, and since their
semantics are quite different we should avoid trying to make it to
automagic in how symlinks are created and deleted. Notably, the tests
should reflect what type of symlinks are to be created to match what std
does to make it less surprising for test readers.
2024-09-16 12:57:44 +00:00
Jubilee f64d1c1f8f Rollup merge of #130420 - jieyouxu:build_helpers_docs, r=onur-ozkan
Register tool docs for `src/tools/build_helper`

Fixes #130355.
2024-09-15 23:51:26 -07:00
Jubilee 9025fe9e64 Rollup merge of #130336 - onur-ozkan:simple-improvement, r=albertlarsan68
simplify `Build::update_existing_submodule`

`Build::update_existing_submodule` is already doing the same thing..
2024-09-15 23:51:25 -07:00
Ralf Jung 5b8a18f959 fix clippy lints 2024-09-16 08:32:19 +02:00
The Miri Cronjob Bot 1692d12c1c fmt 2024-09-16 05:07:31 +00:00
The Miri Cronjob Bot 4d824fd5b7 Merge from rustc 2024-09-16 05:06:25 +00:00
The Miri Cronjob Bot ffcaa7fdde Preparing for merge from rustc 2024-09-16 04:58:35 +00:00
bors 39b7669347 Auto merge of #130220 - RalfJung:float-classify, r=workingjubilee
simplify float::classify logic

I played around with the float-classify test in the hope of triggering x87 bugs by strategically adding `black_box`, and still the exact expression `@beetrees` suggested [here](https://github.com/rust-lang/rust/pull/129835#issuecomment-2325661597) remains the only case I found where we get the wrong result on x87. Curiously, this bug only occurs when MIR optimizations are enabled -- probably the extra inlining that does is required for LLVM to hit the right "bad" case in the backend. But even for that case, it makes no difference whether `classify` is implemented in the simple bit-pattern-based version or the more complicated version we had before.

Without even a single testcase that can distinguish our `classify` from the naive version, I suggest we switch to the naive version.
2024-09-16 03:36:03 +00:00
bors c16ff44537 Auto merge of #130377 - weihanglo:update-cargo, r=weihanglo
Update cargo

25 commits in c1fa840a85eca53818895901a53fae34247448b2..a9a418d1a22f29e7dfd034e3b93f15657e608a29
2024-08-29 21:03:53 +0000 to 2024-09-15 19:13:12 +0000
- chore: revert change to Cargo.lock in f25806c (rust-lang/cargo#14547)
- Disable the shell_completions tests (rust-lang/cargo#14546)
- fix(vendor): trust crate version only when coming from registries (rust-lang/cargo#14530)
- docs: Feature resolver version 2: clarify use of 'target' (rust-lang/cargo#14540)
- Update docs for how cargo is published (rust-lang/cargo#14539)
- feat: Add native comlpetion with CompleteEnv under the nightly (rust-lang/cargo#14493)
- fix(new): Add to workspace relative to manifest, not current-dir (rust-lang/cargo#14505)
- Fix parsing of comma separated values in --crate-type flag (rust-lang/cargo#14499)
- Include public/private dependency status in `cargo metadata` (rust-lang/cargo#14504)
- Remove unnecessary symbols (rust-lang/cargo#14519)
- docs: bin source can be `src/main.rs` and/or in `src/bin/` (rust-lang/cargo#14515)
- fix(toml): Don't require MSRV bump for pub/priv (rust-lang/cargo#14507)
- bail before packaging on same version (rust-lang/cargo#14448)
- Implement path-bases (RFC 3529) 2/n: `cargo [add|remove|update]` support (rust-lang/cargo#14427)
- Publish workspace (rust-lang/cargo#14433)
- Bump ci's version of cargo-semver-version (rust-lang/cargo#14503)
- Document -Zpackage-workspace (rust-lang/cargo#14496)
- uplift windows gnullvm import libraries (rust-lang/cargo#14451)
- Bump to 0.84.0; update changelog (rust-lang/cargo#14495)
- Fix cargo add behaving different when translating package name (rust-lang/cargo#13765)
- chore(deps): update rust crate core-foundation to 0.10.0 (rust-lang/cargo#14475)
- feat(resolve): Report MSRV compatible version instead of incomptible (rust-lang/cargo#14471)
- Don't automatically include the current crate when packaging (rust-lang/cargo#14488)
- Fix elided lifetime (rust-lang/cargo#14487)
- chore(deps): update rust crate pasetors to 0.7.0 (rust-lang/cargo#14478)
2024-09-16 01:00:19 +00:00
许杰友 Jieyou Xu (Joe) 1f48a67a25 bootstrap: register tool docs for src/tools/build_helper 2024-09-16 00:33:33 +00:00
Matthias Krüger 21df3ff19e Rollup merge of #130151 - ChrisDenton:slow-ci, r=Mark-Simulacrum
Use a small runner for msvc-ext2 job

Hopefully this should eliminate the errors from this job. The only question is how long it takes.

try-job: x86_64-msvc-ext2
2024-09-15 23:56:34 +02:00
Weihang Lo db19d43e42 Update cargo 2024-09-15 15:50:49 -04:00
Matthias Krüger 96195a5e24 Rollup merge of #130342 - RalfJung:slice-idx-overflow, r=saethlin
interpret, miri: fix dealing with overflow during slice indexing and allocation

This is mostly to fix https://github.com/rust-lang/rust/issues/130284.

I then realized we're using somewhat sketchy arguments for a similar multiplication in `copy`/`copy_nonoverlapping`/`write_bytes`,  so I made them all share the same function that checks exactly the right thing. (The intrinsics would previously fail on allocations larger than `1 << 47` bytes... which are theoretically possible maybe? Anyway it seems conceptually wrong to use any other bound than `isize::MAX` here.)
2024-09-15 16:01:38 +02:00
Matthias Krüger 18a93ca65e Rollup merge of #130293 - gurry:130142-lint-level-issue, r=cjgillot
Fix lint levels not getting overridden by attrs on `Stmt` nodes

Fixes #130142. See comments on the issue for context.

r? `@cjgillot`
2024-09-15 16:01:37 +02:00
Matthias Krüger 8ad52ddf9e Rollup merge of #130110 - onur-ozkan:configurable-dist-vendor, r=Kobzol,Mark-Simulacrum
make dist vendoring configurable

Adds a new option `dist.vendor` which allows people to decide whether to vendor dependencies for their custom distribution tarball builds. Note that our builds will not be affected, as the default for this option is the same as the previous vendoring condition from bootstrap.
2024-09-15 16:01:37 +02:00
Matthias Krüger 6ac598a472 Rollup merge of #129828 - RalfJung:miri-data-race, r=saethlin
miri: treat non-memory local variables properly for data race detection

Fixes https://github.com/rust-lang/miri/issues/3242

Miri has an optimization where some local variables are not represented in memory until something forces them to be stored in memory (most notably, creating a pointer/reference to the local will do that). However, for a subsystem triggering on memory accesses -- such as the data race detector -- this means that the memory access seems to happen only when the local is moved to memory, instead of at the time that it actually happens. This can lead to UB reports in programs that do not actually have UB.

This PR fixes that by adding machine hooks for reads and writes to such efficiently represented local variables. The data race system tracks those very similar to how it would track reads and writes to addressable memory, and when a local is moved to memory, the clocks get overwritten with the information stored for the local.
2024-09-15 16:01:36 +02:00
Ralf Jung 339f68bd6c use early return for race_detecting() logic 2024-09-15 13:25:26 +02:00
Ralf Jung 5f3bec427c we can test more things on Solarish, and update its status in the README 2024-09-15 12:45:30 +02:00
Ralf Jung f394c6ce8c test std::time APIs on FreeBSD and Solarish 2024-09-15 12:45:30 +02:00
Ralf Jung 8ee38bf230 add Android pthread support 2024-09-15 12:45:29 +02:00
Ralf Jung cb445d0188 make pthread-threadname nicer with cfg-if 2024-09-15 12:45:29 +02:00
Ralf Jung 2ed91881ef enable std::sync tests on Solarish 2024-09-15 12:05:23 +02:00
Ralf Jung 2cdf5f7e69 move two tests to a better location 2024-09-15 12:03:20 +02:00
Ralf Jung 4000027084 pthread: add FreeBSD, remove PTHREAD_MUTEX_NORMAL_FLAG hack
On FreeBSD, DEFAULT maps to ERRORCK. This clashes with the existing PTHREAD_MUTEX_NORMAL_FLAG:
hack so we replace it by a different hack that works better cross-platform.

Also fix a case of "accidental early UB" in a UB test -- pthread_mutexattr_t must be initialized.
2024-09-15 11:58:51 +02:00
Matthias Krüger 011289c9d4 Rollup merge of #129195 - RalfJung:const-mut-refs, r=fee1-dead
Stabilize `&mut` (and `*mut`) as well as `&Cell` (and `*const Cell`) in const

This stabilizes `const_mut_refs` and `const_refs_to_cell`. That allows a bunch of new things in const contexts:
- Mentioning `&mut` types
- Creating `&mut` and `*mut` values
- Creating `&T` and `*const T` values where `T` contains interior mutability
- Dereferencing `&mut` and `*mut` values (both for reads and writes)

The same rules as at runtime apply: mutating immutable data is UB. This includes mutation through pointers derived from shared references; the following is diagnosed with a hard error:
```rust
#[allow(invalid_reference_casting)]
const _: () = {
    let mut val = 15;
    let ptr = &val as *const i32 as *mut i32;
    unsafe { *ptr = 16; }
};
```

The main limitation that is enforced is that the final value of a const (or non-`mut` static) may not contain `&mut` values nor interior mutable `&` values. This is necessary because the memory those references point to becomes *read-only* when the constant is done computing, so (interior) mutable references to such memory would be pretty dangerous. We take a multi-layered approach here to ensuring no mutable references escape the initializer expression:
- A static analysis rejects (interior) mutable references when the referee looks like it may outlive the current MIR body.
- To be extra sure, this static check is complemented by a "safety net" of dynamic checks. ("Dynamic" in the sense of "running during/after const-evaluation, e.g. at runtime of this code" -- in contrast to "static" which works entirely by looking at the MIR without evaluating it.)
  - After the final value is computed, we do a type-driven traversal of the entire value, and if we find any `&mut` or interior-mutable `&` we error out.
  - However, the type-driven traversal cannot traverse `union` or raw pointers, so there is a second dynamic check where if the final value of the const contains any pointer that was not derived from a shared reference, we complain. This is currently a future-compat lint, but will become an ICE in #128543. On the off-chance that it's actually possible to trigger this lint on stable, I'd prefer if we could make it an ICE before stabilizing const_mut_refs, but it's not a hard blocker. This part of the "safety net" is only active for mutable references since with shared references, it has false positives.

Altogether this should prevent people from leaking (interior) mutable references out of the const initializer.

While updating the tests I learned that surprisingly, this code gets rejected:
```rust
const _: Vec<i32> = {
    let mut x = Vec::<i32>::new(); //~ ERROR destructor of `Vec<i32>` cannot be evaluated at compile-time
    let r = &mut x;
    let y = x;
    y
};
```
The analysis that rejects destructors in `const` is very conservative when it sees an `&mut` being created to `x`, and then considers `x` to be always live. See [here](https://github.com/rust-lang/rust/issues/65394#issuecomment-541499219) for a longer explanation. `const_precise_live_drops` will solve this, so I consider this problem to be tracked by https://github.com/rust-lang/rust/issues/73255.

Cc `@rust-lang/wg-const-eval` `@rust-lang/lang`
Cc https://github.com/rust-lang/rust/issues/57349
Cc https://github.com/rust-lang/rust/issues/80384
2024-09-15 11:55:45 +02:00
onur-ozkan 13542cdb80 add change entry for dist.vendor
Signed-off-by: onur-ozkan <work@onurozkan.dev>
2024-09-15 12:24:07 +03:00
onur-ozkan 741b3164d8 make dist vendoring configurable
Signed-off-by: onur-ozkan <work@onurozkan.dev>
2024-09-15 12:23:02 +03:00