Commit graph

315541 commits

Author SHA1 Message Date
Matthias Krüger
807a5cefd2
Rollup merge of #147938 - const-clone-slice, r=tgross35
Add const cloning of slices and tests

As discussed in https://github.com/rust-lang/rust/pull/143628#discussion_r2390170336, splitting off slice cloning as a separate PR.
r? @tgross35
2026-01-12 00:02:52 +01:00
rust-bors[bot]
44a5b55557
Auto merge of #150748 - nnethercote:canonicalizer-cleanups, r=lcnr
Canonicalizer cleanups

Some cleanups in and around the canonicalizers, found while I was looking closely at this code.

r? @lcnr
2026-01-11 22:58:38 +00:00
Nicholas Nethercote
e7036b136f clippy: remove ty_has_erased_regions.
It duplicates `has_erased_regions` from the compiler.
2026-01-12 09:22:58 +11:00
Nicholas Nethercote
46d8c2beeb Clean up src/dst transmute mess.
- Remove the vacuous `Types`, which provides extremely little value.
- Make sure `src` comes before `dst` in all transmute-related functions.
  (Currently it's a mix: sometimes `src` is first, sometimes it is
  second`.)
2026-01-12 09:22:58 +11:00
Nicholas Nethercote
5e510929c6 Remove useless call to erase_and_anonymize_regions.
The only thing we do with the result is consult the `.def_id` field,
which is unaffected by `erase_and_anonymize_regions`.
2026-01-12 09:22:58 +11:00
Nicholas Nethercote
02e0879c5d Remove redundant call to erase_and_anonymize_regions.
The exact same call appears earlier in this function.
2026-01-12 09:22:58 +11:00
Nicholas Nethercote
71d1b2ca7f Whitespace fixes. 2026-01-12 08:51:49 +11:00
Nicholas Nethercote
2ae298711f Replace two BottomUpFolders with fold_regions.
Because these folders only change regions.

Note: `BottomUpFolder` folds all regions, while `fold_regions` skips
some bound regions. But that's ok because these two folders only modify
`ReVar`s.
2026-01-12 08:51:49 +11:00
rust-bors[bot]
b68e16cfc0
Auto merge of #150741 - petrochenkov:modsplitfast, r=nnethercote
resolve: Use `Macros20NormalizedIdent` in more interfaces

It allows to avoid expensive double normalization in some cases.
This is an attempt to fix the perf regressions from https://github.com/rust-lang/rust/pull/149681.
2026-01-11 19:23:22 +00:00
vsriram
8d1d88bfc4 ui: add test for normalizing const projections with assoc const equality 2026-01-12 00:07:07 +05:30
Usman Akinyemi
76ad528d32 rustc_parse_format: improve diagnostics for unsupported python numeric grouping
Detect Python-style numeric grouping syntax in format strings (e.g. `{x:,}`)
and emit a clear diagnostic explaining that it is not supported in Rust.
This helps users coming from Python understand the error without exposing
the full set of valid Rust format specifiers.

Signed-off-by: Usman Akinyemi <usmanakinyemi202@gmail.com>
2026-01-11 23:42:38 +05:30
Guillaume Gomez
ef1e4e65b7 Move checks from check_doc_attrs directly into rustc_attr_parsing 2026-01-11 18:36:03 +01:00
rust-bors[bot]
7c41ee66db
Auto merge of #150932 - weihanglo:update-cargo, r=weihanglo
Update cargo submodule

5 commits in 8c133afcd5e0d69932fe11f5907683723f8d361d..6d1bd93c47f059ec1344cb31e68a2fb284cbc6b1
2026-01-09 03:50:15 +0000 to 2026-01-10 12:53:59 +0000
- fix: preserve `dep_name` for build script metadata  (rust-lang/cargo#16494)
- refactor(toml): clarify `to_dependency` for config patch (rust-lang/cargo#16492)
- Add `--id` flag to `cargo report timings` and `cargo report rebuilds` (rust-lang/cargo#16490)
- Display lockfile path in very verbose mode when blocking (rust-lang/cargo#16491)
- fix(info): resolve underscore vs hyphen mismatch in schema lookup (rust-lang/cargo#16455)

---

An extra submodule update right after <https://github.com/rust-lang/rust/pull/150739> due to a relatively impactful nightly regression <https://github.com/rust-lang/cargo/issues/16493>
2026-01-11 15:36:33 +00:00
rust-bors[bot]
1279939b38
Auto merge of #150957 - matthiaskrgr:rollup-Cf6MsNU, r=matthiaskrgr
Rollup of 14 pull requests

Successful merges:

 - rust-lang/rust#148941 (stabilize `Peekable::next_if_map` (`#![feature(peekable_next_if_map)]`))
 - rust-lang/rust#150368 (adding Ordering enum to minicore.rs, importing minicore in "tests/assembly-llvm/rust-abi-arg-attr.rs" test file)
 - rust-lang/rust#150668 (Unix implementation for stdio set/take/replace)
 - rust-lang/rust#150743 (Reword the collect() docs)
 - rust-lang/rust#150776 (Fix the connect_error test on FreeBSD 15+)
 - rust-lang/rust#150781 (Use `rand` crate more idiomatically)
 - rust-lang/rust#150812 (Bump `diesel` to the most recent commit in `cargotest`)
 - rust-lang/rust#150862 (std: sys: fs: uefi: Implement File::flush)
 - rust-lang/rust#150873 (Reenable GCC CI download)
 - rust-lang/rust#150908 (llvm: Update `reliable_f16` configuration for LLVM22)
 - rust-lang/rust#150918 (std: sys: fs: uefi: Implement File::seek)
 - rust-lang/rust#150922 (Subscribe myself to attr parsing)
 - rust-lang/rust#150930 (Remove special case for `AllowedTargets::CrateLevel`)
 - rust-lang/rust#150942 (Port `#[rustc_has_incoherent_inherent_impls]` to attribute parser)

Failed merges:

 - rust-lang/rust#150943 (Port `#[must_not_suspend]` to attribute parser)

r? @ghost
2026-01-11 12:16:33 +00:00
Jana Dönszelmann
d993bd1bb1
improve eii macro by using ecx methods 2026-01-11 13:03:05 +01:00
Jonathan Brouwer
eac7bda659
Completely list all unparsed attributes 2026-01-11 12:56:00 +01:00
Jonathan Brouwer
6153fa0f88
Fix that cfg attribute was incorrectly not a parsed attribute 2026-01-11 12:12:53 +01:00
Tristan Guichaoua
d772c3d99d add freeze file times on Windows 2026-01-11 12:05:49 +01:00
Jakub Beránek
ad713ab666
Use both bors e-mails for CI postprocessing git lookup 2026-01-11 11:32:32 +01:00
Jakub Beránek
cf580b8e2b
Revert bors email to the original homu one 2026-01-11 11:32:32 +01:00
Jonathan Brouwer
f0da7832b7
Update uitests 2026-01-11 10:54:45 +01:00
Jonathan Brouwer
b5dd72d292
Port #[collapse_debuginfo] to the new attribute parsing system 2026-01-11 10:54:45 +01:00
Jakub Beránek
faea581d45
Remove references to bors2 2026-01-11 10:35:13 +01:00
Matthias Krüger
83924065f7
Rollup merge of #150942 - port_more_attrs, r=jdonszelmann
Port `#[rustc_has_incoherent_inherent_impls]` to attribute parser

Tracking issue: rust-lang/rust#131229
no tests changed here at all, so maybe we should add some but would like to know what kind of tests would be good to add

r? @JonathanBrouwer
2026-01-11 09:56:52 +01:00
Matthias Krüger
c6cf1c3ab8
Rollup merge of #150930 - crate_level, r=jdonszelmann
Remove special case for `AllowedTargets::CrateLevel`

r? @jdonszelmann
2026-01-11 09:56:51 +01:00
Matthias Krüger
7fd7eecf1f
Rollup merge of #150922 - subscribe-attr-parsing, r=Urgau
Subscribe myself to attr parsing
2026-01-11 09:56:51 +01:00
Matthias Krüger
3b1f270742
Rollup merge of #150918 - uefi-fs-seek, r=jhpratt
std: sys: fs: uefi: Implement File::seek

- Tested using OVMF on QEMU.

@rustbot label +O-UEFI
2026-01-11 09:56:50 +01:00
Matthias Krüger
cbdfa9167f
Rollup merge of #150908 - llvm-f16-cfg, r=nikic
llvm: Update `reliable_f16` configuration for LLVM22

Since yesterday, the LLVM `main` branch should have working `f16` on all platforms that Rust supports; this will be LLVM version 22, so update how `cfg(target_has_reliable_f16)` is set to reflect this.

Within the rust-lang organization, this currently has no effect. The goal is to start catching problems as early as possible in external CI that runs top-of-tree rust against top-of-tree LLVM, and once testing for the rust-lang bump to LLVM 22 starts. Hopefully this will mean that we can fix any problems that show up before the bump actually happens, meaning `f16` will be about ready for stabilization at that point (with some considerations for the GCC patch at [1] propagating).

References:

* 919021b0df
* 054ee2f870
* db26ce5c55
* 549d7c4f35
* 4903c6260c

[1]: 8b6a18ecaf
2026-01-11 09:56:50 +01:00
Matthias Krüger
55383badd3
Rollup merge of #150873 - reenable-gcc-download-ci, r=marcoieni
Reenable GCC CI download

Now that we have the `gcc-dev` artifacts on CI. However, I forgot to bump download-ci-gcc-stamp before 🤦 So I will also have to bump it for this PR.
2026-01-11 09:56:49 +01:00
Matthias Krüger
98270a95ed
Rollup merge of #150862 - uefi-fs-flush, r=the8472
std: sys: fs: uefi: Implement File::flush

- Also forward fsync and datasync to flush. UEFI does not have anything separate for metadata sync.

@rustbot label +O-UEFI
2026-01-11 09:56:49 +01:00
Matthias Krüger
1a1a11368d
Rollup merge of #150812 - bump-cargotest-diesel, r=Mark-Simulacrum
Bump `diesel` to the most recent commit in `cargotest`

`cargotest` can only detect the worst offenders (like tests failing, or hard compiler errors / ICEs), but regardless, bumping `diesel` to a way more recent version hopefully contributes slightly towards helping us not break `diesel` if at all possible.

That is, AFAIUI, this will not help catch [#t-compiler/prioritization/alerts > #149845 Diesel stops building with nightly-2025-12-10 @ 💬](https://rust-lang.zulipchat.com/#narrow/channel/245100-t-compiler.2Fprioritization.2Falerts/topic/.23149845.20Diesel.20stops.20building.20with.20nightly-2025-12-10/near/566975273) because we cap-lints to `warn` in `cargotest`.

Most recent commit as of the time of this PR anyway.
2026-01-11 09:56:42 +01:00
Matthias Krüger
57da460fc7
Rollup merge of #150781 - pr/cleanup-rand-usages, r=Mark-Simulacrum
Use `rand` crate more idiomatically

Small cleanup, found while working on something else.
We were using `rand` un-idiomatically in a couple of places, and it was bugging me...
2026-01-11 09:56:40 +01:00
Matthias Krüger
cf4ad6bf68
Rollup merge of #150776 - connect_error-fbsd15, r=Mark-Simulacrum
Fix the connect_error test on FreeBSD 15+

On FreeBSD 15, the error code returned in this situation changed.  It's now ENETUNREACH.  I think that error code is reasonable, and it's documented for connect(2), so we should expect that it might be returned.
2026-01-11 09:56:39 +01:00
Matthias Krüger
ea14ce5ca2
Rollup merge of #150743 - docs/iterator, r=Mark-Simulacrum
Reword the collect() docs

Update the `Iterator::collect` docs so they explain that the return type, not the iterator itself, determines which collection is built.

Follow up on rust-lang/rust#121140
2026-01-11 09:56:39 +01:00
Matthias Krüger
7a9ef99a56
Rollup merge of #150668 - stdio-swap, r=Mark-Simulacrum,RalfJung
Unix implementation for stdio set/take/replace

Tracking issue: https://github.com/rust-lang/rust/issues/150667
ACP: https://github.com/rust-lang/libs-team/issues/500
2026-01-11 09:56:38 +01:00
Matthias Krüger
f417f55e62
Rollup merge of #150368 - minicore-ordering, r=workingjubilee
adding Ordering enum to minicore.rs, importing minicore in "tests/assembly-llvm/rust-abi-arg-attr.rs" test file

this adds the `Ordering` enum to `minicore.rs`.

consequently, this updates `tests/assembly-llvm/rust-abi-arg-attr.rs` to import `minicore` directly. previously, this test file contained traits like `Copy` `Clone` `PointeeSized`, which were giving a duplicate lang item error, so replace those by importing `minicore` completely.
2026-01-11 09:56:38 +01:00
Matthias Krüger
30f9939a0c
Rollup merge of #148941 - stabilize-map-if, r=jhpratt
stabilize `Peekable::next_if_map` (`#![feature(peekable_next_if_map)]`)

# Stabilization report

## Summary

`#![feature(peekable_next_if_map)]` is a variation  of `next_if` on peekable iterators that can transform the peeked item. This creates a way to take ownership of the next item in an iterator when some condition holds, but put the item back when the condition doesn't hold. This pattern would otherwise have needed unwraps in many cases.

[Tracking issue](https://github.com/rust-lang/rust/issues/143702)

### What is stabilized

```rust
impl<I: Iterator> Peekable<I> {
    pub fn next_if_map<R>(
        &mut self,
        f: impl FnOnce(I::Item) -> Result<R, I::Item>,
    ) -> Option<R> {
        ..
    }
    pub fn next_if_map_mut<R>(
        &mut self,
        f: impl FnOnce(&mut I::Item) -> Option<R>,
    ) -> Option<R> {
        ..
    }
}
```

Example usage adapted from the ACP:

```rust
let mut it = Peekable::new("123".chars());

while let Some(digit) = it.next_if_map(|c| c.to_digit(10).ok_or(c)) {
    codepoint = codepoint * 10 + digit;
}
```

or with `next_if_map_mut`:

```rust
let mut it = Peekable::new("123".chars());

while let Some(digit) = iter.next_if_map_mut(|c| c.to_digit(10)) {
    line_num = line_num * 10 + digit;
}
```

Note that the major difference here is that `next_if_map_mut` does not get owned items from the iterator, but mutable references. With that api, the closure can return an `Option` which avoids an `ok_or`. This may require cloning or copying the iterator elements, so if that is expensive, the owned version, `next_if_map`, may be preferable.

### Nightly use

At the moment, this feature is barely used in nightly, though I've found multiple good uses for it in my own projects, hence my pushing for stabilization. It makes the kind of patterns used in recursive descent parsing super concise and maybe with its stabilization it will find more use.

### Test coverage

Besides a quite comprehensive doctest, this feature is tested (including panicking in the closure) here:

c880acdd31/library/coretests/tests/iter/adapters/peekable.rs (L275-L359)

## History

- ACP: https://github.com/rust-lang/libs-team/issues/613 accepted with https://github.com/rust-lang/libs-team/issues/613#issuecomment-3049844223
- implementation: https://github.com/rust-lang/rust/pull/143725 with tests, and no issues reported since july.

## Acknowledgments

ACP, implementation and tracking issue for this feature all by @kennytm <3
2026-01-11 09:56:37 +01:00
rust-bors[bot]
08f833aa17
Auto merge of #150540 - JonathanBrouwer:incremental_test, r=cjgillot
Also hash spans inside the same file as relative (V2)

Hashes spans relatively to their parent, even if they are not contained inside their parent.

Fixes https://github.com/rust-lang/rust/issues/150400

Closes https://github.com/rust-lang/rust/pull/143882, as this is a successor PR
This PR is very closely based on that PR with a few minor changes, so to give proper credit I made @cjgillot coauthor of the commit.
2026-01-11 08:54:50 +00:00
Ayush Singh
bd8c67c75a
std: sys: fs: uefi: Implement copy
- Using the implementation from sys::fs::common since ther is no
  built-in copy implementation in UEFI.
- Tested with OVMF on QEMU.

Signed-off-by: Ayush Singh <ayush@beagleboard.org>
2026-01-11 12:38:20 +05:30
rust-bors[bot]
9bc8b40bc3
Auto merge of #150951 - Zalathar:rollup-xhWLriD, r=Zalathar
Rollup of 12 pull requests

Successful merges:

 - rust-lang/rust#150947 (alloctests: Don't run the longer partial-sort tests under Miri)
 - rust-lang/rust#148196 (Implement create_dir_all() to operate iteratively instead of recursively)
 - rust-lang/rust#150494 ( Fix dso_local for external statics with linkage)
 - rust-lang/rust#150788 (THIR patterns: Replace `AscribeUserType` and `ExpandedConstant` wrappers with per-node data)
 - rust-lang/rust#150799 (Fix ICE: can't type-check body of DefId  for issue rust-lang/rust#148729)
 - rust-lang/rust#150804 (Remove std_detect_file_io and std_detect_dlsym_getauxval features)
 - rust-lang/rust#150852 (std: sys: fs: uefi: Implement File::write)
 - rust-lang/rust#150871 (Use f64 NaN in documentation instead of sqrt(-1.0))
 - rust-lang/rust#150878 (Emit an error for linking staticlibs on BPF)
 - rust-lang/rust#150911 (Add missing documentation for globs feature)
 - rust-lang/rust#150913 (compiler: Forward attributes to eii-expanded macros)
 - rust-lang/rust#150916 (Once again, reorganize the EII tests a bit)

r? @ghost
2026-01-11 03:30:55 +00:00
Stuart Cook
c6a3792972
Rollup merge of #150916 - eii-test-reorg, r=jieyouxu
Once again, reorganize the EII tests a bit

Some tests in the root of tests/ui/eii actually kind of belonged in the subfolders we made earlier
2026-01-11 14:28:06 +11:00
Stuart Cook
1987b15908
Rollup merge of #150913 - eii-macro-attrs, r=jdonszelmann
compiler: Forward attributes to eii-expanded macros

Since https://github.com/rust-lang/rust/pull/150592 is quite complicated to reason about I figured it would be good to split it up in smaller pieces that are easier to digest. Here is the attribute fix in isolation.

## The Problem

With this eii in **library/std/src/io/mod.rs**:
```rs
/// Foo
#[eii(on_broken_pipe)]
#[unstable(feature = "on_broken_pipe", issue = "150588")]
pub fn on_broken_pipe() -> OnBrokenPipe {
    OnBrokenPipe::BackwardsCompatible
}
```

you currently get this compilation error:

```
error: attribute macro has missing stability attribute
    --> library/std/src/io/mod.rs:2269:1
     |
2269 | #[eii(on_broken_pipe)]
     | ^^^^^^^^^^^^^^^^^^^^--
     | |
     | in this attribute macro expansion
     |
    ::: library/core/src/macros/mod.rs:1899:5
     |
1899 |     pub macro eii($item:item) {
     |     ------------- in this expansion of `#[eii]`
```

because with ` MAGIC_EXTRA_RUSTFLAGS=-Zunpretty=expanded ./x build library/std` we can see that a pub item in the expanded code is indeed missing that attribute:

```rs
const _: () =
    {
        #[on_broken_pipe]
        fn on_broken_pipe() -> OnBrokenPipe {
            OnBrokenPipe::BackwardsCompatible
        }
    };
unsafe extern "Rust" {
    /// Foo
    #[unstable(feature = "on_broken_pipe", issue = "150588")]
    #[rustc_eii_extern_item]
    pub safe fn on_broken_pipe()
    -> OnBrokenPipe;
}
#[rustc_builtin_macro(eii_shared_macro)]
#[eii_extern_target(on_broken_pipe)]
pub macro on_broken_pipe { () => {} }
```

## The Solution

With the fix, that error goes away because we get this expanded code instead:

```rs
const _: () =
    {
        #[on_broken_pipe]
        fn on_broken_pipe() -> OnBrokenPipe {
            OnBrokenPipe::BackwardsCompatible
        }
    };
unsafe extern "Rust" {
    /// Foo
    #[unstable(feature = "on_broken_pipe", issue = "150588")]
    #[rustc_eii_extern_item]
    pub safe fn on_broken_pipe()
    -> OnBrokenPipe;
}
/// Foo
#[unstable(feature = "on_broken_pipe", issue = "150588")]
#[rustc_builtin_macro(eii_shared_macro)]
#[eii_extern_target(on_broken_pipe)]
pub macro on_broken_pipe { () => {} }
```

Note that we also need to forward the docs, otherwise get get (fatal) warnings like these:

```
warning: missing documentation for an attribute macro
    --> library/std/src/io/mod.rs:2269:1
```

r? @jdonszelmann

Tracking issues:
- https://github.com/rust-lang/rust/issues/125418
- https://github.com/rust-lang/rust/issues/150588

### What about a test?

https://github.com/rust-lang/rust/pull/150591 will prevent regressions once it lands since it does not build without this fix. I think it is overkill to add a temporary eii to std before that.
2026-01-11 14:28:06 +11:00
Stuart Cook
c2448d7311
Rollup merge of #150911 - master, r=Kivooeo
Add missing documentation for globs feature

Fixes FIXME by documenting that globs enables wildcard imports (use module::*;).
2026-01-11 14:28:05 +11:00
Stuart Cook
5b685d7b03
Rollup merge of #150878 - bpf_staticlib_error, r=Urgau
Emit an error for linking staticlibs on BPF

Rather than panicking. Also a drive-by diagnostic type visibility reduction.

Fixes https://github.com/rust-lang/rust/issues/149432
2026-01-11 14:27:58 +11:00
Stuart Cook
72c9c8c801
Rollup merge of #150871 - simplify-partialord-doc, r=jhpratt
Use f64 NaN in documentation instead of sqrt(-1.0)
2026-01-11 14:27:57 +11:00
Stuart Cook
ebd5d75dbc
Rollup merge of #150852 - uefi-fs-write, r=joboet
std: sys: fs: uefi: Implement File::write

Tested using OVMF on QEMU.

@rustbot label +O-UEFI
2026-01-11 14:27:57 +11:00
Stuart Cook
26da51d2a0
Rollup merge of #150804 - std_detect_less_features, r=tgross35
Remove std_detect_file_io and std_detect_dlsym_getauxval features

They were introduced back when std_detect was a standalone crate published to crates.io. The [motivation](https://github.com/rust-lang/stdarch/issues/655) for `std_detect_dlsym_getauxval` was to allow using `getauxval` without `dlopen` when statically linking musl, which we now unconditionally do for musl. And for `std_detect_file_io` to allow `no_std` usage, which std_detect now supports even with that feature enabled as it directly uses libc. This also prevents accidentally disabling runtime feature detection when using `cargo build -Zbuild-std -Zbuild-std-features=`
2026-01-11 14:27:57 +11:00
Stuart Cook
e25d7a898a
Rollup merge of #150799 - mcga, r=BoxyUwU
Fix ICE: can't type-check body of DefId  for issue #148729

This commit fixes https://github.com/rust-lang/rust/issues/148729 for min_const_generic_args https://github.com/rust-lang/rust/issues/132980.

It's pretty small PR. The first commit makes sure that the `type_const`s are made into normal consts in const expressions.

The next one just handles the case https://github.com/rust-lang/rust/issues/148729 of where the type of the const was omitted at which point it was trying to treat a `type_const` again as a regular const. That obviously will fail since a type_const does not have a body.

@rustbot label +F-associated_const_equality +F-min_generic_const_args +I-ICE
2026-01-11 14:27:56 +11:00
Stuart Cook
8a5c66efb9
Rollup merge of #150788 - thir-pat, r=Nadrieril
THIR patterns: Replace `AscribeUserType` and `ExpandedConstant` wrappers with per-node data

This PR removes the `AscribeUserType` and `ExpandedConstant` variants from `thir::PatKind`, and replaces them with an `Option<Box<PatExtra>>` field attached to every `thir::Pat`.

### Why remove these variants?

Unlike other THIR pattern kinds, these variants are mere “wrappers” that exist to attach some additional information to an underlying pattern node.

There are several places where code that consumes THIR patterns needs to carefully “unpeel” any wrapper nodes, in order to match on the underlying pattern. This is clunky, and easy to forget to do, especially since it's not always obvious where the wrapper nodes can and can't appear.

Attaching the data to an optional per-node field makes it easier for consuming code to simply ignore the extra data when it is not relevant.

(One downside is that it is now easier to accidentally ignore the extra data when it *is* relevant, but I think that's generally a favourable tradeoff.)

### Impact

After this change, THIR pattern trees should be “logically identical” to the previous THIR pattern trees, in the sense that information that was carried by wrapper nodes should now be directly attached to the non-wrapper nodes that were being wrapped. Types and spans associated with THIR pattern nodes should (hopefully!) still be accurate.

There should be no change to the output of THIR-based checks or MIR building.
2026-01-11 14:27:56 +11:00
Stuart Cook
30585ebbd3
Rollup merge of #150494 - extern_linkage_dso_local, r=bjorn3
Fix dso_local for external statics with linkage

Tracking issue of the feature: rust-lang/rust#127488

DSO local attributes are not correctly applied to extern statics with `#[linkage = "foo"]` as we generate an internal global for such statics, and the we evaluate (and apply) DSO attributes on the internal one instead.

Fix this by applying DSO local attributes on the actually extern ones, too.
2026-01-11 14:27:55 +11:00