From: Jan Beulich Date: Fri, 17 Nov 2023 10:23:50 +0000 (+0100) Subject: x86: don't allow pseudo-prefixes to be overridden by legacy suffixes X-Git-Tag: binutils-2_42~926 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=97f31cb469f288995d3dcaae406531053dff09fa;p=thirdparty%2Fbinutils-gdb.git x86: don't allow pseudo-prefixes to be overridden by legacy suffixes Deprecated functionality would better not win over its modern counterparts. --- diff --git a/gas/config/tc-i386.c b/gas/config/tc-i386.c index 6e788d8ee97..1692dfcdf54 100644 --- a/gas/config/tc-i386.c +++ b/gas/config/tc-i386.c @@ -5887,16 +5887,32 @@ parse_insn (const char *line, char *mnemonic, bool prefix_only) Check if we should swap operand or force 32bit displacement in encoding. */ if (mnem_p - 2 == dot_p && dot_p[1] == 's') - i.dir_encoding = dir_encoding_swap; + { + if (i.dir_encoding == dir_encoding_default) + i.dir_encoding = dir_encoding_swap; + else + as_warn (_("ignoring `.s' suffix due to earlier `{%s}'"), + i.dir_encoding == dir_encoding_load ? "load" : "store"); + } else if (mnem_p - 3 == dot_p && dot_p[1] == 'd' && dot_p[2] == '8') - i.disp_encoding = disp_encoding_8bit; + { + if (i.disp_encoding == disp_encoding_default) + i.disp_encoding = disp_encoding_8bit; + else if (i.disp_encoding != disp_encoding_8bit) + as_warn (_("ignoring `.d8' suffix due to earlier `{disp}'")); + } else if (mnem_p - 4 == dot_p && dot_p[1] == 'd' && dot_p[2] == '3' && dot_p[3] == '2') - i.disp_encoding = disp_encoding_32bit; + { + if (i.disp_encoding == disp_encoding_default) + i.disp_encoding = disp_encoding_32bit; + else if (i.disp_encoding != disp_encoding_32bit) + as_warn (_("ignoring `.d32' suffix due to earlier `{disp}'")); + } else goto check_suffix; mnem_p = dot_p;