From: Hauke Mehrtens <hauke@hauke-m.de>
Date: Tue, 26 Feb 2019 20:12:18 +0000 (+0100)
Subject: strace: update to version 2.26
X-Git-Url: http://git.cdn.openwrt.org/?a=commitdiff_plain;h=b55fbb6b2dfb2eb15159f3e55e17694cbaa5ce32;p=openwrt%2Fstaging%2Faparcar.git

strace: update to version 2.26

The new patch is a backport from current strace master.

Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>
---

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