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

Link Mauve
2026-04-22T08:02:08Z

[-- Attachment #1: Type: text/plain, Size: 856 bytes --]

On Wed, Apr 22, 2026 at 01:23:41PM +0530, Mukesh Kumar Chaurasiya wrote:
> On Tue, Apr 21, 2026 at 08:16:06PM +0200, Miguel Ojeda wrote:
> > On Tue, Apr 21, 2026 at 7:47 PM Mukesh Kumar Chaurasiya
> > <mkchauras@gmail.com> wrote:
> > >
> > > There are some other build errors apart from this on 1.85. So few months
> > > back in the meeting with LLVM team we concluded that for sometime
> > > powerpc will be ahead of other archs at 1.95 till others catch up.
> >
> > In that case you may want to modify `scripts/min-tool-version.sh` in
> > this series too.
> >
> > I hope that helps!
> >
> Yeah this helps, Thanks :)
>
> Will post out a new series soon.

Great thanks!

For your new series you might want to incorporate the attached patch,
which makes the core crate build on PowerPC.

>
> Regards,
> Mukesh
> > Cheers,
> > Miguel

--
Link Mauve

[-- Attachment #2: 0001-rust-Make-__udivdi3-and-__umoddi3-panic.patch --]
[-- Type: text/plain, Size: 1774 bytes --]

From 120e1283d1e49d73df483496ffc669328511657c Mon Sep 17 00:00:00 2001
From: Link Mauve <linkmauve@linkmauve.fr>
Date: Fri, 10 Apr 2026 13:51:24 +0200
Subject: [PATCH] rust: Make __udivdi3() and __umoddi3() panic
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.

This doesn’t yet fix drm_panic_qr.rs, which also uses __udivdi3 when
CONFIG_CC_OPTIMIZE_FOR_SIZE=y, but at least makes the rest of the kernel
build on PPC32.

Signed-off-by: Link Mauve <linkmauve@linkmauve.fr>
---
rust/Makefile | 4 ++++
rust/compiler_builtins.rs | 6 ++++++
2 files changed, 10 insertions(+)

diff --git a/rust/Makefile b/rust/Makefile
index 99537c2c55ee..568f241a21a7 100644
--- a/rust/Makefile
+++ b/rust/Makefile
@@ -626,6 +626,10 @@ ifneq ($(or $(CONFIG_ARM64),$(and $(CONFIG_RISCV),$(CONFIG_64BIT))),)
__ashrti3 \
__ashlti3 __lshrti3
endif
+ifdef CONFIG_PPC32
+ redirect-intrinsics += \
+ __udivdi3 __umoddi3
+endif

ifdef CONFIG_MODVERSIONS
cmd_gendwarfksyms = $(if $(skip_gendwarfksyms),, \
diff --git a/rust/compiler_builtins.rs b/rust/compiler_builtins.rs
index dd16c1dc899c..fc6b54636dd5 100644
--- a/rust/compiler_builtins.rs
+++ b/rust/compiler_builtins.rs
@@ -97,5 +97,11 @@ pub extern "C" fn $ident() {
__aeabi_uldivmod,
});

+#[cfg(target_arch = "powerpc")]
+define_panicking_intrinsics!("`u64` division/modulo should not be used", {
+ __udivdi3,
+ __umoddi3,
+});
+
// NOTE: if you are adding a new intrinsic here, you should also add it to
// `redirect-intrinsics` in `rust/Makefile`.
--
2.54.0