summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorAllan McRae <allan@archlinux.org>2010-09-27 16:04:10 +1000
committerAllan McRae <allan@archlinux.org>2010-09-27 16:06:52 +1000
commit900605912b32d08ece7a3e80e4c6b258485676b7 (patch)
tree6b73de46b1b37398409200d2da4b0902fe0220a1
parent28c662e7a422314475cca61663695dd31fd86546 (diff)
downloadpacman-900605912b32d08ece7a3e80e4c6b258485676b7.tar.xz
Add FORTIFY_SOURCE support
Adds a check for the minimum mainline GCC version for FORTIFY_SOURCE support and enables -D_FORTIFY_SOURCE=2 by default when building with --enable-debug. Signed-off-by: Allan McRae <allan@archlinux.org>
-rw-r--r--acinclude.m423
-rw-r--r--configure.ac1
2 files changed, 24 insertions, 0 deletions
diff --git a/acinclude.m4 b/acinclude.m4
index 1524a3dd..80b0ba0a 100644
--- a/acinclude.m4
+++ b/acinclude.m4
@@ -4910,6 +4910,29 @@ AC_DEFUN([GCC_STACK_PROTECT_CC],[
fi
])
+dnl GCC_FORTIFY_SOURCE_CC
+dnl checks -D_FORTIFY_SOURCE with the C compiler, if it exists then updates
+dnl CFLAGS
+AC_DEFUN([GCC_FORTIFY_SOURCE_CC],[
+ AC_LANG_ASSERT(C)
+ if test "X$CC" != "X"; then
+ AC_MSG_CHECKING(for FORTIFY_SOURCE support)
+ AC_TRY_COMPILE([#include <features.h>], [
+ int main() {
+ #if !(__GNUC_PREREQ (4, 1) )
+ #error No FORTIFY_SOURCE support
+ #endif
+ return 0;
+ }
+ ], [
+ AC_MSG_RESULT(yes)
+ CFLAGS="$CFLAGS -D_FORTIFY_SOURCE=2"
+ ], [
+ AC_MSG_RESULT(no)
+ ])
+ fi
+])
+
dnl GCC_VISIBILITY_CC
dnl checks -fvisibility=internal with the C compiler, if it exists then
dnl defines ENABLE_VISIBILITY_CC in both configure script and Makefiles
diff --git a/configure.ac b/configure.ac
index b4570f58..76e36c8b 100644
--- a/configure.ac
+++ b/configure.ac
@@ -316,6 +316,7 @@ if test "x$debug" = "xyes" ; then
# Check for -fstack-protector availability
GCC_STACK_PROTECT_LIB
GCC_STACK_PROTECT_CC
+ GCC_FORTIFY_SOURCE_CC
CFLAGS="$CFLAGS -g -Wall -Werror"
else
AC_MSG_RESULT(no)