[gas/]
authorRichard Sandiford <rdsandiford@googlemail.com>
Thu, 1 Aug 2002 20:14:49 +0000 (20:14 +0000)
committerRichard Sandiford <rdsandiford@googlemail.com>
Thu, 1 Aug 2002 20:14:49 +0000 (20:14 +0000)
* config/tc-mips.c (tc_gen_reloc): Extend GP-relative addend
handling to BFD_RELOC_MIPS16_GPREL.

[gas/testsuite/]
* gas/mips/elf-rel6.[sd]: New test.
* gas/mips/mips.exp: Run it.

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

index 3493ddbd962326dd9c04784939377f0dad31beac..aea784282e1c5947c6b5403265380a7f989f3ba3 100644 (file)
@@ -1,3 +1,8 @@
+2002-08-01  Richard Sandiford  <rsandifo@redhat.com>
+
+       * config/tc-mips.c (tc_gen_reloc): Extend GP-relative addend
+       handling to BFD_RELOC_MIPS16_GPREL.
+
 2002-08-01  Nick Clifton  <nickc@redhat.com>
 
        * config/tc-arm.c (add_to_lit_pool): Ensure that offset to literal
index 0290587dd9d0a19c18a98f8725191de162eb89f5..c8eba550b96a70215bde372dcdedb57fd7a70e18 100644 (file)
@@ -12694,7 +12694,7 @@ tc_gen_reloc (section, fixp)
      stop md_apply_fix3 from subtracting twice in the first place since
      the fake addend is required for variant frags above.  */
   if (fixp->fx_addsy != NULL && OUTPUT_FLAVOR == bfd_target_elf_flavour
-      && code == BFD_RELOC_GPREL16
+      && (code == BFD_RELOC_GPREL16 || code == BFD_RELOC_MIPS16_GPREL)
       && reloc->addend != 0
       && mips_need_elf_addend_fixup (fixp))
     reloc->addend += S_GET_VALUE (fixp->fx_addsy);
index 76a4462a10462ead3209439a2cc7bcf2301d7960..8d211f7182b6fc64538c3fa9de55460ba092add3 100644 (file)
@@ -1,3 +1,8 @@
+2002-08-01  Richard Sandiford  <rsandifo@redhat.com>
+
+       * gas/mips/elf-rel6.[sd]: New test.
+       * gas/mips/mips.exp: Run it.
+
 2002-07-29  Chris Demetriou  <cgd@broadcom.com>
 
        * gas/mips/elf_ase_mips16.d: New file to test ELF MIPS16 ASE marking.
diff --git a/gas/testsuite/gas/mips/elf-rel6.d b/gas/testsuite/gas/mips/elf-rel6.d
new file mode 100644 (file)
index 0000000..5baadf9
--- /dev/null
@@ -0,0 +1,10 @@
+#objdump: -dr --prefix-addresses
+#name: MIPS ELF reloc 6
+
+.*: +file format elf.*mips.*
+
+Disassembly of section \.text:
+0+00 <.*> lb   v0,0\(v1\)
+                       0: R_MIPS16_GPREL       bar
+0+04 <.*> lb   v0,1\(v1\)
+                       4: R_MIPS16_GPREL       bar
diff --git a/gas/testsuite/gas/mips/elf-rel6.s b/gas/testsuite/gas/mips/elf-rel6.s
new file mode 100644 (file)
index 0000000..e0bc37a
--- /dev/null
@@ -0,0 +1,16 @@
+       .sdata
+       .global foo
+       .globl  bar
+foo:   .byte   1
+       .byte   2
+bar:   .byte   3
+       .byte   4
+
+       .text
+       .set mips16
+       .global f
+       .ent    f
+f:
+       lb      $2,%gprel(bar)($3)
+       lb      $2,%gprel(bar+1)($3)
+       .end    f
index 1b02f7123b83cd8673b3f1d08d8f787964324062..a3b6911f34cc40fe2198afdbde277fc1bc564473 100644 (file)
@@ -205,6 +205,7 @@ if { [istarget mips*-*-*] } then {
            run_dump_test "e32-rel4"
        }
        run_dump_test "elf-rel5"
+       run_dump_test "elf-rel6"
        run_dump_test "${tmips}${el}empic"
        run_dump_test "empic2"
        run_dump_test "empic3_e"