| Message ID | 2fcf62ca-0e51-48fc-a9cf-7a48a40dc82e@suse.com |
|---|---|
| State | New |
| Headers |
Return-Path: <binutils-bounces~patchwork=sourceware.org@sourceware.org> X-Original-To: patchwork@sourceware.org Delivered-To: patchwork@sourceware.org Received: from vm01.sourceware.org (localhost [IPv6:::1]) by sourceware.org (Postfix) with ESMTP id 5A3344BAE7E0 for <patchwork@sourceware.org>; Fri, 19 Jun 2026 12:00:47 +0000 (GMT) DKIM-Filter: OpenDKIM Filter v2.11.0 sourceware.org 5A3344BAE7E0 Authentication-Results: sourceware.org; dkim=pass (2048-bit key, unprotected) header.d=suse.com header.i=@suse.com header.a=rsa-sha256 header.s=google header.b=Y0o3MVvB X-Original-To: binutils@sourceware.org Delivered-To: binutils@sourceware.org Received: from mail-wr1-x430.google.com (mail-wr1-x430.google.com [IPv6:2a00:1450:4864:20::430]) by sourceware.org (Postfix) with ESMTPS id D9B294BAE7D4 for <binutils@sourceware.org>; Fri, 19 Jun 2026 11:53:19 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.2 sourceware.org D9B294BAE7D4 Authentication-Results: sourceware.org; dmarc=pass (p=quarantine dis=none) header.from=suse.com Authentication-Results: sourceware.org; spf=pass smtp.mailfrom=suse.com ARC-Filter: OpenARC Filter v1.0.0 sourceware.org D9B294BAE7D4 Authentication-Results: sourceware.org; arc=none smtp.remote-ip=2a00:1450:4864:20::430 ARC-Seal: i=1; a=rsa-sha256; d=sourceware.org; s=key; t=1781870000; cv=none; b=b2q7hGxer4BCU/OVenLhw8wvJK/dEcsJvjEEmiTtlDFfx+ygXxCCo/HFJuJXce3VuQp73q/PtN1JG4RbiJktEodqrV50wMTC1t7frF2Y15vP3lt9+ilcZvzlCE42WI8oxJY43nh84Uy2ElLmnTbzgZuiOw+UZu8n+pXFbum2tD0= ARC-Message-Signature: i=1; a=rsa-sha256; d=sourceware.org; s=key; t=1781870000; c=relaxed/simple; bh=Hm4JFqi93pEaj9R96JorrDoTAhWTorvIEPAwlmEjzNg=; h=DKIM-Signature:Message-ID:Date:MIME-Version:Subject:From:To; b=aQKs3DpXSi160pro12yOO1JW9GXDNHCqNYgCuqyAVz5XE6YeJuyggIQy749NTmADSTnAwSKCGHEnaFQKm+Kv2kGSfyj/PdAiAUtl/JqyWgWXs/5r+po++PpXk6tq26YuM4w3zEuc73Zhi15xzjpJPAtCT47vawgz2OBT/9cwFHo= ARC-Authentication-Results: i=1; sourceware.org; dkim=pass (2048-bit key, unprotected) header.d=suse.com header.i=@suse.com header.a=rsa-sha256 header.s=google header.b=Y0o3MVvB DKIM-Filter: OpenDKIM Filter v2.11.0 sourceware.org D9B294BAE7D4 Received: by mail-wr1-x430.google.com with SMTP id ffacd0b85a97d-45f3cf907ceso1028942f8f.2 for <binutils@sourceware.org>; Fri, 19 Jun 2026 04:53:19 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=suse.com; s=google; t=1781869999; x=1782474799; darn=sourceware.org; h=content-transfer-encoding:in-reply-to:autocrypt:content-language :references:cc:to:from:subject:user-agent:mime-version:date :message-id:from:to:cc:subject:date:message-id:reply-to; bh=pk4CJeArdqYIreXGZg1qNl3hMe6af6EfO+WF0UB45XQ=; b=Y0o3MVvBAvV43/Lhv5LTgXbr4WZrH2UtWbr8gtpoisT6oqWgfz5BIwWLz3w5Zex0rJ yY6hhb6mShVPmB66X7qZo0BP8IHvsaq5hzTJm0ItdeFl+tAx1JFzGvPIwr/4QqhOGXs7 qTwySRSszANrmpPcrD68XOPEIokf4edc9SGArxrlCd9e0SJAYV910SLFqviWNM5ek9MQ nTPp6bHJBNf//d1nvpzjRB71wbWpzXa2QbHwNdZ8JCyPWDHE7QF3TPdc1SU/5YerQwjA F53sZvjSbJ9gq7w58JK4P9EofU/HP/YUcfdeIqy9w7I9R80dWk+4uJKAtjN0t3J62yPl OGtA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1781869999; x=1782474799; h=content-transfer-encoding:in-reply-to:autocrypt:content-language :references:cc:to:from:subject:user-agent:mime-version:date :message-id:x-gm-gg:x-gm-message-state:from:to:cc:subject:date :message-id:reply-to; bh=pk4CJeArdqYIreXGZg1qNl3hMe6af6EfO+WF0UB45XQ=; b=Q8KuYqd6azJZoHhLtlb7YGnfEiLeRl/0RLmDFsbfCbfgVdNzciN3V/CSoQ3Tdn2dn9 HCjgxLbxcn/XQrEzLcVUA9Zmwstvse0sG7aT4cqs37dfUByAVqYFad8oKA516xhSbDyn w4ZgXBrxo2yt0T8tD+rLrKbxXfUl3UbPiPBzmZVnheu4f8iQKD9BTY0k8mpt321DWbBN wqmNu1nKP/vh2N5CTaT6REJEE1HNoIzZTf7rTPmmh9lC2WwpgsZ2Bal1QdwHqqUJO6SU qeiyQOSaIe0or2zQE/wvzVRgS/jeVybk23XNDa10FWBslG0jH0gUVQP8w2E4Eb2a+a+w d9Yg== X-Gm-Message-State: AOJu0YyHbKqM+HQt1rb8GViGprxRnqWEwV0X/btmr8latLfiWXMW/vD3 txrn9TGwBUYcPTj1/TSmSozdLifpLnfjgBZ/AHkzWgFWB+zmRn7dqa9zXDqynOQayrYGvO5TkHE 8ULir6g== X-Gm-Gg: AfdE7ckBSX8R78JPlDUlrsLvJkylvwz7He5kdPBg6zor7LCHmVWE2htZPVu4nnL49lL JCpH9KQW0+NLu/mdma8/qK3lJ9eXw1ID4j8Cryo2+I6vyFEoLhjxFMpzPTVD1sL2mqK0uffCfqX U8w6grJx1+Rwulgcaabupygt/XmY6NoHexryd9F2jpuUbyQt8FQal+qYZSbkx7kgdj6HBBmZ9oN urWoB1mLaoNCXfgRnnMB9xJsLdsQytVPHsZfq6eLK9emzTOIcB18QV5Zbsf+7HxNp565AOAHLoF HFxrEq7WgRJBr98CloEnNn/PxQPhj3QNizFaiSbwVtiIIIczOX6vh41qC+9bsrIv0c3Gvdq7UtW p0ow/Uz52oAYGhaIkH5dn+WfJwubBsAvLYUC0Kp3PkWb32eahgWzq2SGW7ILKmBBfiwyhnt/T/A gCCgfa17HhW9HZdB38H61Zg59CM0/4nYV/awjBu7N9yarK9daOGYW8lsZbDTgJdjrv7ZZ8FPL5/ /dBacOF6YvzanI= X-Received: by 2002:a5d:4d09:0:b0:463:2220:4ff0 with SMTP id ffacd0b85a97d-46501d44f47mr4957573f8f.27.1781869998855; Fri, 19 Jun 2026 04:53:18 -0700 (PDT) Received: from [10.156.60.236] (ip-037-024-206-209.um08.pools.vodafone-ip.de. [37.24.206.209]) by smtp.gmail.com with ESMTPSA id ffacd0b85a97d-4650c114e22sm6673151f8f.34.2026.06.19.04.53.18 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128); Fri, 19 Jun 2026 04:53:18 -0700 (PDT) Message-ID: <2fcf62ca-0e51-48fc-a9cf-7a48a40dc82e@suse.com> Date: Fri, 19 Jun 2026 13:53:18 +0200 MIME-Version: 1.0 User-Agent: Mozilla Thunderbird Subject: [PATCH v3 13/13] RISC-V/bfd: warn about non-power-of-2 stack-align attribute From: Jan Beulich <jbeulich@suse.com> To: Binutils <binutils@sourceware.org> Cc: Palmer Dabbelt <palmer@dabbelt.com>, Andrew Waterman <andrew@sifive.com>, Jim Wilson <jim.wilson.gcc@gmail.com>, Nelson Chu <nelson.chu1990@gmail.com>, jiawei <jiawei@iscas.ac.cn> References: <8243b692-4895-420c-b2d0-27ee3b714732@suse.com> Content-Language: en-US Autocrypt: addr=jbeulich@suse.com; keydata= xsDiBFk3nEQRBADAEaSw6zC/EJkiwGPXbWtPxl2xCdSoeepS07jW8UgcHNurfHvUzogEq5xk hu507c3BarVjyWCJOylMNR98Yd8VqD9UfmX0Hb8/BrA+Hl6/DB/eqGptrf4BSRwcZQM32aZK 7Pj2XbGWIUrZrd70x1eAP9QE3P79Y2oLrsCgbZJfEwCgvz9JjGmQqQkRiTVzlZVCJYcyGGsD /0tbFCzD2h20ahe8rC1gbb3K3qk+LpBtvjBu1RY9drYk0NymiGbJWZgab6t1jM7sk2vuf0Py O9Hf9XBmK0uE9IgMaiCpc32XV9oASz6UJebwkX+zF2jG5I1BfnO9g7KlotcA/v5ClMjgo6Gl MDY4HxoSRu3i1cqqSDtVlt+AOVBJBACrZcnHAUSuCXBPy0jOlBhxPqRWv6ND4c9PH1xjQ3NP nxJuMBS8rnNg22uyfAgmBKNLpLgAGVRMZGaGoJObGf72s6TeIqKJo/LtggAS9qAUiuKVnygo 3wjfkS9A3DRO+SpU7JqWdsveeIQyeyEJ/8PTowmSQLakF+3fote9ybzd880fSmFuIEJldWxp Y2ggPGpiZXVsaWNoQHN1c2UuY29tPsJgBBMRAgAgBQJZN5xEAhsDBgsJCAcDAgQVAggDBBYC AwECHgECF4AACgkQoDSui/t3IH4J+wCfQ5jHdEjCRHj23O/5ttg9r9OIruwAn3103WUITZee e7Sbg12UgcQ5lv7SzsFNBFk3nEQQCACCuTjCjFOUdi5Nm244F+78kLghRcin/awv+IrTcIWF hUpSs1Y91iQQ7KItirz5uwCPlwejSJDQJLIS+QtJHaXDXeV6NI0Uef1hP20+y8qydDiVkv6l IreXjTb7DvksRgJNvCkWtYnlS3mYvQ9NzS9PhyALWbXnH6sIJd2O9lKS1Mrfq+y0IXCP10eS FFGg+Av3IQeFatkJAyju0PPthyTqxSI4lZYuJVPknzgaeuJv/2NccrPvmeDg6Coe7ZIeQ8Yj t0ARxu2xytAkkLCel1Lz1WLmwLstV30g80nkgZf/wr+/BXJW/oIvRlonUkxv+IbBM3dX2OV8 AmRv1ySWPTP7AAMFB/9PQK/VtlNUJvg8GXj9ootzrteGfVZVVT4XBJkfwBcpC/XcPzldjv+3 HYudvpdNK3lLujXeA5fLOH+Z/G9WBc5pFVSMocI71I8bT8lIAzreg0WvkWg5V2WZsUMlnDL9 mpwIGFhlbM3gfDMs7MPMu8YQRFVdUvtSpaAs8OFfGQ0ia3LGZcjA6Ik2+xcqscEJzNH+qh8V m5jjp28yZgaqTaRbg3M/+MTbMpicpZuqF4rnB0AQD12/3BNWDR6bmh+EkYSMcEIpQmBM51qM EKYTQGybRCjpnKHGOxG0rfFY1085mBDZCH5Kx0cl0HVJuQKC+dV2ZY5AqjcKwAxpE75MLFkr wkkEGBECAAkFAlk3nEQCGwwACgkQoDSui/t3IH7nnwCfcJWUDUFKdCsBH/E5d+0ZnMQi+G0A nAuWpQkjM1ASeQwSHEeAWPgskBQL In-Reply-To: <8243b692-4895-420c-b2d0-27ee3b714732@suse.com> Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 7bit X-Spam-Status: No, score=-3016.1 required=5.0 tests=BAYES_00, DKIM_SIGNED, DKIM_VALID, DKIM_VALID_AU, DKIM_VALID_EF, RCVD_IN_DNSWL_NONE, SPF_HELO_NONE, SPF_NONE, TXREP shortcircuit=no autolearn=ham autolearn_force=no version=3.4.6 X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on sourceware.org X-BeenThere: binutils@sourceware.org X-Mailman-Version: 2.1.30 Precedence: list List-Id: Binutils mailing list <binutils.sourceware.org> List-Unsubscribe: <https://sourceware.org/mailman/options/binutils>, <mailto:binutils-request@sourceware.org?subject=unsubscribe> List-Archive: <https://sourceware.org/pipermail/binutils/> List-Post: <mailto:binutils@sourceware.org> List-Help: <mailto:binutils-request@sourceware.org?subject=help> List-Subscribe: <https://sourceware.org/mailman/listinfo/binutils>, <mailto:binutils-request@sourceware.org?subject=subscribe> Errors-To: binutils-bounces~patchwork=sourceware.org@sourceware.org |
| Series |
RISC-V: assorted fixes and (hopefully) improvements
|
|
Checks
| Context | Check | Description |
|---|---|---|
| linaro-tcwg-bot/tcwg_binutils_build--master-aarch64 | success | Build passed |
| linaro-tcwg-bot/tcwg_binutils_check--master-aarch64 | success | Test passed |
| linaro-tcwg-bot/tcwg_binutils_build--master-arm | success | Build passed |
| linaro-tcwg-bot/tcwg_binutils_check--master-arm | success | Test passed |
Commit Message
Jan Beulich
June 19, 2026, 11:53 a.m. UTC
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.
Comments
On 2026/6/19 19:53, Jan Beulich wrote: > 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 I tested the first-object path specifically. With the patch behavior reproduced, an input object containing a non-power-of-2 stack_align value, for example .attribute stack_align, 0x4444 emits the warning, and the ld -r output omits Tag_RISCV_stack_align entirely. The readelf shows this as Tag_RISCV_stack_align: 17476-bytes, It does not emit an explicit 0-byte stack alignment attribute. So setting out_attr[Tag_RISCV_stack_align].i = 0 appears to be sufficient to ignore the invalid value. I also checked the merge cases. invalid + valid16 and valid16 + invalid both emit the warning for the invalid object and keep the valid 16-byte stack alignment in the output. An explicit input .attribute stack_align, 0 is also omitted from the object, so zero behaves consistently as "unset" from the BFD merge point of view. The existing valid non-zero mismatch behavior is unchanged: linking 16-byte and 32-byte stack alignment objects still errors as before. Reviewed-by: Jiawei jiawei@iscas.ac.cn
--- 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