]> git.ipfire.org Git - thirdparty/binutils-gdb.git/commitdiff
RISC-V/gas: warn about non-boolean unaligned-access attribute
authorJan Beulich <jbeulich@suse.com>
Fri, 31 Jul 2026 11:49:24 +0000 (13:49 +0200)
committerJan Beulich <jbeulich@suse.com>
Fri, 31 Jul 2026 11:50:00 +0000 (13:50 +0200)
The attribute being a boolean one, values should be solely 0 or 1.

Reviewed-by: Jiawei <jiawei@iscas.ac.cn>
gas/config/tc-riscv.c
gas/testsuite/gas/riscv/attribute-warn.d [new file with mode: 0644]
gas/testsuite/gas/riscv/attribute-warn.l [new file with mode: 0644]
gas/testsuite/gas/riscv/attribute-warn.s [new file with mode: 0644]

index f1cf2552e17a803b03ee4d36e4144dd4151a235e..d4d551b82a0eee9a491ba36c660a7781803d5295 100644 (file)
@@ -6105,14 +6105,13 @@ s_riscv_attribute (int ignored ATTRIBUTE_UNUSED)
 {
   obj_attr_tag_t tag = obj_attr_process_attribute (OBJ_ATTR_PROC);
   unsigned old_xlen;
-  obj_attribute *attr;
+  const obj_attribute *attr = elf_known_obj_attributes_proc (stdoutput);
 
   explicit_attr = true;
   switch (tag)
     {
     case Tag_RISCV_arch:
       old_xlen = xlen;
-      attr = 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;
 
+    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/riscv/attribute-warn.d
new file mode 100644 (file)
index 0000000..d116feb
--- /dev/null
@@ -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/riscv/attribute-warn.l
new file mode 100644 (file)
index 0000000..af05da9
--- /dev/null
@@ -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/riscv/attribute-warn.s
new file mode 100644 (file)
index 0000000..fdaed38
--- /dev/null
@@ -0,0 +1,3 @@
+       .attribute unaligned_access, 1
+       .attribute unaligned_access, 0x1234
+       .attribute unaligned_access, 0