[SLOF] [PATCH] libnet: Fix compiler warnings with GCC 9

Cornelia Huck cohuck at redhat.com
Fri Sep 20 20:21:33 AEST 2019


On Thu, 19 Sep 2019 19:48:59 +0200
Thomas Huth <thuth at redhat.com> wrote:

> When compiling the libnet code with GCC 9, there are some new
> compiler warnings popping up now:
> 
> ipv6.c: In function ‘handle_ipv6’:
> ipv6.c:152:21: warning: taking address of packed member of ‘struct ip6hdr’
>  may result in an unaligned pointer value [-Waddress-of-packed-member]
>   152 |  if (! find_ip6addr(&(ip6->dst)))
>       |                     ^~~~~~~~~~~
> ipv6.c: In function ‘ip6_checksum’:
> ipv6.c:455:2: warning: converting a packed ‘struct ip6hdr’ pointer
>  (alignment 1) to a ‘short unsigned int’ pointer (alignment 2) may result
>  in an unaligned pointer value [-Waddress-of-packed-member]
>   455 |  pip6h = (unsigned short *) &pseudo_ip6h;
>       |  ^~~~~
> In file included from ipv6.c:21:
> ipv6.h:86:8: note: defined here
>    86 | struct ip6hdr {
>       |        ^~~~~~
> ipv6.c:522:8: warning: converting a packed ‘struct icmp6hdr’ pointer
>  (alignment 1) to a ‘short unsigned int’ pointer (alignment 2) may result
>  in an unaligned pointer value [-Waddress-of-packed-member]
>   522 |        ip6h->pl >> 1);
>       |        ^~~~
> In file included from ipv6.c:22:
> icmpv6.h:123:8: note: defined here
>   123 | struct icmp6hdr {
>       |        ^~~~~~~~
> etc.
> 
> The entries in struct ip6hdr are naturally aligned, so we can simply
> drop the __attribute__ ((packed)) here and use a _Static_assert() for
> the correct size instead.
> icmp6hdr is a more complex struct since it contains a union of
> packed structs, but the entries before the union are naturally aligned,
> too, so we can silence the compiler warning by dropping the "packed"
> attribute from the struct icmp6hdr and just asserting that the union
> is at the correct offset.
> 
> Signed-off-by: Thomas Huth <thuth at redhat.com>
> ---
>  lib/libnet/icmpv6.h | 4 +++-
>  lib/libnet/ipv6.h   | 3 ++-
>  2 files changed, 5 insertions(+), 2 deletions(-)

This fixes building the s390 ccw bios with netboot support on a Fedora
30 s390 LPAR for me.

Tested-by: Cornelia Huck <cohuck at redhat.com>

The changes also look sane to me.

Reviewed-by: Cornelia Huck <cohuck at redhat.com>


More information about the SLOF mailing list