Blob Blame History Raw
From 80e96680db68fb424455180f24cd08089bd8c94b Mon Sep 17 00:00:00 2001
From: "Dmitry V. Levin" <ldv@strace.io>
Date: Wed, 31 Mar 2021 08:00:00 +0000
Subject: [PATCH 142/149] tests: add fchmod-y test
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

* tests/dirfd.c: New file.
* tests/Makefile.am (libtests_a_SOURCES): Add dirfd.c.
* tests/tests.h (get_dir_fd, get_fd_path): New function prototypes.
* tests/fchmod-y.c: New file.
* tests/fchmod.c (main): Create a sample file, handle YFLAG macro.
* tests/gen_tests.in (fchmod-y): New entry.
* tests/pure_executables.list: Add fchmod-y.
* tests/.gitignore: Likewise.

Co-authored-by: Renaud Métrich <rmetrich@redhat.com>

Conflicts:
	tests/fchmod.c
---
 tests/.gitignore            |  1 +
 tests/Makefile.am           |  1 +
 tests/dirfd.c               | 43 ++++++++++++++++++++++++++++++++++++++
 tests/fchmod-y.c            | 10 +++++++++
 tests/fchmod.c              | 51 ++++++++++++++++++++++++++++++++++++++-------
 tests/gen_tests.in          |  1 +
 tests/pure_executables.list |  1 +
 tests/tests.h               | 12 +++++++++++
 8 files changed, 112 insertions(+), 8 deletions(-)
 create mode 100644 tests/dirfd.c
 create mode 100644 tests/fchmod-y.c

Index: strace-5.7/tests/Makefile.am
===================================================================
--- strace-5.7.orig/tests/Makefile.am	2021-08-24 19:31:43.636872612 +0200
+++ strace-5.7/tests/Makefile.am	2021-08-24 19:32:04.015700127 +0200
@@ -31,6 +31,7 @@
 libtests_a_SOURCES = \
 	create_nl_socket.c \
 	create_tmpfile.c \
+	dirfd.c \
 	errno2name.c \
 	error_msg.c \
 	fill_memory.c \
Index: strace-5.7/tests/dirfd.c
===================================================================
--- /dev/null	1970-01-01 00:00:00.000000000 +0000
+++ strace-5.7/tests/dirfd.c	2021-08-24 19:32:04.016700119 +0200
@@ -0,0 +1,43 @@
+/*
+ * Copyright (c) 2021 The strace developers.
+ * All rights reserved.
+ *
+ * SPDX-License-Identifier: GPL-2.0-or-later
+ */
+
+#include "tests.h"
+
+#include <dirent.h>
+#include <limits.h>
+#include <stdlib.h>
+#include <unistd.h>
+
+#include "xmalloc.h"
+
+int
+get_dir_fd(const char *dir_path)
+{
+	DIR *dir = opendir(dir_path);
+	if (dir == NULL)
+		perror_msg_and_fail("opendir: %s", dir_path);
+	int dfd = dirfd(dir);
+	if (dfd == -1)
+		perror_msg_and_fail("dirfd");
+	return dfd;
+}
+
+char *
+get_fd_path(int fd)
+{
+	char *proc = xasprintf("/proc/self/fd/%u", fd);
+	char *buf = xmalloc(PATH_MAX);
+	ssize_t n = readlink(proc, buf, PATH_MAX);
+	if (n < 0)
+		perror_msg_and_skip("readlink: %s", proc);
+	if (n >= PATH_MAX)
+		error_msg_and_fail("readlink: %s: %s", proc,
+				   "symlink value is too long");
+	buf[n] = '\0';
+	free(proc);
+	return buf;
+}
Index: strace-5.7/tests/fchmod-y.c
===================================================================
--- /dev/null	1970-01-01 00:00:00.000000000 +0000
+++ strace-5.7/tests/fchmod-y.c	2021-08-24 19:32:04.016700119 +0200
@@ -0,0 +1,10 @@
+/*
+ * Copyright (c) 2021 The strace developers.
+ * All rights reserved.
+ *
+ * SPDX-License-Identifier: GPL-2.0-or-later
+ */
+
+#define YFLAG
+
+#include "fchmod.c"
Index: strace-5.7/tests/fchmod.c
===================================================================
--- strace-5.7.orig/tests/fchmod.c	2021-08-24 19:31:43.636872612 +0200
+++ strace-5.7/tests/fchmod.c	2021-08-24 19:32:04.017700110 +0200
@@ -2,8 +2,8 @@
  * Check decoding of fchmod syscall.
  *
  * Copyright (c) 2016 Fabien Siron <fabien.siron@epita.fr>
- * Copyright (c) 2016 Dmitry V. Levin <ldv@altlinux.org>
- * Copyright (c) 2016-2020 The strace developers.
+ * Copyright (c) 2016 Dmitry V. Levin <ldv@strace.io>
+ * Copyright (c) 2016-2021 The strace developers.
  * All rights reserved.
  *
  * SPDX-License-Identifier: GPL-2.0-or-later
@@ -15,25 +15,60 @@
 #ifdef __NR_fchmod
 
 # include <fcntl.h>
