commit aa8460e

Michael Forney  ·  2024-03-22 05:35:37 +0000 UTC
parent 34c8131
strace: Update to 6.8
13 files changed,  +140, -106
+1, -1
1@@ -1,3 +1,3 @@
2 /src
3-/strace-6.4.tar.xz
4+/strace-6.8.tar.xz
5 /tools.ninja
+9, -3
 1@@ -97,6 +97,7 @@ local srcs = paths[[src/(
 2 	bpf_sock_filter.c
 3 	btrfs.c
 4 	cacheflush.c
 5+	cachestat.c
 6 	capability.c
 7 	chdir.c
 8 	chmod.c
 9@@ -119,6 +120,7 @@ local srcs = paths[[src/(
10 	evdev_mpers.c
11 	eventfd.c
12 	execve.c
13+	exitkill.c
14 	fadvise.c
15 	fallocate.c
16 	fanotify.c
17@@ -149,7 +151,7 @@ local srcs = paths[[src/(
18 	fstatfs.c
19 	fstatfs64.c
20 	futex.c
21-	futex_waitv.c
22+	futex2.c
23 	gen/gen_hdio.c
24 	get_personality.c
25 	get_robust_list.c
26@@ -186,9 +188,12 @@ local srcs = paths[[src/(
27 	link.c
28 	lirc_ioctl.c
29 	listen.c
30+	listmount.c
31 	lookup_dcookie.c
32 	loop.c
33 	lseek.c
34+	lsm.c
35+	map_shadow_stack.c
36 	mem.c
37 	membarrier.c
38 	memfd_create.c
39@@ -316,6 +321,7 @@ local srcs = paths[[src/(
40 	stat64.c
41 	statfs.c
42 	statfs64.c
43+	statmount.c
44 	statx.c
45 	strauss.c
46 	string_to_uint.c
47@@ -381,8 +387,8 @@ file('bin/strace', '755', '$outdir/strace')
48 
49 build('sed', '$outdir/strace.1', '$srcdir/doc/strace.1.in', {
50 	expr={
51-		[[-e 's,@STRACE_MANPAGE_DATE@,2023-06-11,']],
52-		[[-e 's,@VERSION@,6.4,']],
53+		[[-e 's,@STRACE_MANPAGE_DATE@,2024-03-13,']],
54+		[[-e 's,@VERSION@,6.8,']],
55 		[[-e 's,@ENABLE_STACKTRACE_TRUE@,#,']],
56 		[[-e 's,@ENABLE_STACKTRACE_FALSE@,,']],
57 		[[-e 's,@ENABLE_SECONTEXT_TRUE@,#,']],
+4, -4
 1@@ -1,4 +1,4 @@
 2-From 14b52959359f69bc5806bbd8d8c44f72d912aa1a Mon Sep 17 00:00:00 2001
 3+From 79aac49a3d3953b6e62b477bd488c3b7237a5aee Mon Sep 17 00:00:00 2001
 4 From: Michael Forney <mforney@mforney.org>
 5 Date: Fri, 5 Jul 2019 20:52:24 -0700
 6 Subject: [PATCH] Don't return expression in void function
 7@@ -8,10 +8,10 @@ Subject: [PATCH] Don't return expression in void function
 8  1 file changed, 1 insertion(+), 1 deletion(-)
 9 
10 diff --git a/src/defs.h b/src/defs.h
11-index 846a7ae5a..d6b54a633 100644
12+index 89ec13fc5..465d58139 100644
13 --- a/src/defs.h
14 +++ b/src/defs.h
15-@@ -807,7 +807,7 @@ extern bool pathtrace_match_set(struct tcb *, struct path_set *,
16+@@ -824,7 +824,7 @@ extern bool pathtrace_match_set(struct tcb *, struct path_set *,
17  static inline void
18  pathtrace_select(const char *path)
19  {
20@@ -21,5 +21,5 @@ index 846a7ae5a..d6b54a633 100644
21  
22  static inline bool
23 -- 
24-2.37.3
25+2.44.0
26 
+26, -32
  1@@ -1,4 +1,4 @@
  2-From cdecbf8aee12f837e878a568814bb81550412b6b Mon Sep 17 00:00:00 2001
  3+From 268084161926ad4d1d110a3a5432e7ffd4e92fdf Mon Sep 17 00:00:00 2001
  4 From: Michael Forney <mforney@mforney.org>
  5 Date: Sat, 6 Jul 2019 01:33:01 -0700
  6 Subject: [PATCH] Use __typeof__ spelling of typeof
  7@@ -21,10 +21,10 @@ Subject: [PATCH] Use __typeof__ spelling of typeof
  8  14 files changed, 32 insertions(+), 32 deletions(-)
  9 
 10 diff --git a/src/bpf.c b/src/bpf.c
 11-index 7bdeb4f65..1e72f3e30 100644
 12+index bbcdceddd..690df570d 100644
 13 --- a/src/bpf.c
 14 +++ b/src/bpf.c
 15-@@ -1432,7 +1432,7 @@ BEGIN_BPF_CMD_DECODER(BPF_LINK_CREATE)
 16+@@ -1440,7 +1440,7 @@ BEGIN_BPF_CMD_DECODER(BPF_LINK_CREATE)
 17  			tprint_struct_next();
 18  			PRINT_FIELD_U(attr, target_btf_id);
 19  		}
 20@@ -33,7 +33,7 @@ index 7bdeb4f65..1e72f3e30 100644
 21  		break;
 22  
 23  	/* TODO: prog type == BPF_PROG_TYPE_TRACING */
 24-@@ -1448,7 +1448,7 @@ BEGIN_BPF_CMD_DECODER(BPF_LINK_CREATE)
 25+@@ -1456,7 +1456,7 @@ BEGIN_BPF_CMD_DECODER(BPF_LINK_CREATE)
 26  			    print_iter_info_array_member, 0);
 27  		tprint_struct_next();
 28  		PRINT_FIELD_U(attr, iter_info_len);
 29@@ -42,7 +42,7 @@ index 7bdeb4f65..1e72f3e30 100644
 30  		break;
 31  	}
 32  
 33-@@ -1460,7 +1460,7 @@ BEGIN_BPF_CMD_DECODER(BPF_LINK_CREATE)
 34+@@ -1468,7 +1468,7 @@ BEGIN_BPF_CMD_DECODER(BPF_LINK_CREATE)
 35  		tprint_struct_begin();
 36  		PRINT_FIELD_X(attr.perf_event, bpf_cookie);
 37  		tprint_struct_end();
 38@@ -51,7 +51,7 @@ index 7bdeb4f65..1e72f3e30 100644
 39  		break;
 40  
 41  	/* TODO: prog type == BPF_PROG_TYPE_KPROBE */
 42-@@ -1500,7 +1500,7 @@ BEGIN_BPF_CMD_DECODER(BPF_LINK_CREATE)
 43+@@ -1508,7 +1508,7 @@ BEGIN_BPF_CMD_DECODER(BPF_LINK_CREATE)
 44  			    &buf.cookie, sizeof(buf.cookie),
 45  			    tfetch_mem, print_xint_array_member, 0);
 46  		tprint_struct_end();
 47@@ -60,7 +60,7 @@ index 7bdeb4f65..1e72f3e30 100644
 48  		break;
 49  	}
 50  
 51-@@ -1510,7 +1510,7 @@ BEGIN_BPF_CMD_DECODER(BPF_LINK_CREATE)
 52+@@ -1518,7 +1518,7 @@ BEGIN_BPF_CMD_DECODER(BPF_LINK_CREATE)
 53  		 *     can pick up non-zero values in the union at the end
 54  		 *     of the link_create struct.
 55  		 */
 56@@ -128,10 +128,10 @@ index 31ee871b3..76d7a2bec 100644
 57  				    &info, sizeof(info), tfetch_mem,
 58  				    print_btrfs_ioctl_space_info, 0);
 59 diff --git a/src/defs.h b/src/defs.h
 60-index d6b54a633..d24b11884 100644
 61+index 465d58139..ae1d1d1dc 100644
 62 --- a/src/defs.h
 63 +++ b/src/defs.h
 64-@@ -1145,7 +1145,7 @@ print_local_array_ex(struct tcb *tcp,
 65+@@ -1162,7 +1162,7 @@ print_local_array_ex(struct tcb *tcp,
 66  # define print_local_array_upto(tcp_, start_addr_, upto_, print_func_)	     \
 67  	print_local_array_ex((tcp_), (start_addr_),			     \
 68  			     CLAMP((upto_), 0,				     \
 69@@ -140,7 +140,7 @@ index d6b54a633..d24b11884 100644
 70  			     sizeof((start_addr_)[0]), (print_func_),        \
 71  			     NULL, 0, NULL, NULL)
 72  
 73-@@ -2027,8 +2027,8 @@ scno_pers_is_valid(kernel_ulong_t scno, unsigned int pers)
 74+@@ -2045,8 +2045,8 @@ scno_pers_is_valid(kernel_ulong_t scno, unsigned int pers)
 75  
 76  # define ILOG2_ITER_(val_, ret_, bit_)					\
 77  	do {								\
 78@@ -178,27 +178,21 @@ index 7b51bc9f9..ee9a42754 100644
 79  			    tfetch_mem, print_fiemap_extent, 0);
 80  	}
 81 diff --git a/src/landlock.c b/src/landlock.c
 82-index d3ddb4edb..151bea7af 100644
 83+index 7ee44f84c..16a430de8 100644
 84 --- a/src/landlock.c
 85 +++ b/src/landlock.c
 86-@@ -19,7 +19,7 @@ print_landlock_ruleset_attr(struct tcb *tcp, const kernel_ulong_t addr,
 87+@@ -21,9 +21,9 @@ print_landlock_ruleset_attr(struct tcb *tcp, const kernel_ulong_t addr,
 88  {
 89- 	struct landlock_ruleset_attr attr;
 90+ 	struct landlock_ruleset_attr attr = { 0 };
 91+ 	const size_t min_attr_size =
 92+-		offsetofend(typeof(attr), handled_access_fs);
 93++		offsetofend(__typeof__(attr), handled_access_fs);
 94+ 	const size_t max_attr_size =
 95+-		offsetofend(typeof(attr), handled_access_net);
 96++		offsetofend(__typeof__(attr), handled_access_net);
 97  
 98--	if (size < offsetofend(typeof(attr), handled_access_fs)) {
 99-+	if (size < offsetofend(__typeof__(attr), handled_access_fs)) {
100+ 	if (size < min_attr_size) {
101  		printaddr(addr);
102- 		return;
103- 	}
104-@@ -31,7 +31,7 @@ print_landlock_ruleset_attr(struct tcb *tcp, const kernel_ulong_t addr,
105- 	PRINT_FIELD_FLAGS(attr, handled_access_fs, landlock_ruleset_access_fs,
106- 			  "LANDLOCK_ACCESS_FS_???");
107- 
108--	if (size > offsetofend(typeof(attr), handled_access_fs)) {
109-+	if (size > offsetofend(__typeof__(attr), handled_access_fs)) {
110- 		tprint_arg_next();
111- 		tprint_more_data_follows();
112- 	}
113 diff --git a/src/list.h b/src/list.h
114 index 4de4cb3be..f4ec11f0e 100644
115 --- a/src/list.h
116@@ -242,7 +236,7 @@ index 4de4cb3be..f4ec11f0e 100644
117  
118  #endif /* !STRACE_LIST_H */
119 diff --git a/src/macros.h b/src/macros.h
120-index f22be23c5..184f016b0 100644
121+index cb290c612..81cde400a 100644
122 --- a/src/macros.h
123 +++ b/src/macros.h
124 @@ -62,7 +62,7 @@
125@@ -255,10 +249,10 @@ index f22be23c5..184f016b0 100644
126  # ifndef offsetofend
127  #  define offsetofend(type_, member_)	\
128 diff --git a/src/print_fields.h b/src/print_fields.h
129-index eca389e7e..b97e86377 100644
130+index 09548ce21..6a7e76982 100644
131 --- a/src/print_fields.h
132 +++ b/src/print_fields.h
133-@@ -774,7 +774,7 @@ tprint_sysret_end(void)
134+@@ -792,7 +792,7 @@ tprint_sysret_end(void)
135  # define MAYBE_PRINT_FIELD_LEN(print_prefix_, where_, field_,		\
136  			len_, print_func_, ...)				\
137  	do {								\
138@@ -312,7 +306,7 @@ index 25f6e76c5..c62566800 100644
139  
140  /* session id is printed as 0x%x in libteec */
141 diff --git a/src/ubi.c b/src/ubi.c
142-index bd2d2811e..ff9f88cd0 100644
143+index 11a435b10..e75377783 100644
144 --- a/src/ubi.c
145 +++ b/src/ubi.c
146 @@ -76,7 +76,7 @@ static bool
147@@ -325,7 +319,7 @@ index bd2d2811e..ff9f88cd0 100644
148  	tprint_struct_begin();
149  	PRINT_FIELD_D(*p, vol_id);
150 diff --git a/tests/btrfs.c b/tests/btrfs.c
151-index d8ef87a96..321d3a25c 100644
152+index ab5bfae68..a3161875b 100644
153 --- a/tests/btrfs.c
154 +++ b/tests/btrfs.c
155 @@ -876,7 +876,7 @@ btrfs_print_tree_search_buf(struct btrfs_ioctl_search_key *key,
156@@ -351,5 +345,5 @@ index 20f92dd1d..aa6ecc8f5 100644
157  # define TYPEOF_FLOCK_OFF_T off_t
158  #endif
159 -- 
160-2.37.3
161+2.44.0
162 
+4, -4
 1@@ -1,4 +1,4 @@
 2-From 0355d08676cdc94354bd35f8d885984938645fb3 Mon Sep 17 00:00:00 2001
 3+From 75a23af067ff5390a47df1e877f68834241009b9 Mon Sep 17 00:00:00 2001
 4 From: Michael Forney <mforney@mforney.org>
 5 Date: Sat, 6 Jul 2019 01:40:36 -0700
 6 Subject: [PATCH] Make tcp_sysent a static inline function
 7@@ -10,10 +10,10 @@ operator without evaluating the macro argument multiple times.
 8  1 file changed, 6 insertions(+), 2 deletions(-)
 9 
10 diff --git a/src/defs.h b/src/defs.h
11-index d24b11884..60b9e3322 100644
12+index ae1d1d1dc..bbd8f6748 100644
13 --- a/src/defs.h
14 +++ b/src/defs.h
15-@@ -398,8 +398,12 @@ struct tcb {
16+@@ -402,8 +402,12 @@ struct tcb {
17  # define syscall_tampered_nofail(tcp) ((tcp)->flags & TCB_TAMPERED_NO_FAIL)
18  # define has_seccomp_filter(tcp)	((tcp)->flags & TCB_SECCOMP_FILTER)
19  
20@@ -29,5 +29,5 @@ index d24b11884..60b9e3322 100644
21  
22  # include "xlat.h"
23 -- 
24-2.37.3
25+2.44.0
26 
+19, -33
  1@@ -1,11 +1,10 @@
  2-From 463e94867f84bcb4dc85e18cb4304edea90d8659 Mon Sep 17 00:00:00 2001
  3+From 70c04478b105ab15e3e3a4bfcfcf96ace104b32e Mon Sep 17 00:00:00 2001
  4 From: Michael Forney <mforney@mforney.org>
  5 Date: Sat, 6 Jul 2019 01:54:05 -0700
  6 Subject: [PATCH] Avoid empty initializer lists
  7 
  8 ---
  9  src/bpf.c               | 4 ++--
 10- src/futex_waitv.c       | 2 +-
 11  src/sched.c             | 2 +-
 12  src/signal.c            | 2 +-
 13  src/strace.c            | 2 +-
 14@@ -17,13 +16,13 @@ Subject: [PATCH] Avoid empty initializer lists
 15  tests/timer_create.c    | 2 +-
 16  tests/wait4.c           | 2 +-
 17  tests/waitid.c          | 2 +-
 18- 13 files changed, 17 insertions(+), 17 deletions(-)
 19+ 12 files changed, 16 insertions(+), 16 deletions(-)
 20 
 21 diff --git a/src/bpf.c b/src/bpf.c
 22-index 1e72f3e30..7a6406687 100644
 23+index 690df570d..16f2b7d31 100644
 24 --- a/src/bpf.c
 25 +++ b/src/bpf.c
 26-@@ -48,7 +48,7 @@ bpf_cmd_decoder(struct tcb *const tcp,					\
 27+@@ -50,7 +50,7 @@ bpf_cmd_decoder(struct tcb *const tcp,					\
 28  #define BEGIN_BPF_CMD_DECODER(bpf_cmd)					\
 29  	static DECL_BPF_CMD_DECODER(decode_ ## bpf_cmd)			\
 30  	{								\
 31@@ -32,7 +31,7 @@ index 1e72f3e30..7a6406687 100644
 32  		size_t attr_size = bpf_cmd ## _struct_size;	\
 33  		const unsigned int len = MIN(size, attr_size);		\
 34  		memcpy(&attr, data, len);				\
 35-@@ -159,7 +159,7 @@ print_ebpf_prog(struct tcb *const tcp, const uint64_t addr, const uint32_t len)
 36+@@ -161,7 +161,7 @@ print_ebpf_prog(struct tcb *const tcp, const uint64_t addr, const uint32_t len)
 37  	if (abbrev(tcp)) {
 38  		printaddr(addr);
 39  	} else {
 40@@ -41,19 +40,6 @@ index 1e72f3e30..7a6406687 100644
 41  		struct ebpf_insn insn;
 42  
 43  		print_array(tcp, addr, len, &insn, sizeof(insn),
 44-diff --git a/src/futex_waitv.c b/src/futex_waitv.c
 45-index 512ee715d..340201aa3 100644
 46---- a/src/futex_waitv.c
 47-+++ b/src/futex_waitv.c
 48-@@ -49,7 +49,7 @@ print_waiter_array(struct tcb * const tcp, const kernel_ulong_t waiters,
 49- 		   const unsigned int nr_futexes)
 50- {
 51- 	struct futex_waitv buf;
 52--	struct print_waiter_data data = {};
 53-+	struct print_waiter_data data = {0};
 54- 
 55- 	print_array(tcp, waiters, nr_futexes, &buf, sizeof(buf),
 56- 		    tfetch_mem, print_waiter, &data);
 57 diff --git a/src/sched.c b/src/sched.c
 58 index 010366871..2dda5b872 100644
 59 --- a/src/sched.c
 60@@ -81,10 +67,10 @@ index 98f84d500..8680b10fb 100644
 61  		return;
 62  	tprints_string(sprintsigmask_n("", mask, len));
 63 diff --git a/src/strace.c b/src/strace.c
 64-index 5752177b7..9cd4ff461 100644
 65+index 649b8d160..9c87e34ed 100644
 66 --- a/src/strace.c
 67 +++ b/src/strace.c
 68-@@ -3693,7 +3693,7 @@ trace_syscall(struct tcb *tcp, unsigned int *sig)
 69+@@ -3891,7 +3891,7 @@ trace_syscall(struct tcb *tcp, unsigned int *sig)
 70  		syscall_entering_finish(tcp, res);
 71  		return res;
 72  	} else {
 73@@ -94,7 +80,7 @@ index 5752177b7..9cd4ff461 100644
 74  		if (res != 0) {
 75  			res = syscall_exiting_trace(tcp, &ts, res);
 76 diff --git a/tests/btrfs.c b/tests/btrfs.c
 77-index 321d3a25c..442377130 100644
 78+index a3161875b..88112e463 100644
 79 --- a/tests/btrfs.c
 80 +++ b/tests/btrfs.c
 81 @@ -313,7 +313,7 @@ btrfs_test_subvol_ioctls(void)
 82@@ -114,7 +100,7 @@ index 321d3a25c..442377130 100644
 83 +	struct btrfs_ioctl_vol_args vol_args = {0};
 84  
 85  	ioctl(-1, BTRFS_IOC_BALANCE_CTL, 1);
 86- 	printf("ioctl(-1, %s, %sBTRFS_BALANCE_CTL_PAUSE%s) = -1 EBADF (%m)\n",
 87+ 	printf("ioctl(-1, %s, %sBTRFS_BALANCE_CTL_PAUSE%s)" RVAL_EBADF,
 88 @@ -764,7 +764,7 @@ btrfs_print_defrag_range_args(struct btrfs_ioctl_defrag_range_args *args,
 89  static void
 90  btrfs_test_defrag_ioctls(void)
 91@@ -132,9 +118,9 @@ index 321d3a25c..442377130 100644
 92 +	struct btrfs_ioctl_space_args args = {0};
 93  
 94  	ioctl(-1, BTRFS_IOC_SPACE_INFO, NULL);
 95- 	printf("ioctl(-1, %s, NULL) = -1 EBADF (%m)\n",
 96+ 	printf("ioctl(-1, %s, NULL)" RVAL_EBADF,
 97 diff --git a/tests/clock_nanosleep.c b/tests/clock_nanosleep.c
 98-index 51bd0d7f7..a1053fd1e 100644
 99+index 13c3dad87..4638d492b 100644
100 --- a/tests/clock_nanosleep.c
101 +++ b/tests/clock_nanosleep.c
102 @@ -39,7 +39,7 @@ main(void)
103@@ -147,7 +133,7 @@ index 51bd0d7f7..a1053fd1e 100644
104  	const struct itimerval itv = {
105  		.it_interval.tv_usec = 222222,
106 diff --git a/tests/nanosleep.c b/tests/nanosleep.c
107-index 8ff6a86b8..6377f38ee 100644
108+index 743105e80..2a7ddff5c 100644
109 --- a/tests/nanosleep.c
110 +++ b/tests/nanosleep.c
111 @@ -53,7 +53,7 @@ main(void)
112@@ -160,7 +146,7 @@ index 8ff6a86b8..6377f38ee 100644
113  	const struct itimerval itv = { .it_value.tv_usec = 111111 };
114  
115 diff --git a/tests/restart_syscall.c b/tests/restart_syscall.c
116-index e4e83dc09..da83d1dc7 100644
117+index a9b1d2291..7fd7fb602 100644
118 --- a/tests/restart_syscall.c
119 +++ b/tests/restart_syscall.c
120 @@ -26,7 +26,7 @@ main(void)
121@@ -170,8 +156,8 @@ index e4e83dc09..da83d1dc7 100644
122 -	const sigset_t set = {};
123 +	const sigset_t set = {0};
124  	const struct sigaction act = { .sa_handler = SIG_IGN };
125- 	const struct itimerval itv = { .it_value.tv_usec = 111111 };
126- 	const struct timespec req = { .tv_nsec = 222222222 };
127+ 	const struct itimerval itv = { .it_interval.tv_usec = 22222,
128+ 				       .it_value.tv_usec = 11111 };
129 diff --git a/tests/setrlimit.c b/tests/setrlimit.c
130 index d4953f6f8..60d54fbd8 100644
131 --- a/tests/setrlimit.c
132@@ -186,12 +172,12 @@ index d4953f6f8..60d54fbd8 100644
133  			continue;
134  		rlimit[0] = libc_rlim.rlim_cur;
135 diff --git a/tests/timer_create.c b/tests/timer_create.c
136-index af91da0d3..a0a79f1ad 100644
137+index e4357b2cf..8d6cd415f 100644
138 --- a/tests/timer_create.c
139 +++ b/tests/timer_create.c
140 @@ -24,7 +24,7 @@ main(void)
141- 	printf("timer_create(CLOCK_REALTIME, NULL, NULL) = -1 %s (%m)\n",
142- 	       errno2name());
143+ 	printf("timer_create(CLOCK_REALTIME, NULL, NULL) = %s\n",
144+ 	       sprintrc(-1));
145  
146 -	int tid[4] = {};
147 +	int tid[4] = {0};
148@@ -225,5 +211,5 @@ index 1ed763840..fef941874 100644
149  
150  	assert(sigprocmask(SIG_BLOCK, &mask, NULL) == 0);
151 -- 
152-2.37.3
153+2.44.0
154 
+8, -8
 1@@ -1,4 +1,4 @@
 2-From 989bfd76544b4f62ade9e35d2476332934d27d86 Mon Sep 17 00:00:00 2001
 3+From c154f9dfaaccabc52af12ccabc86e9d0c6c18ada Mon Sep 17 00:00:00 2001
 4 From: Michael Forney <mforney@mforney.org>
 5 Date: Sun, 7 Jul 2019 21:25:13 -0700
 6 Subject: [PATCH] Avoid pointer arithmetic on `void *`
 7@@ -12,7 +12,7 @@ Subject: [PATCH] Avoid pointer arithmetic on `void *`
 8  5 files changed, 15 insertions(+), 13 deletions(-)
 9 
10 diff --git a/src/netlink_smc_diag.c b/src/netlink_smc_diag.c
11-index f7ff06b6b..dbf5be980 100644
12+index 74e78b966..c3a28a839 100644
13 --- a/src/netlink_smc_diag.c
14 +++ b/src/netlink_smc_diag.c
15 @@ -42,7 +42,7 @@ DECL_NETLINK_DIAG_DECODER(decode_smc_diag_req)
16@@ -24,7 +24,7 @@ index f7ff06b6b..dbf5be980 100644
17  			PRINT_FIELD_FLAGS(req, diag_ext,
18  					  smc_diag_extended_flags,
19  					  "1<<SMC_DIAG_\?\?\?-1");
20-@@ -250,7 +250,7 @@ DECL_NETLINK_DIAG_DECODER(decode_smc_diag_msg)
21+@@ -261,7 +261,7 @@ DECL_NETLINK_DIAG_DECODER(decode_smc_diag_msg)
22  	if (len >= sizeof(msg)) {
23  		if (!umoven_or_printaddr(tcp, addr + offset,
24  					 sizeof(msg) - offset,
25@@ -34,7 +34,7 @@ index f7ff06b6b..dbf5be980 100644
26  					 smc_states, "SMC_???");
27  			tprint_struct_next();
28 diff --git a/src/print_timespec.h b/src/print_timespec.h
29-index 9603a6bb6..f5f747c42 100644
30+index dc5f9d10c..87f7ff973 100644
31 --- a/src/print_timespec.h
32 +++ b/src/print_timespec.h
33 @@ -66,6 +66,8 @@ bool
34@@ -60,7 +60,7 @@ index 9603a6bb6..f5f747c42 100644
35  
36  	tprint_array_end();
37 diff --git a/src/sockaddr.c b/src/sockaddr.c
38-index 9139da1cd..7126ad2fc 100644
39+index ee1ce8828..c1f9b1740 100644
40 --- a/src/sockaddr.c
41 +++ b/src/sockaddr.c
42 @@ -583,7 +583,7 @@ print_sockaddr_data_ll(struct tcb *tcp, const void *const buf,
43@@ -82,7 +82,7 @@ index 9139da1cd..7126ad2fc 100644
44  	const int transport_len = MIN(sa->transport_len,
45  				      len - offsetof(struct sockaddr_rxrpc,
46 diff --git a/src/tee.c b/src/tee.c
47-index fc735e0da..f705a7a94 100644
48+index c62566800..1596a5095 100644
49 --- a/src/tee.c
50 +++ b/src/tee.c
51 @@ -69,7 +69,7 @@ tee_fetch_buf_data(struct tcb *const tcp,
52@@ -95,7 +95,7 @@ index fc735e0da..f705a7a94 100644
53  	    (arg_size + TEE_IOCTL_PARAM_SIZE(*num_params) != buf->buf_len)) {
54  		/*
55 diff --git a/src/ucopy.c b/src/ucopy.c
56-index c769a1916..ed401ae74 100644
57+index b4e746b0b..007b5373e 100644
58 --- a/src/ucopy.c
59 +++ b/src/ucopy.c
60 @@ -186,7 +186,7 @@ vm_read_mem(const pid_t pid, void *laddr,
61@@ -148,5 +148,5 @@ index c769a1916..ed401ae74 100644
62  	}
63  
64 -- 
65-2.37.3
66+2.44.0
67 
+55, -7
 1@@ -1,4 +1,4 @@
 2-From 3b3898e2a370be0489226da973e18176530e267a Mon Sep 17 00:00:00 2001
 3+From 586b8d1808d18149a872f0ee1dc8903b9f9e8750 Mon Sep 17 00:00:00 2001
 4 From: Michael Forney <mforney@mforney.org>
 5 Date: Sun, 7 Jul 2019 21:53:16 -0700
 6 Subject: [PATCH] Don't omit second operand to '?' operator
 7@@ -7,8 +7,10 @@ Subject: [PATCH] Don't omit second operand to '?' operator
 8  src/kd_ioctl.c | 2 +-
 9  src/open.c     | 5 +++--
10  src/prctl.c    | 8 ++++----
11- src/strace.c   | 6 +++---
12- 4 files changed, 11 insertions(+), 10 deletions(-)
13+ src/strace.c   | 8 ++++----
14+ src/strauss.c  | 4 +++-
15+ src/util.c     | 2 +-
16+ 6 files changed, 16 insertions(+), 13 deletions(-)
17 
18 diff --git a/src/kd_ioctl.c b/src/kd_ioctl.c
19 index ada23d536..fddbd38fb 100644
20@@ -70,10 +72,10 @@ index f6b4dd741..951133a83 100644
21  
22  	return out;
23 diff --git a/src/strace.c b/src/strace.c
24-index 9cd4ff461..4403bd27e 100644
25+index 9c87e34ed..13904f6e1 100644
26 --- a/src/strace.c
27 +++ b/src/strace.c
28-@@ -2494,7 +2494,7 @@ init(int argc, char *argv[])
29+@@ -2609,7 +2609,7 @@ init(int argc, char *argv[])
30  			break;
31  		case GETOPT_TS:
32  			tflag_long_set = true;
33@@ -82,7 +84,16 @@ index 9cd4ff461..4403bd27e 100644
34  				error_opt_arg(c, lopt, optarg);
35  			break;
36  		case 'T':
37-@@ -2614,10 +2614,10 @@ init(int argc, char *argv[])
38+@@ -2683,7 +2683,7 @@ init(int argc, char *argv[])
39+ 				error_opt_arg(c, lopt, optarg);
40+ 			break;
41+ 		case GETOPT_TIPS:
42+-			if (parse_tips_arg(optarg ?: ""))
43++			if (parse_tips_arg(optarg ? optarg : ""))
44+ 				error_opt_arg(c, lopt, optarg);
45+ 			break;
46+ 		case GETOPT_ARGV0:
47+@@ -2729,10 +2729,10 @@ init(int argc, char *argv[])
48  			qualify_kvm(optarg);
49  			break;
50  		case GETOPT_QUAL_QUIET:
51@@ -95,6 +106,43 @@ index 9cd4ff461..4403bd27e 100644
52  			break;
53  		case GETOPT_QUAL_DECODE_PID:
54  			qualify_decode_pid(optarg);
55+diff --git a/src/strauss.c b/src/strauss.c
56+index bec85021b..5d49f950a 100644
57+--- a/src/strauss.c
58++++ b/src/strauss.c
59+@@ -367,6 +367,7 @@ print_totd(void)
60+ 	struct timeval tv;
61+ 	size_t id;
62+ 	size_t i;
63++	const char *tip;
64+ 
65+ 	if (printed || show_tips == TIPS_NONE)
66+ 		return;
67+@@ -386,9 +387,10 @@ print_totd(void)
68+ 	for (i = 0; (i < MAX_TIP_LINES) && (tips_tricks_tweaks[id][i] ||
69+ 					    (i < (ARRAY_SIZE(tip_right) - 1)));
70+ 	     i++) {
71++		tip = tips_tricks_tweaks[id][i];
72+ 		fprintf(stderr, "%s%-*s%s%s\n",
73+ 			tip_left[MIN(i + 1, ARRAY_SIZE(tip_left) - 1)],
74+-			w, tips_tricks_tweaks[id][i] ?: "",
75++			w, tip ? tip : "",
76+ 			tip_right[MIN(i + 1, ARRAY_SIZE(tip_right) - 1)],
77+ 			strauss[MIN(3 + i, strauss_lines - 1)]);
78+ 	}
79+diff --git a/src/util.c b/src/util.c
80+index efd390577..5e87559dc 100644
81+--- a/src/util.c
82++++ b/src/util.c
83+@@ -640,7 +640,7 @@ printsocket(struct tcb *tcp, int fd, const char *path)
84+ 		return false;
85+ 
86+ 	const char *details = get_sockaddr_by_inode(tcp, fd, inode);
87+-	print_string_in_angle_brackets(details ?: path);
88++	print_string_in_angle_brackets(details ? details : path);
89+ 
90+ 	return true;
91+ }
92 -- 
93-2.37.3
94+2.44.0
95 
+7, -7
 1@@ -1,4 +1,4 @@
 2-From a98e58cc36d6df5935dbedd9e1c2947262b8b67c Mon Sep 17 00:00:00 2001
 3+From ab57c5ea74c7a1ced31c07bb62c43fc766811e01 Mon Sep 17 00:00:00 2001
 4 From: Michael Forney <mforney@mforney.org>
 5 Date: Sun, 7 Jul 2019 21:58:46 -0700
 6 Subject: [PATCH] Avoid unnecessary VLAs
 7@@ -12,7 +12,7 @@ Subject: [PATCH] Avoid unnecessary VLAs
 8  5 files changed, 7 insertions(+), 8 deletions(-)
 9 
10 diff --git a/src/count.c b/src/count.c
11-index e4f362787..ad203748b 100644
12+index 2494a44d6..704e3a8d5 100644
13 --- a/src/count.c
14 +++ b/src/count.c
15 @@ -414,7 +414,7 @@ call_summary_pers(FILE *outf)
16@@ -60,7 +60,7 @@ index d3a3b9283..e0079456f 100644
17  		if (!inet_ntop(diag_msg->idiag_family, diag_msg->id.idiag_dst,
18  			       dst_buf, text_size))
19 diff --git a/src/syscall.c b/src/syscall.c
20-index c636ba37c..687d08bc0 100644
21+index 6d9e843fe..44d5e9e0b 100644
22 --- a/src/syscall.c
23 +++ b/src/syscall.c
24 @@ -287,7 +287,7 @@ decode_socket_subcall(struct tcb *tcp)
25@@ -73,10 +73,10 @@ index c636ba37c..687d08bc0 100644
26  	if (umoven(tcp, tcp->u_arg[1], nargs * current_wordsize, buf) < 0)
27  		return;
28 diff --git a/src/util.c b/src/util.c
29-index a63d80678..a3bea5b76 100644
30+index efd390577..c9e0c6212 100644
31 --- a/src/util.c
32 +++ b/src/util.c
33-@@ -556,8 +556,7 @@ enum sock_proto
34+@@ -569,8 +569,7 @@ enum sock_proto
35  getfdproto(struct tcb *tcp, int fd)
36  {
37  #ifdef HAVE_SYS_XATTR_H
38@@ -86,7 +86,7 @@ index a63d80678..a3bea5b76 100644
39  	ssize_t r;
40  	char path[sizeof("/proc/%u/fd/%u") + 2 * sizeof(int)*3];
41  
42-@@ -565,7 +564,7 @@ getfdproto(struct tcb *tcp, int fd)
43+@@ -578,7 +577,7 @@ getfdproto(struct tcb *tcp, int fd)
44  		return SOCK_PROTO_UNKNOWN;
45  
46  	xsprintf(path, "/proc/%u/fd/%u", get_proc_pid(tcp->pid), fd);
47@@ -96,5 +96,5 @@ index a63d80678..a3bea5b76 100644
48  		return SOCK_PROTO_UNKNOWN;
49  	else {
50 -- 
51-2.37.3
52+2.44.0
53 
+4, -4
 1@@ -1,4 +1,4 @@
 2-From d1c93514cb65877134e8f53b189adbcd5a0e1b43 Mon Sep 17 00:00:00 2001
 3+From b7f05e44f267fde2bc317a54430ec106d5af2808 Mon Sep 17 00:00:00 2001
 4 From: Michael Forney <mforney@mforney.org>
 5 Date: Thu, 30 Jan 2020 22:32:50 -0800
 6 Subject: [PATCH] Avoid index ranges
 7@@ -33,10 +33,10 @@ index cad1013a8..73d7bbe28 100644
 8  
 9  	return sprint_mac_addr(hwaddr, MIN(size, sz));
10 diff --git a/src/util.c b/src/util.c
11-index a3bea5b76..21fb9560f 100644
12+index c9e0c6212..875c3ae9c 100644
13 --- a/src/util.c
14 +++ b/src/util.c
15-@@ -1477,16 +1477,16 @@ dumpstr(struct tcb *const tcp, const kernel_ulong_t addr,
16+@@ -1519,16 +1519,16 @@ dumpstr(struct tcb *const tcp, const kernel_ulong_t addr,
17  		? 1 + ilog2_klong(len - 1) / HEX_BIT : DUMPSTR_OFFS_MIN_CHARS;
18  	kernel_ulong_t i = 0;
19  	const unsigned char *src;
20@@ -58,5 +58,5 @@ index a3bea5b76..21fb9560f 100644
21  
22  		/* Fetching data from tracee.  */
23 -- 
24-2.37.3
25+2.44.0
26 
+1, -1
1@@ -1 +1 @@
2-27987dbac57fdfd260c6db4dc8328df35c95c6867c8a3d4371d59cdcf4eb9238  strace-6.4.tar.xz
3+ba6950a96824cdf93a584fa04f0a733896d2a6bc5f0ad9ffe505d9b41e970149  strace-6.8.tar.xz
+1, -1
1@@ -1 +1 @@
2-url = "https://github.com/strace/strace/releases/download/v6.4/strace-6.4.tar.xz"
3+url = "https://github.com/strace/strace/releases/download/v6.8/strace-6.8.tar.xz"
+1, -1
1@@ -1 +1 @@
2-6.4 r0
3+6.8 r0