toolchain/gcc: remove upstreamed patch, add backport
This patch has been upstream since GCC 10. Dragan Mladjenovic (2): Emit .note.GNU-stack for soft-float linux targets. Emit .note.GNU-stack for hard-float linux targets. Link: https://gcc.gnu.org/g:a3c1e1f2ff88 Link: https://gcc.gnu.org/g:54b3d52c3cca Add backport patch to define TARGET_LIBC_GNUSTACK on musl to add .note.GNU-stack on hard-float MIPS targets. Link: https://gcc.gnu.org/g:25abbb924968 The net effect should be the exact same functionality while following upstream code instead of a custom outdated patch. Signed-off-by: Ilya Lipnitskiy <ilya.lipnitskiy@gmail.com>
This commit is contained in:
parent
eabb4a5c5d
commit
475b366a5b
|
@ -0,0 +1,46 @@
|
||||||
|
From ea650cae26da4a8fc04f0c4666f4dd776d0b5fc0 Mon Sep 17 00:00:00 2001
|
||||||
|
From: Ilya Lipnitskiy <ilya.lipnitskiy@gmail.com>
|
||||||
|
Date: Sun, 14 Nov 2021 21:54:25 -0800
|
||||||
|
Subject: [PATCH] configure: define TARGET_LIBC_GNUSTACK on musl
|
||||||
|
|
||||||
|
musl only uses PT_GNU_STACK to set default thread stack size and has no
|
||||||
|
executable stack support[0], so there is no reason not to emit the
|
||||||
|
.note.GNU-stack section on musl builds.
|
||||||
|
|
||||||
|
[0]: https://lore.kernel.org/all/20190423192534.GN23599@brightrain.aerifal.cx/T/#u
|
||||||
|
|
||||||
|
gcc/ChangeLog:
|
||||||
|
|
||||||
|
* configure: Regenerate.
|
||||||
|
* configure.ac: define TARGET_LIBC_GNUSTACK on musl
|
||||||
|
|
||||||
|
Signed-off-by: Ilya Lipnitskiy <ilya.lipnitskiy@gmail.com>
|
||||||
|
---
|
||||||
|
gcc/configure | 3 +++
|
||||||
|
gcc/configure.ac | 3 +++
|
||||||
|
2 files changed, 6 insertions(+)
|
||||||
|
|
||||||
|
--- a/gcc/configure
|
||||||
|
+++ b/gcc/configure
|
||||||
|
@@ -30954,6 +30954,9 @@ fi
|
||||||
|
# Check if the target LIBC handles PT_GNU_STACK.
|
||||||
|
gcc_cv_libc_gnustack=unknown
|
||||||
|
case "$target" in
|
||||||
|
+ mips*-*-linux-musl*)
|
||||||
|
+ gcc_cv_libc_gnustack=yes
|
||||||
|
+ ;;
|
||||||
|
mips*-*-linux*)
|
||||||
|
|
||||||
|
if test $glibc_version_major -gt 2 \
|
||||||
|
--- a/gcc/configure.ac
|
||||||
|
+++ b/gcc/configure.ac
|
||||||
|
@@ -6788,6 +6788,9 @@ fi
|
||||||
|
# Check if the target LIBC handles PT_GNU_STACK.
|
||||||
|
gcc_cv_libc_gnustack=unknown
|
||||||
|
case "$target" in
|
||||||
|
+ mips*-*-linux-musl*)
|
||||||
|
+ gcc_cv_libc_gnustack=yes
|
||||||
|
+ ;;
|
||||||
|
mips*-*-linux*)
|
||||||
|
GCC_GLIBC_VERSION_GTE_IFELSE([2], [31], [gcc_cv_libc_gnustack=yes], )
|
||||||
|
;;
|
|
@ -1,111 +0,0 @@
|
||||||
From da45b3fde60095756f5f6030f6012c23a3d34429 Mon Sep 17 00:00:00 2001
|
|
||||||
From: Andrew McDonnell <bugs@andrewmcdonnell.net>
|
|
||||||
Date: Fri, 3 Oct 2014 19:09:00 +0930
|
|
||||||
Subject: Add .note.GNU-stack section
|
|
||||||
|
|
||||||
See http://lists.busybox.net/pipermail/uclibc/2014-October/048671.html
|
|
||||||
Below copied from https://gcc.gnu.org/ml/gcc-patches/2014-09/msg02430.html
|
|
||||||
|
|
||||||
Re: [Patch, MIPS] Add .note.GNU-stack section
|
|
||||||
|
|
||||||
From: Steve Ellcey <sellcey at mips dot com>
|
|
||||||
|
|
||||||
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>
|
|
||||||
---
|
|
||||||
gcc/config/mips/mips.c | 3 +++
|
|
||||||
libgcc/config/mips/crti.S | 4 ++++
|
|
||||||
libgcc/config/mips/crtn.S | 3 +++
|
|
||||||
libgcc/config/mips/mips16.S | 4 ++++
|
|
||||||
libgcc/config/mips/vr4120-div.S | 4 ++++
|
|
||||||
5 files changed, 18 insertions(+)
|
|
||||||
|
|
||||||
--- a/gcc/config/mips/mips.c
|
|
||||||
+++ b/gcc/config/mips/mips.c
|
|
||||||
@@ -22890,6 +22890,9 @@ mips_asm_file_end (void)
|
|
||||||
#define TARGET_ASM_FILE_END mips_asm_file_end
|
|
||||||
|
|
||||||
|
|
||||||
+#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"
|
|
||||||
--- a/libgcc/config/mips/crti.S
|
|
||||||
+++ b/libgcc/config/mips/crti.S
|
|
||||||
@@ -24,6 +24,10 @@ see the files COPYING3 and COPYING.RUNTI
|
|
||||||
/* An executable stack is *not* required for these functions. */
|
|
||||||
#include "gnustack.h"
|
|
||||||
|
|
||||||
+
|
|
||||||
+/* 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. */
|
|
||||||
|
|
||||||
--- a/libgcc/config/mips/crtn.S
|
|
||||||
+++ b/libgcc/config/mips/crtn.S
|
|
||||||
@@ -24,6 +24,9 @@ see the files COPYING3 and COPYING.RUNTI
|
|
||||||
/* An executable stack is *not* required for these functions. */
|
|
||||||
#include "gnustack.h"
|
|
||||||
|
|
||||||
+/* 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. */
|
|
||||||
|
|
||||||
--- a/libgcc/config/mips/mips16.S
|
|
||||||
+++ b/libgcc/config/mips/mips16.S
|
|
||||||
@@ -51,6 +51,10 @@ see the files COPYING3 and COPYING.RUNTI
|
|
||||||
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. */
|
|
||||||
--- a/libgcc/config/mips/vr4120-div.S
|
|
||||||
+++ b/libgcc/config/mips/vr4120-div.S
|
|
||||||
@@ -29,6 +29,10 @@ see the files COPYING3 and COPYING.RUNTI
|
|
||||||
-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 \
|
|
Loading…
Reference in New Issue