Fix build on rhES5
authorTom Tromey <tromey@adacore.com>
Wed, 12 May 2021 18:39:22 +0000 (12:39 -0600)
committerTom Tromey <tromey@adacore.com>
Tue, 9 Nov 2021 15:21:18 +0000 (08:21 -0700)
The rhES5 build failed due to an upstream import a while back.  The
bug here is that, while the 'personality' function exists,
ADDR_NO_RANDOMIZE is only defined in <linux/personality.h>, not
<sys/personality.h>.

However, <linux/personality.h> does not declare the 'personality'
function, and <sys/personality.h> and <linux/personality.h> cannot
both be included.

This patch restores one of the removed configure checks and updates
the code to check it.

We had this as a local patch at AdaCore, because it seemed like there
was no interest upstream.  However, now it turns out that this fixes
PR build/28555, so I'm sending it now.

gdb/config.in
gdb/configure
gdb/nat/linux-personality.c
gdbserver/config.in
gdbserver/configure
gdbsupport/common.m4
gdbsupport/config.in
gdbsupport/configure

index c61f7a9135267da5f1356219d1621a38133bf764..773a0ba91efdb7cf0f9556b6907b4bb61853db05 100644 (file)
 /* define if the compiler supports basic C++11 syntax */
 #undef HAVE_CXX11
 
+/* Define to 1 if you have the declaration of `ADDR_NO_RANDOMIZE', and to 0 if
+   you don't. */
+#undef HAVE_DECL_ADDR_NO_RANDOMIZE
+
 /* Define to 1 if you have the declaration of `asprintf', and to 0 if you
    don't. */
 #undef HAVE_DECL_ASPRINTF
index d5c1883c25be0a9826fbfab2402dfed2d9501742..6e2dfb766c86bba816c217ba580ab3df5d1cf293 100755 (executable)
 done
 
 
+  # This is needed for RHEL 5 and uclibc-ng < 1.0.39.
+  # These did not define ADDR_NO_RANDOMIZE in sys/personality.h,
+  # only in linux/personality.h.
+  ac_fn_c_check_decl "$LINENO" "ADDR_NO_RANDOMIZE" "ac_cv_have_decl_ADDR_NO_RANDOMIZE" "#include <sys/personality.h>
+"
+if test "x$ac_cv_have_decl_ADDR_NO_RANDOMIZE" = xyes; then :
+  ac_have_decl=1
+else
+  ac_have_decl=0
+fi
+
+cat >>confdefs.h <<_ACEOF
+#define HAVE_DECL_ADDR_NO_RANDOMIZE $ac_have_decl
+_ACEOF
+
+
   ac_fn_c_check_decl "$LINENO" "strstr" "ac_cv_have_decl_strstr" "$ac_includes_default"
 if test "x$ac_cv_have_decl_strstr" = xyes; then :
   ac_have_decl=1
index 9ce345bc6de2a8c4a8fff4e1615f773bc8c51cad..27999fd19df6a67c27c4736ff95136db86d54266 100644 (file)
 
 #include <sys/personality.h>
 
+# if !HAVE_DECL_ADDR_NO_RANDOMIZE
+#  define ADDR_NO_RANDOMIZE 0x0040000
+# endif /* ! HAVE_DECL_ADDR_NO_RANDOMIZE */
+
 /* See comment on nat/linux-personality.h.  */
 
 maybe_disable_address_space_randomization::
index 5fb5b7a35f7a5aad0bebb88654169c7cf7a3fe98..39ddc7c0edb82fbaca32d1f7a2afedcc46b1a4a0 100644 (file)
 /* define if the compiler supports basic C++11 syntax */
 #undef HAVE_CXX11
 
+/* Define to 1 if you have the declaration of `ADDR_NO_RANDOMIZE', and to 0 if
+   you don't. */
+#undef HAVE_DECL_ADDR_NO_RANDOMIZE
+
 /* Define to 1 if you have the declaration of `asprintf', and to 0 if you
    don't. */
 #undef HAVE_DECL_ASPRINTF
