diff options
Diffstat (limited to 'app-misc/reptyr/files/reptyr-0.8.0-riscv64-support.patch')
-rw-r--r-- | app-misc/reptyr/files/reptyr-0.8.0-riscv64-support.patch | 115 |
1 files changed, 0 insertions, 115 deletions
diff --git a/app-misc/reptyr/files/reptyr-0.8.0-riscv64-support.patch b/app-misc/reptyr/files/reptyr-0.8.0-riscv64-support.patch deleted file mode 100644 index 6cedd3a55c5d..000000000000 --- a/app-misc/reptyr/files/reptyr-0.8.0-riscv64-support.patch +++ /dev/null @@ -1,115 +0,0 @@ -Taken from https://github.com/nelhage/reptyr/commit/e26724cc1ae5fe7af0c9fb6369f6cf09d1d12900 - -From ae0b4ec014c1a01b1c3409e5404cf0fa0102c349 Mon Sep 17 00:00:00 2001 -From: Ast-x64 <Ast-x64@protonmail.com> -Date: Wed, 10 Nov 2021 09:39:45 +0800 -Subject: [PATCH] Support riscv64 on Linux. - ---- - platform/linux/arch/riscv64.h | 68 +++++++++++++++++++++++++++++++++++ - platform/linux/linux_ptrace.c | 2 ++ - ptrace.h | 3 ++ - 3 files changed, 73 insertions(+) - create mode 100644 platform/linux/arch/riscv64.h - -diff --git a/platform/linux/arch/riscv64.h b/platform/linux/arch/riscv64.h -new file mode 100644 -index 0000000..96221c3 ---- /dev/null -+++ b/platform/linux/arch/riscv64.h -@@ -0,0 +1,68 @@ -+/* -+ * Copyright (C) 2021 by Ast-x64 -+ * -+ * Permission is hereby granted, free of charge, to any person obtaining a copy -+ * of this software and associated documentation files (the "Software"), to deal -+ * in the Software without restriction, including without limitation the rights -+ * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -+ * copies of the Software, and to permit persons to whom the Software is -+ * furnished to do so, subject to the following conditions: -+ * -+ * The above copyright notice and this permission notice shall be included in -+ * all copies or substantial portions of the Software. -+ * -+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -+ * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -+ * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -+ * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -+ * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -+ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN -+ * THE SOFTWARE. -+ */ -+static struct ptrace_personality arch_personality[1] = { -+ { -+ offsetof(struct user_regs_struct, a0), -+ offsetof(struct user_regs_struct, a0), -+ offsetof(struct user_regs_struct, a1), -+ offsetof(struct user_regs_struct, a2), -+ offsetof(struct user_regs_struct, a3), -+ offsetof(struct user_regs_struct, a4), -+ offsetof(struct user_regs_struct, a5), -+ offsetof(struct user_regs_struct, pc), -+ } -+}; -+ -+static inline void arch_fixup_regs(struct ptrace_child *child) { -+ child->regs.pc -= 4; -+} -+ -+static inline int arch_set_syscall(struct ptrace_child *child, -+ unsigned long sysno) { -+ unsigned long x_reg[18]; -+ struct iovec reg_iovec = { -+ .iov_base = x_reg, -+ .iov_len = sizeof(x_reg) -+ }; -+ if (ptrace_command(child, PTRACE_GETREGSET, NT_PRSTATUS, ®_iovec) < 0) -+ return -1; -+ -+ x_reg[17] = sysno; -+ return ptrace_command(child, PTRACE_SETREGSET, NT_PRSTATUS, ®_iovec); -+} -+ -+static inline int arch_save_syscall(struct ptrace_child *child) { -+ unsigned long x_reg[18]; -+ struct iovec reg_iovec = { -+ .iov_base = x_reg, -+ .iov_len = sizeof(x_reg) -+ }; -+ if (ptrace_command(child, PTRACE_GETREGSET, NT_PRSTATUS, ®_iovec) < 0) -+ return -1; -+ -+ child->saved_syscall = x_reg[17]; -+ return 0; -+} -+ -+static inline int arch_restore_syscall(struct ptrace_child *child) { -+ return arch_set_syscall(child, child->saved_syscall); -+} -diff --git a/platform/linux/linux_ptrace.c b/platform/linux/linux_ptrace.c -index d065199..bcbe600 100644 ---- a/platform/linux/linux_ptrace.c -+++ b/platform/linux/linux_ptrace.c -@@ -84,6 +84,8 @@ static struct ptrace_personality *personality(struct ptrace_child *child); - #include "arch/aarch64.h" - #elif defined(__powerpc__) - #include "arch/powerpc.h" -+#elif defined(__riscv) && __riscv_xlen == 64 -+#include "arch/riscv64.h" - #else - #error Unsupported architecture. - #endif -diff --git a/ptrace.h b/ptrace.h -index ee05bd7..8e3a7f4 100644 ---- a/ptrace.h -+++ b/ptrace.h -@@ -25,6 +25,9 @@ - #ifdef __powerpc__ - #include <asm/ptrace.h> - #endif -+#ifdef __riscv -+#include <asm/ptrace.h> -+#endif - #include <sys/ptrace.h> - #include <sys/types.h> - #include <sys/user.h> |