From: Alexander Graf <ag...@suse.de> The epoll emulation uses data structures without packing them, so the compiler might choose to add padding inside.
This patch makes the most offending one (target_epoll_event) a packed structure to make sure we don't pad it by accident. ARM would pad it, so declare the padding mandatory for ARM targets. This fixes i386-on-ARM epoll emulation for me. Signed-off-by: Alexander Graf <ag...@suse.de> Signed-off-by: Riku Voipio <riku.voi...@linaro.org> --- linux-user/syscall_defs.h | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/linux-user/syscall_defs.h b/linux-user/syscall_defs.h index cb6341f..086fbff 100644 --- a/linux-user/syscall_defs.h +++ b/linux-user/syscall_defs.h @@ -2459,8 +2459,11 @@ typedef union target_epoll_data { struct target_epoll_event { uint32_t events; +#ifdef TARGET_ARM + uint32_t __pad; +#endif target_epoll_data_t data; -}; +} QEMU_PACKED; #endif struct target_rlimit64 { uint64_t rlim_cur; -- 1.8.1.2