Le 21/10/2019 à 13:48, Philippe Mathieu-Daudé a écrit : > Target architectures align types differently for instance m68k > aligns on 16bit whereas others on 32bit). > Use ABI types to keep alignments good. > > Suggested-by: Laurent Vivier <laur...@vivier.eu> > Signed-off-by: Philippe Mathieu-Daudé <f4...@amsat.org> > --- > v8: Use abi_int for target_sockaddr_ll.sll_ifindex > --- > linux-user/syscall_defs.h | 34 +++++++++++++++++----------------- > 1 file changed, 17 insertions(+), 17 deletions(-) > > diff --git a/linux-user/syscall_defs.h b/linux-user/syscall_defs.h > index 7694d72446..98c2119de9 100644 > --- a/linux-user/syscall_defs.h > +++ b/linux-user/syscall_defs.h > @@ -134,22 +134,22 @@ > #define TARGET_IOWRU(type,nr) > TARGET_IOC(TARGET_IOC_READ|TARGET_IOC_WRITE,(type),(nr),TARGET_IOC_SIZEMASK) > > struct target_sockaddr { > - uint16_t sa_family; > + abi_ushort sa_family; > uint8_t sa_data[14]; > }; > > struct target_sockaddr_ll { > - uint16_t sll_family; /* Always AF_PACKET */ > - uint16_t sll_protocol; /* Physical layer protocol */ > - int sll_ifindex; /* Interface number */ > - uint16_t sll_hatype; /* ARP hardware type */ > - uint8_t sll_pkttype; /* Packet type */ > - uint8_t sll_halen; /* Length of address */ > - uint8_t sll_addr[8]; /* Physical layer address */ > + abi_ushort sll_family; /* Always AF_PACKET */ > + abi_ushort sll_protocol; /* Physical layer protocol */ > + abi_int sll_ifindex; /* Interface number */ > + abi_ushort sll_hatype; /* ARP hardware type */ > + uint8_t sll_pkttype; /* Packet type */ > + uint8_t sll_halen; /* Length of address */ > + uint8_t sll_addr[8]; /* Physical layer address */ > }; > > struct target_sockaddr_un { > - uint16_t su_family; > + abi_ushort su_family; > uint8_t sun_path[108]; > }; > > @@ -161,24 +161,24 @@ struct target_sockaddr_nl { > }; > > struct target_in_addr { > - uint32_t s_addr; /* big endian */ > + abi_uint s_addr; /* big endian */ > }; > > struct target_sockaddr_in { > - uint16_t sin_family; > - int16_t sin_port; /* big endian */ > + abi_ushort sin_family; > + abi_short sin_port; /* big endian */ > struct target_in_addr sin_addr; > uint8_t __pad[sizeof(struct target_sockaddr) - > - sizeof(uint16_t) - sizeof(int16_t) - > + sizeof(abi_ushort) - sizeof(abi_short) - > sizeof(struct target_in_addr)]; > }; > > struct target_sockaddr_in6 { > - uint16_t sin6_family; > - uint16_t sin6_port; /* big endian */ > - uint32_t sin6_flowinfo; /* big endian */ > + abi_ushort sin6_family; > + abi_ushort sin6_port; /* big endian */ > + abi_uint sin6_flowinfo; /* big endian */ > struct in6_addr sin6_addr; /* IPv6 address, big endian */ > - uint32_t sin6_scope_id; > + abi_uint sin6_scope_id; > }; > > struct target_sock_filter { >
Applied to my linux-user branch. Thanks, Laurent