Browse Source
G is a special case, consider the ISA spec github issue as follows, https://github.com/riscv/riscv-isa-manual/issues/575 My understand is that - i, m, a, f and d extensions are not g's implicit extensions, they are g's expansions. The zifencei is the implicit extension of g, and so is zicsr, since it is implicited by f (or i2p1). However, we add the g with the RISCV_UNKNOWN_VERSION to the subset list, and it will not output to the arch string, it is only used to check what implicit extensions are need to be added. bfd/ * elfxx-riscv.c (riscv_parse_add_subset): Allow to add g with RISCV_UNKNOWN_VERSION versions. (riscv_parse_std_ext): Add g to the subset list, we only use it to add the implicit extensions, but won't output it to arch string. (riscv_parse_add_implicit_subsets): Add implicit zicsr and zifencei for g extension. (riscv_arch_str1): Do not output g to the arch string. * elfxx-riscv.h (RISCV_UNKNOWN_VERSION): Moved to include/opcode/riscv.h. gas/ * testsuite/gas/riscv/attribute-10.d: Updated. * testsuite/gas/riscv/march-imply-g.d: New testcase for g. * testsuite/gas/riscv/march-imply-unsupported.d: The zicsr and zifencei are not supported in the ISA spec v2.2, so don't add and output them. include/ * opcode/riscv.h (RISCV_UNKNOWN_VERSION): added.binutils-2_36-branch
9 changed files with 58 additions and 9 deletions
@ -0,0 +1,6 @@ |
|||
#as: -march=rv32g -march-attr -misa-spec=20191213 |
|||
#readelf: -A |
|||
#source: empty.s |
|||
Attribute Section: riscv |
|||
File Attributes |
|||
Tag_RISCV_arch: "rv32i2p1_m2p0_a2p1_f2p2_d2p2_zicsr2p0_zifencei2p0" |
|||
@ -0,0 +1,6 @@ |
|||
#as: -march=rv32g -march-attr -misa-spec=2.2 |
|||
#readelf: -A |
|||
#source: empty.s |
|||
Attribute Section: riscv |
|||
File Attributes |
|||
Tag_RISCV_arch: "rv32i2p0_m2p0_a2p0_f2p0_d2p0" |
|||
Loading…
Reference in new issue