From 28ed7cbfe1c171a79603b351555ad7875ce2c470 Mon Sep 17 00:00:00 2001 From: Jonathan Schleifer Date: Fri, 28 Mar 2025 20:08:51 +0000 Subject: [PATCH] Add support for Stack Protector FossilOrigin-Name: 5e80ba800541b636d62ca53c912322ce1923153d0e8cd1ccf45365b379f00331 --- build-aux/m4/buildsys.m4 | 55 ++++++++++++++++++++++++++++++++++++++++ buildsys.mk.in | 4 ++- 2 files changed, 58 insertions(+), 1 deletion(-) diff --git a/build-aux/m4/buildsys.m4 b/build-aux/m4/buildsys.m4 index 0d872af..21698ac 100644 --- a/build-aux/m4/buildsys.m4 +++ b/build-aux/m4/buildsys.m4 @@ -209,6 +209,61 @@ AC_DEFUN([BUILDSYS_PROG_IMPLIB], [ AC_SUBST(PROG_IMPLIB_LDFLAGS) ]) +AC_DEFUN([BUILDSYS_STACK_PROTECTOR], [ + AC_REQUIRE([AC_CANONICAL_HOST]) + AC_MSG_CHECKING(for Stack Protector) + + old_CFLAGS="$CFLAGS" + old_CXXFLAGS="$CXXFLAGS" + old_OBJCFLAGS="$OBJCFLAGS" + old_OBJCXXFLAGS="$OBJCXXFLAGS" + old_LDFLAGS="$LDFLAGS" + + CFLAGS="$CFLAGS -fstack-protector-strong" + CXXFLAGS="$CXXFLAGS -fstack-protector-strong" + OBJCFLAGS="$OBJCFLAGS -fstack-protector-strong" + OBJCXXFLAGS="$OBJCXXFLAGS -fstack-protector-strong" + LDFLAGS="$LDFLAGS -fstack-protector-strong" + + AC_LINK_IFELSE([ + AC_LANG_PROGRAM([ + #include + ], [ + puts("Stack Protector test"); + ]) + ], [ + AC_MSG_RESULT(strong) + AC_SUBST(STACK_PROTECTOR_CFLAGS, -fstack-protector-strong) + AC_SUBST(STACK_PROTECTOR_LDFLAGS, -fstack-protector-strong) + ], [ + CFLAGS="$old_CFLAGS -fstack-protector" + CXXFLAGS="$old_CXXFLAGS -fstack-protector" + OBJCFLAGS="$old_OBJCFLAGS -fstack-protector" + OBJCXXFLAGS="$old_OBJCXXFLAGS -fstack-protector" + LDFLAGS="$old_LDFLAGS -fstack-protector" + + AC_LINK_IFELSE([ + AC_LANG_PROGRAM([ + #include + ], [ + puts("Stack Protector test"); + ]) + ], [ + AC_MSG_RESULT(yes) + AC_SUBST(STACK_PROTECTOR_CFLAGS, -fstack-protector) + AC_SUBST(STACK_PROTECTOR_LDFLAGS, -fstack-protector) + ], [ + AC_MSG_RESULT(no) + ]) + ]) + + CFLAGS="$old_CFLAGS" + CXXFLAGS="$old_CXXFLAGS" + OBJCFLAGS="$old_OBJCFLAGS" + OBJCXXFLAGS="$old_OBJCXXFLAGS" + LDFLAGS="$old_LDFLAGS" +]) + AC_DEFUN([BUILDSYS_PIE], [ AC_REQUIRE([AC_CANONICAL_HOST]) AC_MSG_CHECKING(for Position Independent Executable support) diff --git a/buildsys.mk.in b/buildsys.mk.in index c8317c2..8dba455 100644 --- a/buildsys.mk.in +++ b/buildsys.mk.in @@ -47,9 +47,11 @@ PYTHON_FLAGS = @PYTHON_FLAGS@ PROG_IMPLIB_NEEDED = @PROG_IMPLIB_NEEDED@ PROG_IMPLIB_LDFLAGS = @PROG_IMPLIB_LDFLAGS@ PROG_SUFFIX = @EXEEXT@ +STACK_PROTECTOR_CFLAGS = @STACK_PROTECTOR_CFLAGS@ +STACK_PROTECTOR_LDFLAGS = @STACK_PROTECTOR_LDFLAGS@ +RELRO_LDFLAGS = @RELRO_LDFLAGS@ PIE_CFLAGS = @PIE_CFLAGS@ PIE_LDFLAGS = @PIE_LDFLAGS@ -RELRO_LDFLAGS = @RELRO_LDFLAGS@ LIB_CFLAGS = @LIB_CFLAGS@ LIB_LDFLAGS = @LIB_LDFLAGS@ LIB_LDFLAGS_INSTALL_NAME = @LIB_LDFLAGS_INSTALL_NAME@