[binutils-gdb] RISC-V/gas: warn about non-boolean unaligned-access attribute
Jan Beulich via Binutils-cvs <[email protected]> Fri, 31 Jul 2026 11:54:29 +0000 (GMT)
| Newsgroups | gmane.comp.gnu.binutils.cvs |
|---|---|
| Message-ID | <[email protected]> |
https://sourceware.org/git/gitweb.cgi?p=3Dbinutils-gdb.git;h=3D2a59bbe36876= 5ea2defffd81219a0f32c437a5fd commit 2a59bbe368765ea2defffd81219a0f32c437a5fd Author: Jan Beulich <[email protected]> Date: Fri Jul 31 13:49:24 2026 +0200 RISC-V/gas: warn about non-boolean unaligned-access attribute =20 The attribute being a boolean one, values should be solely 0 or 1. =20 Reviewed-by: Jiawei <[email protected]> Diff: --- gas/config/tc-riscv.c | 8 ++++++-- gas/testsuite/gas/riscv/attribute-warn.d | 7 +++++++ gas/testsuite/gas/riscv/attribute-warn.l | 2 ++ gas/testsuite/gas/riscv/attribute-warn.s | 3 +++ 4 files changed, 18 insertions(+), 2 deletions(-) diff --git a/gas/config/tc-riscv.c b/gas/config/tc-riscv.c index f1cf2552e17..d4d551b82a0 100644 --- a/gas/config/tc-riscv.c +++ b/gas/config/tc-riscv.c @@ -6105,14 +6105,13 @@ s_riscv_attribute (int ignored ATTRIBUTE_UNUSED) { obj_attr_tag_t tag =3D obj_attr_process_attribute (OBJ_ATTR_PROC); unsigned old_xlen; - obj_attribute *attr; + const obj_attribute *attr =3D elf_known_obj_attributes_proc (stdoutput); =20 explicit_attr =3D true; switch (tag) { case Tag_RISCV_arch: old_xlen =3D xlen; - attr =3D elf_known_obj_attributes_proc (stdoutput); if (!start_assemble) riscv_set_arch (attr[Tag_RISCV_arch].s); else @@ -6138,6 +6137,11 @@ s_riscv_attribute (int ignored ATTRIBUTE_UNUSED) "any instructions")); break; =20 + case Tag_RISCV_unaligned_access: + if (attr[Tag_RISCV_unaligned_access].i > 1) + as_warn (_("`unaligned_access' attribute with non-boolean value")); + break; + default: break; } diff --git a/gas/testsuite/gas/riscv/attribute-warn.d b/gas/testsuite/gas/r= iscv/attribute-warn.d new file mode 100644 index 00000000000..d116febabc1 --- /dev/null +++ b/gas/testsuite/gas/riscv/attribute-warn.d @@ -0,0 +1,7 @@ +#as: -march-attr +#readelf: -A +#warning_output: attribute-warn.l + +Attribute Section: riscv +File Attributes + Tag_RISCV_arch: [a-zA-Z0-9_\"].* diff --git a/gas/testsuite/gas/riscv/attribute-warn.l b/gas/testsuite/gas/r= iscv/attribute-warn.l new file mode 100644 index 00000000000..af05da9280d --- /dev/null +++ b/gas/testsuite/gas/riscv/attribute-warn.l @@ -0,0 +1,2 @@ +.*: Assembler messages: +.*:2: Warning: `unaligned_access' attribute with non-boolean value diff --git a/gas/testsuite/gas/riscv/attribute-warn.s b/gas/testsuite/gas/r= iscv/attribute-warn.s new file mode 100644 index 00000000000..fdaed386422 --- /dev/null +++ b/gas/testsuite/gas/riscv/attribute-warn.s @@ -0,0 +1,3 @@ + .attribute unaligned_access, 1 + .attribute unaligned_access, 0x1234 + .attribute unaligned_access, 0