[pacman-dev] [PATCH] Add -fstack-clash-protection to CFLAGS in debug builds if available

Allan McRae allan at archlinux.org
Thu Jan 10 03:22:09 UTC 2019


Signed-off-by: Allan McRae <allan at archlinux.org>
---

Tested with GCC (supports this flag) and clang (does not support).

Did not add to meson builds, as it appears that all these flags are not
added to the build anywhere in the meson files.

 configure.ac    |  1 +
 m4/acinclude.m4 | 19 +++++++++++++++++++
 2 files changed, 20 insertions(+)

diff --git a/configure.ac b/configure.ac
index ba54c2dd..6f336022 100644
--- a/configure.ac
+++ b/configure.ac
@@ -443,6 +443,7 @@ if test "x$debug" = "xyes" ; then
 	# Check for -fstack-protector availability
 	GCC_STACK_PROTECT_LIB
 	GCC_STACK_PROTECT_CC
+	GCC_STACK_CLASH_PROTECTION
 	GCC_FORTIFY_SOURCE_CC
 	WARNING_CFLAGS="-g -Wall -Werror"
 else
diff --git a/m4/acinclude.m4 b/m4/acinclude.m4
index 15bb31e8..845c8286 100644
--- a/m4/acinclude.m4
+++ b/m4/acinclude.m4
@@ -38,6 +38,25 @@ AC_DEFUN([GCC_STACK_PROTECT_CC],[
   fi
 ])
 
+dnl GCC_STACK_CLASH_PROTECTION
+dnl check -fstack-clash-protection with the C compiler, if it exists then
+dnl updates CFLAGS
+AC_DEFUN([GCC_STACK_CLASH_PROTECTION],[
+  AC_LANG_ASSERT(C)
+  if test "X$CC" != "X"; then
+    AC_CACHE_CHECK([whether ${CC} accepts -fstack-clash-protection],
+      scp_cv_cc,
+      [scp_old_cflags="$CFLAGS"
+       CFLAGS="$CFLAGS -fstack-clash-protection"
+       AC_TRY_COMPILE(,, scp_cv_cc=yes, scp_cv_cc=no)
+       CFLAGS="$scp_old_cflags"
+      ])
+    if test $scp_cv_cc = yes; then
+      CFLAGS="$CFLAGS -fstack-clash-protection"
+    fi
+  fi
+])
+
 dnl GCC_FORTIFY_SOURCE_CC
 dnl checks -D_FORTIFY_SOURCE with the C compiler, if it exists then updates
 dnl CPPFLAGS
-- 
2.20.0


More information about the pacman-dev mailing list