[fpc-devel] Compiling for libgdb, and using make -j on larger SPARC systems

Mark Morgan Lloyd markMLl.fpc-devel at telemetry.co.uk
Fri Aug 9 11:02:00 CEST 2013


Sven Barth wrote:
> Am 08.08.2013 22:22, schrieb Mark Morgan Lloyd:
>> Sven Barth wrote:
>>
>>>> If I revert to 2.6.2 and run ppcsparc under gdb, I get this as a 
>>>> backtrace:
>>>>
>>>> Program received signal SIGFPE, Arithmetic exception.
>>>> 0x001e61c0 in TCGASSIGNMENTNODE__PASS_GENERATE_CODE 
>>>> (this=0xf5d6abe0) at
>>>> ncgld.pas:785
>>>> 785                                 if (right.location.reference.offset
>>>> mod alignmentrequirement<>0) or
>>>> (gdb) bt
>>>> #0  0x001e61c0 in TCGASSIGNMENTNODE__PASS_GENERATE_CODE
>>>> (this=0xf5d6abe0) at ncgld.pas:785
>>
>>>> Also (if I'm doing this right)
>>>>
>>>> (gdb) print alignmentrequirement
>>>> $1 = 0
>>>>
>>>> Any thoughts appreciated.
>>>>
>>>
>>> This is strange. If you take a look at the code there are at least 
>>> two checks that should ensure that alignmentrequirement is not 0... 
>>> Could you maybe step into Min and Max to check whether they produce 
>>> sane results? (you'll likely need to recompile the RTL with debug 
>>> information; I'd suggest you to use 2.7.1 for debugging)
>>> If you can't recompile the RTL with debug information you could try 
>>> to break up the assignment statement for "alignmentrequirement" into 
>>> single steps and print the values so that we can have a complete 
>>> picture.
>>
>> I'll take a look at that in the morning, probably by printing 
>> temporary values etc. since I'm not very confident trying to 
>> single-step somebody else's complex code. Allowing that this is 
>> apparently a compiler rather than an fp/libgdb issue, is there test 
>> code for this case anywhere?
> We don't have an explicit test case for Min/Max.
>> Misbehaving min()/max() rings a horrible bell, but I can't remember 
>> the context.
> Maybe it isn't Min/Max itself, but the direct passing of the result of 
> the inner call to the outer call that's faulty on Sparc...
> 
> Maybe you could compile a test program with a similar situation as the 
> alignmentrequirement situation and check the parameter passing (if you 
> can read Sparc assembly language)

Generally working on it. I'll be back.

-- 
Mark Morgan Lloyd
markMLl .AT. telemetry.co .DOT. uk

[Opinions above are the author's, not those of his employers or colleagues]



More information about the fpc-devel mailing list