S/390: Fix layout of struct sigaction_t
authorStefan Liebler <stli@linux.ibm.com>
Tue, 7 Apr 2020 14:14:40 +0000 (16:14 +0200)
committerAndreas Krebbel <krebbel@linux.ibm.com>
Tue, 7 Apr 2020 14:15:28 +0000 (16:15 +0200)
commit434fe1a4092e12e5b518ef0716dc5b315e06118d
treeaddde037c62ab6a59337afb4e75f5537c6deb7d2
parent23f1f679141bbb4720ca195cb758605dc017b7fd
S/390: Fix layout of struct sigaction_t

The ordering of some fields in  struct sigaction on s390x (64bit)
differs compared to s390 and other architectures.
This patch adjusts this order according to the definition of
<glibc-src>/sysdeps/unix/sysv/linux/s390/bits/sigaction.h

Without this fix e.g. the call
sigaction( suspendSignalNumber, &sigusr1, null ) in thread.d
leads to setting the sa_restorer field to 0xffffffffffffffff.
In case a signal, the signal handler returns to this address
and the process stops with a SIGILL.

This was observable in several execution testcases on s390x:
libphobos.druntime/core/thread.d
libphobos.druntime_shared/core/thread.d
libphobos.thread/tlsgc_sections.d
libphobos.allocations/tls_gc_integration.d
libphobos.phobos/std/parallelism.d
libphobos.phobos_shared/std/parallelism.d
libphobos.shared/host.c
libphobos.shared/linkD.c
libphobos.shared/linkDR.c
libphobos.shared/link_linkdep.d
libphobos.shared/load.d
libphobos.shared/loadDR.c
libphobos.shared/load_linkdep.d
libphobos.shared/load_loaddep.d

libphobos/ChangeLog:

2020-04-07  Stefan Liebler  <stli@linux.ibm.com>

* libdruntime/core/sys/posix/signal.d:
Add struct sigaction_t for SystemZ.
libphobos/ChangeLog
libphobos/libdruntime/core/sys/posix/signal.d