[PATCH V11 1/4] rust: Fix "multiple candidates for rmeta dependency core" error

Gary Guo gary at garyguo.net
Wed Apr 22 01:59:11 AEST 2026


On Tue Apr 21, 2026 at 11:26 AM BST, Link Mauve wrote:
> From 2c0a3ec3da6fa1f0151225c05159f7a812317d32 Mon Sep 17 00:00:00 2001
> From: Link Mauve <linkmauve at linkmauve.fr>
> Date: Fri, 10 Apr 2026 13:51:24 +0200
> Subject: [PATCH 3/3] XXX: Workaround for __udivdi3() and __umoddi3()
> MIME-Version: 1.0
> Content-Type: text/plain; charset=UTF-8
> Content-Transfer-Encoding: 8bit
>
> The core crate currently depends on these two functions for i64/u64/
> i128/u128/core::time::Duration formatting, but we shouldn’t use that in
> the kernel so let’s panic if they are ever called.
> ---
>  rust/exports.c | 9 +++++++++
>  1 file changed, 9 insertions(+)
>
> diff --git a/rust/exports.c b/rust/exports.c
> index 587f0e776aba..5f1cdf13882e 100644
> --- a/rust/exports.c
> +++ b/rust/exports.c
> @@ -12,6 +12,7 @@
>   */
>  
>  #include <linux/export.h>
> +#include <linux/panic.h>
>  
>  #define EXPORT_SYMBOL_RUST_GPL(sym) extern int sym; EXPORT_SYMBOL_GPL(sym)
>  
> @@ -20,6 +21,14 @@
>  #include "exports_bindings_generated.h"
>  #include "exports_kernel_generated.h"
>  
> +void __udivdi3(void) {
> +	panic("__udivdi3() called but shouldn’t be made available on this architecture!\n");
> +}
> +
> +void __umoddi3(void) {
> +	panic("__umoddi3() called but shouldn’t be made available on this architecture!\n");
> +}
> +

This should be added to compiler_builtins.rs and gated for PPC32.

Best,
Gary

>  // For modules using `rust/build_error.rs`.
>  #ifdef CONFIG_RUST_BUILD_ASSERT_ALLOW
>  EXPORT_SYMBOL_RUST_GPL(rust_build_error);



More information about the Linuxppc-dev mailing list