diff options
author | Maciej W. Rozycki <macro@linux-mips.org> | 2011-02-28 15:52:26 +0000 |
---|---|---|
committer | Maciej W. Rozycki <macro@linux-mips.org> | 2011-02-28 15:52:26 +0000 |
commit | 66b3e8dabc2c61facd835c97aa64dccde687d85d (patch) | |
tree | 2d58ff5d8e586239a86936496658fe08c418638f | |
parent | ce70d90a3e5e00fd49b46164a43e3dfbcf1cf404 (diff) | |
download | gdb-66b3e8dabc2c61facd835c97aa64dccde687d85d.zip gdb-66b3e8dabc2c61facd835c97aa64dccde687d85d.tar.gz gdb-66b3e8dabc2c61facd835c97aa64dccde687d85d.tar.bz2 |
gas/
* config/tc-mips.c (RELAX_BRANCH_ENCODE): Encode the temporary
register to use.
(RELAX_BRANCH_UNCOND): Adjust accordingly.
(RELAX_BRANCH_LIKELY): Likewise.
(RELAX_BRANCH_LINK): Likewise.
(RELAX_BRANCH_TOOFAR): Likewise.
(RELAX_BRANCH_AT): New macro.
(append_insn): Encode the temporary register to use in standard
MIPS branch relaxation.
(relaxed_branch_length): Update according to changes to
RELAX_BRANCH_ENCODE.
(md_convert_frag): Use the encoded register as the temporary.
gas/testsuite/
* gas/mips/relax-at.d: New test for branch relaxation with .set
at.
* gas/mips/relax.s: Update to support the new test.
* gas/mips/relax.l: Update accordingly.
* gas/mips/relax.d: Update for multi-arch invocation.
* gas/mips/mips.exp: Run the new test. Adjust to run "relax"
across all applicable architectures.
-rw-r--r-- | gas/ChangeLog | 15 | ||||
-rw-r--r-- | gas/config/tc-mips.c | 43 | ||||
-rw-r--r-- | gas/testsuite/ChangeLog | 10 | ||||
-rw-r--r-- | gas/testsuite/gas/mips/mips.exp | 3 | ||||
-rw-r--r-- | gas/testsuite/gas/mips/relax-at.d | 396 | ||||
-rw-r--r-- | gas/testsuite/gas/mips/relax.d | 4 | ||||
-rw-r--r-- | gas/testsuite/gas/mips/relax.l | 22 | ||||
-rw-r--r-- | gas/testsuite/gas/mips/relax.s | 4 |
8 files changed, 466 insertions, 31 deletions
diff --git a/gas/ChangeLog b/gas/ChangeLog index 316abb7..2b71f2a 100644 --- a/gas/ChangeLog +++ b/gas/ChangeLog @@ -1,5 +1,20 @@ 2011-02-28 Maciej W. Rozycki <macro@codesourcery.com> + * config/tc-mips.c (RELAX_BRANCH_ENCODE): Encode the temporary + register to use. + (RELAX_BRANCH_UNCOND): Adjust accordingly. + (RELAX_BRANCH_LIKELY): Likewise. + (RELAX_BRANCH_LINK): Likewise. + (RELAX_BRANCH_TOOFAR): Likewise. + (RELAX_BRANCH_AT): New macro. + (append_insn): Encode the temporary register to use in standard + MIPS branch relaxation. + (relaxed_branch_length): Update according to changes to + RELAX_BRANCH_ENCODE. + (md_convert_frag): Use the encoded register as the temporary. + +2011-02-28 Maciej W. Rozycki <macro@codesourcery.com> + * config/tc-mips.c (mips_fix_adjustable): On REL targets also reject PC-relative relocations. diff --git a/gas/config/tc-mips.c b/gas/config/tc-mips.c index 897ed0f..9450ddd 100644 --- a/gas/config/tc-mips.c +++ b/gas/config/tc-mips.c @@ -918,18 +918,20 @@ static int mips_relax_branch; but it's not clear that it would actually improve performance. */ -#define RELAX_BRANCH_ENCODE(uncond, likely, link, toofar) \ - ((relax_substateT) \ - (0xc0000000 \ - | ((toofar) ? 1 : 0) \ - | ((link) ? 2 : 0) \ - | ((likely) ? 4 : 0) \ - | ((uncond) ? 8 : 0))) +#define RELAX_BRANCH_ENCODE(at, uncond, likely, link, toofar) \ + ((relax_substateT) \ + (0xc0000000 \ + | ((at) & 0x1f) \ + | ((toofar) ? 0x20 : 0) \ + | ((link) ? 0x40 : 0) \ + | ((likely) ? 0x80 : 0) \ + | ((uncond) ? 0x100 : 0))) #define RELAX_BRANCH_P(i) (((i) & 0xf0000000) == 0xc0000000) -#define RELAX_BRANCH_UNCOND(i) (((i) & 8) != 0) -#define RELAX_BRANCH_LIKELY(i) (((i) & 4) != 0) -#define RELAX_BRANCH_LINK(i) (((i) & 2) != 0) -#define RELAX_BRANCH_TOOFAR(i) (((i) & 1) != 0) +#define RELAX_BRANCH_UNCOND(i) (((i) & 0x100) != 0) +#define RELAX_BRANCH_LIKELY(i) (((i) & 0x80) != 0) +#define RELAX_BRANCH_LINK(i) (((i) & 0x40) != 0) +#define RELAX_BRANCH_TOOFAR(i) (((i) & 0x20) != 0) +#define RELAX_BRANCH_AT(i) ((i) & 0x1f) /* For mips16 code, we use an entirely different form of relaxation. mips16 supports two versions of most instructions which take @@ -2940,7 +2942,8 @@ append_insn (struct mips_cl_insn *ip, expressionS *address_expr, : (pinfo & INSN_COND_BRANCH_LIKELY) ? 1 : 0)), 4, RELAX_BRANCH_ENCODE - (pinfo & INSN_UNCOND_BRANCH_DELAY, + (AT, + pinfo & INSN_UNCOND_BRANCH_DELAY, pinfo & INSN_COND_BRANCH_LIKELY, pinfo & INSN_WRITE_GPR_31, 0), @@ -14145,7 +14148,8 @@ relaxed_branch_length (fragS *fragp, asection *sec, int update) if (fragp && update && toofar != RELAX_BRANCH_TOOFAR (fragp->fr_subtype)) fragp->fr_subtype - = RELAX_BRANCH_ENCODE (RELAX_BRANCH_UNCOND (fragp->fr_subtype), + = RELAX_BRANCH_ENCODE (RELAX_BRANCH_AT (fragp->fr_subtype), + RELAX_BRANCH_UNCOND (fragp->fr_subtype), RELAX_BRANCH_LIKELY (fragp->fr_subtype), RELAX_BRANCH_LINK (fragp->fr_subtype), toofar); @@ -14555,8 +14559,11 @@ md_convert_frag (bfd *abfd ATTRIBUTE_UNUSED, segT asec, fragS *fragp) } else { + unsigned long at = RELAX_BRANCH_AT (fragp->fr_subtype); + /* lw/ld $at, <sym>($gp) R_MIPS_GOT16 */ - insn = HAVE_64BIT_ADDRESSES ? 0xdf810000 : 0x8f810000; + insn = HAVE_64BIT_ADDRESSES ? 0xdf800000 : 0x8f800000; + insn |= at << OP_SH_RT; exp.X_op = O_symbol; exp.X_add_symbol = fragp->fr_symbol; exp.X_add_number = fragp->fr_offset; @@ -14583,7 +14590,8 @@ md_convert_frag (bfd *abfd ATTRIBUTE_UNUSED, segT asec, fragS *fragp) } /* d/addiu $at, $at, <sym> R_MIPS_LO16 */ - insn = HAVE_64BIT_ADDRESSES ? 0x64210000 : 0x24210000; + insn = HAVE_64BIT_ADDRESSES ? 0x64000000 : 0x24000000; + insn |= at << OP_SH_RS | at << OP_SH_RT; fixp = fix_new_exp (fragp, buf - (bfd_byte *)fragp->fr_literal, 4, &exp, FALSE, BFD_RELOC_LO16); @@ -14595,9 +14603,10 @@ md_convert_frag (bfd *abfd ATTRIBUTE_UNUSED, segT asec, fragS *fragp) /* j(al)r $at. */ if (RELAX_BRANCH_LINK (fragp->fr_subtype)) - insn = 0x0020f809; + insn = 0x0000f809; else - insn = 0x00200008; + insn = 0x00000008; + insn |= at << OP_SH_RS; md_number_to_chars ((char *) buf, insn, 4); buf += 4; diff --git a/gas/testsuite/ChangeLog b/gas/testsuite/ChangeLog index 1b0dfde..564e627 100644 --- a/gas/testsuite/ChangeLog +++ b/gas/testsuite/ChangeLog @@ -1,5 +1,15 @@ 2011-02-28 Maciej W. Rozycki <macro@codesourcery.com> + * gas/mips/relax-at.d: New test for branch relaxation with .set + at. + * gas/mips/relax.s: Update to support the new test. + * gas/mips/relax.l: Update accordingly. + * gas/mips/relax.d: Update for multi-arch invocation. + * gas/mips/mips.exp: Run the new test. Adjust to run "relax" + across all applicable architectures. + +2011-02-28 Maciej W. Rozycki <macro@codesourcery.com> + * gas/mips/branch-misc-2.d: Adjust for relocation change. * gas/mips/branch-misc-2pic.d: Likewise. * gas/mips/branch-misc-4.d: New test for PC-relative relocation diff --git a/gas/testsuite/gas/mips/mips.exp b/gas/testsuite/gas/mips/mips.exp index ad11f02..67ee44c 100644 --- a/gas/testsuite/gas/mips/mips.exp +++ b/gas/testsuite/gas/mips/mips.exp @@ -702,7 +702,8 @@ if { [istarget mips*-*-vxworks*] } { run_dump_test "xlr-ext" } - run_dump_test "relax" + run_dump_test_arches "relax" [mips_arch_list_matching mips2] + run_dump_test_arches "relax-at" [mips_arch_list_matching mips2] run_dump_test "relax-swap1-mips1" run_dump_test "relax-swap1-mips2" run_dump_test "relax-swap2" diff --git a/gas/testsuite/gas/mips/relax-at.d b/gas/testsuite/gas/mips/relax-at.d new file mode 100644 index 0000000..907069e --- /dev/null +++ b/gas/testsuite/gas/mips/relax-at.d @@ -0,0 +1,396 @@ +#as: -KPIC -32 -relax-branch --defsym atk0=1 +#objdump: -dr --prefix-addresses +#name: MIPS relax with .set at +#stderr: relax.l +#source: relax.s + +# Test relaxation with .set at. + +.*: +file format .*mips.* + +Disassembly of section \.text: +00000000 <foo> lw k0,2\(gp\) + 0: R_MIPS_GOT16 \.text +00000004 <foo\+0x4> addiu k0,k0,592 + 4: R_MIPS_LO16 \.text +00000008 <foo\+0x8> jr k0 +0000000c <foo\+0xc> nop +00000010 <foo\+0x10> lw k0,2\(gp\) + 10: R_MIPS_GOT16 \.text +00000014 <foo\+0x14> addiu k0,k0,592 + 14: R_MIPS_LO16 \.text +00000018 <foo\+0x18> jalr k0 +0000001c <foo\+0x1c> nop +00000020 <foo\+0x20> bne v0,v1,00000034 <foo\+0x34> +00000024 <foo\+0x24> nop +00000028 <foo\+0x28> lw k0,2\(gp\) + 28: R_MIPS_GOT16 \.text +0000002c <foo\+0x2c> addiu k0,k0,592 + 2c: R_MIPS_LO16 \.text +00000030 <foo\+0x30> jr k0 +00000034 <foo\+0x34> nop +00000038 <foo\+0x38> beq a0,a1,0000004c <foo\+0x4c> +0000003c <foo\+0x3c> nop +00000040 <foo\+0x40> lw k0,2\(gp\) + 40: R_MIPS_GOT16 \.text +00000044 <foo\+0x44> addiu k0,k0,592 + 44: R_MIPS_LO16 \.text +00000048 <foo\+0x48> jr k0 +0000004c <foo\+0x4c> nop +00000050 <foo\+0x50> bgtz v0,00000064 <foo\+0x64> +00000054 <foo\+0x54> nop +00000058 <foo\+0x58> lw k0,2\(gp\) + 58: R_MIPS_GOT16 \.text +0000005c <foo\+0x5c> addiu k0,k0,592 + 5c: R_MIPS_LO16 \.text +00000060 <foo\+0x60> jr k0 +00000064 <foo\+0x64> nop +00000068 <foo\+0x68> blez v1,0000007c <foo\+0x7c> +0000006c <foo\+0x6c> nop +00000070 <foo\+0x70> lw k0,2\(gp\) + 70: R_MIPS_GOT16 \.text +00000074 <foo\+0x74> addiu k0,k0,592 + 74: R_MIPS_LO16 \.text +00000078 <foo\+0x78> jr k0 +0000007c <foo\+0x7c> nop +00000080 <foo\+0x80> bgez a0,00000094 <foo\+0x94> +00000084 <foo\+0x84> nop +00000088 <foo\+0x88> lw k0,2\(gp\) + 88: R_MIPS_GOT16 \.text +0000008c <foo\+0x8c> addiu k0,k0,592 + 8c: R_MIPS_LO16 \.text +00000090 <foo\+0x90> jr k0 +00000094 <foo\+0x94> nop +00000098 <foo\+0x98> bltz a1,000000ac <foo\+0xac> +0000009c <foo\+0x9c> nop +000000a0 <foo\+0xa0> lw k0,2\(gp\) + a0: R_MIPS_GOT16 \.text +000000a4 <foo\+0xa4> addiu k0,k0,592 + a4: R_MIPS_LO16 \.text +000000a8 <foo\+0xa8> jr k0 +000000ac <foo\+0xac> nop +000000b0 <foo\+0xb0> bc1t 000000c4 <foo\+0xc4> +000000b4 <foo\+0xb4> nop +000000b8 <foo\+0xb8> lw k0,2\(gp\) + b8: R_MIPS_GOT16 \.text +000000bc <foo\+0xbc> addiu k0,k0,592 + bc: R_MIPS_LO16 \.text +000000c0 <foo\+0xc0> jr k0 +000000c4 <foo\+0xc4> nop +000000c8 <foo\+0xc8> bc1f 000000dc <foo\+0xdc> +000000cc <foo\+0xcc> nop +000000d0 <foo\+0xd0> lw k0,2\(gp\) + d0: R_MIPS_GOT16 \.text +000000d4 <foo\+0xd4> addiu k0,k0,592 + d4: R_MIPS_LO16 \.text +000000d8 <foo\+0xd8> jr k0 +000000dc <foo\+0xdc> nop +000000e0 <foo\+0xe0> bgez v0,000000f4 <foo\+0xf4> +000000e4 <foo\+0xe4> nop +000000e8 <foo\+0xe8> lw k0,2\(gp\) + e8: R_MIPS_GOT16 \.text +000000ec <foo\+0xec> addiu k0,k0,592 + ec: R_MIPS_LO16 \.text +000000f0 <foo\+0xf0> jalr k0 +000000f4 <foo\+0xf4> nop +000000f8 <foo\+0xf8> bltz v1,0000010c <foo\+0x10c> +000000fc <foo\+0xfc> nop +00000100 <foo\+0x100> lw k0,2\(gp\) + 100: R_MIPS_GOT16 \.text +00000104 <foo\+0x104> addiu k0,k0,592 + 104: R_MIPS_LO16 \.text +00000108 <foo\+0x108> jalr k0 +0000010c <foo\+0x10c> nop +00000110 <foo\+0x110> beql v0,v1,00000120 <foo\+0x120> +00000114 <foo\+0x114> nop +00000118 <foo\+0x118> beqzl zero,00000130 <foo\+0x130> +0000011c <foo\+0x11c> nop +00000120 <foo\+0x120> lw k0,2\(gp\) + 120: R_MIPS_GOT16 \.text +00000124 <foo\+0x124> addiu k0,k0,592 + 124: R_MIPS_LO16 \.text +00000128 <foo\+0x128> jr k0 +0000012c <foo\+0x12c> nop +00000130 <foo\+0x130> bnel a0,a1,00000140 <foo\+0x140> +00000134 <foo\+0x134> nop +00000138 <foo\+0x138> beqzl zero,00000150 <foo\+0x150> +0000013c <foo\+0x13c> nop +00000140 <foo\+0x140> lw k0,2\(gp\) + 140: R_MIPS_GOT16 \.text +00000144 <foo\+0x144> addiu k0,k0,592 + 144: R_MIPS_LO16 \.text +00000148 <foo\+0x148> jr k0 +0000014c <foo\+0x14c> nop +00000150 <foo\+0x150> blezl v0,00000160 <foo\+0x160> +00000154 <foo\+0x154> nop +00000158 <foo\+0x158> beqzl zero,00000170 <foo\+0x170> +0000015c <foo\+0x15c> nop +00000160 <foo\+0x160> lw k0,2\(gp\) + 160: R_MIPS_GOT16 \.text +00000164 <foo\+0x164> addiu k0,k0,592 + 164: R_MIPS_LO16 \.text +00000168 <foo\+0x168> jr k0 +0000016c <foo\+0x16c> nop +00000170 <foo\+0x170> bgtzl v1,00000180 <foo\+0x180> +00000174 <foo\+0x174> nop +00000178 <foo\+0x178> beqzl zero,00000190 <foo\+0x190> +0000017c <foo\+0x17c> nop +00000180 <foo\+0x180> lw k0,2\(gp\) + 180: R_MIPS_GOT16 \.text +00000184 <foo\+0x184> addiu k0,k0,592 + 184: R_MIPS_LO16 \.text +00000188 <foo\+0x188> jr k0 +0000018c <foo\+0x18c> nop +00000190 <foo\+0x190> bltzl a0,000001a0 <foo\+0x1a0> +00000194 <foo\+0x194> nop +00000198 <foo\+0x198> beqzl zero,000001b0 <foo\+0x1b0> +0000019c <foo\+0x19c> nop +000001a0 <foo\+0x1a0> lw k0,2\(gp\) + 1a0: R_MIPS_GOT16 \.text +000001a4 <foo\+0x1a4> addiu k0,k0,592 + 1a4: R_MIPS_LO16 \.text +000001a8 <foo\+0x1a8> jr k0 +000001ac <foo\+0x1ac> nop +000001b0 <foo\+0x1b0> bgezl a1,000001c0 <foo\+0x1c0> +000001b4 <foo\+0x1b4> nop +000001b8 <foo\+0x1b8> beqzl zero,000001d0 <foo\+0x1d0> +000001bc <foo\+0x1bc> nop +000001c0 <foo\+0x1c0> lw k0,2\(gp\) + 1c0: R_MIPS_GOT16 \.text +000001c4 <foo\+0x1c4> addiu k0,k0,592 + 1c4: R_MIPS_LO16 \.text +000001c8 <foo\+0x1c8> jr k0 +000001cc <foo\+0x1cc> nop +000001d0 <foo\+0x1d0> bc1fl 000001e0 <foo\+0x1e0> +000001d4 <foo\+0x1d4> nop +000001d8 <foo\+0x1d8> beqzl zero,000001f0 <foo\+0x1f0> +000001dc <foo\+0x1dc> nop +000001e0 <foo\+0x1e0> lw k0,2\(gp\) + 1e0: R_MIPS_GOT16 \.text +000001e4 <foo\+0x1e4> addiu k0,k0,592 + 1e4: R_MIPS_LO16 \.text +000001e8 <foo\+0x1e8> jr k0 +000001ec <foo\+0x1ec> nop +000001f0 <foo\+0x1f0> bc1tl 00000200 <foo\+0x200> +000001f4 <foo\+0x1f4> nop +000001f8 <foo\+0x1f8> beqzl zero,00000210 <foo\+0x210> +000001fc <foo\+0x1fc> nop +00000200 <foo\+0x200> lw k0,2\(gp\) + 200: R_MIPS_GOT16 \.text +00000204 <foo\+0x204> addiu k0,k0,592 + 204: R_MIPS_LO16 \.text +00000208 <foo\+0x208> jr k0 +0000020c <foo\+0x20c> nop +00000210 <foo\+0x210> bltzl v0,00000220 <foo\+0x220> +00000214 <foo\+0x214> nop +00000218 <foo\+0x218> beqzl zero,00000230 <foo\+0x230> +0000021c <foo\+0x21c> nop +00000220 <foo\+0x220> lw k0,2\(gp\) + 220: R_MIPS_GOT16 \.text +00000224 <foo\+0x224> addiu k0,k0,592 + 224: R_MIPS_LO16 \.text +00000228 <foo\+0x228> jalr k0 +0000022c <foo\+0x22c> nop +00000230 <foo\+0x230> bgezl v1,00000240 <foo\+0x240> +00000234 <foo\+0x234> nop +00000238 <foo\+0x238> beqzl zero,00000250 <foo\+0x250> +0000023c <foo\+0x23c> nop +00000240 <foo\+0x240> lw k0,2\(gp\) + 240: R_MIPS_GOT16 \.text +00000244 <foo\+0x244> addiu k0,k0,592 + 244: R_MIPS_LO16 \.text +00000248 <foo\+0x248> jalr k0 +0000024c <foo\+0x24c> nop + \.\.\. +00020250 <bar> lw k0,0\(gp\) + 20250: R_MIPS_GOT16 \.text +00020254 <bar\+0x4> addiu k0,k0,0 + 20254: R_MIPS_LO16 \.text +00020258 <bar\+0x8> jr k0 +0002025c <bar\+0xc> nop +00020260 <bar\+0x10> lw k0,0\(gp\) + 20260: R_MIPS_GOT16 \.text +00020264 <bar\+0x14> addiu k0,k0,0 + 20264: R_MIPS_LO16 \.text +00020268 <bar\+0x18> jalr k0 +0002026c <bar\+0x1c> nop +00020270 <bar\+0x20> bne v0,v1,00020284 <bar\+0x34> +00020274 <bar\+0x24> nop +00020278 <bar\+0x28> lw k0,0\(gp\) + 20278: R_MIPS_GOT16 \.text +0002027c <bar\+0x2c> addiu k0,k0,0 + 2027c: R_MIPS_LO16 \.text +00020280 <bar\+0x30> jr k0 +00020284 <bar\+0x34> nop +00020288 <bar\+0x38> beq a0,a1,0002029c <bar\+0x4c> +0002028c <bar\+0x3c> nop +00020290 <bar\+0x40> lw k0,0\(gp\) + 20290: R_MIPS_GOT16 \.text +00020294 <bar\+0x44> addiu k0,k0,0 + 20294: R_MIPS_LO16 \.text +00020298 <bar\+0x48> jr k0 +0002029c <bar\+0x4c> nop +000202a0 <bar\+0x50> bgtz v0,000202b4 <bar\+0x64> +000202a4 <bar\+0x54> nop +000202a8 <bar\+0x58> lw k0,0\(gp\) + 202a8: R_MIPS_GOT16 \.text +000202ac <bar\+0x5c> addiu k0,k0,0 + 202ac: R_MIPS_LO16 \.text +000202b0 <bar\+0x60> jr k0 +000202b4 <bar\+0x64> nop +000202b8 <bar\+0x68> blez v1,000202cc <bar\+0x7c> +000202bc <bar\+0x6c> nop +000202c0 <bar\+0x70> lw k0,0\(gp\) + 202c0: R_MIPS_GOT16 \.text +000202c4 <bar\+0x74> addiu k0,k0,0 + 202c4: R_MIPS_LO16 \.text +000202c8 <bar\+0x78> jr k0 +000202cc <bar\+0x7c> nop +000202d0 <bar\+0x80> bgez a0,000202e4 <bar\+0x94> +000202d4 <bar\+0x84> nop +000202d8 <bar\+0x88> lw k0,0\(gp\) + 202d8: R_MIPS_GOT16 \.text +000202dc <bar\+0x8c> addiu k0,k0,0 + 202dc: R_MIPS_LO16 \.text +000202e0 <bar\+0x90> jr k0 +000202e4 <bar\+0x94> nop +000202e8 <bar\+0x98> bltz a1,000202fc <bar\+0xac> +000202ec <bar\+0x9c> nop +000202f0 <bar\+0xa0> lw k0,0\(gp\) + 202f0: R_MIPS_GOT16 \.text +000202f4 <bar\+0xa4> addiu k0,k0,0 + 202f4: R_MIPS_LO16 \.text +000202f8 <bar\+0xa8> jr k0 +000202fc <bar\+0xac> nop +00020300 <bar\+0xb0> bc1t 00020314 <bar\+0xc4> +00020304 <bar\+0xb4> nop +00020308 <bar\+0xb8> lw k0,0\(gp\) + 20308: R_MIPS_GOT16 \.text +0002030c <bar\+0xbc> addiu k0,k0,0 + 2030c: R_MIPS_LO16 \.text +00020310 <bar\+0xc0> jr k0 +00020314 <bar\+0xc4> nop +00020318 <bar\+0xc8> bc1f 0002032c <bar\+0xdc> +0002031c <bar\+0xcc> nop +00020320 <bar\+0xd0> lw k0,0\(gp\) + 20320: R_MIPS_GOT16 \.text +00020324 <bar\+0xd4> addiu k0,k0,0 + 20324: R_MIPS_LO16 \.text +00020328 <bar\+0xd8> jr k0 +0002032c <bar\+0xdc> nop +00020330 <bar\+0xe0> bgez v0,00020344 <bar\+0xf4> +00020334 <bar\+0xe4> nop +00020338 <bar\+0xe8> lw k0,0\(gp\) + 20338: R_MIPS_GOT16 \.text +0002033c <bar\+0xec> addiu k0,k0,0 + 2033c: R_MIPS_LO16 \.text +00020340 <bar\+0xf0> jalr k0 +00020344 <bar\+0xf4> nop +00020348 <bar\+0xf8> bltz v1,0002035c <bar\+0x10c> +0002034c <bar\+0xfc> nop +00020350 <bar\+0x100> lw k0,0\(gp\) + 20350: R_MIPS_GOT16 \.text +00020354 <bar\+0x104> addiu k0,k0,0 + 20354: R_MIPS_LO16 \.text +00020358 <bar\+0x108> jalr k0 +0002035c <bar\+0x10c> nop +00020360 <bar\+0x110> beql v0,v1,00020370 <bar\+0x120> +00020364 <bar\+0x114> nop +00020368 <bar\+0x118> beqzl zero,00020380 <bar\+0x130> +0002036c <bar\+0x11c> nop +00020370 <bar\+0x120> lw k0,0\(gp\) + 20370: R_MIPS_GOT16 \.text +00020374 <bar\+0x124> addiu k0,k0,0 + 20374: R_MIPS_LO16 \.text +00020378 <bar\+0x128> jr k0 +0002037c <bar\+0x12c> nop +00020380 <bar\+0x130> bnel a0,a1,00020390 <bar\+0x140> +00020384 <bar\+0x134> nop +00020388 <bar\+0x138> beqzl zero,000203a0 <bar\+0x150> +0002038c <bar\+0x13c> nop +00020390 <bar\+0x140> lw k0,0\(gp\) + 20390: R_MIPS_GOT16 \.text +00020394 <bar\+0x144> addiu k0,k0,0 + 20394: R_MIPS_LO16 \.text +00020398 <bar\+0x148> jr k0 +0002039c <bar\+0x14c> nop +000203a0 <bar\+0x150> blezl v0,000203b0 <bar\+0x160> +000203a4 <bar\+0x154> nop +000203a8 <bar\+0x158> beqzl zero,000203c0 <bar\+0x170> +000203ac <bar\+0x15c> nop +000203b0 <bar\+0x160> lw k0,0\(gp\) + 203b0: R_MIPS_GOT16 \.text +000203b4 <bar\+0x164> addiu k0,k0,0 + 203b4: R_MIPS_LO16 \.text +000203b8 <bar\+0x168> jr k0 +000203bc <bar\+0x16c> nop +000203c0 <bar\+0x170> bgtzl v1,000203d0 <bar\+0x180> +000203c4 <bar\+0x174> nop +000203c8 <bar\+0x178> beqzl zero,000203e0 <bar\+0x190> +000203cc <bar\+0x17c> nop +000203d0 <bar\+0x180> lw k0,0\(gp\) + 203d0: R_MIPS_GOT16 \.text +000203d4 <bar\+0x184> addiu k0,k0,0 + 203d4: R_MIPS_LO16 \.text +000203d8 <bar\+0x188> jr k0 +000203dc <bar\+0x18c> nop +000203e0 <bar\+0x190> bltzl a0,000203f0 <bar\+0x1a0> +000203e4 <bar\+0x194> nop +000203e8 <bar\+0x198> beqzl zero,00020400 <bar\+0x1b0> +000203ec <bar\+0x19c> nop +000203f0 <bar\+0x1a0> lw k0,0\(gp\) + 203f0: R_MIPS_GOT16 \.text +000203f4 <bar\+0x1a4> addiu k0,k0,0 + 203f4: R_MIPS_LO16 \.text +000203f8 <bar\+0x1a8> jr k0 +000203fc <bar\+0x1ac> nop +00020400 <bar\+0x1b0> bgezl a1,00020410 <bar\+0x1c0> +00020404 <bar\+0x1b4> nop +00020408 <bar\+0x1b8> beqzl zero,00020420 <bar\+0x1d0> +0002040c <bar\+0x1bc> nop +00020410 <bar\+0x1c0> lw k0,0\(gp\) + 20410: R_MIPS_GOT16 \.text +00020414 <bar\+0x1c4> addiu k0,k0,0 + 20414: R_MIPS_LO16 \.text +00020418 <bar\+0x1c8> jr k0 +0002041c <bar\+0x1cc> nop +00020420 <bar\+0x1d0> bc1fl 00020430 <bar\+0x1e0> +00020424 <bar\+0x1d4> nop +00020428 <bar\+0x1d8> beqzl zero,00020440 <bar\+0x1f0> +0002042c <bar\+0x1dc> nop +00020430 <bar\+0x1e0> lw k0,0\(gp\) + 20430: R_MIPS_GOT16 \.text +00020434 <bar\+0x1e4> addiu k0,k0,0 + 20434: R_MIPS_LO16 \.text +00020438 <bar\+0x1e8> jr k0 +0002043c <bar\+0x1ec> nop +00020440 <bar\+0x1f0> bc1tl 00020450 <bar\+0x200> +00020444 <bar\+0x1f4> nop +00020448 <bar\+0x1f8> beqzl zero,00020460 <bar\+0x210> +0002044c <bar\+0x1fc> nop +00020450 <bar\+0x200> lw k0,0\(gp\) + 20450: R_MIPS_GOT16 \.text +00020454 <bar\+0x204> addiu k0,k0,0 + 20454: R_MIPS_LO16 \.text +00020458 <bar\+0x208> jr k0 +0002045c <bar\+0x20c> nop +00020460 <bar\+0x210> bltzl v0,00020470 <bar\+0x220> +00020464 <bar\+0x214> nop +00020468 <bar\+0x218> beqzl zero,00020480 <bar\+0x230> +0002046c <bar\+0x21c> nop +00020470 <bar\+0x220> lw k0,0\(gp\) + 20470: R_MIPS_GOT16 \.text +00020474 <bar\+0x224> addiu k0,k0,0 + 20474: R_MIPS_LO16 \.text +00020478 <bar\+0x228> jalr k0 +0002047c <bar\+0x22c> nop +00020480 <bar\+0x230> bgezl v1,00020490 <bar\+0x240> +00020484 <bar\+0x234> nop +00020488 <bar\+0x238> beqzl zero,000204a0 <bar\+0x250> +0002048c <bar\+0x23c> nop +00020490 <bar\+0x240> lw k0,0\(gp\) + 20490: R_MIPS_GOT16 \.text +00020494 <bar\+0x244> addiu k0,k0,0 + 20494: R_MIPS_LO16 \.text +00020498 <bar\+0x248> jalr k0 +0002049c <bar\+0x24c> nop diff --git a/gas/testsuite/gas/mips/relax.d b/gas/testsuite/gas/mips/relax.d index c8d404e..9d69c8a 100644 --- a/gas/testsuite/gas/mips/relax.d +++ b/gas/testsuite/gas/mips/relax.d @@ -1,5 +1,5 @@ -#as: -KPIC -mips3 -32 -relax-branch -#objdump: -dr --prefix-addresses -mmips:4000 +#as: -KPIC -32 -relax-branch +#objdump: -dr --prefix-addresses #name: MIPS relax #stderr: relax.l diff --git a/gas/testsuite/gas/mips/relax.l b/gas/testsuite/gas/mips/relax.l index 895aba1..0e5004b 100644 --- a/gas/testsuite/gas/mips/relax.l +++ b/gas/testsuite/gas/mips/relax.l @@ -1,45 +1,45 @@ .*: Assembler messages: -.*:5: Warning: Relaxed out-of-range branch into a jump -.*:6: Warning: Relaxed out-of-range branch into a jump -.*:7: Warning: Relaxed out-of-range branch into a jump -.*:8: Warning: Relaxed out-of-range branch into a jump .*:9: Warning: Relaxed out-of-range branch into a jump .*:10: Warning: Relaxed out-of-range branch into a jump .*:11: Warning: Relaxed out-of-range branch into a jump .*:12: Warning: Relaxed out-of-range branch into a jump .*:13: Warning: Relaxed out-of-range branch into a jump .*:14: Warning: Relaxed out-of-range branch into a jump +.*:15: Warning: Relaxed out-of-range branch into a jump .*:16: Warning: Relaxed out-of-range branch into a jump .*:17: Warning: Relaxed out-of-range branch into a jump -.*:19: Warning: Relaxed out-of-range branch into a jump +.*:18: Warning: Relaxed out-of-range branch into a jump .*:20: Warning: Relaxed out-of-range branch into a jump .*:21: Warning: Relaxed out-of-range branch into a jump -.*:22: Warning: Relaxed out-of-range branch into a jump .*:23: Warning: Relaxed out-of-range branch into a jump .*:24: Warning: Relaxed out-of-range branch into a jump .*:25: Warning: Relaxed out-of-range branch into a jump .*:26: Warning: Relaxed out-of-range branch into a jump +.*:27: Warning: Relaxed out-of-range branch into a jump .*:28: Warning: Relaxed out-of-range branch into a jump .*:29: Warning: Relaxed out-of-range branch into a jump +.*:30: Warning: Relaxed out-of-range branch into a jump +.*:32: Warning: Relaxed out-of-range branch into a jump .*:33: Warning: Relaxed out-of-range branch into a jump -.*:34: Warning: Relaxed out-of-range branch into a jump -.*:35: Warning: Relaxed out-of-range branch into a jump -.*:36: Warning: Relaxed out-of-range branch into a jump .*:37: Warning: Relaxed out-of-range branch into a jump .*:38: Warning: Relaxed out-of-range branch into a jump .*:39: Warning: Relaxed out-of-range branch into a jump .*:40: Warning: Relaxed out-of-range branch into a jump .*:41: Warning: Relaxed out-of-range branch into a jump .*:42: Warning: Relaxed out-of-range branch into a jump +.*:43: Warning: Relaxed out-of-range branch into a jump .*:44: Warning: Relaxed out-of-range branch into a jump .*:45: Warning: Relaxed out-of-range branch into a jump -.*:47: Warning: Relaxed out-of-range branch into a jump +.*:46: Warning: Relaxed out-of-range branch into a jump .*:48: Warning: Relaxed out-of-range branch into a jump .*:49: Warning: Relaxed out-of-range branch into a jump -.*:50: Warning: Relaxed out-of-range branch into a jump .*:51: Warning: Relaxed out-of-range branch into a jump .*:52: Warning: Relaxed out-of-range branch into a jump .*:53: Warning: Relaxed out-of-range branch into a jump .*:54: Warning: Relaxed out-of-range branch into a jump +.*:55: Warning: Relaxed out-of-range branch into a jump .*:56: Warning: Relaxed out-of-range branch into a jump .*:57: Warning: Relaxed out-of-range branch into a jump +.*:58: Warning: Relaxed out-of-range branch into a jump +.*:60: Warning: Relaxed out-of-range branch into a jump +.*:61: Warning: Relaxed out-of-range branch into a jump diff --git a/gas/testsuite/gas/mips/relax.s b/gas/testsuite/gas/mips/relax.s index 6424b3b..e8fcc2a 100644 --- a/gas/testsuite/gas/mips/relax.s +++ b/gas/testsuite/gas/mips/relax.s @@ -1,5 +1,9 @@ # Source file used to test relaxation. + .ifdef atk0 + .set at=$k0 + .endif + .text foo: b bar |