Openembedded Core Discussions
 help / color / mirror / Atom feed
From: Gyorgy Sarvari <skandigraun@gmail.com>
To: sundeep.kokkonda@windriver.com, openembedded-core@lists.openembedded.org
Cc: randy.macleod@windriver.com, steve@sakoman.com
Subject: Re: [OE-core] [kirkstone][PATCH] gcc: AArch64 - Fix strict-align cpymem/setmem
Date: Wed, 21 May 2025 11:53:56 +0200	[thread overview]
Message-ID: <eb760092-3915-4133-8f19-c0b6b7dd6743@gmail.com> (raw)
In-Reply-To: <20250521090916.974418-1-sundeep.kokkonda@windriver.com>

On 5/21/25 11:09, Sundeep KOKKONDA via lists.openembedded.org wrote:
> From: Sundeep KOKKONDA <sundeep.kokkonda@windriver.com>
>
> The cpymemdi/setmemdi implementation doesn't fully support strict alignment.
> Block the expansion if the alignment is less than 16 with STRICT_ALIGNMENT.
> Clean up the condition when to use MOPS. (PR103100)
>
> Upstream-Status: Backport [https://gcc.gnu.org/cgit/gcc/commit/?id=b9d16d8361a9e3a82a2f21e759e760d235d43322]
Is this a partial backport of the commit?
I wouldn't expect the backported patch to match the original 1-to-1, but
the original commit also contains some changes of the machine
description, which is missing from this patch. Is that not required?
>
> Signed-off-by: Sundeep KOKKONDA <sundeep.kokkonda@windriver.com>
> ---
>  meta/recipes-devtools/gcc/gcc-11.5.inc        |  1 +
>  ...rch64-fix-strict-align-cpymem-setmem.patch | 45 +++++++++++++++++++
>  2 files changed, 46 insertions(+)
>  create mode 100644 meta/recipes-devtools/gcc/gcc/0032-gcc-aarch64-fix-strict-align-cpymem-setmem.patch
>
> diff --git a/meta/recipes-devtools/gcc/gcc-11.5.inc b/meta/recipes-devtools/gcc/gcc-11.5.inc
> index f17ec9da5c..1e8371b2bd 100644
> --- a/meta/recipes-devtools/gcc/gcc-11.5.inc
> +++ b/meta/recipes-devtools/gcc/gcc-11.5.inc
> @@ -60,6 +60,7 @@ SRC_URI = "\
>             file://0029-Fix-install-path-of-linux64.h.patch \
>             file://0030-rust-recursion-limit.patch \
>             file://0031-gcc-sanitizers-fix.patch \
> +           file://0032-gcc-aarch64-fix-strict-align-cpymem-setmem.patch \
>             file://0001-CVE-2021-42574.patch \
>             file://0002-CVE-2021-42574.patch \
>             file://0003-CVE-2021-42574.patch \
> diff --git a/meta/recipes-devtools/gcc/gcc/0032-gcc-aarch64-fix-strict-align-cpymem-setmem.patch b/meta/recipes-devtools/gcc/gcc/0032-gcc-aarch64-fix-strict-align-cpymem-setmem.patch
> new file mode 100644
> index 0000000000..4c2d827799
> --- /dev/null
> +++ b/meta/recipes-devtools/gcc/gcc/0032-gcc-aarch64-fix-strict-align-cpymem-setmem.patch
> @@ -0,0 +1,45 @@
> +gcc: AArch64 - Fix strict-align cpymem/setmem
> +
> +The cpymemdi/setmemdi implementation doesn't fully support strict alignment.
> +Block the expansion if the alignment is less than 16 with STRICT_ALIGNMENT.
> +Clean up the condition when to use MOPS.
> +
> +Upstream-Status: Backport [https://gcc.gnu.org/cgit/gcc/commit/?id=b9d16d8361a9e3a82a2f21e759e760d235d43322]
> +
> +Signed-off-by: Wilco Dijkstra <wilco.dijkstra@arm.com>
> +Signed-off-by: Sundeep KOKKONDA <sundeep.kokkonda@windriver.com>
> +---
> +--- a/gcc/config/aarch64/aarch64.c	2025-05-08 20:40:10.969865898 -0700
> ++++ b/gcc/config/aarch64/aarch64.c	2025-05-13 23:11:07.006796627 -0700
> +@@ -23621,14 +23621,15 @@
> +   int mode_bits;
> +   rtx dst = operands[0];
> +   rtx src = operands[1];
> ++  unsigned align = UINTVAL (operands[3]);
> +   rtx base;
> +   machine_mode cur_mode = BLKmode;
> + 
> +   /* Only expand fixed-size copies.  */
> +-  if (!CONST_INT_P (operands[2]))
> ++  if (!CONST_INT_P (operands[2]) || (STRICT_ALIGNMENT && align < 16))
> +     return false;
> + 
> +-  unsigned HOST_WIDE_INT size = INTVAL (operands[2]);
> ++  unsigned HOST_WIDE_INT size = UINTVAL (operands[2]);
> + 
> +   /* Inline up to 256 bytes when optimizing for speed.  */
> +   unsigned HOST_WIDE_INT max_copy_size = 256;
> +@@ -23750,11 +23751,12 @@
> +   unsigned HOST_WIDE_INT len;
> +   rtx dst = operands[0];
> +   rtx val = operands[2], src;
> ++  unsigned align = UINTVAL (operands[3]);
> +   rtx base;
> +   machine_mode cur_mode = BLKmode, next_mode;
> + 
> +   /* We can't do anything smart if the amount to copy is not constant.  */
> +-  if (!CONST_INT_P (operands[1]))
> ++  if (!CONST_INT_P (operands[1]) || (STRICT_ALIGNMENT && align < 16))
> +     return false;
> + 
> +   bool speed_p = !optimize_function_for_size_p (cfun);
>
> -=-=-=-=-=-=-=-=-=-=-=-
> Links: You receive all messages sent to this group.
> View/Reply Online (#217009): https://lists.openembedded.org/g/openembedded-core/message/217009
> Mute This Topic: https://lists.openembedded.org/mt/113226173/6084445
> Group Owner: openembedded-core+owner@lists.openembedded.org
> Unsubscribe: https://lists.openembedded.org/g/openembedded-core/unsub [skandigraun@gmail.com]
> -=-=-=-=-=-=-=-=-=-=-=-
>



  reply	other threads:[~2025-05-21  9:54 UTC|newest]

Thread overview: 4+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2025-05-21  9:09 [kirkstone][PATCH] gcc: AArch64 - Fix strict-align cpymem/setmem sundeep.kokkonda
2025-05-21  9:53 ` Gyorgy Sarvari [this message]
2025-05-21 10:29   ` [OE-core] " Sundeep KOKKONDA
2025-05-21 10:38     ` Gyorgy Sarvari

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=eb760092-3915-4133-8f19-c0b6b7dd6743@gmail.com \
    --to=skandigraun@gmail.com \
    --cc=openembedded-core@lists.openembedded.org \
    --cc=randy.macleod@windriver.com \
    --cc=steve@sakoman.com \
    --cc=sundeep.kokkonda@windriver.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox