linux-user/s390x: Fix unwinding from signal handlers

Commit 31330e6cec ("linux-user/s390x: Implement setup_sigtramp")
removed an unused field from rt_sigframe, disturbing offsets of other
fields and breaking unwinding from signal handlers (e.g. libgcc's
s390_fallback_frame() relies on this struct having a specific layout).
Restore the field and add a comment.

Reported-by: Ulrich Weigand <ulrich.weigand@de.ibm.com>
Signed-off-by: Ilya Leoshkevich <iii@linux.ibm.com>
Fixes: 31330e6cec ("linux-user/s390x: Implement setup_sigtramp")
Reviewed-by: David Hildenbrand <david@redhat.com>
Reviewed-by: Richard Henderson <richard.henderson@linaro.org>
Message-Id: <20220503225157.1696774-2-iii@linux.ibm.com>
Signed-off-by: Laurent Vivier <laurent@vivier.eu>
This commit is contained in:
Ilya Leoshkevich 2022-05-04 00:51:56 +02:00 committed by Laurent Vivier
parent 0effdc29b5
commit 9a12adc704

View File

@ -84,6 +84,11 @@ struct target_ucontext {
typedef struct { typedef struct {
uint8_t callee_used_stack[__SIGNAL_FRAMESIZE]; uint8_t callee_used_stack[__SIGNAL_FRAMESIZE];
/*
* This field is no longer initialized by the kernel, but it's still a part
* of the ABI.
*/
uint16_t svc_insn;
struct target_siginfo info; struct target_siginfo info;
struct target_ucontext uc; struct target_ucontext uc;
} rt_sigframe; } rt_sigframe;