GCC's interpretation of the C99 aliasing rules, to be charitable,
creates a dialect of C intended for a better programmers than I am
certain of my ability to be in all times. I just spent 2 hours
tracking down a platform-hyperspecific libevent bug that turned out to
be because of this, and darned if I ever want to do *that* again.
One of Linus's recent rants will give you a picture of why GCC's
behavior here can lead to fun surprises in your binaries:
http://lwn.net/Articles/316126/
svn:r18351
- Add a 'getinfo status/clients-seen' controller command, in case
controllers want to hear clients_seen events but connect late.
+ o Build changes
+ - Disable GCC's strict alias optimization by default, to avoid the
+ likelihood of its introducing subtle bugs whenever our code violates
+ the letter of C99's alias rules.
+
Changes in version 0.2.1.11-alpha - 2009-01-20
o Security fixes:
# Set CFLAGS _after_ all the above checks, since our warnings are stricter
# than autoconf's macros like.
-if test "$ac_cv_c_compiler_gnu" = yes; then
+if test "$GCC" = yes; then
CFLAGS="$CFLAGS -Wall -g -O2"
+ # Disable GCC's strict aliasing checks. They are an hours-to-debug
+ # accident waiting to happen.
+ CFLAGS="$CFLAGS -fno-strict-aliasing"
else
CFLAGS="$CFLAGS -g -O"
enable_gcc_warnings=no