提交 9a68960d 编写于 作者: P Philippe Mathieu-Daudé 提交者: Laurent Vivier

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: NLaurent Vivier <laurent@vivier.eu>
Signed-off-by: NPhilippe Mathieu-Daudé <f4bug@amsat.org>
Reviewed-by: NLaurent Vivier <laurent@vivier.eu>
Message-Id: <20191021114857.20538-10-f4bug@amsat.org>
Signed-off-by: NLaurent Vivier <laurent@vivier.eu>
上级 42b15d70
......@@ -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 {
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册