[OpenBIOS] cross-pcc compilation issue with GCC 4.5.0

Mark Cave-Ayland mark.cave-ayland at siriusit.co.uk
Fri Apr 30 23:13:39 CEST 2010


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?


ATB,

Mark.

-- 
Mark Cave-Ayland - Senior Technical Architect
PostgreSQL - PostGIS
Sirius Corporation plc - control through freedom
http://www.siriusit.co.uk
t: +44 870 608 0063

Sirius Labs: http://www.siriusit.co.uk/labs



More information about the OpenBIOS mailing list