Emit .note.GNU-stack for soft-float linux targets.
authorDragan Mladjenovic <dragan.mladjenovic@rt-rk.com>
Thu, 23 Jan 2020 15:38:14 +0000 (16:38 +0100)
committerDragan Mladjenovic <dragan.mladjenovic@rt-rk.com>
Thu, 23 Jan 2020 16:00:02 +0000 (17:00 +0100)
gcc/ChangeLog:

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

* config/mips/linux.h (NEED_INDICATE_EXEC_STACK): Define to
TARGET_SOFT_FLOAT.
* config/mips/mips.c (TARGET_ASM_FILE_END): Define to ...
(mips_asm_file_end): New function. Delegate to
file_end_indicate_exec_stack if NEED_INDICATE_EXEC_STACK is true.
* config/mips/mips.h (NEED_INDICATE_EXEC_STACK): Define to 0.

libgcc/ChangeLog:

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

* config/mips/gnustack.h: New file.
* config/mips/crti.S: Include gnustack.h.
* config/mips/crtn.S: Likewise.
* config/mips/mips16.S: Likewise.
* config/mips/vr4120-div.S: Likewise.

gcc/ChangeLog
gcc/config/mips/linux.h
gcc/config/mips/mips.c
gcc/config/mips/mips.h
libgcc/ChangeLog
libgcc/config/mips/crti.S
libgcc/config/mips/crtn.S
libgcc/config/mips/gnustack.h [new file with mode: 0644]
libgcc/config/mips/mips16.S
libgcc/config/mips/vr4120-div.S

index 3d50dabe603ec72917d509af8be095d97caee7b2..b8b9b550febb198deb6b3340ada90e663b56969f 100644 (file)
@@ -1,3 +1,12 @@
+2020-01-23  Dragan Mladjenovic  <dmladjenovic@wavecomp.com>
+
+       * config/mips/linux.h (NEED_INDICATE_EXEC_STACK): Define to
+       TARGET_SOFT_FLOAT.
+       * config/mips/mips.c (TARGET_ASM_FILE_END): Define to ...
+       (mips_asm_file_end): New function. Delegate to
+       file_end_indicate_exec_stack if NEED_INDICATE_EXEC_STACK is true.
+       * config/mips/mips.h (NEED_INDICATE_EXEC_STACK): Define to 0.
+
 2020-01-23  Jakub Jelinek  <jakub@redhat.com>
 
        PR target/93376
index f8db8d525070d34004ccd00bfeda9574f2e80a91..183b62f5041a8b56e6d28f203812d31b595e40d4 100644 (file)
@@ -50,3 +50,7 @@ along with GCC; see the file COPYING3.  If not see
 #define GNU_USER_DYNAMIC_LINKERN32 \
   CHOOSE_DYNAMIC_LINKER (GLIBC_DYNAMIC_LINKERN32, UCLIBC_DYNAMIC_LINKERN32, \
                          BIONIC_DYNAMIC_LINKERN32, MUSL_DYNAMIC_LINKERN32)
+
+#undef NEED_INDICATE_EXEC_STACK
+
+#define NEED_INDICATE_EXEC_STACK TARGET_SOFT_FLOAT
index c9a706e2c55736f8a4071441c459fadfbc564cbf..dae189ed20d6095202ced508898479dc995c3e8e 100644 (file)
@@ -22550,6 +22550,13 @@ mips_starting_frame_offset (void)
     return 0;
   return crtl->outgoing_args_size + MIPS_GP_SAVE_AREA_SIZE;
 }
+
+static void
+mips_asm_file_end (void)
+{
+  if (NEED_INDICATE_EXEC_STACK)
+    file_end_indicate_exec_stack ();
+}
 \f
 /* Initialize the GCC target structure.  */
 #undef TARGET_ASM_ALIGNED_HI_OP
@@ -22857,6 +22864,10 @@ mips_starting_frame_offset (void)
 #undef TARGET_STARTING_FRAME_OFFSET
 #define TARGET_STARTING_FRAME_OFFSET mips_starting_frame_offset
 
