This is the mail archive of the
libc-alpha@sourceware.org
mailing list for the glibc project.
[PATCH] fix bz #16169 - CFI directives missing from AArch64 clone.S
- From: Tom Tromey <tromey at redhat dot com>
- To: libc-alpha at sourceware dot org
- Cc: marcus dot shawcroft at linaro dot org, Tom Tromey <tromey at redhat dot com>
- Date: Thu, 16 Jan 2014 13:31:06 -0700
- Subject: [PATCH] fix bz #16169 - CFI directives missing from AArch64 clone.S
- Authentication-results: sourceware.org; auth=none
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