OSDN Git Service

linux-user: Fix epoll on ARM hosts
authorAlexander Graf <agraf@suse.de>
Sat, 6 Jul 2013 12:17:53 +0000 (14:17 +0200)
committerRiku Voipio <riku.voipio@linaro.org>
Tue, 23 Jul 2013 14:28:28 +0000 (17:28 +0300)
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 <agraf@suse.de>
Signed-off-by: Riku Voipio <riku.voipio@linaro.org>
linux-user/syscall_defs.h

index cb6341f..086fbff 100644 (file)
@@ -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;