clang kernel PPC32 build failure, undefined reference to `__umoddi3'

Nick Desaulniers ndesaulniers at google.com
Thu Aug 4 05:01:35 AEST 2022


Thanks for the report; tracking the issue here:
https://github.com/ClangBuiltLinux/linux/issues/1679

clang-15 got more aggressive about eliminating loops outright; some
cases can be replaced with division/remainder.  LLVM is missing
support for expanding 64b division by constant for 32b targets; WIP.

On Wed, Aug 3, 2022 at 11:54 AM Christophe Leroy
<christophe.leroy at csgroup.eu> wrote:
>
> Looks like since recently some clang builds fails for missing reference
> to `__umoddi3`.
>
> See exemple at:
> - https://github.com/ruscur/linux-ci/actions/runs/2789193140
> -
> https://patchwork.ozlabs.org/project/linuxppc-dev/patch/eca9251f1e1f82c4c46ec6380ddb28356ab3fdfe.1659527244.git.christophe.leroy@csgroup.eu/
>
>  From fs/mpage.o:
>
> 00000170 <do_mpage_readpage>:
> ...
>       69c:      38 60 00 00     li      r3,0
>       6a0:      38 a0 00 00     li      r5,0
>       6a4:      38 c0 00 05     li      r6,5
>       6a8:      7d c4 73 78     mr      r4,r14
>       6ac:      92 e1 00 10     stw     r23,16(r1)
>       6b0:      3a a0 00 00     li      r21,0
>       6b4:      93 81 00 18     stw     r28,24(r1)
>       6b8:      3b 80 00 05     li      r28,5
>       6bc:      92 01 00 14     stw     r16,20(r1)
>       6c0:      92 21 00 1c     stw     r17,28(r1)
>       6c4:      48 00 00 01     bl      6c4 <do_mpage_readpage+0x554>
>                         6c4: R_PPC_REL24        __umoddi3
>
>
>
> I don't understand why calling __umoddi3 when the arguments are
> obviously 32 bits are r3 and r5 are zero.
>
> Christophe



-- 
Thanks,
~Nick Desaulniers


More information about the Linuxppc-dev mailing list