Emit .note.GNU-stack for hard-float linux targets.
authorDragan Mladjenovic <dragan.mladjenovic@rt-rk.com>
Thu, 23 Jan 2020 15:37:20 +0000 (16:37 +0100)
committerDragan Mladjenovic <dragan.mladjenovic@rt-rk.com>
Thu, 23 Jan 2020 16:00:03 +0000 (17:00 +0100)
libgcc/ChangeLog:

2020-01-23  Dragan Mladjenovic  <dmladjenovic@wavecomp.com>

* config/mips/gnustack.h: Check for TARGET_LIBC_GNUSTACK also.

gcc/ChangeLog:

2020-01-23  Dragan Mladjenovic  <dmladjenovic@wavecomp.com>

* config.in: Regenerated.
* config/mips/linux.h (NEED_INDICATE_EXEC_STACK): Define to 1
for TARGET_LIBC_GNUSTACK.
* configure: Regenerated.
* configure.ac: Define TARGET_LIBC_GNUSTACK if glibc version is
found to be 2.31 or greater.

gcc/ChangeLog
gcc/config/mips/linux.h
gcc/configure.ac
libgcc/ChangeLog
libgcc/config/mips/gnustack.h

index b8b9b550febb198deb6b3340ada90e663b56969f..840668d965799e22c277947b75fb3f0a327240ba 100644 (file)
@@ -1,3 +1,12 @@
+2020-01-23  Dragan Mladjenovic  <dmladjenovic@wavecomp.com>
+
+       * config.in: Regenerated.
+       * config/mips/linux.h (NEED_INDICATE_EXEC_STACK): Define to 1
+       for TARGET_LIBC_GNUSTACK.
+       * configure: Regenerated.
+       * configure.ac: Define TARGET_LIBC_GNUSTACK if glibc version is
+       found to be 2.31 or greater.
+
 2020-01-23  Dragan Mladjenovic  <dmladjenovic@wavecomp.com>
 
        * config/mips/linux.h (NEED_INDICATE_EXEC_STACK): Define to
index 183b62f5041a8b56e6d28f203812d31b595e40d4..54446e58e5f70007e3214d445e82549e3a5e5d19 100644 (file)
@@ -53,4 +53,8 @@ along with GCC; see the file COPYING3.  If not see
 
 #undef NEED_INDICATE_EXEC_STACK
 
+#ifdef TARGET_LIBC_GNUSTACK
+#define NEED_INDICATE_EXEC_STACK 1
+#else
 #define NEED_INDICATE_EXEC_STACK TARGET_SOFT_FLOAT
+#endif
index 4a1790b4ba79431fbe78fed588cb355ce26ba184..a7521ee99436a7c12159bdde0471dc66d3c4288e 100644 (file)
@@ -6247,6 +6247,18 @@ if test x$gcc_cv_libc_provides_hwcap_in_tcb = xyes; then
            [Define if your target C Library provides the AT_HWCAP value in the TCB])
 fi
 
+# Check if the target LIBC handles PT_GNU_STACK.
+gcc_cv_libc_gnustack=unknown
+case "$target" in
+  mips*-*-linux*)
+    GCC_GLIBC_VERSION_GTE_IFELSE([2], [31], [gcc_cv_libc_gnustack=yes], )
+    ;;
+esac
+if test x$gcc_cv_libc_gnustack = xyes; then
+  AC_DEFINE(TARGET_LIBC_GNUSTACK, 1,
+            [Define if your target C Library properly handles PT_GNU_STACK])
+fi
+
 AC_MSG_CHECKING(dl_iterate_phdr in target C library)
 gcc_cv_target_dl_iterate_phdr=unknown
 case "$target" in
index eddcd9f42174bf98e4f198db37f6fe5c03ac645f..bea77b2e00126adf79f76e19c2be79553105bd4b 100644 (file)
@@ -1,3 +1,7 @@
+2020-01-23  Dragan Mladjenovic  <dmladjenovic@wavecomp.com>
+
+       * config/mips/gnustack.h: Check for TARGET_LIBC_GNUSTACK also.
+
 2020-01-23  Dragan Mladjenovic  <dmladjenovic@wavecomp.com>
 
        * config/mips/gnustack.h: New file.
index c7e9fe77cf2daecc6a6721d07079beb9f92b18a6..561b3484bfec16a78959ddd1d663bbb3773df10d 100644 (file)
@@ -1,6 +1,6 @@
 #include "config.h"
 #if defined(__ELF__) && defined(__linux__)
-#if defined (__mips_soft_float)
+#if defined (TARGET_LIBC_GNUSTACK) || defined (__mips_soft_float)
        .section .note.GNU-stack,"",%progbits
        .previous
 #endif