[Toybox] [musl] Re: Not sure how to debug this one.

Valery Ushakov uwe at stderr.spb.ru
Sun Feb 18 04:55:36 PST 2024


On Sat, Feb 17, 2024 at 20:40:50 -0500, Rich Felker wrote:

> due to incorrect base address register when attempting to reload the
> saved value of r8, the caller's value of r8 was not preserved.
> ---
>  src/signal/sh/sigsetjmp.s | 2 +-
>  1 file changed, 1 insertion(+), 1 deletion(-)
> 
> diff --git a/src/signal/sh/sigsetjmp.s b/src/signal/sh/sigsetjmp.s
> index 1e2270be..f0f604e2 100644
> --- a/src/signal/sh/sigsetjmp.s
> +++ b/src/signal/sh/sigsetjmp.s
> @@ -27,7 +27,7 @@ __sigsetjmp:
>  
>  	mov.l 3f, r0
>  4:	braf r0
> -	 mov.l @(4+8,r4), r8
> +	 mov.l @(4+8,r6), r8
>  
>  9:	mov.l 5f, r0
>  6:	braf r0

That takes care of restoring caller's r8 for the first return from
sigsetjmp, but isn't there still the problem that the jump buffer
contains the wrong one, so on the second return from sigsetjmp the
caller will have clobbered r8?

Sorry for a drive-by reply.  I'll try to take a closer look in the
evening.


-uwe


More information about the Toybox mailing list