qemu/linux-user
Jonathan Albrecht ccb5f2708f linux-user/s390x: signal with SIGFPE on compare-and-trap
Currently when a compare-and-trap instruction is executed, qemu will
always raise a SIGILL signal. On real hardware, a SIGFPE is raised.

Change the PGM_DATA case in cpu_loop to follow the behavior in
linux kernel /arch/s390/kernel/traps.c.
 * Only raise SIGILL if DXC == 0
 * If DXC matches a non-simulated IEEE exception, raise SIGFPE with
   correct si_code
 * Raise SIGFPE with si_code == 0 for everything else

When applied on 20210705210434.45824-2-iii@linux.ibm.com, this fixes
crashes in the java jdk such as the linked bug.

Signed-off-by: Jonathan Albrecht <jonathan.albrecht@linux.vnet.ibm.com>
Reviewed-by: Richard Henderson <richard.henderson@linaro.org>
Buglink: https://bugs.launchpad.net/qemu/+bug/1920913
Resolves: https://gitlab.com/qemu-project/qemu/-/issues/319
Message-Id: <20210709160459.4962-2-jonathan.albrecht@linux.vnet.ibm.com>
Signed-off-by: Thomas Huth <thuth@redhat.com>
2021-08-03 15:17:38 +02:00
..
aarch64 linux-user: update syscall_nr.h to Linux v5.13 2021-07-13 13:59:59 +02:00
alpha linux-user: update syscall.tbl to Linux v5.13 2021-07-13 13:59:59 +02:00
arm linux-user: update syscall.tbl to Linux v5.13 2021-07-13 13:59:59 +02:00
cris linux-user: Extract target errno to 'target_errno_defs.h' 2021-07-12 21:53:35 +02:00
generic linux-user: Extract target errno to 'target_errno_defs.h' 2021-07-12 21:53:35 +02:00
hexagon linux-user: update syscall_nr.h to Linux v5.13 2021-07-13 13:59:59 +02:00
host
hppa qemu/atomic: Add aligned_{int64,uint64}_t types 2021-07-21 07:45:38 -10:00
i386 linux-user: update syscall.tbl to Linux v5.13 2021-07-13 13:59:59 +02:00
m68k linux-user: update syscall.tbl to Linux v5.13 2021-07-13 13:59:59 +02:00
microblaze linux-user: update syscall.tbl to Linux v5.13 2021-07-13 13:59:59 +02:00
mips linux-user: update syscall.tbl to Linux v5.13 2021-07-13 13:59:59 +02:00
mips64 linux-user: update syscall.tbl to Linux v5.13 2021-07-13 13:59:59 +02:00
nios2 linux-user: update syscall_nr.h to Linux v5.13 2021-07-13 13:59:59 +02:00
openrisc linux-user: update syscall_nr.h to Linux v5.13 2021-07-13 13:59:59 +02:00
ppc linux-user: update syscall.tbl to Linux v5.13 2021-07-13 13:59:59 +02:00
riscv linux-user: update syscall_nr.h to Linux v5.13 2021-07-13 13:59:59 +02:00
s390x linux-user/s390x: signal with SIGFPE on compare-and-trap 2021-08-03 15:17:38 +02:00
sh4 linux-user: update syscall.tbl to Linux v5.13 2021-07-13 13:59:59 +02:00
sparc linux-user: update syscall.tbl to Linux v5.13 2021-07-13 13:59:59 +02:00
x86_64 linux-user: update syscall.tbl to Linux v5.13 2021-07-13 13:59:59 +02:00
xtensa linux-user: update syscall.tbl to Linux v5.13 2021-07-13 13:59:59 +02:00
cpu_loop-common.h
elfload.c linux-user/elfload: Implement ELF_HWCAP for RISC-V 2021-07-07 21:14:47 +02:00
errnos.c.inc linux-user: Simplify host <-> target errno conversion using macros 2021-07-12 21:53:35 +02:00
exit.c tcg/plugins: implement a qemu_plugin_user_exit helper 2021-07-23 17:22:16 +01:00
fd-trans.c fd-trans: Fix race condition on reallocation of the translation table. 2021-07-12 21:54:46 +02:00
fd-trans.h fd-trans: Fix race condition on reallocation of the translation table. 2021-07-12 21:54:46 +02:00
flat.h
flatload.c
ioctls.h
linux_loop.h
linuxload.c linux-user: Fix style problems in linuxload.c 2021-07-07 21:22:35 +02:00
main.c fd-trans: Fix race condition on reallocation of the translation table. 2021-07-12 21:54:46 +02:00
meson.build
mmap.c linux-user: Set CF_PARALLEL when mapping shared memory 2021-06-15 08:28:56 +02:00
qemu.h
safe-syscall.S linux-user: Extract target errno to 'target_errno_defs.h' 2021-07-12 21:53:35 +02:00
semihost.c
signal-common.h
signal.c linux-user: Let sigaction query SIGKILL/SIGSTOP 2021-06-20 16:21:01 +02:00
socket.h
strace.c
strace.list linux-user: Add copy_file_range to strace.list 2021-05-18 07:09:58 +02:00
syscall_defs.h linux-user: Extract target errno to 'target_errno_defs.h' 2021-07-12 21:53:35 +02:00
syscall_types.h
syscall.c linux-user/syscall: Remove unused variable from execve 2021-07-26 07:07:28 -10:00
target_flat.h
trace-events linux-user/trace-events: fix minor typo in format string 2021-06-17 16:09:11 +02:00
trace.h
uaccess.c
uname.c
uname.h
vm86.c