aarch64: correct CFI in rawmemchr (bug 31113)

Message ID mvmfs0h7x03.fsf@suse.de
State Committed
Commit 3f798427884fa57770e8e2291cf58d5918254bb5
Headers
Series aarch64: correct CFI in rawmemchr (bug 31113) |

Checks

Context Check Description
redhat-pt-bot/TryBot-apply_patch success Patch applied to master at the time it was sent
redhat-pt-bot/TryBot-32bit success Build for i686
linaro-tcwg-bot/tcwg_glibc_build--master-aarch64 warning Patch is already merged
linaro-tcwg-bot/tcwg_glibc_build--master-arm warning Patch is already merged

Commit Message

Andreas Schwab Dec. 5, 2023, 10:40 a.m. UTC
  The .cfi_return_column directive changes the return column for the whole
FDE range.  But the actual intent is to tell the unwinder that the value
in x30 (lr) now resides in x15 after the move, and that is expressed by
the .cfi_register directive.
---
 sysdeps/aarch64/rawmemchr.S | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)
  

Comments

Szabolcs Nagy Dec. 5, 2023, 11:38 a.m. UTC | #1
The 12/05/2023 11:40, Andreas Schwab wrote:
> The .cfi_return_column directive changes the return column for the whole
> FDE range.  But the actual intent is to tell the unwinder that the value
> in x30 (lr) now resides in x15 after the move, and that is expressed by
> the .cfi_register directive.

this is ok to commit.

thanks.


> ---
>  sysdeps/aarch64/rawmemchr.S | 2 +-
>  1 file changed, 1 insertion(+), 1 deletion(-)
> 
> diff --git a/sysdeps/aarch64/rawmemchr.S b/sysdeps/aarch64/rawmemchr.S
> index efc4b7007b..1fff094215 100644
> --- a/sysdeps/aarch64/rawmemchr.S
> +++ b/sysdeps/aarch64/rawmemchr.S
> @@ -31,7 +31,7 @@ ENTRY (__rawmemchr)
>  
>  L(do_strlen):
>  	mov	x15, x30
> -	cfi_return_column (x15)
> +	cfi_register (x30, x15)
>  	mov	x14, x0
>  	bl	__strlen
>  	add	x0, x14, x0
> -- 
> 2.43.0
> 
> 
> -- 
> Andreas Schwab, SUSE Labs, schwab@suse.de
> GPG Key fingerprint = 0196 BAD8 1CE9 1970 F4BE  1748 E4D4 88E3 0EEA B9D7
> "And now for something completely different."
  

Patch

diff --git a/sysdeps/aarch64/rawmemchr.S b/sysdeps/aarch64/rawmemchr.S
index efc4b7007b..1fff094215 100644
--- a/sysdeps/aarch64/rawmemchr.S
+++ b/sysdeps/aarch64/rawmemchr.S
@@ -31,7 +31,7 @@  ENTRY (__rawmemchr)
 
 L(do_strlen):
 	mov	x15, x30
-	cfi_return_column (x15)
+	cfi_register (x30, x15)
 	mov	x14, x0
 	bl	__strlen
 	add	x0, x14, x0