]> git.ipfire.org Git - thirdparty/gcc.git/commitdiff
configure.ac: Don't define ENABLE_CHECKING whenever --enable-checking is seen...
authorJakub Jelinek <jakub@redhat.com>
Thu, 28 Feb 2013 09:58:47 +0000 (10:58 +0100)
committerJakub Jelinek <jakub@gcc.gnu.org>
Thu, 28 Feb 2013 09:58:47 +0000 (10:58 +0100)
* configure.ac: Don't define ENABLE_CHECKING whenever
--enable-checking is seen, instead use similar --enable-checking=yes
vs. --enable-checking=release default as gcc/ subdir has and
define ENABLE_CHECKING if ENABLE_CHECKING is defined in gcc/.
Define ENABLE_VALGRIND_CHECKING if requested.
* lex.c (new_buff): If ENABLE_VALGRIND_CHECKING, put _cpp_buff
struct first in the allocated buffer and result->base after it.
(_cpp_free_buff): If ENABLE_VALGRIND_CHECKING, free buff itself
instead of buff->base.
* config.in: Regenerated.
* configure: Regenerated.

From-SVN: r196333

libcpp/ChangeLog
libcpp/config.in
libcpp/configure
libcpp/configure.ac
libcpp/lex.c

index 22451a2103f71dbbf284c748b13f815304bdde90..7a94c90b6d3152450ce92ed3986948951e4b53a8 100644 (file)
@@ -1,3 +1,17 @@
+2013-02-28  Jakub Jelinek  <jakub@redhat.com>
+
+       * configure.ac: Don't define ENABLE_CHECKING whenever
+       --enable-checking is seen, instead use similar --enable-checking=yes
+       vs. --enable-checking=release default as gcc/ subdir has and
+       define ENABLE_CHECKING if ENABLE_CHECKING is defined in gcc/.
+       Define ENABLE_VALGRIND_CHECKING if requested.
+       * lex.c (new_buff): If ENABLE_VALGRIND_CHECKING, put _cpp_buff
+       struct first in the allocated buffer and result->base after it.
+       (_cpp_free_buff): If ENABLE_VALGRIND_CHECKING, free buff itself
+       instead of buff->base.
+       * config.in: Regenerated.
+       * configure: Regenerated.
+
 2013-02-13  Ed Smith-Rowland  <3dw4rd@verizon.net>
 
        PR c++/55582
index fca690cd30635c636e8dfad5cc992296676dad7b..1b0b25555cf0136bece11c3a94d043c01fc8ad84 100644 (file)
    language is requested. */
 #undef ENABLE_NLS
 
+/* Define if you want to workaround valgrind (a memory checker) warnings about
+   possible memory leaks because of libcpp use of interior pointers. */
+#undef ENABLE_VALGRIND_CHECKING
+
 /* Define to 1 if you have `alloca', as a function or macro. */
 #undef HAVE_ALLOCA
 
index d07aed3199c979ee8b0e289476a36ef51efca633..f21b361577f98354f9de541f7aa1781a32549a5f 100755 (executable)
@@ -1333,7 +1333,11 @@ Optional Features:
   --enable-werror-always  enable -Werror despite compiler version
   --disable-rpath         do not hardcode runtime library paths
   --enable-maintainer-mode enable rules only needed by maintainers
-  --enable-checking      enable expensive run-time checks
+  --enable-checking[=LIST]
+                          enable expensive run-time checks. With LIST, enable
+                          only specific categories of checks. Categories are:
+                          yes,no,all,none,release. Flags are: misc,valgrind or
+                          other strings
   --enable-canonical-system-headers
                           enable or disable system headers canonicalization
 
@@ -7083,20 +7087,54 @@ else
 fi
 
 
+# Enable expensive internal checks
+is_release=
+if test -f $srcdir/../gcc/DEV-PHASE \
+   && test x"`cat $srcdir/../gcc/DEV-PHASE`" != xexperimental; then
+  is_release=yes
+fi
+
 # Check whether --enable-checking was given.
 if test "${enable_checking+set}" = set; then :
-  enableval=$enable_checking;
+  enableval=$enable_checking; ac_checking_flags="${enableval}"
+else
+
+# Determine the default checks.
+if test x$is_release = x ; then
+  ac_checking_flags=yes
 else
-  enable_checking=no
+  ac_checking_flags=release
+fi
 fi
 
