diff --git a/Makefile.tool.am b/Makefile.tool.am index e48ca6b5f..883e21ae8 100644 --- a/Makefile.tool.am +++ b/Makefile.tool.am @@ -53,32 +53,38 @@ COREGRIND_LIBS_PPC64_AIX5 = \ @VEX_DIR@/libvex_x86_linux.a: @VEX_DIR@/priv/main/vex_svnversion.h $(MAKE) -C @VEX_DIR@ CC="$(CC)" AR="$(AR)" \ libvex_x86_linux.a \ - EXTRA_CFLAGS="$(AM_CFLAGS_X86_LINUX) @FLAG_WDECL_AFTER_STMT@" + EXTRA_CFLAGS="$(AM_CFLAGS_X86_LINUX) @FLAG_WDECL_AFTER_STMT@ \ + @FLAG_FNO_STACK_PROTECTOR@" @VEX_DIR@/libvex_amd64_linux.a: @VEX_DIR@/priv/main/vex_svnversion.h $(MAKE) -C @VEX_DIR@ CC="$(CC)" AR="$(AR)" \ libvex_amd64_linux.a \ - EXTRA_CFLAGS="$(AM_CFLAGS_AMD64_LINUX) @FLAG_WDECL_AFTER_STMT@" + EXTRA_CFLAGS="$(AM_CFLAGS_AMD64_LINUX) @FLAG_WDECL_AFTER_STMT@ \ + @FLAG_FNO_STACK_PROTECTOR@" @VEX_DIR@/libvex_ppc32_linux.a: @VEX_DIR@/priv/main/vex_svnversion.h $(MAKE) -C @VEX_DIR@ CC="$(CC)" AR="$(AR)" \ libvex_ppc32_linux.a \ - EXTRA_CFLAGS="$(AM_CFLAGS_PPC32_LINUX) @FLAG_WDECL_AFTER_STMT@" + EXTRA_CFLAGS="$(AM_CFLAGS_PPC32_LINUX) @FLAG_WDECL_AFTER_STMT@ \ + @FLAG_FNO_STACK_PROTECTOR@" @VEX_DIR@/libvex_ppc64_linux.a: @VEX_DIR@/priv/main/vex_svnversion.h $(MAKE) -C @VEX_DIR@ CC="$(CC)" AR="$(AR)" \ libvex_ppc64_linux.a \ - EXTRA_CFLAGS="$(AM_CFLAGS_PPC64_LINUX) @FLAG_WDECL_AFTER_STMT@" + EXTRA_CFLAGS="$(AM_CFLAGS_PPC64_LINUX) @FLAG_WDECL_AFTER_STMT@ \ + @FLAG_FNO_STACK_PROTECTOR@" @VEX_DIR@/libvex_ppc32_aix5.a: @VEX_DIR@/priv/main/vex_svnversion.h $(MAKE) -C @VEX_DIR@ CC="$(CC)" AR="$(AR) -X32" \ libvex_ppc32_aix5.a \ - EXTRA_CFLAGS="$(AM_CFLAGS_PPC32_AIX5) @FLAG_WDECL_AFTER_STMT@" + EXTRA_CFLAGS="$(AM_CFLAGS_PPC32_AIX5) @FLAG_WDECL_AFTER_STMT@ \ + @FLAG_FNO_STACK_PROTECTOR@" @VEX_DIR@/libvex_ppc64_aix5.a: @VEX_DIR@/priv/main/vex_svnversion.h $(MAKE) -C @VEX_DIR@ CC="$(CC)" AR="$(AR) -X64" \ libvex_ppc64_aix5.a \ - EXTRA_CFLAGS="$(AM_CFLAGS_PPC64_AIX5) @FLAG_WDECL_AFTER_STMT@" + EXTRA_CFLAGS="$(AM_CFLAGS_PPC64_AIX5) @FLAG_WDECL_AFTER_STMT@ \ + @FLAG_FNO_STACK_PROTECTOR@" @VEX_DIR@/priv/main/vex_svnversion.h: $(MAKE) -C @VEX_DIR@ CC="$(CC)" version diff --git a/configure.in b/configure.in index 9b10fd615..44ef57a15 100644 --- a/configure.in +++ b/configure.in @@ -706,6 +706,33 @@ if test x$declaration_after_statement = xyes; then fi +# does this compiler support -fno-stack-protector ? +AC_MSG_CHECKING([if gcc accepts -fno-stack-protector ]) + +safe_CFLAGS=$CFLAGS +CFLAGS="-fno-stack-protector" + +AC_TRY_COMPILE(, [ +int main () { return 0 ; } +], +[ +no_stack_protector=yes +FLAG_FNO_STACK_PROTECTOR="-fno-stack-protector" +AC_MSG_RESULT([yes]) +], [ +no_stack_protector=no +FLAG_FNO_STACK_PROTECTOR="" +AC_MSG_RESULT([no]) +]) +CFLAGS=$safe_CFLAGS + +AC_SUBST(FLAG_FNO_STACK_PROTECTOR) + +if test x$no_stack_protector = xyes; then + CFLAGS="$CFLAGS -fno-stack-protector" +fi + + # does this compiler support __builtin_expect? AC_MSG_CHECKING([if gcc supports __builtin_expect])