undefined references to __udivdi3 on powerpc

Olaf Hering
2008-02-28T13:38:19Z

While debugging __divdi3 calls in drivers/crypto/hifn_795x.c (due to the
ndelay() delay call with a s64), I found even more breakage of that
sort. This is after a allnoconfig with ARCH=powerpc in 2.6.25-rc3,
plus CONFIG_MODULES=y and CONFIG_CRYPTO_DEV_HIFN_795X=y:

LD .tmp_vmlinux1
kernel/built-in.o: In function `update_xtime_cache':
(.text+0x221a0): undefined reference to `__umoddi3'
kernel/built-in.o: In function `update_xtime_cache':
(.text+0x221c0): undefined reference to `__udivdi3'
kernel/built-in.o: In function `getnstimeofday':
(.text+0x22330): undefined reference to `__umoddi3'
kernel/built-in.o: In function `getnstimeofday':
(.text+0x22350): undefined reference to `__udivdi3'
kernel/built-in.o: In function `timekeeping_resume':
timekeeping.c:(.text+0x226a0): undefined reference to `__udivdi3'
timekeeping.c:(.text+0x22778): undefined reference to `__umoddi3'
timekeeping.c:(.text+0x22798): undefined reference to `__udivdi3'
kernel/built-in.o: In function `update_wall_time':
(.text+0x22c7c): undefined reference to `__umoddi3'
kernel/built-in.o: In function `update_wall_time':
(.text+0x22c9c): undefined reference to `__udivdi3'
kernel/built-in.o: In function `update_wall_time':
(.text+0x230f8): undefined reference to `__umoddi3'
kernel/built-in.o: In function `update_wall_time':
(.text+0x23118): undefined reference to `__udivdi3'
kernel/built-in.o: In function `do_settimeofday':
(.text+0x23520): undefined reference to `__udivdi3'
kernel/built-in.o: In function `timekeeping_init':
(.init.text+0x1870): undefined reference to `__udivdi3'
make[1]: *** [.tmp_vmlinux1] Error 1

But its not a regression, 2.6.24 allnoconfig does not link either on
powerpc32.

How can this be fixed?

Olaf