diff options
author | Patrick O'Neill <patrick@rivosinc.com> | 2022-01-21 09:22:46 -0800 |
---|---|---|
committer | Nelson Chu <nelson.chu@sifive.com> | 2022-02-23 19:45:52 +0800 |
commit | e4028336b19998e74a51dd0918a8b3922e08a537 (patch) | |
tree | 4c350a0187b397546a7a109acb0e1163e563e2b5 /bfd/elfxx-riscv.h | |
parent | df0a549ebdae74ef9d233243b869d424e6a33c73 (diff) | |
download | gdb-e4028336b19998e74a51dd0918a8b3922e08a537.zip gdb-e4028336b19998e74a51dd0918a8b3922e08a537.tar.gz gdb-e4028336b19998e74a51dd0918a8b3922e08a537.tar.bz2 |
RISC-V: PR28733, add missing extension info to 'unrecognized opcode' error
Currently we report errors as "unrecognized opcode `fence.i'" when the
opcode isn't part of the selected extensions.
This patch expands that error message to include the missing extension
information. For example, now the error message would be "unrecognized
opcode `fence.i', extension `zifencei' required".
If the opcode is not a part of any extension, the error message reverts
to "unrecognized opcode `<op statement>'".
Signed-off-by: Patrick O'Neill <patrick@rivosinc.com>
bfd/
pr 28733
* elfxx-riscv.c (riscv_multi_subset_supports_ext): New function,
used to return the extension string for each INSN_CLASS_*.
* elfxx-riscv.h: Added extern riscv_multi_subset_supports_ext.
gas/
pr 28733
* config/tc-riscv.c (struct riscv_ip_error): New structure,
contains information about errors that occur within the riscv_ip.
(riscv_ip): Use struct riscv_ip_error to report more detailed errors.
* testsuite/gas/riscv/c-fld-fsd-fail.l: Updated.
* testsuite/gas/riscv/march-imply-i2p1-01.: Likewise.
Diffstat (limited to 'bfd/elfxx-riscv.h')
-rw-r--r-- | bfd/elfxx-riscv.h | 3 |
1 files changed, 3 insertions, 0 deletions
diff --git a/bfd/elfxx-riscv.h b/bfd/elfxx-riscv.h index 67b7d07..ea7126b 100644 --- a/bfd/elfxx-riscv.h +++ b/bfd/elfxx-riscv.h @@ -104,6 +104,9 @@ riscv_subset_supports (riscv_parse_subset_t *, const char *); extern bool riscv_multi_subset_supports (riscv_parse_subset_t *, enum riscv_insn_class); +extern const char * +riscv_multi_subset_supports_ext (riscv_parse_subset_t *, enum riscv_insn_class); + extern void bfd_elf32_riscv_set_data_segment_info (struct bfd_link_info *, int *); extern void |