[PATCH v4 11/12] RISC-V/bfd: warn about non-boolean unaligned-access attribute
Jan Beulich <[email protected]> Fri, 24 Jul 2026 12:06:22 +0200
| Newsgroups | gmane.comp.gnu.binutils |
|---|---|
| Message-ID | <[email protected]> |
The attribute being a boolean one, incoming values should be solely 0 or 1. Convert other non-zero values to 1. Reviewed-by: Jiawei [email protected] --- v4: Add underscore in diagnostic. v3: New. --- a/bfd/elfxx-riscv.c +++ b/bfd/elfxx-riscv.c @@ -3892,6 +3892,23 @@ riscv_merge_attributes (bfd *ibfd, struc initialized. */ out_attr[0].i = 1; + for (i = LEAST_KNOWN_OBJ_ATTRIBUTE; i < NUM_KNOWN_OBJ_ATTRIBUTES; i++) + { + switch (i) + { + case Tag_RISCV_unaligned_access: + if (out_attr[i].i <= 1) + break; + + _bfd_error_handler + (_("warning: %pB uses non-boolean `unaligned_access' attribute; " + "converting to boolean"), + ibfd); + out_attr[i].i = 1; + break; + } + } + return true; } @@ -3980,7 +3997,12 @@ riscv_merge_attributes (bfd *ibfd, struc break; case Tag_RISCV_unaligned_access: - out_attr[i].i |= in_attr[i].i; + if (in_attr[i].i > 1) + _bfd_error_handler + (_("warning: %pB uses non-boolean `unaligned_access' attribute; " + "converting to boolean"), + ibfd); + out_attr[i].i |= !!in_attr[i].i; break; case Tag_RISCV_stack_align: