summaryrefslogtreecommitdiff
path: root/system/libucontext/0001-Reorder-registers-in-other-assembler-files.patch
diff options
context:
space:
mode:
authorA. Wilcox <AWilcox@Wilcox-Tech.com>2018-07-19 17:27:33 -0500
committerA. Wilcox <AWilcox@Wilcox-Tech.com>2018-07-19 17:27:33 -0500
commit12842f346c51b56c54b193c0b03f4bcf5b96f26b (patch)
treee85f31a59e024c102af581e86eaf32bc212bf1dc /system/libucontext/0001-Reorder-registers-in-other-assembler-files.patch
parentb493aa58d0b77f342199d3b410e0b57f91d03940 (diff)
downloadpackages-12842f346c51b56c54b193c0b03f4bcf5b96f26b.tar.gz
packages-12842f346c51b56c54b193c0b03f4bcf5b96f26b.tar.bz2
packages-12842f346c51b56c54b193c0b03f4bcf5b96f26b.tar.xz
packages-12842f346c51b56c54b193c0b03f4bcf5b96f26b.zip
system/libucontext: update URL, fix x86_64 crash
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
+