x86/Intel: don't accept bogus instructions
authorJan Beulich <jbeulich@novell.com>
Fri, 1 Jul 2016 07:03:02 +0000 (09:03 +0200)
committerJan Beulich <jbeulich@suse.com>
Fri, 1 Jul 2016 07:03:02 +0000 (09:03 +0200)
commit83b16ac69492ab493bfc87f147bf84c167bc6f30
treeb6ddd3a6e27799f3024feb470ac135711f17ce0f
parentc07315e0c610e0e3317b4c02266f81793df253d2
x86/Intel: don't accept bogus instructions

... due to their last byte looking like a suffix, when after its
stripping a matching instruction can be found. Since memory operand
size specifiers in Intel mode get converted into suffix representation
internally, we need to keep track of the actual mnemonic suffix which
may have got trimmed off, and check its validity while looking for a
matching template. I tripper over this quite some time again after
support for AMD's SSE5 instructions got removed, as at that point some
of the SSE5 mnemonics, other than expected, didn't fail to assemble.
But the problem affects many more instructions, namely (almost) all
MMX, SSE, and AVX ones as it looks. I don't think it makes sense to
add a testcase covering all of them, nor do I think it makes sense to
pick out some random examples for a new test case.
gas/ChangeLog
gas/config/tc-i386.c
gas/testsuite/gas/i386/i386.exp
gas/testsuite/gas/i386/suffix-bad.l [new file with mode: 0644]
gas/testsuite/gas/i386/suffix-bad.s [new file with mode: 0644]