This is the mail archive of the gcc@gcc.gnu.org mailing list for the GCC project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

MIPS Wrong-code regression.


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


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]