]> git.ipfire.org Git - thirdparty/binutils-gdb.git/commitdiff
x86: make "-msyntax=intel -mnaked-reg" match ".intel_syntax noprefix"
authorJan Beulich <jbeulich@suse.com>
Fri, 26 Jan 2024 09:32:37 +0000 (10:32 +0100)
committerJan Beulich <jbeulich@suse.com>
Fri, 26 Jan 2024 09:32:37 +0000 (10:32 +0100)
Adjustments made for the directive (by set_intel_syntax()) need also
making for the command line option. Break out respective code into a new
helper function, to also be invoked during command line processing.
Further also set register_prefix when processing -mnaked-reg.

gas/config/tc-i386.c
gas/testsuite/gas/i386/i386.exp
gas/testsuite/gas/i386/intelok.d
gas/testsuite/gas/i386/intelok.e
gas/testsuite/gas/i386/intelok.s
gas/testsuite/gas/i386/intelok2.d [new file with mode: 0644]

index 3d3d4a36edac97f4b49499f395fec8d864c5ec58..3c64057fd67b58d82fd0542b8490e9252b668b74 100644 (file)
@@ -2707,6 +2707,16 @@ set_16bit_gcc_code_flag (int new_code_flag)
   stackop_size = LONG_MNEM_SUFFIX;
 }
 
+static void
+_set_intel_syntax (int syntax_flag)
+{
+  intel_syntax = syntax_flag;
+
+  expr_set_rank (O_full_ptr, syntax_flag ? 10 : 0);
+
+  register_prefix = allow_naked_reg ? "" : "%";
+}
+
 static void
 set_intel_syntax (int syntax_flag)
 {
@@ -2729,17 +2739,13 @@ set_intel_syntax (int syntax_flag)
     }
   demand_empty_rest_of_line ();
 
-  intel_syntax = syntax_flag;
-
   if (ask_naked_reg == 0)
-    allow_naked_reg = (intel_syntax
+    allow_naked_reg = (syntax_flag
                       && (bfd_get_symbol_leading_char (stdoutput) != '\0'));
   else
     allow_naked_reg = (ask_naked_reg < 0);
 
-  expr_set_rank (O_full_ptr, syntax_flag ? 10 : 0);
-
-  register_prefix = allow_naked_reg ? "" : "%";
+  _set_intel_syntax (syntax_flag);
 }
 
 static void
@@ -16307,9 +16313,9 @@ md_parse_option (int c, const char *arg)
 
     case OPTION_MSYNTAX:
       if (strcasecmp (arg, "att") == 0)
-       intel_syntax = 0;
+       _set_intel_syntax (0);
       else if (strcasecmp (arg, "intel") == 0)
-       intel_syntax = 1;
+       _set_intel_syntax (1);
       else
        as_fatal (_("invalid -msyntax= option: `%s'"), arg);
       break;
@@ -16320,6 +16326,7 @@ md_parse_option (int c, const char *arg)
 
     case OPTION_MNAKED_REG:
       allow_naked_reg = 1;
+      register_prefix = "";
       break;
 
     case OPTION_MSSE2AVX:
index f0c03cec869a87c1b1f71e29e5311710bfca5fa5..46689a80fcf8a39c8f6c4ab3cf96ad04ced0d803 100644 (file)
@@ -66,6 +66,7 @@ if [gas_32_check] then {
     run_dump_test "intel16"
     run_list_test "intelbad" ""
     run_dump_test "intelok"
+    run_dump_test "intelok2"
     run_dump_test "prefix"
     run_list_test "prefix32" "-al"
     run_dump_test "insn-32"
index b1bb6f114b680ede6fc1b78d37d0542396a1d7ca..e4f1c87ef8f76a3388105325f13941325e79ad32 100644 (file)
@@ -1,6 +1,6 @@
-#as: -J --divide
+#as: -J --divide --defsym USE_DIRECTIVE=1
 #objdump: -dwMintel
-#name: i386 intel-ok
+#name: i386 intel-ok (directive)
 #warning_output: intelok.e
 
 .*: +file format .*
index fa0818204f0b73da4ef28fce2b68c70ebf286884..d8c0a2977601f5e0182dbc2f76a871ad79aea09e 100644 (file)
@@ -1,2 +1,2 @@
 .*: Assembler messages:
-.*:155: Warning: redundant segment overrides
+.*:157: Warning: redundant segment overrides
index abd98b460c9fe45d36a926882ddcf1ea84ac86f5..ff7e2df68fa2748dc088eff4ecf989b4f2216c09 100644 (file)
@@ -1,4 +1,6 @@
+       .ifdef USE_DIRECTIVE
        .intel_syntax noprefix
+       .endif
        .text
 start:
 
diff --git a/gas/testsuite/gas/i386/intelok2.d b/gas/testsuite/gas/i386/intelok2.d
new file mode 100644 (file)
index 0000000..203220f
--- /dev/null
@@ -0,0 +1,6 @@
+#as: -J --divide -msyntax=intel -mnaked-reg
+#objdump: -dwMintel
+#name: i386 intel-ok (cmdline option)
+#source: intelok.s
+#dump: intelok.d
+#warning_output: intelok.e