aboutsummaryrefslogtreecommitdiff
path: root/gas/config
diff options
context:
space:
mode:
authorJan Beulich <jbeulich@suse.com>2022-11-09 11:09:34 +0100
committerJan Beulich <jbeulich@suse.com>2022-11-09 11:09:34 +0100
commit47c0279b2ca36fd79ad4ce8601103623a92161ae (patch)
tree23fd98ed159147896f3b81bc6ce368ffcee67fe0 /gas/config
parent2d4989e98ee5e63b76ce3e35b0e02baaee2f50cb (diff)
downloadgdb-47c0279b2ca36fd79ad4ce8601103623a92161ae.zip
gdb-47c0279b2ca36fd79ad4ce8601103623a92161ae.tar.gz
gdb-47c0279b2ca36fd79ad4ce8601103623a92161ae.tar.bz2
x86/Intel: don't accept malformed EXTRQ / INSERTQ
Operand swapping was mistakenly suppressed when the first two operands were immediate ones, not taking into account overall operand count. This way EXTRQ / INSERTQ would have been accepted also with kind-of-AT&T operand order. For the testcase being extended, in order to not move around "GAS LISTING" expectations, suppress pagination.
Diffstat (limited to 'gas/config')
-rw-r--r--gas/config/tc-i386.c3
1 files changed, 2 insertions, 1 deletions
diff --git a/gas/config/tc-i386.c b/gas/config/tc-i386.c
index 6dcf114..da005c5 100644
--- a/gas/config/tc-i386.c
+++ b/gas/config/tc-i386.c
@@ -4885,7 +4885,8 @@ md_assemble (char *line)
&& !startswith (mnemonic, "rmp")
&& (strcmp (mnemonic, "tpause") != 0)
&& (strcmp (mnemonic, "umwait") != 0)
- && !(operand_type_check (i.types[0], imm)
+ && !(i.operands == 2
+ && operand_type_check (i.types[0], imm)
&& operand_type_check (i.types[1], imm)))
swap_operands ();