RFH: aliasing problems
Ralf Corsepius
ralf.corsepius at rtems.org
Sat Dec 9 04:40:56 UTC 2006
On Fri, 2006-12-08 at 11:28 -0800, Till Straumann wrote:
> Welcome to the world, ralf :-)
>
> This way of casting struct sockaddr * and struct sockaddr_xxx *
> (xxx for the address family) is done by every application using sockets
> (and they'll all get the type-punned pointer warning).
Neither Linux nor Solaris-2.7 exhibit this behavior with their sockaddr*
types and gcc-4.1.x. FreeBSD and RTEMS do.
Linux, Solaris and Cygwin have
struct sockaddr {
sa_family_t sa_family;
char sa_data[14];
};
struct sockaddr_xx {
sa_family_t sa_family;
....
};
FreeBSD and RTEMS have:
struct sockaddr {
unsigned char sa_len;
sa_family_t sa_family;
char sa_data[14];
};
struct sockaddr_xx {
unsigned char sa_len;
sa_family_t sa_family;
...
};
So, how does this match with strict-aliasing rules?
Ralf
More information about the users
mailing list