Skip to content

use #[naked] for __rust_probestack - #141992

Merged
bors merged 4 commits into
rust-lang:masterfrom
folkertdev:probestack-naked-function
Jun 10, 2025
Merged

use #[naked] for __rust_probestack#141992
bors merged 4 commits into
rust-lang:masterfrom
folkertdev:probestack-naked-function

Conversation

@folkertdev

@folkertdevfolkertdev commented Jun 3, 2025

Copy link
Copy Markdown
Contributor

Let's see if this works now.

Previously this change was in rust-lang/compiler-builtins#897, but we decided to wait until compiler-builtins was a subtree (and also cfg(bootstrap) is gone now).

r? @tgross35 cc @bjorn3

try-job: dist-various*
try-job: test-various*

@rustbotrustbot added A-compiler-builtins Area: compiler-builtins (https://github.com/rust-lang/compiler-builtins) A-LLVM Area: Code generation parts specific to LLVM. Both correctness bugs and optimization-related issues. 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 Jun 3, 2025
@rustbot

Copy link
Copy Markdown
Collaborator

compiler-builtins is developed in its own repository. If possible, consider making this change to rust-lang/compiler-builtins instead.

cc @tgross35

@folkertdevfolkertdev changed the title Probestack naked functionuse #[naked] for __rust_probestackJun 3, 2025
@tgross35

Copy link
Copy Markdown
Member

It will most definitely work, in-tree compiler-builtins has no CI running and it is not yet used for anything :)

@folkertdev

Copy link
Copy Markdown
ContributorAuthor

Me and my impatience...

Well, I'm happy to rebase this whenever to check whether things are working, and we'll see when everything is ready.

@bors

bors commented Jun 5, 2025

Copy link
Copy Markdown
Collaborator

