gas:
authorDavid Daney <ddaney@avtrex.com>
Tue, 7 Nov 2006 23:55:36 +0000 (23:55 +0000)
committerDavid Daney <ddaney@avtrex.com>
Tue, 7 Nov 2006 23:55:36 +0000 (23:55 +0000)
* config/tc-mips.c (pic_need_relax): Return true for section symbols.

gas/testsuite:
* gas/mips/elf-rel26.s: New test.
* gas/mips/elf-rel26.d: Ditto.
* gas/mips/mips.exp: Run it.

gas/ChangeLog
gas/config/tc-mips.c
gas/testsuite/ChangeLog
gas/testsuite/gas/mips/elf-rel26.d [new file with mode: 0644]
gas/testsuite/gas/mips/elf-rel26.s [new file with mode: 0644]
gas/testsuite/gas/mips/mips.exp

index 118f161..dd41b91 100644 (file)
@@ -1,3 +1,7 @@
+2006-11-06  David Daney  <ddaney@avtrex.com>
+
+       * config/tc-mips.c (pic_need_relax): Return true for section symbols.
+
 2006-11-06  Thiemo Seufer  <ths@mips.com>
 
        * doc/c-mips.texi (-march): Document sb1a.
index d3ed818..8b36f26 100644 (file)
@@ -13153,6 +13153,9 @@ pic_need_relax (symbolS *sym, asection *segtype)
       sym = n;
     }
 
+  if (symbol_section_p (sym))
+    return TRUE;
+
   symsec = S_GET_SEGMENT (sym);
 
   /* This must duplicate the test in adjust_reloc_syms.  */
index 30c77b3..8070499 100644 (file)
@@ -1,3 +1,9 @@
+2006-11-06  David Daney  <ddaney@avtrex.com>
+
+       * gas/mips/elf-rel26.s: New test.
+       * gas/mips/elf-rel26.d: Ditto.
+       * gas/mips/mips.exp: Run it.
+
 2006-11-03  Jakub Jelinek  <jakub@redhat.com>
 
        * gas/cfi/cfi-common-6.d: New test.
diff --git a/gas/testsuite/gas/mips/elf-rel26.d b/gas/testsuite/gas/mips/elf-rel26.d
new file mode 100644 (file)
index 0000000..d176acb
--- /dev/null
@@ -0,0 +1,22 @@
+#as: -mips32 -EL -KPIC
+#readelf: --relocs
+#name: MIPS ELF reloc 26
+
+Relocation section '\.rel\.pdr' .*
+ *Offset.*
+00.*
+
+Relocation section '\.rel\.text\.foo' at offset .* contains 11 entries:
+ *Offset * Info * Type * Sym\.Value * Sym\. Name
+0+000 * .+ * R_MIPS_HI16 * 0+0 * _gp_disp
+0+004 * .+ * R_MIPS_LO16 * 0+0 * _gp_disp
+0+014 * .+ * R_MIPS_GOT16 * 0+0 * \$LC28
+0+01c * .+ * R_MIPS_LO16 * 0+0 * \$LC28
+0+020 * .+ * R_MIPS_CALL16 * 0+0 * bar
+0+030 * .+ * R_MIPS_PC16 * 0+0 * \$L846
+0+034 * .+ * R_MIPS_GOT16 * 0+0 * \$LC27
+0+038 * .+ * R_MIPS_PC16 * 0+0 * \$L848
+0+048 * .+ * R_MIPS_PC16 * 0+0 * \$L925
+0+010 * .+ * R_MIPS_GOT16 * 0+0 * \.rodata\.foo
+0+05c * .+ * R_MIPS_LO16 * 0+0 * \.rodata\.foo
+#pass
diff --git a/gas/testsuite/gas/mips/elf-rel26.s b/gas/testsuite/gas/mips/elf-rel26.s
new file mode 100644 (file)
index 0000000..ed6984a
--- /dev/null
@@ -0,0 +1,62 @@
+       .section        .text.foo,"axG",@progbits,foo,comdat
+       .align  2
+       .weak   foo
+       .ent    foo
+       .type   foo, @function
+foo:
+$LFB308:
+       .frame  $fp,136,$31             # vars= 72, regs= 10/0, args= 16, gp= 8
+       .mask   0xc0ff0000,-4
+       .fmask  0x00000000,0
+       .set    noreorder
+       .cpload $25
+
+       .set    nomacro
+       bne     $3,$0,$L924
+       lw      $25,%got($L874)($28)
+       .set    macro
+       .set    reorder
+       lw      $5,%got($LC28)($28)
+       lw      $4,136($fp)
+       addiu   $5,$5,%lo($LC28)
+       lw      $25,%call16(bar)($28)
+       .set    noreorder
+       .set    nomacro
+       jalr    $25
+       li      $6,-1                   # 0xffffffffffffffff
+       .set    macro
+       .set    reorder
+       lw      $25,64($fp)
+       .set    noreorder
+       .set    nomacro
+       bne     $25,$0,$L846
+       lw      $5,%got($LC27)($28)
+       b       $L848
+       sw      $0,68($fp)
+       .set    macro
+       .set    reorder
+$L920:
+       lb      $3,0($18)
+       li      $2,59                   # 0x3b
+       .set    noreorder
+       .set    nomacro
+       beq     $3,$2,$L925
+       lw      $25,76($fp)
+       b       $L920
+       addiu   $18,$18,1
+       .set    macro
+       .set    reorder
+
+$L924:
+       sll     $2,$2,2
+       addiu   $25,$25,%lo($L874)
+       addu    $2,$2,$25
+       lw      $3,0($2)
+       addu    $3,$3,$28
+       j       $3
+       .end foo
+       .section        .rodata.foo,"aG",@progbits,foo,comdat
+       .align  2
+       .align  2
+$L874:
+       .gpword $L924
index b6d8e7b..50c608a 100644 (file)
@@ -687,6 +687,7 @@ if { [istarget mips*-*-vxworks*] } {
 
        run_dump_test "elf-rel25"
        run_dump_test "elf-rel25a"
+       run_dump_test "elf-rel26"
 
        if { !$no_mips16 } {
            run_dump_test "${tmips}mips${el}16-e"