diff options
author | Jan Beulich <jbeulich@suse.com> | 2023-11-17 11:23:50 +0100 |
---|---|---|
committer | Jan Beulich <jbeulich@suse.com> | 2023-11-17 11:23:50 +0100 |
commit | 97f31cb469f288995d3dcaae406531053dff09fa (patch) | |
tree | 79e5aa09003a6b54fa9e7b7c67d4ee54541b9755 | |
parent | 3086ed9a458f9bc3a52633fc2a10ffc3f21753f4 (diff) | |
download | gdb-97f31cb469f288995d3dcaae406531053dff09fa.zip gdb-97f31cb469f288995d3dcaae406531053dff09fa.tar.gz gdb-97f31cb469f288995d3dcaae406531053dff09fa.tar.bz2 |
x86: don't allow pseudo-prefixes to be overridden by legacy suffixes
Deprecated functionality would better not win over its modern
counterparts.
-rw-r--r-- | gas/config/tc-i386.c | 22 |
1 files changed, 19 insertions, 3 deletions
diff --git a/gas/config/tc-i386.c b/gas/config/tc-i386.c index 6e788d8..1692dfc 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<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; |