These patches fix the clang -Waddress-of-packed-member warnings in the slirp code. For slirp, the structs marked as packed are already naturally packed/aligned, so adding the 'packed' attribute doesn't change their layout but means the compiler has to assume they might be misaligned. Instead, for the structs which map to on-the-wire packet formats, we add build time assertions that they have the sizes we think they should.
The 'struct ipq' and 'struct ipasfrag' aren't on-the-wire packet representations, so it's not clear why they were marked packed in the first place. (They contain host pointers and so have a size that depends on the host.) Here we just assert the only thing that's documented as a layout restriction: that struct ipq's frag_link and struct ipasfrag's ipf_link are at the same offset. Together, this fixes all the -Waddress-of-packed-member warnings in slirp, which I think was the only set remaining without patches at least being on-list. (Some of the block/ warning fixes are still working their way through the relevant trees.) thanks -- PMM Peter Maydell (2): slirp: Avoid marking naturally packed structs as QEMU_PACKED slirp: Don't mark struct ipq or struct ipasfrag as packed slirp/ip.h | 7 +++++-- slirp/ip6.h | 12 ++++++++++-- slirp/ip6_icmp.h | 20 +++++++++++++++----- 3 files changed, 30 insertions(+), 9 deletions(-) -- 2.20.1