RISC-V: PR28733, add missing extension info to 'unrecognized opcode' error
authorPatrick O'Neill <patrick@rivosinc.com>
Fri, 21 Jan 2022 17:22:46 +0000 (09:22 -0800)
committerNelson Chu <nelson.chu@sifive.com>
Wed, 23 Feb 2022 11:45:52 +0000 (19:45 +0800)
commite4028336b19998e74a51dd0918a8b3922e08a537
tree4c350a0187b397546a7a109acb0e1163e563e2b5
parentdf0a549ebdae74ef9d233243b869d424e6a33c73
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.
bfd/elfxx-riscv.c
bfd/elfxx-riscv.h
gas/config/tc-riscv.c
gas/testsuite/gas/riscv/c-fld-fsd-fail.l
gas/testsuite/gas/riscv/march-imply-i2p1-01.l