gas/
authorRichard Sandiford <rdsandiford@googlemail.com>
Sat, 6 Dec 2003 13:52:23 +0000 (13:52 +0000)
committerRichard Sandiford <rdsandiford@googlemail.com>
Sat, 6 Dec 2003 13:52:23 +0000 (13:52 +0000)
* config/tc-mips.c (macro): Switch misordered call to frag_grow()
and setting of tc_fr_offset.

gas/testsuite/
* gas/mips/elf-rel16.[sd]: New test.
* gas/mips/mips.exp: Run it.
* gas/mips/elf-rel-xgot-n32.d: Fix addends for "lw $5,dl1+34($5)".
* gas/mips/elf-rel-xgot-n64.d: Likewise.

gas/ChangeLog
gas/config/tc-mips.c
gas/testsuite/ChangeLog
gas/testsuite/gas/mips/elf-rel-xgot-n32.d
gas/testsuite/gas/mips/elf-rel-xgot-n64.d
gas/testsuite/gas/mips/elf-rel16.d [new file with mode: 0644]
gas/testsuite/gas/mips/elf-rel16.s [new file with mode: 0644]
gas/testsuite/gas/mips/mips.exp

index 679864c4fc0a022fefe604ae68a703635687c72a..ec4dcb3e6439c1ef2cde63061867496c501db81a 100644 (file)
@@ -1,3 +1,8 @@
+2003-12-06  Richard Sandiford  <rsandifo@redhat.com>
+
+       * config/tc-mips.c (macro): Switch misordered call to frag_grow()
+       and setting of tc_fr_offset.
+
 2003-12-05  Ricardo Anguiano <anguiano@codesourcery.com>
            Mark Mitchell  <mark@codesourcery.com>
            Richard Earnshaw  <rearnsha@arm.com>
index 1afd8bf68e69a32f08a5310987e9a0e4287db7da..d60e75f4954c17a5e83554e21305a53e5d170e60 100644 (file)
@@ -6348,13 +6348,13 @@ macro (struct mips_cl_insn *ip)
               lw       $tempreg,<sym>($gp)     (BFD_RELOC_MIPS_GOT_PAGE)
               <op>     $treg,<sym>($tempreg)   (BFD_RELOC_MIPS_GOT_OFST)  */
          assert (offset_expr.X_op == O_symbol);
+         frag_grow (36);
          frag_now->tc_frag_data.tc_fr_offset =
            expr1.X_add_number = offset_expr.X_add_number;
          offset_expr.X_add_number = 0;
          if (expr1.X_add_number < -0x8000
              || expr1.X_add_number >= 0x8000)
            as_bad (_("PIC code offset overflow (max 16 signed bits)"));
