diff options
author | Maciej W. Rozycki <macro@imgtec.com> | 2017-04-25 10:20:14 +0100 |
---|---|---|
committer | Maciej W. Rozycki <macro@imgtec.com> | 2017-04-25 11:53:45 +0100 |
commit | adc1273cb27286452ed8b32c5ca3ea263b4854f0 (patch) | |
tree | d81c520fc1e7bac4c790d5c09cfd585c40021ee1 /gas/testsuite | |
parent | debed3db4887483552103da36d180967ef0dca5f (diff) | |
download | gdb-adc1273cb27286452ed8b32c5ca3ea263b4854f0.zip gdb-adc1273cb27286452ed8b32c5ca3ea263b4854f0.tar.gz gdb-adc1273cb27286452ed8b32c5ca3ea263b4854f0.tar.bz2 |
MIPS/GAS: Correct BFD_RELOC_MIPS16_16_PCREL_S1 fixup size
Correct the size of a BFD_RELOC_MIPS16_16_PCREL_S1 fixup made in
`md_convert_frag', fixing a bug introduced with commit c9775dde3277
("MIPS16: Add R_MIPS16_PC16_S1 branch relocation support)". Add test
cases to verify that the overflow of this fixup's in-place addend is
still correctly detected.
gas/
* config/tc-mips.c (md_convert_frag): Correct
BFD_RELOC_MIPS16_16_PCREL_S1 fixup size.
* testsuite/gas/mips/mips16-branch-addend-4.d: New test.
* testsuite/gas/mips/mips16-branch-addend-5.d: New test.
* testsuite/gas/mips/mips16-branch-addend-5.l: New stderr
output.
* testsuite/gas/mips/mips16-branch-addend-4.s: New test source.
* testsuite/gas/mips/mips16-branch-addend-5.s: New test source.
* testsuite/gas/mips/mips.exp: Run the new tests.
Diffstat (limited to 'gas/testsuite')
-rw-r--r-- | gas/testsuite/gas/mips/mips.exp | 2 | ||||
-rw-r--r-- | gas/testsuite/gas/mips/mips16-branch-addend-4.d | 30 | ||||
-rw-r--r-- | gas/testsuite/gas/mips/mips16-branch-addend-4.s | 24 | ||||
-rw-r--r-- | gas/testsuite/gas/mips/mips16-branch-addend-5.d | 4 | ||||
-rw-r--r-- | gas/testsuite/gas/mips/mips16-branch-addend-5.l | 11 | ||||
-rw-r--r-- | gas/testsuite/gas/mips/mips16-branch-addend-5.s | 24 |
6 files changed, 95 insertions, 0 deletions
diff --git a/gas/testsuite/gas/mips/mips.exp b/gas/testsuite/gas/mips/mips.exp index f0c6c34..31a4075 100644 --- a/gas/testsuite/gas/mips/mips.exp +++ b/gas/testsuite/gas/mips/mips.exp @@ -1552,6 +1552,8 @@ if { [istarget mips*-*-vxworks*] } { run_dump_test "mips16-branch-addend-1" run_dump_test "mips16-branch-addend-2" run_dump_test "mips16-branch-addend-3" + run_dump_test "mips16-branch-addend-4" + run_dump_test "mips16-branch-addend-5" run_dump_test "mips16-branch-absolute" run_dump_test "mips16-branch-absolute-addend" if $has_newabi { diff --git a/gas/testsuite/gas/mips/mips16-branch-addend-4.d b/gas/testsuite/gas/mips/mips16-branch-addend-4.d new file mode 100644 index 0000000..273a6e1 --- /dev/null +++ b/gas/testsuite/gas/mips/mips16-branch-addend-4.d @@ -0,0 +1,30 @@ +#objdump: -dr --prefix-addresses --show-raw-insn +#name: MIPS16 branch relocation with addend 4 +#as: -32 + +.*: +file format .*mips.* + +Disassembly of section \.text: + \.\.\. +[0-9a-f]+ <[^>]*> f7ef 101f b 00011002 <foo\+0x10002> +[ ]*[0-9a-f]+: R_MIPS16_PC16_S1 bar +[0-9a-f]+ <[^>]*> f7ef 601f bteqz 00011006 <foo\+0x10006> +[ ]*[0-9a-f]+: R_MIPS16_PC16_S1 bar +[0-9a-f]+ <[^>]*> f7ef 611f btnez 0001100a <foo\+0x1000a> +[ ]*[0-9a-f]+: R_MIPS16_PC16_S1 bar +[0-9a-f]+ <[^>]*> f7ef 221f beqz v0,0001100e <foo\+0x1000e> +[ ]*[0-9a-f]+: R_MIPS16_PC16_S1 bar +[0-9a-f]+ <[^>]*> f7ef 2a1f bnez v0,00011012 <foo\+0x10012> +[ ]*[0-9a-f]+: R_MIPS16_PC16_S1 bar +[0-9a-f]+ <[^>]*> f010 1000 b ffff1018 <foo\+0xffff0018> +[ ]*[0-9a-f]+: R_MIPS16_PC16_S1 bar +[0-9a-f]+ <[^>]*> f010 6000 bteqz ffff101c <foo\+0xffff001c> +[ ]*[0-9a-f]+: R_MIPS16_PC16_S1 bar +[0-9a-f]+ <[^>]*> f010 6100 btnez ffff1020 <foo\+0xffff0020> +[ ]*[0-9a-f]+: R_MIPS16_PC16_S1 bar +[0-9a-f]+ <[^>]*> f010 2200 beqz v0,ffff1024 <foo\+0xffff0024> +[ ]*[0-9a-f]+: R_MIPS16_PC16_S1 bar +[0-9a-f]+ <[^>]*> f010 2a00 bnez v0,ffff1028 <foo\+0xffff0028> +[ ]*[0-9a-f]+: R_MIPS16_PC16_S1 bar +[0-9a-f]+ <[^>]*> 6500 nop + \.\.\. diff --git a/gas/testsuite/gas/mips/mips16-branch-addend-4.s b/gas/testsuite/gas/mips/mips16-branch-addend-4.s new file mode 100644 index 0000000..5c5a7b7 --- /dev/null +++ b/gas/testsuite/gas/mips/mips16-branch-addend-4.s @@ -0,0 +1,24 @@ + .text + + .space 0x1000 + + .ent foo + .set mips16 +foo: + b bar + 4 + (0x7fff << 1) + bteqz bar + 4 + (0x7fff << 1) + btnez bar + 4 + (0x7fff << 1) + beqz $2, bar + 4 + (0x7fff << 1) + bnez $2, bar + 4 + (0x7fff << 1) + b bar + 4 - (0x8000 << 1) + bteqz bar + 4 - (0x8000 << 1) + btnez bar + 4 - (0x8000 << 1) + beqz $2, bar + 4 - (0x8000 << 1) + bnez $2, bar + 4 - (0x8000 << 1) + nop + .set nomips16 + .end foo + +# Force some (non-delay-slot) zero bytes, to make 'objdump' print ... + .align 4, 0 + .space 16 diff --git a/gas/testsuite/gas/mips/mips16-branch-addend-5.d b/gas/testsuite/gas/mips/mips16-branch-addend-5.d new file mode 100644 index 0000000..47c1134 --- /dev/null +++ b/gas/testsuite/gas/mips/mips16-branch-addend-5.d @@ -0,0 +1,4 @@ +#objdump: -dr --prefix-addresses --show-raw-insn +#name: MIPS16 branch relocation with addend 5 +#as: -32 +#error-output: mips16-branch-addend-5.l diff --git a/gas/testsuite/gas/mips/mips16-branch-addend-5.l b/gas/testsuite/gas/mips/mips16-branch-addend-5.l new file mode 100644 index 0000000..99f844e --- /dev/null +++ b/gas/testsuite/gas/mips/mips16-branch-addend-5.l @@ -0,0 +1,11 @@ +.*: Assembler messages: +.*:8: Error: relocation overflow +.*:9: Error: relocation overflow +.*:10: Error: relocation overflow +.*:11: Error: relocation overflow +.*:12: Error: relocation overflow +.*:13: Error: relocation overflow +.*:14: Error: relocation overflow +.*:15: Error: relocation overflow +.*:16: Error: relocation overflow +.*:17: Error: relocation overflow diff --git a/gas/testsuite/gas/mips/mips16-branch-addend-5.s b/gas/testsuite/gas/mips/mips16-branch-addend-5.s new file mode 100644 index 0000000..aadfa19 --- /dev/null +++ b/gas/testsuite/gas/mips/mips16-branch-addend-5.s @@ -0,0 +1,24 @@ + .text + + .space 0x1000 + + .ent foo + .set mips16 +foo: + b bar + 4 + (0x8000 << 1) + bteqz bar + 4 + (0x8000 << 1) + btnez bar + 4 + (0x8000 << 1) + beqz $2, bar + 4 + (0x8000 << 1) + bnez $2, bar + 4 + (0x8000 << 1) + b bar + 4 - (0x8001 << 1) + bteqz bar + 4 - (0x8001 << 1) + btnez bar + 4 - (0x8001 << 1) + beqz $2, bar + 4 - (0x8001 << 1) + bnez $2, bar + 4 - (0x8001 << 1) + nop + .set nomips16 + .end foo + +# Force some (non-delay-slot) zero bytes, to make 'objdump' print ... + .align 4, 0 + .space 16 |