[dpdk-dev] Red Hat 6.5 compilation failure

Neil Horman nhorman at tuxdriver.com
Mon Oct 31 15:16:30 CET 2016


On Mon, Oct 31, 2016 at 11:43:18AM +0100, Nélio Laranjeiro wrote:
> Hi all,
> 
> Am facing an issue with compilation on redhat 6.5 of DPDK v16.11-rc2,
> compilation fails with:
> 
>   cc1: warnings being treated as errors
>   /root/dpdk/drivers/net/i40e/i40e_ethdev_vf.c: In function ‘i40evf_dev_interrupt_handler’:
>   /root/dpdk/drivers/net/i40e/i40e_ethdev_vf.c:1391: error: dereferencing pointer ‘v_msg’ does break strict-aliasing rules
>   /root/dpdk/drivers/net/i40e/i40e_ethdev_vf.c:1397: error: dereferencing pointer ‘v_msg’ does break strict-aliasing rules
>   /root/dpdk/drivers/net/i40e/i40e_ethdev_vf.c:1398: error: dereferencing pointer ‘v_msg’ does break strict-aliasing rules
>   /root/dpdk/drivers/net/i40e/i40e_ethdev_vf.c:1376: note: initialized from here
> 
> 
>   cc1: warnings being treated as errors
>   /root/dpdk/drivers/net/bnxt/bnxt_hwrm.c: In function ‘bnxt_hwrm_func_driver_unregister’:
>   /root/dpdk/drivers/net/bnxt/bnxt_hwrm.c:105: error: dereferencing pointer ‘req’ does break strict-aliasing rules
>   /root/dpdk/drivers/net/bnxt/bnxt_hwrm.c:66: note: initialized from here
> 
> 
>   cc1: warnings being treated as errors
>   /root/dpdk/drivers/net/qede/base/ecore_mcp.c: In function ‘ecore_mcp_nvm_rd_cmd’:
>   /root/dpdk/build/include/rte_memcpy.h:740: error: array subscript is above array bounds
>   /root/dpdk/drivers/net/qede/base/ecore_mcp.c: In function ‘ecore_mcp_nvm_wr_cmd’:
>   /root/dpdk/build/include/rte_memcpy.h:740: error: array subscript is above array bounds
>   At top level:
>   cc1: error: unrecognized command line option "-Wno-maybe-uninitialized"
>   cc1: error: unrecognized command line option "-Wno-maybe-uninitialized"
>   cc1: error: unrecognized command line option "-Wno-maybe-uninitialized"
>   cc1: error: unrecognized command line option "-Wno-maybe-uninitialized"
>   cc1: error: unrecognized command line option "-Wno-maybe-uninitialized"
>   cc1: error: unrecognized command line option "-Wno-maybe-uninitialized"
>   cc1: error: unrecognized command line option "-Wno-maybe-uninitialized"
>   cc1: error: unrecognized command line option "-Wno-maybe-uninitialized"
>   cc1: error: unrecognized command line option "-Wno-maybe-uninitialized"
>   cc1: error: unrecognized command line option "-Wno-maybe-uninitialized"
>   cc1: error: unrecognized command line option "-Wno-maybe-uninitialized"
>   cc1: error: unrecognized command line option "-Wno-maybe-uninitialized"
>   cc1: error: unrecognized command line option "-Wno-maybe-uninitialized"
>   cc1: error: unrecognized command line option "-Wno-maybe-uninitialized"
> 
> In doc/guides/rel_notes/supported_os.rst we still support
> "Red Hat Enterprise Linux 6.5".
> 
Most of these errors stems from the fact that in i40e there is alot of casting
from structs which lay out data in typed members to structs which have flat
memory buffers, which can cause problems if the alignment of the former isn't
what you expect.  You can disable strict aliasing if you want, but its a much
better idea to fix it properly.

The subscript above array options is pretty straightforward.  rte_memcpy has
a case statement that blocks memory copies to be more efficient.  I would
presume that there is a call site for a ecore read operation where the buffer
array is smaller than the number of bytes copied, and the compiler noticed.

> Do we still want to support it, or should we update the documentation to
> remove it?
> 
I think support probably doesn't matter, but regardless of that decision, you
should likely look a bit more closely at these errors.

Neil

> Regards,
> 
> -- 
> Nélio Laranjeiro
> 6WIND
> 


More information about the dev mailing list