2008-02-28 13:38:19

by Olaf Hering

[permalink] [raw]
Subject: undefined references to __udivdi3 on powerpc


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


2008-02-28 15:41:32

by Segher Boessenkool

[permalink] [raw]
Subject: Re: undefined references to __udivdi3 on powerpc

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

I cannot reproduce this, but my tree has

time: prevent the loop in timespec_add_ns() from being optimised away

which is in -mm now. Could you try that patch?


Segher

2008-02-28 16:45:08

by Olaf Hering

[permalink] [raw]
Subject: Re: undefined references to __udivdi3 on powerpc

On Thu, Feb 28, Segher Boessenkool wrote:

>> 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:
>
> I cannot reproduce this, but my tree has
>
> time: prevent the loop in timespec_add_ns() from being optimised away
>
> which is in -mm now. Could you try that patch?

Yes, this patch fixes it.
Thanks.

2008-02-29 06:57:58

by Adrian Bunk

[permalink] [raw]
Subject: Re: undefined references to __udivdi3 on powerpc

On Thu, Feb 28, 2008 at 02:37:18PM +0100, Olaf Hering wrote:
>
> 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.
>...

You didn't mention your gcc version, but you should only get these
errors when using the not yet released gcc 4.3.

And this issue is known for at about half a year.

> Olaf

cu
Adrian

--

"Is there not promise of rain?" Ling Tan asked suddenly out
of the darkness. There had been need of rain for many days.
"Only a promise," Lao Er said.
Pearl S. Buck - Dragon Seed