When trying to build U-Boot under Buildroot and OpenEmbedded,
I run into a problem:

When linking u-boot the linker seems to use the div0 from
the C compiler libgcc instead of the u-boot div0.

gcc div0 for ARM contains a call to "raise" which is not defined
in libgcc.a (someone said it was part of glibc),
so the linking process fails due to no "raise" symbol

gcc/config/arm/lib1funcs.asm contains:


FUNC_START div0

        tmfd sp!, {r1, lr}
        mov r0, #SIGFPE
        bl SYM(raise) __PLT__
        ...

The problem can be fixed by patching the C compiler:

+       bl SYM(raise) __PLT__
+       bl SYM(_div0) __PLT__

------
What I'd like to know: Is there a way to fix this in u-boot?

Tried creating a "raise" function in libarm/board.c
void raise(void)
{
        hang();
}

which did not work.

I later saw that raise needs a parameter,
but it complained that raise is not found,
and not that the parameters is wrong.

Is board.c not included in the link?

Anyone else got this problem?

BR
Ulf Samuelsson

_______________________________________________
U-Boot mailing list
U-Boot@lists.denx.de
http://lists.denx.de/mailman/listinfo/u-boot

Reply via email to