diff --git a/gas/ChangeLog b/gas/ChangeLog index 13243ce7a6..50f7cd98f6 100644 --- a/gas/ChangeLog +++ b/gas/ChangeLog @@ -1,3 +1,22 @@ +2016-07-14 Maciej W. Rozycki + + * config/tc-mips.h (TC_FORCE_RELOCATION_ABS): New macro. + (mips_force_relocation_abs): New prototype. + * config/tc-mips.c (mips_force_relocation_abs): New function. + * testsuite/gas/mips/branch-absolute.d: Adjust dump patterns. + * testsuite/gas/mips/mips16-branch-absolute.d: Likewise. + * testsuite/gas/mips/micromips-branch-absolute-n32.d: Likewise. + * testsuite/gas/mips/micromips-branch-absolute-n64.d: Likewise. + * testsuite/gas/mips/micromips-branch-absolute-addend-n32.d: + Likewise. + * testsuite/gas/mips/micromips-branch-absolute-addend-n64.d: + Likewise. + * testsuite/gas/mips/branch-absolute-addend.d: New test. + * testsuite/gas/mips/mips16-branch-absolute-addend.d: New test. + * testsuite/gas/mips/micromips-branch-absolute-addend.d: New + test. + * testsuite/gas/mips/mips.exp: Run the new tests. + 2016-07-14 Maciej W. Rozycki * config/tc-mips.c (md_apply_fix) diff --git a/gas/config/tc-mips.c b/gas/config/tc-mips.c index 6c0be63d64..cca545052d 100644 --- a/gas/config/tc-mips.c +++ b/gas/config/tc-mips.c @@ -14814,6 +14814,22 @@ mips_force_relocation (fixS *fixp) return 0; } +/* Implement TC_FORCE_RELOCATION_ABS. */ + +bfd_boolean +mips_force_relocation_abs (fixS *fixp) +{ + if (generic_force_reloc (fixp)) + return TRUE; + + /* These relocations do not have enough bits in the in-place addend + to hold an arbitrary absolute section's offset. */ + if (HAVE_IN_PLACE_ADDENDS && limited_pcrel_reloc_p (fixp->fx_r_type)) + return TRUE; + + return FALSE; +} + /* Read the instruction associated with RELOC from BUF. */ static unsigned int diff --git a/gas/config/tc-mips.h b/gas/config/tc-mips.h index 45e779d392..b4726730d7 100644 --- a/gas/config/tc-mips.h +++ b/gas/config/tc-mips.h @@ -142,6 +142,9 @@ extern int mips_force_relocation (struct fix *); #define TC_FORCE_RELOCATION_SUB_SAME(FIX, SEG) \ (! SEG_NORMAL (SEG) || mips_force_relocation (FIX)) +#define TC_FORCE_RELOCATION_ABS(FIX) mips_force_relocation_abs (FIX) +extern bfd_boolean mips_force_relocation_abs (struct fix *); + /* Register mask variables. These are set by the MIPS assembly code and used by ECOFF and possibly other object file formats. */ extern unsigned long mips_gprmask; diff --git a/gas/testsuite/gas/mips/branch-absolute-addend.d b/gas/testsuite/gas/mips/branch-absolute-addend.d new file mode 100644 index 0000000000..df868468ff --- /dev/null +++ b/gas/testsuite/gas/mips/branch-absolute-addend.d @@ -0,0 +1,24 @@ +#objdump: -dr --prefix-addresses --show-raw-insn +#name: MIPS branch to absolute expression with addend +#as: -32 + +.*: +file format .*mips.* + +Disassembly of section \.text: + \.\.\. +[0-9a-f]+ <[^>]*> 1000048c b 00002234 +[ ]*[0-9a-f]+: R_MIPS_PC16 bar +[0-9a-f]+ <[^>]*> 00000000 nop +[0-9a-f]+ <[^>]*> 0411048c bal 0000223c +[ ]*[0-9a-f]+: R_MIPS_PC16 bar +[0-9a-f]+ <[^>]*> 00000000 nop +[0-9a-f]+ <[^>]*> 0410048c bltzal zero,00002244 +[ ]*[0-9a-f]+: R_MIPS_PC16 bar +[0-9a-f]+ <[^>]*> 00000000 nop +[0-9a-f]+ <[^>]*> 1040048c beqz v0,0000224c +[ ]*[0-9a-f]+: R_MIPS_PC16 bar +[0-9a-f]+ <[^>]*> 00000000 nop +[0-9a-f]+ <[^>]*> 1440048c bnez v0,00002254 +[ ]*[0-9a-f]+: R_MIPS_PC16 bar +[0-9a-f]+ <[^>]*> 00000000 nop + \.\.\. diff --git a/gas/testsuite/gas/mips/branch-absolute.d b/gas/testsuite/gas/mips/branch-absolute.d index 37e7fc558f..816c139e77 100644 --- a/gas/testsuite/gas/mips/branch-absolute.d +++ b/gas/testsuite/gas/mips/branch-absolute.d @@ -6,19 +6,19 @@ Disassembly of section \.text: \.\.\. -[0-9a-f]+ <[^>]*> 1000048c b 00002234 -[ ]*[0-9a-f]+: R_MIPS_PC16 \*ABS\* +[0-9a-f]+ <[^>]*> 1000ffff b 00001000 +[ ]*[0-9a-f]+: R_MIPS_PC16 bar [0-9a-f]+ <[^>]*> 00000000 nop -[0-9a-f]+ <[^>]*> 0411048c bal 0000223c -[ ]*[0-9a-f]+: R_MIPS_PC16 \*ABS\* +[0-9a-f]+ <[^>]*> 0411ffff bal 00001008 +[ ]*[0-9a-f]+: R_MIPS_PC16 bar [0-9a-f]+ <[^>]*> 00000000 nop -[0-9a-f]+ <[^>]*> 0410048c bltzal zero,00002244 -[ ]*[0-9a-f]+: R_MIPS_PC16 \*ABS\* +[0-9a-f]+ <[^>]*> 0410ffff bltzal zero,00001010 +[ ]*[0-9a-f]+: R_MIPS_PC16 bar [0-9a-f]+ <[^>]*> 00000000 nop -[0-9a-f]+ <[^>]*> 1040048c beqz v0,0000224c -[ ]*[0-9a-f]+: R_MIPS_PC16 \*ABS\* +[0-9a-f]+ <[^>]*> 1040ffff beqz v0,00001018 +[ ]*[0-9a-f]+: R_MIPS_PC16 bar [0-9a-f]+ <[^>]*> 00000000 nop -[0-9a-f]+ <[^>]*> 1440048c bnez v0,00002254 -[ ]*[0-9a-f]+: R_MIPS_PC16 \*ABS\* +[0-9a-f]+ <[^>]*> 1440ffff bnez v0,00001020 +[ ]*[0-9a-f]+: R_MIPS_PC16 bar [0-9a-f]+ <[^>]*> 00000000 nop \.\.\. diff --git a/gas/testsuite/gas/mips/micromips-branch-absolute-addend-n32.d b/gas/testsuite/gas/mips/micromips-branch-absolute-addend-n32.d index b5254be5c5..4f630f0ccb 100644 --- a/gas/testsuite/gas/mips/micromips-branch-absolute-addend-n32.d +++ b/gas/testsuite/gas/mips/micromips-branch-absolute-addend-n32.d @@ -8,19 +8,19 @@ Disassembly of section \.text: \.\.\. [0-9a-f]+ <[^>]*> 9400 0000 b 00001004 -[ ]*[0-9a-f]+: R_MICROMIPS_PC16_S1 bar\+0x1230 +[ ]*[0-9a-f]+: R_MICROMIPS_PC16_S1 \*ABS\*\+0x123468a9 [0-9a-f]+ <[^>]*> 0c00 nop [0-9a-f]+ <[^>]*> 4060 0000 bal 0000100a -[ ]*[0-9a-f]+: R_MICROMIPS_PC16_S1 bar\+0x1230 +[ ]*[0-9a-f]+: R_MICROMIPS_PC16_S1 \*ABS\*\+0x123468a9 [0-9a-f]+ <[^>]*> 0000 0000 nop [0-9a-f]+ <[^>]*> 4020 0000 bltzal zero,00001012 -[ ]*[0-9a-f]+: R_MICROMIPS_PC16_S1 bar\+0x1230 +[ ]*[0-9a-f]+: R_MICROMIPS_PC16_S1 \*ABS\*\+0x123468a9 [0-9a-f]+ <[^>]*> 0000 0000 nop [0-9a-f]+ <[^>]*> 9402 0000 beqz v0,0000101a -[ ]*[0-9a-f]+: R_MICROMIPS_PC16_S1 bar\+0x1230 +[ ]*[0-9a-f]+: R_MICROMIPS_PC16_S1 \*ABS\*\+0x123468a9 [0-9a-f]+ <[^>]*> 0c00 nop [0-9a-f]+ <[^>]*> b402 0000 bnez v0,00001020 -[ ]*[0-9a-f]+: R_MICROMIPS_PC16_S1 bar\+0x1230 +[ ]*[0-9a-f]+: R_MICROMIPS_PC16_S1 \*ABS\*\+0x123468a9 [0-9a-f]+ <[^>]*> 0c00 nop [0-9a-f]+ <[^>]*> 0c00 nop \.\.\. diff --git a/gas/testsuite/gas/mips/micromips-branch-absolute-addend-n64.d b/gas/testsuite/gas/mips/micromips-branch-absolute-addend-n64.d index a66a4ff2c7..0e14396be1 100644 --- a/gas/testsuite/gas/mips/micromips-branch-absolute-addend-n64.d +++ b/gas/testsuite/gas/mips/micromips-branch-absolute-addend-n64.d @@ -8,29 +8,29 @@ Disassembly of section \.text: \.\.\. [0-9a-f]+ <[^>]*> 9400 0000 b 0000000000001004 -[ ]*[0-9a-f]+: R_MICROMIPS_PC16_S1 bar\+0x1230 -[ ]*[0-9a-f]+: R_MIPS_NONE \*ABS\*\+0x1230 -[ ]*[0-9a-f]+: R_MIPS_NONE \*ABS\*\+0x1230 +[ ]*[0-9a-f]+: R_MICROMIPS_PC16_S1 \*ABS\*\+0x123468a9 +[ ]*[0-9a-f]+: R_MIPS_NONE \*ABS\*\+0x123468a9 +[ ]*[0-9a-f]+: R_MIPS_NONE \*ABS\*\+0x123468a9 [0-9a-f]+ <[^>]*> 0c00 nop [0-9a-f]+ <[^>]*> 4060 0000 bal 000000000000100a -[ ]*[0-9a-f]+: R_MICROMIPS_PC16_S1 bar\+0x1230 -[ ]*[0-9a-f]+: R_MIPS_NONE \*ABS\*\+0x1230 -[ ]*[0-9a-f]+: R_MIPS_NONE \*ABS\*\+0x1230 +[ ]*[0-9a-f]+: R_MICROMIPS_PC16_S1 \*ABS\*\+0x123468a9 +[ ]*[0-9a-f]+: R_MIPS_NONE \*ABS\*\+0x123468a9 +[ ]*[0-9a-f]+: R_MIPS_NONE \*ABS\*\+0x123468a9 [0-9a-f]+ <[^>]*> 0000 0000 nop [0-9a-f]+ <[^>]*> 4020 0000 bltzal zero,0000000000001012 -[ ]*[0-9a-f]+: R_MICROMIPS_PC16_S1 bar\+0x1230 -[ ]*[0-9a-f]+: R_MIPS_NONE \*ABS\*\+0x1230 -[ ]*[0-9a-f]+: R_MIPS_NONE \*ABS\*\+0x1230 +[ ]*[0-9a-f]+: R_MICROMIPS_PC16_S1 \*ABS\*\+0x123468a9 +[ ]*[0-9a-f]+: R_MIPS_NONE \*ABS\*\+0x123468a9 +[ ]*[0-9a-f]+: R_MIPS_NONE \*ABS\*\+0x123468a9 [0-9a-f]+ <[^>]*> 0000 0000 nop [0-9a-f]+ <[^>]*> 9402 0000 beqz v0,000000000000101a -[ ]*[0-9a-f]+: R_MICROMIPS_PC16_S1 bar\+0x1230 -[ ]*[0-9a-f]+: R_MIPS_NONE \*ABS\*\+0x1230 -[ ]*[0-9a-f]+: R_MIPS_NONE \*ABS\*\+0x1230 +[ ]*[0-9a-f]+: R_MICROMIPS_PC16_S1 \*ABS\*\+0x123468a9 +[ ]*[0-9a-f]+: R_MIPS_NONE \*ABS\*\+0x123468a9 +[ ]*[0-9a-f]+: R_MIPS_NONE \*ABS\*\+0x123468a9 [0-9a-f]+ <[^>]*> 0c00 nop [0-9a-f]+ <[^>]*> b402 0000 bnez v0,0000000000001020 -[ ]*[0-9a-f]+: R_MICROMIPS_PC16_S1 bar\+0x1230 -[ ]*[0-9a-f]+: R_MIPS_NONE \*ABS\*\+0x1230 -[ ]*[0-9a-f]+: R_MIPS_NONE \*ABS\*\+0x1230 +[ ]*[0-9a-f]+: R_MICROMIPS_PC16_S1 \*ABS\*\+0x123468a9 +[ ]*[0-9a-f]+: R_MIPS_NONE \*ABS\*\+0x123468a9 +[ ]*[0-9a-f]+: R_MIPS_NONE \*ABS\*\+0x123468a9 [0-9a-f]+ <[^>]*> 0c00 nop [0-9a-f]+ <[^>]*> 0c00 nop \.\.\. diff --git a/gas/testsuite/gas/mips/micromips-branch-absolute-addend.d b/gas/testsuite/gas/mips/micromips-branch-absolute-addend.d new file mode 100644 index 0000000000..316adadbfd --- /dev/null +++ b/gas/testsuite/gas/mips/micromips-branch-absolute-addend.d @@ -0,0 +1,25 @@ +#objdump: -dr --prefix-addresses --show-raw-insn +#name: microMIPS branch to absolute expression with addend +#as: -32 + +.*: +file format .*mips.* + +Disassembly of section \.text: + \.\.\. +[0-9a-f]+ <[^>]*> 9400 0918 b 00002234 +[ ]*[0-9a-f]+: R_MICROMIPS_PC16_S1 bar +[0-9a-f]+ <[^>]*> 0c00 nop +[0-9a-f]+ <[^>]*> 4060 0918 bal 0000223a +[ ]*[0-9a-f]+: R_MICROMIPS_PC16_S1 bar +[0-9a-f]+ <[^>]*> 0000 0000 nop +[0-9a-f]+ <[^>]*> 4020 0918 bltzal zero,00002242 +[ ]*[0-9a-f]+: R_MICROMIPS_PC16_S1 bar +[0-9a-f]+ <[^>]*> 0000 0000 nop +[0-9a-f]+ <[^>]*> 9402 0918 beqz v0,0000224a +[ ]*[0-9a-f]+: R_MICROMIPS_PC16_S1 bar +[0-9a-f]+ <[^>]*> 0c00 nop +[0-9a-f]+ <[^>]*> b402 0918 bnez v0,00002250 +[ ]*[0-9a-f]+: R_MICROMIPS_PC16_S1 bar +[0-9a-f]+ <[^>]*> 0c00 nop +[0-9a-f]+ <[^>]*> 0c00 nop + \.\.\. diff --git a/gas/testsuite/gas/mips/micromips-branch-absolute-n32.d b/gas/testsuite/gas/mips/micromips-branch-absolute-n32.d index 85205ac0fd..212caaaad1 100644 --- a/gas/testsuite/gas/mips/micromips-branch-absolute-n32.d +++ b/gas/testsuite/gas/mips/micromips-branch-absolute-n32.d @@ -8,19 +8,19 @@ Disassembly of section \.text: \.\.\. [0-9a-f]+ <[^>]*> 9400 0000 b 00001004 -[ ]*[0-9a-f]+: R_MICROMIPS_PC16_S1 bar-0x4 +[ ]*[0-9a-f]+: R_MICROMIPS_PC16_S1 \*ABS\*\+0x1231 [0-9a-f]+ <[^>]*> 0c00 nop [0-9a-f]+ <[^>]*> 4060 0000 bal 0000100a -[ ]*[0-9a-f]+: R_MICROMIPS_PC16_S1 bar-0x4 +[ ]*[0-9a-f]+: R_MICROMIPS_PC16_S1 \*ABS\*\+0x1231 [0-9a-f]+ <[^>]*> 0000 0000 nop [0-9a-f]+ <[^>]*> 4020 0000 bltzal zero,00001012 -[ ]*[0-9a-f]+: R_MICROMIPS_PC16_S1 bar-0x4 +[ ]*[0-9a-f]+: R_MICROMIPS_PC16_S1 \*ABS\*\+0x1231 [0-9a-f]+ <[^>]*> 0000 0000 nop [0-9a-f]+ <[^>]*> 9402 0000 beqz v0,0000101a -[ ]*[0-9a-f]+: R_MICROMIPS_PC16_S1 bar-0x4 +[ ]*[0-9a-f]+: R_MICROMIPS_PC16_S1 \*ABS\*\+0x1231 [0-9a-f]+ <[^>]*> 0c00 nop [0-9a-f]+ <[^>]*> b402 0000 bnez v0,00001020 -[ ]*[0-9a-f]+: R_MICROMIPS_PC16_S1 bar-0x4 +[ ]*[0-9a-f]+: R_MICROMIPS_PC16_S1 \*ABS\*\+0x1231 [0-9a-f]+ <[^>]*> 0c00 nop [0-9a-f]+ <[^>]*> 0c00 nop \.\.\. diff --git a/gas/testsuite/gas/mips/micromips-branch-absolute-n64.d b/gas/testsuite/gas/mips/micromips-branch-absolute-n64.d index 453d6501af..443ef50da6 100644 --- a/gas/testsuite/gas/mips/micromips-branch-absolute-n64.d +++ b/gas/testsuite/gas/mips/micromips-branch-absolute-n64.d @@ -8,29 +8,29 @@ Disassembly of section \.text: \.\.\. [0-9a-f]+ <[^>]*> 9400 0000 b 0000000000001004 -[ ]*[0-9a-f]+: R_MICROMIPS_PC16_S1 bar-0x4 -[ ]*[0-9a-f]+: R_MIPS_NONE \*ABS\*-0x4 -[ ]*[0-9a-f]+: R_MIPS_NONE \*ABS\*-0x4 +[ ]*[0-9a-f]+: R_MICROMIPS_PC16_S1 \*ABS\*\+0x1231 +[ ]*[0-9a-f]+: R_MIPS_NONE \*ABS\*\+0x1231 +[ ]*[0-9a-f]+: R_MIPS_NONE \*ABS\*\+0x1231 [0-9a-f]+ <[^>]*> 0c00 nop [0-9a-f]+ <[^>]*> 4060 0000 bal 000000000000100a -[ ]*[0-9a-f]+: R_MICROMIPS_PC16_S1 bar-0x4 -[ ]*[0-9a-f]+: R_MIPS_NONE \*ABS\*-0x4 -[ ]*[0-9a-f]+: R_MIPS_NONE \*ABS\*-0x4 +[ ]*[0-9a-f]+: R_MICROMIPS_PC16_S1 \*ABS\*\+0x1231 +[ ]*[0-9a-f]+: R_MIPS_NONE \*ABS\*\+0x1231 +[ ]*[0-9a-f]+: R_MIPS_NONE \*ABS\*\+0x1231 [0-9a-f]+ <[^>]*> 0000 0000 nop [0-9a-f]+ <[^>]*> 4020 0000 bltzal zero,0000000000001012 -[ ]*[0-9a-f]+: R_MICROMIPS_PC16_S1 bar-0x4 -[ ]*[0-9a-f]+: R_MIPS_NONE \*ABS\*-0x4 -[ ]*[0-9a-f]+: R_MIPS_NONE \*ABS\*-0x4 +[ ]*[0-9a-f]+: R_MICROMIPS_PC16_S1 \*ABS\*\+0x1231 +[ ]*[0-9a-f]+: R_MIPS_NONE \*ABS\*\+0x1231 +[ ]*[0-9a-f]+: R_MIPS_NONE \*ABS\*\+0x1231 [0-9a-f]+ <[^>]*> 0000 0000 nop [0-9a-f]+ <[^>]*> 9402 0000 beqz v0,000000000000101a -[ ]*[0-9a-f]+: R_MICROMIPS_PC16_S1 bar-0x4 -[ ]*[0-9a-f]+: R_MIPS_NONE \*ABS\*-0x4 -[ ]*[0-9a-f]+: R_MIPS_NONE \*ABS\*-0x4 +[ ]*[0-9a-f]+: R_MICROMIPS_PC16_S1 \*ABS\*\+0x1231 +[ ]*[0-9a-f]+: R_MIPS_NONE \*ABS\*\+0x1231 +[ ]*[0-9a-f]+: R_MIPS_NONE \*ABS\*\+0x1231 [0-9a-f]+ <[^>]*> 0c00 nop [0-9a-f]+ <[^>]*> b402 0000 bnez v0,0000000000001020 -[ ]*[0-9a-f]+: R_MICROMIPS_PC16_S1 bar-0x4 -[ ]*[0-9a-f]+: R_MIPS_NONE \*ABS\*-0x4 -[ ]*[0-9a-f]+: R_MIPS_NONE \*ABS\*-0x4 +[ ]*[0-9a-f]+: R_MICROMIPS_PC16_S1 \*ABS\*\+0x1231 +[ ]*[0-9a-f]+: R_MIPS_NONE \*ABS\*\+0x1231 +[ ]*[0-9a-f]+: R_MIPS_NONE \*ABS\*\+0x1231 [0-9a-f]+ <[^>]*> 0c00 nop [0-9a-f]+ <[^>]*> 0c00 nop \.\.\. diff --git a/gas/testsuite/gas/mips/mips.exp b/gas/testsuite/gas/mips/mips.exp index b22da6754b..8bdddbfba1 100644 --- a/gas/testsuite/gas/mips/mips.exp +++ b/gas/testsuite/gas/mips/mips.exp @@ -612,6 +612,7 @@ if { [istarget mips*-*-vxworks*] } { run_dump_test "branch-local-n64-1" } run_dump_test "branch-absolute" + run_dump_test "branch-absolute-addend" if $has_newabi { run_dump_test "branch-absolute-n32" run_dump_test "branch-absolute-addend-n32" @@ -1281,6 +1282,7 @@ if { [istarget mips*-*-vxworks*] } { run_dump_test "micromips-warn-branch-delay" run_dump_test "micromips-warn-branch-delay-1" run_dump_test "micromips-branch-absolute" + run_dump_test "micromips-branch-absolute-addend" if $has_newabi { run_dump_test "micromips-branch-absolute-n32" run_dump_test "micromips-branch-absolute-addend-n32" @@ -1393,6 +1395,7 @@ if { [istarget mips*-*-vxworks*] } { run_dump_test "mips16-branch-addend-2" run_dump_test "mips16-branch-addend-3" run_dump_test "mips16-branch-absolute" + run_dump_test "mips16-branch-absolute-addend" if $has_newabi { run_dump_test "mips16-branch-absolute-n32" run_dump_test "mips16-branch-absolute-addend-n32" diff --git a/gas/testsuite/gas/mips/mips16-branch-absolute-addend.d b/gas/testsuite/gas/mips/mips16-branch-absolute-addend.d new file mode 100644 index 0000000000..de64afb97e --- /dev/null +++ b/gas/testsuite/gas/mips/mips16-branch-absolute-addend.d @@ -0,0 +1,20 @@ +#objdump: -dr --prefix-addresses --show-raw-insn +#name: MIPS16 branch to absolute expression with addend +#as: -32 + +.*: +file format .*mips.* + +Disassembly of section \.text: + \.\.\. +[0-9a-f]+ <[^>]*> f101 1018 b 00002234 +[ ]*[0-9a-f]+: R_MIPS16_PC16_S1 bar +[0-9a-f]+ <[^>]*> f101 6018 bteqz 00002238 +[ ]*[0-9a-f]+: R_MIPS16_PC16_S1 bar +[0-9a-f]+ <[^>]*> f101 6118 btnez 0000223c +[ ]*[0-9a-f]+: R_MIPS16_PC16_S1 bar +[0-9a-f]+ <[^>]*> f101 2218 beqz v0,00002240 +[ ]*[0-9a-f]+: R_MIPS16_PC16_S1 bar +[0-9a-f]+ <[^>]*> f101 2a18 bnez v0,00002244 +[ ]*[0-9a-f]+: R_MIPS16_PC16_S1 bar +[0-9a-f]+ <[^>]*> 6500 nop + \.\.\. diff --git a/gas/testsuite/gas/mips/mips16-branch-absolute.d b/gas/testsuite/gas/mips/mips16-branch-absolute.d index 4d2c9d31e2..68b3fb4e8d 100644 --- a/gas/testsuite/gas/mips/mips16-branch-absolute.d +++ b/gas/testsuite/gas/mips/mips16-branch-absolute.d @@ -6,15 +6,15 @@ Disassembly of section \.text: \.\.\. -[0-9a-f]+ <[^>]*> f101 1018 b 00002234 -[ ]*[0-9a-f]+: R_MIPS16_PC16_S1 \*ABS\* -[0-9a-f]+ <[^>]*> f101 6018 bteqz 00002238 -[ ]*[0-9a-f]+: R_MIPS16_PC16_S1 \*ABS\* -[0-9a-f]+ <[^>]*> f101 6118 btnez 0000223c -[ ]*[0-9a-f]+: R_MIPS16_PC16_S1 \*ABS\* -[0-9a-f]+ <[^>]*> f101 2218 beqz v0,00002240 -[ ]*[0-9a-f]+: R_MIPS16_PC16_S1 \*ABS\* -[0-9a-f]+ <[^>]*> f101 2a18 bnez v0,00002244 -[ ]*[0-9a-f]+: R_MIPS16_PC16_S1 \*ABS\* +[0-9a-f]+ <[^>]*> f7ff 101e b 00001000 +[ ]*[0-9a-f]+: R_MIPS16_PC16_S1 bar +[0-9a-f]+ <[^>]*> f7ff 601e bteqz 00001004 +[ ]*[0-9a-f]+: R_MIPS16_PC16_S1 bar +[0-9a-f]+ <[^>]*> f7ff 611e btnez 00001008 +[ ]*[0-9a-f]+: R_MIPS16_PC16_S1 bar +[0-9a-f]+ <[^>]*> f7ff 221e beqz v0,0000100c +[ ]*[0-9a-f]+: R_MIPS16_PC16_S1 bar +[0-9a-f]+ <[^>]*> f7ff 2a1e bnez v0,00001010 +[ ]*[0-9a-f]+: R_MIPS16_PC16_S1 bar [0-9a-f]+ <[^>]*> 6500 nop \.\.\. diff --git a/ld/ChangeLog b/ld/ChangeLog index 1f8a499eec..250d076c4a 100644 --- a/ld/ChangeLog +++ b/ld/ChangeLog @@ -1,3 +1,10 @@ +2016-07-14 Maciej W. Rozycki + + * testsuite/ld-mips-elf/mips-elf.exp: Run + `branch-absolute-addend', `mips16-branch-absolute', + `mips16-branch-absolute-addend' and + `micromips-branch-absolute-addend'. + 2016-07-14 Maciej W. Rozycki * testsuite/ld-mips-elf/mips16-branch-absolute.d: New test. diff --git a/ld/testsuite/ld-mips-elf/mips-elf.exp b/ld/testsuite/ld-mips-elf/mips-elf.exp index cca6695d2a..5c417c73e8 100644 --- a/ld/testsuite/ld-mips-elf/mips-elf.exp +++ b/ld/testsuite/ld-mips-elf/mips-elf.exp @@ -144,6 +144,7 @@ run_dump_test "mips16-1" run_dump_test "branch-misc-1" run_dump_test "branch-misc-2" run_dump_test "branch-absolute" [list [list ld $abi_ldflags(o32)]] +run_dump_test "branch-absolute-addend" [list [list ld $abi_ldflags(o32)]] if $has_newabi { run_dump_test "branch-absolute-n32" [list [list ld $abi_ldflags(n32)]] run_dump_test "branch-absolute-addend-n32" \ @@ -157,6 +158,9 @@ run_dump_test "mips16-branch-2" [list [list ld $abi_ldflags(o32)]] run_dump_test "mips16-branch-3" [list [list ld $abi_ldflags(o32)]] run_dump_test "mips16-branch-addend-2" [list [list ld $abi_ldflags(o32)]] run_dump_test "mips16-branch-addend-3" [list [list ld $abi_ldflags(o32)]] +run_dump_test "mips16-branch-absolute" [list [list ld $abi_ldflags(o32)]] +run_dump_test "mips16-branch-absolute-addend" \ + [list [list ld $abi_ldflags(o32)]] if $has_newabi { run_dump_test "mips16-branch-absolute-n32" \ [list [list ld $abi_ldflags(n32)]] @@ -169,6 +173,8 @@ if $has_newabi { } run_dump_test "micromips-branch-absolute" [list [list ld $abi_ldflags(o32)]] +run_dump_test "micromips-branch-absolute-addend" \ + [list [list ld $abi_ldflags(o32)]] if $has_newabi { run_dump_test "micromips-branch-absolute-n32" \ [list [list ld $abi_ldflags(n32)]]