about summary refs log tree commit diff
diff options
context:
space:
mode:
authorAndreas Schwab <schwab@suse.de>2023-11-23 18:23:46 +0100
committerAndreas Schwab <schwab@suse.de>2023-12-05 12:49:37 +0100
commit3f798427884fa57770e8e2291cf58d5918254bb5 (patch)
tree0ce0e1bb7655d89dabfe13620727a8de0bc200c2
parent63d0a35d5f223a3f4b68190567b7d4d44545bce5 (diff)
downloadglibc-3f798427884fa57770e8e2291cf58d5918254bb5.tar.gz
glibc-3f798427884fa57770e8e2291cf58d5918254bb5.tar.xz
glibc-3f798427884fa57770e8e2291cf58d5918254bb5.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.
-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