gas/
authorMaciej W. Rozycki <macro@linux-mips.org>
Sat, 24 Jul 2010 01:51:53 +0000 (01:51 +0000)
committerMaciej W. Rozycki <macro@linux-mips.org>
Sat, 24 Jul 2010 01:51:53 +0000 (01:51 +0000)
* config/tc-mips.c (macro)[M_JAL_1, M_JAL_2]: Handle the JALR
delay slot in the noreorder mode with the o32 ABI.

gas/testsuite/
* gas/mips/jal-svr4pic-noreorder.d: New test case.
* gas/mips/mips1@jal-svr4pic-noreorder.d: New test
subarchitecture.
* gas/mips/r3000@jal-svr4pic-noreorder.d: Likewise.
* gas/mips/jal-svr4pic-noreorder.s: Source for the new test
case.
* gas/mips/mips.exp: Run the new test case.

gas/ChangeLog
gas/config/tc-mips.c
gas/testsuite/ChangeLog
gas/testsuite/gas/mips/jal-svr4pic-noreorder.d [new file with mode: 0644]
gas/testsuite/gas/mips/jal-svr4pic-noreorder.s [new file with mode: 0644]
gas/testsuite/gas/mips/mips.exp
gas/testsuite/gas/mips/mips1@jal-svr4pic-noreorder.d [new file with mode: 0644]
gas/testsuite/gas/mips/r3000@jal-svr4pic-noreorder.d [new file with mode: 0644]

index 5ad0269b30d36316b001835b517b71ce0aaa07cb..09ee0a27e7c0f605028de8782b756fac55785d72 100644 (file)
@@ -1,3 +1,8 @@
+2010-07-24  Maciej W. Rozycki  <macro@codesourcery.com>
+
+       * config/tc-mips.c (macro)[M_JAL_1, M_JAL_2]: Handle the JALR
+       delay slot in the noreorder mode with the o32 ABI.
+
 2010-07-23  Naveen.H.S  <naveen.S@kpitcummins.com>
            Ina Pandit  <ina.pandit@kpitcummins.com>
 
index 21aedd9116e0bb5ef2feb07f912708f651fae7f6..103ab6f3588a3b888d2eb4a210dd37e6678795ce 100644 (file)
@@ -6219,6 +6219,8 @@ macro (struct mips_cl_insn *ip)
                      /* Quiet this warning.  */
                      mips_cprestore_valid = 1;
                    }
