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 17:33:57 +0100
commit9112cda4c62e8a410be775045d5d307ebb48f0fe (patch)
treeee7a65a54d23a36bba09086bc98c3be1ff4963f6
parent153012dda27dc9ad08b63769004745b0dfae17be (diff)
downloadglibc-9112cda4c62e8a410be775045d5d307ebb48f0fe.tar.gz
glibc-9112cda4c62e8a410be775045d5d307ebb48f0fe.tar.xz
glibc-9112cda4c62e8a410be775045d5d307ebb48f0fe.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 55d9e34d4f..f90ce2bf86 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