Skip to content

fix uefi build with rust 1.99 - #378

Merged
JohnAZoidberg merged 2 commits into
mainfrom
uefi-rust-1.99
Oct 2, 2026
Merged

JohnAZoidberg merged 2 commits into
mainfrom
uefi-rust-1.99

Conversation

@JohnAZoidberg

Copy link
Copy Markdown
Member

No description provided.

Running clippy for the UEFI target found:

- unused_variables: smartbattery_arg is only used without uefi feature
- clippy::unnecessary_unwrap: unwrap() after checking is_ok() in
  --pd-addrs and --pd-ports
- clippy::len_zero: args.len() == 0 instead of args.is_empty()
- clippy::needless_range_loop: --rgbkbd indexed args with a range

Signed-off-by: Daniel Schaefer <dhs@frame.work>
Since Rust 1.99 (LLVM 23), loops that search for a NUL u16, like in
uefi's CStr16::from_ptr, are turned into calls to wcslen. There's no
libc on UEFI and compiler_builtins doesn't provide it, so linking fails:

    rust-lld: error: undefined symbol: wcslen

Provide our own implementation. It uses volatile reads, so LLVM can't
turn it into a call to itself.

Disabling the optimization with -C llvm-args=-disable-loop-idiom-wcslen
also works, but older toolchains reject that unknown argument.

Signed-off-by: Daniel Schaefer <dhs@frame.work>
@JohnAZoidberg
JohnAZoidberg merged commit 307c485 into main Oct 2, 2026
11 checks passed
@JohnAZoidberg
JohnAZoidberg deleted the uefi-rust-1.99 branch October 2, 2026 14:59
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