diff options
| author | Peter Maydell <peter.maydell@linaro.org> | 2019-01-22 18:18:22 +0000 |
|---|---|---|
| committer | Samuel Thibault <samuel.thibault@ens-lyon.org> | 2019-02-07 15:49:08 +0200 |
| commit | aaa0c642b1de62d5a69b6d4bfdaa91e4b65c5518 (patch) | |
| tree | 03d43728a764d2b48c67ebc433ec18d672ad9160 | |
| parent | c74e3ae9c83750705abaa583b28741d349364561 (diff) | |
| download | focaccia-qemu-aaa0c642b1de62d5a69b6d4bfdaa91e4b65c5518.tar.gz focaccia-qemu-aaa0c642b1de62d5a69b6d4bfdaa91e4b65c5518.zip | |
slirp: Don't mark struct ipq or struct ipasfrag as packed
There is no reason to mark the struct ipq and struct ipasfrag as packed: they are naturally aligned anyway, and are not representing any on-the-wire packet format. Indeed they vary in size depending on the size of pointers on the host system, because the 'struct qlink' members include 'void *' fields. Dropping the 'packed' annotation fixes clang -Waddress-of-packed-member warnings and probably lets the compiler generate better code too. The only thing we do care about in the layout of the struct is that the frag_link matches up with the ipf_link of the struct ipasfrag, as documented in the comment on that struct; assert at build time that this is the case. Signed-off-by: Peter Maydell <peter.maydell@linaro.org> Reviewed-by: Eric Blake <eblake@redhat.com> Signed-off-by: Samuel Thibault <samuel.thibault@ens-lyon.org>
| -rw-r--r-- | slirp/ip.h | 7 |
1 files changed, 5 insertions, 2 deletions
diff --git a/slirp/ip.h b/slirp/ip.h index 243b6c8b24..20614f3b53 100644 --- a/slirp/ip.h +++ b/slirp/ip.h @@ -217,7 +217,7 @@ struct ipq { uint8_t ipq_p; /* protocol of this fragment */ uint16_t ipq_id; /* sequence id for reassembly */ struct in_addr ipq_src,ipq_dst; -} QEMU_PACKED; +}; /* * Ip header, when holding a fragment. @@ -227,7 +227,10 @@ struct ipq { struct ipasfrag { struct qlink ipf_link; struct ip ipf_ip; -} QEMU_PACKED; +}; + +QEMU_BUILD_BUG_ON(offsetof(struct ipq, frag_link) != + offsetof(struct ipasfrag, ipf_link)); #define ipf_off ipf_ip.ip_off #define ipf_tos ipf_ip.ip_tos |