Re: clang kernel PPC32 build failure, undefined reference to `__umoddi3'
From: Nick Desaulniers <ndesaulniers@google.com>
Date: 2022-08-03 19:02:35
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 [off-list ref] 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