diff --git a/.gitignore b/.gitignore
index c283e23..137831d 100644
--- a/.gitignore
+++ b/.gitignore
@@ -1 +1 @@
-SOURCES/strace-5.1.tar.xz
+SOURCES/strace-5.7.tar.xz
diff --git a/.strace.metadata b/.strace.metadata
index aa6c4b8..cce1af2 100644
--- a/.strace.metadata
+++ b/.strace.metadata
@@ -1 +1 @@
-6474260dcc66aa1f591acee31ae6a1a457b34656 SOURCES/strace-5.1.tar.xz
+95c9d5aa664982d53ce1e5ab058d8fb73e200f0c SOURCES/strace-5.7.tar.xz
diff --git a/SOURCES/0030-evdev-avoid-bit-vector-decoding-on-non-successful-an.patch b/SOURCES/0030-evdev-avoid-bit-vector-decoding-on-non-successful-an.patch
deleted file mode 100644
index 3d21fae..0000000
--- a/SOURCES/0030-evdev-avoid-bit-vector-decoding-on-non-successful-an.patch
+++ /dev/null
@@ -1,42 +0,0 @@
-From 7ada13f3a40e2f58aea335cf910666378e7dd99a Mon Sep 17 00:00:00 2001
-From: Eugene Syromyatnikov <evgsyr@gmail.com>
-Date: Fri, 12 Jul 2019 14:38:33 +0200
-Subject: [PATCH 1/3] evdev: avoid bit vector decoding on non-successful and 0
- return codes
-
-Reported by Clang.
-
-    strace/evdev.c:157:3: note: The value 0 is assigned to 'size'
-    #                size = tcp->u_rval * 8;
-    #                ^~~~~~~~~~~~~~~~~~~~~~
-    strace/evdev.c:158:2: warning: Declared variable-length array (VLA)
-    has zero size
-    #        char decoded_arg[size];
-    #        ^
-
-* evdev.c (decode_bitset_): Bail out before decoded_arg VLA definition.
----
- evdev.c | 7 +++++++
- 1 file changed, 7 insertions(+)
-
-diff --git a/evdev.c b/evdev.c
-index e402d26e..4b811cf8 100644
---- a/evdev.c
-+++ b/evdev.c
-@@ -155,6 +155,13 @@ decode_bitset_(struct tcb *const tcp, const kernel_ulong_t arg,
- 		size = max_nr;
- 	else
- 		size = tcp->u_rval * 8;
-+
-+	if (syserror(tcp) || !size) {
-+		printaddr(arg);
-+
-+		return RVAL_IOCTL_DECODED;
-+	}
-+
- 	char decoded_arg[size];
- 
- 	if (umove_or_printaddr(tcp, arg, &decoded_arg))
--- 
-2.13.6
-
diff --git a/SOURCES/0031-evdev-fix-array-size-calculation-in-decode_bitset_.patch b/SOURCES/0031-evdev-fix-array-size-calculation-in-decode_bitset_.patch
deleted file mode 100644
index 18cf773..0000000
--- a/SOURCES/0031-evdev-fix-array-size-calculation-in-decode_bitset_.patch
+++ /dev/null
@@ -1,57 +0,0 @@
-From 96194ed74158f0b9976fae43a910ad14eaea141e Mon Sep 17 00:00:00 2001
-From: Eugene Syromyatnikov <evgsyr@gmail.com>
-Date: Fri, 12 Jul 2019 14:57:28 +0200
-Subject: [PATCH 2/3] evdev: fix array size calculation in decode_bitset_
-
-max_nr is in bits (as it is a number of flags), result is in bytes, and
-the array allocation has to be in personality words.
-
-There's still an open question, however, what to do on big-endian
-architectures when a non-divisible-by-4 value is returned.
-
-* evdev.c (decode_bitset_): Declare size_bits, initialise it and use it
-later instead of size; round up size by personality's word boundary.
----
- evdev.c | 12 ++++++++----
- 1 file changed, 8 insertions(+), 4 deletions(-)
-
-diff --git a/evdev.c b/evdev.c
-index 4b811cf8..a3d9cb55 100644
---- a/evdev.c
-+++ b/evdev.c
-@@ -151,10 +151,14 @@ decode_bitset_(struct tcb *const tcp, const kernel_ulong_t arg,
- 	tprints(", ");
- 
- 	unsigned int size;
-+	unsigned int size_bits;
-+
- 	if ((kernel_ulong_t) tcp->u_rval > max_nr / 8)
--		size = max_nr;
-+		size_bits = max_nr;
- 	else
--		size = tcp->u_rval * 8;
-+		size_bits = tcp->u_rval * 8;
-+
-+	size = ROUNDUP(ROUNDUP_DIV(size_bits, 8), current_wordsize);
- 
- 	if (syserror(tcp) || !size) {
- 		printaddr(arg);
-@@ -170,13 +174,13 @@ decode_bitset_(struct tcb *const tcp, const kernel_ulong_t arg,
- 	tprints("[");
- 
- 	int bit_displayed = 0;
--	int i = next_set_bit(decoded_arg, 0, size);
-+	int i = next_set_bit(decoded_arg, 0, size_bits);
- 	if (i < 0) {
- 		tprints(" 0 ");
- 	} else {
- 		printxval_dispatch(decode_nr, decode_nr_size, i, dflt, xt);
- 
--		while ((i = next_set_bit(decoded_arg, i + 1, size)) > 0) {
-+		while ((i = next_set_bit(decoded_arg, i + 1, size_bits)) > 0) {
- 			if (abbrev(tcp) && bit_displayed >= 3) {
- 				tprints(", ...");
- 				break;
--- 
-2.13.6
-
diff --git a/SOURCES/0033-tests-test-evdev-bitset-decoding-more-thoroughly.patch b/SOURCES/0033-tests-test-evdev-bitset-decoding-more-thoroughly.patch
deleted file mode 100644
index e2abf52..0000000
--- a/SOURCES/0033-tests-test-evdev-bitset-decoding-more-thoroughly.patch
+++ /dev/null
@@ -1,795 +0,0 @@
-From cdd8206af74fcb961f0179e21eacf5d55d23f0ac Mon Sep 17 00:00:00 2001
-From: Eugene Syromyatnikov <evgsyr@gmail.com>
-Date: Fri, 12 Jul 2019 14:31:44 +0200
-Subject: [PATCH 3/3] tests: test evdev bitset decoding more thoroughly
-
-* tests/ioctl_evdev-success-v.test: Inject various values.
-* tests/ioctl_evdev-success.test: Likewise.
-* tests/ioctl_evdev-success.c (NUM_WORDS): New macro.
-(struct evdev_check): Constify arg_ptr and print_arg args.
-(invoke_test_syscall, test_evdev, print_input_absinfo, print_input_id,
-print_mtslots): Add const qualifiers.
-(print_getbit): Add const qualifiers, rewrite to expect trailing NULL
-in the string array instead of leading string count.
-(main): Set size for ev_more, ev_less, ev_zero arrays; replace leading
-count element in ev_more_str, ev_less_str, ev_zero_str with trailing
-NULL; replace ev_more_str and ev_less_str with ev_more_str_2/ev_less_str_2
-and ev_more_str_3/ev_less_str_3 that differ by presence of flags that reside
-beyond first two bytes; add static and const qualifiers where possible;
-add key/key_sts_8/key_str_16 values; update a to provide either ev_more_str_2
-or ev_more_str_3 and either key_str_8 or key_str_16 depending on inject_retval
-value.
----
- tests/ioctl_evdev-success-v.test |  15 +++---
- tests/ioctl_evdev-success.c      | 100 ++++++++++++++++++++++++++-------------
- tests/ioctl_evdev-success.test   |  15 +++---
- 3 files changed, 84 insertions(+), 46 deletions(-)
-
-Index: strace-4.24/tests/ioctl_evdev-success-v.test
-===================================================================
---- strace-4.24.orig/tests/ioctl_evdev-success-v.test	2019-08-01 18:40:58.009521546 +0200
-+++ strace-4.24/tests/ioctl_evdev-success-v.test	2019-08-01 19:21:32.297062218 +0200
-@@ -3,11 +3,14 @@
- . "${srcdir=.}/scno_tampering.sh"
- 
- : ${IOCTL_INJECT_START=256}
--: ${IOCTL_INJECT_RETVAL=8}
- 
- run_prog
--run_strace -a16 -v -e trace=ioctl \
--	-e inject=ioctl:retval="${IOCTL_INJECT_RETVAL}":when="${IOCTL_INJECT_START}+" \
--	../ioctl_evdev-success-v "${IOCTL_INJECT_START}" "${IOCTL_INJECT_RETVAL}"> "$EXP"
--grep -v '^ioctl([012][,<]' < "$LOG" > "$OUT"
--match_diff "$OUT" "$EXP"
-+
-+for ret in 0 2 8 15 16; do
-+	run_strace -a16 -v -e trace=ioctl \
-+		-e inject=ioctl:retval="${ret}":when="${IOCTL_INJECT_START}+" \
-+		../ioctl_evdev-success-v \
-+		"${IOCTL_INJECT_START}" "${ret}"> "$EXP.$ret"
-+	grep -v '^ioctl([012][,<]' < "$LOG" > "$OUT.$ret"
-+	match_diff "$OUT.$ret" "$EXP.$ret"
-+done
-Index: strace-4.24/tests/ioctl_evdev-success.c
-===================================================================
---- strace-4.24.orig/tests/ioctl_evdev-success.c	2019-08-01 18:40:58.009521546 +0200
-+++ strace-4.24/tests/ioctl_evdev-success.c	2019-08-01 19:21:32.297062218 +0200
-@@ -2,6 +2,7 @@
- 
- #ifdef HAVE_LINUX_INPUT_H
- 
-+# include <assert.h>
- # include <inttypes.h>
- # include <stdio.h>
- # include <stdlib.h>
-@@ -9,17 +10,19 @@
- # include <linux/input.h>
- # include "print_fields.h"
- 
-+# define NUM_WORDS 4
-+
- static const char *errstr;
- 
- struct evdev_check {
- 	unsigned long cmd;
- 	const char *cmd_str;
--	void *arg_ptr;
--	void (*print_arg)(long rc, void *ptr, void *arg);
-+	const void *arg_ptr;
-+	void (*print_arg)(long rc, const void *ptr, const void *arg);
- };
- 
- static long
--invoke_test_syscall(unsigned long cmd, void *p)
-+invoke_test_syscall(unsigned long cmd, const void *p)
- {
- 	long rc = ioctl(-1, cmd, p);
- 	errstr = sprintrc(rc);
-@@ -31,7 +34,7 @@
- }
- 
- static void
--test_evdev(struct evdev_check *check, void *arg)
-+test_evdev(struct evdev_check *check, const void *arg)
- {
- 	long rc = invoke_test_syscall(check->cmd, check->arg_ptr);
- 	printf("ioctl(-1, %s, ", check->cmd_str);
-@@ -43,9 +46,9 @@
- }
- 
- static void
--print_input_absinfo(long rc, void *ptr, void *arg)
-+print_input_absinfo(long rc, const void *ptr, const void *arg)
- {
--	struct input_absinfo *absinfo = ptr;
-+	const struct input_absinfo *absinfo = ptr;
- 
- 	if (rc < 0) {
- 		printf("%p", absinfo);
-@@ -67,9 +70,9 @@
- }
- 
- static void
--print_input_id(long rc, void *ptr, void *arg)
-+print_input_id(long rc, const void *ptr, const void *arg)
- {
--	struct input_id *id = ptr;
-+	const struct input_id *id = ptr;
- 
- 	if (rc < 0) {
- 		printf("%p", id);
-@@ -84,10 +87,10 @@
- 
- # ifdef EVIOCGMTSLOTS
- static void
--print_mtslots(long rc, void *ptr, void *arg)
-+print_mtslots(long rc, const void *ptr, const void *arg)
- {
--	int *buffer = ptr;
--	const char **str = arg;
-+	const int *buffer = ptr;
-+	const char * const * str = arg;
- 	int num = atoi(*(str + 1));
- 
- 	if (rc < 0) {
-@@ -104,27 +107,26 @@
- # endif
- 
- static void
--print_getbit(long rc, void *ptr, void *arg)
-+print_getbit(long rc, const void *ptr, const void *arg)
- {
--	const char **str = arg;
--	int num = atoi(*str);
-+	const char * const *str = arg;
- 
--	if (rc < 0) {
-+	if (rc <= 0) {
- 		printf("%p", ptr);
- 		return;
- 	}
- 
- 	printf("[");
--	printf("%s", *(str + 1));
--	for (unsigned int i = 2; i <= (unsigned) num; i++) {
-+	for (unsigned long i = 0; str[i]; i++) {
- # if ! VERBOSE
--		if (i > 4) {
-+		if (i >= 4) {
- 			printf(", ...");
- 			break;
- 		}
- # endif
--		printf(", ");
--		printf("%s", *(str + i));
-+		if (i)
-+			printf(", ");
-+		printf("%s", str[i]);
- 	}
- 	printf("]");
- }
-@@ -170,6 +172,7 @@
- 	TAIL_ALLOC_OBJECT_CONST_PTR(struct input_id, id);
- 	TAIL_ALLOC_OBJECT_CONST_PTR(struct input_absinfo, absinfo);
- 	TAIL_ALLOC_OBJECT_CONST_PTR(int, bad_addr_slot);
-+
- # ifdef EVIOCGMTSLOTS
- 	int mtslots[] = { ABS_MT_SLOT, 1, 3 };
- 	/* we use the second element to indicate the number of values */
-@@ -183,36 +186,65 @@
- 	const char *invalid_mtslot_str[] = { invalid_str, "1", "1" };
- # endif
- 
-+	enum { ULONG_BIT = sizeof(unsigned long) * 8 };
-+
- 	/* set more than 4 bits */
--	unsigned long ev_more[] = { 1 << EV_ABS | 1 << EV_MSC | 1 << EV_LED | 1 << EV_SND | 1 << EV_PWR };
--	/* we use the first element to indicate the number of set bits */
--	/* ev_more_str[0] is "5" so the number of set bits is 5 */
--	const char *ev_more_str[] = { "5", "EV_ABS", "EV_MSC", "EV_LED", "EV_SND", "EV_PWR" };
-+	static const unsigned long ev_more[NUM_WORDS] = {
-+		1 << EV_ABS | 1 << EV_MSC | 1 << EV_LED | 1 << EV_SND
-+		| 1 << EV_PWR };
-+	static const char * const ev_more_str_2[] = {
-+		"EV_ABS", "EV_MSC", NULL };
-+	static const char * const ev_more_str_3[] = {
-+		"EV_ABS", "EV_MSC", "EV_LED", "EV_SND", "EV_PWR", NULL };
- 
- 	/* set less than 4 bits */
--	unsigned long ev_less[] = { 1 << EV_ABS | 1 << EV_MSC | 1 << EV_LED };
--	const char *ev_less_str[] = { "3", "EV_ABS", "EV_MSC", "EV_LED" };
-+	static const unsigned long ev_less[NUM_WORDS] = {
-+		1 << EV_ABS | 1 << EV_MSC | 1 << EV_LED };
-+	static const char * const ev_less_str_2[] = {
-+		"EV_ABS", "EV_MSC", NULL };
-+	static const char * const ev_less_str_3[] = {
-+		"EV_ABS", "EV_MSC", "EV_LED", NULL };
- 
- 	/* set zero bit */
--	unsigned long ev_zero[] = { 0x0 };
--	const char *ev_zero_str[] = { "0", " 0 " };
-+	static const unsigned long ev_zero[NUM_WORDS] = { 0x0 };
-+	static const char * const ev_zero_str[] = { " 0 ", NULL };
- 
- 	/* KEY_MAX is 0x2ff which is greater than retval * 8 */
--	unsigned long key[] = { 1 << KEY_1 | 1 << KEY_2, 0 };
--	const char *key_str[] = { "2", "KEY_1", "KEY_2" };
-+	static const unsigned long key[NUM_WORDS] = {
-+		1 << KEY_1 | 1 << KEY_2,
-+		[ KEY_F12 / ULONG_BIT ] = 1 << (KEY_F12 % ULONG_BIT) };
-+
-+	static const char * const key_str_8[] = {
-+		"KEY_1", "KEY_2", NULL };
-+	static const char * const key_str_16[] = {
-+		"KEY_1", "KEY_2", "KEY_F12", NULL };
-+
-+	assert(sizeof(ev_more) >= (unsigned long) inject_retval);
-+	assert(sizeof(ev_less) >= (unsigned long) inject_retval);
-+	assert(sizeof(ev_zero) >= (unsigned long) inject_retval);
-+	assert(sizeof(key) >= (unsigned long) inject_retval);
- 
- 	struct {
- 		struct evdev_check check;
--		void *ptr;
-+		const void *ptr;
- 	} a[] = {
- 		{ { ARG_STR(EVIOCGID), id, print_input_id }, NULL },
- 		{ { ARG_STR(EVIOCGABS(ABS_X)), absinfo, print_input_absinfo }, NULL },
- 		{ { ARG_STR(EVIOCGABS(ABS_Y)), absinfo, print_input_absinfo }, NULL },
- 		{ { ARG_STR(EVIOCGABS(ABS_Y)), absinfo, print_input_absinfo }, NULL },
--		{ { ARG_STR(EVIOCGBIT(0, 0)), ev_more, print_getbit }, &ev_more_str },
--		{ { ARG_STR(EVIOCGBIT(0, 0)), ev_less, print_getbit }, &ev_less_str },
-+		{ { ARG_STR(EVIOCGBIT(0, 0)), ev_more, print_getbit },
-+			inject_retval * 8 <= EV_LED
-+				? (const void *) &ev_more_str_2
-+				: (const void *) &ev_more_str_3 },
-+		{ { ARG_STR(EVIOCGBIT(0, 0)), ev_less, print_getbit },
-+			inject_retval * 8 <= EV_LED
-+				? (const void *) &ev_less_str_2
-+				: (const void *) &ev_less_str_3 },
- 		{ { ARG_STR(EVIOCGBIT(0, 0)), ev_zero, print_getbit }, &ev_zero_str },
--		{ { ARG_STR(EVIOCGBIT(EV_KEY, 0)), key, print_getbit }, &key_str},
-+		{ { ARG_STR(EVIOCGBIT(EV_KEY, 0)), key, print_getbit },
-+			inject_retval * 8 <= KEY_F12
-+				? (const void *) &key_str_8
-+				: (const void *) &key_str_16 },
- # ifdef EVIOCGMTSLOTS
- 		{ { ARG_STR(EVIOCGMTSLOTS(12)), mtslots, print_mtslots }, &mtslots_str },
- 		{ { ARG_STR(EVIOCGMTSLOTS(8)), invalid_mtslot, print_mtslots }, &invalid_mtslot_str }
-Index: strace-4.24/tests/ioctl_evdev-success.test
-===================================================================
---- strace-4.24.orig/tests/ioctl_evdev-success.test	2019-08-01 18:40:58.009521546 +0200
-+++ strace-4.24/tests/ioctl_evdev-success.test	2019-08-01 19:21:32.298062205 +0200
-@@ -3,11 +3,14 @@
- . "${srcdir=.}/scno_tampering.sh"
- 
- : ${IOCTL_INJECT_START=256}
--: ${IOCTL_INJECT_RETVAL=8}
- 
- run_prog
--run_strace -a16 -e trace=ioctl \
--	-e inject=ioctl:retval="${IOCTL_INJECT_RETVAL}":when="${IOCTL_INJECT_START}+" \
--	../ioctl_evdev-success "${IOCTL_INJECT_START}" "${IOCTL_INJECT_RETVAL}"> "$EXP"
--grep -v '^ioctl([012][,<]' < "$LOG" > "$OUT"
--match_diff "$OUT" "$EXP"
-+
-+for ret in 0 2 8 15 16; do
-+	run_strace -a16 -e trace=ioctl \
-+		-e inject=ioctl:retval="${ret}":when="${IOCTL_INJECT_START}+" \
-+		../ioctl_evdev-success \
-+		"${IOCTL_INJECT_START}" "${ret}"> "$EXP.${ret}"
-+	grep -v '^ioctl([012][,<]' < "$LOG" > "$OUT.$ret"
-+	match_diff "$OUT.$ret" "$EXP.$ret"
-+done
-Index: strace-4.24/tests-m32/ioctl_evdev-success-v.test
-===================================================================
---- strace-4.24.orig/tests-m32/ioctl_evdev-success-v.test	2019-08-01 18:40:58.009521546 +0200
-+++ strace-4.24/tests-m32/ioctl_evdev-success-v.test	2019-08-01 19:21:32.298062205 +0200
-@@ -3,11 +3,14 @@
- . "${srcdir=.}/scno_tampering.sh"
- 
- : ${IOCTL_INJECT_START=256}
--: ${IOCTL_INJECT_RETVAL=8}
- 
- run_prog
--run_strace -a16 -v -e trace=ioctl \
--	-e inject=ioctl:retval="${IOCTL_INJECT_RETVAL}":when="${IOCTL_INJECT_START}+" \
--	../ioctl_evdev-success-v "${IOCTL_INJECT_START}" "${IOCTL_INJECT_RETVAL}"> "$EXP"
--grep -v '^ioctl([012][,<]' < "$LOG" > "$OUT"
--match_diff "$OUT" "$EXP"
-+
-+for ret in 0 2 8 15 16; do
-+	run_strace -a16 -v -e trace=ioctl \
-+		-e inject=ioctl:retval="${ret}":when="${IOCTL_INJECT_START}+" \
-+		../ioctl_evdev-success-v \
-+		"${IOCTL_INJECT_START}" "${ret}"> "$EXP.$ret"
-+	grep -v '^ioctl([012][,<]' < "$LOG" > "$OUT.$ret"
-+	match_diff "$OUT.$ret" "$EXP.$ret"
-+done
-Index: strace-4.24/tests-m32/ioctl_evdev-success.test
-===================================================================
---- strace-4.24.orig/tests-m32/ioctl_evdev-success.test	2019-08-01 18:40:58.009521546 +0200
-+++ strace-4.24/tests-m32/ioctl_evdev-success.test	2019-08-01 19:21:32.298062205 +0200
-@@ -3,11 +3,14 @@
- . "${srcdir=.}/scno_tampering.sh"
- 
- : ${IOCTL_INJECT_START=256}
--: ${IOCTL_INJECT_RETVAL=8}
- 
- run_prog
--run_strace -a16 -e trace=ioctl \
--	-e inject=ioctl:retval="${IOCTL_INJECT_RETVAL}":when="${IOCTL_INJECT_START}+" \
--	../ioctl_evdev-success "${IOCTL_INJECT_START}" "${IOCTL_INJECT_RETVAL}"> "$EXP"
--grep -v '^ioctl([012][,<]' < "$LOG" > "$OUT"
--match_diff "$OUT" "$EXP"
-+
-+for ret in 0 2 8 15 16; do
-+	run_strace -a16 -e trace=ioctl \
-+		-e inject=ioctl:retval="${ret}":when="${IOCTL_INJECT_START}+" \
-+		../ioctl_evdev-success \
-+		"${IOCTL_INJECT_START}" "${ret}"> "$EXP.${ret}"
-+	grep -v '^ioctl([012][,<]' < "$LOG" > "$OUT.$ret"
-+	match_diff "$OUT.$ret" "$EXP.$ret"
-+done
-Index: strace-4.24/tests-mx32/ioctl_evdev-success-v.test
-===================================================================
---- strace-4.24.orig/tests-mx32/ioctl_evdev-success-v.test	2019-08-01 18:40:58.009521546 +0200
-+++ strace-4.24/tests-mx32/ioctl_evdev-success-v.test	2019-08-01 19:21:32.298062205 +0200
-@@ -3,11 +3,14 @@
- . "${srcdir=.}/scno_tampering.sh"
- 
- : ${IOCTL_INJECT_START=256}
--: ${IOCTL_INJECT_RETVAL=8}
- 
- run_prog
--run_strace -a16 -v -e trace=ioctl \
--	-e inject=ioctl:retval="${IOCTL_INJECT_RETVAL}":when="${IOCTL_INJECT_START}+" \
--	../ioctl_evdev-success-v "${IOCTL_INJECT_START}" "${IOCTL_INJECT_RETVAL}"> "$EXP"
--grep -v '^ioctl([012][,<]' < "$LOG" > "$OUT"
--match_diff "$OUT" "$EXP"
-+
-+for ret in 0 2 8 15 16; do
-+	run_strace -a16 -v -e trace=ioctl \
-+		-e inject=ioctl:retval="${ret}":when="${IOCTL_INJECT_START}+" \
-+		../ioctl_evdev-success-v \
-+		"${IOCTL_INJECT_START}" "${ret}"> "$EXP.$ret"
-+	grep -v '^ioctl([012][,<]' < "$LOG" > "$OUT.$ret"
-+	match_diff "$OUT.$ret" "$EXP.$ret"
-+done
-Index: strace-4.24/tests-mx32/ioctl_evdev-success.test
-===================================================================
---- strace-4.24.orig/tests-mx32/ioctl_evdev-success.test	2019-08-01 18:40:58.009521546 +0200
-+++ strace-4.24/tests-mx32/ioctl_evdev-success.test	2019-08-01 19:21:32.299062192 +0200
-@@ -3,11 +3,14 @@
- . "${srcdir=.}/scno_tampering.sh"
- 
- : ${IOCTL_INJECT_START=256}
--: ${IOCTL_INJECT_RETVAL=8}
- 
- run_prog
--run_strace -a16 -e trace=ioctl \
--	-e inject=ioctl:retval="${IOCTL_INJECT_RETVAL}":when="${IOCTL_INJECT_START}+" \
--	../ioctl_evdev-success "${IOCTL_INJECT_START}" "${IOCTL_INJECT_RETVAL}"> "$EXP"
--grep -v '^ioctl([012][,<]' < "$LOG" > "$OUT"
--match_diff "$OUT" "$EXP"
-+
-+for ret in 0 2 8 15 16; do
-+	run_strace -a16 -e trace=ioctl \
-+		-e inject=ioctl:retval="${ret}":when="${IOCTL_INJECT_START}+" \
-+		../ioctl_evdev-success \
-+		"${IOCTL_INJECT_START}" "${ret}"> "$EXP.${ret}"
-+	grep -v '^ioctl([012][,<]' < "$LOG" > "$OUT.$ret"
-+	match_diff "$OUT.$ret" "$EXP.$ret"
-+done
-Index: strace-4.24/tests-m32/ioctl_evdev-success.c
-===================================================================
---- strace-4.24.orig/tests-m32/ioctl_evdev-success.c	2019-08-01 18:40:58.009521546 +0200
-+++ strace-4.24/tests-m32/ioctl_evdev-success.c	2019-08-29 12:09:27.898700830 +0200
-@@ -2,6 +2,7 @@
- 
- #ifdef HAVE_LINUX_INPUT_H
- 
-+# include <assert.h>
- # include <inttypes.h>
- # include <stdio.h>
- # include <stdlib.h>
-@@ -9,17 +10,19 @@
- # include <linux/input.h>
- # include "print_fields.h"
- 
-+# define NUM_WORDS 4
-+
- static const char *errstr;
- 
- struct evdev_check {
- 	unsigned long cmd;
- 	const char *cmd_str;
--	void *arg_ptr;
--	void (*print_arg)(long rc, void *ptr, void *arg);
-+	const void *arg_ptr;
-+	void (*print_arg)(long rc, const void *ptr, const void *arg);
- };
- 
- static long
--invoke_test_syscall(unsigned long cmd, void *p)
-+invoke_test_syscall(unsigned long cmd, const void *p)
- {
- 	long rc = ioctl(-1, cmd, p);
- 	errstr = sprintrc(rc);
-@@ -31,7 +34,7 @@
- }
- 
- static void
--test_evdev(struct evdev_check *check, void *arg)
-+test_evdev(struct evdev_check *check, const void *arg)
- {
- 	long rc = invoke_test_syscall(check->cmd, check->arg_ptr);
- 	printf("ioctl(-1, %s, ", check->cmd_str);
-@@ -43,9 +46,9 @@
- }
- 
- static void
--print_input_absinfo(long rc, void *ptr, void *arg)
-+print_input_absinfo(long rc, const void *ptr, const void *arg)
- {
--	struct input_absinfo *absinfo = ptr;
-+	const struct input_absinfo *absinfo = ptr;
- 
- 	if (rc < 0) {
- 		printf("%p", absinfo);
-@@ -67,9 +70,9 @@
- }
- 
- static void
--print_input_id(long rc, void *ptr, void *arg)
-+print_input_id(long rc, const void *ptr, const void *arg)
- {
--	struct input_id *id = ptr;
-+	const struct input_id *id = ptr;
- 
- 	if (rc < 0) {
- 		printf("%p", id);
-@@ -84,10 +87,10 @@
- 
- # ifdef EVIOCGMTSLOTS
- static void
--print_mtslots(long rc, void *ptr, void *arg)
-+print_mtslots(long rc, const void *ptr, const void *arg)
- {
--	int *buffer = ptr;
--	const char **str = arg;
-+	const int *buffer = ptr;
-+	const char * const * str = arg;
- 	int num = atoi(*(str + 1));
- 
- 	if (rc < 0) {
-@@ -104,27 +107,26 @@
- # endif
- 
- static void
--print_getbit(long rc, void *ptr, void *arg)
-+print_getbit(long rc, const void *ptr, const void *arg)
- {
--	const char **str = arg;
--	int num = atoi(*str);
-+	const char * const *str = arg;
- 
--	if (rc < 0) {
-+	if (rc <= 0) {
- 		printf("%p", ptr);
- 		return;
- 	}
- 
- 	printf("[");
--	printf("%s", *(str + 1));
--	for (unsigned int i = 2; i <= (unsigned) num; i++) {
-+	for (unsigned long i = 0; str[i]; i++) {
- # if ! VERBOSE
--		if (i > 4) {
-+		if (i >= 4) {
- 			printf(", ...");
- 			break;
- 		}
- # endif
--		printf(", ");
--		printf("%s", *(str + i));
-+		if (i)
-+			printf(", ");
-+		printf("%s", str[i]);
- 	}
- 	printf("]");
- }
-@@ -170,6 +172,7 @@
- 	TAIL_ALLOC_OBJECT_CONST_PTR(struct input_id, id);
- 	TAIL_ALLOC_OBJECT_CONST_PTR(struct input_absinfo, absinfo);
- 	TAIL_ALLOC_OBJECT_CONST_PTR(int, bad_addr_slot);
-+
- # ifdef EVIOCGMTSLOTS
- 	int mtslots[] = { ABS_MT_SLOT, 1, 3 };
- 	/* we use the second element to indicate the number of values */
-@@ -183,36 +186,65 @@
- 	const char *invalid_mtslot_str[] = { invalid_str, "1", "1" };
- # endif
- 
-+	enum { ULONG_BIT = sizeof(unsigned long) * 8 };
-+
- 	/* set more than 4 bits */
--	unsigned long ev_more[] = { 1 << EV_ABS | 1 << EV_MSC | 1 << EV_LED | 1 << EV_SND | 1 << EV_PWR };
--	/* we use the first element to indicate the number of set bits */
--	/* ev_more_str[0] is "5" so the number of set bits is 5 */
--	const char *ev_more_str[] = { "5", "EV_ABS", "EV_MSC", "EV_LED", "EV_SND", "EV_PWR" };
-+	static const unsigned long ev_more[NUM_WORDS] = {
-+		1 << EV_ABS | 1 << EV_MSC | 1 << EV_LED | 1 << EV_SND
-+		| 1 << EV_PWR };
-+	static const char * const ev_more_str_2[] = {
-+		"EV_ABS", "EV_MSC", NULL };
-+	static const char * const ev_more_str_3[] = {
-+		"EV_ABS", "EV_MSC", "EV_LED", "EV_SND", "EV_PWR", NULL };
- 
- 	/* set less than 4 bits */
--	unsigned long ev_less[] = { 1 << EV_ABS | 1 << EV_MSC | 1 << EV_LED };
--	const char *ev_less_str[] = { "3", "EV_ABS", "EV_MSC", "EV_LED" };
-+	static const unsigned long ev_less[NUM_WORDS] = {
-+		1 << EV_ABS | 1 << EV_MSC | 1 << EV_LED };
-+	static const char * const ev_less_str_2[] = {
-+		"EV_ABS", "EV_MSC", NULL };
-+	static const char * const ev_less_str_3[] = {
-+		"EV_ABS", "EV_MSC", "EV_LED", NULL };
- 
- 	/* set zero bit */
--	unsigned long ev_zero[] = { 0x0 };
--	const char *ev_zero_str[] = { "0", " 0 " };
-+	static const unsigned long ev_zero[NUM_WORDS] = { 0x0 };
-+	static const char * const ev_zero_str[] = { " 0 ", NULL };
- 
- 	/* KEY_MAX is 0x2ff which is greater than retval * 8 */
--	unsigned long key[] = { 1 << KEY_1 | 1 << KEY_2, 0 };
--	const char *key_str[] = { "2", "KEY_1", "KEY_2" };
-+	static const unsigned long key[NUM_WORDS] = {
-+		1 << KEY_1 | 1 << KEY_2,
-+		[ KEY_F12 / ULONG_BIT ] = 1 << (KEY_F12 % ULONG_BIT) };
-+
-+	static const char * const key_str_8[] = {
-+		"KEY_1", "KEY_2", NULL };
-+	static const char * const key_str_16[] = {
-+		"KEY_1", "KEY_2", "KEY_F12", NULL };
-+
-+	assert(sizeof(ev_more) >= (unsigned long) inject_retval);
-+	assert(sizeof(ev_less) >= (unsigned long) inject_retval);
-+	assert(sizeof(ev_zero) >= (unsigned long) inject_retval);
-+	assert(sizeof(key) >= (unsigned long) inject_retval);
- 
- 	struct {
- 		struct evdev_check check;
--		void *ptr;
-+		const void *ptr;
- 	} a[] = {
- 		{ { ARG_STR(EVIOCGID), id, print_input_id }, NULL },
- 		{ { ARG_STR(EVIOCGABS(ABS_X)), absinfo, print_input_absinfo }, NULL },
- 		{ { ARG_STR(EVIOCGABS(ABS_Y)), absinfo, print_input_absinfo }, NULL },
- 		{ { ARG_STR(EVIOCGABS(ABS_Y)), absinfo, print_input_absinfo }, NULL },
--		{ { ARG_STR(EVIOCGBIT(0, 0)), ev_more, print_getbit }, &ev_more_str },
--		{ { ARG_STR(EVIOCGBIT(0, 0)), ev_less, print_getbit }, &ev_less_str },
-+		{ { ARG_STR(EVIOCGBIT(0, 0)), ev_more, print_getbit },
-+			inject_retval * 8 <= EV_LED
-+				? (const void *) &ev_more_str_2
-+				: (const void *) &ev_more_str_3 },
-+		{ { ARG_STR(EVIOCGBIT(0, 0)), ev_less, print_getbit },
-+			inject_retval * 8 <= EV_LED
-+				? (const void *) &ev_less_str_2
-+				: (const void *) &ev_less_str_3 },
- 		{ { ARG_STR(EVIOCGBIT(0, 0)), ev_zero, print_getbit }, &ev_zero_str },
--		{ { ARG_STR(EVIOCGBIT(EV_KEY, 0)), key, print_getbit }, &key_str},
-+		{ { ARG_STR(EVIOCGBIT(EV_KEY, 0)), key, print_getbit },
-+			inject_retval * 8 <= KEY_F12
-+				? (const void *) &key_str_8
-+				: (const void *) &key_str_16 },
- # ifdef EVIOCGMTSLOTS
- 		{ { ARG_STR(EVIOCGMTSLOTS(12)), mtslots, print_mtslots }, &mtslots_str },
- 		{ { ARG_STR(EVIOCGMTSLOTS(8)), invalid_mtslot, print_mtslots }, &invalid_mtslot_str }
-Index: strace-4.24/tests-mx32/ioctl_evdev-success.c
-===================================================================
---- strace-4.24.orig/tests-mx32/ioctl_evdev-success.c	2019-08-01 18:40:58.009521546 +0200
-+++ strace-4.24/tests-mx32/ioctl_evdev-success.c	2019-08-29 12:09:30.350669261 +0200
-@@ -2,6 +2,7 @@
- 
- #ifdef HAVE_LINUX_INPUT_H
- 
-+# include <assert.h>
- # include <inttypes.h>
- # include <stdio.h>
- # include <stdlib.h>
-@@ -9,17 +10,19 @@
- # include <linux/input.h>
- # include "print_fields.h"
- 
-+# define NUM_WORDS 4
-+
- static const char *errstr;
- 
- struct evdev_check {
- 	unsigned long cmd;
- 	const char *cmd_str;
--	void *arg_ptr;
--	void (*print_arg)(long rc, void *ptr, void *arg);
-+	const void *arg_ptr;
-+	void (*print_arg)(long rc, const void *ptr, const void *arg);
- };
- 
- static long
--invoke_test_syscall(unsigned long cmd, void *p)
-+invoke_test_syscall(unsigned long cmd, const void *p)
- {
- 	long rc = ioctl(-1, cmd, p);
- 	errstr = sprintrc(rc);
-@@ -31,7 +34,7 @@
- }
- 
- static void
--test_evdev(struct evdev_check *check, void *arg)
-+test_evdev(struct evdev_check *check, const void *arg)
- {
- 	long rc = invoke_test_syscall(check->cmd, check->arg_ptr);
- 	printf("ioctl(-1, %s, ", check->cmd_str);
-@@ -43,9 +46,9 @@
- }
- 
- static void
--print_input_absinfo(long rc, void *ptr, void *arg)
-+print_input_absinfo(long rc, const void *ptr, const void *arg)
- {
--	struct input_absinfo *absinfo = ptr;
-+	const struct input_absinfo *absinfo = ptr;
- 
- 	if (rc < 0) {
- 		printf("%p", absinfo);
-@@ -67,9 +70,9 @@
- }
- 
- static void
--print_input_id(long rc, void *ptr, void *arg)
-+print_input_id(long rc, const void *ptr, const void *arg)
- {
--	struct input_id *id = ptr;
-+	const struct input_id *id = ptr;
- 
- 	if (rc < 0) {
- 		printf("%p", id);
-@@ -84,10 +87,10 @@
- 
- # ifdef EVIOCGMTSLOTS
- static void
--print_mtslots(long rc, void *ptr, void *arg)
-+print_mtslots(long rc, const void *ptr, const void *arg)
- {
--	int *buffer = ptr;
--	const char **str = arg;
-+	const int *buffer = ptr;
-+	const char * const * str = arg;
- 	int num = atoi(*(str + 1));
- 
- 	if (rc < 0) {
-@@ -104,27 +107,26 @@
- # endif
- 
- static void
--print_getbit(long rc, void *ptr, void *arg)
-+print_getbit(long rc, const void *ptr, const void *arg)
- {
--	const char **str = arg;
--	int num = atoi(*str);
-+	const char * const *str = arg;
- 
--	if (rc < 0) {
-+	if (rc <= 0) {
- 		printf("%p", ptr);
- 		return;
- 	}
- 
- 	printf("[");
--	printf("%s", *(str + 1));
--	for (unsigned int i = 2; i <= (unsigned) num; i++) {
-+	for (unsigned long i = 0; str[i]; i++) {
- # if ! VERBOSE
--		if (i > 4) {
-+		if (i >= 4) {
- 			printf(", ...");
- 			break;
- 		}
- # endif
--		printf(", ");
--		printf("%s", *(str + i));
-+		if (i)
-+			printf(", ");
-+		printf("%s", str[i]);
- 	}
- 	printf("]");
- }
-@@ -170,6 +172,7 @@
- 	TAIL_ALLOC_OBJECT_CONST_PTR(struct input_id, id);
- 	TAIL_ALLOC_OBJECT_CONST_PTR(struct input_absinfo, absinfo);
- 	TAIL_ALLOC_OBJECT_CONST_PTR(int, bad_addr_slot);
-+
- # ifdef EVIOCGMTSLOTS
- 	int mtslots[] = { ABS_MT_SLOT, 1, 3 };
- 	/* we use the second element to indicate the number of values */
-@@ -183,36 +186,65 @@
- 	const char *invalid_mtslot_str[] = { invalid_str, "1", "1" };
- # endif
- 
-+	enum { ULONG_BIT = sizeof(unsigned long) * 8 };
-+
- 	/* set more than 4 bits */
--	unsigned long ev_more[] = { 1 << EV_ABS | 1 << EV_MSC | 1 << EV_LED | 1 << EV_SND | 1 << EV_PWR };
--	/* we use the first element to indicate the number of set bits */
--	/* ev_more_str[0] is "5" so the number of set bits is 5 */
--	const char *ev_more_str[] = { "5", "EV_ABS", "EV_MSC", "EV_LED", "EV_SND", "EV_PWR" };
-+	static const unsigned long ev_more[NUM_WORDS] = {
-+		1 << EV_ABS | 1 << EV_MSC | 1 << EV_LED | 1 << EV_SND
-+		| 1 << EV_PWR };
-+	static const char * const ev_more_str_2[] = {
-+		"EV_ABS", "EV_MSC", NULL };
-+	static const char * const ev_more_str_3[] = {
-+		"EV_ABS", "EV_MSC", "EV_LED", "EV_SND", "EV_PWR", NULL };
- 
- 	/* set less than 4 bits */
--	unsigned long ev_less[] = { 1 << EV_ABS | 1 << EV_MSC | 1 << EV_LED };
--	const char *ev_less_str[] = { "3", "EV_ABS", "EV_MSC", "EV_LED" };
-+	static const unsigned long ev_less[NUM_WORDS] = {
-+		1 << EV_ABS | 1 << EV_MSC | 1 << EV_LED };
-+	static const char * const ev_less_str_2[] = {
-+		"EV_ABS", "EV_MSC", NULL };
-+	static const char * const ev_less_str_3[] = {
-+		"EV_ABS", "EV_MSC", "EV_LED", NULL };
- 
- 	/* set zero bit */
--	unsigned long ev_zero[] = { 0x0 };
--	const char *ev_zero_str[] = { "0", " 0 " };
-+	static const unsigned long ev_zero[NUM_WORDS] = { 0x0 };
-+	static const char * const ev_zero_str[] = { " 0 ", NULL };
- 
- 	/* KEY_MAX is 0x2ff which is greater than retval * 8 */
--	unsigned long key[] = { 1 << KEY_1 | 1 << KEY_2, 0 };
--	const char *key_str[] = { "2", "KEY_1", "KEY_2" };
-+	static const unsigned long key[NUM_WORDS] = {
-+		1 << KEY_1 | 1 << KEY_2,
-+		[ KEY_F12 / ULONG_BIT ] = 1 << (KEY_F12 % ULONG_BIT) };
-+
-+	static const char * const key_str_8[] = {
-+		"KEY_1", "KEY_2", NULL };
-+	static const char * const key_str_16[] = {
-+		"KEY_1", "KEY_2", "KEY_F12", NULL };
-+
-+	assert(sizeof(ev_more) >= (unsigned long) inject_retval);
-+	assert(sizeof(ev_less) >= (unsigned long) inject_retval);
-+	assert(sizeof(ev_zero) >= (unsigned long) inject_retval);
-+	assert(sizeof(key) >= (unsigned long) inject_retval);
- 
- 	struct {
- 		struct evdev_check check;
--		void *ptr;
-+		const void *ptr;
- 	} a[] = {
- 		{ { ARG_STR(EVIOCGID), id, print_input_id }, NULL },
- 		{ { ARG_STR(EVIOCGABS(ABS_X)), absinfo, print_input_absinfo }, NULL },
- 		{ { ARG_STR(EVIOCGABS(ABS_Y)), absinfo, print_input_absinfo }, NULL },
- 		{ { ARG_STR(EVIOCGABS(ABS_Y)), absinfo, print_input_absinfo }, NULL },
--		{ { ARG_STR(EVIOCGBIT(0, 0)), ev_more, print_getbit }, &ev_more_str },
--		{ { ARG_STR(EVIOCGBIT(0, 0)), ev_less, print_getbit }, &ev_less_str },
-+		{ { ARG_STR(EVIOCGBIT(0, 0)), ev_more, print_getbit },
-+			inject_retval * 8 <= EV_LED
-+				? (const void *) &ev_more_str_2
-+				: (const void *) &ev_more_str_3 },
-+		{ { ARG_STR(EVIOCGBIT(0, 0)), ev_less, print_getbit },
-+			inject_retval * 8 <= EV_LED
-+				? (const void *) &ev_less_str_2
-+				: (const void *) &ev_less_str_3 },
- 		{ { ARG_STR(EVIOCGBIT(0, 0)), ev_zero, print_getbit }, &ev_zero_str },
--		{ { ARG_STR(EVIOCGBIT(EV_KEY, 0)), key, print_getbit }, &key_str},
-+		{ { ARG_STR(EVIOCGBIT(EV_KEY, 0)), key, print_getbit },
-+			inject_retval * 8 <= KEY_F12
-+				? (const void *) &key_str_8
-+				: (const void *) &key_str_16 },
- # ifdef EVIOCGMTSLOTS
- 		{ { ARG_STR(EVIOCGMTSLOTS(12)), mtslots, print_mtslots }, &mtslots_str },
- 		{ { ARG_STR(EVIOCGMTSLOTS(8)), invalid_mtslot, print_mtslots }, &invalid_mtslot_str }
diff --git a/SOURCES/0035-v4l2-avoid-shifting-left-a-signed-number-by-31-bit.patch b/SOURCES/0035-v4l2-avoid-shifting-left-a-signed-number-by-31-bit.patch
deleted file mode 100644
index a2c85f9..0000000
--- a/SOURCES/0035-v4l2-avoid-shifting-left-a-signed-number-by-31-bit.patch
+++ /dev/null
@@ -1,32 +0,0 @@
-From 91281fec7823f1cd3df3374fbcbd14af52a3fa1b Mon Sep 17 00:00:00 2001
-From: Eugene Syromyatnikov <evgsyr@gmail.com>
-Date: Wed, 14 Aug 2019 17:15:47 +0200
-Subject: [PATCH] v4l2: avoid shifting left a signed number by 31 bit
-
-cppcheck warns about it with the following diagnostics:
-
-    error[shiftTooManyBitsSigned]: Shifting signed 32-bit value by 31 bits is
-    undefined behaviour
-
-* v4l2.c [!v4l2_fourcc_be] (v4l2_fourcc_be): Shift left 1U and not 1 in
-order to get 0x80000000.
----
- v4l2.c | 2 +-
- 1 file changed, 1 insertion(+), 1 deletion(-)
-
-diff --git a/v4l2.c b/v4l2.c
-index 5da457c..505e7b8 100644
---- a/v4l2.c
-+++ b/v4l2.c
-@@ -47,7 +47,7 @@ typedef struct v4l2_standard struct_v4l2_standard;
- 
- /* v4l2_fourcc_be was added by Linux commit v3.18-rc1~101^2^2~127 */
- #ifndef v4l2_fourcc_be
--# define v4l2_fourcc_be(a, b, c, d) (v4l2_fourcc(a, b, c, d) | (1 << 31))
-+# define v4l2_fourcc_be(a, b, c, d) (v4l2_fourcc(a, b, c, d) | (1U << 31))
- #endif
- 
- #define FMT_FRACT "%u/%u"
--- 
-2.1.4
-
diff --git a/SOURCES/0036-syscall.c-avoid-infinite-loop-in-subcalls-parsing.patch b/SOURCES/0036-syscall.c-avoid-infinite-loop-in-subcalls-parsing.patch
deleted file mode 100644
index 9144dc1..0000000
--- a/SOURCES/0036-syscall.c-avoid-infinite-loop-in-subcalls-parsing.patch
+++ /dev/null
@@ -1,55 +0,0 @@
-From 522ad3a0e73148dadd2480cd9cec84d9112b2e57 Mon Sep 17 00:00:00 2001
-From: Eugene Syromyatnikov <evgsyr@gmail.com>
-Date: Tue, 4 Sep 2018 14:48:13 +0200
-Subject: [PATCH] syscall.c: avoid infinite loop in subcalls parsing
-
-clang complains about it, so it might be a good reason to refactor it
-into something more linear.
-
-* syscall.c (syscall_entering_decode): Put syscall subcall decoding
-before ipc/socket subcall decoding, remove the loop.
----
- syscall.c | 19 ++++++-------------
- 1 file changed, 6 insertions(+), 13 deletions(-)
-
-diff --git a/syscall.c b/syscall.c
-index bae7343..a67d744 100644
---- a/syscall.c
-+++ b/syscall.c
-@@ -579,11 +579,13 @@ syscall_entering_decode(struct tcb *tcp)
- 		return res;
- 	}
- 
-+# ifdef SYS_syscall_subcall
-+	if (tcp_sysent(tcp)->sen == SEN_syscall)
-+		decode_syscall_subcall(tcp);
-+# endif
- #if defined SYS_ipc_subcall	\
-- || defined SYS_socket_subcall	\
-- || defined SYS_syscall_subcall
--	for (;;) {
--		switch (tcp_sysent(tcp)->sen) {
-+ || defined SYS_socket_subcall
-+	switch (tcp_sysent(tcp)->sen) {
- # ifdef SYS_ipc_subcall
- 		case SEN_ipc:
- 			decode_ipc_subcall(tcp);
-@@ -594,15 +596,6 @@ syscall_entering_decode(struct tcb *tcp)
- 			decode_socket_subcall(tcp);
- 			break;
- # endif
--# ifdef SYS_syscall_subcall
--		case SEN_syscall:
--			decode_syscall_subcall(tcp);
--			if (tcp_sysent(tcp)->sen != SEN_syscall)
--				continue;
--			break;
--# endif
--		}
--		break;
- 	}
- #endif
- 
--- 
-2.1.4
-
diff --git a/SOURCES/0037-kvm-avoid-bogus-vcpu_info-assignment-in-vcpu_registe.patch b/SOURCES/0037-kvm-avoid-bogus-vcpu_info-assignment-in-vcpu_registe.patch
deleted file mode 100644
index 7531868..0000000
--- a/SOURCES/0037-kvm-avoid-bogus-vcpu_info-assignment-in-vcpu_registe.patch
+++ /dev/null
@@ -1,36 +0,0 @@
-From 9446038e9face3313373ca5f7539476789fd4660 Mon Sep 17 00:00:00 2001
-From: Eugene Syromyatnikov <evgsyr@gmail.com>
-Date: Tue, 18 Dec 2018 05:37:30 +0100
-Subject: [PATCH] kvm: avoid bogus vcpu_info assignment in vcpu_register
-
-Also reformat code a bit to make nesting a bit clearer.
-
-Reported by Clang.
-
-* kvm.c (vcpu_register): Do not assign vcpu_alloc result to vcpu_info
-as this value is not used afterwards in the function.
----
- kvm.c | 7 +++----
- 1 file changed, 3 insertions(+), 4 deletions(-)
-
-diff --git a/kvm.c b/kvm.c
-index 984a75e..8bdf1cc 100644
---- a/kvm.c
-+++ b/kvm.c
-@@ -76,10 +76,9 @@ vcpu_register(struct tcb *const tcp, int fd, int cpuid)
- 
- 	struct vcpu_info *vcpu_info = vcpu_find(tcp, fd);
- 
--	if (!vcpu_info)
--		vcpu_info = vcpu_alloc(tcp, fd, cpuid);
--	else if (vcpu_info->cpuid != cpuid)
--	{
-+	if (!vcpu_info) {
-+		vcpu_alloc(tcp, fd, cpuid);
-+	} else if (vcpu_info->cpuid != cpuid) {
- 		vcpu_info->cpuid = cpuid;
- 		vcpu_info->resolved = false;
- 	}
--- 
-2.1.4
-
diff --git a/SOURCES/0038-xlat-use-unsgined-type-for-mount_flags-fallback-valu.patch b/SOURCES/0038-xlat-use-unsgined-type-for-mount_flags-fallback-valu.patch
deleted file mode 100644
index 5bc3768..0000000
--- a/SOURCES/0038-xlat-use-unsgined-type-for-mount_flags-fallback-valu.patch
+++ /dev/null
@@ -1,365 +0,0 @@
-From c26541c73c3b4be2977e719d77287255eb346cdf Mon Sep 17 00:00:00 2001
-From: Eugene Syromyatnikov <evgsyr@gmail.com>
-Date: Thu, 17 Oct 2019 13:13:45 +0200
-Subject: [PATCH] xlat: use unsgined type for mount_flags fallback values
-
-Reported by cppcheck:
-
-    strace/xlat/mount_flags.h:256: error[shiftTooManyBitsSigned]:
-    Shifting signed 32-bit value by 31 bits is undefined behaviour
-    #  254|    XLAT(MS_BORN),
-    #  255|    XLAT(MS_ACTIVE),
-    #  256|->  XLAT(MS_NOUSER),
-    #  257|    XLAT_END
-    #  258|   };
-
-* xlat/mount_flags.in: Use 1U instead of 1 as a bit shifting operand.
-
-References: https://bugzilla.redhat.com/show_bug.cgi?id=1747524
----
- xlat/mount_flags.in | 60 ++++++++++++++++++++++++++---------------------------
- 1 file changed, 30 insertions(+), 30 deletions(-)
-
-Index: strace-4.24/xlat/mount_flags.in
-===================================================================
---- strace-4.24.orig/xlat/mount_flags.in	2018-04-24 02:35:27.000000000 +0200
-+++ strace-4.24/xlat/mount_flags.in	2019-12-02 18:37:39.403710911 +0100
-@@ -1,30 +1,30 @@
--MS_RDONLY	1
--MS_NOSUID	2
--MS_NODEV	4
--MS_NOEXEC	8
--MS_SYNCHRONOUS	16
--MS_REMOUNT	32
--MS_MANDLOCK	64
--MS_DIRSYNC	128
--MS_NOATIME	1024
--MS_NODIRATIME	2048
--MS_BIND		4096
--MS_MOVE		8192
--MS_REC		16384
--MS_SILENT	32768
--MS_POSIXACL	(1<<16)
--MS_UNBINDABLE	(1<<17)
--MS_PRIVATE	(1<<18)
--MS_SLAVE	(1<<19)
--MS_SHARED	(1<<20)
--MS_RELATIME	(1<<21)
--MS_KERNMOUNT	(1<<22)
--MS_I_VERSION	(1<<23)
--MS_STRICTATIME	(1<<24)
--MS_LAZYTIME	(1<<25)
--MS_SUBMOUNT     (1<<26)
--MS_NOREMOTELOCK	(1<<27)
--MS_NOSEC	(1<<28)
--MS_BORN		(1<<29)
--MS_ACTIVE	(1<<30)
--MS_NOUSER	(1<<31)
-+MS_RDONLY	(1U<<0)
-+MS_NOSUID	(1U<<1)
-+MS_NODEV	(1U<<2)
-+MS_NOEXEC	(1U<<3)
-+MS_SYNCHRONOUS	(1U<<4)
-+MS_REMOUNT	(1U<<5)
-+MS_MANDLOCK	(1U<<6)
-+MS_DIRSYNC	(1U<<7)
-+MS_NOATIME	(1U<<10)
-+MS_NODIRATIME	(1U<<11)
-+MS_BIND		(1U<<12)
-+MS_MOVE		(1U<<13)
-+MS_REC		(1U<<14)
-+MS_SILENT	(1U<<15)
-+MS_POSIXACL	(1U<<16)
-+MS_UNBINDABLE	(1U<<17)
-+MS_PRIVATE	(1U<<18)
-+MS_SLAVE	(1U<<19)
-+MS_SHARED	(1U<<20)
-+MS_RELATIME	(1U<<21)
-+MS_KERNMOUNT	(1U<<22)
-+MS_I_VERSION	(1U<<23)
-+MS_STRICTATIME	(1U<<24)
-+MS_LAZYTIME	(1U<<25)
-+MS_SUBMOUNT     (1U<<26)
-+MS_NOREMOTELOCK	(1U<<27)
-+MS_NOSEC	(1U<<28)
-+MS_BORN		(1U<<29)
-+MS_ACTIVE	(1U<<30)
-+MS_NOUSER	(1U<<31)
-Index: strace-4.24/xlat/mount_flags.h
-===================================================================
---- strace-4.24.orig/xlat/mount_flags.h	2018-08-14 02:44:19.000000000 +0200
-+++ strace-4.24/xlat/mount_flags.h	2019-12-02 18:38:36.102900164 +0100
-@@ -5,213 +5,213 @@
- 
- #if defined(MS_RDONLY) || (defined(HAVE_DECL_MS_RDONLY) && HAVE_DECL_MS_RDONLY)
- DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
--static_assert((MS_RDONLY) == (1), "MS_RDONLY != 1");
-+static_assert((MS_RDONLY) == ((1U<<0)), "MS_RDONLY != (1U<<0)");
- DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
- #else
--# define MS_RDONLY 1
-+# define MS_RDONLY (1U<<0)
- #endif
- #if defined(MS_NOSUID) || (defined(HAVE_DECL_MS_NOSUID) && HAVE_DECL_MS_NOSUID)
- DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
--static_assert((MS_NOSUID) == (2), "MS_NOSUID != 2");
-+static_assert((MS_NOSUID) == ((1U<<1)), "MS_NOSUID != (1U<<1)");
- DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
- #else
--# define MS_NOSUID 2
-+# define MS_NOSUID (1U<<1)
- #endif
- #if defined(MS_NODEV) || (defined(HAVE_DECL_MS_NODEV) && HAVE_DECL_MS_NODEV)
- DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
--static_assert((MS_NODEV) == (4), "MS_NODEV != 4");
-+static_assert((MS_NODEV) == ((1U<<2)), "MS_NODEV != (1U<<2)");
- DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
- #else
--# define MS_NODEV 4
-+# define MS_NODEV (1U<<2)
- #endif
- #if defined(MS_NOEXEC) || (defined(HAVE_DECL_MS_NOEXEC) && HAVE_DECL_MS_NOEXEC)
- DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
--static_assert((MS_NOEXEC) == (8), "MS_NOEXEC != 8");
-+static_assert((MS_NOEXEC) == ((1U<<3)), "MS_NOEXEC != (1U<<3)");
- DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
- #else
--# define MS_NOEXEC 8
-+# define MS_NOEXEC (1U<<3)
- #endif
- #if defined(MS_SYNCHRONOUS) || (defined(HAVE_DECL_MS_SYNCHRONOUS) && HAVE_DECL_MS_SYNCHRONOUS)
- DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
--static_assert((MS_SYNCHRONOUS) == (16), "MS_SYNCHRONOUS != 16");
-+static_assert((MS_SYNCHRONOUS) == ((1U<<4)), "MS_SYNCHRONOUS != (1U<<4)");
- DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
- #else
--# define MS_SYNCHRONOUS 16
-+# define MS_SYNCHRONOUS (1U<<4)
- #endif
- #if defined(MS_REMOUNT) || (defined(HAVE_DECL_MS_REMOUNT) && HAVE_DECL_MS_REMOUNT)
- DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
--static_assert((MS_REMOUNT) == (32), "MS_REMOUNT != 32");
-+static_assert((MS_REMOUNT) == ((1U<<5)), "MS_REMOUNT != (1U<<5)");
- DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
- #else
--# define MS_REMOUNT 32
-+# define MS_REMOUNT (1U<<5)
- #endif
- #if defined(MS_MANDLOCK) || (defined(HAVE_DECL_MS_MANDLOCK) && HAVE_DECL_MS_MANDLOCK)
- DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
--static_assert((MS_MANDLOCK) == (64), "MS_MANDLOCK != 64");
-+static_assert((MS_MANDLOCK) == ((1U<<6)), "MS_MANDLOCK != (1U<<6)");
- DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
- #else
--# define MS_MANDLOCK 64
-+# define MS_MANDLOCK (1U<<6)
- #endif
- #if defined(MS_DIRSYNC) || (defined(HAVE_DECL_MS_DIRSYNC) && HAVE_DECL_MS_DIRSYNC)
- DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
--static_assert((MS_DIRSYNC) == (128), "MS_DIRSYNC != 128");
-+static_assert((MS_DIRSYNC) == ((1U<<7)), "MS_DIRSYNC != (1U<<7)");
- DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
- #else
--# define MS_DIRSYNC 128
-+# define MS_DIRSYNC (1U<<7)
- #endif
- #if defined(MS_NOATIME) || (defined(HAVE_DECL_MS_NOATIME) && HAVE_DECL_MS_NOATIME)
- DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
--static_assert((MS_NOATIME) == (1024), "MS_NOATIME != 1024");
-+static_assert((MS_NOATIME) == ((1U<<10)), "MS_NOATIME != (1U<<10)");
- DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
- #else
--# define MS_NOATIME 1024
-+# define MS_NOATIME (1U<<10)
- #endif
- #if defined(MS_NODIRATIME) || (defined(HAVE_DECL_MS_NODIRATIME) && HAVE_DECL_MS_NODIRATIME)
- DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
--static_assert((MS_NODIRATIME) == (2048), "MS_NODIRATIME != 2048");
-+static_assert((MS_NODIRATIME) == ((1U<<11)), "MS_NODIRATIME != (1U<<11)");
- DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
- #else
--# define MS_NODIRATIME 2048
-+# define MS_NODIRATIME (1U<<11)
- #endif
- #if defined(MS_BIND) || (defined(HAVE_DECL_MS_BIND) && HAVE_DECL_MS_BIND)
- DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
--static_assert((MS_BIND) == (4096), "MS_BIND != 4096");
-+static_assert((MS_BIND) == ((1U<<12)), "MS_BIND != (1U<<12)");
- DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
- #else
--# define MS_BIND 4096
-+# define MS_BIND (1U<<12)
- #endif
- #if defined(MS_MOVE) || (defined(HAVE_DECL_MS_MOVE) && HAVE_DECL_MS_MOVE)
- DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
--static_assert((MS_MOVE) == (8192), "MS_MOVE != 8192");
-+static_assert((MS_MOVE) == ((1U<<13)), "MS_MOVE != (1U<<13)");
- DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
- #else
--# define MS_MOVE 8192
-+# define MS_MOVE (1U<<13)
- #endif
- #if defined(MS_REC) || (defined(HAVE_DECL_MS_REC) && HAVE_DECL_MS_REC)
- DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
--static_assert((MS_REC) == (16384), "MS_REC != 16384");
-+static_assert((MS_REC) == ((1U<<14)), "MS_REC != (1U<<14)");
- DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
- #else
--# define MS_REC 16384
-+# define MS_REC (1U<<14)
- #endif
- #if defined(MS_SILENT) || (defined(HAVE_DECL_MS_SILENT) && HAVE_DECL_MS_SILENT)
- DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
--static_assert((MS_SILENT) == (32768), "MS_SILENT != 32768");
-+static_assert((MS_SILENT) == ((1U<<15)), "MS_SILENT != (1U<<15)");
- DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
- #else
--# define MS_SILENT 32768
-+# define MS_SILENT (1U<<15)
- #endif
- #if defined(MS_POSIXACL) || (defined(HAVE_DECL_MS_POSIXACL) && HAVE_DECL_MS_POSIXACL)
- DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
--static_assert((MS_POSIXACL) == ((1<<16)), "MS_POSIXACL != (1<<16)");
-+static_assert((MS_POSIXACL) == ((1U<<16)), "MS_POSIXACL != (1U<<16)");
- DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
- #else
--# define MS_POSIXACL (1<<16)
-+# define MS_POSIXACL (1U<<16)
- #endif
- #if defined(MS_UNBINDABLE) || (defined(HAVE_DECL_MS_UNBINDABLE) && HAVE_DECL_MS_UNBINDABLE)
- DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
--static_assert((MS_UNBINDABLE) == ((1<<17)), "MS_UNBINDABLE != (1<<17)");
-+static_assert((MS_UNBINDABLE) == ((1U<<17)), "MS_UNBINDABLE != (1U<<17)");
- DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
- #else
--# define MS_UNBINDABLE (1<<17)
-+# define MS_UNBINDABLE (1U<<17)
- #endif
- #if defined(MS_PRIVATE) || (defined(HAVE_DECL_MS_PRIVATE) && HAVE_DECL_MS_PRIVATE)
- DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
--static_assert((MS_PRIVATE) == ((1<<18)), "MS_PRIVATE != (1<<18)");
-+static_assert((MS_PRIVATE) == ((1U<<18)), "MS_PRIVATE != (1U<<18)");
- DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
- #else
--# define MS_PRIVATE (1<<18)
-+# define MS_PRIVATE (1U<<18)
- #endif
- #if defined(MS_SLAVE) || (defined(HAVE_DECL_MS_SLAVE) && HAVE_DECL_MS_SLAVE)
- DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
--static_assert((MS_SLAVE) == ((1<<19)), "MS_SLAVE != (1<<19)");
-+static_assert((MS_SLAVE) == ((1U<<19)), "MS_SLAVE != (1U<<19)");
- DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
- #else
--# define MS_SLAVE (1<<19)
-+# define MS_SLAVE (1U<<19)
- #endif
- #if defined(MS_SHARED) || (defined(HAVE_DECL_MS_SHARED) && HAVE_DECL_MS_SHARED)
- DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
--static_assert((MS_SHARED) == ((1<<20)), "MS_SHARED != (1<<20)");
-+static_assert((MS_SHARED) == ((1U<<20)), "MS_SHARED != (1U<<20)");
- DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
- #else
--# define MS_SHARED (1<<20)
-+# define MS_SHARED (1U<<20)
- #endif
- #if defined(MS_RELATIME) || (defined(HAVE_DECL_MS_RELATIME) && HAVE_DECL_MS_RELATIME)
- DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
--static_assert((MS_RELATIME) == ((1<<21)), "MS_RELATIME != (1<<21)");
-+static_assert((MS_RELATIME) == ((1U<<21)), "MS_RELATIME != (1U<<21)");
- DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
- #else
--# define MS_RELATIME (1<<21)
-+# define MS_RELATIME (1U<<21)
- #endif
- #if defined(MS_KERNMOUNT) || (defined(HAVE_DECL_MS_KERNMOUNT) && HAVE_DECL_MS_KERNMOUNT)
- DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
--static_assert((MS_KERNMOUNT) == ((1<<22)), "MS_KERNMOUNT != (1<<22)");
-+static_assert((MS_KERNMOUNT) == ((1U<<22)), "MS_KERNMOUNT != (1U<<22)");
- DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
- #else
--# define MS_KERNMOUNT (1<<22)
-+# define MS_KERNMOUNT (1U<<22)
- #endif
- #if defined(MS_I_VERSION) || (defined(HAVE_DECL_MS_I_VERSION) && HAVE_DECL_MS_I_VERSION)
- DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
--static_assert((MS_I_VERSION) == ((1<<23)), "MS_I_VERSION != (1<<23)");
-+static_assert((MS_I_VERSION) == ((1U<<23)), "MS_I_VERSION != (1U<<23)");
- DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
- #else
--# define MS_I_VERSION (1<<23)
-+# define MS_I_VERSION (1U<<23)
- #endif
- #if defined(MS_STRICTATIME) || (defined(HAVE_DECL_MS_STRICTATIME) && HAVE_DECL_MS_STRICTATIME)
- DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
--static_assert((MS_STRICTATIME) == ((1<<24)), "MS_STRICTATIME != (1<<24)");
-+static_assert((MS_STRICTATIME) == ((1U<<24)), "MS_STRICTATIME != (1U<<24)");
- DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
- #else
--# define MS_STRICTATIME (1<<24)
-+# define MS_STRICTATIME (1U<<24)
- #endif
- #if defined(MS_LAZYTIME) || (defined(HAVE_DECL_MS_LAZYTIME) && HAVE_DECL_MS_LAZYTIME)
- DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
--static_assert((MS_LAZYTIME) == ((1<<25)), "MS_LAZYTIME != (1<<25)");
-+static_assert((MS_LAZYTIME) == ((1U<<25)), "MS_LAZYTIME != (1U<<25)");
- DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
- #else
--# define MS_LAZYTIME (1<<25)
-+# define MS_LAZYTIME (1U<<25)
- #endif
- #if defined(MS_SUBMOUNT) || (defined(HAVE_DECL_MS_SUBMOUNT) && HAVE_DECL_MS_SUBMOUNT)
- DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
--static_assert((MS_SUBMOUNT) == ((1<<26)), "MS_SUBMOUNT != (1<<26)");
-+static_assert((MS_SUBMOUNT) == ((1U<<26)), "MS_SUBMOUNT != (1U<<26)");
- DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
- #else
--# define MS_SUBMOUNT (1<<26)
-+# define MS_SUBMOUNT (1U<<26)
- #endif
- #if defined(MS_NOREMOTELOCK) || (defined(HAVE_DECL_MS_NOREMOTELOCK) && HAVE_DECL_MS_NOREMOTELOCK)
- DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
--static_assert((MS_NOREMOTELOCK) == ((1<<27)), "MS_NOREMOTELOCK != (1<<27)");
-+static_assert((MS_NOREMOTELOCK) == ((1U<<27)), "MS_NOREMOTELOCK != (1U<<27)");
- DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
- #else
--# define MS_NOREMOTELOCK (1<<27)
-+# define MS_NOREMOTELOCK (1U<<27)
- #endif
- #if defined(MS_NOSEC) || (defined(HAVE_DECL_MS_NOSEC) && HAVE_DECL_MS_NOSEC)
- DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
--static_assert((MS_NOSEC) == ((1<<28)), "MS_NOSEC != (1<<28)");
-+static_assert((MS_NOSEC) == ((1U<<28)), "MS_NOSEC != (1U<<28)");
- DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
- #else
--# define MS_NOSEC (1<<28)
-+# define MS_NOSEC (1U<<28)
- #endif
- #if defined(MS_BORN) || (defined(HAVE_DECL_MS_BORN) && HAVE_DECL_MS_BORN)
- DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
--static_assert((MS_BORN) == ((1<<29)), "MS_BORN != (1<<29)");
-+static_assert((MS_BORN) == ((1U<<29)), "MS_BORN != (1U<<29)");
- DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
- #else
--# define MS_BORN (1<<29)
-+# define MS_BORN (1U<<29)
- #endif
- #if defined(MS_ACTIVE) || (defined(HAVE_DECL_MS_ACTIVE) && HAVE_DECL_MS_ACTIVE)
- DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
--static_assert((MS_ACTIVE) == ((1<<30)), "MS_ACTIVE != (1<<30)");
-+static_assert((MS_ACTIVE) == ((1U<<30)), "MS_ACTIVE != (1U<<30)");
- DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
- #else
--# define MS_ACTIVE (1<<30)
-+# define MS_ACTIVE (1U<<30)
- #endif
- #if defined(MS_NOUSER) || (defined(HAVE_DECL_MS_NOUSER) && HAVE_DECL_MS_NOUSER)
- DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
--static_assert((MS_NOUSER) == ((1<<31)), "MS_NOUSER != (1<<31)");
-+static_assert((MS_NOUSER) == ((1U<<31)), "MS_NOUSER != (1U<<31)");
- DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
- #else
--# define MS_NOUSER (1<<31)
-+# define MS_NOUSER (1U<<31)
- #endif
- 
- #ifndef XLAT_MACROS_ONLY
diff --git a/SOURCES/0039-unwind-libdw-fix-initialization-of-libdwfl-cache.patch b/SOURCES/0039-unwind-libdw-fix-initialization-of-libdwfl-cache.patch
deleted file mode 100644
index 17fd6cc..0000000
--- a/SOURCES/0039-unwind-libdw-fix-initialization-of-libdwfl-cache.patch
+++ /dev/null
@@ -1,36 +0,0 @@
-From 69b2c33a77fa687feb41fafdbe187013aa812384 Mon Sep 17 00:00:00 2001
-From: "Dmitry V. Levin" <ldv@altlinux.org>
-Date: Tue, 7 Jan 2020 18:54:55 +0000
-Subject: [PATCH] unwind-libdw: fix initialization of libdwfl cache
-
-This fixes stack trace printing for early syscalls that precede
-the first syscall from memory mapping or execve families.
-
-* unwind-libdw.c (tcb_init): Set struct ctx.last_proc_updating
-to a value different from mapping_generation so that libdwfl cache
-is properly initialized before the first use.
-* NEWS: Mention this fix.
-
-Resolves: https://bugzilla.redhat.com/show_bug.cgi?id=1788636
----
-Backport changes:
- - NEWS hunk has been dropped.
-
----
- NEWS           | 2 ++
- unwind-libdw.c | 2 +-
- 2 files changed, 3 insertions(+), 1 deletion(-)
-
-Index: strace-4.24/unwind-libdw.c
-===================================================================
---- strace-4.24.orig/unwind-libdw.c	2020-01-23 12:55:01.922338273 +0100
-+++ strace-4.24/unwind-libdw.c	2020-01-23 12:55:06.131299136 +0100
-@@ -69,7 +69,7 @@
- 
- 	struct ctx *ctx = xmalloc(sizeof(*ctx));
- 	ctx->dwfl = dwfl;
--	ctx->last_proc_updating = 0;
-+	ctx->last_proc_updating = mapping_generation - 1;
- 	return ctx;
- }
- 
diff --git a/SOURCES/0040-syscall-do-not-capture-stack-trace-while-the-tracee-.patch b/SOURCES/0040-syscall-do-not-capture-stack-trace-while-the-tracee-.patch
deleted file mode 100644
index a9add6e..0000000
--- a/SOURCES/0040-syscall-do-not-capture-stack-trace-while-the-tracee-.patch
+++ /dev/null
@@ -1,42 +0,0 @@
-From 35e080ae319d25c1df82855cda3a1bb014e90ba6 Mon Sep 17 00:00:00 2001
-From: "Dmitry V. Levin" <ldv@altlinux.org>
-Date: Wed, 8 Jan 2020 00:41:58 +0000
-Subject: [PATCH] syscall: do not capture stack trace while the tracee executes
- strace code
-
-* syscall.c (syscall_entering_trace) [ENABLE_STACKTRACE]: Do not capture
-stack trace when TCB_CHECK_EXEC_SYSCALL flag is set.
----
- syscall.c | 9 +++++----
- 1 file changed, 5 insertions(+), 4 deletions(-)
-
-diff --git a/syscall.c b/syscall.c
-index fadd3b5..a8fb4f1 100644
---- a/syscall.c
-+++ b/syscall.c
-@@ -620,7 +620,7 @@ syscall_entering_trace(struct tcb *tcp, unsigned int *sig)
- 	if (hide_log(tcp)) {
- 		/*
- 		 * Restrain from fault injection
--		 * while the trace executes strace code.
-+		 * while the tracee executes strace code.
- 		 */
- 		tcp->qual_flg &= ~QUAL_INJECT;
- 
-@@ -655,9 +655,10 @@ syscall_entering_trace(struct tcb *tcp, unsigned int *sig)
- 	}
- 
- #ifdef ENABLE_STACKTRACE
--	if (stack_trace_enabled) {
--		if (tcp_sysent(tcp)->sys_flags & STACKTRACE_CAPTURE_ON_ENTER)
--			unwind_tcb_capture(tcp);
-+	if (stack_trace_enabled &&
-+	    !check_exec_syscall(tcp) &&
-+	    tcp_sysent(tcp)->sys_flags & STACKTRACE_CAPTURE_ON_ENTER) {
-+		unwind_tcb_capture(tcp);
- 	}
- #endif
- 
--- 
-2.1.4
-
diff --git a/SOURCES/0041-tests-add-strace-k-p-test.patch b/SOURCES/0041-tests-add-strace-k-p-test.patch
deleted file mode 100644
index 3f56199..0000000
--- a/SOURCES/0041-tests-add-strace-k-p-test.patch
+++ /dev/null
@@ -1,761 +0,0 @@
-From 8e515c744935fe67e6a1b941f4c5414472c163b7 Mon Sep 17 00:00:00 2001
-From: Eugene Syromyatnikov <evgsyr@gmail.com>
-Date: Mon, 20 Jan 2020 16:19:40 +0100
-Subject: [PATCH] tests: add strace-k-p test
-
-Add a check of the stack unwinding for attached processes.
-
-* tests/stack-fcall-attach.c: New file.
-* tests/strace-k-p.expected: Likewise.
-* tests/strace-k-p.test: New test.
-* tests/Makefile.am (EXTRA_DIST): Add strace-k-p.expected and strace-k-p.test.
-(STACKTRACE_TESTS): Add strace-k-p.test
-(check_PROGRAMS): Add stack-fcall-attach.
-(stack_fcall_attach_SOURCES): New variable.
-* tests/stack-fcall.c: Include "tests.h" and <unistd.h>.
-[!ATTACH_MODE] (ATTACH_MODE): Define to 0.
-(main) [ATTACH_MODE]: Wait a bit.
-* tests/strace-k.test: Add attach mode.
-
-Complements: v5.4-18-g69b2c33 "unwind-libdw: fix initialization of libdwfl cache"
----
-Backport changes:
- * "SIGURG" line has been removed from tests/strace-k-p.expected, as it requires
-   v4.25~22 "Print stack traces on signals" and v4.25~21 "tests: check stack
-   unwinding for signals".
- * "chdir" usage in tests/strace-k-p.expected has been replaced with "getpid",
-    as it is the syscall that was used in the stack-fcall.c at the time.
- * Added the respective changes to tests/Makefile.in file.
- * The changes to tests/stack-fcall-attach.c, tests/strace-k-p.expected,
-   tests/strace-k-p.test, tests/Makefile.am, tests/stack-fcall.c,
-   and tests/strace-k.test have been copied over to tests-m32 and tests-mx32
-   directories.
-
----
- tests/Makefile.am          |  8 +++++++-
- tests/stack-fcall-attach.c |  2 ++
- tests/stack-fcall.c        | 11 +++++++++++
- tests/strace-k-p.expected  |  2 ++
- tests/strace-k-p.test      | 13 +++++++++++++
- tests/strace-k.test        | 17 ++++++++++++++++-
- 6 files changed, 51 insertions(+), 2 deletions(-)
- create mode 100644 tests/stack-fcall-attach.c
- create mode 100644 tests/strace-k-p.expected
- create mode 100755 tests/strace-k-p.test
-
-Index: strace-5.1/tests/Makefile.am
-===================================================================
---- strace-5.1.orig/tests/Makefile.am	2020-01-23 16:56:22.081268798 +0100
-+++ strace-5.1/tests/Makefile.am	2020-01-23 17:03:50.786051167 +0100
-@@ -156,6 +156,7 @@
- 	signal_receive \
- 	sleep \
- 	stack-fcall \
-+	stack-fcall-attach \
- 	stack-fcall-mangled \
- 	threads-execve \
- 	unblock_reset_raise \
-@@ -198,6 +199,9 @@
- stack_fcall_SOURCES = stack-fcall.c \
- 	stack-fcall-0.c stack-fcall-1.c stack-fcall-2.c stack-fcall-3.c
- 
-+stack_fcall_attach_SOURCES = stack-fcall-attach.c \
-+	stack-fcall-0.c stack-fcall-1.c stack-fcall-2.c stack-fcall-3.c
-+
- stack_fcall_mangled_SOURCES = stack-fcall-mangled.c \
- 	stack-fcall-mangled-0.c stack-fcall-mangled-1.c \
- 	stack-fcall-mangled-2.c stack-fcall-mangled-3.c
-@@ -205,7 +209,7 @@
- include gen_tests.am
- 
- if ENABLE_STACKTRACE
--STACKTRACE_TESTS = strace-k.test
-+STACKTRACE_TESTS = strace-k.test strace-k-p.test
- if USE_DEMANGLE
- STACKTRACE_TESTS += strace-k-demangle.test
- endif
-@@ -428,6 +432,8 @@
- 	strace-ff.expected \
- 	strace-k-demangle.expected \
- 	strace-k-demangle.test \
-+	strace-k-p.expected \
-+	strace-k-p.test \
- 	strace-k.expected \
- 	strace-k.test \
- 	strace-r.expected \
-Index: strace-5.1/tests/stack-fcall-attach.c
-===================================================================
---- /dev/null	1970-01-01 00:00:00.000000000 +0000
-+++ strace-5.1/tests/stack-fcall-attach.c	2020-01-23 17:03:50.786051167 +0100
-@@ -0,0 +1,2 @@
-+#define ATTACH_MODE 1
-+#include "stack-fcall.c"
-Index: strace-5.1/tests/stack-fcall.c
-===================================================================
---- strace-5.1.orig/tests/stack-fcall.c	2020-01-23 17:03:50.787051163 +0100
-+++ strace-5.1/tests/stack-fcall.c	2020-01-23 17:04:34.525868669 +0100
-@@ -5,10 +5,21 @@
-  * SPDX-License-Identifier: GPL-2.0-or-later
-  */
- 
-+#include "tests.h"
-+#include <unistd.h>
- #include "stack-fcall.h"
- 
-+#ifndef ATTACH_MODE
-+# define ATTACH_MODE 0
-+#endif
-+
- int main(void)
- {
-+#if ATTACH_MODE
-+	/* sleep a bit to let the tracer time to catch up */
-+	sleep(1);
-+#endif
-+
- 	f0(0);
- 	f0(1);
- 	return 0;
-Index: strace-5.1/tests/strace-k-p.expected
-===================================================================
---- /dev/null	1970-01-01 00:00:00.000000000 +0000
-+++ strace-5.1/tests/strace-k-p.expected	2020-01-23 17:14:13.570831178 +0100
-@@ -0,0 +1,2 @@
-+^chdir .*(__kernel_vsyscaln )?(__)?chdir f3 f2 f1 f0 main
-+^SIGURG .*(__kernel_vsyscaln )?(__)?kill f3 f2 f1 f0 main
-Index: strace-5.1/tests/strace-k-p.test
-===================================================================
---- /dev/null	1970-01-01 00:00:00.000000000 +0000
-+++ strace-5.1/tests/strace-k-p.test	2020-01-23 17:03:50.787051163 +0100
-@@ -0,0 +1,13 @@
-+#!/bin/sh
-+#
-+# Check strace -k for attached tracees.
-+#
-+# Copyright (c) 2020 The strace developers.
-+# All rights reserved.
-+#
-+# SPDX-License-Identifier: GPL-2.0-or-later
-+
-+ATTACH_MODE=1
-+test_prog=../stack-fcall-attach
-+
-+. "${srcdir=.}"/strace-k.test
-Index: strace-5.1/tests/strace-k.test
-===================================================================
---- strace-5.1.orig/tests/strace-k.test	2020-01-23 16:56:22.081268798 +0100
-+++ strace-5.1/tests/strace-k.test	2020-01-23 17:05:26.569651525 +0100
-@@ -11,6 +11,8 @@
- 
- . "${srcdir=.}/init.sh"
- 
-+: "${ATTACH_MODE=0}"
-+
- # strace -k is implemented using /proc/$pid/maps
- [ -f /proc/self/maps ] ||
- 	framework_skip_ '/proc/self/maps is not available'
-@@ -20,7 +22,19 @@
- check_prog tr
- 
- run_prog "${test_prog=../stack-fcall}"
--run_strace -e chdir -k $args
-+if [ "x${ATTACH_MODE}" = "x1" ]; then
-+	../set_ptracer_any "${test_prog}" >> "$EXP" &
-+	tracee_pid=$!
-+
-+	while ! [ -s "$EXP" ]; do
-+		kill -0 "$tracee_pid" 2> /dev/null ||
-+			fail_ 'set_ptracer_any failed'
-+	done
-+
-+	run_strace -e chdir -k -p "$tracee_pid"
-+else
-+	run_strace -e chdir -k $args
-+fi
- 
- expected="$srcdir/$NAME.expected"
- awk '
-Index: strace-5.1/tests/Makefile.in
-===================================================================
---- strace-5.1.orig/tests/Makefile.in	2020-01-23 16:56:22.086268802 +0100
-+++ strace-5.1/tests/Makefile.in	2020-01-23 17:07:45.456135366 +0100
-@@ -144,9 +144,9 @@
- 	seccomp-strict$(EXEEXT) select-P$(EXEEXT) \
- 	set_ptracer_any$(EXEEXT) set_sigblock$(EXEEXT) \
- 	set_sigign$(EXEEXT) signal_receive$(EXEEXT) sleep$(EXEEXT) \
--	stack-fcall$(EXEEXT) stack-fcall-mangled$(EXEEXT) \
--	threads-execve$(EXEEXT) unblock_reset_raise$(EXEEXT) \
--	unix-pair-send-recv$(EXEEXT) \
-+	stack-fcall$(EXEEXT) stack-fcall-attach$(EXEEXT) \
-+	stack-fcall-mangled$(EXEEXT) threads-execve$(EXEEXT) \
-+	unblock_reset_raise$(EXEEXT) unix-pair-send-recv$(EXEEXT) \
- 	unix-pair-sendto-recvfrom$(EXEEXT) vfork-f$(EXEEXT) \
- 	wait4-v$(EXEEXT) waitid-v$(EXEEXT) zeroargc$(EXEEXT)
- @ENABLE_STACKTRACE_TRUE@@USE_DEMANGLE_TRUE@am__append_1 = strace-k-demangle.test
-@@ -2604,6 +2604,12 @@
- stack_fcall_OBJECTS = $(am_stack_fcall_OBJECTS)
- stack_fcall_LDADD = $(LDADD)
- stack_fcall_DEPENDENCIES = libtests.a
-+am_stack_fcall_attach_OBJECTS = stack-fcall-attach.$(OBJEXT) \
-+	stack-fcall-0.$(OBJEXT) stack-fcall-1.$(OBJEXT) \
-+	stack-fcall-2.$(OBJEXT) stack-fcall-3.$(OBJEXT)
-+stack_fcall_attach_OBJECTS = $(am_stack_fcall_attach_OBJECTS)
-+stack_fcall_attach_LDADD = $(LDADD)
-+stack_fcall_attach_DEPENDENCIES = libtests.a
- am_stack_fcall_mangled_OBJECTS = stack-fcall-mangled.$(OBJEXT) \
- 	stack-fcall-mangled-0.$(OBJEXT) \
- 	stack-fcall-mangled-1.$(OBJEXT) \
-@@ -3453,7 +3459,7 @@
- 	sock_filter-v-Xverbose.c sockaddr_xlat-Xabbrev.c \
- 	sockaddr_xlat-Xraw.c sockaddr_xlat-Xverbose.c socketcall.c \
- 	sockopt-sol_netlink.c sockopt-timestamp.c splice.c \
--	$(stack_fcall_SOURCES) $(stack_fcall_mangled_SOURCES) stat.c \
-+	$(stack_fcall_SOURCES) $(stack_fcall_attach_SOURCES) $(stack_fcall_mangled_SOURCES) stat.c \
- 	stat64.c statfs.c statfs64.c statx.c swap.c sxetmask.c \
- 	symlink.c symlinkat.c sync.c sync_file_range.c \
- 	sync_file_range2.c sysinfo.c syslog.c tee.c threads-execve.c \
-@@ -3620,7 +3626,7 @@
- 	sock_filter-v-Xverbose.c sockaddr_xlat-Xabbrev.c \
- 	sockaddr_xlat-Xraw.c sockaddr_xlat-Xverbose.c socketcall.c \
- 	sockopt-sol_netlink.c sockopt-timestamp.c splice.c \
--	$(stack_fcall_SOURCES) $(stack_fcall_mangled_SOURCES) stat.c \
-+	$(stack_fcall_SOURCES) $(stack_fcall_attach_SOURCES) $(stack_fcall_mangled_SOURCES) stat.c \
- 	stat64.c statfs.c statfs64.c statx.c swap.c sxetmask.c \
- 	symlink.c symlinkat.c sync.c sync_file_range.c \
- 	sync_file_range2.c sysinfo.c syslog.c tee.c threads-execve.c \
-@@ -3848,7 +3854,8 @@
-   bases=`echo $$bases`
- RECHECK_LOGS = $(TEST_LOGS)
- AM_RECURSIVE_TARGETS = check recheck
--@ENABLE_STACKTRACE_TRUE@am__EXEEXT_2 = strace-k.test $(am__append_1)
-+@ENABLE_STACKTRACE_TRUE@am__EXEEXT_2 = strace-k.test strace-k-p.test \
-+@ENABLE_STACKTRACE_TRUE@	$(am__append_1)
- TEST_SUITE_LOG = test-suite.log
- TEST_EXTENSIONS = @EXEEXT@ .test
- am__test_logs1 = $(TESTS:=.log)
-@@ -4634,6 +4641,9 @@
- stack_fcall_SOURCES = stack-fcall.c \
- 	stack-fcall-0.c stack-fcall-1.c stack-fcall-2.c stack-fcall-3.c
- 
-+stack_fcall_attach_SOURCES = stack-fcall-attach.c \
-+	stack-fcall-0.c stack-fcall-1.c stack-fcall-2.c stack-fcall-3.c
-+
- stack_fcall_mangled_SOURCES = stack-fcall-mangled.c \
- 	stack-fcall-mangled-0.c stack-fcall-mangled-1.c \
- 	stack-fcall-mangled-2.c stack-fcall-mangled-3.c
-@@ -4863,7 +4873,7 @@
- 	xettimeofday.gen.test
- @ENABLE_STACKTRACE_FALSE@STACKTRACE_TESTS = 
- @ENABLE_STACKTRACE_TRUE@STACKTRACE_TESTS = strace-k.test \
--@ENABLE_STACKTRACE_TRUE@	$(am__append_1)
-+@ENABLE_STACKTRACE_TRUE@	strace-k-p.test $(am__append_1)
- DECODER_TESTS = \
- 	bpf-success-v.test \
- 	bpf-success.test \
-@@ -5074,6 +5084,8 @@
- 	strace-ff.expected \
- 	strace-k-demangle.expected \
- 	strace-k-demangle.test \
-+	strace-k-p.expected \
-+	strace-k-p.test \
- 	strace-k.expected \
- 	strace-k.test \
- 	strace-r.expected \
-@@ -7345,6 +7357,10 @@
- 	@rm -f stack-fcall$(EXEEXT)
- 	$(AM_V_CCLD)$(LINK) $(stack_fcall_OBJECTS) $(stack_fcall_LDADD) $(LIBS)
- 
-+stack-fcall-attach$(EXEEXT): $(stack_fcall_attach_OBJECTS) $(stack_fcall_attach_DEPENDENCIES) $(EXTRA_stack_fcall_attach_DEPENDENCIES) 
-+	@rm -f stack-fcall-attach$(EXEEXT)
-+	$(AM_V_CCLD)$(LINK) $(stack_fcall_attach_OBJECTS) $(stack_fcall_attach_LDADD) $(LIBS)
-+
- stack-fcall-mangled$(EXEEXT): $(stack_fcall_mangled_OBJECTS) $(stack_fcall_mangled_DEPENDENCIES) $(EXTRA_stack_fcall_mangled_DEPENDENCIES) 
- 	@rm -f stack-fcall-mangled$(EXEEXT)
- 	$(AM_V_CCLD)$(LINK) $(stack_fcall_mangled_OBJECTS) $(stack_fcall_mangled_LDADD) $(LIBS)
-@@ -8193,6 +8209,7 @@
- @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/stack-fcall-1.Po@am__quote@ # am--include-marker
- @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/stack-fcall-2.Po@am__quote@ # am--include-marker
- @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/stack-fcall-3.Po@am__quote@ # am--include-marker
-+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/stack-fcall-attach.Po@am__quote@ # am--include-marker
- @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/stack-fcall-mangled-0.Po@am__quote@ # am--include-marker
- @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/stack-fcall-mangled-1.Po@am__quote@ # am--include-marker
- @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/stack-fcall-mangled-2.Po@am__quote@ # am--include-marker
-Index: strace-5.1/tests-m32/Makefile.am
-===================================================================
---- strace-5.1.orig/tests-m32/Makefile.am	2020-01-23 16:56:22.087268803 +0100
-+++ strace-5.1/tests-m32/Makefile.am	2020-01-23 17:03:50.790051150 +0100
-@@ -156,6 +156,7 @@
- 	signal_receive \
- 	sleep \
- 	stack-fcall \
-+	stack-fcall-attach \
- 	stack-fcall-mangled \
- 	threads-execve \
- 	unblock_reset_raise \
-@@ -198,6 +199,9 @@
- stack_fcall_SOURCES = stack-fcall.c \
- 	stack-fcall-0.c stack-fcall-1.c stack-fcall-2.c stack-fcall-3.c
- 
-+stack_fcall_attach_SOURCES = stack-fcall-attach.c \
-+	stack-fcall-0.c stack-fcall-1.c stack-fcall-2.c stack-fcall-3.c
-+
- stack_fcall_mangled_SOURCES = stack-fcall-mangled.c \
- 	stack-fcall-mangled-0.c stack-fcall-mangled-1.c \
- 	stack-fcall-mangled-2.c stack-fcall-mangled-3.c
-@@ -205,7 +209,7 @@
- include gen_tests.am
- 
- if ENABLE_STACKTRACE
--STACKTRACE_TESTS = strace-k.test
-+STACKTRACE_TESTS = strace-k.test strace-k-p.test
- if USE_DEMANGLE
- STACKTRACE_TESTS += strace-k-demangle.test
- endif
-@@ -428,6 +432,8 @@
- 	strace-ff.expected \
- 	strace-k-demangle.expected \
- 	strace-k-demangle.test \
-+	strace-k-p.expected \
-+	strace-k-p.test \
- 	strace-k.expected \
- 	strace-k.test \
- 	strace-r.expected \
-Index: strace-5.1/tests-m32/Makefile.in
-===================================================================
---- strace-5.1.orig/tests-m32/Makefile.in	2020-01-23 16:56:22.089268805 +0100
-+++ strace-5.1/tests-m32/Makefile.in	2020-01-23 18:24:15.534972421 +0100
-@@ -144,9 +144,9 @@
- 	seccomp-strict$(EXEEXT) select-P$(EXEEXT) \
- 	set_ptracer_any$(EXEEXT) set_sigblock$(EXEEXT) \
- 	set_sigign$(EXEEXT) signal_receive$(EXEEXT) sleep$(EXEEXT) \
--	stack-fcall$(EXEEXT) stack-fcall-mangled$(EXEEXT) \
--	threads-execve$(EXEEXT) unblock_reset_raise$(EXEEXT) \
--	unix-pair-send-recv$(EXEEXT) \
-+	stack-fcall$(EXEEXT) stack-fcall-attach$(EXEEXT) \
-+	stack-fcall-mangled$(EXEEXT) threads-execve$(EXEEXT) \
-+	unblock_reset_raise$(EXEEXT) unix-pair-send-recv$(EXEEXT) \
- 	unix-pair-sendto-recvfrom$(EXEEXT) vfork-f$(EXEEXT) \
- 	wait4-v$(EXEEXT) waitid-v$(EXEEXT) zeroargc$(EXEEXT)
- @ENABLE_STACKTRACE_TRUE@@USE_DEMANGLE_TRUE@am__append_1 = strace-k-demangle.test
-@@ -2604,6 +2604,12 @@
- stack_fcall_OBJECTS = $(am_stack_fcall_OBJECTS)
- stack_fcall_LDADD = $(LDADD)
- stack_fcall_DEPENDENCIES = libtests.a
-+am_stack_fcall_attach_OBJECTS = stack-fcall-attach.$(OBJEXT) \
-+	stack-fcall-0.$(OBJEXT) stack-fcall-1.$(OBJEXT) \
-+	stack-fcall-2.$(OBJEXT) stack-fcall-3.$(OBJEXT)
-+stack_fcall_attach_OBJECTS = $(am_stack_fcall_attach_OBJECTS)
-+stack_fcall_attach_LDADD = $(LDADD)
-+stack_fcall_attach_DEPENDENCIES = libtests.a
- am_stack_fcall_mangled_OBJECTS = stack-fcall-mangled.$(OBJEXT) \
- 	stack-fcall-mangled-0.$(OBJEXT) \
- 	stack-fcall-mangled-1.$(OBJEXT) \
-@@ -3453,7 +3459,7 @@
- 	sock_filter-v-Xverbose.c sockaddr_xlat-Xabbrev.c \
- 	sockaddr_xlat-Xraw.c sockaddr_xlat-Xverbose.c socketcall.c \
- 	sockopt-sol_netlink.c sockopt-timestamp.c splice.c \
--	$(stack_fcall_SOURCES) $(stack_fcall_mangled_SOURCES) stat.c \
-+	$(stack_fcall_SOURCES)  $(stack_fcall_attach_SOURCES) $(stack_fcall_mangled_SOURCES) stat.c \
- 	stat64.c statfs.c statfs64.c statx.c swap.c sxetmask.c \
- 	symlink.c symlinkat.c sync.c sync_file_range.c \
- 	sync_file_range2.c sysinfo.c syslog.c tee.c threads-execve.c \
-@@ -3620,7 +3626,7 @@
- 	sock_filter-v-Xverbose.c sockaddr_xlat-Xabbrev.c \
- 	sockaddr_xlat-Xraw.c sockaddr_xlat-Xverbose.c socketcall.c \
- 	sockopt-sol_netlink.c sockopt-timestamp.c splice.c \
--	$(stack_fcall_SOURCES) $(stack_fcall_mangled_SOURCES) stat.c \
-+	$(stack_fcall_SOURCES)  $(stack_fcall_attach_SOURCES) $(stack_fcall_mangled_SOURCES) stat.c \
- 	stat64.c statfs.c statfs64.c statx.c swap.c sxetmask.c \
- 	symlink.c symlinkat.c sync.c sync_file_range.c \
- 	sync_file_range2.c sysinfo.c syslog.c tee.c threads-execve.c \
-@@ -3848,7 +3854,8 @@
-   bases=`echo $$bases`
- RECHECK_LOGS = $(TEST_LOGS)
- AM_RECURSIVE_TARGETS = check recheck
--@ENABLE_STACKTRACE_TRUE@am__EXEEXT_2 = strace-k.test $(am__append_1)
-+@ENABLE_STACKTRACE_TRUE@am__EXEEXT_2 = strace-k.test strace-k-p.test \
-+@ENABLE_STACKTRACE_TRUE@	$(am__append_1)
- TEST_SUITE_LOG = test-suite.log
- TEST_EXTENSIONS = @EXEEXT@ .test
- am__test_logs1 = $(TESTS:=.log)
-@@ -4634,6 +4641,9 @@
- stack_fcall_SOURCES = stack-fcall.c \
- 	stack-fcall-0.c stack-fcall-1.c stack-fcall-2.c stack-fcall-3.c
- 
-+stack_fcall_attach_SOURCES = stack-fcall-attach.c \
-+	stack-fcall-0.c stack-fcall-1.c stack-fcall-2.c stack-fcall-3.c
-+
- stack_fcall_mangled_SOURCES = stack-fcall-mangled.c \
- 	stack-fcall-mangled-0.c stack-fcall-mangled-1.c \
- 	stack-fcall-mangled-2.c stack-fcall-mangled-3.c
-@@ -4863,7 +4873,7 @@
- 	xettimeofday.gen.test
- @ENABLE_STACKTRACE_FALSE@STACKTRACE_TESTS = 
- @ENABLE_STACKTRACE_TRUE@STACKTRACE_TESTS = strace-k.test \
--@ENABLE_STACKTRACE_TRUE@	$(am__append_1)
-+@ENABLE_STACKTRACE_TRUE@	strace-k-p.test $(am__append_1)
- DECODER_TESTS = \
- 	bpf-success-v.test \
- 	bpf-success.test \
-@@ -5074,6 +5084,8 @@
- 	strace-ff.expected \
- 	strace-k-demangle.expected \
- 	strace-k-demangle.test \
-+	strace-k-p.expected \
-+	strace-k-p.test \
- 	strace-k.expected \
- 	strace-k.test \
- 	strace-r.expected \
-@@ -7345,6 +7357,10 @@
- 	@rm -f stack-fcall$(EXEEXT)
- 	$(AM_V_CCLD)$(LINK) $(stack_fcall_OBJECTS) $(stack_fcall_LDADD) $(LIBS)
- 
-+stack-fcall-attach$(EXEEXT): $(stack_fcall_attach_OBJECTS) $(stack_fcall_attach_DEPENDENCIES) $(EXTRA_stack_fcall_attach_DEPENDENCIES) 
-+	@rm -f stack-fcall-attach$(EXEEXT)
-+	$(AM_V_CCLD)$(LINK) $(stack_fcall_attach_OBJECTS) $(stack_fcall_attach_LDADD) $(LIBS)
-+
- stack-fcall-mangled$(EXEEXT): $(stack_fcall_mangled_OBJECTS) $(stack_fcall_mangled_DEPENDENCIES) $(EXTRA_stack_fcall_mangled_DEPENDENCIES) 
- 	@rm -f stack-fcall-mangled$(EXEEXT)
- 	$(AM_V_CCLD)$(LINK) $(stack_fcall_mangled_OBJECTS) $(stack_fcall_mangled_LDADD) $(LIBS)
-@@ -8193,6 +8209,7 @@
- @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/stack-fcall-1.Po@am__quote@ # am--include-marker
- @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/stack-fcall-2.Po@am__quote@ # am--include-marker
- @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/stack-fcall-3.Po@am__quote@ # am--include-marker
-+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/stack-fcall-attach.Po@am__quote@ # am--include-marker
- @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/stack-fcall-mangled-0.Po@am__quote@ # am--include-marker
- @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/stack-fcall-mangled-1.Po@am__quote@ # am--include-marker
- @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/stack-fcall-mangled-2.Po@am__quote@ # am--include-marker
-@@ -9777,6 +9794,7 @@
- 	-rm -f ./$(DEPDIR)/stack-fcall-1.Po
- 	-rm -f ./$(DEPDIR)/stack-fcall-2.Po
- 	-rm -f ./$(DEPDIR)/stack-fcall-3.Po
-+	-rm -f ./$(DEPDIR)/stack-fcall-attach.Po
- 	-rm -f ./$(DEPDIR)/stack-fcall-mangled-0.Po
- 	-rm -f ./$(DEPDIR)/stack-fcall-mangled-1.Po
- 	-rm -f ./$(DEPDIR)/stack-fcall-mangled-2.Po
-@@ -10468,6 +10486,7 @@
- 	-rm -f ./$(DEPDIR)/stack-fcall-1.Po
- 	-rm -f ./$(DEPDIR)/stack-fcall-2.Po
- 	-rm -f ./$(DEPDIR)/stack-fcall-3.Po
-+	-rm -f ./$(DEPDIR)/stack-fcall-attach.Po
- 	-rm -f ./$(DEPDIR)/stack-fcall-mangled-0.Po
- 	-rm -f ./$(DEPDIR)/stack-fcall-mangled-1.Po
- 	-rm -f ./$(DEPDIR)/stack-fcall-mangled-2.Po
-Index: strace-5.1/tests-mx32/Makefile.am
-===================================================================
---- strace-5.1.orig/tests-mx32/Makefile.am	2020-01-23 16:56:22.090268805 +0100
-+++ strace-5.1/tests-mx32/Makefile.am	2020-01-23 17:03:50.793051138 +0100
-@@ -156,6 +156,7 @@
- 	signal_receive \
- 	sleep \
- 	stack-fcall \
-+	stack-fcall-attach \
- 	stack-fcall-mangled \
- 	threads-execve \
- 	unblock_reset_raise \
-@@ -198,6 +199,9 @@
- stack_fcall_SOURCES = stack-fcall.c \
- 	stack-fcall-0.c stack-fcall-1.c stack-fcall-2.c stack-fcall-3.c
- 
-+stack_fcall_attach_SOURCES = stack-fcall-attach.c \
-+	stack-fcall-0.c stack-fcall-1.c stack-fcall-2.c stack-fcall-3.c
-+
- stack_fcall_mangled_SOURCES = stack-fcall-mangled.c \
- 	stack-fcall-mangled-0.c stack-fcall-mangled-1.c \
- 	stack-fcall-mangled-2.c stack-fcall-mangled-3.c
-@@ -205,7 +209,7 @@
- include gen_tests.am
- 
- if ENABLE_STACKTRACE
--STACKTRACE_TESTS = strace-k.test
-+STACKTRACE_TESTS = strace-k.test strace-k-p.test
- if USE_DEMANGLE
- STACKTRACE_TESTS += strace-k-demangle.test
- endif
-@@ -428,6 +432,8 @@
- 	strace-ff.expected \
- 	strace-k-demangle.expected \
- 	strace-k-demangle.test \
-+	strace-k-p.expected \
-+	strace-k-p.test \
- 	strace-k.expected \
- 	strace-k.test \
- 	strace-r.expected \
-Index: strace-5.1/tests-mx32/Makefile.in
-===================================================================
---- strace-5.1.orig/tests-mx32/Makefile.in	2020-01-23 16:56:22.092268807 +0100
-+++ strace-5.1/tests-mx32/Makefile.in	2020-01-23 17:13:00.583709367 +0100
-@@ -144,9 +144,9 @@
- 	seccomp-strict$(EXEEXT) select-P$(EXEEXT) \
- 	set_ptracer_any$(EXEEXT) set_sigblock$(EXEEXT) \
- 	set_sigign$(EXEEXT) signal_receive$(EXEEXT) sleep$(EXEEXT) \
--	stack-fcall$(EXEEXT) stack-fcall-mangled$(EXEEXT) \
--	threads-execve$(EXEEXT) unblock_reset_raise$(EXEEXT) \
--	unix-pair-send-recv$(EXEEXT) \
-+	stack-fcall$(EXEEXT) stack-fcall-attach$(EXEEXT) \
-+	stack-fcall-mangled$(EXEEXT) threads-execve$(EXEEXT) \
-+	unblock_reset_raise$(EXEEXT) unix-pair-send-recv$(EXEEXT) \
- 	unix-pair-sendto-recvfrom$(EXEEXT) vfork-f$(EXEEXT) \
- 	wait4-v$(EXEEXT) waitid-v$(EXEEXT) zeroargc$(EXEEXT)
- @ENABLE_STACKTRACE_TRUE@@USE_DEMANGLE_TRUE@am__append_1 = strace-k-demangle.test
-@@ -2604,6 +2604,12 @@
- stack_fcall_OBJECTS = $(am_stack_fcall_OBJECTS)
- stack_fcall_LDADD = $(LDADD)
- stack_fcall_DEPENDENCIES = libtests.a
-+am_stack_fcall_attach_OBJECTS = stack-fcall-attach.$(OBJEXT) \
-+	stack-fcall-0.$(OBJEXT) stack-fcall-1.$(OBJEXT) \
-+	stack-fcall-2.$(OBJEXT) stack-fcall-3.$(OBJEXT)
-+stack_fcall_attach_OBJECTS = $(am_stack_fcall_attach_OBJECTS)
-+stack_fcall_attach_LDADD = $(LDADD)
-+stack_fcall_attach_DEPENDENCIES = libtests.a
- am_stack_fcall_mangled_OBJECTS = stack-fcall-mangled.$(OBJEXT) \
- 	stack-fcall-mangled-0.$(OBJEXT) \
- 	stack-fcall-mangled-1.$(OBJEXT) \
-@@ -3453,7 +3459,7 @@
- 	sock_filter-v-Xverbose.c sockaddr_xlat-Xabbrev.c \
- 	sockaddr_xlat-Xraw.c sockaddr_xlat-Xverbose.c socketcall.c \
- 	sockopt-sol_netlink.c sockopt-timestamp.c splice.c \
--	$(stack_fcall_SOURCES) $(stack_fcall_mangled_SOURCES) stat.c \
-+	$(stack_fcall_SOURCES)  $(stack_fcall_attach_SOURCES) $(stack_fcall_mangled_SOURCES) stat.c \
- 	stat64.c statfs.c statfs64.c statx.c swap.c sxetmask.c \
- 	symlink.c symlinkat.c sync.c sync_file_range.c \
- 	sync_file_range2.c sysinfo.c syslog.c tee.c threads-execve.c \
-@@ -3620,7 +3626,7 @@
- 	sock_filter-v-Xverbose.c sockaddr_xlat-Xabbrev.c \
- 	sockaddr_xlat-Xraw.c sockaddr_xlat-Xverbose.c socketcall.c \
- 	sockopt-sol_netlink.c sockopt-timestamp.c splice.c \
--	$(stack_fcall_SOURCES) $(stack_fcall_mangled_SOURCES) stat.c \
-+	$(stack_fcall_SOURCES)  $(stack_fcall_attach_SOURCES) $(stack_fcall_mangled_SOURCES) stat.c \
- 	stat64.c statfs.c statfs64.c statx.c swap.c sxetmask.c \
- 	symlink.c symlinkat.c sync.c sync_file_range.c \
- 	sync_file_range2.c sysinfo.c syslog.c tee.c threads-execve.c \
-@@ -4634,6 +4640,10 @@
- stack_fcall_SOURCES = stack-fcall.c \
- 	stack-fcall-0.c stack-fcall-1.c stack-fcall-2.c stack-fcall-3.c
- 
-+stack_fcall_attach_SOURCES = stack-fcall-attach.c \
-+	stack-fcall-0.c stack-fcall-1.c \
-+	stack-fcall-2.c stack-fcall-3.c
-+
- stack_fcall_mangled_SOURCES = stack-fcall-mangled.c \
- 	stack-fcall-mangled-0.c stack-fcall-mangled-1.c \
- 	stack-fcall-mangled-2.c stack-fcall-mangled-3.c
-@@ -7345,6 +7355,10 @@
- 	@rm -f stack-fcall$(EXEEXT)
- 	$(AM_V_CCLD)$(LINK) $(stack_fcall_OBJECTS) $(stack_fcall_LDADD) $(LIBS)
- 
-+stack-fcall-attach$(EXEEXT): $(stack_fcall_attach_OBJECTS) $(stack_fcall_attach_DEPENDENCIES) $(EXTRA_stack_fcall_attach_DEPENDENCIES) 
-+	@rm -f stack-fcall$(EXEEXT)
-+	$(AM_V_CCLD)$(LINK) $(stack_fcall_attach_OBJECTS) $(stack_fcall_attach_LDADD) $(LIBS)
-+
- stack-fcall-mangled$(EXEEXT): $(stack_fcall_mangled_OBJECTS) $(stack_fcall_mangled_DEPENDENCIES) $(EXTRA_stack_fcall_mangled_DEPENDENCIES) 
- 	@rm -f stack-fcall-mangled$(EXEEXT)
- 	$(AM_V_CCLD)$(LINK) $(stack_fcall_mangled_OBJECTS) $(stack_fcall_mangled_LDADD) $(LIBS)
-@@ -8193,6 +8207,7 @@
- @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/stack-fcall-1.Po@am__quote@ # am--include-marker
- @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/stack-fcall-2.Po@am__quote@ # am--include-marker
- @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/stack-fcall-3.Po@am__quote@ # am--include-marker
-+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/stack-fcall-attach.Po@am__quote@ # am--include-marker
- @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/stack-fcall-mangled-0.Po@am__quote@ # am--include-marker
- @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/stack-fcall-mangled-1.Po@am__quote@ # am--include-marker
- @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/stack-fcall-mangled-2.Po@am__quote@ # am--include-marker
-@@ -9777,6 +9792,7 @@
- 	-rm -f ./$(DEPDIR)/stack-fcall-1.Po
- 	-rm -f ./$(DEPDIR)/stack-fcall-2.Po
- 	-rm -f ./$(DEPDIR)/stack-fcall-3.Po
-+	-rm -f ./$(DEPDIR)/stack-fcall-attach.Po
- 	-rm -f ./$(DEPDIR)/stack-fcall-mangled-0.Po
- 	-rm -f ./$(DEPDIR)/stack-fcall-mangled-1.Po
- 	-rm -f ./$(DEPDIR)/stack-fcall-mangled-2.Po
-@@ -10468,6 +10484,7 @@
- 	-rm -f ./$(DEPDIR)/stack-fcall-1.Po
- 	-rm -f ./$(DEPDIR)/stack-fcall-2.Po
- 	-rm -f ./$(DEPDIR)/stack-fcall-3.Po
-+	-rm -f ./$(DEPDIR)/stack-fcall-attach.Po
- 	-rm -f ./$(DEPDIR)/stack-fcall-mangled-0.Po
- 	-rm -f ./$(DEPDIR)/stack-fcall-mangled-1.Po
- 	-rm -f ./$(DEPDIR)/stack-fcall-mangled-2.Po
-Index: strace-5.1/tests-m32/stack-fcall-attach.c
-===================================================================
---- /dev/null	1970-01-01 00:00:00.000000000 +0000
-+++ strace-5.1/tests-m32/stack-fcall-attach.c	2020-01-23 17:03:50.796051125 +0100
-@@ -0,0 +1,2 @@
-+#define ATTACH_MODE 1
-+#include "stack-fcall.c"
-Index: strace-5.1/tests-m32/stack-fcall.c
-===================================================================
---- strace-5.1.orig/tests-m32/stack-fcall.c	2020-01-23 17:03:50.796051125 +0100
-+++ strace-5.1/tests-m32/stack-fcall.c	2020-01-23 17:08:04.027080020 +0100
-@@ -5,10 +5,21 @@
-  * SPDX-License-Identifier: GPL-2.0-or-later
-  */
- 
-+#include "tests.h"
-+#include <unistd.h>
- #include "stack-fcall.h"
- 
-+#ifndef ATTACH_MODE
-+# define ATTACH_MODE 0
-+#endif
-+
- int main(void)
- {
-+#if ATTACH_MODE
-+	/* sleep a bit to let the tracer time to catch up */
-+	sleep(1);
-+#endif
-+
- 	f0(0);
- 	f0(1);
- 	return 0;
-Index: strace-5.1/tests-m32/strace-k-p.expected
-===================================================================
---- /dev/null	1970-01-01 00:00:00.000000000 +0000
-+++ strace-5.1/tests-m32/strace-k-p.expected	2020-01-23 17:14:16.083835372 +0100
-@@ -0,0 +1,2 @@
-+^chdir .*(__kernel_vsyscaln )?(__)?chdir f3 f2 f1 f0 main
-+^SIGURG .*(__kernel_vsyscaln )?(__)?kill f3 f2 f1 f0 main
-Index: strace-5.1/tests-m32/strace-k-p.test
-===================================================================
---- /dev/null	1970-01-01 00:00:00.000000000 +0000
-+++ strace-5.1/tests-m32/strace-k-p.test	2020-01-23 17:03:50.796051125 +0100
-@@ -0,0 +1,13 @@
-+#!/bin/sh
-+#
-+# Check strace -k for attached tracees.
-+#
-+# Copyright (c) 2020 The strace developers.
-+# All rights reserved.
-+#
-+# SPDX-License-Identifier: GPL-2.0-or-later
-+
-+ATTACH_MODE=1
-+test_prog=../stack-fcall-attach
-+
-+. "${srcdir=.}"/strace-k.test
-Index: strace-5.1/tests-m32/strace-k.test
-===================================================================
---- strace-5.1.orig/tests-m32/strace-k.test	2020-01-23 17:03:50.797051121 +0100
-+++ strace-5.1/tests-m32/strace-k.test	2020-01-23 17:13:44.509782677 +0100
-@@ -11,6 +11,8 @@
- 
- . "${srcdir=.}/init.sh"
- 
-+: "${ATTACH_MODE=0}"
-+
- # strace -k is implemented using /proc/$pid/maps
- [ -f /proc/self/maps ] ||
- 	framework_skip_ '/proc/self/maps is not available'
-@@ -20,7 +22,19 @@
- check_prog tr
- 
- run_prog "${test_prog=../stack-fcall}"
--run_strace -e chdir -k $args
-+if [ "x${ATTACH_MODE}" = "x1" ]; then
-+	../set_ptracer_any "${test_prog}" >> "$EXP" &
-+	tracee_pid=$!
-+
-+	while ! [ -s "$EXP" ]; do
-+		kill -0 "$tracee_pid" 2> /dev/null ||
-+			fail_ 'set_ptracer_any failed'
-+	done
-+
-+	run_strace -e chdir -k -p "$tracee_pid"
-+else
-+	run_strace -e chdir -k $args
-+fi
- 
- expected="$srcdir/$NAME.expected"
- awk '
-Index: strace-5.1/tests-mx32/stack-fcall-attach.c
-===================================================================
---- /dev/null	1970-01-01 00:00:00.000000000 +0000
-+++ strace-5.1/tests-mx32/stack-fcall-attach.c	2020-01-23 17:03:50.797051121 +0100
-@@ -0,0 +1,2 @@
-+#define ATTACH_MODE 1
-+#include "stack-fcall.c"
-Index: strace-5.1/tests-mx32/stack-fcall.c
-===================================================================
---- strace-5.1.orig/tests-mx32/stack-fcall.c	2020-01-23 17:03:50.797051121 +0100
-+++ strace-5.1/tests-mx32/stack-fcall.c	2020-01-23 17:08:06.451072796 +0100
-@@ -5,10 +5,21 @@
-  * SPDX-License-Identifier: GPL-2.0-or-later
-  */
- 
-+#include "tests.h"
-+#include <unistd.h>
- #include "stack-fcall.h"
- 
-+#ifndef ATTACH_MODE
-+# define ATTACH_MODE 0
-+#endif
-+
- int main(void)
- {
-+#if ATTACH_MODE
-+	/* sleep a bit to let the tracer time to catch up */
-+	sleep(1);
-+#endif
-+
- 	f0(0);
- 	f0(1);
- 	return 0;
-Index: strace-5.1/tests-mx32/strace-k-p.expected
-===================================================================
---- /dev/null	1970-01-01 00:00:00.000000000 +0000
-+++ strace-5.1/tests-mx32/strace-k-p.expected	2020-01-23 17:14:17.786838214 +0100
-@@ -0,0 +1,2 @@
-+^chdir .*(__kernel_vsyscaln )?(__)?chdir f3 f2 f1 f0 main
-+^SIGURG .*(__kernel_vsyscaln )?(__)?kill f3 f2 f1 f0 main
-Index: strace-5.1/tests-mx32/strace-k-p.test
-===================================================================
---- /dev/null	1970-01-01 00:00:00.000000000 +0000
-+++ strace-5.1/tests-mx32/strace-k-p.test	2020-01-23 17:03:50.797051121 +0100
-@@ -0,0 +1,13 @@
-+#!/bin/sh
-+#
-+# Check strace -k for attached tracees.
-+#
-+# Copyright (c) 2020 The strace developers.
-+# All rights reserved.
-+#
-+# SPDX-License-Identifier: GPL-2.0-or-later
-+
-+ATTACH_MODE=1
-+test_prog=../stack-fcall-attach
-+
-+. "${srcdir=.}"/strace-k.test
-Index: strace-5.1/tests-mx32/strace-k.test
-===================================================================
---- strace-5.1.orig/tests-mx32/strace-k.test	2020-01-23 17:03:50.797051121 +0100
-+++ strace-5.1/tests-mx32/strace-k.test	2020-01-23 17:13:41.793778144 +0100
-@@ -11,6 +11,8 @@
- 
- . "${srcdir=.}/init.sh"
- 
-+: "${ATTACH_MODE=0}"
-+
- # strace -k is implemented using /proc/$pid/maps
- [ -f /proc/self/maps ] ||
- 	framework_skip_ '/proc/self/maps is not available'
-@@ -20,7 +22,19 @@
- check_prog tr
- 
- run_prog "${test_prog=../stack-fcall}"
--run_strace -e chdir -k $args
-+if [ "x${ATTACH_MODE}" = "x1" ]; then
-+	../set_ptracer_any "${test_prog}" >> "$EXP" &
-+	tracee_pid=$!
-+
-+	while ! [ -s "$EXP" ]; do
-+		kill -0 "$tracee_pid" 2> /dev/null ||
-+			fail_ 'set_ptracer_any failed'
-+	done
-+
-+	run_strace -e chdir -k -p "$tracee_pid"
-+else
-+	run_strace -e chdir -k $args
-+fi
- 
- expected="$srcdir/$NAME.expected"
- awk '
diff --git a/SOURCES/0042-sockaddr-properly-decode-sockaddr_hci-addresses-with.patch b/SOURCES/0042-sockaddr-properly-decode-sockaddr_hci-addresses-with.patch
deleted file mode 100644
index f802107..0000000
--- a/SOURCES/0042-sockaddr-properly-decode-sockaddr_hci-addresses-with.patch
+++ /dev/null
@@ -1,225 +0,0 @@
-From 5a9b0f1ef83300f853e77ada03515c8542c1cfe0 Mon Sep 17 00:00:00 2001
-From: Eugene Syromyatnikov <evgsyr@gmail.com>
-Date: Thu, 29 Aug 2019 19:03:51 +0200
-Subject: [PATCH] sockaddr: properly decode sockaddr_hci addresses without
- hci_channel
-
-Before Linux commit v2.6.38-rc1~476^2~14^2~3^2~43^2~9,
-struct sockaddr_hci did not contain hci_channel field.
-
-* configure.ac (AC_CHECK_HEADERS([bluetooth/bluetooth.h])): Add check
-for struct sockaddr_hci.hci_channel.
-* sockaddr.c (print_sockaddr_data_bt): Decode struct sockaddr_hci
-without hci_channel field.
-* tests/net-sockaddr.c (check_hci): Add check for struct sockaddr_hci
-decoding without hci_channel field; guard hci_channel with #ifdef
-HAVE_STRUCT_SOCKADDR_HCI_HCI_CHANNEL.
-(check_raw): Remove "len++", as 4-byte AF_BLUETOOTH socket addresses are
-interpreted as struct sockaddr_hci without hci_channel field.
----
- configure.ac         |  3 +++
- sockaddr.c           | 16 +++++++++++++---
- tests/net-sockaddr.c | 18 ++++++++++++++----
- 3 files changed, 30 insertions(+), 7 deletions(-)
-
-Index: strace-5.1/configure.ac
-===================================================================
---- strace-5.1.orig/configure.ac	2019-08-29 19:10:22.380362280 +0200
-+++ strace-5.1/configure.ac	2019-08-29 19:11:11.240744864 +0200
-@@ -465,6 +465,9 @@
- ])
- 
- AC_CHECK_HEADERS([bluetooth/bluetooth.h], [
-+	AC_CHECK_MEMBERS([struct sockaddr_hci.hci_channel],,,
-+			 [#include <bluetooth/bluetooth.h>
-+			 #include <bluetooth/hci.h>])
- 	AC_CHECK_MEMBERS([struct sockaddr_l2.l2_bdaddr_type],,,
- 			 [#include <bluetooth/bluetooth.h>
- 			 #include <bluetooth/l2cap.h>])
-Index: strace-5.1/sockaddr.c
-===================================================================
---- strace-5.1.orig/sockaddr.c	2019-08-29 19:11:11.240744864 +0200
-+++ strace-5.1/sockaddr.c	2019-08-29 19:13:01.275354429 +0200
-@@ -599,12 +599,21 @@
- 	};
- 
- 	switch (addrlen) {
-+	case offsetofend(struct sockaddr_hci, hci_dev):
- 	case sizeof(struct sockaddr_hci): {
- 		const struct sockaddr_hci *const hci = buf;
--		tprintf("hci_dev=htobs(%hu), hci_channel=",
--			btohs(hci->hci_dev));
--		printxval_index(hci_channels, hci->hci_channel,
--				"HCI_CHANNEL_???");
-+		tprintf("hci_dev=htobs(%hu)", btohs(hci->hci_dev));
-+
-+		/*
-+		 * hci_channel field has been introduced
-+		 * Linux commit in v2.6.38-rc1~476^2~14^2~3^2~43^2~9.
-+		 */
-+		if (addrlen == sizeof(struct sockaddr_hci)) {
-+			tprints(", hci_channel=");
-+			printxval_index(hci_channels, hci->hci_channel,
-+					"HCI_CHANNEL_???");
-+		}
-+
- 		break;
- 	}
- 	case sizeof(struct sockaddr_sco): {
-Index: strace-5.1/tests/net-sockaddr.c
-===================================================================
---- strace-5.1.orig/tests/net-sockaddr.c	2019-08-29 19:10:22.380362280 +0200
-+++ strace-5.1/tests/net-sockaddr.c	2019-08-29 19:11:11.240744864 +0200
-@@ -543,11 +543,22 @@
- 	TAIL_ALLOC_OBJECT_VAR_PTR(struct sockaddr_hci, hci);
- 	hci->hci_family = AF_BLUETOOTH;
- 	hci->hci_dev = htobs(h_port);
-+# ifdef HAVE_STRUCT_SOCKADDR_HCI_HCI_CHANNEL
- 	hci->hci_channel = HCI_CHANNEL_RAW;
-+# endif
- 	unsigned int len = sizeof(*hci);
--	int ret = connect(-1, (void *) hci, len);
-+
-+	int ret = connect(-1, (void *) hci, 4);
-+	printf("connect(-1, {sa_family=AF_BLUETOOTH, hci_dev=htobs(%hu)"
-+	       "}, 4) = %d EBADF (%m)\n",
-+	       h_port, ret);
-+
-+	ret = connect(-1, (void *) hci, len);
- 	printf("connect(-1, {sa_family=AF_BLUETOOTH, hci_dev=htobs(%hu)"
--	       ", hci_channel=HCI_CHANNEL_RAW}, %u) = %d EBADF (%m)\n",
-+# ifdef HAVE_STRUCT_SOCKADDR_HCI_HCI_CHANNEL
-+	       ", hci_channel=HCI_CHANNEL_RAW"
-+# endif
-+	       "}, %u) = %d EBADF (%m)\n",
- 	       h_port, len, ret);
- }
- 
-@@ -700,9 +711,8 @@
- 	       " = %d EBADF (%m)\n", len, ret);
- 
- 	u.sa->sa_family = AF_BLUETOOTH;
--	++len;
- 	ret = connect(-1, (void *) u.st, len);
--	printf("connect(-1, {sa_family=AF_BLUETOOTH, sa_data=\"00\"}, %u)"
-+	printf("connect(-1, {sa_family=AF_BLUETOOTH, sa_data=\"0\"}, %u)"
- 	       " = %d EBADF (%m)\n", len, ret);
- }
- 
-Index: strace-5.1/tests-m32/net-sockaddr.c
-===================================================================
---- strace-5.1.orig/tests-m32/net-sockaddr.c	2019-03-18 03:40:16.000000000 +0100
-+++ strace-5.1/tests-m32/net-sockaddr.c	2019-08-29 19:16:28.327738043 +0200
-@@ -543,11 +543,22 @@
- 	TAIL_ALLOC_OBJECT_VAR_PTR(struct sockaddr_hci, hci);
- 	hci->hci_family = AF_BLUETOOTH;
- 	hci->hci_dev = htobs(h_port);
-+# ifdef HAVE_STRUCT_SOCKADDR_HCI_HCI_CHANNEL
- 	hci->hci_channel = HCI_CHANNEL_RAW;
-+# endif
- 	unsigned int len = sizeof(*hci);
--	int ret = connect(-1, (void *) hci, len);
-+
-+	int ret = connect(-1, (void *) hci, 4);
-+	printf("connect(-1, {sa_family=AF_BLUETOOTH, hci_dev=htobs(%hu)"
-+	       "}, 4) = %d EBADF (%m)\n",
-+	       h_port, ret);
-+
-+	ret = connect(-1, (void *) hci, len);
- 	printf("connect(-1, {sa_family=AF_BLUETOOTH, hci_dev=htobs(%hu)"
--	       ", hci_channel=HCI_CHANNEL_RAW}, %u) = %d EBADF (%m)\n",
-+# ifdef HAVE_STRUCT_SOCKADDR_HCI_HCI_CHANNEL
-+	       ", hci_channel=HCI_CHANNEL_RAW"
-+# endif
-+	       "}, %u) = %d EBADF (%m)\n",
- 	       h_port, len, ret);
- }
- 
-@@ -700,9 +711,8 @@
- 	       " = %d EBADF (%m)\n", len, ret);
- 
- 	u.sa->sa_family = AF_BLUETOOTH;
--	++len;
- 	ret = connect(-1, (void *) u.st, len);
--	printf("connect(-1, {sa_family=AF_BLUETOOTH, sa_data=\"00\"}, %u)"
-+	printf("connect(-1, {sa_family=AF_BLUETOOTH, sa_data=\"0\"}, %u)"
- 	       " = %d EBADF (%m)\n", len, ret);
- }
- 
-Index: strace-5.1/tests-mx32/net-sockaddr.c
-===================================================================
---- strace-5.1.orig/tests-mx32/net-sockaddr.c	2019-03-18 03:40:16.000000000 +0100
-+++ strace-5.1/tests-mx32/net-sockaddr.c	2019-08-29 19:16:30.805706731 +0200
-@@ -543,11 +543,22 @@
- 	TAIL_ALLOC_OBJECT_VAR_PTR(struct sockaddr_hci, hci);
- 	hci->hci_family = AF_BLUETOOTH;
- 	hci->hci_dev = htobs(h_port);
-+# ifdef HAVE_STRUCT_SOCKADDR_HCI_HCI_CHANNEL
- 	hci->hci_channel = HCI_CHANNEL_RAW;
-+# endif
- 	unsigned int len = sizeof(*hci);
--	int ret = connect(-1, (void *) hci, len);
-+
-+	int ret = connect(-1, (void *) hci, 4);
-+	printf("connect(-1, {sa_family=AF_BLUETOOTH, hci_dev=htobs(%hu)"
-+	       "}, 4) = %d EBADF (%m)\n",
-+	       h_port, ret);
-+
-+	ret = connect(-1, (void *) hci, len);
- 	printf("connect(-1, {sa_family=AF_BLUETOOTH, hci_dev=htobs(%hu)"
--	       ", hci_channel=HCI_CHANNEL_RAW}, %u) = %d EBADF (%m)\n",
-+# ifdef HAVE_STRUCT_SOCKADDR_HCI_HCI_CHANNEL
-+	       ", hci_channel=HCI_CHANNEL_RAW"
-+# endif
-+	       "}, %u) = %d EBADF (%m)\n",
- 	       h_port, len, ret);
- }
- 
-@@ -700,9 +711,8 @@
- 	       " = %d EBADF (%m)\n", len, ret);
- 
- 	u.sa->sa_family = AF_BLUETOOTH;
--	++len;
- 	ret = connect(-1, (void *) u.st, len);
--	printf("connect(-1, {sa_family=AF_BLUETOOTH, sa_data=\"00\"}, %u)"
-+	printf("connect(-1, {sa_family=AF_BLUETOOTH, sa_data=\"0\"}, %u)"
- 	       " = %d EBADF (%m)\n", len, ret);
- }
- 
-Index: strace-5.1/configure
-===================================================================
---- strace-5.1.orig/configure	2019-08-30 17:41:22.748513960 +0200
-+++ strace-5.1/configure	2019-08-30 17:41:43.118251704 +0200
-@@ -12037,6 +12037,18 @@
- #define HAVE_BLUETOOTH_BLUETOOTH_H 1
- _ACEOF
- 
-+	ac_fn_c_check_member "$LINENO" "struct sockaddr_hci" "hci_channel" "ac_cv_member_struct_sockaddr_hci_hci_channel" "#include <bluetooth/bluetooth.h>
-+			 #include <bluetooth/hci.h>
-+"
-+if test "x$ac_cv_member_struct_sockaddr_hci_hci_channel" = xyes; then :
-+
-+cat >>confdefs.h <<_ACEOF
-+#define HAVE_STRUCT_SOCKADDR_HCI_HCI_CHANNEL 1
-+_ACEOF
-+
-+
-+fi
-+
- 	ac_fn_c_check_member "$LINENO" "struct sockaddr_l2" "l2_bdaddr_type" "ac_cv_member_struct_sockaddr_l2_l2_bdaddr_type" "#include <bluetooth/bluetooth.h>
- 			 #include <bluetooth/l2cap.h>
- "
-Index: strace-5.1/config.h.in
-===================================================================
---- strace-5.1.orig/config.h.in	2019-05-22 15:08:39.000000000 +0200
-+++ strace-5.1/config.h.in	2019-08-30 18:32:25.431500194 +0200
-@@ -1391,6 +1391,9 @@
- /* Define to 1 if the system has the type `struct sigcontext'. */
- #undef HAVE_STRUCT_SIGCONTEXT
- 
-+/* Define to 1 if `hci_channel' is a member of `struct sockaddr_hci'. */
-+#undef HAVE_STRUCT_SOCKADDR_HCI_HCI_CHANNEL
-+
- /* Define to 1 if `l2_bdaddr_type' is a member of `struct sockaddr_l2'. */
- #undef HAVE_STRUCT_SOCKADDR_L2_L2_BDADDR_TYPE
- 
diff --git a/SOURCES/0043-tests-fix-expected-output-for-some-ipc-tests.patch b/SOURCES/0043-tests-fix-expected-output-for-some-ipc-tests.patch
deleted file mode 100644
index a05241d..0000000
--- a/SOURCES/0043-tests-fix-expected-output-for-some-ipc-tests.patch
+++ /dev/null
@@ -1,90 +0,0 @@
-From 4377e3a1535a0ec3a42da8a1366ad6943f4efa0e Mon Sep 17 00:00:00 2001
-From: "Dmitry V. Levin" <ldv@altlinux.org>
-Date: Sun, 4 Aug 2019 08:47:00 +0000
-Subject: [PATCH] tests: fix expected output for some ipc tests
-
-* tests/gen_tests.in (ipc_msgbuf-Xraw, ipc_shm, ipc_shm-Xabbrev,
-ipc_shm-Xverbose): Adjust -a argument.
----
-Backport changes:
- * tests/gen_tests.in change is copied over to tests-m32/gen_tests.in
-   and tests-m32/gen_tests.in
----
- tests/gen_tests.in | 8 ++++----
- 1 file changed, 4 insertions(+), 4 deletions(-)
-
-Index: strace-4.24/tests/gen_tests.in
-===================================================================
---- strace-4.24.orig/tests/gen_tests.in	2020-01-27 18:21:22.896068950 +0100
-+++ strace-4.24/tests/gen_tests.in	2020-01-27 18:21:42.169892032 +0100
-@@ -147,16 +147,16 @@
- ipc_msg-Xraw	+ipc.sh -Xraw -a16
- ipc_msg-Xverbose	+ipc.sh -Xverbose -a34
- ipc_msgbuf-Xabbrev	+ipc_msgbuf.test -Xabbrev
--ipc_msgbuf-Xraw	+ipc_msgbuf.test -Xraw -a22
-+ipc_msgbuf-Xraw	+ipc_msgbuf.test -Xraw -a20
- ipc_msgbuf-Xverbose	+ipc_msgbuf.test -Xverbose
- ipc_sem	+ipc.sh -a29
- ipc_sem-Xabbrev	+ipc.sh -Xabbrev -a29
- ipc_sem-Xraw	+ipc.sh -Xraw -a19
- ipc_sem-Xverbose	+ipc.sh -Xverbose -a36
--ipc_shm	+ipc.sh -a29
--ipc_shm-Xabbrev	+ipc.sh -Xabbrev -a29
-+ipc_shm	+ipc.sh -a26
-+ipc_shm-Xabbrev	+ipc.sh -Xabbrev -a26
- ipc_shm-Xraw	+ipc.sh -Xraw -a19
--ipc_shm-Xverbose	+ipc.sh -Xverbose -a36
-+ipc_shm-Xverbose	+ipc.sh -Xverbose -a34
- kcmp	-a22
- kcmp-y	-a22 -y -e trace=kcmp
- kern_features -a16
-Index: strace-4.24/tests-m32/gen_tests.in
-===================================================================
---- strace-4.24.orig/tests-m32/gen_tests.in	2020-01-27 18:21:36.149947290 +0100
-+++ strace-4.24/tests-m32/gen_tests.in	2020-01-27 18:38:00.954898561 +0100
-@@ -147,16 +147,16 @@
- ipc_msg-Xraw	+ipc.sh -Xraw -a16
- ipc_msg-Xverbose	+ipc.sh -Xverbose -a34
- ipc_msgbuf-Xabbrev	+ipc_msgbuf.test -Xabbrev
--ipc_msgbuf-Xraw	+ipc_msgbuf.test -Xraw -a22
-+ipc_msgbuf-Xraw	+ipc_msgbuf.test -Xraw -a20
- ipc_msgbuf-Xverbose	+ipc_msgbuf.test -Xverbose
- ipc_sem	+ipc.sh -a29
- ipc_sem-Xabbrev	+ipc.sh -Xabbrev -a29
- ipc_sem-Xraw	+ipc.sh -Xraw -a19
- ipc_sem-Xverbose	+ipc.sh -Xverbose -a36
--ipc_shm	+ipc.sh -a29
--ipc_shm-Xabbrev	+ipc.sh -Xabbrev -a29
-+ipc_shm	+ipc.sh -a26
-+ipc_shm-Xabbrev	+ipc.sh -Xabbrev -a26
- ipc_shm-Xraw	+ipc.sh -Xraw -a19
--ipc_shm-Xverbose	+ipc.sh -Xverbose -a36
-+ipc_shm-Xverbose	+ipc.sh -Xverbose -a34
- kcmp	-a22
- kcmp-y	-a22 -y -e trace=kcmp
- kern_features -a16
-Index: strace-4.24/tests-mx32/gen_tests.in
-===================================================================
---- strace-4.24.orig/tests-mx32/gen_tests.in	2020-01-27 18:21:37.445935394 +0100
-+++ strace-4.24/tests-mx32/gen_tests.in	2020-01-27 18:37:59.481911731 +0100
-@@ -147,16 +147,16 @@
- ipc_msg-Xraw	+ipc.sh -Xraw -a16
- ipc_msg-Xverbose	+ipc.sh -Xverbose -a34
- ipc_msgbuf-Xabbrev	+ipc_msgbuf.test -Xabbrev
--ipc_msgbuf-Xraw	+ipc_msgbuf.test -Xraw -a22
-+ipc_msgbuf-Xraw	+ipc_msgbuf.test -Xraw -a20
- ipc_msgbuf-Xverbose	+ipc_msgbuf.test -Xverbose
- ipc_sem	+ipc.sh -a29
- ipc_sem-Xabbrev	+ipc.sh -Xabbrev -a29
- ipc_sem-Xraw	+ipc.sh -Xraw -a19
- ipc_sem-Xverbose	+ipc.sh -Xverbose -a36
--ipc_shm	+ipc.sh -a29
--ipc_shm-Xabbrev	+ipc.sh -Xabbrev -a29
-+ipc_shm	+ipc.sh -a26
-+ipc_shm-Xabbrev	+ipc.sh -Xabbrev -a26
- ipc_shm-Xraw	+ipc.sh -Xraw -a19
--ipc_shm-Xverbose	+ipc.sh -Xverbose -a36
-+ipc_shm-Xverbose	+ipc.sh -Xverbose -a34
- kcmp	-a22
- kcmp-y	-a22 -y -e trace=kcmp
- kern_features -a16
diff --git a/SOURCES/0044-tests-fix-a-argument-in-ipc_msgbuf-Xraw-test.patch b/SOURCES/0044-tests-fix-a-argument-in-ipc_msgbuf-Xraw-test.patch
deleted file mode 100644
index 3ce20d2..0000000
--- a/SOURCES/0044-tests-fix-a-argument-in-ipc_msgbuf-Xraw-test.patch
+++ /dev/null
@@ -1,53 +0,0 @@
-From a75c7c4bcb6b48680275de3e99e17e0ebec811ec Mon Sep 17 00:00:00 2001
-From: "Dmitry V. Levin" <ldv@altlinux.org>
-Date: Thu, 7 Nov 2019 19:58:36 +0000
-Subject: [PATCH] tests: fix -a argument in ipc_msgbuf-Xraw test
-
-* tests/gen_tests.in (ipc_msgbuf-Xraw): Change -a argument from 20 to 19.
----
-Backport change:
- * tests/gen_tests.in change has been copied over to tests-m32/gen_tests.in
-   and tests-mx32/gen_tests.in.
----
- tests/gen_tests.in | 2 +-
- 1 file changed, 1 insertion(+), 1 deletion(-)
-
-Index: strace-4.24/tests/gen_tests.in
-===================================================================
---- strace-4.24.orig/tests/gen_tests.in	2020-01-27 18:21:42.169892032 +0100
-+++ strace-4.24/tests/gen_tests.in	2020-01-27 18:38:14.935773561 +0100
-@@ -147,7 +147,7 @@
- ipc_msg-Xraw	+ipc.sh -Xraw -a16
- ipc_msg-Xverbose	+ipc.sh -Xverbose -a34
- ipc_msgbuf-Xabbrev	+ipc_msgbuf.test -Xabbrev
--ipc_msgbuf-Xraw	+ipc_msgbuf.test -Xraw -a20
-+ipc_msgbuf-Xraw	+ipc_msgbuf.test -Xraw -a19
- ipc_msgbuf-Xverbose	+ipc_msgbuf.test -Xverbose
- ipc_sem	+ipc.sh -a29
- ipc_sem-Xabbrev	+ipc.sh -Xabbrev -a29
-Index: strace-4.24/tests-m32/gen_tests.in
-===================================================================
---- strace-4.24.orig/tests-m32/gen_tests.in	2020-01-27 18:38:00.954898561 +0100
-+++ strace-4.24/tests-m32/gen_tests.in	2020-01-27 18:38:23.407697816 +0100
-@@ -147,7 +147,7 @@
- ipc_msg-Xraw	+ipc.sh -Xraw -a16
- ipc_msg-Xverbose	+ipc.sh -Xverbose -a34
- ipc_msgbuf-Xabbrev	+ipc_msgbuf.test -Xabbrev
--ipc_msgbuf-Xraw	+ipc_msgbuf.test -Xraw -a20
-+ipc_msgbuf-Xraw	+ipc_msgbuf.test -Xraw -a19
- ipc_msgbuf-Xverbose	+ipc_msgbuf.test -Xverbose
- ipc_sem	+ipc.sh -a29
- ipc_sem-Xabbrev	+ipc.sh -Xabbrev -a29
-Index: strace-4.24/tests-mx32/gen_tests.in
-===================================================================
---- strace-4.24.orig/tests-mx32/gen_tests.in	2020-01-27 18:37:59.481911731 +0100
-+++ strace-4.24/tests-mx32/gen_tests.in	2020-01-27 18:38:24.645686747 +0100
-@@ -147,7 +147,7 @@
- ipc_msg-Xraw	+ipc.sh -Xraw -a16
- ipc_msg-Xverbose	+ipc.sh -Xverbose -a34
- ipc_msgbuf-Xabbrev	+ipc_msgbuf.test -Xabbrev
--ipc_msgbuf-Xraw	+ipc_msgbuf.test -Xraw -a20
-+ipc_msgbuf-Xraw	+ipc_msgbuf.test -Xraw -a19
- ipc_msgbuf-Xverbose	+ipc_msgbuf.test -Xverbose
- ipc_sem	+ipc.sh -a29
- ipc_sem-Xabbrev	+ipc.sh -Xabbrev -a29
diff --git a/SOURCES/0113-io_uring-Remove-struct-io_cqring_offsets-compile-tim.patch b/SOURCES/0113-io_uring-Remove-struct-io_cqring_offsets-compile-tim.patch
new file mode 100644
index 0000000..5040cd6
--- /dev/null
+++ b/SOURCES/0113-io_uring-Remove-struct-io_cqring_offsets-compile-tim.patch
@@ -0,0 +1,44 @@
+From ff85f882bbd8a399e036b8465520d1ff0867f4f1 Mon Sep 17 00:00:00 2001
+From: Chris Packham <chris.packham@alliedtelesis.co.nz>
+Date: Mon, 15 Jun 2020 22:01:25 +1200
+Subject: [PATCH 113/115] io_uring: Remove struct io_cqring_offsets compile
+ time asserts
+
+The generated types/check-io_uring.c already checks the kernel's struct
+io_cqring_offsets for compatibility with the strace definition so
+there's no need for manual checks.
+
+* io_uring.c [HAVE_STRUCT_IO_CQRING_OFFSETS]: Remove static_asserts.
+---
+ io_uring.c | 15 ---------------
+ 1 file changed, 15 deletions(-)
+
+diff --git a/io_uring.c b/io_uring.c
+index ac1807b..fd83313 100644
+--- a/io_uring.c
++++ b/io_uring.c
+@@ -17,21 +17,6 @@
+ #include "xlat/uring_enter_flags.h"
+ #include "xlat/uring_register_opcodes.h"
+ 
+-#ifdef HAVE_STRUCT_IO_CQRING_OFFSETS
+-# ifdef HAVE_STRUCT_IO_CQRING_OFFSETS_RESV
+-static_assert(offsetof(struct_io_cqring_offsets, resv)
+-             >= offsetof(struct io_cqring_offsets, resv),
+-             "struct io_cqring_offsets.resv offset mismatch"
+-             ", please update the decoder");
+-static_assert(sizeof_field(struct_io_cqring_offsets, resv)
+-             <= sizeof_field(struct io_cqring_offsets, resv),
+-             "struct io_cqring_offsets.resv size mismatch"
+-             ", please update the decoder");
+-# else /* !HAVE_STRUCT_IO_CQRING_OFFSETS_RESV */
+-static_assert(0, "struct io_cqring_offsets.resv is missing"
+-		 ", please update the decoder");
+-# endif
+-#endif /* HAVE_STRUCT_IO_CQRING_OFFSETS */
+ #ifdef HAVE_STRUCT_IO_URING_PARAMS
+ # ifdef HAVE_STRUCT_IO_URING_PARAMS_RESV
+ static_assert(offsetof(struct_io_uring_params, resv)
+-- 
+2.1.4
+
diff --git a/SOURCES/0114-io_uring-Add-io_cqring_offset-flags.patch b/SOURCES/0114-io_uring-Add-io_cqring_offset-flags.patch
new file mode 100644
index 0000000..fc37a3f
--- /dev/null
+++ b/SOURCES/0114-io_uring-Add-io_cqring_offset-flags.patch
@@ -0,0 +1,383 @@
+From c51b292b237214ccfcae5a84085f8d0a7e85c8ba Mon Sep 17 00:00:00 2001
+From: Chris Packham <chris.packham@alliedtelesis.co.nz>
+Date: Mon, 15 Jun 2020 22:01:26 +1200
+Subject: [PATCH 114/115] io_uring: Add io_cqring_offset flags
+
+Add support for displaying struct io_cqring_offsets.flags introduced
+by Linux kernel commits v5.8-rc1~190^2~22 and v5.8-rc1~190^2~21.
+
+* types/io_uring.h (struct_io_cqring_offsets): Replace resv array
+with flags, resv1, and resv2 fields.
+* xlat/uring_cqring_flags.in: New file.
+* configure.ac (AC_CHECK_MEMBERS): Check struct io_cqring_offsets.flags.
+* io_uring.c: Include "xlat/uring_cqring_flags.h".
+(SYS_FUNC(io_uring_setup)): Replace printing of the resv array
+of struct io_cqring_offsets with flags, resv1, and resv2 fields.
+* tests/io_uring_setup.c: Check it.
+
+Co-authored-by: Dmitry V. Levin <ldv@altlinux.org>
+Resolves: https://github.com/strace/strace/issues/138
+---
+ configure.ac               |  1 +
+ io_uring.c                 | 11 +++++++----
+ tests/io_uring_setup.c     | 31 ++++++++++++++++++++++++++-----
+ types/io_uring.h           |  4 +++-
+ xlat/uring_cqring_flags.in |  1 +
+ 5 files changed, 38 insertions(+), 10 deletions(-)
+ create mode 100644 xlat/uring_cqring_flags.in
+
+Index: strace-5.7/configure.ac
+===================================================================
+--- strace-5.7.orig/configure.ac	2020-11-09 04:39:07.197892960 +0100
++++ strace-5.7/configure.ac	2020-11-09 04:39:14.943826575 +0100
+@@ -481,6 +481,7 @@
+ 
+ AC_CHECK_HEADERS([linux/io_uring.h], [
+ 	AC_CHECK_MEMBERS(m4_normalize([
++		struct io_cqring_offsets.flags,
+ 		struct io_uring_params.features,
+ 		struct io_uring_params.wq_fd,
+ 		struct io_uring_params.resv
+Index: strace-5.7/io_uring.c
+===================================================================
+--- strace-5.7.orig/io_uring.c	2020-11-09 04:39:07.197892960 +0100
++++ strace-5.7/io_uring.c	2020-11-09 04:39:14.943826575 +0100
+@@ -17,6 +17,7 @@
+ #include "xlat/uring_setup_flags.h"
+ #include "xlat/uring_enter_flags.h"
+ #include "xlat/uring_register_opcodes.h"
++#include "xlat/uring_cqring_flags.h"
+ 
+ #ifdef HAVE_STRUCT_IO_URING_PARAMS
+ # ifdef HAVE_STRUCT_IO_URING_PARAMS_RESV
+@@ -88,10 +89,12 @@
+ 		PRINT_FIELD_U(", ", params.cq_off, ring_entries);
+ 		PRINT_FIELD_U(", ", params.cq_off, overflow);
+ 		PRINT_FIELD_U(", ", params.cq_off, cqes);
+-		if (!IS_ARRAY_ZERO(params.cq_off.resv)) {
+-			PRINT_FIELD_ARRAY(", ", params.cq_off, resv, tcp,
+-					  print_xint64_array_member);
+-		}
++		PRINT_FIELD_FLAGS(", ", params.cq_off, flags,
++				  uring_cqring_flags, "IORING_CQ_???");
++		if (params.cq_off.resv1)
++			PRINT_FIELD_X(", ", params.cq_off, resv1);
++		if (params.cq_off.resv2)
++			PRINT_FIELD_X(", ", params.cq_off, resv2);
+ 		tprints("}");
+ 	}
+ 	tprints("}");
+Index: strace-5.7/tests/io_uring_setup.c
+===================================================================
+--- strace-5.7.orig/tests/io_uring_setup.c	2020-11-09 04:39:07.197892960 +0100
++++ strace-5.7/tests/io_uring_setup.c	2020-11-09 04:39:14.943826575 +0100
+@@ -27,6 +27,7 @@
+ # include "xlat.h"
+ 
+ # include "xlat/uring_setup_features.h"
++# include "xlat/uring_cqring_flags.h"
+ 
+ # ifdef HAVE_STRUCT_IO_URING_PARAMS_FEATURES
+ #  ifdef HAVE_STRUCT_IO_URING_PARAMS_WQ_FD
+@@ -144,20 +145,40 @@
+ 						params->sq_off.resv2);
+ 
+ 			printf("}, cq_off={head=%u, tail=%u, ring_mask=%u"
+-			       ", ring_entries=%u, overflow=%u, cqes=%u",
++			       ", ring_entries=%u, overflow=%u, cqes=%u, flags=",
+ 			       params->cq_off.head,
+ 			       params->cq_off.tail,
+ 			       params->cq_off.ring_mask,
+ 			       params->cq_off.ring_entries,
+ 			       params->cq_off.overflow,
+ 			       params->cq_off.cqes);
+-			if (params->cq_off.resv[0] || params->cq_off.resv[1]) {
+-				printf(", resv=[%#llx, %#llx]",
++#ifdef HAVE_STRUCT_IO_CQRING_OFFSETS_FLAGS
++			printflags(uring_cqring_flags,
++			       params->cq_off.flags,
++			       "IORING_CQ_???");
++			if (params->cq_off.resv1)
++				printf(", resv1=%#x", params->cq_off.resv1);
++			if (params->cq_off.resv2)
++				printf(", resv2=%#llx",
+ 				       (unsigned long long)
+-						params->cq_off.resv[0],
++						params->cq_off.resv2);
++#else
++			union {
++				struct {
++					uint32_t flags;
++					uint32_t resv1;
++				} s;
++				uint64_t v;
++			} u = { .v = params->cq_off.resv[0] };
++			printflags(uring_cqring_flags, u.s.flags,
++				   "IORING_CQ_???");
++			if (u.s.resv1)
++				printf(", resv1=%#x", u.s.resv1);
++			if (params->cq_off.resv[1])
++				printf(", resv2=%#llx",
+ 				       (unsigned long long)
+ 						params->cq_off.resv[1]);
+-			}
++#endif
+ 
+ 			printf("}}) = %ld<anon_inode:[io_uring]>\n", rc);
+ 		}
+Index: strace-5.7/types/io_uring.h
+===================================================================
+--- strace-5.7.orig/types/io_uring.h	2020-11-09 04:39:07.198892952 +0100
++++ strace-5.7/types/io_uring.h	2020-11-09 04:39:14.944826567 +0100
+@@ -31,7 +31,9 @@
+ 	uint32_t ring_entries;
+ 	uint32_t overflow;
+ 	uint32_t cqes;
+-	uint64_t resv[2];
++	/** Added by v5.8-rc1~190^2~22 */	uint32_t flags;
++	/** Added by v5.8-rc1~190^2~22 */	uint32_t resv1;
++	/** Added by v5.8-rc1~190^2~22 */	uint64_t resv2;
+ } struct_io_cqring_offsets;
+ 
+ typedef struct {
+Index: strace-5.7/xlat/uring_cqring_flags.in
+===================================================================
+--- /dev/null	1970-01-01 00:00:00.000000000 +0000
++++ strace-5.7/xlat/uring_cqring_flags.in	2020-11-09 04:39:14.944826567 +0100
+@@ -0,0 +1 @@
++IORING_CQ_EVENTFD_DISABLED	1U
+Index: strace-5.7/Makefile.in
+===================================================================
+--- strace-5.7.orig/Makefile.in	2020-11-09 04:39:07.201892926 +0100
++++ strace-5.7/Makefile.in	2020-11-09 04:42:54.519945367 +0100
+@@ -1506,10 +1506,10 @@
+ 	xlat/uffd_register_mode_flags.in xlat/uffd_zeropage_flags.in \
+ 	xlat/umount_flags.in xlat/unix_diag_attrs.in \
+ 	xlat/unix_diag_show.in xlat/unshare_flags.in \
+-	xlat/uring_enter_flags.in xlat/uring_op_flags.in \
+-	xlat/uring_ops.in xlat/uring_register_opcodes.in \
+-	xlat/uring_setup_features.in xlat/uring_setup_flags.in \
+-	xlat/usagewho.in xlat/v4l2_buf_flags.in \
++	xlat/uring_cqring_flags.in xlat/uring_enter_flags.in \
++	xlat/uring_op_flags.in xlat/uring_ops.in \
++	xlat/uring_register_opcodes.in xlat/uring_setup_features.in \
++	xlat/uring_setup_flags.in xlat/usagewho.in xlat/v4l2_buf_flags.in \
+ 	xlat/v4l2_buf_flags_masks.in xlat/v4l2_buf_flags_ts_src.in \
+ 	xlat/v4l2_buf_flags_ts_type.in xlat/v4l2_buf_types.in \
+ 	xlat/v4l2_capture_modes.in xlat/v4l2_colorspaces.in \
+@@ -1755,10 +1755,10 @@
+ 	xlat/uffd_register_mode_flags.h xlat/uffd_zeropage_flags.h \
+ 	xlat/umount_flags.h xlat/unix_diag_attrs.h \
+ 	xlat/unix_diag_show.h xlat/unshare_flags.h \
+-	xlat/uring_enter_flags.h xlat/uring_op_flags.h \
+-	xlat/uring_ops.h xlat/uring_register_opcodes.h \
+-	xlat/uring_setup_features.h xlat/uring_setup_flags.h \
+-	xlat/usagewho.h xlat/v4l2_buf_flags.h \
++	xlat/uring_cqring_flags.h xlat/uring_enter_flags.h \
++	xlat/uring_op_flags.h xlat/uring_ops.h \
++	xlat/uring_register_opcodes.h xlat/uring_setup_features.h \
++	xlat/uring_setup_flags.h xlat/usagewho.h xlat/v4l2_buf_flags.h \
+ 	xlat/v4l2_buf_flags_masks.h xlat/v4l2_buf_flags_ts_src.h \
+ 	xlat/v4l2_buf_flags_ts_type.h xlat/v4l2_buf_types.h \
+ 	xlat/v4l2_capture_modes.h xlat/v4l2_colorspaces.h \
+@@ -9974,6 +9974,8 @@
+ 	$(AM_V_GEN)$(top_srcdir)/xlat/gen.sh $< $@
+ $(top_srcdir)/xlat/unshare_flags.h: $(top_srcdir)/xlat/unshare_flags.in $(top_srcdir)/xlat/gen.sh
+ 	$(AM_V_GEN)$(top_srcdir)/xlat/gen.sh $< $@
++$(top_srcdir)/xlat/uring_cqring_flags.h: $(top_srcdir)/xlat/uring_cqring_flags.in $(top_srcdir)/xlat/gen.sh
++	$(AM_V_GEN)$(top_srcdir)/xlat/gen.sh $< $@
+ $(top_srcdir)/xlat/uring_enter_flags.h: $(top_srcdir)/xlat/uring_enter_flags.in $(top_srcdir)/xlat/gen.sh
+ 	$(AM_V_GEN)$(top_srcdir)/xlat/gen.sh $< $@
+ $(top_srcdir)/xlat/uring_op_flags.h: $(top_srcdir)/xlat/uring_op_flags.in $(top_srcdir)/xlat/gen.sh
+Index: strace-5.7/configure
+===================================================================
+--- strace-5.7.orig/configure	2020-11-09 04:39:07.205892892 +0100
++++ strace-5.7/configure	2020-11-09 05:07:10.675485410 +0100
+@@ -12580,7 +12580,17 @@
+ #define HAVE_LINUX_IO_URING_H 1
+ _ACEOF
+ 
+-	ac_fn_c_check_member "$LINENO" "struct io_uring_params" "features" "ac_cv_member_struct_io_uring_params_features" "#include <linux/io_uring.h>
++	ac_fn_c_check_member "$LINENO" "struct io_cqring_offsets" "flags" "ac_cv_member_struct_io_cqring_offsets_flags" "#include <linux/io_uring.h>
++"
++if test "x$ac_cv_member_struct_io_cqring_offsets_flags" = xyes; then :
++
++cat >>confdefs.h <<_ACEOF
++#define HAVE_STRUCT_IO_CQRING_OFFSETS_FLAGS 1
++_ACEOF
++
++
++fi
++ac_fn_c_check_member "$LINENO" "struct io_uring_params" "features" "ac_cv_member_struct_io_uring_params_features" "#include <linux/io_uring.h>
+ "
+ if test "x$ac_cv_member_struct_io_uring_params_features" = xyes; then :
+ 
+Index: strace-5.7/tests-m32/io_uring_setup.c
+===================================================================
+--- strace-5.7.orig/tests-m32/io_uring_setup.c	2020-11-09 04:39:07.206892883 +0100
++++ strace-5.7/tests-m32/io_uring_setup.c	2020-11-09 04:39:14.951826507 +0100
+@@ -27,6 +27,7 @@
+ # include "xlat.h"
+ 
+ # include "xlat/uring_setup_features.h"
++# include "xlat/uring_cqring_flags.h"
+ 
+ # ifdef HAVE_STRUCT_IO_URING_PARAMS_FEATURES
+ #  ifdef HAVE_STRUCT_IO_URING_PARAMS_WQ_FD
+@@ -144,20 +145,40 @@
+ 						params->sq_off.resv2);
+ 
+ 			printf("}, cq_off={head=%u, tail=%u, ring_mask=%u"
+-			       ", ring_entries=%u, overflow=%u, cqes=%u",
++			       ", ring_entries=%u, overflow=%u, cqes=%u, flags=",
+ 			       params->cq_off.head,
+ 			       params->cq_off.tail,
+ 			       params->cq_off.ring_mask,
+ 			       params->cq_off.ring_entries,
+ 			       params->cq_off.overflow,
+ 			       params->cq_off.cqes);
+-			if (params->cq_off.resv[0] || params->cq_off.resv[1]) {
+-				printf(", resv=[%#llx, %#llx]",
++#ifdef HAVE_STRUCT_IO_CQRING_OFFSETS_FLAGS
++			printflags(uring_cqring_flags,
++			       params->cq_off.flags,
++			       "IORING_CQ_???");
++			if (params->cq_off.resv1)
++				printf(", resv1=%#x", params->cq_off.resv1);
++			if (params->cq_off.resv2)
++				printf(", resv2=%#llx",
+ 				       (unsigned long long)
+-						params->cq_off.resv[0],
++						params->cq_off.resv2);
++#else
++			union {
++				struct {
++					uint32_t flags;
++					uint32_t resv1;
++				} s;
++				uint64_t v;
++			} u = { .v = params->cq_off.resv[0] };
++			printflags(uring_cqring_flags, u.s.flags,
++				   "IORING_CQ_???");
++			if (u.s.resv1)
++				printf(", resv1=%#x", u.s.resv1);
++			if (params->cq_off.resv[1])
++				printf(", resv2=%#llx",
+ 				       (unsigned long long)
+ 						params->cq_off.resv[1]);
+-			}
++#endif
+ 
+ 			printf("}}) = %ld<anon_inode:[io_uring]>\n", rc);
+ 		}
+Index: strace-5.7/tests-mx32/io_uring_setup.c
+===================================================================
+--- strace-5.7.orig/tests-mx32/io_uring_setup.c	2020-11-09 04:39:07.206892883 +0100
++++ strace-5.7/tests-mx32/io_uring_setup.c	2020-11-09 04:39:14.951826507 +0100
+@@ -27,6 +27,7 @@
+ # include "xlat.h"
+ 
+ # include "xlat/uring_setup_features.h"
++# include "xlat/uring_cqring_flags.h"
+ 
+ # ifdef HAVE_STRUCT_IO_URING_PARAMS_FEATURES
+ #  ifdef HAVE_STRUCT_IO_URING_PARAMS_WQ_FD
+@@ -144,20 +145,40 @@
+ 						params->sq_off.resv2);
+ 
+ 			printf("}, cq_off={head=%u, tail=%u, ring_mask=%u"
+-			       ", ring_entries=%u, overflow=%u, cqes=%u",
++			       ", ring_entries=%u, overflow=%u, cqes=%u, flags=",
+ 			       params->cq_off.head,
+ 			       params->cq_off.tail,
+ 			       params->cq_off.ring_mask,
+ 			       params->cq_off.ring_entries,
+ 			       params->cq_off.overflow,
+ 			       params->cq_off.cqes);
+-			if (params->cq_off.resv[0] || params->cq_off.resv[1]) {
+-				printf(", resv=[%#llx, %#llx]",
++#ifdef HAVE_STRUCT_IO_CQRING_OFFSETS_FLAGS
++			printflags(uring_cqring_flags,
++			       params->cq_off.flags,
++			       "IORING_CQ_???");
++			if (params->cq_off.resv1)
++				printf(", resv1=%#x", params->cq_off.resv1);
++			if (params->cq_off.resv2)
++				printf(", resv2=%#llx",
+ 				       (unsigned long long)
+-						params->cq_off.resv[0],
++						params->cq_off.resv2);
++#else
++			union {
++				struct {
++					uint32_t flags;
++					uint32_t resv1;
++				} s;
++				uint64_t v;
++			} u = { .v = params->cq_off.resv[0] };
++			printflags(uring_cqring_flags, u.s.flags,
++				   "IORING_CQ_???");
++			if (u.s.resv1)
++				printf(", resv1=%#x", u.s.resv1);
++			if (params->cq_off.resv[1])
++				printf(", resv2=%#llx",
+ 				       (unsigned long long)
+ 						params->cq_off.resv[1]);
+-			}
++#endif
+ 
+ 			printf("}}) = %ld<anon_inode:[io_uring]>\n", rc);
+ 		}
+Index: strace-5.7/xlat/uring_cqring_flags.h
+===================================================================
+--- /dev/null	1970-01-01 00:00:00.000000000 +0000
++++ strace-5.7/xlat/uring_cqring_flags.h	2020-11-09 05:07:27.046345327 +0100
+@@ -0,0 +1,48 @@
++/* Generated by ./xlat/gen.sh from ./xlat/uring_cqring_flags.in; do not edit. */
++
++#include "gcc_compat.h"
++#include "static_assert.h"
++
++#if defined(IORING_CQ_EVENTFD_DISABLED) || (defined(HAVE_DECL_IORING_CQ_EVENTFD_DISABLED) && HAVE_DECL_IORING_CQ_EVENTFD_DISABLED)
++DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
++static_assert((IORING_CQ_EVENTFD_DISABLED) == (1U), "IORING_CQ_EVENTFD_DISABLED != 1U");
++DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
++#else
++# define IORING_CQ_EVENTFD_DISABLED 1U
++#endif
++
++#ifndef XLAT_MACROS_ONLY
++
++# ifdef IN_MPERS
++
++#  error static const struct xlat uring_cqring_flags in mpers mode
++
++# else
++
++static const struct xlat_data uring_cqring_flags_xdata[] = {
++ XLAT(IORING_CQ_EVENTFD_DISABLED),
++ #define XLAT_VAL_0 ((unsigned) (IORING_CQ_EVENTFD_DISABLED))
++ #define XLAT_STR_0 STRINGIFY(IORING_CQ_EVENTFD_DISABLED)
++};
++static
++const struct xlat uring_cqring_flags[1] = { {
++ .data = uring_cqring_flags_xdata,
++ .size = ARRAY_SIZE(uring_cqring_flags_xdata),
++ .type = XT_NORMAL,
++ .flags_mask = 0
++#  ifdef XLAT_VAL_0
++  | XLAT_VAL_0
++#  endif
++  ,
++ .flags_strsz = 0
++#  ifdef XLAT_STR_0
++  + sizeof(XLAT_STR_0)
++#  endif
++  ,
++} };
++
++#  undef XLAT_STR_0
++#  undef XLAT_VAL_0
++# endif /* !IN_MPERS */
++
++#endif /* !XLAT_MACROS_ONLY */
diff --git a/SOURCES/0115-xlat-update-IORING_-constants.patch b/SOURCES/0115-xlat-update-IORING_-constants.patch
new file mode 100644
index 0000000..34b14d1
--- /dev/null
+++ b/SOURCES/0115-xlat-update-IORING_-constants.patch
@@ -0,0 +1,217 @@
+From dd6b70f5d4db14b432f424071d262e87fa944c96 Mon Sep 17 00:00:00 2001
+From: "Dmitry V. Levin" <ldv@altlinux.org>
+Date: Sun, 28 Jun 2020 08:00:00 +0000
+Subject: [PATCH 115/115] xlat: update IORING_* constants
+
+* xlat/uring_ops.in (IORING_OP_TEE): New constant introduced by Linux
+kernel commit v5.8-rc1~190^2~14.
+* tests/io_uring_register.c: Update expected output.
+---
+ tests/io_uring_register.c | 12 ++++++------
+ xlat/uring_ops.in         |  1 +
+ 2 files changed, 7 insertions(+), 6 deletions(-)
+
+Index: strace-5.7/tests/io_uring_register.c
+===================================================================
+--- strace-5.7.orig/tests/io_uring_register.c	2020-11-09 04:44:38.311057254 +0100
++++ strace-5.7/tests/io_uring_register.c	2020-11-09 04:44:40.445038991 +0100
+@@ -225,12 +225,12 @@
+ 	probe->ops[0].flags = 0;
+ 	probe->ops[0].resv2 = 0xbeefface;
+ 
+-	probe->ops[1].op = 32;
++	probe->ops[1].op = 33;
+ 	probe->ops[1].resv = 0;
+ 	probe->ops[1].flags = IO_URING_OP_SUPPORTED;
+ 	probe->ops[1].resv2 = 0xdeadc0de;
+ 
+-	probe->ops[2].op = 33;
++	probe->ops[2].op = 34;
+ 	probe->ops[2].resv = 0xaf;
+ 	probe->ops[2].flags = 0xbeef;
+ 	probe->ops[2].resv2 = 0;
+@@ -245,22 +245,22 @@
+ 	       ", {last_op=IORING_OP_EPOLL_CTL, ops_len=%hhu"
+ 	       ", resv2=[0, %#x, 0], ops=["
+ 	       "{op=IORING_OP_NOP, resv=0xde, flags=0, resv2=0xbeefface}, "
+-	       "{op=IORING_OP_REMOVE_BUFFERS, flags=IO_URING_OP_SUPPORTED"
++	       "{op=IORING_OP_TEE, flags=IO_URING_OP_SUPPORTED"
+ 	       ", resv2=0xdeadc0de}, "
+-	       "{op=33 /* IORING_OP_??? */, resv=0xaf"
++	       "{op=34 /* IORING_OP_??? */, resv=0xaf"
+ 	       ", flags=IO_URING_OP_SUPPORTED|0xbeee}, "
+ 	       "{op=254 /* IORING_OP_??? */"
+ 	       ", flags=0xc0de /* IO_URING_OP_??? */}]}, 4) = %s\n",
+ 	       fd_null, path_null, probe->ops_len, probe->resv2[1], errstr);
+ 
+-	probe->last_op = 33;
++	probe->last_op = 34;
+ 	probe->resv2[1] = 0;
+ 	fill_memory_ex(probe->ops, sizeof(probe->ops[0]) * (DEFAULT_STRLEN + 1),
+ 		    0x40, 0x80);
+ 	sys_io_uring_register(fd_null, IORING_REGISTER_PROBE, probe,
+ 			      DEFAULT_STRLEN + 1);
+ 	printf("io_uring_register(%u<%s>, IORING_REGISTER_PROBE"
+-	       ", {last_op=33 /* IORING_OP_??? */, ops_len=%hhu, ops=[",
++	       ", {last_op=34 /* IORING_OP_??? */, ops_len=%hhu, ops=[",
+ 	       fd_null, path_null, probe->ops_len);
+ 	for (size_t i = 0; i < DEFAULT_STRLEN; i++) {
+ 		printf("%s{op=%u /* IORING_OP_??? */, resv=%#hhx"
+Index: strace-5.7/xlat/uring_ops.in
+===================================================================
+--- strace-5.7.orig/xlat/uring_ops.in	2020-11-09 04:44:38.311057254 +0100
++++ strace-5.7/xlat/uring_ops.in	2020-11-09 04:44:40.445038991 +0100
+@@ -32,3 +32,4 @@
+ IORING_OP_SPLICE		30
+ IORING_OP_PROVIDE_BUFFERS	31
+ IORING_OP_REMOVE_BUFFERS	32
++IORING_OP_TEE			33
+Index: strace-5.7/tests-m32/io_uring_register.c
+===================================================================
+--- strace-5.7.orig/tests-m32/io_uring_register.c	2020-11-09 04:44:38.312057246 +0100
++++ strace-5.7/tests-m32/io_uring_register.c	2020-11-09 04:44:40.445038991 +0100
+@@ -225,12 +225,12 @@
+ 	probe->ops[0].flags = 0;
+ 	probe->ops[0].resv2 = 0xbeefface;
+ 
+-	probe->ops[1].op = 32;
++	probe->ops[1].op = 33;
+ 	probe->ops[1].resv = 0;
+ 	probe->ops[1].flags = IO_URING_OP_SUPPORTED;
+ 	probe->ops[1].resv2 = 0xdeadc0de;
+ 
+-	probe->ops[2].op = 33;
++	probe->ops[2].op = 34;
+ 	probe->ops[2].resv = 0xaf;
+ 	probe->ops[2].flags = 0xbeef;
+ 	probe->ops[2].resv2 = 0;
+@@ -245,22 +245,22 @@
+ 	       ", {last_op=IORING_OP_EPOLL_CTL, ops_len=%hhu"
+ 	       ", resv2=[0, %#x, 0], ops=["
+ 	       "{op=IORING_OP_NOP, resv=0xde, flags=0, resv2=0xbeefface}, "
+-	       "{op=IORING_OP_REMOVE_BUFFERS, flags=IO_URING_OP_SUPPORTED"
++	       "{op=IORING_OP_TEE, flags=IO_URING_OP_SUPPORTED"
+ 	       ", resv2=0xdeadc0de}, "
+-	       "{op=33 /* IORING_OP_??? */, resv=0xaf"
++	       "{op=34 /* IORING_OP_??? */, resv=0xaf"
+ 	       ", flags=IO_URING_OP_SUPPORTED|0xbeee}, "
+ 	       "{op=254 /* IORING_OP_??? */"
+ 	       ", flags=0xc0de /* IO_URING_OP_??? */}]}, 4) = %s\n",
+ 	       fd_null, path_null, probe->ops_len, probe->resv2[1], errstr);
+ 
+-	probe->last_op = 33;
++	probe->last_op = 34;
+ 	probe->resv2[1] = 0;
+ 	fill_memory_ex(probe->ops, sizeof(probe->ops[0]) * (DEFAULT_STRLEN + 1),
+ 		    0x40, 0x80);
+ 	sys_io_uring_register(fd_null, IORING_REGISTER_PROBE, probe,
+ 			      DEFAULT_STRLEN + 1);
+ 	printf("io_uring_register(%u<%s>, IORING_REGISTER_PROBE"
+-	       ", {last_op=33 /* IORING_OP_??? */, ops_len=%hhu, ops=[",
++	       ", {last_op=34 /* IORING_OP_??? */, ops_len=%hhu, ops=[",
+ 	       fd_null, path_null, probe->ops_len);
+ 	for (size_t i = 0; i < DEFAULT_STRLEN; i++) {
+ 		printf("%s{op=%u /* IORING_OP_??? */, resv=%#hhx"
+Index: strace-5.7/tests-mx32/io_uring_register.c
+===================================================================
+--- strace-5.7.orig/tests-mx32/io_uring_register.c	2020-11-09 04:44:38.312057246 +0100
++++ strace-5.7/tests-mx32/io_uring_register.c	2020-11-09 04:44:40.446038982 +0100
+@@ -225,12 +225,12 @@
+ 	probe->ops[0].flags = 0;
+ 	probe->ops[0].resv2 = 0xbeefface;
+ 
+-	probe->ops[1].op = 32;
++	probe->ops[1].op = 33;
+ 	probe->ops[1].resv = 0;
+ 	probe->ops[1].flags = IO_URING_OP_SUPPORTED;
+ 	probe->ops[1].resv2 = 0xdeadc0de;
+ 
+-	probe->ops[2].op = 33;
++	probe->ops[2].op = 34;
+ 	probe->ops[2].resv = 0xaf;
+ 	probe->ops[2].flags = 0xbeef;
+ 	probe->ops[2].resv2 = 0;
+@@ -245,22 +245,22 @@
+ 	       ", {last_op=IORING_OP_EPOLL_CTL, ops_len=%hhu"
+ 	       ", resv2=[0, %#x, 0], ops=["
+ 	       "{op=IORING_OP_NOP, resv=0xde, flags=0, resv2=0xbeefface}, "
+-	       "{op=IORING_OP_REMOVE_BUFFERS, flags=IO_URING_OP_SUPPORTED"
++	       "{op=IORING_OP_TEE, flags=IO_URING_OP_SUPPORTED"
+ 	       ", resv2=0xdeadc0de}, "
+-	       "{op=33 /* IORING_OP_??? */, resv=0xaf"
++	       "{op=34 /* IORING_OP_??? */, resv=0xaf"
+ 	       ", flags=IO_URING_OP_SUPPORTED|0xbeee}, "
+ 	       "{op=254 /* IORING_OP_??? */"
+ 	       ", flags=0xc0de /* IO_URING_OP_??? */}]}, 4) = %s\n",
+ 	       fd_null, path_null, probe->ops_len, probe->resv2[1], errstr);
+ 
+-	probe->last_op = 33;
++	probe->last_op = 34;
+ 	probe->resv2[1] = 0;
+ 	fill_memory_ex(probe->ops, sizeof(probe->ops[0]) * (DEFAULT_STRLEN + 1),
+ 		    0x40, 0x80);
+ 	sys_io_uring_register(fd_null, IORING_REGISTER_PROBE, probe,
+ 			      DEFAULT_STRLEN + 1);
+ 	printf("io_uring_register(%u<%s>, IORING_REGISTER_PROBE"
+-	       ", {last_op=33 /* IORING_OP_??? */, ops_len=%hhu, ops=[",
++	       ", {last_op=34 /* IORING_OP_??? */, ops_len=%hhu, ops=[",
+ 	       fd_null, path_null, probe->ops_len);
+ 	for (size_t i = 0; i < DEFAULT_STRLEN; i++) {
+ 		printf("%s{op=%u /* IORING_OP_??? */, resv=%#hhx"
+Index: strace-5.7/xlat/uring_ops.h
+===================================================================
+--- strace-5.7.orig/xlat/uring_ops.h	2020-11-09 04:44:38.313057237 +0100
++++ strace-5.7/xlat/uring_ops.h	2020-11-09 04:47:01.835829135 +0100
+@@ -234,6 +234,13 @@
+ #else
+ # define IORING_OP_REMOVE_BUFFERS 32
+ #endif
++#if defined(IORING_OP_TEE) || (defined(HAVE_DECL_IORING_OP_TEE) && HAVE_DECL_IORING_OP_TEE)
++DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
++static_assert((IORING_OP_TEE) == (33), "IORING_OP_TEE != 33");
++DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
++#else
++# define IORING_OP_TEE 33
++#endif
+ 
+ #ifndef XLAT_MACROS_ONLY
+ 
+@@ -343,6 +350,9 @@
+  [IORING_OP_REMOVE_BUFFERS] = XLAT(IORING_OP_REMOVE_BUFFERS),
+  #define XLAT_VAL_32 ((unsigned) (IORING_OP_REMOVE_BUFFERS))
+  #define XLAT_STR_32 STRINGIFY(IORING_OP_REMOVE_BUFFERS)
++ [IORING_OP_TEE] = XLAT(IORING_OP_TEE),
++ #define XLAT_VAL_33 ((unsigned) (IORING_OP_TEE))
++ #define XLAT_STR_33 STRINGIFY(IORING_OP_TEE)
+ };
+ static
+ const struct xlat uring_ops[1] = { {
+@@ -449,6 +459,9 @@
+ #  ifdef XLAT_VAL_32
+   | XLAT_VAL_32
+ #  endif
++#  ifdef XLAT_VAL_33
++  | XLAT_VAL_33
++#  endif
+   ,
+  .flags_strsz = 0
+ #  ifdef XLAT_STR_0
+@@ -550,6 +563,9 @@
+ #  ifdef XLAT_STR_32
+   + sizeof(XLAT_STR_32)
+ #  endif
++#  ifdef XLAT_STR_33
++  + sizeof(XLAT_STR_33)
++#  endif
+   ,
+ } };
+ 
+@@ -619,6 +635,8 @@
+ #  undef XLAT_VAL_31
+ #  undef XLAT_STR_32
+ #  undef XLAT_VAL_32
++#  undef XLAT_STR_33
++#  undef XLAT_VAL_33
+ # endif /* !IN_MPERS */
+ 
+ #endif /* !XLAT_MACROS_ONLY */
diff --git a/SOURCES/0118-types-skip-field-lines-that-start-with-comments.patch b/SOURCES/0118-types-skip-field-lines-that-start-with-comments.patch
new file mode 100644
index 0000000..b9a37cd
--- /dev/null
+++ b/SOURCES/0118-types-skip-field-lines-that-start-with-comments.patch
@@ -0,0 +1,84 @@
+From b0a361c0a9095b396ff7100203c767ec9ffd2cfa Mon Sep 17 00:00:00 2001
+From: "Dmitry V. Levin" <ldv@altlinux.org>
+Date: Tue, 16 Jun 2020 08:00:00 +0000
+Subject: [PATCH] types: skip field lines that start with comments
+
+This allows to exclude certain fields from type checks by placing
+comments at the beginning of the corresponding lines.
+
+* types/find_last_type_fields.awk: Skip lines starting with spaces
+followed by "/".
+---
+ types/find_last_type_fields.awk | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+Index: strace-5.7/types/find_last_type_fields.awk
+===================================================================
+--- strace-5.7.orig/types/find_last_type_fields.awk	2020-01-21 19:02:38.000000000 +0100
++++ strace-5.7/types/find_last_type_fields.awk	2020-11-09 04:47:06.976785148 +0100
+@@ -17,7 +17,7 @@
+ 		print a[1] "." last_field
+ 		next
+ 	}
+-	if (match($0, /^[[:space:]]+[^];:[]+[[:space:]]+([^][:space:];:[]+)(\[[^];:[]*\])?;.*$/, a)) {
++	if (match($0, /^[[:space:]]+[^];[:space:]:\/[][^];:[]*[[:space:]]+([^][:space:];:[]+)(\[[^];:[]*\])?;.*$/, a)) {
+ 		last_field = a[1]
+ 		next
+ 	}
+Index: strace-5.7/types/check-io_uring.c
+===================================================================
+--- strace-5.7.orig/types/check-io_uring.c	2020-11-09 04:47:06.977785139 +0100
++++ strace-5.7/types/check-io_uring.c	2020-11-09 04:49:10.033732186 +0100
+@@ -14,13 +14,13 @@
+ #endif /* HAVE_STRUCT_IO_SQRING_OFFSETS */
+ 
+ #ifdef HAVE_STRUCT_IO_CQRING_OFFSETS
+-# ifdef HAVE_STRUCT_IO_CQRING_OFFSETS_RESV
++# ifdef HAVE_STRUCT_IO_CQRING_OFFSETS_CQES
+ static_assert(sizeof(struct io_cqring_offsets) == sizeof(struct_io_cqring_offsets),
+       "struct io_cqring_offsets size mismatch, please update the decoder or fix the kernel");
+ # else
+-static_assert(sizeof(struct io_cqring_offsets) <= offsetof(struct_io_cqring_offsets, resv),
++static_assert(sizeof(struct io_cqring_offsets) <= offsetof(struct_io_cqring_offsets, cqes),
+ "struct io_cqring_offsets size mismatch, please update the decoder or fix the kernel");
+-# endif /* HAVE_STRUCT_IO_CQRING_OFFSETS_RESV */
++# endif /* HAVE_STRUCT_IO_CQRING_OFFSETS_CQES */
+ #endif /* HAVE_STRUCT_IO_CQRING_OFFSETS */
+ 
+ #ifdef HAVE_STRUCT_IO_URING_PARAMS
+Index: strace-5.7/config.h.in
+===================================================================
+--- strace-5.7.orig/config.h.in	2020-11-09 04:47:06.980785114 +0100
++++ strace-5.7/config.h.in	2020-11-09 04:50:11.871203054 +0100
+@@ -2596,8 +2596,8 @@
+ /* Define to 1 if the system has the type `struct io_cqring_offsets'. */
+ #undef HAVE_STRUCT_IO_CQRING_OFFSETS
+ 
+-/* Define to 1 if `resv' is a member of `struct io_cqring_offsets'. */
+-#undef HAVE_STRUCT_IO_CQRING_OFFSETS_RESV
++/* Define to 1 if `cqes' is a member of `struct io_cqring_offsets'. */
++#undef HAVE_STRUCT_IO_CQRING_OFFSETS_CQES
+ 
+ /* Define to 1 if the system has the type `struct io_sqring_offsets'. */
+ #undef HAVE_STRUCT_IO_SQRING_OFFSETS
+Index: strace-5.7/configure
+===================================================================
+--- strace-5.7.orig/configure	2020-11-09 04:47:06.988785045 +0100
++++ strace-5.7/configure	2020-11-09 04:51:12.500684263 +0100
+@@ -13475,13 +13475,13 @@
+ #define HAVE_STRUCT_IO_CQRING_OFFSETS 1
+ _ACEOF
+ 
+-ac_fn_c_check_member "$LINENO" "struct io_cqring_offsets" "resv" "ac_cv_member_struct_io_cqring_offsets_resv" "$ac_includes_default
++ac_fn_c_check_member "$LINENO" "struct io_cqring_offsets" "cqes" "ac_cv_member_struct_io_cqring_offsets_cqes" "$ac_includes_default
+ #include <linux/io_uring.h>
+ "
+-if test "x$ac_cv_member_struct_io_cqring_offsets_resv" = xyes; then :
++if test "x$ac_cv_member_struct_io_cqring_offsets_cqes" = xyes; then :
+ 
+ cat >>confdefs.h <<_ACEOF
+-#define HAVE_STRUCT_IO_CQRING_OFFSETS_RESV 1
++#define HAVE_STRUCT_IO_CQRING_OFFSETS_CQES 1
+ _ACEOF
+ 
+ 
diff --git a/SOURCES/0201-limit-qual_fault-scope-on-aarch64.patch b/SOURCES/0201-limit-qual_fault-scope-on-aarch64.patch
deleted file mode 100644
index 49c2e90..0000000
--- a/SOURCES/0201-limit-qual_fault-scope-on-aarch64.patch
+++ /dev/null
@@ -1,42 +0,0 @@
-Limit the scope of qual_fault.tests on aarch64 as otherwise it takes
-unacceptable amount of time on available builders (more than an hour).
-Index: strace-4.24/tests/qual_fault.test
-===================================================================
---- strace-4.24.orig/tests/qual_fault.test	2019-06-13 17:37:10.708269613 +0200
-+++ strace-4.24/tests/qual_fault.test	2019-06-13 17:41:29.358829506 +0200
-@@ -75,18 +75,32 @@
- 	done
- }
- 
--for err in '' ENOSYS 22 einval; do
-+
-+case "$STRACE_ARCH" in
-+	aarch64)
-+	NUMBERS1='2'
-+	NUMBERS2='3'
-+	ERRS='EnoSys 22'
-+	;;
-+	*)
-+	ERRS='ENOSYS 22 einval'
-+	NUMBERS1='1 2 3 5 7 11'
-+	NUMBERS2='1 2 3 5 7 11'
-+	;;
-+esac
-+
-+for err in '' $(echo $ERRS); do
- 	for fault in writev desc,51; do
- 		check_fault_injection \
- 			writev $fault "$err" '' '' 1 -efault=chdir
- 		check_fault_injection \
- 			writev $fault "$err" '' '' 1 -efault=chdir -efault=none
--		for F in 1 2 3 5 7 11; do
-+		for F in $(echo $NUMBERS1); do
- 			check_fault_injection \
- 				writev $fault "$err" $F '' 1
- 			check_fault_injection \
- 				writev $fault "$err" $F + 1
--			for S in 1 2 3 5 7 11; do
-+			for S in $(echo $NUMBERS2); do
- 				check_fault_injection \
- 					writev $fault "$err" $F $S 1
- 				check_fault_injection \
diff --git a/SOURCES/2001-limit-qual_fault-scope-on-aarch64.patch b/SOURCES/2001-limit-qual_fault-scope-on-aarch64.patch
new file mode 100644
index 0000000..a1e42f3
--- /dev/null
+++ b/SOURCES/2001-limit-qual_fault-scope-on-aarch64.patch
@@ -0,0 +1,60 @@
+Limit the scope of qual_fault.tests on aarch64 as otherwise it takes
+unacceptable amount of time on available builders (more than an hour).
+Index: strace-5.7/tests/qual_fault.test
+===================================================================
+--- strace-5.7.orig/tests/qual_fault.test	2020-06-02 10:41:25.870177356 +0200
++++ strace-5.7/tests/qual_fault.test	2020-06-02 10:48:33.284302800 +0200
+@@ -83,19 +83,35 @@
+ 	done
+ }
+ 
+-for err in '' ENOSYS 22 einval; do
++
++case "$STRACE_ARCH" in
++	aarch64)
++	ERRS='EnoSys 22'
++	NUMBERS1='2'
++	NUMBERS2='3'
++	NUMBERS3='5'
++	;;
++	*)
++	ERRS='ENOSYS 22 einval'
++	NUMBERS1='1 2 3 5 7 11'
++	NUMBERS2='1 2 3 5 7 11'
++	NUMBERS3='1 2 3 5 7 11'
++	;;
++esac
++
++for err in '' $(echo $ERRS); do
+ 	for fault in writev desc,51; do
+ 		check_fault_injection \
+ 			writev $fault "$err" '' '' '' 1 -efault=chdir
+ 		check_fault_injection \
+ 			writev $fault "$err" '' '' '' 1 -efault=chdir -efault=none
+-		for F in 1 2 3 5 7 11; do
++		for F in $(echo $NUMBERS1); do
+ 			check_fault_injection \
+ 				writev $fault "$err" $F '' '' 1
+ 			check_fault_injection \
+ 				writev $fault "$err" $F '' + 1
+ 
+-			for L in 1 2 3 5 7 11; do
++			for L in $(echo $NUMBERS2); do
+ 				[ "$L" -ge "$F" ] ||
+ 					continue
+ 				check_fault_injection \
+@@ -104,12 +119,12 @@
+ 					writev $fault "$err" $F $L + 1
+ 			done
+ 
+-			for S in 1 2 3 5 7 11; do
++			for S in $(echo $NUMBERS2); do
+ 				check_fault_injection \
+ 					writev $fault "$err" $F '' $S 1
+ 				check_fault_injection \
+ 					writev $fault "$err" $F '' $S 4
+-				for L in 1 2 3 5 7 11; do
++				for L in $(echo $NUMBERS3); do
+ 					[ "$L" -ge "$F" ] ||
+ 						continue
+ 					check_fault_injection \
diff --git a/SOURCES/2003-undef-ARRAY_SIZE.patch b/SOURCES/2003-undef-ARRAY_SIZE.patch
new file mode 100644
index 0000000..e4e87bb
--- /dev/null
+++ b/SOURCES/2003-undef-ARRAY_SIZE.patch
@@ -0,0 +1,17 @@
+Index: strace-5.7/unwind.c
+===================================================================
+--- strace-5.7.orig/unwind.c	2018-12-10 01:00:00.000000000 +0100
++++ strace-5.7/unwind.c	2020-06-02 11:13:42.777871147 +0200
+@@ -9,6 +9,12 @@
+ #include "unwind.h"
+ 
+ #ifdef USE_DEMANGLE
++/*
++ * demangle.h defines ARRAY_SIZE without proper guard, and its definition
++ * is "good enough" for us.
++ */
++#undef ARRAY_SIZE
++
+ # if defined HAVE_DEMANGLE_H
+ #  include <demangle.h>
+ # elif defined HAVE_LIBIBERTY_DEMANGLE_H
diff --git a/SPECS/strace.spec b/SPECS/strace.spec
index eb2a476..ef2fb9d 100644
--- a/SPECS/strace.spec
+++ b/SPECS/strace.spec
@@ -1,6 +1,6 @@
 Summary: Tracks and displays system calls associated with a running process
 Name: strace
-Version: 5.1
+Version: 5.7
 Release: 1%{?dist}
 # The test suite is GPLv2+, all the rest is LGPLv2.1+.
 License: LGPL-2.1+ and GPL-2.0+
@@ -13,10 +13,10 @@ BuildRequires: pkgconfig(bluez)
 BuildRequires: elfutils-devel binutils-devel
 
 ## Reported by covscan
-# v5.2-3-g7ada13f "evdev: avoid bit vector decoding on non-successful and 0 return codes"
-Patch30: 0030-evdev-avoid-bit-vector-decoding-on-non-successful-an.patch
-# v5.2-4-g96194ed "evdev: fix array size calculation in decode_bitset_"
-Patch31: 0031-evdev-fix-array-size-calculation-in-decode_bitset_.patch
+## v5.2-3-g7ada13f "evdev: avoid bit vector decoding on non-successful and 0 return codes"
+#Patch30: 0030-evdev-avoid-bit-vector-decoding-on-non-successful-an.patch
+## v5.2-4-g96194ed "evdev: fix array size calculation in decode_bitset_"
+#Patch31: 0031-evdev-fix-array-size-calculation-in-decode_bitset_.patch
 
 ### Pre-requisite for "tests: test evdev bitset decoding more thoroughly"
 ## v4.25~89 "tests: check decoding of successful evdev ioctl"
@@ -24,8 +24,8 @@ Patch31: 0031-evdev-fix-array-size-calculation-in-decode_bitset_.patch
 
 ## Test for patches "evdev: avoid bit vector decoding on non-successful and 0
 ## return codes" and "evdev: fix array size calculation in decode_bitset_"
-# v5.2-5-gcdd8206 "tests: test evdev bitset decoding more thoroughly"
-Patch33: 0033-tests-test-evdev-bitset-decoding-more-thoroughly.patch
+## v5.2-5-gcdd8206 "tests: test evdev bitset decoding more thoroughly"
+#Patch33: 0033-tests-test-evdev-bitset-decoding-more-thoroughly.patch
 
 ### https://bugzilla.redhat.com/1747475 https://bugzilla.redhat.com/1747514
 ## v4.26~65 "s390x: beautify sthyi data tail prints"
@@ -33,14 +33,14 @@ Patch33: 0033-tests-test-evdev-bitset-decoding-more-thoroughly.patch
 
 ## Reported by covscan (https://bugzilla.redhat.com/1747524
 ## https://bugzilla.redhat.com/1747526 https://bugzilla.redhat.com/1747530)
-# v5.2-84-g91281fec "v4l2: avoid shifting left a signed number by 31 bit"
-Patch35: 0035-v4l2-avoid-shifting-left-a-signed-number-by-31-bit.patch
-# v5.2~21 "syscall.c: avoid infinite loop in subcalls parsing"
-Patch36: 0036-syscall.c-avoid-infinite-loop-in-subcalls-parsing.patch
-# v5.2~19 "kvm: avoid bogus vcpu_info assignment in vcpu_register"
-Patch37: 0037-kvm-avoid-bogus-vcpu_info-assignment-in-vcpu_registe.patch
-# v5.4~97 "xlat: use unsgined type for mount_flags fallback values"
-Patch38: 0038-xlat-use-unsgined-type-for-mount_flags-fallback-valu.patch
+## v5.2-84-g91281fec "v4l2: avoid shifting left a signed number by 31 bit"
+#Patch35: 0035-v4l2-avoid-shifting-left-a-signed-number-by-31-bit.patch
+## v5.2~21 "syscall.c: avoid infinite loop in subcalls parsing"
+#Patch36: 0036-syscall.c-avoid-infinite-loop-in-subcalls-parsing.patch
+## v5.2~19 "kvm: avoid bogus vcpu_info assignment in vcpu_register"
+#Patch37: 0037-kvm-avoid-bogus-vcpu_info-assignment-in-vcpu_registe.patch
+## v5.4~97 "xlat: use unsgined type for mount_flags fallback values"
+#Patch38: 0038-xlat-use-unsgined-type-for-mount_flags-fallback-valu.patch
 
 ## Missing stack traces on attach (https://bugzilla.redhat.com/1788636)
 ## RHEL 7: https://bugzilla.redhat.com/1790052
@@ -48,24 +48,24 @@ Patch38: 0038-xlat-use-unsgined-type-for-mount_flags-fallback-valu.patch
 ## RHEL 6 DTS: https://bugzilla.redhat.com/1790058
 ## RHEL 7 DTS: https://bugzilla.redhat.com/1790057
 ## RHEL 8 DTS: https://bugzilla.redhat.com/1790054
-# v5.4-18-g69b2c33 "unwind-libdw: fix initialization of libdwfl cache"
-Patch39: 0039-unwind-libdw-fix-initialization-of-libdwfl-cache.patch
-# v5.4-27-g35e080a "syscall: do not capture stack trace while the tracee executes strace code"
-Patch40: 0040-syscall-do-not-capture-stack-trace-while-the-tracee-.patch
-# v5.4-63-g8e515c7 "tests: add strace-k-p test"
-Patch41: 0041-tests-add-strace-k-p-test.patch
+## v5.4-18-g69b2c33 "unwind-libdw: fix initialization of libdwfl cache"
+#Patch39: 0039-unwind-libdw-fix-initialization-of-libdwfl-cache.patch
+## v5.4-27-g35e080a "syscall: do not capture stack trace while the tracee executes strace code"
+#Patch40: 0040-syscall-do-not-capture-stack-trace-while-the-tracee-.patch
+## v5.4-63-g8e515c7 "tests: add strace-k-p test"
+#Patch41: 0041-tests-add-strace-k-p-test.patch
 
 ## https://bugzilla.redhat.com/1746885
-# v5.2-92-gc108f0b "sockaddr: properly decode sockaddr_hci addresses without hci_channel"
-Patch42: 0042-sockaddr-properly-decode-sockaddr_hci-addresses-with.patch
+## v5.2-92-gc108f0b "sockaddr: properly decode sockaddr_hci addresses without hci_channel"
+#Patch42: 0042-sockaddr-properly-decode-sockaddr_hci-addresses-with.patch
 
 ## Some ipc tests from strace internal testsuite occasionally fail
 ## https://bugzilla.redhat.com/1795251 https://bugzilla.redhat.com/1795261
 ## https://bugzilla.redhat.com/1794490 https://bugzilla.redhat.com/1795273
-# v5.3~102 "tests: fix expected output for some ipc tests"
-Patch43: 0043-tests-fix-expected-output-for-some-ipc-tests.patch
-# v5.4~49 "tests: fix -a argument in ipc_msgbuf-Xraw test"
-Patch44: 0044-tests-fix-a-argument-in-ipc_msgbuf-Xraw-test.patch
+## v5.3~102 "tests: fix expected output for some ipc tests"
+#Patch43: 0043-tests-fix-expected-output-for-some-ipc-tests.patch
+## v5.4~49 "tests: fix -a argument in ipc_msgbuf-Xraw test"
+#Patch44: 0044-tests-fix-a-argument-in-ipc_msgbuf-Xraw-test.patch
 
 ### Update bpf decoder, as bpf-obj_get_info_by_fd-prog-v.gen.test has started
 ### to fail after BPF rebase in RHEL 8.2 kernel.
@@ -86,20 +86,94 @@ Patch44: 0044-tests-fix-a-argument-in-ipc_msgbuf-Xraw-test.patch
 ## v5.1~6 "tests: robustify bpf-obj_get_info_by_fd test against future kernels"
 #Patch52: 0052-tests-robustify-bpf-obj_get_info_by_fd-test-against-.patch
 
+## Patches 53-86 were on DTS 9 for
+## "some devtoolset-9-strace internal tests fail on rhel-alt-7.6"
+## https://bugzilla.redhat.com/1758201
+
+## Update io_uring(2) decoder (https://bugzilla.redhat.com/1853011)
+## v5.5~65 "io_uring: do not depend on kernel header definitions"
+#Patch87:  0087-io_uring-do-not-depend-on-kernel-header-definitions.patch
+## v5.5~64 "io_uring: de-indent the switch case statements"
+#Patch88:  0088-io_uring-de-indent-the-switch-case-statements.patch
+## v5.3~15 "Add support for printing local arrays to print_array"
+#Patch89:  0089-Add-support-for-printing-local-arrays-to-print_array.patch
+## v5.5~63 "Rework interface for printing local arrays"
+#Patch90:  0090-Rework-interface-for-printing-local-arrays.patch
+## v5.5~62 "io_uring: decode io_uring_params.resv with IS_ARRAY_ZERO and PRINT_FIELD_ARRAY"
+#Patch91:  0091-io_uring-decode-io_uring_params.resv-with-IS_ARRAY_Z.patch
+## v5.5~61 "io_uring: print io_sqring_offsets and io_cqring_offsets reserved fields"
+#Patch92:  0092-io_uring-print-io_sqring_offsets-and-io_cqring_offse.patch
+## v5.5~60 "io_uring: add support for IORING_REGISTER_EVENTFD and IORING_UNREGISTER_EVENTFD"
+#Patch93:  0093-io_uring-add-support-for-IORING_REGISTER_EVENTFD-and.patch
+## v5.5~59 "io_uring: implement decoding of struct io_uring_params.features"
+#Patch94:  0094-io_uring-implement-decoding-of-struct-io_uring_param.patch
+## v5.5~58 "xlat: add IORING_SETUP_CQSIZE to uring_setup_flags"
+#Patch95:  0095-xlat-add-IORING_SETUP_CQSIZE-to-uring_setup_flags.patch
+## v5.5~42 "io_uring: check struct io_* types automatically"
+#Patch96:  0096-io_uring-check-struct-io_-types-automatically.patch
+## v5.5~41 "io_uring: add support for IORING_REGISTER_FILES_UPDATE"
+#Patch97:  0097-io_uring-add-support-for-IORING_REGISTER_FILES_UPDAT.patch
+## v5.5~27 "xlat: update uring_setup_features constants"
+#Patch98:  0098-xlat-update-uring_setup_features-constants.patch
+## v5.5~26 "xlat: add IORING_SETUP_CLAMP to uring_setup_flags"
+#Patch99:  0099-xlat-add-IORING_SETUP_CLAMP-to-uring_setup_flags.patch
+## v5.5~25 "io_uring: add support of wq_fd field decoding to io_uring_setup"
+#Patch100: 0100-io_uring-add-support-of-wq_fd-field-decoding-to-io_u.patch
+## v5.6~190 "tests/io_uring_register: properly handle big endian architectures"
+#Patch101: 0101-tests-io_uring_register-properly-handle-big-endian-a.patch
+## v5.6~157 "io_uring: decode IORING_REGISTER_EVENTFD_ASYNC io_uring_reginster command"
+#Patch102: 0102-io_uring-decode-IORING_REGISTER_EVENTFD_ASYNC-io_uri.patch
+## v5.6~95 "io_uring: de-indent some code in io_uring_setup decoder"
+#Patch103: 0103-io_uring-de-indent-some-code-in-io_uring_setup-decod.patch
+## v5.3~29 "defs.h: introduce {opt,dispatch}_{word,klong}size"
+#Patch104: 0104-defs.h-introduce-opt-dispatch-_-word-klong-size.patch
+## v5.3~9 "Handle xlat verbosity in evdev bitset printing"
+#Patch105: 0105-Handle-xlat-verbosity-in-evdev-bitset-printing.patch
+## v5.6~94 "io_uring: support IORING_REGISTER_PROBE io_uring_register command"
+#Patch106: 0106-io_uring-support-IORING_REGISTER_PROBE-io_uring_regi.patch
+## v5.6~93 "io_uring: add support for IORING_{UN,}REGISTER_PERSONALITY commands"
+#Patch107: 0107-io_uring-add-support-for-IORING_-UN-REGISTER_PERSONA.patch
+## v5.6~17 "tests: fix clang compilation warning"
+#Patch108: 0108-tests-fix-clang-compilation-warning.patch
+## v5.6~10 "tests: workaround clang compilation warning"
+#Patch109: 0109-tests-workaround-clang-compilation-warning.patch
+## v5.7~87 "xlat: add IORING_FEAT_FAST_POLL to uring_setup_features"
+#Patch110: 0110-xlat-add-IORING_FEAT_FAST_POLL-to-uring_setup_featur.patch
+## v5.7~85 "xlat: update uring_ops"
+#Patch111: 0111-xlat-update-uring_ops.patch
+## v5.7~68 "tests: correct error message in io_uring_register test"
+#Patch112: 0112-tests-correct-error-message-in-io_uring_register-tes.patch
+# v5.8~58 "io_uring: Remove struct io_cqring_offsets compile time asserts"
+Patch113: 0113-io_uring-Remove-struct-io_cqring_offsets-compile-tim.patch
+# v5.8~57 "io_uring: Add io_cqring_offset flags"
+Patch114: 0114-io_uring-Add-io_cqring_offset-flags.patch
+# v5.8~47 "xlat: update IORING_* constants"
+Patch115: 0115-xlat-update-IORING_-constants.patch
+## v5.5~71 "macros.h: introduce sizeof_field macro"
+#Patch116: 0116-macros.h-introduce-sizeof_field-macro.patch
+## v5.5~49 "types: new infrastructure for automatic checking of structure types"
+#Patch117: 0117-types-new-infrastructure-for-automatic-checking-of-s.patch
+# v5.8~59 "types: skip field lines that start with comments"
+Patch118: 0118-types-skip-field-lines-that-start-with-comments.patch
+
+
 ### Wire up rseq and kexec_file_load in order to avoid kexec_file_load
 ### test failure on aarch64. Addresses https://bugzilla.redhat.com/1676045
 ### ("strace: FTBFS in Fedora rawhide/f30").
 ## v5.0~62 "Wire up rseq syscall on architectures that use generic unistd.h"
-#Patch100: 0100-Wire-up-rseq-syscall-on-architectures-that-use-gener.patch
+#Patch1000: 1000-Wire-up-rseq-syscall-on-architectures-that-use-gener.patch
 ## v5.0~61 "Wire up kexec_file_load syscall on architectures that use generic unistd.h"
-#Patch101: 0101-Wire-up-kexec_file_load-syscall-on-architectures-tha.patch
+#Patch1001: 1001-Wire-up-kexec_file_load-syscall-on-architectures-tha.patch
 
 ### RHEL7-only: headers on some builders do not provide O_TMPFILE
-#Patch200: 0200-strace-provide-O_TMPFILE-fallback-definition.patch
+#Patch2000: 2000-strace-provide-O_TMPFILE-fallback-definition.patch
 ## RHEL-only: aarch64 brew builders are extremely slow on qual_fault.test
-Patch201: 0201-limit-qual_fault-scope-on-aarch64.patch
+Patch2001: 2001-limit-qual_fault-scope-on-aarch64.patch
 ### RHEL8.2-only: disable ksysent test due to missing rebase
-#Patch202: 0202-disable-ksysent-on-8.2.patch
+#Patch2002: 2002-disable-ksysent-on-8.2.patch
+## RHEL-only: avoid ARRAY_SIZE macro re-definition in libiberty.h
+Patch2003: 2003-undef-ARRAY_SIZE.patch
+
 
 # We no longer need to build a separate strace32 binary, but we don't want
 # to break existing strace32 users' workflows.
@@ -109,7 +183,8 @@ Patch201: 0201-limit-qual_fault-scope-on-aarch64.patch
 %define _isa_compat %{?__isa_name:(%{__isa_name}-32)}%{!?__isa:%{nil}}
 %define evr %{?epoch:%{epoch}:}%{version}-%{release}
 Provides:  strace32 = %{evr}
-Obsoletes: strace32 < %{version} strace32%{_isa_compat} < %{version}
+# strace32 was a real package before strace-4.24 in RHEL
+Obsoletes: strace32 < 4.24
 %endif
 
 %description
@@ -125,21 +200,21 @@ received by a process.
 %prep
 %setup -q
 
-%patch30 -p1
-%patch31 -p1
+#%patch30 -p1
+#%patch31 -p1
 #%patch32 -p1
-%patch33 -p1
+#%patch33 -p1
 #%patch34 -p1
-%patch35 -p1
-%patch36 -p1
-%patch37 -p1
-%patch38 -p1
-%patch39 -p1
-%patch40 -p1
-%patch41 -p1
-%patch42 -p1
-%patch43 -p1
-%patch44 -p1
+#%patch35 -p1
+#%patch36 -p1
+#%patch37 -p1
+#%patch38 -p1
+#%patch39 -p1
+#%patch40 -p1
+#%patch41 -p1
+#%patch42 -p1
+#%patch43 -p1
+#%patch44 -p1
 #%patch45 -p1
 #%patch46 -p1
 #%patch47 -p1
@@ -148,13 +223,48 @@ received by a process.
 #%patch50 -p1
 #%patch51 -p1
 #%patch52 -p1
-
+#%patch87 -p1
+#%patch88 -p1
+#%patch89 -p1
+#%patch90 -p1
+#%patch91 -p1
+#%patch92 -p1
+#%patch93 -p1
+#%patch94 -p1
+#%patch95 -p1
+#%patch96 -p1
+#%patch97 -p1
+#%patch98 -p1
+#%patch99 -p1
 #%patch100 -p1
 #%patch101 -p1
-
-#%patch200 -p1
-%patch201 -p1
-#%patch202 -p1
+#%patch102 -p1
+#%patch103 -p1
+#%patch104 -p1
+#%patch105 -p1
+#%patch106 -p1
+#%patch107 -p1
+#%patch108 -p1
+#%patch109 -p1
+#%patch110 -p1
+#%patch111 -p1
+#%patch112 -p1
+%patch113 -p1
+%patch114 -p1
+%patch115 -p1
+#%patch116 -p1
+#%patch117 -p1
+%patch118 -p1
+
+#%patch1000 -p1
+#%patch1001 -p1
+
+#%patch2000 -p1
+%patch2001 -p1
+#%patch2002 -p1
+%patch2003 -p1
+
+chmod a+x tests/*.test
 
 echo -n %version-%release > .tarball-version
 echo -n 2020 > .year
@@ -231,6 +341,13 @@ echo 'END OF TEST SUITE INFORMATION'
 %{_mandir}/man1/*
 
 %changelog
+* Mon Nov 09 2020 Eugene Syromiatnikov <esyr@redhat.com> - 5.7-1
+- Rebase to v5.7; drop upstream patches on top of 5.1 (#1873229).
+
+* Mon Aug 24 2020 Eugene Syromiatnikov <esyr@redhat.com> - 5.1-2
+- Update io_uring(2) decoder (#1853011).
+- Fix "Obsoletes:" tag on s390x (#1852960).
+
 * Thu Jan 30 2020 Eugene Syromiatnikov <esyr@redhat.com> - 5.1-1
 - Rebase to strace 5.1 (#1777847).