[PATCH 2/2] x86: don't allow pseudo-prefixes to be overridden by legacy suffixes
Jan Beulich
jbeulich@suse.com
Tue Nov 7 10:07:29 GMT 2023
On 07.11.2023 09:47, Cui, Lili wrote:
>> --- 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?
I think this is permitted, and the last one wins. No need to disallow imo.
Jan
More information about the Binutils
mailing list