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

2022-08-03 Thread Nick Desaulniers
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
 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.le...@csgroup.eu/
>
>  From fs/mpage.o:
>
> 0170 :
> ...
>   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 
> 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


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

2022-08-03 Thread Christophe Leroy
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.le...@csgroup.eu/


From fs/mpage.o:

0170 :
...
 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 
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