Skip to content
  • Tamar Christina's avatar
    Allow non-fatal errors to be emitted and for disassembly notes be placed on AArch64 · 7d02540a
    Tamar Christina authored
    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.
    7d02540a
To find the state of this project's repository at the time of any of these versions, check out the tags.