This is the mail archive of the
libc-alpha@sourceware.org
mailing list for the glibc project.
Re: [PATCH] fix bz #16169 - CFI directives missing from AArch64 clone.S
- From: "Carlos O'Donell" <carlos at redhat dot com>
- To: marcus dot shawcroft at linaro dot org
- Cc: Tom Tromey <tromey at redhat dot com>, libc-alpha at sourceware dot org
- Date: Thu, 16 Jan 2014 20:40:56 -0500
- Subject: Re: [PATCH] fix bz #16169 - CFI directives missing from AArch64 clone.S
- Authentication-results: sourceware.org; auth=none
- References: <1389904266-22061-1-git-send-email-tromey at redhat dot com>
On 01/16/2014 03:31 PM, Tom Tromey wrote:
> 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.
Marcus,
Do you have time to review this before 2.19 releases?
> 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)
>