net: fix build with gcc 4.4.7 and strict aliasing
authorMichael Qiu <michael.qiu@intel.com>
Thu, 4 Dec 2014 04:16:04 +0000 (12:16 +0800)
committerThomas Monjalon <thomas.monjalon@6wind.com>
Thu, 11 Dec 2014 00:42:02 +0000 (01:42 +0100)
commit2b039d5f20a34016ecaf9b26f8f8b6c4a81bf4b6
tree64c697981214f69aefcfcedca8bfe9aec1472a2e
parent42c035e7bbfe95f26ee4ddf2559b94f574974a86
net: fix build with gcc 4.4.7 and strict aliasing

include/rte_ip.h:161: error: dereferencing pointer ‘u16’
        does break strict-aliasing rules
include/rte_ip.h:157: note: initialized from here
        ...

The root cause is that, compile enable strict aliasing by default,
while in function rte_raw_cksum() try to convert 'const char *'
to 'const uint16_t *'.

This workaround is to solve the compile issue of GCC strict-aliasing (two
different type pointers should not be point to the same memory address).

For GCC 4.4.7 it will definitely occurs if  flags "-fstrict-aliasing"
and "-Wall" used.

Signed-off-by: Michael Qiu <michael.qiu@intel.com>
[Thomas: add workaround comment]
Acked-by: Thomas Monjalon <thomas.monjalon@6wind.com>
lib/librte_net/rte_ip.h