Package: gcc-4.4 Version: 4.4.0-5 Severity: wishlist With the attached C file, gcc-4.4 warns:
lakeview ok % gcc-4.4 -O2 -Wall socket.c socket.c: In function ‘main’: socket.c:20: warning: dereferencing pointer ‘sin’ does break strict-aliasing rules socket.c:21: warning: dereferencing pointer ‘sin’ does break strict-aliasing rules socket.c:19: warning: dereferencing pointer ‘sin’ does break strict-aliasing rules socket.c:12: note: initialized from here socket.c:23: warning: dereferencing pointer ‘sa’ does break strict-aliasing rules socket.c:11: note: initialized from here This is a standard and idiomatic usage of Berkeley sockets. AFAIK, there is no other way to work with the sockets interface, and even if there were, this method is extremely common, not to mention sanctioned by POSIX. gcc-4.4 should not warn with -Wall, which is supposed to be a sane default with useful warnings. I don't mind if gcc-4.4 warns with some esoteric option, but warning about sockets-using code with -O2 -Wall is silly. -- System Information: Debian Release: squeeze/sid APT prefers unstable APT policy: (500, 'unstable'), (1, 'experimental') Architecture: amd64 (x86_64) Kernel: Linux 2.6.30-rc5-amd64 (SMP w/2 CPU cores) Locale: LANG=en_US.UTF-8, LC_CTYPE=en_US.UTF-8 (charmap=UTF-8) Shell: /bin/sh linked to /bin/bash Versions of packages gcc-4.4 depends on: ii binutils 2.19.1-1 The GNU assembler, linker and bina ii cpp-4.4 4.4.0-5 The GNU C preprocessor ii gcc-4.4-base 4.4.0-5 The GNU Compiler Collection (base ii libc6 2.9-13 GNU C Library: Shared libraries ii libgcc1 1:4.4.0-5 GCC support library ii libgomp1 4.4.0-5 GCC OpenMP (GOMP) support library Versions of packages gcc-4.4 recommends: ii libc6-dev 2.9-13 GNU C Library: Development Librari Versions of packages gcc-4.4 suggests: pn gcc-4.4-doc <none> (no description available) pn gcc-4.4-locales <none> (no description available) ii gcc-4.4-multilib 4.4.0-5 The GNU C compiler (multilib files pn libgcc1-dbg <none> (no description available) pn libgomp1-dbg <none> (no description available) pn libmudflap0-4.4-dev <none> (no description available) pn libmudflap0-dbg <none> (no description available) -- no debconf information -- brian m. carlson / brian with sandals: Houston, Texas, US +1 713 440 7475 | http://crustytoothpaste.ath.cx/~bmc | My opinion only OpenPGP: RSA v4 4096b 88AC E9B2 9196 305B A994 7552 F1BA 225C 0223 B187
#include <stdio.h> #include <assert.h> #include <string.h> #include <unistd.h> #include <sys/socket.h> #include <netinet/in.h> int main(void) { struct sockaddr_storage addr; struct sockaddr *sa = (struct sockaddr *) &addr; struct sockaddr_in *sin = (struct sockaddr_in *) &addr; int sock; sock = socket(AF_INET, SOCK_STREAM, 0); if (sock < 0) return 1; sin->sin_family = AF_INET; sin->sin_port = htons(80); sin->sin_addr.s_addr = INADDR_LOOPBACK; assert(sa->sa_family == AF_INET); if (connect(sock, sa, sizeof(*sin)) < 0) return 2; close(sock); return 0; }
signature.asc
Description: Digital signature