MIPS Wrong-code regression.

David Daney ddaney@avtrex.com
Wed Jan 31 06:41:00 GMT 2007


Richard,

Sometime between 1/7 and 1/16 on the trunk I started getting wrong code 
on a bunch of java testcases under mipsel-linux.

It looks related to (but not necessarily caused by) this patch:

http://gcc.gnu.org/ml/gcc-patches/2006-03/msg01346.html

For example if we examine the assembler output of the PR9577.java 
testcase, we see:

.
.
.
$LBB2:
        lw      $2,40($fp)
        sw      $2,24($fp)
        lw      $2,24($fp)
        move    $4,$2
        .option pic0
        jal     _ZN4java4lang6ObjectC1Ev
        nop

        .option pic2
        lw      $28,16($fp)
$LBE2:
        move    $sp,$fp
        lw      $31,36($sp)
        lw      $fp,32($sp)
        addiu   $sp,$sp,40
        j       $31
        nop

The call to _ZN4java4lang6ObjectC1Ev is being generated as non-pic, even 
though that symbol is defined in libgcj.so.  The assembler and linker 
conspire to jump to address 0x00000000 for this call.

It looks like the logic that decides if a symbol is external to the 
compilation unit is faulty.

Any ideas about where it might have gone wrong?

I will try to look into it more tomorrow.

Thanks,
David Daney



More information about the Java mailing list