summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
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.patch115
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, &reg_iovec) < 0)
-+ return -1;
-+
-+ x_reg[17] = sysno;
-+ return ptrace_command(child, PTRACE_SETREGSET, NT_PRSTATUS, &reg_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, &reg_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>