** Changed in: qemu Status: New => Fix Released -- You received this bug notification because you are a member of qemu- devel-ml, which is subscribed to QEMU. https://bugs.launchpad.net/bugs/1416988
Title: Wrong signal handling in qemu-aarch64. Status in QEMU: Fix Released Bug description: Running GCC 5.0 testsuite under qemu-aarch64, I noticed that tests connected with stack unwinding fail with: qemu: uncaught target signal 11 (Segmentation fault) - core dumped or run into infinite loop. Here is one example: $ /home/max/build/gcc-aarch64/gcc/xgcc -B/home/max/build/gcc- aarch64/gcc/ /home/max/src/toolchain/gcc/gcc/testsuite/gcc.dg/cleanup-11.c -fexceptions -fnon-call-exceptions -O2 -lm -o ./cleanup-11.exe $ qemu-aarch64 -L /home/max/install/aarch64/aarch64-linux/sys-root/ -R 0 -/cleanup-11.exe qemu: uncaught target signal 11 (Segmentation fault) - core dumped. Actually, this caused by ABI incompatibility between Linux Kernel (trunk) and qemu-aarch64. In fact, size of siginfo structure in Linux and target_siginfo structure in qemu-aarch64 differ: sizeof (struct target_siginfo) = 136 // QEMU sizeof (struct siginfo) = 128 // Linux Kernel This caused by wrong TARGET_SI_PAD_SIZE defined in linux-user/syscall_defs.h: #define TARGET_SI_PAD_SIZE ((TARGET_SI_MAX_SIZE/sizeof(int)) - 3) In Kernel respective value is: #define SI_PAD_SIZE ((SI_MAX_SIZE - __ARCH_SI_PREAMBLE_SIZE) / sizeof(int)) ............................................. #define __ARCH_SI_PREAMBLE_SIZE (4 * sizeof(int)) // for Aarch64 Trivial fix, changing TARGET_SI_PAD_SIZE to right value, is attached. To manage notifications about this bug go to: https://bugs.launchpad.net/qemu/+bug/1416988/+subscriptions