Skip to content

Commit 8177f44

Browse files
committed
objtool/rust: add one more noreturn Rust function
JIRA: https://issues.redhat.com/browse/RHEL-114921 commit dbdf2a7 Author: Miguel Ojeda <ojeda@kernel.org> Date: Mon Oct 20 04:07:14 2025 +0200 objtool/rust: add one more `noreturn` Rust function Between Rust 1.79 and 1.86, under `CONFIG_RUST_KERNEL_DOCTESTS=y`, `objtool` may report: rust/doctests_kernel_generated.o: warning: objtool: rust_doctest_kernel_alloc_kbox_rs_13() falls through to next function rust_doctest_kernel_alloc_kvec_rs_0() (as well as in rust_doctest_kernel_alloc_kvec_rs_0) due to calls to the `noreturn` symbol: core::option::expect_failed from code added in commits 779db37 ("rust: alloc: kvec: implement AsPageIter for VVec") and 6716184 ("rust: alloc: kbox: implement AsPageIter for VBox"). Thus add the mangled one to the list so that `objtool` knows it is actually `noreturn`. This can be reproduced as well in other versions by tweaking the code, such as the latest stable Rust (1.90.0). Stable does not have code that triggers this, but it could have it in the future. Downstream forks could too. Thus tag it for backport. See commit 56d680d ("objtool/rust: list `noreturn` Rust functions") for more details. Signed-off-by: Miguel Ojeda <ojeda@kernel.org> Signed-off-by: Peter Zijlstra (Intel) <peterz@infradead.org> Reviewed-by: Alice Ryhl <aliceryhl@google.com> Cc: stable@vger.kernel.org # Needed in 6.12.y and later. Link: https://patch.msgid.link/20251020020714.2511718-1-ojeda@kernel.org Signed-off-by: Joe Lawrence <joe.lawrence@redhat.com>
1 parent b777d40 commit 8177f44

File tree

1 file changed

+1
-0
lines changed

1 file changed

+1
-0
lines changed

tools/objtool/check.c

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -218,6 +218,7 @@ static bool is_rust_noreturn(const struct symbol *func)
218218
* these come from the Rust standard library).
219219
*/
220220
return str_ends_with(func->name, "_4core5sliceSp15copy_from_slice17len_mismatch_fail") ||
221+
str_ends_with(func->name, "_4core6option13expect_failed") ||
221222
str_ends_with(func->name, "_4core6option13unwrap_failed") ||
222223
str_ends_with(func->name, "_4core6result13unwrap_failed") ||
223224
str_ends_with(func->name, "_4core9panicking5panic") ||

0 commit comments

Comments
 (0)