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

2 messages, 2 authors, 2022-08-03 · open the first message on its own page

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

From: Christophe Leroy <hidden>
Date: 2022-08-03 18:55:13

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

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
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help