+IFS="${IFS=    }"; ac_save_IFS="$IFS"; IFS="$IFS,"
+for check in release $ac_checking_flags
+do
+       case $check in
+       # these set all the flags to specific states
+       yes|all) ac_checking=1 ; ac_valgrind_checking= ;;
+       no|none|release) ac_checking= ; ac_valgrind_checking= ;;
+       # these enable particular checks
+       misc) ac_checking=1 ;;
+       valgrind) ac_valgrind_checking=1 ;;
+       # accept
+       *) ;;
+       esac
+done
+IFS="$ac_save_IFS"
 
-if test $enable_checking != no ; then
+if test x$ac_checking != x ; then
 
 $as_echo "#define ENABLE_CHECKING 1" >>confdefs.h
 
 fi
 
+if test x$ac_valgrind_checking != x ; then
+
+$as_echo "#define ENABLE_VALGRIND_CHECKING 1" >>confdefs.h
+
+fi
+
 # Check whether --enable-canonical-system-headers was given.
 if test "${enable_canonical_system_headers+set}" = set; then :
   enableval=$enable_canonical_system_headers;
index 34ae5c206222f94d90ce50c2aa9757558a2f6add..e0c4ae6958fc5423a3040089ff2a9732568b4380 100644 (file)
@@ -123,15 +123,53 @@ else
 fi
 AC_SUBST(MAINT)
 
-AC_ARG_ENABLE(checking,
-[  --enable-checking      enable expensive run-time checks],,
-enable_checking=no)
+# Enable expensive internal checks
+is_release=
+if test -f $srcdir/../gcc/DEV-PHASE \
+   && test x"`cat $srcdir/../gcc/DEV-PHASE`" != xexperimental; then
+  is_release=yes
+fi
 
-if test $enable_checking != no ; then
+AC_ARG_ENABLE(checking,
+[AS_HELP_STRING([[--enable-checking[=LIST]]],
+               [enable expensive run-time checks.  With LIST,
+                enable only specific categories of checks.
+                Categories are: yes,no,all,none,release.
+                Flags are: misc,valgrind or other strings])],
+[ac_checking_flags="${enableval}"],[
+# Determine the default checks.
+if test x$is_release = x ; then
+  ac_checking_flags=yes
+else
+  ac_checking_flags=release
+fi])
+IFS="${IFS=    }"; ac_save_IFS="$IFS"; IFS="$IFS,"
+for check in release $ac_checking_flags
+do
+       case $check in
+       # these set all the flags to specific states
+       yes|all) ac_checking=1 ; ac_valgrind_checking= ;;
+       no|none|release) ac_checking= ; ac_valgrind_checking= ;;
+       # these enable particular checks
+       misc) ac_checking=1 ;;
+       valgrind) ac_valgrind_checking=1 ;;
+       # accept
+       *) ;;
+       esac
+done
+IFS="$ac_save_IFS"
+                
+if test x$ac_checking != x ; then
   AC_DEFINE(ENABLE_CHECKING, 1,
 [Define if you want more run-time sanity checks.])
 fi
 
+if test x$ac_valgrind_checking != x ; then
+  AC_DEFINE(ENABLE_VALGRIND_CHECKING, 1,
+[Define if you want to workaround valgrind (a memory checker) warnings about
+ possible memory leaks because of libcpp use of interior pointers.])
+fi
+
 AC_ARG_ENABLE(canonical-system-headers,
 [  --enable-canonical-system-headers
                           enable or disable system headers canonicalization],
index 976d9e8b0eb72f761ee394112ecc9de704276ab6..570c00733cb10b696edfbb7bcddde51db5d956f9 100644 (file)
@@ -2846,8 +2846,17 @@ new_buff (size_t len)
     len = MIN_BUFF_SIZE;
   len = CPP_ALIGN (len);
 
+#ifdef ENABLE_VALGRIND_CHECKING
+  /* Valgrind warns about uses of interior pointers, so put _cpp_buff
+     struct first.  */
+  size_t slen = CPP_ALIGN2 (sizeof (_cpp_buff), 2 * DEFAULT_ALIGNMENT);
+  base = XNEWVEC (unsigned char, len + slen);
+  result = (_cpp_buff *) base;
+  base += slen;
+#else
   base = XNEWVEC (unsigned char, len + sizeof (_cpp_buff));
   result = (_cpp_buff *) (base + len);
+#endif
   result->base = base;
   result->cur = base;
   result->limit = base + len;
@@ -2934,7 +2943,11 @@ _cpp_free_buff (_cpp_buff *buff)
   for (; buff; buff = next)
     {
       next = buff->next;
+#ifdef ENABLE_VALGRIND_CHECKING
+      free (buff);
+#else
       free (buff->base);
+#endif
     }
 }