Skip to content
  • Jim Wilson's avatar
    RISC-V: Accept version, supervisor ext and more than one NSE for -march. · 1080bf78
    Jim Wilson authored
    This patch moves all -march parsing logic into bfd, because we will use this
    code in ELF attributes.
    
    	bfd/
    	* elfxx-riscv.h (RISCV_DONT_CARE_VERSION): New macro.
    	(struct riscv_subset_t): New structure.
    	(riscv_subset_t): New typedef.
    	(riscv_subset_list_t): New structure.
    	(riscv_release_subset_list): New prototype.
    	(riscv_add_subset): Likewise.
    	(riscv_lookup_subset): Likewise.
    	(riscv_lookup_subset_version): Likewise.
    	(riscv_release_subset_list): Likewise.
    	* elfxx-riscv.c: Include safe-ctype.h.
    	(riscv_parsing_subset_version): New function.
    	(riscv_supported_std_ext): Likewise.
    	(riscv_parse_std_ext): Likewise.
    	(riscv_parse_sv_or_non_std_ext): Likewise.
    	(riscv_parse_subset): Likewise.
    	(riscv_add_subset): Likewise.
    	(riscv_lookup_subset): Likewise.
    	(riscv_lookup_subset_version): Likewise.
    	(riscv_release_subset_list): Likewise.
    	gas/
    	* config/tc-riscv.c: Include elfxx-riscv.h.
    	(struct riscv_subset): Removed.
    	(riscv_subsets): Change type to riscv_subset_list_t.
    	(riscv_subset_supports): Removed argument: xlen_required and move
    	logic into libbfd.
    	(riscv_multi_subset_supports): Removed argument: xlen_required.
    	(riscv_clear_subsets): Removed.
    	(riscv_add_subset): Ditto.
    	(riscv_set_arch): Extract parsing logic into libbfd.
    	(riscv_ip): Update argument for riscv_multi_subset_supports and
    	riscv_subset_supports. Update riscv_subsets due to struct definition
    	changed.
    	(riscv_after_parse_args): Update riscv_subsets due to struct
    	definition changed, update and argument for riscv_subset_supports.
    	* testsuite/gas/riscv/empty.s: New.
    	* testsuite/gas/riscv/march-fail-rv32ef.d: Likewise.
    	* testsuite/gas/riscv/march-fail-rv32ef.l: Likewise.
    	* testsuite/gas/riscv/march-fail-rv32i.d: Likewise.
    	* testsuite/gas/riscv/march-fail-rv32i.l: Likewise.
    	* testsuite/gas/riscv/march-fail-rv32iam.d: Likewise.
    	* testsuite/gas/riscv/march-fail-rv32iam.l: Likewise.
    	* testsuite/gas/riscv/march-fail-rv32ic.d: Likewise.
    	* testsuite/gas/riscv/march-fail-rv32ic.l: Likewise.
    	* testsuite/gas/riscv/march-fail-rv32icx2p.d: Likewise.
    	* testsuite/gas/riscv/march-fail-rv32icx2p.l: Likewise.
    	* testsuite/gas/riscv/march-fail-rv32imc.d: Likewise.
    	* testsuite/gas/riscv/march-fail-rv32imc.l: Likewise.
    	* testsuite/gas/riscv/march-fail-rv64I.d: Likewise.
    	* testsuite/gas/riscv/march-fail-rv64I.l: Likewise.
    	* testsuite/gas/riscv/march-fail-rv64e.d: Likewise.
    	* testsuite/gas/riscv/march-fail-rv64e.l: Likewise.
    	* testsuite/gas/riscv/march-ok-g2.d: Likewise.
    	* testsuite/gas/riscv/march-ok-g2p0.d: Likewise.
    	* testsuite/gas/riscv/march-ok-i2p0.d: Likewise.
    	* testsuite/gas/riscv/march-ok-nse-with-version.: Likewise.d
    	* testsuite/gas/riscv/march-ok-s-with-version.d: Likewise.
    	* testsuite/gas/riscv/march-ok-s.d: Likewise.
    	* testsuite/gas/riscv/march-ok-sx.d: Likewise.
    	* testsuite/gas/riscv/march-ok-two-nse.d: Likewise.
    	* testsuite/gas/riscv/march-ok-g2_p1.d: Likewise.
    	* testsuite/gas/riscv/march-ok-i2p0m2_a2f2.d: Likewise.
    	include/
    	* opcode/riscv.h (riscv_opcode): Change type of xlen_requirement to
    	unsigned.
    	opcodes/
    	* riscv-opc.c: Change the type of xlen, because type of
    	xlen_requirement changed.
    1080bf78
To find the state of this project's repository at the time of any of these versions, check out the tags.