aboutsummaryrefslogtreecommitdiff
path: root/libgcc/config
diff options
context:
space:
mode:
authorIan Lance Taylor <iant@google.com>2016-02-10 15:14:05 +0000
committerIan Lance Taylor <ian@gcc.gnu.org>2016-02-10 15:14:05 +0000
commit03a0ae7d98f05b0a5576622ecd0ebe8247c30711 (patch)
tree42827c6eaeef30ef3113a6fed89a4ba66bed1237 /libgcc/config
parente199dd0a2fc0d1ffea997f2ba5e42d4bc4c32518 (diff)
downloadgcc-03a0ae7d98f05b0a5576622ecd0ebe8247c30711.zip
gcc-03a0ae7d98f05b0a5576622ecd0ebe8247c30711.tar.gz
gcc-03a0ae7d98f05b0a5576622ecd0ebe8247c30711.tar.bz2
re PR go/68562 (morestack misaligns stack on x86_64)
PR go/68562 * config/i386/morestack.S (__stack_split_initialize): Align stack. From-SVN: r233273
Diffstat (limited to 'libgcc/config')
-rw-r--r--libgcc/config/i386/morestack.S5
1 files changed, 4 insertions, 1 deletions
diff --git a/libgcc/config/i386/morestack.S b/libgcc/config/i386/morestack.S
index f6dc661..3fc7dc3 100644
--- a/libgcc/config/i386/morestack.S
+++ b/libgcc/config/i386/morestack.S
@@ -732,6 +732,7 @@ __stack_split_initialize:
leal -16000(%esp),%eax # We should have at least 16K.
movl %eax,%gs:0x30
+ subl $4,%esp # Align stack.
pushl $16000
pushl %esp
#ifdef __PIC__
@@ -739,13 +740,14 @@ __stack_split_initialize:
#else
call __generic_morestack_set_initial_sp
#endif
- addl $8,%esp
+ addl $12,%esp
ret
#else /* defined(__x86_64__) */
leaq -16000(%rsp),%rax # We should have at least 16K.
X86_64_SAVE_NEW_STACK_BOUNDARY (ax)
+ subq $8,%rsp # Align stack.
movq %rsp,%rdi
movq $16000,%rsi
#ifdef __PIC__
@@ -753,6 +755,7 @@ __stack_split_initialize:
#else
call __generic_morestack_set_initial_sp
#endif
+ addq $8,%rsp
ret
#endif /* defined(__x86_64__) */