From 4bb41c5aadb90bcde98808847724db6bcf222a8f Mon Sep 17 00:00:00 2001 From: Cai Congcong Date: Mon, 30 Mar 2026 20:58:29 +0800 Subject: [PATCH 1/3] set no_mangle_generic_items deny by default --- test-cargo-miri/issue-rust-86261/src/lib.rs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/test-cargo-miri/issue-rust-86261/src/lib.rs b/test-cargo-miri/issue-rust-86261/src/lib.rs index 1947c38b77..4997891adc 100644 --- a/test-cargo-miri/issue-rust-86261/src/lib.rs +++ b/test-cargo-miri/issue-rust-86261/src/lib.rs @@ -1,4 +1,4 @@ -#![allow(unused_imports, unused_attributes, no_mangle_generic_items)] +#![allow(unused_imports, unused_attributes)] // Regression test for https://github.com/rust-lang/rust/issues/86261: // `#[no_mangle]` on a `use` item. From 33b5f0c04c7e7ef241a42da8deb4201bef80ba4a Mon Sep 17 00:00:00 2001 From: Ralf Jung Date: Fri, 24 Jul 2026 12:05:56 +0200 Subject: [PATCH 2/3] fix various tests --- src/helpers.rs | 10 +-------- test-cargo-miri/issue-rust-86261/src/lib.rs | 10 +++------ test-cargo-miri/src/main.rs | 4 ++-- .../issues/issue-154385-no-mangle-generic.rs | 22 ------------------- .../issue-154385-no-mangle-generic.stdout | 3 --- 5 files changed, 6 insertions(+), 43 deletions(-) delete mode 100644 tests/pass/issues/issue-154385-no-mangle-generic.rs delete mode 100644 tests/pass/issues/issue-154385-no-mangle-generic.stdout diff --git a/src/helpers.rs b/src/helpers.rs index 8dc6b5f07b..6953a27a39 100644 --- a/src/helpers.rs +++ b/src/helpers.rs @@ -132,15 +132,7 @@ pub fn iter_exported_symbols<'tcx>( if !(used || codegen_attrs.contains_extern_indicator()) { continue; } - // FIXME: `#[no_mangle]` makes no sense on a generic item, but still causes it to be - // considered "extern". Remove this once `no_mangle_generic_items` is a hard error. - let mono = { - let generics = tcx.generics_of(def_id); - !generics.requires_monomorphization(tcx) - }; - if mono { - f(LOCAL_CRATE, def_id.into(), used)?; - } + f(LOCAL_CRATE, def_id.into(), used)?; } // Next, all our dependencies. diff --git a/test-cargo-miri/issue-rust-86261/src/lib.rs b/test-cargo-miri/issue-rust-86261/src/lib.rs index 4997891adc..ab0fa8f013 100644 --- a/test-cargo-miri/issue-rust-86261/src/lib.rs +++ b/test-cargo-miri/issue-rust-86261/src/lib.rs @@ -14,10 +14,6 @@ pub struct NoMangleStruct; #[export_name = "NoMangleStruct"] fn no_mangle_struct() {} -// `#[no_mangle]` on a generic function can also cause ICEs. -#[no_mangle] -fn no_mangle_generic() {} - -// Same as `no_mangle_struct()` but for the `no_mangle_generic()` generic function. -#[export_name = "no_mangle_generic"] -fn no_mangle_generic2() {} +// Same as `no_mangle_struct()` but for the `no_mangle_struct()` function. +#[export_name = "no_mangle_struct"] +fn no_mangle_alias() {} diff --git a/test-cargo-miri/src/main.rs b/test-cargo-miri/src/main.rs index 1568da43af..ed16a14e3d 100644 --- a/test-cargo-miri/src/main.rs +++ b/test-cargo-miri/src/main.rs @@ -87,13 +87,13 @@ mod test { fn assoc_fn_as_exported_symbol() -> i32; fn make_true() -> bool; fn NoMangleStruct(); - fn no_mangle_generic(); + fn no_mangle_struct(); } assert_eq!(unsafe { exported_symbol() }, 123456); assert_eq!(unsafe { assoc_fn_as_exported_symbol() }, -123456); assert!(unsafe { make_true() }); unsafe { NoMangleStruct() } - unsafe { no_mangle_generic() } + unsafe { no_mangle_struct() } } } diff --git a/tests/pass/issues/issue-154385-no-mangle-generic.rs b/tests/pass/issues/issue-154385-no-mangle-generic.rs deleted file mode 100644 index 90fa021863..0000000000 --- a/tests/pass/issues/issue-154385-no-mangle-generic.rs +++ /dev/null @@ -1,22 +0,0 @@ -fn main() { - generic_type(123); - generic_const::<456>(); - generic_lifetime(&789); -} - -#[allow(no_mangle_generic_items)] -#[unsafe(no_mangle)] -fn generic_type(value: T) { - println!("{value:?}"); -} - -#[expect(no_mangle_generic_items)] -#[unsafe(no_mangle)] -fn generic_const() { - println!("{N}"); -} - -#[unsafe(no_mangle)] -fn generic_lifetime<'a>(x: &'a i32) { - println!("{x}"); -} diff --git a/tests/pass/issues/issue-154385-no-mangle-generic.stdout b/tests/pass/issues/issue-154385-no-mangle-generic.stdout deleted file mode 100644 index af7864ba2f..0000000000 --- a/tests/pass/issues/issue-154385-no-mangle-generic.stdout +++ /dev/null @@ -1,3 +0,0 @@ -123 -456 -789 From 2f22a4d4f65dc97c5fc14d8b6feaf0a05bd6eeb7 Mon Sep 17 00:00:00 2001 From: The Miri Cronjob Bot Date: Thu, 6 Aug 2026 05:27:12 +0000 Subject: [PATCH 3/3] Prepare for merging from rust-lang/rust This updates the rust-version file to f73951df0a5566d94d13b7954acd9f4ab1fa3734. --- rust-version | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/rust-version b/rust-version index f29c624515..8ab1fcaae5 100644 --- a/rust-version +++ b/rust-version @@ -1 +1 @@ -7218ebe93668f51a94a572b690c433dfdbdc2c3d +f73951df0a5566d94d13b7954acd9f4ab1fa3734