40c2b4e952
Backport a patch series from upstream to fix the configure check for -fstack-protector. Fixes: http://autobuild.buildroot.net/results/bdd3e5352aa283b96717202a794f9762d15cc736/ Signed-off-by: Vicente Olivert Riera <Vincent.Riera@imgtec.com> Reviewed-by: Arnout Vandecappelle (Essensium/Mind) <arnout@mind.be> Signed-off-by: Peter Korsgaard <peter@korsgaard.com>
190 lines
5.2 KiB
Diff
190 lines
5.2 KiB
Diff
When checking for stack protector support we need to actually link the
|
|
test program.
|
|
|
|
Backported from upstream:
|
|
http://www.sudo.ws/repos/sudo/rev/ab4f94aac7de
|
|
|
|
Signed-off-by: Vicente Olivert Riera <Vincent.Riera@imgtec.com>
|
|
|
|
# HG changeset patch
|
|
# User Todd C. Miller <Todd.Miller@courtesan.com>
|
|
# Date 1446216562 21600
|
|
# Node ID ab4f94aac7de73efa1b201890354c74126baf7ca
|
|
# Parent e6bc59225c06c5d45580197519a73e3feea14cbd
|
|
When checking for stack protector support we need to actually link
|
|
the test program.
|
|
|
|
diff -r e6bc59225c06 -r ab4f94aac7de configure
|
|
--- a/configure Thu Oct 29 14:06:21 2015 -0600
|
|
+++ b/configure Fri Oct 30 08:49:22 2015 -0600
|
|
@@ -23922,11 +23922,17 @@
|
|
$as_echo_n "(cached) " >&6
|
|
else
|
|
|
|
- sudo_cv_var_stack_protector=no
|
|
+ # Avoid using CFLAGS since the compiler might optimize away our
|
|
+ # test. We don't want LIBS to interfere with the test but keep
|
|
+ # LDFLAGS as it may have an rpath needed to find the ssp lib.
|
|
_CFLAGS="$CFLAGS"
|
|
_LDFLAGS="$LDFLAGS"
|
|
- CFLAGS="-fstack-protector-strong"
|
|
- LDFLAGS="$_LDFLAGS -fstack-protector-strong"
|
|
+ _LIBS="$LIBS"
|
|
+ LIBS=
|
|
+
|
|
+ sudo_cv_var_stack_protector="-fstack-protector-strong"
|
|
+ CFLAGS="$sudo_cv_var_stack_protector"
|
|
+ LDFLAGS="$_LDFLAGS $sudo_cv_var_stack_protector"
|
|
cat confdefs.h - <<_ACEOF >conftest.$ac_ext
|
|
/* end confdefs.h. */
|
|
|
|
@@ -23940,14 +23946,13 @@
|
|
}
|
|
|
|
_ACEOF
|
|
-if ac_fn_c_try_compile "$LINENO"; then :
|
|
-
|
|
- sudo_cv_var_stack_protector="-fstack-protector-strong"
|
|
-
|
|
-else
|
|
-
|
|
- CFLAGS="-fstack-protector-all"
|
|
- LDFLAGS="$_LDFLAGS -fstack-protector-all"
|
|
+if ac_fn_c_try_link "$LINENO"; then :
|
|
+
|
|
+else
|
|
+
|
|
+ sudo_cv_var_stack_protector="-fstack-protector-all"
|
|
+ CFLAGS="$sudo_cv_var_stack_protector"
|
|
+ LDFLAGS="$_LDFLAGS $sudo_cv_var_stack_protector"
|
|
cat confdefs.h - <<_ACEOF >conftest.$ac_ext
|
|
/* end confdefs.h. */
|
|
|
|
@@ -23961,14 +23966,13 @@
|
|
}
|
|
|
|
_ACEOF
|
|
-if ac_fn_c_try_compile "$LINENO"; then :
|
|
-
|
|
- sudo_cv_var_stack_protector="-fstack-protector-all"
|
|
-
|
|
-else
|
|
-
|
|
- CFLAGS="-fstack-protector"
|
|
- LDFLAGS="$_LDFLAGS -fstack-protector"
|
|
+if ac_fn_c_try_link "$LINENO"; then :
|
|
+
|
|
+else
|
|
+
|
|
+ sudo_cv_var_stack_protector="-fstack-protector"
|
|
+ CFLAGS="$sudo_cv_var_stack_protector"
|
|
+ LDFLAGS="$_LDFLAGS $sudo_cv_var_stack_protector"
|
|
cat confdefs.h - <<_ACEOF >conftest.$ac_ext
|
|
/* end confdefs.h. */
|
|
|
|
@@ -23982,20 +23986,26 @@
|
|
}
|
|
|
|
_ACEOF
|
|
-if ac_fn_c_try_compile "$LINENO"; then :
|
|
-
|
|
- sudo_cv_var_stack_protector="-fstack-protector"
|
|
-
|
|
-fi
|
|
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
|
|
-
|
|
-fi
|
|
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
|
|
-
|
|
-fi
|
|
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
|
|
+if ac_fn_c_try_link "$LINENO"; then :
|
|
+
|
|
+else
|
|
+
|
|
+ sudo_cv_var_stack_protector=no
|
|
+
|
|
+fi
|
|
+rm -f core conftest.err conftest.$ac_objext \
|
|
+ conftest$ac_exeext conftest.$ac_ext
|
|
+
|
|
+fi
|
|
+rm -f core conftest.err conftest.$ac_objext \
|
|
+ conftest$ac_exeext conftest.$ac_ext
|
|
+
|
|
+fi
|
|
+rm -f core conftest.err conftest.$ac_objext \
|
|
+ conftest$ac_exeext conftest.$ac_ext
|
|
CFLAGS="$_CFLAGS"
|
|
LDFLAGS="$_LDFLAGS"
|
|
+ LIBS="$_LIBS"
|
|
|
|
|
|
fi
|
|
diff -r e6bc59225c06 -r ab4f94aac7de configure.ac
|
|
--- a/configure.ac Thu Oct 29 14:06:21 2015 -0600
|
|
+++ b/configure.ac Fri Oct 30 08:49:22 2015 -0600
|
|
@@ -3981,37 +3981,42 @@
|
|
AC_CACHE_CHECK([for compiler stack protector support],
|
|
[sudo_cv_var_stack_protector],
|
|
[
|
|
- sudo_cv_var_stack_protector=no
|
|
+ # Avoid using CFLAGS since the compiler might optimize away our
|
|
+ # test. We don't want LIBS to interfere with the test but keep
|
|
+ # LDFLAGS as it may have an rpath needed to find the ssp lib.
|
|
_CFLAGS="$CFLAGS"
|
|
_LDFLAGS="$LDFLAGS"
|
|
- CFLAGS="-fstack-protector-strong"
|
|
- LDFLAGS="$_LDFLAGS -fstack-protector-strong"
|
|
- AC_COMPILE_IFELSE([
|
|
+ _LIBS="$LIBS"
|
|
+ LIBS=
|
|
+
|
|
+ sudo_cv_var_stack_protector="-fstack-protector-strong"
|
|
+ CFLAGS="$sudo_cv_var_stack_protector"
|
|
+ LDFLAGS="$_LDFLAGS $sudo_cv_var_stack_protector"
|
|
+ AC_LINK_IFELSE([
|
|
AC_LANG_PROGRAM([AC_INCLUDES_DEFAULT],
|
|
[[char buf[1024]; buf[1023] = '\0';]])
|
|
- ], [
|
|
- sudo_cv_var_stack_protector="-fstack-protector-strong"
|
|
- ], [
|
|
- CFLAGS="-fstack-protector-all"
|
|
- LDFLAGS="$_LDFLAGS -fstack-protector-all"
|
|
- AC_COMPILE_IFELSE([
|
|
+ ], [], [
|
|
+ sudo_cv_var_stack_protector="-fstack-protector-all"
|
|
+ CFLAGS="$sudo_cv_var_stack_protector"
|
|
+ LDFLAGS="$_LDFLAGS $sudo_cv_var_stack_protector"
|
|
+ AC_LINK_IFELSE([
|
|
AC_LANG_PROGRAM([AC_INCLUDES_DEFAULT],
|
|
[[char buf[1024]; buf[1023] = '\0';]])
|
|
- ], [
|
|
- sudo_cv_var_stack_protector="-fstack-protector-all"
|
|
- ], [
|
|
- CFLAGS="-fstack-protector"
|
|
- LDFLAGS="$_LDFLAGS -fstack-protector"
|
|
- AC_COMPILE_IFELSE([
|
|
+ ], [], [
|
|
+ sudo_cv_var_stack_protector="-fstack-protector"
|
|
+ CFLAGS="$sudo_cv_var_stack_protector"
|
|
+ LDFLAGS="$_LDFLAGS $sudo_cv_var_stack_protector"
|
|
+ AC_LINK_IFELSE([
|
|
AC_LANG_PROGRAM([AC_INCLUDES_DEFAULT],
|
|
[[char buf[1024]; buf[1023] = '\0';]])
|
|
- ], [
|
|
- sudo_cv_var_stack_protector="-fstack-protector"
|
|
- ], [])
|
|
+ ], [], [
|
|
+ sudo_cv_var_stack_protector=no
|
|
+ ])
|
|
])
|
|
])
|
|
CFLAGS="$_CFLAGS"
|
|
LDFLAGS="$_LDFLAGS"
|
|
+ LIBS="$_LIBS"
|
|
]
|
|
)
|
|
if test X"$sudo_cv_var_stack_protector" != X"no"; then
|
|
|