On Mon, Jan 07, 2008 at 09:43:24AM +0900, John Summerfield wrote:
>See
http://gcc.gnu.org/PR32044
>__udivdi3/__umoddi3 are in libgcc.a and gcc relies on it libgcc being
>available, but the kernel chooses to link without libgcc - for some
>routines
>it has its own counterparts, for some it chooses not to implement them at
>all and just assumes they won't be needed.
It doesn't "assume they won't be needed," the kernel is written to be
self-complete.
Think a while, what place does user-space code have in the kernel?
libgcc routines are self-complete. And on a bunch of architectures
Linux kernel is linked with libgcc.a, e.g. sh{,64}, xtensa, pa, cris,
h8300, m32r. If you do nm on i386 libgcc.a, you'll see:
...
_divdi3.o:
0000000000000000 T __divdi3
_moddi3.o:
0000000000000000 T __moddi3
_udivdi3.o:
0000000000000000 T __udivdi3
_umoddi3.o:
0000000000000000 T __umoddi3
...
i.e. all these routines don't need anything else.
Jakub