]> git.ipfire.org Git - thirdparty/gcc.git/commitdiff
libgcc: use .init_stack for constructors if available
authorIan Lance Taylor <iant@golang.org>
Fri, 8 Oct 2021 03:22:25 +0000 (20:22 -0700)
committerIan Lance Taylor <iant@golang.org>
Fri, 8 Oct 2021 03:24:43 +0000 (20:24 -0700)
* config/i386/morestack.S: Use .init_array for constructor if
available.
* config/rs6000/morestack.S: Likewise.
* config/s390/morestack.S: Likewise.

libgcc/config/i386/morestack.S
libgcc/config/rs6000/morestack.S
libgcc/config/s390/morestack.S

index 718dbb1d5d2895af8bc9e830d288f3d670514015..2e748eda8a7911b2e5d06cc1cb2e7ca9cf705798 100644 (file)
@@ -23,6 +23,7 @@
 # see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
 # <http://www.gnu.org/licenses/>.
 
+#include "auto-host.h"
 
 # Support for allocating more stack space when using -fsplit-stack.
 # When a function discovers that it needs more stack space, it will
@@ -75,7 +76,7 @@
 # The amount of extra space we ask for.  In general this has to be
 # enough for the dynamic loader to find a symbol and for a signal
 # handler to run.
-       
+
 #ifndef __x86_64__
 #define BACKOFF (1024)
 #else
@@ -160,7 +161,7 @@ __morestack_non_split:
        cmpb    $0x55,1(%eax)
        je      2f
 
-3:     
+3:
        movl    %eax,4(%esp)            # Update return address.
 
        popl    %eax                    # Restore %eax and stack.
@@ -426,7 +427,7 @@ __morestack:
 
 # This is the cleanup code called by the stack unwinder when unwinding
 # through the code between .LEHB0 and .LEHE0 above.
-       
+
 .L1:
        .cfi_restore_state
        subl    $16,%esp                # Maintain 16 byte alignment.
@@ -600,7 +601,7 @@ __morestack:
 
 # This is the cleanup code called by the stack unwinder when unwinding
 # through the code between .LEHB0 and .LEHE0 above.
-       
+
 .L1:
        .cfi_restore_state
        subq    $16,%rsp                # Maintain 16 byte alignment.
@@ -848,7 +849,11 @@ __morestack_make_guard:
 # Make __stack_split_initialize a high priority constructor.  FIXME:
 # This is ELF specific.
 
+#if HAVE_INITFINI_ARRAY_SUPPORT
+       .section        .init_array.00000,"aw",@progbits
+#else
        .section        .ctors.65535,"aw",@progbits
+#endif
 
 #ifndef __LP64__
        .align  4
index a2e255e5c215a994a6f03938ce4cd1003087a1e7..509e506a6dee71e6df6f2342c0e74c68e4cfc5be 100644 (file)
@@ -24,6 +24,8 @@
 # see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
 # <http://www.gnu.org/licenses/>.
 
+#include <auto-host.h>
+
 #if _CALL_ELF == 2
        .abiversion 2
 #define PARAMS 32
@@ -396,7 +398,11 @@ ENTRY0(__morestack_make_guard)
 
 
 # Make __stack_split_initialize a high priority constructor.
+#if HAVE_INITFINI_ARRAY_SUPPORT
+       .section .init_array.00000,"aw",@progbits
+#else
        .section .ctors.65535,"aw",@progbits
+#endif
        .p2align 3
        .quad __stack_split_initialize
        .quad __morestack_load_mmap
index 80349fd869c793dcbbab6e6c1cc62f30cce15f1d..d873de90d12526e678e7546878811cc221132379 100644 (file)
@@ -28,6 +28,8 @@
 # also cover signal frame size.
 #define BACKOFF 0x1000
 
+#include <auto-host.h>
+
 # The __morestack function.
 
        .global __morestack
@@ -594,7 +596,11 @@ __morestack_make_guard:
 
 # Make __stack_split_initialize a high priority constructor.
 
+#if HAVE_INITFINI_ARRAY_SUPPORT
+       .section .init_array.00000,"aw",@progbits
+#else
        .section .ctors.65535,"aw",@progbits
+#endif
 
 #ifndef __LP64__
        .align  4