aboutsummaryrefslogtreecommitdiff
path: root/gas
diff options
context:
space:
mode:
authorH.J. Lu <hjl.tools@gmail.com>2016-11-07 14:58:38 -0800
committerH.J. Lu <hjl.tools@gmail.com>2016-11-07 14:58:38 -0800
commit48c97fa1ba7d6628352fc2433abd91a41f6c8171 (patch)
tree6ace8e9feb806261451632e6410f65abc7f9bac1 /gas
parent5996220cfa24ef6fddb782617720cd56913b1bb7 (diff)
downloadgdb-48c97fa1ba7d6628352fc2433abd91a41f6c8171.zip
gdb-48c97fa1ba7d6628352fc2433abd91a41f6c8171.tar.gz
gdb-48c97fa1ba7d6628352fc2433abd91a41f6c8171.tar.bz2
X86: Properly handle bad FPU opcode
Since Bad_Opcode and FGRPd9_2 were the same in i386-dis.c, all Bad_Opcode entries in float_reg were displaced as FGRPd9_2. This patch adds an entry for Bad_Opcode in fgrps to avoid treating it as FGRPd9_2. gas/ PR binutils/20775 * testsuite/gas/i386/i386.exp: Run fpu-bad. * testsuite/gas/i386/fpu-bad.d: New file. * testsuite/gas/i386/fpu-bad.s: Likewise. opcodes/ PR binutils/20775 * i386-dis.c (FGRPd9_2): Replace 0 with 1. (FGRPd9_4): Replace 1 with 2. (FGRPd9_5): Replace 2 with 3. (FGRPd9_6): Replace 3 with 4. (FGRPd9_7): Replace 4 with 5. (FGRPda_5): Replace 5 with 6. (FGRPdb_4): Replace 6 with 7. (FGRPde_3): Replace 7 with 8. (FGRPdf_4): Replace 8 with 9. (fgrps): Add an entry for Bad_Opcode.
Diffstat (limited to 'gas')
-rw-r--r--gas/ChangeLog7
-rw-r--r--gas/testsuite/gas/i386/fpu-bad.d11
-rw-r--r--gas/testsuite/gas/i386/fpu-bad.s4
-rw-r--r--gas/testsuite/gas/i386/i386.exp1
4 files changed, 23 insertions, 0 deletions
diff --git a/gas/ChangeLog b/gas/ChangeLog
index 6cdfc69..e8481a3 100644
--- a/gas/ChangeLog
+++ b/gas/ChangeLog
@@ -1,3 +1,10 @@
+2016-11-07 H.J. Lu <hongjiu.lu@intel.com>
+
+ PR binutils/20775
+ * testsuite/gas/i386/i386.exp: Run fpu-bad.
+ * testsuite/gas/i386/fpu-bad.d: New file.
+ * testsuite/gas/i386/fpu-bad.s: Likewise.
+
2016-11-04 Nathan Sidwell <nathan@acm.org>
gas/
diff --git a/gas/testsuite/gas/i386/fpu-bad.d b/gas/testsuite/gas/i386/fpu-bad.d
new file mode 100644
index 0000000..ea1fe24
--- /dev/null
+++ b/gas/testsuite/gas/i386/fpu-bad.d
@@ -0,0 +1,11 @@
+#as: --32
+#objdump: -dw
+#name: i386 fpu bad opcodes
+
+.*: +file format .*
+
+Disassembly of section .text:
+
+0+ <start>:
+ +[a-f0-9]+: dd f0 \(bad\)
+#pass
diff --git a/gas/testsuite/gas/i386/fpu-bad.s b/gas/testsuite/gas/i386/fpu-bad.s
new file mode 100644
index 0000000..a038170
--- /dev/null
+++ b/gas/testsuite/gas/i386/fpu-bad.s
@@ -0,0 +1,4 @@
+ .text
+start:
+ .byte 0xdd
+ .byte 0xf0
diff --git a/gas/testsuite/gas/i386/i386.exp b/gas/testsuite/gas/i386/i386.exp
index 11c342a..1b28fa1 100644
--- a/gas/testsuite/gas/i386/i386.exp
+++ b/gas/testsuite/gas/i386/i386.exp
@@ -378,6 +378,7 @@ if [expr ([istarget "i*86-*-*"] || [istarget "x86_64-*-*"]) && [gas_32_check]]
run_dump_test "ptwrite-intel"
run_list_test "avx512vl-1" "-al"
run_list_test "avx512vl-2" "-al"
+ run_dump_test "fpu-bad"
# These tests require support for 8 and 16 bit relocs,
# so we only run them for ELF and COFF targets.