On 10/25/19 8:47 AM, Laurent Vivier wrote: > Le 25/10/2019 à 13:39, Richard Henderson a écrit : >> Instructions are always 4 bytes; use uint32_t not abi_ulong. >> >> Signed-off-by: Richard Henderson <[email protected]> >> --- >> linux-user/sparc/signal.c | 4 ++-- >> 1 file changed, 2 insertions(+), 2 deletions(-) >> >> diff --git a/linux-user/sparc/signal.c b/linux-user/sparc/signal.c >> index efb0df7e2b..ecfdf937e4 100644 >> --- a/linux-user/sparc/signal.c >> +++ b/linux-user/sparc/signal.c >> @@ -87,7 +87,7 @@ struct target_signal_frame { >> struct sparc_stackf ss; >> __siginfo_t info; >> abi_ulong fpu_save; >> - abi_ulong insns[2] __attribute__ ((aligned (8))); >> + uint32_t insns[2] __attribute__ ((aligned (8))); >> abi_ulong extramask[TARGET_NSIG_WORDS - 1]; >> abi_ulong extra_size; /* Should be 0 */ >> qemu_siginfo_fpu_t fpu_state; >> @@ -98,7 +98,7 @@ struct target_rt_signal_frame { >> abi_ulong regs[20]; >> sigset_t mask; >> abi_ulong fpu_save; >> - unsigned int insns[2]; >> + uint32_t insns[2]; >> stack_t stack; >> unsigned int extra_size; /* Should be 0 */ >> qemu_siginfo_fpu_t fpu_state; >> > > This definition is used by sparc and sparc64 (sparc64/signal.c includes > sparc/signal.c), so the definition was valid before your changes for > sparc and not good for sparc64. Moreover rt_signal_frame for sparc64 > doesn't look like this one (and signal_frame doesn't exist).
You're right that target_rt_signal_frame isn't correct for sparc64. But we also don't implement setup_rt_frame yet, so it's also currently unused. What's here is just good enough to make setup_frame work, and that is correct for both sparc and sparc64. r~