+                 if (mips_opts.noreorder)
+                   macro_build (NULL, "nop", "");
                  expr1.X_add_number = mips_cprestore_offset;
                  macro_build_ldst_constoffset (&expr1, ADDRESS_LOAD_INSN,
                                                mips_gp_register,
index a71657a0b29adc772c61d1939fce08beb05a4a09..aa1b0a4eb9dff249f7f063bb01823117a89cac8c 100644 (file)
@@ -1,3 +1,13 @@
+2010-07-24  Maciej W. Rozycki  <macro@codesourcery.com>
+
+       * gas/mips/jal-svr4pic-noreorder.d: New test case.
+       * gas/mips/mips1@jal-svr4pic-noreorder.d: New test
+       subarchitecture.
+       * gas/mips/r3000@jal-svr4pic-noreorder.d: Likewise.
+       * gas/mips/jal-svr4pic-noreorder.s: Source for the new test
+       case.
+       * gas/mips/mips.exp: Run the new test case.
+
 2010-07-24  Maciej W. Rozycki  <macro@codesourcery.com>
 
        * gas/mips/jal-svr4pic.d: Rename to...
diff --git a/gas/testsuite/gas/mips/jal-svr4pic-noreorder.d b/gas/testsuite/gas/mips/jal-svr4pic-noreorder.d
new file mode 100644 (file)
index 0000000..26a4cc1
--- /dev/null
@@ -0,0 +1,45 @@
+#objdump: -dr --prefix-addresses --show-raw-insn
+#name: MIPS jal-svr4pic noreorder
+#as: -32 -KPIC
+#source: jal-svr4pic-noreorder.s
+
+# Test the jal macro with -KPIC and `.set noreorder'.
+
+.*: +file format .*mips.*
+
+Disassembly of section \.text:
+[0-9a-f]+ <[^>]*> 3c1c0000     lui     gp,0x0
+[      ]*0: R_MIPS_HI16        _gp_disp
+[0-9a-f]+ <[^>]*> 279c0000     addiu   gp,gp,0
+[      ]*4: R_MIPS_LO16        _gp_disp
+[0-9a-f]+ <[^>]*> 0399e021     addu    gp,gp,t9
+[0-9a-f]+ <[^>]*> afbc0000     sw      gp,0\(sp\)
+[0-9a-f]+ <[^>]*> 0320f809     jalr    t9
+[0-9a-f]+ <[^>]*> 00000000     nop
+[0-9a-f]+ <[^>]*> 8fbc0000     lw      gp,0\(sp\)
+[0-9a-f]+ <[^>]*> 03202009     jalr    a0,t9
+[0-9a-f]+ <[^>]*> 00000000     nop
+[0-9a-f]+ <[^>]*> 8fbc0000     lw      gp,0\(sp\)
+[0-9a-f]+ <[^>]*> 8f990000     lw      t9,0\(gp\)
+[      ]*28: R_MIPS_GOT16      .text
+[0-9a-f]+ <[^>]*> 27390000     addiu   t9,t9,0
+[      ]*2c: R_MIPS_LO16       .text
+[0-9a-f]+ <[^>]*> 0320f809     jalr    t9
+[      ]*30: R_MIPS_JALR       text_label
+[0-9a-f]+ <[^>]*> 00000000     nop
+[0-9a-f]+ <[^>]*> 8fbc0000     lw      gp,0\(sp\)
+[0-9a-f]+ <[^>]*> 8f990000     lw      t9,0\(gp\)
+[      ]*3c: R_MIPS_CALL16     weak_text_label
+[0-9a-f]+ <[^>]*> 0320f809     jalr    t9
+[      ]*40: R_MIPS_JALR       weak_text_label
+[0-9a-f]+ <[^>]*> 00000000     nop
+[0-9a-f]+ <[^>]*> 8fbc0000     lw      gp,0\(sp\)
+[0-9a-f]+ <[^>]*> 8f990000     lw      t9,0\(gp\)
+[      ]*4c: R_MIPS_CALL16     external_text_label
+[0-9a-f]+ <[^>]*> 0320f809     jalr    t9
+[      ]*50: R_MIPS_JALR       external_text_label
+[0-9a-f]+ <[^>]*> 00000000     nop
+[0-9a-f]+ <[^>]*> 8fbc0000     lw      gp,0\(sp\)
+[0-9a-f]+ <[^>]*> 1000ffe8     b       0+0000 <text_label>
+[0-9a-f]+ <[^>]*> 00000000     nop
+       \.\.\.
diff --git a/gas/testsuite/gas/mips/jal-svr4pic-noreorder.s b/gas/testsuite/gas/mips/jal-svr4pic-noreorder.s
new file mode 100644 (file)
index 0000000..a856714
--- /dev/null
@@ -0,0 +1,25 @@
+# Source file used to test the jal macro with -KPIC code.
+
+       .weak   weak_text_label
+
+       .ent    text_label
+text_label:
+       .frame  $sp,0,$31
+       .set    noreorder
+       .cpload $25
+       .cprestore      0
+       jal     $25
+       jal     $4,$25
+       jal     text_label
+       jal     weak_text_label
+       jal     external_text_label
+
+# Test j as well.
+       j       text_label
+       .set    reorder
+       nop
+       .end    text_label
+
+# Force at least 8 (non-delay-slot) zero bytes, to make 'objdump' print ...
+       .align  2
+       .space  8
index e3aade423e704b8efc2ba2fab3716b3158e69389..b5f31fea671dcc112f660e89785833b717bfe1a7 100644 (file)
@@ -465,6 +465,8 @@ if { [istarget mips*-*-vxworks*] } {
     if $elf {
        run_dump_test_arches "jal-svr4pic" \
                                        [mips_arch_list_matching mips1]
+       run_dump_test_arches "jal-svr4pic-noreorder" \
+                                       [mips_arch_list_matching mips1]
     }
     if $elf { run_dump_test "jal-xgot" }
     run_list_test_arches "jal-range" "-32" [mips_arch_list_matching mips1]
diff --git a/gas/testsuite/gas/mips/mips1@jal-svr4pic-noreorder.d b/gas/testsuite/gas/mips/mips1@jal-svr4pic-noreorder.d
new file mode 100644 (file)
index 0000000..4ac9467
--- /dev/null
@@ -0,0 +1,48 @@
+#objdump: -dr --prefix-addresses --show-raw-insn
+#name: MIPS jal-svr4pic noreorder
+#as: -32 -KPIC
+#source: jal-svr4pic-noreorder.s
+
+# Test the jal macro with -KPIC and `.set noreorder' (MIPS1).
+
+.*: +file format .*mips.*
+
+Disassembly of section \.text:
+[0-9a-f]+ <[^>]*> 3c1c0000     lui     gp,0x0
+[      ]*0: R_MIPS_HI16        _gp_disp
+[0-9a-f]+ <[^>]*> 279c0000     addiu   gp,gp,0
+[      ]*4: R_MIPS_LO16        _gp_disp
+[0-9a-f]+ <[^>]*> 0399e021     addu    gp,gp,t9
+[0-9a-f]+ <[^>]*> afbc0000     sw      gp,0\(sp\)
+[0-9a-f]+ <[^>]*> 0320f809     jalr    t9
+[0-9a-f]+ <[^>]*> 00000000     nop
+[0-9a-f]+ <[^>]*> 8fbc0000     lw      gp,0\(sp\)
+[0-9a-f]+ <[^>]*> 03202009     jalr    a0,t9
+[0-9a-f]+ <[^>]*> 00000000     nop
+[0-9a-f]+ <[^>]*> 8fbc0000     lw      gp,0\(sp\)
+[0-9a-f]+ <[^>]*> 8f990000     lw      t9,0\(gp\)
+[      ]*28: R_MIPS_GOT16      .text
+[0-9a-f]+ <[^>]*> 00000000     nop
+[0-9a-f]+ <[^>]*> 27390000     addiu   t9,t9,0
+[      ]*30: R_MIPS_LO16       .text
+[0-9a-f]+ <[^>]*> 0320f809     jalr    t9
+[      ]*34: R_MIPS_JALR       text_label
+[0-9a-f]+ <[^>]*> 00000000     nop
+[0-9a-f]+ <[^>]*> 8fbc0000     lw      gp,0\(sp\)
+[0-9a-f]+ <[^>]*> 8f990000     lw      t9,0\(gp\)
+[      ]*40: R_MIPS_CALL16     weak_text_label
+[0-9a-f]+ <[^>]*> 00000000     nop
+[0-9a-f]+ <[^>]*> 0320f809     jalr    t9
+[      ]*48: R_MIPS_JALR       weak_text_label
+[0-9a-f]+ <[^>]*> 00000000     nop
+[0-9a-f]+ <[^>]*> 8fbc0000     lw      gp,0\(sp\)
+[0-9a-f]+ <[^>]*> 8f990000     lw      t9,0\(gp\)
+[      ]*54: R_MIPS_CALL16     external_text_label
+[0-9a-f]+ <[^>]*> 00000000     nop
+[0-9a-f]+ <[^>]*> 0320f809     jalr    t9
+[      ]*5c: R_MIPS_JALR       external_text_label
+[0-9a-f]+ <[^>]*> 00000000     nop
+[0-9a-f]+ <[^>]*> 8fbc0000     lw      gp,0\(sp\)
+[0-9a-f]+ <[^>]*> 1000ffe5     b       0+0000 <text_label>
+[0-9a-f]+ <[^>]*> 00000000     nop
+       \.\.\.
diff --git a/gas/testsuite/gas/mips/r3000@jal-svr4pic-noreorder.d b/gas/testsuite/gas/mips/r3000@jal-svr4pic-noreorder.d
new file mode 100644 (file)
index 0000000..8419b82
--- /dev/null
@@ -0,0 +1,5 @@
+#objdump: -dr --prefix-addresses --show-raw-insn
+#name: MIPS jal-svr4pic noreorder
+#as: -32 -KPIC
+#source: jal-svr4pic-noreorder.s
+#dump: mips1@jal-svr4pic-noreorder.d