[PATCH] arm: mark __startcontext as .cantunwind

Florian Weimer fweimer@redhat.com
Mon Aug 15 12:45:00 GMT 2016


On 08/15/2016 02:37 PM, Andreas Schwab wrote:
> __startcontext marks the bottom of the call stack of the contexts created
> by makecontext.
>
> 	[BZ #20435]
> 	* sysdeps/unix/sysv/linux/arm/setcontext.S (__startcontext): Mark
> 	as .cantunwind.
> ---
>  sysdeps/unix/sysv/linux/arm/setcontext.S | 7 +++++++
>  1 file changed, 7 insertions(+)
>
> diff --git a/sysdeps/unix/sysv/linux/arm/setcontext.S b/sysdeps/unix/sysv/linux/arm/setcontext.S
> index 603e508..d1f168f 100644
> --- a/sysdeps/unix/sysv/linux/arm/setcontext.S
> +++ b/sysdeps/unix/sysv/linux/arm/setcontext.S
> @@ -86,12 +86,19 @@ weak_alias(__setcontext, setcontext)
>
>  	/* Called when a makecontext() context returns.  Start the
>  	   context in R4 or fall through to exit().  */
> +	/* Unwind descriptors are looked up based on PC - 2, so we have to
> +	   make sure to mark the instruction preceding the __startcontext
> +	   label as .cantunwind.  */
> +	.fnstart
> +	.cantunwind
> +	nop

Why isn't the PC - 2 kludge needed for the other .cantunwind cases?

Would it be possible to add a C test case to the glibc testsuite?

Thanks,
Florian



More information about the Libc-alpha mailing list