From: Jan Beulich Date: Thu, 17 Mar 2022 10:05:56 +0000 (+0100) Subject: x86: don't accept base architectures as extensions X-Git-Url: https://git.libre-soc.org/?a=commitdiff_plain;h=ed971d9fa65b91a91101d23a968e6244b93d008d;p=binutils-gdb.git x86: don't accept base architectures as extensions The -march= intentions are quite clear: A base architecture may be followed by any number of extensions. Accepting a base architecture in place of an extension will at best result in confusion, as the first of the two (or more) items specified simply would not take effect, due to being overridden by the later one(s). --- diff --git a/gas/config/tc-i386.c b/gas/config/tc-i386.c index 1ff5fd8e453..1cc14feeccf 100644 --- a/gas/config/tc-i386.c +++ b/gas/config/tc-i386.c @@ -13262,7 +13262,7 @@ md_parse_option (int c, const char *arg) *next++ = '\0'; for (j = 0; j < ARRAY_SIZE (cpu_arch); j++) { - if (strcmp (arch, cpu_arch [j].name) == 0) + if (arch == saved && strcmp (arch, cpu_arch [j].name) == 0) { /* Processor. */ if (! cpu_arch[j].flags.bitfield.cpui386) diff --git a/gas/testsuite/gas/i386/arch-10-5.l b/gas/testsuite/gas/i386/arch-10-5.l new file mode 100644 index 00000000000..25dc404a0da --- /dev/null +++ b/gas/testsuite/gas/i386/arch-10-5.l @@ -0,0 +1,2 @@ +Assembler messages: +Fatal error: .* diff --git a/gas/testsuite/gas/i386/arch-10-5.s b/gas/testsuite/gas/i386/arch-10-5.s new file mode 100644 index 00000000000..09cc1e1f7cd --- /dev/null +++ b/gas/testsuite/gas/i386/arch-10-5.s @@ -0,0 +1 @@ + .text diff --git a/gas/testsuite/gas/i386/i386.exp b/gas/testsuite/gas/i386/i386.exp index da5c2f6b806..3c157e9eb1e 100644 --- a/gas/testsuite/gas/i386/i386.exp +++ b/gas/testsuite/gas/i386/i386.exp @@ -199,6 +199,7 @@ if [gas_32_check] then { run_list_test "arch-10-2" "-march=i686 -I${srcdir}/$subdir -al" run_list_test "arch-10-3" "-march=i686+mmx+sse4.2 -I${srcdir}/$subdir -al" run_list_test "arch-10-4" "-march=i686+mmx+sse4+vmx+smx -I${srcdir}/$subdir -al" + run_list_test "arch-10-5" "-march=generic32+i686 -al" run_dump_test "arch-11" run_dump_test "arch-12" run_dump_test "arch-13"