mirror of https://github.com/xemu-project/xemu.git
linux-user/syscall: Align target_sockaddr fields using ABI types
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 <laurent@vivier.eu> Signed-off-by: Philippe Mathieu-Daudé <f4bug@amsat.org> Reviewed-by: Laurent Vivier <laurent@vivier.eu> Message-Id: <20191021114857.20538-10-f4bug@amsat.org> Signed-off-by: Laurent Vivier <laurent@vivier.eu>
This commit is contained in:
parent
42b15d70cf
commit
9a68960d8e
|
@ -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 {
|
||||
|
|
Loading…
Reference in New Issue