> From: dev [mailto:dev-boun...@dpdk.org] On Behalf Of Ferruh Yigit > Sent: Monday, 17 April 2017 16.36 > > clang 4 gives "taking address of packed member may result in an > unaligned pointer value" warnings in a few locations [1]. > > Disabled "-Waddress-of-packed-member" warning for clang >= 4 > > [1] build errors: > .../lib/librte_eal/common/eal_common_memzone.c:275:25: > error: taking address of packed member 'mlock' of class or structure > 'rte_mem_config' may result in an unaligned pointer value > [-Werror,-Waddress-of-packed-member] > rte_rwlock_write_lock(&mcfg->mlock); > ^~~~~~~~~~~ > > .../lib/librte_ip_frag/rte_ipv4_reassembly.c:139:31: > error: taking address of packed member 'src_addr' of class or structure > 'ipv4_hdr' may result in an unaligned pointer value > [-Werror,-Waddress-of-packed-member] > psd = (unaligned_uint64_t *)&ip_hdr->src_addr; > ^~~~~~~~~~~~~~~~ > > .../lib/librte_vhost/vhost_user.c:1037:34: > error: taking address of packed member 'payload' of class or structure > 'VhostUserMsg' may result in an unaligned pointer value > [-Werror,-Waddress-of-packed-member] > vhost_user_set_vring_num(dev, &msg.payload.state); > ^~~~~~~~~~~~~~~~~ > > Signed-off-by: Ferruh Yigit <ferruh.yi...@intel.com> > --- > mk/toolchain/clang/rte.vars.mk | 5 +++++ > 1 file changed, 5 insertions(+) > > diff --git a/mk/toolchain/clang/rte.vars.mk > b/mk/toolchain/clang/rte.vars.mk > index 7749b99..af34c10 100644 > --- a/mk/toolchain/clang/rte.vars.mk > +++ b/mk/toolchain/clang/rte.vars.mk > @@ -79,5 +79,10 @@ include > $(RTE_SDK)/mk/toolchain/$(RTE_TOOLCHAIN)/rte.toolchain-compat.mk > # workaround clang bug with warning "missing field initializer" for "= > {0}" > WERROR_FLAGS += -Wno-missing-field-initializers > > +# disable packed member unalign warnings > +ifeq ($(shell test $(CLANG_MAJOR_VERSION) -ge 4 && echo 1), 1) > +WERROR_FLAGS += -Wno-address-of-packed-member > +endif > + > export CC AS AR LD OBJCOPY OBJDUMP STRIP READELF > export TOOLCHAIN_CFLAGS TOOLCHAIN_LDFLAGS TOOLCHAIN_ASFLAGS > -- > 2.9.3 >
Revisiting an old patch... Maybe the code causing the warnings should have been fixed instead of disabling the compiler warning? We would probably handle this differently today... I wonder how many warnings it spews out with the warning enabled? -Morten