[PATCH V11 1/4] rust: Fix "multiple candidates for rmeta dependency core" error
Link Mauve
linkmauve at linkmauve.fr
Wed Apr 22 02:36:58 AEST 2026
Hi,
On Tue, Apr 21, 2026 at 04:59:11PM +0100, Gary Guo wrote:
> 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.
Thanks for the suggestion, this already seems like a much better
location for that!
This works fine for the core crate, but now panic_qr also gets the same
issue, here it is with V=1:
```
+ powerpc-linux-musl-ld -EB -m elf32ppc -z noexecstack --no-warn-rwx-segments -Bstatic --build-id=sha1 --orphan-handling=warn --script=./arch/powerpc/kernel/vmlinux.lds --strip-debug -o .tmp_vmlinux1 --whole-archive vmlinux.a .vmlinux.export.o init/version-timestamp.o --no-whole-archive --start-group --end-group .tmp_vmlinux0.kallsyms.o
powerpc-linux-musl-ld: drivers/gpu/drm/drm_panic_qr.o: in function `<drm_panic_qr::SegmentIterator as core::iter::traits::iterator::Iterator>::next':
drm_panic_qr.f39a15fa3c72e9fe-cgu.0:(.text+0x200c): undefined reference to `__udivdi3'
```
More information about the Linuxppc-dev
mailing list