use #[naked] for __rust_probestack#141992
Conversation
|
cc @tgross35 |
#[naked] for __rust_probestack
|
It will most definitely work, in-tree compiler-builtins has no CI running and it is not yet used for anything :) |
|
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. |
|
☔ The latest upstream changes (presumably #142081) made this pull request unmergeable. Please resolve the merge conflicts. |
be86dc8 to
79aa400
Compare
79aa400 to
6b6ad28
Compare
This comment has been minimized.
This comment has been minimized.
6b6ad28 to
a2da8e0
Compare
This comment has been minimized.
This comment has been minimized.
a2da8e0 to
601e479
Compare
|
I'll kick off some jobs that should cover fortanix/sgx/uefi @bors2 try |
|
@folkertdev can now perform try builds on this pull request |
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*`
| // 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"`. |
There was a problem hiding this comment.
Mind making these FIXME(extern_c) since that should be a thing soon?
tgross35
left a comment
There was a problem hiding this comment.
Lgtm, mind stuffing the last commit into the first?
|
@bors delegate+ |
|
✌️ @folkertdev, you can now approve this pull request! If @tgross35 told you to " |
fff42eb to
b030442
Compare
…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*`
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
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
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*`
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
…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*`
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
…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)
Let's see if this works now.
Previously this change was in rust-lang/compiler-builtins#897, but we decided to wait until
compiler-builtinswas a subtree (and alsocfg(bootstrap)is gone now).r? @tgross35 cc @bjorn3
try-job:
dist-various*try-job:
test-various*