aboutsummaryrefslogtreecommitdiff
path: root/gas/ChangeLog
diff options
context:
space:
mode:
authorJan Beulich <jbeulich@suse.com>2020-01-21 08:28:25 +0100
committerJan Beulich <jbeulich@suse.com>2020-01-21 08:28:25 +0100
commitc006a730e9a35489cc8d081f422a7ea1b62ada56 (patch)
tree9905562c0967d901d2bd6307483a00754ceed174 /gas/ChangeLog
parentc906a69a1f30c12074165f5be0027249c643e904 (diff)
downloadgdb-c006a730e9a35489cc8d081f422a7ea1b62ada56.zip
gdb-c006a730e9a35489cc8d081f422a7ea1b62ada56.tar.gz
gdb-c006a730e9a35489cc8d081f422a7ea1b62ada56.tar.bz2
x86: improve handling of insns with ambiguous operand sizes
Commit b76bc5d54e ("x86: don't default variable shift count insns to 8-bit operand size") pointed out a very bad case, but the underlying problem is, as mentioned on various occasions, much larger: Silently selecting a (nowhere documented afaict) certain default operand size when there's no "sizing" suffix and no suitable register operand(s) is simply dangerous (for the programmer to make mistakes). While in Intel syntax mode such mistakes already lead to an error (which is going to remain that way), AT&T syntax mode now gains warnings in such cases by default, which can be suppressed or promoted to an error if so desired by the programmer. Furthermore at least general purpose insns now consistently have a default applied (alongside the warning emission), rather than accepting some and refusing others. No warnings are (as before) to be generated for "DefaultSize" insns as well as ones acting on selector and other fixed-width values. For SYSRET, however, the DefaultSize needs to be dropped - it had been wrongly put there in the first place, as it's unrelated to .code16gcc (no stack accesses involved). As set forth as a prereq when I first mentioned this intended change a few years back, Linux as well as gcc have meanwhile been patched to avoid (emission of) ambiguous operands (and hence triggering of the new warning). Note that I think that in 64-bit mode IRET and far RET would better get a diagnostic too, as it's reasonably likely that a suffix-less instance really is meant to be a 64-bit one. But I guess I better make this a separate follow-on patch. Note further that floating point operations with integer operands are an exception for now: They continue to use short (16-bit) operands by default even in 32- and 64-bit modes. Finally note that while {,V}PCMPESTR{I,M} would, strictly speaking, also need to be diagnosed, with their 64-bit forms not being very useful I think it is better to continue to avoid warning about them (by way of them carrying IgnoreSize attributes).
Diffstat (limited to 'gas/ChangeLog')
-rw-r--r--gas/ChangeLog45
1 files changed, 45 insertions, 0 deletions
diff --git a/gas/ChangeLog b/gas/ChangeLog
index 798d7cf..c5528ed 100644
--- a/gas/ChangeLog
+++ b/gas/ChangeLog
@@ -1,5 +1,50 @@
2020-01-21 Jan Beulich <jbeulich@suse.com>
+ * config/tc-i386.c (process_suffix): Drop SYSRET special case
+ and an intel_syntax check. Re-write lack-of-suffix processing
+ logic.
+ * doc/c-i386.texi: Document operand size defaults for suffix-
+ less AT&T syntax insns.
+ * testsuite/gas/i386/bundle.s, testsuite/gas/i386/lock-1.s,
+ testsuite/gas/i386/opcode.s, testsuite/gas/i386/sse3.s,
+ testsuite/gas/i386/x86-64-avx-scalar.s,
+ testsuite/gas/i386/x86-64-avx.s,
+ testsuite/gas/i386/x86-64-bundle.s,
+ testsuite/gas/i386/x86-64-intel64.s,
+ testsuite/gas/i386/x86-64-lock-1.s,
+ testsuite/gas/i386/x86-64-opcode.s,
+ testsuite/gas/i386/x86-64-sse2avx.s,
+ testsuite/gas/i386/x86-64-sse3.s: Add missing suffixes.
+ * testsuite/gas/i386/nops.s, testsuite/gas/i386/sse-noavx.s,
+ testsuite/gas/i386/x86-64-nops.s,
+ testsuite/gas/i386/x86-64-ptwrite.s,
+ testsuite/gas/i386/x86-64-simd.s,
+ testsuite/gas/i386/x86-64-sse-noavx.s,
+ testsuite/gas/i386/x86-64-suffix.s: Drop bogus suffix-less
+ insns.
+ * testsuite/gas/i386/noreg16.s, testsuite/gas/i386/noreg32.s,
+ testsuite/gas/i386/noreg64.s: Add further tests.
+ * testsuite/gas/i386/ilp32/x86-64-nops.d,
+ testsuite/gas/i386/nops.d, testsuite/gas/i386/noreg16.d,
+ testsuite/gas/i386/noreg32.d, testsuite/gas/i386/noreg64.d,
+ testsuite/gas/i386/sse-noavx.d,
+ testsuite/gas/i386/x86-64-intel64.d,
+ testsuite/gas/i386/x86-64-nops.d,
+ testsuite/gas/i386/x86-64-opcode.d,
+ testsuite/gas/i386/x86-64-ptwrite-intel.d,
+ testsuite/gas/i386/x86-64-ptwrite.d,
+ testsuite/gas/i386/x86-64-simd-intel.d,
+ testsuite/gas/i386/x86-64-simd-suffix.d,
+ testsuite/gas/i386/x86-64-simd.d,
+ testsuite/gas/i386/x86-64-sse-noavx.d
+ testsuite/gas/i386/x86-64-suffix.d,
+ testsuite/gas/i386/x86-64-suffix-intel.d: Adjust expectations.
+ * testsuite/gas/i386/noreg16.l, testsuite/gas/i386/noreg32.l,
+ testsuite/gas/i386/noreg64.l: New.
+ * testsuite/gas/i386/i386.exp: Run new tests.
+
+2020-01-21 Jan Beulich <jbeulich@suse.com>
+
* testsuite/gas/i386/avx512_bf16_vl.s,
testsuite/gas/i386/x86-64-avx512_bf16_vl.s: Add broadcast forms
of VCVTNEPS2BF16{X,Y}. Add operand-size less Intel syntax