Skip to content

bench-kernel: replace #[naked] with #[unsafe(naked)] for stable Rust #65

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Open
wants to merge 2 commits into
base: main
Choose a base branch
from

Conversation

manchangfengxu
Copy link

Background
The latest stable Rust compiler, following rust-lang/rust#134213, now requires the #[naked] attribute to be marked as unsafe using #[unsafe(naked)]. The existing use of #[naked] in the bench-kernel module causes build failures on the stable toolchain (see workflow failure log).

This pull request resolves that issue by updating bench-kernel for compatibility with both stable and nightly Rust.

Changes
-Replace all #[naked] attributes with #[unsafe(naked)]
-Remove #![feature(naked_functions, asm_const)] as they are no longer required
-Use the naked_asm! macro as required by the new naked function specification
-Remove options(noreturn) which is disallowed inside naked_asm!
-Refactor put_char and put_str to avoid shared references to mutable statics
-Update GitHub Actions workflows to use ubuntu-22.04 instead of ubuntu-20.04

passed cargo build and cargo clippy.

Replace the #[naked] attribute with #[unsafe(naked)] in the bench-kernel
module to ensure compatibility with the latest stable Rust compiler.
This follows the stabilization in rust-lang/rust#134213 and avoids
build failures when using the stable Rust toolchain.

Specific changes include:
- Replace `#[naked]` with `#[unsafe(naked)]` across all relevant functions.
- Remove `#![feature(naked_functions, asm_const)]` as they are no longer
  needed on stable with `#[unsafe(naked)]`.
- Switch to the `naked_asm!` macro to comply with new naked function
  requirements introduced alongside `#[unsafe(naked)]`.
- Remove `options(noreturn)`, which is disallowed within `naked_asm!`.
- Update `put_char` and `put_str` implementations in
  `impl rcore_console::Console for Console` to avoid errors from creating
  shared references to mutable statics.
- Update GitHub Actions workflow files to use `ubuntu-22.04` instead of
  `ubuntu-20.04` for CI compatibility.

The changes build and pass tests successfully on both stable and nightly Rust.

Fix:
rustsbi/rustsbi#63

Refs:
- Issue: rustsbi/rustsbi#63
- Upstream PR: rust-lang/rust#134213

Signed-off-by: manchangfengxu <[email protected]>
Update `runs-on` directives in GitHub Actions workflow files, replacing
`ubuntu-20.04` with `ubuntu-22.04`.

This is necessary as the `ubuntu-20.04` runner image was retired on
April 15, 2025. Migrating to `ubuntu-22.04` ensures CI jobs continue
to run on a supported and up-to-date environment.

Refs: actions/runner-images#11101

Signed-off-by: manchangfengxu <[email protected]>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

1 participant