------- Comment #2 from daney at gcc dot gnu dot org  2006-11-05 21:44 -------
It looks like the problem here is that a %lo relocation is getting seperated
from its corresponding %got.  Here is a little of the assembly, note how there
is an intervening %got/%lo between the %got($L2406) and the %lo($L2406):

        .loc 1 1634 0
        addiu   $3,$3,-4
$LVL1875:
        sltu    $2,$3,8
        .set    noreorder
        .set    nomacro
        bne     $2,$0,$L3018
        lw      $4,%got($L2406)($28)
        .set    macro
        .set    reorder

        .loc 1 1671 0
        lw      $5,%got($LC29)($28)
        move    $4,$22
        addiu   $5,$5,%lo($LC29)
        lw      $25,%call16(_ZN20_Jv_BytecodeVerifier11verify_failEPKci)($28)
$LEHB200:
        .set    noreorder
        .set    nomacro
        jalr    $25
        li      $6,-1                   # 0xffffffffffffffff
        .set    macro
        .set    reorder

$LVL1876:
$L2392:
$LBE9309:
$LBE9307:
$LBE9305:
$LBB9318:
$LBB9304:
        .loc 1 693 0
        li      $3,10                   # 0xa
$LVL1877:
        .set    noreorder
        .set    nomacro
        b       $L2396
        move    $16,$0
        .set    macro
        .set    reorder

$LVL1878:
$L3018:
$LBE9304:
$LBE9318:
$LBB9319:
$LBB9306:
$LBB9308:
        .loc 1 1634 0
        sll     $2,$3,2
        addiu   $4,$4,%lo($L2406)
        addu    $2,$2,$4
        lw      $3,0($2)
        addu    $3,$3,$28
        j       $3
        .section       
.rodata._ZN20_Jv_BytecodeVerifier21verify_instructions_\
0Ev,"aG",@progbits,_ZN20_Jv_BytecodeVerifier21verify_instructions_0Ev,comdat
        .align  2
        .align  2
$L2406:
        .gpword $L2398
        .gpword $L2399
        .gpword $L2400
        .gpword $L2401
        .gpword $L2402
        .gpword $L2403
        .gpword $L2404
        .gpword $L2405


-- 


http://gcc.gnu.org/bugzilla/show_bug.cgi?id=29721

Reply via email to