[Patch, MIPS] Add .note.GNU-stack section

Steve Ellcey sellcey@mips.com
Fri Sep 26 20:00:00 GMT 2014


On Wed, 2014-09-10 at 10:15 -0700, Eric Christopher wrote:
> 
> 
> On Wed, Sep 10, 2014 at 9:27 AM, <pinskia@gmail.com> wrote:

>         This works except you did not update the assembly files in
>         libgcc or glibc. We (Cavium) have the same patch in our tree
>         for a few released versions.

> Mind just checking yours in then Andrew?

> Thanks!
> -eric

I talked to Andrew about what files he changed in GCC and created and
tested this new patch.  Andrew also mentioned changing some assembly
files in glibc but I don't see any use of '.section .note.GNU-stack' in
any assembly files in glibc (for any platform) so I wasn't planning on
creating a glibc to add them to mips glibc assembly language files.

OK to check in this patch?

Steve Ellcey
sellcey@mips.com



2014-09-26  Steve Ellcey  <sellcey@mips.com>

	* config/mips/mips.c (TARGET_ASM_FILE_END): Define.
	* libgcc/config/mips/mips16.S: Add .note.GNU-stack section.
	* libgcc/config/mips/vr4120-div.S: Ditto.
	* libgcc/config/mips/crti.S: Ditto.
	* libgcc/config/mips/crtn.S: Ditto.


diff --git a/gcc/config/mips/mips.c b/gcc/config/mips/mips.c
index f9713c1..39020d7 100644
--- a/gcc/config/mips/mips.c
+++ b/gcc/config/mips/mips.c
@@ -19146,6 +19146,9 @@ mips_lra_p (void)
 #undef TARGET_LRA_P
 #define TARGET_LRA_P mips_lra_p
 
+#undef TARGET_ASM_FILE_END
+#define TARGET_ASM_FILE_END file_end_indicate_exec_stack
+
 struct gcc_target targetm = TARGET_INITIALIZER;
 
 #include "gt-mips.h"
diff --git a/libgcc/config/mips/crti.S b/libgcc/config/mips/crti.S
index 6980594..93436c0 100644
--- a/libgcc/config/mips/crti.S
+++ b/libgcc/config/mips/crti.S
@@ -21,6 +21,10 @@ 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.  */
+	.section .note.GNU-stack,"",%progbits
+
 /* 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/crtn.S b/libgcc/config/mips/crtn.S
index 0de2d0c..6f2c301 100644
--- a/libgcc/config/mips/crtn.S
+++ b/libgcc/config/mips/crtn.S
@@ -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.  */
+        .section .note.GNU-stack,"",%progbits
+
 /* 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/mips16.S b/libgcc/config/mips/mips16.S
index dde8939..58e4377 100644
--- a/libgcc/config/mips/mips16.S
+++ b/libgcc/config/mips/mips16.S
@@ -35,6 +35,10 @@ see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
    values using the soft-float calling convention, but do the actual
    operation using the hard floating point instructions.  */
 
+/* An executable stack is *not* required for these functions.  */
+        .section .note.GNU-stack,"",%progbits
+	.previous
+
 #if defined _MIPS_SIM && (_MIPS_SIM == _ABIO32 || _MIPS_SIM == _ABIO64)
 
 /* This file contains 32-bit assembly code.  */
diff --git a/libgcc/config/mips/vr4120-div.S b/libgcc/config/mips/vr4120-div.S
index 76c4e7a..664d3c3 100644
--- a/libgcc/config/mips/vr4120-div.S
+++ b/libgcc/config/mips/vr4120-div.S
@@ -26,6 +26,10 @@ see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
    -mfix-vr4120.  div and ddiv do not give the correct result when one
    of the operands is negative.  */
 
+/* An executable stack is *not* required for these functions.  */
+        .section .note.GNU-stack,"",%progbits
+	.previous
+
 	.set	nomips16
 
 #define DIV								\




More information about the Gcc-patches mailing list