[PATCH v3 13/13] RISC-V/bfd: warn about non-power-of-2 stack-align attribute

Jan Beulich jbeulich@suse.com
Fri Jun 19 11:53:18 GMT 2026


Only power-of-2 values are sensible for alignment. Reject other values.

While there also drop a redundant part of a related conditional.
---
v3: New.

--- a/bfd/elfxx-riscv.c
+++ b/bfd/elfxx-riscv.c
@@ -3791,6 +3791,17 @@ riscv_merge_attributes (bfd *ibfd, struc
 		 ibfd);
 	      out_attr[i].i = 1;
 	      break;
+
+	    case Tag_RISCV_stack_align:
+	      if (!(out_attr[i].i & (out_attr[i].i - 1)))
+		break;
+
+	      _bfd_error_handler
+		(_("warning: %pB uses non-power-of-2 `stack align' attribute; "
+		   "ignoring"),
+		 ibfd);
+	      out_attr[i].i = 0;
+	      break;
 	    }
 	}
 
@@ -3891,10 +3902,14 @@ riscv_merge_attributes (bfd *ibfd, struc
 	break;
 
       case Tag_RISCV_stack_align:
-	if (out_attr[i].i == 0)
+	if ((in_attr[i].i & (in_attr[i].i - 1)) != 0)
+	  _bfd_error_handler
+	    (_("warning: %pB uses non-power-of-2 `stack align' attribute; "
+	       "ignoring"),
+	     ibfd);
+	else if (out_attr[i].i == 0)
 	  out_attr[i].i = in_attr[i].i;
 	else if (in_attr[i].i != 0
-		 && out_attr[i].i != 0
 		 && out_attr[i].i != in_attr[i].i)
 	  {
 	    _bfd_error_handler



More information about the Binutils mailing list