From: Paul Eggert Date: Mon, 19 Nov 2012 23:39:28 +0000 (-0800) Subject: Improve static checking of integer overflow and stack smashing. X-Git-Tag: emacs-24.3.90~173^2~18^2~50 X-Git-Url: http://git.eshelyaron.com/gitweb/?a=commitdiff_plain;h=8ea5c4de2a2a9d71b3877974c92def925fb26f5d;p=emacs.git Improve static checking of integer overflow and stack smashing. * configure.ac (WARN_CFLAGS): Add -Wstack-protector and -Wstrict-overflow if using GCC 4.7.2 or later on a platform with at least 64-bit long int. This improves static checking on these platforms, when configured with --enable-gcc-warnings. --- diff --git a/ChangeLog b/ChangeLog index 05e1a14d55d..6852069087a 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,11 @@ +2012-11-19 Paul Eggert + + Improve static checking of integer overflow and stack smashing. + * configure.ac (WARN_CFLAGS): Add -Wstack-protector and + -Wstrict-overflow if using GCC 4.7.2 or later on a platform with + at least 64-bit long int. This improves static checking on these + platforms, when configured with --enable-gcc-warnings. + 2012-11-17 Paul Eggert Assume POSIX 1003.1-1988 or later for fcntl.h (Bug#12881). diff --git a/configure.ac b/configure.ac index 1884cc7ccf7..2a079cad264 100644 --- a/configure.ac +++ b/configure.ac @@ -717,11 +717,24 @@ else # . nw="$nw -Wshadow" - # The following lines should be removable at some point. - nw="$nw -Wstack-protector" - nw="$nw -Wstrict-overflow" + # The following line should be removable at some point. nw="$nw -Wsuggest-attribute=pure" + AC_MSG_CHECKING([whether to use -Wstack-protector -Wstrict-overflow]) + AC_PREPROC_IFELSE( + [AC_LANG_PROGRAM( + [[#if (1 <= __LONG_MAX__ >> 31 >> 31 \ + && 4 < __GNUC__ + (7 < __GNUC_MINOR__ + (2 <= __GNUC_PATCHLEVEL__))) + /* OK */ + #else + #error "Not GCC, or GCC before 4.7.2, or 'long int' has < 64 bits." + #endif + ]])], + [AC_MSG_RESULT(yes)], + [AC_MSG_RESULT(no) + nw="$nw -Wstack-protector" + nw="$nw -Wstrict-overflow"]) + gl_MANYWARN_ALL_GCC([ws]) gl_MANYWARN_COMPLEMENT([ws], [$ws], [$nw]) for w in $ws; do