-# include <sys/stat.h>
 # include <stdio.h>
 # include <unistd.h>
 
 int
 main(void)
 {
-	int fd = create_tmpfile(O_RDWR);
+	static const char sample[] = "fchmod_sample_file";
+	(void) unlink(sample);
+	int fd = open(sample, O_CREAT|O_RDONLY, 0400);
+	if (fd == -1)
+		perror_msg_and_fail("open");
+
+# ifdef YFLAG
+	char *sample_realpath = get_fd_path(fd);
+# endif
 
 	long rc = syscall(__NR_fchmod, fd, 0600);
-	printf("fchmod(%d, 0600) = %s\n", fd, sprintrc(rc));
+# ifdef YFLAG
+	printf("fchmod(%d<%s>, 0600) = %s\n",
+# else
+	printf("fchmod(%d, 0600) = %s\n",
+# endif
+	       fd,
+# ifdef YFLAG
+	       sample_realpath,
+# endif
+	       sprintrc(rc));
 
-	close(fd);
+	if (unlink(sample))
+		perror_msg_and_fail("unlink");
 
 	rc = syscall(__NR_fchmod, fd, 051);
-	printf("fchmod(%d, 051) = %s\n", fd, sprintrc(rc));
+# ifdef YFLAG
+	printf("fchmod(%d<%s (deleted)>, 051) = %s\n",
+# else
+	printf("fchmod(%d, 051) = %s\n",
+# endif
+	       fd,
+# ifdef YFLAG
+	       sample_realpath,
+# endif
+	       sprintrc(rc));
 
 	rc = syscall(__NR_fchmod, fd, 004);
-	printf("fchmod(%d, 004) = %s\n", fd, sprintrc(rc));
+# ifdef YFLAG
+	printf("fchmod(%d<%s (deleted)>, 004) = %s\n",
+# else
+	printf("fchmod(%d, 004) = %s\n",
+# endif
+	       fd,
+# ifdef YFLAG
+	       sample_realpath,
+# endif
+	       sprintrc(rc));
 
 	puts("+++ exited with 0 +++");
 	return 0;
Index: strace-5.7/tests/gen_tests.in
===================================================================
--- strace-5.7.orig/tests/gen_tests.in	2021-08-24 19:31:43.637872604 +0200
+++ strace-5.7/tests/gen_tests.in	2021-08-24 19:32:04.017700110 +0200
@@ -83,6 +83,7 @@
 fanotify_mark-Xverbose	-a32 -Xverbose -e trace=fanotify_mark
 fchdir	-a11
 fchmod	-a15
+fchmod-y	-y -e trace=fchmod
 fchmodat
 fchown	-a16
 fchown32	-a18
Index: strace-5.7/tests/pure_executables.list
===================================================================
--- strace-5.7.orig/tests/pure_executables.list	2021-08-24 19:31:43.637872604 +0200
+++ strace-5.7/tests/pure_executables.list	2021-08-24 19:32:04.017700110 +0200
@@ -71,6 +71,7 @@
 fanotify_mark-Xverbose
 fchdir
 fchmod
+fchmod-y
 fchmodat
 fchown
 fchown32
Index: strace-5.7/tests/tests.h
===================================================================
--- strace-5.7.orig/tests/tests.h	2021-08-24 19:31:43.637872604 +0200
+++ strace-5.7/tests/tests.h	2021-08-24 19:32:04.018700102 +0200
@@ -149,6 +149,18 @@
 void skip_if_unavailable(const char *);
 
 /*
+ * Obtain a file descriptor corresponding to the specified directory name,
+ * die on failure.
+ */
+int get_dir_fd(const char *dir_path);
+
+/*
+ * Obtain a path corresponding to the specified file descriptor,
+ * die on failure.
+ */
+char *get_fd_path(int fd) ATTRIBUTE_MALLOC;
+
+/*
  * Obtain an exclusive lock on dirname(path_name)/lock_name file
  * using open and flock.
  */
Index: strace-5.7/tests-m32/Makefile.am
===================================================================
--- strace-5.7.orig/tests-m32/Makefile.am	2021-08-24 19:31:43.637872604 +0200
+++ strace-5.7/tests-m32/Makefile.am	2021-08-24 19:32:04.018700102 +0200
@@ -31,6 +31,7 @@
 libtests_a_SOURCES = \
 	create_nl_socket.c \
 	create_tmpfile.c \
+	dirfd.c \
 	errno2name.c \
 	error_msg.c \
 	fill_memory.c \
Index: strace-5.7/tests-m32/dirfd.c
===================================================================
--- /dev/null	1970-01-01 00:00:00.000000000 +0000
+++ strace-5.7/tests-m32/dirfd.c	2021-08-24 19:32:04.018700102 +0200
@@ -0,0 +1,43 @@
+/*
+ * Copyright (c) 2021 The strace developers.
+ * All rights reserved.
+ *
+ * SPDX-License-Identifier: GPL-2.0-or-later
+ */
+
+#include "tests.h"
+
+#include <dirent.h>
+#include <limits.h>
+#include <stdlib.h>
+#include <unistd.h>
+
+#include "xmalloc.h"
+
+int
+get_dir_fd(const char *dir_path)
+{
+	DIR *dir = opendir(dir_path);
+	if (dir == NULL)
+		perror_msg_and_fail("opendir: %s", dir_path);
+	int dfd = dirfd(dir);
+	if (dfd == -1)
+		perror_msg_and_fail("dirfd");
+	return dfd;
+}
+
+char *
+get_fd_path(int fd)
+{
+	char *proc = xasprintf("/proc/self/fd/%u", fd);
+	char *buf = xmalloc(PATH_MAX);
+	ssize_t n = readlink(proc, buf, PATH_MAX);
+	if (n < 0)
+		perror_msg_and_skip("readlink: %s", proc);
+	if (n >= PATH_MAX)
+		error_msg_and_fail("readlink: %s: %s", proc,
+				   "symlink value is too long");
+	buf[n] = '\0';
+	free(proc);
+	return buf;
+}
Index: strace-5.7/tests-m32/fchmod-y.c
===================================================================
--- /dev/null	1970-01-01 00:00:00.000000000 +0000
+++ strace-5.7/tests-m32/fchmod-y.c	2021-08-24 19:32:04.019700094 +0200
@@ -0,0 +1,10 @@
+/*
+ * Copyright (c) 2021 The strace developers.
+ * All rights reserved.
+ *
+ * SPDX-License-Identifier: GPL-2.0-or-later
+ */
+
+#define YFLAG
+
+#include "fchmod.c"
Index: strace-5.7/tests-m32/fchmod.c
===================================================================
--- strace-5.7.orig/tests-m32/fchmod.c	2021-08-24 19:31:43.638872595 +0200
+++ strace-5.7/tests-m32/fchmod.c	2021-08-24 19:32:04.019700094 +0200
@@ -2,8 +2,8 @@
  * Check decoding of fchmod syscall.
  *
  * Copyright (c) 2016 Fabien Siron <fabien.siron@epita.fr>
- * Copyright (c) 2016 Dmitry V. Levin <ldv@altlinux.org>
- * Copyright (c) 2016-2020 The strace developers.
+ * Copyright (c) 2016 Dmitry V. Levin <ldv@strace.io>
+ * Copyright (c) 2016-2021 The strace developers.
  * All rights reserved.
  *
  * SPDX-License-Identifier: GPL-2.0-or-later
@@ -15,25 +15,60 @@
 #ifdef __NR_fchmod
 
 # include <fcntl.h>
-# include <sys/stat.h>
 # include <stdio.h>
 # include <unistd.h>
 
 int
 main(void)
 {
-	int fd = create_tmpfile(O_RDWR);
+	static const char sample[] = "fchmod_sample_file";
+	(void) unlink(sample);
+	int fd = open(sample, O_CREAT|O_RDONLY, 0400);
+	if (fd == -1)
+		perror_msg_and_fail("open");
+
+# ifdef YFLAG
+	char *sample_realpath = get_fd_path(fd);
+# endif
 
 	long rc = syscall(__NR_fchmod, fd, 0600);
-	printf("fchmod(%d, 0600) = %s\n", fd, sprintrc(rc));
+# ifdef YFLAG
+	printf("fchmod(%d<%s>, 0600) = %s\n",
+# else
+	printf("fchmod(%d, 0600) = %s\n",
+# endif
+	       fd,
+# ifdef YFLAG
+	       sample_realpath,
+# endif
+	       sprintrc(rc));
 
-	close(fd);
+	if (unlink(sample))
+		perror_msg_and_fail("unlink");
 
 	rc = syscall(__NR_fchmod, fd, 051);
-	printf("fchmod(%d, 051) = %s\n", fd, sprintrc(rc));
+# ifdef YFLAG
+	printf("fchmod(%d<%s (deleted)>, 051) = %s\n",
+# else
+	printf("fchmod(%d, 051) = %s\n",
+# endif
+	       fd,
+# ifdef YFLAG
+	       sample_realpath,
+# endif
+	       sprintrc(rc));
 
 	rc = syscall(__NR_fchmod, fd, 004);
-	printf("fchmod(%d, 004) = %s\n", fd, sprintrc(rc));
+# ifdef YFLAG
+	printf("fchmod(%d<%s (deleted)>, 004) = %s\n",
+# else
+	printf("fchmod(%d, 004) = %s\n",
+# endif
+	       fd,
+# ifdef YFLAG
+	       sample_realpath,
+# endif
+	       sprintrc(rc));
 
 	puts("+++ exited with 0 +++");
 	return 0;
Index: strace-5.7/tests-m32/gen_tests.in
===================================================================
--- strace-5.7.orig/tests-m32/gen_tests.in	2021-08-24 19:31:43.638872595 +0200
+++ strace-5.7/tests-m32/gen_tests.in	2021-08-24 19:32:04.020700085 +0200
@@ -83,6 +83,7 @@
 fanotify_mark-Xverbose	-a32 -Xverbose -e trace=fanotify_mark
 fchdir	-a11
 fchmod	-a15
+fchmod-y	-y -e trace=fchmod
 fchmodat
 fchown	-a16
 fchown32	-a18
Index: strace-5.7/tests-m32/pure_executables.list
===================================================================
--- strace-5.7.orig/tests-m32/pure_executables.list	2021-08-24 19:31:43.638872595 +0200
+++ strace-5.7/tests-m32/pure_executables.list	2021-08-24 19:32:04.020700085 +0200
@@ -71,6 +71,7 @@
 fanotify_mark-Xverbose
 fchdir
 fchmod
+fchmod-y
 fchmodat
 fchown
 fchown32
Index: strace-5.7/tests-m32/tests.h
===================================================================
--- strace-5.7.orig/tests-m32/tests.h	2021-08-24 19:31:43.638872595 +0200
+++ strace-5.7/tests-m32/tests.h	2021-08-24 19:32:04.020700085 +0200
@@ -149,6 +149,18 @@
 void skip_if_unavailable(const char *);
 
 /*
+ * Obtain a file descriptor corresponding to the specified directory name,
+ * die on failure.
+ */
+int get_dir_fd(const char *dir_path);
+
+/*
+ * Obtain a path corresponding to the specified file descriptor,
+ * die on failure.
+ */
+char *get_fd_path(int fd) ATTRIBUTE_MALLOC;
+
+/*
  * Obtain an exclusive lock on dirname(path_name)/lock_name file
  * using open and flock.
  */
Index: strace-5.7/tests-mx32/Makefile.am
===================================================================
--- strace-5.7.orig/tests-mx32/Makefile.am	2021-08-24 19:31:43.638872595 +0200
+++ strace-5.7/tests-mx32/Makefile.am	2021-08-24 19:32:04.021700077 +0200
@@ -31,6 +31,7 @@
 libtests_a_SOURCES = \
 	create_nl_socket.c \
 	create_tmpfile.c \
+	dirfd.c \
 	errno2name.c \
 	error_msg.c \
 	fill_memory.c \
Index: strace-5.7/tests-mx32/dirfd.c
===================================================================
--- /dev/null	1970-01-01 00:00:00.000000000 +0000
+++ strace-5.7/tests-mx32/dirfd.c	2021-08-24 19:32:04.021700077 +0200
@@ -0,0 +1,43 @@
+/*
+ * Copyright (c) 2021 The strace developers.
+ * All rights reserved.
+ *
+ * SPDX-License-Identifier: GPL-2.0-or-later
+ */
+
+#include "tests.h"
+
+#include <dirent.h>
+#include <limits.h>
+#include <stdlib.h>
+#include <unistd.h>
+
+#include "xmalloc.h"
+
+int
+get_dir_fd(const char *dir_path)
+{
+	DIR *dir = opendir(dir_path);
+	if (dir == NULL)
+		perror_msg_and_fail("opendir: %s", dir_path);
+	int dfd = dirfd(dir);
+	if (dfd == -1)
+		perror_msg_and_fail("dirfd");
+	return dfd;
+}
+
+char *
+get_fd_path(int fd)
+{
+	char *proc = xasprintf("/proc/self/fd/%u", fd);
+	char *buf = xmalloc(PATH_MAX);
+	ssize_t n = readlink(proc, buf, PATH_MAX);
+	if (n < 0)
+		perror_msg_and_skip("readlink: %s", proc);
+	if (n >= PATH_MAX)
+		error_msg_and_fail("readlink: %s: %s", proc,
+				   "symlink value is too long");
+	buf[n] = '\0';
+	free(proc);
+	return buf;
+}
Index: strace-5.7/tests-mx32/fchmod-y.c
===================================================================
--- /dev/null	1970-01-01 00:00:00.000000000 +0000
+++ strace-5.7/tests-mx32/fchmod-y.c	2021-08-24 19:32:04.021700077 +0200
@@ -0,0 +1,10 @@
+/*
+ * Copyright (c) 2021 The strace developers.
+ * All rights reserved.
+ *
+ * SPDX-License-Identifier: GPL-2.0-or-later
+ */
+
+#define YFLAG
+
+#include "fchmod.c"
Index: strace-5.7/tests-mx32/fchmod.c
===================================================================
--- strace-5.7.orig/tests-mx32/fchmod.c	2021-08-24 19:31:43.639872587 +0200
+++ strace-5.7/tests-mx32/fchmod.c	2021-08-24 19:32:04.022700068 +0200
@@ -2,8 +2,8 @@
  * Check decoding of fchmod syscall.
  *
  * Copyright (c) 2016 Fabien Siron <fabien.siron@epita.fr>
- * Copyright (c) 2016 Dmitry V. Levin <ldv@altlinux.org>
- * Copyright (c) 2016-2020 The strace developers.
+ * Copyright (c) 2016 Dmitry V. Levin <ldv@strace.io>
+ * Copyright (c) 2016-2021 The strace developers.
  * All rights reserved.
  *
  * SPDX-License-Identifier: GPL-2.0-or-later
@@ -15,25 +15,60 @@
 #ifdef __NR_fchmod
 
 # include <fcntl.h>
-# include <sys/stat.h>
 # include <stdio.h>
 # include <unistd.h>
 
 int
 main(void)
 {
-	int fd = create_tmpfile(O_RDWR);
+	static const char sample[] = "fchmod_sample_file";
+	(void) unlink(sample);
+	int fd = open(sample, O_CREAT|O_RDONLY, 0400);
+	if (fd == -1)
+		perror_msg_and_fail("open");
+
+# ifdef YFLAG
+	char *sample_realpath = get_fd_path(fd);
+# endif
 
 	long rc = syscall(__NR_fchmod, fd, 0600);
-	printf("fchmod(%d, 0600) = %s\n", fd, sprintrc(rc));
+# ifdef YFLAG
+	printf("fchmod(%d<%s>, 0600) = %s\n",
+# else
+	printf("fchmod(%d, 0600) = %s\n",
+# endif
+	       fd,
+# ifdef YFLAG
+	       sample_realpath,
+# endif
+	       sprintrc(rc));
 
-	close(fd);
+	if (unlink(sample))
+		perror_msg_and_fail("unlink");
 
 	rc = syscall(__NR_fchmod, fd, 051);
-	printf("fchmod(%d, 051) = %s\n", fd, sprintrc(rc));
+# ifdef YFLAG
+	printf("fchmod(%d<%s (deleted)>, 051) = %s\n",
+# else
+	printf("fchmod(%d, 051) = %s\n",
+# endif
+	       fd,
+# ifdef YFLAG
+	       sample_realpath,
+# endif
+	       sprintrc(rc));
 
 	rc = syscall(__NR_fchmod, fd, 004);
-	printf("fchmod(%d, 004) = %s\n", fd, sprintrc(rc));
+# ifdef YFLAG
+	printf("fchmod(%d<%s (deleted)>, 004) = %s\n",
+# else
+	printf("fchmod(%d, 004) = %s\n",
+# endif
+	       fd,
+# ifdef YFLAG
+	       sample_realpath,
+# endif
+	       sprintrc(rc));
 
 	puts("+++ exited with 0 +++");
 	return 0;
Index: strace-5.7/tests-mx32/gen_tests.in
===================================================================
--- strace-5.7.orig/tests-mx32/gen_tests.in	2021-08-24 19:31:43.639872587 +0200
+++ strace-5.7/tests-mx32/gen_tests.in	2021-08-24 19:32:04.022700068 +0200
@@ -83,6 +83,7 @@
 fanotify_mark-Xverbose	-a32 -Xverbose -e trace=fanotify_mark
 fchdir	-a11
 fchmod	-a15
+fchmod-y	-y -e trace=fchmod
 fchmodat
 fchown	-a16
 fchown32	-a18
Index: strace-5.7/tests-mx32/pure_executables.list
===================================================================
--- strace-5.7.orig/tests-mx32/pure_executables.list	2021-08-24 19:31:43.639872587 +0200
+++ strace-5.7/tests-mx32/pure_executables.list	2021-08-24 19:32:04.022700068 +0200
@@ -71,6 +71,7 @@
 fanotify_mark-Xverbose
 fchdir
 fchmod
+fchmod-y
 fchmodat
 fchown
 fchown32
Index: strace-5.7/tests-mx32/tests.h
===================================================================
--- strace-5.7.orig/tests-mx32/tests.h	2021-08-24 19:31:43.639872587 +0200
+++ strace-5.7/tests-mx32/tests.h	2021-08-24 19:32:04.022700068 +0200
@@ -149,6 +149,18 @@
 void skip_if_unavailable(const char *);
 
 /*
+ * Obtain a file descriptor corresponding to the specified directory name,
+ * die on failure.
+ */
+int get_dir_fd(const char *dir_path);
+
+/*
+ * Obtain a path corresponding to the specified file descriptor,
+ * die on failure.
+ */
+char *get_fd_path(int fd) ATTRIBUTE_MALLOC;
+
+/*
  * Obtain an exclusive lock on dirname(path_name)/lock_name file
  * using open and flock.
  */
Index: strace-5.7/tests/Makefile.in
===================================================================
--- strace-5.7.orig/tests/Makefile.in	2021-08-24 19:31:43.647872519 +0200
+++ strace-5.7/tests/Makefile.in	2021-08-24 19:35:06.722153713 +0200
@@ -303,7 +303,7 @@
 	fanotify_init$(EXEEXT) fanotify_mark$(EXEEXT) \
 	fanotify_mark-Xabbrev$(EXEEXT) fanotify_mark-Xraw$(EXEEXT) \
 	fanotify_mark-Xverbose$(EXEEXT) fchdir$(EXEEXT) \
-	fchmod$(EXEEXT) fchmodat$(EXEEXT) fchown$(EXEEXT) \
+	fchmod$(EXEEXT) fchmod-y$(EXEEXT) fchmodat$(EXEEXT) fchown$(EXEEXT) \
 	fchown32$(EXEEXT) fchownat$(EXEEXT) fcntl$(EXEEXT) \
 	fcntl64$(EXEEXT) fdatasync$(EXEEXT) fflush$(EXEEXT) \
 	file_handle$(EXEEXT) file_ioctl$(EXEEXT) finit_module$(EXEEXT) \
@@ -551,7 +551,7 @@
 libtests_a_AR = $(AR) $(ARFLAGS)
 libtests_a_LIBADD =
 am_libtests_a_OBJECTS = libtests_a-create_nl_socket.$(OBJEXT) \
-	libtests_a-create_tmpfile.$(OBJEXT) \
+	libtests_a-create_tmpfile.$(OBJEXT) libtests_a-dirfd.$(OBJEXT) \
 	libtests_a-errno2name.$(OBJEXT) libtests_a-error_msg.$(OBJEXT) \
 	libtests_a-fill_memory.$(OBJEXT) \
 	libtests_a-get_page_size.$(OBJEXT) \
@@ -986,6 +986,10 @@
 fchmod_OBJECTS = fchmod.$(OBJEXT)
 fchmod_LDADD = $(LDADD)
 fchmod_DEPENDENCIES = libtests.a
+fchmod_y_SOURCES = fchmod-y.c
+fchmod_y_OBJECTS = fchmod-y.$(OBJEXT)
+fchmod_y_LDADD = $(LDADD)
+fchmod_y_DEPENDENCIES = libtests.a
 fchmodat_SOURCES = fchmodat.c
 fchmodat_OBJECTS = fchmodat.$(OBJEXT)
 fchmodat_LDADD = $(LDADD)
@@ -4508,9 +4512,10 @@
 	execve-v.c execveat.c execveat-v.c faccessat.c fadvise64.c \
 	fadvise64_64.c fallocate.c fanotify_init.c fanotify_mark.c \
 	fanotify_mark-Xabbrev.c fanotify_mark-Xraw.c \
-	fanotify_mark-Xverbose.c fchdir.c fchmod.c fchmodat.c fchown.c \
-	fchown32.c fchownat.c fcntl.c fcntl--pidns-translation.c \
-	fcntl64.c fcntl64--pidns-translation.c fdatasync.c fflush.c \
+	fanotify_mark-Xverbose.c fchdir.c fchmod.c fchmod-y.c \
+	fchmodat.c fchown.c fchown32.c fchownat.c fcntl.c \
+	fcntl--pidns-translation.c fcntl64.c \
+	fcntl64--pidns-translation.c fdatasync.c fflush.c \
 	file_handle.c file_ioctl.c filter-unavailable.c \
 	filter_seccomp-flag.c filter_seccomp-perf.c finit_module.c \
 	flock.c fork--pidns-translation.c fork-f.c fsconfig.c \
@@ -4755,9 +4760,10 @@
 	execve-v.c execveat.c execveat-v.c faccessat.c fadvise64.c \
 	fadvise64_64.c fallocate.c fanotify_init.c fanotify_mark.c \
 	fanotify_mark-Xabbrev.c fanotify_mark-Xraw.c \
-	fanotify_mark-Xverbose.c fchdir.c fchmod.c fchmodat.c fchown.c \
-	fchown32.c fchownat.c fcntl.c fcntl--pidns-translation.c \
-	fcntl64.c fcntl64--pidns-translation.c fdatasync.c fflush.c \
+	fanotify_mark-Xverbose.c fchdir.c fchmod.c fchmod-y.c \
+	fchmodat.c fchown.c fchown32.c fchownat.c fcntl.c \
+	fcntl--pidns-translation.c fcntl64.c \
+	fcntl64--pidns-translation.c fdatasync.c fflush.c \
 	file_handle.c file_ioctl.c filter-unavailable.c \
 	filter_seccomp-flag.c filter_seccomp-perf.c finit_module.c \
 	flock.c fork--pidns-translation.c fork-f.c fsconfig.c \
@@ -5397,6 +5403,7 @@
 libtests_a_SOURCES = \
 	create_nl_socket.c \
 	create_tmpfile.c \
+	dirfd.c \
 	errno2name.c \
 	error_msg.c \
 	fill_memory.c \
@@ -5507,6 +5514,7 @@
   fanotify_mark-Xverbose \
   fchdir \
   fchmod \
+  fchmod-y \
   fchmodat \
   fchown \
   fchown32 \
@@ -6151,11 +6159,11 @@
 	fanotify_init.gen.test fanotify_mark.gen.test \
 	fanotify_mark-Xabbrev.gen.test fanotify_mark-Xraw.gen.test \
 	fanotify_mark-Xverbose.gen.test fchdir.gen.test \
-	fchmod.gen.test fchmodat.gen.test fchown.gen.test \
-	fchown32.gen.test fchownat.gen.test fcntl.gen.test \
-	fcntl--pidns-translation.gen.test fcntl64.gen.test \
-	fcntl64--pidns-translation.gen.test fdatasync.gen.test \
-	file_handle.gen.test file_ioctl.gen.test \
+	fchmod.gen.test fchmod-y.gen.test fchmodat.gen.test \
+	fchown.gen.test fchown32.gen.test fchownat.gen.test \
+	fcntl.gen.test fcntl--pidns-translation.gen.test \
+	fcntl64.gen.test fcntl64--pidns-translation.gen.test \
+	fdatasync.gen.test file_handle.gen.test file_ioctl.gen.test \
 	filter_seccomp.gen.test filter_seccomp-flag.gen.test \
 	finit_module.gen.test flock.gen.test fork-f.gen.test \
 	fsconfig.gen.test fsconfig-P.gen.test fsmount.gen.test \
@@ -7242,6 +7250,10 @@
 	@rm -f fchmod$(EXEEXT)
 	$(AM_V_CCLD)$(LINK) $(fchmod_OBJECTS) $(fchmod_LDADD) $(LIBS)
 
+fchmod-y$(EXEEXT): $(fchmod_y_OBJECTS) $(fchmod_y_DEPENDENCIES) $(EXTRA_fchmod_y_DEPENDENCIES) 
+	@rm -f fchmod-y$(EXEEXT)
+	$(AM_V_CCLD)$(LINK) $(fchmod_y_OBJECTS) $(fchmod_y_LDADD) $(LIBS)
+
 fchmodat$(EXEEXT): $(fchmodat_OBJECTS) $(fchmodat_DEPENDENCIES) $(EXTRA_fchmodat_DEPENDENCIES) 
 	@rm -f fchmodat$(EXEEXT)
 	$(AM_V_CCLD)$(LINK) $(fchmodat_OBJECTS) $(fchmodat_LDADD) $(LIBS)
@@ -10176,6 +10188,7 @@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/fanotify_mark-Xverbose.Po@am__quote@ # am--include-marker
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/fanotify_mark.Po@am__quote@ # am--include-marker
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/fchdir.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/fchmod-y.Po@am__quote@ # am--include-marker
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/fchmod.Po@am__quote@ # am--include-marker
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/fchmodat.Po@am__quote@ # am--include-marker
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/fchown.Po@am__quote@ # am--include-marker
@@ -10394,6 +10407,7 @@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/lchown32.Po@am__quote@ # am--include-marker
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libtests_a-create_nl_socket.Po@am__quote@ # am--include-marker
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libtests_a-create_tmpfile.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libtests_a-dirfd.Po@am__quote@ # am--include-marker
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libtests_a-errno2name.Po@am__quote@ # am--include-marker
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libtests_a-error_msg.Po@am__quote@ # am--include-marker
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libtests_a-fill_memory.Po@am__quote@ # am--include-marker
@@ -10975,6 +10989,20 @@
 @AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
 @am__fastdepCC_FALSE@	$(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libtests_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o libtests_a-create_tmpfile.obj `if test -f 'create_tmpfile.c'; then $(CYGPATH_W) 'create_tmpfile.c'; else $(CYGPATH_W) '$(srcdir)/create_tmpfile.c'; fi`
 
+libtests_a-dirfd.o: dirfd.c
+@am__fastdepCC_TRUE@	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libtests_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT libtests_a-dirfd.o -MD -MP -MF $(DEPDIR)/libtests_a-dirfd.Tpo -c -o libtests_a-dirfd.o `test -f 'dirfd.c' || echo '$(srcdir)/'`dirfd.c
+@am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/libtests_a-dirfd.Tpo $(DEPDIR)/libtests_a-dirfd.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@	$(AM_V_CC)source='dirfd.c' object='libtests_a-dirfd.o' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@	$(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libtests_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o libtests_a-dirfd.o `test -f 'dirfd.c' || echo '$(srcdir)/'`dirfd.c
+
+libtests_a-dirfd.obj: dirfd.c
+@am__fastdepCC_TRUE@	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libtests_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT libtests_a-dirfd.obj -MD -MP -MF $(DEPDIR)/libtests_a-dirfd.Tpo -c -o libtests_a-dirfd.obj `if test -f 'dirfd.c'; then $(CYGPATH_W) 'dirfd.c'; else $(CYGPATH_W) '$(srcdir)/dirfd.c'; fi`
+@am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/libtests_a-dirfd.Tpo $(DEPDIR)/libtests_a-dirfd.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@	$(AM_V_CC)source='dirfd.c' object='libtests_a-dirfd.obj' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@	$(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libtests_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o libtests_a-dirfd.obj `if test -f 'dirfd.c'; then $(CYGPATH_W) 'dirfd.c'; else $(CYGPATH_W) '$(srcdir)/dirfd.c'; fi`
+
 libtests_a-errno2name.o: errno2name.c
 @am__fastdepCC_TRUE@	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libtests_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT libtests_a-errno2name.o -MD -MP -MF $(DEPDIR)/libtests_a-errno2name.Tpo -c -o libtests_a-errno2name.o `test -f 'errno2name.c' || echo '$(srcdir)/'`errno2name.c
 @am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/libtests_a-errno2name.Tpo $(DEPDIR)/libtests_a-errno2name.Po
@@ -14015,6 +14043,9 @@
 $(srcdir)/fchmod.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
 	$(AM_V_GEN) $^ $@
 
+$(srcdir)/fchmod-y.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
 $(srcdir)/fchmodat.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
 	$(AM_V_GEN) $^ $@
 
Index: strace-5.7/tests-m32/Makefile.in
===================================================================
--- strace-5.7.orig/tests-m32/Makefile.in	2021-08-24 19:31:43.655872452 +0200
+++ strace-5.7/tests-m32/Makefile.in	2021-08-24 19:32:04.034699967 +0200
@@ -303,7 +303,7 @@
 	fanotify_init$(EXEEXT) fanotify_mark$(EXEEXT) \
 	fanotify_mark-Xabbrev$(EXEEXT) fanotify_mark-Xraw$(EXEEXT) \
 	fanotify_mark-Xverbose$(EXEEXT) fchdir$(EXEEXT) \
-	fchmod$(EXEEXT) fchmodat$(EXEEXT) fchown$(EXEEXT) \
+	fchmod$(EXEEXT) fchmod-y$(EXEEXT) fchmodat$(EXEEXT) fchown$(EXEEXT) \
 	fchown32$(EXEEXT) fchownat$(EXEEXT) fcntl$(EXEEXT) \
 	fcntl64$(EXEEXT) fdatasync$(EXEEXT) fflush$(EXEEXT) \
 	file_handle$(EXEEXT) file_ioctl$(EXEEXT) finit_module$(EXEEXT) \
@@ -551,7 +551,7 @@
 libtests_a_AR = $(AR) $(ARFLAGS)
 libtests_a_LIBADD =
 am_libtests_a_OBJECTS = libtests_a-create_nl_socket.$(OBJEXT) \
-	libtests_a-create_tmpfile.$(OBJEXT) \
+	libtests_a-create_tmpfile.$(OBJEXT) libtests_a-dirfd.$(OBJEXT) \
 	libtests_a-errno2name.$(OBJEXT) libtests_a-error_msg.$(OBJEXT) \
 	libtests_a-fill_memory.$(OBJEXT) \
 	libtests_a-get_page_size.$(OBJEXT) \
@@ -986,6 +986,10 @@
 fchmod_OBJECTS = fchmod.$(OBJEXT)
 fchmod_LDADD = $(LDADD)
 fchmod_DEPENDENCIES = libtests.a
+fchmod_y_SOURCES = fchmod-y.c
+fchmod_y_OBJECTS = fchmod-y.$(OBJEXT)
+fchmod_y_LDADD = $(LDADD)
+fchmod_y_DEPENDENCIES = libtests.a
 fchmodat_SOURCES = fchmodat.c
 fchmodat_OBJECTS = fchmodat.$(OBJEXT)
 fchmodat_LDADD = $(LDADD)
@@ -4508,9 +4512,10 @@
 	execve-v.c execveat.c execveat-v.c faccessat.c fadvise64.c \
 	fadvise64_64.c fallocate.c fanotify_init.c fanotify_mark.c \
 	fanotify_mark-Xabbrev.c fanotify_mark-Xraw.c \
-	fanotify_mark-Xverbose.c fchdir.c fchmod.c fchmodat.c fchown.c \
-	fchown32.c fchownat.c fcntl.c fcntl--pidns-translation.c \
-	fcntl64.c fcntl64--pidns-translation.c fdatasync.c fflush.c \
+	fanotify_mark-Xverbose.c fchdir.c fchmod.c fchmod-y.c \
+	fchmodat.c fchown.c fchown32.c fchownat.c fcntl.c \
+	fcntl--pidns-translation.c fcntl64.c \
+	fcntl64--pidns-translation.c fdatasync.c fflush.c \
 	file_handle.c file_ioctl.c filter-unavailable.c \
 	filter_seccomp-flag.c filter_seccomp-perf.c finit_module.c \
 	flock.c fork--pidns-translation.c fork-f.c fsconfig.c \
@@ -4755,9 +4760,10 @@
 	execve-v.c execveat.c execveat-v.c faccessat.c fadvise64.c \
 	fadvise64_64.c fallocate.c fanotify_init.c fanotify_mark.c \
 	fanotify_mark-Xabbrev.c fanotify_mark-Xraw.c \
-	fanotify_mark-Xverbose.c fchdir.c fchmod.c fchmodat.c fchown.c \
-	fchown32.c fchownat.c fcntl.c fcntl--pidns-translation.c \
-	fcntl64.c fcntl64--pidns-translation.c fdatasync.c fflush.c \
+	fanotify_mark-Xverbose.c fchdir.c fchmod.c fchmod-y.c \
+	fchmodat.c fchown.c fchown32.c fchownat.c fcntl.c \
+	fcntl--pidns-translation.c fcntl64.c \
+	fcntl64--pidns-translation.c fdatasync.c fflush.c \
 	file_handle.c file_ioctl.c filter-unavailable.c \
 	filter_seccomp-flag.c filter_seccomp-perf.c finit_module.c \
 	flock.c fork--pidns-translation.c fork-f.c fsconfig.c \
@@ -5397,6 +5403,7 @@
 libtests_a_SOURCES = \
 	create_nl_socket.c \
 	create_tmpfile.c \
+	dirfd.c \
 	errno2name.c \
 	error_msg.c \
 	fill_memory.c \
@@ -5507,6 +5514,7 @@
   fanotify_mark-Xverbose \
   fchdir \
   fchmod \
+  fchmod-y \
   fchmodat \
   fchown \
   fchown32 \
@@ -6151,11 +6159,11 @@
 	fanotify_init.gen.test fanotify_mark.gen.test \
 	fanotify_mark-Xabbrev.gen.test fanotify_mark-Xraw.gen.test \
 	fanotify_mark-Xverbose.gen.test fchdir.gen.test \
-	fchmod.gen.test fchmodat.gen.test fchown.gen.test \
-	fchown32.gen.test fchownat.gen.test fcntl.gen.test \
-	fcntl--pidns-translation.gen.test fcntl64.gen.test \
-	fcntl64--pidns-translation.gen.test fdatasync.gen.test \
-	file_handle.gen.test file_ioctl.gen.test \
+	fchmod.gen.test fchmod-y.gen.test fchmodat.gen.test \
+	fchown.gen.test fchown32.gen.test fchownat.gen.test \
+	fcntl.gen.test fcntl--pidns-translation.gen.test \
+	fcntl64.gen.test fcntl64--pidns-translation.gen.test \
+	fdatasync.gen.test file_handle.gen.test file_ioctl.gen.test \
 	filter_seccomp.gen.test filter_seccomp-flag.gen.test \
 	finit_module.gen.test flock.gen.test fork-f.gen.test \
 	fsconfig.gen.test fsconfig-P.gen.test fsmount.gen.test \
@@ -7242,6 +7250,10 @@
 	@rm -f fchmod$(EXEEXT)
 	$(AM_V_CCLD)$(LINK) $(fchmod_OBJECTS) $(fchmod_LDADD) $(LIBS)
 
+fchmod-y$(EXEEXT): $(fchmod_y_OBJECTS) $(fchmod_y_DEPENDENCIES) $(EXTRA_fchmod_y_DEPENDENCIES) 
+	@rm -f fchmod-y$(EXEEXT)
+	$(AM_V_CCLD)$(LINK) $(fchmod_y_OBJECTS) $(fchmod_y_LDADD) $(LIBS)
+
 fchmodat$(EXEEXT): $(fchmodat_OBJECTS) $(fchmodat_DEPENDENCIES) $(EXTRA_fchmodat_DEPENDENCIES) 
 	@rm -f fchmodat$(EXEEXT)
 	$(AM_V_CCLD)$(LINK) $(fchmodat_OBJECTS) $(fchmodat_LDADD) $(LIBS)
@@ -10176,6 +10188,7 @@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/fanotify_mark-Xverbose.Po@am__quote@ # am--include-marker
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/fanotify_mark.Po@am__quote@ # am--include-marker
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/fchdir.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/fchmod-y.Po@am__quote@ # am--include-marker
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/fchmod.Po@am__quote@ # am--include-marker
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/fchmodat.Po@am__quote@ # am--include-marker
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/fchown.Po@am__quote@ # am--include-marker
@@ -10394,6 +10407,7 @@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/lchown32.Po@am__quote@ # am--include-marker
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libtests_a-create_nl_socket.Po@am__quote@ # am--include-marker
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libtests_a-create_tmpfile.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libtests_a-dirfd.Po@am__quote@ # am--include-marker
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libtests_a-errno2name.Po@am__quote@ # am--include-marker
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libtests_a-error_msg.Po@am__quote@ # am--include-marker
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libtests_a-fill_memory.Po@am__quote@ # am--include-marker
@@ -10975,6 +10987,20 @@
 @AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
 @am__fastdepCC_FALSE@	$(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libtests_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o libtests_a-create_tmpfile.obj `if test -f 'create_tmpfile.c'; then $(CYGPATH_W) 'create_tmpfile.c'; else $(CYGPATH_W) '$(srcdir)/create_tmpfile.c'; fi`
 
+libtests_a-dirfd.o: dirfd.c
+@am__fastdepCC_TRUE@	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libtests_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT libtests_a-dirfd.o -MD -MP -MF $(DEPDIR)/libtests_a-dirfd.Tpo -c -o libtests_a-dirfd.o `test -f 'dirfd.c' || echo '$(srcdir)/'`dirfd.c
+@am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/libtests_a-dirfd.Tpo $(DEPDIR)/libtests_a-dirfd.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@	$(AM_V_CC)source='dirfd.c' object='libtests_a-dirfd.o' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@	$(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libtests_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o libtests_a-dirfd.o `test -f 'dirfd.c' || echo '$(srcdir)/'`dirfd.c
+
+libtests_a-dirfd.obj: dirfd.c
+@am__fastdepCC_TRUE@	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libtests_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT libtests_a-dirfd.obj -MD -MP -MF $(DEPDIR)/libtests_a-dirfd.Tpo -c -o libtests_a-dirfd.obj `if test -f 'dirfd.c'; then $(CYGPATH_W) 'dirfd.c'; else $(CYGPATH_W) '$(srcdir)/dirfd.c'; fi`
+@am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/libtests_a-dirfd.Tpo $(DEPDIR)/libtests_a-dirfd.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@	$(AM_V_CC)source='dirfd.c' object='libtests_a-dirfd.obj' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@	$(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libtests_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o libtests_a-dirfd.obj `if test -f 'dirfd.c'; then $(CYGPATH_W) 'dirfd.c'; else $(CYGPATH_W) '$(srcdir)/dirfd.c'; fi`
+
 libtests_a-errno2name.o: errno2name.c
 @am__fastdepCC_TRUE@	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libtests_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT libtests_a-errno2name.o -MD -MP -MF $(DEPDIR)/libtests_a-errno2name.Tpo -c -o libtests_a-errno2name.o `test -f 'errno2name.c' || echo '$(srcdir)/'`errno2name.c
 @am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/libtests_a-errno2name.Tpo $(DEPDIR)/libtests_a-errno2name.Po
@@ -14015,6 +14041,9 @@
 $(srcdir)/fchmod.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
 	$(AM_V_GEN) $^ $@
 
+$(srcdir)/fchmod-y.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
 $(srcdir)/fchmodat.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
 	$(AM_V_GEN) $^ $@
 
Index: strace-5.7/tests-mx32/Makefile.in
===================================================================
--- strace-5.7.orig/tests-mx32/Makefile.in	2021-08-24 19:31:43.662872392 +0200
+++ strace-5.7/tests-mx32/Makefile.in	2021-08-24 19:32:04.039699924 +0200
@@ -303,7 +303,7 @@
 	fanotify_init$(EXEEXT) fanotify_mark$(EXEEXT) \
 	fanotify_mark-Xabbrev$(EXEEXT) fanotify_mark-Xraw$(EXEEXT) \
 	fanotify_mark-Xverbose$(EXEEXT) fchdir$(EXEEXT) \
-	fchmod$(EXEEXT) fchmodat$(EXEEXT) fchown$(EXEEXT) \
+	fchmod$(EXEEXT) fchmod-y$(EXEEXT) fchmodat$(EXEEXT) fchown$(EXEEXT) \
 	fchown32$(EXEEXT) fchownat$(EXEEXT) fcntl$(EXEEXT) \
 	fcntl64$(EXEEXT) fdatasync$(EXEEXT) fflush$(EXEEXT) \
 	file_handle$(EXEEXT) file_ioctl$(EXEEXT) finit_module$(EXEEXT) \
@@ -551,7 +551,7 @@
 libtests_a_AR = $(AR) $(ARFLAGS)
 libtests_a_LIBADD =
 am_libtests_a_OBJECTS = libtests_a-create_nl_socket.$(OBJEXT) \
-	libtests_a-create_tmpfile.$(OBJEXT) \
+	libtests_a-create_tmpfile.$(OBJEXT) libtests_a-dirfd.$(OBJEXT) \
 	libtests_a-errno2name.$(OBJEXT) libtests_a-error_msg.$(OBJEXT) \
 	libtests_a-fill_memory.$(OBJEXT) \
 	libtests_a-get_page_size.$(OBJEXT) \
@@ -986,6 +986,10 @@
 fchmod_OBJECTS = fchmod.$(OBJEXT)
 fchmod_LDADD = $(LDADD)
 fchmod_DEPENDENCIES = libtests.a
+fchmod_y_SOURCES = fchmod-y.c
+fchmod_y_OBJECTS = fchmod-y.$(OBJEXT)
+fchmod_y_LDADD = $(LDADD)
+fchmod_y_DEPENDENCIES = libtests.a
 fchmodat_SOURCES = fchmodat.c
 fchmodat_OBJECTS = fchmodat.$(OBJEXT)
 fchmodat_LDADD = $(LDADD)
@@ -4508,9 +4512,10 @@
 	execve-v.c execveat.c execveat-v.c faccessat.c fadvise64.c \
 	fadvise64_64.c fallocate.c fanotify_init.c fanotify_mark.c \
 	fanotify_mark-Xabbrev.c fanotify_mark-Xraw.c \
-	fanotify_mark-Xverbose.c fchdir.c fchmod.c fchmodat.c fchown.c \
-	fchown32.c fchownat.c fcntl.c fcntl--pidns-translation.c \
-	fcntl64.c fcntl64--pidns-translation.c fdatasync.c fflush.c \
+	fanotify_mark-Xverbose.c fchdir.c fchmod.c fchmod-y.c \
+	fchmodat.c fchown.c fchown32.c fchownat.c fcntl.c \
+	fcntl--pidns-translation.c fcntl64.c \
+	fcntl64--pidns-translation.c fdatasync.c fflush.c \
 	file_handle.c file_ioctl.c filter-unavailable.c \
 	filter_seccomp-flag.c filter_seccomp-perf.c finit_module.c \
 	flock.c fork--pidns-translation.c fork-f.c fsconfig.c \
@@ -4755,9 +4760,10 @@
 	execve-v.c execveat.c execveat-v.c faccessat.c fadvise64.c \
 	fadvise64_64.c fallocate.c fanotify_init.c fanotify_mark.c \
 	fanotify_mark-Xabbrev.c fanotify_mark-Xraw.c \
-	fanotify_mark-Xverbose.c fchdir.c fchmod.c fchmodat.c fchown.c \
-	fchown32.c fchownat.c fcntl.c fcntl--pidns-translation.c \
-	fcntl64.c fcntl64--pidns-translation.c fdatasync.c fflush.c \
+	fanotify_mark-Xverbose.c fchdir.c fchmod.c fchmod-y.c \
+	fchmodat.c fchown.c fchown32.c fchownat.c fcntl.c \
+	fcntl--pidns-translation.c fcntl64.c \
+	fcntl64--pidns-translation.c fdatasync.c fflush.c \
 	file_handle.c file_ioctl.c filter-unavailable.c \
 	filter_seccomp-flag.c filter_seccomp-perf.c finit_module.c \
 	flock.c fork--pidns-translation.c fork-f.c fsconfig.c \
@@ -5397,6 +5403,7 @@
 libtests_a_SOURCES = \
 	create_nl_socket.c \
 	create_tmpfile.c \
+	dirfd.c \
 	errno2name.c \
 	error_msg.c \
 	fill_memory.c \
@@ -5507,6 +5514,7 @@
   fanotify_mark-Xverbose \
   fchdir \
   fchmod \
+  fchmod-y \
   fchmodat \
   fchown \
   fchown32 \
@@ -6151,11 +6159,11 @@
 	fanotify_init.gen.test fanotify_mark.gen.test \
 	fanotify_mark-Xabbrev.gen.test fanotify_mark-Xraw.gen.test \
 	fanotify_mark-Xverbose.gen.test fchdir.gen.test \
-	fchmod.gen.test fchmodat.gen.test fchown.gen.test \
-	fchown32.gen.test fchownat.gen.test fcntl.gen.test \
-	fcntl--pidns-translation.gen.test fcntl64.gen.test \
-	fcntl64--pidns-translation.gen.test fdatasync.gen.test \
-	file_handle.gen.test file_ioctl.gen.test \
+	fchmod.gen.test fchmod-y.gen.test fchmodat.gen.test \
+	fchown.gen.test fchown32.gen.test fchownat.gen.test \
+	fcntl.gen.test fcntl--pidns-translation.gen.test \
+	fcntl64.gen.test fcntl64--pidns-translation.gen.test \
+	fdatasync.gen.test file_handle.gen.test file_ioctl.gen.test \
 	filter_seccomp.gen.test filter_seccomp-flag.gen.test \
 	finit_module.gen.test flock.gen.test fork-f.gen.test \
 	fsconfig.gen.test fsconfig-P.gen.test fsmount.gen.test \
@@ -7242,6 +7250,10 @@
 	@rm -f fchmod$(EXEEXT)
 	$(AM_V_CCLD)$(LINK) $(fchmod_OBJECTS) $(fchmod_LDADD) $(LIBS)
 
+fchmod-y$(EXEEXT): $(fchmod_y_OBJECTS) $(fchmod_y_DEPENDENCIES) $(EXTRA_fchmod_y_DEPENDENCIES) 
+	@rm -f fchmod-y$(EXEEXT)
+	$(AM_V_CCLD)$(LINK) $(fchmod_y_OBJECTS) $(fchmod_y_LDADD) $(LIBS)
+
 fchmodat$(EXEEXT): $(fchmodat_OBJECTS) $(fchmodat_DEPENDENCIES) $(EXTRA_fchmodat_DEPENDENCIES) 
 	@rm -f fchmodat$(EXEEXT)
 	$(AM_V_CCLD)$(LINK) $(fchmodat_OBJECTS) $(fchmodat_LDADD) $(LIBS)
@@ -10176,6 +10188,7 @@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/fanotify_mark-Xverbose.Po@am__quote@ # am--include-marker
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/fanotify_mark.Po@am__quote@ # am--include-marker
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/fchdir.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/fchmod-y.Po@am__quote@ # am--include-marker
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/fchmod.Po@am__quote@ # am--include-marker
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/fchmodat.Po@am__quote@ # am--include-marker
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/fchown.Po@am__quote@ # am--include-marker
@@ -10394,6 +10407,7 @@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/lchown32.Po@am__quote@ # am--include-marker
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libtests_a-create_nl_socket.Po@am__quote@ # am--include-marker
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libtests_a-create_tmpfile.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libtests_a-dirfd.Po@am__quote@ # am--include-marker
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libtests_a-errno2name.Po@am__quote@ # am--include-marker
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libtests_a-error_msg.Po@am__quote@ # am--include-marker
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libtests_a-fill_memory.Po@am__quote@ # am--include-marker
@@ -10975,6 +10987,20 @@
 @AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
 @am__fastdepCC_FALSE@	$(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libtests_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o libtests_a-create_tmpfile.obj `if test -f 'create_tmpfile.c'; then $(CYGPATH_W) 'create_tmpfile.c'; else $(CYGPATH_W) '$(srcdir)/create_tmpfile.c'; fi`
 
+libtests_a-dirfd.o: dirfd.c
+@am__fastdepCC_TRUE@	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libtests_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT libtests_a-dirfd.o -MD -MP -MF $(DEPDIR)/libtests_a-dirfd.Tpo -c -o libtests_a-dirfd.o `test -f 'dirfd.c' || echo '$(srcdir)/'`dirfd.c
+@am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/libtests_a-dirfd.Tpo $(DEPDIR)/libtests_a-dirfd.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@	$(AM_V_CC)source='dirfd.c' object='libtests_a-dirfd.o' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@	$(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libtests_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o libtests_a-dirfd.o `test -f 'dirfd.c' || echo '$(srcdir)/'`dirfd.c
+
+libtests_a-dirfd.obj: dirfd.c
+@am__fastdepCC_TRUE@	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libtests_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT libtests_a-dirfd.obj -MD -MP -MF $(DEPDIR)/libtests_a-dirfd.Tpo -c -o libtests_a-dirfd.obj `if test -f 'dirfd.c'; then $(CYGPATH_W) 'dirfd.c'; else $(CYGPATH_W) '$(srcdir)/dirfd.c'; fi`
+@am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/libtests_a-dirfd.Tpo $(DEPDIR)/libtests_a-dirfd.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@	$(AM_V_CC)source='dirfd.c' object='libtests_a-dirfd.obj' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@	$(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libtests_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o libtests_a-dirfd.obj `if test -f 'dirfd.c'; then $(CYGPATH_W) 'dirfd.c'; else $(CYGPATH_W) '$(srcdir)/dirfd.c'; fi`
+
 libtests_a-errno2name.o: errno2name.c
 @am__fastdepCC_TRUE@	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libtests_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT libtests_a-errno2name.o -MD -MP -MF $(DEPDIR)/libtests_a-errno2name.Tpo -c -o libtests_a-errno2name.o `test -f 'errno2name.c' || echo '$(srcdir)/'`errno2name.c
 @am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/libtests_a-errno2name.Tpo $(DEPDIR)/libtests_a-errno2name.Po
@@ -14015,6 +14041,9 @@
 $(srcdir)/fchmod.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
 	$(AM_V_GEN) $^ $@
 
+$(srcdir)/fchmod-y.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
 $(srcdir)/fchmodat.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
 	$(AM_V_GEN) $^ $@