[binutils-gdb] RISC-V/bfd: warn about non-boolean unaligned-access attribute
Jan Beulich via Binutils-cvs <[email protected]> Fri, 31 Jul 2026 11:54:39 +0000 (GMT)
| Newsgroups | gmane.comp.gnu.binutils.cvs |
|---|---|
| Message-ID | <[email protected]> |
https://sourceware.org/git/gitweb.cgi?p=3Dbinutils-gdb.git;h=3D01425f0623b9= 14dffc05a4911513b381494533f6 commit 01425f0623b914dffc05a4911513b381494533f6 Author: Jan Beulich <[email protected]> Date: Fri Jul 31 13:50:44 2026 +0200 RISC-V/bfd: warn about non-boolean unaligned-access attribute =20 The attribute being a boolean one, incoming values should be solely 0 or 1. Convert other non-zero values to 1. =20 Reviewed-by: Jiawei [email protected] Diff: --- bfd/elfxx-riscv.c | 24 +++++++++++++++++++++++- 1 file changed, 23 insertions(+), 1 deletion(-) diff --git a/bfd/elfxx-riscv.c b/bfd/elfxx-riscv.c index d6442655716..98ea23fda97 100644 --- a/bfd/elfxx-riscv.c +++ b/bfd/elfxx-riscv.c @@ -3892,6 +3892,23 @@ riscv_merge_attributes (bfd *ibfd, struct bfd_link_i= nfo *info, initialized. */ out_attr[0].i =3D 1; =20 + for (i =3D LEAST_KNOWN_OBJ_ATTRIBUTE; i < NUM_KNOWN_OBJ_ATTRIBUTES; = i++) + { + switch (i) + { + case Tag_RISCV_unaligned_access: + if (out_attr[i].i <=3D 1) + break; + + _bfd_error_handler + (_("warning: %pB uses non-boolean `unaligned_access' attribute; " + "converting to boolean"), + ibfd); + out_attr[i].i =3D 1; + break; + } + } + return true; } =20 @@ -3980,7 +3997,12 @@ riscv_merge_attributes (bfd *ibfd, struct bfd_link_i= nfo *info, break; =20 case Tag_RISCV_unaligned_access: - out_attr[i].i |=3D 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 |=3D !!in_attr[i].i; break; =20 case Tag_RISCV_stack_align: