Le 24/01/2018 à 14:01, Philippe Mathieu-Daudé a écrit : > Signed-off-by: Philippe Mathieu-Daudé <f4...@amsat.org> > --- > please double check __pad and ntohl() > > linux-user/syscall_defs.h | 7 +++++++ > linux-user/strace.c | 34 ++++++++++++++++++++++++++++++++++ > 2 files changed, 41 insertions(+) > > diff --git a/linux-user/syscall_defs.h b/linux-user/syscall_defs.h > index bec3680b94..550e7d2939 100644 > --- a/linux-user/syscall_defs.h > +++ b/linux-user/syscall_defs.h > @@ -151,6 +151,13 @@ struct target_sockaddr_un { > uint8_t sun_path[108]; > }; > > +struct target_sockaddr_nl { > + uint16_t nl_family; /* AF_NETLINK */ > + int16_t __pad;
netlink.h uses an unsigned type here. > + uint32_t nl_pid; > + uint32_t nl_groups; > +}; > + > struct target_in_addr { > uint32_t s_addr; /* big endian */ > }; > diff --git a/linux-user/strace.c b/linux-user/strace.c > index bd897a3f20..7eb5e2ab48 100644 > --- a/linux-user/strace.c > +++ b/linux-user/strace.c > @@ -8,6 +8,7 @@ > #include <arpa/inet.h> > #include <netinet/tcp.h> > #include <linux/if_packet.h> > +#include <linux/netlink.h> > #include <sched.h> > #include "qemu.h" > > @@ -397,6 +398,12 @@ print_sockaddr(abi_ulong addr, abi_long addrlen) > gemu_log("}"); > break; > } > + case AF_NETLINK: { > + struct target_sockaddr_nl *nl = (struct target_sockaddr_nl *)sa; > + gemu_log("{nl_family=AF_NETLINK,nl_pid=%u,nl_groups=%u}", > + ntohl(nl->nl_pid), ntohl(nl->nl_groups)); Both sides of the netlink pipe are local and have the same endianness, so I don't think we need the ntohl() here. Moreover, I didn't find any endianness change in the kernel for them. Thanks, Laurent