Wrong signal handling in qemu-aarch64.
Affects | Status | Importance | Assigned to | Milestone | |
---|---|---|---|---|---|
QEMU |
Fix Released
|
Undecided
|
Unassigned |
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/
$ qemu-aarch64 -L /home/max/
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/
#define TARGET_SI_PAD_SIZE ((TARGET_
In Kernel respective value is:
#define SI_PAD_SIZE ((SI_MAX_SIZE - __ARCH_
.......
#define __ARCH_
Trivial fix, changing TARGET_SI_PAD_SIZE to right value, is attached.
Changed in qemu: | |
status: | New → Fix Released |