[binutils-gdb] RISC-V/gas: warn about non-power-of-2 stack-align attribute
Jan Beulich via Binutils-cvs <[email protected]> Fri, 31 Jul 2026 11:54:34 +0000 (GMT)
| Newsgroups | gmane.comp.gnu.binutils.cvs |
|---|---|
| Message-ID | <[email protected]> |
https://sourceware.org/git/gitweb.cgi?p=3Dbinutils-gdb.git;h=3D57be7c7e108b= 7f21ad3cb7485535eef641dd585b commit 57be7c7e108b7f21ad3cb7485535eef641dd585b Author: Jan Beulich <[email protected]> Date: Fri Jul 31 13:50:26 2026 +0200 RISC-V/gas: warn about non-power-of-2 stack-align attribute =20 Only power-of-2 values are sensible for alignment. =20 Reviewed-by: Jiawei <[email protected]> Diff: --- gas/config/tc-riscv.c | 7 +++++++ gas/testsuite/gas/riscv/attribute-warn.d | 1 + gas/testsuite/gas/riscv/attribute-warn.l | 2 ++ gas/testsuite/gas/riscv/attribute-warn.s | 4 ++++ 4 files changed, 14 insertions(+) diff --git a/gas/config/tc-riscv.c b/gas/config/tc-riscv.c index d4d551b82a0..3abbadc59c1 100644 --- a/gas/config/tc-riscv.c +++ b/gas/config/tc-riscv.c @@ -6137,6 +6137,13 @@ s_riscv_attribute (int ignored ATTRIBUTE_UNUSED) "any instructions")); break; =20 + case Tag_RISCV_stack_align: + if (!attr[Tag_RISCV_stack_align].i + || (attr[Tag_RISCV_stack_align].i & + (attr[Tag_RISCV_stack_align].i - 1))) + as_warn (_("`stack_align' attribute with non-power-of-2 value")); + break; + case Tag_RISCV_unaligned_access: if (attr[Tag_RISCV_unaligned_access].i > 1) as_warn (_("`unaligned_access' attribute with non-boolean value")); diff --git a/gas/testsuite/gas/riscv/attribute-warn.d b/gas/testsuite/gas/r= iscv/attribute-warn.d index d116febabc1..d86c87f7448 100644 --- a/gas/testsuite/gas/riscv/attribute-warn.d +++ b/gas/testsuite/gas/riscv/attribute-warn.d @@ -4,4 +4,5 @@ =20 Attribute Section: riscv File Attributes + Tag_RISCV_stack_align: 65536-bytes 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 index af05da9280d..365563dcfb2 100644 --- a/gas/testsuite/gas/riscv/attribute-warn.l +++ b/gas/testsuite/gas/riscv/attribute-warn.l @@ -1,2 +1,4 @@ .*: Assembler messages: .*:2: Warning: `unaligned_access' attribute with non-boolean value +.*:5: Warning: `stack_align' attribute with non-power-of-2 value +.*:6: Warning: `stack_align' attribute with non-power-of-2 value diff --git a/gas/testsuite/gas/riscv/attribute-warn.s b/gas/testsuite/gas/r= iscv/attribute-warn.s index fdaed386422..f4110476430 100644 --- a/gas/testsuite/gas/riscv/attribute-warn.s +++ b/gas/testsuite/gas/riscv/attribute-warn.s @@ -1,3 +1,7 @@ .attribute unaligned_access, 1 .attribute unaligned_access, 0x1234 .attribute unaligned_access, 0 + + .attribute stack_align, 0 + .attribute stack_align, 0x4444 + .attribute stack_align, 0x10000