This is due to a compiler bug.  The first two instructions of the
function QTime::addMSecs(int) are:

0xf7ce212c <_ZNK5QTime8addMSecsEi+0>:   save  %sp, -112, %sp
0xf7ce2130 <_ZNK5QTime8addMSecsEi+4>:   ld  [ %sp + 0x40 ], %i5

The second instruction is supposed to load the address where the
returned QTime object should be stored.  The calling convention is that
this is passed at 64 bytes above the stack pointer.  But it is using the
value of %sp *after* modification by the preceding save instruction, so
it reads random garbage.

These instructions should be generated in the opposite order, or the %sp
in the second instruction changed to %fp.  I have confirmed that the
latter change (replace opcode 0xfa03a040 with 0xfa07a040) causes the
test program to run successfully.

Ben.

Attachment: signature.asc
Description: This is a digitally signed message part

Reply via email to