Commit 2537fda6 authored by Ian Lynagh's avatar Ian Lynagh

Set -fno-stack-protector in extra-gcc-opts; fixes #4206

We were using it only when building the RTS, and only on certain
platforms. However, some versions of OS X need the flag, while others
don't support it, so we now test for it properly.
parent 6a16aa33
......@@ -962,6 +962,9 @@ AC_SUBST([GhcPkgCmd])
# reordering things in the module and confusing the manger and/or splitter.
# (eg. Trac #1427)
#
# If gcc knows about the stack protector, turn it off.
# Otherwise the stack-smash handler gets triggered.
#
AC_DEFUN([FP_GCC_EXTRA_FLAGS],
[AC_REQUIRE([FP_HAVE_GCC])
AC_CACHE_CHECK([for extra options to pass gcc when compiling via C], [fp_cv_gcc_extra_opts],
......@@ -987,6 +990,12 @@ AC_CACHE_CHECK([for extra options to pass gcc when compiling via C], [fp_cv_gcc_
[])
;;
esac
echo 'int main(void) {return 0;}' > conftest.c
if $CC -c conftest.c -fno-stack-protector > /dev/null 2>&1
then
fp_cv_gcc_extra_opts="$fp_cv_gcc_extra_opts -fno-stack-protector"
fi
rm conftest.c conftest.o
])
AC_SUBST([GccExtraViaCOpts],$fp_cv_gcc_extra_opts)
])
......
......@@ -252,11 +252,6 @@ rts_CC_OPTS += $(MACOSX_DEPLOYMENT_CC_OPTS)
rts_HC_OPTS += $(addprefix -optc, $(MACOSX_DEPLOYMENT_CC_OPTS))
rts_LD_OPTS += $(addprefix -optl, $(MACOSX_DEPLOYMENT_LD_OPTS))
# Otherwise the stack-smash handler gets triggered.
ifneq "$(findstring $(TargetOS_CPP), darwin openbsd)" ""
rts_HC_OPTS += -optc-fno-stack-protector
endif
# We *want* type-checking of hand-written cmm.
rts_HC_OPTS += -dcmm-lint
......
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment