[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