summaryrefslogtreecommitdiff
path: root/system/libucontext/0001-Reorder-registers-in-other-assembler-files.patch
diff options
context:
space:
mode:
Diffstat (limited to 'system/libucontext/0001-Reorder-registers-in-other-assembler-files.patch')
-rw-r--r--system/libucontext/0001-Reorder-registers-in-other-assembler-files.patch45
1 files changed, 45 insertions, 0 deletions
diff --git a/system/libucontext/0001-Reorder-registers-in-other-assembler-files.patch b/system/libucontext/0001-Reorder-registers-in-other-assembler-files.patch
new file mode 100644
index 000000000..b6fe600c9
--- /dev/null
+++ b/system/libucontext/0001-Reorder-registers-in-other-assembler-files.patch
@@ -0,0 +1,45 @@
+From 42c84cbe58c3c9089cc2a46a425210f20b47bcc9 Mon Sep 17 00:00:00 2001
+From: "A. Wilcox" <AWilcox@Wilcox-Tech.com>
+Date: Thu, 19 Jul 2018 17:17:26 -0500
+Subject: [PATCH] Reorder registers in other assembler files
+
+This fixes the previous commit which changed the register order in
+swapcontext only, which caused setcontext to subtly corrupt the stack.
+---
+ arch/x86_64/getcontext.S | 4 ++--
+ arch/x86_64/setcontext.S | 4 ++--
+ 2 files changed, 4 insertions(+), 4 deletions(-)
+
+diff --git a/arch/x86_64/getcontext.S b/arch/x86_64/getcontext.S
+index 7e56a1a..24cc1d3 100644
+--- a/arch/x86_64/getcontext.S
++++ b/arch/x86_64/getcontext.S
+@@ -22,8 +22,8 @@ __getcontext:
+ movq %r14, 88(%rdi)
+ movq %r15, 96(%rdi)
+ movq %rdi, 104(%rdi)
+- movq %rbp, 112(%rdi)
+- movq %rsi, 120(%rdi)
++ movq %rsi, 112(%rdi)
++ movq %rbp, 120(%rdi)
+ movq %rbx, 128(%rdi)
+ movq %rdx, 136(%rdi)
+ movq $1, 144(%rdi) /* $1 is %rax */
+diff --git a/arch/x86_64/setcontext.S b/arch/x86_64/setcontext.S
+index 607d40c..aba3775 100644
+--- a/arch/x86_64/setcontext.S
++++ b/arch/x86_64/setcontext.S
+@@ -21,8 +21,8 @@ __setcontext:
+ movq 80(%rdi), %r13
+ movq 88(%rdi), %r14
+ movq 96(%rdi), %r15
+- movq 112(%rdi), %rbp
+- movq 120(%rdi), %rsi
++ movq 112(%rdi), %rsi
++ movq 120(%rdi), %rbp
+ movq 128(%rdi), %rbx
+ movq 136(%rdi), %rdx
+ movq 144(%rdi), %rax
+--
+2.15.0
+