Re: [PATCH v4 12/12] RISC-V/bfd: warn about non-power-of-2 stack-align attribute

Nelson Chu <[email protected]> Mon, 27 Jul 2026 12:18:05 +0800
Newsgroups gmane.comp.gnu.binutils
Message-ID <CAHT-pJwTfq336Gsr-LvwLxgkCmjFz8vd61r4gxKE9eOywN0_bQ@mail.gmail.com>
LGTM, thanks.

Nelson

On Fri, Jul 24, 2026 at 6:06 PM Jan Beulich <[email protected]> wrote:
>
> Only power-of-2 values are sensible for alignment. Reject other values.
>
> While there also drop a redundant part of a related conditional.
>
> Reviewed-by: Jiawei [email protected]
> ---
> v4: Add underscore in diagnostic.
> v3: New.
>
> --- a/bfd/elfxx-riscv.c
> +++ b/bfd/elfxx-riscv.c
> @@ -3906,6 +3906,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;
>             }
>         }
>
> @@ -4006,10 +4017,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
>