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]

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


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)
> 


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