Skip to content

Conversation

alessandrod
Copy link
Contributor

Fixes triggering the "only small returns supported" error in the BPF target.

@rustbot rustbot added S-waiting-on-review Status: Awaiting review from the assignee but also interested parties. T-compiler Relevant to the compiler team, which will review and decide on the PR/issue. labels Oct 13, 2025
@rustbot
Copy link
Collaborator

rustbot commented Oct 13, 2025

r? @jackh726

rustbot has assigned @jackh726.
They will have a look at your PR within the next two weeks and either review your PR or reassign to another reviewer.

Use r? to explicitly pick a reviewer

@rustbot

This comment has been minimized.

@rustbot
Copy link
Collaborator

rustbot commented Oct 13, 2025

This PR was rebased onto a different master commit. Here's a range-diff highlighting what actually changed.

Rebasing is a normal part of keeping PRs up to date, so no action is needed—this note is just to help reviewers.

@alessandrod
Copy link
Contributor Author

⚠️ Warning ⚠️

* This PR is based on an [upstream commit](https://github.com/rust-lang/rust/commit/41a79f1862aa6b81bac674598e275e80e9f09eb9) that is older than 28 days.

whoops, fixed

@rust-log-analyzer

This comment has been minimized.

@alessandrod
Copy link
Contributor Author

alessandrod commented Oct 13, 2025

#![no_std]
#![no_main]

#[unsafe(no_mangle)]
pub unsafe fn outer(a: u64) -> u64 {
    match try_inner(a) {
        Ok(v) => v,
        Err(()) => 0,
    }
}

#[inline(never)]
fn try_inner(a: u64) -> Result<u64, ()> {
    if a == 0 { Err(()) } else { Ok(a + 1) }
}

nightly without fix

sol@dev-alessandrod:/tmp/b$ cargo +nightly rustc --target=bpfel-unknown-none -Z build-std=core --release
   Compiling b v0.1.0 (/tmp/b)
error: linking with `bpf-linker` failed: exit status: 1
  |
  = note:  "bpf-linker" "--export-symbols" "/tmp/rustcpWeU1V/symbols" "/tmp/rustcpWeU1V/symbols.o" "<1 object files omitted>" "/tmp/b/target/bpfel-unknown-none/release/deps/{libcore-e2186c15db672292,libcompiler_builtins-33b0f57b988ec271}.rlib" "-L" "/tmp/rustcpWeU1V/raw-dylibs" "--cpu" "generic" "-o" "/tmp/b/target/bpfel-unknown-none/release/deps/b-89f0e403b55dfe7b" "-O3" "--debug"
  = note: some arguments are omitted. use `--verbose` to show all linker arguments
  = note: ERROR llvm: <unknown>:0:0: in function outer i64 (i64): only small returns supported
          
          ERROR llvm: <unknown>:0:0: in function _ZN1b9try_inner17ha7a0d46aa0ff6c7eE { i64, i64 } (i64): aggregate returns are not supported
          
          Error: LLVM issued diagnostic with error severity
          

error: could not compile `b` (bin "b") due to 1 previous error

with this PR

sol@dev-alessandrod:/tmp/b$ cargo +stage1 rustc --target=bpfel-unknown-none -Z build-std=core --release
   Compiling core v0.0.0 (/home/sol/src/rust/build/x86_64-unknown-linux-gnu/stage1/lib/rustlib/src/rust/library/core)
   Compiling compiler_builtins v0.1.160 (/home/sol/src/rust/build/x86_64-unknown-linux-gnu/stage1/lib/rustlib/src/rust/library/compiler-builtins/compiler-builtins)
   Compiling b v0.1.0 (/tmp/b)
    Finished `release` profile [optimized] target(s) in 18.25s

@wesleywiser
Copy link
Member

Thanks @alessandrod!

@bors r+ rollup

@bors
Copy link
Collaborator

bors commented Oct 13, 2025

📌 Commit 246f764 has been approved by wesleywiser

It is now in the queue for this repository.

@bors bors added S-waiting-on-bors Status: Waiting on bors to run and complete tests. Bors will change the label on completion. and removed S-waiting-on-review Status: Awaiting review from the assignee but also interested parties. labels Oct 13, 2025
Fixes triggering the "only small returns supported" error in the BPF
target.
@wesleywiser
Copy link
Member

@bors r+

@bors
Copy link
Collaborator

bors commented Oct 14, 2025

📌 Commit 056c2da has been approved by wesleywiser

It is now in the queue for this repository.

matthiaskrgr added a commit to matthiaskrgr/rust that referenced this pull request Oct 14, 2025
…wiser

bpf: return results larger than one register indirectly

Fixes triggering the "only small returns supported" error in the BPF target.
matthiaskrgr added a commit to matthiaskrgr/rust that referenced this pull request Oct 14, 2025
…wiser

bpf: return results larger than one register indirectly

Fixes triggering the "only small returns supported" error in the BPF target.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

S-waiting-on-bors Status: Waiting on bors to run and complete tests. Bors will change the label on completion. T-compiler Relevant to the compiler team, which will review and decide on the PR/issue.

Projects

None yet

Development

Successfully merging this pull request may close these issues.

7 participants