Просмотр исходного кода

Don't enable AddressSanitizer in non-debug builds.

This fixes self-compiled binaries using 16TB+ of VM.
Bryan Drewery 9 лет назад
Родитель
Сommit
6ad5c468d6
4 измененных файлов с 10 добавлено и 4 удалено
  1. 3 2
      Makefile.in
  2. 2 1
      build/autotools/configure.ac
  3. 4 0
      doc/UPDATES.md
  4. 1 1
      src/Makefile.in

+ 3 - 2
Makefile.in

@@ -41,6 +41,7 @@ LIBS = @LIBS@
 INCLUDES = @TCL_INCLUDES@ @SSL_INCLUDES@
 
 DEBCXXFLAGS = -DDEBUG -fno-inline -g3 -ggdb3 -fno-omit-frame-pointer -fno-optimize-sibling-calls -Wshadow -Wpointer-arith @GCC3DEB@ @GCC4DEB@ @DEBCXXFLAGS@
+DEBLDFLAGS= @DEBLDFLAGS@
 CFLGS = @GCC3_CFLAGS@
 CXXFLAGS = @CXXFLAGS@ $(CFLGS) @GCC3_CXXFLAGS@ -fno-rtti
 
@@ -59,10 +60,10 @@ MAKE_DYNAMIC = $(MAKE) 'MAKE=$(MAKE)' 'CXX=$(CXX)' 'CC=$(CC)' 'LD=$(LD_DYNAMIC)'
 MAKE_DEBUG = $(MAKE) 'MAKE=$(MAKE)' 'CXX=$(CXX)' 'CC=$(CC)' 'LD=$(LD_DEBUG) -g' 'INCLUDES=$(INCLUDES)' \
 'CCDEPMODE=$(CCDEPMODE)' 'BRANCH=$(BRANCH)' 'COMMIT=$(COMMIT_SHORT)' 'BUILDTS=$(BUILDTS)' 'VERSION=$(VERSION)' \
 'STRIP=touch' 'CXXFLAGS=$(CXXFLAGS) $(DEBCXXFLAGS)' 'CFLGS=$(CFLGS) $(DEBCXXFLAGS) -DBIN_TYPE_DYNAMIC' \
-'LIBS=$(LIBS)' 'EGGEXEC=$(BINEXEC)' 'EGGBUILD=(debug)'
+'DEBLDFLAGS=$(DEBLDFLAGS)' 'LIBS=$(LIBS)' 'EGGEXEC=$(BINEXEC)' 'EGGBUILD=(debug)'
 
 MAKE_UTILS = $(MAKE) 'MAKE=$(MAKE)' 'CXX=$(CXX)' 'CC=$(CC)' 'STRIP=touch' 'INCLUDES=$(INCLUDES)' \
-'CCDEPMODE=$(CCDEPMODE)' \
+'CCDEPMODE=$(CCDEPMODE)' 'DEBLDFLAGS=$(DEBLDFLAGS)' \
 'CXXFLAGS=$(CXXFLAGS) $(DEBCXXFLAGS)' 'CFLGS=$(CFLGS) $(DEBCXXFLAGS)' 'LIBS=$(LIBS)' 'LD=$(LD_DEBUG) -g'
 
 .PHONY: checkclean.static checkclean.dynamic checkclean.debug lib wraith dwraith lib.debug debug test general sorthelp sort indent tar distrib distclean clean cleanutils test all dynamic static tags

+ 2 - 1
build/autotools/configure.ac

@@ -47,7 +47,7 @@ if [[ "${ax_cv_prog_cc_Og}" = "no" ]]; then
 fi
 CXX_FLAG_CHECK_LINK([DEBCXXFLAGS], [-fsanitize=address], [fsanitize_address])
 if [[ "${ax_cv_prog_cc_fsanitize_address}" = "yes" ]]; then
-  LDFLAGS="${LDFLAGS} -fsanitize=address"
+  DEBLDFLAGS="${DEBLDFLAGS} -fsanitize=address"
 fi
 CXX_FLAG_CHECK([DEBCXXFLAGS], [-fstack-protector-all], [stackprotectorall])
 CXX_FLAG_CHECK([DEBCXXFLAGS], [-Wconditional-uninitialized], [w_conditional_uninitialized])
@@ -93,6 +93,7 @@ EGG_CHECK_RANDOM_MAX
 # Create static binaries
 EGG_CHECK_CCSTATIC
 AC_SUBST(DEBCXXFLAGS)
+AC_SUBST(DEBLDFLAGS)
 
 #checkpoint
 AC_CACHE_SAVE 

+ 4 - 0
doc/UPDATES.md

@@ -1,6 +1,10 @@
 # maint
   * Support Debian/Ubuntu's libssl1.0.0[:i386] package.
   * Improve hints about OpenSSL library packages to install.
+  * Fix AddressSanitizer [1] being enabled by default causing 16TB+ of VM to be
+    used.  On most systems this was harmless since the memory was not actually
+    used.  This feature is still enabled by default for debug binaries.
+    [1] http://clang.llvm.org/docs/AddressSanitizer.html
 
 # 1.4.7
   * Update server list, 'set -yes servers -' and 'set -yes servers6 -' to get new list.

+ 1 - 1
src/Makefile.in

@@ -11,7 +11,7 @@ VPATH = @srcdir@
 CXXFLAGS = $(CXXFLAGS)
 CFLAGS = $(CFLGS)
 CPPFLAGS = @CPPFLAGS@ -I. -I$(top_srcdir) -I$(top_srcdir)/lib -I$(top_srcdir)/pack @DEFS@ $(INCLUDES) '-DCOMMIT="$(COMMIT)"' '-DBRANCH="$(BRANCH)"' -DBUILDTS=$(BUILDTS) '-DVERSION="$(VERSION)"'
-LDFLAGS = @LDFLAGS@
+LDFLAGS = @LDFLAGS@ $(DEBLDFLAGS)
 SETTINGSFILE = $(top_srcdir)/doc/settings.txt
 RESPONSESFILE = $(top_srcdir)/doc/responses.txt
 HELPFILE = $(top_srcdir)/doc/help.txt