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

Mark Morgan Lloyd markMLl.fpc-devel at telemetry.co.uk
Thu Aug 8 22:22:11 CEST 2013


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?

Misbehaving min()/max() rings a horrible bell, but I can't remember the 
context.

I'm glad to say that at least removing the -O- has no beneficial effect :-)

-- 
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