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 <[email protected]> > 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);
