This is the mail archive of the
binutils@sourceware.org
mailing list for the binutils project.
[PATCH][Binutils][AArch64] Fix bug in warning filtering.
- From: Tamar Christina <tamar dot christina at arm dot com>
- To: binutils at sourceware dot org
- Cc: nd at arm dot com, Richard dot Earnshaw at arm dot com, marcus dot shawcroft at arm dot com
- Date: Thu, 13 Sep 2018 15:45:10 +0100
- Subject: [PATCH][Binutils][AArch64] Fix bug in warning filtering.
Hi All,
This fixes a small bug with the warning filtering code, which when a line has
generated a warning and a template decode error (due to the way templates are
resolved) which would not have been emitted and warnings are being suppressed
with -W it would erroneously emit the error.
I have no testcase for this because the only places we generate warnings during
encoding/decoding now is using msr/mrs and system registers. They don't have a
template that would trigger this.
However an upcoming patch series will have tests in it which would expose this bug.
build on native hardware and regtested on
aarch64-none-elf, aarch64-none-elf (32 bit host),
aarch64-none-linux-gnu, aarch64_be-none-linux-gnu
Cross-compiled and regtested on
aarch64-none-linux-gnu, aarch64_be-none-linux-gnu
and no issues.
Ok for master? and for backport to binutils-2.31?
Thanks,
Tamar
gas/ChangeLog:
2018-09-13 Tamar Christina <tamar.christina@arm.com>
* config/tc-aarch64.c (output_operand_error_report): Apply filtering to
current instead of head message.
--
diff --git a/gas/config/tc-aarch64.c b/gas/config/tc-aarch64.c
index 31985963e314cbe772afbd190d4b0ca6e9608466..c77de21d19dc1cc73df05f17c0e985152f3992ed 100644
--- a/gas/config/tc-aarch64.c
+++ b/gas/config/tc-aarch64.c
@@ -4809,7 +4809,7 @@ output_operand_error_report (char *str, bfd_boolean non_fatal_only)
/* If we don't want to print non-fatal errors then don't consider them
at all. */
if (curr->detail.kind != kind
- || (non_fatal_only && !head->detail.non_fatal))
+ || (non_fatal_only && !curr->detail.non_fatal))
continue;
/* If there are multiple errors, pick up the one with the highest
mismatching operand index. In the case of multiple errors with