[OpenBIOS] cross-pcc compilation issue with GCC 4.5.0

Blue Swirl blauwirbel at gmail.com
Sat May 1 09:11:18 CEST 2010


On 5/1/10, Mark Cave-Ayland <mark.cave-ayland at siriusit.co.uk> wrote:
> Blue Swirl wrote:
>
>
> > 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.
> >
>
>  Earlier today Segher was kind enough to send me some pointers over IRC. One
> of the things we did find was that the version of gcc may be relevant. My
> original cross-compiler was based on gcc 4.3.2 and with your attached patch
> causes a crash - but upgrading to gcc 4.5.0 and then rebuilding OpenBIOS
> with your patch creates a working runtime once again.
>
>  What version of gcc are you using for your cross compilers?

Using built-in specs.
Target: sparc64-elf
Configured with: ../configure --target=sparc64-elf
--enable-targets=sparc-elf,sparc64-elf --disable-nls --disable-threads
--enable-languages=c --disable-shared --enable-multilib :
(reconfigured) ../configure --target=sparc64-elf
--enable-targets=sparc-elf,sparc64-elf --disable-nls --disable-threads
--enable-languages=c --disable-shared --enable-multilib --disable-ssp
: (reconfigured) ../configure --target=sparc64-elf
--enable-targets=sparc-elf,sparc64-elf --disable-nls --disable-threads
--enable-languages=c --disable-shared --enable-multilib
--disable-libssp
Thread model: single
gcc version 4.2.4

Using built-in specs.
Target: powerpc-elf
Configured with: ../configure --target=powerpc-elf --disable-nls
--disable-threads --enable-languages=c --disable-shared
--enable-multilib --disable-libssp
Thread model: single
gcc version 4.2.4

Using built-in specs.
Target: sparc-elf
Configured with: ../configure --enable-targets=sparc-elf,sparc64-elf
--disable-nls --disable-threads --enable-multilib --enable-languages=c
--with-gnu-ld --with-gnu-as --disable-libssp --target=sparc-elf
Thread model: single
gcc version 4.2.4



More information about the OpenBIOS mailing list