930-fix-mips-noexecstack.patch (3716B)
1 From da45b3fde60095756f5f6030f6012c23a3d34429 Mon Sep 17 00:00:00 2001 2 From: Andrew McDonnell <bugs@andrewmcdonnell.net> 3 Date: Fri, 3 Oct 2014 19:09:00 +0930 4 Subject: Add .note.GNU-stack section 5 6 See http://lists.busybox.net/pipermail/uclibc/2014-October/048671.html 7 Below copied from https://gcc.gnu.org/ml/gcc-patches/2014-09/msg02430.html 8 9 Re: [Patch, MIPS] Add .note.GNU-stack section 10 11 From: Steve Ellcey <sellcey at mips dot com> 12 13 On Wed, 2014-09-10 at 10:15 -0700, Eric Christopher wrote: 14 > 15 > 16 > On Wed, Sep 10, 2014 at 9:27 AM, <pinskia@gmail.com> wrote: 17 18 > This works except you did not update the assembly files in 19 > libgcc or glibc. We (Cavium) have the same patch in our tree 20 > for a few released versions. 21 22 > Mind just checking yours in then Andrew? 23 24 > Thanks! 25 > -eric 26 27 I talked to Andrew about what files he changed in GCC and created and 28 tested this new patch. Andrew also mentioned changing some assembly 29 files in glibc but I don't see any use of '.section .note.GNU-stack' in 30 any assembly files in glibc (for any platform) so I wasn't planning on 31 creating a glibc to add them to mips glibc assembly language files. 32 33 OK to check in this patch? 34 35 Steve Ellcey 36 sellcey@mips.com 37 38 39 40 2014-09-26 Steve Ellcey <sellcey@mips.com> 41 --- 42 gcc/config/mips/mips.c | 3 +++ 43 libgcc/config/mips/crti.S | 4 ++++ 44 libgcc/config/mips/crtn.S | 3 +++ 45 libgcc/config/mips/mips16.S | 4 ++++ 46 libgcc/config/mips/vr4120-div.S | 4 ++++ 47 5 files changed, 18 insertions(+) 48 49 --- a/gcc/config/mips/mips.c 50 +++ b/gcc/config/mips/mips.c 51 @@ -19629,6 +19629,9 @@ mips_lra_p (void) 52 #undef TARGET_LRA_P 53 #define TARGET_LRA_P mips_lra_p 54 55 +#undef TARGET_ASM_FILE_END 56 +#define TARGET_ASM_FILE_END file_end_indicate_exec_stack 57 + 58 struct gcc_target targetm = TARGET_INITIALIZER; 59 60 #include "gt-mips.h" 61 --- a/libgcc/config/mips/crti.S 62 +++ b/libgcc/config/mips/crti.S 63 @@ -21,6 +21,10 @@ a copy of the GCC Runtime Library Except 64 see the files COPYING3 and COPYING.RUNTIME respectively. If not, see 65 <http://www.gnu.org/licenses/>. */ 66 67 + 68 +/* An executable stack is *not* required for these functions. */ 69 + .section .note.GNU-stack,"",%progbits 70 + 71 /* 4 slots for argument spill area. 1 for cpreturn, 1 for stack. 72 Return spill offset of 40 and 20. Aligned to 16 bytes for n32. */ 73 74 --- a/libgcc/config/mips/crtn.S 75 +++ b/libgcc/config/mips/crtn.S 76 @@ -21,6 +21,9 @@ a copy of the GCC Runtime Library Except 77 see the files COPYING3 and COPYING.RUNTIME respectively. If not, see 78 <http://www.gnu.org/licenses/>. */ 79 80 +/* An executable stack is *not* required for these functions. */ 81 + .section .note.GNU-stack,"",%progbits 82 + 83 /* 4 slots for argument spill area. 1 for cpreturn, 1 for stack. 84 Return spill offset of 40 and 20. Aligned to 16 bytes for n32. */ 85 86 --- a/libgcc/config/mips/mips16.S 87 +++ b/libgcc/config/mips/mips16.S 88 @@ -48,6 +48,10 @@ see the files COPYING3 and COPYING.RUNTI 89 values using the soft-float calling convention, but do the actual 90 operation using the hard floating point instructions. */ 91 92 +/* An executable stack is *not* required for these functions. */ 93 + .section .note.GNU-stack,"",%progbits 94 + .previous 95 + 96 #if defined _MIPS_SIM && (_MIPS_SIM == _ABIO32 || _MIPS_SIM == _ABIO64) 97 98 /* This file contains 32-bit assembly code. */ 99 --- a/libgcc/config/mips/vr4120-div.S 100 +++ b/libgcc/config/mips/vr4120-div.S 101 @@ -26,6 +26,10 @@ see the files COPYING3 and COPYING.RUNTI 102 -mfix-vr4120. div and ddiv do not give the correct result when one 103 of the operands is negative. */ 104 105 +/* An executable stack is *not* required for these functions. */ 106 + .section .note.GNU-stack,"",%progbits 107 + .previous 108 + 109 .set nomips16 110 111 #define DIV \