☔ The latest upstream changes (presumably #142081) made this pull request unmergeable. Please resolve the merge conflicts.

@folkertdev
folkertdevforce-pushed the probestack-naked-function branch from be86dc8 to 79aa400CompareJune 5, 2025 21:34
@tgross35

Copy link
Copy Markdown
Member

#141993 will be the main relevant PR here, plus hopefully having some kind of testing in-tree.

@rustbot blocked

@rustbotrustbot added S-blocked Status: Blocked on something else such as an RFC or other implementation work. and removed S-waiting-on-review Status: Awaiting review from the assignee but also interested parties. labels Jun 5, 2025
@folkertdev
folkertdevforce-pushed the probestack-naked-function branch from 79aa400 to 6b6ad28CompareJune 9, 2025 21:29
@rust-log-analyzer

This comment has been minimized.

@folkertdev
folkertdevforce-pushed the probestack-naked-function branch from 6b6ad28 to a2da8e0CompareJune 9, 2025 21:50
@rust-log-analyzer

This comment has been minimized.

@folkertdev
folkertdevforce-pushed the probestack-naked-function branch from a2da8e0 to 601e479CompareJune 9, 2025 22:11
@tgross35

Copy link
Copy Markdown
Member

I'll kick off some jobs that should cover fortanix/sgx/uefi

@bors2 try
@bors2 delegate=try

@rust-bors

rust-borsBot commented Jun 9, 2025

Copy link
Copy Markdown
Contributor

⌛ Trying commit 601e479 with merge 98919d2

To cancel the try build, run the command @bors2 try cancel.

@rust-bors

rust-borsBot commented Jun 9, 2025

Copy link
Copy Markdown
Contributor

@folkertdev can now perform try builds on this pull request

rust-borsBot added a commit that referenced this pull request Jun 9, 2025
use `#[naked]` for `__rust_probestack`
Let's see if this works now.
Previously this change was in rust-lang/compiler-builtins#897, but we decided to wait until `compiler-builtins` was a subtree (and also `cfg(bootstrap)` is gone now).
r? `@tgross35` cc `@bjorn3`
try-job: `dist-various*`
try-job: `test-various*`
@tgross35tgross35 added S-waiting-on-review Status: Awaiting review from the assignee but also interested parties. and removed S-blocked Status: Blocked on something else such as an RFC or other implementation work. labels Jun 9, 2025
// Our goal here is to touch each page between %rsp+8 and %rsp+8-%rax,
// ensuring that if any pages are unmapped we'll make a page fault.
//
// This function is unsafe because it uses a custom ABI, it does not actually match `extern "C"`.

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Mind making these FIXME(extern_c) since that should be a thing soon?

Comment threadcompiler/rustc_codegen_llvm/src/attributes.rs
@rust-bors

rust-borsBot commented Jun 10, 2025

Copy link
Copy Markdown
Contributor

☀️ Try build successful (CI)
Build commit: 98919d2 (98919d235b0bc249554b0ced4732020f6e247fe6)

@tgross35tgross35 left a comment

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Lgtm, mind stuffing the last commit into the first?

@tgross35

Copy link
Copy Markdown
Member

@bors delegate+

@bors

bors commented Jun 10, 2025

Copy link
Copy Markdown
Collaborator

✌️ @folkertdev, you can now approve this pull request!

If @tgross35 told you to "r=me" after making some further change, please make that change, then do @bors r=@tgross35

@folkertdev
folkertdevforce-pushed the probestack-naked-function branch from fff42eb to b030442CompareJune 10, 2025 08:13
@folkertdev

Copy link
Copy Markdown
ContributorAuthor

@bors r=@tgross35

@bors

bors commented Jun 10, 2025

Copy link
Copy Markdown
Collaborator

📌 Commit b030442 has been approved by tgross35

It is now in the queue for this repository.

@borsbors 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 Jun 10, 2025
fmease added a commit to fmease/rust that referenced this pull request Jun 10, 2025
…on, r=tgross35
use `#[naked]` for `__rust_probestack`
Let's see if this works now.
Previously this change was in rust-lang/compiler-builtins#897, but we decided to wait until `compiler-builtins` was a subtree (and also `cfg(bootstrap)` is gone now).
r? `@tgross35` cc `@bjorn3`
try-job: `dist-various*`
try-job: `test-various*`
@fmeasefmease mentioned this pull request Jun 10, 2025
bors added a commit that referenced this pull request Jun 10, 2025
Rollup of 14 pull requests
Successful merges:
- #134442 (Specify the behavior of `file!`)
- #134841 (Look at proc-macro attributes when encountering unknown attribute)
- #140372 (Exhaustively handle parsed attributes in CheckAttr)
- #140766 (Stabilize keylocker)
- #141642 (Note the version and PR of removed features when using it)
- #141909 (Add central execution context to bootstrap)
- #141992 (use `#[naked]` for `__rust_probestack`)
- #142102 (docs: Small clarification on the usage of read_to_string and read_to_end trait methods)
- #142124 (Allow transmute casts in pre-runtime-MIR)
- #142240 (deduplicate the rest of AST walker functions)
- #142258 (platform-support.md: Mention specific Linux kernel version or later)
- #142262 (Mark `core::slice::memchr` as `#[doc(hidden)]`)
- #142271 (compiler: fn ptrs should hit different lints based on ABI)
- #142288 (const_eval: fix some outdated comments)
r? `@ghost`
`@rustbot` modify labels: rollup
@fmeasefmease mentioned this pull request Jun 10, 2025
bors added a commit that referenced this pull request Jun 10, 2025
Rollup of 16 pull requests
Successful merges:
- #134442 (Specify the behavior of `file!`)
- #140372 (Exhaustively handle parsed attributes in CheckAttr)
- #140766 (Stabilize keylocker)
- #141642 (Note the version and PR of removed features when using it)
- #141818 (Don't create .msi installer for gnullvm hosts)
- #141909 (Add central execution context to bootstrap)
- #141992 (use `#[naked]` for `__rust_probestack`)
- #142101 (core::ptr: deduplicate more method docs)
- #142102 (docs: Small clarification on the usage of read_to_string and read_to_end trait methods)
- #142124 (Allow transmute casts in pre-runtime-MIR)
- #142240 (deduplicate the rest of AST walker functions)
- #142258 (platform-support.md: Mention specific Linux kernel version or later)
- #142262 (Mark `core::slice::memchr` as `#[doc(hidden)]`)
- #142271 (compiler: fn ptrs should hit different lints based on ABI)
- #142275 (rustdoc: Refractor `clean_ty_generics`)
- #142288 (const_eval: fix some outdated comments)
r? `@ghost`
`@rustbot` modify labels: rollup
@bors
bors merged commit a55b610 into rust-lang:masterJun 10, 2025
@rustbotrustbot added this to the 1.89.0 milestone Jun 10, 2025
rust-timer added a commit that referenced this pull request Jun 10, 2025
Rollup merge of #141992 - folkertdev:probestack-naked-function, r=tgross35
use `#[naked]` for `__rust_probestack`
Let's see if this works now.
Previously this change was in rust-lang/compiler-builtins#897, but we decided to wait until `compiler-builtins` was a subtree (and also `cfg(bootstrap)` is gone now).
r? ``@tgross35`` cc ``@bjorn3``
try-job: `dist-various*`
try-job: `test-various*`
tgross35 pushed a commit to tgross35/compiler-builtins that referenced this pull request Jun 14, 2025
Rollup of 16 pull requests
Successful merges:
- rust-lang/rust#134442 (Specify the behavior of `file!`)
- rust-lang/rust#140372 (Exhaustively handle parsed attributes in CheckAttr)
- rust-lang/rust#140766 (Stabilize keylocker)
- rust-lang/rust#141642 (Note the version and PR of removed features when using it)
- rust-lang/rust#141818 (Don't create .msi installer for gnullvm hosts)
- rust-lang/rust#141909 (Add central execution context to bootstrap)
- rust-lang/rust#141992 (use `#[naked]` for `__rust_probestack`)
- rust-lang/rust#142101 (core::ptr: deduplicate more method docs)
- rust-lang/rust#142102 (docs: Small clarification on the usage of read_to_string and read_to_end trait methods)
- rust-lang/rust#142124 (Allow transmute casts in pre-runtime-MIR)
- rust-lang/rust#142240 (deduplicate the rest of AST walker functions)
- rust-lang/rust#142258 (platform-support.md: Mention specific Linux kernel version or later)
- rust-lang/rust#142262 (Mark `core::slice::memchr` as `#[doc(hidden)]`)
- rust-lang/rust#142271 (compiler: fn ptrs should hit different lints based on ABI)
- rust-lang/rust#142275 (rustdoc: Refractor `clean_ty_generics`)
- rust-lang/rust#142288 (const_eval: fix some outdated comments)
r? `@ghost`
`@rustbot` modify labels: rollup
tautschnig pushed a commit to model-checking/verify-rust-std that referenced this pull request Jun 17, 2025
…on, r=tgross35
use `#[naked]` for `__rust_probestack`
Let's see if this works now.
Previously this change was in rust-lang/compiler-builtins#897, but we decided to wait until `compiler-builtins` was a subtree (and also `cfg(bootstrap)` is gone now).
r? ``@tgross35`` cc ``@bjorn3``
try-job: `dist-various*`
try-job: `test-various*`
tgross35 pushed a commit to rust-lang/compiler-builtins that referenced this pull request Jan 31, 2026
Rollup of 16 pull requests
Successful merges:
- rust-lang/rust#134442 (Specify the behavior of `file!`)
- rust-lang/rust#140372 (Exhaustively handle parsed attributes in CheckAttr)
- rust-lang/rust#140766 (Stabilize keylocker)
- rust-lang/rust#141642 (Note the version and PR of removed features when using it)
- rust-lang/rust#141818 (Don't create .msi installer for gnullvm hosts)
- rust-lang/rust#141909 (Add central execution context to bootstrap)
- rust-lang/rust#141992 (use `#[naked]` for `__rust_probestack`)
- rust-lang/rust#142101 (core::ptr: deduplicate more method docs)
- rust-lang/rust#142102 (docs: Small clarification on the usage of read_to_string and read_to_end trait methods)
- rust-lang/rust#142124 (Allow transmute casts in pre-runtime-MIR)
- rust-lang/rust#142240 (deduplicate the rest of AST walker functions)
- rust-lang/rust#142258 (platform-support.md: Mention specific Linux kernel version or later)
- rust-lang/rust#142262 (Mark `core::slice::memchr` as `#[doc(hidden)]`)
- rust-lang/rust#142271 (compiler: fn ptrs should hit different lints based on ABI)
- rust-lang/rust#142275 (rustdoc: Refractor `clean_ty_generics`)
- rust-lang/rust#142288 (const_eval: fix some outdated comments)
r? `@ghost`
`@rustbot` modify labels: rollup
deuszx pushed a commit to linera-io/linera-protocol that referenced this pull request Mar 3, 2026
…ack breakage (#5583)
## Motivation
The bridge E2E CI has been failing on every `testnet_conway` push since
at least Feb 28
with a linker error:
rust-lld: error: undefined symbol: __rust_probestack
referenced by linera_wasmer_vm
PR #5582 pinned the bridge e2e toolchain to Rust 1.91 to satisfy alloy's
MSRV, but Rust
1.89+ removed `__rust_probestack` as a linkable extern symbol
([rust-lang/rust#141992](rust-lang/rust#141992)),
which breaks
the linera wasmer fork (v4.4.0-linera.7) that still references it in
`probestack.rs`.
## Proposal
Use Rust 1.88 (the last version before the probestack removal) and cap
alloy to `<1.7`
(since alloy 1.7+ requires Rust 1.91):
- **`rust-toolchain.toml`**: 1.91 → 1.88
- **`Cargo.toml`**: Set `rust-version = "1.88"`, cap alloy to `>=1.0.42,
<1.7`
- **`.cargo/config.toml`** (new): Enable MSRV-aware resolver
(`incompatible-rust-versions = "fallback"`) so alloy sub-crates also
resolve to 1.6.x
- **`Cargo.lock`**: Regenerated (alloy 1.3 → 1.6.3 across all
sub-crates)
- **`bridge-e2e.yml`**: Added `pull_request` trigger targeting
`testnet_conway` so the
test runs on this PR
The proper long-term fix is updating the linera wasmer fork with the
upstream probestack
fix
([wasmerio/wasmer#5690](wasmerio/wasmer#5690)).
The alloy
cap comment documents this.
## Test Plan
- `cargo check` passes locally with Rust 1.88
- The `pull_request` trigger on this PR will run the bridge E2E test in
CI (remove the
trigger before merge)
## Release Plan
- Nothing to do / These changes follow the usual release cycle.
## Links
- Failed CI run:
https://github.com/linera-io/linera-protocol/actions/runs/22633609986/job/65590305218
- Rust PR that removed the symbol:
[rust-lang/rust#141992](rust-lang/rust#141992)
- Upstream wasmer fix:
[wasmerio/wasmer#5690](wasmerio/wasmer#5690)
- PR that introduced Rust 1.91:
[#5582](https://github.com/lera-io/linera-protocol/pull/5582)
@folkertdevfolkertdev added A-naked Area: `#[naked]`, prologue and epilogue-free, functions, https://git.io/vAzzS F-naked_functions `#![feature(naked_functions)]` labels May 7, 2026
DaviRain-Su pushed a commit to DaviRain-Su/proof_forge that referenced this pull request Aug 3, 2026
Three linux CI jobs (solana-runtime / target-smoke / lean-product) all
failed in toolchains-provision-external (run 30779533374): cosmwasm-vm
3.0.9 depends on wasmer 5.0.6, whose __rust_probestack reference is no
longer exported since Rust 1.89 (rust-lang/rust#141992 turned it into a
#[naked] internal). x86_64 VM evidence: default rust 1.97 fails exactly
like CI with BOTH rust-lld and GNU ld (so -C linker-features=-lld is
not a fix); wasmer's vendored shim exists only in wasmer 6.1+/7.x and
is unavailable to wasmer 5.
- toolchain_assets.py: optional per-asset rustToolchain field
(MAJOR.MINOR[.PATCH] validated; provision runs rustup toolchain
install and cargo +<version> build).
- Both locks: cosmwasm-check asset pinned rustToolchain 1.88 (last
toolchain era before the change) — builds the official tag source
with its committed lockfile, dependency graph untouched.
- Verified on x86_64 (Rosetta VM): cargo +1.88 build --release -p
cosmwasm-check finishes and the binary reports Contract checking 3.0.9.
just toolchains-validate + self-test + docs-check green. Not formal.
Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

A-compiler-builtinsArea: compiler-builtins (https://github.com/rust-lang/compiler-builtins)A-LLVMArea: Code generation parts specific to LLVM. Both correctness bugs and optimization-related issues.A-nakedArea: `#[naked]`, prologue and epilogue-free, functions, https://git.io/vAzzSF-naked_functions`#![feature(naked_functions)]`S-waiting-on-borsStatus: Waiting on bors to run and complete tests. Bors will change the label on completion.T-compilerRelevant 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.

6 participants

@folkertdev@rustbot@tgross35@bors@rust-log-analyzer@bjorn3