mirror of
https://gitlab.torproject.org/tpo/core/tor.git
synced 2024-11-23 20:03:31 +01:00
When building with GCC, use -fno-strict-aliasing
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
This commit is contained in:
parent
ec9c059757
commit
676cfbbf84
@ -32,6 +32,11 @@ Changes in version 0.2.1.12-alpha - 2009-02-??
|
||||
- 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:
|
||||
|
@ -754,8 +754,11 @@ AC_SUBST(LOCALSTATEDIR)
|
||||
|
||||
# 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
|
||||
|
Loading…
Reference in New Issue
Block a user