]> git.ipfire.org Git - thirdparty/binutils-gdb.git/commitdiff
x86: don't allow pseudo-prefixes to be overridden by legacy suffixes
authorJan Beulich <jbeulich@suse.com>
Fri, 17 Nov 2023 10:23:50 +0000 (11:23 +0100)
committerJan Beulich <jbeulich@suse.com>
Fri, 17 Nov 2023 10:23:50 +0000 (11:23 +0100)
Deprecated functionality would better not win over its modern
counterparts.

gas/config/tc-i386.c

index 6e788d8ee97a1e2a79915a94052861a3f7c28654..1692dfcdf54f28976cea65fe72f93b185f790739 100644 (file)
@@ -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;