aboutsummaryrefslogtreecommitdiff
path: root/gas/testsuite
diff options
context:
space:
mode:
authorMaciej W. Rozycki <macro@imgtec.com>2016-12-14 21:20:01 +0000
committerMaciej W. Rozycki <macro@imgtec.com>2016-12-14 22:05:38 +0000
commiteefc3365838ed15c02bd7da39fbc31c00d07b398 (patch)
treeaa3c25bd41a330bfb1b14ad7efc0fc2a254c32d6 /gas/testsuite
parent353abf7c10561aab3e8e7ffce6e270c3743376f0 (diff)
downloadgdb-eefc3365838ed15c02bd7da39fbc31c00d07b398.zip
gdb-eefc3365838ed15c02bd7da39fbc31c00d07b398.tar.gz
gdb-eefc3365838ed15c02bd7da39fbc31c00d07b398.tar.bz2
MIPS16/GAS: Fix assertion failures with relocations on 16-bit instructions
Complement commit c9775dde3277 ("MIPS16: Add R_MIPS16_PC16_S1 branch relocation support)" and report an assembly error when a relocation is required for an instruction, currently a branch only, that has been forced to use its unextended encoding, either with the use of an explicit `.t' mnemonic suffix, or by means of `.set noautoextend' being active, fixing an assertion failure currently caused instead. gas/ * config/tc-mips.c (md_convert_frag): Report an error instead of asserting on `ext'. * testsuite/gas/mips/mips16-branch-unextended-1.d: New test. * testsuite/gas/mips/mips16-branch-unextended-2.d: New test. * testsuite/gas/mips/mips16-branch-unextended-1.s: New test source. * testsuite/gas/mips/mips16-branch-unextended-2.s: New test. * testsuite/gas/mips/mips16-branch-unextended.l: New stderr output. * testsuite/gas/mips/mips.exp: Run the new tests.
Diffstat (limited to 'gas/testsuite')
-rw-r--r--gas/testsuite/gas/mips/mips.exp3
-rw-r--r--gas/testsuite/gas/mips/mips16-branch-unextended-1.d3
-rw-r--r--gas/testsuite/gas/mips/mips16-branch-unextended-1.s8
-rw-r--r--gas/testsuite/gas/mips/mips16-branch-unextended-2.d3
-rw-r--r--gas/testsuite/gas/mips/mips16-branch-unextended-2.s8
-rw-r--r--gas/testsuite/gas/mips/mips16-branch-unextended.l6
6 files changed, 31 insertions, 0 deletions
diff --git a/gas/testsuite/gas/mips/mips.exp b/gas/testsuite/gas/mips/mips.exp
index da8d569..d3809e7 100644
--- a/gas/testsuite/gas/mips/mips.exp
+++ b/gas/testsuite/gas/mips/mips.exp
@@ -1298,6 +1298,9 @@ if { [istarget mips*-*-vxworks*] } {
run_dump_test "mips16-extend"
run_dump_test "mips16-sprel-swap"
+ run_dump_test "mips16-branch-unextended-1"
+ run_dump_test "mips16-branch-unextended-2"
+
run_dump_test "vxworks1"
run_dump_test "vxworks1-xgot"
run_dump_test "vxworks1-el"
diff --git a/gas/testsuite/gas/mips/mips16-branch-unextended-1.d b/gas/testsuite/gas/mips/mips16-branch-unextended-1.d
new file mode 100644
index 0000000..9bccd02
--- /dev/null
+++ b/gas/testsuite/gas/mips/mips16-branch-unextended-1.d
@@ -0,0 +1,3 @@
+#name: MIPS16 unextended branch instructions with relocation 1
+#as: -32
+#error-output: mips16-branch-unextended.l
diff --git a/gas/testsuite/gas/mips/mips16-branch-unextended-1.s b/gas/testsuite/gas/mips/mips16-branch-unextended-1.s
new file mode 100644
index 0000000..3e59588
--- /dev/null
+++ b/gas/testsuite/gas/mips/mips16-branch-unextended-1.s
@@ -0,0 +1,8 @@
+ .set mips16
+ .set noautoextend
+foo:
+ beqz $2, baz
+ bnez $3, baz
+ bteqz baz
+ btnez baz
+ b baz
diff --git a/gas/testsuite/gas/mips/mips16-branch-unextended-2.d b/gas/testsuite/gas/mips/mips16-branch-unextended-2.d
new file mode 100644
index 0000000..b64ee5a
--- /dev/null
+++ b/gas/testsuite/gas/mips/mips16-branch-unextended-2.d
@@ -0,0 +1,3 @@
+#name: MIPS16 unextended branch instructions with relocation 2
+#as: -32
+#error-output: mips16-branch-unextended.l
diff --git a/gas/testsuite/gas/mips/mips16-branch-unextended-2.s b/gas/testsuite/gas/mips/mips16-branch-unextended-2.s
new file mode 100644
index 0000000..1bc4282
--- /dev/null
+++ b/gas/testsuite/gas/mips/mips16-branch-unextended-2.s
@@ -0,0 +1,8 @@
+ .set mips16
+ .set autoextend
+foo:
+ beqz.t $2, baz
+ bnez.t $3, baz
+ bteqz.t baz
+ btnez.t baz
+ b.t baz
diff --git a/gas/testsuite/gas/mips/mips16-branch-unextended.l b/gas/testsuite/gas/mips/mips16-branch-unextended.l
new file mode 100644
index 0000000..611901c
--- /dev/null
+++ b/gas/testsuite/gas/mips/mips16-branch-unextended.l
@@ -0,0 +1,6 @@
+.*: Assembler messages:
+.*:4: Error: invalid unextended operand value
+.*:5: Error: invalid unextended operand value
+.*:6: Error: invalid unextended operand value
+.*:7: Error: invalid unextended operand value
+.*:8: Error: invalid unextended operand value