index 0e32d198ad909192312784c9613c7795edb38311..8e2bd4e1ba5a29b24fab52931f39af51c3abe51e 100755 (executable)
@@ -7139,6 +7139,22 @@ fi
 done
 
 
+  # This is needed for RHEL 5 and uclibc-ng < 1.0.39.
+  # These did not define ADDR_NO_RANDOMIZE in sys/personality.h,
+  # only in linux/personality.h.
+  ac_fn_c_check_decl "$LINENO" "ADDR_NO_RANDOMIZE" "ac_cv_have_decl_ADDR_NO_RANDOMIZE" "#include <sys/personality.h>
+"
+if test "x$ac_cv_have_decl_ADDR_NO_RANDOMIZE" = xyes; then :
+  ac_have_decl=1
+else
+  ac_have_decl=0
+fi
+
+cat >>confdefs.h <<_ACEOF
+#define HAVE_DECL_ADDR_NO_RANDOMIZE $ac_have_decl
+_ACEOF
+
+
   ac_fn_c_check_decl "$LINENO" "strstr" "ac_cv_have_decl_strstr" "$ac_includes_default"
 if test "x$ac_cv_have_decl_strstr" = xyes; then :
   ac_have_decl=1
index 07c7b2a9bec3635407d43b8c446afd6adf2a57bd..81e7c75f51dcba13ef74e81b79ef1da0281e8ca5 100644 (file)
@@ -55,6 +55,11 @@ AC_DEFUN([GDB_AC_COMMON], [
                  ptrace64 sbrk setns sigaltstack sigprocmask \
                  setpgid setpgrp getrusage getauxval sigtimedwait])
 
+  # This is needed for RHEL 5 and uclibc-ng < 1.0.39.
+  # These did not define ADDR_NO_RANDOMIZE in sys/personality.h,
+  # only in linux/personality.h.
+  AC_CHECK_DECLS([ADDR_NO_RANDOMIZE],,, [#include <sys/personality.h>])
+
   AC_CHECK_DECLS([strstr])
 
   # ----------------------- #
index f6b0159bd6269c06787caec24e2942cf22e1d5fb..a7ae23b498495d0857fa44f8f737962578dec012 100644 (file)
 /* define if the compiler supports basic C++11 syntax */
 #undef HAVE_CXX11
 
+/* Define to 1 if you have the declaration of `ADDR_NO_RANDOMIZE', and to 0 if
+   you don't. */
+#undef HAVE_DECL_ADDR_NO_RANDOMIZE
+
 /* Define to 1 if you have the declaration of `asprintf', and to 0 if you
    don't. */
 #undef HAVE_DECL_ASPRINTF
index d22f225ef7e4361a1f6e0a260fba558a517be02f..0b4e81a9c16eaefc79b4f2431c163780563ff46e 100755 (executable)
@@ -8152,6 +8152,22 @@ fi
 done
 
 
+  # This is needed for RHEL 5 and uclibc-ng < 1.0.39.
+  # These did not define ADDR_NO_RANDOMIZE in sys/personality.h,
+  # only in linux/personality.h.
+  ac_fn_c_check_decl "$LINENO" "ADDR_NO_RANDOMIZE" "ac_cv_have_decl_ADDR_NO_RANDOMIZE" "#include <sys/personality.h>
+"
+if test "x$ac_cv_have_decl_ADDR_NO_RANDOMIZE" = xyes; then :
+  ac_have_decl=1
+else
+  ac_have_decl=0
+fi
+
+cat >>confdefs.h <<_ACEOF
+#define HAVE_DECL_ADDR_NO_RANDOMIZE $ac_have_decl
+_ACEOF
+
+
   ac_fn_c_check_decl "$LINENO" "strstr" "ac_cv_have_decl_strstr" "$ac_includes_default"
 if test "x$ac_cv_have_decl_strstr" = xyes; then :
   ac_have_decl=1