about summary refs log tree commit diff
diff options
context:
space:
mode:
authorAndreas Schwab <schwab@suse.de>2023-11-23 18:23:46 +0100
committerWilco Dijkstra <wilco.dijkstra@arm.com>2024-04-08 16:24:55 +0100
commit882b7dc2ab90b3c1280b67aed792142a265d7595 (patch)
tree1b3a6c8dfb6f01c8287f1d9e14ecf221a942fb4e
parent3dcb8fde81acfc31e5887c0dac56da9bd34ae9db (diff)
downloadglibc-882b7dc2ab90b3c1280b67aed792142a265d7595.tar.gz
glibc-882b7dc2ab90b3c1280b67aed792142a265d7595.tar.xz
glibc-882b7dc2ab90b3c1280b67aed792142a265d7595.zip
aarch64: correct CFI in rawmemchr (bug 31113)
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.

(cherry picked from commit 3f798427884fa57770e8e2291cf58d5918254bb5)
-rw-r--r--sysdeps/aarch64/rawmemchr.S2
1 files changed, 1 insertions, 1 deletions
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