[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [PATCH for-5.2 1/3] linux-user/sparc: Fix errors in target_ucontext
From: |
Richard Henderson |
Subject: |
Re: [PATCH for-5.2 1/3] linux-user/sparc: Fix errors in target_ucontext structures |
Date: |
Thu, 5 Nov 2020 14:15:38 -0800 |
User-agent: |
Mozilla/5.0 (X11; Linux x86_64; rv:68.0) Gecko/20100101 Thunderbird/68.10.0 |
On 11/5/20 1:23 PM, Peter Maydell wrote:
> The various structs that make up the SPARC target_ucontext had some
> errors:
> * target structures must not include fields which are host pointers,
> which might be the wrong size. These should be abi_ulong instead
> * because we don't have the 'long double' part of the mcfpu_fregs
> union in our version of the target_mc_fpu struct, we need to
> manually force it to be 16-aligned
>
> In particular, the lack of 16-alignment caused sparc64_get_context()
> and sparc64_set_context() to read and write all the registers at the
> wrong offset, which triggered a guest glibc stack check in
> siglongjmp:
> *** longjmp causes uninitialized stack frame ***: terminated
> when trying to run bash.
Reviewed-by: Richard Henderson <richard.henderson@linaro.org>
> +} __attribute__((aligned(16)));
Hmph, 96 uses of the attribute directly, 20 uses of QEMU_ALIGNED. I suppose we
should just remove the wrapper...
r~