+#undef TARGET_ASM_FILE_END
+#define TARGET_ASM_FILE_END mips_asm_file_end
+
+
 struct gcc_target targetm = TARGET_INITIALIZER;
 \f
 #include "gt-mips.h"
index 1f9bc868474489e1313d3eb0a20d4a3d0c5cf7d3..3ce0c19a29a0139f7e491cafd2976a2a42e33a83 100644 (file)
@@ -3438,3 +3438,5 @@ struct GTY(())  machine_function {
   (TARGET_LOAD_STORE_PAIRS \
    && (TUNE_P5600 || TUNE_I6400 || TUNE_P6600) \
    && !TARGET_MICROMIPS && !TARGET_FIX_24K)
+
+#define NEED_INDICATE_EXEC_STACK 0
index bd8cc383804c10e18c5d21e1b9538b15c6f62130..eddcd9f42174bf98e4f198db37f6fe5c03ac645f 100644 (file)
@@ -1,3 +1,11 @@
+2020-01-23  Dragan Mladjenovic  <dmladjenovic@wavecomp.com>
+
+       * config/mips/gnustack.h: New file.
+       * config/mips/crti.S: Include gnustack.h.
+       * config/mips/crtn.S: Likewise.
+       * config/mips/mips16.S: Likewise.
+       * config/mips/vr4120-div.S: Likewise.
+
 2020-01-23  Martin Liska  <mliska@suse.cz>
 
        * libgcov-driver.c (prune_topn_counter): Remove
index 3347a78e7c78f1d0a3c568efd3178df0bdcf9b09..6705642166c0531680ffce765b99501a1cd0be9f 100644 (file)
@@ -21,6 +21,9 @@ a copy of the GCC Runtime Library Exception along with this program;
 see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
 <http://www.gnu.org/licenses/>.  */
 
+/* An executable stack is *not* required for these functions.  */
+#include "gnustack.h"
+
 /* 4 slots for argument spill area.  1 for cpreturn, 1 for stack.
    Return spill offset of 40 and 20.  Aligned to 16 bytes for n32.  */
 
index 7f46829bae3c6e69178436da694cea15487e8592..ceede64273f934649c3c3d6a0024a28714d93a5b 100644 (file)
@@ -21,6 +21,9 @@ a copy of the GCC Runtime Library Exception along with this program;
 see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
 <http://www.gnu.org/licenses/>.  */
 
+/* An executable stack is *not* required for these functions.  */
+#include "gnustack.h"
+
 /* 4 slots for argument spill area.  1 for cpreturn, 1 for stack.
    Return spill offset of 40 and 20.  Aligned to 16 bytes for n32.  */
 
diff --git a/libgcc/config/mips/gnustack.h b/libgcc/config/mips/gnustack.h
new file mode 100644 (file)
index 0000000..c7e9fe7
--- /dev/null
@@ -0,0 +1,7 @@
+#include "config.h"
+#if defined(__ELF__) && defined(__linux__)
+#if defined (__mips_soft_float)
+       .section .note.GNU-stack,"",%progbits
+       .previous
+#endif
+#endif
index 396285eeabeed6a699f7567114f73506dc07e513..5c3678b620f15d2e747e6a0f92b961e6b7decf00 100644 (file)
@@ -21,6 +21,9 @@ a copy of the GCC Runtime Library Exception along with this program;
 see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
 <http://www.gnu.org/licenses/>.  */
 
+/* An executable stack is *not* required for these functions.  */
+#include "gnustack.h"
+
 #include "auto-host.h"
 
 #if defined(__mips_micromips) || defined(__mips_soft_float) \
index 92226b585fbecde2aafff1bb0b2e7757f3ede894..2999c772616730cf90af174b43edba0784f6f969 100644 (file)
@@ -22,6 +22,9 @@ a copy of the GCC Runtime Library Exception along with this program;
 see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
 <http://www.gnu.org/licenses/>.  */
 
+/* An executable stack is *not* required for these functions.  */
+#include "gnustack.h"
+
 /* This file contains functions which implement divsi3 and modsi3 for
    -mfix-vr4120.  div and ddiv do not give the correct result when one
    of the operands is negative.  */