-         frag_grow (36);
          macro_build (NULL, &icnt, &offset_expr, "lui", "t,u", tempreg,
                       BFD_RELOC_MIPS_GOT_HI16);
          macro_build (NULL, &icnt, NULL, ADDRESS_ADD_INSN, "d,v,t",
index 274770dc651160755d86f325b580ecbaab8aba8d..41ee31b2da67e83dcacc3747fec2993d3c55eb0b 100644 (file)
@@ -1,3 +1,10 @@
+2003-12-06  Richard Sandiford  <rsandifo@redhat.com>
+
+       * gas/mips/elf-rel16.[sd]: New test.
+       * gas/mips/mips.exp: Run it.
+       * gas/mips/elf-rel-xgot-n32.d: Fix addends for "lw $5,dl1+34($5)".
+       * gas/mips/elf-rel-xgot-n64.d: Likewise.
+
 2003-12-05  Ricardo Anguiano <anguiano@codesourcery.com>
            Mark Mitchell  <mark@codesourcery.com>
            Richard Earnshaw  <rearnsha@arm.com>
index 72219310e19f6422a3b9ef7096768810ac611b49..a3f5d0c01caec40170795e7e0ce39a8b7f1d341a 100644 (file)
@@ -442,10 +442,10 @@ Disassembly of section \.text:
 00000490 <fn\+0x490> 8ca50000  lw      a1,0\(a1\)
                        490: R_MIPS_GOT_OFST    \.data\+0xc0
 00000494 <fn\+0x494> 8f810000  lw      at,0\(gp\)
-                       494: R_MIPS_GOT_PAGE    \.data\+0xb4
+                       494: R_MIPS_GOT_PAGE    \.data\+0xd6
 00000498 <fn\+0x498> 00250821  addu    at,at,a1
 0000049c <fn\+0x49c> 8c250000  lw      a1,0\(at\)
-                       49c: R_MIPS_GOT_OFST    \.data\+0xb4
+                       49c: R_MIPS_GOT_OFST    \.data\+0xd6
 000004a0 <fn\+0x4a0> 8f810000  lw      at,0\(gp\)
                        4a0: R_MIPS_GOT_PAGE    \.data\+0xec
 000004a4 <fn\+0x4a4> 00250821  addu    at,at,a1
index 167b47dd0d2894ec97495053d9d8375accfda592..3d4c13d1dd4540924f897c51d6de00ac01b12e6a 100644 (file)
@@ -726,14 +726,14 @@ Disassembly of section \.text:
                        490: R_MIPS_NONE        \*ABS\*\+0xc0
                        490: R_MIPS_NONE        \*ABS\*\+0xc0
 0000000000000494 <fn\+0x494> df810000  ld      at,0\(gp\)
-                       494: R_MIPS_GOT_PAGE    \.data\+0xb4
-                       494: R_MIPS_NONE        \*ABS\*\+0xb4
-                       494: R_MIPS_NONE        \*ABS\*\+0xb4
+                       494: R_MIPS_GOT_PAGE    \.data\+0xd6
+                       494: R_MIPS_NONE        \*ABS\*\+0xd6
+                       494: R_MIPS_NONE        \*ABS\*\+0xd6
 0000000000000498 <fn\+0x498> 0025082d  daddu   at,at,a1
 000000000000049c <fn\+0x49c> dc250000  ld      a1,0\(at\)
-                       49c: R_MIPS_GOT_OFST    \.data\+0xb4
-                       49c: R_MIPS_NONE        \*ABS\*\+0xb4
-                       49c: R_MIPS_NONE        \*ABS\*\+0xb4
+                       49c: R_MIPS_GOT_OFST    \.data\+0xd6
+                       49c: R_MIPS_NONE        \*ABS\*\+0xd6
+                       49c: R_MIPS_NONE        \*ABS\*\+0xd6
 00000000000004a0 <fn\+0x4a0> df810000  ld      at,0\(gp\)
                        4a0: R_MIPS_GOT_PAGE    \.data\+0xec
                        4a0: R_MIPS_NONE        \*ABS\*\+0xec
diff --git a/gas/testsuite/gas/mips/elf-rel16.d b/gas/testsuite/gas/mips/elf-rel16.d
new file mode 100644 (file)
index 0000000..9b15077
--- /dev/null
@@ -0,0 +1,14 @@
+#objdump: -dr
+#as: -mabi=n32 -mips3 -xgot -KPIC
+
+.*:     file format .*
+
+Disassembly of section \.text:
+
+00000000 <.*>:
+       \.\.\.
+.*:    8f840000        lw      a0,0\(gp\)
+                       .*: R_MIPS_GOT_PAGE     \.rodata\+0x8
+.*:    dc840000        ld      a0,0\(a0\)
+                       .*: R_MIPS_GOT_OFST     \.rodata\+0x8
+       \.\.\.
diff --git a/gas/testsuite/gas/mips/elf-rel16.s b/gas/testsuite/gas/mips/elf-rel16.s
new file mode 100644 (file)
index 0000000..e7d5938
--- /dev/null
@@ -0,0 +1,8 @@
+       .rept   0x3e0
+       nop
+       .endr
+       ld      $4,foo+8
+       .space  16
+       .section .rodata
+foo:
+       .word   1,2,3,4
index c4fd0c744b55ec1106aef46b0ee1d6b400d77b57..fa8a9a9648b04480bfc852250d30df9df88fd528 100644 (file)
@@ -663,6 +663,7 @@ if { [istarget mips*-*-*] } then {
 
        if $has_newabi {
            run_dump_test "elf-rel15"
+           run_dump_test "elf-rel16"
 
            run_dump_test "elf-rel-got-n32"
            run_dump_test "elf-rel-xgot-n32"