From 18da44f8f262e4decc9b0fe62b423e2456386513 Mon Sep 17 00:00:00 2001 From: vad Date: Mon, 1 Jun 2026 15:40:45 +0200 Subject: [PATCH 1/2] tests: codegen-llvm: Expect the new mangling scheme in bpf-abi-indirect-return The new Rust symbol mangling[0] uses prefix `_R` instead of `@_ZN`. [0] https://rust-lang.github.io/rfcs/2603-rust-symbol-name-mangling-v0.html --- tests/codegen-llvm/bpf-abi-indirect-return.rs | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/tests/codegen-llvm/bpf-abi-indirect-return.rs b/tests/codegen-llvm/bpf-abi-indirect-return.rs index b5787cc83a2b4..5e9cccb715cd1 100644 --- a/tests/codegen-llvm/bpf-abi-indirect-return.rs +++ b/tests/codegen-llvm/bpf-abi-indirect-return.rs @@ -16,7 +16,7 @@ fn outer(a: u64) -> u64 { inner_big(v).a[0] as u64 } -// CHECK-LABEL: define {{.*}} @_ZN{{.*}}inner_res{{.*}}E( +// CHECK-LABEL: define {{.*}} @_R{{.*}}inner_res( // CHECK-SAME: ptr{{[^,]*}}, // CHECK-SAME: i64{{[^)]*}} #[inline(never)] @@ -29,7 +29,7 @@ struct Big { b: u64, } -// CHECK-LABEL: define {{.*}} @_ZN{{.*}}inner_big{{.*}}E( +// CHECK-LABEL: define {{.*}} @_R{{.*}}inner_big( // CHECK-SAME: ptr{{[^,]*}}, // CHECK-SAME: i64{{[^)]*}} #[inline(never)] From cece4f3a1e117732f2e5e18474c71734cabebbf1 Mon Sep 17 00:00:00 2001 From: vad Date: Wed, 3 Jun 2026 16:21:20 +0200 Subject: [PATCH 2/2] tests: codegen-llvm: Use minicore in bpf-abi-indirect-return Instead of keeping it as `only-bpf`, use minicore. This way we make sure it will never get outdated again. --- tests/codegen-llvm/bpf-abi-indirect-return.rs | 29 +++++-------------- 1 file changed, 7 insertions(+), 22 deletions(-) diff --git a/tests/codegen-llvm/bpf-abi-indirect-return.rs b/tests/codegen-llvm/bpf-abi-indirect-return.rs index 5e9cccb715cd1..a0406742e2210 100644 --- a/tests/codegen-llvm/bpf-abi-indirect-return.rs +++ b/tests/codegen-llvm/bpf-abi-indirect-return.rs @@ -1,27 +1,17 @@ // Checks that results larger than one register are returned indirectly -//@ only-bpf +//@ add-minicore //@ needs-llvm-components: bpf //@ compile-flags: --target bpfel-unknown-none -#![no_std] -#![no_main] +#![crate_type = "lib"] +#![feature(no_core)] +#![no_core] + +extern crate minicore; #[no_mangle] fn outer(a: u64) -> u64 { - let v = match inner_res(a) { - Ok(v) => v, - Err(()) => 0, - }; - - inner_big(v).a[0] as u64 -} - -// CHECK-LABEL: define {{.*}} @_R{{.*}}inner_res( -// CHECK-SAME: ptr{{[^,]*}}, -// CHECK-SAME: i64{{[^)]*}} -#[inline(never)] -fn inner_res(a: u64) -> Result { - if a == 0 { Err(()) } else { Ok(a + 1) } + inner_big(a).b } struct Big { @@ -36,8 +26,3 @@ struct Big { fn inner_big(a: u64) -> Big { Big { a: [a as u16; 32], b: 42 } } - -#[panic_handler] -fn panic(_info: &core::panic::PanicInfo) -> ! { - loop {} -}