qemu-s390x puts a wrong value into SIGILL's siginfo_t's psw.addr: it should be a pointer to the instruction following the illegal instruction, but at the moment it is a pointer to the illegal instruction itself. This breaks OpenJDK, which relies on this value.
Patch 1 fixes the issue, patch 2 adds a test. Ilya Leoshkevich (2): target/s390x: Fix SIGILL psw.addr reporting tests/tcg/s390x: Test SIGILL handling linux-user/s390x/cpu_loop.c | 6 ++- target/s390x/excp_helper.c | 69 ++++++++++++++++++--------------- target/s390x/internal.h | 1 + tests/tcg/s390x/Makefile.target | 1 + tests/tcg/s390x/sigill.c | 41 ++++++++++++++++++++ 5 files changed, 85 insertions(+), 33 deletions(-) create mode 100644 tests/tcg/s390x/sigill.c -- 2.31.1