[PATCH 2/2] x86: don't allow pseudo-prefixes to be overridden by legacy suffixes
Cui, Lili
lili.cui@intel.com
Tue Nov 7 08:47:51 GMT 2023
> Subject: [PATCH 2/2] x86: don't allow pseudo-prefixes to be overridden by
> legacy suffixes
>
> Deprecated functionality would better not win over its modern counterparts.
> ---
> We could be more strict, in disallowing legacy prefixes when any pseudo-
> prefix was used.
>
> I further wonder about us accepting .d32 even when a pre-386 CPU was
> selected.
>
> --- a/gas/config/tc-i386.c
> +++ b/gas/config/tc-i386.c
> @@ -5899,16 +5899,32 @@ parse_insn (const char *line, char *mnem
> 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<N>}'"));
> + }
> 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<N>}'"));
> + }
> else
> goto check_suffix;
> mnem_p = dot_p;
Do we use disp like this "{disp8}{disp32}" now? Do we need to add invalid test cases for it?
Lili.
More information about the Binutils
mailing list