From 12842f346c51b56c54b193c0b03f4bcf5b96f26b Mon Sep 17 00:00:00 2001 From: "A. Wilcox" Date: Thu, 19 Jul 2018 17:27:33 -0500 Subject: system/libucontext: update URL, fix x86_64 crash --- ...eorder-registers-in-other-assembler-files.patch | 45 ++++++++++++++++++++++ 1 file changed, 45 insertions(+) create mode 100644 system/libucontext/0001-Reorder-registers-in-other-assembler-files.patch (limited to 'system/libucontext/0001-Reorder-registers-in-other-assembler-files.patch') 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" +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 + -- cgit v1.2.3-70-g09d2