You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
30 lines
1.1 KiB
30 lines
1.1 KiB
6 years ago
|
commit 8e1f346462d8c1b238a7c6bb501c45b381a45e4d
|
||
|
Author: H.J. Lu <hjl.tools@gmail.com>
|
||
|
Date: Sun Jul 12 14:38:58 2015 -0700
|
||
|
|
||
|
Align stack to 16 bytes when calling __setcontext
|
||
|
|
||
|
Don't use pop to restore %rdi so that stack is aligned to 16 bytes
|
||
|
when calling __setcontext.
|
||
|
|
||
|
[BZ #18661]
|
||
|
* sysdeps/unix/sysv/linux/x86_64/__start_context.S
|
||
|
(__start_context): Don't use pop to restore %rdi so that stack
|
||
|
is aligned to 16 bytes when calling __setcontext.
|
||
|
|
||
|
diff --git a/sysdeps/unix/sysv/linux/x86_64/__start_context.S b/sysdeps/unix/sysv/linux/x86_64/__start_context.S
|
||
|
index 9f2ee23736bfbf70..f59d6b4f7f3d3d43 100644
|
||
|
--- a/sysdeps/unix/sysv/linux/x86_64/__start_context.S
|
||
|
+++ b/sysdeps/unix/sysv/linux/x86_64/__start_context.S
|
||
|
@@ -31,8 +31,8 @@ ENTRY(__start_context)
|
||
|
on the stack pointer for the next context. */
|
||
|
movq %rbx, %rsp
|
||
|
|
||
|
- popq %rdi /* This is the next context. */
|
||
|
- cfi_adjust_cfa_offset(-8)
|
||
|
+ /* Don't use pop here so that stack is aligned to 16 bytes. */
|
||
|
+ movq (%rsp), %rdi /* This is the next context. */
|
||
|
testq %rdi, %rdi
|
||
|
je 2f /* If it is zero exit. */
|
||
|
|