2009/10/23 Andrew Haley <aph@xxxxxxxxxx>: > Andrew John Hughes wrote: >> 2009/10/22 Andrew Haley <aph@xxxxxxxxxx>: >>> This: >>> >>> >>> #ifdef HAVE_GETPEERNAME >>> #ifdef HAVE_INET6 >>> struct sockaddr_in6 *addr6; >>> struct sockaddr_in6 sock_storage; >>> socklen_t socklen = sizeof (struct sockaddr_in6); >>> #else >>> struct sockaddr_in sock_storage; >>> socklen_t socklen = sizeof (struct sockaddr_in); >>> #endif /* HAVE_INET6 */ >>> >>> struct sockaddr *sockaddr = (struct sockaddr *) &sock_storage; >>> >>> >>> is clearly an aliasing violation: sock_storage is of type struct sockaddr_in6, >>> and *sockaddr is of type struct sockaddr. >>> >>> It would be easy enough to fix the code with a union, but I can't test it >>> because gcj doesn't use this code. I could simply compile with >>> -fno-strict-aliasing. >>> >>> Thoughts? >>> >>> Andrew. >>> >>> >> >> I posted a patch sometime ago to do exactly that (use a union), but >> received no response: >> >> http://developer.classpath.org/pipermail/classpath-patches/2009-June/006341.html >> >> It does need more testing than I've had chance to give it so far, I >> just haven't had time to do any more work on it. > > I seriously wonder if it's worth the effort. I just did this: > > Index: configure.ac > =================================================================== > RCS file: /sources/classpath/classpath/configure.ac,v > retrieving revision 1.244 > diff -c -u -r1.244 configure.ac > --- configure.ac 6 Feb 2009 02:21:23 -0000 1.244 > +++ configure.ac 23 Oct 2009 09:10:33 -0000 > @@ -514,7 +514,7 @@ > dnl CFLAGS that are used for all native code. We want to compile > dnl everything with unwinder data so that backtrace() will always > dnl work. > - EXTRA_CFLAGS='-fexceptions -fasynchronous-unwind-tables' > + EXTRA_CFLAGS='-fexceptions -fasynchronous-unwind-tables -fno-strict-aliasing' > AC_SUBST(EXTRA_CFLAGS) > > dnl Strict warning flags which not every module uses. > > which is a much safer change. It will somewhat pessimize other native code, > that's true, but will that make any real difference to anyone these days? > > Andrew. > Why not just amend the CFLAGS in the local Makefile.am for cpnet? -- Andrew :-) Free Java Software Engineer Red Hat, Inc. (http://www.redhat.com) Support Free Java! Contribute to GNU Classpath and the OpenJDK http://www.gnu.org/software/classpath http://openjdk.java.net PGP Key: 94EFD9D8 (http://subkeys.pgp.net) Fingerprint: F8EF F1EA 401E 2E60 15FA 7927 142C 2591 94EF D9D8