aboutsummaryrefslogtreecommitdiff
path: root/gcc
diff options
context:
space:
mode:
Diffstat (limited to 'gcc')
-rw-r--r--gcc/config.in7
-rwxr-xr-xgcc/configure40
-rw-r--r--gcc/configure.ac15
-rw-r--r--gcc/gcc.cc7
4 files changed, 67 insertions, 2 deletions
diff --git a/gcc/config.in b/gcc/config.in
index 7c89cab..a79c51a 100644
--- a/gcc/config.in
+++ b/gcc/config.in
@@ -2320,6 +2320,13 @@
#endif
+/* Define if personality and ADDR_NO_RANDOMIZE are declared in
+ sys/personality.h. */
+#ifndef USED_FOR_TARGET
+#undef HOST_HAS_PERSONALITY_ADDR_NO_RANDOMIZE
+#endif
+
+
/* Define which stat syscall is able to handle 64bit indodes. */
#ifndef USED_FOR_TARGET
#undef HOST_STAT_FOR_64BIT_INODES
diff --git a/gcc/configure b/gcc/configure
index ab6bec1..821f8b4 100755
--- a/gcc/configure
+++ b/gcc/configure
@@ -12694,6 +12694,42 @@ $as_echo "#define HOST_HAS_O_NONBLOCK 1" >>confdefs.h
fi
+# Check if personality and ADDR_NO_RANDOMIZE are declared
+# in sys/personality.h
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for personality ADDR_NO_RANDOMIZE" >&5
+$as_echo_n "checking for personality ADDR_NO_RANDOMIZE... " >&6; }
+if ${ac_cv_personality_addr_no_randomize+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+
+cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h. */
+
+#include <sys/personality.h>
+int
+main ()
+{
+
+personality (personality (0xffffffffU) | ADDR_NO_RANDOMIZE);
+ ;
+ return 0;
+}
+_ACEOF
+if ac_fn_cxx_try_compile "$LINENO"; then :
+ ac_cv_personality_addr_no_randomize=yes
+else
+ ac_cv_personality_addr_no_randomize=no
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_personality_addr_no_randomize" >&5
+$as_echo "$ac_cv_personality_addr_no_randomize" >&6; }
+if test $ac_cv_personality_addr_no_randomize = yes; then
+
+$as_echo "#define HOST_HAS_PERSONALITY_ADDR_NO_RANDOMIZE 1" >>confdefs.h
+
+fi
+
# C++ Modules would like some networking features to provide the mapping
# server. You can still use modules without them though.
@@ -21484,7 +21520,7 @@ else
lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2
lt_status=$lt_dlunknown
cat > conftest.$ac_ext <<_LT_EOF
-#line 21487 "configure"
+#line 21523 "configure"
#include "confdefs.h"
#if HAVE_DLFCN_H
@@ -21590,7 +21626,7 @@ else
lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2
lt_status=$lt_dlunknown
cat > conftest.$ac_ext <<_LT_EOF
-#line 21593 "configure"
+#line 21629 "configure"
#include "confdefs.h"
#if HAVE_DLFCN_H
diff --git a/gcc/configure.ac b/gcc/configure.ac
index fca0579..3d0a4e6 100644
--- a/gcc/configure.ac
+++ b/gcc/configure.ac
@@ -1781,6 +1781,21 @@ if test $ac_cv_have_decl_O_NONBLOCK = yes; then
[Define if O_NONBLOCK supported by fcntl.])
fi
+# Check if personality and ADDR_NO_RANDOMIZE are declared
+# in sys/personality.h
+AC_CACHE_CHECK(for personality ADDR_NO_RANDOMIZE,
+ ac_cv_personality_addr_no_randomize, [
+AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[
+#include <sys/personality.h>]], [[
+personality (personality (0xffffffffU) | ADDR_NO_RANDOMIZE);]])],
+[ac_cv_personality_addr_no_randomize=yes],
+[ac_cv_personality_addr_no_randomize=no])])
+if test $ac_cv_personality_addr_no_randomize = yes; then
+ AC_DEFINE(HOST_HAS_PERSONALITY_ADDR_NO_RANDOMIZE, 1,
+ [Define if personality and ADDR_NO_RANDOMIZE are declared in
+sys/personality.h.])
+fi
+
# C++ Modules would like some networking features to provide the mapping
# server. You can still use modules without them though.
diff --git a/gcc/gcc.cc b/gcc/gcc.cc
index 9064671..4fd87f2 100644
--- a/gcc/gcc.cc
+++ b/gcc/gcc.cc
@@ -30,6 +30,9 @@ compilation is specified by a string called a "spec". */
#define INCLUDE_STRING
#include "config.h"
#include "system.h"
+#ifdef HOST_HAS_PERSONALITY_ADDR_NO_RANDOMIZE
+#include <sys/personality.h>
+#endif
#include "coretypes.h"
#include "multilib.h" /* before tm.h */
#include "tm.h"
@@ -8003,6 +8006,10 @@ try_generate_repro (const char **argv)
else
new_argv[out_arg] = "-o-";
+#ifdef HOST_HAS_PERSONALITY_ADDR_NO_RANDOMIZE
+ personality (personality (0xffffffffU) | ADDR_NO_RANDOMIZE);
+#endif
+
int status;
for (attempt = 0; attempt < RETRY_ICE_ATTEMPTS; ++attempt)
{