diff options
Diffstat (limited to 'package')
-rw-r--r-- | package/devel/strace/Makefile | 4 | ||||
-rw-r--r-- | package/devel/strace/patches/001-mips-o32-fix-build.patch | 91 | ||||
-rw-r--r-- | package/devel/strace/patches/100-workaround--pt-reg-collisions-ppc.patch | 2 |
3 files changed, 94 insertions, 3 deletions
diff --git a/package/devel/strace/Makefile b/package/devel/strace/Makefile index dd7f31eeeb..b342a8c0d0 100644 --- a/package/devel/strace/Makefile +++ b/package/devel/strace/Makefile @@ -9,12 +9,12 @@ include $(TOPDIR)/rules.mk include $(INCLUDE_DIR)/kernel.mk PKG_NAME:=strace -PKG_VERSION:=4.25 +PKG_VERSION:=4.26 PKG_RELEASE:=1 PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.xz PKG_SOURCE_URL:=https://strace.io/files/$(PKG_VERSION) -PKG_HASH:=d685f8e65470b7832c3aff60c57ab4459f26ff89f07c10f92bd70ee89efac701 +PKG_HASH:=7c4d2ffeef4f7d1cdc71062ca78d1130eb52f947c2fca82f59f6a1183bfa1e1c PKG_LICENSE:=BSD-3c PKG_LICENSE_FILES:=COPYRIGHT diff --git a/package/devel/strace/patches/001-mips-o32-fix-build.patch b/package/devel/strace/patches/001-mips-o32-fix-build.patch new file mode 100644 index 0000000000..71dbf70da8 --- /dev/null +++ b/package/devel/strace/patches/001-mips-o32-fix-build.patch @@ -0,0 +1,91 @@ +From 2c8b6de913973274e877639658e9e7273a012adb Mon Sep 17 00:00:00 2001 +From: "Dmitry V. Levin" <ldv@altlinux.org> +Date: Tue, 8 Jan 2019 19:23:44 +0000 +Subject: [PATCH] mips o32: fix build + +Commit 917c2ccf3a67 "Refactor stack pointers" moved mips_REG_* macros +from linux/mips/arch_regs.h to linux/mips/arch_regs.c because these +macros are no longer used outside syscall.c or files included by +syscall.c, but this caused a build regression on mips o32 because +decode_syscall_subcall() uses mips_REG_SP prior to its definition. + +* syscall.c (decode_syscall_subcall): Move ... +* linux/mips/get_syscall_args.c: ... here. +* NEWS: Mention this fix. + +Reported-by: Baruch Siach <baruch@tkos.co.il> +Fixes: v4.26~61 "Refactor stack pointers" +--- + NEWS | 1 + + linux/mips/get_syscall_args.c | 26 ++++++++++++++++++++++++++ + syscall.c | 27 ++------------------------- + 3 files changed, 29 insertions(+), 25 deletions(-) + +--- a/linux/mips/get_syscall_args.c ++++ b/linux/mips/get_syscall_args.c +@@ -37,3 +37,29 @@ arch_get_syscall_args(struct tcb *tcp) + #endif + return 1; + } ++ ++#ifdef SYS_syscall_subcall ++static void ++decode_syscall_subcall(struct tcb *tcp) ++{ ++ if (!scno_is_valid(tcp->u_arg[0])) ++ return; ++ tcp->scno = tcp->u_arg[0]; ++ tcp->qual_flg = qual_flags(tcp->scno); ++ tcp->s_ent = &sysent[tcp->scno]; ++ memmove(&tcp->u_arg[0], &tcp->u_arg[1], ++ sizeof(tcp->u_arg) - sizeof(tcp->u_arg[0])); ++ /* ++ * Fetching the last arg of 7-arg syscalls (fadvise64_64 ++ * and sync_file_range) requires additional code, ++ * see linux/mips/get_syscall_args.c ++ */ ++ if (tcp->s_ent->nargs == MAX_ARGS) { ++ if (umoven(tcp, ++ mips_REG_SP + MAX_ARGS * sizeof(tcp->u_arg[0]), ++ sizeof(tcp->u_arg[0]), ++ &tcp->u_arg[MAX_ARGS - 1]) < 0) ++ tcp->u_arg[MAX_ARGS - 1] = 0; ++ } ++} ++#endif /* SYS_syscall_subcall */ +--- a/syscall.c ++++ b/syscall.c +@@ -349,31 +349,8 @@ decode_ipc_subcall(struct tcb *tcp) + #endif /* SYS_ipc_subcall */ + + #ifdef SYS_syscall_subcall +-static void +-decode_syscall_subcall(struct tcb *tcp) +-{ +- if (!scno_is_valid(tcp->u_arg[0])) +- return; +- tcp->scno = tcp->u_arg[0]; +- tcp->qual_flg = qual_flags(tcp->scno); +- tcp->s_ent = &sysent[tcp->scno]; +- memmove(&tcp->u_arg[0], &tcp->u_arg[1], +- sizeof(tcp->u_arg) - sizeof(tcp->u_arg[0])); +-# ifdef LINUX_MIPSO32 +- /* +- * Fetching the last arg of 7-arg syscalls (fadvise64_64 +- * and sync_file_range) requires additional code, +- * see linux/mips/get_syscall_args.c +- */ +- if (tcp->s_ent->nargs == MAX_ARGS) { +- if (umoven(tcp, +- mips_REG_SP + MAX_ARGS * sizeof(tcp->u_arg[0]), +- sizeof(tcp->u_arg[0]), +- &tcp->u_arg[MAX_ARGS - 1]) < 0) +- tcp->u_arg[MAX_ARGS - 1] = 0; +- } +-# endif /* LINUX_MIPSO32 */ +-} ++/* The implementation is architecture specific. */ ++static void decode_syscall_subcall(struct tcb *); + #endif /* SYS_syscall_subcall */ + + static void diff --git a/package/devel/strace/patches/100-workaround--pt-reg-collisions-ppc.patch b/package/devel/strace/patches/100-workaround--pt-reg-collisions-ppc.patch index e1b809deb7..9560804a7a 100644 --- a/package/devel/strace/patches/100-workaround--pt-reg-collisions-ppc.patch +++ b/package/devel/strace/patches/100-workaround--pt-reg-collisions-ppc.patch @@ -1,6 +1,6 @@ --- a/ptrace.h +++ b/ptrace.h -@@ -49,7 +49,14 @@ +@@ -30,7 +30,14 @@ # define ptrace_peeksiginfo_args XXX_ptrace_peeksiginfo_args #endif |