[OpenBIOS] cross-pcc compilation issue with GCC 4.5.0

Blue Swirl blauwirbel at gmail.com
Mon Apr 26 22:29:20 CEST 2010


On 4/26/10, Mark Cave-Ayland <mark.cave-ayland at siriusit.co.uk> wrote:
> Segher Boessenkool wrote:
>
>
> > That patch [which doesn't display in the mail archive btw] seems to remove
> > -print-libgcc-file-name, and uses -lgcc instead -- not such a hot idea?
> >
> > I don't even know how to build OpenBIOS, so I'm not going to fix it,
> sorry.
> >
>
>  If you have a PPC cross-compiler installed, the build is easy:
>
>  ./config/scripts/switch-arch cross-ppc
>  make
>
>  Then copy the resulting binary from obj-ppc/ into your share/qemu
> directory.
>
>
> > I'll do my best with directed questions of course :-)
> >
>
>  Even an idea as to what to look at first would be a great help...

I think I can now reproduce the crash, previously I had no problems
which made debugging a bit difficult. I changed gcc's memory model
flag to -mcmodel=medlow and now Milax crashes in __umodti3 like Igor
reported. Perhaps this flag may be different when gcc builds libgcc.

The problem seems to be that gcc's libgcc divides by zero.
Breakpoint 10, __umodti3 (u=<value optimized out>,
    v=0x0000000000000000fffffffffffffffe) at ../../gcc/libgcc2.c:911
911     in ../../gcc/libgcc2.c
11: $i4 = 0x0
10: $i0 = 0x1
1: x/i $pc
0xffd1f980 <__umodti3+952>:     udivx  %i0, %i4, %g1

Why this doesn't happen with our libgcc? Why it doesn't happen with
-mcmodel=medany? What a puzzle.

One solution could be to check for division by zero in mudivmod(),
which is where __umodti3 is called from.
-------------- next part --------------
A non-text attachment was scrubbed...
Name: 0001-Remove-our-local-copy-of-libgcc.patch
Type: text/x-diff
Size: 39712 bytes
Desc: not available
URL: <http://lists.openbios.org/pipermail/openbios/attachments/20100426/0741e30e/attachment-0002.bin>
-------------- next part --------------
A non-text attachment was scrubbed...
Name: 0002-Sparc64-switch-to-medlow-model.patch
Type: text/x-diff
Size: 863 bytes
Desc: not available
URL: <http://lists.openbios.org/pipermail/openbios/attachments/20100426/0741e30e/attachment-0003.bin>


More information about the OpenBIOS mailing list