mirror of
https://github.com/espressif/binutils-gdb.git
synced 2025-06-23 11:39:26 +08:00
Allow non-fatal errors to be emitted and for disassembly notes be placed on AArch64
This patch adds a new platform option "notes" that can be used to indicate if disassembly notes should be placed in the disassembly as comments. These notes can contain information about a failing constraint such as reading from a write-only register. The disassembly will not be blocked because of this but -M notes will emit a comment saying that the operation is not allowed. For assembly this patch adds a new non-fatal status for errors. This is essentially a warning. The reason for not creating an actual warning type is that this causes the interaction between the ordering of warnings and errors to be problematic. Currently the error buffer is almost always filled because of the way operands are matched during assembly. An earlier template may have put an error there that would only be displayed if no other template matches or generates a higher priority error. But by definition a warning is lower priority than a warning, so the error (which is incorrect if another template matched) will supersede the warning. By treating warnings as errors and only later relaxing the severity this relationship keeps working and the existing reporting infrastructure can be re-used. binutils/ PR binutils/21446 * doc/binutils.texi (-M): Document AArch64 options. * NEWS: Document notes and warnings. gas/ PR binutils/21446 * config/tc-aarch64.c (print_operands): Indicate no notes. (output_operand_error_record): Support non-fatal errors. (output_operand_error_report, warn_unpredictable_ldst, md_assemble): Likewise. include/ PR binutils/21446 * opcode/aarch64.h (aarch64_operand_error): Add non_fatal. (aarch64_print_operand): Support notes. opcodes/ PR binutils/21446 * aarch64-dis.c (no_notes: New. (parse_aarch64_dis_option): Support notes. (aarch64_decode_insn, print_operands): Likewise. (print_aarch64_disassembler_options): Document notes. * aarch64-opc.c (aarch64_print_operand): Support notes.
This commit is contained in:
@ -1101,6 +1101,7 @@ struct aarch64_operand_error
|
||||
int index;
|
||||
const char *error;
|
||||
int data[3]; /* Some data for extra information. */
|
||||
bfd_boolean non_fatal;
|
||||
};
|
||||
|
||||
typedef struct aarch64_operand_error aarch64_operand_error;
|
||||
@ -1125,7 +1126,8 @@ aarch64_get_opcode (enum aarch64_op);
|
||||
/* Generate the string representation of an operand. */
|
||||
extern void
|
||||
aarch64_print_operand (char *, size_t, bfd_vma, const aarch64_opcode *,
|
||||
const aarch64_opnd_info *, int, int *, bfd_vma *);
|
||||
const aarch64_opnd_info *, int, int *, bfd_vma *,
|
||||
char **);
|
||||
|
||||
/* Miscellaneous interface. */
|
||||
|
||||
|
Reference in New Issue
Block a user