This is the mail archive of the
binutils-cvs@sourceware.org
mailing list for the binutils project.
[binutils-gdb] x86: Check pseudo prefix without instruction
- From: H.J.Lu <hjl at sourceware dot org>
- To: bfd-cvs at sourceware dot org
- Date: 17 Dec 2017 18:00:44 -0000
- Subject: [binutils-gdb] x86: Check pseudo prefix without instruction
https://sourceware.org/git/gitweb.cgi?p=binutils-gdb.git;h=390c91cfcffe1a0d75b6100d1542cda2544993b3
commit 390c91cfcffe1a0d75b6100d1542cda2544993b3
Author: H.J. Lu <hjl.tools@gmail.com>
Date: Sun Dec 17 09:40:54 2017 -0800
x86: Check pseudo prefix without instruction
Pseudo prefixes must be used on an instruction. Issue an error when
pseudo prefix is used without instruction.
PR gas/22623
* gas/config/tc-i386.c (output_insn): Check pseudo prefix
without instruction.
* testsuite/gas/i386/i386.exp: Run inval-pseudo.
* testsuite/gas/i386/inval-pseudo.l: New file.
* testsuite/gas/i386/inval-pseudo.s: Likewise.
Diff:
---
gas/ChangeLog | 9 +++++++++
gas/config/tc-i386.c | 6 ++++++
gas/testsuite/gas/i386/i386.exp | 1 +
gas/testsuite/gas/i386/inval-pseudo.l | 11 +++++++++++
gas/testsuite/gas/i386/inval-pseudo.s | 5 +++++
5 files changed, 32 insertions(+)
diff --git a/gas/ChangeLog b/gas/ChangeLog
index 3e00c76..a2d95b7 100644
--- a/gas/ChangeLog
+++ b/gas/ChangeLog
@@ -1,3 +1,12 @@
+2017-12-17 H.J. Lu <hongjiu.lu@intel.com>
+
+ PR gas/22623
+ * gas/config/tc-i386.c (output_insn): Check pseudo prefix
+ without instruction.
+ * testsuite/gas/i386/i386.exp: Run inval-pseudo.
+ * testsuite/gas/i386/inval-pseudo.l: New file.
+ * testsuite/gas/i386/inval-pseudo.s: Likewise.
+
2017-12-15 Jan Beulich <jbeulich@suse.com>
* config/tc-i386.c (match_template): Add missing ! to
diff --git a/gas/config/tc-i386.c b/gas/config/tc-i386.c
index 5c71bb6..ae1c523 100644
--- a/gas/config/tc-i386.c
+++ b/gas/config/tc-i386.c
@@ -7258,6 +7258,12 @@ check_prefix:
break;
case 1:
break;
+ case 0:
+ /* Check for pseudo prefixes. */
+ as_bad_where (insn_start_frag->fr_file,
+ insn_start_frag->fr_line,
+ _("pseudo prefix without instruction"));
+ return;
default:
abort ();
}
diff --git a/gas/testsuite/gas/i386/i386.exp b/gas/testsuite/gas/i386/i386.exp
index 7e102b6..302f91c 100644
--- a/gas/testsuite/gas/i386/i386.exp
+++ b/gas/testsuite/gas/i386/i386.exp
@@ -429,6 +429,7 @@ if [expr ([istarget "i*86-*-*"] || [istarget "x86_64-*-*"]) && [gas_32_check]]
run_list_test "notrackbad" "-al"
run_dump_test "align-1a"
run_dump_test "align-1b"
+ run_list_test "inval-pseudo" "-al"
# These tests require support for 8 and 16 bit relocs,
# so we only run them for ELF and COFF targets.
diff --git a/gas/testsuite/gas/i386/inval-pseudo.l b/gas/testsuite/gas/i386/inval-pseudo.l
new file mode 100644
index 0000000..cf344f6
--- /dev/null
+++ b/gas/testsuite/gas/i386/inval-pseudo.l
@@ -0,0 +1,11 @@
+.*: Assembler messages:
+.*:3: Error: .*
+GAS LISTING .*
+
+
+[ ]*1[ ]+\.text
+[ ]*2[ ]+\?\?\?\? 90 nop
+[ ]*3[ ]+\{disp32\}
+[ ]*4[ ]+\?\?\?\? 90 nop
+[ ]*5[ ]+\?\?\?\? 00000000 \.p2align 4,0
+#...
diff --git a/gas/testsuite/gas/i386/inval-pseudo.s b/gas/testsuite/gas/i386/inval-pseudo.s
new file mode 100644
index 0000000..a40362b
--- /dev/null
+++ b/gas/testsuite/gas/i386/inval-pseudo.s
@@ -0,0 +1,5 @@
+ .text
+ nop
+ {disp32}
+ nop
+ .p2align 4,0