From: Jan Beulich Date: Fri, 26 Jan 2024 09:32:37 +0000 (+0100) Subject: x86: make "-msyntax=intel -mnaked-reg" match ".intel_syntax noprefix" X-Git-Tag: gdb-15-branchpoint~1137 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=213f15cf1b2d29e0e6f1467c0df05c8cb97d9d6e;p=thirdparty%2Fbinutils-gdb.git x86: make "-msyntax=intel -mnaked-reg" match ".intel_syntax noprefix" 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. --- diff --git a/gas/config/tc-i386.c b/gas/config/tc-i386.c index 3d3d4a36eda..3c64057fd67 100644 --- a/gas/config/tc-i386.c +++ b/gas/config/tc-i386.c @@ -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: diff --git a/gas/testsuite/gas/i386/i386.exp b/gas/testsuite/gas/i386/i386.exp index f0c03cec869..46689a80fcf 100644 --- a/gas/testsuite/gas/i386/i386.exp +++ b/gas/testsuite/gas/i386/i386.exp @@ -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" diff --git a/gas/testsuite/gas/i386/intelok.d b/gas/testsuite/gas/i386/intelok.d index b1bb6f114b6..e4f1c87ef8f 100644 --- a/gas/testsuite/gas/i386/intelok.d +++ b/gas/testsuite/gas/i386/intelok.d @@ -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 .* diff --git a/gas/testsuite/gas/i386/intelok.e b/gas/testsuite/gas/i386/intelok.e index fa0818204f0..d8c0a297760 100644 --- a/gas/testsuite/gas/i386/intelok.e +++ b/gas/testsuite/gas/i386/intelok.e @@ -1,2 +1,2 @@ .*: Assembler messages: -.*:155: Warning: redundant segment overrides +.*:157: Warning: redundant segment overrides diff --git a/gas/testsuite/gas/i386/intelok.s b/gas/testsuite/gas/i386/intelok.s index abd98b460c9..ff7e2df68fa 100644 --- a/gas/testsuite/gas/i386/intelok.s +++ b/gas/testsuite/gas/i386/intelok.s @@ -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 index 00000000000..203220fddd9 --- /dev/null +++ b/gas/testsuite/gas/i386/intelok2.d @@ -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