diff options
author | Ian Lance Taylor <iant@golang.org> | 2021-10-07 20:22:25 -0700 |
---|---|---|
committer | Ian Lance Taylor <iant@golang.org> | 2021-10-07 20:24:43 -0700 |
commit | f49e3d28be44179f07b8a06159139ce77096dda7 (patch) | |
tree | b356bae5bf3ddb81fc9d80d60ec7290c47529d88 /libgcc | |
parent | 613196462a62a28de8414b9023ec2be9a29ac3dc (diff) | |
download | gcc-f49e3d28be44179f07b8a06159139ce77096dda7.tar.gz |
libgcc: use .init_stack for constructors if available
* config/i386/morestack.S: Use .init_array for constructor if
available.
* config/rs6000/morestack.S: Likewise.
* config/s390/morestack.S: Likewise.
Diffstat (limited to 'libgcc')
-rw-r--r-- | libgcc/config/i386/morestack.S | 13 | ||||
-rw-r--r-- | libgcc/config/rs6000/morestack.S | 6 | ||||
-rw-r--r-- | libgcc/config/s390/morestack.S | 6 |
3 files changed, 21 insertions, 4 deletions
diff --git a/libgcc/config/i386/morestack.S b/libgcc/config/i386/morestack.S index 718dbb1d5d2..2e748eda8a7 100644 --- a/libgcc/config/i386/morestack.S +++ b/libgcc/config/i386/morestack.S @@ -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 diff --git a/libgcc/config/rs6000/morestack.S b/libgcc/config/rs6000/morestack.S index a2e255e5c21..509e506a6de 100644 --- a/libgcc/config/rs6000/morestack.S +++ b/libgcc/config/rs6000/morestack.S @@ -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 diff --git a/libgcc/config/s390/morestack.S b/libgcc/config/s390/morestack.S index 80349fd869c..d873de90d12 100644 --- a/libgcc/config/s390/morestack.S +++ b/libgcc/config/s390/morestack.S @@ -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 |