
"Daniel P. Berrange" <berrange@redhat.com> wrote:
On Fri, Feb 06, 2009 at 07:31:46PM +0100, Jim Meyering wrote:
Without these changes and with gcc-4.4, I'd get 4 warnings (2 in each file) about strict-aliasing violations. -Wstrict-aliasing is worth keeping in general, so I have disabled it only for the two offending files.
Can you show what lines / code trigger the warnings and/r just post the warnings themselves ?
bridge.c:657: warning: dereferencing pointer '({anonymous})' does break strict-aliasing rules bridge.c:658: warning: dereferencing pointer '({anonymous})' does break strict-aliasing rules qemud.c:671: warning: dereferencing pointer 'sa.72' does break strict-aliasing rules qemud.c:674: warning: dereferencing pointer 'sa.73' does break strict-aliasing rules bridge.c: if ((ret = inet_pton(AF_INET, addr, &inaddr)) < 0) return errno; else if (ret == 0) return EINVAL; ((struct sockaddr_in *)&ifr.ifr_data)->sin_family = AF_INET; ((struct sockaddr_in *)&ifr.ifr_data)->sin_addr = inaddr; qemud.c: if (getsockname(sock->fd, (struct sockaddr *)(&sa), &salen) < 0) goto cleanup; if (sa.ss_family == AF_INET) sock->port = htons(((struct sockaddr_in*)&sa)->sin_port); #ifdef AF_INET6 else if (sa.ss_family == AF_INET6) sock->port = htons(((struct sockaddr_in6*)&sa)->sin6_port);