This is the mail archive of the libc-alpha@sourceware.org mailing list for the glibc project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

[PATCH] fix bz #16169 - CFI directives missing from AArch64 clone.S


This fixes BZ #16169.

We noticed that gdb hung while backtracing a thread on AArch64, and
tracked it down to missing CFI directives in __clone.

I have no good way to test this patch.  However, in the bug, Ryan
Arnold indicated that he would.  I'm sending it now because Carlos
wrote in the bug:

> I strongly suggest Tom repost to libc-alpha and CC Marcus Shawcroft
> <marcus.shawcroft@linaro.org> for review since he can test it. Indicate that
> this is a bug and should be fixed before 2.19 goes out the door.

thanks,
Tom

---
 ports/ChangeLog                               | 6 ++++++
 ports/sysdeps/unix/sysv/linux/aarch64/clone.S | 5 +++++
 2 files changed, 11 insertions(+)

diff --git a/ports/ChangeLog b/ports/ChangeLog
index 4729471..ce02edd 100644
--- a/ports/ChangeLog
+++ b/ports/ChangeLog
@@ -1,3 +1,9 @@
+2014-01-16  Tom Tromey  <tromey@redhat.com>
+
+	[BZ #16169]
+	* sysdeps/unix/sysv/linux/aarch64/clone.S (__clone): Add CFI
+	directives.
+
 2013-10-30  Mike Frysinger  <vapier@gentoo.org>
 
 	* README: Change references to preconfigure.in to
diff --git a/ports/sysdeps/unix/sysv/linux/aarch64/clone.S b/ports/sysdeps/unix/sysv/linux/aarch64/clone.S
index 2ca8021..917c756 100644
--- a/ports/sysdeps/unix/sysv/linux/aarch64/clone.S
+++ b/ports/sysdeps/unix/sysv/linux/aarch64/clone.S
@@ -63,6 +63,7 @@ ENTRY(__clone)
 	mov	x8, #SYS_ify(clone)
 	/* X0:flags, x1:newsp, x2:parenttidptr, x3:newtls, x4:childtid.  */
 	svc	0x0
+	cfi_endproc
 	cmp	x0, #0
 	beq	2f
 	blt	3f
@@ -72,6 +73,8 @@ ENTRY(__clone)
 	b	syscall_error
 
 2:
+	cfi_startproc
+	cfi_undefined lr
 #ifdef RESET_PID
 	tbnz	x5, #CLONE_THREAD_BIT, 3f
 	mov	x0, #-1
@@ -93,7 +96,9 @@ ENTRY(__clone)
 
 	/* We are done, pass the return value through x0.  */
 	b	HIDDEN_JUMPTARGET(_exit)
+	cfi_endproc
 
+	cfi_startproc
 PSEUDO_END (__clone)
 
 weak_alias (__clone, clone)
-- 
1.8.1.4


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]