From ed971d9fa65b91a91101d23a968e6244b93d008d Mon Sep 17 00:00:00 2001 From: Jan Beulich Date: Thu, 17 Mar 2022 11:05:56 +0100 Subject: [PATCH] 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). --- gas/config/tc-i386.c | 2 +- gas/testsuite/gas/i386/arch-10-5.l | 2 ++ gas/testsuite/gas/i386/arch-10-5.s | 1 + gas/testsuite/gas/i386/i386.exp | 1 + 4 files changed, 5 insertions(+), 1 deletion(-) create mode 100644 gas/testsuite/gas/i386/arch-10-5.l create mode 100644 gas/testsuite/gas/i386/arch-10-5.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" -- 2.30.2