diff options
author | Nelson Chu <nelson.chu@sifive.com> | 2021-06-11 17:23:43 +0800 |
---|---|---|
committer | Nelson Chu <nelson.chu@sifive.com> | 2021-06-11 17:34:54 +0800 |
commit | 28b2963ffb4b55cbe720538040623f5c7ccb0a1b (patch) | |
tree | f242ee4bdc89e42a734f4160182f7ae02f8427e7 /gas/config | |
parent | 066f8fbede55e781c6241c445e0940f8368d0ef9 (diff) | |
download | gdb-28b2963ffb4b55cbe720538040623f5c7ccb0a1b.zip gdb-28b2963ffb4b55cbe720538040623f5c7ccb0a1b.tar.gz gdb-28b2963ffb4b55cbe720538040623f5c7ccb0a1b.tar.bz2 |
RISC-V: Update the riscv_opts.[rvc|rve] in the riscv_set_arch.
We also need to update the riscv_opts.[rvc|rve] for elf attributes.
Otherwise, the following case will fail,
$ cat cadd.s
.attribute arch, "rv64gc"
c.add a0, a1
$ riscv64-unknown-elf-as cadd.s -o cadd.o
cadd.s: Assembler messages:
cadd.s:2: Error: illegal operands `c.add a0,a1
After applying this patch,
$ riscv64-unknown-elf-as cadd.s -o cadd.o
$ riscv64-unknown-elf-objdump -d cadd.o
cadd.o: file format elf64-littleriscv
Disassembly of section .text:
0000000000000000 <.text>:
0: 952e add a0,a0,a1
...
gas/
* config/tc-riscv.c (riscv_set_arch): Call riscv_set_rvc
and riscv_set_rve both for -march and elf attributes.
(riscv_after_parse_args): Likewise.
Diffstat (limited to 'gas/config')
-rw-r--r-- | gas/config/tc-riscv.c | 18 |
1 files changed, 8 insertions, 10 deletions
diff --git a/gas/config/tc-riscv.c b/gas/config/tc-riscv.c index 42e5752..70cbc81 100644 --- a/gas/config/tc-riscv.c +++ b/gas/config/tc-riscv.c @@ -417,6 +417,14 @@ riscv_set_arch (const char *s) riscv_release_subset_list (&riscv_subsets); riscv_parse_subset (&rps, s); + + /* To support .option rvc and rve. */ + riscv_set_rvc (false); + if (riscv_subset_supports ("c")) + riscv_set_rvc (true); + riscv_set_rve (false); + if (riscv_subset_supports ("e")) + riscv_set_rve (true); } /* Indicate -mabi option is explictly set. */ @@ -2945,16 +2953,6 @@ riscv_after_parse_args (void) riscv_set_arch (default_arch_with_ext); - /* Add the RVC extension, regardless of -march, to support .option rvc. */ - riscv_set_rvc (false); - if (riscv_subset_supports ("c")) - riscv_set_rvc (true); - - /* Enable RVE if specified by the -march option. */ - riscv_set_rve (false); - if (riscv_subset_supports ("e")) - riscv_set_rve (true); - /* If the CIE to be produced has not been overridden on the command line, then produce version 3 by default. This allows us to use the full range of registers in a .cfi_return_column directive. */ |