--- a/scripts/gcc-default-pie.sh 2016-10-04 22:42:53.676653594 +0200 +++ b/scripts/gcc-default-pie.sh 2016-10-04 22:03:43.816598681 +0200 @@ -0,0 +1,12 @@ +#!/bin/sh +# Test if gcc default to -fPIE/-fpie + +cat << "END" | $@ -x c - -c -o /dev/null >/dev/null 2>&1 && echo "y" +int main(void) +{ +#if !(defined(__PIE__) || defined(__pie__)) +#error "Compiler don't default to PIE" +#endif + return 0; +} +END --- a/Makefile +++ b/Makefile @@ -674,6 +674,12 @@ ifdef CONFIG_CC_STACKPROTECTOR endif KBUILD_CFLAGS += $(stackp-flag) +# Force off for compilers that enable PIE by default. +ifeq ($(CONFIG_SHELL) $(srctree)/scripts/gcc-default-pie.sh $(CC), y) +KBUILD_CFLAGS += -fno-PIE +KBUILD_ASFLAG += -fno-PIE +endif + ifeq ($(cc-name),clang) KBUILD_CPPFLAGS += $(call cc-option,-Qunused-arguments,) KBUILD_CPPFLAGS += $(call cc-option,-Wno-unknown-warning-option,)