This is the mail archive of the crossgcc@sources.redhat.com mailing list for the crossgcc project.

See the CrossGCC FAQ for lots more information.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

Re: undefined reference to `__udivdi3' ?


On Wed, 2005-07-13 12:31:32 +0200, Steven Scholz <steven.scholz@imc-berlin.de> wrote:
> When compiling linux-2.6.13-rc3 I get
> 
> arch/arm/kernel/built-in.o(__ksymtab+0x380): undefined reference to 
> `__udivdi3'
> arch/arm/kernel/built-in.o(__ksymtab+0x388): undefined reference to 
> `__umoddi3'
> arch/arm/kernel/built-in.o(__ksymtab+0x390): undefined reference to 
> `__udivmoddi4'
> 
> I am not sure if I understand correctly:
> 
> These functions are for integer arithmetics and should be in libgcc.a.
> They have nothing to do with glibc. Right?

Right.

> My libgcc.a does not have a __udivdi3.
> 
> What can I do to build a gcc-3.3.3 (with libgcc.a) that contains these 
> functions?

Please also keep in mind that there has been a lot of discussion about
this very subject. The resume is that libgcc.a probably shouldn't be
linked into the kernel, but the kernel should provide it's own version
instead.

This is specifically important to architectures where the instruction
set architecture got extended at some point (which is true for most
archs, though...)  Consider as an example a compiler targeted for
i686-pc-linux-gnu. Now consider you're building for an original i486,
using -m486 etc.  The compiler's output _will_ work on a i486, but can
you be 100% sure that the libgcc function (which were already
cross-compiled by this very i686-pc-linux-gnu-gcc compiler!) linked into
the kernel don't contain any i686 instructions?

You cannot. Some kernels (even on different architectures) didn't work
because of this very issue.

MfG, JBG

-- 
Jan-Benedict Glaw       jbglaw@lug-owl.de    . +49-172-7608481             _ O _
"Eine Freie Meinung in  einem Freien Kopf    | Gegen Zensur | Gegen Krieg  _ _ O
fuer einen Freien Staat voll Freier Buerger" | im Internet! |   im Irak!   O O O
ret = do_actions((curr | FREE_SPEECH) & ~(NEW_COPYRIGHT_LAW | DRM | TCPA));

Attachment: signature.asc
Description: Digital signature


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]