RISC-V: Fix wrong version number when arch contains 'p'.
authorCooper Qu <cooper.qu@linux.alibaba.com>
Wed, 22 Sep 2021 08:14:36 +0000 (16:14 +0800)
committerNelson Chu <nelson.chu@sifive.com>
Tue, 28 Sep 2021 11:39:16 +0000 (19:39 +0800)
When specify a default version for p extension in
riscv_supported_std_ext[](elfxx-riscv.c) and assembling with
-march=rv32imacp, the c extension's version in attribute will become
0p0, the expectation is 2p0.

TODO: Remember to add testcase when we have supported standrad p in
the future.

bfd/
PR gas/28372
* elfxx-riscv.c (riscv_parsing_subset_version): Break if p
represent the 'p' extension.

Change-Id: Ia4e0cf26f3d7d07acaee8cefd86707ecac663a59

bfd/elfxx-riscv.c

index c3d019c03a6a57fb44d2d275e976bfa9b04ac5fc..044cc63d09ef980de7bd9991608c1e08169e8c1b 100644 (file)
@@ -1536,13 +1536,9 @@ riscv_parsing_subset_version (const char *p,
        {
          np = *(p + 1);
 
+         /* Might be beginning of `p` extension.  */
          if (!ISDIGIT (np))
-           {
-             /* Might be beginning of `p` extension.  */
-             *major_version = version;
-             *minor_version = 0;
-             return p;
-           }
+           break;
 
          *major_version = version;
          major_p = false;