mirror of
https://sourceware.org/git/binutils-gdb.git
synced 2024-12-27 04:52:05 +08:00
d3ffd7f776
https://github.com/riscv/riscv-asm-manual/pull/67 Format: .option arch, +<extension><version>, ... .option arch, -<extension> .option arch, =<ISA string> The new direcitve is used to enable/disable extensions for the specific code region. For example, .attribute arch, "rv64ic" # arch = rv64i2p0_c2p0 .option push .option arch, +d2p0, -c # arch = rv64i2p0_f2p0_d2p0, f is added implied .option arch, =rv32gc # arch = rv32i2p0_m2p0_a2p0_f2p0_d2p0_c2p0 .option pop # arch = rv64i2p0_c2p0 Note that, 1. ".option rvc/norvc" have the same behavior as ".option arch +c/-c". 2. ".option arch -i" is illegal, since we cannot remove base i extension. 3. If arch=rv64i2p0, then ".option arch, +i3p0" will update the i's version from 2.0 to 3.0. 4. If arch=rv64i3p0, then ".option arch, +i" will update the i's version from 2.0 to the default one according to the chosen isa spec. bfd/ * elfxx-riscv.c (riscv_add_subset): If the subset is already added, and the new versions are not RISCV_UNKNOWN_VERSION, then update the versions to the subset list. (riscv_copy_subset): New function. Copy the subset from list. (riscv_copy_subset_list): New function. Return the new copyed list. (riscv_update_subset): Updated to make .option arch directives workable. * elfxx-riscv.h: Updated. gas/ * config/tc-riscv.c (riscv_subsets): Defined as a pointer. (riscv_rps_as): Init the subset_list to NULL, we will set it later once riscv_opts_stack is created or updated. (struct riscv_option_stack, riscv_opts_stack): Moved forward. (riscv_set_arch): Updated. (s_riscv_option): Support new .option arch directive, to add, remove or update subsets for the specific code region. (riscv_write_out_attrs): Updated. * doc/c-riscv.texi: Added document for new .option arch directive. * testsuite/gas/riscv/option-arch-01a.d: New testcase. * testsuite/gas/riscv/option-arch-01b.d: Likewise. * testsuite/gas/riscv/option-arch-01.s: Likewise.. * testsuite/gas/riscv/option-arch-02.d: Likewise. * testsuite/gas/riscv/option-arch-02.s: Likewise. * testsuite/gas/riscv/option-arch-fail.d: Likewise. * testsuite/gas/riscv/option-arch-fail.l: Likewise. * testsuite/gas/riscv/option-arch-fail.s: Likewise. |
||
---|---|---|
.. | ||
all.texi | ||
as.texi | ||
c-aarch64.texi | ||
c-alpha.texi | ||
c-arc.texi | ||
c-arm.texi | ||
c-avr.texi | ||
c-bfin.texi | ||
c-bpf.texi | ||
c-cr16.texi | ||
c-cris.texi | ||
c-csky.texi | ||
c-d10v.texi | ||
c-d30v.texi | ||
c-epiphany.texi | ||
c-h8300.texi | ||
c-hppa.texi | ||
c-i386.texi | ||
c-ia64.texi | ||
c-ip2k.texi | ||
c-lm32.texi | ||
c-loongarch.texi | ||
c-m32c.texi | ||
c-m32r.texi | ||
c-m68hc11.texi | ||
c-m68k.texi | ||
c-metag.texi | ||
c-microblaze.texi | ||
c-mips.texi | ||
c-mmix.texi | ||
c-msp430.texi | ||
c-mt.texi | ||
c-nds32.texi | ||
c-nios2.texi | ||
c-ns32k.texi | ||
c-or1k.texi | ||
c-pdp11.texi | ||
c-pj.texi | ||
c-ppc.texi | ||
c-pru.texi | ||
c-riscv.texi | ||
c-rl78.texi | ||
c-rx.texi | ||
c-s12z.texi | ||
c-s390.texi | ||
c-score.texi | ||
c-sh.texi | ||
c-sparc.texi | ||
c-tic6x.texi | ||
c-tic54x.texi | ||
c-tilegx.texi | ||
c-tilepro.texi | ||
c-v850.texi | ||
c-vax.texi | ||
c-visium.texi | ||
c-wasm32.texi | ||
c-xc16x.texi | ||
c-xgate.texi | ||
c-xstormy16.texi | ||
c-xtensa.texi | ||
c-z8k.texi | ||
c-z80.texi | ||
fdl.texi | ||
h8.texi | ||
internals.texi | ||
Makefile.am | ||
Makefile.in |