From b31fa6702f3edda1e55928089f7c30b7dd116b38 Mon Sep 17 00:00:00 2001 From: Liwei Ge Date: Wed, 13 Apr 2022 12:18:31 +0800 Subject: [PATCH] update to strace-5.13-4.el8.src.rpm Signed-off-by: Liwei Ge --- ...ace-anolis-fix-nsyscalls-check-error.patch | 95 - ...struct-io_cqring_offsets-compile-tim.patch | 44 - ...-io_uring-Add-io_cqring_offset-flags.patch | 383 - 0115-xlat-update-IORING_-constants.patch | 217 - ...field-lines-that-start-with-comments.patch | 84 - ...t_fields.h-add-PRINT_FIELD_LEN-macro.patch | 155 - ...ilog-functions-from-util.c-to-defs.h.patch | 157 - ...-nf.test-replace-getpid-with-geteuid.patch | 235 - 0123-fcntl-use-print_fields.h-macros.patch | 60 - 0124-kcmp-fix-KCMP_FILE-decoding.patch | 28 - ...-printing-of-siginfo_t.si_pid-and-si.patch | 518 - ...UID-instead-of-printuid-where-approp.patch | 105 - ...print-process-ids-as-signed-integers.patch | 525 - ...-tcb-parameter-of-read_int_from_file.patch | 56 - ...-tcb-parameters-to-various-functions.patch | 417 - ...lass-trace-syscalls-associated-with-.patch | 1391 -- 0131-Introduce-SYS_FUNC-tkill.patch | 415 - ...ests-check-decoding-of-tkill-syscall.patch | 683 - ...sts-check-decoding-of-tgkill-syscall.patch | 656 - 0134-PID-namespace-translation-support.patch | 1478 -- 0135-Use-printpid-in-decoders.patch | 1212 - 0136-Use-get_proc_pid-for-proc-paths.patch | 93 - ...mplement-testing-framework-for-pidns.patch | 1360 -- ...-tests-for-PID-namespace-translation.patch | 20054 ---------------- 0142-tests-add-fchmod-y-test.patch | 1102 - ...create_and_enter_subdir-and-leave_an.patch | 1270 - ...ding-of-faccessat-syscall-in-P-y-and.patch | 795 - 0145-xmalloc-introduce-xasprintf.patch | 65 - ...ts-use-xasprintf-instead-of-asprintf.patch | 891 - ...int-f_handle-as-a-hexadecimal-string.patch | 276 - ...execve-test-with-fresh-linux-kernels.patch | 486 - ...ext-full-option-to-display-SELinux-c.patch | 13901 ----------- ...rate-HAVE_-_SELINUX_RUNTIME-config-d.patch | 10 +- ...PREREQ_GE-and-GLIBC_PREREQ_LT-macros.patch | 209 - ...disable-TEST_MSGCTL_BOGUS_ADDR-on-gl.patch | 103 - ...ST_MSGCTL_BOGUS_ADDR-in-ipc_msg-test.patch | 89 - ...sts-for-invalid-msgctl-commands-on-g.patch | 214 - ...mctl-IPC_STAT-test-with-a-bogus-addr.patch | 169 - ...sts-for-invalid-shmctl-commands-on-g.patch | 280 - ...sts-for-invalid-semctl-commands-on-g.patch | 199 - ...ree-allocated-data-on-the-error-path.patch | 77 + ...T-macros-add-MASK-macros-add-_SAFE-m.patch | 70 + 0165-trie-use-BIT-and-MASK-macros.patch | 151 + ..._params-access-in-tee_fetch_buf_data.patch | 52 + ...ndex-fix-IFNAME_QUOTED_SZ-definition.patch | 55 + 0168-m4-fix-st_SELINUX-check.patch | 208 + ...ying-of-expected-context-upon-mismat.patch | 6958 ++++++ ...et-errno-before-SELinux-context-mani.patch | 122 + ...econtext-add-secontext-field-getters.patch | 356 + ...vide-fallback-values-for-secontext-f.patch | 181 + ...eliminate-separate-secontext_format-.patch | 63 + ...et-context-to-the-expected-one-if-a-.patch | 190 + 2001-limit-qual_fault-scope-on-aarch64.patch | 0 2003-undef-ARRAY_SIZE.patch | 6 +- ...tl-semctl-shmctl-backport-workaround.patch | 0 download | 1 + strace-5.7.tar.xz | Bin 1805044 -> 0 bytes strace.spec | 309 +- 58 files changed, 8668 insertions(+), 50611 deletions(-) delete mode 100644 0001-strace-anolis-fix-nsyscalls-check-error.patch delete mode 100755 0113-io_uring-Remove-struct-io_cqring_offsets-compile-tim.patch delete mode 100755 0114-io_uring-Add-io_cqring_offset-flags.patch delete mode 100755 0115-xlat-update-IORING_-constants.patch delete mode 100755 0118-types-skip-field-lines-that-start-with-comments.patch delete mode 100755 0119-print_fields.h-add-PRINT_FIELD_LEN-macro.patch delete mode 100755 0120-Move-ilog-functions-from-util.c-to-defs.h.patch delete mode 100755 0122-tests-inject-nf.test-replace-getpid-with-geteuid.patch delete mode 100755 0123-fcntl-use-print_fields.h-macros.patch delete mode 100755 0124-kcmp-fix-KCMP_FILE-decoding.patch delete mode 100755 0125-printsiginfo-fix-printing-of-siginfo_t.si_pid-and-si.patch delete mode 100755 0126-Use-PRINT_FIELD_UID-instead-of-printuid-where-approp.patch delete mode 100755 0127-Consistently-print-process-ids-as-signed-integers.patch delete mode 100755 0128-Remove-tcb-parameter-of-read_int_from_file.patch delete mode 100755 0129-Add-struct-tcb-parameters-to-various-functions.patch delete mode 100755 0130-Modify-process-class-trace-syscalls-associated-with-.patch delete mode 100755 0131-Introduce-SYS_FUNC-tkill.patch delete mode 100755 0132-tests-check-decoding-of-tkill-syscall.patch delete mode 100755 0133-tests-check-decoding-of-tgkill-syscall.patch delete mode 100755 0134-PID-namespace-translation-support.patch delete mode 100755 0135-Use-printpid-in-decoders.patch delete mode 100755 0136-Use-get_proc_pid-for-proc-paths.patch delete mode 100755 0137-Implement-testing-framework-for-pidns.patch delete mode 100755 0138-Add-tests-for-PID-namespace-translation.patch delete mode 100755 0142-tests-add-fchmod-y-test.patch delete mode 100755 0143-tests-introduce-create_and_enter_subdir-and-leave_an.patch delete mode 100755 0144-tests-check-decoding-of-faccessat-syscall-in-P-y-and.patch delete mode 100755 0145-xmalloc-introduce-xasprintf.patch delete mode 100755 0146-tests-use-xasprintf-instead-of-asprintf.patch delete mode 100755 0147-file_handle-print-f_handle-as-a-hexadecimal-string.patch delete mode 100755 0148-tests-fix-execve-test-with-fresh-linux-kernels.patch delete mode 100755 0149-Implement-secontext-full-option-to-display-SELinux-c.patch mode change 100755 => 100644 0155-m4-mpers.m4-generate-HAVE_-_SELINUX_RUNTIME-config-d.patch delete mode 100755 0156-Introduce-GLIBC_PREREQ_GE-and-GLIBC_PREREQ_LT-macros.patch delete mode 100755 0157-tests-ipc_msg.c-disable-TEST_MSGCTL_BOGUS_ADDR-on-gl.patch delete mode 100755 0158-tests-disable-TEST_MSGCTL_BOGUS_ADDR-in-ipc_msg-test.patch delete mode 100755 0159-tests-disable-tests-for-invalid-msgctl-commands-on-g.patch delete mode 100755 0160-tests-disable-shmctl-IPC_STAT-test-with-a-bogus-addr.patch delete mode 100755 0161-tests-disable-tests-for-invalid-shmctl-commands-on-g.patch delete mode 100755 0162-tests-disable-tests-for-invalid-semctl-commands-on-g.patch create mode 100644 0163-filter_qualify-free-allocated-data-on-the-error-path.patch create mode 100644 0164-macros-expand-BIT-macros-add-MASK-macros-add-_SAFE-m.patch create mode 100644 0165-trie-use-BIT-and-MASK-macros.patch create mode 100644 0166-tee-rewrite-num_params-access-in-tee_fetch_buf_data.patch create mode 100644 0167-print_ifindex-fix-IFNAME_QUOTED_SZ-definition.patch create mode 100644 0168-m4-fix-st_SELINUX-check.patch create mode 100644 0169-Implement-displaying-of-expected-context-upon-mismat.patch create mode 100644 0170-tests-linkat-reset-errno-before-SELinux-context-mani.patch create mode 100644 0171-tests-secontext-add-secontext-field-getters.patch create mode 100644 0172-tests-linkat-provide-fallback-values-for-secontext-f.patch create mode 100644 0173-tests-secontext-eliminate-separate-secontext_format-.patch create mode 100644 0174-tests-linkat-reset-context-to-the-expected-one-if-a-.patch mode change 100755 => 100644 2001-limit-qual_fault-scope-on-aarch64.patch mode change 100755 => 100644 2003-undef-ARRAY_SIZE.patch mode change 100755 => 100644 2004-glibc-msgctl-semctl-shmctl-backport-workaround.patch create mode 100644 download delete mode 100755 strace-5.7.tar.xz mode change 100755 => 100644 strace.spec diff --git a/0001-strace-anolis-fix-nsyscalls-check-error.patch b/0001-strace-anolis-fix-nsyscalls-check-error.patch deleted file mode 100644 index fd2e27d..0000000 --- a/0001-strace-anolis-fix-nsyscalls-check-error.patch +++ /dev/null @@ -1,95 +0,0 @@ -From 6fff5c1974c097233b31b24a7e1bbaf8e71f546d Mon Sep 17 00:00:00 2001 -From: mahailiang -Date: Thu, 4 Feb 2021 09:32:02 +0800 -Subject: [PATCH] fix nsyscalls check error - ---- - tests-m32/nsyscalls.c | 8 ++++---- - tests-mx32/nsyscalls.c | 8 ++++---- - tests/nsyscalls.c | 8 ++++---- - 3 files changed, 12 insertions(+), 12 deletions(-) - -diff --git a/tests-m32/nsyscalls.c b/tests-m32/nsyscalls.c -index 681fb31..e2ebbf9 100644 ---- a/tests-m32/nsyscalls.c -+++ b/tests-m32/nsyscalls.c -@@ -82,18 +82,18 @@ test_syscall(const unsigned long nr) - - #ifdef LINUX_MIPSO32 - printf("syscall(%#lx, %#lx, %#lx, %#lx, %#lx, %#lx, %#lx)" -- " = %ld ENOSYS (%m)\n", nr | SYSCALL_BIT, -- a[0], a[1], a[2], a[3], a[4], a[5], rc); -+ " = %s\n", nr | SYSCALL_BIT, -+ a[0], a[1], a[2], a[3], a[4], a[5], sprintrc(rc)); - #else - printf("syscall_%#lx(%#llx, %#llx, %#llx, %#llx, %#llx, %#llx)" -- " = %ld ENOSYS (%m)\n", nr | SYSCALL_BIT, -+ " = %s\n", nr | SYSCALL_BIT, - (unsigned long long) a[0], - (unsigned long long) a[1], - (unsigned long long) a[2], - (unsigned long long) a[3], - (unsigned long long) a[4], - (unsigned long long) a[5], -- rc); -+ sprintrc(rc)); - #endif - } - -diff --git a/tests-mx32/nsyscalls.c b/tests-mx32/nsyscalls.c -index 681fb31..e2ebbf9 100644 ---- a/tests-mx32/nsyscalls.c -+++ b/tests-mx32/nsyscalls.c -@@ -82,18 +82,18 @@ test_syscall(const unsigned long nr) - - #ifdef LINUX_MIPSO32 - printf("syscall(%#lx, %#lx, %#lx, %#lx, %#lx, %#lx, %#lx)" -- " = %ld ENOSYS (%m)\n", nr | SYSCALL_BIT, -- a[0], a[1], a[2], a[3], a[4], a[5], rc); -+ " = %s\n", nr | SYSCALL_BIT, -+ a[0], a[1], a[2], a[3], a[4], a[5], sprintrc(rc)); - #else - printf("syscall_%#lx(%#llx, %#llx, %#llx, %#llx, %#llx, %#llx)" -- " = %ld ENOSYS (%m)\n", nr | SYSCALL_BIT, -+ " = %s\n", nr | SYSCALL_BIT, - (unsigned long long) a[0], - (unsigned long long) a[1], - (unsigned long long) a[2], - (unsigned long long) a[3], - (unsigned long long) a[4], - (unsigned long long) a[5], -- rc); -+ sprintrc(rc)); - #endif - } - -diff --git a/tests/nsyscalls.c b/tests/nsyscalls.c -index ce40cf2..2fc6938 100644 ---- a/tests/nsyscalls.c -+++ b/tests/nsyscalls.c -@@ -62,18 +62,18 @@ test_syscall(const unsigned long nr) - - #ifdef LINUX_MIPSO32 - printf("syscall(%#lx, %#lx, %#lx, %#lx, %#lx, %#lx, %#lx)" -- " = %ld ENOSYS (%m)\n", nr | SYSCALL_BIT, -- a[0], a[1], a[2], a[3], a[4], a[5], rc); -+ " = %s\n", nr | SYSCALL_BIT, -+ a[0], a[1], a[2], a[3], a[4], a[5], sprintrc(rc)); - #else - printf("syscall_%#lx(%#llx, %#llx, %#llx, %#llx, %#llx, %#llx)" -- " = %ld ENOSYS (%m)\n", nr | SYSCALL_BIT, -+ " = %s\n", nr | SYSCALL_BIT, - (unsigned long long) a[0], - (unsigned long long) a[1], - (unsigned long long) a[2], - (unsigned long long) a[3], - (unsigned long long) a[4], - (unsigned long long) a[5], -- rc); -+ sprintrc(rc)); - #endif - } - --- -2.18.2 - diff --git a/0113-io_uring-Remove-struct-io_cqring_offsets-compile-tim.patch b/0113-io_uring-Remove-struct-io_cqring_offsets-compile-tim.patch deleted file mode 100755 index 5040cd6..0000000 --- a/0113-io_uring-Remove-struct-io_cqring_offsets-compile-tim.patch +++ /dev/null @@ -1,44 +0,0 @@ -From ff85f882bbd8a399e036b8465520d1ff0867f4f1 Mon Sep 17 00:00:00 2001 -From: Chris Packham -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/0114-io_uring-Add-io_cqring_offset-flags.patch b/0114-io_uring-Add-io_cqring_offset-flags.patch deleted file mode 100755 index fc37a3f..0000000 --- a/0114-io_uring-Add-io_cqring_offset-flags.patch +++ /dev/null @@ -1,383 +0,0 @@ -From c51b292b237214ccfcae5a84085f8d0a7e85c8ba Mon Sep 17 00:00:00 2001 -From: Chris Packham -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 -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\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 -+ ac_fn_c_check_member "$LINENO" "struct io_cqring_offsets" "flags" "ac_cv_member_struct_io_cqring_offsets_flags" "#include -+" -+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 - " - 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\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\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/0115-xlat-update-IORING_-constants.patch b/0115-xlat-update-IORING_-constants.patch deleted file mode 100755 index 34b14d1..0000000 --- a/0115-xlat-update-IORING_-constants.patch +++ /dev/null @@ -1,217 +0,0 @@ -From dd6b70f5d4db14b432f424071d262e87fa944c96 Mon Sep 17 00:00:00 2001 -From: "Dmitry V. Levin" -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/0118-types-skip-field-lines-that-start-with-comments.patch b/0118-types-skip-field-lines-that-start-with-comments.patch deleted file mode 100755 index b9a37cd..0000000 --- a/0118-types-skip-field-lines-that-start-with-comments.patch +++ /dev/null @@ -1,84 +0,0 @@ -From b0a361c0a9095b396ff7100203c767ec9ffd2cfa Mon Sep 17 00:00:00 2001 -From: "Dmitry V. Levin" -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 - " --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/0119-print_fields.h-add-PRINT_FIELD_LEN-macro.patch b/0119-print_fields.h-add-PRINT_FIELD_LEN-macro.patch deleted file mode 100755 index c955bde..0000000 --- a/0119-print_fields.h-add-PRINT_FIELD_LEN-macro.patch +++ /dev/null @@ -1,155 +0,0 @@ -From 8806a21b612d76c8732d0df2ebaf52b62166ce51 Mon Sep 17 00:00:00 2001 -From: =?UTF-8?q?=C3=81kos=20Uzonyi?= -Date: Sat, 13 Jun 2020 18:18:31 +0200 -Subject: [PATCH 119/138] print_fields.h: add PRINT_FIELD_LEN macro - -* print_fields.h (PRINT_FIELD_LEN): New macro. -* net.c: (print_get_linger, print_get_ucred, print_tpacket_stats): -Rewrite using PRINT_FIELD_LEN. ---- - net.c | 90 ++++++---------------------------------------------------- - print_fields.h | 15 ++++++++++ - 2 files changed, 23 insertions(+), 82 deletions(-) - -diff --git a/net.c b/net.c -index a58fa92..9ea34b2 100644 ---- a/net.c -+++ b/net.c -@@ -579,24 +579,8 @@ print_get_linger(struct tcb *const tcp, const kernel_ulong_t addr, - if (umoven_or_printaddr(tcp, addr, len, &linger)) - return; - -- if (len < sizeof(linger.l_onoff)) { -- tprints("{l_onoff="); -- print_quoted_string((void *) &linger.l_onoff, -- len, QUOTE_FORCE_HEX); -- } else { -- PRINT_FIELD_D("{", linger, l_onoff); -- -- if (len > offsetof(struct linger, l_linger)) { -- len -= offsetof(struct linger, l_linger); -- if (len < sizeof(linger.l_linger)) { -- tprints(", l_linger="); -- print_quoted_string((void *) &linger.l_linger, -- len, QUOTE_FORCE_HEX); -- } else { -- PRINT_FIELD_D(", ", linger, l_linger); -- } -- } -- } -+ PRINT_FIELD_LEN("{", linger, l_onoff, len, PRINT_FIELD_D); -+ PRINT_FIELD_LEN(", ", linger, l_linger, len, PRINT_FIELD_D); - tprints("}"); - } - -@@ -617,38 +601,9 @@ print_get_ucred(struct tcb *const tcp, const kernel_ulong_t addr, - if (umoven_or_printaddr(tcp, addr, len, &uc)) - return; - -- if (len < sizeof(uc.pid)) { -- tprints("{pid="); -- print_quoted_string((void *) &uc.pid, -- len, QUOTE_FORCE_HEX); -- } else { -- PRINT_FIELD_D("{", uc, pid); -- -- if (len > offsetof(struct ucred, uid)) { -- len -= offsetof(struct ucred, uid); -- if (len < sizeof(uc.uid)) { -- tprints(", uid="); -- print_quoted_string((void *) &uc.uid, -- len, QUOTE_FORCE_HEX); -- } else { -- PRINT_FIELD_UID(", ", uc, uid); -- -- if (len > offsetof(struct ucred, gid) - -- offsetof(struct ucred, uid)) { -- len -= offsetof(struct ucred, gid) - -- offsetof(struct ucred, uid); -- if (len < sizeof(uc.gid)) { -- tprints(", gid="); -- print_quoted_string((void *) &uc.gid, -- len, -- QUOTE_FORCE_HEX); -- } else { -- PRINT_FIELD_UID(", ", uc, gid); -- } -- } -- } -- } -- } -+ PRINT_FIELD_LEN("{", uc, pid, len, PRINT_FIELD_D); -+ PRINT_FIELD_LEN(", ", uc, uid, len, PRINT_FIELD_UID); -+ PRINT_FIELD_LEN(", ", uc, gid, len, PRINT_FIELD_UID); - tprints("}"); - } - -@@ -688,38 +643,9 @@ print_tpacket_stats(struct tcb *const tcp, const kernel_ulong_t addr, - if (umoven_or_printaddr(tcp, addr, len, &stats)) - return; - -- if (len < sizeof(stats.tp_packets)) { -- tprints("{tp_packets="); -- print_quoted_string((void *) &stats.tp_packets, -- len, QUOTE_FORCE_HEX); -- } else { -- PRINT_FIELD_U("{", stats, tp_packets); -- -- if (len > offsetof(struct tp_stats, tp_drops)) { -- len -= offsetof(struct tp_stats, tp_drops); -- if (len < sizeof(stats.tp_drops)) { -- tprints(", tp_drops="); -- print_quoted_string((void *) &stats.tp_drops, -- len, QUOTE_FORCE_HEX); -- } else { -- PRINT_FIELD_U(", ", stats, tp_drops); -- -- if (len > offsetof(struct tp_stats, tp_freeze_q_cnt) - -- offsetof(struct tp_stats, tp_drops)) { -- len -= offsetof(struct tp_stats, tp_freeze_q_cnt) - -- offsetof(struct tp_stats, tp_drops); -- if (len < sizeof(stats.tp_freeze_q_cnt)) { -- tprints(", tp_freeze_q_cnt="); -- print_quoted_string((void *) &stats.tp_freeze_q_cnt, -- len, -- QUOTE_FORCE_HEX); -- } else { -- PRINT_FIELD_U(", ", stats, tp_freeze_q_cnt); -- } -- } -- } -- } -- } -+ PRINT_FIELD_LEN("{", stats, tp_packets, len, PRINT_FIELD_U); -+ PRINT_FIELD_LEN(", ", stats, tp_drops, len, PRINT_FIELD_U); -+ PRINT_FIELD_LEN(", ", stats, tp_freeze_q_cnt, len, PRINT_FIELD_U); - tprints("}"); - } - #endif /* PACKET_STATISTICS */ -diff --git a/print_fields.h b/print_fields.h -index 02c56bf..70dbbff 100644 ---- a/print_fields.h -+++ b/print_fields.h -@@ -277,4 +277,19 @@ - (size_), (hwtype_)); \ - } while (0) - -+# define PRINT_FIELD_LEN(prefix_, where_, field_, \ -+ len_, print_func_, ...) \ -+ do { \ -+ unsigned int start = offsetof(typeof(where_), field_); \ -+ unsigned int end = start + sizeof(where_.field_); \ -+ if (len_ >= end) { \ -+ print_func_(prefix_, where_, field_, \ -+ ##__VA_ARGS__); \ -+ } else if (len_ > start) { \ -+ tprintf("%s%s=", prefix_, #field_); \ -+ print_quoted_string((void *)&where_.field_, \ -+ len_ - start, QUOTE_FORCE_HEX); \ -+ } \ -+ } while (0) -+ - #endif /* !STRACE_PRINT_FIELDS_H */ --- -2.1.4 - diff --git a/0120-Move-ilog-functions-from-util.c-to-defs.h.patch b/0120-Move-ilog-functions-from-util.c-to-defs.h.patch deleted file mode 100755 index 8d70014..0000000 --- a/0120-Move-ilog-functions-from-util.c-to-defs.h.patch +++ /dev/null @@ -1,157 +0,0 @@ -From c9e41cd3485fa1a65dc6206c5b210b4be4c5597c Mon Sep 17 00:00:00 2001 -From: =?UTF-8?q?=C3=81kos=20Uzonyi?= -Date: Sat, 13 Jun 2020 18:18:32 +0200 -Subject: [PATCH 120/138] Move ilog* functions from util.c to defs.h - -* util.c (ILOG2_ITER_, ilog2_klong, ilog2_64, ilog2_32): Move ... -* defs.h: ... here. ---- - defs.h | 60 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ - util.c | 62 -------------------------------------------------------------- - 2 files changed, 60 insertions(+), 62 deletions(-) - -diff --git a/defs.h b/defs.h -index 3aa07fb..d8bd513 100644 ---- a/defs.h -+++ b/defs.h -@@ -1698,4 +1698,64 @@ scno_is_valid(kernel_ulong_t scno) - - # define SYS_FUNC(syscall_name) int SYS_FUNC_NAME(sys_ ## syscall_name)(struct tcb *tcp) - -+#define ILOG2_ITER_(val_, ret_, bit_) \ -+ do { \ -+ typeof(ret_) shift_ = \ -+ ((val_) > ((((typeof(val_)) 1) \ -+ << (1 << (bit_))) - 1)) << (bit_); \ -+ (val_) >>= shift_; \ -+ (ret_) |= shift_; \ -+ } while (0) -+ -+/** -+ * Calculate floor(log2(val)), with the exception of val == 0, for which 0 -+ * is returned as well. -+ * -+ * @param val 64-bit value to calculate integer base-2 logarithm for. -+ * @return (unsigned int) floor(log2(val)) if val > 0, 0 if val == 0. -+ */ -+static inline unsigned int -+ilog2_64(uint64_t val) -+{ -+ unsigned int ret = 0; -+ -+ ILOG2_ITER_(val, ret, 5); -+ ILOG2_ITER_(val, ret, 4); -+ ILOG2_ITER_(val, ret, 3); -+ ILOG2_ITER_(val, ret, 2); -+ ILOG2_ITER_(val, ret, 1); -+ ILOG2_ITER_(val, ret, 0); -+ -+ return ret; -+} -+ -+/** -+ * Calculate floor(log2(val)), with the exception of val == 0, for which 0 -+ * is returned as well. -+ * -+ * @param val 32-bit value to calculate integer base-2 logarithm for. -+ * @return (unsigned int) floor(log2(val)) if val > 0, 0 if val == 0. -+ */ -+static inline unsigned int -+ilog2_32(uint32_t val) -+{ -+ unsigned int ret = 0; -+ -+ ILOG2_ITER_(val, ret, 4); -+ ILOG2_ITER_(val, ret, 3); -+ ILOG2_ITER_(val, ret, 2); -+ ILOG2_ITER_(val, ret, 1); -+ ILOG2_ITER_(val, ret, 0); -+ -+ return ret; -+} -+ -+#if SIZEOF_KERNEL_LONG_T > 4 -+# define ilog2_klong ilog2_64 -+#else -+# define ilog2_klong ilog2_32 -+#endif -+ -+#undef ILOG2_ITER_ -+ - #endif /* !STRACE_DEFS_H */ -diff --git a/util.c b/util.c -index 59696b5..cde76c1 100644 ---- a/util.c -+++ b/util.c -@@ -1120,68 +1120,6 @@ dumpiov_upto(struct tcb *const tcp, const int len, const kernel_ulong_t addr, - #undef iov - } - --#define ILOG2_ITER_(val_, ret_, bit_) \ -- do { \ -- typeof(ret_) shift_ = \ -- ((val_) > ((((typeof(val_)) 1) \ -- << (1 << (bit_))) - 1)) << (bit_); \ -- (val_) >>= shift_; \ -- (ret_) |= shift_; \ -- } while (0) -- --#if SIZEOF_KERNEL_LONG_T > 4 -- --# define ilog2_klong ilog2_64 --/** -- * Calculate floor(log2(val)), with the exception of val == 0, for which 0 -- * is returned as well. -- * -- * @param val 64-bit value to calculate integer base-2 logarithm for. -- * @return (unsigned int) floor(log2(val)) if val > 0, 0 if val == 0. -- */ --static inline unsigned int --ilog2_64(uint64_t val) --{ -- unsigned int ret = 0; -- -- ILOG2_ITER_(val, ret, 5); -- ILOG2_ITER_(val, ret, 4); -- ILOG2_ITER_(val, ret, 3); -- ILOG2_ITER_(val, ret, 2); -- ILOG2_ITER_(val, ret, 1); -- ILOG2_ITER_(val, ret, 0); -- -- return ret; --} -- --#else /* SIZEOF_KERNEL_LONG_T == 4 */ -- --# define ilog2_klong ilog2_32 --/** -- * Calculate floor(log2(val)), with the exception of val == 0, for which 0 -- * is returned as well. -- * -- * @param val 32-bit value to calculate integer base-2 logarithm for. -- * @return (unsigned int) floor(log2(val)) if val > 0, 0 if val == 0. -- */ --static inline unsigned int --ilog2_32(uint32_t val) --{ -- unsigned int ret = 0; -- -- ILOG2_ITER_(val, ret, 4); -- ILOG2_ITER_(val, ret, 3); -- ILOG2_ITER_(val, ret, 2); -- ILOG2_ITER_(val, ret, 1); -- ILOG2_ITER_(val, ret, 0); -- -- return ret; --} -- --#endif /* SIZEOF_KERNEL_LONG_T */ -- --#undef ILOG2_ITER_ -- - void - dumpstr(struct tcb *const tcp, const kernel_ulong_t addr, - const kernel_ulong_t len) --- -2.1.4 - diff --git a/0122-tests-inject-nf.test-replace-getpid-with-geteuid.patch b/0122-tests-inject-nf.test-replace-getpid-with-geteuid.patch deleted file mode 100755 index 1b15526..0000000 --- a/0122-tests-inject-nf.test-replace-getpid-with-geteuid.patch +++ /dev/null @@ -1,235 +0,0 @@ -From c5be5bb949988c262012e7f4763b1d658c1769b9 Mon Sep 17 00:00:00 2001 -From: =?UTF-8?q?=C3=81kos=20Uzonyi?= -Date: Fri, 19 Jun 2020 12:06:42 +0200 -Subject: [PATCH 122/138] tests/inject-nf.test: replace getpid with geteuid - -Since we treat PIDs as signed integers, large values (>=2^31) will -cause overflow when we use printpid. -UIDs are treated as unsigned integers, so geteuid is a good alternative. -(getuid would be problematic, as it does not exists on alpha). -Also, on systems where geteuid32 exists, geteuid returns maximum 16 bit -values, so we have to use geteuid32 in this case. - -[ldv: geteuid syscall was introduced on Alpha by Linux kernel commit -v5.1-rc1~160^2~3^2~1, so this test will not work on old Alpha kernels.] - -* tests/inject-nf.c: Replace getpid with either geteuid32 or geteuid. -[__alpha__]: Remove. -[__NR_geteuid32]: New condition. -* tests/inject-nf.test (SYSCALL): Replace getpid with '/^geteuid(32)?$'. -Remove alpha workaround. ---- - tests/inject-nf.c | 20 +++++++++----------- - tests/inject-nf.test | 9 +-------- - 2 files changed, 10 insertions(+), 19 deletions(-) - -Index: strace-5.7/tests/inject-nf.c -=================================================================== ---- strace-5.7.orig/tests/inject-nf.c 2020-09-09 14:50:44.159739392 +0200 -+++ strace-5.7/tests/inject-nf.c 2020-09-09 14:56:17.193937896 +0200 -@@ -16,28 +16,26 @@ - - #include "raw_syscall.h" - --#ifdef __alpha__ --/* alpha has no getpid */ --# define SC_NR __NR_getpgrp --# define SC_NAME "getpgrp" --# define getpid getpgrp -+#ifdef __NR_geteuid32 -+# define SC_NR __NR_geteuid32 -+# define SC_NAME "geteuid32" - #else --# define SC_NR __NR_getpid --# define SC_NAME "getpid" -+# define SC_NR __NR_geteuid -+# define SC_NAME "geteuid" - #endif - - #ifdef raw_syscall_0 - # define INVOKE_SC(err) raw_syscall_0(SC_NR, &err) - #else --/* No raw_syscall_0, let's use getpid() and hope for the best. */ --# define INVOKE_SC(err) getpid() -+/* No raw_syscall_0, let's use geteuid() and hope for the best. */ -+# define INVOKE_SC(err) geteuid() - #endif - - /* - * This prototype is intentionally different - * from the prototype provided by . - */ --extern kernel_ulong_t getpid(void); -+extern kernel_ulong_t geteuid(void); - - int - main(int ac, char **av) -@@ -45,7 +43,7 @@ - assert(ac == 1 || ac == 2); - - kernel_ulong_t expected = -- (ac == 1) ? getpid() : strtoull(av[1], NULL, 0); -+ (ac == 1) ? geteuid() : strtoull(av[1], NULL, 0); - kernel_ulong_t err = 0; - kernel_ulong_t rc = INVOKE_SC(err); - -Index: strace-5.7/tests/inject-nf.test -=================================================================== ---- strace-5.7.orig/tests/inject-nf.test 2020-09-09 14:50:44.159739392 +0200 -+++ strace-5.7/tests/inject-nf.test 2020-09-09 14:56:17.194937896 +0200 -@@ -9,14 +9,7 @@ - - . "${srcdir=.}/scno_tampering.sh" - --case "$STRACE_ARCH" in --alpha) -- SYSCALL=getpgrp -- ;; --*) -- SYSCALL=getpid -- ;; --esac -+SYSCALL='/^geteuid(32)?$' - - run_prog - prog="$args" -Index: strace-5.7/tests-m32/inject-nf.c -=================================================================== ---- strace-5.7.orig/tests-m32/inject-nf.c 2019-09-25 03:02:03.000000000 +0200 -+++ strace-5.7/tests-m32/inject-nf.c 2020-09-09 14:58:03.687001371 +0200 -@@ -16,28 +16,26 @@ - - #include "raw_syscall.h" - --#ifdef __alpha__ --/* alpha has no getpid */ --# define SC_NR __NR_getpgrp --# define SC_NAME "getpgrp" --# define getpid getpgrp -+#ifdef __NR_geteuid32 -+# define SC_NR __NR_geteuid32 -+# define SC_NAME "geteuid32" - #else --# define SC_NR __NR_getpid --# define SC_NAME "getpid" -+# define SC_NR __NR_geteuid -+# define SC_NAME "geteuid" - #endif - - #ifdef raw_syscall_0 - # define INVOKE_SC(err) raw_syscall_0(SC_NR, &err) - #else --/* No raw_syscall_0, let's use getpid() and hope for the best. */ --# define INVOKE_SC(err) getpid() -+/* No raw_syscall_0, let's use geteuid() and hope for the best. */ -+# define INVOKE_SC(err) geteuid() - #endif - - /* - * This prototype is intentionally different - * from the prototype provided by . - */ --extern kernel_ulong_t getpid(void); -+extern kernel_ulong_t geteuid(void); - - int - main(int ac, char **av) -@@ -45,7 +43,7 @@ - assert(ac == 1 || ac == 2); - - kernel_ulong_t expected = -- (ac == 1) ? getpid() : strtoull(av[1], NULL, 0); -+ (ac == 1) ? geteuid() : strtoull(av[1], NULL, 0); - kernel_ulong_t err = 0; - kernel_ulong_t rc = INVOKE_SC(err); - -Index: strace-5.7/tests-m32/inject-nf.test -=================================================================== ---- strace-5.7.orig/tests-m32/inject-nf.test 2018-12-25 00:46:43.000000000 +0100 -+++ strace-5.7/tests-m32/inject-nf.test 2020-09-09 14:58:03.727001394 +0200 -@@ -9,14 +9,7 @@ - - . "${srcdir=.}/scno_tampering.sh" - --case "$STRACE_ARCH" in --alpha) -- SYSCALL=getpgrp -- ;; --*) -- SYSCALL=getpid -- ;; --esac -+SYSCALL='/^geteuid(32)?$' - - run_prog - prog="$args" -Index: strace-5.7/tests-mx32/inject-nf.c -=================================================================== ---- strace-5.7.orig/tests-mx32/inject-nf.c 2019-09-25 03:02:03.000000000 +0200 -+++ strace-5.7/tests-mx32/inject-nf.c 2020-09-09 14:58:03.708001383 +0200 -@@ -16,28 +16,26 @@ - - #include "raw_syscall.h" - --#ifdef __alpha__ --/* alpha has no getpid */ --# define SC_NR __NR_getpgrp --# define SC_NAME "getpgrp" --# define getpid getpgrp -+#ifdef __NR_geteuid32 -+# define SC_NR __NR_geteuid32 -+# define SC_NAME "geteuid32" - #else --# define SC_NR __NR_getpid --# define SC_NAME "getpid" -+# define SC_NR __NR_geteuid -+# define SC_NAME "geteuid" - #endif - - #ifdef raw_syscall_0 - # define INVOKE_SC(err) raw_syscall_0(SC_NR, &err) - #else --/* No raw_syscall_0, let's use getpid() and hope for the best. */ --# define INVOKE_SC(err) getpid() -+/* No raw_syscall_0, let's use geteuid() and hope for the best. */ -+# define INVOKE_SC(err) geteuid() - #endif - - /* - * This prototype is intentionally different - * from the prototype provided by . - */ --extern kernel_ulong_t getpid(void); -+extern kernel_ulong_t geteuid(void); - - int - main(int ac, char **av) -@@ -45,7 +43,7 @@ - assert(ac == 1 || ac == 2); - - kernel_ulong_t expected = -- (ac == 1) ? getpid() : strtoull(av[1], NULL, 0); -+ (ac == 1) ? geteuid() : strtoull(av[1], NULL, 0); - kernel_ulong_t err = 0; - kernel_ulong_t rc = INVOKE_SC(err); - -Index: strace-5.7/tests-mx32/inject-nf.test -=================================================================== ---- strace-5.7.orig/tests-mx32/inject-nf.test 2018-12-25 00:46:43.000000000 +0100 -+++ strace-5.7/tests-mx32/inject-nf.test 2020-09-09 14:58:03.750001408 +0200 -@@ -9,14 +9,7 @@ - - . "${srcdir=.}/scno_tampering.sh" - --case "$STRACE_ARCH" in --alpha) -- SYSCALL=getpgrp -- ;; --*) -- SYSCALL=getpid -- ;; --esac -+SYSCALL='/^geteuid(32)?$' - - run_prog - prog="$args" diff --git a/0123-fcntl-use-print_fields.h-macros.patch b/0123-fcntl-use-print_fields.h-macros.patch deleted file mode 100755 index 9f4d96a..0000000 --- a/0123-fcntl-use-print_fields.h-macros.patch +++ /dev/null @@ -1,60 +0,0 @@ -From eba856eb0246ce2a2ba99d68611da1af7814080e Mon Sep 17 00:00:00 2001 -From: "Dmitry V. Levin" -Date: Mon, 13 Jul 2020 08:00:00 +0000 -Subject: [PATCH 123/138] fcntl: use print_fields.h macros - -* fcntl.c: Include "print_fields.h". -(print_struct_flock64, print_f_owner_ex): Use PRINT_FIELD_* macros -from print_fields.h. ---- - fcntl.c | 19 +++++++++---------- - 1 file changed, 9 insertions(+), 10 deletions(-) - -diff --git a/fcntl.c b/fcntl.c -index 0b4221c..e84549e 100644 ---- a/fcntl.c -+++ b/fcntl.c -@@ -11,6 +11,7 @@ - - #include "defs.h" - #include "flock.h" -+#include "print_fields.h" - - #include "xlat/f_owner_types.h" - #include "xlat/f_seals.h" -@@ -22,14 +23,12 @@ - static void - print_struct_flock64(const struct_kernel_flock64 *fl, const int getlk) - { -- tprints("{l_type="); -- printxval(lockfcmds, (unsigned short) fl->l_type, "F_???"); -- tprints(", l_whence="); -- printxval(whence_codes, (unsigned short) fl->l_whence, "SEEK_???"); -- tprintf(", l_start=%" PRId64 ", l_len=%" PRId64, -- (int64_t) fl->l_start, (int64_t) fl->l_len); -+ PRINT_FIELD_XVAL("{", *fl, l_type, lockfcmds, "F_???"); -+ PRINT_FIELD_XVAL(", ", *fl, l_whence, whence_codes, "SEEK_???"); -+ PRINT_FIELD_D(", ", *fl, l_start); -+ PRINT_FIELD_D(", ", *fl, l_len); - if (getlk) -- tprintf(", l_pid=%lu", (unsigned long) fl->l_pid); -+ PRINT_FIELD_D(", ", *fl, l_pid); - tprints("}"); - } - -@@ -59,9 +58,9 @@ print_f_owner_ex(struct tcb *const tcp, const kernel_ulong_t addr) - if (umove_or_printaddr(tcp, addr, &owner)) - return; - -- tprints("{type="); -- printxval(f_owner_types, owner.type, "F_OWNER_???"); -- tprintf(", pid=%d}", owner.pid); -+ PRINT_FIELD_XVAL("{", owner, type, f_owner_types, "F_OWNER_???"); -+ PRINT_FIELD_D(", ", owner, pid); -+ tprints("}"); - } - - static int --- -2.1.4 - diff --git a/0124-kcmp-fix-KCMP_FILE-decoding.patch b/0124-kcmp-fix-KCMP_FILE-decoding.patch deleted file mode 100755 index b15613f..0000000 --- a/0124-kcmp-fix-KCMP_FILE-decoding.patch +++ /dev/null @@ -1,28 +0,0 @@ -From 86923d3a0a01c520ea25d22587143ad6b8dab18b Mon Sep 17 00:00:00 2001 -From: =?UTF-8?q?=C3=81kos=20Uzonyi?= -Date: Sat, 13 Jun 2020 18:18:28 +0200 -Subject: [PATCH 124/138] kcmp: fix KCMP_FILE decoding - -* kcmp.c (SYS_FUNC(kcmp)): Fix KCMP_FILE pid arguments. - -Fixes: v4.20~66 ("kcmp: output fds using a separate function") ---- - kcmp.c | 2 +- - 1 file changed, 1 insertion(+), 1 deletion(-) - -diff --git a/kcmp.c b/kcmp.c -index 6819265..6211555 100644 ---- a/kcmp.c -+++ b/kcmp.c -@@ -38,7 +38,7 @@ SYS_FUNC(kcmp) - tprints(", "); - printfd_pid_tracee_ns(tcp, pid1, idx1); - tprints(", "); -- printfd_pid_tracee_ns(tcp, pid1, idx2); -+ printfd_pid_tracee_ns(tcp, pid2, idx2); - - break; - --- -2.1.4 - diff --git a/0125-printsiginfo-fix-printing-of-siginfo_t.si_pid-and-si.patch b/0125-printsiginfo-fix-printing-of-siginfo_t.si_pid-and-si.patch deleted file mode 100755 index 6ec6f26..0000000 --- a/0125-printsiginfo-fix-printing-of-siginfo_t.si_pid-and-si.patch +++ /dev/null @@ -1,518 +0,0 @@ -From 56a29d0e192b119c101146e2197246f51661b6b5 Mon Sep 17 00:00:00 2001 -From: "Dmitry V. Levin" -Date: Fri, 17 Jul 2020 08:00:00 +0000 -Subject: [PATCH 125/138] printsiginfo: fix printing of siginfo_t.si_pid and - siginfo_t.si_uid - -* printsiginfo.c (printsigsource): Print siginfo_t.si_pid using -PRINT_FIELD_D, print siginfo_t.si_uid using PRINT_FIELD_UID. -* tests/clone_ptrace.c (main): Update expected output. -* tests/orphaned_process_group.c (main): Likewise. -* tests/pidfd_send_signal.c (main): Likewise. -* tests/ptrace.c (test_peeksiginfo): Likewise. -* tests/rt_sigqueueinfo.c (main): Likewise. -* tests/rt_tgsigqueueinfo.c (main): Likewise. -* tests/siginfo.c (main): Likewise. -* tests/waitid.c (sprint_siginfo): Likewise. ---- - printsiginfo.c | 5 ++--- - tests/clone_ptrace.c | 2 +- - tests/orphaned_process_group.c | 2 +- - tests/pidfd_send_signal.c | 2 +- - tests/ptrace.c | 12 ++++++------ - tests/rt_sigqueueinfo.c | 2 +- - tests/rt_tgsigqueueinfo.c | 4 ++-- - tests/siginfo.c | 10 +++++----- - tests/waitid.c | 4 ++-- - 9 files changed, 21 insertions(+), 22 deletions(-) - -Index: strace-5.7/printsiginfo.c -=================================================================== ---- strace-5.7.orig/printsiginfo.c 2020-09-09 14:50:44.013739305 +0200 -+++ strace-5.7/printsiginfo.c 2020-09-09 14:58:30.753017503 +0200 -@@ -58,9 +58,8 @@ - static void - printsigsource(const siginfo_t *sip) - { -- tprintf(", si_pid=%u, si_uid=%u", -- (unsigned int) sip->si_pid, -- (unsigned int) sip->si_uid); -+ PRINT_FIELD_D(", ", *sip, si_pid); -+ PRINT_FIELD_UID(", ", *sip, si_uid); - } - - static void -Index: strace-5.7/tests/clone_ptrace.c -=================================================================== ---- strace-5.7.orig/tests/clone_ptrace.c 2020-09-09 14:50:44.013739305 +0200 -+++ strace-5.7/tests/clone_ptrace.c 2020-09-09 14:58:30.754017504 +0200 -@@ -96,7 +96,7 @@ - error_msg_and_fail("unexpected child exit status %d", status); - - printf("--- SIGCHLD {si_signo=SIGCHLD, si_code=CLD_KILLED, si_pid=%d" -- ", si_uid=%u, si_status=%s, si_utime=%u, si_stime=%u} ---\n" -+ ", si_uid=%d, si_status=%s, si_utime=%u, si_stime=%u} ---\n" - #if !QUIET_EXIT - "+++ exited with 0 +++\n" - #endif -Index: strace-5.7/tests/orphaned_process_group.c -=================================================================== ---- strace-5.7.orig/tests/orphaned_process_group.c 2020-09-09 14:50:44.013739305 +0200 -+++ strace-5.7/tests/orphaned_process_group.c 2020-09-09 14:58:30.754017504 +0200 -@@ -139,7 +139,7 @@ - */ - leader = getpid(); - printf("%-5d --- %s {si_signo=%s, si_code=SI_TKILL" -- ", si_pid=%d, si_uid=%u} ---\n", -+ ", si_pid=%d, si_uid=%d} ---\n", - stopped, "SIGSTOP", "SIGSTOP", stopped, geteuid()); - printf("%-5d --- stopped by SIGSTOP ---\n", stopped); - printf("%-5d +++ exited with 0 +++\n", leader); -Index: strace-5.7/tests/pidfd_send_signal.c -=================================================================== ---- strace-5.7.orig/tests/pidfd_send_signal.c 2020-09-09 14:50:44.013739305 +0200 -+++ strace-5.7/tests/pidfd_send_signal.c 2020-09-09 14:58:30.754017504 +0200 -@@ -54,7 +54,7 @@ - - sys_pidfd_send_signal(fd, SIGUSR2, si, -1); - printf("pidfd_send_signal(%d, SIGUSR2, {si_signo=SIGUSR1" -- ", si_code=SI_QUEUE, si_errno=%u, si_pid=%u, si_uid=%u" -+ ", si_code=SI_QUEUE, si_errno=%u, si_pid=%d, si_uid=%d" - ", si_value={int=%d, ptr=%p}}, %#x) = %s\n", - fd, si->si_errno, si->si_pid, si->si_uid, si->si_int, si->si_ptr, - -1U, errstr); -Index: strace-5.7/tests/ptrace.c -=================================================================== ---- strace-5.7.orig/tests/ptrace.c 2020-09-09 14:50:44.013739305 +0200 -+++ strace-5.7/tests/ptrace.c 2020-09-09 14:58:30.754017504 +0200 -@@ -127,16 +127,16 @@ - printf("ptrace(PTRACE_PEEKSIGINFO, %u" - ", {off=%llu, flags=0, nr=%u}" - ", [{si_signo=SIGUSR1, si_code=SI_TKILL" -- ", si_pid=%u, si_uid=%u}" -+ ", si_pid=%d, si_uid=%d}" - ", {si_signo=SIGUSR2, si_code=SI_TKILL" -- ", si_pid=%u, si_uid=%u}" -+ ", si_pid=%d, si_uid=%d}" - ", {si_signo=SIGALRM, si_code=SI_TKILL" -- ", si_pid=%u, si_uid=%u}" -+ ", si_pid=%d, si_uid=%d}" - "]) = %s\n", - (unsigned) pid, psi->off, psi->nr, -- (unsigned) pid, (unsigned) uid, -- (unsigned) pid, (unsigned) uid, -- (unsigned) pid, (unsigned) uid, -+ (int) pid, (int) uid, -+ (int) pid, (int) uid, -+ (int) pid, (int) uid, - errstr); - } - -Index: strace-5.7/tests/rt_sigqueueinfo.c -=================================================================== ---- strace-5.7.orig/tests/rt_sigqueueinfo.c 2020-09-09 14:50:44.013739305 +0200 -+++ strace-5.7/tests/rt_sigqueueinfo.c 2020-09-09 14:58:30.754017504 +0200 -@@ -27,7 +27,7 @@ - if (sigqueue(pid, SIGUSR1, value)) - perror_msg_and_skip("sigqueue"); - printf("rt_sigqueueinfo(%u, SIGUSR1, {si_signo=SIGUSR1, " -- "si_code=SI_QUEUE, si_pid=%u, si_uid=%u, " -+ "si_code=SI_QUEUE, si_pid=%d, si_uid=%d, " - "si_value={int=%d, ptr=%p}}) = 0\n", - pid, pid, getuid(), value.sival_int, value.sival_ptr); - printf("+++ exited with 0 +++\n"); -Index: strace-5.7/tests/rt_tgsigqueueinfo.c -=================================================================== ---- strace-5.7.orig/tests/rt_tgsigqueueinfo.c 2020-09-09 14:50:44.013739305 +0200 -+++ strace-5.7/tests/rt_tgsigqueueinfo.c 2020-09-09 14:58:30.755017504 +0200 -@@ -53,8 +53,8 @@ - "rt_tgsigqueueinfo"); - - printf("rt_tgsigqueueinfo(%u, %u, %s, {si_signo=%s" -- ", si_code=SI_QUEUE, si_errno=ENOENT, si_pid=%u" -- ", si_uid=%u, si_value={int=%d, ptr=%p}}) = 0\n", -+ ", si_code=SI_QUEUE, si_errno=ENOENT, si_pid=%d" -+ ", si_uid=%d, si_value={int=%d, ptr=%p}}) = 0\n", - info->si_pid, info->si_pid, "SIGUSR1", "SIGUSR1", - info->si_pid, info->si_uid, info->si_value.sival_int, - info->si_value.sival_ptr); -Index: strace-5.7/tests/siginfo.c -=================================================================== ---- strace-5.7.orig/tests/siginfo.c 2020-09-09 14:50:44.013739305 +0200 -+++ strace-5.7/tests/siginfo.c 2020-09-09 14:58:30.755017504 +0200 -@@ -63,7 +63,7 @@ - - sigsuspend(&unblock_mask); - tprintf("--- SIGCHLD {si_signo=SIGCHLD, si_code=CLD_EXITED" -- ", si_pid=%d, si_uid=%u, si_status=%d" -+ ", si_pid=%d, si_uid=%d, si_status=%d" - ", si_utime=%llu, si_stime=%llu} ---\n", - sinfo.si_pid, sinfo.si_uid, sinfo.si_status, - zero_extend_signed_to_ull(sinfo.si_utime), -@@ -94,7 +94,7 @@ - - sigsuspend(&unblock_mask); - tprintf("--- SIGCHLD {si_signo=SIGCHLD, si_code=CLD_KILLED" -- ", si_pid=%d, si_uid=%u, si_status=SIGUSR1" -+ ", si_pid=%d, si_uid=%d, si_status=SIGUSR1" - ", si_utime=%llu, si_stime=%llu} ---\n", - sinfo.si_pid, sinfo.si_uid, - zero_extend_signed_to_ull(sinfo.si_utime), -@@ -121,7 +121,7 @@ - - sigsuspend(&unblock_mask); - tprintf("--- SIGCHLD {si_signo=SIGCHLD, si_code=CLD_STOPPED" -- ", si_pid=%d, si_uid=%u, si_status=SIGSTOP" -+ ", si_pid=%d, si_uid=%d, si_status=SIGSTOP" - ", si_utime=%llu, si_stime=%llu} ---\n", - sinfo.si_pid, sinfo.si_uid, - zero_extend_signed_to_ull(sinfo.si_utime), -@@ -131,7 +131,7 @@ - - sigsuspend(&unblock_mask); - tprintf("--- SIGCHLD {si_signo=SIGCHLD, si_code=CLD_CONTINUED" -- ", si_pid=%d, si_uid=%u, si_status=SIGCONT" -+ ", si_pid=%d, si_uid=%d, si_status=SIGCONT" - ", si_utime=%llu, si_stime=%llu} ---\n", - sinfo.si_pid, sinfo.si_uid, - zero_extend_signed_to_ull(sinfo.si_utime), -@@ -142,7 +142,7 @@ - - sigsuspend(&unblock_mask); - tprintf("--- SIGCHLD {si_signo=SIGCHLD, si_code=CLD_EXITED" -- ", si_pid=%d, si_uid=%u, si_status=0" -+ ", si_pid=%d, si_uid=%d, si_status=0" - ", si_utime=%llu, si_stime=%llu} ---\n", - sinfo.si_pid, sinfo.si_uid, - zero_extend_signed_to_ull(sinfo.si_utime), -Index: strace-5.7/tests/waitid.c -=================================================================== ---- strace-5.7.orig/tests/waitid.c 2020-09-09 14:50:44.013739305 +0200 -+++ strace-5.7/tests/waitid.c 2020-09-09 14:58:30.755017504 +0200 -@@ -103,8 +103,8 @@ - snprintf(buf, sizeof(buf), - "{si_signo=SIGCHLD" - ", si_code=%s" -- ", si_pid=%u" -- ", si_uid=%u" -+ ", si_pid=%d" -+ ", si_uid=%d" - ", si_status=%s" - ", si_utime=%llu" - ", si_stime=%llu}", -Index: strace-5.7/tests-m32/clone_ptrace.c -=================================================================== ---- strace-5.7.orig/tests-m32/clone_ptrace.c 2020-04-04 00:58:26.000000000 +0200 -+++ strace-5.7/tests-m32/clone_ptrace.c 2020-09-09 14:59:06.931039067 +0200 -@@ -96,7 +96,7 @@ - error_msg_and_fail("unexpected child exit status %d", status); - - printf("--- SIGCHLD {si_signo=SIGCHLD, si_code=CLD_KILLED, si_pid=%d" -- ", si_uid=%u, si_status=%s, si_utime=%u, si_stime=%u} ---\n" -+ ", si_uid=%d, si_status=%s, si_utime=%u, si_stime=%u} ---\n" - #if !QUIET_EXIT - "+++ exited with 0 +++\n" - #endif -Index: strace-5.7/tests-m32/orphaned_process_group.c -=================================================================== ---- strace-5.7.orig/tests-m32/orphaned_process_group.c 2019-03-06 17:02:38.000000000 +0100 -+++ strace-5.7/tests-m32/orphaned_process_group.c 2020-09-09 14:59:07.012039115 +0200 -@@ -139,7 +139,7 @@ - */ - leader = getpid(); - printf("%-5d --- %s {si_signo=%s, si_code=SI_TKILL" -- ", si_pid=%d, si_uid=%u} ---\n", -+ ", si_pid=%d, si_uid=%d} ---\n", - stopped, "SIGSTOP", "SIGSTOP", stopped, geteuid()); - printf("%-5d --- stopped by SIGSTOP ---\n", stopped); - printf("%-5d +++ exited with 0 +++\n", leader); -Index: strace-5.7/tests-m32/pidfd_send_signal.c -=================================================================== ---- strace-5.7.orig/tests-m32/pidfd_send_signal.c 2019-08-14 13:22:32.000000000 +0200 -+++ strace-5.7/tests-m32/pidfd_send_signal.c 2020-09-09 14:59:07.077039154 +0200 -@@ -54,7 +54,7 @@ - - sys_pidfd_send_signal(fd, SIGUSR2, si, -1); - printf("pidfd_send_signal(%d, SIGUSR2, {si_signo=SIGUSR1" -- ", si_code=SI_QUEUE, si_errno=%u, si_pid=%u, si_uid=%u" -+ ", si_code=SI_QUEUE, si_errno=%u, si_pid=%d, si_uid=%d" - ", si_value={int=%d, ptr=%p}}, %#x) = %s\n", - fd, si->si_errno, si->si_pid, si->si_uid, si->si_int, si->si_ptr, - -1U, errstr); -Index: strace-5.7/tests-m32/ptrace.c -=================================================================== ---- strace-5.7.orig/tests-m32/ptrace.c 2019-09-25 03:02:03.000000000 +0200 -+++ strace-5.7/tests-m32/ptrace.c 2020-09-09 14:59:07.142039193 +0200 -@@ -127,16 +127,16 @@ - printf("ptrace(PTRACE_PEEKSIGINFO, %u" - ", {off=%llu, flags=0, nr=%u}" - ", [{si_signo=SIGUSR1, si_code=SI_TKILL" -- ", si_pid=%u, si_uid=%u}" -+ ", si_pid=%d, si_uid=%d}" - ", {si_signo=SIGUSR2, si_code=SI_TKILL" -- ", si_pid=%u, si_uid=%u}" -+ ", si_pid=%d, si_uid=%d}" - ", {si_signo=SIGALRM, si_code=SI_TKILL" -- ", si_pid=%u, si_uid=%u}" -+ ", si_pid=%d, si_uid=%d}" - "]) = %s\n", - (unsigned) pid, psi->off, psi->nr, -- (unsigned) pid, (unsigned) uid, -- (unsigned) pid, (unsigned) uid, -- (unsigned) pid, (unsigned) uid, -+ (int) pid, (int) uid, -+ (int) pid, (int) uid, -+ (int) pid, (int) uid, - errstr); - } - -Index: strace-5.7/tests-m32/rt_sigqueueinfo.c -=================================================================== ---- strace-5.7.orig/tests-m32/rt_sigqueueinfo.c 2018-12-25 00:46:43.000000000 +0100 -+++ strace-5.7/tests-m32/rt_sigqueueinfo.c 2020-09-09 14:59:07.204039230 +0200 -@@ -27,7 +27,7 @@ - if (sigqueue(pid, SIGUSR1, value)) - perror_msg_and_skip("sigqueue"); - printf("rt_sigqueueinfo(%u, SIGUSR1, {si_signo=SIGUSR1, " -- "si_code=SI_QUEUE, si_pid=%u, si_uid=%u, " -+ "si_code=SI_QUEUE, si_pid=%d, si_uid=%d, " - "si_value={int=%d, ptr=%p}}) = 0\n", - pid, pid, getuid(), value.sival_int, value.sival_ptr); - printf("+++ exited with 0 +++\n"); -Index: strace-5.7/tests-m32/rt_tgsigqueueinfo.c -=================================================================== ---- strace-5.7.orig/tests-m32/rt_tgsigqueueinfo.c 2019-09-25 03:02:03.000000000 +0200 -+++ strace-5.7/tests-m32/rt_tgsigqueueinfo.c 2020-09-09 14:59:07.258039262 +0200 -@@ -53,8 +53,8 @@ - "rt_tgsigqueueinfo"); - - printf("rt_tgsigqueueinfo(%u, %u, %s, {si_signo=%s" -- ", si_code=SI_QUEUE, si_errno=ENOENT, si_pid=%u" -- ", si_uid=%u, si_value={int=%d, ptr=%p}}) = 0\n", -+ ", si_code=SI_QUEUE, si_errno=ENOENT, si_pid=%d" -+ ", si_uid=%d, si_value={int=%d, ptr=%p}}) = 0\n", - info->si_pid, info->si_pid, "SIGUSR1", "SIGUSR1", - info->si_pid, info->si_uid, info->si_value.sival_int, - info->si_value.sival_ptr); -Index: strace-5.7/tests-m32/siginfo.c -=================================================================== ---- strace-5.7.orig/tests-m32/siginfo.c 2018-12-25 00:46:43.000000000 +0100 -+++ strace-5.7/tests-m32/siginfo.c 2020-09-09 14:59:07.311039293 +0200 -@@ -63,7 +63,7 @@ - - sigsuspend(&unblock_mask); - tprintf("--- SIGCHLD {si_signo=SIGCHLD, si_code=CLD_EXITED" -- ", si_pid=%d, si_uid=%u, si_status=%d" -+ ", si_pid=%d, si_uid=%d, si_status=%d" - ", si_utime=%llu, si_stime=%llu} ---\n", - sinfo.si_pid, sinfo.si_uid, sinfo.si_status, - zero_extend_signed_to_ull(sinfo.si_utime), -@@ -94,7 +94,7 @@ - - sigsuspend(&unblock_mask); - tprintf("--- SIGCHLD {si_signo=SIGCHLD, si_code=CLD_KILLED" -- ", si_pid=%d, si_uid=%u, si_status=SIGUSR1" -+ ", si_pid=%d, si_uid=%d, si_status=SIGUSR1" - ", si_utime=%llu, si_stime=%llu} ---\n", - sinfo.si_pid, sinfo.si_uid, - zero_extend_signed_to_ull(sinfo.si_utime), -@@ -121,7 +121,7 @@ - - sigsuspend(&unblock_mask); - tprintf("--- SIGCHLD {si_signo=SIGCHLD, si_code=CLD_STOPPED" -- ", si_pid=%d, si_uid=%u, si_status=SIGSTOP" -+ ", si_pid=%d, si_uid=%d, si_status=SIGSTOP" - ", si_utime=%llu, si_stime=%llu} ---\n", - sinfo.si_pid, sinfo.si_uid, - zero_extend_signed_to_ull(sinfo.si_utime), -@@ -131,7 +131,7 @@ - - sigsuspend(&unblock_mask); - tprintf("--- SIGCHLD {si_signo=SIGCHLD, si_code=CLD_CONTINUED" -- ", si_pid=%d, si_uid=%u, si_status=SIGCONT" -+ ", si_pid=%d, si_uid=%d, si_status=SIGCONT" - ", si_utime=%llu, si_stime=%llu} ---\n", - sinfo.si_pid, sinfo.si_uid, - zero_extend_signed_to_ull(sinfo.si_utime), -@@ -142,7 +142,7 @@ - - sigsuspend(&unblock_mask); - tprintf("--- SIGCHLD {si_signo=SIGCHLD, si_code=CLD_EXITED" -- ", si_pid=%d, si_uid=%u, si_status=0" -+ ", si_pid=%d, si_uid=%d, si_status=0" - ", si_utime=%llu, si_stime=%llu} ---\n", - sinfo.si_pid, sinfo.si_uid, - zero_extend_signed_to_ull(sinfo.si_utime), -Index: strace-5.7/tests-m32/waitid.c -=================================================================== ---- strace-5.7.orig/tests-m32/waitid.c 2020-04-19 03:22:29.000000000 +0200 -+++ strace-5.7/tests-m32/waitid.c 2020-09-09 14:59:07.371039329 +0200 -@@ -103,8 +103,8 @@ - snprintf(buf, sizeof(buf), - "{si_signo=SIGCHLD" - ", si_code=%s" -- ", si_pid=%u" -- ", si_uid=%u" -+ ", si_pid=%d" -+ ", si_uid=%d" - ", si_status=%s" - ", si_utime=%llu" - ", si_stime=%llu}", -Index: strace-5.7/tests-mx32/clone_ptrace.c -=================================================================== ---- strace-5.7.orig/tests-mx32/clone_ptrace.c 2020-04-04 00:58:26.000000000 +0200 -+++ strace-5.7/tests-mx32/clone_ptrace.c 2020-09-09 14:59:06.978039095 +0200 -@@ -96,7 +96,7 @@ - error_msg_and_fail("unexpected child exit status %d", status); - - printf("--- SIGCHLD {si_signo=SIGCHLD, si_code=CLD_KILLED, si_pid=%d" -- ", si_uid=%u, si_status=%s, si_utime=%u, si_stime=%u} ---\n" -+ ", si_uid=%d, si_status=%s, si_utime=%u, si_stime=%u} ---\n" - #if !QUIET_EXIT - "+++ exited with 0 +++\n" - #endif -Index: strace-5.7/tests-mx32/orphaned_process_group.c -=================================================================== ---- strace-5.7.orig/tests-mx32/orphaned_process_group.c 2019-03-06 17:02:38.000000000 +0100 -+++ strace-5.7/tests-mx32/orphaned_process_group.c 2020-09-09 14:59:07.046039135 +0200 -@@ -139,7 +139,7 @@ - */ - leader = getpid(); - printf("%-5d --- %s {si_signo=%s, si_code=SI_TKILL" -- ", si_pid=%d, si_uid=%u} ---\n", -+ ", si_pid=%d, si_uid=%d} ---\n", - stopped, "SIGSTOP", "SIGSTOP", stopped, geteuid()); - printf("%-5d --- stopped by SIGSTOP ---\n", stopped); - printf("%-5d +++ exited with 0 +++\n", leader); -Index: strace-5.7/tests-mx32/pidfd_send_signal.c -=================================================================== ---- strace-5.7.orig/tests-mx32/pidfd_send_signal.c 2019-08-14 13:22:32.000000000 +0200 -+++ strace-5.7/tests-mx32/pidfd_send_signal.c 2020-09-09 14:59:07.110039174 +0200 -@@ -54,7 +54,7 @@ - - sys_pidfd_send_signal(fd, SIGUSR2, si, -1); - printf("pidfd_send_signal(%d, SIGUSR2, {si_signo=SIGUSR1" -- ", si_code=SI_QUEUE, si_errno=%u, si_pid=%u, si_uid=%u" -+ ", si_code=SI_QUEUE, si_errno=%u, si_pid=%d, si_uid=%d" - ", si_value={int=%d, ptr=%p}}, %#x) = %s\n", - fd, si->si_errno, si->si_pid, si->si_uid, si->si_int, si->si_ptr, - -1U, errstr); -Index: strace-5.7/tests-mx32/ptrace.c -=================================================================== ---- strace-5.7.orig/tests-mx32/ptrace.c 2019-09-25 03:02:03.000000000 +0200 -+++ strace-5.7/tests-mx32/ptrace.c 2020-09-09 14:59:07.174039212 +0200 -@@ -127,16 +127,16 @@ - printf("ptrace(PTRACE_PEEKSIGINFO, %u" - ", {off=%llu, flags=0, nr=%u}" - ", [{si_signo=SIGUSR1, si_code=SI_TKILL" -- ", si_pid=%u, si_uid=%u}" -+ ", si_pid=%d, si_uid=%d}" - ", {si_signo=SIGUSR2, si_code=SI_TKILL" -- ", si_pid=%u, si_uid=%u}" -+ ", si_pid=%d, si_uid=%d}" - ", {si_signo=SIGALRM, si_code=SI_TKILL" -- ", si_pid=%u, si_uid=%u}" -+ ", si_pid=%d, si_uid=%d}" - "]) = %s\n", - (unsigned) pid, psi->off, psi->nr, -- (unsigned) pid, (unsigned) uid, -- (unsigned) pid, (unsigned) uid, -- (unsigned) pid, (unsigned) uid, -+ (int) pid, (int) uid, -+ (int) pid, (int) uid, -+ (int) pid, (int) uid, - errstr); - } - -Index: strace-5.7/tests-mx32/rt_sigqueueinfo.c -=================================================================== ---- strace-5.7.orig/tests-mx32/rt_sigqueueinfo.c 2018-12-25 00:46:43.000000000 +0100 -+++ strace-5.7/tests-mx32/rt_sigqueueinfo.c 2020-09-09 14:59:07.232039246 +0200 -@@ -27,7 +27,7 @@ - if (sigqueue(pid, SIGUSR1, value)) - perror_msg_and_skip("sigqueue"); - printf("rt_sigqueueinfo(%u, SIGUSR1, {si_signo=SIGUSR1, " -- "si_code=SI_QUEUE, si_pid=%u, si_uid=%u, " -+ "si_code=SI_QUEUE, si_pid=%d, si_uid=%d, " - "si_value={int=%d, ptr=%p}}) = 0\n", - pid, pid, getuid(), value.sival_int, value.sival_ptr); - printf("+++ exited with 0 +++\n"); -Index: strace-5.7/tests-mx32/rt_tgsigqueueinfo.c -=================================================================== ---- strace-5.7.orig/tests-mx32/rt_tgsigqueueinfo.c 2019-09-25 03:02:03.000000000 +0200 -+++ strace-5.7/tests-mx32/rt_tgsigqueueinfo.c 2020-09-09 14:59:07.284039277 +0200 -@@ -53,8 +53,8 @@ - "rt_tgsigqueueinfo"); - - printf("rt_tgsigqueueinfo(%u, %u, %s, {si_signo=%s" -- ", si_code=SI_QUEUE, si_errno=ENOENT, si_pid=%u" -- ", si_uid=%u, si_value={int=%d, ptr=%p}}) = 0\n", -+ ", si_code=SI_QUEUE, si_errno=ENOENT, si_pid=%d" -+ ", si_uid=%d, si_value={int=%d, ptr=%p}}) = 0\n", - info->si_pid, info->si_pid, "SIGUSR1", "SIGUSR1", - info->si_pid, info->si_uid, info->si_value.sival_int, - info->si_value.sival_ptr); -Index: strace-5.7/tests-mx32/siginfo.c -=================================================================== ---- strace-5.7.orig/tests-mx32/siginfo.c 2018-12-25 00:46:43.000000000 +0100 -+++ strace-5.7/tests-mx32/siginfo.c 2020-09-09 14:59:07.338039310 +0200 -@@ -63,7 +63,7 @@ - - sigsuspend(&unblock_mask); - tprintf("--- SIGCHLD {si_signo=SIGCHLD, si_code=CLD_EXITED" -- ", si_pid=%d, si_uid=%u, si_status=%d" -+ ", si_pid=%d, si_uid=%d, si_status=%d" - ", si_utime=%llu, si_stime=%llu} ---\n", - sinfo.si_pid, sinfo.si_uid, sinfo.si_status, - zero_extend_signed_to_ull(sinfo.si_utime), -@@ -94,7 +94,7 @@ - - sigsuspend(&unblock_mask); - tprintf("--- SIGCHLD {si_signo=SIGCHLD, si_code=CLD_KILLED" -- ", si_pid=%d, si_uid=%u, si_status=SIGUSR1" -+ ", si_pid=%d, si_uid=%d, si_status=SIGUSR1" - ", si_utime=%llu, si_stime=%llu} ---\n", - sinfo.si_pid, sinfo.si_uid, - zero_extend_signed_to_ull(sinfo.si_utime), -@@ -121,7 +121,7 @@ - - sigsuspend(&unblock_mask); - tprintf("--- SIGCHLD {si_signo=SIGCHLD, si_code=CLD_STOPPED" -- ", si_pid=%d, si_uid=%u, si_status=SIGSTOP" -+ ", si_pid=%d, si_uid=%d, si_status=SIGSTOP" - ", si_utime=%llu, si_stime=%llu} ---\n", - sinfo.si_pid, sinfo.si_uid, - zero_extend_signed_to_ull(sinfo.si_utime), -@@ -131,7 +131,7 @@ - - sigsuspend(&unblock_mask); - tprintf("--- SIGCHLD {si_signo=SIGCHLD, si_code=CLD_CONTINUED" -- ", si_pid=%d, si_uid=%u, si_status=SIGCONT" -+ ", si_pid=%d, si_uid=%d, si_status=SIGCONT" - ", si_utime=%llu, si_stime=%llu} ---\n", - sinfo.si_pid, sinfo.si_uid, - zero_extend_signed_to_ull(sinfo.si_utime), -@@ -142,7 +142,7 @@ - - sigsuspend(&unblock_mask); - tprintf("--- SIGCHLD {si_signo=SIGCHLD, si_code=CLD_EXITED" -- ", si_pid=%d, si_uid=%u, si_status=0" -+ ", si_pid=%d, si_uid=%d, si_status=0" - ", si_utime=%llu, si_stime=%llu} ---\n", - sinfo.si_pid, sinfo.si_uid, - zero_extend_signed_to_ull(sinfo.si_utime), -Index: strace-5.7/tests-mx32/waitid.c -=================================================================== ---- strace-5.7.orig/tests-mx32/waitid.c 2020-04-19 03:22:29.000000000 +0200 -+++ strace-5.7/tests-mx32/waitid.c 2020-09-09 14:59:07.398039345 +0200 -@@ -103,8 +103,8 @@ - snprintf(buf, sizeof(buf), - "{si_signo=SIGCHLD" - ", si_code=%s" -- ", si_pid=%u" -- ", si_uid=%u" -+ ", si_pid=%d" -+ ", si_uid=%d" - ", si_status=%s" - ", si_utime=%llu" - ", si_stime=%llu}", diff --git a/0126-Use-PRINT_FIELD_UID-instead-of-printuid-where-approp.patch b/0126-Use-PRINT_FIELD_UID-instead-of-printuid-where-approp.patch deleted file mode 100755 index 16d23fd..0000000 --- a/0126-Use-PRINT_FIELD_UID-instead-of-printuid-where-approp.patch +++ /dev/null @@ -1,105 +0,0 @@ -From 64d04198d3c64756ae8a51646b6eac3dff419cb6 Mon Sep 17 00:00:00 2001 -From: "Dmitry V. Levin" -Date: Fri, 17 Jul 2020 08:00:00 +0000 -Subject: [PATCH 126/138] Use PRINT_FIELD_UID instead of printuid where - appropriate - -* ipc_msgctl.c: Include "print_fields.h". -(print_msqid_ds): Use PRINT_FIELD_UID instead of printuid. -* ipc_shmctl.c: Include "print_fields.h". -(print_shmid_ds): Use PRINT_FIELD_UID instead of printuid. -* statx.c (SYS_FUNC(statx)): Use PRINT_FIELD_UID instead of printuid. ---- - ipc_msgctl.c | 10 +++++----- - ipc_shmctl.c | 10 +++++----- - statx.c | 4 ++-- - 3 files changed, 12 insertions(+), 12 deletions(-) - -diff --git a/ipc_msgctl.c b/ipc_msgctl.c -index 92eda11..920ed72 100644 ---- a/ipc_msgctl.c -+++ b/ipc_msgctl.c -@@ -22,6 +22,7 @@ typedef struct NAME_OF_STRUCT_MSQID_DS msqid_ds_t; - - #include MPERS_DEFS - -+#include "print_fields.h" - #include "xlat/msgctl_flags.h" - - static void -@@ -37,9 +38,8 @@ print_msqid_ds(struct tcb *const tcp, const kernel_ulong_t addr, int cmd) - if (umove_or_printaddr(tcp, addr, &msqid_ds)) - return; - -- tprints("{msg_perm={"); -- printuid("uid=", msqid_ds.msg_perm.uid); -- printuid(", gid=", msqid_ds.msg_perm.gid); -+ PRINT_FIELD_UID("{msg_perm={", msqid_ds.msg_perm, uid); -+ PRINT_FIELD_UID(", ", msqid_ds.msg_perm, gid); - tprints(", mode="); - print_numeric_umode_t(msqid_ds.msg_perm.mode); - -@@ -50,8 +50,8 @@ print_msqid_ds(struct tcb *const tcp, const kernel_ulong_t addr, int cmd) - - tprintf(", key=%u", - (unsigned) msqid_ds.msg_perm.NAME_OF_STRUCT_IPC_PERM_KEY); -- printuid(", cuid=", msqid_ds.msg_perm.cuid); -- printuid(", cgid=", msqid_ds.msg_perm.cgid); -+ PRINT_FIELD_UID(", ", msqid_ds.msg_perm, cuid); -+ PRINT_FIELD_UID(", ", msqid_ds.msg_perm, cgid); - tprints("}"); - tprintf(", msg_stime=%u", (unsigned) msqid_ds.msg_stime); - tprintf(", msg_rtime=%u", (unsigned) msqid_ds.msg_rtime); -diff --git a/ipc_shmctl.c b/ipc_shmctl.c -index 0fb584e..83e36f3 100644 ---- a/ipc_shmctl.c -+++ b/ipc_shmctl.c -@@ -22,6 +22,7 @@ typedef struct NAME_OF_STRUCT_SHMID_DS shmid_ds_t; - - #include MPERS_DEFS - -+#include "print_fields.h" - #include "xlat/shmctl_flags.h" - - static void -@@ -37,9 +38,8 @@ print_shmid_ds(struct tcb *const tcp, const kernel_ulong_t addr, int cmd) - if (umove_or_printaddr(tcp, addr, &shmid_ds)) - return; - -- tprints("{shm_perm={"); -- printuid("uid=", shmid_ds.shm_perm.uid); -- printuid(", gid=", shmid_ds.shm_perm.gid); -+ PRINT_FIELD_UID("{shm_perm={", shmid_ds.shm_perm, uid); -+ PRINT_FIELD_UID(", ", shmid_ds.shm_perm, gid); - tprints(", mode="); - print_numeric_umode_t(shmid_ds.shm_perm.mode); - -@@ -50,8 +50,8 @@ print_shmid_ds(struct tcb *const tcp, const kernel_ulong_t addr, int cmd) - - tprintf(", key=%u", - (unsigned) shmid_ds.shm_perm.NAME_OF_STRUCT_IPC_PERM_KEY); -- printuid(", cuid=", shmid_ds.shm_perm.cuid); -- printuid(", cgid=", shmid_ds.shm_perm.cgid); -+ PRINT_FIELD_UID(", ", shmid_ds.shm_perm, cuid); -+ PRINT_FIELD_UID(", ", shmid_ds.shm_perm, cgid); - tprints("}"); - tprintf(", shm_segsz=%u", (unsigned) shmid_ds.shm_segsz); - tprintf(", shm_cpid=%u", (unsigned) shmid_ds.shm_cpid); -diff --git a/statx.c b/statx.c -index 54b6d7c..7b00b8e 100644 ---- a/statx.c -+++ b/statx.c -@@ -60,8 +60,8 @@ SYS_FUNC(statx) - - if (!abbrev(tcp)) { - PRINT_FIELD_U(", ", stx, stx_nlink); -- printuid(", stx_uid=", stx.stx_uid); -- printuid(", stx_gid=", stx.stx_gid); -+ PRINT_FIELD_UID(", ", stx, stx_uid); -+ PRINT_FIELD_UID(", ", stx, stx_gid); - } - - tprints(", stx_mode="); --- -2.1.4 - diff --git a/0127-Consistently-print-process-ids-as-signed-integers.patch b/0127-Consistently-print-process-ids-as-signed-integers.patch deleted file mode 100755 index c93332f..0000000 --- a/0127-Consistently-print-process-ids-as-signed-integers.patch +++ /dev/null @@ -1,525 +0,0 @@ -From edf6f95bd19f5ce7ac0ef62f923cd17fb6052f51 Mon Sep 17 00:00:00 2001 -From: "Dmitry V. Levin" -Date: Sat, 18 Jul 2020 08:00:00 +0000 -Subject: [PATCH 127/138] Consistently print process ids as signed integers - -* block.c (block_ioctl): Print struct_blk_user_trace_setup.pid using -PRINT_FIELD_D instead of PRINT_FIELD_U. -* bpf.c (BPF_TASK_FD_QUERY): Print task_fd_query.pid using PRINT_FIELD_D -instead of PRINT_FIELD_U. -* ipc_msgctl.c (print_msqid_ds): Print msqid_ds.msg_lspid -and msqid_ds.msg_lrpid using PRINT_FIELD_D. -* ipc_shmctl.c (print_shmid_ds): Print shmid_ds.shm_cpid and shm_lpid -using PRINT_FIELD_D. -* msghdr.c (print_scm_creds): Print ucred.pid using PRINT_FIELD_D -instead of PRINT_FIELD_U. -* netlink.c (print_nlmsghdr): Print nlmsghdr.nlmsg_pid using %d format -instead of %u. -* tests/bpf.c (BPF_TASK_FD_QUERY_checks): Update expected output. -* tests/ioctl_block.c (main): Update expected output. -* tests/ipc_msg.c (main): Likewise. -* tests/ipc_shm.c (main): Likewise. -* tests/net-yy-netlink.c (main): Likewise. -* tests/netlink_protocol.c (test_nlmsgerr): Likewise. ---- - block.c | 2 +- - bpf.c | 2 +- - ipc_msgctl.c | 4 ++-- - ipc_shmctl.c | 4 ++-- - msghdr.c | 2 +- - netlink.c | 2 +- - tests/bpf.c | 8 ++++---- - tests/ioctl_block.c | 2 +- - tests/ipc_msg.c | 6 +++--- - tests/ipc_shm.c | 8 ++++---- - tests/net-yy-netlink.c | 4 ++-- - tests/netlink_protocol.c | 4 ++-- - 12 files changed, 24 insertions(+), 24 deletions(-) - -Index: strace-5.7/block.c -=================================================================== ---- strace-5.7.orig/block.c 2020-09-09 14:50:43.878739225 +0200 -+++ strace-5.7/block.c 2020-09-09 14:59:14.715043707 +0200 -@@ -179,7 +179,7 @@ - PRINT_FIELD_U(", ", buts, buf_nr); - PRINT_FIELD_U(", ", buts, start_lba); - PRINT_FIELD_U(", ", buts, end_lba); -- PRINT_FIELD_U(", ", buts, pid); -+ PRINT_FIELD_D(", ", buts, pid); - return 0; - } else { - struct_blk_user_trace_setup buts; -Index: strace-5.7/bpf.c -=================================================================== ---- strace-5.7.orig/bpf.c 2020-09-09 14:50:43.878739225 +0200 -+++ strace-5.7/bpf.c 2020-09-09 14:59:14.715043707 +0200 -@@ -927,7 +927,7 @@ - if (entering(tcp)) { - set_tcb_priv_ulong(tcp, attr.buf_len); - -- PRINT_FIELD_U("{task_fd_query={", attr, pid); -+ PRINT_FIELD_D("{task_fd_query={", attr, pid); - PRINT_FIELD_FD(", ", attr, fd, tcp); - PRINT_FIELD_U(", ", attr, flags); - PRINT_FIELD_U(", ", attr, buf_len); -Index: strace-5.7/ipc_msgctl.c -=================================================================== ---- strace-5.7.orig/ipc_msgctl.c 2020-09-09 14:59:12.909042630 +0200 -+++ strace-5.7/ipc_msgctl.c 2020-09-09 14:59:14.715043707 +0200 -@@ -58,8 +58,8 @@ - tprintf(", msg_ctime=%u", (unsigned) msqid_ds.msg_ctime); - tprintf(", msg_qnum=%u", (unsigned) msqid_ds.msg_qnum); - tprintf(", msg_qbytes=%u", (unsigned) msqid_ds.msg_qbytes); -- tprintf(", msg_lspid=%u", (unsigned) msqid_ds.msg_lspid); -- tprintf(", msg_lrpid=%u", (unsigned) msqid_ds.msg_lrpid); -+ PRINT_FIELD_D(", ", msqid_ds, msg_lspid); -+ PRINT_FIELD_D(", ", msqid_ds, msg_lrpid); - tprints("}"); - break; - -Index: strace-5.7/ipc_shmctl.c -=================================================================== ---- strace-5.7.orig/ipc_shmctl.c 2020-09-09 14:59:12.909042630 +0200 -+++ strace-5.7/ipc_shmctl.c 2020-09-09 14:59:14.716043707 +0200 -@@ -54,8 +54,8 @@ - PRINT_FIELD_UID(", ", shmid_ds.shm_perm, cgid); - tprints("}"); - tprintf(", shm_segsz=%u", (unsigned) shmid_ds.shm_segsz); -- tprintf(", shm_cpid=%u", (unsigned) shmid_ds.shm_cpid); -- tprintf(", shm_lpid=%u", (unsigned) shmid_ds.shm_lpid); -+ PRINT_FIELD_D(", ", shmid_ds, shm_cpid); -+ PRINT_FIELD_D(", ", shmid_ds, shm_lpid); - tprintf(", shm_nattch=%u", (unsigned) shmid_ds.shm_nattch); - tprintf(", shm_atime=%u", (unsigned) shmid_ds.shm_atime); - tprintf(", shm_dtime=%u", (unsigned) shmid_ds.shm_dtime); -Index: strace-5.7/msghdr.c -=================================================================== ---- strace-5.7.orig/msghdr.c 2020-09-09 14:50:43.878739225 +0200 -+++ strace-5.7/msghdr.c 2020-09-09 14:59:14.717043708 +0200 -@@ -69,7 +69,7 @@ - { - const struct ucred *uc = cmsg_data; - -- PRINT_FIELD_U("{", *uc, pid); -+ PRINT_FIELD_D("{", *uc, pid); - PRINT_FIELD_UID(", ", *uc, uid); - PRINT_FIELD_UID(", ", *uc, gid); - tprints("}"); -Index: strace-5.7/netlink.c -=================================================================== ---- strace-5.7.orig/netlink.c 2020-09-09 14:50:43.878739225 +0200 -+++ strace-5.7/netlink.c 2020-09-09 14:59:14.717043708 +0200 -@@ -446,7 +446,7 @@ - decode_nlmsg_flags(nlmsghdr->nlmsg_flags, - nlmsghdr->nlmsg_type, family); - -- tprintf(", seq=%u, pid=%u}", nlmsghdr->nlmsg_seq, -+ tprintf(", seq=%u, pid=%d}", nlmsghdr->nlmsg_seq, - nlmsghdr->nlmsg_pid); - } - -Index: strace-5.7/tests/bpf.c -=================================================================== ---- strace-5.7.orig/tests/bpf.c 2020-09-09 14:50:43.878739225 +0200 -+++ strace-5.7/tests/bpf.c 2020-09-09 14:59:14.717043708 +0200 -@@ -1289,16 +1289,16 @@ - - static const struct bpf_attr_check BPF_TASK_FD_QUERY_checks[] = { - { -- .data = { .BPF_TASK_FD_QUERY_data = { .pid = 0xdeadbeef } }, -+ .data = { .BPF_TASK_FD_QUERY_data = { .pid = 1735928559 } }, - .size = offsetofend(struct BPF_TASK_FD_QUERY_struct, pid), -- .str = "task_fd_query={pid=3735928559, fd=0" FD0_PATH -+ .str = "task_fd_query={pid=1735928559, fd=0" FD0_PATH - ", flags=0, buf_len=0, buf=NULL, prog_id=0" - ", fd_type=BPF_FD_TYPE_RAW_TRACEPOINT" - ", probe_offset=0, probe_addr=0}" - }, - { /* 1 */ - .data = { .BPF_TASK_FD_QUERY_data = { -- .pid = 0xcafef00d, -+ .pid = 1405705229, - .fd = 0xdeadbeef, - .flags = 0xfacefeed, - .buf_len = 0xdefaced, -@@ -1309,7 +1309,7 @@ - .probe_addr = 0xfac5fed5fac7fed8 - } }, - .size = offsetofend(struct BPF_TASK_FD_QUERY_struct, probe_addr), -- .str = "task_fd_query={pid=3405705229" -+ .str = "task_fd_query={pid=1405705229" - ", fd=-559038737" - ", flags=4207869677" - ", buf_len=233811181" -Index: strace-5.7/tests/ioctl_block.c -=================================================================== ---- strace-5.7.orig/tests/ioctl_block.c 2020-09-09 14:50:43.878739225 +0200 -+++ strace-5.7/tests/ioctl_block.c 2020-09-09 14:59:14.717043708 +0200 -@@ -165,7 +165,7 @@ - - ioctl(-1, BLKTRACESETUP, buts); - printf("ioctl(-1, BLKTRACESETUP, {act_mask=%hu, buf_size=%u, buf_nr=%u" -- ", start_lba=%" PRI__u64 ", end_lba=%" PRI__u64 ", pid=%u})" -+ ", start_lba=%" PRI__u64 ", end_lba=%" PRI__u64 ", pid=%d})" - " = -1 EBADF (%m)\n", - buts->act_mask, buts->buf_size, buts->buf_nr, - buts->start_lba, buts->end_lba, buts->pid); -Index: strace-5.7/tests/ipc_msg.c -=================================================================== ---- strace-5.7.orig/tests/ipc_msg.c 2020-09-09 14:50:43.878739225 +0200 -+++ strace-5.7/tests/ipc_msg.c 2020-09-09 14:59:14.717043708 +0200 -@@ -128,15 +128,15 @@ - printf("msgctl\\(%d, (%s\\|)?%s, \\{msg_perm=\\{uid=%u" - ", gid=%u, mode=%#o, key=%u, cuid=%u, cgid=%u\\}, msg_stime=%u" - ", msg_rtime=%u, msg_ctime=%u, msg_qnum=%u, msg_qbytes=%u" -- ", msg_lspid=%u, msg_lrpid=%u\\}\\) = 0\n", -+ ", msg_lspid=%d, msg_lrpid=%d\\}\\) = 0\n", - id, str_ipc_64, str_ipc_stat, - (unsigned) ds.msg_perm.uid, (unsigned) ds.msg_perm.gid, - (unsigned) ds.msg_perm.mode, (unsigned) ds.msg_perm.__key, - (unsigned) ds.msg_perm.cuid, (unsigned) ds.msg_perm.cgid, - (unsigned) ds.msg_stime, (unsigned) ds.msg_rtime, - (unsigned) ds.msg_ctime, (unsigned) ds.msg_qnum, -- (unsigned) ds.msg_qbytes, (unsigned) ds.msg_lspid, -- (unsigned) ds.msg_lrpid); -+ (unsigned) ds.msg_qbytes, (int) ds.msg_lspid, -+ (int) ds.msg_lrpid); - - if (msgctl(id, IPC_SET, &ds)) - perror_msg_and_skip("msgctl IPC_SET"); -Index: strace-5.7/tests/ipc_shm.c -=================================================================== ---- strace-5.7.orig/tests/ipc_shm.c 2020-09-09 14:50:43.878739225 +0200 -+++ strace-5.7/tests/ipc_shm.c 2020-09-09 14:59:14.718043708 +0200 -@@ -168,15 +168,15 @@ - if (shmctl(id, IPC_STAT, &ds)) - perror_msg_and_skip("shmctl IPC_STAT"); - printf("shmctl\\(%d, (%s\\|)?%s, \\{shm_perm=\\{uid=%u, gid=%u, " -- "mode=%#o, key=%u, cuid=%u, cgid=%u\\}, shm_segsz=%u, shm_cpid=%u, " -- "shm_lpid=%u, shm_nattch=%u, shm_atime=%u, shm_dtime=%u, " -+ "mode=%#o, key=%u, cuid=%u, cgid=%u\\}, shm_segsz=%u, shm_cpid=%d, " -+ "shm_lpid=%d, shm_nattch=%u, shm_atime=%u, shm_dtime=%u, " - "shm_ctime=%u\\}\\) = 0\n", - id, str_ipc_64, str_ipc_stat, - (unsigned) ds.shm_perm.uid, (unsigned) ds.shm_perm.gid, - (unsigned) ds.shm_perm.mode, (unsigned) ds.shm_perm.__key, - (unsigned) ds.shm_perm.cuid, (unsigned) ds.shm_perm.cgid, -- (unsigned) ds.shm_segsz, (unsigned) ds.shm_cpid, -- (unsigned) ds.shm_lpid, (unsigned) ds.shm_nattch, -+ (unsigned) ds.shm_segsz, (int) ds.shm_cpid, -+ (int) ds.shm_lpid, (unsigned) ds.shm_nattch, - (unsigned) ds.shm_atime, (unsigned) ds.shm_dtime, - (unsigned) ds. shm_ctime); - -Index: strace-5.7/tests/net-yy-netlink.c -=================================================================== ---- strace-5.7.orig/tests/net-yy-netlink.c 2020-09-09 14:50:43.878739225 +0200 -+++ strace-5.7/tests/net-yy-netlink.c 2020-09-09 14:59:14.718043708 +0200 -@@ -67,13 +67,13 @@ - if (bind(fd, sa, *len)) - perror_msg_and_skip("bind"); - printf("bind(%d" FMT_UNBOUND ", {sa_family=AF_NETLINK" -- ", nl_pid=%u, nl_groups=00000000}, %u) = 0\n", -+ ", nl_pid=%d, nl_groups=00000000}, %u) = 0\n", - fd, ARG_UNBOUND, addr.nl_pid, (unsigned) *len); - - if (getsockname(fd, sa, len)) - perror_msg_and_fail("getsockname"); - printf("getsockname(%d" FMT_BOUND ", {sa_family=AF_NETLINK" -- ", nl_pid=%u, nl_groups=00000000}, [%u]) = 0\n", -+ ", nl_pid=%d, nl_groups=00000000}, [%u]) = 0\n", - fd, ARG_BOUND, addr.nl_pid, (unsigned) *len); - - if (close(fd)) -Index: strace-5.7/tests/netlink_protocol.c -=================================================================== ---- strace-5.7.orig/tests/netlink_protocol.c 2020-09-09 14:50:43.878739225 +0200 -+++ strace-5.7/tests/netlink_protocol.c 2020-09-09 14:59:14.718043708 +0200 -@@ -264,7 +264,7 @@ - printf("sendto(%d, {{len=%u, type=NLMSG_ERROR, flags=NLM_F_REQUEST" - ", seq=0, pid=0}, {error=-EACCES" - ", msg={len=%u, type=NLMSG_NOOP, flags=NLM_F_REQUEST|0x%x" -- ", seq=%u, pid=%u}}}, %u, MSG_DONTWAIT, NULL, 0) = %s\n", -+ ", seq=%u, pid=%d}}}, %u, MSG_DONTWAIT, NULL, 0) = %s\n", - fd, nlh->nlmsg_len, err->msg.nlmsg_len, NLM_F_DUMP, - err->msg.nlmsg_seq, err->msg.nlmsg_pid, - nlh->nlmsg_len, sprintrc(rc)); -@@ -289,7 +289,7 @@ - printf("sendto(%d, {{len=%u, type=NLMSG_ERROR, flags=NLM_F_REQUEST" - ", seq=0, pid=0}, {error=-EACCES" - ", msg={{len=%u, type=NLMSG_NOOP, flags=NLM_F_REQUEST|0x%x" -- ", seq=%u, pid=%u}, \"\\x61\\x62\\x63\\x64\"}}}" -+ ", seq=%u, pid=%d}, \"\\x61\\x62\\x63\\x64\"}}}" - ", %u, MSG_DONTWAIT, NULL, 0) = %s\n", - fd, nlh->nlmsg_len, err->msg.nlmsg_len, NLM_F_DUMP, - err->msg.nlmsg_seq, err->msg.nlmsg_pid, -Index: strace-5.7/tests-m32/bpf.c -=================================================================== ---- strace-5.7.orig/tests-m32/bpf.c 2020-04-18 15:47:17.000000000 +0200 -+++ strace-5.7/tests-m32/bpf.c 2020-09-09 14:59:52.229066067 +0200 -@@ -1289,16 +1289,16 @@ - - static const struct bpf_attr_check BPF_TASK_FD_QUERY_checks[] = { - { -- .data = { .BPF_TASK_FD_QUERY_data = { .pid = 0xdeadbeef } }, -+ .data = { .BPF_TASK_FD_QUERY_data = { .pid = 1735928559 } }, - .size = offsetofend(struct BPF_TASK_FD_QUERY_struct, pid), -- .str = "task_fd_query={pid=3735928559, fd=0" FD0_PATH -+ .str = "task_fd_query={pid=1735928559, fd=0" FD0_PATH - ", flags=0, buf_len=0, buf=NULL, prog_id=0" - ", fd_type=BPF_FD_TYPE_RAW_TRACEPOINT" - ", probe_offset=0, probe_addr=0}" - }, - { /* 1 */ - .data = { .BPF_TASK_FD_QUERY_data = { -- .pid = 0xcafef00d, -+ .pid = 1405705229, - .fd = 0xdeadbeef, - .flags = 0xfacefeed, - .buf_len = 0xdefaced, -@@ -1309,7 +1309,7 @@ - .probe_addr = 0xfac5fed5fac7fed8 - } }, - .size = offsetofend(struct BPF_TASK_FD_QUERY_struct, probe_addr), -- .str = "task_fd_query={pid=3405705229" -+ .str = "task_fd_query={pid=1405705229" - ", fd=-559038737" - ", flags=4207869677" - ", buf_len=233811181" -Index: strace-5.7/tests-m32/ioctl_block.c -=================================================================== ---- strace-5.7.orig/tests-m32/ioctl_block.c 2019-07-24 19:12:18.000000000 +0200 -+++ strace-5.7/tests-m32/ioctl_block.c 2020-09-09 14:59:52.290066103 +0200 -@@ -165,7 +165,7 @@ - - ioctl(-1, BLKTRACESETUP, buts); - printf("ioctl(-1, BLKTRACESETUP, {act_mask=%hu, buf_size=%u, buf_nr=%u" -- ", start_lba=%" PRI__u64 ", end_lba=%" PRI__u64 ", pid=%u})" -+ ", start_lba=%" PRI__u64 ", end_lba=%" PRI__u64 ", pid=%d})" - " = -1 EBADF (%m)\n", - buts->act_mask, buts->buf_size, buts->buf_nr, - buts->start_lba, buts->end_lba, buts->pid); -Index: strace-5.7/tests-m32/ipc_msg.c -=================================================================== ---- strace-5.7.orig/tests-m32/ipc_msg.c 2019-09-25 03:02:03.000000000 +0200 -+++ strace-5.7/tests-m32/ipc_msg.c 2020-09-09 14:59:52.349066138 +0200 -@@ -128,15 +128,15 @@ - printf("msgctl\\(%d, (%s\\|)?%s, \\{msg_perm=\\{uid=%u" - ", gid=%u, mode=%#o, key=%u, cuid=%u, cgid=%u\\}, msg_stime=%u" - ", msg_rtime=%u, msg_ctime=%u, msg_qnum=%u, msg_qbytes=%u" -- ", msg_lspid=%u, msg_lrpid=%u\\}\\) = 0\n", -+ ", msg_lspid=%d, msg_lrpid=%d\\}\\) = 0\n", - id, str_ipc_64, str_ipc_stat, - (unsigned) ds.msg_perm.uid, (unsigned) ds.msg_perm.gid, - (unsigned) ds.msg_perm.mode, (unsigned) ds.msg_perm.__key, - (unsigned) ds.msg_perm.cuid, (unsigned) ds.msg_perm.cgid, - (unsigned) ds.msg_stime, (unsigned) ds.msg_rtime, - (unsigned) ds.msg_ctime, (unsigned) ds.msg_qnum, -- (unsigned) ds.msg_qbytes, (unsigned) ds.msg_lspid, -- (unsigned) ds.msg_lrpid); -+ (unsigned) ds.msg_qbytes, (int) ds.msg_lspid, -+ (int) ds.msg_lrpid); - - if (msgctl(id, IPC_SET, &ds)) - perror_msg_and_skip("msgctl IPC_SET"); -Index: strace-5.7/tests-m32/ipc_shm.c -=================================================================== ---- strace-5.7.orig/tests-m32/ipc_shm.c 2019-11-28 20:30:05.000000000 +0100 -+++ strace-5.7/tests-m32/ipc_shm.c 2020-09-09 14:59:52.406066172 +0200 -@@ -168,15 +168,15 @@ - if (shmctl(id, IPC_STAT, &ds)) - perror_msg_and_skip("shmctl IPC_STAT"); - printf("shmctl\\(%d, (%s\\|)?%s, \\{shm_perm=\\{uid=%u, gid=%u, " -- "mode=%#o, key=%u, cuid=%u, cgid=%u\\}, shm_segsz=%u, shm_cpid=%u, " -- "shm_lpid=%u, shm_nattch=%u, shm_atime=%u, shm_dtime=%u, " -+ "mode=%#o, key=%u, cuid=%u, cgid=%u\\}, shm_segsz=%u, shm_cpid=%d, " -+ "shm_lpid=%d, shm_nattch=%u, shm_atime=%u, shm_dtime=%u, " - "shm_ctime=%u\\}\\) = 0\n", - id, str_ipc_64, str_ipc_stat, - (unsigned) ds.shm_perm.uid, (unsigned) ds.shm_perm.gid, - (unsigned) ds.shm_perm.mode, (unsigned) ds.shm_perm.__key, - (unsigned) ds.shm_perm.cuid, (unsigned) ds.shm_perm.cgid, -- (unsigned) ds.shm_segsz, (unsigned) ds.shm_cpid, -- (unsigned) ds.shm_lpid, (unsigned) ds.shm_nattch, -+ (unsigned) ds.shm_segsz, (int) ds.shm_cpid, -+ (int) ds.shm_lpid, (unsigned) ds.shm_nattch, - (unsigned) ds.shm_atime, (unsigned) ds.shm_dtime, - (unsigned) ds. shm_ctime); - -Index: strace-5.7/tests-m32/net-yy-netlink.c -=================================================================== ---- strace-5.7.orig/tests-m32/net-yy-netlink.c 2020-04-04 00:58:26.000000000 +0200 -+++ strace-5.7/tests-m32/net-yy-netlink.c 2020-09-09 14:59:52.464066207 +0200 -@@ -67,13 +67,13 @@ - if (bind(fd, sa, *len)) - perror_msg_and_skip("bind"); - printf("bind(%d" FMT_UNBOUND ", {sa_family=AF_NETLINK" -- ", nl_pid=%u, nl_groups=00000000}, %u) = 0\n", -+ ", nl_pid=%d, nl_groups=00000000}, %u) = 0\n", - fd, ARG_UNBOUND, addr.nl_pid, (unsigned) *len); - - if (getsockname(fd, sa, len)) - perror_msg_and_fail("getsockname"); - printf("getsockname(%d" FMT_BOUND ", {sa_family=AF_NETLINK" -- ", nl_pid=%u, nl_groups=00000000}, [%u]) = 0\n", -+ ", nl_pid=%d, nl_groups=00000000}, [%u]) = 0\n", - fd, ARG_BOUND, addr.nl_pid, (unsigned) *len); - - if (close(fd)) -Index: strace-5.7/tests-m32/netlink_protocol.c -=================================================================== ---- strace-5.7.orig/tests-m32/netlink_protocol.c 2018-12-30 16:35:21.000000000 +0100 -+++ strace-5.7/tests-m32/netlink_protocol.c 2020-09-09 14:59:52.524066242 +0200 -@@ -264,7 +264,7 @@ - printf("sendto(%d, {{len=%u, type=NLMSG_ERROR, flags=NLM_F_REQUEST" - ", seq=0, pid=0}, {error=-EACCES" - ", msg={len=%u, type=NLMSG_NOOP, flags=NLM_F_REQUEST|0x%x" -- ", seq=%u, pid=%u}}}, %u, MSG_DONTWAIT, NULL, 0) = %s\n", -+ ", seq=%u, pid=%d}}}, %u, MSG_DONTWAIT, NULL, 0) = %s\n", - fd, nlh->nlmsg_len, err->msg.nlmsg_len, NLM_F_DUMP, - err->msg.nlmsg_seq, err->msg.nlmsg_pid, - nlh->nlmsg_len, sprintrc(rc)); -@@ -289,7 +289,7 @@ - printf("sendto(%d, {{len=%u, type=NLMSG_ERROR, flags=NLM_F_REQUEST" - ", seq=0, pid=0}, {error=-EACCES" - ", msg={{len=%u, type=NLMSG_NOOP, flags=NLM_F_REQUEST|0x%x" -- ", seq=%u, pid=%u}, \"\\x61\\x62\\x63\\x64\"}}}" -+ ", seq=%u, pid=%d}, \"\\x61\\x62\\x63\\x64\"}}}" - ", %u, MSG_DONTWAIT, NULL, 0) = %s\n", - fd, nlh->nlmsg_len, err->msg.nlmsg_len, NLM_F_DUMP, - err->msg.nlmsg_seq, err->msg.nlmsg_pid, -Index: strace-5.7/tests-mx32/bpf.c -=================================================================== ---- strace-5.7.orig/tests-mx32/bpf.c 2020-04-18 15:47:17.000000000 +0200 -+++ strace-5.7/tests-mx32/bpf.c 2020-09-09 14:59:52.261066086 +0200 -@@ -1289,16 +1289,16 @@ - - static const struct bpf_attr_check BPF_TASK_FD_QUERY_checks[] = { - { -- .data = { .BPF_TASK_FD_QUERY_data = { .pid = 0xdeadbeef } }, -+ .data = { .BPF_TASK_FD_QUERY_data = { .pid = 1735928559 } }, - .size = offsetofend(struct BPF_TASK_FD_QUERY_struct, pid), -- .str = "task_fd_query={pid=3735928559, fd=0" FD0_PATH -+ .str = "task_fd_query={pid=1735928559, fd=0" FD0_PATH - ", flags=0, buf_len=0, buf=NULL, prog_id=0" - ", fd_type=BPF_FD_TYPE_RAW_TRACEPOINT" - ", probe_offset=0, probe_addr=0}" - }, - { /* 1 */ - .data = { .BPF_TASK_FD_QUERY_data = { -- .pid = 0xcafef00d, -+ .pid = 1405705229, - .fd = 0xdeadbeef, - .flags = 0xfacefeed, - .buf_len = 0xdefaced, -@@ -1309,7 +1309,7 @@ - .probe_addr = 0xfac5fed5fac7fed8 - } }, - .size = offsetofend(struct BPF_TASK_FD_QUERY_struct, probe_addr), -- .str = "task_fd_query={pid=3405705229" -+ .str = "task_fd_query={pid=1405705229" - ", fd=-559038737" - ", flags=4207869677" - ", buf_len=233811181" -Index: strace-5.7/tests-mx32/ioctl_block.c -=================================================================== ---- strace-5.7.orig/tests-mx32/ioctl_block.c 2019-07-24 19:12:18.000000000 +0200 -+++ strace-5.7/tests-mx32/ioctl_block.c 2020-09-09 14:59:52.319066120 +0200 -@@ -165,7 +165,7 @@ - - ioctl(-1, BLKTRACESETUP, buts); - printf("ioctl(-1, BLKTRACESETUP, {act_mask=%hu, buf_size=%u, buf_nr=%u" -- ", start_lba=%" PRI__u64 ", end_lba=%" PRI__u64 ", pid=%u})" -+ ", start_lba=%" PRI__u64 ", end_lba=%" PRI__u64 ", pid=%d})" - " = -1 EBADF (%m)\n", - buts->act_mask, buts->buf_size, buts->buf_nr, - buts->start_lba, buts->end_lba, buts->pid); -Index: strace-5.7/tests-mx32/ipc_msg.c -=================================================================== ---- strace-5.7.orig/tests-mx32/ipc_msg.c 2019-09-25 03:02:03.000000000 +0200 -+++ strace-5.7/tests-mx32/ipc_msg.c 2020-09-09 14:59:52.377066155 +0200 -@@ -128,15 +128,15 @@ - printf("msgctl\\(%d, (%s\\|)?%s, \\{msg_perm=\\{uid=%u" - ", gid=%u, mode=%#o, key=%u, cuid=%u, cgid=%u\\}, msg_stime=%u" - ", msg_rtime=%u, msg_ctime=%u, msg_qnum=%u, msg_qbytes=%u" -- ", msg_lspid=%u, msg_lrpid=%u\\}\\) = 0\n", -+ ", msg_lspid=%d, msg_lrpid=%d\\}\\) = 0\n", - id, str_ipc_64, str_ipc_stat, - (unsigned) ds.msg_perm.uid, (unsigned) ds.msg_perm.gid, - (unsigned) ds.msg_perm.mode, (unsigned) ds.msg_perm.__key, - (unsigned) ds.msg_perm.cuid, (unsigned) ds.msg_perm.cgid, - (unsigned) ds.msg_stime, (unsigned) ds.msg_rtime, - (unsigned) ds.msg_ctime, (unsigned) ds.msg_qnum, -- (unsigned) ds.msg_qbytes, (unsigned) ds.msg_lspid, -- (unsigned) ds.msg_lrpid); -+ (unsigned) ds.msg_qbytes, (int) ds.msg_lspid, -+ (int) ds.msg_lrpid); - - if (msgctl(id, IPC_SET, &ds)) - perror_msg_and_skip("msgctl IPC_SET"); -Index: strace-5.7/tests-mx32/ipc_shm.c -=================================================================== ---- strace-5.7.orig/tests-mx32/ipc_shm.c 2019-11-28 20:30:05.000000000 +0100 -+++ strace-5.7/tests-mx32/ipc_shm.c 2020-09-09 14:59:52.435066189 +0200 -@@ -168,15 +168,15 @@ - if (shmctl(id, IPC_STAT, &ds)) - perror_msg_and_skip("shmctl IPC_STAT"); - printf("shmctl\\(%d, (%s\\|)?%s, \\{shm_perm=\\{uid=%u, gid=%u, " -- "mode=%#o, key=%u, cuid=%u, cgid=%u\\}, shm_segsz=%u, shm_cpid=%u, " -- "shm_lpid=%u, shm_nattch=%u, shm_atime=%u, shm_dtime=%u, " -+ "mode=%#o, key=%u, cuid=%u, cgid=%u\\}, shm_segsz=%u, shm_cpid=%d, " -+ "shm_lpid=%d, shm_nattch=%u, shm_atime=%u, shm_dtime=%u, " - "shm_ctime=%u\\}\\) = 0\n", - id, str_ipc_64, str_ipc_stat, - (unsigned) ds.shm_perm.uid, (unsigned) ds.shm_perm.gid, - (unsigned) ds.shm_perm.mode, (unsigned) ds.shm_perm.__key, - (unsigned) ds.shm_perm.cuid, (unsigned) ds.shm_perm.cgid, -- (unsigned) ds.shm_segsz, (unsigned) ds.shm_cpid, -- (unsigned) ds.shm_lpid, (unsigned) ds.shm_nattch, -+ (unsigned) ds.shm_segsz, (int) ds.shm_cpid, -+ (int) ds.shm_lpid, (unsigned) ds.shm_nattch, - (unsigned) ds.shm_atime, (unsigned) ds.shm_dtime, - (unsigned) ds. shm_ctime); - -Index: strace-5.7/tests-mx32/net-yy-netlink.c -=================================================================== ---- strace-5.7.orig/tests-mx32/net-yy-netlink.c 2020-04-04 00:58:26.000000000 +0200 -+++ strace-5.7/tests-mx32/net-yy-netlink.c 2020-09-09 14:59:52.494066225 +0200 -@@ -67,13 +67,13 @@ - if (bind(fd, sa, *len)) - perror_msg_and_skip("bind"); - printf("bind(%d" FMT_UNBOUND ", {sa_family=AF_NETLINK" -- ", nl_pid=%u, nl_groups=00000000}, %u) = 0\n", -+ ", nl_pid=%d, nl_groups=00000000}, %u) = 0\n", - fd, ARG_UNBOUND, addr.nl_pid, (unsigned) *len); - - if (getsockname(fd, sa, len)) - perror_msg_and_fail("getsockname"); - printf("getsockname(%d" FMT_BOUND ", {sa_family=AF_NETLINK" -- ", nl_pid=%u, nl_groups=00000000}, [%u]) = 0\n", -+ ", nl_pid=%d, nl_groups=00000000}, [%u]) = 0\n", - fd, ARG_BOUND, addr.nl_pid, (unsigned) *len); - - if (close(fd)) -Index: strace-5.7/tests-mx32/netlink_protocol.c -=================================================================== ---- strace-5.7.orig/tests-mx32/netlink_protocol.c 2018-12-30 16:35:21.000000000 +0100 -+++ strace-5.7/tests-mx32/netlink_protocol.c 2020-09-09 14:59:52.553066260 +0200 -@@ -264,7 +264,7 @@ - printf("sendto(%d, {{len=%u, type=NLMSG_ERROR, flags=NLM_F_REQUEST" - ", seq=0, pid=0}, {error=-EACCES" - ", msg={len=%u, type=NLMSG_NOOP, flags=NLM_F_REQUEST|0x%x" -- ", seq=%u, pid=%u}}}, %u, MSG_DONTWAIT, NULL, 0) = %s\n", -+ ", seq=%u, pid=%d}}}, %u, MSG_DONTWAIT, NULL, 0) = %s\n", - fd, nlh->nlmsg_len, err->msg.nlmsg_len, NLM_F_DUMP, - err->msg.nlmsg_seq, err->msg.nlmsg_pid, - nlh->nlmsg_len, sprintrc(rc)); -@@ -289,7 +289,7 @@ - printf("sendto(%d, {{len=%u, type=NLMSG_ERROR, flags=NLM_F_REQUEST" - ", seq=0, pid=0}, {error=-EACCES" - ", msg={{len=%u, type=NLMSG_NOOP, flags=NLM_F_REQUEST|0x%x" -- ", seq=%u, pid=%u}, \"\\x61\\x62\\x63\\x64\"}}}" -+ ", seq=%u, pid=%d}, \"\\x61\\x62\\x63\\x64\"}}}" - ", %u, MSG_DONTWAIT, NULL, 0) = %s\n", - fd, nlh->nlmsg_len, err->msg.nlmsg_len, NLM_F_DUMP, - err->msg.nlmsg_seq, err->msg.nlmsg_pid, diff --git a/0128-Remove-tcb-parameter-of-read_int_from_file.patch b/0128-Remove-tcb-parameter-of-read_int_from_file.patch deleted file mode 100755 index d2a21d3..0000000 --- a/0128-Remove-tcb-parameter-of-read_int_from_file.patch +++ /dev/null @@ -1,56 +0,0 @@ -From 924f71a4296be54e109784dfdb487b732bfc9bbf Mon Sep 17 00:00:00 2001 -From: =?UTF-8?q?=C3=81kos=20Uzonyi?= -Date: Fri, 17 Jul 2020 23:24:36 +0200 -Subject: [PATCH 128/138] Remove tcb parameter of read_int_from_file - -* defs.h (read_int_from_file): Remove tcb parameter. -* util.c (read_int_from_file): Likewise. -* msghdr.c (get_optmem_max): Remove tcb parameter of read_int_from_file. ---- - defs.h | 2 +- - msghdr.c | 2 +- - util.c | 2 +- - 3 files changed, 3 insertions(+), 3 deletions(-) - -diff --git a/defs.h b/defs.h -index d8bd513..dae1cd9 100644 ---- a/defs.h -+++ b/defs.h -@@ -498,7 +498,7 @@ extern unsigned os_release; - # undef KERNEL_VERSION - # define KERNEL_VERSION(a, b, c) (((a) << 16) + ((b) << 8) + (c)) - --extern int read_int_from_file(struct tcb *, const char *, int *); -+extern int read_int_from_file(const char *, int *); - - extern void set_sortby(const char *); - extern int set_overhead(const char *); -diff --git a/msghdr.c b/msghdr.c -index becbb51..1ab4c6e 100644 ---- a/msghdr.c -+++ b/msghdr.c -@@ -293,7 +293,7 @@ get_optmem_max(struct tcb *tcp) - static int optmem_max; - - if (!optmem_max) { -- if (read_int_from_file(tcp, "/proc/sys/net/core/optmem_max", -+ if (read_int_from_file("/proc/sys/net/core/optmem_max", - &optmem_max) || optmem_max <= 0) { - optmem_max = sizeof(long long) * (2 * IOV_MAX + 512); - } else { -diff --git a/util.c b/util.c -index cde76c1..286c690 100644 ---- a/util.c -+++ b/util.c -@@ -1517,7 +1517,7 @@ print_abnormal_hi(const kernel_ulong_t val) - } - - int --read_int_from_file(struct tcb *tcp, const char *const fname, int *const pvalue) -+read_int_from_file(const char *const fname, int *const pvalue) - { - const int fd = open_file(fname, O_RDONLY); - if (fd < 0) --- -2.1.4 - diff --git a/0129-Add-struct-tcb-parameters-to-various-functions.patch b/0129-Add-struct-tcb-parameters-to-various-functions.patch deleted file mode 100755 index 64e70e3..0000000 --- a/0129-Add-struct-tcb-parameters-to-various-functions.patch +++ /dev/null @@ -1,417 +0,0 @@ -From 09ca090db1a67eaf590372ae85a94ba8b41223c2 Mon Sep 17 00:00:00 2001 -From: =?UTF-8?q?=C3=81kos=20Uzonyi?= -Date: Mon, 27 Jul 2020 20:54:06 +0200 -Subject: [PATCH 129/138] Add "struct tcb *" parameters to various functions - -This is going to be needed to implement pidns support. - -* defs.h (print_sockaddr): Add a "struct tcb *" parameter. -* printsiginfo.h (printsiginfo): Likewise. -* fcntl.c (print_struct_flock64): Likewise. All callers updated. -* print_fields.h (PRINT_FIELD_SOCKADDR): Likewise. All callers updated. -* printsiginfo.c (printsigsource, print_si_info, printsiginfo): Likewise. -All callers updated. -* sockaddr.c (print_sockaddr_data_un, print_sockaddr_data_in, -print_sockaddr_data_in6, print_sockaddr_data_ax25, -print_sockaddr_data_ipx, print_sockaddr_data_x25, -print_sockaddr_data_nl, print_sockaddr_data_ll, -print_sockaddr_data_bt, sockaddr_printer, print_sockaddr): Likewise. -All callers updated. ---- - defs.h | 2 +- - fcntl.c | 6 +++--- - msghdr.c | 4 ++-- - print_fields.h | 4 ++-- - print_group_req.c | 2 +- - printsiginfo.c | 22 +++++++++++----------- - printsiginfo.h | 2 +- - sock.c | 10 +++++----- - sockaddr.c | 33 ++++++++++++++++++++------------- - strace.c | 2 +- - 10 files changed, 47 insertions(+), 40 deletions(-) - -diff --git a/defs.h b/defs.h -index dae1cd9..48987f9 100644 ---- a/defs.h -+++ b/defs.h -@@ -1059,7 +1059,7 @@ printfd(struct tcb *tcp, int fd) - * of the tracee the descriptor tcp). This is a stub. - */ - extern void printfd_pid_tracee_ns(struct tcb *tcp, pid_t pid, int fd); --extern void print_sockaddr(const void *sa, int len); -+extern void print_sockaddr(struct tcb *, const void *sa, int len); - extern bool - print_inet_addr(int af, const void *addr, unsigned int len, const char *var_name); - extern bool -diff --git a/fcntl.c b/fcntl.c -index e84549e..345634c 100644 ---- a/fcntl.c -+++ b/fcntl.c -@@ -21,7 +21,7 @@ - #include "xlat/notifyflags.h" - - static void --print_struct_flock64(const struct_kernel_flock64 *fl, const int getlk) -+print_struct_flock64(struct tcb *const tcp, const struct_kernel_flock64 *fl, const int getlk) - { - PRINT_FIELD_XVAL("{", *fl, l_type, lockfcmds, "F_???"); - PRINT_FIELD_XVAL(", ", *fl, l_whence, whence_codes, "SEEK_???"); -@@ -38,7 +38,7 @@ printflock64(struct tcb *const tcp, const kernel_ulong_t addr, const int getlk) - struct_kernel_flock64 fl; - - if (fetch_struct_flock64(tcp, addr, &fl)) -- print_struct_flock64(&fl, getlk); -+ print_struct_flock64(tcp, &fl, getlk); - } - - static void -@@ -47,7 +47,7 @@ printflock(struct tcb *const tcp, const kernel_ulong_t addr, const int getlk) - struct_kernel_flock64 fl; - - if (fetch_struct_flock(tcp, addr, &fl)) -- print_struct_flock64(&fl, getlk); -+ print_struct_flock64(tcp, &fl, getlk); - } - - static void -diff --git a/msghdr.c b/msghdr.c -index 1ab4c6e..ef6dc24 100644 ---- a/msghdr.c -+++ b/msghdr.c -@@ -216,7 +216,7 @@ print_cmsg_ip_recverr(struct tcb *tcp, const void *cmsg_data, - PRINT_FIELD_U(", ", *err, ee_code); - PRINT_FIELD_U(", ", *err, ee_info); - PRINT_FIELD_U(", ", *err, ee_data); -- PRINT_FIELD_SOCKADDR(", ", *err, offender); -+ PRINT_FIELD_SOCKADDR(", ", *err, offender, tcp); - tprints("}"); - } - -@@ -228,7 +228,7 @@ print_cmsg_ip_origdstaddr(struct tcb *tcp, const void *cmsg_data, - data_len > sizeof(struct sockaddr_storage) - ? sizeof(struct sockaddr_storage) : data_len; - -- print_sockaddr(cmsg_data, addr_len); -+ print_sockaddr(tcp, cmsg_data, addr_len); - } - - typedef void (* const cmsg_printer)(struct tcb *, const void *, unsigned int); -diff --git a/print_fields.h b/print_fields.h -index 70dbbff..2413398 100644 ---- a/print_fields.h -+++ b/print_fields.h -@@ -211,10 +211,10 @@ - print_ifindex((where_).field_); \ - } while (0) - --# define PRINT_FIELD_SOCKADDR(prefix_, where_, field_) \ -+# define PRINT_FIELD_SOCKADDR(prefix_, where_, field_, tcp_) \ - do { \ - STRACE_PRINTF("%s%s=", (prefix_), #field_); \ -- print_sockaddr(&(where_).field_, \ -+ print_sockaddr(tcp_, &(where_).field_, \ - sizeof((where_).field_)); \ - } while (0) - -diff --git a/print_group_req.c b/print_group_req.c -index f0ce58b..9e8ce60 100644 ---- a/print_group_req.c -+++ b/print_group_req.c -@@ -30,7 +30,7 @@ MPERS_PRINTER_DECL(void, print_group_req, struct tcb *const tcp, - printaddr(addr); - } else if (!umove_or_printaddr(tcp, addr, &greq)) { - PRINT_FIELD_IFINDEX("{", greq, gr_interface); -- PRINT_FIELD_SOCKADDR(", ", greq, gr_group); -+ PRINT_FIELD_SOCKADDR(", ", greq, gr_group, tcp); - tprints("}"); - } - } -diff --git a/printsiginfo.c b/printsiginfo.c -index 0a9932d..8ed1e7b 100644 ---- a/printsiginfo.c -+++ b/printsiginfo.c -@@ -56,7 +56,7 @@ - #endif - - static void --printsigsource(const siginfo_t *sip) -+printsigsource(struct tcb *tcp, const siginfo_t *sip) - { - PRINT_FIELD_D(", ", *sip, si_pid); - PRINT_FIELD_UID(", ", *sip, si_uid); -@@ -116,7 +116,7 @@ print_si_code(int si_signo, unsigned int si_code) - } - - static void --print_si_info(const siginfo_t *sip) -+print_si_info(struct tcb *tcp, const siginfo_t *sip) - { - if (sip->si_errno) - PRINT_FIELD_ERR_U(", ", *sip, si_errno); -@@ -124,10 +124,10 @@ print_si_info(const siginfo_t *sip) - if (SI_FROMUSER(sip)) { - switch (sip->si_code) { - case SI_USER: -- printsigsource(sip); -+ printsigsource(tcp, sip); - break; - case SI_TKILL: -- printsigsource(sip); -+ printsigsource(tcp, sip); - break; - #if defined HAVE_SIGINFO_T_SI_TIMERID && defined HAVE_SIGINFO_T_SI_OVERRUN - case SI_TIMER: -@@ -137,7 +137,7 @@ print_si_info(const siginfo_t *sip) - break; - #endif - default: -- printsigsource(sip); -+ printsigsource(tcp, sip); - if (sip->si_ptr) - printsigval(sip); - break; -@@ -145,7 +145,7 @@ print_si_info(const siginfo_t *sip) - } else { - switch (sip->si_signo) { - case SIGCHLD: -- printsigsource(sip); -+ printsigsource(tcp, sip); - tprints(", si_status="); - if (sip->si_code == CLD_EXITED) - tprintf("%d", sip->si_status); -@@ -204,7 +204,7 @@ print_si_info(const siginfo_t *sip) - #endif - default: - if (sip->si_pid || sip->si_uid) -- printsigsource(sip); -+ printsigsource(tcp, sip); - if (sip->si_ptr) - printsigval(sip); - } -@@ -215,7 +215,7 @@ print_si_info(const siginfo_t *sip) - static - #endif - void --printsiginfo(const siginfo_t *sip) -+printsiginfo(struct tcb *tcp, const siginfo_t *sip) - { - if (sip->si_signo == 0) { - tprints("{}"); -@@ -230,7 +230,7 @@ printsiginfo(const siginfo_t *sip) - #ifdef SI_NOINFO - if (sip->si_code != SI_NOINFO) - #endif -- print_si_info(sip); -+ print_si_info(tcp, sip); - - tprints("}"); - } -@@ -241,13 +241,13 @@ MPERS_PRINTER_DECL(void, printsiginfo_at, - siginfo_t si; - - if (!umove_or_printaddr(tcp, addr, &si)) -- printsiginfo(&si); -+ printsiginfo(tcp, &si); - } - - static bool - print_siginfo_t(struct tcb *tcp, void *elem_buf, size_t elem_size, void *data) - { -- printsiginfo((const siginfo_t *) elem_buf); -+ printsiginfo(tcp, (const siginfo_t *) elem_buf); - return true; - } - -diff --git a/printsiginfo.h b/printsiginfo.h -index 4088cb5..3fec2ab 100644 ---- a/printsiginfo.h -+++ b/printsiginfo.h -@@ -8,6 +8,6 @@ - #ifndef STRACE_PRINTSIGINFO_H - # define STRACE_PRINTSIGINFO_H - --extern void printsiginfo(const siginfo_t *); -+extern void printsiginfo(struct tcb *, const siginfo_t *); - - #endif /* !STRACE_PRINTSIGINFO_H */ -diff --git a/sock.c b/sock.c -index 5b14007..99a3190 100644 ---- a/sock.c -+++ b/sock.c -@@ -44,19 +44,19 @@ print_ifreq(struct tcb *const tcp, const unsigned int code, - switch (code) { - case SIOCSIFADDR: - case SIOCGIFADDR: -- PRINT_FIELD_SOCKADDR("", *ifr, ifr_addr); -+ PRINT_FIELD_SOCKADDR("", *ifr, ifr_addr, tcp); - break; - case SIOCSIFDSTADDR: - case SIOCGIFDSTADDR: -- PRINT_FIELD_SOCKADDR("", *ifr, ifr_dstaddr); -+ PRINT_FIELD_SOCKADDR("", *ifr, ifr_dstaddr, tcp); - break; - case SIOCSIFBRDADDR: - case SIOCGIFBRDADDR: -- PRINT_FIELD_SOCKADDR("", *ifr, ifr_broadaddr); -+ PRINT_FIELD_SOCKADDR("", *ifr, ifr_broadaddr, tcp); - break; - case SIOCSIFNETMASK: - case SIOCGIFNETMASK: -- PRINT_FIELD_SOCKADDR("", *ifr, ifr_netmask); -+ PRINT_FIELD_SOCKADDR("", *ifr, ifr_netmask, tcp); - break; - case SIOCSIFHWADDR: - case SIOCGIFHWADDR: { -@@ -126,7 +126,7 @@ print_ifconf_ifreq(struct tcb *tcp, void *elem_buf, size_t elem_size, - - tprints("{ifr_name="); - print_ifname(ifr->ifr_name); -- PRINT_FIELD_SOCKADDR(", ", *ifr, ifr_addr); -+ PRINT_FIELD_SOCKADDR(", ", *ifr, ifr_addr, tcp); - tprints("}"); - - return true; -diff --git a/sockaddr.c b/sockaddr.c -index b6b9aa7..b004633 100644 ---- a/sockaddr.c -+++ b/sockaddr.c -@@ -47,7 +47,7 @@ const size_t arp_hardware_types_size = ARRAY_SIZE(arp_hardware_types) - 1; - const size_t ethernet_protocols_size = ARRAY_SIZE(ethernet_protocols) - 1; - - static void --print_sockaddr_data_un(const void *const buf, const int addrlen) -+print_sockaddr_data_un(struct tcb *tcp, const void *const buf, const int addrlen) - { - const struct sockaddr_un *const sa_un = buf; - const int un_len = addrlen > (int) sizeof(*sa_un) -@@ -172,7 +172,8 @@ decode_inet_addr(struct tcb *const tcp, - } - - static void --print_sockaddr_data_in(const void *const buf, const int addrlen) -+print_sockaddr_data_in(struct tcb *tcp, const void *const buf, -+ const int addrlen) - { - const struct sockaddr_in *const sa_in = buf; - -@@ -183,7 +184,8 @@ print_sockaddr_data_in(const void *const buf, const int addrlen) - #define SIN6_MIN_LEN offsetof(struct sockaddr_in6, sin6_scope_id) - - static void --print_sockaddr_data_in6(const void *const buf, const int addrlen) -+print_sockaddr_data_in6(struct tcb *tcp, const void *const buf, -+ const int addrlen) - { - const struct sockaddr_in6 *const sa_in6 = buf; - -@@ -322,7 +324,8 @@ print_ax25_addr(const void /* ax25_address */ *addr_void) - } - - static void --print_sockaddr_data_ax25(const void *const buf, const int addrlen) -+print_sockaddr_data_ax25(struct tcb *tcp, const void *const buf, -+ const int addrlen) - { - const struct full_sockaddr_ax25 *const sax25 = buf; - size_t addrlen_us = MAX(addrlen, 0); -@@ -372,7 +375,8 @@ digis_end: - } - - static void --print_sockaddr_data_ipx(const void *const buf, const int addrlen) -+print_sockaddr_data_ipx(struct tcb *tcp, const void *const buf, -+ const int addrlen) - { - const struct sockaddr_ipx *const sa_ipx = buf; - unsigned int i; -@@ -399,7 +403,8 @@ print_x25_addr(const void /* struct x25_address */ *addr_void) - } - - static void --print_sockaddr_data_x25(const void *const buf, const int addrlen) -+print_sockaddr_data_x25(struct tcb *tcp, const void *const buf, -+ const int addrlen) - { - const struct sockaddr_x25 *const sa_x25 = buf; - -@@ -407,7 +412,7 @@ print_sockaddr_data_x25(const void *const buf, const int addrlen) - } - - static void --print_sockaddr_data_nl(const void *const buf, const int addrlen) -+print_sockaddr_data_nl(struct tcb *tcp, const void *const buf, const int addrlen) - { - const struct sockaddr_nl *const sa_nl = buf; - -@@ -442,7 +447,8 @@ print_sll_protocol(const struct sockaddr_ll *const sa_ll) - } - - static void --print_sockaddr_data_ll(const void *const buf, const int addrlen) -+print_sockaddr_data_ll(struct tcb *tcp, const void *const buf, -+ const int addrlen) - { - const struct sockaddr_ll *const sa_ll = buf; - -@@ -567,7 +573,8 @@ print_bluetooth_l2_cid_end: - } - - static void --print_sockaddr_data_bt(const void *const buf, const int addrlen) -+print_sockaddr_data_bt(struct tcb *tcp, const void *const buf, -+ const int addrlen) - { - struct sockaddr_hci { - /* sa_family_t */ uint16_t hci_family; -@@ -651,7 +658,7 @@ print_sockaddr_data_bt(const void *const buf, const int addrlen) - } - } - --typedef void (* const sockaddr_printer)(const void *const, const int); -+typedef void (* const sockaddr_printer)(struct tcb *tcp, const void *const, const int); - - static const struct { - const sockaddr_printer printer; -@@ -669,7 +676,7 @@ static const struct { - }; - - void --print_sockaddr(const void *const buf, const int addrlen) -+print_sockaddr(struct tcb *tcp, const void *const buf, const int addrlen) - { - const struct sockaddr *const sa = buf; - -@@ -682,7 +689,7 @@ print_sockaddr(const void *const buf, const int addrlen) - if (sa->sa_family < ARRAY_SIZE(sa_printers) - && sa_printers[sa->sa_family].printer - && addrlen >= sa_printers[sa->sa_family].min_len) { -- sa_printers[sa->sa_family].printer(buf, addrlen); -+ sa_printers[sa->sa_family].printer(tcp, buf, addrlen); - } else { - print_sockaddr_data_raw(buf, addrlen); - } -@@ -713,7 +720,7 @@ decode_sockaddr(struct tcb *const tcp, const kernel_ulong_t addr, int addrlen) - - memset(&addrbuf.pad[addrlen], 0, sizeof(addrbuf.pad) - addrlen); - -- print_sockaddr(&addrbuf, addrlen); -+ print_sockaddr(tcp, &addrbuf, addrlen); - - return addrbuf.sa.sa_family; - } -diff --git a/strace.c b/strace.c -index 311e4d6..4c96a98 100644 ---- a/strace.c -+++ b/strace.c -@@ -2941,7 +2941,7 @@ print_stopped(struct tcb *tcp, const siginfo_t *si, const unsigned int sig) - printleader(tcp); - if (si) { - tprintf("--- %s ", sprintsigname(sig)); -- printsiginfo(si); -+ printsiginfo(tcp, si); - tprints(" ---\n"); - } else - tprintf("--- stopped by %s ---\n", sprintsigname(sig)); --- -2.1.4 - diff --git a/0130-Modify-process-class-trace-syscalls-associated-with-.patch b/0130-Modify-process-class-trace-syscalls-associated-with-.patch deleted file mode 100755 index 89f4358..0000000 --- a/0130-Modify-process-class-trace-syscalls-associated-with-.patch +++ /dev/null @@ -1,1391 +0,0 @@ -From 2313eb7158479646ec9f85893453951c3b4b58df Mon Sep 17 00:00:00 2001 -From: =?UTF-8?q?=C3=81kos=20Uzonyi?= -Date: Fri, 19 Jun 2020 12:06:43 +0200 -Subject: [PATCH 130/138] Modify %process class: trace syscalls associated with - process lifecycle - -The description is rephrased as: -"Trace system calls associated with process lifecycle -(creation, exec, termination)." - -kill, tkill, tgkill, pidfd_send_signal and rt_sigqueueinfo are added, -arch_prctl and unshare are removed from the %process class. - -syscallent*.h files are updated automatically by: -find linux -name syscallent*.h -exec \ -sed -i -r -e ' - /(arch_prctl|unshare)/ { - s/(\{[^,]*,\t[^,]*)TP\|/\1/ - s/(\{[^,]*,\t[^,]*)\|TP/\1/ - s/(\{[^,]*,\t[^,]*)TP,/\10,/ - } -' -e ' - /(kill|pidfd_send_signal|rt_sigqueueinfo)/ { - s/(\{[^,]*,\t[^0][^,]*)/\1|TP/ - s/(\{[^,]*,\s*)0/\1TP/ - } -' {} + - -[ldv: document this change in NEWS.] - -* strace.1.in: Rephrase %process description. -* linux/32/syscallent.h: Add TP flag to *kill, pidfd_send_signal and -rt_sigqueueinfo; remove TP flag from arch_prctl and unshare. -* linux/64/syscallent.h: Likewise. -* linux/alpha/syscallent.h: Likewise. -* linux/arm/syscallent.h: Likewise. -* linux/avr32/syscallent.h: Likewise. -* linux/bfin/syscallent.h: Likewise. -* linux/hppa/syscallent.h: Likewise. -* linux/i386/syscallent.h: Likewise. -* linux/ia64/syscallent.h: Likewise. -* linux/m68k/syscallent.h: Likewise. -* linux/microblaze/syscallent.h: Likewise. -* linux/mips/syscallent-compat.h: Likewise. -* linux/mips/syscallent-n32.h: Likewise. -* linux/mips/syscallent-n64.h: Likewise. -* linux/mips/syscallent-o32.h: Likewise. -* linux/powerpc/syscallent.h: Likewise. -* linux/powerpc64/syscallent.h: Likewise. -* linux/s390/syscallent.h: Likewise. -* linux/s390x/syscallent.h: Likewise. -* linux/sh/syscallent.h: Likewise. -* linux/sh64/syscallent.h: Likewise. -* linux/sparc/syscallent.h: Likewise. -* linux/sparc64/syscallent.h: Likewise. -* linux/syscallent-common.h: Likewise. -* linux/x32/syscallent.h: Likewise. -* linux/x86_64/syscallent.h: Likewise. -* linux/xtensa/syscallent.h: Likewise. -* NEWS: Mention this change. - -Conflicts: - NEWS - linux/i386/syscallent.h ---- - linux/32/syscallent.h | 10 +++++----- - linux/64/syscallent.h | 10 +++++----- - linux/alpha/syscallent.h | 12 ++++++------ - linux/arm/syscallent.h | 10 +++++----- - linux/avr32/syscallent.h | 10 +++++----- - linux/bfin/syscallent.h | 10 +++++----- - linux/hppa/syscallent.h | 10 +++++----- - linux/i386/syscallent.h | 12 ++++++------ - linux/ia64/syscallent.h | 10 +++++----- - linux/m68k/syscallent.h | 10 +++++----- - linux/microblaze/syscallent.h | 10 +++++----- - linux/mips/syscallent-compat.h | 10 +++++----- - linux/mips/syscallent-n32.h | 10 +++++----- - linux/mips/syscallent-n64.h | 10 +++++----- - linux/mips/syscallent-o32.h | 10 +++++----- - linux/powerpc/syscallent.h | 10 +++++----- - linux/powerpc64/syscallent.h | 10 +++++----- - linux/s390/syscallent.h | 10 +++++----- - linux/s390x/syscallent.h | 10 +++++----- - linux/sh/syscallent.h | 10 +++++----- - linux/sh64/syscallent.h | 10 +++++----- - linux/sparc/syscallent.h | 10 +++++----- - linux/sparc64/syscallent.h | 10 +++++----- - linux/syscallent-common.h | 2 +- - linux/x32/syscallent.h | 14 +++++++------- - linux/x86_64/syscallent.h | 12 ++++++------ - linux/xtensa/syscallent.h | 10 +++++----- - strace.1.in | 4 ++-- - 28 files changed, 138 insertions(+), 138 deletions(-) - -diff --git a/linux/32/syscallent.h b/linux/32/syscallent.h -index 5e1f06d..c74ab18 100644 ---- a/linux/32/syscallent.h -+++ b/linux/32/syscallent.h -@@ -109,7 +109,7 @@ - [ 94] = { 1, TP|SE, SEN(exit), "exit_group" }, - [ 95] = { 5, TP, SEN(waitid), "waitid" }, - [ 96] = { 1, 0, SEN(set_tid_address), "set_tid_address" }, --[ 97] = { 1, TP, SEN(unshare), "unshare" }, -+[ 97] = { 1, 0, SEN(unshare), "unshare" }, - /* [ 98] futex */ - [ 99] = { 2, 0, SEN(set_robust_list), "set_robust_list" }, - [100] = { 3, 0, SEN(get_robust_list), "get_robust_list" }, -@@ -141,16 +141,16 @@ - [126] = { 1, 0, SEN(sched_get_priority_min), "sched_get_priority_min"}, - /* [127] sched_rr_get_interval */ - [128] = { 0, 0, SEN(restart_syscall), "restart_syscall" }, --[129] = { 2, TS, SEN(kill), "kill" }, --[130] = { 2, TS, SEN(kill), "tkill" }, --[131] = { 3, TS, SEN(tgkill), "tgkill" }, -+[129] = { 2, TS|TP, SEN(kill), "kill" }, -+[130] = { 2, TS|TP, SEN(kill), "tkill" }, -+[131] = { 3, TS|TP, SEN(tgkill), "tgkill" }, - [132] = { 2, TS, SEN(sigaltstack), "sigaltstack" }, - [133] = { 2, TS, SEN(rt_sigsuspend), "rt_sigsuspend" }, - [134] = { 4, TS, SEN(rt_sigaction), "rt_sigaction" }, - [135] = { 4, TS, SEN(rt_sigprocmask), "rt_sigprocmask" }, - [136] = { 2, TS, SEN(rt_sigpending), "rt_sigpending" }, - /* [137] rt_sigtimedwait */ --[138] = { 3, TS, SEN(rt_sigqueueinfo), "rt_sigqueueinfo" }, -+[138] = { 3, TS|TP, SEN(rt_sigqueueinfo), "rt_sigqueueinfo" }, - [139] = { 0, TS, SEN(rt_sigreturn), "rt_sigreturn" }, - [140] = { 3, 0, SEN(setpriority), "setpriority" }, - [141] = { 2, 0, SEN(getpriority), "getpriority" }, -diff --git a/linux/64/syscallent.h b/linux/64/syscallent.h -index 9531a05..3fb1305 100644 ---- a/linux/64/syscallent.h -+++ b/linux/64/syscallent.h -@@ -102,7 +102,7 @@ - [ 94] = { 1, TP|SE, SEN(exit), "exit_group" }, - [ 95] = { 5, TP, SEN(waitid), "waitid" }, - [ 96] = { 1, 0, SEN(set_tid_address), "set_tid_address" }, --[ 97] = { 1, TP, SEN(unshare), "unshare" }, -+[ 97] = { 1, 0, SEN(unshare), "unshare" }, - [ 98] = { 6, 0, SEN(futex_time64), "futex" }, - [ 99] = { 2, 0, SEN(set_robust_list), "set_robust_list" }, - [100] = { 3, 0, SEN(get_robust_list), "get_robust_list" }, -@@ -134,16 +134,16 @@ - [126] = { 1, 0, SEN(sched_get_priority_min), "sched_get_priority_min"}, - [127] = { 2, 0, SEN(sched_rr_get_interval_time64),"sched_rr_get_interval"}, - [128] = { 0, 0, SEN(restart_syscall), "restart_syscall" }, --[129] = { 2, TS, SEN(kill), "kill" }, --[130] = { 2, TS, SEN(kill), "tkill" }, --[131] = { 3, TS, SEN(tgkill), "tgkill" }, -+[129] = { 2, TS|TP, SEN(kill), "kill" }, -+[130] = { 2, TS|TP, SEN(kill), "tkill" }, -+[131] = { 3, TS|TP, SEN(tgkill), "tgkill" }, - [132] = { 2, TS, SEN(sigaltstack), "sigaltstack" }, - [133] = { 2, TS, SEN(rt_sigsuspend), "rt_sigsuspend" }, - [134] = { 4, TS, SEN(rt_sigaction), "rt_sigaction" }, - [135] = { 4, TS, SEN(rt_sigprocmask), "rt_sigprocmask" }, - [136] = { 2, TS, SEN(rt_sigpending), "rt_sigpending" }, - [137] = { 4, TS, SEN(rt_sigtimedwait_time64), "rt_sigtimedwait" }, --[138] = { 3, TS, SEN(rt_sigqueueinfo), "rt_sigqueueinfo" }, -+[138] = { 3, TS|TP, SEN(rt_sigqueueinfo), "rt_sigqueueinfo" }, - [139] = { 0, TS, SEN(rt_sigreturn), "rt_sigreturn" }, - [140] = { 3, 0, SEN(setpriority), "setpriority" }, - [141] = { 2, 0, SEN(getpriority), "getpriority" }, -diff --git a/linux/alpha/syscallent.h b/linux/alpha/syscallent.h -index b0d680b..93f0b0e 100644 ---- a/linux/alpha/syscallent.h -+++ b/linux/alpha/syscallent.h -@@ -44,7 +44,7 @@ - [ 34] = { 5, 0, SEN(printargs), "osf_chflags" }, /* not implemented */ - [ 35] = { 5, 0, SEN(printargs), "osf_fchflags" }, /* not implemented */ - [ 36] = { 0, 0, SEN(sync), "sync" }, --[ 37] = { 2, TS, SEN(kill), "kill" }, -+[ 37] = { 2, TS|TP, SEN(kill), "kill" }, - [ 38] = { 5, TF|TST|TSTA, SEN(printargs), "osf_old_stat" }, /* not implemented */ - [ 39] = { 2, 0, SEN(setpgid), "setpgid" }, - [ 40] = { 5, TF|TLST|TSTA, SEN(printargs), "osf_old_lstat" }, /* not implemented */ -@@ -153,7 +153,7 @@ - [143] = { 5, 0, SEN(printargs), "osf_sethostid" }, /* not implemented */ - [144] = { 2, 0, SEN(getrlimit), "getrlimit" }, - [145] = { 2, 0, SEN(setrlimit), "setrlimit" }, --[146] = { 5, 0, SEN(printargs), "osf_old_killpg" }, /* not implemented */ -+[146] = { 5, TP, SEN(printargs), "osf_old_killpg" }, /* not implemented */ - [147] = { 0, 0, SEN(setsid), "setsid" }, - [148] = { 4, TF, SEN(quotactl), "quotactl" }, - [149] = { 5, 0, SEN(printargs), "osf_oldquota" }, /* not implemented */ -@@ -300,7 +300,7 @@ - [353] = { 4, TS, SEN(rt_sigprocmask), "rt_sigprocmask" }, - [354] = { 2, TS, SEN(rt_sigpending), "rt_sigpending" }, - [355] = { 4, TS, SEN(rt_sigtimedwait_time64), "rt_sigtimedwait" }, --[356] = { 3, TS, SEN(rt_sigqueueinfo), "rt_sigqueueinfo" }, -+[356] = { 3, TS|TP, SEN(rt_sigqueueinfo), "rt_sigqueueinfo" }, - [357] = { 2, TS, SEN(rt_sigsuspend), "rt_sigsuspend" }, - [358] = { 5, TD, SEN(select), "select" }, - [359] = { 2, TCL, SEN(gettimeofday), "gettimeofday" }, -@@ -325,7 +325,7 @@ - [378] = { 0, PU|NF, SEN(gettid), "gettid" }, - [379] = { 3, TD, SEN(readahead), "readahead" }, - [380] = { }, --[381] = { 2, TS, SEN(kill), "tkill" }, -+[381] = { 2, TS|TP, SEN(kill), "tkill" }, - [382] = { 5, TF, SEN(setxattr), "setxattr" }, - [383] = { 5, TF, SEN(setxattr), "lsetxattr" }, - [384] = { 5, TD, SEN(fsetxattr), "fsetxattr" }, -@@ -367,7 +367,7 @@ - [421] = { 2, TCL, SEN(clock_getres_time64), "clock_getres" }, - [422] = { 4, 0, SEN(clock_nanosleep_time64), "clock_nanosleep" }, - [423] = { 4, TI, SEN(semtimedop_time64), "semtimedop" }, --[424] = { 3, TS, SEN(tgkill), "tgkill" }, -+[424] = { 3, TS|TP, SEN(tgkill), "tgkill" }, - [425] = { 2, TF|TST|TSTA, SEN(stat64), "stat64" }, - [426] = { 2, TF|TLST|TSTA, SEN(lstat64), "lstat64" }, - [427] = { 2, TD|TFST|TSTA, SEN(fstat64), "fstat64" }, -@@ -408,7 +408,7 @@ - [462] = { 3, TD|TF, SEN(faccessat), "faccessat" }, - [463] = { 6, TD, SEN(pselect6_time64), "pselect6" }, - [464] = { 5, TD, SEN(ppoll_time64), "ppoll" }, --[465] = { 1, TP, SEN(unshare), "unshare" }, -+[465] = { 1, 0, SEN(unshare), "unshare" }, - [466] = { 2, 0, SEN(set_robust_list), "set_robust_list" }, - [467] = { 3, 0, SEN(get_robust_list), "get_robust_list" }, - [468] = { 6, TD, SEN(splice), "splice" }, -diff --git a/linux/arm/syscallent.h b/linux/arm/syscallent.h -index e9eee9f..73497b6 100644 ---- a/linux/arm/syscallent.h -+++ b/linux/arm/syscallent.h -@@ -44,7 +44,7 @@ - [ 34] = { 1, 0, SEN(nice), "nice" }, - [ 35] = { 0, 0, SEN(ftime), "ftime" }, - [ 36] = { 0, 0, SEN(sync), "sync" }, --[ 37] = { 2, TS, SEN(kill), "kill" }, -+[ 37] = { 2, TS|TP, SEN(kill), "kill" }, - [ 38] = { 2, TF, SEN(rename), "rename" }, - [ 39] = { 2, TF, SEN(mkdir), "mkdir" }, - [ 40] = { 1, TF, SEN(rmdir), "rmdir" }, -@@ -185,7 +185,7 @@ - [175] = { 4, TS, SEN(rt_sigprocmask), "rt_sigprocmask" }, - [176] = { 2, TS, SEN(rt_sigpending), "rt_sigpending" }, - [177] = { 4, TS, SEN(rt_sigtimedwait_time32), "rt_sigtimedwait" }, --[178] = { 3, TS, SEN(rt_sigqueueinfo), "rt_sigqueueinfo" }, -+[178] = { 3, TS|TP, SEN(rt_sigqueueinfo), "rt_sigqueueinfo" }, - [179] = { 2, TS, SEN(rt_sigsuspend), "rt_sigsuspend" }, - [180] = { 6, TD, SEN(pread), "pread64" }, - [181] = { 6, TD, SEN(pwrite), "pwrite64" }, -@@ -245,7 +245,7 @@ - [235] = { 2, TF, SEN(removexattr), "removexattr" }, - [236] = { 2, TF, SEN(removexattr), "lremovexattr" }, - [237] = { 2, TD, SEN(fremovexattr), "fremovexattr" }, --[238] = { 2, TS, SEN(kill), "tkill" }, -+[238] = { 2, TS|TP, SEN(kill), "tkill" }, - [239] = { 4, TD|TN, SEN(sendfile64), "sendfile64" }, - [240] = { 6, 0, SEN(futex_time32), "futex" }, - [241] = { 3, 0, SEN(sched_setaffinity), "sched_setaffinity" }, -@@ -275,7 +275,7 @@ - [265] = { 4, 0, SEN(clock_nanosleep_time32), "clock_nanosleep" }, - [266] = { 3, TF|TSF|TSFA, SEN(statfs64), "statfs64" }, - [267] = { 3, TD|TFSF|TSFA, SEN(fstatfs64), "fstatfs64" }, --[268] = { 3, TS, SEN(tgkill), "tgkill" }, -+[268] = { 3, TS|TP, SEN(tgkill), "tgkill" }, - [269] = { 2, TF, SEN(utimes), "utimes" }, - [270] = { 6, TD, SEN(fadvise64_64), "fadvise64_64" }, - [271] = { 3, 0, SEN(printargs), "pciconfig_iobase" }, -@@ -344,7 +344,7 @@ - [334] = { 3, TD|TF, SEN(faccessat), "faccessat" }, - [335] = { 6, TD, SEN(pselect6_time32), "pselect6" }, - [336] = { 5, TD, SEN(ppoll_time32), "ppoll" }, --[337] = { 1, TP, SEN(unshare), "unshare" }, -+[337] = { 1, 0, SEN(unshare), "unshare" }, - [338] = { 2, 0, SEN(set_robust_list), "set_robust_list" }, - [339] = { 3, 0, SEN(get_robust_list), "get_robust_list" }, - [340] = { 6, TD, SEN(splice), "splice" }, -diff --git a/linux/avr32/syscallent.h b/linux/avr32/syscallent.h -index 0b24353..b3cf2da 100644 ---- a/linux/avr32/syscallent.h -+++ b/linux/avr32/syscallent.h -@@ -43,7 +43,7 @@ - [ 34] = { 1, TF, SEN(chroot), "chroot" }, - [ 35] = { 0, 0, SEN(sync), "sync" }, - [ 36] = { 1, TD, SEN(fsync), "fsync" }, --[ 37] = { 2, TS, SEN(kill), "kill" }, -+[ 37] = { 2, TS|TP, SEN(kill), "kill" }, - [ 38] = { 2, TF, SEN(rename), "rename" }, - [ 39] = { 2, TF, SEN(mkdir), "mkdir" }, - [ 40] = { 1, TF, SEN(rmdir), "rmdir" }, -@@ -78,7 +78,7 @@ - [ 69] = { 4, TS, SEN(rt_sigprocmask), "rt_sigprocmask" }, - [ 70] = { 2, TS, SEN(rt_sigpending), "rt_sigpending" }, - [ 71] = { 4, TS, SEN(rt_sigtimedwait_time32), "rt_sigtimedwait" }, --[ 72] = { 3, TS, SEN(rt_sigqueueinfo), "rt_sigqueueinfo" }, -+[ 72] = { 3, TS|TP, SEN(rt_sigqueueinfo), "rt_sigqueueinfo" }, - [ 73] = { 2, TS, SEN(rt_sigsuspend), "rt_sigsuspend" }, - [ 74] = { 2, 0, SEN(sethostname), "sethostname" }, - [ 75] = { 2, 0, SEN(setrlimit), "setrlimit" }, -@@ -196,7 +196,7 @@ - [187] = { 2, TF, SEN(removexattr), "removexattr" }, - [188] = { 2, TF, SEN(removexattr), "lremovexattr" }, - [189] = { 2, TD, SEN(fremovexattr), "fremovexattr" }, --[190] = { 2, TS, SEN(kill), "tkill" }, -+[190] = { 2, TS|TP, SEN(kill), "tkill" }, - [191] = { 4, TD|TN, SEN(sendfile64), "sendfile64" }, - [192] = { 6, 0, SEN(futex_time32), "futex" }, - [193] = { 3, 0, SEN(sched_setaffinity), "sched_setaffinity" }, -@@ -227,7 +227,7 @@ - [218] = { 4, 0, SEN(clock_nanosleep_time32), "clock_nanosleep" }, - [219] = { 3, TF|TSF|TSFA, SEN(statfs64), "statfs64" }, - [220] = { 3, TD|TFSF|TSFA, SEN(fstatfs64), "fstatfs64" }, --[221] = { 3, TS, SEN(tgkill), "tgkill" }, -+[221] = { 3, TS|TP, SEN(tgkill), "tgkill" }, - [222] = { }, - [223] = { 2, TF, SEN(utimes), "utimes" }, - [224] = { 6, TD, SEN(fadvise64_64), "fadvise64_64" }, -@@ -264,7 +264,7 @@ - [255] = { 3, TD|TF, SEN(faccessat), "faccessat" }, - [256] = { 6, TD, SEN(pselect6_time32), "pselect6" }, - [257] = { 5, TD, SEN(ppoll_time32), "ppoll" }, --[258] = { 1, TP, SEN(unshare), "unshare" }, -+[258] = { 1, 0, SEN(unshare), "unshare" }, - [259] = { 2, 0, SEN(set_robust_list), "set_robust_list" }, - [260] = { 3, 0, SEN(get_robust_list), "get_robust_list" }, - [261] = { 6, TD, SEN(splice), "splice" }, -diff --git a/linux/bfin/syscallent.h b/linux/bfin/syscallent.h -index 4deafe0..b93a844 100644 ---- a/linux/bfin/syscallent.h -+++ b/linux/bfin/syscallent.h -@@ -44,7 +44,7 @@ - [ 34] = { 1, 0, SEN(nice), "nice" }, - [ 35] = { 0, 0, SEN(ftime), "ftime" }, - [ 36] = { 0, 0, SEN(sync), "sync" }, --[ 37] = { 2, TS, SEN(kill), "kill" }, -+[ 37] = { 2, TS|TP, SEN(kill), "kill" }, - [ 38] = { 2, TF, SEN(rename), "rename" }, - [ 39] = { 2, TF, SEN(mkdir), "mkdir" }, - [ 40] = { 1, TF, SEN(rmdir), "rmdir" }, -@@ -185,7 +185,7 @@ - [175] = { 4, TS, SEN(rt_sigprocmask), "rt_sigprocmask" }, - [176] = { 2, TS, SEN(rt_sigpending), "rt_sigpending" }, - [177] = { 4, TS, SEN(rt_sigtimedwait_time32), "rt_sigtimedwait" }, --[178] = { 3, TS, SEN(rt_sigqueueinfo), "rt_sigqueueinfo" }, -+[178] = { 3, TS|TP, SEN(rt_sigqueueinfo), "rt_sigqueueinfo" }, - [179] = { 2, TS, SEN(rt_sigsuspend), "rt_sigsuspend" }, - [180] = { 5, TD, SEN(pread), "pread" }, - [181] = { 5, TD, SEN(pwrite), "pwrite" }, -@@ -244,7 +244,7 @@ - [235] = { 2, TF, SEN(removexattr), "removexattr" }, - [236] = { 2, TF, SEN(removexattr), "lremovexattr" }, - [237] = { 2, TD, SEN(fremovexattr), "fremovexattr" }, --[238] = { 2, TS, SEN(kill), "tkill" }, -+[238] = { 2, TS|TP, SEN(kill), "tkill" }, - [239] = { 4, TD|TN, SEN(sendfile64), "sendfile64" }, - [240] = { 6, 0, SEN(futex_time32), "futex" }, - [241] = { 3, 0, SEN(sched_setaffinity), "sched_setaffinity" }, -@@ -277,7 +277,7 @@ - [268] = { 4, 0, SEN(clock_nanosleep_time32), "clock_nanosleep" }, - [269] = { 3, TF|TSF|TSFA, SEN(statfs64), "statfs64" }, - [270] = { 3, TD|TFSF|TSFA, SEN(fstatfs64), "fstatfs64" }, --[271] = { 3, TS, SEN(tgkill), "tgkill" }, -+[271] = { 3, TS|TP, SEN(tgkill), "tgkill" }, - [272] = { 2, TF, SEN(utimes), "utimes" }, - [273] = { 6, TD, SEN(fadvise64_64), "fadvise64_64" }, - [274] = { 5, 0, SEN(vserver), "vserver" }, -@@ -316,7 +316,7 @@ - [307] = { 3, TD|TF, SEN(faccessat), "faccessat" }, - [308] = { 6, TD, SEN(pselect6_time32), "pselect6" }, - [309] = { 5, TD, SEN(ppoll_time32), "ppoll" }, --[310] = { 1, TP, SEN(unshare), "unshare" }, -+[310] = { 1, 0, SEN(unshare), "unshare" }, - [311] = { 2, 0, SEN(sram_alloc), "sram_alloc" }, - [312] = { 1, 0, SEN(printargs), "sram_free" }, - [313] = { 3, 0, SEN(printargs), "dma_memcpy" }, -diff --git a/linux/hppa/syscallent.h b/linux/hppa/syscallent.h -index dca6c41..31341d4 100644 ---- a/linux/hppa/syscallent.h -+++ b/linux/hppa/syscallent.h -@@ -40,7 +40,7 @@ - [ 34] = { 1, 0, SEN(nice), "nice" }, - [ 35] = { 3, TN, SEN(accept), "accept" }, - [ 36] = { 0, 0, SEN(sync), "sync" }, --[ 37] = { 2, TS, SEN(kill), "kill" }, -+[ 37] = { 2, TS|TP, SEN(kill), "kill" }, - [ 38] = { 2, TF, SEN(rename), "rename" }, - [ 39] = { 2, TF, SEN(mkdir), "mkdir" }, - [ 40] = { 1, TF, SEN(rmdir), "rmdir" }, -@@ -181,7 +181,7 @@ - [175] = { 4, TS, SEN(rt_sigprocmask), "rt_sigprocmask" }, - [176] = { 2, TS, SEN(rt_sigpending), "rt_sigpending" }, - [177] = { 4, TS, SEN(rt_sigtimedwait_time32), "rt_sigtimedwait" }, --[178] = { 3, TS, SEN(rt_sigqueueinfo), "rt_sigqueueinfo" }, -+[178] = { 3, TS|TP, SEN(rt_sigqueueinfo), "rt_sigqueueinfo" }, - [179] = { 2, TS, SEN(rt_sigsuspend), "rt_sigsuspend" }, - [180] = { 3, TF, SEN(chown), "chown" }, - [181] = { 5, TN, SEN(setsockopt), "setsockopt" }, -@@ -211,7 +211,7 @@ - [205] = { 5, 0, SEN(printargs), "acl_set" }, - [206] = { 0, PU|NF, SEN(gettid), "gettid" }, - [207] = { 4, TD, SEN(readahead), "readahead" }, --[208] = { 2, TS, SEN(kill), "tkill" }, -+[208] = { 2, TS|TP, SEN(kill), "tkill" }, - [209] = { 4, TD|TN, SEN(sendfile64), "sendfile64" }, - [210] = { 6, 0, SEN(futex_time32), "futex" }, - [211] = { 3, 0, SEN(sched_setaffinity), "sched_setaffinity" }, -@@ -262,7 +262,7 @@ - [256] = { 2, TCL, SEN(clock_gettime32), "clock_gettime" }, - [257] = { 2, TCL, SEN(clock_getres_time32), "clock_getres" }, - [258] = { 4, 0, SEN(clock_nanosleep_time32), "clock_nanosleep" }, --[259] = { 3, TS, SEN(tgkill), "tgkill" }, -+[259] = { 3, TS|TP, SEN(tgkill), "tgkill" }, - [260] = { 6, TM, SEN(mbind), "mbind" }, - [261] = { 5, TM, SEN(get_mempolicy), "get_mempolicy" }, - [262] = { 3, TM, SEN(set_mempolicy), "set_mempolicy" }, -@@ -291,7 +291,7 @@ - [285] = { 4, TD|TF, SEN(readlinkat), "readlinkat" }, - [286] = { 3, TD|TF, SEN(fchmodat), "fchmodat" }, - [287] = { 3, TD|TF, SEN(faccessat), "faccessat" }, --[288] = { 1, TP, SEN(unshare), "unshare" }, -+[288] = { 1, 0, SEN(unshare), "unshare" }, - [289] = { 2, 0, SEN(set_robust_list), "set_robust_list" }, - [290] = { 3, 0, SEN(get_robust_list), "get_robust_list" }, - [291] = { 6, TD, SEN(splice), "splice" }, -diff --git a/linux/i386/syscallent.h b/linux/i386/syscallent.h -index 0427870..efe0ff7 100644 ---- a/linux/i386/syscallent.h -+++ b/linux/i386/syscallent.h -@@ -44,7 +44,7 @@ - [ 34] = { 1, 0, SEN(nice), "nice" }, - [ 35] = { 0, 0, SEN(ftime), "ftime" }, - [ 36] = { 0, 0, SEN(sync), "sync" }, --[ 37] = { 2, TS, SEN(kill), "kill" }, -+[ 37] = { 2, TS|TP, SEN(kill), "kill" }, - [ 38] = { 2, TF, SEN(rename), "rename" }, - [ 39] = { 2, TF, SEN(mkdir), "mkdir" }, - [ 40] = { 1, TF, SEN(rmdir), "rmdir" }, -@@ -185,7 +185,7 @@ - [175] = { 4, TS, SEN(rt_sigprocmask), "rt_sigprocmask" }, - [176] = { 2, TS, SEN(rt_sigpending), "rt_sigpending" }, - [177] = { 4, TS, SEN(rt_sigtimedwait_time32), "rt_sigtimedwait" }, --[178] = { 3, TS, SEN(rt_sigqueueinfo), "rt_sigqueueinfo" }, -+[178] = { 3, TS|TP, SEN(rt_sigqueueinfo), "rt_sigqueueinfo" }, - [179] = { 2, TS, SEN(rt_sigsuspend), "rt_sigsuspend" }, - [180] = { 5, TD, SEN(pread), "pread64" }, - [181] = { 5, TD, SEN(pwrite), "pwrite64" }, -@@ -244,7 +244,7 @@ - [235] = { 2, TF, SEN(removexattr), "removexattr" }, - [236] = { 2, TF, SEN(removexattr), "lremovexattr" }, - [237] = { 2, TD, SEN(fremovexattr), "fremovexattr" }, --[238] = { 2, TS, SEN(kill), "tkill" }, -+[238] = { 2, TS|TP, SEN(kill), "tkill" }, - [239] = { 4, TD|TN, SEN(sendfile64), "sendfile64" }, - [240] = { 6, 0, SEN(futex_time32), "futex" }, - [241] = { 3, 0, SEN(sched_setaffinity), "sched_setaffinity" }, -@@ -276,7 +276,7 @@ - [267] = { 4, 0, SEN(clock_nanosleep_time32), "clock_nanosleep" }, - [268] = { 3, TF|TSF|TSFA, SEN(statfs64), "statfs64" }, - [269] = { 3, TD|TFSF|TSFA, SEN(fstatfs64), "fstatfs64" }, --[270] = { 3, TS, SEN(tgkill), "tgkill" }, -+[270] = { 3, TS|TP, SEN(tgkill), "tgkill" }, - [271] = { 2, TF, SEN(utimes), "utimes" }, - [272] = { 6, TD, SEN(fadvise64_64), "fadvise64_64" }, - [273] = { 5, 0, SEN(vserver), "vserver" }, -@@ -316,7 +316,7 @@ - [307] = { 3, TD|TF, SEN(faccessat), "faccessat" }, - [308] = { 6, TD, SEN(pselect6_time32), "pselect6" }, - [309] = { 5, TD, SEN(ppoll_time32), "ppoll" }, --[310] = { 1, TP, SEN(unshare), "unshare" }, -+[310] = { 1, 0, SEN(unshare), "unshare" }, - [311] = { 2, 0, SEN(set_robust_list), "set_robust_list" }, - [312] = { 3, 0, SEN(get_robust_list), "get_robust_list" }, - [313] = { 6, TD, SEN(splice), "splice" }, -@@ -390,7 +390,7 @@ - [381] = { 2, 0, SEN(pkey_alloc), "pkey_alloc" }, - [382] = { 1, 0, SEN(pkey_free), "pkey_free" }, - [383] = { 5, TD|TF|TSTA, SEN(statx), "statx" }, --[384] = { 2, TP, SEN(arch_prctl), "arch_prctl" }, -+[384] = { 2, 0, SEN(arch_prctl), "arch_prctl" }, - [385] = { 6, 0, SEN(io_pgetevents_time32), "io_pgetevents" }, - [386] = { 4, 0, SEN(rseq), "rseq" }, - /* room for arch specific calls */ -diff --git a/linux/ia64/syscallent.h b/linux/ia64/syscallent.h -index 9098488..8aeda41 100644 ---- a/linux/ia64/syscallent.h -+++ b/linux/ia64/syscallent.h -@@ -49,7 +49,7 @@ - [BASE_NR + 26] = { 0, 0, SEN(sync), "sync" }, - [BASE_NR + 27] = { 1, TD, SEN(fsync), "fsync" }, - [BASE_NR + 28] = { 1, TD, SEN(fdatasync), "fdatasync" }, --[BASE_NR + 29] = { 2, TS, SEN(kill), "kill" }, -+[BASE_NR + 29] = { 2, TS|TP, SEN(kill), "kill" }, - [BASE_NR + 30] = { 2, TF, SEN(rename), "rename" }, - [BASE_NR + 31] = { 2, TF, SEN(mkdir), "mkdir" }, - [BASE_NR + 32] = { 1, TF, SEN(rmdir), "rmdir" }, -@@ -176,7 +176,7 @@ - [BASE_NR + 153] = { 4, TS, SEN(rt_sigaction), "rt_sigaction" }, - [BASE_NR + 154] = { 2, TS, SEN(rt_sigpending), "rt_sigpending" }, - [BASE_NR + 155] = { 4, TS, SEN(rt_sigprocmask), "rt_sigprocmask" }, --[BASE_NR + 156] = { 3, TS, SEN(rt_sigqueueinfo), "rt_sigqueueinfo" }, -+[BASE_NR + 156] = { 3, TS|TP, SEN(rt_sigqueueinfo), "rt_sigqueueinfo" }, - [BASE_NR + 157] = { 0, TS, SEN(rt_sigreturn), "rt_sigreturn" }, - [BASE_NR + 158] = { 2, TS, SEN(rt_sigsuspend), "rt_sigsuspend" }, - [BASE_NR + 159] = { 4, TS, SEN(rt_sigtimedwait_time64), "rt_sigtimedwait" }, -@@ -225,13 +225,13 @@ - [BASE_NR + 202] = { 2, TF, SEN(removexattr), "removexattr" }, - [BASE_NR + 203] = { 2, TF, SEN(removexattr), "lremovexattr" }, - [BASE_NR + 204] = { 2, TD, SEN(fremovexattr), "fremovexattr" }, --[BASE_NR + 205] = { 2, TS, SEN(kill), "tkill" }, -+[BASE_NR + 205] = { 2, TS|TP, SEN(kill), "tkill" }, - [BASE_NR + 206] = { 6, 0, SEN(futex_time64), "futex" }, - [BASE_NR + 207] = { 3, 0, SEN(sched_setaffinity), "sched_setaffinity" }, - [BASE_NR + 208] = { 3, 0, SEN(sched_getaffinity), "sched_getaffinity" }, - [BASE_NR + 209] = { 1, 0, SEN(set_tid_address), "set_tid_address" }, - [BASE_NR + 210] = { 4, TD, SEN(fadvise64), "fadvise64" }, --[BASE_NR + 211] = { 3, TS, SEN(tgkill), "tgkill" }, -+[BASE_NR + 211] = { 3, TS|TP, SEN(tgkill), "tgkill" }, - [BASE_NR + 212] = { 1, TP|SE, SEN(exit), "exit_group" }, - [BASE_NR + 213] = { 3, 0, SEN(lookup_dcookie), "lookup_dcookie" }, - [BASE_NR + 214] = { 2, TM, SEN(io_setup), "io_setup" }, -@@ -292,7 +292,7 @@ - [BASE_NR + 269] = { 3, TD|TF, SEN(faccessat), "faccessat" }, - [BASE_NR + 270] = { 6, TD, SEN(pselect6_time64), "pselect6" }, - [BASE_NR + 271] = { 5, TD, SEN(ppoll_time64), "ppoll" }, --[BASE_NR + 272] = { 1, TP, SEN(unshare), "unshare" }, -+[BASE_NR + 272] = { 1, 0, SEN(unshare), "unshare" }, - [BASE_NR + 273] = { 6, TD, SEN(splice), "splice" }, - [BASE_NR + 274] = { 2, 0, SEN(set_robust_list), "set_robust_list" }, - [BASE_NR + 275] = { 3, 0, SEN(get_robust_list), "get_robust_list" }, -diff --git a/linux/m68k/syscallent.h b/linux/m68k/syscallent.h -index 315dbb6..1876bed 100644 ---- a/linux/m68k/syscallent.h -+++ b/linux/m68k/syscallent.h -@@ -44,7 +44,7 @@ - [ 34] = { 1, 0, SEN(nice), "nice" }, - [ 35] = { 0, 0, SEN(ftime), "ftime" }, - [ 36] = { 0, 0, SEN(sync), "sync" }, --[ 37] = { 2, TS, SEN(kill), "kill" }, -+[ 37] = { 2, TS|TP, SEN(kill), "kill" }, - [ 38] = { 2, TF, SEN(rename), "rename" }, - [ 39] = { 2, TF, SEN(mkdir), "mkdir" }, - [ 40] = { 1, TF, SEN(rmdir), "rmdir" }, -@@ -185,7 +185,7 @@ - [175] = { 4, TS, SEN(rt_sigprocmask), "rt_sigprocmask" }, - [176] = { 2, TS, SEN(rt_sigpending), "rt_sigpending" }, - [177] = { 4, TS, SEN(rt_sigtimedwait_time32), "rt_sigtimedwait" }, --[178] = { 3, TS, SEN(rt_sigqueueinfo), "rt_sigqueueinfo" }, -+[178] = { 3, TS|TP, SEN(rt_sigqueueinfo), "rt_sigqueueinfo" }, - [179] = { 2, TS, SEN(rt_sigsuspend), "rt_sigsuspend" }, - [180] = { 5, TD, SEN(pread), "pread64" }, - [181] = { 5, TD, SEN(pwrite), "pwrite64" }, -@@ -228,7 +228,7 @@ - [218 ... 219] = { }, - [220] = { 3, TD, SEN(getdents64), "getdents64" }, - [221] = { 0, PU|NF, SEN(gettid), "gettid" }, --[222] = { 2, TS, SEN(kill), "tkill" }, -+[222] = { 2, TS|TP, SEN(kill), "tkill" }, - [223] = { 5, TF, SEN(setxattr), "setxattr" }, - [224] = { 5, TF, SEN(setxattr), "lsetxattr" }, - [225] = { 5, TD, SEN(fsetxattr), "fsetxattr" }, -@@ -271,7 +271,7 @@ - [262] = { 4, 0, SEN(clock_nanosleep_time32), "clock_nanosleep" }, - [263] = { 3, TF|TSF|TSFA, SEN(statfs64), "statfs64" }, - [264] = { 3, TD|TFSF|TSFA, SEN(fstatfs64), "fstatfs64" }, --[265] = { 3, TS, SEN(tgkill), "tgkill" }, -+[265] = { 3, TS|TP, SEN(tgkill), "tgkill" }, - [266] = { 2, TF, SEN(utimes), "utimes" }, - [267] = { 6, TD, SEN(fadvise64_64), "fadvise64_64" }, - [268] = { 6, TM, SEN(mbind), "mbind" }, -@@ -309,7 +309,7 @@ - [300] = { 3, TD|TF, SEN(faccessat), "faccessat" }, - [301] = { 6, TD, SEN(pselect6_time32), "pselect6" }, - [302] = { 5, TD, SEN(ppoll_time32), "ppoll" }, --[303] = { 1, TP, SEN(unshare), "unshare" }, -+[303] = { 1, 0, SEN(unshare), "unshare" }, - [304] = { 2, 0, SEN(set_robust_list), "set_robust_list" }, - [305] = { 3, 0, SEN(get_robust_list), "get_robust_list" }, - [306] = { 6, TD, SEN(splice), "splice" }, -diff --git a/linux/microblaze/syscallent.h b/linux/microblaze/syscallent.h -index c17aad1..5d071bc 100644 ---- a/linux/microblaze/syscallent.h -+++ b/linux/microblaze/syscallent.h -@@ -44,7 +44,7 @@ - [ 34] = { 1, 0, SEN(nice), "nice" }, - [ 35] = { 0, 0, SEN(ftime), "ftime" }, - [ 36] = { 0, 0, SEN(sync), "sync" }, --[ 37] = { 2, TS, SEN(kill), "kill" }, -+[ 37] = { 2, TS|TP, SEN(kill), "kill" }, - [ 38] = { 2, TF, SEN(rename), "rename" }, - [ 39] = { 2, TF, SEN(mkdir), "mkdir" }, - [ 40] = { 1, TF, SEN(rmdir), "rmdir" }, -@@ -185,7 +185,7 @@ - [175] = { 4, TS, SEN(rt_sigprocmask), "rt_sigprocmask" }, - [176] = { 2, TS, SEN(rt_sigpending), "rt_sigpending" }, - [177] = { 4, TS, SEN(rt_sigtimedwait_time32), "rt_sigtimedwait" }, --[178] = { 3, TS, SEN(rt_sigqueueinfo), "rt_sigqueueinfo" }, -+[178] = { 3, TS|TP, SEN(rt_sigqueueinfo), "rt_sigqueueinfo" }, - [179] = { 2, TS, SEN(rt_sigsuspend), "rt_sigsuspend" }, - [180] = { 5, TD, SEN(pread), "pread64" }, - [181] = { 5, TD, SEN(pwrite), "pwrite64" }, -@@ -244,7 +244,7 @@ - [235] = { 2, TF, SEN(removexattr), "removexattr" }, - [236] = { 2, TF, SEN(removexattr), "lremovexattr" }, - [237] = { 2, TD, SEN(fremovexattr), "fremovexattr" }, --[238] = { 2, TS, SEN(kill), "tkill" }, -+[238] = { 2, TS|TP, SEN(kill), "tkill" }, - [239] = { 4, TD|TN, SEN(sendfile64), "sendfile64" }, - [240] = { 6, 0, SEN(futex_time32), "futex" }, - [241] = { 3, 0, SEN(sched_setaffinity), "sched_setaffinity" }, -@@ -276,7 +276,7 @@ - [267] = { 4, 0, SEN(clock_nanosleep_time32), "clock_nanosleep" }, - [268] = { 3, TF|TSF|TSFA, SEN(statfs64), "statfs64" }, - [269] = { 3, TD|TFSF|TSFA, SEN(fstatfs64), "fstatfs64" }, --[270] = { 3, TS, SEN(tgkill), "tgkill" }, -+[270] = { 3, TS|TP, SEN(tgkill), "tgkill" }, - [271] = { 2, TF, SEN(utimes), "utimes" }, - [272] = { 6, TD, SEN(fadvise64_64), "fadvise64_64" }, - [273] = { 5, 0, SEN(vserver), "vserver" }, -@@ -316,7 +316,7 @@ - [307] = { 3, TD|TF, SEN(faccessat), "faccessat" }, - [308] = { 6, TD, SEN(pselect6_time32), "pselect6" }, - [309] = { 5, TD, SEN(ppoll_time32), "ppoll" }, --[310] = { 1, TP, SEN(unshare), "unshare" }, -+[310] = { 1, 0, SEN(unshare), "unshare" }, - [311] = { 2, 0, SEN(set_robust_list), "set_robust_list" }, - [312] = { 3, 0, SEN(get_robust_list), "get_robust_list" }, - [313] = { 6, TD, SEN(splice), "splice" }, -diff --git a/linux/mips/syscallent-compat.h b/linux/mips/syscallent-compat.h -index 918f110..61ccfe4 100644 ---- a/linux/mips/syscallent-compat.h -+++ b/linux/mips/syscallent-compat.h -@@ -42,7 +42,7 @@ - [ 34] = { 0, 0, SEN(printargs), "svr4_nice" }, - [ 35] = { 0, TF|TSF|TSFA,SEN(printargs), "svr4_statfs" }, - [ 36] = { 0, 0, SEN(printargs), "svr4_sync" }, --[ 37] = { 0, 0, SEN(printargs), "svr4_kill" }, -+[ 37] = { 0, TP, SEN(printargs), "svr4_kill" }, - [ 38] = { 0, TD|TFSF|TSFA,SEN(printargs), "svr4_fstatfs" }, - [ 39] = { 0, 0, SEN(printargs), "svr4_setpgrp" }, - [ 40] = { 0, 0, SEN(printargs), "svr4_cxenix" }, -@@ -193,7 +193,7 @@ - [1034] = { 0, 0, SEN(printargs), "sysv_nice" }, - [1035] = { 0, TF|TSF|TSFA,SEN(printargs), "sysv_statfs" }, - [1036] = { 0, 0, SEN(printargs), "sysv_sync" }, --[1037] = { 0, 0, SEN(printargs), "sysv_kill" }, -+[1037] = { 0, TP, SEN(printargs), "sysv_kill" }, - [1038] = { 0, TD|TFSF|TSFA,SEN(printargs), "sysv_fstatfs" }, - [1039] = { 0, 0, SEN(printargs), "sysv_setpgrp" }, - [1040] = { 0, 0, SEN(printargs), "sysv_syssgi" }, -@@ -378,7 +378,7 @@ - [2034] = { 0, 0, SEN(printargs), "bsd43_nice" }, - [2035] = { 0, 0, SEN(printargs), "bsd43_ftime" }, - [2036] = { 0, 0, SEN(printargs), "bsd43_sync" }, --[2037] = { 0, 0, SEN(printargs), "bsd43_kill" }, -+[2037] = { 0, TP, SEN(printargs), "bsd43_kill" }, - [2038] = { 0, TF|TST|TSTA,SEN(printargs), "bsd43_stat" }, - [2039] = { 0, 0, SEN(printargs), "bsd43_oldsetpgrp" }, - [2040] = { 0, TF|TLST|TSTA,SEN(printargs), "bsd43_lstat" }, -@@ -487,7 +487,7 @@ - [2143] = { 0, 0, SEN(printargs), "bsd43_sethostid" }, - [2144] = { 0, 0, SEN(printargs), "bsd43_getrlimit" }, - [2145] = { 0, 0, SEN(printargs), "bsd43_setrlimit" }, --[2146] = { 0, 0, SEN(printargs), "bsd43_killpg" }, -+[2146] = { 0, TP, SEN(printargs), "bsd43_killpg" }, - [2147] = { 0, 0, SEN(printargs), "bsd43_shmsys" }, - [2148] = { 0, 0, SEN(printargs), "bsd43_quota" }, - [2149] = { 0, 0, SEN(printargs), "bsd43_qquota" }, -@@ -571,7 +571,7 @@ - [3034] = { 0, 0, SEN(printargs), "posix_nice" }, - [3035] = { 0, TF|TSF|TSFA,SEN(printargs), "posix_statfs" }, - [3036] = { 0, 0, SEN(printargs), "posix_sync" }, --[3037] = { 0, 0, SEN(printargs), "posix_kill" }, -+[3037] = { 0, TP, SEN(printargs), "posix_kill" }, - [3038] = { 0, TD|TFSF|TSFA,SEN(printargs), "posix_fstatfs" }, - [3039] = { 0, 0, SEN(printargs), "posix_getpgrp" }, - [3040] = { 0, 0, SEN(printargs), "posix_syssgi" }, -diff --git a/linux/mips/syscallent-n32.h b/linux/mips/syscallent-n32.h -index 38773f8..cfd199d 100644 ---- a/linux/mips/syscallent-n32.h -+++ b/linux/mips/syscallent-n32.h -@@ -68,7 +68,7 @@ - [BASE_NR + 57] = { 3, TF|TP|TSD|SE|SI, SEN(execve), "execve" }, - [BASE_NR + 58] = { 1, TP|SE, SEN(exit), "exit" }, - [BASE_NR + 59] = { 4, TP, SEN(wait4), "wait4" }, --[BASE_NR + 60] = { 2, TS, SEN(kill), "kill" }, -+[BASE_NR + 60] = { 2, TS|TP, SEN(kill), "kill" }, - [BASE_NR + 61] = { 1, 0, SEN(uname), "uname" }, - [BASE_NR + 62] = { 3, TI, SEN(semget), "semget" }, - [BASE_NR + 63] = { 3, TI, SEN(semop), "semop" }, -@@ -135,7 +135,7 @@ - [BASE_NR + 124] = { 2, TC, SEN(capset), "capset" }, - [BASE_NR + 125] = { 2, TS, SEN(rt_sigpending), "rt_sigpending" }, - [BASE_NR + 126] = { 4, TS, SEN(rt_sigtimedwait_time32), "rt_sigtimedwait" }, --[BASE_NR + 127] = { 3, TS, SEN(rt_sigqueueinfo), "rt_sigqueueinfo" }, -+[BASE_NR + 127] = { 3, TS|TP, SEN(rt_sigqueueinfo), "rt_sigqueueinfo" }, - [BASE_NR + 128] = { 2, TS, SEN(rt_sigsuspend), "rt_sigsuspend" }, - [BASE_NR + 129] = { 2, TS, SEN(sigaltstack), "sigaltstack" }, - [BASE_NR + 130] = { 2, TF, SEN(utime), "utime" }, -@@ -200,7 +200,7 @@ - [BASE_NR + 189] = { 2, TF, SEN(removexattr), "removexattr" }, - [BASE_NR + 190] = { 2, TF, SEN(removexattr), "lremovexattr" }, - [BASE_NR + 191] = { 2, TD, SEN(fremovexattr), "fremovexattr" }, --[BASE_NR + 192] = { 2, TS, SEN(kill), "tkill" }, -+[BASE_NR + 192] = { 2, TS|TP, SEN(kill), "tkill" }, - [BASE_NR + 193] = { 1, TCL, SEN(time), "time" }, - [BASE_NR + 194] = { 6, 0, SEN(futex_time32), "futex" }, - [BASE_NR + 195] = { 3, 0, SEN(sched_setaffinity), "sched_setaffinity" }, -@@ -237,7 +237,7 @@ - [BASE_NR + 226] = { 2, TCL, SEN(clock_gettime32), "clock_gettime" }, - [BASE_NR + 227] = { 2, TCL, SEN(clock_getres_time32), "clock_getres" }, - [BASE_NR + 228] = { 4, 0, SEN(clock_nanosleep_time32), "clock_nanosleep" }, --[BASE_NR + 229] = { 3, TS, SEN(tgkill), "tgkill" }, -+[BASE_NR + 229] = { 3, TS|TP, SEN(tgkill), "tgkill" }, - [BASE_NR + 230] = { 2, TF, SEN(utimes), "utimes" }, - [BASE_NR + 231] = { 6, TM, SEN(mbind), "mbind" }, - [BASE_NR + 232] = { 5, TM, SEN(get_mempolicy), "get_mempolicy" }, -@@ -274,7 +274,7 @@ - [BASE_NR + 263] = { 3, TD|TF, SEN(faccessat), "faccessat" }, - [BASE_NR + 264] = { 6, TD, SEN(pselect6_time32), "pselect6" }, - [BASE_NR + 265] = { 5, TD, SEN(ppoll_time32), "ppoll" }, --[BASE_NR + 266] = { 1, TP, SEN(unshare), "unshare" }, -+[BASE_NR + 266] = { 1, 0, SEN(unshare), "unshare" }, - [BASE_NR + 267] = { 6, TD, SEN(splice), "splice" }, - [BASE_NR + 268] = { 4, TD, SEN(sync_file_range), "sync_file_range" }, - [BASE_NR + 269] = { 4, TD, SEN(tee), "tee" }, -diff --git a/linux/mips/syscallent-n64.h b/linux/mips/syscallent-n64.h -index 0dfd64e..7ef6700 100644 ---- a/linux/mips/syscallent-n64.h -+++ b/linux/mips/syscallent-n64.h -@@ -68,7 +68,7 @@ - [BASE_NR + 57] = { 3, TF|TP|TSD|SE|SI, SEN(execve), "execve" }, - [BASE_NR + 58] = { 1, TP|SE, SEN(exit), "exit" }, - [BASE_NR + 59] = { 4, TP, SEN(wait4), "wait4" }, --[BASE_NR + 60] = { 2, TS, SEN(kill), "kill" }, -+[BASE_NR + 60] = { 2, TS|TP, SEN(kill), "kill" }, - [BASE_NR + 61] = { 1, 0, SEN(uname), "uname" }, - [BASE_NR + 62] = { 3, TI, SEN(semget), "semget" }, - [BASE_NR + 63] = { 3, TI, SEN(semop), "semop" }, -@@ -135,7 +135,7 @@ - [BASE_NR + 124] = { 2, TC, SEN(capset), "capset" }, - [BASE_NR + 125] = { 2, TS, SEN(rt_sigpending), "rt_sigpending" }, - [BASE_NR + 126] = { 4, TS, SEN(rt_sigtimedwait_time64), "rt_sigtimedwait" }, --[BASE_NR + 127] = { 3, TS, SEN(rt_sigqueueinfo), "rt_sigqueueinfo" }, -+[BASE_NR + 127] = { 3, TS|TP, SEN(rt_sigqueueinfo), "rt_sigqueueinfo" }, - [BASE_NR + 128] = { 2, TS, SEN(rt_sigsuspend), "rt_sigsuspend" }, - [BASE_NR + 129] = { 2, TS, SEN(sigaltstack), "sigaltstack" }, - [BASE_NR + 130] = { 2, TF, SEN(utime), "utime" }, -@@ -200,7 +200,7 @@ - [BASE_NR + 189] = { 2, TF, SEN(removexattr), "removexattr" }, - [BASE_NR + 190] = { 2, TF, SEN(removexattr), "lremovexattr" }, - [BASE_NR + 191] = { 2, TD, SEN(fremovexattr), "fremovexattr" }, --[BASE_NR + 192] = { 2, TS, SEN(kill), "tkill" }, -+[BASE_NR + 192] = { 2, TS|TP, SEN(kill), "tkill" }, - [BASE_NR + 193] = { 1, TCL, SEN(time), "time" }, - [BASE_NR + 194] = { 6, 0, SEN(futex_time64), "futex" }, - [BASE_NR + 195] = { 3, 0, SEN(sched_setaffinity), "sched_setaffinity" }, -@@ -233,7 +233,7 @@ - [BASE_NR + 222] = { 2, TCL, SEN(clock_gettime64), "clock_gettime" }, - [BASE_NR + 223] = { 2, TCL, SEN(clock_getres_time64), "clock_getres" }, - [BASE_NR + 224] = { 4, 0, SEN(clock_nanosleep_time64), "clock_nanosleep" }, --[BASE_NR + 225] = { 3, TS, SEN(tgkill), "tgkill" }, -+[BASE_NR + 225] = { 3, TS|TP, SEN(tgkill), "tgkill" }, - [BASE_NR + 226] = { 2, TF, SEN(utimes), "utimes" }, - [BASE_NR + 227] = { 6, TM, SEN(mbind), "mbind" }, - [BASE_NR + 228] = { 5, TM, SEN(get_mempolicy), "get_mempolicy" }, -@@ -270,7 +270,7 @@ - [BASE_NR + 259] = { 3, TD|TF, SEN(faccessat), "faccessat" }, - [BASE_NR + 260] = { 6, TD, SEN(pselect6_time64), "pselect6" }, - [BASE_NR + 261] = { 5, TD, SEN(ppoll_time64), "ppoll" }, --[BASE_NR + 262] = { 1, TP, SEN(unshare), "unshare" }, -+[BASE_NR + 262] = { 1, 0, SEN(unshare), "unshare" }, - [BASE_NR + 263] = { 6, TD, SEN(splice), "splice" }, - [BASE_NR + 264] = { 4, TD, SEN(sync_file_range), "sync_file_range" }, - [BASE_NR + 265] = { 4, TD, SEN(tee), "tee" }, -diff --git a/linux/mips/syscallent-o32.h b/linux/mips/syscallent-o32.h -index f4e67e8..d2b26f7 100644 ---- a/linux/mips/syscallent-o32.h -+++ b/linux/mips/syscallent-o32.h -@@ -46,7 +46,7 @@ - [BASE_NR + 34] = { 1, 0, SEN(nice), "nice" }, - [BASE_NR + 35] = { 1, 0, SEN(ftime), "ftime" }, - [BASE_NR + 36] = { 0, 0, SEN(sync), "sync" }, --[BASE_NR + 37] = { 2, TS, SEN(kill), "kill" }, -+[BASE_NR + 37] = { 2, TS|TP, SEN(kill), "kill" }, - [BASE_NR + 38] = { 2, TF, SEN(rename), "rename" }, - [BASE_NR + 39] = { 2, TF, SEN(mkdir), "mkdir" }, - [BASE_NR + 40] = { 1, TF, SEN(rmdir), "rmdir" }, -@@ -207,7 +207,7 @@ - [BASE_NR + 195] = { 4, TS, SEN(rt_sigprocmask), "rt_sigprocmask" }, - [BASE_NR + 196] = { 2, TS, SEN(rt_sigpending), "rt_sigpending" }, - [BASE_NR + 197] = { 4, TS, SEN(rt_sigtimedwait_time32), "rt_sigtimedwait" }, --[BASE_NR + 198] = { 3, TS, SEN(rt_sigqueueinfo), "rt_sigqueueinfo" }, -+[BASE_NR + 198] = { 3, TS|TP, SEN(rt_sigqueueinfo), "rt_sigqueueinfo" }, - [BASE_NR + 199] = { 2, TS, SEN(rt_sigsuspend), "rt_sigsuspend" }, - [BASE_NR + 200] = { 6, TD, SEN(pread), "pread64" }, - [BASE_NR + 201] = { 6, TD, SEN(pwrite), "pwrite64" }, -@@ -245,7 +245,7 @@ - [BASE_NR + 233] = { 2, TF, SEN(removexattr), "removexattr" }, - [BASE_NR + 234] = { 2, TF, SEN(removexattr), "lremovexattr" }, - [BASE_NR + 235] = { 2, TD, SEN(fremovexattr), "fremovexattr" }, --[BASE_NR + 236] = { 2, TS, SEN(kill), "tkill" }, -+[BASE_NR + 236] = { 2, TS|TP, SEN(kill), "tkill" }, - [BASE_NR + 237] = { 4, TD|TN, SEN(sendfile64), "sendfile64" }, - [BASE_NR + 238] = { 6, 0, SEN(futex_time32), "futex" }, - [BASE_NR + 239] = { 3, 0, SEN(sched_setaffinity), "sched_setaffinity" }, -@@ -275,7 +275,7 @@ - [BASE_NR + 263] = { 2, TCL, SEN(clock_gettime32), "clock_gettime" }, - [BASE_NR + 264] = { 2, TCL, SEN(clock_getres_time32), "clock_getres" }, - [BASE_NR + 265] = { 4, 0, SEN(clock_nanosleep_time32), "clock_nanosleep" }, --[BASE_NR + 266] = { 3, TS, SEN(tgkill), "tgkill" }, -+[BASE_NR + 266] = { 3, TS|TP, SEN(tgkill), "tgkill" }, - [BASE_NR + 267] = { 2, TF, SEN(utimes), "utimes" }, - [BASE_NR + 268] = { 6, TM, SEN(mbind), "mbind" }, - [BASE_NR + 269] = { 5, TM, SEN(get_mempolicy), "get_mempolicy" }, -@@ -312,7 +312,7 @@ - [BASE_NR + 300] = { 3, TD|TF, SEN(faccessat), "faccessat" }, - [BASE_NR + 301] = { 6, TD, SEN(pselect6_time32), "pselect6" }, - [BASE_NR + 302] = { 5, TD, SEN(ppoll_time32), "ppoll" }, --[BASE_NR + 303] = { 1, TP, SEN(unshare), "unshare" }, -+[BASE_NR + 303] = { 1, 0, SEN(unshare), "unshare" }, - [BASE_NR + 304] = { 6, TD, SEN(splice), "splice" }, - [BASE_NR + 305] = { 7, TD, SEN(sync_file_range), "sync_file_range" }, - [BASE_NR + 306] = { 4, TD, SEN(tee), "tee" }, -diff --git a/linux/powerpc/syscallent.h b/linux/powerpc/syscallent.h -index 6958eda..b0962b4 100644 ---- a/linux/powerpc/syscallent.h -+++ b/linux/powerpc/syscallent.h -@@ -44,7 +44,7 @@ - [ 34] = { 1, 0, SEN(nice), "nice" }, - [ 35] = { 0, 0, SEN(ftime), "ftime" }, - [ 36] = { 0, 0, SEN(sync), "sync" }, --[ 37] = { 2, TS, SEN(kill), "kill" }, -+[ 37] = { 2, TS|TP, SEN(kill), "kill" }, - [ 38] = { 2, TF, SEN(rename), "rename" }, - [ 39] = { 2, TF, SEN(mkdir), "mkdir" }, - [ 40] = { 1, TF, SEN(rmdir), "rmdir" }, -@@ -184,7 +184,7 @@ - [174] = { 4, TS, SEN(rt_sigprocmask), "rt_sigprocmask" }, - [175] = { 2, TS, SEN(rt_sigpending), "rt_sigpending" }, - [176] = { 4, TS, SEN(rt_sigtimedwait_time32), "rt_sigtimedwait" }, --[177] = { 3, TS, SEN(rt_sigqueueinfo), "rt_sigqueueinfo" }, -+[177] = { 3, TS|TP, SEN(rt_sigqueueinfo), "rt_sigqueueinfo" }, - [178] = { 2, TS, SEN(rt_sigsuspend), "rt_sigsuspend" }, - [179] = { 6, TD, SEN(pread), "pread64" }, - [180] = { 6, TD, SEN(pwrite), "pwrite64" }, -@@ -215,7 +215,7 @@ - [205] = { 3, TM, SEN(madvise), "madvise" }, - [206] = { 3, TM, SEN(mincore), "mincore" }, - [207] = { 0, PU|NF, SEN(gettid), "gettid" }, --[208] = { 2, TS, SEN(kill), "tkill" }, -+[208] = { 2, TS|TP, SEN(kill), "tkill" }, - [209] = { 5, TF, SEN(setxattr), "setxattr" }, - [210] = { 5, TF, SEN(setxattr), "lsetxattr" }, - [211] = { 5, TD, SEN(fsetxattr), "fsetxattr" }, -@@ -257,7 +257,7 @@ - [247] = { 2, TCL, SEN(clock_getres_time32), "clock_getres" }, - [248] = { 4, 0, SEN(clock_nanosleep_time32), "clock_nanosleep" }, - [249] = { 2, 0, SEN(printargs), "swapcontext" }, --[250] = { 3, TS, SEN(tgkill), "tgkill" }, -+[250] = { 3, TS|TP, SEN(tgkill), "tgkill" }, - [251] = { 2, TF, SEN(utimes), "utimes" }, - [252] = { 3, TF|TSF|TSFA, SEN(statfs64), "statfs64" }, - [253] = { 3, TD|TFSF|TSFA, SEN(fstatfs64), "fstatfs64" }, -@@ -289,7 +289,7 @@ - [279] = { 4, 0, SEN(printargs), "spu_create" }, - [280] = { 6, TD, SEN(pselect6_time32), "pselect6" }, - [281] = { 5, TD, SEN(ppoll_time32), "ppoll" }, --[282] = { 1, TP, SEN(unshare), "unshare" }, -+[282] = { 1, 0, SEN(unshare), "unshare" }, - [283] = { 6, TD, SEN(splice), "splice" }, - [284] = { 4, TD, SEN(tee), "tee" }, - [285] = { 4, TD, SEN(vmsplice), "vmsplice" }, -diff --git a/linux/powerpc64/syscallent.h b/linux/powerpc64/syscallent.h -index 608caed..1a0dfb5 100644 ---- a/linux/powerpc64/syscallent.h -+++ b/linux/powerpc64/syscallent.h -@@ -44,7 +44,7 @@ - [ 34] = { 1, 0, SEN(nice), "nice" }, - [ 35] = { 0, 0, SEN(ftime), "ftime" }, - [ 36] = { 0, 0, SEN(sync), "sync" }, --[ 37] = { 2, TS, SEN(kill), "kill" }, -+[ 37] = { 2, TS|TP, SEN(kill), "kill" }, - [ 38] = { 2, TF, SEN(rename), "rename" }, - [ 39] = { 2, TF, SEN(mkdir), "mkdir" }, - [ 40] = { 1, TF, SEN(rmdir), "rmdir" }, -@@ -184,7 +184,7 @@ - [174] = { 4, TS, SEN(rt_sigprocmask), "rt_sigprocmask" }, - [175] = { 2, TS, SEN(rt_sigpending), "rt_sigpending" }, - [176] = { 4, TS, SEN(rt_sigtimedwait_time64), "rt_sigtimedwait" }, --[177] = { 3, TS, SEN(rt_sigqueueinfo), "rt_sigqueueinfo" }, -+[177] = { 3, TS|TP, SEN(rt_sigqueueinfo), "rt_sigqueueinfo" }, - [178] = { 2, TS, SEN(rt_sigsuspend), "rt_sigsuspend" }, - [179] = { 4, TD, SEN(pread), "pread64" }, - [180] = { 4, TD, SEN(pwrite), "pwrite64" }, -@@ -210,7 +210,7 @@ - [205] = { 3, TM, SEN(madvise), "madvise" }, - [206] = { 3, TM, SEN(mincore), "mincore" }, - [207] = { 0, PU|NF, SEN(gettid), "gettid" }, --[208] = { 2, TS, SEN(kill), "tkill" }, -+[208] = { 2, TS|TP, SEN(kill), "tkill" }, - [209] = { 5, TF, SEN(setxattr), "setxattr" }, - [210] = { 5, TF, SEN(setxattr), "lsetxattr" }, - [211] = { 5, TD, SEN(fsetxattr), "fsetxattr" }, -@@ -252,7 +252,7 @@ - [247] = { 2, TCL, SEN(clock_getres_time64), "clock_getres" }, - [248] = { 4, 0, SEN(clock_nanosleep_time64), "clock_nanosleep" }, - [249] = { 2, 0, SEN(printargs), "swapcontext" }, --[250] = { 3, TS, SEN(tgkill), "tgkill" }, -+[250] = { 3, TS|TP, SEN(tgkill), "tgkill" }, - [251] = { 2, TF, SEN(utimes), "utimes" }, - [252] = { 3, TF|TSF|TSFA, SEN(statfs64), "statfs64" }, - [253] = { 3, TD|TFSF|TSFA, SEN(fstatfs64), "fstatfs64" }, -@@ -284,7 +284,7 @@ - [279] = { 4, 0, SEN(printargs), "spu_create" }, - [280] = { 6, TD, SEN(pselect6_time64), "pselect6" }, - [281] = { 5, TD, SEN(ppoll_time64), "ppoll" }, --[282] = { 1, TP, SEN(unshare), "unshare" }, -+[282] = { 1, 0, SEN(unshare), "unshare" }, - [283] = { 6, TD, SEN(splice), "splice" }, - [284] = { 4, TD, SEN(tee), "tee" }, - [285] = { 4, TD, SEN(vmsplice), "vmsplice" }, -diff --git a/linux/s390/syscallent.h b/linux/s390/syscallent.h -index c61ad77..105089f 100644 ---- a/linux/s390/syscallent.h -+++ b/linux/s390/syscallent.h -@@ -46,7 +46,7 @@ - [ 34] = { 1, 0, SEN(nice), "nice" }, - [ 35] = { }, - [ 36] = { 0, 0, SEN(sync), "sync" }, --[ 37] = { 2, TS, SEN(kill), "kill" }, -+[ 37] = { 2, TS|TP, SEN(kill), "kill" }, - [ 38] = { 2, TF, SEN(rename), "rename" }, - [ 39] = { 2, TF, SEN(mkdir), "mkdir" }, - [ 40] = { 1, TF, SEN(rmdir), "rmdir" }, -@@ -187,7 +187,7 @@ - [175] = { 4, TS, SEN(rt_sigprocmask), "rt_sigprocmask" }, - [176] = { 2, TS, SEN(rt_sigpending), "rt_sigpending" }, - [177] = { 4, TS, SEN(rt_sigtimedwait_time32), "rt_sigtimedwait" }, --[178] = { 3, TS, SEN(rt_sigqueueinfo), "rt_sigqueueinfo" }, -+[178] = { 3, TS|TP, SEN(rt_sigqueueinfo), "rt_sigqueueinfo" }, - [179] = { 2, TS, SEN(rt_sigsuspend), "rt_sigsuspend" }, - [180] = { 5, TD, SEN(pread), "pread64" }, - [181] = { 5, TD, SEN(pwrite), "pwrite64" }, -@@ -246,11 +246,11 @@ - [234] = { 2, TF, SEN(removexattr), "lremovexattr" }, - [235] = { 2, TD, SEN(fremovexattr), "fremovexattr" }, - [236] = { 0, PU|NF, SEN(gettid), "gettid" }, --[237] = { 2, TS, SEN(kill), "tkill" }, -+[237] = { 2, TS|TP, SEN(kill), "tkill" }, - [238] = { 6, 0, SEN(futex_time32), "futex" }, - [239] = { 3, 0, SEN(sched_setaffinity), "sched_setaffinity" }, - [240] = { 3, 0, SEN(sched_getaffinity), "sched_getaffinity" }, --[241] = { 3, TS, SEN(tgkill), "tgkill" }, -+[241] = { 3, TS|TP, SEN(tgkill), "tgkill" }, - [242] = { }, - [243] = { 2, TM, SEN(io_setup), "io_setup" }, - [244] = { 1, TM, SEN(io_destroy), "io_destroy" }, -@@ -312,7 +312,7 @@ - [300] = { 3, TD|TF, SEN(faccessat), "faccessat" }, - [301] = { 6, TD, SEN(pselect6_time32), "pselect6" }, - [302] = { 5, TD, SEN(ppoll_time32), "ppoll" }, --[303] = { 1, TP, SEN(unshare), "unshare" }, -+[303] = { 1, 0, SEN(unshare), "unshare" }, - [304] = { 2, 0, SEN(set_robust_list), "set_robust_list" }, - [305] = { 3, 0, SEN(get_robust_list), "get_robust_list" }, - [306] = { 6, TD, SEN(splice), "splice" }, -diff --git a/linux/s390x/syscallent.h b/linux/s390x/syscallent.h -index c493757..e9cf57a 100644 ---- a/linux/s390x/syscallent.h -+++ b/linux/s390x/syscallent.h -@@ -45,7 +45,7 @@ - [ 34] = { 1, 0, SEN(nice), "nice" }, - [ 35] = { }, - [ 36] = { 0, 0, SEN(sync), "sync" }, --[ 37] = { 2, TS, SEN(kill), "kill" }, -+[ 37] = { 2, TS|TP, SEN(kill), "kill" }, - [ 38] = { 2, TF, SEN(rename), "rename" }, - [ 39] = { 2, TF, SEN(mkdir), "mkdir" }, - [ 40] = { 1, TF, SEN(rmdir), "rmdir" }, -@@ -176,7 +176,7 @@ - [175] = { 4, TS, SEN(rt_sigprocmask), "rt_sigprocmask" }, - [176] = { 2, TS, SEN(rt_sigpending), "rt_sigpending" }, - [177] = { 4, TS, SEN(rt_sigtimedwait_time64), "rt_sigtimedwait" }, --[178] = { 3, TS, SEN(rt_sigqueueinfo), "rt_sigqueueinfo" }, -+[178] = { 3, TS|TP, SEN(rt_sigqueueinfo), "rt_sigqueueinfo" }, - [179] = { 2, TS, SEN(rt_sigsuspend), "rt_sigsuspend" }, - [180] = { 4, TD, SEN(pread), "pread64" }, - [181] = { 4, TD, SEN(pwrite), "pwrite64" }, -@@ -230,11 +230,11 @@ - [234] = { 2, TF, SEN(removexattr), "lremovexattr" }, - [235] = { 2, TD, SEN(fremovexattr), "fremovexattr" }, - [236] = { 0, PU|NF, SEN(gettid), "gettid" }, --[237] = { 2, TS, SEN(kill), "tkill" }, -+[237] = { 2, TS|TP, SEN(kill), "tkill" }, - [238] = { 6, 0, SEN(futex_time64), "futex" }, - [239] = { 3, 0, SEN(sched_setaffinity), "sched_setaffinity" }, - [240] = { 3, 0, SEN(sched_getaffinity), "sched_getaffinity" }, --[241] = { 3, TS, SEN(tgkill), "tgkill" }, -+[241] = { 3, TS|TP, SEN(tgkill), "tgkill" }, - [242] = { }, - [243] = { 2, TM, SEN(io_setup), "io_setup" }, - [244] = { 1, TM, SEN(io_destroy), "io_destroy" }, -@@ -296,7 +296,7 @@ - [300] = { 3, TD|TF, SEN(faccessat), "faccessat" }, - [301] = { 6, TD, SEN(pselect6_time64), "pselect6" }, - [302] = { 5, TD, SEN(ppoll_time64), "ppoll" }, --[303] = { 1, TP, SEN(unshare), "unshare" }, -+[303] = { 1, 0, SEN(unshare), "unshare" }, - [304] = { 2, 0, SEN(set_robust_list), "set_robust_list" }, - [305] = { 3, 0, SEN(get_robust_list), "get_robust_list" }, - [306] = { 6, TD, SEN(splice), "splice" }, -diff --git a/linux/sh/syscallent.h b/linux/sh/syscallent.h -index 61eb728..70dc7da 100644 ---- a/linux/sh/syscallent.h -+++ b/linux/sh/syscallent.h -@@ -46,7 +46,7 @@ - [ 34] = { 1, 0, SEN(nice), "nice" }, - [ 35] = { 0, 0, SEN(ftime), "ftime" }, - [ 36] = { 0, 0, SEN(sync), "sync" }, --[ 37] = { 2, TS, SEN(kill), "kill" }, -+[ 37] = { 2, TS|TP, SEN(kill), "kill" }, - [ 38] = { 2, TF, SEN(rename), "rename" }, - [ 39] = { 2, TF, SEN(mkdir), "mkdir" }, - [ 40] = { 1, TF, SEN(rmdir), "rmdir" }, -@@ -187,7 +187,7 @@ - [175] = { 4, TS, SEN(rt_sigprocmask), "rt_sigprocmask" }, - [176] = { 2, TS, SEN(rt_sigpending), "rt_sigpending" }, - [177] = { 4, TS, SEN(rt_sigtimedwait_time32), "rt_sigtimedwait" }, --[178] = { 3, TS, SEN(rt_sigqueueinfo), "rt_sigqueueinfo" }, -+[178] = { 3, TS|TP, SEN(rt_sigqueueinfo), "rt_sigqueueinfo" }, - [179] = { 2, TS, SEN(rt_sigsuspend), "rt_sigsuspend" }, - [180] = { 6, TD, SEN(pread), "pread64" }, - [181] = { 6, TD, SEN(pwrite), "pwrite64" }, -@@ -245,7 +245,7 @@ - [235] = { 2, TF, SEN(removexattr), "removexattr" }, - [236] = { 2, TF, SEN(removexattr), "lremovexattr" }, - [237] = { 2, TD, SEN(fremovexattr), "fremovexattr" }, --[238] = { 2, TS, SEN(kill), "tkill" }, -+[238] = { 2, TS|TP, SEN(kill), "tkill" }, - [239] = { 4, TD|TN, SEN(sendfile64), "sendfile64" }, - [240] = { 6, 0, SEN(futex_time32), "futex" }, - [241] = { 3, 0, SEN(sched_setaffinity), "sched_setaffinity" }, -@@ -276,7 +276,7 @@ - [267] = { 4, 0, SEN(clock_nanosleep_time32), "clock_nanosleep" }, - [268] = { 3, TF|TSF|TSFA, SEN(statfs64), "statfs64" }, - [269] = { 3, TD|TFSF|TSFA, SEN(fstatfs64), "fstatfs64" }, --[270] = { 3, TS, SEN(tgkill), "tgkill" }, -+[270] = { 3, TS|TP, SEN(tgkill), "tgkill" }, - [271] = { 2, TF, SEN(utimes), "utimes" }, - [272] = { 6, TD, SEN(fadvise64_64), "fadvise64_64" }, - [273] = { }, -@@ -316,7 +316,7 @@ - [307] = { 3, TD|TF, SEN(faccessat), "faccessat" }, - [308] = { 6, TD, SEN(pselect6_time32), "pselect6" }, - [309] = { 5, TD, SEN(ppoll_time32), "ppoll" }, --[310] = { 1, TP, SEN(unshare), "unshare" }, -+[310] = { 1, 0, SEN(unshare), "unshare" }, - [311] = { 2, 0, SEN(set_robust_list), "set_robust_list" }, - [312] = { 3, 0, SEN(get_robust_list), "get_robust_list" }, - [313] = { 6, TD, SEN(splice), "splice" }, -diff --git a/linux/sh64/syscallent.h b/linux/sh64/syscallent.h -index f681635..eff5dc0 100644 ---- a/linux/sh64/syscallent.h -+++ b/linux/sh64/syscallent.h -@@ -44,7 +44,7 @@ - [ 34] = { 1, 0, SEN(nice), "nice" }, - [ 35] = { 0, 0, SEN(ftime), "ftime" }, - [ 36] = { 0, 0, SEN(sync), "sync" }, --[ 37] = { 2, TS, SEN(kill), "kill" }, -+[ 37] = { 2, TS|TP, SEN(kill), "kill" }, - [ 38] = { 2, TF, SEN(rename), "rename" }, - [ 39] = { 2, TF, SEN(mkdir), "mkdir" }, - [ 40] = { 1, TF, SEN(rmdir), "rmdir" }, -@@ -185,7 +185,7 @@ - [175] = { 4, TS, SEN(rt_sigprocmask), "rt_sigprocmask" }, - [176] = { 2, TS, SEN(rt_sigpending), "rt_sigpending" }, - [177] = { 4, TS, SEN(rt_sigtimedwait_time64), "rt_sigtimedwait" }, --[178] = { 3, TS, SEN(rt_sigqueueinfo), "rt_sigqueueinfo" }, -+[178] = { 3, TS|TP, SEN(rt_sigqueueinfo), "rt_sigqueueinfo" }, - [179] = { 2, TS, SEN(rt_sigsuspend), "rt_sigsuspend" }, - [180] = { 4, TD, SEN(pread), "pread64" }, - [181] = { 4, TD, SEN(pwrite), "pwrite64" }, -@@ -271,7 +271,7 @@ - [263] = { 2, TF, SEN(removexattr), "removexattr" }, - [264] = { 2, TF, SEN(removexattr), "lremovexattr" }, - [265] = { 2, TD, SEN(fremovexattr), "fremovexattr" }, --[266] = { 2, TS, SEN(kill), "tkill" }, -+[266] = { 2, TS|TP, SEN(kill), "tkill" }, - [267] = { 4, TD|TN, SEN(sendfile64), "sendfile64" }, - [268] = { 6, 0, SEN(futex_time64), "futex" }, - [269] = { 3, 0, SEN(sched_setaffinity), "sched_setaffinity" }, -@@ -302,7 +302,7 @@ - [295] = { 4, 0, SEN(clock_nanosleep_time64), "clock_nanosleep" }, - [296] = { 3, TF|TSF|TSFA, SEN(statfs64), "statfs64" }, - [297] = { 3, TD|TFSF|TSFA, SEN(fstatfs64), "fstatfs64" }, --[298] = { 3, TS, SEN(tgkill), "tgkill" }, -+[298] = { 3, TS|TP, SEN(tgkill), "tgkill" }, - [299] = { 2, TF, SEN(utimes), "utimes" }, - [300] = { 4, TD, SEN(fadvise64_64), "fadvise64_64" }, - [301] = { }, -@@ -342,7 +342,7 @@ - [335] = { 3, TD|TF, SEN(faccessat), "faccessat" }, - [336] = { 6, TD, SEN(pselect6_time64), "pselect6" }, - [337] = { 5, TD, SEN(ppoll_time64), "ppoll" }, --[338] = { 1, TP, SEN(unshare), "unshare" }, -+[338] = { 1, 0, SEN(unshare), "unshare" }, - [339] = { 2, 0, SEN(set_robust_list), "set_robust_list" }, - [340] = { 3, 0, SEN(get_robust_list), "get_robust_list" }, - [341] = { 6, TD, SEN(splice), "splice" }, -diff --git a/linux/sparc/syscallent.h b/linux/sparc/syscallent.h -index 3417e7f..8c8bd18 100644 ---- a/linux/sparc/syscallent.h -+++ b/linux/sparc/syscallent.h -@@ -42,7 +42,7 @@ - [ 34] = { 1, 0, SEN(nice), "nice" }, - [ 35] = { 3, TF, SEN(chown), "chown32" }, - [ 36] = { 0, 0, SEN(sync), "sync" }, --[ 37] = { 2, TS, SEN(kill), "kill" }, -+[ 37] = { 2, TS|TP, SEN(kill), "kill" }, - [ 38] = { 2, TF|TST|TSTA, SEN(stat), "stat" }, - [ 39] = { 4, TD|TN, SEN(sendfile), "sendfile" }, - [ 40] = { 2, TF|TLST|TSTA, SEN(lstat), "lstat" }, -@@ -111,7 +111,7 @@ - [103] = { 4, TS, SEN(rt_sigprocmask), "rt_sigprocmask" }, - [104] = { 2, TS, SEN(rt_sigpending), "rt_sigpending" }, - [105] = { 4, TS, SEN(rt_sigtimedwait_time32), "rt_sigtimedwait" }, --[106] = { 3, TS, SEN(rt_sigqueueinfo), "rt_sigqueueinfo" }, -+[106] = { 3, TS|TP, SEN(rt_sigqueueinfo), "rt_sigqueueinfo" }, - [107] = { 2, TS, SEN(rt_sigsuspend), "rt_sigsuspend" }, - [108] = { 3, TC, SEN(setresuid), "setresuid32" }, - [109] = { 3, TC, SEN(getresuid), "getresuid32" }, -@@ -192,7 +192,7 @@ - [184] = { 5, 0, SEN(query_module), "query_module" }, - [185] = { 2, 0, SEN(setpgid), "setpgid" }, - [186] = { 2, TD, SEN(fremovexattr), "fremovexattr" }, --[187] = { 2, TS, SEN(kill), "tkill" }, -+[187] = { 2, TS|TP, SEN(kill), "tkill" }, - [188] = { 1, TP|SE, SEN(exit), "exit_group" }, - [189] = { 1, 0, SEN(uname), "uname" }, - [190] = { 3, 0, SEN(init_module), "init_module" }, -@@ -216,7 +216,7 @@ - [208] = { 4, 0, SEN(lookup_dcookie), "lookup_dcookie" }, - [209] = { 5, TD, SEN(fadvise64), "fadvise64" }, - [210] = { 6, TD, SEN(fadvise64_64), "fadvise64_64" }, --[211] = { 3, TS, SEN(tgkill), "tgkill" }, -+[211] = { 3, TS|TP, SEN(tgkill), "tgkill" }, - [212] = { 3, TP, SEN(waitpid), "waitpid" }, - [213] = { 1, TF, SEN(swapoff), "swapoff" }, - [214] = { 1, 0, SEN(sysinfo), "sysinfo" }, -@@ -304,7 +304,7 @@ - [296] = { 3, TD|TF, SEN(faccessat), "faccessat" }, - [297] = { 6, TD, SEN(pselect6_time32), "pselect6" }, - [298] = { 5, TD, SEN(ppoll_time32), "ppoll" }, --[299] = { 1, TP, SEN(unshare), "unshare" }, -+[299] = { 1, 0, SEN(unshare), "unshare" }, - [300] = { 2, 0, SEN(set_robust_list), "set_robust_list" }, - [301] = { 3, 0, SEN(get_robust_list), "get_robust_list" }, - [302] = { 4, TM, SEN(migrate_pages), "migrate_pages" }, -diff --git a/linux/sparc64/syscallent.h b/linux/sparc64/syscallent.h -index dd77685..0e0e0c4 100644 ---- a/linux/sparc64/syscallent.h -+++ b/linux/sparc64/syscallent.h -@@ -41,7 +41,7 @@ - [ 34] = { 1, 0, SEN(nice), "nice" }, - [ 35] = { }, - [ 36] = { 0, 0, SEN(sync), "sync" }, --[ 37] = { 2, TS, SEN(kill), "kill" }, -+[ 37] = { 2, TS|TP, SEN(kill), "kill" }, - [ 38] = { 2, TF|TST|TSTA, SEN(stat), "stat" }, - [ 39] = { 4, TD|TN, SEN(sendfile), "sendfile" }, - [ 40] = { 2, TF|TLST|TSTA, SEN(lstat), "lstat" }, -@@ -109,7 +109,7 @@ - [103] = { 4, TS, SEN(rt_sigprocmask), "rt_sigprocmask" }, - [104] = { 2, TS, SEN(rt_sigpending), "rt_sigpending" }, - [105] = { 4, TS, SEN(rt_sigtimedwait_time64), "rt_sigtimedwait" }, --[106] = { 3, TS, SEN(rt_sigqueueinfo), "rt_sigqueueinfo" }, -+[106] = { 3, TS|TP, SEN(rt_sigqueueinfo), "rt_sigqueueinfo" }, - [107] = { 2, TS, SEN(rt_sigsuspend), "rt_sigsuspend" }, - [108] = { 3, TC, SEN(setresuid), "setresuid" }, - [109] = { 3, TC, SEN(getresuid), "getresuid" }, -@@ -190,7 +190,7 @@ - [184] = { 5, 0, SEN(query_module), "query_module" }, - [185] = { 2, 0, SEN(setpgid), "setpgid" }, - [186] = { 2, TD, SEN(fremovexattr), "fremovexattr" }, --[187] = { 2, TS, SEN(kill), "tkill" }, -+[187] = { 2, TS|TP, SEN(kill), "tkill" }, - [188] = { 1, TP|SE, SEN(exit), "exit_group" }, - [189] = { 1, 0, SEN(uname), "uname" }, - [190] = { 3, 0, SEN(init_module), "init_module" }, -@@ -214,7 +214,7 @@ - [208] = { 3, 0, SEN(lookup_dcookie), "lookup_dcookie" }, - [209] = { 4, TD, SEN(fadvise64), "fadvise64" }, - [210] = { 4, TD, SEN(fadvise64_64), "fadvise64_64" }, --[211] = { 3, TS, SEN(tgkill), "tgkill" }, -+[211] = { 3, TS|TP, SEN(tgkill), "tgkill" }, - [212] = { 3, TP, SEN(waitpid), "waitpid" }, - [213] = { 1, TF, SEN(swapoff), "swapoff" }, - [214] = { 1, 0, SEN(sysinfo), "sysinfo" }, -@@ -302,7 +302,7 @@ - [296] = { 3, TD|TF, SEN(faccessat), "faccessat" }, - [297] = { 6, TD, SEN(pselect6_time64), "pselect6" }, - [298] = { 5, TD, SEN(ppoll_time64), "ppoll" }, --[299] = { 1, TP, SEN(unshare), "unshare" }, -+[299] = { 1, 0, SEN(unshare), "unshare" }, - [300] = { 2, 0, SEN(set_robust_list), "set_robust_list" }, - [301] = { 3, 0, SEN(get_robust_list), "get_robust_list" }, - [302] = { 4, TM, SEN(migrate_pages), "migrate_pages" }, -diff --git a/linux/syscallent-common.h b/linux/syscallent-common.h -index 0d3a4db..0ff671e 100644 ---- a/linux/syscallent-common.h -+++ b/linux/syscallent-common.h -@@ -8,7 +8,7 @@ - #ifndef BASE_NR - # define BASE_NR 0 - #endif --[BASE_NR + 424] = { 4, TD|TS, SEN(pidfd_send_signal), "pidfd_send_signal" }, -+[BASE_NR + 424] = { 4, TD|TS|TP, SEN(pidfd_send_signal), "pidfd_send_signal" }, - [BASE_NR + 425] = { 2, TD, SEN(io_uring_setup), "io_uring_setup" }, - [BASE_NR + 426] = { 6, TD|TS, SEN(io_uring_enter), "io_uring_enter" }, - [BASE_NR + 427] = { 4, TD|TM, SEN(io_uring_register), "io_uring_register" }, -diff --git a/linux/x32/syscallent.h b/linux/x32/syscallent.h -index 30e295f..db8ecfd 100644 ---- a/linux/x32/syscallent.h -+++ b/linux/x32/syscallent.h -@@ -67,7 +67,7 @@ - [ 59] = { 3, TF|TP|SE|SI, SEN(printargs), "execve#64" }, - [ 60] = { 1, TP|SE, SEN(exit), "exit" }, - [ 61] = { 4, TP, SEN(wait4), "wait4" }, --[ 62] = { 2, TS, SEN(kill), "kill" }, -+[ 62] = { 2, TS|TP, SEN(kill), "kill" }, - [ 63] = { 1, 0, SEN(uname), "uname" }, - [ 64] = { 3, TI, SEN(semget), "semget" }, - [ 65] = { 3, TI, SEN(semop), "semop" }, -@@ -134,7 +134,7 @@ - [126] = { 2, TC, SEN(capset), "capset" }, - [127] = { 2, TS, SEN(printargs), "rt_sigpending#64" }, - [128] = { 4, TS, SEN(printargs), "rt_sigtimedwait#64" }, --[129] = { 3, TS, SEN(printargs), "rt_sigqueueinfo#64" }, -+[129] = { 3, TS|TP, SEN(printargs), "rt_sigqueueinfo#64" }, - [130] = { 2, TS, SEN(rt_sigsuspend), "rt_sigsuspend" }, - [131] = { 2, TS, SEN(printargs), "sigaltstack#64" }, - [132] = { 2, TF, SEN(utime), "utime" }, -@@ -163,7 +163,7 @@ - [155] = { 2, TF, SEN(pivotroot), "pivot_root" }, - [156] = { 1, 0, SEN(printargs), "_sysctl#64" }, - [157] = { 5, TC, SEN(prctl), "prctl" }, --[158] = { 2, TP, SEN(arch_prctl), "arch_prctl" }, -+[158] = { 2, 0, SEN(arch_prctl), "arch_prctl" }, - [159] = { 1, TCL, SEN(adjtimex64), "adjtimex" }, - [160] = { 2, 0, SEN(setrlimit), "setrlimit" }, - [161] = { 1, TF, SEN(chroot), "chroot" }, -@@ -205,7 +205,7 @@ - [197] = { 2, TF, SEN(removexattr), "removexattr" }, - [198] = { 2, TF, SEN(removexattr), "lremovexattr" }, - [199] = { 2, TD, SEN(fremovexattr), "fremovexattr" }, --[200] = { 2, TS, SEN(kill), "tkill" }, -+[200] = { 2, TS|TP, SEN(kill), "tkill" }, - [201] = { 1, TCL, SEN(time), "time" }, - [202] = { 6, 0, SEN(futex_time64), "futex" }, - [203] = { 3, 0, SEN(sched_setaffinity), "sched_setaffinity" }, -@@ -239,7 +239,7 @@ - [231] = { 1, TP|SE, SEN(exit), "exit_group" }, - [232] = { 4, TD, SEN(epoll_wait), "epoll_wait" }, - [233] = { 4, TD, SEN(epoll_ctl), "epoll_ctl" }, --[234] = { 3, TS, SEN(tgkill), "tgkill" }, -+[234] = { 3, TS|TP, SEN(tgkill), "tgkill" }, - [235] = { 2, TF, SEN(utimes), "utimes" }, - [236] = { 5, 0, SEN(printargs), "vserver#64" }, - [237] = { 6, TM, SEN(mbind), "mbind" }, -@@ -277,7 +277,7 @@ - [269] = { 3, TD|TF, SEN(faccessat), "faccessat" }, - [270] = { 6, TD, SEN(pselect6_time64), "pselect6" }, - [271] = { 5, TD, SEN(ppoll_time64), "ppoll" }, --[272] = { 1, TP, SEN(unshare), "unshare" }, -+[272] = { 1, 0, SEN(unshare), "unshare" }, - [273] = { 2, 0, SEN(printargs), "set_robust_list#64" }, - [274] = { 3, 0, SEN(printargs), "get_robust_list#64" }, - [275] = { 6, TD, SEN(splice), "splice" }, -@@ -358,7 +358,7 @@ - [521] = { 4, CST, SEN(ptrace), "ptrace" }, - [522] = { 2, CST|TS, SEN(rt_sigpending), "rt_sigpending" }, - [523] = { 4, CST|TS, SEN(rt_sigtimedwait_time64), "rt_sigtimedwait" }, --[524] = { 3, CST|TS, SEN(rt_sigqueueinfo), "rt_sigqueueinfo" }, -+[524] = { 3, CST|TS|TP, SEN(rt_sigqueueinfo), "rt_sigqueueinfo" }, - [525] = { 2, CST|TS, SEN(sigaltstack), "sigaltstack" }, - [526] = { 3, CST, SEN(timer_create), "timer_create" }, - [527] = { 2, CST|TD, SEN(mq_notify), "mq_notify" }, -diff --git a/linux/x86_64/syscallent.h b/linux/x86_64/syscallent.h -index 8423c7d..c69a5aa 100644 ---- a/linux/x86_64/syscallent.h -+++ b/linux/x86_64/syscallent.h -@@ -67,7 +67,7 @@ - [ 59] = { 3, TF|TP|TSD|SE|SI, SEN(execve), "execve" }, - [ 60] = { 1, TP|SE, SEN(exit), "exit" }, - [ 61] = { 4, TP, SEN(wait4), "wait4" }, --[ 62] = { 2, TS, SEN(kill), "kill" }, -+[ 62] = { 2, TS|TP, SEN(kill), "kill" }, - [ 63] = { 1, 0, SEN(uname), "uname" }, - [ 64] = { 3, TI, SEN(semget), "semget" }, - [ 65] = { 3, TI, SEN(semop), "semop" }, -@@ -134,7 +134,7 @@ - [126] = { 2, TC, SEN(capset), "capset" }, - [127] = { 2, TS, SEN(rt_sigpending), "rt_sigpending" }, - [128] = { 4, TS, SEN(rt_sigtimedwait_time64), "rt_sigtimedwait" }, --[129] = { 3, TS, SEN(rt_sigqueueinfo), "rt_sigqueueinfo" }, -+[129] = { 3, TS|TP, SEN(rt_sigqueueinfo), "rt_sigqueueinfo" }, - [130] = { 2, TS, SEN(rt_sigsuspend), "rt_sigsuspend" }, - [131] = { 2, TS, SEN(sigaltstack), "sigaltstack" }, - [132] = { 2, TF, SEN(utime), "utime" }, -@@ -163,7 +163,7 @@ - [155] = { 2, TF, SEN(pivotroot), "pivot_root" }, - [156] = { 1, 0, SEN(sysctl), "_sysctl" }, - [157] = { 5, TC, SEN(prctl), "prctl" }, --[158] = { 2, TP, SEN(arch_prctl), "arch_prctl" }, -+[158] = { 2, 0, SEN(arch_prctl), "arch_prctl" }, - [159] = { 1, TCL, SEN(adjtimex64), "adjtimex" }, - [160] = { 2, 0, SEN(setrlimit), "setrlimit" }, - [161] = { 1, TF, SEN(chroot), "chroot" }, -@@ -205,7 +205,7 @@ - [197] = { 2, TF, SEN(removexattr), "removexattr" }, - [198] = { 2, TF, SEN(removexattr), "lremovexattr" }, - [199] = { 2, TD, SEN(fremovexattr), "fremovexattr" }, --[200] = { 2, TS, SEN(kill), "tkill" }, -+[200] = { 2, TS|TP, SEN(kill), "tkill" }, - [201] = { 1, TCL, SEN(time), "time" }, - [202] = { 6, 0, SEN(futex_time64), "futex" }, - [203] = { 3, 0, SEN(sched_setaffinity), "sched_setaffinity" }, -@@ -239,7 +239,7 @@ - [231] = { 1, TP|SE, SEN(exit), "exit_group" }, - [232] = { 4, TD, SEN(epoll_wait), "epoll_wait" }, - [233] = { 4, TD, SEN(epoll_ctl), "epoll_ctl" }, --[234] = { 3, TS, SEN(tgkill), "tgkill" }, -+[234] = { 3, TS|TP, SEN(tgkill), "tgkill" }, - [235] = { 2, TF, SEN(utimes), "utimes" }, - [236] = { 5, 0, SEN(vserver), "vserver" }, - [237] = { 6, TM, SEN(mbind), "mbind" }, -@@ -277,7 +277,7 @@ - [269] = { 3, TD|TF, SEN(faccessat), "faccessat" }, - [270] = { 6, TD, SEN(pselect6_time64), "pselect6" }, - [271] = { 5, TD, SEN(ppoll_time64), "ppoll" }, --[272] = { 1, TP, SEN(unshare), "unshare" }, -+[272] = { 1, 0, SEN(unshare), "unshare" }, - [273] = { 2, 0, SEN(set_robust_list), "set_robust_list" }, - [274] = { 3, 0, SEN(get_robust_list), "get_robust_list" }, - [275] = { 6, TD, SEN(splice), "splice" }, -diff --git a/linux/xtensa/syscallent.h b/linux/xtensa/syscallent.h -index 385630a..61f1dd4 100644 ---- a/linux/xtensa/syscallent.h -+++ b/linux/xtensa/syscallent.h -@@ -123,9 +123,9 @@ - [120] = { 0, PU|NF, SEN(getpid), "getpid" }, - [121] = { 4, TP, SEN(wait4), "wait4" }, - [122] = { 5, TP, SEN(waitid), "waitid" }, --[123] = { 2, TS, SEN(kill), "kill" }, --[124] = { 2, TS, SEN(kill), "tkill" }, --[125] = { 3, TS, SEN(tgkill), "tgkill" }, -+[123] = { 2, TS|TP, SEN(kill), "kill" }, -+[124] = { 2, TS|TP, SEN(kill), "tkill" }, -+[125] = { 3, TS|TP, SEN(tgkill), "tgkill" }, - [126] = { 1, 0, SEN(set_tid_address), "set_tid_address" }, - [127] = { 0, PU|NF, SEN(gettid), "gettid" }, - [128] = { 0, 0, SEN(setsid), "setsid" }, -@@ -227,7 +227,7 @@ - [227] = { 4, TS, SEN(rt_sigprocmask), "rt_sigprocmask" }, - [228] = { 2, TS, SEN(rt_sigpending), "rt_sigpending" }, - [229] = { 4, TS, SEN(rt_sigtimedwait_time32), "rt_sigtimedwait" }, --[230] = { 3, TS, SEN(rt_sigqueueinfo), "rt_sigqueueinfo" }, -+[230] = { 3, TS|TP, SEN(rt_sigqueueinfo), "rt_sigqueueinfo" }, - [231] = { 2, TS, SEN(rt_sigsuspend), "rt_sigsuspend" }, - [232] = { 4, TD, SEN(mq_open), "mq_open" }, - [233] = { 1, 0, SEN(mq_unlink), "mq_unlink" }, -@@ -263,7 +263,7 @@ - [263] = { 6, TM, SEN(mbind), "mbind" }, - [264] = { 5, TM, SEN(get_mempolicy), "get_mempolicy" }, - [265] = { 3, TM, SEN(set_mempolicy), "set_mempolicy" }, --[266] = { 1, TP, SEN(unshare), "unshare" }, -+[266] = { 1, 0, SEN(unshare), "unshare" }, - [267] = { 6, TM, SEN(move_pages), "move_pages" }, - [268] = { 6, TD, SEN(splice), "splice" }, - [269] = { 4, TD, SEN(tee), "tee" }, -diff --git a/strace.1.in b/strace.1.in -index 7564fc2..fed8b5a 100644 ---- a/strace.1.in -+++ b/strace.1.in -@@ -518,8 +518,8 @@ is deprecated. - .B %process - .TQ - .B process --Trace all system calls which involve process management. This --is useful for watching the fork, wait, and exec steps of a process. -+Trace system calls associated with process lifecycle -+(creation, exec, termination). - The syntax without a preceding percent sign - .RB (\[dq] "-e trace" = process \[dq]) - is deprecated. --- -2.1.4 - diff --git a/0131-Introduce-SYS_FUNC-tkill.patch b/0131-Introduce-SYS_FUNC-tkill.patch deleted file mode 100755 index c62a050..0000000 --- a/0131-Introduce-SYS_FUNC-tkill.patch +++ /dev/null @@ -1,415 +0,0 @@ -From 98cb4de5002be3b81c45489200bcab0ae323123d Mon Sep 17 00:00:00 2001 -From: =?UTF-8?q?=C3=81kos=20Uzonyi?= -Date: Mon, 27 Jul 2020 20:54:07 +0200 -Subject: [PATCH 131/138] Introduce SYS_FUNC(tkill) - -This is going to be needed to implement pidns support -in tkill syscall decoder. - -syscallent*.h files are updated automatically by: - git grep -l 'SEN(kill).*"tkill"' | - xargs sed -i '/"tkill"/ s/SEN(kill)/SEN(tkill)/' - -* signal.c (SYS_FUNC(tkill)): New syscall decoder. -* linux/32/syscallent.h: Use SEN(tkill) for "tkill" syscall. -* linux/64/syscallent.h: Likewise. -* linux/alpha/syscallent.h: Likewise. -* linux/arm/syscallent.h: Likewise. -* linux/avr32/syscallent.h: Likewise. -* linux/bfin/syscallent.h: Likewise. -* linux/hppa/syscallent.h: Likewise. -* linux/i386/syscallent.h: Likewise. -* linux/ia64/syscallent.h: Likewise. -* linux/m68k/syscallent.h: Likewise. -* linux/microblaze/syscallent.h: Likewise. -* linux/mips/syscallent-n32.h: Likewise. -* linux/mips/syscallent-n64.h: Likewise. -* linux/mips/syscallent-o32.h: Likewise. -* linux/powerpc/syscallent.h: Likewise. -* linux/powerpc64/syscallent.h: Likewise. -* linux/s390/syscallent.h: Likewise. -* linux/s390x/syscallent.h: Likewise. -* linux/sh/syscallent.h: Likewise. -* linux/sh64/syscallent.h: Likewise. -* linux/sparc/syscallent.h: Likewise. -* linux/sparc64/syscallent.h: Likewise. -* linux/x32/syscallent.h: Likewise. -* linux/x86_64/syscallent.h: Likewise. -* linux/xtensa/syscallent.h: Likewise. ---- - linux/32/syscallent.h | 2 +- - linux/64/syscallent.h | 2 +- - linux/alpha/syscallent.h | 2 +- - linux/arm/syscallent.h | 2 +- - linux/avr32/syscallent.h | 2 +- - linux/bfin/syscallent.h | 2 +- - linux/hppa/syscallent.h | 2 +- - linux/i386/syscallent.h | 2 +- - linux/ia64/syscallent.h | 2 +- - linux/m68k/syscallent.h | 2 +- - linux/microblaze/syscallent.h | 2 +- - linux/mips/syscallent-n32.h | 2 +- - linux/mips/syscallent-n64.h | 2 +- - linux/mips/syscallent-o32.h | 2 +- - linux/powerpc/syscallent.h | 2 +- - linux/powerpc64/syscallent.h | 2 +- - linux/s390/syscallent.h | 2 +- - linux/s390x/syscallent.h | 2 +- - linux/sh/syscallent.h | 2 +- - linux/sh64/syscallent.h | 2 +- - linux/sparc/syscallent.h | 2 +- - linux/sparc64/syscallent.h | 2 +- - linux/x32/syscallent.h | 2 +- - linux/x86_64/syscallent.h | 2 +- - linux/xtensa/syscallent.h | 2 +- - signal.c | 9 +++++++++ - 26 files changed, 34 insertions(+), 25 deletions(-) - -diff --git a/linux/32/syscallent.h b/linux/32/syscallent.h -index c74ab18..79c36e0 100644 ---- a/linux/32/syscallent.h -+++ b/linux/32/syscallent.h -@@ -142,7 +142,7 @@ - /* [127] sched_rr_get_interval */ - [128] = { 0, 0, SEN(restart_syscall), "restart_syscall" }, - [129] = { 2, TS|TP, SEN(kill), "kill" }, --[130] = { 2, TS|TP, SEN(kill), "tkill" }, -+[130] = { 2, TS|TP, SEN(tkill), "tkill" }, - [131] = { 3, TS|TP, SEN(tgkill), "tgkill" }, - [132] = { 2, TS, SEN(sigaltstack), "sigaltstack" }, - [133] = { 2, TS, SEN(rt_sigsuspend), "rt_sigsuspend" }, -diff --git a/linux/64/syscallent.h b/linux/64/syscallent.h -index 3fb1305..ce5602e 100644 ---- a/linux/64/syscallent.h -+++ b/linux/64/syscallent.h -@@ -135,7 +135,7 @@ - [127] = { 2, 0, SEN(sched_rr_get_interval_time64),"sched_rr_get_interval"}, - [128] = { 0, 0, SEN(restart_syscall), "restart_syscall" }, - [129] = { 2, TS|TP, SEN(kill), "kill" }, --[130] = { 2, TS|TP, SEN(kill), "tkill" }, -+[130] = { 2, TS|TP, SEN(tkill), "tkill" }, - [131] = { 3, TS|TP, SEN(tgkill), "tgkill" }, - [132] = { 2, TS, SEN(sigaltstack), "sigaltstack" }, - [133] = { 2, TS, SEN(rt_sigsuspend), "rt_sigsuspend" }, -diff --git a/linux/alpha/syscallent.h b/linux/alpha/syscallent.h -index 93f0b0e..7859b9c 100644 ---- a/linux/alpha/syscallent.h -+++ b/linux/alpha/syscallent.h -@@ -325,7 +325,7 @@ - [378] = { 0, PU|NF, SEN(gettid), "gettid" }, - [379] = { 3, TD, SEN(readahead), "readahead" }, - [380] = { }, --[381] = { 2, TS|TP, SEN(kill), "tkill" }, -+[381] = { 2, TS|TP, SEN(tkill), "tkill" }, - [382] = { 5, TF, SEN(setxattr), "setxattr" }, - [383] = { 5, TF, SEN(setxattr), "lsetxattr" }, - [384] = { 5, TD, SEN(fsetxattr), "fsetxattr" }, -diff --git a/linux/arm/syscallent.h b/linux/arm/syscallent.h -index 73497b6..87b0687 100644 ---- a/linux/arm/syscallent.h -+++ b/linux/arm/syscallent.h -@@ -245,7 +245,7 @@ - [235] = { 2, TF, SEN(removexattr), "removexattr" }, - [236] = { 2, TF, SEN(removexattr), "lremovexattr" }, - [237] = { 2, TD, SEN(fremovexattr), "fremovexattr" }, --[238] = { 2, TS|TP, SEN(kill), "tkill" }, -+[238] = { 2, TS|TP, SEN(tkill), "tkill" }, - [239] = { 4, TD|TN, SEN(sendfile64), "sendfile64" }, - [240] = { 6, 0, SEN(futex_time32), "futex" }, - [241] = { 3, 0, SEN(sched_setaffinity), "sched_setaffinity" }, -diff --git a/linux/avr32/syscallent.h b/linux/avr32/syscallent.h -index b3cf2da..491ff8e 100644 ---- a/linux/avr32/syscallent.h -+++ b/linux/avr32/syscallent.h -@@ -196,7 +196,7 @@ - [187] = { 2, TF, SEN(removexattr), "removexattr" }, - [188] = { 2, TF, SEN(removexattr), "lremovexattr" }, - [189] = { 2, TD, SEN(fremovexattr), "fremovexattr" }, --[190] = { 2, TS|TP, SEN(kill), "tkill" }, -+[190] = { 2, TS|TP, SEN(tkill), "tkill" }, - [191] = { 4, TD|TN, SEN(sendfile64), "sendfile64" }, - [192] = { 6, 0, SEN(futex_time32), "futex" }, - [193] = { 3, 0, SEN(sched_setaffinity), "sched_setaffinity" }, -diff --git a/linux/bfin/syscallent.h b/linux/bfin/syscallent.h -index b93a844..53d5c23 100644 ---- a/linux/bfin/syscallent.h -+++ b/linux/bfin/syscallent.h -@@ -244,7 +244,7 @@ - [235] = { 2, TF, SEN(removexattr), "removexattr" }, - [236] = { 2, TF, SEN(removexattr), "lremovexattr" }, - [237] = { 2, TD, SEN(fremovexattr), "fremovexattr" }, --[238] = { 2, TS|TP, SEN(kill), "tkill" }, -+[238] = { 2, TS|TP, SEN(tkill), "tkill" }, - [239] = { 4, TD|TN, SEN(sendfile64), "sendfile64" }, - [240] = { 6, 0, SEN(futex_time32), "futex" }, - [241] = { 3, 0, SEN(sched_setaffinity), "sched_setaffinity" }, -diff --git a/linux/hppa/syscallent.h b/linux/hppa/syscallent.h -index 31341d4..20cae3c 100644 ---- a/linux/hppa/syscallent.h -+++ b/linux/hppa/syscallent.h -@@ -211,7 +211,7 @@ - [205] = { 5, 0, SEN(printargs), "acl_set" }, - [206] = { 0, PU|NF, SEN(gettid), "gettid" }, - [207] = { 4, TD, SEN(readahead), "readahead" }, --[208] = { 2, TS|TP, SEN(kill), "tkill" }, -+[208] = { 2, TS|TP, SEN(tkill), "tkill" }, - [209] = { 4, TD|TN, SEN(sendfile64), "sendfile64" }, - [210] = { 6, 0, SEN(futex_time32), "futex" }, - [211] = { 3, 0, SEN(sched_setaffinity), "sched_setaffinity" }, -diff --git a/linux/i386/syscallent.h b/linux/i386/syscallent.h -index efe0ff7..521e7ba 100644 ---- a/linux/i386/syscallent.h -+++ b/linux/i386/syscallent.h -@@ -244,7 +244,7 @@ - [235] = { 2, TF, SEN(removexattr), "removexattr" }, - [236] = { 2, TF, SEN(removexattr), "lremovexattr" }, - [237] = { 2, TD, SEN(fremovexattr), "fremovexattr" }, --[238] = { 2, TS|TP, SEN(kill), "tkill" }, -+[238] = { 2, TS|TP, SEN(tkill), "tkill" }, - [239] = { 4, TD|TN, SEN(sendfile64), "sendfile64" }, - [240] = { 6, 0, SEN(futex_time32), "futex" }, - [241] = { 3, 0, SEN(sched_setaffinity), "sched_setaffinity" }, -diff --git a/linux/ia64/syscallent.h b/linux/ia64/syscallent.h -index 8aeda41..c5088e1 100644 ---- a/linux/ia64/syscallent.h -+++ b/linux/ia64/syscallent.h -@@ -225,7 +225,7 @@ - [BASE_NR + 202] = { 2, TF, SEN(removexattr), "removexattr" }, - [BASE_NR + 203] = { 2, TF, SEN(removexattr), "lremovexattr" }, - [BASE_NR + 204] = { 2, TD, SEN(fremovexattr), "fremovexattr" }, --[BASE_NR + 205] = { 2, TS|TP, SEN(kill), "tkill" }, -+[BASE_NR + 205] = { 2, TS|TP, SEN(tkill), "tkill" }, - [BASE_NR + 206] = { 6, 0, SEN(futex_time64), "futex" }, - [BASE_NR + 207] = { 3, 0, SEN(sched_setaffinity), "sched_setaffinity" }, - [BASE_NR + 208] = { 3, 0, SEN(sched_getaffinity), "sched_getaffinity" }, -diff --git a/linux/m68k/syscallent.h b/linux/m68k/syscallent.h -index 1876bed..107780c 100644 ---- a/linux/m68k/syscallent.h -+++ b/linux/m68k/syscallent.h -@@ -228,7 +228,7 @@ - [218 ... 219] = { }, - [220] = { 3, TD, SEN(getdents64), "getdents64" }, - [221] = { 0, PU|NF, SEN(gettid), "gettid" }, --[222] = { 2, TS|TP, SEN(kill), "tkill" }, -+[222] = { 2, TS|TP, SEN(tkill), "tkill" }, - [223] = { 5, TF, SEN(setxattr), "setxattr" }, - [224] = { 5, TF, SEN(setxattr), "lsetxattr" }, - [225] = { 5, TD, SEN(fsetxattr), "fsetxattr" }, -diff --git a/linux/microblaze/syscallent.h b/linux/microblaze/syscallent.h -index 5d071bc..d830a3e 100644 ---- a/linux/microblaze/syscallent.h -+++ b/linux/microblaze/syscallent.h -@@ -244,7 +244,7 @@ - [235] = { 2, TF, SEN(removexattr), "removexattr" }, - [236] = { 2, TF, SEN(removexattr), "lremovexattr" }, - [237] = { 2, TD, SEN(fremovexattr), "fremovexattr" }, --[238] = { 2, TS|TP, SEN(kill), "tkill" }, -+[238] = { 2, TS|TP, SEN(tkill), "tkill" }, - [239] = { 4, TD|TN, SEN(sendfile64), "sendfile64" }, - [240] = { 6, 0, SEN(futex_time32), "futex" }, - [241] = { 3, 0, SEN(sched_setaffinity), "sched_setaffinity" }, -diff --git a/linux/mips/syscallent-n32.h b/linux/mips/syscallent-n32.h -index cfd199d..5ab0c53 100644 ---- a/linux/mips/syscallent-n32.h -+++ b/linux/mips/syscallent-n32.h -@@ -200,7 +200,7 @@ - [BASE_NR + 189] = { 2, TF, SEN(removexattr), "removexattr" }, - [BASE_NR + 190] = { 2, TF, SEN(removexattr), "lremovexattr" }, - [BASE_NR + 191] = { 2, TD, SEN(fremovexattr), "fremovexattr" }, --[BASE_NR + 192] = { 2, TS|TP, SEN(kill), "tkill" }, -+[BASE_NR + 192] = { 2, TS|TP, SEN(tkill), "tkill" }, - [BASE_NR + 193] = { 1, TCL, SEN(time), "time" }, - [BASE_NR + 194] = { 6, 0, SEN(futex_time32), "futex" }, - [BASE_NR + 195] = { 3, 0, SEN(sched_setaffinity), "sched_setaffinity" }, -diff --git a/linux/mips/syscallent-n64.h b/linux/mips/syscallent-n64.h -index 7ef6700..1964872 100644 ---- a/linux/mips/syscallent-n64.h -+++ b/linux/mips/syscallent-n64.h -@@ -200,7 +200,7 @@ - [BASE_NR + 189] = { 2, TF, SEN(removexattr), "removexattr" }, - [BASE_NR + 190] = { 2, TF, SEN(removexattr), "lremovexattr" }, - [BASE_NR + 191] = { 2, TD, SEN(fremovexattr), "fremovexattr" }, --[BASE_NR + 192] = { 2, TS|TP, SEN(kill), "tkill" }, -+[BASE_NR + 192] = { 2, TS|TP, SEN(tkill), "tkill" }, - [BASE_NR + 193] = { 1, TCL, SEN(time), "time" }, - [BASE_NR + 194] = { 6, 0, SEN(futex_time64), "futex" }, - [BASE_NR + 195] = { 3, 0, SEN(sched_setaffinity), "sched_setaffinity" }, -diff --git a/linux/mips/syscallent-o32.h b/linux/mips/syscallent-o32.h -index d2b26f7..eb8908e 100644 ---- a/linux/mips/syscallent-o32.h -+++ b/linux/mips/syscallent-o32.h -@@ -245,7 +245,7 @@ - [BASE_NR + 233] = { 2, TF, SEN(removexattr), "removexattr" }, - [BASE_NR + 234] = { 2, TF, SEN(removexattr), "lremovexattr" }, - [BASE_NR + 235] = { 2, TD, SEN(fremovexattr), "fremovexattr" }, --[BASE_NR + 236] = { 2, TS|TP, SEN(kill), "tkill" }, -+[BASE_NR + 236] = { 2, TS|TP, SEN(tkill), "tkill" }, - [BASE_NR + 237] = { 4, TD|TN, SEN(sendfile64), "sendfile64" }, - [BASE_NR + 238] = { 6, 0, SEN(futex_time32), "futex" }, - [BASE_NR + 239] = { 3, 0, SEN(sched_setaffinity), "sched_setaffinity" }, -diff --git a/linux/powerpc/syscallent.h b/linux/powerpc/syscallent.h -index b0962b4..7a77979 100644 ---- a/linux/powerpc/syscallent.h -+++ b/linux/powerpc/syscallent.h -@@ -215,7 +215,7 @@ - [205] = { 3, TM, SEN(madvise), "madvise" }, - [206] = { 3, TM, SEN(mincore), "mincore" }, - [207] = { 0, PU|NF, SEN(gettid), "gettid" }, --[208] = { 2, TS|TP, SEN(kill), "tkill" }, -+[208] = { 2, TS|TP, SEN(tkill), "tkill" }, - [209] = { 5, TF, SEN(setxattr), "setxattr" }, - [210] = { 5, TF, SEN(setxattr), "lsetxattr" }, - [211] = { 5, TD, SEN(fsetxattr), "fsetxattr" }, -diff --git a/linux/powerpc64/syscallent.h b/linux/powerpc64/syscallent.h -index 1a0dfb5..f20fd78 100644 ---- a/linux/powerpc64/syscallent.h -+++ b/linux/powerpc64/syscallent.h -@@ -210,7 +210,7 @@ - [205] = { 3, TM, SEN(madvise), "madvise" }, - [206] = { 3, TM, SEN(mincore), "mincore" }, - [207] = { 0, PU|NF, SEN(gettid), "gettid" }, --[208] = { 2, TS|TP, SEN(kill), "tkill" }, -+[208] = { 2, TS|TP, SEN(tkill), "tkill" }, - [209] = { 5, TF, SEN(setxattr), "setxattr" }, - [210] = { 5, TF, SEN(setxattr), "lsetxattr" }, - [211] = { 5, TD, SEN(fsetxattr), "fsetxattr" }, -diff --git a/linux/s390/syscallent.h b/linux/s390/syscallent.h -index 105089f..6844c7e 100644 ---- a/linux/s390/syscallent.h -+++ b/linux/s390/syscallent.h -@@ -246,7 +246,7 @@ - [234] = { 2, TF, SEN(removexattr), "lremovexattr" }, - [235] = { 2, TD, SEN(fremovexattr), "fremovexattr" }, - [236] = { 0, PU|NF, SEN(gettid), "gettid" }, --[237] = { 2, TS|TP, SEN(kill), "tkill" }, -+[237] = { 2, TS|TP, SEN(tkill), "tkill" }, - [238] = { 6, 0, SEN(futex_time32), "futex" }, - [239] = { 3, 0, SEN(sched_setaffinity), "sched_setaffinity" }, - [240] = { 3, 0, SEN(sched_getaffinity), "sched_getaffinity" }, -diff --git a/linux/s390x/syscallent.h b/linux/s390x/syscallent.h -index e9cf57a..c805204 100644 ---- a/linux/s390x/syscallent.h -+++ b/linux/s390x/syscallent.h -@@ -230,7 +230,7 @@ - [234] = { 2, TF, SEN(removexattr), "lremovexattr" }, - [235] = { 2, TD, SEN(fremovexattr), "fremovexattr" }, - [236] = { 0, PU|NF, SEN(gettid), "gettid" }, --[237] = { 2, TS|TP, SEN(kill), "tkill" }, -+[237] = { 2, TS|TP, SEN(tkill), "tkill" }, - [238] = { 6, 0, SEN(futex_time64), "futex" }, - [239] = { 3, 0, SEN(sched_setaffinity), "sched_setaffinity" }, - [240] = { 3, 0, SEN(sched_getaffinity), "sched_getaffinity" }, -diff --git a/linux/sh/syscallent.h b/linux/sh/syscallent.h -index 70dc7da..6a89f75 100644 ---- a/linux/sh/syscallent.h -+++ b/linux/sh/syscallent.h -@@ -245,7 +245,7 @@ - [235] = { 2, TF, SEN(removexattr), "removexattr" }, - [236] = { 2, TF, SEN(removexattr), "lremovexattr" }, - [237] = { 2, TD, SEN(fremovexattr), "fremovexattr" }, --[238] = { 2, TS|TP, SEN(kill), "tkill" }, -+[238] = { 2, TS|TP, SEN(tkill), "tkill" }, - [239] = { 4, TD|TN, SEN(sendfile64), "sendfile64" }, - [240] = { 6, 0, SEN(futex_time32), "futex" }, - [241] = { 3, 0, SEN(sched_setaffinity), "sched_setaffinity" }, -diff --git a/linux/sh64/syscallent.h b/linux/sh64/syscallent.h -index eff5dc0..4ec35d3 100644 ---- a/linux/sh64/syscallent.h -+++ b/linux/sh64/syscallent.h -@@ -271,7 +271,7 @@ - [263] = { 2, TF, SEN(removexattr), "removexattr" }, - [264] = { 2, TF, SEN(removexattr), "lremovexattr" }, - [265] = { 2, TD, SEN(fremovexattr), "fremovexattr" }, --[266] = { 2, TS|TP, SEN(kill), "tkill" }, -+[266] = { 2, TS|TP, SEN(tkill), "tkill" }, - [267] = { 4, TD|TN, SEN(sendfile64), "sendfile64" }, - [268] = { 6, 0, SEN(futex_time64), "futex" }, - [269] = { 3, 0, SEN(sched_setaffinity), "sched_setaffinity" }, -diff --git a/linux/sparc/syscallent.h b/linux/sparc/syscallent.h -index 8c8bd18..a274791 100644 ---- a/linux/sparc/syscallent.h -+++ b/linux/sparc/syscallent.h -@@ -192,7 +192,7 @@ - [184] = { 5, 0, SEN(query_module), "query_module" }, - [185] = { 2, 0, SEN(setpgid), "setpgid" }, - [186] = { 2, TD, SEN(fremovexattr), "fremovexattr" }, --[187] = { 2, TS|TP, SEN(kill), "tkill" }, -+[187] = { 2, TS|TP, SEN(tkill), "tkill" }, - [188] = { 1, TP|SE, SEN(exit), "exit_group" }, - [189] = { 1, 0, SEN(uname), "uname" }, - [190] = { 3, 0, SEN(init_module), "init_module" }, -diff --git a/linux/sparc64/syscallent.h b/linux/sparc64/syscallent.h -index 0e0e0c4..61c32f9 100644 ---- a/linux/sparc64/syscallent.h -+++ b/linux/sparc64/syscallent.h -@@ -190,7 +190,7 @@ - [184] = { 5, 0, SEN(query_module), "query_module" }, - [185] = { 2, 0, SEN(setpgid), "setpgid" }, - [186] = { 2, TD, SEN(fremovexattr), "fremovexattr" }, --[187] = { 2, TS|TP, SEN(kill), "tkill" }, -+[187] = { 2, TS|TP, SEN(tkill), "tkill" }, - [188] = { 1, TP|SE, SEN(exit), "exit_group" }, - [189] = { 1, 0, SEN(uname), "uname" }, - [190] = { 3, 0, SEN(init_module), "init_module" }, -diff --git a/linux/x32/syscallent.h b/linux/x32/syscallent.h -index db8ecfd..d64060d 100644 ---- a/linux/x32/syscallent.h -+++ b/linux/x32/syscallent.h -@@ -205,7 +205,7 @@ - [197] = { 2, TF, SEN(removexattr), "removexattr" }, - [198] = { 2, TF, SEN(removexattr), "lremovexattr" }, - [199] = { 2, TD, SEN(fremovexattr), "fremovexattr" }, --[200] = { 2, TS|TP, SEN(kill), "tkill" }, -+[200] = { 2, TS|TP, SEN(tkill), "tkill" }, - [201] = { 1, TCL, SEN(time), "time" }, - [202] = { 6, 0, SEN(futex_time64), "futex" }, - [203] = { 3, 0, SEN(sched_setaffinity), "sched_setaffinity" }, -diff --git a/linux/x86_64/syscallent.h b/linux/x86_64/syscallent.h -index c69a5aa..027093a 100644 ---- a/linux/x86_64/syscallent.h -+++ b/linux/x86_64/syscallent.h -@@ -205,7 +205,7 @@ - [197] = { 2, TF, SEN(removexattr), "removexattr" }, - [198] = { 2, TF, SEN(removexattr), "lremovexattr" }, - [199] = { 2, TD, SEN(fremovexattr), "fremovexattr" }, --[200] = { 2, TS|TP, SEN(kill), "tkill" }, -+[200] = { 2, TS|TP, SEN(tkill), "tkill" }, - [201] = { 1, TCL, SEN(time), "time" }, - [202] = { 6, 0, SEN(futex_time64), "futex" }, - [203] = { 3, 0, SEN(sched_setaffinity), "sched_setaffinity" }, -diff --git a/linux/xtensa/syscallent.h b/linux/xtensa/syscallent.h -index 61f1dd4..6de03d2 100644 ---- a/linux/xtensa/syscallent.h -+++ b/linux/xtensa/syscallent.h -@@ -124,7 +124,7 @@ - [121] = { 4, TP, SEN(wait4), "wait4" }, - [122] = { 5, TP, SEN(waitid), "waitid" }, - [123] = { 2, TS|TP, SEN(kill), "kill" }, --[124] = { 2, TS|TP, SEN(kill), "tkill" }, -+[124] = { 2, TS|TP, SEN(tkill), "tkill" }, - [125] = { 3, TS|TP, SEN(tgkill), "tgkill" }, - [126] = { 1, 0, SEN(set_tid_address), "set_tid_address" }, - [127] = { 0, PU|NF, SEN(gettid), "gettid" }, -diff --git a/signal.c b/signal.c -index 3cb54bb..5f1acac 100644 ---- a/signal.c -+++ b/signal.c -@@ -446,6 +446,15 @@ SYS_FUNC(kill) - return RVAL_DECODED; - } - -+SYS_FUNC(tkill) -+{ -+ tprintf("%d", (int) tcp->u_arg[0]); -+ tprints(", "); -+ printsignal(tcp->u_arg[1]); -+ -+ return RVAL_DECODED; -+} -+ - SYS_FUNC(tgkill) - { - /* tgid, tid */ --- -2.1.4 - diff --git a/0132-tests-check-decoding-of-tkill-syscall.patch b/0132-tests-check-decoding-of-tkill-syscall.patch deleted file mode 100755 index 0d9bb80..0000000 --- a/0132-tests-check-decoding-of-tkill-syscall.patch +++ /dev/null @@ -1,683 +0,0 @@ -From 24119509205a17c71de10e913cfc38dc52aa6563 Mon Sep 17 00:00:00 2001 -From: "Dmitry V. Levin" -Date: Sat, 1 Aug 2020 08:00:00 +0000 -Subject: [PATCH 132/138] tests: check decoding of tkill syscall - -* tests/tkill.c: New file. -* tests/gen_tests.in (tkill): New entry. -* tests/pure_executables.list: Add tkill. -* tests/.gitignore: Likewise. ---- - tests/.gitignore | 1 + - tests/gen_tests.in | 1 + - tests/pure_executables.list | 1 + - tests/tkill.c | 60 +++++++++++++++++++++++++++++++++++++++++++++ - 4 files changed, 63 insertions(+) - create mode 100644 tests/tkill.c - -Index: strace-5.7/tests/gen_tests.in -=================================================================== ---- strace-5.7.orig/tests/gen_tests.in 2020-09-09 15:47:07.671767616 +0200 -+++ strace-5.7/tests/gen_tests.in 2020-09-09 19:30:36.780885588 +0200 -@@ -668,6 +668,7 @@ - timerfd_xettime -e trace=timerfd_create,timerfd_settime,timerfd_gettime - times -esignal=none - times-fail -a12 -e trace=times -+tkill -a12 --signal='!cont' - trace_clock test_trace_expr 'clock_nanosleep|times' -e%clock - trace_creds test_trace_expr '([gs]et[^p]*([gu]id|groups)|caps|prctl|[fl]?chown|print(path-umovestr|strn-umoven)-undumpable|ptrace|quotactl|rt_sigtimedwait|rt_(tg)?sigqueueinfo).*' -e%creds - trace_fstat test_trace_expr '' -e%fstat -v -P stat.sample -P /dev/full -Index: strace-5.7/tests/pure_executables.list -=================================================================== ---- strace-5.7.orig/tests/pure_executables.list 2020-09-09 15:47:07.671767616 +0200 -+++ strace-5.7/tests/pure_executables.list 2020-09-09 19:30:36.780885588 +0200 -@@ -589,6 +589,7 @@ - timerfd_xettime - times - times-fail -+tkill - truncate - truncate64 - ugetrlimit -Index: strace-5.7/tests/tkill.c -=================================================================== ---- /dev/null 1970-01-01 00:00:00.000000000 +0000 -+++ strace-5.7/tests/tkill.c 2020-09-09 19:21:10.469548041 +0200 -@@ -0,0 +1,60 @@ -+/* -+ * Check decoding of tkill syscall. -+ * -+ * Copyright (c) 2020 Dmitry V. Levin -+ * All rights reserved. -+ * -+ * SPDX-License-Identifier: GPL-2.0-or-later -+ */ -+ -+#include "tests.h" -+#include "scno.h" -+ -+#ifdef __NR_tkill -+ -+# include -+# include -+# include -+ -+static const char *errstr; -+ -+static long -+k_tkill(const unsigned int tid, const unsigned int sig) -+{ -+ const kernel_ulong_t fill = (kernel_ulong_t) 0xdefaced00000000ULL; -+ const kernel_ulong_t bad = (kernel_ulong_t) 0xbadc0dedbadc0dedULL; -+ const kernel_ulong_t arg1 = fill | tid; -+ const kernel_ulong_t arg2 = fill | sig; -+ const long rc = syscall(__NR_tkill, arg1, arg2, bad, bad, bad, bad); -+ errstr = sprintrc(rc); -+ return rc; -+} -+ -+int -+main(void) -+{ -+ const int pid = getpid(); -+ const int bad_pid = -1; -+ const int bad_sig = 0xface; -+ -+ k_tkill(pid, 0); -+ printf("tkill(%d, 0) = %s\n", pid, errstr); -+ -+ k_tkill(pid, SIGCONT); -+ printf("tkill(%d, SIGCONT) = %s\n", pid, errstr); -+ -+ k_tkill(bad_pid, bad_sig); -+ printf("tkill(%d, %d) = %s\n", bad_pid, bad_sig, errstr); -+ -+ k_tkill(bad_pid, -bad_sig); -+ printf("tkill(%d, %d) = %s\n", bad_pid, -bad_sig, errstr); -+ -+ puts("+++ exited with 0 +++"); -+ return 0; -+} -+ -+#else -+ -+SKIP_MAIN_UNDEFINED("__NR_tkill") -+ -+#endif -Index: strace-5.7/tests-m32/gen_tests.in -=================================================================== ---- strace-5.7.orig/tests-m32/gen_tests.in 2020-09-09 15:47:07.671767616 +0200 -+++ strace-5.7/tests-m32/gen_tests.in 2020-09-09 19:30:36.780885588 +0200 -@@ -668,6 +668,7 @@ - timerfd_xettime -e trace=timerfd_create,timerfd_settime,timerfd_gettime - times -esignal=none - times-fail -a12 -e trace=times -+tkill -a12 --signal='!cont' - trace_clock test_trace_expr 'clock_nanosleep|times' -e%clock - trace_creds test_trace_expr '([gs]et[^p]*([gu]id|groups)|caps|prctl|[fl]?chown|print(path-umovestr|strn-umoven)-undumpable|ptrace|quotactl|rt_sigtimedwait|rt_(tg)?sigqueueinfo).*' -e%creds - trace_fstat test_trace_expr '' -e%fstat -v -P stat.sample -P /dev/full -Index: strace-5.7/tests-m32/pure_executables.list -=================================================================== ---- strace-5.7.orig/tests-m32/pure_executables.list 2020-09-09 15:47:07.671767616 +0200 -+++ strace-5.7/tests-m32/pure_executables.list 2020-09-09 19:30:36.780885588 +0200 -@@ -589,6 +589,7 @@ - timerfd_xettime - times - times-fail -+tkill - truncate - truncate64 - ugetrlimit -Index: strace-5.7/tests-m32/tkill.c -=================================================================== ---- /dev/null 1970-01-01 00:00:00.000000000 +0000 -+++ strace-5.7/tests-m32/tkill.c 2020-09-09 19:21:10.469548041 +0200 -@@ -0,0 +1,60 @@ -+/* -+ * Check decoding of tkill syscall. -+ * -+ * Copyright (c) 2020 Dmitry V. Levin -+ * All rights reserved. -+ * -+ * SPDX-License-Identifier: GPL-2.0-or-later -+ */ -+ -+#include "tests.h" -+#include "scno.h" -+ -+#ifdef __NR_tkill -+ -+# include -+# include -+# include -+ -+static const char *errstr; -+ -+static long -+k_tkill(const unsigned int tid, const unsigned int sig) -+{ -+ const kernel_ulong_t fill = (kernel_ulong_t) 0xdefaced00000000ULL; -+ const kernel_ulong_t bad = (kernel_ulong_t) 0xbadc0dedbadc0dedULL; -+ const kernel_ulong_t arg1 = fill | tid; -+ const kernel_ulong_t arg2 = fill | sig; -+ const long rc = syscall(__NR_tkill, arg1, arg2, bad, bad, bad, bad); -+ errstr = sprintrc(rc); -+ return rc; -+} -+ -+int -+main(void) -+{ -+ const int pid = getpid(); -+ const int bad_pid = -1; -+ const int bad_sig = 0xface; -+ -+ k_tkill(pid, 0); -+ printf("tkill(%d, 0) = %s\n", pid, errstr); -+ -+ k_tkill(pid, SIGCONT); -+ printf("tkill(%d, SIGCONT) = %s\n", pid, errstr); -+ -+ k_tkill(bad_pid, bad_sig); -+ printf("tkill(%d, %d) = %s\n", bad_pid, bad_sig, errstr); -+ -+ k_tkill(bad_pid, -bad_sig); -+ printf("tkill(%d, %d) = %s\n", bad_pid, -bad_sig, errstr); -+ -+ puts("+++ exited with 0 +++"); -+ return 0; -+} -+ -+#else -+ -+SKIP_MAIN_UNDEFINED("__NR_tkill") -+ -+#endif -Index: strace-5.7/tests-mx32/gen_tests.in -=================================================================== ---- strace-5.7.orig/tests-mx32/gen_tests.in 2020-09-09 15:47:07.671767616 +0200 -+++ strace-5.7/tests-mx32/gen_tests.in 2020-09-09 19:30:36.780885588 +0200 -@@ -668,6 +668,7 @@ - timerfd_xettime -e trace=timerfd_create,timerfd_settime,timerfd_gettime - times -esignal=none - times-fail -a12 -e trace=times -+tkill -a12 --signal='!cont' - trace_clock test_trace_expr 'clock_nanosleep|times' -e%clock - trace_creds test_trace_expr '([gs]et[^p]*([gu]id|groups)|caps|prctl|[fl]?chown|print(path-umovestr|strn-umoven)-undumpable|ptrace|quotactl|rt_sigtimedwait|rt_(tg)?sigqueueinfo).*' -e%creds - trace_fstat test_trace_expr '' -e%fstat -v -P stat.sample -P /dev/full -Index: strace-5.7/tests-mx32/pure_executables.list -=================================================================== ---- strace-5.7.orig/tests-mx32/pure_executables.list 2020-09-09 15:47:07.671767616 +0200 -+++ strace-5.7/tests-mx32/pure_executables.list 2020-09-09 19:30:36.780885588 +0200 -@@ -589,6 +589,7 @@ - timerfd_xettime - times - times-fail -+tkill - truncate - truncate64 - ugetrlimit -Index: strace-5.7/tests-mx32/tkill.c -=================================================================== ---- /dev/null 1970-01-01 00:00:00.000000000 +0000 -+++ strace-5.7/tests-mx32/tkill.c 2020-09-09 19:21:10.469548041 +0200 -@@ -0,0 +1,60 @@ -+/* -+ * Check decoding of tkill syscall. -+ * -+ * Copyright (c) 2020 Dmitry V. Levin -+ * All rights reserved. -+ * -+ * SPDX-License-Identifier: GPL-2.0-or-later -+ */ -+ -+#include "tests.h" -+#include "scno.h" -+ -+#ifdef __NR_tkill -+ -+# include -+# include -+# include -+ -+static const char *errstr; -+ -+static long -+k_tkill(const unsigned int tid, const unsigned int sig) -+{ -+ const kernel_ulong_t fill = (kernel_ulong_t) 0xdefaced00000000ULL; -+ const kernel_ulong_t bad = (kernel_ulong_t) 0xbadc0dedbadc0dedULL; -+ const kernel_ulong_t arg1 = fill | tid; -+ const kernel_ulong_t arg2 = fill | sig; -+ const long rc = syscall(__NR_tkill, arg1, arg2, bad, bad, bad, bad); -+ errstr = sprintrc(rc); -+ return rc; -+} -+ -+int -+main(void) -+{ -+ const int pid = getpid(); -+ const int bad_pid = -1; -+ const int bad_sig = 0xface; -+ -+ k_tkill(pid, 0); -+ printf("tkill(%d, 0) = %s\n", pid, errstr); -+ -+ k_tkill(pid, SIGCONT); -+ printf("tkill(%d, SIGCONT) = %s\n", pid, errstr); -+ -+ k_tkill(bad_pid, bad_sig); -+ printf("tkill(%d, %d) = %s\n", bad_pid, bad_sig, errstr); -+ -+ k_tkill(bad_pid, -bad_sig); -+ printf("tkill(%d, %d) = %s\n", bad_pid, -bad_sig, errstr); -+ -+ puts("+++ exited with 0 +++"); -+ return 0; -+} -+ -+#else -+ -+SKIP_MAIN_UNDEFINED("__NR_tkill") -+ -+#endif -Index: strace-5.7/tests-m32/Makefile.in -=================================================================== ---- strace-5.7.orig/tests-m32/Makefile.in 2020-09-09 15:47:07.671767616 +0200 -+++ strace-5.7/tests-m32/Makefile.in 2020-09-09 19:32:14.800944013 +0200 -@@ -496,14 +496,15 @@ - sysinfo$(EXEEXT) syslog$(EXEEXT) tee$(EXEEXT) time$(EXEEXT) \ - timer_create$(EXEEXT) timer_xettime$(EXEEXT) \ - timerfd_xettime$(EXEEXT) times$(EXEEXT) times-fail$(EXEEXT) \ -- truncate$(EXEEXT) truncate64$(EXEEXT) ugetrlimit$(EXEEXT) \ -- uio$(EXEEXT) umask$(EXEEXT) umount$(EXEEXT) umount2$(EXEEXT) \ -- umoven-illptr$(EXEEXT) umovestr$(EXEEXT) \ -- umovestr-illptr$(EXEEXT) umovestr2$(EXEEXT) umovestr3$(EXEEXT) \ -- umovestr_cached$(EXEEXT) umovestr_cached_adjacent$(EXEEXT) \ -- uname$(EXEEXT) unlink$(EXEEXT) unlinkat$(EXEEXT) \ -- unshare$(EXEEXT) userfaultfd$(EXEEXT) ustat$(EXEEXT) \ -- utime$(EXEEXT) utimensat$(EXEEXT) utimensat-Xabbrev$(EXEEXT) \ -+ tkill$(EXEEXT) truncate$(EXEEXT) truncate64$(EXEEXT) \ -+ ugetrlimit$(EXEEXT) uio$(EXEEXT) umask$(EXEEXT) \ -+ umount$(EXEEXT) umount2$(EXEEXT) umoven-illptr$(EXEEXT) \ -+ umovestr$(EXEEXT) umovestr-illptr$(EXEEXT) umovestr2$(EXEEXT) \ -+ umovestr3$(EXEEXT) umovestr_cached$(EXEEXT) \ -+ umovestr_cached_adjacent$(EXEEXT) uname$(EXEEXT) \ -+ unlink$(EXEEXT) unlinkat$(EXEEXT) unshare$(EXEEXT) \ -+ userfaultfd$(EXEEXT) ustat$(EXEEXT) utime$(EXEEXT) \ -+ utimensat$(EXEEXT) utimensat-Xabbrev$(EXEEXT) \ - utimensat-Xraw$(EXEEXT) utimensat-Xverbose$(EXEEXT) \ - utimes$(EXEEXT) vhangup$(EXEEXT) vmsplice$(EXEEXT) \ - wait4$(EXEEXT) waitid$(EXEEXT) waitpid$(EXEEXT) xattr$(EXEEXT) \ -@@ -3484,6 +3485,10 @@ - times_fail_OBJECTS = times-fail.$(OBJEXT) - times_fail_LDADD = $(LDADD) - times_fail_DEPENDENCIES = libtests.a -+tkill_SOURCES = tkill.c -+tkill_OBJECTS = tkill.$(OBJEXT) -+tkill_LDADD = $(LDADD) -+tkill_DEPENDENCIES = libtests.a - tracer_ppid_pgid_sid_SOURCES = tracer_ppid_pgid_sid.c - tracer_ppid_pgid_sid_OBJECTS = tracer_ppid_pgid_sid.$(OBJEXT) - tracer_ppid_pgid_sid_LDADD = $(LDADD) -@@ -4184,7 +4189,7 @@ - ./$(DEPDIR)/threads-execve.Po ./$(DEPDIR)/time.Po \ - ./$(DEPDIR)/timer_create.Po ./$(DEPDIR)/timer_xettime.Po \ - ./$(DEPDIR)/timerfd_xettime.Po ./$(DEPDIR)/times-fail.Po \ -- ./$(DEPDIR)/times.Po ./$(DEPDIR)/tracer_ppid_pgid_sid.Po \ -+ ./$(DEPDIR)/times.Po ./$(DEPDIR)/tkill.Po ./$(DEPDIR)/tracer_ppid_pgid_sid.Po \ - ./$(DEPDIR)/truncate.Po ./$(DEPDIR)/truncate64-truncate64.Po \ - ./$(DEPDIR)/ugetrlimit.Po ./$(DEPDIR)/uio-uio.Po \ - ./$(DEPDIR)/umask.Po ./$(DEPDIR)/umount.Po \ -@@ -4441,7 +4446,7 @@ - syslog-success.c tee.c threads-execve.c \ - threads-execve--quiet-thread-execve.c threads-execve-q.c \ - threads-execve-qq.c threads-execve-qqq.c time.c timer_create.c \ -- timer_xettime.c timerfd_xettime.c times.c times-fail.c \ -+ timer_xettime.c timerfd_xettime.c times.c times-fail.c tkill.c \ - tracer_ppid_pgid_sid.c truncate.c truncate64.c ugetrlimit.c \ - uio.c umask.c umount.c umount2.c umoven-illptr.c umovestr.c \ - umovestr-illptr.c umovestr2.c umovestr3.c umovestr_cached.c \ -@@ -4667,7 +4672,7 @@ - syslog-success.c tee.c threads-execve.c \ - threads-execve--quiet-thread-execve.c threads-execve-q.c \ - threads-execve-qq.c threads-execve-qqq.c time.c timer_create.c \ -- timer_xettime.c timerfd_xettime.c times.c times-fail.c \ -+ timer_xettime.c timerfd_xettime.c times.c times-fail.c tkill.c \ - tracer_ppid_pgid_sid.c truncate.c truncate64.c ugetrlimit.c \ - uio.c umask.c umount.c umount2.c umoven-illptr.c umovestr.c \ - umovestr-illptr.c umovestr2.c umovestr3.c umovestr_cached.c \ -@@ -5725,6 +5730,7 @@ - timerfd_xettime \ - times \ - times-fail \ -+ tkill \ - truncate \ - truncate64 \ - ugetrlimit \ -@@ -6133,9 +6139,10 @@ - threads-execve-qqq.gen.test time.gen.test \ - timer_create.gen.test timer_xettime.gen.test \ - timerfd_xettime.gen.test times.gen.test times-fail.gen.test \ -- trace_clock.gen.test trace_creds.gen.test trace_fstat.gen.test \ -- trace_fstatfs.gen.test trace_lstat.gen.test \ -- trace_personality_32.gen.test trace_personality_64.gen.test \ -+ tkill.gen.test trace_clock.gen.test trace_creds.gen.test \ -+ trace_fstat.gen.test trace_fstatfs.gen.test \ -+ trace_lstat.gen.test trace_personality_32.gen.test \ -+ trace_personality_64.gen.test \ - trace_personality_regex_32.gen.test \ - trace_personality_regex_64.gen.test \ - trace_personality_regex_x32.gen.test \ -@@ -9392,6 +9399,10 @@ - @rm -f times-fail$(EXEEXT) - $(AM_V_CCLD)$(LINK) $(times_fail_OBJECTS) $(times_fail_LDADD) $(LIBS) - -+tkill$(EXEEXT): $(tkill_OBJECTS) $(tkill_DEPENDENCIES) $(EXTRA_tkill_DEPENDENCIES) -+ @rm -f tkill$(EXEEXT) -+ $(AM_V_CCLD)$(LINK) $(tkill_OBJECTS) $(tkill_LDADD) $(LIBS) -+ - tracer_ppid_pgid_sid$(EXEEXT): $(tracer_ppid_pgid_sid_OBJECTS) $(tracer_ppid_pgid_sid_DEPENDENCIES) $(EXTRA_tracer_ppid_pgid_sid_DEPENDENCIES) - @rm -f tracer_ppid_pgid_sid$(EXEEXT) - $(AM_V_CCLD)$(LINK) $(tracer_ppid_pgid_sid_OBJECTS) $(tracer_ppid_pgid_sid_LDADD) $(LIBS) -@@ -10349,6 +10360,7 @@ - @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/timerfd_xettime.Po@am__quote@ # am--include-marker - @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/times-fail.Po@am__quote@ # am--include-marker - @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/times.Po@am__quote@ # am--include-marker -+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/tkill.Po@am__quote@ # am--include-marker - @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/tracer_ppid_pgid_sid.Po@am__quote@ # am--include-marker - @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/truncate.Po@am__quote@ # am--include-marker - @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/truncate64-truncate64.Po@am__quote@ # am--include-marker -@@ -12169,6 +12181,7 @@ - -rm -f ./$(DEPDIR)/timerfd_xettime.Po - -rm -f ./$(DEPDIR)/times-fail.Po - -rm -f ./$(DEPDIR)/times.Po -+ -rm -f ./$(DEPDIR)/tkill.Po - -rm -f ./$(DEPDIR)/tracer_ppid_pgid_sid.Po - -rm -f ./$(DEPDIR)/truncate.Po - -rm -f ./$(DEPDIR)/truncate64-truncate64.Po -@@ -13024,6 +13037,7 @@ - -rm -f ./$(DEPDIR)/timerfd_xettime.Po - -rm -f ./$(DEPDIR)/times-fail.Po - -rm -f ./$(DEPDIR)/times.Po -+ -rm -f ./$(DEPDIR)/tkill.Po - -rm -f ./$(DEPDIR)/tracer_ppid_pgid_sid.Po - -rm -f ./$(DEPDIR)/truncate.Po - -rm -f ./$(DEPDIR)/truncate64-truncate64.Po -@@ -15101,6 +15115,9 @@ - $(srcdir)/times-fail.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in - $(AM_V_GEN) $^ $@ - -+$(srcdir)/tkill.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in -+ $(AM_V_GEN) $^ $@ -+ - $(srcdir)/trace_clock.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 2020-09-09 15:47:07.671767616 +0200 -+++ strace-5.7/tests-mx32/Makefile.in 2020-09-09 19:32:39.854958946 +0200 -@@ -496,14 +496,15 @@ - sysinfo$(EXEEXT) syslog$(EXEEXT) tee$(EXEEXT) time$(EXEEXT) \ - timer_create$(EXEEXT) timer_xettime$(EXEEXT) \ - timerfd_xettime$(EXEEXT) times$(EXEEXT) times-fail$(EXEEXT) \ -- truncate$(EXEEXT) truncate64$(EXEEXT) ugetrlimit$(EXEEXT) \ -- uio$(EXEEXT) umask$(EXEEXT) umount$(EXEEXT) umount2$(EXEEXT) \ -- umoven-illptr$(EXEEXT) umovestr$(EXEEXT) \ -- umovestr-illptr$(EXEEXT) umovestr2$(EXEEXT) umovestr3$(EXEEXT) \ -- umovestr_cached$(EXEEXT) umovestr_cached_adjacent$(EXEEXT) \ -- uname$(EXEEXT) unlink$(EXEEXT) unlinkat$(EXEEXT) \ -- unshare$(EXEEXT) userfaultfd$(EXEEXT) ustat$(EXEEXT) \ -- utime$(EXEEXT) utimensat$(EXEEXT) utimensat-Xabbrev$(EXEEXT) \ -+ tkill$(EXEEXT) truncate$(EXEEXT) truncate64$(EXEEXT) \ -+ ugetrlimit$(EXEEXT) uio$(EXEEXT) umask$(EXEEXT) \ -+ umount$(EXEEXT) umount2$(EXEEXT) umoven-illptr$(EXEEXT) \ -+ umovestr$(EXEEXT) umovestr-illptr$(EXEEXT) umovestr2$(EXEEXT) \ -+ umovestr3$(EXEEXT) umovestr_cached$(EXEEXT) \ -+ umovestr_cached_adjacent$(EXEEXT) uname$(EXEEXT) \ -+ unlink$(EXEEXT) unlinkat$(EXEEXT) unshare$(EXEEXT) \ -+ userfaultfd$(EXEEXT) ustat$(EXEEXT) utime$(EXEEXT) \ -+ utimensat$(EXEEXT) utimensat-Xabbrev$(EXEEXT) \ - utimensat-Xraw$(EXEEXT) utimensat-Xverbose$(EXEEXT) \ - utimes$(EXEEXT) vhangup$(EXEEXT) vmsplice$(EXEEXT) \ - wait4$(EXEEXT) waitid$(EXEEXT) waitpid$(EXEEXT) xattr$(EXEEXT) \ -@@ -3484,6 +3485,10 @@ - times_fail_OBJECTS = times-fail.$(OBJEXT) - times_fail_LDADD = $(LDADD) - times_fail_DEPENDENCIES = libtests.a -+tkill_SOURCES = tkill.c -+tkill_OBJECTS = tkill.$(OBJEXT) -+tkill_LDADD = $(LDADD) -+tkill_DEPENDENCIES = libtests.a - tracer_ppid_pgid_sid_SOURCES = tracer_ppid_pgid_sid.c - tracer_ppid_pgid_sid_OBJECTS = tracer_ppid_pgid_sid.$(OBJEXT) - tracer_ppid_pgid_sid_LDADD = $(LDADD) -@@ -4184,7 +4189,7 @@ - ./$(DEPDIR)/threads-execve.Po ./$(DEPDIR)/time.Po \ - ./$(DEPDIR)/timer_create.Po ./$(DEPDIR)/timer_xettime.Po \ - ./$(DEPDIR)/timerfd_xettime.Po ./$(DEPDIR)/times-fail.Po \ -- ./$(DEPDIR)/times.Po ./$(DEPDIR)/tracer_ppid_pgid_sid.Po \ -+ ./$(DEPDIR)/times.Po ./$(DEPDIR)/tkill.Po ./$(DEPDIR)/tracer_ppid_pgid_sid.Po \ - ./$(DEPDIR)/truncate.Po ./$(DEPDIR)/truncate64-truncate64.Po \ - ./$(DEPDIR)/ugetrlimit.Po ./$(DEPDIR)/uio-uio.Po \ - ./$(DEPDIR)/umask.Po ./$(DEPDIR)/umount.Po \ -@@ -4441,7 +4446,7 @@ - syslog-success.c tee.c threads-execve.c \ - threads-execve--quiet-thread-execve.c threads-execve-q.c \ - threads-execve-qq.c threads-execve-qqq.c time.c timer_create.c \ -- timer_xettime.c timerfd_xettime.c times.c times-fail.c \ -+ timer_xettime.c timerfd_xettime.c times.c times-fail.c tkill.c \ - tracer_ppid_pgid_sid.c truncate.c truncate64.c ugetrlimit.c \ - uio.c umask.c umount.c umount2.c umoven-illptr.c umovestr.c \ - umovestr-illptr.c umovestr2.c umovestr3.c umovestr_cached.c \ -@@ -4667,7 +4672,7 @@ - syslog-success.c tee.c threads-execve.c \ - threads-execve--quiet-thread-execve.c threads-execve-q.c \ - threads-execve-qq.c threads-execve-qqq.c time.c timer_create.c \ -- timer_xettime.c timerfd_xettime.c times.c times-fail.c \ -+ timer_xettime.c timerfd_xettime.c times.c times-fail.c tkill.c \ - tracer_ppid_pgid_sid.c truncate.c truncate64.c ugetrlimit.c \ - uio.c umask.c umount.c umount2.c umoven-illptr.c umovestr.c \ - umovestr-illptr.c umovestr2.c umovestr3.c umovestr_cached.c \ -@@ -5725,6 +5730,7 @@ - timerfd_xettime \ - times \ - times-fail \ -+ tkill \ - truncate \ - truncate64 \ - ugetrlimit \ -@@ -6133,9 +6139,10 @@ - threads-execve-qqq.gen.test time.gen.test \ - timer_create.gen.test timer_xettime.gen.test \ - timerfd_xettime.gen.test times.gen.test times-fail.gen.test \ -- trace_clock.gen.test trace_creds.gen.test trace_fstat.gen.test \ -- trace_fstatfs.gen.test trace_lstat.gen.test \ -- trace_personality_32.gen.test trace_personality_64.gen.test \ -+ tkill.gen.test trace_clock.gen.test trace_creds.gen.test \ -+ trace_fstat.gen.test trace_fstatfs.gen.test \ -+ trace_lstat.gen.test trace_personality_32.gen.test \ -+ trace_personality_64.gen.test \ - trace_personality_regex_32.gen.test \ - trace_personality_regex_64.gen.test \ - trace_personality_regex_x32.gen.test \ -@@ -9392,6 +9399,10 @@ - @rm -f times-fail$(EXEEXT) - $(AM_V_CCLD)$(LINK) $(times_fail_OBJECTS) $(times_fail_LDADD) $(LIBS) - -+tkill$(EXEEXT): $(tkill_OBJECTS) $(tkill_DEPENDENCIES) $(EXTRA_tkill_DEPENDENCIES) -+ @rm -f tkill$(EXEEXT) -+ $(AM_V_CCLD)$(LINK) $(tkill_OBJECTS) $(tkill_LDADD) $(LIBS) -+ - tracer_ppid_pgid_sid$(EXEEXT): $(tracer_ppid_pgid_sid_OBJECTS) $(tracer_ppid_pgid_sid_DEPENDENCIES) $(EXTRA_tracer_ppid_pgid_sid_DEPENDENCIES) - @rm -f tracer_ppid_pgid_sid$(EXEEXT) - $(AM_V_CCLD)$(LINK) $(tracer_ppid_pgid_sid_OBJECTS) $(tracer_ppid_pgid_sid_LDADD) $(LIBS) -@@ -10349,6 +10360,7 @@ - @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/timerfd_xettime.Po@am__quote@ # am--include-marker - @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/times-fail.Po@am__quote@ # am--include-marker - @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/times.Po@am__quote@ # am--include-marker -+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/tkill.Po@am__quote@ # am--include-marker - @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/tracer_ppid_pgid_sid.Po@am__quote@ # am--include-marker - @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/truncate.Po@am__quote@ # am--include-marker - @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/truncate64-truncate64.Po@am__quote@ # am--include-marker -@@ -12169,6 +12181,7 @@ - -rm -f ./$(DEPDIR)/timerfd_xettime.Po - -rm -f ./$(DEPDIR)/times-fail.Po - -rm -f ./$(DEPDIR)/times.Po -+ -rm -f ./$(DEPDIR)/tkill.Po - -rm -f ./$(DEPDIR)/tracer_ppid_pgid_sid.Po - -rm -f ./$(DEPDIR)/truncate.Po - -rm -f ./$(DEPDIR)/truncate64-truncate64.Po -@@ -13024,6 +13037,7 @@ - -rm -f ./$(DEPDIR)/timerfd_xettime.Po - -rm -f ./$(DEPDIR)/times-fail.Po - -rm -f ./$(DEPDIR)/times.Po -+ -rm -f ./$(DEPDIR)/tkill.Po - -rm -f ./$(DEPDIR)/tracer_ppid_pgid_sid.Po - -rm -f ./$(DEPDIR)/truncate.Po - -rm -f ./$(DEPDIR)/truncate64-truncate64.Po -@@ -15101,6 +15115,9 @@ - $(srcdir)/times-fail.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in - $(AM_V_GEN) $^ $@ - -+$(srcdir)/tkill.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in -+ $(AM_V_GEN) $^ $@ -+ - $(srcdir)/trace_clock.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in - $(AM_V_GEN) $^ $@ - -Index: strace-5.7/tests/Makefile.in -=================================================================== ---- strace-5.7.orig/tests/Makefile.in 2020-09-09 15:47:07.671767616 +0200 -+++ strace-5.7/tests/Makefile.in 2020-09-09 19:30:36.780885588 +0200 -@@ -496,14 +496,15 @@ - sysinfo$(EXEEXT) syslog$(EXEEXT) tee$(EXEEXT) time$(EXEEXT) \ - timer_create$(EXEEXT) timer_xettime$(EXEEXT) \ - timerfd_xettime$(EXEEXT) times$(EXEEXT) times-fail$(EXEEXT) \ -- truncate$(EXEEXT) truncate64$(EXEEXT) ugetrlimit$(EXEEXT) \ -- uio$(EXEEXT) umask$(EXEEXT) umount$(EXEEXT) umount2$(EXEEXT) \ -- umoven-illptr$(EXEEXT) umovestr$(EXEEXT) \ -- umovestr-illptr$(EXEEXT) umovestr2$(EXEEXT) umovestr3$(EXEEXT) \ -- umovestr_cached$(EXEEXT) umovestr_cached_adjacent$(EXEEXT) \ -- uname$(EXEEXT) unlink$(EXEEXT) unlinkat$(EXEEXT) \ -- unshare$(EXEEXT) userfaultfd$(EXEEXT) ustat$(EXEEXT) \ -- utime$(EXEEXT) utimensat$(EXEEXT) utimensat-Xabbrev$(EXEEXT) \ -+ tkill$(EXEEXT) truncate$(EXEEXT) truncate64$(EXEEXT) \ -+ ugetrlimit$(EXEEXT) uio$(EXEEXT) umask$(EXEEXT) \ -+ umount$(EXEEXT) umount2$(EXEEXT) umoven-illptr$(EXEEXT) \ -+ umovestr$(EXEEXT) umovestr-illptr$(EXEEXT) umovestr2$(EXEEXT) \ -+ umovestr3$(EXEEXT) umovestr_cached$(EXEEXT) \ -+ umovestr_cached_adjacent$(EXEEXT) uname$(EXEEXT) \ -+ unlink$(EXEEXT) unlinkat$(EXEEXT) unshare$(EXEEXT) \ -+ userfaultfd$(EXEEXT) ustat$(EXEEXT) utime$(EXEEXT) \ -+ utimensat$(EXEEXT) utimensat-Xabbrev$(EXEEXT) \ - utimensat-Xraw$(EXEEXT) utimensat-Xverbose$(EXEEXT) \ - utimes$(EXEEXT) vhangup$(EXEEXT) vmsplice$(EXEEXT) \ - wait4$(EXEEXT) waitid$(EXEEXT) waitpid$(EXEEXT) xattr$(EXEEXT) \ -@@ -3484,6 +3485,10 @@ - times_fail_OBJECTS = times-fail.$(OBJEXT) - times_fail_LDADD = $(LDADD) - times_fail_DEPENDENCIES = libtests.a -+tkill_SOURCES = tkill.c -+tkill_OBJECTS = tkill.$(OBJEXT) -+tkill_LDADD = $(LDADD) -+tkill_DEPENDENCIES = libtests.a - tracer_ppid_pgid_sid_SOURCES = tracer_ppid_pgid_sid.c - tracer_ppid_pgid_sid_OBJECTS = tracer_ppid_pgid_sid.$(OBJEXT) - tracer_ppid_pgid_sid_LDADD = $(LDADD) -@@ -4184,7 +4189,7 @@ - ./$(DEPDIR)/threads-execve.Po ./$(DEPDIR)/time.Po \ - ./$(DEPDIR)/timer_create.Po ./$(DEPDIR)/timer_xettime.Po \ - ./$(DEPDIR)/timerfd_xettime.Po ./$(DEPDIR)/times-fail.Po \ -- ./$(DEPDIR)/times.Po ./$(DEPDIR)/tracer_ppid_pgid_sid.Po \ -+ ./$(DEPDIR)/times.Po ./$(DEPDIR)/tkill.Po ./$(DEPDIR)/tracer_ppid_pgid_sid.Po \ - ./$(DEPDIR)/truncate.Po ./$(DEPDIR)/truncate64-truncate64.Po \ - ./$(DEPDIR)/ugetrlimit.Po ./$(DEPDIR)/uio-uio.Po \ - ./$(DEPDIR)/umask.Po ./$(DEPDIR)/umount.Po \ -@@ -4441,7 +4446,7 @@ - syslog-success.c tee.c threads-execve.c \ - threads-execve--quiet-thread-execve.c threads-execve-q.c \ - threads-execve-qq.c threads-execve-qqq.c time.c timer_create.c \ -- timer_xettime.c timerfd_xettime.c times.c times-fail.c \ -+ timer_xettime.c timerfd_xettime.c times.c times-fail.c tkill.c \ - tracer_ppid_pgid_sid.c truncate.c truncate64.c ugetrlimit.c \ - uio.c umask.c umount.c umount2.c umoven-illptr.c umovestr.c \ - umovestr-illptr.c umovestr2.c umovestr3.c umovestr_cached.c \ -@@ -4667,7 +4672,7 @@ - syslog-success.c tee.c threads-execve.c \ - threads-execve--quiet-thread-execve.c threads-execve-q.c \ - threads-execve-qq.c threads-execve-qqq.c time.c timer_create.c \ -- timer_xettime.c timerfd_xettime.c times.c times-fail.c \ -+ timer_xettime.c timerfd_xettime.c times.c times-fail.c tkill.c \ - tracer_ppid_pgid_sid.c truncate.c truncate64.c ugetrlimit.c \ - uio.c umask.c umount.c umount2.c umoven-illptr.c umovestr.c \ - umovestr-illptr.c umovestr2.c umovestr3.c umovestr_cached.c \ -@@ -5725,6 +5730,7 @@ - timerfd_xettime \ - times \ - times-fail \ -+ tkill \ - truncate \ - truncate64 \ - ugetrlimit \ -@@ -6133,9 +6139,10 @@ - threads-execve-qqq.gen.test time.gen.test \ - timer_create.gen.test timer_xettime.gen.test \ - timerfd_xettime.gen.test times.gen.test times-fail.gen.test \ -- trace_clock.gen.test trace_creds.gen.test trace_fstat.gen.test \ -- trace_fstatfs.gen.test trace_lstat.gen.test \ -- trace_personality_32.gen.test trace_personality_64.gen.test \ -+ tkill.gen.test trace_clock.gen.test trace_creds.gen.test \ -+ trace_fstat.gen.test trace_fstatfs.gen.test \ -+ trace_lstat.gen.test trace_personality_32.gen.test \ -+ trace_personality_64.gen.test \ - trace_personality_regex_32.gen.test \ - trace_personality_regex_64.gen.test \ - trace_personality_regex_x32.gen.test \ -@@ -9392,6 +9399,10 @@ - @rm -f times-fail$(EXEEXT) - $(AM_V_CCLD)$(LINK) $(times_fail_OBJECTS) $(times_fail_LDADD) $(LIBS) - -+tkill$(EXEEXT): $(tkill_OBJECTS) $(tkill_DEPENDENCIES) $(EXTRA_tkill_DEPENDENCIES) -+ @rm -f tkill$(EXEEXT) -+ $(AM_V_CCLD)$(LINK) $(tkill_OBJECTS) $(tkill_LDADD) $(LIBS) -+ - tracer_ppid_pgid_sid$(EXEEXT): $(tracer_ppid_pgid_sid_OBJECTS) $(tracer_ppid_pgid_sid_DEPENDENCIES) $(EXTRA_tracer_ppid_pgid_sid_DEPENDENCIES) - @rm -f tracer_ppid_pgid_sid$(EXEEXT) - $(AM_V_CCLD)$(LINK) $(tracer_ppid_pgid_sid_OBJECTS) $(tracer_ppid_pgid_sid_LDADD) $(LIBS) -@@ -10349,6 +10360,7 @@ - @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/timerfd_xettime.Po@am__quote@ # am--include-marker - @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/times-fail.Po@am__quote@ # am--include-marker - @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/times.Po@am__quote@ # am--include-marker -+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/tkill.Po@am__quote@ # am--include-marker - @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/tracer_ppid_pgid_sid.Po@am__quote@ # am--include-marker - @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/truncate.Po@am__quote@ # am--include-marker - @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/truncate64-truncate64.Po@am__quote@ # am--include-marker -@@ -12169,6 +12181,7 @@ - -rm -f ./$(DEPDIR)/timerfd_xettime.Po - -rm -f ./$(DEPDIR)/times-fail.Po - -rm -f ./$(DEPDIR)/times.Po -+ -rm -f ./$(DEPDIR)/tkill.Po - -rm -f ./$(DEPDIR)/tracer_ppid_pgid_sid.Po - -rm -f ./$(DEPDIR)/truncate.Po - -rm -f ./$(DEPDIR)/truncate64-truncate64.Po -@@ -13024,6 +13037,7 @@ - -rm -f ./$(DEPDIR)/timerfd_xettime.Po - -rm -f ./$(DEPDIR)/times-fail.Po - -rm -f ./$(DEPDIR)/times.Po -+ -rm -f ./$(DEPDIR)/tkill.Po - -rm -f ./$(DEPDIR)/tracer_ppid_pgid_sid.Po - -rm -f ./$(DEPDIR)/truncate.Po - -rm -f ./$(DEPDIR)/truncate64-truncate64.Po -@@ -15101,6 +15115,9 @@ - $(srcdir)/times-fail.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in - $(AM_V_GEN) $^ $@ - -+$(srcdir)/tkill.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in -+ $(AM_V_GEN) $^ $@ -+ - $(srcdir)/trace_clock.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in - $(AM_V_GEN) $^ $@ - diff --git a/0133-tests-check-decoding-of-tgkill-syscall.patch b/0133-tests-check-decoding-of-tgkill-syscall.patch deleted file mode 100755 index 70bae9e..0000000 --- a/0133-tests-check-decoding-of-tgkill-syscall.patch +++ /dev/null @@ -1,656 +0,0 @@ -From 9d4d64f6fdfcae908aec455888e92a69c9c81c64 Mon Sep 17 00:00:00 2001 -From: "Dmitry V. Levin" -Date: Sat, 1 Aug 2020 08:00:00 +0000 -Subject: [PATCH 133/138] tests: check decoding of tgkill syscall - -* tests/tgkill.c: New file. -* tests/gen_tests.in (tgkill): New entry. -* tests/pure_executables.list: Add tgkill. -* tests/.gitignore: Likewise. ---- - tests/.gitignore | 1 + - tests/gen_tests.in | 1 + - tests/pure_executables.list | 1 + - tests/tgkill.c | 69 +++++++++++++++++++++++++++++++++++++++++++++ - 4 files changed, 72 insertions(+) - create mode 100644 tests/tgkill.c - -Index: strace-5.7/tests/gen_tests.in -=================================================================== ---- strace-5.7.orig/tests/gen_tests.in 2020-09-09 19:30:36.780885588 +0200 -+++ strace-5.7/tests/gen_tests.in 2020-09-09 19:32:50.740965435 +0200 -@@ -658,6 +658,7 @@ - sysinfo -a14 - syslog -a35 - tee -+tgkill -a15 --signal='!cont' - threads-execve--quiet-thread-execve +threads-execve.test -s40 --quiet=personality,thread-execve - threads-execve-q +threads-execve.test -q - threads-execve-qq +threads-execve.test -qq -Index: strace-5.7/tests/pure_executables.list -=================================================================== ---- strace-5.7.orig/tests/pure_executables.list 2020-09-09 19:30:36.780885588 +0200 -+++ strace-5.7/tests/pure_executables.list 2020-09-09 19:32:45.308962197 +0200 -@@ -583,6 +583,7 @@ - sysinfo - syslog - tee -+tgkill - time - timer_create - timer_xettime -Index: strace-5.7/tests/tgkill.c -=================================================================== ---- /dev/null 1970-01-01 00:00:00.000000000 +0000 -+++ strace-5.7/tests/tgkill.c 2020-09-09 19:32:50.740965435 +0200 -@@ -0,0 +1,69 @@ -+/* -+ * Check decoding of tgkill syscall. -+ * -+ * Copyright (c) 2020 Dmitry V. Levin -+ * All rights reserved. -+ * -+ * SPDX-License-Identifier: GPL-2.0-or-later -+ */ -+ -+#include "tests.h" -+#include "scno.h" -+ -+#ifdef __NR_tgkill -+ -+# include -+# include -+# include -+ -+static const char *errstr; -+ -+static long -+k_tgkill(const unsigned int tgid, -+ const unsigned int tid, -+ const unsigned int sig) -+{ -+ const kernel_ulong_t fill = (kernel_ulong_t) 0xdefaced00000000ULL; -+ const kernel_ulong_t bad = (kernel_ulong_t) 0xbadc0dedbadc0dedULL; -+ const kernel_ulong_t arg1 = fill | tgid; -+ const kernel_ulong_t arg2 = fill | tid; -+ const kernel_ulong_t arg3 = fill | sig; -+ const long rc = syscall(__NR_tgkill, arg1, arg2, arg3, bad, bad, bad); -+ errstr = sprintrc(rc); -+ return rc; -+} -+ -+int -+main(void) -+{ -+ const int pid = getpid(); -+ const int bad_pid = -1; -+ const int bad_sig = 0xface; -+ -+ k_tgkill(pid, pid, 0); -+ printf("tgkill(%d, %d, 0) = %s\n", pid, pid, errstr); -+ -+ k_tgkill(pid, bad_pid, 0); -+ printf("tgkill(%d, %d, 0) = %s\n", pid, bad_pid, errstr); -+ -+ k_tgkill(bad_pid, pid, 0); -+ printf("tgkill(%d, %d, 0) = %s\n", bad_pid, pid, errstr); -+ -+ k_tgkill(pid, pid, SIGCONT); -+ printf("tgkill(%d, %d, SIGCONT) = %s\n", pid, pid, errstr); -+ -+ k_tgkill(pid, pid, bad_sig); -+ printf("tgkill(%d, %d, %d) = %s\n", pid, pid, bad_sig, errstr); -+ -+ k_tgkill(pid, pid, -bad_sig); -+ printf("tgkill(%d, %d, %d) = %s\n", pid, pid, -bad_sig, errstr); -+ -+ puts("+++ exited with 0 +++"); -+ return 0; -+} -+ -+#else -+ -+SKIP_MAIN_UNDEFINED("__NR_tgkill") -+ -+#endif -Index: strace-5.7/tests-m32/gen_tests.in -=================================================================== ---- strace-5.7.orig/tests-m32/gen_tests.in 2020-09-09 19:30:36.780885588 +0200 -+++ strace-5.7/tests-m32/gen_tests.in 2020-09-09 19:32:50.740965435 +0200 -@@ -658,6 +658,7 @@ - sysinfo -a14 - syslog -a35 - tee -+tgkill -a15 --signal='!cont' - threads-execve--quiet-thread-execve +threads-execve.test -s40 --quiet=personality,thread-execve - threads-execve-q +threads-execve.test -q - threads-execve-qq +threads-execve.test -qq -Index: strace-5.7/tests-m32/pure_executables.list -=================================================================== ---- strace-5.7.orig/tests-m32/pure_executables.list 2020-09-09 19:30:36.780885588 +0200 -+++ strace-5.7/tests-m32/pure_executables.list 2020-09-09 19:32:45.309962197 +0200 -@@ -583,6 +583,7 @@ - sysinfo - syslog - tee -+tgkill - time - timer_create - timer_xettime -Index: strace-5.7/tests-m32/tgkill.c -=================================================================== ---- /dev/null 1970-01-01 00:00:00.000000000 +0000 -+++ strace-5.7/tests-m32/tgkill.c 2020-09-09 19:32:50.740965435 +0200 -@@ -0,0 +1,69 @@ -+/* -+ * Check decoding of tgkill syscall. -+ * -+ * Copyright (c) 2020 Dmitry V. Levin -+ * All rights reserved. -+ * -+ * SPDX-License-Identifier: GPL-2.0-or-later -+ */ -+ -+#include "tests.h" -+#include "scno.h" -+ -+#ifdef __NR_tgkill -+ -+# include -+# include -+# include -+ -+static const char *errstr; -+ -+static long -+k_tgkill(const unsigned int tgid, -+ const unsigned int tid, -+ const unsigned int sig) -+{ -+ const kernel_ulong_t fill = (kernel_ulong_t) 0xdefaced00000000ULL; -+ const kernel_ulong_t bad = (kernel_ulong_t) 0xbadc0dedbadc0dedULL; -+ const kernel_ulong_t arg1 = fill | tgid; -+ const kernel_ulong_t arg2 = fill | tid; -+ const kernel_ulong_t arg3 = fill | sig; -+ const long rc = syscall(__NR_tgkill, arg1, arg2, arg3, bad, bad, bad); -+ errstr = sprintrc(rc); -+ return rc; -+} -+ -+int -+main(void) -+{ -+ const int pid = getpid(); -+ const int bad_pid = -1; -+ const int bad_sig = 0xface; -+ -+ k_tgkill(pid, pid, 0); -+ printf("tgkill(%d, %d, 0) = %s\n", pid, pid, errstr); -+ -+ k_tgkill(pid, bad_pid, 0); -+ printf("tgkill(%d, %d, 0) = %s\n", pid, bad_pid, errstr); -+ -+ k_tgkill(bad_pid, pid, 0); -+ printf("tgkill(%d, %d, 0) = %s\n", bad_pid, pid, errstr); -+ -+ k_tgkill(pid, pid, SIGCONT); -+ printf("tgkill(%d, %d, SIGCONT) = %s\n", pid, pid, errstr); -+ -+ k_tgkill(pid, pid, bad_sig); -+ printf("tgkill(%d, %d, %d) = %s\n", pid, pid, bad_sig, errstr); -+ -+ k_tgkill(pid, pid, -bad_sig); -+ printf("tgkill(%d, %d, %d) = %s\n", pid, pid, -bad_sig, errstr); -+ -+ puts("+++ exited with 0 +++"); -+ return 0; -+} -+ -+#else -+ -+SKIP_MAIN_UNDEFINED("__NR_tgkill") -+ -+#endif -Index: strace-5.7/tests-mx32/gen_tests.in -=================================================================== ---- strace-5.7.orig/tests-mx32/gen_tests.in 2020-09-09 19:30:36.780885588 +0200 -+++ strace-5.7/tests-mx32/gen_tests.in 2020-09-09 19:32:50.740965435 +0200 -@@ -658,6 +658,7 @@ - sysinfo -a14 - syslog -a35 - tee -+tgkill -a15 --signal='!cont' - threads-execve--quiet-thread-execve +threads-execve.test -s40 --quiet=personality,thread-execve - threads-execve-q +threads-execve.test -q - threads-execve-qq +threads-execve.test -qq -Index: strace-5.7/tests-mx32/pure_executables.list -=================================================================== ---- strace-5.7.orig/tests-mx32/pure_executables.list 2020-09-09 19:30:36.780885588 +0200 -+++ strace-5.7/tests-mx32/pure_executables.list 2020-09-09 19:32:45.310962198 +0200 -@@ -583,6 +583,7 @@ - sysinfo - syslog - tee -+tgkill - time - timer_create - timer_xettime -Index: strace-5.7/tests-mx32/tgkill.c -=================================================================== ---- /dev/null 1970-01-01 00:00:00.000000000 +0000 -+++ strace-5.7/tests-mx32/tgkill.c 2020-09-09 19:32:50.740965435 +0200 -@@ -0,0 +1,69 @@ -+/* -+ * Check decoding of tgkill syscall. -+ * -+ * Copyright (c) 2020 Dmitry V. Levin -+ * All rights reserved. -+ * -+ * SPDX-License-Identifier: GPL-2.0-or-later -+ */ -+ -+#include "tests.h" -+#include "scno.h" -+ -+#ifdef __NR_tgkill -+ -+# include -+# include -+# include -+ -+static const char *errstr; -+ -+static long -+k_tgkill(const unsigned int tgid, -+ const unsigned int tid, -+ const unsigned int sig) -+{ -+ const kernel_ulong_t fill = (kernel_ulong_t) 0xdefaced00000000ULL; -+ const kernel_ulong_t bad = (kernel_ulong_t) 0xbadc0dedbadc0dedULL; -+ const kernel_ulong_t arg1 = fill | tgid; -+ const kernel_ulong_t arg2 = fill | tid; -+ const kernel_ulong_t arg3 = fill | sig; -+ const long rc = syscall(__NR_tgkill, arg1, arg2, arg3, bad, bad, bad); -+ errstr = sprintrc(rc); -+ return rc; -+} -+ -+int -+main(void) -+{ -+ const int pid = getpid(); -+ const int bad_pid = -1; -+ const int bad_sig = 0xface; -+ -+ k_tgkill(pid, pid, 0); -+ printf("tgkill(%d, %d, 0) = %s\n", pid, pid, errstr); -+ -+ k_tgkill(pid, bad_pid, 0); -+ printf("tgkill(%d, %d, 0) = %s\n", pid, bad_pid, errstr); -+ -+ k_tgkill(bad_pid, pid, 0); -+ printf("tgkill(%d, %d, 0) = %s\n", bad_pid, pid, errstr); -+ -+ k_tgkill(pid, pid, SIGCONT); -+ printf("tgkill(%d, %d, SIGCONT) = %s\n", pid, pid, errstr); -+ -+ k_tgkill(pid, pid, bad_sig); -+ printf("tgkill(%d, %d, %d) = %s\n", pid, pid, bad_sig, errstr); -+ -+ k_tgkill(pid, pid, -bad_sig); -+ printf("tgkill(%d, %d, %d) = %s\n", pid, pid, -bad_sig, errstr); -+ -+ puts("+++ exited with 0 +++"); -+ return 0; -+} -+ -+#else -+ -+SKIP_MAIN_UNDEFINED("__NR_tgkill") -+ -+#endif -Index: strace-5.7/tests-m32/Makefile.in -=================================================================== ---- strace-5.7.orig/tests-m32/Makefile.in 2020-09-09 19:32:14.800944013 +0200 -+++ strace-5.7/tests-m32/Makefile.in 2020-09-09 19:49:34.530563739 +0200 -@@ -493,8 +493,8 @@ - strace-xx$(EXEEXT) swap$(EXEEXT) sxetmask$(EXEEXT) \ - symlink$(EXEEXT) symlinkat$(EXEEXT) sync$(EXEEXT) \ - sync_file_range$(EXEEXT) sync_file_range2$(EXEEXT) \ -- sysinfo$(EXEEXT) syslog$(EXEEXT) tee$(EXEEXT) time$(EXEEXT) \ -- timer_create$(EXEEXT) timer_xettime$(EXEEXT) \ -+ sysinfo$(EXEEXT) syslog$(EXEEXT) tee$(EXEEXT) tgkill$(EXEEXT) \ -+ time$(EXEEXT) timer_create$(EXEEXT) timer_xettime$(EXEEXT) \ - timerfd_xettime$(EXEEXT) times$(EXEEXT) times-fail$(EXEEXT) \ - tkill$(EXEEXT) truncate$(EXEEXT) truncate64$(EXEEXT) \ - ugetrlimit$(EXEEXT) uio$(EXEEXT) umask$(EXEEXT) \ -@@ -3444,6 +3444,10 @@ - tee_OBJECTS = tee.$(OBJEXT) - tee_LDADD = $(LDADD) - tee_DEPENDENCIES = libtests.a -+tgkill_SOURCES = tgkill.c -+tgkill_OBJECTS = tgkill.$(OBJEXT) -+tgkill_LDADD = $(LDADD) -+tgkill_DEPENDENCIES = libtests.a - threads_execve_SOURCES = threads-execve.c - threads_execve_OBJECTS = threads-execve.$(OBJEXT) - threads_execve_DEPENDENCIES = $(am__DEPENDENCIES_1) $(LDADD) -@@ -4181,7 +4185,7 @@ - ./$(DEPDIR)/symlinkat.Po ./$(DEPDIR)/sync.Po \ - ./$(DEPDIR)/sync_file_range.Po ./$(DEPDIR)/sync_file_range2.Po \ - ./$(DEPDIR)/sysinfo.Po ./$(DEPDIR)/syslog-success.Po \ -- ./$(DEPDIR)/syslog.Po ./$(DEPDIR)/tee.Po \ -+ ./$(DEPDIR)/syslog.Po ./$(DEPDIR)/tee.Po ./$(DEPDIR)/tgkill.Po \ - ./$(DEPDIR)/threads-execve--quiet-thread-execve.Po \ - ./$(DEPDIR)/threads-execve-q.Po \ - ./$(DEPDIR)/threads-execve-qq.Po \ -@@ -4443,7 +4447,7 @@ - strace--strings-in-hex-non-ascii.c strace-x.c strace-xx.c \ - swap.c sxetmask.c symlink.c symlinkat.c sync.c \ - sync_file_range.c sync_file_range2.c sysinfo.c syslog.c \ -- syslog-success.c tee.c threads-execve.c \ -+ syslog-success.c tee.c tgkill.c threads-execve.c \ - threads-execve--quiet-thread-execve.c threads-execve-q.c \ - threads-execve-qq.c threads-execve-qqq.c time.c timer_create.c \ - timer_xettime.c timerfd_xettime.c times.c times-fail.c tkill.c \ -@@ -4669,7 +4673,7 @@ - strace--strings-in-hex-non-ascii.c strace-x.c strace-xx.c \ - swap.c sxetmask.c symlink.c symlinkat.c sync.c \ - sync_file_range.c sync_file_range2.c sysinfo.c syslog.c \ -- syslog-success.c tee.c threads-execve.c \ -+ syslog-success.c tee.c tgkill.c threads-execve.c \ - threads-execve--quiet-thread-execve.c threads-execve-q.c \ - threads-execve-qq.c threads-execve-qqq.c time.c timer_create.c \ - timer_xettime.c timerfd_xettime.c times.c times-fail.c tkill.c \ -@@ -5724,6 +5728,7 @@ - sysinfo \ - syslog \ - tee \ -+ tgkill \ - time \ - timer_create \ - timer_xettime \ -@@ -6133,7 +6138,7 @@ - strace-xx.gen.test swap.gen.test sxetmask.gen.test \ - symlink.gen.test symlinkat.gen.test sync.gen.test \ - sync_file_range.gen.test sync_file_range2.gen.test \ -- sysinfo.gen.test syslog.gen.test tee.gen.test \ -+ sysinfo.gen.test syslog.gen.test tee.gen.test tgkill.gen.test \ - threads-execve--quiet-thread-execve.gen.test \ - threads-execve-q.gen.test threads-execve-qq.gen.test \ - threads-execve-qqq.gen.test time.gen.test \ -@@ -9355,6 +9360,10 @@ - @rm -f tee$(EXEEXT) - $(AM_V_CCLD)$(LINK) $(tee_OBJECTS) $(tee_LDADD) $(LIBS) - -+tgkill$(EXEEXT): $(tgkill_OBJECTS) $(tgkill_DEPENDENCIES) $(EXTRA_tgkill_DEPENDENCIES) -+ @rm -f tgkill$(EXEEXT) -+ $(AM_V_CCLD)$(LINK) $(tgkill_OBJECTS) $(tgkill_LDADD) $(LIBS) -+ - threads-execve$(EXEEXT): $(threads_execve_OBJECTS) $(threads_execve_DEPENDENCIES) $(EXTRA_threads_execve_DEPENDENCIES) - @rm -f threads-execve$(EXEEXT) - $(AM_V_CCLD)$(LINK) $(threads_execve_OBJECTS) $(threads_execve_LDADD) $(LIBS) -@@ -10349,6 +10358,7 @@ - @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/syslog-success.Po@am__quote@ # am--include-marker - @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/syslog.Po@am__quote@ # am--include-marker - @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/tee.Po@am__quote@ # am--include-marker -+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/tgkill.Po@am__quote@ # am--include-marker - @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/threads-execve--quiet-thread-execve.Po@am__quote@ # am--include-marker - @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/threads-execve-q.Po@am__quote@ # am--include-marker - @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/threads-execve-qq.Po@am__quote@ # am--include-marker -@@ -12170,6 +12180,7 @@ - -rm -f ./$(DEPDIR)/syslog-success.Po - -rm -f ./$(DEPDIR)/syslog.Po - -rm -f ./$(DEPDIR)/tee.Po -+ -rm -f ./$(DEPDIR)/tgkill.Po - -rm -f ./$(DEPDIR)/threads-execve--quiet-thread-execve.Po - -rm -f ./$(DEPDIR)/threads-execve-q.Po - -rm -f ./$(DEPDIR)/threads-execve-qq.Po -@@ -13026,6 +13037,7 @@ - -rm -f ./$(DEPDIR)/syslog-success.Po - -rm -f ./$(DEPDIR)/syslog.Po - -rm -f ./$(DEPDIR)/tee.Po -+ -rm -f ./$(DEPDIR)/tgkill.Po - -rm -f ./$(DEPDIR)/threads-execve--quiet-thread-execve.Po - -rm -f ./$(DEPDIR)/threads-execve-q.Po - -rm -f ./$(DEPDIR)/threads-execve-qq.Po -@@ -15085,6 +15097,9 @@ - $(srcdir)/tee.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in - $(AM_V_GEN) $^ $@ - -+$(srcdir)/tgkill.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in -+ $(AM_V_GEN) $^ $@ -+ - $(srcdir)/threads-execve--quiet-thread-execve.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 2020-09-09 19:32:39.854958946 +0200 -+++ strace-5.7/tests-mx32/Makefile.in 2020-09-09 19:49:39.557566736 +0200 -@@ -493,8 +493,8 @@ - strace-xx$(EXEEXT) swap$(EXEEXT) sxetmask$(EXEEXT) \ - symlink$(EXEEXT) symlinkat$(EXEEXT) sync$(EXEEXT) \ - sync_file_range$(EXEEXT) sync_file_range2$(EXEEXT) \ -- sysinfo$(EXEEXT) syslog$(EXEEXT) tee$(EXEEXT) time$(EXEEXT) \ -- timer_create$(EXEEXT) timer_xettime$(EXEEXT) \ -+ sysinfo$(EXEEXT) syslog$(EXEEXT) tee$(EXEEXT) tgkill$(EXEEXT) \ -+ time$(EXEEXT) timer_create$(EXEEXT) timer_xettime$(EXEEXT) \ - timerfd_xettime$(EXEEXT) times$(EXEEXT) times-fail$(EXEEXT) \ - tkill$(EXEEXT) truncate$(EXEEXT) truncate64$(EXEEXT) \ - ugetrlimit$(EXEEXT) uio$(EXEEXT) umask$(EXEEXT) \ -@@ -3444,6 +3444,10 @@ - tee_OBJECTS = tee.$(OBJEXT) - tee_LDADD = $(LDADD) - tee_DEPENDENCIES = libtests.a -+tgkill_SOURCES = tgkill.c -+tgkill_OBJECTS = tgkill.$(OBJEXT) -+tgkill_LDADD = $(LDADD) -+tgkill_DEPENDENCIES = libtests.a - threads_execve_SOURCES = threads-execve.c - threads_execve_OBJECTS = threads-execve.$(OBJEXT) - threads_execve_DEPENDENCIES = $(am__DEPENDENCIES_1) $(LDADD) -@@ -4181,7 +4185,7 @@ - ./$(DEPDIR)/symlinkat.Po ./$(DEPDIR)/sync.Po \ - ./$(DEPDIR)/sync_file_range.Po ./$(DEPDIR)/sync_file_range2.Po \ - ./$(DEPDIR)/sysinfo.Po ./$(DEPDIR)/syslog-success.Po \ -- ./$(DEPDIR)/syslog.Po ./$(DEPDIR)/tee.Po \ -+ ./$(DEPDIR)/syslog.Po ./$(DEPDIR)/tee.Po ./$(DEPDIR)/tgkill.Po \ - ./$(DEPDIR)/threads-execve--quiet-thread-execve.Po \ - ./$(DEPDIR)/threads-execve-q.Po \ - ./$(DEPDIR)/threads-execve-qq.Po \ -@@ -4443,7 +4447,7 @@ - strace--strings-in-hex-non-ascii.c strace-x.c strace-xx.c \ - swap.c sxetmask.c symlink.c symlinkat.c sync.c \ - sync_file_range.c sync_file_range2.c sysinfo.c syslog.c \ -- syslog-success.c tee.c threads-execve.c \ -+ syslog-success.c tee.c tgkill.c threads-execve.c \ - threads-execve--quiet-thread-execve.c threads-execve-q.c \ - threads-execve-qq.c threads-execve-qqq.c time.c timer_create.c \ - timer_xettime.c timerfd_xettime.c times.c times-fail.c tkill.c \ -@@ -4669,7 +4673,7 @@ - strace--strings-in-hex-non-ascii.c strace-x.c strace-xx.c \ - swap.c sxetmask.c symlink.c symlinkat.c sync.c \ - sync_file_range.c sync_file_range2.c sysinfo.c syslog.c \ -- syslog-success.c tee.c threads-execve.c \ -+ syslog-success.c tee.c tgkill.c threads-execve.c \ - threads-execve--quiet-thread-execve.c threads-execve-q.c \ - threads-execve-qq.c threads-execve-qqq.c time.c timer_create.c \ - timer_xettime.c timerfd_xettime.c times.c times-fail.c tkill.c \ -@@ -5724,6 +5728,7 @@ - sysinfo \ - syslog \ - tee \ -+ tgkill \ - time \ - timer_create \ - timer_xettime \ -@@ -6133,7 +6138,7 @@ - strace-xx.gen.test swap.gen.test sxetmask.gen.test \ - symlink.gen.test symlinkat.gen.test sync.gen.test \ - sync_file_range.gen.test sync_file_range2.gen.test \ -- sysinfo.gen.test syslog.gen.test tee.gen.test \ -+ sysinfo.gen.test syslog.gen.test tee.gen.test tgkill.gen.test \ - threads-execve--quiet-thread-execve.gen.test \ - threads-execve-q.gen.test threads-execve-qq.gen.test \ - threads-execve-qqq.gen.test time.gen.test \ -@@ -9355,6 +9360,10 @@ - @rm -f tee$(EXEEXT) - $(AM_V_CCLD)$(LINK) $(tee_OBJECTS) $(tee_LDADD) $(LIBS) - -+tgkill$(EXEEXT): $(tgkill_OBJECTS) $(tgkill_DEPENDENCIES) $(EXTRA_tgkill_DEPENDENCIES) -+ @rm -f tgkill$(EXEEXT) -+ $(AM_V_CCLD)$(LINK) $(tgkill_OBJECTS) $(tgkill_LDADD) $(LIBS) -+ - threads-execve$(EXEEXT): $(threads_execve_OBJECTS) $(threads_execve_DEPENDENCIES) $(EXTRA_threads_execve_DEPENDENCIES) - @rm -f threads-execve$(EXEEXT) - $(AM_V_CCLD)$(LINK) $(threads_execve_OBJECTS) $(threads_execve_LDADD) $(LIBS) -@@ -10349,6 +10358,7 @@ - @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/syslog-success.Po@am__quote@ # am--include-marker - @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/syslog.Po@am__quote@ # am--include-marker - @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/tee.Po@am__quote@ # am--include-marker -+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/tgkill.Po@am__quote@ # am--include-marker - @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/threads-execve--quiet-thread-execve.Po@am__quote@ # am--include-marker - @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/threads-execve-q.Po@am__quote@ # am--include-marker - @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/threads-execve-qq.Po@am__quote@ # am--include-marker -@@ -12170,6 +12180,7 @@ - -rm -f ./$(DEPDIR)/syslog-success.Po - -rm -f ./$(DEPDIR)/syslog.Po - -rm -f ./$(DEPDIR)/tee.Po -+ -rm -f ./$(DEPDIR)/tgkill.Po - -rm -f ./$(DEPDIR)/threads-execve--quiet-thread-execve.Po - -rm -f ./$(DEPDIR)/threads-execve-q.Po - -rm -f ./$(DEPDIR)/threads-execve-qq.Po -@@ -13026,6 +13037,7 @@ - -rm -f ./$(DEPDIR)/syslog-success.Po - -rm -f ./$(DEPDIR)/syslog.Po - -rm -f ./$(DEPDIR)/tee.Po -+ -rm -f ./$(DEPDIR)/tgkill.Po - -rm -f ./$(DEPDIR)/threads-execve--quiet-thread-execve.Po - -rm -f ./$(DEPDIR)/threads-execve-q.Po - -rm -f ./$(DEPDIR)/threads-execve-qq.Po -@@ -15085,6 +15097,9 @@ - $(srcdir)/tee.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in - $(AM_V_GEN) $^ $@ - -+$(srcdir)/tgkill.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in -+ $(AM_V_GEN) $^ $@ -+ - $(srcdir)/threads-execve--quiet-thread-execve.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in - $(AM_V_GEN) $^ $@ - -Index: strace-5.7/tests/Makefile.in -=================================================================== ---- strace-5.7.orig/tests/Makefile.in 2020-09-09 19:30:36.780885588 +0200 -+++ strace-5.7/tests/Makefile.in 2020-09-09 19:46:24.904450714 +0200 -@@ -493,8 +493,8 @@ - strace-xx$(EXEEXT) swap$(EXEEXT) sxetmask$(EXEEXT) \ - symlink$(EXEEXT) symlinkat$(EXEEXT) sync$(EXEEXT) \ - sync_file_range$(EXEEXT) sync_file_range2$(EXEEXT) \ -- sysinfo$(EXEEXT) syslog$(EXEEXT) tee$(EXEEXT) time$(EXEEXT) \ -- timer_create$(EXEEXT) timer_xettime$(EXEEXT) \ -+ sysinfo$(EXEEXT) syslog$(EXEEXT) tee$(EXEEXT) tgkill$(EXEEXT) \ -+ time$(EXEEXT) timer_create$(EXEEXT) timer_xettime$(EXEEXT) \ - timerfd_xettime$(EXEEXT) times$(EXEEXT) times-fail$(EXEEXT) \ - tkill$(EXEEXT) truncate$(EXEEXT) truncate64$(EXEEXT) \ - ugetrlimit$(EXEEXT) uio$(EXEEXT) umask$(EXEEXT) \ -@@ -3444,6 +3444,10 @@ - tee_OBJECTS = tee.$(OBJEXT) - tee_LDADD = $(LDADD) - tee_DEPENDENCIES = libtests.a -+tgkill_SOURCES = tgkill.c -+tgkill_OBJECTS = tgkill.$(OBJEXT) -+tgkill_LDADD = $(LDADD) -+tgkill_DEPENDENCIES = libtests.a - threads_execve_SOURCES = threads-execve.c - threads_execve_OBJECTS = threads-execve.$(OBJEXT) - threads_execve_DEPENDENCIES = $(am__DEPENDENCIES_1) $(LDADD) -@@ -4181,7 +4185,7 @@ - ./$(DEPDIR)/symlinkat.Po ./$(DEPDIR)/sync.Po \ - ./$(DEPDIR)/sync_file_range.Po ./$(DEPDIR)/sync_file_range2.Po \ - ./$(DEPDIR)/sysinfo.Po ./$(DEPDIR)/syslog-success.Po \ -- ./$(DEPDIR)/syslog.Po ./$(DEPDIR)/tee.Po \ -+ ./$(DEPDIR)/syslog.Po ./$(DEPDIR)/tee.Po ./$(DEPDIR)/tgkill.Po \ - ./$(DEPDIR)/threads-execve--quiet-thread-execve.Po \ - ./$(DEPDIR)/threads-execve-q.Po \ - ./$(DEPDIR)/threads-execve-qq.Po \ -@@ -4443,7 +4447,7 @@ - strace--strings-in-hex-non-ascii.c strace-x.c strace-xx.c \ - swap.c sxetmask.c symlink.c symlinkat.c sync.c \ - sync_file_range.c sync_file_range2.c sysinfo.c syslog.c \ -- syslog-success.c tee.c threads-execve.c \ -+ syslog-success.c tee.c tgkill.c threads-execve.c \ - threads-execve--quiet-thread-execve.c threads-execve-q.c \ - threads-execve-qq.c threads-execve-qqq.c time.c timer_create.c \ - timer_xettime.c timerfd_xettime.c times.c times-fail.c tkill.c \ -@@ -4669,7 +4673,7 @@ - strace--strings-in-hex-non-ascii.c strace-x.c strace-xx.c \ - swap.c sxetmask.c symlink.c symlinkat.c sync.c \ - sync_file_range.c sync_file_range2.c sysinfo.c syslog.c \ -- syslog-success.c tee.c threads-execve.c \ -+ syslog-success.c tee.c tgkill.c threads-execve.c \ - threads-execve--quiet-thread-execve.c threads-execve-q.c \ - threads-execve-qq.c threads-execve-qqq.c time.c timer_create.c \ - timer_xettime.c timerfd_xettime.c times.c times-fail.c tkill.c \ -@@ -5724,6 +5728,7 @@ - sysinfo \ - syslog \ - tee \ -+ tgkill \ - time \ - timer_create \ - timer_xettime \ -@@ -6133,7 +6138,7 @@ - strace-xx.gen.test swap.gen.test sxetmask.gen.test \ - symlink.gen.test symlinkat.gen.test sync.gen.test \ - sync_file_range.gen.test sync_file_range2.gen.test \ -- sysinfo.gen.test syslog.gen.test tee.gen.test \ -+ sysinfo.gen.test syslog.gen.test tee.gen.test tgkill.gen.test \ - threads-execve--quiet-thread-execve.gen.test \ - threads-execve-q.gen.test threads-execve-qq.gen.test \ - threads-execve-qqq.gen.test time.gen.test \ -@@ -9355,6 +9360,10 @@ - @rm -f tee$(EXEEXT) - $(AM_V_CCLD)$(LINK) $(tee_OBJECTS) $(tee_LDADD) $(LIBS) - -+tgkill$(EXEEXT): $(tgkill_OBJECTS) $(tgkill_DEPENDENCIES) $(EXTRA_tgkill_DEPENDENCIES) -+ @rm -f tgkill$(EXEEXT) -+ $(AM_V_CCLD)$(LINK) $(tgkill_OBJECTS) $(tgkill_LDADD) $(LIBS) -+ - threads-execve$(EXEEXT): $(threads_execve_OBJECTS) $(threads_execve_DEPENDENCIES) $(EXTRA_threads_execve_DEPENDENCIES) - @rm -f threads-execve$(EXEEXT) - $(AM_V_CCLD)$(LINK) $(threads_execve_OBJECTS) $(threads_execve_LDADD) $(LIBS) -@@ -10349,6 +10358,7 @@ - @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/syslog-success.Po@am__quote@ # am--include-marker - @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/syslog.Po@am__quote@ # am--include-marker - @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/tee.Po@am__quote@ # am--include-marker -+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/tgkill.Po@am__quote@ # am--include-marker - @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/threads-execve--quiet-thread-execve.Po@am__quote@ # am--include-marker - @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/threads-execve-q.Po@am__quote@ # am--include-marker - @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/threads-execve-qq.Po@am__quote@ # am--include-marker -@@ -12170,6 +12180,7 @@ - -rm -f ./$(DEPDIR)/syslog-success.Po - -rm -f ./$(DEPDIR)/syslog.Po - -rm -f ./$(DEPDIR)/tee.Po -+ -rm -f ./$(DEPDIR)/tgkill.Po - -rm -f ./$(DEPDIR)/threads-execve--quiet-thread-execve.Po - -rm -f ./$(DEPDIR)/threads-execve-q.Po - -rm -f ./$(DEPDIR)/threads-execve-qq.Po -@@ -13026,6 +13037,7 @@ - -rm -f ./$(DEPDIR)/syslog-success.Po - -rm -f ./$(DEPDIR)/syslog.Po - -rm -f ./$(DEPDIR)/tee.Po -+ -rm -f ./$(DEPDIR)/tgkill.Po - -rm -f ./$(DEPDIR)/threads-execve--quiet-thread-execve.Po - -rm -f ./$(DEPDIR)/threads-execve-q.Po - -rm -f ./$(DEPDIR)/threads-execve-qq.Po -@@ -15085,6 +15097,9 @@ - $(srcdir)/tee.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in - $(AM_V_GEN) $^ $@ - -+$(srcdir)/tgkill.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in -+ $(AM_V_GEN) $^ $@ -+ - $(srcdir)/threads-execve--quiet-thread-execve.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in - $(AM_V_GEN) $^ $@ - diff --git a/0134-PID-namespace-translation-support.patch b/0134-PID-namespace-translation-support.patch deleted file mode 100755 index 0938d16..0000000 --- a/0134-PID-namespace-translation-support.patch +++ /dev/null @@ -1,1478 +0,0 @@ -From bf533b84fd7200399c9b0e68fdf10c6aaf8b1a7a Mon Sep 17 00:00:00 2001 -From: =?UTF-8?q?=C3=81kos=20Uzonyi?= -Date: Mon, 8 Jun 2020 19:01:03 +0200 -Subject: [PATCH 134/138] PID namespace translation support - -* defs.h (pidns_translation): New variable. -(tcb): Add pid_ns field. -(RVAL_MASK): Change value from 013 to 017. -(RVAL_TID, RVAL_SID, RVAL_TGID, RVAL_PGID): New definitions. -(pid_type): New enum. -(pidns_init, translate_pid, get_proc_pid, printpid, printpid_tgid_pgid): -New function declarations. -* largefile_wrappers.h (fstat_fd): New macro. -* pidns.c: New file. -* trie.c: New file. -* trie.h: New file. -* Makefile.am (libstrace_a_SOURCES): Add trie.c, trie.h, pidns.c. -* strace.c (pidns_translation): New variable. -(init): Add --pidns-translation option. -* syscall.c (syscall_exiting_trace): Handle RVAL_* return values. -* NEWS: Mention this. -* strace.1.in: Add description for new option. - -Co-Authored-by: Eugene Syromyatnikov - -Conflicts: - NEWS ---- - Makefile.am | 3 + - defs.h | 56 ++++- - largefile_wrappers.h | 2 + - pidns.c | 608 +++++++++++++++++++++++++++++++++++++++++++++++++++ - strace.1.in | 4 + - strace.c | 9 + - syscall.c | 15 ++ - trie.c | 290 ++++++++++++++++++++++++ - trie.h | 92 ++++++++ - 9 files changed, 1078 insertions(+), 1 deletion(-) - create mode 100644 pidns.c - create mode 100644 trie.c - create mode 100644 trie.h - -Index: strace-5.7/Makefile.am -=================================================================== ---- strace-5.7.orig/Makefile.am 2020-09-09 15:50:13.471900510 +0200 -+++ strace-5.7/Makefile.am 2020-09-09 15:52:09.159983257 +0200 -@@ -233,6 +233,7 @@ - personality.c \ - pidfd_getfd.c \ - pidfd_open.c \ -+ pidns.c \ - pkeys.c \ - poll.c \ - prctl.c \ -@@ -344,6 +345,8 @@ - time.c \ - times.c \ - trace_event.h \ -+ trie.c \ -+ trie.h \ - truncate.c \ - ubi.c \ - ucopy.c \ -Index: strace-5.7/defs.h -=================================================================== ---- strace-5.7.orig/defs.h 2020-09-09 15:50:13.473900511 +0200 -+++ strace-5.7/defs.h 2020-09-09 15:52:09.159983257 +0200 -@@ -280,6 +280,13 @@ - struct timespec etime; /* Syscall entry time (CLOCK_MONOTONIC) */ - struct timespec delay_expiration_time; /* When does the delay end */ - -+ /* -+ * The ID of the PID namespace of this process -+ * (inode number of /proc//ns/pid) -+ * (0: not initialized) -+ */ -+ unsigned int pid_ns; -+ - struct mmap_cache_t *mmap_cache; - - /* -@@ -413,7 +420,11 @@ - # define RVAL_HEX 001 /* hex format */ - # define RVAL_OCTAL 002 /* octal format */ - # define RVAL_FD 010 /* file descriptor */ --# define RVAL_MASK 013 /* mask for these values */ -+# define RVAL_TID 011 /* task ID */ -+# define RVAL_SID 012 /* session ID */ -+# define RVAL_TGID 013 /* thread group ID */ -+# define RVAL_PGID 014 /* process group ID */ -+# define RVAL_MASK 017 /* mask for these values */ - - # define RVAL_STR 020 /* Print `auxstr' field after return val */ - # define RVAL_NONE 040 /* Print nothing */ -@@ -428,6 +439,16 @@ - - # define indirect_ipccall(tcp) (tcp_sysent(tcp)->sys_flags & TRACE_INDIRECT_SUBCALL) - -+enum pid_type { -+ PT_TID, -+ PT_TGID, -+ PT_PGID, -+ PT_SID, -+ -+ PT_COUNT, -+ PT_NONE = -1 -+}; -+ - enum sock_proto { - SOCK_PROTO_UNKNOWN, - SOCK_PROTO_UNIX, -@@ -469,6 +490,7 @@ - extern int Tflag_width; - extern bool iflag; - extern bool count_wallclock; -+extern unsigned int pidns_translation; - /* are we filtering traces based on paths? */ - extern struct path_set { - const char **paths_selected; -@@ -984,6 +1006,29 @@ - extern kernel_ulong_t * - fetch_indirect_syscall_args(struct tcb *, kernel_ulong_t addr, unsigned int n_args); - -+extern void pidns_init(void); -+ -+/** -+ * Returns the pid of the tracee as present in /proc of the tracer (can be -+ * different from tcp->pid if /proc and the tracer process are in different PID -+ * namespaces). -+ */ -+extern int get_proc_pid(struct tcb *); -+ -+/** -+ * Translates a pid from tracee's namespace to our namepace. -+ * -+ * @param tcp The tcb of the tracee -+ * (NULL: from_id is in strace's namespace. Useful for -+ * getting the proc PID of from_id) -+ * @param from_id The id to be translated -+ * @param type The PID type of from_id -+ * @param proc_pid_ptr If not NULL, writes the proc PID to this location -+ * @return The translated id, or 0 if translation fails. -+ */ -+extern int translate_pid(struct tcb *, int dest_id, enum pid_type type, -+ int *proc_pid_ptr); -+ - extern void - dumpiov_in_msghdr(struct tcb *, kernel_ulong_t addr, kernel_ulong_t data_size); - -@@ -1059,6 +1104,15 @@ - * of the tracee the descriptor tcp). This is a stub. - */ - extern void printfd_pid_tracee_ns(struct tcb *tcp, pid_t pid, int fd); -+ -+/** Prints a PID specified in the tracee's PID namespace */ -+extern void printpid(struct tcb *, int pid, enum pid_type type); -+ -+/** -+ * Prints pid as a TGID if positive, and PGID if negative -+ * (like the first argument of kill). -+ */ -+extern void printpid_tgid_pgid(struct tcb *, int pid); - extern void print_sockaddr(struct tcb *, const void *sa, int len); - extern bool - print_inet_addr(int af, const void *addr, unsigned int len, const char *var_name); -Index: strace-5.7/largefile_wrappers.h -=================================================================== ---- strace-5.7.orig/largefile_wrappers.h 2020-09-09 15:50:13.473900511 +0200 -+++ strace-5.7/largefile_wrappers.h 2020-09-09 15:50:18.017903762 +0200 -@@ -29,6 +29,7 @@ - # else - # define fcntl_fd fcntl - # endif -+# define fstat_fd fstat64 - # define strace_stat_t struct stat64 - # define stat_file stat64 - # define struct_dirent struct dirent64 -@@ -39,6 +40,7 @@ - # define open_file open - # define fopen_stream fopen - # define fcntl_fd fcntl -+# define fstat_fd fstat - # define strace_stat_t struct stat - # define stat_file stat - # define struct_dirent struct dirent -Index: strace-5.7/pidns.c -=================================================================== ---- /dev/null 1970-01-01 00:00:00.000000000 +0000 -+++ strace-5.7/pidns.c 2020-09-09 15:50:18.018903762 +0200 -@@ -0,0 +1,608 @@ -+/* -+ * Copyright (c) 2020 Ákos Uzonyi -+ * All rights reserved. -+ * -+ * SPDX-License-Identifier: LGPL-2.1-or-later -+ */ -+ -+#include "defs.h" -+ -+ -+#include -+#include -+#include -+#include -+#include -+ -+#include -+ -+#include -+#include -+#include -+#include -+ -+#include "largefile_wrappers.h" -+#include "trie.h" -+#include "nsfs.h" -+#include "xmalloc.h" -+#include "xstring.h" -+ -+/** -+ * Key: PID NS ID -+ * Value: a btree: -+ * Key: a process PID in NS -+ * Value: the process's PID as present in /proc -+ */ -+static struct trie *ns_pid_to_proc_pid[PT_COUNT]; -+ -+/** -+ * Key: Proc PID -+ * Value: struct proc_data -+ */ -+static struct trie *proc_data_cache; -+ -+static bool ns_get_parent_enotty = false; -+ -+static const char tid_str[] = "NSpid:\t"; -+static const char tgid_str[] = "NStgid:\t"; -+static const char pgid_str[] = "NSpgid:\t"; -+static const char sid_str[] = "NSsid:\t"; -+ -+static const struct { -+ const char *str; -+ size_t size; -+} id_strs[PT_COUNT] = { -+ [PT_TID] = { tid_str, sizeof(tid_str) - 1 }, -+ [PT_TGID] = { tgid_str, sizeof(tgid_str) - 1 }, -+ [PT_PGID] = { pgid_str, sizeof(pgid_str) - 1 }, -+ [PT_SID] = { sid_str, sizeof(sid_str) - 1 }, -+}; -+ -+ -+/** -+ * Limit on PID NS hierarchy depth, imposed since Linux 3.7. NS traversal -+ * is not possible before Linux 4.9, so we consider this limit pretty universal. -+ */ -+#define MAX_NS_DEPTH 32 -+ -+static const size_t ns_id_size = sizeof(unsigned int) * 8; -+static const uint8_t ptr_sz_lg = (sizeof(void *) == 8 ? 6 : 5); -+ -+static int pid_max; -+static uint8_t pid_max_size, pid_max_size_lg; -+ -+struct proc_data { -+ int proc_pid; -+ int ns_count; -+ unsigned int ns_hierarchy[MAX_NS_DEPTH]; -+ int id_count[PT_COUNT]; -+ int id_hierarchy[PT_COUNT][MAX_NS_DEPTH]; -+}; -+ -+/** -+ * Helper function for creating a trie. -+ * -+ * For node_key_bits and data_block_key_bits 4 is used (so trie height is 32 / 4 -+ * = 8, and node sizes are 8 byte * 2^4 = 128 bytes), which seems to be a good -+ * tradeoff between memory usage and lookup time. It should not be too large, -+ * since there can be large holes between PIDs, and it would be just a waste of -+ * memory having large nodes with lot of NULL pointers in them. -+ */ -+static struct trie * -+create_trie_4(uint8_t key_size, uint8_t item_size_lg, uint64_t empty_value) -+{ -+ struct trie *t = trie_create(key_size, item_size_lg, 4, 4, empty_value); -+ if (!t) -+ error_msg_and_die("creating trie failed"); -+ -+ return t; -+} -+ -+void -+pidns_init(void) -+{ -+ if (proc_data_cache) -+ return; -+ -+ pid_max = INT_MAX; -+ if (read_int_from_file("/proc/sys/kernel/pid_max", &pid_max) < 0) -+ debug_func_perror_msg("reading /proc/sys/kernel/pid_max"); -+ pid_max_size = ilog2_32(pid_max - 1) + 1; -+ pid_max_size_lg = ilog2_32(pid_max_size - 1) + 1; -+ -+ for (int i = 0; i < PT_COUNT; i++) -+ ns_pid_to_proc_pid[i] = create_trie_4(ns_id_size, ptr_sz_lg, 0); -+ -+ proc_data_cache = create_trie_4(pid_max_size, ptr_sz_lg, 0); -+} -+ -+static void -+put_proc_pid(unsigned int ns, int ns_pid, enum pid_type type, int proc_pid) -+{ -+ struct trie *b = (struct trie *) (uintptr_t) trie_get(ns_pid_to_proc_pid[type], ns); -+ if (!b) { -+ b = create_trie_4(pid_max_size, pid_max_size_lg, 0); -+ trie_set(ns_pid_to_proc_pid[type], ns, (uint64_t) (uintptr_t) b); -+ } -+ trie_set(b, ns_pid, proc_pid); -+} -+ -+static int -+get_cached_proc_pid(unsigned int ns, int ns_pid, enum pid_type type) -+{ -+ struct trie *b = (struct trie *) (uintptr_t) -+ trie_get(ns_pid_to_proc_pid[type], ns); -+ if (!b) -+ return 0; -+ -+ return trie_get(b, ns_pid); -+} -+ -+/** -+ * Helper function, converts pid to string, or to "self" for pid == 0. -+ * Uses static buffer for operation. -+ */ -+static const char * -+pid_to_str(pid_t pid) -+{ -+ if (!pid) -+ return "self"; -+ -+ static char buf[sizeof("-2147483648")]; -+ xsprintf(buf, "%d", pid); -+ return buf; -+} -+ -+/** -+ * Returns a list of PID NS IDs for the specified PID. -+ * -+ * @param proc_pid PID (as present in /proc) to get information for. -+ * @param ns_buf Pointer to buffer that is able to contain at least -+ * ns_buf_size items. -+ * @return Amount of NS in list. 0 indicates error. -+ */ -+static size_t -+get_ns_hierarchy(int proc_pid, unsigned int *ns_buf, size_t ns_buf_size) -+{ -+ char path[PATH_MAX + 1]; -+ xsprintf(path, "/proc/%s/ns/pid", pid_to_str(proc_pid)); -+ -+ int fd = open_file(path, O_RDONLY); -+ if (fd < 0) -+ return 0; -+ -+ size_t n = 0; -+ while (n < ns_buf_size) { -+ strace_stat_t st; -+ if (fstat_fd(fd, &st)) -+ break; -+ -+ ns_buf[n++] = st.st_ino; -+ if (n >= ns_buf_size) -+ break; -+ -+ if (ns_get_parent_enotty) -+ break; -+ -+ int parent_fd = ioctl(fd, NS_GET_PARENT); -+ if (parent_fd < 0) { -+ switch (errno) { -+ case EPERM: -+ break; -+ -+ case ENOTTY: -+ ns_get_parent_enotty = true; -+ error_msg("NS_* ioctl commands are not " -+ "supported by the kernel"); -+ break; -+ -+ default: -+ perror_func_msg("ioctl(NS_GET_PARENT)"); -+ break; -+ } -+ -+ break; -+ } -+ -+ close(fd); -+ fd = parent_fd; -+ } -+ -+ close(fd); -+ -+ return n; -+} -+ -+/** -+ * Get list of IDs present in NS* proc status record. IDs are placed as they are -+ * stored in /proc (from top to bottom of NS hierarchy). -+ * -+ * @param proc_pid PID (as present in /proc) to get information for. -+ * @param id_buf Pointer to buffer that is able to contain at least -+ * MAX_NS_DEPTH items. Can be NULL. -+ * @param type Type of ID requested. -+ * @return Number of items stored in id_list. 0 indicates error. -+ */ -+static size_t -+get_id_list(int proc_pid, int *id_buf, enum pid_type type) -+{ -+ const char *ns_str = id_strs[type].str; -+ size_t ns_str_size = id_strs[type].size; -+ -+ size_t n = 0; -+ -+ char status_path[PATH_MAX + 1]; -+ xsprintf(status_path, "/proc/%s/status", pid_to_str(proc_pid)); -+ FILE *f = fopen_stream(status_path, "r"); -+ if (!f) -+ return 0; -+ -+ char *line = NULL; -+ size_t linesize = 0; -+ char *p = NULL; -+ -+ while (getline(&line, &linesize, f) > 0) { -+ if (strncmp(line, ns_str, ns_str_size) == 0) { -+ p = line + ns_str_size; -+ break; -+ } -+ } -+ -+ while (p) { -+ errno = 0; -+ long id = strtol(p, NULL, 10); -+ -+ if (id < 0 || id > INT_MAX || errno) { -+ perror_func_msg("converting pid (%ld) to int", id); -+ break; -+ } -+ -+ if (id_buf) -+ id_buf[n] = (int) id; -+ -+ n++; -+ strsep(&p, "\t"); -+ } -+ -+ free(line); -+ fclose(f); -+ -+ return n; -+} -+ -+/** -+ * Returns whether the /proc filesystem's PID namespace is the same as strace's. -+ */ -+static bool -+is_proc_ours(void) -+{ -+ static int cached_val = -1; -+ -+ if (cached_val < 0) -+ cached_val = get_id_list(0, NULL, PT_TID) <= 1; -+ -+ return cached_val; -+} -+ -+/** -+ * Returns the PID namespace of the tracee -+ */ -+static unsigned int -+get_ns(struct tcb *tcp) -+{ -+ if (!tcp->pid_ns) { -+ int proc_pid = 0; -+ translate_pid(NULL, tcp->pid, PT_TID, &proc_pid); -+ -+ if (proc_pid) -+ get_ns_hierarchy(proc_pid, &tcp->pid_ns, 1); -+ } -+ -+ return tcp->pid_ns; -+} -+ -+/** -+ * Returns the PID namespace of strace -+ */ -+static unsigned int -+get_our_ns(void) -+{ -+ static unsigned int our_ns = 0; -+ static bool our_ns_initialised = false; -+ -+ if (!our_ns_initialised) { -+ get_ns_hierarchy(0, &our_ns, 1); -+ our_ns_initialised = true; -+ } -+ -+ return our_ns; -+} -+ -+/** -+ * Returns the cached proc_data struct associated with proc_pid. -+ * If none found, allocates a new proc_data. -+ */ -+static struct proc_data * -+get_or_create_proc_data(int proc_pid) -+{ -+ struct proc_data *pd = (struct proc_data *) (uintptr_t) -+ trie_get(proc_data_cache, proc_pid); -+ -+ if (!pd) { -+ pd = calloc(1, sizeof(*pd)); -+ if (!pd) -+ return NULL; -+ -+ pd->proc_pid = proc_pid; -+ trie_set(proc_data_cache, proc_pid, (uint64_t) (uintptr_t) pd); -+ } -+ -+ return pd; -+} -+ -+/** -+ * Updates the proc_data from /proc -+ * If the process does not exists, returns false, and frees the proc_data -+ */ -+static bool -+update_proc_data(struct proc_data *pd, enum pid_type type) -+{ -+ pd->ns_count = get_ns_hierarchy(pd->proc_pid, -+ pd->ns_hierarchy, MAX_NS_DEPTH); -+ if (!pd->ns_count) -+ goto fail; -+ -+ pd->id_count[type] = get_id_list(pd->proc_pid, -+ pd->id_hierarchy[type], type); -+ if (!pd->id_count[type]) -+ goto fail; -+ -+ return true; -+ -+fail: -+ trie_set(proc_data_cache, pd->proc_pid, (uint64_t) (uintptr_t) NULL); -+ free(pd); -+ return false; -+} -+ -+/** -+ * Paramters for id translation -+ */ -+struct translate_id_params { -+ /* The result (output) */ -+ int result_id; -+ /* The proc data of the process (output) */ -+ struct proc_data *pd; -+ -+ /* The namespace to be translated from */ -+ unsigned int from_ns; -+ /* The id to be translated */ -+ int from_id; -+ /* The type of the id */ -+ enum pid_type type; -+}; -+ -+/** -+ * Translates an id to our namespace, given the proc_pid of the process, -+ * by reading files in /proc. -+ * -+ * @param tip The parameters -+ * @param proc_pid The proc pid of the process. -+ * If 0, use the cached values in tip->pd. -+ */ -+static void -+translate_id_proc_pid(struct translate_id_params *tip, int proc_pid) -+{ -+ struct proc_data *pd = proc_pid ? -+ get_or_create_proc_data(proc_pid) : -+ tip->pd; -+ -+ tip->result_id = 0; -+ tip->pd = NULL; -+ -+ if (!pd) -+ return; -+ -+ if (proc_pid && !update_proc_data(pd, tip->type)) -+ return; -+ -+ if (!pd->ns_count || pd->id_count[tip->type] < pd->ns_count) -+ return; -+ -+ int *id_hierarchy = pd->id_hierarchy[tip->type]; -+ int id_count = pd->id_count[tip->type]; -+ -+ for (int i = 0; i < pd->ns_count; i++) { -+ unsigned int ns = pd->ns_hierarchy[i]; -+ int ns_id = id_hierarchy[id_count - i - 1]; -+ int our_id = id_hierarchy[id_count - pd->ns_count]; -+ -+ if (ns != tip->from_ns) -+ continue; -+ -+ if (ns_id != tip->from_id) -+ return; -+ -+ tip->result_id = our_id; -+ tip->pd = pd; -+ return; -+ } -+} -+ -+/** -+ * Translates an id to our namespace by reading all proc entries in a directory. -+ * The directory is either /proc or /proc//task. -+ * -+ * -+ * @param tip The parameters -+ * @param path The path of the directory to be read. -+ * @param read_task_dir Whether recurse to "task" subdirectory. -+ */ -+static void -+translate_id_dir(struct translate_id_params *tip, const char *path, -+ bool read_task_dir) -+{ -+ DIR *dir = opendir(path); -+ if (!dir) { -+ debug_func_perror_msg("opening dir: %s", path); -+ return; -+ } -+ -+ while (!tip->result_id) { -+ errno = 0; -+ struct_dirent *entry = read_dir(dir); -+ if (!entry) { -+ if (errno) -+ perror_func_msg("readdir"); -+ -+ break; -+ } -+ -+ if (entry->d_type != DT_DIR) -+ continue; -+ -+ errno = 0; -+ long proc_pid = strtol(entry->d_name, NULL, 10); -+ if (proc_pid < 1 || proc_pid > INT_MAX || errno) -+ continue; -+ -+ if (read_task_dir) { -+ char task_dir_path[PATH_MAX + 1]; -+ xsprintf(task_dir_path, "/proc/%ld/task", proc_pid); -+ translate_id_dir(tip, task_dir_path, false); -+ } -+ -+ if (tip->result_id) -+ break; -+ -+ translate_id_proc_pid(tip, proc_pid); -+ } -+ -+ closedir(dir); -+} -+ -+/** -+ * Iterator function of the proc_data_cache for id translation. -+ * If the cache contains the id we are looking for, reads the corresponding -+ * directory in /proc, and if cache is valid, saves the result. -+ */ -+static void -+proc_data_cache_iterator_fn(void* fn_data, uint64_t key, uint64_t val) -+{ -+ struct translate_id_params *tip = (struct translate_id_params *)fn_data; -+ struct proc_data *pd = (struct proc_data *) (uintptr_t) val; -+ -+ if (!pd) -+ return; -+ -+ /* Result already found in an earlier iteration */ -+ if (tip->result_id) -+ return; -+ -+ /* Translate from cache */ -+ tip->pd = pd; -+ translate_id_proc_pid(tip, 0); -+ if (!tip->result_id) -+ return; -+ -+ /* Now translate from actual data in /proc, to check cache validity */ -+ translate_id_proc_pid(tip, pd->proc_pid); -+} -+ -+int -+translate_pid(struct tcb *tcp, int from_id, enum pid_type type, -+ int *proc_pid_ptr) -+{ -+ if (from_id <= 0 || type < 0 || type >= PT_COUNT) -+ return 0; -+ -+ /* If translation is trivial */ -+ if ((!tcp || get_ns(tcp) == get_our_ns()) && -+ (!proc_pid_ptr || is_proc_ours())) { -+ if (proc_pid_ptr) -+ *proc_pid_ptr = from_id; -+ -+ return from_id; -+ } -+ -+ struct translate_id_params tip = { -+ .result_id = 0, -+ .pd = NULL, -+ .from_ns = tcp ? get_ns(tcp) : get_our_ns(), -+ .from_id = from_id, -+ .type = type, -+ }; -+ -+ if (!tip.from_ns) -+ return 0; -+ -+ if (ns_get_parent_enotty) -+ return 0; -+ -+ /* Look for a cached proc_pid for this (from_ns, from_id) pair */ -+ int cached_proc_pid = get_cached_proc_pid(tip.from_ns, tip.from_id, -+ tip.type); -+ if (cached_proc_pid) { -+ translate_id_proc_pid(&tip, cached_proc_pid); -+ if (tip.result_id) -+ goto exit; -+ } -+ -+ /* Iterate through the cache, find potential proc_data */ -+ trie_iterate_keys(proc_data_cache, 0, pid_max - 1, -+ proc_data_cache_iterator_fn, &tip); -+ /* (proc_data_cache_iterator_fn takes care about updating proc_data) */ -+ if (tip.result_id) -+ goto exit; -+ -+ /* No cache helped, read all entries in /proc */ -+ translate_id_dir(&tip, "/proc", true); -+ -+exit: -+ if (tip.pd) { -+ if (tip.pd->proc_pid) -+ put_proc_pid(tip.from_ns, tip.from_id, tip.type, -+ tip.pd->proc_pid); -+ -+ if (proc_pid_ptr) -+ *proc_pid_ptr = tip.pd->proc_pid; -+ } -+ -+ return tip.result_id; -+} -+ -+int -+get_proc_pid(struct tcb *tcp) -+{ -+ int proc_pid = 0; -+ translate_pid(NULL, tcp->pid, PT_TID, &proc_pid); -+ return proc_pid; -+} -+ -+static void -+printpid_translation(struct tcb *tcp, int pid, enum pid_type type) -+{ -+ if (!pidns_translation) -+ return; -+ -+ int strace_pid = translate_pid(tcp, pid, type, NULL); -+ if (strace_pid && strace_pid != pid) -+ tprintf_comment("%d in strace's PID NS", strace_pid); -+} -+ -+void -+printpid(struct tcb *tcp, int pid, enum pid_type type) -+{ -+ tprintf("%d", pid); -+ printpid_translation(tcp, pid, type); -+} -+ -+void -+printpid_tgid_pgid(struct tcb *tcp, int pid) -+{ -+ tprintf("%d", pid); -+ if (pid > 0) -+ printpid_translation(tcp, pid, PT_TGID); -+ else if (pid < -1) -+ printpid_translation(tcp, -pid, PT_PGID); -+} -Index: strace-5.7/strace.1.in -=================================================================== ---- strace-5.7.orig/strace.1.in 2020-09-09 15:50:13.475900513 +0200 -+++ strace-5.7/strace.1.in 2020-09-09 15:50:18.018903762 +0200 -@@ -1075,6 +1075,10 @@ - protocol-specific information associated with socket file descriptors, - block/character device number associated with device file descriptors, - and PIDs asociated with pidfd file descriptors. -+.TP -+.B \-\-pidns\-translation -+If strace and tracee are in different PID namespaces, print PIDs in -+strace's namespace, too. - .SS Statistics - .TP 12 - .B \-c -Index: strace-5.7/strace.c -=================================================================== ---- strace-5.7.orig/strace.c 2020-09-09 15:50:13.476900514 +0200 -+++ strace-5.7/strace.c 2020-09-09 15:52:08.646982890 +0200 -@@ -133,6 +133,8 @@ - static int post_attach_sigstop = TCB_IGNORE_ONE_SIGSTOP; - #define use_seize (post_attach_sigstop == 0) - -+unsigned int pidns_translation; -+ - static bool detach_on_execve; - - static int exit_code; -@@ -1998,6 +2000,8 @@ - - os_release = get_os_release(); - -+ pidns_init(); -+ - shared_log = stderr; - set_sortby(DEFAULT_SORTBY); - set_personality(DEFAULT_PERSONALITY); -@@ -2022,6 +2026,7 @@ - GETOPT_FOLLOWFORKS, - GETOPT_OUTPUT_SEPARATELY, - GETOPT_TS, -+ GETOPT_PIDNS_TRANSLATION, - - GETOPT_QUAL_TRACE, - GETOPT_QUAL_ABBREV, -@@ -2072,6 +2077,7 @@ - { "summary-wall-clock", no_argument, 0, 'w' }, - { "strings-in-hex", optional_argument, 0, GETOPT_HEX_STR }, - { "const-print-style", required_argument, 0, 'X' }, -+ { "pidns-translation", no_argument , 0, GETOPT_PIDNS_TRANSLATION }, - { "successful-only", no_argument, 0, 'z' }, - { "failed-only", no_argument, 0, 'Z' }, - { "failing-only", no_argument, 0, 'Z' }, -@@ -2285,6 +2291,9 @@ - case 'y': - yflag_short++; - break; -+ case GETOPT_PIDNS_TRANSLATION: -+ pidns_translation++; -+ break; - case 'z': - clear_number_set_array(status_set, 1); - add_number_to_set(STATUS_SUCCESSFUL, status_set); -Index: strace-5.7/syscall.c -=================================================================== ---- strace-5.7.orig/syscall.c 2020-09-09 15:50:13.477900514 +0200 -+++ strace-5.7/syscall.c 2020-09-09 15:50:18.019903763 +0200 -@@ -930,6 +930,21 @@ - tprintf("= %" PRI_kld, tcp->u_rval); - } - break; -+ case RVAL_TID: -+ case RVAL_SID: -+ case RVAL_TGID: -+ case RVAL_PGID: { -+ #define _(_t) [RVAL_##_t - RVAL_TID] = PT_##_t -+ static const enum pid_type types[] = { -+ _(TID), _(SID), _(TGID), _(PGID), -+ }; -+ #undef _ -+ -+ tprints("= "); -+ printpid(tcp, tcp->u_rval, -+ types[(sys_res & RVAL_MASK) - RVAL_TID]); -+ break; -+ } - default: - error_msg("invalid rval format"); - break; -Index: strace-5.7/trie.c -=================================================================== ---- /dev/null 1970-01-01 00:00:00.000000000 +0000 -+++ strace-5.7/trie.c 2020-09-09 15:50:18.019903763 +0200 -@@ -0,0 +1,290 @@ -+/* -+ * Simple trie implementation for key-value mapping storage -+ * -+ * Copyright (c) 2020 Ákos Uzonyi -+ * All rights reserved. -+ * -+ * SPDX-License-Identifier: LGPL-2.1-or-later -+ */ -+ -+#ifdef HAVE_CONFIG_H -+# include "config.h" -+#endif -+ -+#include -+#include -+ -+#include "trie.h" -+#include "xmalloc.h" -+ -+static const uint8_t ptr_sz_lg = (sizeof(void *) == 8 ? 6 : 5); -+ -+/** -+ * Returns lg2 of node size in bits for the specific level of the trie. -+ */ -+static uint8_t -+trie_get_node_size(struct trie *t, uint8_t depth) -+{ -+ /* Last level contains data and we allow it having a different size */ -+ if (depth == t->max_depth) -+ return t->data_block_key_bits + t->item_size_lg; -+ /* Last level of the tree can be smaller */ -+ if (depth == t->max_depth - 1) -+ return (t->key_size - t->data_block_key_bits - 1) % -+ t->node_key_bits + 1 + ptr_sz_lg; -+ -+ return t->node_key_bits + ptr_sz_lg; -+} -+ -+/** -+ * Provides starting offset of bits in key corresponding to the node index -+ * at the specific level. -+ */ -+static uint8_t -+trie_get_node_bit_offs(struct trie *t, uint8_t depth) -+{ -+ uint8_t offs; -+ -+ if (depth == t->max_depth) -+ return 0; -+ -+ offs = t->data_block_key_bits; -+ -+ if (depth == t->max_depth - 1) -+ return offs; -+ -+ /* data_block_size + remainder */ -+ offs += trie_get_node_size(t, t->max_depth - 1) - ptr_sz_lg; -+ offs += (t->max_depth - depth - 2) * t->node_key_bits; -+ -+ return offs; -+} -+ -+struct trie * -+trie_create(uint8_t key_size, uint8_t item_size_lg, uint8_t node_key_bits, -+ uint8_t data_block_key_bits, uint64_t empty_value) -+{ -+ if (item_size_lg > 6) -+ return NULL; -+ if (key_size > 64) -+ return NULL; -+ if (node_key_bits < 1) -+ return NULL; -+ if (data_block_key_bits < 1 || data_block_key_bits > key_size) -+ return NULL; -+ -+ struct trie *t = malloc(sizeof(*t)); -+ if (!t) -+ return NULL; -+ -+ t->empty_value = empty_value; -+ t->data = NULL; -+ t->item_size_lg = item_size_lg; -+ t->node_key_bits = node_key_bits; -+ t->data_block_key_bits = data_block_key_bits; -+ t->key_size = key_size; -+ t->max_depth = (key_size - data_block_key_bits + node_key_bits - 1) -+ / t->node_key_bits; -+ -+ if (item_size_lg != 6) -+ t->empty_value &= (((uint64_t) 1 << (1 << t->item_size_lg)) - 1); -+ -+ return t; -+} -+ -+static void * -+trie_create_data_block(struct trie *t) -+{ -+ uint64_t fill_value = t->empty_value; -+ for (int i = 1; i < 1 << (6 - t->item_size_lg); i++) { -+ fill_value <<= (1 << t->item_size_lg); -+ fill_value |= t->empty_value; -+ } -+ -+ uint8_t sz = t->data_block_key_bits + t->item_size_lg; -+ if (sz < 6) -+ sz = 6; -+ -+ size_t count = 1 << (sz - 6); -+ uint64_t *data_block = xcalloc(count, 8); -+ -+ for (size_t i = 0; i < count; i++) -+ data_block[i] = fill_value; -+ -+ return data_block; -+} -+ -+static uint64_t * -+trie_get_node(struct trie *t, uint64_t key, bool auto_create) -+{ -+ void **cur_node = &(t->data); -+ -+ if (t->key_size < 64 && key > (uint64_t) 1 << t->key_size) -+ return NULL; -+ -+ for (uint8_t cur_depth = 0; cur_depth <= t->max_depth; cur_depth++) { -+ uint8_t offs = trie_get_node_bit_offs(t, cur_depth); -+ uint8_t sz = trie_get_node_size(t, cur_depth); -+ -+ if (!*cur_node) { -+ if (!auto_create) -+ return NULL; -+ -+ if (cur_depth == t->max_depth) -+ *cur_node = trie_create_data_block(t); -+ else -+ *cur_node = xcalloc(1 << sz, 1); -+ } -+ -+ if (cur_depth == t->max_depth) -+ break; -+ -+ size_t pos = (key >> offs) & ((1 << (sz - ptr_sz_lg)) - 1); -+ cur_node = (((void **) (*cur_node)) + pos); -+ } -+ -+ return (uint64_t *) (*cur_node); -+} -+ -+static void -+trie_data_block_calc_pos(struct trie *t, uint64_t key, -+ uint64_t *pos, uint64_t *mask, uint64_t *offs) -+{ -+ uint64_t key_mask; -+ -+ key_mask = (1 << t->data_block_key_bits) - 1; -+ *pos = (key & key_mask) >> (6 - t->item_size_lg); -+ -+ if (t->item_size_lg == 6) { -+ *offs = 0; -+ *mask = -1; -+ return; -+ } -+ -+ key_mask = (1 << (6 - t->item_size_lg)) - 1; -+ *offs = (key & key_mask) * (1 << t->item_size_lg); -+ -+ *mask = (((uint64_t) 1 << (1 << t->item_size_lg)) - 1) << *offs; -+} -+ -+bool -+trie_set(struct trie *t, uint64_t key, uint64_t val) -+{ -+ uint64_t *data = trie_get_node(t, key, true); -+ if (!data) -+ return false; -+ -+ uint64_t pos, mask, offs; -+ trie_data_block_calc_pos(t, key, &pos, &mask, &offs); -+ -+ data[pos] &= ~mask; -+ data[pos] |= (val << offs) & mask; -+ -+ return true; -+} -+ -+static uint64_t -+trie_data_block_get(struct trie *t, uint64_t *data, uint64_t key) -+{ -+ if (!data) -+ return t->empty_value; -+ -+ uint64_t pos, mask, offs; -+ trie_data_block_calc_pos(t, key, &pos, &mask, &offs); -+ -+ return (data[pos] & mask) >> offs; -+} -+ -+uint64_t -+trie_get(struct trie *b, uint64_t key) -+{ -+ return trie_data_block_get(b, trie_get_node(b, key, false), key); -+} -+ -+static uint64_t -+trie_iterate_keys_node(struct trie *t, -+ trie_iterate_fn fn, void *fn_data, -+ void *node, uint64_t start, uint64_t end, -+ uint8_t depth) -+{ -+ if (start > end || !node) -+ return 0; -+ -+ if (t->key_size < 64) { -+ uint64_t key_max = ((uint64_t) 1 << t->key_size) - 1; -+ if (end > key_max) -+ end = key_max; -+ } -+ -+ if (depth == t->max_depth) { -+ for (uint64_t i = start; i <= end; i++) -+ fn(fn_data, i, trie_data_block_get(t, -+ (uint64_t *) node, i)); -+ -+ return end - start + 1; -+ } -+ -+ uint8_t parent_node_bit_off = depth == 0 ? -+ t->key_size : -+ trie_get_node_bit_offs(t, depth - 1); -+ -+ uint64_t first_key_in_node = start & -+ (uint64_t) -1 << parent_node_bit_off; -+ -+ uint8_t node_bit_off = trie_get_node_bit_offs(t, depth); -+ uint8_t node_key_bits = parent_node_bit_off - node_bit_off; -+ uint64_t mask = ((uint64_t) 1 << (node_key_bits)) - 1; -+ uint64_t start_index = (start >> node_bit_off) & mask; -+ uint64_t end_index = (end >> node_bit_off) & mask; -+ uint64_t child_key_count = (uint64_t) 1 << node_bit_off; -+ -+ uint64_t count = 0; -+ -+ for (uint64_t i = start_index; i <= end_index; i++) { -+ uint64_t child_start = first_key_in_node + i * child_key_count; -+ uint64_t child_end = first_key_in_node + -+ (i + 1) * child_key_count - 1; -+ -+ if (child_start < start) -+ child_start = start; -+ if (child_end > end) -+ child_end = end; -+ -+ count += trie_iterate_keys_node(t, fn, fn_data, -+ ((void **) node)[i], child_start, child_end, -+ depth + 1); -+ } -+ -+ return count; -+} -+ -+uint64_t trie_iterate_keys(struct trie *t, uint64_t start, uint64_t end, -+ trie_iterate_fn fn, void *fn_data) -+{ -+ return trie_iterate_keys_node(t, fn, fn_data, t->data, -+ start, end, 0); -+} -+ -+static void -+trie_free_node(struct trie *t, void *node, uint8_t depth) -+{ -+ if (!node) -+ return; -+ -+ if (depth >= t->max_depth) -+ goto free_node; -+ -+ size_t sz = 1 << (trie_get_node_size(t, depth) - ptr_sz_lg); -+ for (size_t i = 0; i < sz; i++) -+ trie_free_node(t, ((void **) node)[i], depth + 1); -+ -+free_node: -+ free(node); -+} -+ -+void -+trie_free(struct trie *t) -+{ -+ trie_free_node(t, t->data, 0); -+ free(t); -+} -Index: strace-5.7/trie.h -=================================================================== ---- /dev/null 1970-01-01 00:00:00.000000000 +0000 -+++ strace-5.7/trie.h 2020-09-09 15:50:18.019903763 +0200 -@@ -0,0 +1,92 @@ -+/* -+ * Simple trie interface -+ * -+ * Copyright (c) 2020 Ákos Uzonyi -+ * All rights reserved. -+ * -+ * SPDX-License-Identifier: LGPL-2.1-or-later -+ */ -+ -+#ifndef STRACE_TRIE_H -+#define STRACE_TRIE_H -+ -+#include -+#include -+ -+/** -+ * Trie control structure. -+ * Trie implemented here has the following properties: -+ * * It allows storing values of the same size, the size can vary from 1 bit to -+ * 64 bit values (only power of 2 sizes are allowed). -+ * * The key can be up to 64 bits in size. -+ * * It has separate configuration for node size and data block size. -+ * -+ * How bits of key are used for different node levels: -+ * -+ * highest bits lowest bits -+ * | node_key_bits | node_key_bits | ... | | data_block_key_bits | -+ * \_________________________________________________________________________/ -+ * key_size -+ * -+ * So, the remainder is used on the lowest non-data node level. -+ * -+ * As of now, it doesn't implement any mechanisms for resizing/changing key -+ * size. De-fragmentation is also unsupported currently. -+ */ -+struct trie { -+ /** Return value of trie_get if key is not found */ -+ uint64_t empty_value; -+ -+ /** Pointer to root node */ -+ void *data; -+ -+ /** Key size in bits (0..64). */ -+ uint8_t key_size; -+ -+ /** -+ * Size of the stored values in log2 bits (0..6). -+ * (6: 64 bit values, 5: 32 bit values, ...) -+ */ -+ uint8_t item_size_lg; -+ -+ /** -+ * Number of bits in the key that make a symbol for a node. -+ * (equals to log2 of the child count of the node) -+ */ -+ uint8_t node_key_bits; -+ -+ /** -+ * Number of bits in the key that make a symbol for the data block (leaf). -+ * (equals to log2 of the value count stored in a data block) -+ */ -+ uint8_t data_block_key_bits; -+ -+ /** The depth of the data block. Calculated from the values above */ -+ uint8_t max_depth; -+}; -+ -+struct trie* trie_create(uint8_t key_size, uint8_t item_size_lg, -+ uint8_t node_key_bits, uint8_t data_block_key_bits, -+ uint64_t empty_value); -+ -+bool trie_set(struct trie *t, uint64_t key, uint64_t val); -+uint64_t trie_get(struct trie *t, uint64_t key); -+ -+typedef void (*trie_iterate_fn)(void *data, uint64_t key, uint64_t val); -+ -+/** -+ * Calls trie_iterate_fn for each key-value pair where -+ * key is inside the [start, end] interval (inclusive). -+ * -+ * @param t The trie. -+ * @param start The start of the key interval (inclusive). -+ * @param end The end of the key interval (inclusive). -+ * @param fn The function to be called. -+ * @param fn_data The value to be passed to fn. -+ */ -+uint64_t trie_iterate_keys(struct trie *t, uint64_t start, uint64_t end, -+ trie_iterate_fn fn, void *fn_data); -+ -+void trie_free(struct trie *t); -+ -+#endif /* !STRACE_TRIE_H */ -Index: strace-5.7/Makefile.in -=================================================================== ---- strace-5.7.orig/Makefile.in 2020-09-09 15:50:13.484900519 +0200 -+++ strace-5.7/Makefile.in 2020-09-09 15:54:59.569105143 +0200 -@@ -344,8 +344,8 @@ - nlattr.c nlattr.h nsfs.c nsfs.h nsig.h numa.c number_set.c \ - number_set.h oldstat.c open.c open_tree.c or1k_atomic.c \ - pathtrace.c perf.c perf_event_struct.h perf_ioctl.c \ -- personality.c pidfd_getfd.c pidfd_open.c pkeys.c poll.c \ -- prctl.c print_aio_sigset.c print_dev_t.c print_fields.h \ -+ personality.c pidfd_getfd.c pidfd_open.c pidns.c pkeys.c \ -+ poll.c prctl.c print_aio_sigset.c print_dev_t.c print_fields.h \ - print_group_req.c print_ifindex.c print_instruction_pointer.c \ - print_kernel_version.c print_mac.c print_mq_attr.c \ - print_msgbuf.c print_sg_req_info.c print_sigevent.c \ -@@ -369,10 +369,10 @@ - string_to_uint.h swapon.c sync_file_range.c sync_file_range2.c \ - syscall.c sysctl.c sysent.h sysent_shorthand_defs.h \ - sysent_shorthand_undefs.h sysinfo.c syslog.c sysmips.c term.c \ -- time.c times.c trace_event.h truncate.c ubi.c ucopy.c uid.c \ -- uid16.c umask.c umount.c uname.c upeek.c upoke.c userfaultfd.c \ -- ustat.c util.c utime.c utimes.c v4l2.c wait.c wait.h \ -- watchdog_ioctl.c xattr.c xfs_quota_stat.h xgetdents.c \ -+ time.c times.c trace_event.h trie.c trie.h truncate.c ubi.c \ -+ ucopy.c uid.c uid16.c umask.c umount.c uname.c upeek.c upoke.c \ -+ userfaultfd.c ustat.c util.c utime.c utimes.c v4l2.c wait.c \ -+ wait.h watchdog_ioctl.c xattr.c xfs_quota_stat.h xgetdents.c \ - xgetdents.h xlat.c xlat.h xmalloc.c xmalloc.h xstring.h \ - types/cryptouser.h types/evdev.h types/io_uring.h \ - types/openat2.h types/rtnl_link.h types/rtnl_mdb.h \ -@@ -487,8 +487,9 @@ - libstrace_a-perf_ioctl.$(OBJEXT) \ - libstrace_a-personality.$(OBJEXT) \ - libstrace_a-pidfd_getfd.$(OBJEXT) \ -- libstrace_a-pidfd_open.$(OBJEXT) libstrace_a-pkeys.$(OBJEXT) \ -- libstrace_a-poll.$(OBJEXT) libstrace_a-prctl.$(OBJEXT) \ -+ libstrace_a-pidfd_open.$(OBJEXT) libstrace_a-pidns.$(OBJEXT) \ -+ libstrace_a-pkeys.$(OBJEXT) libstrace_a-poll.$(OBJEXT) \ -+ libstrace_a-prctl.$(OBJEXT) \ - libstrace_a-print_aio_sigset.$(OBJEXT) \ - libstrace_a-print_dev_t.$(OBJEXT) \ - libstrace_a-print_group_req.$(OBJEXT) \ -@@ -553,15 +554,15 @@ - libstrace_a-sysinfo.$(OBJEXT) libstrace_a-syslog.$(OBJEXT) \ - libstrace_a-sysmips.$(OBJEXT) libstrace_a-term.$(OBJEXT) \ - libstrace_a-time.$(OBJEXT) libstrace_a-times.$(OBJEXT) \ -- libstrace_a-truncate.$(OBJEXT) libstrace_a-ubi.$(OBJEXT) \ -- libstrace_a-ucopy.$(OBJEXT) libstrace_a-uid.$(OBJEXT) \ -- libstrace_a-uid16.$(OBJEXT) libstrace_a-umask.$(OBJEXT) \ -- libstrace_a-umount.$(OBJEXT) libstrace_a-uname.$(OBJEXT) \ -- libstrace_a-upeek.$(OBJEXT) libstrace_a-upoke.$(OBJEXT) \ -- libstrace_a-userfaultfd.$(OBJEXT) libstrace_a-ustat.$(OBJEXT) \ -- libstrace_a-util.$(OBJEXT) libstrace_a-utime.$(OBJEXT) \ -- libstrace_a-utimes.$(OBJEXT) libstrace_a-v4l2.$(OBJEXT) \ -- libstrace_a-wait.$(OBJEXT) \ -+ libstrace_a-trie.$(OBJEXT) libstrace_a-truncate.$(OBJEXT) \ -+ libstrace_a-ubi.$(OBJEXT) libstrace_a-ucopy.$(OBJEXT) \ -+ libstrace_a-uid.$(OBJEXT) libstrace_a-uid16.$(OBJEXT) \ -+ libstrace_a-umask.$(OBJEXT) libstrace_a-umount.$(OBJEXT) \ -+ libstrace_a-uname.$(OBJEXT) libstrace_a-upeek.$(OBJEXT) \ -+ libstrace_a-upoke.$(OBJEXT) libstrace_a-userfaultfd.$(OBJEXT) \ -+ libstrace_a-ustat.$(OBJEXT) libstrace_a-util.$(OBJEXT) \ -+ libstrace_a-utime.$(OBJEXT) libstrace_a-utimes.$(OBJEXT) \ -+ libstrace_a-v4l2.$(OBJEXT) libstrace_a-wait.$(OBJEXT) \ - libstrace_a-watchdog_ioctl.$(OBJEXT) \ - libstrace_a-xattr.$(OBJEXT) libstrace_a-xgetdents.$(OBJEXT) \ - libstrace_a-xlat.$(OBJEXT) libstrace_a-xmalloc.$(OBJEXT) \ -@@ -834,6 +835,7 @@ - ./$(DEPDIR)/libstrace_a-personality.Po \ - ./$(DEPDIR)/libstrace_a-pidfd_getfd.Po \ - ./$(DEPDIR)/libstrace_a-pidfd_open.Po \ -+ ./$(DEPDIR)/libstrace_a-pidns.Po \ - ./$(DEPDIR)/libstrace_a-pkeys.Po \ - ./$(DEPDIR)/libstrace_a-poll.Po \ - ./$(DEPDIR)/libstrace_a-prctl.Po \ -@@ -924,6 +926,7 @@ - ./$(DEPDIR)/libstrace_a-term.Po \ - ./$(DEPDIR)/libstrace_a-time.Po \ - ./$(DEPDIR)/libstrace_a-times.Po \ -+ ./$(DEPDIR)/libstrace_a-trie.Po \ - ./$(DEPDIR)/libstrace_a-truncate.Po \ - ./$(DEPDIR)/libstrace_a-ubi.Po \ - ./$(DEPDIR)/libstrace_a-ucopy.Po \ -@@ -1829,8 +1832,8 @@ - nlattr.c nlattr.h nsfs.c nsfs.h nsig.h numa.c number_set.c \ - number_set.h oldstat.c open.c open_tree.c or1k_atomic.c \ - pathtrace.c perf.c perf_event_struct.h perf_ioctl.c \ -- personality.c pidfd_getfd.c pidfd_open.c pkeys.c poll.c \ -- prctl.c print_aio_sigset.c print_dev_t.c print_fields.h \ -+ personality.c pidfd_getfd.c pidfd_open.c pidns.c pkeys.c \ -+ poll.c prctl.c print_aio_sigset.c print_dev_t.c print_fields.h \ - print_group_req.c print_ifindex.c print_instruction_pointer.c \ - print_kernel_version.c print_mac.c print_mq_attr.c \ - print_msgbuf.c print_sg_req_info.c print_sigevent.c \ -@@ -1854,10 +1857,10 @@ - string_to_uint.h swapon.c sync_file_range.c sync_file_range2.c \ - syscall.c sysctl.c sysent.h sysent_shorthand_defs.h \ - sysent_shorthand_undefs.h sysinfo.c syslog.c sysmips.c term.c \ -- time.c times.c trace_event.h truncate.c ubi.c ucopy.c uid.c \ -- uid16.c umask.c umount.c uname.c upeek.c upoke.c userfaultfd.c \ -- ustat.c util.c utime.c utimes.c v4l2.c wait.c wait.h \ -- watchdog_ioctl.c xattr.c xfs_quota_stat.h xgetdents.c \ -+ time.c times.c trace_event.h trie.c trie.h truncate.c ubi.c \ -+ ucopy.c uid.c uid16.c umask.c umount.c uname.c upeek.c upoke.c \ -+ userfaultfd.c ustat.c util.c utime.c utimes.c v4l2.c wait.c \ -+ wait.h watchdog_ioctl.c xattr.c xfs_quota_stat.h xgetdents.c \ - xgetdents.h xlat.c xlat.h xmalloc.c xmalloc.h xstring.h \ - $(TYPES_HEADER_FILES) $(strace_SOURCES_check) $(am__append_1) \ - $(am__append_2) $(am__append_7) -@@ -2899,6 +2902,7 @@ - @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libstrace_a-personality.Po@am__quote@ # am--include-marker - @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libstrace_a-pidfd_getfd.Po@am__quote@ # am--include-marker - @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libstrace_a-pidfd_open.Po@am__quote@ # am--include-marker -+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libstrace_a-pidns.Po@am__quote@ # am--include-marker - @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libstrace_a-pkeys.Po@am__quote@ # am--include-marker - @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libstrace_a-poll.Po@am__quote@ # am--include-marker - @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libstrace_a-prctl.Po@am__quote@ # am--include-marker -@@ -2989,6 +2993,7 @@ - @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libstrace_a-term.Po@am__quote@ # am--include-marker - @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libstrace_a-time.Po@am__quote@ # am--include-marker - @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libstrace_a-times.Po@am__quote@ # am--include-marker -+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libstrace_a-trie.Po@am__quote@ # am--include-marker - @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libstrace_a-truncate.Po@am__quote@ # am--include-marker - @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libstrace_a-ubi.Po@am__quote@ # am--include-marker - @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libstrace_a-ucopy.Po@am__quote@ # am--include-marker -@@ -6015,6 +6020,20 @@ - @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ - @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libstrace_a_CPPFLAGS) $(CPPFLAGS) $(libstrace_a_CFLAGS) $(CFLAGS) -c -o libstrace_a-pidfd_open.obj `if test -f 'pidfd_open.c'; then $(CYGPATH_W) 'pidfd_open.c'; else $(CYGPATH_W) '$(srcdir)/pidfd_open.c'; fi` - -+libstrace_a-pidns.o: pidns.c -+@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libstrace_a_CPPFLAGS) $(CPPFLAGS) $(libstrace_a_CFLAGS) $(CFLAGS) -MT libstrace_a-pidns.o -MD -MP -MF $(DEPDIR)/libstrace_a-pidns.Tpo -c -o libstrace_a-pidns.o `test -f 'pidns.c' || echo '$(srcdir)/'`pidns.c -+@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libstrace_a-pidns.Tpo $(DEPDIR)/libstrace_a-pidns.Po -+@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='pidns.c' object='libstrace_a-pidns.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) $(libstrace_a_CPPFLAGS) $(CPPFLAGS) $(libstrace_a_CFLAGS) $(CFLAGS) -c -o libstrace_a-pidns.o `test -f 'pidns.c' || echo '$(srcdir)/'`pidns.c -+ -+libstrace_a-pidns.obj: pidns.c -+@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libstrace_a_CPPFLAGS) $(CPPFLAGS) $(libstrace_a_CFLAGS) $(CFLAGS) -MT libstrace_a-pidns.obj -MD -MP -MF $(DEPDIR)/libstrace_a-pidns.Tpo -c -o libstrace_a-pidns.obj `if test -f 'pidns.c'; then $(CYGPATH_W) 'pidns.c'; else $(CYGPATH_W) '$(srcdir)/pidns.c'; fi` -+@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libstrace_a-pidns.Tpo $(DEPDIR)/libstrace_a-pidns.Po -+@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='pidns.c' object='libstrace_a-pidns.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) $(libstrace_a_CPPFLAGS) $(CPPFLAGS) $(libstrace_a_CFLAGS) $(CFLAGS) -c -o libstrace_a-pidns.obj `if test -f 'pidns.c'; then $(CYGPATH_W) 'pidns.c'; else $(CYGPATH_W) '$(srcdir)/pidns.c'; fi` -+ - libstrace_a-pkeys.o: pkeys.c - @am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libstrace_a_CPPFLAGS) $(CPPFLAGS) $(libstrace_a_CFLAGS) $(CFLAGS) -MT libstrace_a-pkeys.o -MD -MP -MF $(DEPDIR)/libstrace_a-pkeys.Tpo -c -o libstrace_a-pkeys.o `test -f 'pkeys.c' || echo '$(srcdir)/'`pkeys.c - @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libstrace_a-pkeys.Tpo $(DEPDIR)/libstrace_a-pkeys.Po -@@ -7275,6 +7294,20 @@ - @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ - @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libstrace_a_CPPFLAGS) $(CPPFLAGS) $(libstrace_a_CFLAGS) $(CFLAGS) -c -o libstrace_a-times.obj `if test -f 'times.c'; then $(CYGPATH_W) 'times.c'; else $(CYGPATH_W) '$(srcdir)/times.c'; fi` - -+libstrace_a-trie.o: trie.c -+@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libstrace_a_CPPFLAGS) $(CPPFLAGS) $(libstrace_a_CFLAGS) $(CFLAGS) -MT libstrace_a-trie.o -MD -MP -MF $(DEPDIR)/libstrace_a-trie.Tpo -c -o libstrace_a-trie.o `test -f 'trie.c' || echo '$(srcdir)/'`trie.c -+@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libstrace_a-trie.Tpo $(DEPDIR)/libstrace_a-trie.Po -+@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='trie.c' object='libstrace_a-trie.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) $(libstrace_a_CPPFLAGS) $(CPPFLAGS) $(libstrace_a_CFLAGS) $(CFLAGS) -c -o libstrace_a-trie.o `test -f 'trie.c' || echo '$(srcdir)/'`trie.c -+ -+libstrace_a-trie.obj: trie.c -+@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libstrace_a_CPPFLAGS) $(CPPFLAGS) $(libstrace_a_CFLAGS) $(CFLAGS) -MT libstrace_a-trie.obj -MD -MP -MF $(DEPDIR)/libstrace_a-trie.Tpo -c -o libstrace_a-trie.obj `if test -f 'trie.c'; then $(CYGPATH_W) 'trie.c'; else $(CYGPATH_W) '$(srcdir)/trie.c'; fi` -+@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libstrace_a-trie.Tpo $(DEPDIR)/libstrace_a-trie.Po -+@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='trie.c' object='libstrace_a-trie.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) $(libstrace_a_CPPFLAGS) $(CPPFLAGS) $(libstrace_a_CFLAGS) $(CFLAGS) -c -o libstrace_a-trie.obj `if test -f 'trie.c'; then $(CYGPATH_W) 'trie.c'; else $(CYGPATH_W) '$(srcdir)/trie.c'; fi` -+ - libstrace_a-truncate.o: truncate.c - @am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libstrace_a_CPPFLAGS) $(CPPFLAGS) $(libstrace_a_CFLAGS) $(CFLAGS) -MT libstrace_a-truncate.o -MD -MP -MF $(DEPDIR)/libstrace_a-truncate.Tpo -c -o libstrace_a-truncate.o `test -f 'truncate.c' || echo '$(srcdir)/'`truncate.c - @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libstrace_a-truncate.Tpo $(DEPDIR)/libstrace_a-truncate.Po -@@ -8411,6 +8444,7 @@ - -rm -f ./$(DEPDIR)/libstrace_a-personality.Po - -rm -f ./$(DEPDIR)/libstrace_a-pidfd_getfd.Po - -rm -f ./$(DEPDIR)/libstrace_a-pidfd_open.Po -+ -rm -f ./$(DEPDIR)/libstrace_a-pidns.Po - -rm -f ./$(DEPDIR)/libstrace_a-pkeys.Po - -rm -f ./$(DEPDIR)/libstrace_a-poll.Po - -rm -f ./$(DEPDIR)/libstrace_a-prctl.Po -@@ -8501,6 +8535,7 @@ - -rm -f ./$(DEPDIR)/libstrace_a-term.Po - -rm -f ./$(DEPDIR)/libstrace_a-time.Po - -rm -f ./$(DEPDIR)/libstrace_a-times.Po -+ -rm -f ./$(DEPDIR)/libstrace_a-trie.Po - -rm -f ./$(DEPDIR)/libstrace_a-truncate.Po - -rm -f ./$(DEPDIR)/libstrace_a-ubi.Po - -rm -f ./$(DEPDIR)/libstrace_a-ucopy.Po -@@ -8796,6 +8831,7 @@ - -rm -f ./$(DEPDIR)/libstrace_a-personality.Po - -rm -f ./$(DEPDIR)/libstrace_a-pidfd_getfd.Po - -rm -f ./$(DEPDIR)/libstrace_a-pidfd_open.Po -+ -rm -f ./$(DEPDIR)/libstrace_a-pidns.Po - -rm -f ./$(DEPDIR)/libstrace_a-pkeys.Po - -rm -f ./$(DEPDIR)/libstrace_a-poll.Po - -rm -f ./$(DEPDIR)/libstrace_a-prctl.Po -@@ -8886,6 +8922,7 @@ - -rm -f ./$(DEPDIR)/libstrace_a-term.Po - -rm -f ./$(DEPDIR)/libstrace_a-time.Po - -rm -f ./$(DEPDIR)/libstrace_a-times.Po -+ -rm -f ./$(DEPDIR)/libstrace_a-trie.Po - -rm -f ./$(DEPDIR)/libstrace_a-truncate.Po - -rm -f ./$(DEPDIR)/libstrace_a-ubi.Po - -rm -f ./$(DEPDIR)/libstrace_a-ucopy.Po diff --git a/0135-Use-printpid-in-decoders.patch b/0135-Use-printpid-in-decoders.patch deleted file mode 100755 index dd4291b..0000000 --- a/0135-Use-printpid-in-decoders.patch +++ /dev/null @@ -1,1212 +0,0 @@ -From 4d1964761ad04028a0e6288821ee0feef5ca8fc1 Mon Sep 17 00:00:00 2001 -From: =?UTF-8?q?=C3=81kos=20Uzonyi?= -Date: Wed, 10 Jun 2020 13:18:50 +0200 -Subject: [PATCH 135/138] Use printpid in decoders - -* getpid.c: New file. -* Makefile.am (libstrace_a_SOURCES): Add it. -* linux/dummy.h (sys_getpid, sys_getppid, sys_gettid, -sys_setpgid, sys_setpgrp): Remove. -* util.c (printfd_pid_tracee_ns): Implement using translate_pid. -* defs.h (printnum_pid): New function definition. -(printfd_pid_tracee_ns): Update documentation -* util.c: (printnum_pid): New function. -* print_fields.h (PRINT_FIELD_TID): New macro. -(PRINT_FIELD_TGID): Likewise. -(PRINT_FIELD_PGID): Likewise. -(PRINT_FIELD_SID): Likewise. -* affinity.c: Print PIDs with printpid. -* block.c: Likewise. -* bpf.c: Likewise. -* capability.c: Likewise. -* clone.c: Likewise. -* fcntl.c: Likewise. -* get_robust_list.c: Likewise. -* ioprio.c: Likewise. -* kcmp.c: Likewise. -* msghdr.c: Likewise. -* net.c: Likewise. -* netlink.c: Likewise. -* numa.c: Likewise. -* pidfd_open.c: Likewise. -* printsiginfo.c: Likewise. -* process.c: Likewise. -* process_vm.c: Likewise. -* resource.c: Likewise. -* sched.c: Likewise. -* signal.c: Likewise. -* sockaddr.c: Likewise. -* wait.c: Likewise. -* kcmp.c (SYS_FUNC(kcmp)): Fix KCMP_FILE pid arguments. -* tests/kcmp.c (printpidfd): Print path if VERBOSE_FD. -(main): Use our real pid if real fds are used. ---- - Makefile.am | 1 + - affinity.c | 6 ++++-- - block.c | 2 +- - bpf.c | 2 +- - capability.c | 4 +++- - clone.c | 14 +++++++------- - defs.h | 5 ++++- - fcntl.c | 24 ++++++++++++++++++++++-- - get_robust_list.c | 3 ++- - getpid.c | 46 ++++++++++++++++++++++++++++++++++++++++++++++ - ioprio.c | 26 ++++++++++++++++++++++---- - ipc_shmctl.c | 4 ++-- - kcmp.c | 5 ++++- - linux/dummy.h | 8 +------- - msghdr.c | 2 +- - net.c | 2 +- - netlink.c | 5 +++-- - numa.c | 6 ++++-- - pidfd_open.c | 2 +- - print_fields.h | 24 ++++++++++++++++++++++++ - printsiginfo.c | 2 +- - process.c | 3 ++- - process_vm.c | 6 ++++-- - resource.c | 27 ++++++++++++++++++++++++--- - sched.c | 25 ++++++++++++++++--------- - signal.c | 21 +++++++++++++++------ - sockaddr.c | 2 +- - tests/kcmp.c | 25 ++++++++++++++++++++++--- - util.c | 22 +++++++++++++++------- - wait.c | 36 ++++++++++++++++++++++++------------ - 30 files changed, 278 insertions(+), 82 deletions(-) - create mode 100644 getpid.c - -Index: strace-5.7/Makefile.am -=================================================================== ---- strace-5.7.orig/Makefile.am 2020-09-09 15:52:09.159983257 +0200 -+++ strace-5.7/Makefile.am 2020-09-09 18:49:06.780401433 +0200 -@@ -135,6 +135,7 @@ - getcpu.c \ - getcwd.c \ - getpagesize.c \ -+ getpid.c \ - getrandom.c \ - hdio.c \ - hostname.c \ -Index: strace-5.7/affinity.c -=================================================================== ---- strace-5.7.orig/affinity.c 2020-09-09 15:52:09.159983257 +0200 -+++ strace-5.7/affinity.c 2020-09-09 15:55:03.979108297 +0200 -@@ -82,7 +82,8 @@ - const int pid = tcp->u_arg[0]; - const unsigned int len = tcp->u_arg[1]; - -- tprintf("%d, %u, ", pid, len); -+ printpid(tcp, pid, PT_TGID); -+ tprintf(", %u, ", len); - print_affinitylist(tcp, tcp->u_arg[2], len); - - return RVAL_DECODED; -@@ -94,7 +95,8 @@ - const unsigned int len = tcp->u_arg[1]; - - if (entering(tcp)) { -- tprintf("%d, %u, ", pid, len); -+ printpid(tcp, pid, PT_TGID); -+ tprintf(", %u, ", len); - } else { - print_affinitylist(tcp, tcp->u_arg[2], tcp->u_rval); - } -Index: strace-5.7/block.c -=================================================================== ---- strace-5.7.orig/block.c 2020-09-09 15:52:09.159983257 +0200 -+++ strace-5.7/block.c 2020-09-09 15:55:03.979108297 +0200 -@@ -179,7 +179,7 @@ - PRINT_FIELD_U(", ", buts, buf_nr); - PRINT_FIELD_U(", ", buts, start_lba); - PRINT_FIELD_U(", ", buts, end_lba); -- PRINT_FIELD_D(", ", buts, pid); -+ PRINT_FIELD_TGID(", ", buts, pid, tcp); - return 0; - } else { - struct_blk_user_trace_setup buts; -Index: strace-5.7/bpf.c -=================================================================== ---- strace-5.7.orig/bpf.c 2020-09-09 15:52:09.159983257 +0200 -+++ strace-5.7/bpf.c 2020-09-09 15:55:03.980108298 +0200 -@@ -927,7 +927,7 @@ - if (entering(tcp)) { - set_tcb_priv_ulong(tcp, attr.buf_len); - -- PRINT_FIELD_D("{task_fd_query={", attr, pid); -+ PRINT_FIELD_TGID("{task_fd_query={", attr, pid, tcp); - PRINT_FIELD_FD(", ", attr, fd, tcp); - PRINT_FIELD_U(", ", attr, flags); - PRINT_FIELD_U(", ", attr, buf_len); -Index: strace-5.7/capability.c -=================================================================== ---- strace-5.7.orig/capability.c 2020-09-09 15:52:09.159983257 +0200 -+++ strace-5.7/capability.c 2020-09-09 15:55:03.980108298 +0200 -@@ -70,7 +70,9 @@ - tprints("{version="); - printxval(cap_version, h->version, - "_LINUX_CAPABILITY_VERSION_???"); -- tprintf(", pid=%d}", h->pid); -+ tprints(", pid="); -+ printpid(tcp, h->pid, PT_TGID); -+ tprints("}"); - } - - static void -Index: strace-5.7/clone.c -=================================================================== ---- strace-5.7.orig/clone.c 2020-09-09 15:52:09.159983257 +0200 -+++ strace-5.7/clone.c 2020-09-09 15:55:03.980108298 +0200 -@@ -114,14 +114,14 @@ - */ - if ((flags & (CLONE_PARENT_SETTID|CLONE_PIDFD|CLONE_CHILD_SETTID - |CLONE_CHILD_CLEARTID|CLONE_SETTLS)) == 0) -- return RVAL_DECODED; -+ return RVAL_DECODED | RVAL_TID; - } else { - if (flags & (CLONE_PARENT_SETTID|CLONE_PIDFD)) { - kernel_ulong_t addr = tcp->u_arg[ARG_PTID]; - - tprints(", parent_tid="); - if (flags & CLONE_PARENT_SETTID) -- printnum_int(tcp, addr, "%u"); -+ printnum_pid(tcp, addr, PT_TID); - else - printnum_fd(tcp, addr); - } -@@ -134,7 +134,7 @@ - printaddr(tcp->u_arg[ARG_CTID]); - } - } -- return 0; -+ return RVAL_TID; - } - - -@@ -229,7 +229,7 @@ - - if ((arg.flags & (CLONE_PIDFD | CLONE_PARENT_SETTID)) || - (size > fetch_size)) -- return 0; -+ return RVAL_TID; - - goto out; - } -@@ -256,7 +256,7 @@ - - if (arg.flags & CLONE_PARENT_SETTID) { - tprintf("%sparent_tid=", pfx); -- printnum_int(tcp, arg.parent_tid, "%d"); /* TID */ -+ printnum_pid(tcp, arg.parent_tid, PT_TID); - pfx = ", "; - } - -@@ -279,7 +279,7 @@ - out: - tprintf(", %" PRI_klu, size); - -- return RVAL_DECODED; -+ return RVAL_DECODED | RVAL_TID; - } - - -@@ -300,5 +300,5 @@ - - SYS_FUNC(fork) - { -- return RVAL_DECODED; -+ return RVAL_DECODED | RVAL_TGID; - } -Index: strace-5.7/defs.h -=================================================================== ---- strace-5.7.orig/defs.h 2020-09-09 15:52:09.159983257 +0200 -+++ strace-5.7/defs.h 2020-09-09 15:55:03.980108298 +0200 -@@ -1101,7 +1101,7 @@ - - /** - * Print file descriptor fd owned by process with ID pid (from the PID NS -- * of the tracee the descriptor tcp). This is a stub. -+ * of the tracee). - */ - extern void printfd_pid_tracee_ns(struct tcb *tcp, pid_t pid, int fd); - -@@ -1562,6 +1562,9 @@ - extern bool - printnum_fd(struct tcb *, kernel_ulong_t addr); - -+extern bool -+printnum_pid(struct tcb *const tcp, const kernel_ulong_t addr, enum pid_type type); -+ - static inline bool - printnum_slong(struct tcb *tcp, kernel_ulong_t addr) - { -Index: strace-5.7/fcntl.c -=================================================================== ---- strace-5.7.orig/fcntl.c 2020-09-09 15:52:09.159983257 +0200 -+++ strace-5.7/fcntl.c 2020-09-09 15:55:03.981108298 +0200 -@@ -28,7 +28,7 @@ - PRINT_FIELD_D(", ", *fl, l_start); - PRINT_FIELD_D(", ", *fl, l_len); - if (getlk) -- PRINT_FIELD_D(", ", *fl, l_pid); -+ PRINT_FIELD_TGID(", ", *fl, l_pid, tcp); - tprints("}"); - } - -@@ -59,7 +59,22 @@ - return; - - PRINT_FIELD_XVAL("{", owner, type, f_owner_types, "F_OWNER_???"); -- PRINT_FIELD_D(", ", owner, pid); -+ -+ enum pid_type pid_type = PT_NONE; -+ switch (owner.type) -+ { -+ case F_OWNER_TID: -+ pid_type = PT_TID; -+ break; -+ case F_OWNER_PID: -+ pid_type = PT_TGID; -+ break; -+ case F_OWNER_PGRP: -+ pid_type = PT_PGID; -+ break; -+ } -+ tprints(", pid="); -+ printpid(tcp, owner.pid, pid_type); - tprints("}"); - } - -@@ -74,6 +89,9 @@ - printflags(fdflags, tcp->u_arg[2], "FD_???"); - break; - case F_SETOWN: -+ tprints(", "); -+ printpid_tgid_pgid(tcp, tcp->u_arg[2]); -+ break; - case F_SETPIPE_SZ: - tprintf(", %" PRI_kld, tcp->u_arg[2]); - break; -@@ -116,6 +134,8 @@ - printsignal(tcp->u_arg[2]); - break; - case F_GETOWN: -+ return RVAL_DECODED | -+ ((int) tcp->u_rval < 0 ? RVAL_PGID : RVAL_TGID); - case F_GETPIPE_SZ: - break; - case F_GETFD: -Index: strace-5.7/get_robust_list.c -=================================================================== ---- strace-5.7.orig/get_robust_list.c 2020-09-09 15:52:09.159983257 +0200 -+++ strace-5.7/get_robust_list.c 2020-09-09 15:55:03.981108298 +0200 -@@ -10,7 +10,8 @@ - SYS_FUNC(get_robust_list) - { - if (entering(tcp)) { -- tprintf("%d, ", (int) tcp->u_arg[0]); -+ printpid(tcp, tcp->u_arg[0], PT_TID); -+ tprints(", "); - } else { - printnum_ptr(tcp, tcp->u_arg[1]); - tprints(", "); -Index: strace-5.7/getpid.c -=================================================================== ---- /dev/null 1970-01-01 00:00:00.000000000 +0000 -+++ strace-5.7/getpid.c 2020-09-09 15:55:03.981108298 +0200 -@@ -0,0 +1,46 @@ -+/* -+ * Copyright (c) 2020 Ákos Uzonyi -+ * All rights reserved. -+ * -+ * SPDX-License-Identifier: LGPL-2.1-or-later -+ */ -+ -+#include "defs.h" -+ -+SYS_FUNC(getpid) -+{ -+ return RVAL_DECODED | RVAL_TGID; -+} -+ -+SYS_FUNC(gettid) -+{ -+ return RVAL_DECODED | RVAL_TID; -+} -+ -+SYS_FUNC(getpgrp) -+{ -+ return RVAL_DECODED | RVAL_PGID; -+} -+ -+SYS_FUNC(getpgid) -+{ -+ printpid(tcp, tcp->u_arg[0], PT_TGID); -+ -+ return RVAL_DECODED | RVAL_PGID; -+} -+ -+SYS_FUNC(getsid) -+{ -+ printpid(tcp, tcp->u_arg[0], PT_TGID); -+ -+ return RVAL_DECODED | RVAL_SID; -+} -+ -+SYS_FUNC(setpgid) -+{ -+ printpid(tcp, tcp->u_arg[0], PT_TGID); -+ tprints(", "); -+ printpid(tcp, tcp->u_arg[1], PT_PGID); -+ -+ return RVAL_DECODED; -+} -Index: strace-5.7/ioprio.c -=================================================================== ---- strace-5.7.orig/ioprio.c 2020-09-09 15:52:09.159983257 +0200 -+++ strace-5.7/ioprio.c 2020-09-09 15:55:03.981108298 +0200 -@@ -49,13 +49,30 @@ - ? tprints_comment : tprints)(str); - } - -+static void -+ioprio_print_who(struct tcb *tcp, int which, int who) -+{ -+ switch (which) -+ { -+ case IOPRIO_WHO_PROCESS: -+ printpid(tcp, who, PT_TGID); -+ break; -+ case IOPRIO_WHO_PGRP: -+ printpid(tcp, who, PT_PGID); -+ break; -+ default: -+ tprintf("%d", who); -+ break; -+ } -+} -+ - SYS_FUNC(ioprio_get) - { - if (entering(tcp)) { - /* int which */ - printxval(ioprio_who, tcp->u_arg[0], "IOPRIO_WHO_???"); -- /* int who */ -- tprintf(", %d", (int) tcp->u_arg[1]); -+ tprints(", "); -+ ioprio_print_who(tcp, tcp->u_arg[0], tcp->u_arg[1]); - return 0; - } else { - if (syserror(tcp)) -@@ -72,8 +89,9 @@ - { - /* int which */ - printxval(ioprio_who, tcp->u_arg[0], "IOPRIO_WHO_???"); -- /* int who */ -- tprintf(", %d, ", (int) tcp->u_arg[1]); -+ tprints(", "); -+ ioprio_print_who(tcp, tcp->u_arg[0], tcp->u_arg[1]); -+ tprints(", "); - /* int ioprio */ - if (xlat_verbose(xlat_verbosity) != XLAT_STYLE_ABBREV) - tprintf("%d", (int) tcp->u_arg[2]); -Index: strace-5.7/ipc_shmctl.c -=================================================================== ---- strace-5.7.orig/ipc_shmctl.c 2020-09-09 15:52:09.159983257 +0200 -+++ strace-5.7/ipc_shmctl.c 2020-09-09 15:55:03.981108298 +0200 -@@ -54,8 +54,8 @@ - PRINT_FIELD_UID(", ", shmid_ds.shm_perm, cgid); - tprints("}"); - tprintf(", shm_segsz=%u", (unsigned) shmid_ds.shm_segsz); -- PRINT_FIELD_D(", ", shmid_ds, shm_cpid); -- PRINT_FIELD_D(", ", shmid_ds, shm_lpid); -+ PRINT_FIELD_TGID(", ", shmid_ds, shm_cpid, tcp); -+ PRINT_FIELD_TGID(", ", shmid_ds, shm_lpid, tcp); - tprintf(", shm_nattch=%u", (unsigned) shmid_ds.shm_nattch); - tprintf(", shm_atime=%u", (unsigned) shmid_ds.shm_atime); - tprintf(", shm_dtime=%u", (unsigned) shmid_ds.shm_dtime); -Index: strace-5.7/kcmp.c -=================================================================== ---- strace-5.7.orig/kcmp.c 2020-09-09 15:52:09.159983257 +0200 -+++ strace-5.7/kcmp.c 2020-09-09 15:55:03.981108298 +0200 -@@ -30,7 +30,10 @@ - kernel_ulong_t idx1 = tcp->u_arg[3]; - kernel_ulong_t idx2 = tcp->u_arg[4]; - -- tprintf("%d, %d, ", pid1, pid2); -+ printpid(tcp, pid1, PT_TGID); -+ tprints(", "); -+ printpid(tcp, pid2, PT_TGID); -+ tprints(", "); - printxval(kcmp_types, type, "KCMP_???"); - - switch (type) { -Index: strace-5.7/linux/dummy.h -=================================================================== ---- strace-5.7.orig/linux/dummy.h 2020-09-09 15:52:09.159983257 +0200 -+++ strace-5.7/linux/dummy.h 2020-09-09 15:55:03.982108299 +0200 -@@ -53,6 +53,7 @@ - # define sys_getgid sys_getuid - # define sys_getgid16 sys_getuid16 - # define sys_getpeername sys_getsockname -+# define sys_getppid sys_getpid - # define sys_getresgid sys_getresuid - # define sys_getresgid16 sys_getresuid16 - # define sys_lstat sys_stat -@@ -87,10 +88,6 @@ - # define sys_vfork sys_fork - - /* printargs does the right thing */ --# define sys_getpgrp printargs --# define sys_getpid printargs --# define sys_getppid printargs --# define sys_gettid printargs - # define sys_idle printargs - # define sys_munlockall printargs - # define sys_pause printargs -@@ -108,10 +105,7 @@ - - /* printargs_d does the right thing */ - # define sys_exit printargs_d --# define sys_getpgid printargs_d --# define sys_getsid printargs_d - # define sys_nice printargs_d --# define sys_setpgid printargs_d - # define sys_setpgrp printargs_d - # define sys_timer_delete printargs_d - # define sys_timer_getoverrun printargs_d -Index: strace-5.7/msghdr.c -=================================================================== ---- strace-5.7.orig/msghdr.c 2020-09-09 15:52:09.159983257 +0200 -+++ strace-5.7/msghdr.c 2020-09-09 15:55:03.982108299 +0200 -@@ -69,7 +69,7 @@ - { - const struct ucred *uc = cmsg_data; - -- PRINT_FIELD_D("{", *uc, pid); -+ PRINT_FIELD_TGID("{", *uc, pid, tcp); - PRINT_FIELD_UID(", ", *uc, uid); - PRINT_FIELD_UID(", ", *uc, gid); - tprints("}"); -Index: strace-5.7/net.c -=================================================================== ---- strace-5.7.orig/net.c 2020-09-09 15:52:09.159983257 +0200 -+++ strace-5.7/net.c 2020-09-09 15:55:03.982108299 +0200 -@@ -601,7 +601,7 @@ - if (umoven_or_printaddr(tcp, addr, len, &uc)) - return; - -- PRINT_FIELD_LEN("{", uc, pid, len, PRINT_FIELD_D); -+ PRINT_FIELD_LEN("{", uc, pid, len, PRINT_FIELD_TGID, tcp); - PRINT_FIELD_LEN(", ", uc, uid, len, PRINT_FIELD_UID); - PRINT_FIELD_LEN(", ", uc, gid, len, PRINT_FIELD_UID); - tprints("}"); -Index: strace-5.7/netlink.c -=================================================================== ---- strace-5.7.orig/netlink.c 2020-09-09 15:52:09.159983257 +0200 -+++ strace-5.7/netlink.c 2020-09-09 15:55:03.982108299 +0200 -@@ -446,8 +446,9 @@ - decode_nlmsg_flags(nlmsghdr->nlmsg_flags, - nlmsghdr->nlmsg_type, family); - -- tprintf(", seq=%u, pid=%d}", nlmsghdr->nlmsg_seq, -- nlmsghdr->nlmsg_pid); -+ tprintf(", seq=%u, pid=", nlmsghdr->nlmsg_seq); -+ printpid(tcp, nlmsghdr->nlmsg_pid, PT_TGID); -+ tprints("}"); - } - - static bool -Index: strace-5.7/numa.c -=================================================================== ---- strace-5.7.orig/numa.c 2020-09-09 15:52:09.159983257 +0200 -+++ strace-5.7/numa.c 2020-09-09 15:55:03.982108299 +0200 -@@ -44,7 +44,8 @@ - - SYS_FUNC(migrate_pages) - { -- tprintf("%d, %" PRI_klu ", ", (int) tcp->u_arg[0], tcp->u_arg[1]); -+ printpid(tcp, tcp->u_arg[0], PT_TGID); -+ tprintf(", %" PRI_klu ", ", tcp->u_arg[1]); - print_nodemask(tcp, tcp->u_arg[2], tcp->u_arg[1]); - tprints(", "); - print_nodemask(tcp, tcp->u_arg[3], tcp->u_arg[1]); -@@ -170,7 +171,8 @@ - kernel_ulong_t buf; - - if (entering(tcp)) { -- tprintf("%d, %" PRI_klu ", ", (int) tcp->u_arg[0], npages); -+ printpid(tcp, tcp->u_arg[0], PT_TGID); -+ tprintf(", %" PRI_klu ", ", npages); - print_array(tcp, tcp->u_arg[2], npages, &buf, current_wordsize, - tfetch_mem, print_addr, 0); - tprints(", "); -Index: strace-5.7/pidfd_open.c -=================================================================== ---- strace-5.7.orig/pidfd_open.c 2020-09-09 15:52:09.159983257 +0200 -+++ strace-5.7/pidfd_open.c 2020-09-09 15:55:03.983108300 +0200 -@@ -10,7 +10,7 @@ - SYS_FUNC(pidfd_open) - { - /* pid_t pid */ -- tprintf("%d", (int) tcp->u_arg[0]); -+ printpid(tcp, tcp->u_arg[0], PT_TGID); - - /* unsigned int flags */ - tprintf(", %#x", (unsigned int) tcp->u_arg[1]); -Index: strace-5.7/print_fields.h -=================================================================== ---- strace-5.7.orig/print_fields.h 2020-09-09 15:52:09.159983257 +0200 -+++ strace-5.7/print_fields.h 2020-09-09 15:55:03.983108300 +0200 -@@ -236,6 +236,30 @@ - printfd((tcp_), (where_).field_); \ - } while (0) - -+# define PRINT_FIELD_TID(prefix_, where_, field_, tcp_) \ -+ do { \ -+ STRACE_PRINTF("%s%s=", (prefix_), #field_); \ -+ printpid((tcp_), (where_).field_, PT_TID); \ -+ } while (0) -+ -+# define PRINT_FIELD_TGID(prefix_, where_, field_, tcp_) \ -+ do { \ -+ STRACE_PRINTF("%s%s=", (prefix_), #field_); \ -+ printpid((tcp_), (where_).field_, PT_TGID); \ -+ } while (0) -+ -+# define PRINT_FIELD_PGID(prefix_, where_, field_, tcp_) \ -+ do { \ -+ STRACE_PRINTF("%s%s=", (prefix_), #field_); \ -+ printpid((tcp_), (where_).field_, PT_PGID); \ -+ } while (0) -+ -+# define PRINT_FIELD_SID(prefix_, where_, field_, tcp_) \ -+ do { \ -+ STRACE_PRINTF("%s%s=", (prefix_), #field_); \ -+ printpid((tcp_), (where_).field_, PT_SID); \ -+ } while (0) -+ - # define PRINT_FIELD_STRN(prefix_, where_, field_, len_, tcp_) \ - do { \ - STRACE_PRINTF("%s%s=", (prefix_), #field_); \ -Index: strace-5.7/printsiginfo.c -=================================================================== ---- strace-5.7.orig/printsiginfo.c 2020-09-09 15:52:09.159983257 +0200 -+++ strace-5.7/printsiginfo.c 2020-09-09 15:55:03.983108300 +0200 -@@ -58,7 +58,7 @@ - static void - printsigsource(struct tcb *tcp, const siginfo_t *sip) - { -- PRINT_FIELD_D(", ", *sip, si_pid); -+ PRINT_FIELD_TGID(", ", *sip, si_pid, tcp); - PRINT_FIELD_UID(", ", *sip, si_uid); - } - -Index: strace-5.7/process.c -=================================================================== ---- strace-5.7.orig/process.c 2020-09-09 15:52:09.159983257 +0200 -+++ strace-5.7/process.c 2020-09-09 15:55:03.983108300 +0200 -@@ -92,7 +92,8 @@ - } - - /* pid */ -- tprintf(", %d", pid); -+ tprints(", "); -+ printpid(tcp, pid, PT_TGID); - - /* addr */ - switch (request) { -Index: strace-5.7/process_vm.c -=================================================================== ---- strace-5.7.orig/process_vm.c 2020-09-09 15:52:09.159983257 +0200 -+++ strace-5.7/process_vm.c 2020-09-09 15:55:03.983108300 +0200 -@@ -13,7 +13,8 @@ - { - if (entering(tcp)) { - /* arg 1: pid */ -- tprintf("%d, ", (int) tcp->u_arg[0]); -+ printpid(tcp, tcp->u_arg[0], PT_TGID); -+ tprints(", "); - } else { - kernel_ulong_t local_iovcnt = tcp->u_arg[2]; - kernel_ulong_t remote_iovcnt = tcp->u_arg[4]; -@@ -42,7 +43,8 @@ - kernel_ulong_t flags = tcp->u_arg[5]; - - /* arg 1: pid */ -- tprintf("%d, ", (int) tcp->u_arg[0]); -+ printpid(tcp, tcp->u_arg[0], PT_TGID); -+ tprints(", "); - /* arg 2: local iov */ - tprint_iov(tcp, local_iovcnt, tcp->u_arg[1], IOV_DECODE_STR); - /* arg 3: local iovcnt */ -Index: strace-5.7/resource.c -=================================================================== ---- strace-5.7.orig/resource.c 2020-09-09 15:52:09.159983257 +0200 -+++ strace-5.7/resource.c 2020-09-09 15:55:03.984108300 +0200 -@@ -142,7 +142,8 @@ - SYS_FUNC(prlimit64) - { - if (entering(tcp)) { -- tprintf("%d, ", (int) tcp->u_arg[0]); -+ printpid(tcp, tcp->u_arg[0], PT_TGID); -+ tprints(", "); - printxval(resources, tcp->u_arg[1], "RLIMIT_???"); - tprints(", "); - print_rlimit64(tcp, tcp->u_arg[2]); -@@ -179,10 +180,28 @@ - - #include "xlat/priorities.h" - -+static void -+priority_print_who(struct tcb *tcp, int which, int who) -+{ -+ switch (which) -+ { -+ case PRIO_PROCESS: -+ printpid(tcp, who, PT_TGID); -+ break; -+ case PRIO_PGRP: -+ printpid(tcp, who, PT_PGID); -+ break; -+ default: -+ tprintf("%d", who); -+ break; -+ } -+} -+ - SYS_FUNC(getpriority) - { - printxval(priorities, tcp->u_arg[0], "PRIO_???"); -- tprintf(", %d", (int) tcp->u_arg[1]); -+ tprints(", "); -+ priority_print_who(tcp, tcp->u_arg[0], tcp->u_arg[1]); - - return RVAL_DECODED; - } -@@ -190,7 +209,9 @@ - SYS_FUNC(setpriority) - { - printxval(priorities, tcp->u_arg[0], "PRIO_???"); -- tprintf(", %d, %d", (int) tcp->u_arg[1], (int) tcp->u_arg[2]); -+ tprints(", "); -+ priority_print_who(tcp, tcp->u_arg[0], tcp->u_arg[1]); -+ tprintf(", %d", (int) tcp->u_arg[2]); - - return RVAL_DECODED; - } -Index: strace-5.7/sched.c -=================================================================== ---- strace-5.7.orig/sched.c 2020-09-09 15:52:09.159983257 +0200 -+++ strace-5.7/sched.c 2020-09-09 15:55:03.984108300 +0200 -@@ -21,7 +21,7 @@ - SYS_FUNC(sched_getscheduler) - { - if (entering(tcp)) { -- tprintf("%d", (int) tcp->u_arg[0]); -+ printpid(tcp, tcp->u_arg[0], PT_TGID); - } else if (!syserror(tcp)) { - tcp->auxstr = xlookup(schedulers, (kernel_ulong_t) tcp->u_rval); - return RVAL_STR; -@@ -31,7 +31,8 @@ - - SYS_FUNC(sched_setscheduler) - { -- tprintf("%d, ", (int) tcp->u_arg[0]); -+ printpid(tcp, tcp->u_arg[0], PT_TGID); -+ tprints(", "); - printxval(schedulers, tcp->u_arg[1], "SCHED_???"); - tprints(", "); - printnum_int(tcp, tcp->u_arg[2], "%d"); -@@ -41,16 +42,19 @@ - - SYS_FUNC(sched_getparam) - { -- if (entering(tcp)) -- tprintf("%d, ", (int) tcp->u_arg[0]); -- else -+ if (entering(tcp)) { -+ printpid(tcp, tcp->u_arg[0], PT_TGID); -+ tprints(", "); -+ } else { - printnum_int(tcp, tcp->u_arg[1], "%d"); -+ } - return 0; - } - - SYS_FUNC(sched_setparam) - { -- tprintf("%d, ", (int) tcp->u_arg[0]); -+ printpid(tcp, tcp->u_arg[0], PT_TGID); -+ tprints(", "); - printnum_int(tcp, tcp->u_arg[1], "%d"); - - return RVAL_DECODED; -@@ -68,7 +72,8 @@ - const print_obj_by_addr_fn print_ts) - { - if (entering(tcp)) { -- tprintf("%d, ", (int) tcp->u_arg[0]); -+ printpid(tcp, tcp->u_arg[0], PT_TGID); -+ tprints(", "); - } else { - if (syserror(tcp)) - printaddr(tcp->u_arg[1]); -@@ -160,7 +165,8 @@ - SYS_FUNC(sched_setattr) - { - if (entering(tcp)) { -- tprintf("%d, ", (int) tcp->u_arg[0]); -+ printpid(tcp, tcp->u_arg[0], PT_TGID); -+ tprints(", "); - print_sched_attr(tcp, tcp->u_arg[1], 0); - } else { - struct sched_attr attr; -@@ -179,7 +185,8 @@ - SYS_FUNC(sched_getattr) - { - if (entering(tcp)) { -- tprintf("%d, ", (int) tcp->u_arg[0]); -+ printpid(tcp, tcp->u_arg[0], PT_TGID); -+ tprints(", "); - } else { - const unsigned int size = tcp->u_arg[2]; - -Index: strace-5.7/signal.c -=================================================================== ---- strace-5.7.orig/signal.c 2020-09-09 15:52:09.159983257 +0200 -+++ strace-5.7/signal.c 2020-09-09 15:55:03.984108300 +0200 -@@ -439,7 +439,8 @@ - SYS_FUNC(kill) - { - /* pid */ -- tprintf("%d, ", (int) tcp->u_arg[0]); -+ printpid_tgid_pgid(tcp, tcp->u_arg[0]); -+ tprints(", "); - /* signal */ - printsignal(tcp->u_arg[1]); - -@@ -448,7 +449,7 @@ - - SYS_FUNC(tkill) - { -- tprintf("%d", (int) tcp->u_arg[0]); -+ printpid(tcp, tcp->u_arg[0], PT_TID); - tprints(", "); - printsignal(tcp->u_arg[1]); - -@@ -457,8 +458,12 @@ - - SYS_FUNC(tgkill) - { -- /* tgid, tid */ -- tprintf("%d, %d, ", (int) tcp->u_arg[0], (int) tcp->u_arg[1]); -+ /* tgid */ -+ printpid(tcp, tcp->u_arg[0], PT_TGID); -+ tprints(", "); -+ /* tid */ -+ printpid(tcp, tcp->u_arg[1], PT_TID); -+ tprints(", "); - /* signal */ - printsignal(tcp->u_arg[2]); - -@@ -624,7 +629,8 @@ - - SYS_FUNC(rt_sigqueueinfo) - { -- tprintf("%d, ", (int) tcp->u_arg[0]); -+ printpid(tcp, tcp->u_arg[0], PT_TGID); -+ tprints(", "); - print_sigqueueinfo(tcp, tcp->u_arg[1], tcp->u_arg[2]); - - return RVAL_DECODED; -@@ -632,7 +638,10 @@ - - SYS_FUNC(rt_tgsigqueueinfo) - { -- tprintf("%d, %d, ", (int) tcp->u_arg[0], (int) tcp->u_arg[1]); -+ printpid(tcp, tcp->u_arg[0], PT_TGID); -+ tprints(", "); -+ printpid(tcp, tcp->u_arg[1], PT_TID); -+ tprints(", "); - print_sigqueueinfo(tcp, tcp->u_arg[2], tcp->u_arg[3]); - - return RVAL_DECODED; -Index: strace-5.7/sockaddr.c -=================================================================== ---- strace-5.7.orig/sockaddr.c 2020-09-09 15:52:09.159983257 +0200 -+++ strace-5.7/sockaddr.c 2020-09-09 15:55:03.984108300 +0200 -@@ -416,7 +416,7 @@ - { - const struct sockaddr_nl *const sa_nl = buf; - -- PRINT_FIELD_D("", *sa_nl, nl_pid); -+ PRINT_FIELD_TGID("", *sa_nl, nl_pid, tcp); - PRINT_FIELD_0X(", ", *sa_nl, nl_groups); - } - -Index: strace-5.7/tests/kcmp.c -=================================================================== ---- strace-5.7.orig/tests/kcmp.c 2020-09-09 15:52:09.159983257 +0200 -+++ strace-5.7/tests/kcmp.c 2020-09-09 18:49:06.780401433 +0200 -@@ -64,7 +64,26 @@ - static void - printpidfd(const char *prefix, pid_t pid, unsigned fd) - { -- printf("%s%d", prefix, fd); -+ const char *path = NULL; -+ -+# if VERBOSE_FD -+ if (pid == getpid()) { -+ switch (fd) -+ { -+ case NULL_FD: -+ path = null_path; -+ break; -+ case ZERO_FD: -+ path = zero_path; -+ break; -+ } -+ } -+# endif -+ -+ if (path) -+ printf("%s%d<%s>", prefix, fd, path); -+ else -+ printf("%s%d", prefix, fd); - } - - /* -@@ -179,7 +198,7 @@ - /* KCMP_FILE is the only type which has additional args */ - do_kcmp(3141592653U, 2718281828U, ARG_STR(KCMP_FILE), bogus_idx1, - bogus_idx2); -- do_kcmp(-1, -1, ARG_STR(KCMP_FILE), NULL_FD, ZERO_FD); -+ do_kcmp(getpid(), getpid(), ARG_STR(KCMP_FILE), NULL_FD, ZERO_FD); - - /* Types without additional args */ - do_kcmp(-1, -1, ARG_STR(KCMP_VM), bogus_idx1, bogus_idx2); -@@ -198,7 +217,7 @@ - for (i = 0; i < ARRAY_SIZE(slot_data); i++) { - memcpy(slot, slot_data + i, sizeof(*slot)); - -- do_kcmp(getpid(), getppid(), ARG_STR(KCMP_EPOLL_TFD), NULL_FD, -+ do_kcmp(getpid(), -1, ARG_STR(KCMP_EPOLL_TFD), NULL_FD, - (uintptr_t) slot, 1); - } - -Index: strace-5.7/util.c -=================================================================== ---- strace-5.7.orig/util.c 2020-09-09 15:52:09.159983257 +0200 -+++ strace-5.7/util.c 2020-09-09 18:49:07.951402131 +0200 -@@ -392,6 +392,18 @@ - return true; - } - -+bool -+printnum_pid(struct tcb *const tcp, const kernel_ulong_t addr, enum pid_type type) -+{ -+ int pid; -+ if (umove_or_printaddr(tcp, addr, &pid)) -+ return false; -+ tprints("["); -+ printpid(tcp, pid, type); -+ tprints("]"); -+ return true; -+} -+ - /** - * Prints time to a (static internal) buffer and returns pointer to it. - * Returns NULL if the provided time specification is not correct. -@@ -616,7 +628,7 @@ - printfd_pid(struct tcb *tcp, pid_t pid, int fd) - { - char path[PATH_MAX + 1]; -- if (!number_set_array_is_empty(decode_fd_set, 0) -+ if (pid > 0 && !number_set_array_is_empty(decode_fd_set, 0) - && getfdpath_pid(pid, fd, path, sizeof(path)) >= 0) { - tprintf("%d<", (int) fd); - if (is_number_in_set(DECODE_FD_SOCKET, decode_fd_set) && -@@ -641,12 +653,8 @@ - void - printfd_pid_tracee_ns(struct tcb *tcp, pid_t pid, int fd) - { -- /* -- * TODO: We want to have the same formatting as printfd here, -- * but we should figure out first which process in strace's -- * PID NS is referred to by pid in tracee's PID NS. -- */ -- tprintf("%d", fd); -+ int strace_pid = translate_pid(tcp, pid, PT_TGID, NULL); -+ printfd_pid(tcp, strace_pid, fd); - } - - /* -Index: strace-5.7/wait.c -=================================================================== ---- strace-5.7.orig/wait.c 2020-09-09 15:52:09.159983257 +0200 -+++ strace-5.7/wait.c 2020-09-09 15:55:03.985108301 +0200 -@@ -80,14 +80,8 @@ - void (*const print_rusage)(struct tcb *, kernel_ulong_t)) - { - if (entering(tcp)) { -- /* On Linux, kernel-side pid_t is typedef'ed to int -- * on all arches. Also, glibc-2.8 truncates wait3 and wait4 -- * pid argument to int on 64bit arches, producing, -- * for example, wait4(4294967295, ...) instead of -1 -- * in strace. We have to use int here, not long. -- */ -- int pid = tcp->u_arg[0]; -- tprintf("%d, ", pid); -+ printpid_tgid_pgid(tcp, tcp->u_arg[0]); -+ tprintf(", "); - } else { - int status; - -@@ -108,7 +102,7 @@ - printaddr(tcp->u_arg[3]); - } - } -- return 0; -+ return RVAL_TGID; - } - - SYS_FUNC(waitpid) -@@ -134,10 +128,28 @@ - - SYS_FUNC(waitid) - { -+ unsigned int idtype = (unsigned int) tcp->u_arg[0]; -+ int id = tcp->u_arg[1]; -+ - if (entering(tcp)) { -- printxval(waitid_types, tcp->u_arg[0], "P_???"); -- int pid = tcp->u_arg[1]; -- tprintf(", %d, ", pid); -+ printxval(waitid_types, idtype, "P_???"); -+ tprints(", "); -+ switch (idtype) -+ { -+ case P_PID: -+ printpid(tcp, id, PT_TGID); -+ break; -+ case P_PIDFD: -+ printfd(tcp, id); -+ break; -+ case P_PGID: -+ printpid(tcp, id, PT_PGID); -+ break; -+ default: -+ tprintf("%d", id); -+ break; -+ } -+ tprints(", "); - } else { - /* siginfo */ - printsiginfo_at(tcp, tcp->u_arg[2]); -Index: strace-5.7/tests-m32/kcmp.c -=================================================================== ---- strace-5.7.orig/tests-m32/kcmp.c 2020-09-09 15:52:09.159983257 +0200 -+++ strace-5.7/tests-m32/kcmp.c 2020-09-09 18:49:06.780401433 +0200 -@@ -64,7 +64,26 @@ - static void - printpidfd(const char *prefix, pid_t pid, unsigned fd) - { -- printf("%s%d", prefix, fd); -+ const char *path = NULL; -+ -+# if VERBOSE_FD -+ if (pid == getpid()) { -+ switch (fd) -+ { -+ case NULL_FD: -+ path = null_path; -+ break; -+ case ZERO_FD: -+ path = zero_path; -+ break; -+ } -+ } -+# endif -+ -+ if (path) -+ printf("%s%d<%s>", prefix, fd, path); -+ else -+ printf("%s%d", prefix, fd); - } - - /* -@@ -179,7 +198,7 @@ - /* KCMP_FILE is the only type which has additional args */ - do_kcmp(3141592653U, 2718281828U, ARG_STR(KCMP_FILE), bogus_idx1, - bogus_idx2); -- do_kcmp(-1, -1, ARG_STR(KCMP_FILE), NULL_FD, ZERO_FD); -+ do_kcmp(getpid(), getpid(), ARG_STR(KCMP_FILE), NULL_FD, ZERO_FD); - - /* Types without additional args */ - do_kcmp(-1, -1, ARG_STR(KCMP_VM), bogus_idx1, bogus_idx2); -@@ -198,7 +217,7 @@ - for (i = 0; i < ARRAY_SIZE(slot_data); i++) { - memcpy(slot, slot_data + i, sizeof(*slot)); - -- do_kcmp(getpid(), getppid(), ARG_STR(KCMP_EPOLL_TFD), NULL_FD, -+ do_kcmp(getpid(), -1, ARG_STR(KCMP_EPOLL_TFD), NULL_FD, - (uintptr_t) slot, 1); - } - -Index: strace-5.7/tests-mx32/kcmp.c -=================================================================== ---- strace-5.7.orig/tests-mx32/kcmp.c 2020-09-09 15:52:09.159983257 +0200 -+++ strace-5.7/tests-mx32/kcmp.c 2020-09-09 18:49:06.780401433 +0200 -@@ -64,7 +64,26 @@ - static void - printpidfd(const char *prefix, pid_t pid, unsigned fd) - { -- printf("%s%d", prefix, fd); -+ const char *path = NULL; -+ -+# if VERBOSE_FD -+ if (pid == getpid()) { -+ switch (fd) -+ { -+ case NULL_FD: -+ path = null_path; -+ break; -+ case ZERO_FD: -+ path = zero_path; -+ break; -+ } -+ } -+# endif -+ -+ if (path) -+ printf("%s%d<%s>", prefix, fd, path); -+ else -+ printf("%s%d", prefix, fd); - } - - /* -@@ -179,7 +198,7 @@ - /* KCMP_FILE is the only type which has additional args */ - do_kcmp(3141592653U, 2718281828U, ARG_STR(KCMP_FILE), bogus_idx1, - bogus_idx2); -- do_kcmp(-1, -1, ARG_STR(KCMP_FILE), NULL_FD, ZERO_FD); -+ do_kcmp(getpid(), getpid(), ARG_STR(KCMP_FILE), NULL_FD, ZERO_FD); - - /* Types without additional args */ - do_kcmp(-1, -1, ARG_STR(KCMP_VM), bogus_idx1, bogus_idx2); -@@ -198,7 +217,7 @@ - for (i = 0; i < ARRAY_SIZE(slot_data); i++) { - memcpy(slot, slot_data + i, sizeof(*slot)); - -- do_kcmp(getpid(), getppid(), ARG_STR(KCMP_EPOLL_TFD), NULL_FD, -+ do_kcmp(getpid(), -1, ARG_STR(KCMP_EPOLL_TFD), NULL_FD, - (uintptr_t) slot, 1); - } - -Index: strace-5.7/Makefile.in -=================================================================== ---- strace-5.7.orig/Makefile.in 2020-09-09 15:54:59.569105143 +0200 -+++ strace-5.7/Makefile.in 2020-09-09 19:06:15.159014394 +0200 -@@ -322,13 +322,13 @@ - flock.c flock.h fs_x_ioctl.c fsconfig.c fsmount.c fsopen.c \ - fspick.c fstatfs.c fstatfs64.c futex.c gcc_compat.h \ - get_personality.c get_personality.h get_robust_list.c getcpu.c \ -- getcwd.c getpagesize.c getrandom.c hdio.c hostname.c inotify.c \ -- inotify_ioctl.c io.c io_uring.c ioctl.c ioperm.c iopl.c \ -- ioprio.c ipc.c ipc_defs.h ipc_msg.c ipc_msgctl.c ipc_sem.c \ -- ipc_shm.c ipc_shmctl.c kcmp.c kernel_dirent.h kernel_rusage.h \ -- kernel_timespec.h kernel_timeval.h kernel_timex.h \ -- kernel_types.h kernel_v4l2_types.h kexec.c keyctl.c \ -- keyctl_kdf_params.h kill_save_errno.h kvm.c \ -+ getcwd.c getpagesize.c getpid.c getrandom.c hdio.c hostname.c \ -+ inotify.c inotify_ioctl.c io.c io_uring.c ioctl.c ioperm.c \ -+ iopl.c ioprio.c ipc.c ipc_defs.h ipc_msg.c ipc_msgctl.c \ -+ ipc_sem.c ipc_shm.c ipc_shmctl.c kcmp.c kernel_dirent.h \ -+ kernel_rusage.h kernel_timespec.h kernel_timeval.h \ -+ kernel_timex.h kernel_types.h kernel_v4l2_types.h kexec.c \ -+ keyctl.c keyctl_kdf_params.h kill_save_errno.h kvm.c \ - largefile_wrappers.h ldt.c link.c linux/asm_stat.h \ - linux/x32/asm_stat.h linux/x86_64/asm_stat.h list.h listen.c \ - lookup_dcookie.c loop.c lseek.c macros.h mem.c membarrier.c \ -@@ -443,7 +443,7 @@ - libstrace_a-get_personality.$(OBJEXT) \ - libstrace_a-get_robust_list.$(OBJEXT) \ - libstrace_a-getcpu.$(OBJEXT) libstrace_a-getcwd.$(OBJEXT) \ -- libstrace_a-getpagesize.$(OBJEXT) \ -+ libstrace_a-getpagesize.$(OBJEXT) libstrace_a-getpid.$(OBJEXT) \ - libstrace_a-getrandom.$(OBJEXT) libstrace_a-hdio.$(OBJEXT) \ - libstrace_a-hostname.$(OBJEXT) libstrace_a-inotify.$(OBJEXT) \ - libstrace_a-inotify_ioctl.$(OBJEXT) libstrace_a-io.$(OBJEXT) \ -@@ -769,6 +769,7 @@ - ./$(DEPDIR)/libstrace_a-getcpu.Po \ - ./$(DEPDIR)/libstrace_a-getcwd.Po \ - ./$(DEPDIR)/libstrace_a-getpagesize.Po \ -+ ./$(DEPDIR)/libstrace_a-getpid.Po \ - ./$(DEPDIR)/libstrace_a-getrandom.Po \ - ./$(DEPDIR)/libstrace_a-hdio.Po \ - ./$(DEPDIR)/libstrace_a-hostname.Po \ -@@ -1810,13 +1811,13 @@ - flock.c flock.h fs_x_ioctl.c fsconfig.c fsmount.c fsopen.c \ - fspick.c fstatfs.c fstatfs64.c futex.c gcc_compat.h \ - get_personality.c get_personality.h get_robust_list.c getcpu.c \ -- getcwd.c getpagesize.c getrandom.c hdio.c hostname.c inotify.c \ -- inotify_ioctl.c io.c io_uring.c ioctl.c ioperm.c iopl.c \ -- ioprio.c ipc.c ipc_defs.h ipc_msg.c ipc_msgctl.c ipc_sem.c \ -- ipc_shm.c ipc_shmctl.c kcmp.c kernel_dirent.h kernel_rusage.h \ -- kernel_timespec.h kernel_timeval.h kernel_timex.h \ -- kernel_types.h kernel_v4l2_types.h kexec.c keyctl.c \ -- keyctl_kdf_params.h kill_save_errno.h kvm.c \ -+ getcwd.c getpagesize.c getpid.c getrandom.c hdio.c hostname.c \ -+ inotify.c inotify_ioctl.c io.c io_uring.c ioctl.c ioperm.c \ -+ iopl.c ioprio.c ipc.c ipc_defs.h ipc_msg.c ipc_msgctl.c \ -+ ipc_sem.c ipc_shm.c ipc_shmctl.c kcmp.c kernel_dirent.h \ -+ kernel_rusage.h kernel_timespec.h kernel_timeval.h \ -+ kernel_timex.h kernel_types.h kernel_v4l2_types.h kexec.c \ -+ keyctl.c keyctl_kdf_params.h kill_save_errno.h kvm.c \ - largefile_wrappers.h ldt.c link.c linux/asm_stat.h \ - linux/x32/asm_stat.h linux/x86_64/asm_stat.h list.h listen.c \ - lookup_dcookie.c loop.c lseek.c macros.h mem.c membarrier.c \ -@@ -2835,6 +2836,7 @@ - @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libstrace_a-getcpu.Po@am__quote@ # am--include-marker - @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libstrace_a-getcwd.Po@am__quote@ # am--include-marker - @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libstrace_a-getpagesize.Po@am__quote@ # am--include-marker -+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libstrace_a-getpid.Po@am__quote@ # am--include-marker - @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libstrace_a-getrandom.Po@am__quote@ # am--include-marker - @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libstrace_a-hdio.Po@am__quote@ # am--include-marker - @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libstrace_a-hostname.Po@am__quote@ # am--include-marker -@@ -5082,6 +5084,20 @@ - @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ - @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libstrace_a_CPPFLAGS) $(CPPFLAGS) $(libstrace_a_CFLAGS) $(CFLAGS) -c -o libstrace_a-getpagesize.obj `if test -f 'getpagesize.c'; then $(CYGPATH_W) 'getpagesize.c'; else $(CYGPATH_W) '$(srcdir)/getpagesize.c'; fi` - -+libstrace_a-getpid.o: getpid.c -+@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libstrace_a_CPPFLAGS) $(CPPFLAGS) $(libstrace_a_CFLAGS) $(CFLAGS) -MT libstrace_a-getpid.o -MD -MP -MF $(DEPDIR)/libstrace_a-getpid.Tpo -c -o libstrace_a-getpid.o `test -f 'getpid.c' || echo '$(srcdir)/'`getpid.c -+@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libstrace_a-getpid.Tpo $(DEPDIR)/libstrace_a-getpid.Po -+@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='getpid.c' object='libstrace_a-getpid.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) $(libstrace_a_CPPFLAGS) $(CPPFLAGS) $(libstrace_a_CFLAGS) $(CFLAGS) -c -o libstrace_a-getpid.o `test -f 'getpid.c' || echo '$(srcdir)/'`getpid.c -+ -+libstrace_a-getpid.obj: getpid.c -+@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libstrace_a_CPPFLAGS) $(CPPFLAGS) $(libstrace_a_CFLAGS) $(CFLAGS) -MT libstrace_a-getpid.obj -MD -MP -MF $(DEPDIR)/libstrace_a-getpid.Tpo -c -o libstrace_a-getpid.obj `if test -f 'getpid.c'; then $(CYGPATH_W) 'getpid.c'; else $(CYGPATH_W) '$(srcdir)/getpid.c'; fi` -+@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libstrace_a-getpid.Tpo $(DEPDIR)/libstrace_a-getpid.Po -+@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='getpid.c' object='libstrace_a-getpid.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) $(libstrace_a_CPPFLAGS) $(CPPFLAGS) $(libstrace_a_CFLAGS) $(CFLAGS) -c -o libstrace_a-getpid.obj `if test -f 'getpid.c'; then $(CYGPATH_W) 'getpid.c'; else $(CYGPATH_W) '$(srcdir)/getpid.c'; fi` -+ - libstrace_a-getrandom.o: getrandom.c - @am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libstrace_a_CPPFLAGS) $(CPPFLAGS) $(libstrace_a_CFLAGS) $(CFLAGS) -MT libstrace_a-getrandom.o -MD -MP -MF $(DEPDIR)/libstrace_a-getrandom.Tpo -c -o libstrace_a-getrandom.o `test -f 'getrandom.c' || echo '$(srcdir)/'`getrandom.c - @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libstrace_a-getrandom.Tpo $(DEPDIR)/libstrace_a-getrandom.Po -@@ -8377,6 +8393,7 @@ - -rm -f ./$(DEPDIR)/libstrace_a-getcpu.Po - -rm -f ./$(DEPDIR)/libstrace_a-getcwd.Po - -rm -f ./$(DEPDIR)/libstrace_a-getpagesize.Po -+ -rm -f ./$(DEPDIR)/libstrace_a-getpid.Po - -rm -f ./$(DEPDIR)/libstrace_a-getrandom.Po - -rm -f ./$(DEPDIR)/libstrace_a-hdio.Po - -rm -f ./$(DEPDIR)/libstrace_a-hostname.Po -@@ -8764,6 +8781,7 @@ - -rm -f ./$(DEPDIR)/libstrace_a-getcpu.Po - -rm -f ./$(DEPDIR)/libstrace_a-getcwd.Po - -rm -f ./$(DEPDIR)/libstrace_a-getpagesize.Po -+ -rm -f ./$(DEPDIR)/libstrace_a-getpid.Po - -rm -f ./$(DEPDIR)/libstrace_a-getrandom.Po - -rm -f ./$(DEPDIR)/libstrace_a-hdio.Po - -rm -f ./$(DEPDIR)/libstrace_a-hostname.Po diff --git a/0136-Use-get_proc_pid-for-proc-paths.patch b/0136-Use-get_proc_pid-for-proc-paths.patch deleted file mode 100755 index de978f1..0000000 --- a/0136-Use-get_proc_pid-for-proc-paths.patch +++ /dev/null @@ -1,93 +0,0 @@ -From bba566504901b2c07885ecf325829875a96381a7 Mon Sep 17 00:00:00 2001 -From: =?UTF-8?q?=C3=81kos=20Uzonyi?= -Date: Tue, 30 Jun 2020 17:20:12 +0200 -Subject: [PATCH 136/138] Use get_proc_pid for /proc paths - -* mmap_cache.c (mmap_cache_rebuild_if_invalid): Use proc pid instead of -tcp->pid for /proc path. -* util.c (getfdproto): Likewise. -(pidfd_get_pid): Likewise. -* pathtrace.c (getfdpath_pid): Likewise. -* strace.c (attach_tcb): Likewise. ---- - mmap_cache.c | 2 +- - pathtrace.c | 7 ++++++- - strace.c | 2 +- - util.c | 9 +++++++-- - 4 files changed, 15 insertions(+), 5 deletions(-) - -diff --git a/mmap_cache.c b/mmap_cache.c -index 89c6225..9825df2 100644 ---- a/mmap_cache.c -+++ b/mmap_cache.c -@@ -84,7 +84,7 @@ mmap_cache_rebuild_if_invalid(struct tcb *tcp, const char *caller) - return MMAP_CACHE_REBUILD_READY; - - char filename[sizeof("/proc/4294967296/maps")]; -- xsprintf(filename, "/proc/%u/maps", tcp->pid); -+ xsprintf(filename, "/proc/%u/maps", get_proc_pid(tcp)); - - FILE *fp = fopen_stream(filename, "r"); - if (!fp) { -diff --git a/pathtrace.c b/pathtrace.c -index f85cf14..87dc64b 100644 ---- a/pathtrace.c -+++ b/pathtrace.c -@@ -87,7 +87,12 @@ getfdpath_pid(pid_t pid, int fd, char *buf, unsigned bufsize) - if (fd < 0) - return -1; - -- xsprintf(linkpath, "/proc/%u/fd/%u", pid, fd); -+ int proc_pid = 0; -+ translate_pid(NULL, pid, PT_TID, &proc_pid); -+ if (!proc_pid) -+ return -1; -+ -+ xsprintf(linkpath, "/proc/%u/fd/%u", proc_pid, fd); - n = readlink(linkpath, buf, bufsize - 1); - /* - * NB: if buf is too small, readlink doesn't fail, -diff --git a/strace.c b/strace.c -index 249533e..ef23f08 100644 ---- a/strace.c -+++ b/strace.c -@@ -1196,7 +1196,7 @@ attach_tcb(struct tcb *const tcp) - unsigned int ntid = 0, nerr = 0; - - if (followfork && tcp->pid != strace_child && -- xsprintf(procdir, task_path, tcp->pid) > 0 && -+ xsprintf(procdir, task_path, get_proc_pid(tcp)) > 0 && - (dir = opendir(procdir)) != NULL) { - struct_dirent *de; - -diff --git a/util.c b/util.c -index 2568021..481144b 100644 ---- a/util.c -+++ b/util.c -@@ -501,7 +501,7 @@ getfdproto(struct tcb *tcp, int fd) - if (fd < 0) - return SOCK_PROTO_UNKNOWN; - -- xsprintf(path, "/proc/%u/fd/%u", tcp->pid, fd); -+ xsprintf(path, "/proc/%u/fd/%u", get_proc_pid(tcp), fd); - r = getxattr(path, "system.sockprotoname", buf, bufsize - 1); - if (r <= 0) - return SOCK_PROTO_UNKNOWN; -@@ -582,8 +582,13 @@ printdev(struct tcb *tcp, int fd, const char *path) - pid_t - pidfd_get_pid(pid_t pid_of_fd, int fd) - { -+ int proc_pid = 0; -+ translate_pid(NULL, pid_of_fd, PT_TID, &proc_pid); -+ if (!proc_pid) -+ return -1; -+ - char fdi_path[sizeof("/proc/%u/fdinfo/%u") + 2 * sizeof(int) * 3]; -- xsprintf(fdi_path, "/proc/%u/fdinfo/%u", pid_of_fd, fd); -+ xsprintf(fdi_path, "/proc/%u/fdinfo/%u", proc_pid, fd); - - FILE *f = fopen_stream(fdi_path, "r"); - if (!f) --- -2.1.4 - diff --git a/0137-Implement-testing-framework-for-pidns.patch b/0137-Implement-testing-framework-for-pidns.patch deleted file mode 100755 index b9b1317..0000000 --- a/0137-Implement-testing-framework-for-pidns.patch +++ /dev/null @@ -1,1360 +0,0 @@ -From 4362ddaba8634a5ac6b4add0eaf25eec5f7315f5 Mon Sep 17 00:00:00 2001 -From: =?UTF-8?q?=C3=81kos=20Uzonyi?= -Date: Fri, 26 Jun 2020 20:13:28 +0200 -Subject: [PATCH 137/138] Implement testing framework for pidns - -* tests/pidns.c: New file. -* tests/pidns.h: New file. -* tests/Makefile.am (libtests_a_SOURCES): Add pidns.c, pidns.h. -* tests/init.sh (test_pidns, test_pidns_run_strace): New functions. ---- - tests/Makefile.am | 2 + - tests/init.sh | 30 +++++++ - tests/pidns.c | 237 ++++++++++++++++++++++++++++++++++++++++++++++++++++++ - tests/pidns.h | 56 +++++++++++++ - 4 files changed, 325 insertions(+) - create mode 100644 tests/pidns.c - create mode 100644 tests/pidns.h - -Index: strace-5.7/tests/Makefile.am -=================================================================== ---- strace-5.7.orig/tests/Makefile.am 2020-09-09 19:32:50.846965498 +0200 -+++ strace-5.7/tests/Makefile.am 2020-09-09 19:49:54.008575349 +0200 -@@ -44,6 +44,8 @@ - libsocketcall.c \ - lock_file.c \ - overflowuid.c \ -+ pidns.c \ -+ pidns.h \ - pipe_maxfd.c \ - print_quoted_string.c \ - print_time.c \ -Index: strace-5.7/tests/init.sh -=================================================================== ---- strace-5.7.orig/tests/init.sh 2020-09-09 19:32:50.846965498 +0200 -+++ strace-5.7/tests/init.sh 2020-09-09 19:49:54.008575349 +0200 -@@ -387,6 +387,36 @@ - test_pure_prog_set "$@" < "$srcdir/$NAME.in" - } - -+test_pidns_run_strace() -+{ -+ local parent_pid init_pid -+ -+ check_prog tail -+ check_prog cut -+ check_prog grep -+ -+ run_prog > /dev/null -+ run_strace --pidns-translation -f $@ $args > "$EXP" -+ -+ # filter out logs made by the parent or init process of the pidns test -+ parent_pid="$(tail -n 2 $LOG | head -n 1 | cut -d' ' -f1)" -+ init_pid="$(tail -n 1 $LOG | cut -d' ' -f1)" -+ grep -E -v "^($parent_pid|$init_pid) " "$LOG" > "$OUT" -+ match_diff "$OUT" "$EXP" -+} -+ -+test_pidns() -+{ -+ check_prog unshare -+ unshare -Urpf true || framework_skip_ "unshare -Urpf true failed" -+ -+ test_pidns_run_strace "$@" -+ -+ # test PID translation when /proc is mounted from an other namespace -+ STRACE="unshare -Urpf $STRACE" -+ test_pidns_run_strace "$@" -+} -+ - check_prog cat - check_prog rm - -Index: strace-5.7/tests/pidns.c -=================================================================== ---- /dev/null 1970-01-01 00:00:00.000000000 +0000 -+++ strace-5.7/tests/pidns.c 2020-09-09 19:49:54.009575350 +0200 -@@ -0,0 +1,237 @@ -+/* -+ * Testing framework for PID namespace translation -+ * -+ * Copyright (c) 2020 Ákos Uzonyi -+ * All rights reserved. -+ * -+ * SPDX-License-Identifier: LGPL-2.1-or-later -+ */ -+#include "tests.h" -+#include "pidns.h" -+#include "nsfs.h" -+ -+#include -+#include -+#include -+#include -+#include -+#include -+#include -+#include -+#include -+#include -+#include -+#include -+ -+#ifndef CLONE_NEWUSER -+# define CLONE_NEWUSER 0x10000000 -+#endif -+ -+#ifndef CLONE_NEWPID -+# define CLONE_NEWPID 0x20000000 -+#endif -+ -+static bool pidns_translation = false; -+static bool pidns_unshared = false; -+ -+/* Our PIDs in strace's namespace */ -+static pid_t pidns_strace_ids[PT_COUNT]; -+ -+void -+pidns_print_leader(void) -+{ -+ if (pidns_translation) -+ printf("%-5d ", pidns_strace_ids[PT_TID]); -+} -+ -+const char * -+pidns_pid2str(enum pid_type type) -+{ -+ static const char format[] = " /* %d in strace's PID NS */"; -+ static char buf[PT_COUNT][sizeof(format) + sizeof(int) * 3]; -+ -+ if (type < 0 || type >= PT_COUNT) -+ return ""; -+ -+ if (!pidns_unshared || !pidns_strace_ids[type]) -+ return ""; -+ -+ snprintf(buf[type], sizeof(buf[type]), format, pidns_strace_ids[type]); -+ return buf[type]; -+} -+ -+/** -+ * This function is like fork, but does a few more things. It sets up the -+ * child's PGID and SID according to the parameters. Also it fills the -+ * pidns_strace_ids array in the child's memory with the PIDs of the child in -+ * parent's PID namespace. In the parent it waits for the child to terminate -+ * (but leaves the zombie to use it later as a process group). If the child -+ * terminates with nonzero exit status, the test is failed. -+ * -+ * @param pgid The process group the child should be moved to. It's expected -+ * to be a PID of a zombie process (will be reaped). If -+ * negative, leave the child in the process group of the parent. -+ * If 0, move the process to its own process group. -+ * @param new_sid Wheather child should be moved to a new session. -+ */ -+static pid_t -+pidns_fork(pid_t pgid, bool new_sid) -+{ -+ int strace_ids_pipe[2]; -+ if (pipe(strace_ids_pipe) < 0) -+ perror_msg_and_fail("pipe"); -+ -+ fflush(stdout); -+ pid_t pid = fork(); -+ if (pid < 0) -+ perror_msg_and_fail("fork"); -+ -+ if (!pid) { -+ close(strace_ids_pipe[1]); -+ -+ ssize_t len = read(strace_ids_pipe[0], pidns_strace_ids, -+ sizeof(pidns_strace_ids)); -+ if (len < 0) -+ perror_msg_and_fail("read"); -+ if (len != sizeof(pidns_strace_ids)) -+ error_msg_and_fail("read returned < sizeof(pidns_strace_ids)"); -+ -+ close(strace_ids_pipe[0]); -+ -+ if (pidns_strace_ids[PT_SID]) -+ setsid(); -+ -+ return 0; -+ } -+ -+ pidns_strace_ids[PT_TID] = pid; -+ pidns_strace_ids[PT_TGID] = pid; -+ pidns_strace_ids[PT_PGID] = 0; -+ pidns_strace_ids[PT_SID] = 0; -+ -+ if (!pgid) -+ pgid = pid; -+ -+ if (pgid > 0) { -+ if (setpgid(pid, pgid) < 0) -+ perror_msg_and_fail("setpgid"); -+ -+ pidns_strace_ids[PT_PGID] = pgid; -+ } -+ -+ /* Reap group leader to test PGID decoding */ -+ if (pgid > 0 && pgid != pid) { -+ int ret = waitpid(pgid, NULL, WNOHANG); -+ if (ret < 0) -+ perror_msg_and_fail("wait"); -+ if (!ret) -+ error_msg_and_fail("could not reap group leader"); -+ } -+ -+ if (new_sid) { -+ pidns_strace_ids[PT_SID] = pid; -+ pidns_strace_ids[PT_PGID] = pid; -+ } -+ -+ ssize_t len = write(strace_ids_pipe[1], pidns_strace_ids, -+ sizeof(pidns_strace_ids)); -+ if (len < 0) -+ perror_msg_and_fail("write"); -+ if (len != sizeof(pidns_strace_ids)) -+ error_msg_and_fail("write returned < sizeof(pidns_strace_ids)"); -+ -+ close(strace_ids_pipe[0]); -+ close(strace_ids_pipe[1]); -+ -+ /* WNOWAIT: leave the zombie, to be able to use it as a process group */ -+ siginfo_t siginfo; -+ if (waitid(P_PID, pid, &siginfo, WEXITED | WNOWAIT) < 0) -+ perror_msg_and_fail("wait"); -+ if (siginfo.si_code != CLD_EXITED || siginfo.si_status) -+ error_msg_and_fail("child terminated with nonzero exit status"); -+ -+ return pid; -+} -+ -+static void -+create_init_process(void) -+{ -+ int child_pipe[2]; -+ if (pipe(child_pipe) < 0) -+ perror_msg_and_fail("pipe"); -+ -+ pid_t pid = fork(); -+ if (pid < 0) -+ perror_msg_and_fail("fork"); -+ -+ if (!pid) { -+ close(child_pipe[1]); -+ if (read(child_pipe[0], &child_pipe[1], sizeof(int)) != 0) -+ _exit(1); -+ _exit(0); -+ } -+ -+ close(child_pipe[0]); -+} -+ -+void -+check_ns_ioctl(void) -+{ -+ int fd = open("/proc/self/ns/pid", O_RDONLY); -+ if (fd < 0) { -+ if (errno == ENOENT) -+ perror_msg_and_skip("opening /proc/self/ns/pid"); -+ else -+ perror_msg_and_fail("opening /proc/self/ns/pid"); -+ } -+ -+ int userns_fd = ioctl(fd, NS_GET_USERNS); -+ if (userns_fd < 0) { -+ if (errno == ENOTTY) -+ error_msg_and_skip("NS_* ioctl commands are not " -+ "supported by the kernel"); -+ else -+ perror_msg_and_fail("ioctl(NS_GET_USERNS)"); -+ } -+ -+ close(userns_fd); -+ close(fd); -+} -+ -+void -+pidns_test_init(void) -+{ -+ pidns_translation = true; -+ -+ check_ns_ioctl(); -+ -+ if (!pidns_fork(-1, false)) -+ return; -+ -+ /* Unshare user namespace too, so we do not need to be root */ -+ if (unshare(CLONE_NEWUSER | CLONE_NEWPID) < 0) { -+ if (errno == EPERM) -+ perror_msg_and_skip("unshare"); -+ -+ perror_msg_and_fail("unshare"); -+ } -+ -+ pidns_unshared = true; -+ -+ create_init_process(); -+ -+ if (!pidns_fork(-1, false)) -+ return; -+ -+ if (!pidns_fork(-1, true)) -+ return; -+ -+ pid_t pgid; -+ if (!(pgid = pidns_fork(0, false))) -+ return; -+ -+ if (!pidns_fork(pgid, false)) -+ return; -+ -+ exit(0); -+} -Index: strace-5.7/tests/pidns.h -=================================================================== ---- /dev/null 1970-01-01 00:00:00.000000000 +0000 -+++ strace-5.7/tests/pidns.h 2020-09-09 19:49:54.009575350 +0200 -@@ -0,0 +1,56 @@ -+/* -+ * Test PID namespace translation -+ * -+ * Copyright (c) 2020 Ákos Uzonyi -+ * All rights reserved. -+ * -+ * SPDX-License-Identifier: LGPL-2.1-or-later -+ */ -+#ifndef STRACE_PIDNS_H -+#define STRACE_PIDNS_H -+ -+#ifdef PIDNS_TRANSLATION -+# define PIDNS_TEST_INIT pidns_test_init() -+#else -+# define PIDNS_TEST_INIT -+#endif -+ -+#include -+ -+enum pid_type { -+ PT_TID, -+ PT_TGID, -+ PT_PGID, -+ PT_SID, -+ -+ PT_COUNT, -+ PT_NONE = -1 -+}; -+ -+/* Prints leader (process tid) if pidns_test_init was called */ -+void pidns_print_leader(void); -+ -+/* -+ * Returns a static buffer containing the translation string of our PID. -+ */ -+const char *pidns_pid2str(enum pid_type type); -+ -+/** -+ * Skips the test if NS_* ioctl commands are not supported by the kernel. -+ */ -+void check_ns_ioctl(void); -+ -+/** -+ * Init pidns testing. -+ * -+ * Should be called at the beginning of the test's main function -+ * -+ * This function calls fork a couple of times, and returns in the child -+ * processes. These child processes are in a new PID namespace with different -+ * PID configurations (group leader, session leader, ...). If any child -+ * terminates with nonzero exit status the test is failed. Otherwise the test is -+ * succesful, and the parent process exits with 0. -+ */ -+void pidns_test_init(void); -+ -+#endif -\ No newline at end of file -Index: strace-5.7/tests-m32/Makefile.am -=================================================================== ---- strace-5.7.orig/tests-m32/Makefile.am 2020-09-09 19:32:50.846965498 +0200 -+++ strace-5.7/tests-m32/Makefile.am 2020-09-09 19:49:54.009575350 +0200 -@@ -7,14 +7,14 @@ - # SPDX-License-Identifier: GPL-2.0-or-later - - OS = linux --CC = @CC_FOR_M32@ --ARCH = @arch_m32@ -+CC = @CC@ -+ARCH = @arch@ - NATIVE_ARCH = @arch_native@ --SIZEOF_KERNEL_LONG_T = 4 --SIZEOF_LONG = 4 --MPERS_NAME = m32 --MPERS_CC_FLAGS = @CFLAGS_FOR_M32@ @cc_flags_m32@ --ARCH_MFLAGS = -DMPERS_IS_$(MPERS_NAME) $(MPERS_CC_FLAGS) -+SIZEOF_KERNEL_LONG_T = @SIZEOF_KERNEL_LONG_T@ -+SIZEOF_LONG = @SIZEOF_LONG@ -+MPERS_NAME = -+MPERS_CC_FLAGS = -+ARCH_MFLAGS = - AM_CFLAGS = $(WARN_CFLAGS) - AM_CPPFLAGS = $(ARCH_MFLAGS) \ - -I$(builddir) \ -@@ -44,6 +44,8 @@ - libsocketcall.c \ - lock_file.c \ - overflowuid.c \ -+ pidns.c \ -+ pidns.h \ - pipe_maxfd.c \ - print_quoted_string.c \ - print_time.c \ -Index: strace-5.7/tests-m32/init.sh -=================================================================== ---- strace-5.7.orig/tests-m32/init.sh 2020-09-09 19:32:50.846965498 +0200 -+++ strace-5.7/tests-m32/init.sh 2020-09-09 19:49:54.009575350 +0200 -@@ -387,6 +387,36 @@ - test_pure_prog_set "$@" < "$srcdir/$NAME.in" - } - -+test_pidns_run_strace() -+{ -+ local parent_pid init_pid -+ -+ check_prog tail -+ check_prog cut -+ check_prog grep -+ -+ run_prog > /dev/null -+ run_strace --pidns-translation -f $@ $args > "$EXP" -+ -+ # filter out logs made by the parent or init process of the pidns test -+ parent_pid="$(tail -n 2 $LOG | head -n 1 | cut -d' ' -f1)" -+ init_pid="$(tail -n 1 $LOG | cut -d' ' -f1)" -+ grep -E -v "^($parent_pid|$init_pid) " "$LOG" > "$OUT" -+ match_diff "$OUT" "$EXP" -+} -+ -+test_pidns() -+{ -+ check_prog unshare -+ unshare -Urpf true || framework_skip_ "unshare -Urpf true failed" -+ -+ test_pidns_run_strace "$@" -+ -+ # test PID translation when /proc is mounted from an other namespace -+ STRACE="unshare -Urpf $STRACE" -+ test_pidns_run_strace "$@" -+} -+ - check_prog cat - check_prog rm - -Index: strace-5.7/tests-m32/pidns.c -=================================================================== ---- /dev/null 1970-01-01 00:00:00.000000000 +0000 -+++ strace-5.7/tests-m32/pidns.c 2020-09-09 19:49:54.009575350 +0200 -@@ -0,0 +1,237 @@ -+/* -+ * Testing framework for PID namespace translation -+ * -+ * Copyright (c) 2020 Ákos Uzonyi -+ * All rights reserved. -+ * -+ * SPDX-License-Identifier: LGPL-2.1-or-later -+ */ -+#include "tests.h" -+#include "pidns.h" -+#include "nsfs.h" -+ -+#include -+#include -+#include -+#include -+#include -+#include -+#include -+#include -+#include -+#include -+#include -+#include -+ -+#ifndef CLONE_NEWUSER -+# define CLONE_NEWUSER 0x10000000 -+#endif -+ -+#ifndef CLONE_NEWPID -+# define CLONE_NEWPID 0x20000000 -+#endif -+ -+static bool pidns_translation = false; -+static bool pidns_unshared = false; -+ -+/* Our PIDs in strace's namespace */ -+static pid_t pidns_strace_ids[PT_COUNT]; -+ -+void -+pidns_print_leader(void) -+{ -+ if (pidns_translation) -+ printf("%-5d ", pidns_strace_ids[PT_TID]); -+} -+ -+const char * -+pidns_pid2str(enum pid_type type) -+{ -+ static const char format[] = " /* %d in strace's PID NS */"; -+ static char buf[PT_COUNT][sizeof(format) + sizeof(int) * 3]; -+ -+ if (type < 0 || type >= PT_COUNT) -+ return ""; -+ -+ if (!pidns_unshared || !pidns_strace_ids[type]) -+ return ""; -+ -+ snprintf(buf[type], sizeof(buf[type]), format, pidns_strace_ids[type]); -+ return buf[type]; -+} -+ -+/** -+ * This function is like fork, but does a few more things. It sets up the -+ * child's PGID and SID according to the parameters. Also it fills the -+ * pidns_strace_ids array in the child's memory with the PIDs of the child in -+ * parent's PID namespace. In the parent it waits for the child to terminate -+ * (but leaves the zombie to use it later as a process group). If the child -+ * terminates with nonzero exit status, the test is failed. -+ * -+ * @param pgid The process group the child should be moved to. It's expected -+ * to be a PID of a zombie process (will be reaped). If -+ * negative, leave the child in the process group of the parent. -+ * If 0, move the process to its own process group. -+ * @param new_sid Wheather child should be moved to a new session. -+ */ -+static pid_t -+pidns_fork(pid_t pgid, bool new_sid) -+{ -+ int strace_ids_pipe[2]; -+ if (pipe(strace_ids_pipe) < 0) -+ perror_msg_and_fail("pipe"); -+ -+ fflush(stdout); -+ pid_t pid = fork(); -+ if (pid < 0) -+ perror_msg_and_fail("fork"); -+ -+ if (!pid) { -+ close(strace_ids_pipe[1]); -+ -+ ssize_t len = read(strace_ids_pipe[0], pidns_strace_ids, -+ sizeof(pidns_strace_ids)); -+ if (len < 0) -+ perror_msg_and_fail("read"); -+ if (len != sizeof(pidns_strace_ids)) -+ error_msg_and_fail("read returned < sizeof(pidns_strace_ids)"); -+ -+ close(strace_ids_pipe[0]); -+ -+ if (pidns_strace_ids[PT_SID]) -+ setsid(); -+ -+ return 0; -+ } -+ -+ pidns_strace_ids[PT_TID] = pid; -+ pidns_strace_ids[PT_TGID] = pid; -+ pidns_strace_ids[PT_PGID] = 0; -+ pidns_strace_ids[PT_SID] = 0; -+ -+ if (!pgid) -+ pgid = pid; -+ -+ if (pgid > 0) { -+ if (setpgid(pid, pgid) < 0) -+ perror_msg_and_fail("setpgid"); -+ -+ pidns_strace_ids[PT_PGID] = pgid; -+ } -+ -+ /* Reap group leader to test PGID decoding */ -+ if (pgid > 0 && pgid != pid) { -+ int ret = waitpid(pgid, NULL, WNOHANG); -+ if (ret < 0) -+ perror_msg_and_fail("wait"); -+ if (!ret) -+ error_msg_and_fail("could not reap group leader"); -+ } -+ -+ if (new_sid) { -+ pidns_strace_ids[PT_SID] = pid; -+ pidns_strace_ids[PT_PGID] = pid; -+ } -+ -+ ssize_t len = write(strace_ids_pipe[1], pidns_strace_ids, -+ sizeof(pidns_strace_ids)); -+ if (len < 0) -+ perror_msg_and_fail("write"); -+ if (len != sizeof(pidns_strace_ids)) -+ error_msg_and_fail("write returned < sizeof(pidns_strace_ids)"); -+ -+ close(strace_ids_pipe[0]); -+ close(strace_ids_pipe[1]); -+ -+ /* WNOWAIT: leave the zombie, to be able to use it as a process group */ -+ siginfo_t siginfo; -+ if (waitid(P_PID, pid, &siginfo, WEXITED | WNOWAIT) < 0) -+ perror_msg_and_fail("wait"); -+ if (siginfo.si_code != CLD_EXITED || siginfo.si_status) -+ error_msg_and_fail("child terminated with nonzero exit status"); -+ -+ return pid; -+} -+ -+static void -+create_init_process(void) -+{ -+ int child_pipe[2]; -+ if (pipe(child_pipe) < 0) -+ perror_msg_and_fail("pipe"); -+ -+ pid_t pid = fork(); -+ if (pid < 0) -+ perror_msg_and_fail("fork"); -+ -+ if (!pid) { -+ close(child_pipe[1]); -+ if (read(child_pipe[0], &child_pipe[1], sizeof(int)) != 0) -+ _exit(1); -+ _exit(0); -+ } -+ -+ close(child_pipe[0]); -+} -+ -+void -+check_ns_ioctl(void) -+{ -+ int fd = open("/proc/self/ns/pid", O_RDONLY); -+ if (fd < 0) { -+ if (errno == ENOENT) -+ perror_msg_and_skip("opening /proc/self/ns/pid"); -+ else -+ perror_msg_and_fail("opening /proc/self/ns/pid"); -+ } -+ -+ int userns_fd = ioctl(fd, NS_GET_USERNS); -+ if (userns_fd < 0) { -+ if (errno == ENOTTY) -+ error_msg_and_skip("NS_* ioctl commands are not " -+ "supported by the kernel"); -+ else -+ perror_msg_and_fail("ioctl(NS_GET_USERNS)"); -+ } -+ -+ close(userns_fd); -+ close(fd); -+} -+ -+void -+pidns_test_init(void) -+{ -+ pidns_translation = true; -+ -+ check_ns_ioctl(); -+ -+ if (!pidns_fork(-1, false)) -+ return; -+ -+ /* Unshare user namespace too, so we do not need to be root */ -+ if (unshare(CLONE_NEWUSER | CLONE_NEWPID) < 0) { -+ if (errno == EPERM) -+ perror_msg_and_skip("unshare"); -+ -+ perror_msg_and_fail("unshare"); -+ } -+ -+ pidns_unshared = true; -+ -+ create_init_process(); -+ -+ if (!pidns_fork(-1, false)) -+ return; -+ -+ if (!pidns_fork(-1, true)) -+ return; -+ -+ pid_t pgid; -+ if (!(pgid = pidns_fork(0, false))) -+ return; -+ -+ if (!pidns_fork(pgid, false)) -+ return; -+ -+ exit(0); -+} -Index: strace-5.7/tests-m32/pidns.h -=================================================================== ---- /dev/null 1970-01-01 00:00:00.000000000 +0000 -+++ strace-5.7/tests-m32/pidns.h 2020-09-09 19:49:54.010575350 +0200 -@@ -0,0 +1,56 @@ -+/* -+ * Test PID namespace translation -+ * -+ * Copyright (c) 2020 Ákos Uzonyi -+ * All rights reserved. -+ * -+ * SPDX-License-Identifier: LGPL-2.1-or-later -+ */ -+#ifndef STRACE_PIDNS_H -+#define STRACE_PIDNS_H -+ -+#ifdef PIDNS_TRANSLATION -+# define PIDNS_TEST_INIT pidns_test_init() -+#else -+# define PIDNS_TEST_INIT -+#endif -+ -+#include -+ -+enum pid_type { -+ PT_TID, -+ PT_TGID, -+ PT_PGID, -+ PT_SID, -+ -+ PT_COUNT, -+ PT_NONE = -1 -+}; -+ -+/* Prints leader (process tid) if pidns_test_init was called */ -+void pidns_print_leader(void); -+ -+/* -+ * Returns a static buffer containing the translation string of our PID. -+ */ -+const char *pidns_pid2str(enum pid_type type); -+ -+/** -+ * Skips the test if NS_* ioctl commands are not supported by the kernel. -+ */ -+void check_ns_ioctl(void); -+ -+/** -+ * Init pidns testing. -+ * -+ * Should be called at the beginning of the test's main function -+ * -+ * This function calls fork a couple of times, and returns in the child -+ * processes. These child processes are in a new PID namespace with different -+ * PID configurations (group leader, session leader, ...). If any child -+ * terminates with nonzero exit status the test is failed. Otherwise the test is -+ * succesful, and the parent process exits with 0. -+ */ -+void pidns_test_init(void); -+ -+#endif -\ No newline at end of file -Index: strace-5.7/tests-mx32/Makefile.am -=================================================================== ---- strace-5.7.orig/tests-mx32/Makefile.am 2020-09-09 19:32:50.846965498 +0200 -+++ strace-5.7/tests-mx32/Makefile.am 2020-09-09 19:49:54.010575350 +0200 -@@ -7,14 +7,14 @@ - # SPDX-License-Identifier: GPL-2.0-or-later - - OS = linux --CC = @CC_FOR_MX32@ --ARCH = @arch_mx32@ -+CC = @CC@ -+ARCH = @arch@ - NATIVE_ARCH = @arch_native@ - SIZEOF_KERNEL_LONG_T = @SIZEOF_KERNEL_LONG_T@ --SIZEOF_LONG = 4 --MPERS_NAME = mx32 --MPERS_CC_FLAGS = @CFLAGS_FOR_MX32@ @cc_flags_mx32@ --ARCH_MFLAGS = -DMPERS_IS_$(MPERS_NAME) $(MPERS_CC_FLAGS) -+SIZEOF_LONG = @SIZEOF_LONG@ -+MPERS_NAME = -+MPERS_CC_FLAGS = -+ARCH_MFLAGS = - AM_CFLAGS = $(WARN_CFLAGS) - AM_CPPFLAGS = $(ARCH_MFLAGS) \ - -I$(builddir) \ -@@ -44,6 +44,8 @@ - libsocketcall.c \ - lock_file.c \ - overflowuid.c \ -+ pidns.c \ -+ pidns.h \ - pipe_maxfd.c \ - print_quoted_string.c \ - print_time.c \ -Index: strace-5.7/tests-mx32/init.sh -=================================================================== ---- strace-5.7.orig/tests-mx32/init.sh 2020-09-09 19:32:50.846965498 +0200 -+++ strace-5.7/tests-mx32/init.sh 2020-09-09 19:49:54.010575350 +0200 -@@ -387,6 +387,36 @@ - test_pure_prog_set "$@" < "$srcdir/$NAME.in" - } - -+test_pidns_run_strace() -+{ -+ local parent_pid init_pid -+ -+ check_prog tail -+ check_prog cut -+ check_prog grep -+ -+ run_prog > /dev/null -+ run_strace --pidns-translation -f $@ $args > "$EXP" -+ -+ # filter out logs made by the parent or init process of the pidns test -+ parent_pid="$(tail -n 2 $LOG | head -n 1 | cut -d' ' -f1)" -+ init_pid="$(tail -n 1 $LOG | cut -d' ' -f1)" -+ grep -E -v "^($parent_pid|$init_pid) " "$LOG" > "$OUT" -+ match_diff "$OUT" "$EXP" -+} -+ -+test_pidns() -+{ -+ check_prog unshare -+ unshare -Urpf true || framework_skip_ "unshare -Urpf true failed" -+ -+ test_pidns_run_strace "$@" -+ -+ # test PID translation when /proc is mounted from an other namespace -+ STRACE="unshare -Urpf $STRACE" -+ test_pidns_run_strace "$@" -+} -+ - check_prog cat - check_prog rm - -Index: strace-5.7/tests-mx32/pidns.c -=================================================================== ---- /dev/null 1970-01-01 00:00:00.000000000 +0000 -+++ strace-5.7/tests-mx32/pidns.c 2020-09-09 19:49:54.010575350 +0200 -@@ -0,0 +1,237 @@ -+/* -+ * Testing framework for PID namespace translation -+ * -+ * Copyright (c) 2020 Ákos Uzonyi -+ * All rights reserved. -+ * -+ * SPDX-License-Identifier: LGPL-2.1-or-later -+ */ -+#include "tests.h" -+#include "pidns.h" -+#include "nsfs.h" -+ -+#include -+#include -+#include -+#include -+#include -+#include -+#include -+#include -+#include -+#include -+#include -+#include -+ -+#ifndef CLONE_NEWUSER -+# define CLONE_NEWUSER 0x10000000 -+#endif -+ -+#ifndef CLONE_NEWPID -+# define CLONE_NEWPID 0x20000000 -+#endif -+ -+static bool pidns_translation = false; -+static bool pidns_unshared = false; -+ -+/* Our PIDs in strace's namespace */ -+static pid_t pidns_strace_ids[PT_COUNT]; -+ -+void -+pidns_print_leader(void) -+{ -+ if (pidns_translation) -+ printf("%-5d ", pidns_strace_ids[PT_TID]); -+} -+ -+const char * -+pidns_pid2str(enum pid_type type) -+{ -+ static const char format[] = " /* %d in strace's PID NS */"; -+ static char buf[PT_COUNT][sizeof(format) + sizeof(int) * 3]; -+ -+ if (type < 0 || type >= PT_COUNT) -+ return ""; -+ -+ if (!pidns_unshared || !pidns_strace_ids[type]) -+ return ""; -+ -+ snprintf(buf[type], sizeof(buf[type]), format, pidns_strace_ids[type]); -+ return buf[type]; -+} -+ -+/** -+ * This function is like fork, but does a few more things. It sets up the -+ * child's PGID and SID according to the parameters. Also it fills the -+ * pidns_strace_ids array in the child's memory with the PIDs of the child in -+ * parent's PID namespace. In the parent it waits for the child to terminate -+ * (but leaves the zombie to use it later as a process group). If the child -+ * terminates with nonzero exit status, the test is failed. -+ * -+ * @param pgid The process group the child should be moved to. It's expected -+ * to be a PID of a zombie process (will be reaped). If -+ * negative, leave the child in the process group of the parent. -+ * If 0, move the process to its own process group. -+ * @param new_sid Wheather child should be moved to a new session. -+ */ -+static pid_t -+pidns_fork(pid_t pgid, bool new_sid) -+{ -+ int strace_ids_pipe[2]; -+ if (pipe(strace_ids_pipe) < 0) -+ perror_msg_and_fail("pipe"); -+ -+ fflush(stdout); -+ pid_t pid = fork(); -+ if (pid < 0) -+ perror_msg_and_fail("fork"); -+ -+ if (!pid) { -+ close(strace_ids_pipe[1]); -+ -+ ssize_t len = read(strace_ids_pipe[0], pidns_strace_ids, -+ sizeof(pidns_strace_ids)); -+ if (len < 0) -+ perror_msg_and_fail("read"); -+ if (len != sizeof(pidns_strace_ids)) -+ error_msg_and_fail("read returned < sizeof(pidns_strace_ids)"); -+ -+ close(strace_ids_pipe[0]); -+ -+ if (pidns_strace_ids[PT_SID]) -+ setsid(); -+ -+ return 0; -+ } -+ -+ pidns_strace_ids[PT_TID] = pid; -+ pidns_strace_ids[PT_TGID] = pid; -+ pidns_strace_ids[PT_PGID] = 0; -+ pidns_strace_ids[PT_SID] = 0; -+ -+ if (!pgid) -+ pgid = pid; -+ -+ if (pgid > 0) { -+ if (setpgid(pid, pgid) < 0) -+ perror_msg_and_fail("setpgid"); -+ -+ pidns_strace_ids[PT_PGID] = pgid; -+ } -+ -+ /* Reap group leader to test PGID decoding */ -+ if (pgid > 0 && pgid != pid) { -+ int ret = waitpid(pgid, NULL, WNOHANG); -+ if (ret < 0) -+ perror_msg_and_fail("wait"); -+ if (!ret) -+ error_msg_and_fail("could not reap group leader"); -+ } -+ -+ if (new_sid) { -+ pidns_strace_ids[PT_SID] = pid; -+ pidns_strace_ids[PT_PGID] = pid; -+ } -+ -+ ssize_t len = write(strace_ids_pipe[1], pidns_strace_ids, -+ sizeof(pidns_strace_ids)); -+ if (len < 0) -+ perror_msg_and_fail("write"); -+ if (len != sizeof(pidns_strace_ids)) -+ error_msg_and_fail("write returned < sizeof(pidns_strace_ids)"); -+ -+ close(strace_ids_pipe[0]); -+ close(strace_ids_pipe[1]); -+ -+ /* WNOWAIT: leave the zombie, to be able to use it as a process group */ -+ siginfo_t siginfo; -+ if (waitid(P_PID, pid, &siginfo, WEXITED | WNOWAIT) < 0) -+ perror_msg_and_fail("wait"); -+ if (siginfo.si_code != CLD_EXITED || siginfo.si_status) -+ error_msg_and_fail("child terminated with nonzero exit status"); -+ -+ return pid; -+} -+ -+static void -+create_init_process(void) -+{ -+ int child_pipe[2]; -+ if (pipe(child_pipe) < 0) -+ perror_msg_and_fail("pipe"); -+ -+ pid_t pid = fork(); -+ if (pid < 0) -+ perror_msg_and_fail("fork"); -+ -+ if (!pid) { -+ close(child_pipe[1]); -+ if (read(child_pipe[0], &child_pipe[1], sizeof(int)) != 0) -+ _exit(1); -+ _exit(0); -+ } -+ -+ close(child_pipe[0]); -+} -+ -+void -+check_ns_ioctl(void) -+{ -+ int fd = open("/proc/self/ns/pid", O_RDONLY); -+ if (fd < 0) { -+ if (errno == ENOENT) -+ perror_msg_and_skip("opening /proc/self/ns/pid"); -+ else -+ perror_msg_and_fail("opening /proc/self/ns/pid"); -+ } -+ -+ int userns_fd = ioctl(fd, NS_GET_USERNS); -+ if (userns_fd < 0) { -+ if (errno == ENOTTY) -+ error_msg_and_skip("NS_* ioctl commands are not " -+ "supported by the kernel"); -+ else -+ perror_msg_and_fail("ioctl(NS_GET_USERNS)"); -+ } -+ -+ close(userns_fd); -+ close(fd); -+} -+ -+void -+pidns_test_init(void) -+{ -+ pidns_translation = true; -+ -+ check_ns_ioctl(); -+ -+ if (!pidns_fork(-1, false)) -+ return; -+ -+ /* Unshare user namespace too, so we do not need to be root */ -+ if (unshare(CLONE_NEWUSER | CLONE_NEWPID) < 0) { -+ if (errno == EPERM) -+ perror_msg_and_skip("unshare"); -+ -+ perror_msg_and_fail("unshare"); -+ } -+ -+ pidns_unshared = true; -+ -+ create_init_process(); -+ -+ if (!pidns_fork(-1, false)) -+ return; -+ -+ if (!pidns_fork(-1, true)) -+ return; -+ -+ pid_t pgid; -+ if (!(pgid = pidns_fork(0, false))) -+ return; -+ -+ if (!pidns_fork(pgid, false)) -+ return; -+ -+ exit(0); -+} -Index: strace-5.7/tests-mx32/pidns.h -=================================================================== ---- /dev/null 1970-01-01 00:00:00.000000000 +0000 -+++ strace-5.7/tests-mx32/pidns.h 2020-09-09 19:49:54.010575350 +0200 -@@ -0,0 +1,56 @@ -+/* -+ * Test PID namespace translation -+ * -+ * Copyright (c) 2020 Ákos Uzonyi -+ * All rights reserved. -+ * -+ * SPDX-License-Identifier: LGPL-2.1-or-later -+ */ -+#ifndef STRACE_PIDNS_H -+#define STRACE_PIDNS_H -+ -+#ifdef PIDNS_TRANSLATION -+# define PIDNS_TEST_INIT pidns_test_init() -+#else -+# define PIDNS_TEST_INIT -+#endif -+ -+#include -+ -+enum pid_type { -+ PT_TID, -+ PT_TGID, -+ PT_PGID, -+ PT_SID, -+ -+ PT_COUNT, -+ PT_NONE = -1 -+}; -+ -+/* Prints leader (process tid) if pidns_test_init was called */ -+void pidns_print_leader(void); -+ -+/* -+ * Returns a static buffer containing the translation string of our PID. -+ */ -+const char *pidns_pid2str(enum pid_type type); -+ -+/** -+ * Skips the test if NS_* ioctl commands are not supported by the kernel. -+ */ -+void check_ns_ioctl(void); -+ -+/** -+ * Init pidns testing. -+ * -+ * Should be called at the beginning of the test's main function -+ * -+ * This function calls fork a couple of times, and returns in the child -+ * processes. These child processes are in a new PID namespace with different -+ * PID configurations (group leader, session leader, ...). If any child -+ * terminates with nonzero exit status the test is failed. Otherwise the test is -+ * succesful, and the parent process exits with 0. -+ */ -+void pidns_test_init(void); -+ -+#endif -\ No newline at end of file -Index: strace-5.7/tests/Makefile.in -=================================================================== ---- strace-5.7.orig/tests/Makefile.in 2020-09-09 19:46:24.904450714 +0200 -+++ strace-5.7/tests/Makefile.in 2020-09-09 19:51:23.607628754 +0200 -@@ -531,7 +531,7 @@ - libtests_a-libmmsg.$(OBJEXT) \ - libtests_a-libsocketcall.$(OBJEXT) \ - libtests_a-lock_file.$(OBJEXT) \ -- libtests_a-overflowuid.$(OBJEXT) \ -+ libtests_a-overflowuid.$(OBJEXT) libtests_a-pidns.$(OBJEXT) \ - libtests_a-pipe_maxfd.$(OBJEXT) \ - libtests_a-print_quoted_string.$(OBJEXT) \ - libtests_a-print_time.$(OBJEXT) \ -@@ -3899,6 +3899,7 @@ - ./$(DEPDIR)/libtests_a-libsocketcall.Po \ - ./$(DEPDIR)/libtests_a-lock_file.Po \ - ./$(DEPDIR)/libtests_a-overflowuid.Po \ -+ ./$(DEPDIR)/libtests_a-pidns.Po \ - ./$(DEPDIR)/libtests_a-pipe_maxfd.Po \ - ./$(DEPDIR)/libtests_a-print_quoted_string.Po \ - ./$(DEPDIR)/libtests_a-print_time.Po \ -@@ -5122,6 +5123,8 @@ - libsocketcall.c \ - lock_file.c \ - overflowuid.c \ -+ pidns.c \ -+ pidns.h \ - pipe_maxfd.c \ - print_quoted_string.c \ - print_time.c \ -@@ -9926,6 +9929,7 @@ - @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libtests_a-libsocketcall.Po@am__quote@ # am--include-marker - @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libtests_a-lock_file.Po@am__quote@ # am--include-marker - @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libtests_a-overflowuid.Po@am__quote@ # am--include-marker -+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libtests_a-pidns.Po@am__quote@ # am--include-marker - @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libtests_a-pipe_maxfd.Po@am__quote@ # am--include-marker - @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libtests_a-print_quoted_string.Po@am__quote@ # am--include-marker - @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libtests_a-print_time.Po@am__quote@ # am--include-marker -@@ -10651,6 +10655,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-overflowuid.obj `if test -f 'overflowuid.c'; then $(CYGPATH_W) 'overflowuid.c'; else $(CYGPATH_W) '$(srcdir)/overflowuid.c'; fi` - -+libtests_a-pidns.o: pidns.c -+@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libtests_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT libtests_a-pidns.o -MD -MP -MF $(DEPDIR)/libtests_a-pidns.Tpo -c -o libtests_a-pidns.o `test -f 'pidns.c' || echo '$(srcdir)/'`pidns.c -+@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libtests_a-pidns.Tpo $(DEPDIR)/libtests_a-pidns.Po -+@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='pidns.c' object='libtests_a-pidns.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-pidns.o `test -f 'pidns.c' || echo '$(srcdir)/'`pidns.c -+ -+libtests_a-pidns.obj: pidns.c -+@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libtests_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT libtests_a-pidns.obj -MD -MP -MF $(DEPDIR)/libtests_a-pidns.Tpo -c -o libtests_a-pidns.obj `if test -f 'pidns.c'; then $(CYGPATH_W) 'pidns.c'; else $(CYGPATH_W) '$(srcdir)/pidns.c'; fi` -+@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libtests_a-pidns.Tpo $(DEPDIR)/libtests_a-pidns.Po -+@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='pidns.c' object='libtests_a-pidns.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-pidns.obj `if test -f 'pidns.c'; then $(CYGPATH_W) 'pidns.c'; else $(CYGPATH_W) '$(srcdir)/pidns.c'; fi` -+ - libtests_a-pipe_maxfd.o: pipe_maxfd.c - @am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libtests_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT libtests_a-pipe_maxfd.o -MD -MP -MF $(DEPDIR)/libtests_a-pipe_maxfd.Tpo -c -o libtests_a-pipe_maxfd.o `test -f 'pipe_maxfd.c' || echo '$(srcdir)/'`pipe_maxfd.c - @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libtests_a-pipe_maxfd.Tpo $(DEPDIR)/libtests_a-pipe_maxfd.Po -@@ -11748,6 +11766,7 @@ - -rm -f ./$(DEPDIR)/libtests_a-libsocketcall.Po - -rm -f ./$(DEPDIR)/libtests_a-lock_file.Po - -rm -f ./$(DEPDIR)/libtests_a-overflowuid.Po -+ -rm -f ./$(DEPDIR)/libtests_a-pidns.Po - -rm -f ./$(DEPDIR)/libtests_a-pipe_maxfd.Po - -rm -f ./$(DEPDIR)/libtests_a-print_quoted_string.Po - -rm -f ./$(DEPDIR)/libtests_a-print_time.Po -@@ -12605,6 +12624,7 @@ - -rm -f ./$(DEPDIR)/libtests_a-libsocketcall.Po - -rm -f ./$(DEPDIR)/libtests_a-lock_file.Po - -rm -f ./$(DEPDIR)/libtests_a-overflowuid.Po -+ -rm -f ./$(DEPDIR)/libtests_a-pidns.Po - -rm -f ./$(DEPDIR)/libtests_a-pipe_maxfd.Po - -rm -f ./$(DEPDIR)/libtests_a-print_quoted_string.Po - -rm -f ./$(DEPDIR)/libtests_a-print_time.Po -Index: strace-5.7/tests-m32/Makefile.in -=================================================================== ---- strace-5.7.orig/tests-m32/Makefile.in 2020-09-09 19:49:34.530563739 +0200 -+++ strace-5.7/tests-m32/Makefile.in 2020-09-09 19:52:01.333651241 +0200 -@@ -531,7 +531,7 @@ - libtests_a-libmmsg.$(OBJEXT) \ - libtests_a-libsocketcall.$(OBJEXT) \ - libtests_a-lock_file.$(OBJEXT) \ -- libtests_a-overflowuid.$(OBJEXT) \ -+ libtests_a-overflowuid.$(OBJEXT) libtests_a-pidns.$(OBJEXT) \ - libtests_a-pipe_maxfd.$(OBJEXT) \ - libtests_a-print_quoted_string.$(OBJEXT) \ - libtests_a-print_time.$(OBJEXT) \ -@@ -3899,6 +3899,7 @@ - ./$(DEPDIR)/libtests_a-libsocketcall.Po \ - ./$(DEPDIR)/libtests_a-lock_file.Po \ - ./$(DEPDIR)/libtests_a-overflowuid.Po \ -+ ./$(DEPDIR)/libtests_a-pidns.Po \ - ./$(DEPDIR)/libtests_a-pipe_maxfd.Po \ - ./$(DEPDIR)/libtests_a-print_quoted_string.Po \ - ./$(DEPDIR)/libtests_a-print_time.Po \ -@@ -5122,6 +5123,8 @@ - libsocketcall.c \ - lock_file.c \ - overflowuid.c \ -+ pidns.c \ -+ pidns.h \ - pipe_maxfd.c \ - print_quoted_string.c \ - print_time.c \ -@@ -9926,6 +9929,7 @@ - @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libtests_a-libsocketcall.Po@am__quote@ # am--include-marker - @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libtests_a-lock_file.Po@am__quote@ # am--include-marker - @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libtests_a-overflowuid.Po@am__quote@ # am--include-marker -+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libtests_a-pidns.Po@am__quote@ # am--include-marker - @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libtests_a-pipe_maxfd.Po@am__quote@ # am--include-marker - @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libtests_a-print_quoted_string.Po@am__quote@ # am--include-marker - @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libtests_a-print_time.Po@am__quote@ # am--include-marker -@@ -10651,6 +10655,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-overflowuid.obj `if test -f 'overflowuid.c'; then $(CYGPATH_W) 'overflowuid.c'; else $(CYGPATH_W) '$(srcdir)/overflowuid.c'; fi` - -+libtests_a-pidns.o: pidns.c -+@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libtests_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT libtests_a-pidns.o -MD -MP -MF $(DEPDIR)/libtests_a-pidns.Tpo -c -o libtests_a-pidns.o `test -f 'pidns.c' || echo '$(srcdir)/'`pidns.c -+@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libtests_a-pidns.Tpo $(DEPDIR)/libtests_a-pidns.Po -+@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='pidns.c' object='libtests_a-pidns.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-pidns.o `test -f 'pidns.c' || echo '$(srcdir)/'`pidns.c -+ -+libtests_a-pidns.obj: pidns.c -+@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libtests_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT libtests_a-pidns.obj -MD -MP -MF $(DEPDIR)/libtests_a-pidns.Tpo -c -o libtests_a-pidns.obj `if test -f 'pidns.c'; then $(CYGPATH_W) 'pidns.c'; else $(CYGPATH_W) '$(srcdir)/pidns.c'; fi` -+@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libtests_a-pidns.Tpo $(DEPDIR)/libtests_a-pidns.Po -+@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='pidns.c' object='libtests_a-pidns.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-pidns.obj `if test -f 'pidns.c'; then $(CYGPATH_W) 'pidns.c'; else $(CYGPATH_W) '$(srcdir)/pidns.c'; fi` -+ - libtests_a-pipe_maxfd.o: pipe_maxfd.c - @am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libtests_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT libtests_a-pipe_maxfd.o -MD -MP -MF $(DEPDIR)/libtests_a-pipe_maxfd.Tpo -c -o libtests_a-pipe_maxfd.o `test -f 'pipe_maxfd.c' || echo '$(srcdir)/'`pipe_maxfd.c - @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libtests_a-pipe_maxfd.Tpo $(DEPDIR)/libtests_a-pipe_maxfd.Po -@@ -11748,6 +11766,7 @@ - -rm -f ./$(DEPDIR)/libtests_a-libsocketcall.Po - -rm -f ./$(DEPDIR)/libtests_a-lock_file.Po - -rm -f ./$(DEPDIR)/libtests_a-overflowuid.Po -+ -rm -f ./$(DEPDIR)/libtests_a-pidns.Po - -rm -f ./$(DEPDIR)/libtests_a-pipe_maxfd.Po - -rm -f ./$(DEPDIR)/libtests_a-print_quoted_string.Po - -rm -f ./$(DEPDIR)/libtests_a-print_time.Po -@@ -12605,6 +12624,7 @@ - -rm -f ./$(DEPDIR)/libtests_a-libsocketcall.Po - -rm -f ./$(DEPDIR)/libtests_a-lock_file.Po - -rm -f ./$(DEPDIR)/libtests_a-overflowuid.Po -+ -rm -f ./$(DEPDIR)/libtests_a-pidns.Po - -rm -f ./$(DEPDIR)/libtests_a-pipe_maxfd.Po - -rm -f ./$(DEPDIR)/libtests_a-print_quoted_string.Po - -rm -f ./$(DEPDIR)/libtests_a-print_time.Po -Index: strace-5.7/tests-mx32/Makefile.in -=================================================================== ---- strace-5.7.orig/tests-mx32/Makefile.in 2020-09-09 19:49:39.557566736 +0200 -+++ strace-5.7/tests-mx32/Makefile.in 2020-09-09 19:52:26.062665980 +0200 -@@ -531,7 +531,7 @@ - libtests_a-libmmsg.$(OBJEXT) \ - libtests_a-libsocketcall.$(OBJEXT) \ - libtests_a-lock_file.$(OBJEXT) \ -- libtests_a-overflowuid.$(OBJEXT) \ -+ libtests_a-overflowuid.$(OBJEXT) libtests_a-pidns.$(OBJEXT) \ - libtests_a-pipe_maxfd.$(OBJEXT) \ - libtests_a-print_quoted_string.$(OBJEXT) \ - libtests_a-print_time.$(OBJEXT) \ -@@ -3899,6 +3899,7 @@ - ./$(DEPDIR)/libtests_a-libsocketcall.Po \ - ./$(DEPDIR)/libtests_a-lock_file.Po \ - ./$(DEPDIR)/libtests_a-overflowuid.Po \ -+ ./$(DEPDIR)/libtests_a-pidns.Po \ - ./$(DEPDIR)/libtests_a-pipe_maxfd.Po \ - ./$(DEPDIR)/libtests_a-print_quoted_string.Po \ - ./$(DEPDIR)/libtests_a-print_time.Po \ -@@ -5122,6 +5123,8 @@ - libsocketcall.c \ - lock_file.c \ - overflowuid.c \ -+ pidns.c \ -+ pidns.h \ - pipe_maxfd.c \ - print_quoted_string.c \ - print_time.c \ -@@ -9926,6 +9929,7 @@ - @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libtests_a-libsocketcall.Po@am__quote@ # am--include-marker - @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libtests_a-lock_file.Po@am__quote@ # am--include-marker - @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libtests_a-overflowuid.Po@am__quote@ # am--include-marker -+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libtests_a-pidns.Po@am__quote@ # am--include-marker - @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libtests_a-pipe_maxfd.Po@am__quote@ # am--include-marker - @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libtests_a-print_quoted_string.Po@am__quote@ # am--include-marker - @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libtests_a-print_time.Po@am__quote@ # am--include-marker -@@ -10651,6 +10655,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-overflowuid.obj `if test -f 'overflowuid.c'; then $(CYGPATH_W) 'overflowuid.c'; else $(CYGPATH_W) '$(srcdir)/overflowuid.c'; fi` - -+libtests_a-pidns.o: pidns.c -+@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libtests_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT libtests_a-pidns.o -MD -MP -MF $(DEPDIR)/libtests_a-pidns.Tpo -c -o libtests_a-pidns.o `test -f 'pidns.c' || echo '$(srcdir)/'`pidns.c -+@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libtests_a-pidns.Tpo $(DEPDIR)/libtests_a-pidns.Po -+@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='pidns.c' object='libtests_a-pidns.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-pidns.o `test -f 'pidns.c' || echo '$(srcdir)/'`pidns.c -+ -+libtests_a-pidns.obj: pidns.c -+@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libtests_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT libtests_a-pidns.obj -MD -MP -MF $(DEPDIR)/libtests_a-pidns.Tpo -c -o libtests_a-pidns.obj `if test -f 'pidns.c'; then $(CYGPATH_W) 'pidns.c'; else $(CYGPATH_W) '$(srcdir)/pidns.c'; fi` -+@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libtests_a-pidns.Tpo $(DEPDIR)/libtests_a-pidns.Po -+@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='pidns.c' object='libtests_a-pidns.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-pidns.obj `if test -f 'pidns.c'; then $(CYGPATH_W) 'pidns.c'; else $(CYGPATH_W) '$(srcdir)/pidns.c'; fi` -+ - libtests_a-pipe_maxfd.o: pipe_maxfd.c - @am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libtests_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT libtests_a-pipe_maxfd.o -MD -MP -MF $(DEPDIR)/libtests_a-pipe_maxfd.Tpo -c -o libtests_a-pipe_maxfd.o `test -f 'pipe_maxfd.c' || echo '$(srcdir)/'`pipe_maxfd.c - @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libtests_a-pipe_maxfd.Tpo $(DEPDIR)/libtests_a-pipe_maxfd.Po -@@ -11748,6 +11766,7 @@ - -rm -f ./$(DEPDIR)/libtests_a-libsocketcall.Po - -rm -f ./$(DEPDIR)/libtests_a-lock_file.Po - -rm -f ./$(DEPDIR)/libtests_a-overflowuid.Po -+ -rm -f ./$(DEPDIR)/libtests_a-pidns.Po - -rm -f ./$(DEPDIR)/libtests_a-pipe_maxfd.Po - -rm -f ./$(DEPDIR)/libtests_a-print_quoted_string.Po - -rm -f ./$(DEPDIR)/libtests_a-print_time.Po -@@ -12605,6 +12624,7 @@ - -rm -f ./$(DEPDIR)/libtests_a-libsocketcall.Po - -rm -f ./$(DEPDIR)/libtests_a-lock_file.Po - -rm -f ./$(DEPDIR)/libtests_a-overflowuid.Po -+ -rm -f ./$(DEPDIR)/libtests_a-pidns.Po - -rm -f ./$(DEPDIR)/libtests_a-pipe_maxfd.Po - -rm -f ./$(DEPDIR)/libtests_a-print_quoted_string.Po - -rm -f ./$(DEPDIR)/libtests_a-print_time.Po diff --git a/0138-Add-tests-for-PID-namespace-translation.patch b/0138-Add-tests-for-PID-namespace-translation.patch deleted file mode 100755 index 45ed9b0..0000000 --- a/0138-Add-tests-for-PID-namespace-translation.patch +++ /dev/null @@ -1,20054 +0,0 @@ -From 83e40ec53c3d32ee605930127fa376b1d257c934 Mon Sep 17 00:00:00 2001 -From: =?UTF-8?q?=C3=81kos=20Uzonyi?= -Date: Sat, 11 Jul 2020 17:29:58 +0200 -Subject: [PATCH 138/138] Add tests for PID namespace translation - -* Makefile.am (CODE_COVERAGE_IGNORE_PATTERN): Add test directories. -* tests/.gitignore: Add new test executables. -* tests/Makefile.am (check_PROGRAMS): Add new test executables. -(DECODER_TESTS) Add new test files. -(libtests_a_SOURCES): Add trie_for_tests.c, xmalloc_for_tests.c. -* tests/gen_tests.in: Add new tests. -* tests/trie_test.c: New file. -* tests/trie_for_tests.c: New file. -* tests/xmalloc_for_tests.c: New file. -* tests/pidns-cache.c: New file. -* tests/pidns-cache.test: New file. -* tests/fcntl--pidns-translation.c: New file. -* tests/fcntl64--pidns-translation.c: New file. -* tests/fork--pidns-translation.awk: New file. -* tests/fork--pidns-translation.c: New file. -* tests/fork--pidns-translation.test: New file. -* tests/getpgrp--pidns-translation.c: New file. -* tests/getpid--pidns-translation.c: New file. -* tests/getsid--pidns-translation.c: New file. -* tests/gettid--pidns-translation.c: New file. -* tests/gettid--pidns-translation.test: New file. -* tests/ioctl_block--pidns-translation.c: New file. -* tests/ioctl_block--pidns-translation.test: New file. -* tests/ioprio--pidns-translation.c: New file. -* tests/kill--pidns-translation.c: New file. -* tests/migrate_pages--pidns-translation.c: New file. -* tests/move_pages--pidns-translation.c: New file. -* tests/net-sockaddr--pidns-translation.c: New file. -* tests/netlink_audit--pidns-translation.c: New file. -* tests/netlink_audit--pidns-translation.test: New file. -* tests/pidfd_open--pidns-translation.c: New file. -* tests/pidfd_send_signal--pidns-translation.c: New file. -* tests/prlimit64--pidns-translation.c: New file. -* tests/process_vm_readv--pidns-translation.c: New file. -* tests/process_vm_writev--pidns-translation.c: New file. -* tests/rt_sigqueueinfo--pidns-translation.c: New file. -* tests/rt_tgsigqueueinfo--pidns-translation.c: New file. -* tests/sched_xetaffinity--pidns-translation.c: New file. -* tests/sched_xetattr--pidns-translation.c: New file. -* tests/sched_xetparam--pidns-translation.c: New file. -* tests/sched_xetscheduler--pidns-translation.c: New file. -* tests/signal_receive--pidns-translation.c: New file. -* tests/so_peercred--pidns-translation.c: New file. -* tests/tkill--pidns-translation.c: New file. -* tests/tgkill--pidns-translation.c: New file. -* tests/xet_robust_list--pidns-translation.c: New file. -* tests/xetpgid--pidns-translation.c: New file. -* tests/xetpriority--pidns-translation.c: New file. -* tests/fcntl-common.c: Print PID translation string after PIDs. -* tests/fcntl.c: Likewise. -* tests/fcntl64.c: Likewise. -* tests/getpgrp.c: Likewise. -* tests/getpid.c: Likewise. -* tests/getsid.c: Likewise. -* tests/gettid.c: Likewise. -* tests/ioctl_block.c: Likewise. -* tests/ioprio.c: Likewise. -* tests/kcmp.c: Likewise. -* tests/kill.c: Likewise. -* tests/migrate_pages.c: Likewise. -* tests/move_pages.c: Likewise. -* tests/net-sockaddr.c: Likewise. -* tests/netlink_audit.c: Likewise. -* tests/pidfd_open.c: Likewise. -* tests/pidfd_send_signal.c: Likewise. -* tests/prlimit64.c: Likewise. -* tests/process_vm_readv_writev.c: Likewise. -* tests/rt_sigqueueinfo.c: Likewise. -* tests/rt_tgsigqueueinfo.c: Likewise. -* tests/sched_xetaffinity.c: Likewise. -* tests/sched_xetattr.c: Likewise. -* tests/sched_xetparam.c: Likewise. -* tests/sched_xetscheduler.c: Likewise. -* tests/signal_receive.c: Likewise. -* tests/so_peercred.c: Likewise. -* tests/tgkill.c: Likewise. -* tests/tkill.c: Likewise. -* tests/xet_robust_list.c: Likewise. -* tests/xetpgid.c: Likewise. -* tests/xetpriority.c: Likewise. ---- - Makefile.am | 2 +- - tests/.gitignore | 35 ++++++++ - tests/Makefile.am | 47 ++++++++++ - tests/fcntl--pidns-translation.c | 2 + - tests/fcntl-common.c | 78 ++++++++++++----- - tests/fcntl.c | 1 + - tests/fcntl64--pidns-translation.c | 2 + - tests/fcntl64.c | 3 + - tests/fork--pidns-translation.awk | 15 ++++ - tests/fork--pidns-translation.c | 78 +++++++++++++++++ - tests/fork--pidns-translation.test | 14 +++ - tests/gen_tests.in | 32 ++++++- - tests/getpgrp--pidns-translation.c | 2 + - tests/getpgrp.c | 8 +- - tests/getpid--pidns-translation.c | 2 + - tests/getpid.c | 8 +- - tests/getsid--pidns-translation.c | 2 + - tests/getsid.c | 9 +- - tests/gettid--pidns-translation.c | 2 + - tests/gettid--pidns-translation.test | 18 ++++ - tests/gettid.c | 8 +- - tests/ioctl_block--pidns-translation.c | 2 + - tests/ioctl_block--pidns-translation.test | 22 +++++ - tests/ioctl_block.c | 24 ++++- - tests/ioprio--pidns-translation.c | 2 + - tests/ioprio.c | 54 ++++++++---- - tests/kcmp-y--pidns-translation.c | 2 + - tests/kcmp.c | 11 ++- - tests/kill--pidns-translation.c | 2 + - tests/kill.c | 12 ++- - tests/migrate_pages--pidns-translation.c | 2 + - tests/migrate_pages.c | 17 +++- - tests/move_pages--pidns-translation.c | 2 + - tests/move_pages.c | 51 +++++++---- - tests/net-sockaddr--pidns-translation.c | 2 + - tests/net-sockaddr.c | 60 ++++++++++++- - tests/netlink_audit--pidns-translation.c | 2 + - tests/netlink_audit--pidns-translation.test | 13 +++ - tests/netlink_audit.c | 11 ++- - tests/pidfd_open--pidns-translation.c | 2 + - tests/pidfd_open.c | 21 +++-- - tests/pidfd_send_signal--pidns-translation.c | 2 + - tests/pidfd_send_signal.c | 13 ++- - tests/pidns-cache.c | 62 +++++++++++++ - tests/pidns-cache.test | 15 ++++ - tests/prlimit64--pidns-translation.c | 2 + - tests/prlimit64.c | 17 +++- - tests/process_vm_readv--pidns-translation.c | 2 + - tests/process_vm_readv_writev.c | 27 +++--- - tests/process_vm_writev--pidns-translation.c | 2 + - tests/rt_sigqueueinfo--pidns-translation.c | 2 + - tests/rt_sigqueueinfo.c | 15 +++- - tests/rt_tgsigqueueinfo--pidns-translation.c | 2 + - tests/rt_tgsigqueueinfo.c | 26 ++++-- - tests/sched_xetaffinity--pidns-translation.c | 2 + - tests/sched_xetaffinity.c | 31 ++++--- - tests/sched_xetattr--pidns-translation.c | 2 + - tests/sched_xetattr.c | 47 +++++++++- - tests/sched_xetparam--pidns-translation.c | 2 + - tests/sched_xetparam.c | 20 +++-- - tests/sched_xetscheduler--pidns-translation.c | 2 + - tests/sched_xetscheduler.c | 44 +++++++--- - tests/signal_receive--pidns-translation.c | 2 + - tests/signal_receive.c | 22 +++-- - tests/so_peercred--pidns-translation.c | 2 + - tests/so_peercred.c | 22 +++++ - tests/tgkill--pidns-translation.c | 2 + - tests/tgkill.c | 51 +++++++---- - tests/tkill--pidns-translation.c | 2 + - tests/tkill.c | 19 ++-- - tests/trie_for_tests.c | 1 + - tests/trie_test.c | 121 ++++++++++++++++++++++++++ - tests/xet_robust_list--pidns-translation.c | 2 + - tests/xet_robust_list.c | 18 +++- - tests/xetpgid--pidns-translation.c | 2 + - tests/xetpgid.c | 21 +++-- - tests/xetpriority--pidns-translation.c | 2 + - tests/xetpriority.c | 20 ++++- - tests/xmalloc_for_tests.c | 2 + - 79 files changed, 1143 insertions(+), 187 deletions(-) - create mode 100644 tests/fcntl--pidns-translation.c - create mode 100644 tests/fcntl64--pidns-translation.c - create mode 100644 tests/fork--pidns-translation.awk - create mode 100644 tests/fork--pidns-translation.c - create mode 100755 tests/fork--pidns-translation.test - create mode 100644 tests/getpgrp--pidns-translation.c - create mode 100644 tests/getpid--pidns-translation.c - create mode 100644 tests/getsid--pidns-translation.c - create mode 100644 tests/gettid--pidns-translation.c - create mode 100755 tests/gettid--pidns-translation.test - create mode 100644 tests/ioctl_block--pidns-translation.c - create mode 100755 tests/ioctl_block--pidns-translation.test - create mode 100644 tests/ioprio--pidns-translation.c - create mode 100644 tests/kcmp-y--pidns-translation.c - create mode 100644 tests/kill--pidns-translation.c - create mode 100644 tests/migrate_pages--pidns-translation.c - create mode 100644 tests/move_pages--pidns-translation.c - create mode 100644 tests/net-sockaddr--pidns-translation.c - create mode 100644 tests/netlink_audit--pidns-translation.c - create mode 100755 tests/netlink_audit--pidns-translation.test - create mode 100644 tests/pidfd_open--pidns-translation.c - create mode 100644 tests/pidfd_send_signal--pidns-translation.c - create mode 100644 tests/pidns-cache.c - create mode 100755 tests/pidns-cache.test - create mode 100644 tests/prlimit64--pidns-translation.c - create mode 100644 tests/process_vm_readv--pidns-translation.c - create mode 100644 tests/process_vm_writev--pidns-translation.c - create mode 100644 tests/rt_sigqueueinfo--pidns-translation.c - create mode 100644 tests/rt_tgsigqueueinfo--pidns-translation.c - create mode 100644 tests/sched_xetaffinity--pidns-translation.c - create mode 100644 tests/sched_xetattr--pidns-translation.c - create mode 100644 tests/sched_xetparam--pidns-translation.c - create mode 100644 tests/sched_xetscheduler--pidns-translation.c - create mode 100644 tests/signal_receive--pidns-translation.c - create mode 100644 tests/so_peercred--pidns-translation.c - create mode 100644 tests/tgkill--pidns-translation.c - create mode 100644 tests/tkill--pidns-translation.c - create mode 100644 tests/trie_for_tests.c - create mode 100644 tests/trie_test.c - create mode 100644 tests/xet_robust_list--pidns-translation.c - create mode 100644 tests/xetpgid--pidns-translation.c - create mode 100644 tests/xetpriority--pidns-translation.c - create mode 100644 tests/xmalloc_for_tests.c - -Index: strace-5.7/Makefile.am -=================================================================== ---- strace-5.7.orig/Makefile.am 2020-09-09 19:52:30.590668679 +0200 -+++ strace-5.7/Makefile.am 2020-09-09 19:52:38.872673616 +0200 -@@ -408,7 +408,7 @@ - CODE_COVERAGE_BRANCH_COVERAGE = 1 - CODE_COVERAGE_GENHTML_OPTIONS = $(CODE_COVERAGE_GENHTML_OPTIONS_DEFAULT) \ - --prefix $(shell cd $(abs_top_srcdir)/.. && pwd || echo .) --CODE_COVERAGE_IGNORE_PATTERN = '/usr/include/*' -+CODE_COVERAGE_IGNORE_PATTERN = '/usr/include/*' '*/tests/*' '*/tests-m32/*' '*/tests-mx32/*' - strace_CPPFLAGS += $(CODE_COVERAGE_CPPFLAGS) - strace_CFLAGS += $(CODE_COVERAGE_CFLAGS) - strace_LDADD += $(CODE_COVERAGE_LIBS) -Index: strace-5.7/tests/Makefile.am -=================================================================== ---- strace-5.7.orig/tests/Makefile.am 2020-09-09 19:52:30.590668679 +0200 -+++ strace-5.7/tests/Makefile.am 2020-09-09 19:52:38.872673616 +0200 -@@ -66,6 +66,7 @@ - test_ucopy.h \ - tests.h \ - tprintf.c \ -+ xmalloc_for_tests.c \ - # end of libtests_a_SOURCES - libtests_a_CPPFLAGS = $(AM_CPPFLAGS) -D_FILE_OFFSET_BITS=64 - check_LIBRARIES = libtests.a -@@ -109,17 +110,25 @@ - delay \ - execve-v \ - execveat-v \ -+ fcntl--pidns-translation \ -+ fcntl64--pidns-translation \ - filter_seccomp-flag \ - filter_seccomp-perf \ - filter-unavailable \ - fork-f \ -+ fork--pidns-translation \ - fsync-y \ - get_process_reaper \ -+ getpgrp--pidns-translation \ - getpid \ -+ getpid--pidns-translation \ - getppid \ -+ getsid--pidns-translation \ - gettid \ -+ gettid--pidns-translation \ - inject-nf \ - int_0x80 \ -+ ioctl_block--pidns-translation \ - ioctl_dm-v \ - ioctl_evdev-success \ - ioctl_evdev-success-Xabbrev \ -@@ -150,18 +159,25 @@ - ioctl_v4l2-success-v-Xabbrev \ - ioctl_v4l2-success-v-Xraw \ - ioctl_v4l2-success-v-Xverbose \ -+ ioprio--pidns-translation \ - is_linux_mips_n64 \ -+ kcmp-y--pidns-translation \ - kill_child \ -+ kill--pidns-translation \ - ksysent \ - list_sigaction_signum \ - localtime \ - looping_threads \ -+ migrate_pages--pidns-translation \ - mmsg-silent \ - mmsg_name-v \ -+ move_pages--pidns-translation \ - msg_control-v \ - net-accept-connect \ -+ net-sockaddr--pidns-translation \ - net-tpacket_stats-success \ - nlattr_ifla_xdp-y \ -+ netlink_audit--pidns-translation \ - netlink_inet_diag \ - netlink_netlink_diag \ - netlink_unix_diag \ -@@ -173,14 +189,20 @@ - pc \ - perf_event_open_nonverbose \ - perf_event_open_unabbrev \ -+ pidfd_open--pidns-translation \ -+ pidfd_send_signal--pidns-translation \ -+ pidns-cache \ - poll-P \ - ppoll-P \ - ppoll-v \ -+ prlimit64--pidns-translation \ - prctl-seccomp-filter-v \ - prctl-seccomp-strict \ - prctl-spec-inject \ - print_maxfd \ - print_ppid_tracerpid \ -+ process_vm_readv--pidns-translation \ -+ process_vm_writev--pidns-translation \ - qual_fault \ - qual_inject-error-signal \ - qual_inject-retval \ -@@ -194,7 +216,13 @@ - quotactl-xfs-v \ - redirect-fds \ - restart_syscall \ -+ rt_sigqueueinfo--pidns-translation \ -+ rt_tgsigqueueinfo--pidns-translation \ - run_expect_termsig \ -+ sched_xetaffinity--pidns-translation \ -+ sched_xetattr--pidns-translation \ -+ sched_xetparam--pidns-translation \ -+ sched_xetscheduler--pidns-translation \ - scm_rights \ - seccomp-filter-v \ - seccomp-strict \ -@@ -204,25 +232,33 @@ - set_sigign \ - setpgrp-exec \ - signal_receive \ -+ signal_receive--pidns-translation \ - sleep \ - stack-fcall \ - stack-fcall-attach \ - stack-fcall-mangled \ - status-none-threads \ - status-unfinished-threads \ -+ so_peercred--pidns-translation \ - syslog-success \ -+ tgkill--pidns-translation \ - threads-execve \ - threads-execve--quiet-thread-execve \ - threads-execve-q \ - threads-execve-qq \ - threads-execve-qqq \ -+ tkill--pidns-translation \ - tracer_ppid_pgid_sid \ -+ trie_test \ - unblock_reset_raise \ - unix-pair-send-recv \ - unix-pair-sendto-recvfrom \ - vfork-f \ - wait4-v \ - waitid-v \ -+ xetpgid--pidns-translation \ -+ xetpriority--pidns-translation \ -+ xet_robust_list--pidns-translation \ - zeroargc \ - # end of check_PROGRAMS - -@@ -272,6 +308,11 @@ - stack-fcall-mangled-0.c stack-fcall-mangled-1.c \ - stack-fcall-mangled-2.c stack-fcall-mangled-3.c - -+trie_test_SOURCES = trie_test.c trie_for_tests.c -+trie_test_CPPFLAGS = $(AM_CPPFLAGS) $(CODE_COVERAGE_CPPFLAGS) -+trie_test_CFLAGS = $(AM_CFLAGS) $(CODE_COVERAGE_CFLAGS) -+trie_test_LDADD = $(LDADD) $(CODE_COVERAGE_LIBS) -+ - include gen_tests.am - - if ENABLE_STACKTRACE -@@ -308,6 +349,7 @@ - int_0x80.test \ - inotify_init-y.test \ - ioctl.test \ -+ ioctl_block--pidns-translation.test \ - ioctl_evdev-success.test \ - ipc_msgbuf.test \ - kern_features-fault.test \ -@@ -379,15 +421,19 @@ - filtering_fd-syntax.test \ - filtering_syscall-syntax.test \ - first_exec_failure.test \ -+ fork--pidns-translation.test \ - get_regs.test \ -+ gettid--pidns-translation.test \ - inject-nf.test \ - interactive_block.test \ - kill_child.test \ - localtime.test \ - looping_threads.test \ -+ netlink_audit--pidns-translation.test \ - opipe.test \ - options-syntax.test \ - pc.test \ -+ pidns-cache.test \ - printpath-umovestr-legacy.test \ - printstrn-umoven-legacy.test \ - qual_fault-syntax.test \ -@@ -465,6 +511,7 @@ - filter_seccomp.in \ - filter_seccomp.sh \ - filter-unavailable.expected \ -+ fork--pidns-translation.awk \ - fstatat.c \ - fstatx.c \ - gen_pure_executables.sh \ -Index: strace-5.7/tests/fcntl--pidns-translation.c -=================================================================== ---- /dev/null 1970-01-01 00:00:00.000000000 +0000 -+++ strace-5.7/tests/fcntl--pidns-translation.c 2020-09-09 19:52:38.872673616 +0200 -@@ -0,0 +1,2 @@ -+#define PIDNS_TRANSLATION -+#include "fcntl.c" -Index: strace-5.7/tests/fcntl-common.c -=================================================================== ---- strace-5.7.orig/tests/fcntl-common.c 2020-09-09 19:52:30.591668680 +0200 -+++ strace-5.7/tests/fcntl-common.c 2020-09-09 19:52:38.873673616 +0200 -@@ -13,6 +13,8 @@ - #include - #include - #include "flock.h" -+#include "pidns.h" -+#include "scno.h" - - #define FILE_LEN 4096 - -@@ -48,12 +50,14 @@ - fl->l_len = (TYPEOF_FLOCK_OFF_T) 0xdefaced2cafef00dULL; - - invoke_test_syscall(0, cmd, fl); -+ pidns_print_leader(); - printf("%s(0, %s, {l_type=F_RDLCK, l_whence=SEEK_SET" - ", l_start=%jd, l_len=%jd}) = %s\n", TEST_SYSCALL_STR, name, - (intmax_t) fl->l_start, (intmax_t) fl->l_len, errstr); - - void *const bad_addr = (void *) fl + 1; - invoke_test_syscall(0, cmd, bad_addr); -+ pidns_print_leader(); - printf("%s(0, %s, %p) = %s\n", - TEST_SYSCALL_STR, name, bad_addr, errstr); - } -@@ -72,12 +76,14 @@ - fl->l_len = (TYPEOF_FLOCK_OFF_T) 0xdefaced2cafef00dULL; - - invoke_test_syscall(0, cmd, fl); -+ pidns_print_leader(); - printf("%s(0, %s, {l_type=F_RDLCK, l_whence=SEEK_SET" - ", l_start=%jd, l_len=%jd}) = %s\n", TEST_SYSCALL_STR, name, - (intmax_t) fl->l_start, (intmax_t) fl->l_len, errstr); - - void *const bad_addr = (void *) fl + 1; - invoke_test_syscall(0, cmd, bad_addr); -+ pidns_print_leader(); - printf("%s(0, %s, %p) = %s\n", - TEST_SYSCALL_STR, name, bad_addr, errstr); - } -@@ -94,6 +100,7 @@ - fl->l_len = FILE_LEN; - - long rc = invoke_test_syscall(0, F_SETLK, fl); -+ pidns_print_leader(); - printf("%s(0, F_SETLK, {l_type=F_RDLCK, l_whence=SEEK_SET" - ", l_start=0, l_len=%d}) = %s\n", - TEST_SYSCALL_STR, FILE_LEN, errstr); -@@ -101,11 +108,13 @@ - return; - - invoke_test_syscall(0, F_GETLK, fl); -+ pidns_print_leader(); - printf("%s(0, F_GETLK, {l_type=F_UNLCK, l_whence=SEEK_SET" - ", l_start=0, l_len=%d, l_pid=0}) = 0\n", - TEST_SYSCALL_STR, FILE_LEN); - - invoke_test_syscall(0, F_SETLKW, fl); -+ pidns_print_leader(); - printf("%s(0, F_SETLKW, {l_type=F_UNLCK, l_whence=SEEK_SET" - ", l_start=0, l_len=%d}) = 0\n", - TEST_SYSCALL_STR, FILE_LEN); -@@ -124,6 +133,7 @@ - fl->l_len = FILE_LEN; - - long rc = invoke_test_syscall(0, F_OFD_SETLK, fl); -+ pidns_print_leader(); - printf("%s(0, F_OFD_SETLK, {l_type=F_RDLCK, l_whence=SEEK_SET" - ", l_start=0, l_len=%d}) = %s\n", - TEST_SYSCALL_STR, FILE_LEN, errstr); -@@ -131,11 +141,13 @@ - return; - - invoke_test_syscall(0, F_OFD_GETLK, fl); -+ pidns_print_leader(); - printf("%s(0, F_OFD_GETLK, {l_type=F_UNLCK, l_whence=SEEK_SET" - ", l_start=0, l_len=%d, l_pid=0}) = 0\n", - TEST_SYSCALL_STR, FILE_LEN); - - invoke_test_syscall(0, F_OFD_SETLKW, fl); -+ pidns_print_leader(); - printf("%s(0, F_OFD_SETLKW, {l_type=F_UNLCK, l_whence=SEEK_SET" - ", l_start=0, l_len=%d}) = 0\n", - TEST_SYSCALL_STR, FILE_LEN); -@@ -167,18 +179,21 @@ - static long - test_f_owner_ex_type_pid(const int cmd, const char *const cmd_name, - const int type, const char *const type_name, -- pid_t pid) -+ enum pid_type pid_type, pid_t pid) - { - TAIL_ALLOC_OBJECT_CONST_PTR(struct_kernel_f_owner_ex, fo); - - fo->type = type; - fo->pid = pid; - long rc = invoke_test_syscall(0, cmd, fo); -- printf("%s(0, %s, {type=%s, pid=%d}) = %s\n", -- TEST_SYSCALL_STR, cmd_name, type_name, fo->pid, errstr); -+ pidns_print_leader(); -+ printf("%s(0, %s, {type=%s, pid=%d%s}) = %s\n", -+ TEST_SYSCALL_STR, cmd_name, type_name, -+ fo->pid, pidns_pid2str(pid_type), errstr); - - void *bad_addr = (void *) fo + 1; - invoke_test_syscall(0, cmd, bad_addr); -+ pidns_print_leader(); - printf("%s(0, %s, %p) = %s\n", - TEST_SYSCALL_STR, cmd_name, bad_addr, errstr); - -@@ -187,35 +202,35 @@ - - static void - test_f_owner_ex_umove_or_printaddr(const int type, const char *const type_name, -- pid_t pid) -+ enum pid_type pid_type, pid_t pid) - { - long rc = test_f_owner_ex_type_pid(ARG_STR(F_SETOWN_EX), -- type, type_name, pid); -+ type, type_name, pid_type, pid); - if (!rc) - test_f_owner_ex_type_pid(ARG_STR(F_GETOWN_EX), -- type, type_name, pid); -+ type, type_name, pid_type, pid); - } - - static void - test_f_owner_ex(void) - { -- static const struct { -+ struct { - int type; - const char *type_name; -- pid_t pid[2]; -+ enum pid_type pid_type; -+ pid_t pid; - } a[] = { -- { ARG_STR(F_OWNER_TID), { 1234567890, 20 } }, -- { ARG_STR(F_OWNER_PID), { 1298126790, 30 } }, -- { ARG_STR(F_OWNER_PGRP), { 1294567890, 40 } } -+ { ARG_STR(F_OWNER_TID), PT_NONE, 1234567890 }, -+ { ARG_STR(F_OWNER_PID), PT_NONE, 1234567890 }, -+ { ARG_STR(F_OWNER_PGRP), PT_NONE, 1234567890 }, -+ { ARG_STR(F_OWNER_TID), PT_TID, syscall(__NR_gettid) }, -+ { ARG_STR(F_OWNER_PID), PT_TGID, getpid() }, -+ { ARG_STR(F_OWNER_PGRP), PT_PGID, getpgid(0) }, - }; - -- for (unsigned int i = 0; i < ARRAY_SIZE(a); i++) { -- for (unsigned int j = 0; j < ARRAY_SIZE(a[0].pid); j++) { -- test_f_owner_ex_umove_or_printaddr(a[i].type, -- a[i].type_name, -- a[i].pid[j]); -- } -- } -+ for (unsigned int i = 0; i < ARRAY_SIZE(a); i++) -+ test_f_owner_ex_umove_or_printaddr(a[i].type, a[i].type_name, -+ a[i].pid_type, a[i].pid); - } - #endif /* TEST_F_OWNER_EX */ - -@@ -229,6 +244,23 @@ - }; - - static void -+test_xetown(void) -+{ -+ const int pid = getpid(); -+ const char *pid_str = pidns_pid2str(PT_TGID); -+ -+ invoke_test_syscall(0, F_SETOWN, (void *) (intptr_t) pid); -+ pidns_print_leader(); -+ printf("%s(0, F_SETOWN, %d%s) = %s\n", -+ TEST_SYSCALL_STR, pid, pid_str, errstr); -+ -+ invoke_test_syscall(0, F_GETOWN, NULL); -+ pidns_print_leader(); -+ printf("%s(0, F_GETOWN) = %d%s\n", -+ TEST_SYSCALL_STR, pid, pid_str); -+} -+ -+static void - print_retval_flags(const struct fcntl_cmd_check *check, long rc) - { - if (check->print_flags) { -@@ -243,12 +275,14 @@ - test_other_set_cmd(const struct fcntl_cmd_check *check) - { - invoke_test_syscall(check->fd, check->cmd, (void *) check->arg); -+ pidns_print_leader(); - printf("%s(%d, %s, %s) = %s\n", - TEST_SYSCALL_STR, check->fd, - check->cmd_str, check->arg_str, errstr); - - /* bad file fd */ - invoke_test_syscall(-1, check->cmd, (void *) check->arg); -+ pidns_print_leader(); - printf("%s(-1, %s, %s) = %s\n", - TEST_SYSCALL_STR, check->cmd_str, - check->arg_str, errstr); -@@ -258,12 +292,14 @@ - test_other_get_cmd(const struct fcntl_cmd_check *check) - { - long rc = invoke_test_syscall(check->fd, check->cmd, NULL); -+ pidns_print_leader(); - printf("%s(%d, %s) = ", - TEST_SYSCALL_STR, check->fd, check->cmd_str); - print_retval_flags(check, rc); - - /* bad file fd */ - invoke_test_syscall(-1, check->cmd, NULL); -+ pidns_print_leader(); - printf("%s(-1, %s) = %s\n", - TEST_SYSCALL_STR, check->cmd_str, errstr); - } -@@ -315,7 +351,6 @@ - { - static const struct fcntl_cmd_check set_checks[] = { - { 0, ARG_STR(F_SETFD), ARG_STR(FD_CLOEXEC) }, -- { 0, ARG_STR(F_SETOWN), ARG_STR(20) }, - #ifdef F_SETPIPE_SZ - { 0, ARG_STR(F_SETPIPE_SZ), ARG_STR(4097) }, - #endif -@@ -336,7 +371,6 @@ - static const struct fcntl_cmd_check get_checks[] = { - { 0, ARG_STR(F_GETFD), .print_flags = print_flags_getfd }, - { 1, ARG_STR(F_GETFD), .print_flags = print_flags_getfd }, -- { 0, ARG_STR(F_GETOWN) }, - #ifdef F_GETPIPE_SZ - { 0, ARG_STR(F_GETPIPE_SZ) }, - #endif -@@ -360,6 +394,8 @@ - int - main(void) - { -+ PIDNS_TEST_INIT; -+ - create_sample(); - test_flock(); - test_flock64(); -@@ -367,7 +403,9 @@ - test_f_owner_ex(); - #endif - test_fcntl_others(); -+ test_xetown(); - -+ pidns_print_leader(); - puts("+++ exited with 0 +++"); - return 0; - } -Index: strace-5.7/tests/fcntl.c -=================================================================== ---- strace-5.7.orig/tests/fcntl.c 2020-09-09 19:52:30.591668680 +0200 -+++ strace-5.7/tests/fcntl.c 2020-09-09 19:52:38.873673616 +0200 -@@ -24,6 +24,7 @@ - .l_len = 0xdefaced2cafef00dULL - }; - invoke_test_syscall(0, cmd, &fl); -+ pidns_print_leader(); - printf("%s(0, %s, %p) = %s\n", - TEST_SYSCALL_STR, name, &fl, errstr); - } -Index: strace-5.7/tests/fcntl64--pidns-translation.c -=================================================================== ---- /dev/null 1970-01-01 00:00:00.000000000 +0000 -+++ strace-5.7/tests/fcntl64--pidns-translation.c 2020-09-09 19:52:38.873673616 +0200 -@@ -0,0 +1,2 @@ -+#define PIDNS_TRANSLATION -+#include "fcntl64.c" -Index: strace-5.7/tests/fcntl64.c -=================================================================== ---- strace-5.7.orig/tests/fcntl64.c 2020-09-09 19:52:30.592668681 +0200 -+++ strace-5.7/tests/fcntl64.c 2020-09-09 19:52:38.873673616 +0200 -@@ -27,6 +27,7 @@ - fl->l_len = FILE_LEN; - - long rc = invoke_test_syscall(0, F_SETLK64, fl); -+ pidns_print_leader(); - printf("%s(0, F_SETLK64, {l_type=F_RDLCK, l_whence=SEEK_SET" - ", l_start=0, l_len=%d}) = %s\n", - TEST_SYSCALL_STR, FILE_LEN, errstr); -@@ -35,11 +36,13 @@ - return; - - invoke_test_syscall(0, F_GETLK64, fl); -+ pidns_print_leader(); - printf("%s(0, F_GETLK64, {l_type=F_UNLCK, l_whence=SEEK_SET" - ", l_start=0, l_len=%d, l_pid=0}) = 0\n", - TEST_SYSCALL_STR, FILE_LEN); - - invoke_test_syscall(0, F_SETLKW64, fl); -+ pidns_print_leader(); - printf("%s(0, F_SETLKW64, {l_type=F_UNLCK, l_whence=SEEK_SET" - ", l_start=0, l_len=%d}) = 0\n", - TEST_SYSCALL_STR, FILE_LEN); -Index: strace-5.7/tests/fork--pidns-translation.awk -=================================================================== ---- /dev/null 1970-01-01 00:00:00.000000000 +0000 -+++ strace-5.7/tests/fork--pidns-translation.awk 2020-09-09 19:52:38.873673616 +0200 -@@ -0,0 +1,15 @@ -+/fork/ { -+ match($0, "([0-9]+) in strace\x27s PID NS", a); -+ if (a[1]) -+ fork_pid = a[1] -+} -+ -+/exited with 0/ { -+ if (!exit_pid) -+ exit_pid = $1 -+} -+ -+END { -+ if (!fork_pid || !exit_pid || fork_pid != exit_pid) -+ exit 1 -+} -Index: strace-5.7/tests/fork--pidns-translation.c -=================================================================== ---- /dev/null 1970-01-01 00:00:00.000000000 +0000 -+++ strace-5.7/tests/fork--pidns-translation.c 2020-09-09 19:52:38.874673617 +0200 -@@ -0,0 +1,78 @@ -+/* -+ * Test PID namespace translation -+ * -+ * Copyright (c) 2020 Ákos Uzonyi -+ * All rights reserved. -+ * -+ * SPDX-License-Identifier: LGPL-2.1-or-later -+ */ -+ -+#include "tests.h" -+#include "scno.h" -+#include "pidns.h" -+ -+#ifdef __NR_fork -+ -+#include -+#include -+#include -+#include -+#include -+#include -+#include -+#include -+#include -+#include "nsfs.h" -+ -+#ifndef CLONE_NEWUSER -+# define CLONE_NEWUSER 0x10000000 -+#endif -+ -+#ifndef CLONE_NEWPID -+# define CLONE_NEWPID 0x20000000 -+#endif -+ -+static int -+fork_chain(int depth) -+{ -+ if (!depth) -+ return 0; -+ -+ int pid = syscall(__NR_fork); -+ if (pid < 0) -+ return errno; -+ -+ if (!pid) -+ _exit(fork_chain(depth - 1)); -+ -+ int status; -+ if (wait(&status) < 0) -+ return errno; -+ -+ if (!WIFEXITED(status)) -+ return -1; -+ -+ return WEXITSTATUS(status); -+} -+ -+int main(void) -+{ -+ check_ns_ioctl(); -+ -+ if (unshare(CLONE_NEWPID | CLONE_NEWUSER) < 0) { -+ if (errno == EPERM) -+ perror_msg_and_skip("unshare"); -+ -+ perror_msg_and_fail("unshare"); -+ } -+ -+ errno = fork_chain(2); -+ if (errno) -+ perror("fork_chain"); -+} -+ -+#else -+ -+SKIP_MAIN_UNDEFINED("__NR_fork") -+ -+#endif -Index: strace-5.7/tests/fork--pidns-translation.test -=================================================================== ---- /dev/null 1970-01-01 00:00:00.000000000 +0000 -+++ strace-5.7/tests/fork--pidns-translation.test 2020-09-09 19:52:38.874673617 +0200 -@@ -0,0 +1,14 @@ -+#!/bin/sh -+# -+# Check pidns translation of fork's return value. -+# -+# Copyright (c) 2020 The strace developers. -+# All rights reserved. -+# -+# SPDX-License-Identifier: LGPL-2.1-or-later -+ -+. "${srcdir=.}/init.sh" -+ -+run_prog -+run_strace -a6 --pidns-translation -f -e trace=fork $args -+match_awk -Index: strace-5.7/tests/gen_tests.in -=================================================================== ---- strace-5.7.orig/tests/gen_tests.in 2020-09-09 19:52:30.593668681 +0200 -+++ strace-5.7/tests/gen_tests.in 2020-09-09 19:52:38.874673617 +0200 -@@ -88,7 +88,9 @@ - fchown32 -a18 - fchownat - fcntl -a8 -+fcntl--pidns-translation test_pidns -a8 -e trace=fcntl - fcntl64 -a8 -+fcntl64--pidns-translation test_pidns -a8 -e trace=fcntl64 - fdatasync -a14 - file_handle -e trace=name_to_handle_at,open_by_handle_at - file_ioctl +ioctl.test -@@ -142,7 +144,9 @@ - getgroups32 -a19 - getpeername -a27 - getpgrp -a10 -+getpgrp--pidns-translation test_pidns -e trace=getpgrp -a10 - getpid -a9 -+getpid--pidns-translation test_pidns -e trace=getpid -a9 - getppid -a10 - getrandom -a32 -s3 - getresgid -a25 -@@ -152,6 +156,7 @@ - getrlimit -a27 - getrusage -v - getsid -a10 -+getsid--pidns-translation test_pidns -e trace=getsid -a10 - getsockname -a27 - gettid -a9 - getuid-creds +getuid.test -@@ -245,6 +250,7 @@ - ioperm -a27 - iopl -a8 - ioprio -a18 -e trace=ioprio_get,ioprio_set -+ioprio--pidns-translation test_pidns -a18 -e trace=ioprio_get,ioprio_set - ioprio-Xabbrev -a18 -e trace=ioprio_get,ioprio_set -Xabbrev - ioprio-Xraw -a18 -e trace=ioprio_get,ioprio_set -Xraw - ioprio-Xverbose -a18 -e trace=ioprio_get,ioprio_set -Xverbose -@@ -267,6 +273,7 @@ - ipc_shm-Xverbose +ipc.sh -Xverbose -a34 - kcmp -a22 - kcmp-y -a22 -y -e trace=kcmp -+kcmp-y--pidns-translation test_pidns -a22 -y -e trace=kcmp - kern_features -a16 - kernel_version -a16 -v -e trace=bpf - kernel_version-Xabbrev -a16 -Xabbrev -v -e trace=bpf -@@ -279,6 +286,7 @@ - keyctl-Xraw -a13 -s10 -e trace=keyctl -Xraw - keyctl-Xverbose -a41 -s10 -e trace=keyctl -Xverbose - kill -a12 -esignal=none -+kill--pidns-translation test_pidns -a12 -e trace=kill -esignal=none - ksysent ../$NAME - lchown -a30 - lchown32 -a32 -@@ -300,6 +308,7 @@ - memfd_create-Xraw -a30 -Xraw -e trace=memfd_create - memfd_create-Xverbose -Xverbose -e trace=memfd_create - migrate_pages -a33 -+migrate_pages--pidns-translation test_pidns -a33 -e trace=migrate_pages - mincore -a22 - mkdir -a20 - mkdirat -a28 -@@ -330,6 +339,7 @@ - move_pages-Xabbrev -s3 -e trace=move_pages -Xabbrev - move_pages-Xraw -s3 -a36 -e trace=move_pages -Xraw - move_pages-Xverbose -s3 -e trace=move_pages -Xverbose -+move_pages--pidns-translation test_pidns -s3 -e trace=move_pages - mq -a32 -e trace=mq_getsetattr,mq_open,mq_unlink - mq_sendrecv -a14 -e trace=mq_open,mq_notify,mq_timedsend,mq_timedreceive,mq_unlink - mq_sendrecv-read -eread=0 -a14 -e trace=mq_open,mq_notify,mq_timedsend,mq_timedreceive,mq_unlink -@@ -349,6 +359,7 @@ - net-packet_mreq-Xraw -e trace=setsockopt -Xraw - net-packet_mreq-Xverbose -e trace=setsockopt -Xverbose - net-sockaddr -a24 -e trace=connect -+net-sockaddr--pidns-translation test_pidns -a24 -e trace=connect - net-tpacket_req -e trace=setsockopt - net-tpacket_stats -e trace=getsockopt - net-yy-inet6 +net-yy-inet.test -@@ -452,7 +463,9 @@ - pidfd_open-P -a17 -P /dev/full -e trace=pidfd_open - pidfd_open-y -a17 -y -e trace=pidfd_open - pidfd_open-yy -a17 -yy -e trace=pidfd_open -+pidfd_open--pidns-translation test_pidns -a17 -e trace=pidfd_open - pidfd_send_signal -+pidfd_send_signal--pidns-translation test_pidns -e trace=pidfd_send_signal - pipe2 -a15 - pkey_alloc -a17 - pkey_free -a13 -@@ -475,8 +488,11 @@ - printstrn-umoven-peekdata -e signal=none -e trace=add_key - printstrn-umoven-undumpable -e signal=none -e trace=add_key - prlimit64 -+prlimit64--pidns-translation test_pidns -e trace=prlimit64 - process_vm_readv -s5 -a37 -+process_vm_readv--pidns-translation test_pidns -s5 -a37 -e trace=process_vm_readv - process_vm_writev -s5 -a38 -+process_vm_writev--pidns-translation test_pidns -s5 -a38 -e trace=process_vm_writev - pselect6 - ptrace -a23 -e signal=none - ptrace_syscall_info -a35 -e signal=none -e trace=ptrace -@@ -513,10 +529,12 @@ - rt_sigpending -a20 - rt_sigprocmask - rt_sigqueueinfo -esignal=none -+rt_sigqueueinfo--pidns-translation test_pidns -esignal=none -e trace=rt_sigqueueinfo - rt_sigreturn -esignal='!USR1' - rt_sigsuspend -a20 -esignal=none - rt_sigtimedwait -a38 - rt_tgsigqueueinfo -esignal=none -+rt_tgsigqueueinfo--pidns-translation test_pidns -esignal=none -e trace=rt_tgsigqueueinfo - s390_guarded_storage -a32 - s390_guarded_storage-v -e trace=s390_guarded_storage -a32 -v - s390_pci_mmio_read_write -e trace=s390_pci_mmio_read,s390_pci_mmio_write -a30 -@@ -527,9 +545,13 @@ - sched_get_priority_mxx -a33 -e trace=sched_get_priority_min,sched_get_priority_max - sched_rr_get_interval -a31 - sched_xetaffinity -a28 -e trace=sched_getaffinity,sched_setaffinity -+sched_xetaffinity--pidns-translation test_pidns -a28 -e trace=sched_getaffinity,sched_setaffinity - sched_xetattr -a29 -e trace=sched_getattr,sched_setattr -+sched_xetattr--pidns-translation test_pidns -a29 -e trace=sched_getattr,sched_setattr - sched_xetparam -a23 -e trace=sched_getparam,sched_setparam -+sched_xetparam--pidns-translation test_pidns -a23 -e trace=sched_getparam,sched_setparam - sched_xetscheduler -a22 -e trace=sched_getscheduler,sched_setscheduler -+sched_xetscheduler--pidns-translation test_pidns -a22 -e trace=sched_getscheduler,sched_setscheduler - sched_yield -a14 - seccomp-filter -e trace=seccomp - seccomp-filter-v -v -e trace=seccomp -@@ -576,6 +598,7 @@ - siginfo -e trace=none - signal -a25 -e signal=none -e trace='/^signal$' - signal_receive -a16 -e trace=kill -+signal_receive--pidns-translation test_pidns -a16 -e trace=kill - signalfd4 - sigpending -a15 - sigprocmask -a34 -@@ -587,6 +610,7 @@ - so_peercred-Xabbrev -e trace=getsockopt -Xabbrev - so_peercred-Xraw -e trace=getsockopt -Xraw -a39 - so_peercred-Xverbose -e trace=getsockopt -Xverbose -+so_peercred--pidns-translation test_pidns -e trace=getsockopt - sock_filter-v -v -e trace=getsockopt,setsockopt - sock_filter-v-Xabbrev -v -e trace=getsockopt,setsockopt -X abbrev - sock_filter-v-Xraw -a 37 -v -e trace=getsockopt,setsockopt -X raw -@@ -659,6 +683,7 @@ - syslog -a35 - tee - tgkill -a15 --signal='!cont' -+tgkill--pidns-translation test_pidns -a15 --signal='!cont' -e trace=tgkill - threads-execve--quiet-thread-execve +threads-execve.test -s40 --quiet=personality,thread-execve - threads-execve-q +threads-execve.test -q - threads-execve-qq +threads-execve.test -qq -@@ -670,6 +695,7 @@ - times -esignal=none - times-fail -a12 -e trace=times - tkill -a12 --signal='!cont' -+tkill--pidns-translation test_pidns --signal='!cont' -a12 -e trace=tkill - trace_clock test_trace_expr 'clock_nanosleep|times' -e%clock - trace_creds test_trace_expr '([gs]et[^p]*([gu]id|groups)|caps|prctl|[fl]?chown|print(path-umovestr|strn-umoven)-undumpable|ptrace|quotactl|rt_sigtimedwait|rt_(tg)?sigqueueinfo).*' -e%creds - trace_fstat test_trace_expr '' -e%fstat -v -P stat.sample -P /dev/full -@@ -686,6 +712,7 @@ - trace_stat_like test_trace_expr '' -e%%stat -v -P stat.sample -P /dev/full - trace_statfs test_trace_expr '' -e%statfs - trace_statfs_like test_trace_expr '' -e%%statfs -+trie_test run_prog - truncate - truncate64 - ugetrlimit -a28 -@@ -716,7 +743,10 @@ - xattr -a22 -e trace=getxattr,fgetxattr,lgetxattr,setxattr,fsetxattr,lsetxattr,listxattr,flistxattr,llistxattr,removexattr,fremovexattr,lremovexattr - xattr-strings -a22 -s 4 -e trace=fsetxattr - xet_robust_list -a24 -e trace=get_robust_list,set_robust_list -+xet_robust_list--pidns-translation test_pidns -a24 -e trace=get_robust_list,set_robust_list - xetitimer -a29 -e trace=setitimer,getitimer - xetpgid -a11 -e trace=getpgid,setpgid --xetpriority -a29 -e trace=getpriority,setpriority -+xetpgid--pidns-translation test_pidns -a11 -e trace=getpgid,setpgid -+xetpriority -a27 -e trace=getpriority,setpriority -+xetpriority--pidns-translation test_pidns -a27 -e trace=getpriority,setpriority - xettimeofday -a20 -e trace=gettimeofday,settimeofday -Index: strace-5.7/tests/getpgrp--pidns-translation.c -=================================================================== ---- /dev/null 1970-01-01 00:00:00.000000000 +0000 -+++ strace-5.7/tests/getpgrp--pidns-translation.c 2020-09-09 19:52:38.875673618 +0200 -@@ -0,0 +1,2 @@ -+#define PIDNS_TRANSLATION -+#include "getpgrp.c" -Index: strace-5.7/tests/getpgrp.c -=================================================================== ---- strace-5.7.orig/tests/getpgrp.c 2020-09-09 19:52:30.593668681 +0200 -+++ strace-5.7/tests/getpgrp.c 2020-09-09 19:52:38.875673618 +0200 -@@ -7,6 +7,7 @@ - - #include "tests.h" - #include "scno.h" -+#include "pidns.h" - - #ifdef __NR_getpgrp - -@@ -16,8 +17,13 @@ - int - main(void) - { -- printf("getpgrp() = %ld\n", syscall(__NR_getpgrp)); -+ PIDNS_TEST_INIT; - -+ pidns_print_leader(); -+ printf("getpgrp() = %d%s\n", (int) syscall(__NR_getpgrp), -+ pidns_pid2str(PT_PGID)); -+ -+ pidns_print_leader(); - puts("+++ exited with 0 +++"); - return 0; - } -Index: strace-5.7/tests/getpid--pidns-translation.c -=================================================================== ---- /dev/null 1970-01-01 00:00:00.000000000 +0000 -+++ strace-5.7/tests/getpid--pidns-translation.c 2020-09-09 19:52:38.875673618 +0200 -@@ -0,0 +1,2 @@ -+#define PIDNS_TRANSLATION -+#include "getpid.c" -Index: strace-5.7/tests/getpid.c -=================================================================== ---- strace-5.7.orig/tests/getpid.c 2020-09-09 19:52:30.593668681 +0200 -+++ strace-5.7/tests/getpid.c 2020-09-09 19:52:38.875673618 +0200 -@@ -7,6 +7,7 @@ - - #include "tests.h" - #include "scno.h" -+#include "pidns.h" - - #if defined __NR_getpid && (!defined __NR_getxpid || __NR_getxpid != __NR_getpid) - -@@ -16,7 +17,12 @@ - int - main(void) - { -- printf("getpid() = %ld\n", syscall(__NR_getpid)); -+ PIDNS_TEST_INIT; -+ -+ pidns_print_leader(); -+ printf("getpid() = %d%s\n", (int) syscall(__NR_getpid), -+ pidns_pid2str(PT_TGID)); -+ pidns_print_leader(); - puts("+++ exited with 0 +++"); - return 0; - } -Index: strace-5.7/tests/getsid--pidns-translation.c -=================================================================== ---- /dev/null 1970-01-01 00:00:00.000000000 +0000 -+++ strace-5.7/tests/getsid--pidns-translation.c 2020-09-09 19:52:38.875673618 +0200 -@@ -0,0 +1,2 @@ -+#define PIDNS_TRANSLATION -+#include "getsid.c" -Index: strace-5.7/tests/getsid.c -=================================================================== ---- strace-5.7.orig/tests/getsid.c 2020-09-09 19:52:30.594668682 +0200 -+++ strace-5.7/tests/getsid.c 2020-09-09 19:52:38.876673618 +0200 -@@ -6,15 +6,22 @@ - */ - - #include "tests.h" -+#include "pidns.h" -+ - #include - #include - - int - main(void) - { -+ PIDNS_TEST_INIT; -+ - pid_t pid = getpid(); -- printf("getsid(%d) = %d\n", pid, getsid(pid)); -+ pidns_print_leader(); -+ printf("getsid(%d%s) = %d%s\n", pid, pidns_pid2str(PT_TGID), -+ getsid(pid), pidns_pid2str(PT_SID)); - -+ pidns_print_leader(); - puts("+++ exited with 0 +++"); - return 0; - } -Index: strace-5.7/tests/gettid--pidns-translation.c -=================================================================== ---- /dev/null 1970-01-01 00:00:00.000000000 +0000 -+++ strace-5.7/tests/gettid--pidns-translation.c 2020-09-09 19:52:38.876673618 +0200 -@@ -0,0 +1,2 @@ -+#define PIDNS_TRANSLATION -+#include "gettid.c" -Index: strace-5.7/tests/gettid--pidns-translation.test -=================================================================== ---- /dev/null 1970-01-01 00:00:00.000000000 +0000 -+++ strace-5.7/tests/gettid--pidns-translation.test 2020-09-09 19:52:38.876673618 +0200 -@@ -0,0 +1,18 @@ -+#!/bin/sh -+# -+# Check pidns translation of gettid's return value. -+# -+# Copyright (c) 2020 The strace developers. -+# All rights reserved. -+# -+# SPDX-License-Identifier: LGPL-2.1-or-later -+ -+. "${srcdir=.}/init.sh" -+ -+run_prog > /dev/null -+run_strace -a9 --pidns-translation -f -e trace=gettid $args > "$EXP" -+parent_pid="$(tail -n 2 $LOG | head -n 1 | cut -d' ' -f1)" -+init_pid="$(tail -n 1 $LOG | cut -d' ' -f1)" -+# uniq: filter out extra gettid calls made by musl libc -+grep -E -v "^($parent_pid|$init_pid) |unfinished|resumed" "$LOG" | uniq > "$OUT" -+match_diff "$OUT" "$EXP" -Index: strace-5.7/tests/gettid.c -=================================================================== ---- strace-5.7.orig/tests/gettid.c 2020-09-09 19:52:30.594668682 +0200 -+++ strace-5.7/tests/gettid.c 2020-09-09 19:52:38.876673618 +0200 -@@ -9,11 +9,17 @@ - #include - #include - #include "scno.h" -+#include "pidns.h" - - int - main(void) - { -- printf("gettid() = %ld\n", syscall(__NR_gettid)); -+ PIDNS_TEST_INIT; -+ -+ pidns_print_leader(); -+ printf("gettid() = %d%s\n", (int) syscall(__NR_gettid), -+ pidns_pid2str(PT_TID)); -+ pidns_print_leader(); - puts("+++ exited with 0 +++"); - return 0; - } -Index: strace-5.7/tests/ioctl_block--pidns-translation.c -=================================================================== ---- /dev/null 1970-01-01 00:00:00.000000000 +0000 -+++ strace-5.7/tests/ioctl_block--pidns-translation.c 2020-09-09 19:52:38.876673618 +0200 -@@ -0,0 +1,2 @@ -+#define PIDNS_TRANSLATION -+#include "ioctl_block.c" -Index: strace-5.7/tests/ioctl_block--pidns-translation.test -=================================================================== ---- /dev/null 1970-01-01 00:00:00.000000000 +0000 -+++ strace-5.7/tests/ioctl_block--pidns-translation.test 2020-09-09 19:52:38.877673619 +0200 -@@ -0,0 +1,22 @@ -+#!/bin/sh -+# -+# Check pidns translation of ioctl(BLK*) syscall decoding. -+# -+# Copyright (c) 2020 The strace developers. -+# All rights reserved. -+# -+# SPDX-License-Identifier: LGPL-2.1-or-later -+ -+. "${srcdir=.}/init.sh" -+ -+check_prog head -+check_prog tail -+check_prog cut -+check_prog grep -+ -+run_prog > /dev/null -+run_strace --pidns-translation -f -a16 -e trace=ioctl $@ $args > "$EXP" -+parent_pid="$(tail -n 2 $LOG | head -n 1 | cut -d' ' -f1)" -+init_pid="$(tail -n 1 $LOG | cut -d' ' -f1)" -+grep -E -v "^($parent_pid|$init_pid) |ioctl\([0123][,<]" "$LOG" > "$OUT" -+match_diff "$OUT" "$EXP" -Index: strace-5.7/tests/ioctl_block.c -=================================================================== ---- strace-5.7.orig/tests/ioctl_block.c 2020-09-09 19:52:30.595668682 +0200 -+++ strace-5.7/tests/ioctl_block.c 2020-09-09 19:52:38.877673619 +0200 -@@ -9,7 +9,9 @@ - */ - - #include "tests.h" -+#include "pidns.h" - #include -+#include - #include - #include - #include -@@ -41,12 +43,15 @@ - #define TEST_NULL_ARG(cmd) \ - do { \ - ioctl(-1, cmd, 0); \ -+ pidns_print_leader(); \ - printf("ioctl(-1, %s, NULL) = -1 EBADF (%m)\n", #cmd); \ - } while (0) - - int - main(void) - { -+ PIDNS_TEST_INIT; -+ - TEST_NULL_ARG(BLKBSZGET); - TEST_NULL_ARG(BLKBSZSET); - TEST_NULL_ARG(BLKFRAGET); -@@ -91,18 +96,22 @@ - #endif - - ioctl(-1, BLKRASET, lmagic); -+ pidns_print_leader(); - printf("ioctl(-1, BLKRASET, %lu) = -1 EBADF (%m)\n", lmagic); - - ioctl(-1, BLKFRASET, lmagic); -+ pidns_print_leader(); - printf("ioctl(-1, BLKFRASET, %lu) = -1 EBADF (%m)\n", lmagic); - - TAIL_ALLOC_OBJECT_CONST_PTR(int, val_int); - *val_int = magic; - - ioctl(-1, BLKROSET, val_int); -+ pidns_print_leader(); - printf("ioctl(-1, BLKROSET, [%d]) = -1 EBADF (%m)\n", *val_int); - - ioctl(-1, BLKBSZSET, val_int); -+ pidns_print_leader(); - printf("ioctl(-1, BLKBSZSET, [%d]) = -1 EBADF (%m)\n", *val_int); - - uint64_t *pair_int64 = tail_alloc(sizeof(*pair_int64) * 2); -@@ -111,18 +120,21 @@ - - #ifdef BLKDISCARD - ioctl(-1, BLKDISCARD, pair_int64); -+ pidns_print_leader(); - printf("ioctl(-1, BLKDISCARD, [%" PRIu64 ", %" PRIu64 "])" - " = -1 EBADF (%m)\n", pair_int64[0], pair_int64[1]); - #endif - - #ifdef BLKSECDISCARD - ioctl(-1, BLKSECDISCARD, pair_int64); -+ pidns_print_leader(); - printf("ioctl(-1, BLKSECDISCARD, [%" PRIu64 ", %" PRIu64 "])" - " = -1 EBADF (%m)\n", pair_int64[0], pair_int64[1]); - #endif - - #ifdef BLKZEROOUT - ioctl(-1, BLKZEROOUT, pair_int64); -+ pidns_print_leader(); - printf("ioctl(-1, BLKZEROOUT, [%" PRIu64 ", %" PRIu64 "])" - " = -1 EBADF (%m)\n", pair_int64[0], pair_int64[1]); - #endif -@@ -134,6 +146,7 @@ - blkpg->data = (void *) (unsigned long) 0xcafef00dfffffeedULL; - - ioctl(-1, BLKPG, blkpg); -+ pidns_print_leader(); - printf("ioctl(-1, BLKPG, {op=%s, flags=%d, datalen=%d" - ", data=%#lx}) = -1 EBADF (%m)\n", - "BLKPG_RESIZE_PARTITION", blkpg->flags, blkpg->datalen, -@@ -149,6 +162,7 @@ - blkpg->data = bp; - - ioctl(-1, BLKPG, blkpg); -+ pidns_print_leader(); - printf("ioctl(-1, BLKPG, {op=%s, flags=%d, datalen=%d" - ", data={start=%lld, length=%lld, pno=%d" - ", devname=\"%.*s\"..., volname=\"%.*s\"...}})" -@@ -162,25 +176,31 @@ - #if defined BLKTRACESETUP && defined HAVE_STRUCT_BLK_USER_TRACE_SETUP - TAIL_ALLOC_OBJECT_CONST_PTR(struct blk_user_trace_setup, buts); - fill_memory(buts, sizeof(*buts)); -+ buts->pid = getpid(); - - ioctl(-1, BLKTRACESETUP, buts); -+ pidns_print_leader(); - printf("ioctl(-1, BLKTRACESETUP, {act_mask=%hu, buf_size=%u, buf_nr=%u" -- ", start_lba=%" PRI__u64 ", end_lba=%" PRI__u64 ", pid=%d})" -+ ", start_lba=%" PRI__u64 ", end_lba=%" PRI__u64 ", pid=%d%s})" - " = -1 EBADF (%m)\n", - buts->act_mask, buts->buf_size, buts->buf_nr, -- buts->start_lba, buts->end_lba, buts->pid); -+ buts->start_lba, buts->end_lba, buts->pid, -+ pidns_pid2str(PT_TGID)); - #endif - - unsigned int i; - for (i = 0; i < ARRAY_SIZE(block_argless); ++i) { - ioctl(-1, (unsigned long) block_argless[i].val, lmagic); -+ pidns_print_leader(); - printf("ioctl(-1, %s) = -1 EBADF (%m)\n", block_argless[i].str); - } - - ioctl(-1, _IOC(_IOC_READ, 0x12, 0xfe, 0xff), lmagic); -+ pidns_print_leader(); - printf("ioctl(-1, %s, %#lx) = -1 EBADF (%m)\n", - "_IOC(_IOC_READ, 0x12, 0xfe, 0xff)", lmagic); - -+ pidns_print_leader(); - puts("+++ exited with 0 +++"); - return 0; - } -Index: strace-5.7/tests/ioprio--pidns-translation.c -=================================================================== ---- /dev/null 1970-01-01 00:00:00.000000000 +0000 -+++ strace-5.7/tests/ioprio--pidns-translation.c 2020-09-09 19:52:38.877673619 +0200 -@@ -0,0 +1,2 @@ -+#define PIDNS_TRANSLATION -+#include "ioprio.c" -Index: strace-5.7/tests/ioprio.c -=================================================================== ---- strace-5.7.orig/tests/ioprio.c 2020-09-09 19:52:30.595668682 +0200 -+++ strace-5.7/tests/ioprio.c 2020-09-09 19:52:38.878673619 +0200 -@@ -9,8 +9,8 @@ - */ - - #include "tests.h" -- - #include "scno.h" -+#include "pidns.h" - - #if defined(__NR_ioprio_get) && defined(__NR_ioprio_set) - -@@ -30,12 +30,18 @@ - int - main(void) - { -+ PIDNS_TEST_INIT; -+ - static const kernel_ulong_t bogus_which = - (kernel_ulong_t) 0xdeadfacefa57beefULL; - static const kernel_ulong_t bogus_who = - (kernel_ulong_t) 0xbadc0dedda7a1057ULL; - static const kernel_ulong_t bogus_ioprio = - (kernel_ulong_t) 0xdec0ded1facefeedULL; -+ -+ const int pid = getpid(); -+ const int pgid = getpgid(0); -+ - # if !XLAT_RAW - static const char * const bogus_ioprio_str = - "IOPRIO_PRIO_VALUE(0x7d677 /* IOPRIO_CLASS_??? */, 7917)"; -@@ -46,6 +52,7 @@ - - rc = syscall(__NR_ioprio_get, bogus_which, bogus_who); - errstr = sprintrc(rc); -+ pidns_print_leader(); - # if XLAT_RAW - printf("ioprio_get(%#x, %d) = %s\n", - (int) bogus_which, (int) bogus_who, errstr); -@@ -54,42 +61,52 @@ - (int) bogus_which, (int) bogus_who, errstr); - # endif - -- rc = syscall(__NR_ioprio_get, 1, 0); -+ rc = syscall(__NR_ioprio_get, 1, pid); - errstr = sprintrc(rc); -+ pidns_print_leader(); -+ printf("ioprio_get("); - # if XLAT_RAW -- printf("ioprio_get(0x1, 0) = %s\n", errstr); -+ printf("0x1, "); -+# elif XLAT_VERBOSE -+ printf("0x1 /* IOPRIO_WHO_PROCESS */, "); - # else /* XLAT_ABBREV */ --# if XLAT_VERBOSE -- printf("ioprio_get(0x1 /* IOPRIO_WHO_PROCESS */, 0) = %s", errstr); --# else -- printf("ioprio_get(IOPRIO_WHO_PROCESS, 0) = %s", errstr); --# endif -+ printf("IOPRIO_WHO_PROCESS, "); -+# endif -+ printf("%d%s) = %s", pid, pidns_pid2str(PT_TGID), errstr); -+# if !XLAT_RAW - if (rc >= 0) { - printf(" (IOPRIO_PRIO_VALUE("); - printxval(ioprio_class, (unsigned int) rc >> 13, - "IOPRIO_CLASS_???"); - printf(", %u))", (unsigned int) rc & 0x1fff); - } -- puts(""); - # endif -+ puts(""); - -- rc = syscall(__NR_ioprio_set, 2, 0, 8191); -+ rc = syscall(__NR_ioprio_set, 2, pgid, 8191); - errstr = sprintrc(rc); -+ pidns_print_leader(); -+ printf("ioprio_set("); - # if XLAT_RAW -- printf("ioprio_set(%#x, 0, 8191) = %s\n", 2, errstr); -+ printf("%#x", 2); - # elif XLAT_VERBOSE -- printf("ioprio_set(%#x /* IOPRIO_WHO_PGRP */, 0, 8191" -- " /* IOPRIO_PRIO_VALUE(0 /* IOPRIO_CLASS_NONE */, 8191) */)" -- " = %s\n", -- 2, errstr); -+ printf("%#x /* IOPRIO_WHO_PGRP */", 2); - # else /* XLAT_ABBREV */ -- printf("ioprio_set(IOPRIO_WHO_PGRP, 0" -- ", IOPRIO_PRIO_VALUE(IOPRIO_CLASS_NONE, 8191)) = %s\n", -- errstr); -+ printf("IOPRIO_WHO_PGRP"); -+# endif -+ printf(", %d%s", pgid, pidns_pid2str(PT_PGID)); -+# if XLAT_RAW -+ printf(", 8191)"); -+# elif XLAT_VERBOSE -+ printf(", 8191 /* IOPRIO_PRIO_VALUE(0 /* IOPRIO_CLASS_NONE */, 8191) */)"); -+# else /* XLAT_ABBREV */ -+ printf(", IOPRIO_PRIO_VALUE(IOPRIO_CLASS_NONE, 8191))"); - # endif -+ printf(" = %s\n", errstr); - - rc = syscall(__NR_ioprio_set, bogus_which, bogus_who, bogus_ioprio); - errstr = sprintrc(rc); -+ pidns_print_leader(); - # if XLAT_RAW - printf("ioprio_set(%#x, %d, %d) = %s\n", - (int) bogus_which, (int) bogus_who, (int) bogus_ioprio, -@@ -104,6 +121,7 @@ - errstr); - # endif - -+ pidns_print_leader(); - puts("+++ exited with 0 +++"); - - return 0; -Index: strace-5.7/tests/kcmp-y--pidns-translation.c -=================================================================== ---- /dev/null 1970-01-01 00:00:00.000000000 +0000 -+++ strace-5.7/tests/kcmp-y--pidns-translation.c 2020-09-09 19:52:38.878673619 +0200 -@@ -0,0 +1,2 @@ -+#define PIDNS_TRANSLATION -+#include "kcmp-y.c" -Index: strace-5.7/tests/kcmp.c -=================================================================== ---- strace-5.7.orig/tests/kcmp.c 2020-09-09 19:52:30.596668683 +0200 -+++ strace-5.7/tests/kcmp.c 2020-09-09 19:52:38.878673619 +0200 -@@ -9,8 +9,8 @@ - */ - - #include "tests.h" -- - #include "scno.h" -+#include "pidns.h" - - #ifdef __NR_kcmp - -@@ -101,7 +101,11 @@ - rc = syscall(__NR_kcmp, pid1, pid2, type, idx1, idx2); - errstr = sprintrc(rc); - -- printf("kcmp(%d, %d, ", (int) pid1, (int) pid2); -+ const char *pid_str = pidns_pid2str(PT_TGID); -+ pidns_print_leader(); -+ printf("kcmp(%d%s, %d%s, ", -+ (int) pid1, (int) pid1 == getpid() ? pid_str : "", -+ (int) pid2, (int) pid2 == getpid() ? pid_str : ""); - - if (type_str) - printf("%s", type_str); -@@ -146,6 +150,8 @@ - int - main(void) - { -+ PIDNS_TEST_INIT; -+ - static const kernel_ulong_t bogus_pid1 = - (kernel_ulong_t) 0xdeadca75face1057ULL; - static const kernel_ulong_t bogus_pid2 = -@@ -221,6 +227,7 @@ - (uintptr_t) slot, 1); - } - -+ pidns_print_leader(); - puts("+++ exited with 0 +++"); - - return 0; -Index: strace-5.7/tests/kill--pidns-translation.c -=================================================================== ---- /dev/null 1970-01-01 00:00:00.000000000 +0000 -+++ strace-5.7/tests/kill--pidns-translation.c 2020-09-09 19:52:38.878673619 +0200 -@@ -0,0 +1,2 @@ -+#define PIDNS_TRANSLATION -+#include "kill.c" -Index: strace-5.7/tests/kill.c -=================================================================== ---- strace-5.7.orig/tests/kill.c 2020-09-09 19:52:30.596668683 +0200 -+++ strace-5.7/tests/kill.c 2020-09-09 19:52:38.878673619 +0200 -@@ -11,6 +11,7 @@ - - #include "tests.h" - #include "scno.h" -+#include "pidns.h" - - #ifdef __NR_kill - -@@ -26,6 +27,8 @@ - int - main(void) - { -+ PIDNS_TEST_INIT; -+ - const struct sigaction act = { .sa_handler = handler }; - if (sigaction(SIGALRM, &act, NULL)) - perror_msg_and_fail("sigaction"); -@@ -37,18 +40,23 @@ - perror_msg_and_fail("sigprocmask"); - - const int pid = getpid(); -+ const char *pid_str = pidns_pid2str(PT_TGID); - long rc = syscall(__NR_kill, pid, (long) 0xdefaced00000000ULL | SIGALRM); -- printf("kill(%d, SIGALRM) = %ld\n", pid, rc); -+ pidns_print_leader(); -+ printf("kill(%d%s, SIGALRM) = %ld\n", pid, pid_str, rc); - - const long big_pid = (long) 0xfacefeedbadc0dedULL; - const long big_sig = (long) 0xdeadbeefcafef00dULL; - rc = syscall(__NR_kill, big_pid, big_sig); -+ pidns_print_leader(); - printf("kill(%d, %d) = %ld %s (%m)\n", - (int) big_pid, (int) big_sig, rc, errno2name()); - - rc = syscall(__NR_kill, (long) 0xdefaced00000000ULL | pid, 0); -- printf("kill(%d, 0) = %ld\n", pid, rc); -+ pidns_print_leader(); -+ printf("kill(%d%s, 0) = %ld\n", pid, pid_str, rc); - -+ pidns_print_leader(); - puts("+++ exited with 0 +++"); - return 0; - } -Index: strace-5.7/tests/migrate_pages--pidns-translation.c -=================================================================== ---- /dev/null 1970-01-01 00:00:00.000000000 +0000 -+++ strace-5.7/tests/migrate_pages--pidns-translation.c 2020-09-09 19:52:38.879673620 +0200 -@@ -0,0 +1,2 @@ -+#define PIDNS_TRANSLATION -+#include "migrate_pages.c" -Index: strace-5.7/tests/migrate_pages.c -=================================================================== ---- strace-5.7.orig/tests/migrate_pages.c 2020-09-09 19:52:30.596668683 +0200 -+++ strace-5.7/tests/migrate_pages.c 2020-09-09 19:52:38.879673620 +0200 -@@ -10,6 +10,7 @@ - - #include "tests.h" - #include "scno.h" -+#include "pidns.h" - - #ifdef __NR_migrate_pages - -@@ -19,11 +20,21 @@ - int - main(void) - { -- const long pid = (long) 0xfacefeedffffffffULL; -+ PIDNS_TEST_INIT; -+ -+ const long pid = (long) 0xfacefeed00000000ULL | getpid(); - long rc = syscall(__NR_migrate_pages, pid, 0, 0, 0); -- printf("migrate_pages(%d, 0, NULL, NULL) = %ld %s (%m)\n", -- (int) pid, rc, errno2name()); - -+ pidns_print_leader(); -+ printf("migrate_pages(%d%s, 0, NULL, NULL) = %ld", -+ (int) pid, pidns_pid2str(PT_TGID), rc); -+ -+ if (rc < 0) -+ printf(" %s (%m)\n", errno2name()); -+ else -+ printf("\n"); -+ -+ pidns_print_leader(); - puts("+++ exited with 0 +++"); - return 0; - } -Index: strace-5.7/tests/move_pages--pidns-translation.c -=================================================================== ---- /dev/null 1970-01-01 00:00:00.000000000 +0000 -+++ strace-5.7/tests/move_pages--pidns-translation.c 2020-09-09 19:52:38.879673620 +0200 -@@ -0,0 +1,2 @@ -+#define PIDNS_TRANSLATION -+#include "move_pages.c" -Index: strace-5.7/tests/move_pages.c -=================================================================== ---- strace-5.7.orig/tests/move_pages.c 2020-09-09 19:52:30.597668684 +0200 -+++ strace-5.7/tests/move_pages.c 2020-09-09 19:52:38.879673620 +0200 -@@ -10,6 +10,7 @@ - - #include "tests.h" - #include "scno.h" -+#include "pidns.h" - - #ifdef __NR_move_pages - -@@ -122,15 +123,20 @@ - } - - static void --print_stat_pages(const unsigned long pid, const unsigned long count, -- const void **const pages, int *const status) -+print_stat_pages(const unsigned long pid, -+ const char *pid_str, -+ const unsigned long count, -+ const void **const pages, -+ int *const status) - { - const unsigned long flags = (unsigned long) 0xfacefeed00000002ULL; - - long rc = syscall(__NR_move_pages, - pid, count, pages, NULL, status, flags); - const char *errstr = sprintrc(rc); -- printf("move_pages(%d, %lu, ", (int) pid, count); -+ pidns_print_leader(); -+ printf("move_pages(%d%s, %lu, ", (int) pid, pid_str, -+ count); - print_page_array(pages, count, 0); - printf(", NULL, "); - if (rc) { -@@ -152,6 +158,7 @@ - - static void - print_move_pages(const unsigned long pid, -+ const char *pid_str, - unsigned long count, - const unsigned int offset, - const void **const pages, -@@ -164,7 +171,9 @@ - long rc = syscall(__NR_move_pages, - pid, count, pages, nodes, status, flags); - const char *errstr = sprintrc(rc); -- printf("move_pages(%d, %lu, ", (int) pid, count); -+ pidns_print_leader(); -+ printf("move_pages(%d%s, %lu, ", (int) pid, pid_str, -+ count); - print_page_array(pages, count, offset); - printf(", "); - print_node_array(nodes, count, offset); -@@ -185,8 +194,11 @@ - int - main(void) - { -+ PIDNS_TEST_INIT; -+ - const unsigned long pid = - (unsigned long) 0xfacefeed00000000ULL | getpid(); -+ const char *pid_str = pidns_pid2str(PT_TGID); - unsigned long count = 1; - const unsigned page_size = get_page_size(); - const void *const page = tail_alloc(page_size); -@@ -195,40 +207,41 @@ - TAIL_ALLOC_OBJECT_VAR_PTR(int, nodes); - TAIL_ALLOC_OBJECT_VAR_PTR(int, status); - -- print_stat_pages(pid, 0, pages, status); -- print_move_pages(pid, 0, 0, pages, nodes, status); -- print_move_pages(pid, 0, 1, pages + 1, nodes + 1, status + 1); -+ print_stat_pages(pid, pid_str, 0, pages, status); -+ print_move_pages(pid, pid_str, 0, 0, pages, nodes, status); -+ print_move_pages(pid, pid_str, 0, 1, pages + 1, nodes + 1, status + 1); - - *pages = page; -- print_stat_pages(pid, count, pages, status); -+ print_stat_pages(pid, pid_str, count, pages, status); - *nodes = 0xdeadbee1; -- print_move_pages(pid, count, 0, pages, nodes, status); -- print_move_pages(pid, count, 1, pages, nodes, status); -+ print_move_pages(pid, pid_str, count, 0, pages, nodes, status); -+ print_move_pages(pid, pid_str, count, 1, pages, nodes, status); - - ++count; - --status; - *(--pages) = efault; -- print_stat_pages(pid, count, pages, status); -+ print_stat_pages(pid, pid_str, count, pages, status); - *(--nodes) = 0xdeadbee2; -- print_move_pages(pid, count, 0, pages, nodes, status); -- print_move_pages(pid, count, 1, pages, nodes, status); -+ print_move_pages(pid, pid_str, count, 0, pages, nodes, status); -+ print_move_pages(pid, pid_str, count, 1, pages, nodes, status); - - ++count; - --status; - *(--pages) = nodes; -- print_stat_pages(pid, count, pages, status); -+ print_stat_pages(pid, pid_str, count, pages, status); - *(--nodes) = 0xdeadbee3; -- print_move_pages(pid, count, 0, pages, nodes, status); -- print_move_pages(pid, count, 1, pages, nodes, status); -+ print_move_pages(pid, pid_str, count, 0, pages, nodes, status); -+ print_move_pages(pid, pid_str, count, 1, pages, nodes, status); - - ++count; - --status; - *(--pages) = status; -- print_stat_pages(pid, count, pages, status); -+ print_stat_pages(pid, pid_str, count, pages, status); - *(--nodes) = 0xdeadbee4; -- print_move_pages(pid, count, 0, pages, nodes, status); -- print_move_pages(pid, count, 1, pages, nodes, status); -+ print_move_pages(pid, pid_str, count, 0, pages, nodes, status); -+ print_move_pages(pid, pid_str, count, 1, pages, nodes, status); - -+ pidns_print_leader(); - puts("+++ exited with 0 +++"); - return 0; - } -Index: strace-5.7/tests/net-sockaddr--pidns-translation.c -=================================================================== ---- /dev/null 1970-01-01 00:00:00.000000000 +0000 -+++ strace-5.7/tests/net-sockaddr--pidns-translation.c 2020-09-09 19:52:38.879673620 +0200 -@@ -0,0 +1,2 @@ -+#define PIDNS_TRANSLATION -+#include "net-sockaddr.c" -Index: strace-5.7/tests/net-sockaddr.c -=================================================================== ---- strace-5.7.orig/tests/net-sockaddr.c 2020-09-09 19:52:30.598668684 +0200 -+++ strace-5.7/tests/net-sockaddr.c 2020-09-09 19:52:38.880673621 +0200 -@@ -9,6 +9,7 @@ - */ - - #include "tests.h" -+#include "pidns.h" - #include - #include - #include -@@ -40,18 +41,21 @@ - memset(un->sun_path, '0', sizeof(un->sun_path)); - unsigned int len = sizeof(*un); - int ret = connect(-1, (void *) un, len); -+ pidns_print_leader(); - printf("connect(-1, {sa_family=AF_UNIX, sun_path=\"%.*u\"}" - ", %u) = %d EBADF (%m)\n", - (int) sizeof(un->sun_path), 0, len, ret); - - un->sun_path[1] = 0; - ret = connect(-1, (void *) un, len); -+ pidns_print_leader(); - printf("connect(-1, {sa_family=AF_UNIX, sun_path=\"%u\"}, %u)" - " = %d EBADF (%m)\n", 0, len, ret); - - un->sun_path[0] = 0; - un->sun_path[2] = 1; - ret = connect(-1, (void *) un, len); -+ pidns_print_leader(); - printf("connect(-1, {sa_family=AF_UNIX, sun_path=@\"\\0\\001%.*u\"}" - ", %u) = %d EBADF (%m)\n", - (int) sizeof(un->sun_path) - 3, 0, len, ret); -@@ -61,12 +65,14 @@ - memset(un->sun_path, '0', sizeof(un->sun_path)); - len = sizeof(*un) + 2; - ret = connect(-1, (void *) un, len); -+ pidns_print_leader(); - printf("connect(-1, {sa_family=AF_UNIX, sun_path=\"%.*u\"}" - ", %u) = %d EBADF (%m)\n", - (int) sizeof(un->sun_path), 0, len, ret); - - un->sun_path[0] = 0; - ret = connect(-1, (void *) un, len); -+ pidns_print_leader(); - printf("connect(-1, {sa_family=AF_UNIX, sun_path=@\"%.*u\"}" - ", %u) = %d EBADF (%m)\n", - (int) sizeof(un->sun_path) - 1, 0, len, ret); -@@ -75,18 +81,21 @@ - un->sun_family = AF_UNIX; - len = sizeof(*un) - 2; - ret = connect(-1, (void *) un, len); -+ pidns_print_leader(); - printf("connect(-1, {sa_family=AF_UNIX, sun_path=\"%.*u\"}" - ", %u) = %d EBADF (%m)\n", - (int) sizeof(un->sun_path) - 2, 0, len, ret); - - un->sun_path[0] = 0; - ret = connect(-1, (void *) un, len); -+ pidns_print_leader(); - printf("connect(-1, {sa_family=AF_UNIX, sun_path=@\"%.*u\"}" - ", %u) = %d EBADF (%m)\n", - (int) sizeof(un->sun_path) - 3, 0, len, ret); - - len = sizeof(*un); - ret = connect(-1, (void *) un, len); -+ pidns_print_leader(); - printf("connect(-1, %p, %u) = %d EBADF (%m)\n", un, len, ret); - - un = tail_alloc(sizeof(struct sockaddr_storage)); -@@ -94,12 +103,14 @@ - memset(un->sun_path, '0', sizeof(un->sun_path)); - len = sizeof(struct sockaddr_storage) + 1; - ret = connect(-1, (void *) un, len); -+ pidns_print_leader(); - printf("connect(-1, {sa_family=AF_UNIX, sun_path=\"%.*u\"}" - ", %u) = %d EBADF (%m)\n", - (int) sizeof(un->sun_path), 0, len, ret); - - un->sun_path[0] = 0; - ret = connect(-1, (void *) un, len); -+ pidns_print_leader(); - printf("connect(-1, {sa_family=AF_UNIX, sun_path=@\"%.*u\"}" - ", %u) = %d EBADF (%m)\n", - (int) sizeof(un->sun_path) - 1, 0, len, ret); -@@ -117,6 +128,7 @@ - in->sin_addr.s_addr = inet_addr(h_addr); - unsigned int len = sizeof(*in); - int ret = connect(-1, (void *) in, len); -+ pidns_print_leader(); - printf("connect(-1, {sa_family=AF_INET, sin_port=htons(%hu)" - ", sin_addr=inet_addr(\"%s\")}, %u) = %d EBADF (%m)\n", - h_port, h_addr, len, ret); -@@ -127,6 +139,7 @@ - in->sin_addr.s_addr = inet_addr(h_addr); - len = sizeof(*in) + 4; - ret = connect(-1, (void *) in, len); -+ pidns_print_leader(); - printf("connect(-1, {sa_family=AF_INET, sin_port=htons(%hu)" - ", sin_addr=inet_addr(\"%s\")}, %u) = %d EBADF (%m)\n", - h_port, h_addr, len, ret); -@@ -137,6 +150,7 @@ - in->sin_addr.s_addr = 0; - len = sizeof(*in) - 4; - ret = connect(-1, (void *) in, len); -+ pidns_print_leader(); - printf("connect(-1, {sa_family=AF_INET, sa_data=\"%s\"}, %u)" - " = %d EBADF (%m)\n", - "\\0\\0\\0\\0\\0\\0\\377\\377\\377\\377", -@@ -144,6 +158,7 @@ - - len = sizeof(*in); - ret = connect(-1, (void *) in, len); -+ pidns_print_leader(); - printf("connect(-1, %p, %u) = %d EBADF (%m)\n", in, len, ret); - } - -@@ -155,6 +170,7 @@ - in6->sin6_scope_id = 0xfacefeed; - unsigned int len = sizeof(*in6); - int ret = connect(-1, (void *) in6, len); -+ pidns_print_leader(); - printf("connect(-1, {sa_family=AF_INET6, sin6_port=htons(%hu)" - ", sin6_flowinfo=htonl(%u)" - ", inet_pton(AF_INET6, \"%s\", &sin6_addr)" -@@ -166,7 +182,8 @@ - in6->sin6_scope_id = ifindex_lo(); - if (in6->sin6_scope_id) { - ret = connect(-1, (void *) in6, len); -- printf("connect(-1, {sa_family=AF_INET6, sin6_port=htons(%hu)" -+ pidns_print_leader(); -+ printf("connect(-1, {sa_family=AF_INET6, sin6_port=htons(%hu)" - ", sin6_flowinfo=htonl(%u)" - ", inet_pton(AF_INET6, \"%s\", &sin6_addr)" - ", sin6_scope_id=%s}, %u)" -@@ -191,6 +208,7 @@ - in6->sin6_scope_id = 0xfacefeed; - unsigned int len = sizeof(*in6); - int ret = connect(-1, (void *) in6, len); -+ pidns_print_leader(); - printf("connect(-1, {sa_family=AF_INET6, sin6_port=htons(%hu)" - ", sin6_flowinfo=htonl(%u)" - ", inet_pton(AF_INET6, \"%s\", &sin6_addr)" -@@ -209,6 +227,7 @@ - in6->sin6_scope_id = 0xfacefeed; - len = sizeof(*in6) + 4; - ret = connect(-1, (void *) in6, len); -+ pidns_print_leader(); - printf("connect(-1, {sa_family=AF_INET6, sin6_port=htons(%hu)" - ", sin6_flowinfo=htonl(%u)" - ", inet_pton(AF_INET6, \"%s\", &sin6_addr)" -@@ -223,6 +242,7 @@ - inet_pton(AF_INET6, h_addr, &in6->sin6_addr); - len = sizeof(*in6) - sizeof(in6->sin6_scope_id); - ret = connect(-1, (void *) in6, len); -+ pidns_print_leader(); - printf("connect(-1, {sa_family=AF_INET6, sin6_port=htons(%hu)" - ", sin6_flowinfo=htonl(%u)" - ", inet_pton(AF_INET6, \"%s\", &sin6_addr)}, %u)" -@@ -236,6 +256,7 @@ - memset(&in6->sin6_addr, '0', sizeof(in6->sin6_addr) - 4); - len = sizeof(*in6) - sizeof(in6->sin6_scope_id) - 4; - ret = connect(-1, (void *) in6, len); -+ pidns_print_leader(); - printf("connect(-1, {sa_family=AF_INET6" - ", sa_data=\"\\0\\0\\0\\0\\0\\000%.*u\"}, %u)" - " = %d EBADF (%m)\n", -@@ -244,6 +265,7 @@ - - len = sizeof(*in6) - sizeof(in6->sin6_scope_id); - ret = connect(-1, (void *) in6, len); -+ pidns_print_leader(); - printf("connect(-1, %p, %u) = %d EBADF (%m)\n", in6, len, ret); - } - -@@ -262,6 +284,7 @@ - void *ipx = tail_memdup(&c_ipx, sizeof(c_ipx)); - unsigned int len = sizeof(c_ipx); - int ret = connect(-1, ipx, len); -+ pidns_print_leader(); - printf("connect(-1, {sa_family=AF_IPX, sipx_port=htons(%u)" - ", sipx_network=htonl(%#x)" - ", sipx_node=[%#02x, %#02x, %#02x, %#02x, %#02x, %#02x]" -@@ -316,18 +339,21 @@ - fill_memory(sax, size); - sax->fsa_ax25.sax25_family = AF_AX25; - rc = connect(-1, sax_void, sizeof(struct sockaddr_ax25) - 1); -+ pidns_print_leader(); - printf("connect(-1, {sa_family=AF_AX25, sa_data=\"\\202\\203\\204\\205" - "\\206\\207\\210\\211\\212\\213\\214\\215\\216\"}, %zu) = %s\n", - sizeof(struct sockaddr_ax25) - 1, sprintrc(rc)); - - memcpy(sax, &ax25, sizeof(ax25)); - rc = connect(-1, sax_void, sizeof(struct sockaddr_ax25)); -+ pidns_print_leader(); - printf("connect(-1, {sa_family=AF_AX25, fsa_ax25={sax25_call=VALID-13" - ", sax25_ndigis=8}, fsa_digipeater=[/* ??? */]}, %zu) = %s\n", - sizeof(struct sockaddr_ax25), sprintrc(rc)); - - sax->fsa_ax25.sax25_ndigis = 0; - rc = connect(-1, sax_void, sizeof(struct sockaddr_ax25)); -+ pidns_print_leader(); - printf("connect(-1, {sa_family=AF_AX25, sax25_call=VALID-13" - ", sax25_ndigis=0}, %zu) = %s\n", - sizeof(struct sockaddr_ax25), sprintrc(rc)); -@@ -335,6 +361,7 @@ - sax->fsa_ax25.sax25_ndigis = 8; - size = sizeof(struct sockaddr_ax25) + sizeof(ax25_address) * 3 + 1; - rc = connect(-1, sax_void, size); -+ pidns_print_leader(); - printf("connect(-1, {sa_family=AF_AX25, fsa_ax25={sax25_call=VALID-13" - ", sax25_ndigis=8}, fsa_digipeater" - "=[{ax25_call=\"\\xa6\\xa0\\x82\\x40\\x86\\x8a\\x00\"" -@@ -348,6 +375,7 @@ - sax->fsa_digipeater[2].ax25_call[6] = 0x4; - size = sizeof(struct sockaddr_ax25) + sizeof(ax25_address) * 4; - rc = connect(-1, sax_void, size); -+ pidns_print_leader(); - printf("connect(-1, {sa_family=AF_AX25, fsa_ax25={sax25_call=VALID-13" - ", sax25_ndigis=8}, fsa_digipeater" - "=[{ax25_call=\"\\xa6\\xa0\\x82\\x40\\x86\\x8a\\x00\"" -@@ -365,6 +393,7 @@ - for (size_t i = 0; i < 3; i++) { - size = sizeof(ax25) + sizeof(ax25_address) * (i / 2); - rc = connect(-1, sax_void, size); -+ pidns_print_leader(); - printf("connect(-1, {sa_family=AF_AX25" - ", fsa_ax25={sax25_call=VALID-13, sax25_ndigis=%d}" - ", fsa_digipeater=[VALID2-7, OK-15, %s /* FINE-2 */" -@@ -427,12 +456,14 @@ - long rc; - - rc = connect(-1, x25_void, sizeof(c_x25) - 1); -+ pidns_print_leader(); - printf("connect(-1, {sa_family=AF_X25" - ", sa_data=\"0123456789abcde\"}, %zu) = %s\n", - sizeof(c_x25) - 1, sprintrc(rc)); - - for (size_t i = 0; i < 2; i++) { - rc = connect(-1, x25_void, sizeof(c_x25) + i); -+ pidns_print_leader(); - printf("connect(-1, {sa_family=AF_X25" - ", sx25_addr={x25_addr=\"0123456789abcde\"...}" - "}, %zu) = %s\n", -@@ -442,6 +473,7 @@ - struct sockaddr_x25 *const x25 = x25_void; - x25->sx25_addr.x25_addr[10] = '\0'; - rc = connect(-1, x25_void, sizeof(c_x25)); -+ pidns_print_leader(); - printf("connect(-1, {sa_family=AF_X25" - ", sx25_addr={x25_addr=\"0123456789\"}" - "}, %zu) = %s\n", -@@ -457,19 +489,21 @@ - nl->nl_groups = 0xfacefeed; - unsigned int len = sizeof(*nl); - int ret = connect(-1, (void *) nl, len); -+ pidns_print_leader(); - printf("connect(-1, {sa_family=AF_NETLINK, nl_pid=%d" - ", nl_groups=%#08x}, %u) = %d EBADF (%m)\n", - nl->nl_pid, nl->nl_groups, len, ret); - - nl = ((void *) nl) - 4; - nl->nl_family = AF_NETLINK; -- nl->nl_pid = 1234567890; -+ nl->nl_pid = getpid(); - nl->nl_groups = 0xfacefeed; - len = sizeof(*nl) + 4; - ret = connect(-1, (void *) nl, len); -- printf("connect(-1, {sa_family=AF_NETLINK, nl_pid=%d" -+ pidns_print_leader(); -+ printf("connect(-1, {sa_family=AF_NETLINK, nl_pid=%d%s" - ", nl_groups=%#08x}, %u) = %d EBADF (%m)\n", -- nl->nl_pid, nl->nl_groups, len, ret); -+ nl->nl_pid, pidns_pid2str(PT_TGID), nl->nl_groups, len, ret); - } - - static void -@@ -487,6 +521,7 @@ - void *ll = tail_memdup(&c_ll, sizeof(c_ll)); - unsigned int len = sizeof(c_ll); - int ret = connect(-1, ll, len); -+ pidns_print_leader(); - printf("connect(-1, {sa_family=AF_PACKET" - ", sll_protocol=htons(ETH_P_ALL)" - ", sll_ifindex=%u, sll_hatype=ARPHRD_ETHER" -@@ -502,6 +537,7 @@ - - ((struct sockaddr_ll *) ll)->sll_halen++; - ret = connect(-1, ll, len); -+ pidns_print_leader(); - printf("connect(-1, {sa_family=AF_PACKET" - ", sll_protocol=htons(ETH_P_ALL)" - ", sll_ifindex=%u, sll_hatype=ARPHRD_ETHER" -@@ -517,6 +553,7 @@ - - ((struct sockaddr_ll *) ll)->sll_halen = 0; - ret = connect(-1, ll, len); -+ pidns_print_leader(); - printf("connect(-1, {sa_family=AF_PACKET" - ", sll_protocol=htons(ETH_P_ALL)" - ", sll_ifindex=%u, sll_hatype=ARPHRD_ETHER" -@@ -526,6 +563,7 @@ - ((struct sockaddr_ll *) ll)->sll_ifindex = ifindex_lo(); - if (((struct sockaddr_ll *) ll)->sll_ifindex) { - ret = connect(-1, ll, len); -+ pidns_print_leader(); - printf("connect(-1, {sa_family=AF_PACKET" - ", sll_protocol=htons(ETH_P_ALL)" - ", sll_ifindex=%s" -@@ -549,11 +587,13 @@ - unsigned int len = sizeof(*hci); - - int ret = connect(-1, (void *) hci, 4); -+ pidns_print_leader(); - 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); -+ pidns_print_leader(); - printf("connect(-1, {sa_family=AF_BLUETOOTH, hci_dev=htobs(%hu)" - # ifdef HAVE_STRUCT_SOCKADDR_HCI_HCI_CHANNEL - ", hci_channel=HCI_CHANNEL_RAW" -@@ -572,6 +612,7 @@ - void *sco = tail_memdup(&c_sco, sizeof(c_sco)); - unsigned int len = sizeof(c_sco); - int ret = connect(-1, sco, len); -+ pidns_print_leader(); - printf("connect(-1, {sa_family=AF_BLUETOOTH" - ", sco_bdaddr=%02x:%02x:%02x:%02x:%02x:%02x" - "}, %u) = %d EBADF (%m)\n", -@@ -592,6 +633,7 @@ - void *rc = tail_memdup(&c_rc, sizeof(c_rc)); - unsigned int len = sizeof(c_rc); - int ret = connect(-1, rc, len); -+ pidns_print_leader(); - printf("connect(-1, {sa_family=AF_BLUETOOTH" - ", rc_bdaddr=%02x:%02x:%02x:%02x:%02x:%02x" - ", rc_channel=%u}, %u) = %d EBADF (%m)\n", -@@ -619,6 +661,7 @@ - unsigned int len = sizeof(c_l2); - - int ret = connect(-1, l2, len); -+ pidns_print_leader(); - printf("connect(-1, {sa_family=AF_BLUETOOTH" - ", l2_psm=htobs(L2CAP_PSM_DYN_START + %hu)" - ", l2_bdaddr=%02x:%02x:%02x:%02x:%02x:%02x" -@@ -640,6 +683,7 @@ - # endif - memcpy(l2, &c_l2, sizeof(c_l2)); - ret = connect(-1, l2, len); -+ pidns_print_leader(); - printf("connect(-1, {sa_family=AF_BLUETOOTH" - ", l2_psm=htobs(L2CAP_PSM_SDP)" - ", l2_bdaddr=%02x:%02x:%02x:%02x:%02x:%02x" -@@ -660,6 +704,7 @@ - # endif - memcpy(l2, &c_l2, sizeof(c_l2)); - ret = connect(-1, l2, len); -+ pidns_print_leader(); - printf("connect(-1, {sa_family=AF_BLUETOOTH" - ", l2_psm=htobs(0xbad /* L2CAP_PSM_??? */)" - ", l2_bdaddr=%02x:%02x:%02x:%02x:%02x:%02x" -@@ -677,6 +722,7 @@ - c_l2.l2_cid = htobs(0xffff); - memcpy(l2, &c_l2, 12); - ret = connect(-1, l2, 12); -+ pidns_print_leader(); - printf("connect(-1, {sa_family=AF_BLUETOOTH" - ", l2_psm=htobs(L2CAP_PSM_AUTO_END)" - ", l2_bdaddr=%02x:%02x:%02x:%02x:%02x:%02x" -@@ -700,6 +746,7 @@ - u.sa->sa_family = 0xff; - unsigned int len = sizeof(*u.st) + 8; - int ret = connect(-1, (void *) u.st, len); -+ pidns_print_leader(); - printf("connect(-1, {sa_family=%#x /* AF_??? */, sa_data=\"%.*u\"}" - ", %u) = %d EBADF (%m)\n", u.sa->sa_family, - (int) (sizeof(*u.st) - sizeof(u.sa->sa_family)), 0, len, ret); -@@ -707,11 +754,13 @@ - u.sa->sa_family = 0; - len = sizeof(u.sa->sa_family) + 1; - ret = connect(-1, (void *) u.st, len); -+ pidns_print_leader(); - printf("connect(-1, {sa_family=AF_UNSPEC, sa_data=\"0\"}, %u)" - " = %d EBADF (%m)\n", len, ret); - - u.sa->sa_family = AF_BLUETOOTH; - ret = connect(-1, (void *) u.st, len); -+ pidns_print_leader(); - printf("connect(-1, {sa_family=AF_BLUETOOTH, sa_data=\"0\"}, %u)" - " = %d EBADF (%m)\n", len, ret); - } -@@ -719,6 +768,8 @@ - int - main(void) - { -+ PIDNS_TEST_INIT; -+ - check_un(); - check_in(); - check_in6(); -@@ -735,6 +786,7 @@ - #endif - check_raw(); - -+ pidns_print_leader(); - puts("+++ exited with 0 +++"); - return 0; - } -Index: strace-5.7/tests/netlink_audit--pidns-translation.c -=================================================================== ---- /dev/null 1970-01-01 00:00:00.000000000 +0000 -+++ strace-5.7/tests/netlink_audit--pidns-translation.c 2020-09-09 19:52:38.880673621 +0200 -@@ -0,0 +1,2 @@ -+#define PIDNS_TRANSLATION -+#include "netlink_audit.c" -Index: strace-5.7/tests/netlink_audit--pidns-translation.test -=================================================================== ---- /dev/null 1970-01-01 00:00:00.000000000 +0000 -+++ strace-5.7/tests/netlink_audit--pidns-translation.test 2020-09-09 19:52:38.880673621 +0200 -@@ -0,0 +1,13 @@ -+#!/bin/sh -+# -+# Check pidns translation of NETLINK_SOCK_DIAG protocol decoding -+# -+# Copyright (c) 2020 The strace developers. -+# All rights reserved. -+# -+# SPDX-License-Identifier: LGPL-2.1-or-later -+ -+. "${srcdir=.}/init.sh" -+ -+run_prog ../netlink_netlink_diag -+test_pidns -e trace=sendto "$@" -Index: strace-5.7/tests/netlink_audit.c -=================================================================== ---- strace-5.7.orig/tests/netlink_audit.c 2020-09-09 19:52:30.599668685 +0200 -+++ strace-5.7/tests/netlink_audit.c 2020-09-09 19:52:38.881673621 +0200 -@@ -7,6 +7,7 @@ - */ - - #include "tests.h" -+#include "pidns.h" - #include - #include - #include -@@ -17,18 +18,23 @@ - static void - test_nlmsg_type(const int fd) - { -+ PIDNS_TEST_INIT; -+ - long rc; - struct nlmsghdr nlh = { - .nlmsg_len = sizeof(nlh), - .nlmsg_type = AUDIT_GET, - .nlmsg_flags = NLM_F_REQUEST, -+ .nlmsg_pid = getpid(), - }; - - rc = sendto(fd, &nlh, sizeof(nlh), MSG_DONTWAIT, NULL, 0); -+ pidns_print_leader(); - printf("sendto(%d, {len=%u, type=AUDIT_GET" -- ", flags=NLM_F_REQUEST, seq=0, pid=0}" -+ ", flags=NLM_F_REQUEST, seq=0, pid=%d%s}" - ", %u, MSG_DONTWAIT, NULL, 0) = %s\n", -- fd, nlh.nlmsg_len, (unsigned) sizeof(nlh), sprintrc(rc)); -+ fd, nlh.nlmsg_len, nlh.nlmsg_pid, pidns_pid2str(PT_TGID), -+ (unsigned) sizeof(nlh), sprintrc(rc)); - } - - int main(void) -@@ -39,6 +45,7 @@ - - test_nlmsg_type(fd); - -+ pidns_print_leader(); - printf("+++ exited with 0 +++\n"); - - return 0; -Index: strace-5.7/tests/pidfd_open--pidns-translation.c -=================================================================== ---- /dev/null 1970-01-01 00:00:00.000000000 +0000 -+++ strace-5.7/tests/pidfd_open--pidns-translation.c 2020-09-09 19:52:38.881673621 +0200 -@@ -0,0 +1,2 @@ -+#define PIDNS_TRANSLATION -+#include "pidfd_open.c" -Index: strace-5.7/tests/pidfd_open.c -=================================================================== ---- strace-5.7.orig/tests/pidfd_open.c 2020-09-09 19:52:30.599668685 +0200 -+++ strace-5.7/tests/pidfd_open.c 2020-09-09 19:52:38.881673621 +0200 -@@ -10,6 +10,7 @@ - - #include "tests.h" - #include "scno.h" -+#include "pidns.h" - - #ifdef __NR_pidfd_open - -@@ -37,6 +38,8 @@ - int - main(void) - { -+ PIDNS_TEST_INIT; -+ - # if defined PATH_TRACING || defined PRINT_PATHS - skip_if_unavailable("/proc/self/fd/"); - # endif -@@ -50,16 +53,19 @@ - - k_pidfd_open(0, 0); - # ifndef PATH_TRACING -+ pidns_print_leader(); - printf("pidfd_open(0, 0) = %s\n", errstr); - # endif - - k_pidfd_open(-1U, 0); - # ifndef PATH_TRACING -+ pidns_print_leader(); - printf("pidfd_open(-1, 0) = %s\n", errstr); - # endif - - k_pidfd_open(0, -1U); - # ifndef PATH_TRACING -+ pidns_print_leader(); - printf("pidfd_open(0, %#x) = %s\n", -1U, errstr); - # endif - -@@ -68,7 +74,10 @@ - - k_pidfd_open(pid, flags); - # ifndef PATH_TRACING -- printf("pidfd_open(%d, %#x) = %s\n", pid, flags, errstr); -+ const char *pid_str = pidns_pid2str(PT_TGID); -+ pidns_print_leader(); -+ printf("pidfd_open(%d%s, %#x) = %s\n", -+ pid, pid_str, flags, errstr); - # endif - - # ifdef PRINT_PATHS -@@ -80,17 +89,19 @@ - # endif - - # ifndef PATH_TRACING -- printf("pidfd_open(%d, 0) = " -+ pidns_print_leader(); -+ printf("pidfd_open(%d%s, 0) = " - # if defined PRINT_PIDFD -- "%ld\n", pid, rc, pid -+ "%ld\n", pid, pid_str, rc, pid - # elif defined PRINT_PATHS -- "%ld\n", pid, rc -+ "%ld\n", pid, pid_str, rc - # else -- "%s\n", pid, errstr -+ "%s\n", pid, pid_str, errstr - # endif - ); - # endif - -+ pidns_print_leader(); - puts("+++ exited with 0 +++"); - return 0; - } -Index: strace-5.7/tests/pidfd_send_signal--pidns-translation.c -=================================================================== ---- /dev/null 1970-01-01 00:00:00.000000000 +0000 -+++ strace-5.7/tests/pidfd_send_signal--pidns-translation.c 2020-09-09 19:52:38.881673621 +0200 -@@ -0,0 +1,2 @@ -+#define PIDNS_TRANSLATION -+#include "pidfd_send_signal.c" -Index: strace-5.7/tests/pidfd_send_signal.c -=================================================================== ---- strace-5.7.orig/tests/pidfd_send_signal.c 2020-09-09 19:52:30.600668685 +0200 -+++ strace-5.7/tests/pidfd_send_signal.c 2020-09-09 19:52:38.881673621 +0200 -@@ -10,6 +10,7 @@ - #include "tests.h" - #include - #include "scno.h" -+#include "pidns.h" - - #ifdef __NR_pidfd_send_signal - -@@ -36,6 +37,8 @@ - int - main(void) - { -+ PIDNS_TEST_INIT; -+ - static const char null_path[] = "/dev/null"; - - int fd = open(null_path, O_RDONLY); -@@ -46,19 +49,23 @@ - const void *esi = (const void *) si + 1; - - sys_pidfd_send_signal(fd, SIGUSR1, esi, 0); -+ pidns_print_leader(); - printf("pidfd_send_signal(%d, SIGUSR1, %p, 0) = %s\n", - fd, esi, errstr); - - si->si_signo = SIGUSR1; - si->si_code = SI_QUEUE; -+ si->si_pid = getpid(); - - sys_pidfd_send_signal(fd, SIGUSR2, si, -1); -+ pidns_print_leader(); - printf("pidfd_send_signal(%d, SIGUSR2, {si_signo=SIGUSR1" -- ", si_code=SI_QUEUE, si_errno=%u, si_pid=%d, si_uid=%d" -+ ", si_code=SI_QUEUE, si_errno=%u, si_pid=%d%s, si_uid=%d" - ", si_value={int=%d, ptr=%p}}, %#x) = %s\n", -- fd, si->si_errno, si->si_pid, si->si_uid, si->si_int, si->si_ptr, -- -1U, errstr); -+ fd, si->si_errno, si->si_pid, pidns_pid2str(PT_TGID), si->si_uid, -+ si->si_int, si->si_ptr, -1U, errstr); - -+ pidns_print_leader(); - puts("+++ exited with 0 +++"); - return 0; - } -Index: strace-5.7/tests/pidns-cache.c -=================================================================== ---- /dev/null 1970-01-01 00:00:00.000000000 +0000 -+++ strace-5.7/tests/pidns-cache.c 2020-09-09 19:52:38.882673622 +0200 -@@ -0,0 +1,62 @@ -+/* -+ * Copyright (c) 2020 The strace developers. -+ * All rights reserved. -+ * -+ * SPDX-License-Identifier: GPL-2.0-or-later -+ */ -+ -+#include "tests.h" -+#include "scno.h" -+#include "pidns.h" -+ -+#if defined __NR_getpid && (!defined __NR_getxpid || __NR_getxpid != __NR_getpid) -+ -+# include -+# include -+# include -+ -+# define SYSCALL_COUNT 1000 -+ -+/** -+ * Max ratio of the execution time with and without pidns translation. -+ */ -+# define MAX_TIME_RATIO 20 -+ -+static long -+execute_syscalls(void) -+{ -+ /* Load our PID in the cache */ -+ syscall(__NR_getpid); -+ -+ struct timeval stop, start; -+ gettimeofday(&start, NULL); -+ -+ for (int i = 0; i < SYSCALL_COUNT; i++) -+ syscall(__NR_getpid); -+ -+ gettimeofday(&stop, NULL); -+ -+ return (stop.tv_usec - start.tv_usec) + -+ (stop.tv_sec - start.tv_sec) * 1000000; -+} -+ -+int -+main(void) -+{ -+ long max_us = execute_syscalls() * MAX_TIME_RATIO; -+ -+ pidns_test_init(); -+ -+ long us = execute_syscalls(); -+ if (us > max_us) -+ error_msg_and_fail("pidns translation took too long: %ld us " -+ "(max: %ld us)", us, max_us); -+ -+ return 0; -+} -+ -+#else -+ -+SKIP_MAIN_UNDEFINED("__NR_getpid") -+ -+#endif -Index: strace-5.7/tests/pidns-cache.test -=================================================================== ---- /dev/null 1970-01-01 00:00:00.000000000 +0000 -+++ strace-5.7/tests/pidns-cache.test 2020-09-09 19:52:38.882673622 +0200 -@@ -0,0 +1,15 @@ -+#!/bin/sh -+# -+# Test pidns translation cache. -+# -+# Copyright (c) 2020 The strace developers. -+# All rights reserved. -+# -+# SPDX-License-Identifier: GPL-2.0-or-later -+ -+. "${srcdir=.}/init.sh" -+ -+check_prog timeout -+ -+run_prog > /dev/null -+run_strace --pidns-translation -f -e trace=getpid $args -Index: strace-5.7/tests/prlimit64--pidns-translation.c -=================================================================== ---- /dev/null 1970-01-01 00:00:00.000000000 +0000 -+++ strace-5.7/tests/prlimit64--pidns-translation.c 2020-09-09 19:52:38.882673622 +0200 -@@ -0,0 +1,2 @@ -+#define PIDNS_TRANSLATION -+#include "prlimit64.c" -Index: strace-5.7/tests/prlimit64.c -=================================================================== ---- strace-5.7.orig/tests/prlimit64.c 2020-09-09 19:52:30.600668685 +0200 -+++ strace-5.7/tests/prlimit64.c 2020-09-09 19:52:38.882673622 +0200 -@@ -19,6 +19,7 @@ - # include - # include - -+# include "pidns.h" - # include "xlat.h" - # include "xlat/resources.h" - -@@ -42,8 +43,11 @@ - int - main(void) - { -+ PIDNS_TEST_INIT; -+ - unsigned long pid = - (unsigned long) 0xdefaced00000000ULL | (unsigned) getpid(); -+ const char *pid_str = pidns_pid2str(PT_TGID); - uint64_t *const rlimit = tail_alloc(sizeof(*rlimit) * 2); - const struct xlat_data *xlat; - size_t i = 0; -@@ -54,18 +58,23 @@ - - unsigned long res = 0xfacefeed00000000ULL | xlat->val; - long rc = syscall(__NR_prlimit64, pid, res, 0, rlimit); -+ pidns_print_leader(); - if (rc) -- printf("prlimit64(%d, %s, NULL, %p) = %ld %s (%m)\n", -- (unsigned) pid, xlat->str, rlimit, -+ printf("prlimit64(%d%s, %s, NULL, %p) =" -+ " %ld %s (%m)\n", -+ (unsigned) pid, pid_str, -+ xlat->str, rlimit, - rc, errno2name()); - else -- printf("prlimit64(%d, %s, NULL" -+ printf("prlimit64(%d%s, %s, NULL" - ", {rlim_cur=%s, rlim_max=%s}) = 0\n", -- (unsigned) pid, xlat->str, -+ (unsigned) pid, pid_str, -+ xlat->str, - sprint_rlim(rlimit[0]), - sprint_rlim(rlimit[1])); - } - -+ pidns_print_leader(); - puts("+++ exited with 0 +++"); - return 0; - } -Index: strace-5.7/tests/process_vm_readv--pidns-translation.c -=================================================================== ---- /dev/null 1970-01-01 00:00:00.000000000 +0000 -+++ strace-5.7/tests/process_vm_readv--pidns-translation.c 2020-09-09 19:52:38.882673622 +0200 -@@ -0,0 +1,2 @@ -+#define PIDNS_TRANSLATION -+#include "process_vm_readv.c" -Index: strace-5.7/tests/process_vm_readv_writev.c -=================================================================== ---- strace-5.7.orig/tests/process_vm_readv_writev.c 2020-09-09 19:52:30.601668686 +0200 -+++ strace-5.7/tests/process_vm_readv_writev.c 2020-09-09 19:52:38.883673622 +0200 -@@ -12,6 +12,7 @@ - #include - #include - #include -+#include "pidns.h" - - #if OP_WR - # define in_iovec rmt_iovec -@@ -121,7 +122,7 @@ - } - - static void --do_call(kernel_ulong_t pid, -+do_call(kernel_ulong_t pid, enum pid_type pid_type, - kernel_ulong_t local_iov, const char *local_arg, - kernel_ulong_t liovcnt, - kernel_ulong_t remote_iov, const char *remote_arg, -@@ -135,7 +136,8 @@ - flags); - errstr = sprintrc(rc); - -- printf("%s(%d, ", OP_STR, (int) pid); -+ pidns_print_leader(); -+ printf("%s(%d%s, ", OP_STR, (int) pid, pidns_pid2str(pid_type)); - - if (pr_iov) - pr_iov((const struct iovec *) (uintptr_t) local_iov, local_arg, -@@ -164,6 +166,8 @@ - int - main(void) - { -+ PIDNS_TEST_INIT; -+ - enum { - SIZE_11 = 2, - SIZE_12 = 3, -@@ -243,18 +247,18 @@ - fill_memory_ex(data2_out, SIZE_2, SEGM2_BASE, SIZE_2); - - -- do_call(bogus_pid, (kernel_ulong_t) (uintptr_t) ARG_STR(NULL), -+ do_call(bogus_pid, PT_NONE, (kernel_ulong_t) (uintptr_t) ARG_STR(NULL), - bogus_iovcnt1, (kernel_ulong_t) (uintptr_t) ARG_STR(NULL), - bogus_iovcnt2, bogus_flags, NULL); - -- do_call(my_pid, ptr_cast(bogus_iov + ARRAY_SIZE(bogus_iovec)), -+ do_call(my_pid, PT_TGID, ptr_cast(bogus_iov + ARRAY_SIZE(bogus_iovec)), - "[]", 0, ptr_cast(in_iov + ARRAY_SIZE(in_iovec)), "[]", - 0, 0, NULL); -- do_call(my_pid, ptr_cast(bogus_iov + ARRAY_SIZE(bogus_iovec)), NULL, -- bogus_iovcnt1, ptr_cast(in_iov + ARRAY_SIZE(in_iovec)), NULL, -- bogus_iovcnt2, 0, print_iov); -+ do_call(my_pid, PT_TGID, ptr_cast(bogus_iov + ARRAY_SIZE(bogus_iovec)), -+ NULL, bogus_iovcnt1, ptr_cast(in_iov + ARRAY_SIZE(in_iovec)), -+ NULL, bogus_iovcnt2, 0, print_iov); - -- do_call(my_pid, ptr_cast(bogus_iov), (char *) &bogus_arg, -+ do_call(my_pid, PT_TGID, ptr_cast(bogus_iov), (char *) &bogus_arg, - ARRAY_SIZE(bogus_iovec), ptr_cast(rmt_iov + 2), - (char *) &rmt_arg_cut, ARRAY_SIZE(rmt_iovec) - 2, 0, print_iov); - -@@ -263,7 +267,7 @@ - lcl_arg_cut.check_rc = 1; - #endif - -- do_call(my_pid, ptr_cast(lcl_iov + 2), (char *) &lcl_arg_cut, -+ do_call(my_pid, PT_TGID, ptr_cast(lcl_iov + 2), (char *) &lcl_arg_cut, - ARRAY_SIZE(lcl_iovec) - 1, ptr_cast(bogus_iov + 2), - (char *) &bogus_arg_cut, ARRAY_SIZE(bogus_iovec) - 1, 0, - print_iov); -@@ -273,15 +277,16 @@ - rmt_arg_cut.addr_term = 1; - rmt_arg_cut.count = 5; - -- do_call(my_pid, ptr_cast(lcl_iov + 2), (char *) &lcl_arg_cut, -+ do_call(my_pid, PT_TGID, ptr_cast(lcl_iov + 2), (char *) &lcl_arg_cut, - ARRAY_SIZE(lcl_iovec) - 2, ptr_cast(rmt_iov + 1), - (char *) &rmt_arg_cut, ARRAY_SIZE(rmt_iovec), 0, print_iov); - - /* Correct call */ -- do_call(my_pid, ptr_cast(lcl_iov), (char *) &lcl_arg, -+ do_call(my_pid, PT_TGID, ptr_cast(lcl_iov), (char *) &lcl_arg, - ARRAY_SIZE(lcl_iovec), ptr_cast(rmt_iov), (char *) &rmt_arg, - ARRAY_SIZE(rmt_iovec), 0, print_iov); - -+ pidns_print_leader(); - puts("+++ exited with 0 +++"); - - return 0; -Index: strace-5.7/tests/process_vm_writev--pidns-translation.c -=================================================================== ---- /dev/null 1970-01-01 00:00:00.000000000 +0000 -+++ strace-5.7/tests/process_vm_writev--pidns-translation.c 2020-09-09 19:52:38.883673622 +0200 -@@ -0,0 +1,2 @@ -+#define PIDNS_TRANSLATION -+#include "process_vm_writev.c" -Index: strace-5.7/tests/rt_sigqueueinfo--pidns-translation.c -=================================================================== ---- /dev/null 1970-01-01 00:00:00.000000000 +0000 -+++ strace-5.7/tests/rt_sigqueueinfo--pidns-translation.c 2020-09-09 19:52:38.883673622 +0200 -@@ -0,0 +1,2 @@ -+#define PIDNS_TRANSLATION -+#include "rt_sigqueueinfo.c" -Index: strace-5.7/tests/rt_sigqueueinfo.c -=================================================================== ---- strace-5.7.orig/tests/rt_sigqueueinfo.c 2020-09-09 19:52:30.601668686 +0200 -+++ strace-5.7/tests/rt_sigqueueinfo.c 2020-09-09 19:52:38.883673622 +0200 -@@ -7,6 +7,7 @@ - */ - - #include "tests.h" -+#include "pidns.h" - #include - #include - #include -@@ -15,6 +16,8 @@ - int - main(void) - { -+ PIDNS_TEST_INIT; -+ - struct sigaction sa = { - .sa_handler = SIG_IGN - }; -@@ -22,15 +25,19 @@ - .sival_ptr = (void *) (unsigned long) 0xdeadbeefbadc0dedULL - }; - pid_t pid = getpid(); -+ const char *pid_str = pidns_pid2str(PT_TGID); - - assert(sigaction(SIGUSR1, &sa, NULL) == 0); - if (sigqueue(pid, SIGUSR1, value)) - perror_msg_and_skip("sigqueue"); -- printf("rt_sigqueueinfo(%u, SIGUSR1, {si_signo=SIGUSR1, " -- "si_code=SI_QUEUE, si_pid=%d, si_uid=%d, " -+ pidns_print_leader(); -+ printf("rt_sigqueueinfo(%d%s, SIGUSR1, {si_signo=SIGUSR1, " -+ "si_code=SI_QUEUE, si_pid=%d%s, si_uid=%u, " - "si_value={int=%d, ptr=%p}}) = 0\n", -- pid, pid, getuid(), value.sival_int, value.sival_ptr); -- printf("+++ exited with 0 +++\n"); -+ pid, pid_str, pid, pid_str, -+ getuid(), value.sival_int, value.sival_ptr); -+ pidns_print_leader(); -+ puts("+++ exited with 0 +++"); - - return 0; - } -Index: strace-5.7/tests/rt_tgsigqueueinfo--pidns-translation.c -=================================================================== ---- /dev/null 1970-01-01 00:00:00.000000000 +0000 -+++ strace-5.7/tests/rt_tgsigqueueinfo--pidns-translation.c 2020-09-09 19:52:38.883673622 +0200 -@@ -0,0 +1,2 @@ -+#define PIDNS_TRANSLATION -+#include "rt_tgsigqueueinfo.c" -Index: strace-5.7/tests/rt_tgsigqueueinfo.c -=================================================================== ---- strace-5.7.orig/tests/rt_tgsigqueueinfo.c 2020-09-09 19:52:30.601668686 +0200 -+++ strace-5.7/tests/rt_tgsigqueueinfo.c 2020-09-09 19:52:38.884673623 +0200 -@@ -10,8 +10,9 @@ - - #include "tests.h" - #include "scno.h" -+#include "pidns.h" - --#ifdef __NR_rt_tgsigqueueinfo -+#if defined __NR_rt_tgsigqueueinfo && defined __NR_gettid - - # include - # include -@@ -20,11 +21,11 @@ - # include - - static long --k_tgsigqueueinfo(const pid_t pid, const int sig, const void *const info) -+k_tgsigqueueinfo(const pid_t tgid, const int tid, const int sig, const void *const info) - { - return syscall(__NR_rt_tgsigqueueinfo, -- F8ILL_KULONG_MASK | pid, -- F8ILL_KULONG_MASK | pid, -+ F8ILL_KULONG_MASK | tgid, -+ F8ILL_KULONG_MASK | tid, - F8ILL_KULONG_MASK | sig, - info); - } -@@ -32,6 +33,8 @@ - int - main(void) - { -+ PIDNS_TEST_INIT; -+ - const struct sigaction sa = { - .sa_handler = SIG_IGN - }; -@@ -48,17 +51,22 @@ - info->si_value.sival_ptr = - (void *) (unsigned long) 0xdeadbeeffacefeedULL; - -- if (k_tgsigqueueinfo(info->si_pid, SIGUSR1, info)) -+ if (k_tgsigqueueinfo(getpid(), syscall(__NR_gettid), SIGUSR1, info)) - (errno == ENOSYS ? perror_msg_and_skip : perror_msg_and_fail)( - "rt_tgsigqueueinfo"); - -- printf("rt_tgsigqueueinfo(%u, %u, %s, {si_signo=%s" -- ", si_code=SI_QUEUE, si_errno=ENOENT, si_pid=%d" -+ pidns_print_leader(); -+ printf("rt_tgsigqueueinfo(%d%s, %d%s, %s, {si_signo=%s" -+ ", si_code=SI_QUEUE, si_errno=ENOENT, si_pid=%d%s" - ", si_uid=%d, si_value={int=%d, ptr=%p}}) = 0\n", -- info->si_pid, info->si_pid, "SIGUSR1", "SIGUSR1", -- info->si_pid, info->si_uid, info->si_value.sival_int, -+ info->si_pid, pidns_pid2str(PT_TGID), -+ info->si_pid, pidns_pid2str(PT_TID), -+ "SIGUSR1", "SIGUSR1", -+ info->si_pid, pidns_pid2str(PT_TGID), -+ info->si_uid, info->si_value.sival_int, - info->si_value.sival_ptr); - -+ pidns_print_leader(); - puts("+++ exited with 0 +++"); - return 0; - } -Index: strace-5.7/tests/sched_xetaffinity--pidns-translation.c -=================================================================== ---- /dev/null 1970-01-01 00:00:00.000000000 +0000 -+++ strace-5.7/tests/sched_xetaffinity--pidns-translation.c 2020-09-09 19:52:38.884673623 +0200 -@@ -0,0 +1,2 @@ -+#define PIDNS_TRANSLATION -+#include "sched_xetaffinity.c" -Index: strace-5.7/tests/sched_xetaffinity.c -=================================================================== ---- strace-5.7.orig/tests/sched_xetaffinity.c 2020-09-09 19:52:30.602668687 +0200 -+++ strace-5.7/tests/sched_xetaffinity.c 2020-09-09 19:52:38.884673623 +0200 -@@ -10,6 +10,7 @@ - - #include "tests.h" - #include "scno.h" -+#include "pidns.h" - #include - - #if defined __NR_sched_getaffinity && defined __NR_sched_setaffinity \ -@@ -41,8 +42,11 @@ - int - main(void) - { -+ PIDNS_TEST_INIT; -+ - unsigned int cpuset_size = 1; - const pid_t pid = getpid(); -+ const char *pid_str = pidns_pid2str(PT_TGID); - - while (cpuset_size) { - assert(getaffinity(pid, cpuset_size, NULL) == -1); -@@ -50,18 +54,21 @@ - break; - if (EINVAL != errno) - perror_msg_and_skip("sched_getaffinity"); -- printf("sched_getaffinity(%d, %u, NULL) = %s\n", -- pid, cpuset_size, errstr); -+ pidns_print_leader(); -+ printf("sched_getaffinity(%d%s, %u, NULL) = %s\n", -+ pid, pid_str, cpuset_size, errstr); - cpuset_size <<= 1; - } - assert(cpuset_size); -- printf("sched_getaffinity(%d, %u, NULL) = %s\n", -- pid, cpuset_size, errstr); -+ pidns_print_leader(); -+ printf("sched_getaffinity(%d%s, %u, NULL) = %s\n", -+ pid, pid_str, cpuset_size, errstr); - - cpu_set_t *cpuset = tail_alloc(cpuset_size); - getaffinity(pid, cpuset_size, cpuset + 1); -- printf("sched_getaffinity(%d, %u, %p) = %s\n", -- pid, cpuset_size, cpuset + 1, errstr); -+ pidns_print_leader(); -+ printf("sched_getaffinity(%d%s, %u, %p) = %s\n", -+ pid, pid_str, cpuset_size, cpuset + 1, errstr); - - int ret_size = getaffinity(pid, cpuset_size, cpuset); - if (ret_size < 0) -@@ -69,7 +76,8 @@ - pid, (unsigned) cpuset_size, cpuset, errstr); - assert(ret_size <= (int) cpuset_size); - -- printf("sched_getaffinity(%d, %u, [", pid, cpuset_size); -+ pidns_print_leader(); -+ printf("sched_getaffinity(%d%s, %u, [", pid, pid_str, cpuset_size); - const char *sep; - unsigned int i, cpu; - for (i = 0, cpu = 0, sep = ""; i < (unsigned) ret_size * 8; ++i) { -@@ -85,8 +93,9 @@ - CPU_SET_S(cpu, cpuset_size, cpuset); - if (setaffinity(pid, cpuset_size, cpuset)) - perror_msg_and_skip("sched_setaffinity"); -- printf("sched_setaffinity(%d, %u, [%u]) = 0\n", -- pid, cpuset_size, cpu); -+ pidns_print_leader(); -+ printf("sched_setaffinity(%d%s, %u, [%u]) = 0\n", -+ pid, pid_str, cpuset_size, cpu); - - const unsigned int big_size = cpuset_size < 128 ? 128 : cpuset_size * 2; - cpuset = tail_alloc(big_size); -@@ -95,7 +104,8 @@ - perror_msg_and_fail("sched_getaffinity(%d, %u, %p) = %s\n", - pid, big_size, cpuset, errstr); - assert(ret_size <= (int) big_size); -- printf("sched_getaffinity(%d, %u, [", pid, big_size); -+ pidns_print_leader(); -+ printf("sched_getaffinity(%d%s, %u, [", pid, pid_str, big_size); - for (i = 0, sep = ""; i < (unsigned) ret_size * 8; ++i) { - if (CPU_ISSET_S(i, (unsigned) ret_size, cpuset)) { - printf("%s%u", sep, i); -@@ -104,6 +114,7 @@ - } - printf("]) = %s\n", errstr); - -+ pidns_print_leader(); - puts("+++ exited with 0 +++"); - return 0; - } -Index: strace-5.7/tests/sched_xetattr--pidns-translation.c -=================================================================== ---- /dev/null 1970-01-01 00:00:00.000000000 +0000 -+++ strace-5.7/tests/sched_xetattr--pidns-translation.c 2020-09-09 19:52:38.884673623 +0200 -@@ -0,0 +1,2 @@ -+#define PIDNS_TRANSLATION -+#include "sched_xetattr.c" -Index: strace-5.7/tests/sched_xetattr.c -=================================================================== ---- strace-5.7.orig/tests/sched_xetattr.c 2020-09-09 19:52:30.603668687 +0200 -+++ strace-5.7/tests/sched_xetattr.c 2020-09-09 19:52:38.885673624 +0200 -@@ -15,6 +15,7 @@ - # include - # include - # include -+# include "pidns.h" - # include "sched_attr.h" - # include "xlat.h" - # include "xlat/schedulers.h" -@@ -41,6 +42,8 @@ - int - main(void) - { -+ PIDNS_TEST_INIT; -+ - static const kernel_ulong_t bogus_pid = - (kernel_ulong_t) 0xdefacedfacefeedULL; - static const kernel_ulong_t bogus_size = -@@ -48,20 +51,28 @@ - static const kernel_ulong_t bogus_flags = - (kernel_ulong_t) 0xdefaceddeadc0deULL; - -+ const int pid = getpid(); -+ const char *pid_str = pidns_pid2str(PT_TGID); -+ - TAIL_ALLOC_OBJECT_CONST_PTR(struct sched_attr, attr); - TAIL_ALLOC_OBJECT_CONST_PTR(unsigned int, psize); - void *const efault = attr + 1; - -- sys_sched_getattr(0, 0, 0, 0); -- printf("sched_getattr(0, NULL, 0, 0) = %s\n", errstr); -+ sys_sched_getattr(pid, 0, 0, 0); -+ pidns_print_leader(); -+ printf("sched_getattr(%d%s, NULL, 0, 0) = %s\n", -+ pid, pid_str, errstr); - - sys_sched_getattr(0, (unsigned long) attr, 0, 0); -+ pidns_print_leader(); - printf("sched_getattr(0, %p, 0, 0) = %s\n", attr, errstr); - - sys_sched_getattr(bogus_pid, 0, 0, 0); -+ pidns_print_leader(); - printf("sched_getattr(%d, NULL, 0, 0) = %s\n", (int) bogus_pid, errstr); - - sys_sched_getattr(-1U, (unsigned long) attr, bogus_size, bogus_flags); -+ pidns_print_leader(); - printf("sched_getattr(-1, %p, %s%u, %u) = %s\n", - attr, - # if defined __arm64__ || defined __aarch64__ -@@ -72,11 +83,13 @@ - (unsigned) bogus_size, (unsigned) bogus_flags, errstr); - - sys_sched_getattr(0, (unsigned long) efault, SCHED_ATTR_MIN_SIZE, 0); -+ pidns_print_leader(); - printf("sched_getattr(0, %p, %u, 0) = %s\n", - efault, (unsigned) SCHED_ATTR_MIN_SIZE, errstr); - - if (sys_sched_getattr(0, (unsigned long) attr, SCHED_ATTR_MIN_SIZE, 0)) - perror_msg_and_skip("sched_getattr"); -+ pidns_print_leader(); - printf("sched_getattr(0, {size=%u, sched_policy=", attr->size); - printxval(schedulers, attr->sched_policy, NULL); - printf(", sched_flags=%s, sched_nice=%d, sched_priority=%u" -@@ -91,11 +104,13 @@ - (unsigned) SCHED_ATTR_MIN_SIZE); - - sys_sched_getattr(0, (unsigned long) efault, sizeof(*attr), 0); -+ pidns_print_leader(); - printf("sched_getattr(0, %p, %u, 0) = %s\n", - efault, (unsigned) sizeof(*attr), errstr); - - if (sys_sched_getattr(0, (unsigned long) attr, sizeof(*attr), 0)) - perror_msg_and_skip("sched_getattr"); -+ pidns_print_leader(); - printf("sched_getattr(0, {size=%u, sched_policy=", attr->size); - printxval(schedulers, attr->sched_policy, NULL); - printf(", sched_flags=%s, sched_nice=%d, sched_priority=%u" -@@ -121,11 +136,13 @@ - F8ILL_KULONG_MASK | sizeof(*attr), F8ILL_KULONG_MASK); - # if defined __arm64__ || defined __aarch64__ - if (rc) { -+ pidns_print_leader(); - printf("sched_getattr(0, %p, 0xffffffff<<32|%u, 0) = %s\n", - attr, (unsigned) sizeof(*attr), errstr); - } else - # endif - { -+ pidns_print_leader(); - printf("sched_getattr(0, {size=%u, sched_policy=", attr->size); - printxval(schedulers, attr->sched_policy, NULL); - printf(", sched_flags=%s, sched_nice=%d, sched_priority=%u" -@@ -146,13 +163,16 @@ - } - - sys_sched_setattr(bogus_pid, 0, 0); -+ pidns_print_leader(); - printf("sched_setattr(%d, NULL, 0) = %s\n", (int) bogus_pid, errstr); - - attr->sched_flags |= 1; - -- if (sys_sched_setattr(0, (unsigned long) attr, 0)) -+ if (sys_sched_setattr(pid, (unsigned long) attr, 0)) - perror_msg_and_skip("sched_setattr"); -- printf("sched_setattr(0, {size=%u, sched_policy=", attr->size); -+ pidns_print_leader(); -+ printf("sched_setattr(%d%s, {size=%u, sched_policy=", -+ pid, pid_str, attr->size); - printxval(schedulers, attr->sched_policy, NULL); - printf(", sched_flags=%s, sched_nice=%d, sched_priority=%u" - ", sched_runtime=%" PRIu64 ", sched_deadline=%" PRIu64 -@@ -172,6 +192,7 @@ - - sys_sched_setattr(F8ILL_KULONG_MASK, (unsigned long) attr, - F8ILL_KULONG_MASK); -+ pidns_print_leader(); - printf("sched_setattr(0, {size=%u, sched_policy=", attr->size); - printxval(schedulers, attr->sched_policy, NULL); - printf(", sched_flags=%s, sched_nice=%d, sched_priority=%u" -@@ -193,11 +214,13 @@ - *psize = attr->size; - - sys_sched_setattr(0, (unsigned long) psize, 0); -+ pidns_print_leader(); - printf("sched_setattr(0, %p, 0) = %s\n", psize, errstr); - - attr->size = 0; - - sys_sched_setattr(0, (unsigned long) attr, 0); -+ pidns_print_leader(); - printf("sched_setattr(0, {size=%u, sched_policy=", attr->size); - printxval(schedulers, attr->sched_policy, NULL); - printf(", sched_flags=%s, sched_nice=%d, sched_priority=%u" -@@ -213,12 +236,14 @@ - attr->size = 1; - - sys_sched_setattr(0, (unsigned long) attr, 0); -+ pidns_print_leader(); - printf("sched_setattr(0, {size=%u} => {size=%u}, 0) = %s\n", - 1, attr->size, errstr); - - attr->size = SCHED_ATTR_MIN_SIZE - 1; - - sys_sched_setattr(0, (unsigned long) attr, 0); -+ pidns_print_leader(); - printf("sched_setattr(0, {size=%u} => {size=%u}, 0) = %s\n", - SCHED_ATTR_MIN_SIZE - 1, attr->size, errstr); - -@@ -232,6 +257,7 @@ - attr->sched_period = 0xded1ca7edda7aca7ULL; - - sys_sched_setattr(bogus_pid, (unsigned long) attr, bogus_flags); -+ pidns_print_leader(); - printf("sched_setattr(%d, {size=%u, sched_policy=%#x /* SCHED_??? */, " - "sched_flags=%#" PRIx64 " /* SCHED_FLAG_??? */, " - "sched_nice=%d, sched_priority=%u, sched_runtime=%" PRIu64 ", " -@@ -274,6 +300,7 @@ - attr->sched_period = 0xded1ca7edda7aca7ULL; - - sys_sched_setattr(bogus_pid, (unsigned long) attr, bogus_flags); -+ pidns_print_leader(); - printf("sched_setattr(%d, {size=%u, sched_policy=%#x /* SCHED_??? */, " - "sched_flags=SCHED_FLAG_RESET_ON_FORK|SCHED_FLAG_RECLAIM|" - "SCHED_FLAG_DL_OVERRUN|0x80, " -@@ -296,11 +323,13 @@ - const kernel_ulong_t ill = f8ill_ptr_to_kulong(attr); - - sys_sched_getattr(0, ill, sizeof(*attr), 0); -+ pidns_print_leader(); - printf("sched_getattr(0, %#llx, %u, 0) = %s\n", - (unsigned long long) ill, (unsigned) sizeof(*attr), - errstr); - - sys_sched_setattr(0, ill, 0); -+ pidns_print_leader(); - printf("sched_setattr(0, %#llx, 0) = %s\n", - (unsigned long long) ill, errstr); - } -@@ -310,6 +339,7 @@ - attr->sched_flags = 0x8fULL; - - sys_sched_setattr(bogus_pid, (unsigned long) attr, bogus_flags); -+ pidns_print_leader(); - printf("sched_setattr(%d, {size=%u, " - "sched_flags=SCHED_FLAG_RESET_ON_FORK|SCHED_FLAG_RECLAIM|" - "SCHED_FLAG_DL_OVERRUN|SCHED_FLAG_KEEP_POLICY|0x80, " -@@ -329,11 +359,13 @@ - const kernel_ulong_t ill = f8ill_ptr_to_kulong(attr); - - sys_sched_getattr(0, ill, sizeof(*attr), 0); -+ pidns_print_leader(); - printf("sched_getattr(0, %#llx, %u, 0) = %s\n", - (unsigned long long) ill, (unsigned) sizeof(*attr), - errstr); - - sys_sched_setattr(0, ill, 0); -+ pidns_print_leader(); - printf("sched_setattr(0, %#llx, 0) = %s\n", - (unsigned long long) ill, errstr); - } -@@ -342,6 +374,7 @@ - attr->sched_flags = 0xe7ULL; - - sys_sched_setattr(bogus_pid, (unsigned long) attr, bogus_flags); -+ pidns_print_leader(); - printf("sched_setattr(%d, {size=%u, sched_policy=%#x /* SCHED_??? */, " - "sched_flags=SCHED_FLAG_RESET_ON_FORK|SCHED_FLAG_RECLAIM|" - "SCHED_FLAG_DL_OVERRUN|SCHED_FLAG_UTIL_CLAMP_MIN" -@@ -365,11 +398,13 @@ - const kernel_ulong_t ill = f8ill_ptr_to_kulong(attr); - - sys_sched_getattr(0, ill, sizeof(*attr), 0); -+ pidns_print_leader(); - printf("sched_getattr(0, %#llx, %u, 0) = %s\n", - (unsigned long long) ill, (unsigned) sizeof(*attr), - errstr); - - sys_sched_setattr(0, ill, 0); -+ pidns_print_leader(); - printf("sched_setattr(0, %#llx, 0) = %s\n", - (unsigned long long) ill, errstr); - } -@@ -377,6 +412,7 @@ - attr->sched_flags = 0xcaffee90LL; - - sys_sched_setattr(bogus_pid, (unsigned long) attr, bogus_flags); -+ pidns_print_leader(); - printf("sched_setattr(%d, {size=%u, sched_flags=SCHED_FLAG_KEEP_PARAMS" - "|0xcaffee80, sched_util_min=%u, sched_util_max=%u}, %u) = %s\n", - (int) bogus_pid, -@@ -389,15 +425,18 @@ - const kernel_ulong_t ill = f8ill_ptr_to_kulong(attr); - - sys_sched_getattr(0, ill, sizeof(*attr), 0); -+ pidns_print_leader(); - printf("sched_getattr(0, %#llx, %u, 0) = %s\n", - (unsigned long long) ill, (unsigned) sizeof(*attr), - errstr); - - sys_sched_setattr(0, ill, 0); -+ pidns_print_leader(); - printf("sched_setattr(0, %#llx, 0) = %s\n", - (unsigned long long) ill, errstr); - } - -+ pidns_print_leader(); - puts("+++ exited with 0 +++"); - return 0; - } -Index: strace-5.7/tests/sched_xetparam--pidns-translation.c -=================================================================== ---- /dev/null 1970-01-01 00:00:00.000000000 +0000 -+++ strace-5.7/tests/sched_xetparam--pidns-translation.c 2020-09-09 19:52:38.885673624 +0200 -@@ -0,0 +1,2 @@ -+#define PIDNS_TRANSLATION -+#include "sched_xetparam.c" -Index: strace-5.7/tests/sched_xetparam.c -=================================================================== ---- strace-5.7.orig/tests/sched_xetparam.c 2020-09-09 19:52:30.603668687 +0200 -+++ strace-5.7/tests/sched_xetparam.c 2020-09-09 19:52:38.885673624 +0200 -@@ -7,6 +7,7 @@ - - #include "tests.h" - #include "scno.h" -+# include "pidns.h" - - #if defined __NR_sched_getparam && defined __NR_sched_setparam - -@@ -17,18 +18,27 @@ - int - main(void) - { -+ PIDNS_TEST_INIT; -+ - struct sched_param *const param = - tail_alloc(sizeof(struct sched_param)); - -- long rc = syscall(__NR_sched_getparam, 0, param); -- printf("sched_getparam(0, [%d]) = %ld\n", -- param->sched_priority, rc); -+ const int pid = getpid(); -+ const char *pid_str = pidns_pid2str(PT_TGID); -+ -+ long rc = syscall(__NR_sched_getparam, pid, param); -+ pidns_print_leader(); -+ printf("sched_getparam(%d%s, [%d]) = %ld\n", -+ pid, pid_str, param->sched_priority, rc); - - param->sched_priority = -1; -- rc = syscall(__NR_sched_setparam, 0, param); -- printf("sched_setparam(0, [%d]) = %ld %s (%m)\n", -+ rc = syscall(__NR_sched_setparam, pid, param); -+ pidns_print_leader(); -+ printf("sched_setparam(%d%s, [%d]) = %ld %s (%m)\n", -+ pid, pid_str, - param->sched_priority, rc, errno2name()); - -+ pidns_print_leader(); - puts("+++ exited with 0 +++"); - return 0; - } -Index: strace-5.7/tests/sched_xetscheduler--pidns-translation.c -=================================================================== ---- /dev/null 1970-01-01 00:00:00.000000000 +0000 -+++ strace-5.7/tests/sched_xetscheduler--pidns-translation.c 2020-09-09 19:52:38.885673624 +0200 -@@ -0,0 +1,2 @@ -+#define PIDNS_TRANSLATION -+#include "sched_xetscheduler.c" -Index: strace-5.7/tests/sched_xetscheduler.c -=================================================================== ---- strace-5.7.orig/tests/sched_xetscheduler.c 2020-09-09 19:52:30.603668687 +0200 -+++ strace-5.7/tests/sched_xetscheduler.c 2020-09-09 19:52:38.886673624 +0200 -@@ -7,6 +7,7 @@ - - #include "tests.h" - #include "scno.h" -+#include "pidns.h" - - #if defined __NR_sched_getscheduler && defined __NR_sched_setscheduler - -@@ -17,8 +18,13 @@ - int - main(void) - { -+ PIDNS_TEST_INIT; -+ - TAIL_ALLOC_OBJECT_CONST_PTR(struct sched_param, param); -- long rc = syscall(__NR_sched_getscheduler, 0); -+ const int pid = getpid(); -+ const char *pid_str = pidns_pid2str(PT_TGID); -+ -+ long rc = syscall(__NR_sched_getscheduler, pid); - const char *scheduler; - switch (rc) { - case SCHED_FIFO: -@@ -50,33 +56,43 @@ - default: - scheduler = "SCHED_OTHER"; - } -- printf("sched_getscheduler(0) = %ld (%s)\n", -- rc, scheduler); -+ pidns_print_leader(); -+ printf("sched_getscheduler(%d%s) = %ld (%s)\n", -+ pid, pid_str, rc, scheduler); - - rc = syscall(__NR_sched_getscheduler, -1); -+ pidns_print_leader(); - printf("sched_getscheduler(-1) = %s\n", sprintrc(rc)); - - param->sched_priority = -1; - -- rc = syscall(__NR_sched_setscheduler, 0, SCHED_FIFO, NULL); -- printf("sched_setscheduler(0, SCHED_FIFO, NULL) = %s\n", sprintrc(rc)); -- -- rc = syscall(__NR_sched_setscheduler, 0, SCHED_FIFO, param + 1); -- printf("sched_setscheduler(0, SCHED_FIFO, %p) = %s\n", param + 1, -- sprintrc(rc)); -- -- rc = syscall(__NR_sched_setscheduler, 0, 0xfaceda7a, param); -- printf("sched_setscheduler(0, %#x /* SCHED_??? */, [%d]) = %s\n", -- 0xfaceda7a, param->sched_priority, sprintrc(rc)); -+ rc = syscall(__NR_sched_setscheduler, pid, SCHED_FIFO, NULL); -+ pidns_print_leader(); -+ printf("sched_setscheduler(%d%s, SCHED_FIFO, NULL) = %s\n", -+ pid, pid_str, sprintrc(rc)); -+ -+ rc = syscall(__NR_sched_setscheduler, pid, SCHED_FIFO, param + 1); -+ pidns_print_leader(); -+ printf("sched_setscheduler(%d%s, SCHED_FIFO, %p) = %s\n", -+ pid, pid_str, param + 1, sprintrc(rc)); -+ -+ rc = syscall(__NR_sched_setscheduler, pid, 0xfaceda7a, param); -+ pidns_print_leader(); -+ printf("sched_setscheduler(%d%s, %#x /* SCHED_??? */, [%d]) = %s\n", -+ pid, pid_str, 0xfaceda7a, -+ param->sched_priority, sprintrc(rc)); - - rc = syscall(__NR_sched_setscheduler, -1, SCHED_FIFO, param); -+ pidns_print_leader(); - printf("sched_setscheduler(-1, SCHED_FIFO, [%d]) = %s\n", - param->sched_priority, sprintrc(rc)); - -- rc = syscall(__NR_sched_setscheduler, 0, SCHED_FIFO, param); -- printf("sched_setscheduler(0, SCHED_FIFO, [%d]) = %s\n", -- param->sched_priority, sprintrc(rc)); -+ rc = syscall(__NR_sched_setscheduler, pid, SCHED_FIFO, param); -+ pidns_print_leader(); -+ printf("sched_setscheduler(%d%s, SCHED_FIFO, [%d]) = %s\n", -+ pid, pid_str, param->sched_priority, sprintrc(rc)); - -+ pidns_print_leader(); - puts("+++ exited with 0 +++"); - return 0; - } -Index: strace-5.7/tests/signal_receive--pidns-translation.c -=================================================================== ---- /dev/null 1970-01-01 00:00:00.000000000 +0000 -+++ strace-5.7/tests/signal_receive--pidns-translation.c 2020-09-09 19:52:38.886673624 +0200 -@@ -0,0 +1,2 @@ -+#define PIDNS_TRANSLATION -+#include "signal_receive.c" -Index: strace-5.7/tests/signal_receive.c -=================================================================== ---- strace-5.7.orig/tests/signal_receive.c 2020-09-09 19:52:30.604668688 +0200 -+++ strace-5.7/tests/signal_receive.c 2020-09-09 19:52:38.886673624 +0200 -@@ -8,6 +8,7 @@ - */ - - #include "tests.h" -+#include "pidns.h" - #include - #include - #include -@@ -26,10 +27,13 @@ - int - main(void) - { -+ PIDNS_TEST_INIT; -+ - static const char prefix[] = "KERNEL BUG"; - int printed = 0; - - const int pid = getpid(); -+ const char *pid_str = pidns_pid2str(PT_TGID); - const int uid = geteuid(); - - for (int sig = 1; sig <= 31; ++sig) { -@@ -73,10 +77,13 @@ - const int e_pid = s_pid; - const int e_uid = s_uid; - #endif -- printf("kill(%d, %s) = 0\n", pid, signal2name(sig)); -- printf("--- %s {si_signo=%s, si_code=SI_USER, si_pid=%d" -+ pidns_print_leader(); -+ printf("kill(%d%s, %s) = 0\n", pid, pid_str, signal2name(sig)); -+ pidns_print_leader(); -+ printf("--- %s {si_signo=%s, si_code=SI_USER, si_pid=%d%s" - ", si_uid=%d} ---\n", -- signal2name(sig), signal2name(e_sig), e_pid, e_uid); -+ signal2name(sig), signal2name(e_sig), -+ e_pid, pid_str, e_uid); - - if (s_code || sig != s_sig || pid != s_pid || uid != s_uid) { - /* -@@ -91,11 +98,11 @@ - } - fprintf(stderr, - "%s: expected: si_signo=%d, si_code=%d" -- ", si_pid=%d, si_uid=%d\n" -+ ", si_pid=%d%s, si_uid=%d\n" - "%s: received: si_signo=%d, si_code=%d" -- ", si_pid=%d, si_uid=%d\n", -- prefix, sig, SI_USER, pid, uid, -- prefix, sig, s_code, s_pid, s_uid); -+ ", si_pid=%d%s, si_uid=%d\n", -+ prefix, sig, SI_USER, pid, pid_str, uid, -+ prefix, sig, s_code, s_pid, pid_str, s_uid); - } - } - -@@ -104,6 +111,7 @@ - "*** PLEASE FIX THE KERNEL ***\n", prefix); - } - -+ pidns_print_leader(); - puts("+++ exited with 0 +++"); - return 0; - } -Index: strace-5.7/tests/so_peercred--pidns-translation.c -=================================================================== ---- /dev/null 1970-01-01 00:00:00.000000000 +0000 -+++ strace-5.7/tests/so_peercred--pidns-translation.c 2020-09-09 19:52:38.886673624 +0200 -@@ -0,0 +1,2 @@ -+#define PIDNS_TRANSLATION -+#include "so_peercred.c" -Index: strace-5.7/tests/so_peercred.c -=================================================================== ---- strace-5.7.orig/tests/so_peercred.c 2020-09-09 19:52:30.604668688 +0200 -+++ strace-5.7/tests/so_peercred.c 2020-09-09 19:52:38.886673624 +0200 -@@ -9,6 +9,7 @@ - */ - - #include "tests.h" -+#include "pidns.h" - - #include - #include -@@ -53,6 +54,8 @@ - int - main(void) - { -+ PIDNS_TEST_INIT; -+ - TAIL_ALLOC_OBJECT_CONST_PTR(struct ucred, peercred); - TAIL_ALLOC_OBJECT_CONST_PTR(socklen_t, len); - -@@ -75,6 +78,8 @@ - struct ucred *const gid_truncated = - tail_alloc(sizeof_gid_truncated); - -+ const char *pid_str = pidns_pid2str(PT_TGID); -+ - int sv[2]; - if (socketpair(AF_UNIX, SOCK_STREAM, 0, sv)) - perror_msg_and_skip("socketpair AF_UNIX SOCK_STREAM"); -@@ -82,8 +87,10 @@ - /* classic getsockopt */ - *len = sizeof(*peercred); - get_peercred(sv[0], peercred, len); -+ pidns_print_leader(); - printf("getsockopt(%d, %s", sv[0], so_str()); - PRINT_FIELD_D(", {", *peercred, pid); -+ printf("%s", pid_str); - PRINT_FIELD_UID(", ", *peercred, uid); - PRINT_FIELD_UID(", ", *peercred, gid); - printf("}, [%d]) = %s\n", *len, errstr); -@@ -91,14 +98,17 @@ - /* getsockopt with zero optlen */ - *len = 0; - get_peercred(sv[0], peercred, len); -+ pidns_print_leader(); - printf("getsockopt(%d, %s, %p, [0]) = %s\n", - sv[0], so_str(), peercred, errstr); - - /* getsockopt with optlen larger than necessary - shortened */ - *len = sizeof(*peercred) + 1; - get_peercred(sv[0], peercred, len); -+ pidns_print_leader(); - printf("getsockopt(%d, %s", sv[0], so_str()); - PRINT_FIELD_D(", {", *peercred, pid); -+ printf("%s", pid_str); - PRINT_FIELD_UID(", ", *peercred, uid); - PRINT_FIELD_UID(", ", *peercred, gid); - printf("}, [%u->%d]) = %s\n", -@@ -110,6 +120,7 @@ - */ - *len = sizeof_pid_truncated; - get_peercred(sv[0], pid_truncated, len); -+ pidns_print_leader(); - printf("getsockopt(%d, %s, {pid=", sv[0], so_str()); - print_quoted_hex(pid_truncated, *len); - printf("}, [%d]) = %s\n", *len, errstr); -@@ -120,8 +131,10 @@ - */ - *len = sizeof_pid; - get_peercred(sv[0], pid, len); -+ pidns_print_leader(); - printf("getsockopt(%d, %s", sv[0], so_str()); - PRINT_FIELD_D(", {", *pid, pid); -+ printf("%s", pid_str); - printf("}, [%d]) = %s\n", *len, errstr); - - /* -@@ -136,8 +149,10 @@ - * to struct ucred.pid field. - */ - memcpy(uid, uid_truncated, sizeof_uid_truncated); -+ pidns_print_leader(); - printf("getsockopt(%d, %s", sv[0], so_str()); - PRINT_FIELD_D(", {", *uid, pid); -+ printf("%s", pid_str); - printf(", uid="); - print_quoted_hex(&uid->uid, sizeof_uid_truncated - - offsetof(struct ucred, uid)); -@@ -149,8 +164,10 @@ - */ - *len = sizeof_uid; - get_peercred(sv[0], uid, len); -+ pidns_print_leader(); - printf("getsockopt(%d, %s", sv[0], so_str()); - PRINT_FIELD_D(", {", *uid, pid); -+ printf("%s", pid_str); - PRINT_FIELD_UID(", ", *uid, uid); - printf("}, [%d]) = %s\n", *len, errstr); - -@@ -166,8 +183,10 @@ - * to struct ucred.pid and struct ucred.uid fields. - */ - memcpy(peercred, gid_truncated, sizeof_gid_truncated); -+ pidns_print_leader(); - printf("getsockopt(%d, %s", sv[0], so_str()); - PRINT_FIELD_D(", {", *peercred, pid); -+ printf("%s", pid_str); - PRINT_FIELD_UID(", ", *peercred, uid); - printf(", gid="); - print_quoted_hex(&peercred->gid, sizeof_gid_truncated - -@@ -177,14 +196,17 @@ - /* getsockopt optval EFAULT */ - *len = sizeof(*peercred); - get_peercred(sv[0], &peercred->uid, len); -+ pidns_print_leader(); - printf("getsockopt(%d, %s, %p, [%d]) = %s\n", - sv[0], so_str(), &peercred->uid, *len, errstr); - - /* getsockopt optlen EFAULT */ - get_peercred(sv[0], peercred, len + 1); -+ pidns_print_leader(); - printf("getsockopt(%d, %s, %p, %p) = %s\n", - sv[0], so_str(), peercred, len + 1, errstr); - -+ pidns_print_leader(); - puts("+++ exited with 0 +++"); - return 0; - } -Index: strace-5.7/tests/tgkill--pidns-translation.c -=================================================================== ---- /dev/null 1970-01-01 00:00:00.000000000 +0000 -+++ strace-5.7/tests/tgkill--pidns-translation.c 2020-09-09 19:52:38.887673625 +0200 -@@ -0,0 +1,2 @@ -+#define PIDNS_TRANSLATION -+#include "tgkill.c" -Index: strace-5.7/tests/tgkill.c -=================================================================== ---- strace-5.7.orig/tests/tgkill.c 2020-09-09 19:52:30.604668688 +0200 -+++ strace-5.7/tests/tgkill.c 2020-09-09 19:52:38.887673625 +0200 -@@ -9,6 +9,7 @@ - - #include "tests.h" - #include "scno.h" -+#include "pidns.h" - - #ifdef __NR_tgkill - -@@ -36,28 +37,46 @@ - int - main(void) - { -+ PIDNS_TEST_INIT; -+ - const int pid = getpid(); -+ const char *pid_str = pidns_pid2str(PT_TGID); -+ const int tid = syscall(__NR_gettid); -+ const char *tid_str = pidns_pid2str(PT_TID); - const int bad_pid = -1; - const int bad_sig = 0xface; - -- k_tgkill(pid, pid, 0); -- printf("tgkill(%d, %d, 0) = %s\n", pid, pid, errstr); -+ k_tgkill(pid, tid, 0); -+ pidns_print_leader(); -+ printf("tgkill(%d%s, %d%s, 0) = %s\n", -+ pid, pid_str, tid, tid_str, errstr); - - k_tgkill(pid, bad_pid, 0); -- printf("tgkill(%d, %d, 0) = %s\n", pid, bad_pid, errstr); -- -- k_tgkill(bad_pid, pid, 0); -- printf("tgkill(%d, %d, 0) = %s\n", bad_pid, pid, errstr); -- -- k_tgkill(pid, pid, SIGCONT); -- printf("tgkill(%d, %d, SIGCONT) = %s\n", pid, pid, errstr); -- -- k_tgkill(pid, pid, bad_sig); -- printf("tgkill(%d, %d, %d) = %s\n", pid, pid, bad_sig, errstr); -- -- k_tgkill(pid, pid, -bad_sig); -- printf("tgkill(%d, %d, %d) = %s\n", pid, pid, -bad_sig, errstr); -+ pidns_print_leader(); -+ printf("tgkill(%d%s, %d, 0) = %s\n", -+ pid, pid_str, bad_pid, errstr); -+ -+ k_tgkill(bad_pid, tid, 0); -+ pidns_print_leader(); -+ printf("tgkill(%d, %d%s, 0) = %s\n", -+ bad_pid, tid, tid_str, errstr); -+ -+ k_tgkill(pid, tid, SIGCONT); -+ pidns_print_leader(); -+ printf("tgkill(%d%s, %d%s, SIGCONT) = %s\n", -+ pid, pid_str, tid, tid_str, errstr); -+ -+ k_tgkill(pid, tid, bad_sig); -+ pidns_print_leader(); -+ printf("tgkill(%d%s, %d%s, %d) = %s\n", -+ pid, pid_str, tid, tid_str, bad_sig, errstr); -+ -+ k_tgkill(pid, tid, -bad_sig); -+ pidns_print_leader(); -+ printf("tgkill(%d%s, %d%s, %d) = %s\n", -+ pid, pid_str, tid, tid_str, -bad_sig, errstr); - -+ pidns_print_leader(); - puts("+++ exited with 0 +++"); - return 0; - } -Index: strace-5.7/tests/tkill--pidns-translation.c -=================================================================== ---- /dev/null 1970-01-01 00:00:00.000000000 +0000 -+++ strace-5.7/tests/tkill--pidns-translation.c 2020-09-09 19:52:38.887673625 +0200 -@@ -0,0 +1,2 @@ -+#define PIDNS_TRANSLATION -+#include "tkill.c" -Index: strace-5.7/tests/tkill.c -=================================================================== ---- strace-5.7.orig/tests/tkill.c 2020-09-09 19:52:30.605668688 +0200 -+++ strace-5.7/tests/tkill.c 2020-09-09 19:52:38.887673625 +0200 -@@ -9,6 +9,7 @@ - - #include "tests.h" - #include "scno.h" -+#include "pidns.h" - - #ifdef __NR_tkill - -@@ -33,22 +34,30 @@ - int - main(void) - { -- const int pid = getpid(); -+ PIDNS_TEST_INIT; -+ -+ const int tid = syscall(__NR_gettid); -+ const char *tid_str = pidns_pid2str(PT_TID); - const int bad_pid = -1; - const int bad_sig = 0xface; - -- k_tkill(pid, 0); -- printf("tkill(%d, 0) = %s\n", pid, errstr); -- -- k_tkill(pid, SIGCONT); -- printf("tkill(%d, SIGCONT) = %s\n", pid, errstr); -+ k_tkill(tid, 0); -+ pidns_print_leader(); -+ printf("tkill(%d%s, 0) = %s\n", tid, tid_str, errstr); -+ -+ k_tkill(tid, SIGCONT); -+ pidns_print_leader(); -+ printf("tkill(%d%s, SIGCONT) = %s\n", tid, tid_str, errstr); - - k_tkill(bad_pid, bad_sig); -+ pidns_print_leader(); - printf("tkill(%d, %d) = %s\n", bad_pid, bad_sig, errstr); - - k_tkill(bad_pid, -bad_sig); -+ pidns_print_leader(); - printf("tkill(%d, %d) = %s\n", bad_pid, -bad_sig, errstr); - -+ pidns_print_leader(); - puts("+++ exited with 0 +++"); - return 0; - } -Index: strace-5.7/tests/trie_for_tests.c -=================================================================== ---- /dev/null 1970-01-01 00:00:00.000000000 +0000 -+++ strace-5.7/tests/trie_for_tests.c 2020-09-09 19:52:38.887673625 +0200 -@@ -0,0 +1 @@ -+#include "trie.c" -Index: strace-5.7/tests/trie_test.c -=================================================================== ---- /dev/null 1970-01-01 00:00:00.000000000 +0000 -+++ strace-5.7/tests/trie_test.c 2020-09-09 19:52:38.888673625 +0200 -@@ -0,0 +1,121 @@ -+/* -+ * Copyright (c) 2017-2019 The strace developers. -+ * All rights reserved. -+ * -+ * SPDX-License-Identifier: GPL-2.0-or-later -+ */ -+ -+#include "tests.h" -+#include "trie.h" -+ -+#include -+#include -+ -+static void -+assert_equals(const char *msg, uint64_t expected, uint64_t actual) { -+ if (actual != expected) -+ error_msg_and_fail("%s: expected: %" PRIu64 -+ ", actual: %" PRIu64, msg, expected, actual); -+} -+ -+static void -+iterate_fn(void *data, uint64_t key, uint64_t value) -+{ -+ uint64_t expected = key < 256 && key % 10 == 0 ? key + 42 : -1ULL; -+ assert_equals("iterate_fn", expected, value); -+ -+ int *count = (int *) data; -+ if (value != -1ULL) -+ (*count)++; -+} -+ -+static void -+test_trie_iterate_fn(void) -+{ -+ struct trie *t = trie_create(8, 6, 3, 3, -1); -+ for (int i = 0; i < 26; i++) -+ trie_set(t, i * 10, i * 10 + 42); -+ -+ static const struct { -+ uint64_t start; -+ uint64_t end; -+ int expected_count; -+ } iterate_params[] = { -+ {0, 256, 26}, -+ {0, UINT64_MAX, 26}, -+ {20, 90, 8}, -+ {99, 999, 16}, -+ {10000, 100000, 0}, -+ {200, 100, 0}, -+ }; -+ -+ for (size_t i = 0; i < ARRAY_SIZE(iterate_params); i++) { -+ int count = 0; -+ trie_iterate_keys(t, iterate_params[i].start, iterate_params[i].end, iterate_fn, &count); -+ assert_equals("iteration count", iterate_params[i].expected_count, count); -+ } -+} -+ -+struct key_value_pair { -+ uint64_t key, value; -+}; -+ -+static void -+test_trie_get(void) -+{ -+ static const struct { -+ uint8_t key_size; -+ uint8_t item_size_lg; -+ uint8_t node_key_bits; -+ uint8_t data_block_key_bits; -+ uint64_t empty_value; -+ -+ struct key_value_pair set_values[3], get_values[3]; -+ } params[] = { -+ {64, 6, 10, 10, 0, -+ {{300, 1}, {0xfacefeed, 0xabcdef123456}, {-1ULL, -1ULL}}, -+ {{301, 0}, {0xfacefeed, 0xabcdef123456}, {-1ULL, -1ULL}}}, -+ {8, 2, 4, 4, 10, -+ {{0xab, 0xcd}, {0xface, 2}, {0, 3}}, -+ {{0xab, 0xd}, {0xface, 10}, {0, 3}}}, -+ {30, 0, 6, 3, -1, -+ {{0xaaaa, 127}, {0xface, 0}, {0, 0}}, -+ {{0xaaaa, 1}, {0xface, 0}, {1, 1}}}, -+ {16, 4, 5, 11, 0xffffff, -+ {{0xabcdef, 42}, {0xabcd, 42}, {0xffff, 0}}, -+ {{0xabcdef, 0xffff}, {0xabcd, 42}, {0xffff, 0}}}, -+ {41, 5, 1, 1, -1, -+ {{0xabcdef01, 0x22222222}, {-1, 0x33333333}, {10, 10}}, -+ {{0xabcdef01, 0x22222222}, {-1, 0xffffffff}, {10, 10}}}, -+ }; -+ -+ for (size_t i = 0; i < ARRAY_SIZE(params); i++) { -+ struct trie *t = trie_create(params[i].key_size, -+ params[i].item_size_lg, -+ params[i].node_key_bits, -+ params[i].data_block_key_bits, -+ params[i].empty_value); -+ -+ if (!t) -+ error_msg_and_fail("trie creation failed"); -+ -+ for (size_t j = 0; j < ARRAY_SIZE(params[i].set_values); j++) { -+ struct key_value_pair kv = params[i].set_values[j]; -+ trie_set(t, kv.key, kv.value); -+ } -+ for (size_t j = 0; j < ARRAY_SIZE(params[i].get_values); j++) { -+ struct key_value_pair kv = params[i].get_values[j]; -+ assert_equals("trie_get", kv.value, trie_get(t, kv.key)); -+ } -+ -+ trie_free(t); -+ } -+} -+ -+int -+main(void) -+{ -+ test_trie_get(); -+ test_trie_iterate_fn(); -+ return 0; -+} -Index: strace-5.7/tests/xet_robust_list--pidns-translation.c -=================================================================== ---- /dev/null 1970-01-01 00:00:00.000000000 +0000 -+++ strace-5.7/tests/xet_robust_list--pidns-translation.c 2020-09-09 19:52:38.888673625 +0200 -@@ -0,0 +1,2 @@ -+#define PIDNS_TRANSLATION -+#include "xet_robust_list.c" -Index: strace-5.7/tests/xet_robust_list.c -=================================================================== ---- strace-5.7.orig/tests/xet_robust_list.c 2020-09-09 19:52:30.605668688 +0200 -+++ strace-5.7/tests/xet_robust_list.c 2020-09-09 19:52:38.888673625 +0200 -@@ -8,6 +8,7 @@ - - #include "tests.h" - #include "scno.h" -+#include "pidns.h" - - #if defined __NR_get_robust_list && defined __NR_set_robust_list - -@@ -30,27 +31,36 @@ - int - main(void) - { -+ PIDNS_TEST_INIT; -+ - const pid_t pid = getpid(); -+ const char *pid_str = pidns_pid2str(PT_TGID); - const long long_pid = (unsigned long) (0xdeadbeef00000000LL | pid); - TAIL_ALLOC_OBJECT_CONST_PTR(void *, p_head); - TAIL_ALLOC_OBJECT_CONST_PTR(size_t, p_len); - - if (syscall(__NR_get_robust_list, long_pid, p_head, p_len)) - perror_msg_and_skip("get_robust_list"); -- printf("get_robust_list(%d, [%s], [%lu]) = 0\n", -- (int) pid, sprintaddr(*p_head), (unsigned long) *p_len); -+ pidns_print_leader(); -+ printf("get_robust_list(%d%s, [%s], [%lu]) = 0\n", -+ pid, pid_str, sprintaddr(*p_head), -+ (unsigned long) *p_len); - - void *head = tail_alloc(*p_len); - if (syscall(__NR_set_robust_list, head, *p_len)) - perror_msg_and_skip("set_robust_list"); -+ pidns_print_leader(); - printf("set_robust_list(%p, %lu) = 0\n", - head, (unsigned long) *p_len); - - if (syscall(__NR_get_robust_list, long_pid, p_head, p_len)) - perror_msg_and_skip("get_robust_list"); -- printf("get_robust_list(%d, [%s], [%lu]) = 0\n", -- (int) pid, sprintaddr(*p_head), (unsigned long) *p_len); -+ pidns_print_leader(); -+ printf("get_robust_list(%d%s, [%s], [%lu]) = 0\n", -+ pid, pid_str, sprintaddr(*p_head), -+ (unsigned long) *p_len); - -+ pidns_print_leader(); - puts("+++ exited with 0 +++"); - return 0; - } -Index: strace-5.7/tests/xetpgid--pidns-translation.c -=================================================================== ---- /dev/null 1970-01-01 00:00:00.000000000 +0000 -+++ strace-5.7/tests/xetpgid--pidns-translation.c 2020-09-09 19:52:38.888673625 +0200 -@@ -0,0 +1,2 @@ -+#define PIDNS_TRANSLATION -+#include "xetpgid.c" -Index: strace-5.7/tests/xetpgid.c -=================================================================== ---- strace-5.7.orig/tests/xetpgid.c 2020-09-09 19:52:30.606668689 +0200 -+++ strace-5.7/tests/xetpgid.c 2020-09-09 19:52:38.888673625 +0200 -@@ -10,6 +10,7 @@ - - #include "tests.h" - #include "scno.h" -+#include "pidns.h" - - #if defined __NR_getpgid && defined __NR_setpgid - -@@ -19,13 +20,21 @@ - int - main(void) - { -- const int pid = getpid(); -- long rc = syscall(__NR_getpgid, F8ILL_KULONG_MASK | pid); -- printf("getpgid(%d) = %ld\n", pid, rc); -+ PIDNS_TEST_INIT; - -- rc = syscall(__NR_setpgid, F8ILL_KULONG_MASK, F8ILL_KULONG_MASK | pid); -- printf("setpgid(0, %d) = %ld\n", pid, rc); -+ const int pid = getpid(); -+ long pgid = syscall(__NR_getpgid, F8ILL_KULONG_MASK | pid); -+ pidns_print_leader(); -+ printf("getpgid(%d%s) = %ld%s\n", pid, pidns_pid2str(PT_TGID), -+ pgid, pidns_pid2str(PT_PGID)); -+ -+ long rc = syscall(__NR_setpgid, F8ILL_KULONG_MASK, -+ F8ILL_KULONG_MASK | pgid); -+ pidns_print_leader(); -+ printf("setpgid(0, %ld%s) = %s\n", pgid, pidns_pid2str(PT_PGID), -+ sprintrc(rc)); - -+ pidns_print_leader(); - puts("+++ exited with 0 +++"); - return 0; - } -Index: strace-5.7/tests/xetpriority--pidns-translation.c -=================================================================== ---- /dev/null 1970-01-01 00:00:00.000000000 +0000 -+++ strace-5.7/tests/xetpriority--pidns-translation.c 2020-09-09 19:52:38.889673626 +0200 -@@ -0,0 +1,2 @@ -+#define PIDNS_TRANSLATION -+#include "xetpriority.c" -Index: strace-5.7/tests/xetpriority.c -=================================================================== ---- strace-5.7.orig/tests/xetpriority.c 2020-09-09 19:52:30.606668689 +0200 -+++ strace-5.7/tests/xetpriority.c 2020-09-09 19:52:38.889673626 +0200 -@@ -7,6 +7,7 @@ - - #include "tests.h" - #include "scno.h" -+#include "pidns.h" - - #if defined __NR_getpriority && defined __NR_setpriority - -@@ -17,15 +18,30 @@ - int - main(void) - { -+ PIDNS_TEST_INIT; -+ - const int pid = getpid(); -+ const int pgid = getpgid(0); -+ - long rc = syscall(__NR_getpriority, PRIO_PROCESS, - F8ILL_KULONG_MASK | pid); -- printf("getpriority(PRIO_PROCESS, %d) = %ld\n", pid, rc); -+ pidns_print_leader(); -+ printf("getpriority(PRIO_PROCESS, %d%s) = %ld\n", -+ pid, pidns_pid2str(PT_TGID), rc); - - rc = syscall(__NR_setpriority, PRIO_PROCESS, - F8ILL_KULONG_MASK | pid, F8ILL_KULONG_MASK); -- printf("setpriority(PRIO_PROCESS, %d, 0) = %s\n", pid, sprintrc(rc)); -+ pidns_print_leader(); -+ printf("setpriority(PRIO_PROCESS, %d%s, 0) = %s\n", -+ pid, pidns_pid2str(PT_TGID), sprintrc(rc)); -+ -+ rc = syscall(__NR_getpriority, PRIO_PGRP, -+ F8ILL_KULONG_MASK | pgid); -+ pidns_print_leader(); -+ printf("getpriority(PRIO_PGRP, %d%s) = %ld\n", -+ pgid, pidns_pid2str(PT_PGID), rc); - -+ pidns_print_leader(); - puts("+++ exited with 0 +++"); - return 0; - } -Index: strace-5.7/tests/xmalloc_for_tests.c -=================================================================== ---- /dev/null 1970-01-01 00:00:00.000000000 +0000 -+++ strace-5.7/tests/xmalloc_for_tests.c 2020-09-09 19:52:38.889673626 +0200 -@@ -0,0 +1,2 @@ -+#define error_msg_and_die error_msg_and_fail -+#include "xmalloc.c" -Index: strace-5.7/tests-m32/Makefile.am -=================================================================== ---- strace-5.7.orig/tests-m32/Makefile.am 2020-09-09 19:52:30.607668690 +0200 -+++ strace-5.7/tests-m32/Makefile.am 2020-09-09 19:52:38.889673626 +0200 -@@ -66,6 +66,7 @@ - test_ucopy.h \ - tests.h \ - tprintf.c \ -+ xmalloc_for_tests.c \ - # end of libtests_a_SOURCES - libtests_a_CPPFLAGS = $(AM_CPPFLAGS) -D_FILE_OFFSET_BITS=64 - check_LIBRARIES = libtests.a -@@ -109,17 +110,25 @@ - delay \ - execve-v \ - execveat-v \ -+ fcntl--pidns-translation \ -+ fcntl64--pidns-translation \ - filter_seccomp-flag \ - filter_seccomp-perf \ - filter-unavailable \ - fork-f \ -+ fork--pidns-translation \ - fsync-y \ - get_process_reaper \ -+ getpgrp--pidns-translation \ - getpid \ -+ getpid--pidns-translation \ - getppid \ -+ getsid--pidns-translation \ - gettid \ -+ gettid--pidns-translation \ - inject-nf \ - int_0x80 \ -+ ioctl_block--pidns-translation \ - ioctl_dm-v \ - ioctl_evdev-success \ - ioctl_evdev-success-Xabbrev \ -@@ -150,18 +159,25 @@ - ioctl_v4l2-success-v-Xabbrev \ - ioctl_v4l2-success-v-Xraw \ - ioctl_v4l2-success-v-Xverbose \ -+ ioprio--pidns-translation \ - is_linux_mips_n64 \ -+ kcmp-y--pidns-translation \ - kill_child \ -+ kill--pidns-translation \ - ksysent \ - list_sigaction_signum \ - localtime \ - looping_threads \ -+ migrate_pages--pidns-translation \ - mmsg-silent \ - mmsg_name-v \ -+ move_pages--pidns-translation \ - msg_control-v \ - net-accept-connect \ -+ net-sockaddr--pidns-translation \ - net-tpacket_stats-success \ - nlattr_ifla_xdp-y \ -+ netlink_audit--pidns-translation \ - netlink_inet_diag \ - netlink_netlink_diag \ - netlink_unix_diag \ -@@ -173,14 +189,20 @@ - pc \ - perf_event_open_nonverbose \ - perf_event_open_unabbrev \ -+ pidfd_open--pidns-translation \ -+ pidfd_send_signal--pidns-translation \ -+ pidns-cache \ - poll-P \ - ppoll-P \ - ppoll-v \ -+ prlimit64--pidns-translation \ - prctl-seccomp-filter-v \ - prctl-seccomp-strict \ - prctl-spec-inject \ - print_maxfd \ - print_ppid_tracerpid \ -+ process_vm_readv--pidns-translation \ -+ process_vm_writev--pidns-translation \ - qual_fault \ - qual_inject-error-signal \ - qual_inject-retval \ -@@ -194,7 +216,13 @@ - quotactl-xfs-v \ - redirect-fds \ - restart_syscall \ -+ rt_sigqueueinfo--pidns-translation \ -+ rt_tgsigqueueinfo--pidns-translation \ - run_expect_termsig \ -+ sched_xetaffinity--pidns-translation \ -+ sched_xetattr--pidns-translation \ -+ sched_xetparam--pidns-translation \ -+ sched_xetscheduler--pidns-translation \ - scm_rights \ - seccomp-filter-v \ - seccomp-strict \ -@@ -204,25 +232,33 @@ - set_sigign \ - setpgrp-exec \ - signal_receive \ -+ signal_receive--pidns-translation \ - sleep \ - stack-fcall \ - stack-fcall-attach \ - stack-fcall-mangled \ - status-none-threads \ - status-unfinished-threads \ -+ so_peercred--pidns-translation \ - syslog-success \ -+ tgkill--pidns-translation \ - threads-execve \ - threads-execve--quiet-thread-execve \ - threads-execve-q \ - threads-execve-qq \ - threads-execve-qqq \ -+ tkill--pidns-translation \ - tracer_ppid_pgid_sid \ -+ trie_test \ - unblock_reset_raise \ - unix-pair-send-recv \ - unix-pair-sendto-recvfrom \ - vfork-f \ - wait4-v \ - waitid-v \ -+ xetpgid--pidns-translation \ -+ xetpriority--pidns-translation \ -+ xet_robust_list--pidns-translation \ - zeroargc \ - # end of check_PROGRAMS - -@@ -272,6 +308,11 @@ - stack-fcall-mangled-0.c stack-fcall-mangled-1.c \ - stack-fcall-mangled-2.c stack-fcall-mangled-3.c - -+trie_test_SOURCES = trie_test.c trie_for_tests.c -+trie_test_CPPFLAGS = $(AM_CPPFLAGS) $(CODE_COVERAGE_CPPFLAGS) -+trie_test_CFLAGS = $(AM_CFLAGS) $(CODE_COVERAGE_CFLAGS) -+trie_test_LDADD = $(LDADD) $(CODE_COVERAGE_LIBS) -+ - include gen_tests.am - - if ENABLE_STACKTRACE -@@ -308,6 +349,7 @@ - int_0x80.test \ - inotify_init-y.test \ - ioctl.test \ -+ ioctl_block--pidns-translation.test \ - ioctl_evdev-success.test \ - ipc_msgbuf.test \ - kern_features-fault.test \ -@@ -379,15 +421,19 @@ - filtering_fd-syntax.test \ - filtering_syscall-syntax.test \ - first_exec_failure.test \ -+ fork--pidns-translation.test \ - get_regs.test \ -+ gettid--pidns-translation.test \ - inject-nf.test \ - interactive_block.test \ - kill_child.test \ - localtime.test \ - looping_threads.test \ -+ netlink_audit--pidns-translation.test \ - opipe.test \ - options-syntax.test \ - pc.test \ -+ pidns-cache.test \ - printpath-umovestr-legacy.test \ - printstrn-umoven-legacy.test \ - qual_fault-syntax.test \ -@@ -465,6 +511,7 @@ - filter_seccomp.in \ - filter_seccomp.sh \ - filter-unavailable.expected \ -+ fork--pidns-translation.awk \ - fstatat.c \ - fstatx.c \ - gen_pure_executables.sh \ -Index: strace-5.7/tests-m32/fcntl--pidns-translation.c -=================================================================== ---- /dev/null 1970-01-01 00:00:00.000000000 +0000 -+++ strace-5.7/tests-m32/fcntl--pidns-translation.c 2020-09-09 19:52:38.890673627 +0200 -@@ -0,0 +1,2 @@ -+#define PIDNS_TRANSLATION -+#include "fcntl.c" -Index: strace-5.7/tests-m32/fcntl-common.c -=================================================================== ---- strace-5.7.orig/tests-m32/fcntl-common.c 2020-09-09 19:52:30.607668690 +0200 -+++ strace-5.7/tests-m32/fcntl-common.c 2020-09-09 19:52:38.890673627 +0200 -@@ -13,6 +13,8 @@ - #include - #include - #include "flock.h" -+#include "pidns.h" -+#include "scno.h" - - #define FILE_LEN 4096 - -@@ -48,12 +50,14 @@ - fl->l_len = (TYPEOF_FLOCK_OFF_T) 0xdefaced2cafef00dULL; - - invoke_test_syscall(0, cmd, fl); -+ pidns_print_leader(); - printf("%s(0, %s, {l_type=F_RDLCK, l_whence=SEEK_SET" - ", l_start=%jd, l_len=%jd}) = %s\n", TEST_SYSCALL_STR, name, - (intmax_t) fl->l_start, (intmax_t) fl->l_len, errstr); - - void *const bad_addr = (void *) fl + 1; - invoke_test_syscall(0, cmd, bad_addr); -+ pidns_print_leader(); - printf("%s(0, %s, %p) = %s\n", - TEST_SYSCALL_STR, name, bad_addr, errstr); - } -@@ -72,12 +76,14 @@ - fl->l_len = (TYPEOF_FLOCK_OFF_T) 0xdefaced2cafef00dULL; - - invoke_test_syscall(0, cmd, fl); -+ pidns_print_leader(); - printf("%s(0, %s, {l_type=F_RDLCK, l_whence=SEEK_SET" - ", l_start=%jd, l_len=%jd}) = %s\n", TEST_SYSCALL_STR, name, - (intmax_t) fl->l_start, (intmax_t) fl->l_len, errstr); - - void *const bad_addr = (void *) fl + 1; - invoke_test_syscall(0, cmd, bad_addr); -+ pidns_print_leader(); - printf("%s(0, %s, %p) = %s\n", - TEST_SYSCALL_STR, name, bad_addr, errstr); - } -@@ -94,6 +100,7 @@ - fl->l_len = FILE_LEN; - - long rc = invoke_test_syscall(0, F_SETLK, fl); -+ pidns_print_leader(); - printf("%s(0, F_SETLK, {l_type=F_RDLCK, l_whence=SEEK_SET" - ", l_start=0, l_len=%d}) = %s\n", - TEST_SYSCALL_STR, FILE_LEN, errstr); -@@ -101,11 +108,13 @@ - return; - - invoke_test_syscall(0, F_GETLK, fl); -+ pidns_print_leader(); - printf("%s(0, F_GETLK, {l_type=F_UNLCK, l_whence=SEEK_SET" - ", l_start=0, l_len=%d, l_pid=0}) = 0\n", - TEST_SYSCALL_STR, FILE_LEN); - - invoke_test_syscall(0, F_SETLKW, fl); -+ pidns_print_leader(); - printf("%s(0, F_SETLKW, {l_type=F_UNLCK, l_whence=SEEK_SET" - ", l_start=0, l_len=%d}) = 0\n", - TEST_SYSCALL_STR, FILE_LEN); -@@ -124,6 +133,7 @@ - fl->l_len = FILE_LEN; - - long rc = invoke_test_syscall(0, F_OFD_SETLK, fl); -+ pidns_print_leader(); - printf("%s(0, F_OFD_SETLK, {l_type=F_RDLCK, l_whence=SEEK_SET" - ", l_start=0, l_len=%d}) = %s\n", - TEST_SYSCALL_STR, FILE_LEN, errstr); -@@ -131,11 +141,13 @@ - return; - - invoke_test_syscall(0, F_OFD_GETLK, fl); -+ pidns_print_leader(); - printf("%s(0, F_OFD_GETLK, {l_type=F_UNLCK, l_whence=SEEK_SET" - ", l_start=0, l_len=%d, l_pid=0}) = 0\n", - TEST_SYSCALL_STR, FILE_LEN); - - invoke_test_syscall(0, F_OFD_SETLKW, fl); -+ pidns_print_leader(); - printf("%s(0, F_OFD_SETLKW, {l_type=F_UNLCK, l_whence=SEEK_SET" - ", l_start=0, l_len=%d}) = 0\n", - TEST_SYSCALL_STR, FILE_LEN); -@@ -167,18 +179,21 @@ - static long - test_f_owner_ex_type_pid(const int cmd, const char *const cmd_name, - const int type, const char *const type_name, -- pid_t pid) -+ enum pid_type pid_type, pid_t pid) - { - TAIL_ALLOC_OBJECT_CONST_PTR(struct_kernel_f_owner_ex, fo); - - fo->type = type; - fo->pid = pid; - long rc = invoke_test_syscall(0, cmd, fo); -- printf("%s(0, %s, {type=%s, pid=%d}) = %s\n", -- TEST_SYSCALL_STR, cmd_name, type_name, fo->pid, errstr); -+ pidns_print_leader(); -+ printf("%s(0, %s, {type=%s, pid=%d%s}) = %s\n", -+ TEST_SYSCALL_STR, cmd_name, type_name, -+ fo->pid, pidns_pid2str(pid_type), errstr); - - void *bad_addr = (void *) fo + 1; - invoke_test_syscall(0, cmd, bad_addr); -+ pidns_print_leader(); - printf("%s(0, %s, %p) = %s\n", - TEST_SYSCALL_STR, cmd_name, bad_addr, errstr); - -@@ -187,35 +202,35 @@ - - static void - test_f_owner_ex_umove_or_printaddr(const int type, const char *const type_name, -- pid_t pid) -+ enum pid_type pid_type, pid_t pid) - { - long rc = test_f_owner_ex_type_pid(ARG_STR(F_SETOWN_EX), -- type, type_name, pid); -+ type, type_name, pid_type, pid); - if (!rc) - test_f_owner_ex_type_pid(ARG_STR(F_GETOWN_EX), -- type, type_name, pid); -+ type, type_name, pid_type, pid); - } - - static void - test_f_owner_ex(void) - { -- static const struct { -+ struct { - int type; - const char *type_name; -- pid_t pid[2]; -+ enum pid_type pid_type; -+ pid_t pid; - } a[] = { -- { ARG_STR(F_OWNER_TID), { 1234567890, 20 } }, -- { ARG_STR(F_OWNER_PID), { 1298126790, 30 } }, -- { ARG_STR(F_OWNER_PGRP), { 1294567890, 40 } } -+ { ARG_STR(F_OWNER_TID), PT_NONE, 1234567890 }, -+ { ARG_STR(F_OWNER_PID), PT_NONE, 1234567890 }, -+ { ARG_STR(F_OWNER_PGRP), PT_NONE, 1234567890 }, -+ { ARG_STR(F_OWNER_TID), PT_TID, syscall(__NR_gettid) }, -+ { ARG_STR(F_OWNER_PID), PT_TGID, getpid() }, -+ { ARG_STR(F_OWNER_PGRP), PT_PGID, getpgid(0) }, - }; - -- for (unsigned int i = 0; i < ARRAY_SIZE(a); i++) { -- for (unsigned int j = 0; j < ARRAY_SIZE(a[0].pid); j++) { -- test_f_owner_ex_umove_or_printaddr(a[i].type, -- a[i].type_name, -- a[i].pid[j]); -- } -- } -+ for (unsigned int i = 0; i < ARRAY_SIZE(a); i++) -+ test_f_owner_ex_umove_or_printaddr(a[i].type, a[i].type_name, -+ a[i].pid_type, a[i].pid); - } - #endif /* TEST_F_OWNER_EX */ - -@@ -229,6 +244,23 @@ - }; - - static void -+test_xetown(void) -+{ -+ const int pid = getpid(); -+ const char *pid_str = pidns_pid2str(PT_TGID); -+ -+ invoke_test_syscall(0, F_SETOWN, (void *) (intptr_t) pid); -+ pidns_print_leader(); -+ printf("%s(0, F_SETOWN, %d%s) = %s\n", -+ TEST_SYSCALL_STR, pid, pid_str, errstr); -+ -+ invoke_test_syscall(0, F_GETOWN, NULL); -+ pidns_print_leader(); -+ printf("%s(0, F_GETOWN) = %d%s\n", -+ TEST_SYSCALL_STR, pid, pid_str); -+} -+ -+static void - print_retval_flags(const struct fcntl_cmd_check *check, long rc) - { - if (check->print_flags) { -@@ -243,12 +275,14 @@ - test_other_set_cmd(const struct fcntl_cmd_check *check) - { - invoke_test_syscall(check->fd, check->cmd, (void *) check->arg); -+ pidns_print_leader(); - printf("%s(%d, %s, %s) = %s\n", - TEST_SYSCALL_STR, check->fd, - check->cmd_str, check->arg_str, errstr); - - /* bad file fd */ - invoke_test_syscall(-1, check->cmd, (void *) check->arg); -+ pidns_print_leader(); - printf("%s(-1, %s, %s) = %s\n", - TEST_SYSCALL_STR, check->cmd_str, - check->arg_str, errstr); -@@ -258,12 +292,14 @@ - test_other_get_cmd(const struct fcntl_cmd_check *check) - { - long rc = invoke_test_syscall(check->fd, check->cmd, NULL); -+ pidns_print_leader(); - printf("%s(%d, %s) = ", - TEST_SYSCALL_STR, check->fd, check->cmd_str); - print_retval_flags(check, rc); - - /* bad file fd */ - invoke_test_syscall(-1, check->cmd, NULL); -+ pidns_print_leader(); - printf("%s(-1, %s) = %s\n", - TEST_SYSCALL_STR, check->cmd_str, errstr); - } -@@ -315,7 +351,6 @@ - { - static const struct fcntl_cmd_check set_checks[] = { - { 0, ARG_STR(F_SETFD), ARG_STR(FD_CLOEXEC) }, -- { 0, ARG_STR(F_SETOWN), ARG_STR(20) }, - #ifdef F_SETPIPE_SZ - { 0, ARG_STR(F_SETPIPE_SZ), ARG_STR(4097) }, - #endif -@@ -336,7 +371,6 @@ - static const struct fcntl_cmd_check get_checks[] = { - { 0, ARG_STR(F_GETFD), .print_flags = print_flags_getfd }, - { 1, ARG_STR(F_GETFD), .print_flags = print_flags_getfd }, -- { 0, ARG_STR(F_GETOWN) }, - #ifdef F_GETPIPE_SZ - { 0, ARG_STR(F_GETPIPE_SZ) }, - #endif -@@ -360,6 +394,8 @@ - int - main(void) - { -+ PIDNS_TEST_INIT; -+ - create_sample(); - test_flock(); - test_flock64(); -@@ -367,7 +403,9 @@ - test_f_owner_ex(); - #endif - test_fcntl_others(); -+ test_xetown(); - -+ pidns_print_leader(); - puts("+++ exited with 0 +++"); - return 0; - } -Index: strace-5.7/tests-m32/fcntl.c -=================================================================== ---- strace-5.7.orig/tests-m32/fcntl.c 2020-09-09 19:52:30.608668690 +0200 -+++ strace-5.7/tests-m32/fcntl.c 2020-09-09 19:52:38.890673627 +0200 -@@ -24,6 +24,7 @@ - .l_len = 0xdefaced2cafef00dULL - }; - invoke_test_syscall(0, cmd, &fl); -+ pidns_print_leader(); - printf("%s(0, %s, %p) = %s\n", - TEST_SYSCALL_STR, name, &fl, errstr); - } -Index: strace-5.7/tests-m32/fcntl64--pidns-translation.c -=================================================================== ---- /dev/null 1970-01-01 00:00:00.000000000 +0000 -+++ strace-5.7/tests-m32/fcntl64--pidns-translation.c 2020-09-09 19:52:38.890673627 +0200 -@@ -0,0 +1,2 @@ -+#define PIDNS_TRANSLATION -+#include "fcntl64.c" -Index: strace-5.7/tests-m32/fcntl64.c -=================================================================== ---- strace-5.7.orig/tests-m32/fcntl64.c 2020-09-09 19:52:30.608668690 +0200 -+++ strace-5.7/tests-m32/fcntl64.c 2020-09-09 19:52:38.890673627 +0200 -@@ -27,6 +27,7 @@ - fl->l_len = FILE_LEN; - - long rc = invoke_test_syscall(0, F_SETLK64, fl); -+ pidns_print_leader(); - printf("%s(0, F_SETLK64, {l_type=F_RDLCK, l_whence=SEEK_SET" - ", l_start=0, l_len=%d}) = %s\n", - TEST_SYSCALL_STR, FILE_LEN, errstr); -@@ -35,11 +36,13 @@ - return; - - invoke_test_syscall(0, F_GETLK64, fl); -+ pidns_print_leader(); - printf("%s(0, F_GETLK64, {l_type=F_UNLCK, l_whence=SEEK_SET" - ", l_start=0, l_len=%d, l_pid=0}) = 0\n", - TEST_SYSCALL_STR, FILE_LEN); - - invoke_test_syscall(0, F_SETLKW64, fl); -+ pidns_print_leader(); - printf("%s(0, F_SETLKW64, {l_type=F_UNLCK, l_whence=SEEK_SET" - ", l_start=0, l_len=%d}) = 0\n", - TEST_SYSCALL_STR, FILE_LEN); -Index: strace-5.7/tests-m32/fork--pidns-translation.awk -=================================================================== ---- /dev/null 1970-01-01 00:00:00.000000000 +0000 -+++ strace-5.7/tests-m32/fork--pidns-translation.awk 2020-09-09 19:52:38.891673627 +0200 -@@ -0,0 +1,15 @@ -+/fork/ { -+ match($0, "([0-9]+) in strace\x27s PID NS", a); -+ if (a[1]) -+ fork_pid = a[1] -+} -+ -+/exited with 0/ { -+ if (!exit_pid) -+ exit_pid = $1 -+} -+ -+END { -+ if (!fork_pid || !exit_pid || fork_pid != exit_pid) -+ exit 1 -+} -Index: strace-5.7/tests-m32/fork--pidns-translation.c -=================================================================== ---- /dev/null 1970-01-01 00:00:00.000000000 +0000 -+++ strace-5.7/tests-m32/fork--pidns-translation.c 2020-09-09 19:52:38.891673627 +0200 -@@ -0,0 +1,78 @@ -+/* -+ * Test PID namespace translation -+ * -+ * Copyright (c) 2020 Ákos Uzonyi -+ * All rights reserved. -+ * -+ * SPDX-License-Identifier: LGPL-2.1-or-later -+ */ -+ -+#include "tests.h" -+#include "scno.h" -+#include "pidns.h" -+ -+#ifdef __NR_fork -+ -+#include -+#include -+#include -+#include -+#include -+#include -+#include -+#include -+#include -+#include "nsfs.h" -+ -+#ifndef CLONE_NEWUSER -+# define CLONE_NEWUSER 0x10000000 -+#endif -+ -+#ifndef CLONE_NEWPID -+# define CLONE_NEWPID 0x20000000 -+#endif -+ -+static int -+fork_chain(int depth) -+{ -+ if (!depth) -+ return 0; -+ -+ int pid = syscall(__NR_fork); -+ if (pid < 0) -+ return errno; -+ -+ if (!pid) -+ _exit(fork_chain(depth - 1)); -+ -+ int status; -+ if (wait(&status) < 0) -+ return errno; -+ -+ if (!WIFEXITED(status)) -+ return -1; -+ -+ return WEXITSTATUS(status); -+} -+ -+int main(void) -+{ -+ check_ns_ioctl(); -+ -+ if (unshare(CLONE_NEWPID | CLONE_NEWUSER) < 0) { -+ if (errno == EPERM) -+ perror_msg_and_skip("unshare"); -+ -+ perror_msg_and_fail("unshare"); -+ } -+ -+ errno = fork_chain(2); -+ if (errno) -+ perror("fork_chain"); -+} -+ -+#else -+ -+SKIP_MAIN_UNDEFINED("__NR_fork") -+ -+#endif -Index: strace-5.7/tests-m32/fork--pidns-translation.test -=================================================================== ---- /dev/null 1970-01-01 00:00:00.000000000 +0000 -+++ strace-5.7/tests-m32/fork--pidns-translation.test 2020-09-09 19:52:38.891673627 +0200 -@@ -0,0 +1,14 @@ -+#!/bin/sh -+# -+# Check pidns translation of fork's return value. -+# -+# Copyright (c) 2020 The strace developers. -+# All rights reserved. -+# -+# SPDX-License-Identifier: LGPL-2.1-or-later -+ -+. "${srcdir=.}/init.sh" -+ -+run_prog -+run_strace -a6 --pidns-translation -f -e trace=fork $args -+match_awk -Index: strace-5.7/tests-m32/gen_tests.in -=================================================================== ---- strace-5.7.orig/tests-m32/gen_tests.in 2020-09-09 19:52:30.609668691 +0200 -+++ strace-5.7/tests-m32/gen_tests.in 2020-09-09 19:52:38.891673627 +0200 -@@ -88,7 +88,9 @@ - fchown32 -a18 - fchownat - fcntl -a8 -+fcntl--pidns-translation test_pidns -a8 -e trace=fcntl - fcntl64 -a8 -+fcntl64--pidns-translation test_pidns -a8 -e trace=fcntl64 - fdatasync -a14 - file_handle -e trace=name_to_handle_at,open_by_handle_at - file_ioctl +ioctl.test -@@ -142,7 +144,9 @@ - getgroups32 -a19 - getpeername -a27 - getpgrp -a10 -+getpgrp--pidns-translation test_pidns -e trace=getpgrp -a10 - getpid -a9 -+getpid--pidns-translation test_pidns -e trace=getpid -a9 - getppid -a10 - getrandom -a32 -s3 - getresgid -a25 -@@ -152,6 +156,7 @@ - getrlimit -a27 - getrusage -v - getsid -a10 -+getsid--pidns-translation test_pidns -e trace=getsid -a10 - getsockname -a27 - gettid -a9 - getuid-creds +getuid.test -@@ -245,6 +250,7 @@ - ioperm -a27 - iopl -a8 - ioprio -a18 -e trace=ioprio_get,ioprio_set -+ioprio--pidns-translation test_pidns -a18 -e trace=ioprio_get,ioprio_set - ioprio-Xabbrev -a18 -e trace=ioprio_get,ioprio_set -Xabbrev - ioprio-Xraw -a18 -e trace=ioprio_get,ioprio_set -Xraw - ioprio-Xverbose -a18 -e trace=ioprio_get,ioprio_set -Xverbose -@@ -267,6 +273,7 @@ - ipc_shm-Xverbose +ipc.sh -Xverbose -a34 - kcmp -a22 - kcmp-y -a22 -y -e trace=kcmp -+kcmp-y--pidns-translation test_pidns -a22 -y -e trace=kcmp - kern_features -a16 - kernel_version -a16 -v -e trace=bpf - kernel_version-Xabbrev -a16 -Xabbrev -v -e trace=bpf -@@ -279,6 +286,7 @@ - keyctl-Xraw -a13 -s10 -e trace=keyctl -Xraw - keyctl-Xverbose -a41 -s10 -e trace=keyctl -Xverbose - kill -a12 -esignal=none -+kill--pidns-translation test_pidns -a12 -e trace=kill -esignal=none - ksysent ../$NAME - lchown -a30 - lchown32 -a32 -@@ -300,6 +308,7 @@ - memfd_create-Xraw -a30 -Xraw -e trace=memfd_create - memfd_create-Xverbose -Xverbose -e trace=memfd_create - migrate_pages -a33 -+migrate_pages--pidns-translation test_pidns -a33 -e trace=migrate_pages - mincore -a22 - mkdir -a20 - mkdirat -a28 -@@ -330,6 +339,7 @@ - move_pages-Xabbrev -s3 -e trace=move_pages -Xabbrev - move_pages-Xraw -s3 -a36 -e trace=move_pages -Xraw - move_pages-Xverbose -s3 -e trace=move_pages -Xverbose -+move_pages--pidns-translation test_pidns -s3 -e trace=move_pages - mq -a32 -e trace=mq_getsetattr,mq_open,mq_unlink - mq_sendrecv -a14 -e trace=mq_open,mq_notify,mq_timedsend,mq_timedreceive,mq_unlink - mq_sendrecv-read -eread=0 -a14 -e trace=mq_open,mq_notify,mq_timedsend,mq_timedreceive,mq_unlink -@@ -349,6 +359,7 @@ - net-packet_mreq-Xraw -e trace=setsockopt -Xraw - net-packet_mreq-Xverbose -e trace=setsockopt -Xverbose - net-sockaddr -a24 -e trace=connect -+net-sockaddr--pidns-translation test_pidns -a24 -e trace=connect - net-tpacket_req -e trace=setsockopt - net-tpacket_stats -e trace=getsockopt - net-yy-inet6 +net-yy-inet.test -@@ -452,7 +463,9 @@ - pidfd_open-P -a17 -P /dev/full -e trace=pidfd_open - pidfd_open-y -a17 -y -e trace=pidfd_open - pidfd_open-yy -a17 -yy -e trace=pidfd_open -+pidfd_open--pidns-translation test_pidns -a17 -e trace=pidfd_open - pidfd_send_signal -+pidfd_send_signal--pidns-translation test_pidns -e trace=pidfd_send_signal - pipe2 -a15 - pkey_alloc -a17 - pkey_free -a13 -@@ -475,8 +488,11 @@ - printstrn-umoven-peekdata -e signal=none -e trace=add_key - printstrn-umoven-undumpable -e signal=none -e trace=add_key - prlimit64 -+prlimit64--pidns-translation test_pidns -e trace=prlimit64 - process_vm_readv -s5 -a37 -+process_vm_readv--pidns-translation test_pidns -s5 -a37 -e trace=process_vm_readv - process_vm_writev -s5 -a38 -+process_vm_writev--pidns-translation test_pidns -s5 -a38 -e trace=process_vm_writev - pselect6 - ptrace -a23 -e signal=none - ptrace_syscall_info -a35 -e signal=none -e trace=ptrace -@@ -513,10 +529,12 @@ - rt_sigpending -a20 - rt_sigprocmask - rt_sigqueueinfo -esignal=none -+rt_sigqueueinfo--pidns-translation test_pidns -esignal=none -e trace=rt_sigqueueinfo - rt_sigreturn -esignal='!USR1' - rt_sigsuspend -a20 -esignal=none - rt_sigtimedwait -a38 - rt_tgsigqueueinfo -esignal=none -+rt_tgsigqueueinfo--pidns-translation test_pidns -esignal=none -e trace=rt_tgsigqueueinfo - s390_guarded_storage -a32 - s390_guarded_storage-v -e trace=s390_guarded_storage -a32 -v - s390_pci_mmio_read_write -e trace=s390_pci_mmio_read,s390_pci_mmio_write -a30 -@@ -527,9 +545,13 @@ - sched_get_priority_mxx -a33 -e trace=sched_get_priority_min,sched_get_priority_max - sched_rr_get_interval -a31 - sched_xetaffinity -a28 -e trace=sched_getaffinity,sched_setaffinity -+sched_xetaffinity--pidns-translation test_pidns -a28 -e trace=sched_getaffinity,sched_setaffinity - sched_xetattr -a29 -e trace=sched_getattr,sched_setattr -+sched_xetattr--pidns-translation test_pidns -a29 -e trace=sched_getattr,sched_setattr - sched_xetparam -a23 -e trace=sched_getparam,sched_setparam -+sched_xetparam--pidns-translation test_pidns -a23 -e trace=sched_getparam,sched_setparam - sched_xetscheduler -a22 -e trace=sched_getscheduler,sched_setscheduler -+sched_xetscheduler--pidns-translation test_pidns -a22 -e trace=sched_getscheduler,sched_setscheduler - sched_yield -a14 - seccomp-filter -e trace=seccomp - seccomp-filter-v -v -e trace=seccomp -@@ -576,6 +598,7 @@ - siginfo -e trace=none - signal -a25 -e signal=none -e trace='/^signal$' - signal_receive -a16 -e trace=kill -+signal_receive--pidns-translation test_pidns -a16 -e trace=kill - signalfd4 - sigpending -a15 - sigprocmask -a34 -@@ -587,6 +610,7 @@ - so_peercred-Xabbrev -e trace=getsockopt -Xabbrev - so_peercred-Xraw -e trace=getsockopt -Xraw -a39 - so_peercred-Xverbose -e trace=getsockopt -Xverbose -+so_peercred--pidns-translation test_pidns -e trace=getsockopt - sock_filter-v -v -e trace=getsockopt,setsockopt - sock_filter-v-Xabbrev -v -e trace=getsockopt,setsockopt -X abbrev - sock_filter-v-Xraw -a 37 -v -e trace=getsockopt,setsockopt -X raw -@@ -659,6 +683,7 @@ - syslog -a35 - tee - tgkill -a15 --signal='!cont' -+tgkill--pidns-translation test_pidns -a15 --signal='!cont' -e trace=tgkill - threads-execve--quiet-thread-execve +threads-execve.test -s40 --quiet=personality,thread-execve - threads-execve-q +threads-execve.test -q - threads-execve-qq +threads-execve.test -qq -@@ -670,6 +695,7 @@ - times -esignal=none - times-fail -a12 -e trace=times - tkill -a12 --signal='!cont' -+tkill--pidns-translation test_pidns --signal='!cont' -a12 -e trace=tkill - trace_clock test_trace_expr 'clock_nanosleep|times' -e%clock - trace_creds test_trace_expr '([gs]et[^p]*([gu]id|groups)|caps|prctl|[fl]?chown|print(path-umovestr|strn-umoven)-undumpable|ptrace|quotactl|rt_sigtimedwait|rt_(tg)?sigqueueinfo).*' -e%creds - trace_fstat test_trace_expr '' -e%fstat -v -P stat.sample -P /dev/full -@@ -686,6 +712,7 @@ - trace_stat_like test_trace_expr '' -e%%stat -v -P stat.sample -P /dev/full - trace_statfs test_trace_expr '' -e%statfs - trace_statfs_like test_trace_expr '' -e%%statfs -+trie_test run_prog - truncate - truncate64 - ugetrlimit -a28 -@@ -716,7 +743,10 @@ - xattr -a22 -e trace=getxattr,fgetxattr,lgetxattr,setxattr,fsetxattr,lsetxattr,listxattr,flistxattr,llistxattr,removexattr,fremovexattr,lremovexattr - xattr-strings -a22 -s 4 -e trace=fsetxattr - xet_robust_list -a24 -e trace=get_robust_list,set_robust_list -+xet_robust_list--pidns-translation test_pidns -a24 -e trace=get_robust_list,set_robust_list - xetitimer -a29 -e trace=setitimer,getitimer - xetpgid -a11 -e trace=getpgid,setpgid --xetpriority -a29 -e trace=getpriority,setpriority -+xetpgid--pidns-translation test_pidns -a11 -e trace=getpgid,setpgid -+xetpriority -a27 -e trace=getpriority,setpriority -+xetpriority--pidns-translation test_pidns -a27 -e trace=getpriority,setpriority - xettimeofday -a20 -e trace=gettimeofday,settimeofday -Index: strace-5.7/tests-m32/getpgrp--pidns-translation.c -=================================================================== ---- /dev/null 1970-01-01 00:00:00.000000000 +0000 -+++ strace-5.7/tests-m32/getpgrp--pidns-translation.c 2020-09-09 19:52:38.892673628 +0200 -@@ -0,0 +1,2 @@ -+#define PIDNS_TRANSLATION -+#include "getpgrp.c" -Index: strace-5.7/tests-m32/getpgrp.c -=================================================================== ---- strace-5.7.orig/tests-m32/getpgrp.c 2020-09-09 19:52:30.609668691 +0200 -+++ strace-5.7/tests-m32/getpgrp.c 2020-09-09 19:52:38.892673628 +0200 -@@ -7,6 +7,7 @@ - - #include "tests.h" - #include "scno.h" -+#include "pidns.h" - - #ifdef __NR_getpgrp - -@@ -16,8 +17,13 @@ - int - main(void) - { -- printf("getpgrp() = %ld\n", syscall(__NR_getpgrp)); -+ PIDNS_TEST_INIT; - -+ pidns_print_leader(); -+ printf("getpgrp() = %d%s\n", (int) syscall(__NR_getpgrp), -+ pidns_pid2str(PT_PGID)); -+ -+ pidns_print_leader(); - puts("+++ exited with 0 +++"); - return 0; - } -Index: strace-5.7/tests-m32/getpid--pidns-translation.c -=================================================================== ---- /dev/null 1970-01-01 00:00:00.000000000 +0000 -+++ strace-5.7/tests-m32/getpid--pidns-translation.c 2020-09-09 19:52:38.892673628 +0200 -@@ -0,0 +1,2 @@ -+#define PIDNS_TRANSLATION -+#include "getpid.c" -Index: strace-5.7/tests-m32/getpid.c -=================================================================== ---- strace-5.7.orig/tests-m32/getpid.c 2020-09-09 19:52:30.610668691 +0200 -+++ strace-5.7/tests-m32/getpid.c 2020-09-09 19:52:38.892673628 +0200 -@@ -7,6 +7,7 @@ - - #include "tests.h" - #include "scno.h" -+#include "pidns.h" - - #if defined __NR_getpid && (!defined __NR_getxpid || __NR_getxpid != __NR_getpid) - -@@ -16,7 +17,12 @@ - int - main(void) - { -- printf("getpid() = %ld\n", syscall(__NR_getpid)); -+ PIDNS_TEST_INIT; -+ -+ pidns_print_leader(); -+ printf("getpid() = %d%s\n", (int) syscall(__NR_getpid), -+ pidns_pid2str(PT_TGID)); -+ pidns_print_leader(); - puts("+++ exited with 0 +++"); - return 0; - } -Index: strace-5.7/tests-m32/getsid--pidns-translation.c -=================================================================== ---- /dev/null 1970-01-01 00:00:00.000000000 +0000 -+++ strace-5.7/tests-m32/getsid--pidns-translation.c 2020-09-09 19:52:38.892673628 +0200 -@@ -0,0 +1,2 @@ -+#define PIDNS_TRANSLATION -+#include "getsid.c" -Index: strace-5.7/tests-m32/getsid.c -=================================================================== ---- strace-5.7.orig/tests-m32/getsid.c 2020-09-09 19:52:30.610668691 +0200 -+++ strace-5.7/tests-m32/getsid.c 2020-09-09 19:52:38.892673628 +0200 -@@ -6,15 +6,22 @@ - */ - - #include "tests.h" -+#include "pidns.h" -+ - #include - #include - - int - main(void) - { -+ PIDNS_TEST_INIT; -+ - pid_t pid = getpid(); -- printf("getsid(%d) = %d\n", pid, getsid(pid)); -+ pidns_print_leader(); -+ printf("getsid(%d%s) = %d%s\n", pid, pidns_pid2str(PT_TGID), -+ getsid(pid), pidns_pid2str(PT_SID)); - -+ pidns_print_leader(); - puts("+++ exited with 0 +++"); - return 0; - } -Index: strace-5.7/tests-m32/gettid--pidns-translation.c -=================================================================== ---- /dev/null 1970-01-01 00:00:00.000000000 +0000 -+++ strace-5.7/tests-m32/gettid--pidns-translation.c 2020-09-09 19:52:38.893673628 +0200 -@@ -0,0 +1,2 @@ -+#define PIDNS_TRANSLATION -+#include "gettid.c" -Index: strace-5.7/tests-m32/gettid--pidns-translation.test -=================================================================== ---- /dev/null 1970-01-01 00:00:00.000000000 +0000 -+++ strace-5.7/tests-m32/gettid--pidns-translation.test 2020-09-09 19:52:38.893673628 +0200 -@@ -0,0 +1,18 @@ -+#!/bin/sh -+# -+# Check pidns translation of gettid's return value. -+# -+# Copyright (c) 2020 The strace developers. -+# All rights reserved. -+# -+# SPDX-License-Identifier: LGPL-2.1-or-later -+ -+. "${srcdir=.}/init.sh" -+ -+run_prog > /dev/null -+run_strace -a9 --pidns-translation -f -e trace=gettid $args > "$EXP" -+parent_pid="$(tail -n 2 $LOG | head -n 1 | cut -d' ' -f1)" -+init_pid="$(tail -n 1 $LOG | cut -d' ' -f1)" -+# uniq: filter out extra gettid calls made by musl libc -+grep -E -v "^($parent_pid|$init_pid) |unfinished|resumed" "$LOG" | uniq > "$OUT" -+match_diff "$OUT" "$EXP" -Index: strace-5.7/tests-m32/gettid.c -=================================================================== ---- strace-5.7.orig/tests-m32/gettid.c 2020-09-09 19:52:30.610668691 +0200 -+++ strace-5.7/tests-m32/gettid.c 2020-09-09 19:52:38.893673628 +0200 -@@ -9,11 +9,17 @@ - #include - #include - #include "scno.h" -+#include "pidns.h" - - int - main(void) - { -- printf("gettid() = %ld\n", syscall(__NR_gettid)); -+ PIDNS_TEST_INIT; -+ -+ pidns_print_leader(); -+ printf("gettid() = %d%s\n", (int) syscall(__NR_gettid), -+ pidns_pid2str(PT_TID)); -+ pidns_print_leader(); - puts("+++ exited with 0 +++"); - return 0; - } -Index: strace-5.7/tests-m32/ioctl_block--pidns-translation.c -=================================================================== ---- /dev/null 1970-01-01 00:00:00.000000000 +0000 -+++ strace-5.7/tests-m32/ioctl_block--pidns-translation.c 2020-09-09 19:52:38.893673628 +0200 -@@ -0,0 +1,2 @@ -+#define PIDNS_TRANSLATION -+#include "ioctl_block.c" -Index: strace-5.7/tests-m32/ioctl_block--pidns-translation.test -=================================================================== ---- /dev/null 1970-01-01 00:00:00.000000000 +0000 -+++ strace-5.7/tests-m32/ioctl_block--pidns-translation.test 2020-09-09 19:52:38.893673628 +0200 -@@ -0,0 +1,22 @@ -+#!/bin/sh -+# -+# Check pidns translation of ioctl(BLK*) syscall decoding. -+# -+# Copyright (c) 2020 The strace developers. -+# All rights reserved. -+# -+# SPDX-License-Identifier: LGPL-2.1-or-later -+ -+. "${srcdir=.}/init.sh" -+ -+check_prog head -+check_prog tail -+check_prog cut -+check_prog grep -+ -+run_prog > /dev/null -+run_strace --pidns-translation -f -a16 -e trace=ioctl $@ $args > "$EXP" -+parent_pid="$(tail -n 2 $LOG | head -n 1 | cut -d' ' -f1)" -+init_pid="$(tail -n 1 $LOG | cut -d' ' -f1)" -+grep -E -v "^($parent_pid|$init_pid) |ioctl\([0123][,<]" "$LOG" > "$OUT" -+match_diff "$OUT" "$EXP" -Index: strace-5.7/tests-m32/ioctl_block.c -=================================================================== ---- strace-5.7.orig/tests-m32/ioctl_block.c 2020-09-09 19:52:30.611668692 +0200 -+++ strace-5.7/tests-m32/ioctl_block.c 2020-09-09 19:52:38.893673628 +0200 -@@ -9,7 +9,9 @@ - */ - - #include "tests.h" -+#include "pidns.h" - #include -+#include - #include - #include - #include -@@ -41,12 +43,15 @@ - #define TEST_NULL_ARG(cmd) \ - do { \ - ioctl(-1, cmd, 0); \ -+ pidns_print_leader(); \ - printf("ioctl(-1, %s, NULL) = -1 EBADF (%m)\n", #cmd); \ - } while (0) - - int - main(void) - { -+ PIDNS_TEST_INIT; -+ - TEST_NULL_ARG(BLKBSZGET); - TEST_NULL_ARG(BLKBSZSET); - TEST_NULL_ARG(BLKFRAGET); -@@ -91,18 +96,22 @@ - #endif - - ioctl(-1, BLKRASET, lmagic); -+ pidns_print_leader(); - printf("ioctl(-1, BLKRASET, %lu) = -1 EBADF (%m)\n", lmagic); - - ioctl(-1, BLKFRASET, lmagic); -+ pidns_print_leader(); - printf("ioctl(-1, BLKFRASET, %lu) = -1 EBADF (%m)\n", lmagic); - - TAIL_ALLOC_OBJECT_CONST_PTR(int, val_int); - *val_int = magic; - - ioctl(-1, BLKROSET, val_int); -+ pidns_print_leader(); - printf("ioctl(-1, BLKROSET, [%d]) = -1 EBADF (%m)\n", *val_int); - - ioctl(-1, BLKBSZSET, val_int); -+ pidns_print_leader(); - printf("ioctl(-1, BLKBSZSET, [%d]) = -1 EBADF (%m)\n", *val_int); - - uint64_t *pair_int64 = tail_alloc(sizeof(*pair_int64) * 2); -@@ -111,18 +120,21 @@ - - #ifdef BLKDISCARD - ioctl(-1, BLKDISCARD, pair_int64); -+ pidns_print_leader(); - printf("ioctl(-1, BLKDISCARD, [%" PRIu64 ", %" PRIu64 "])" - " = -1 EBADF (%m)\n", pair_int64[0], pair_int64[1]); - #endif - - #ifdef BLKSECDISCARD - ioctl(-1, BLKSECDISCARD, pair_int64); -+ pidns_print_leader(); - printf("ioctl(-1, BLKSECDISCARD, [%" PRIu64 ", %" PRIu64 "])" - " = -1 EBADF (%m)\n", pair_int64[0], pair_int64[1]); - #endif - - #ifdef BLKZEROOUT - ioctl(-1, BLKZEROOUT, pair_int64); -+ pidns_print_leader(); - printf("ioctl(-1, BLKZEROOUT, [%" PRIu64 ", %" PRIu64 "])" - " = -1 EBADF (%m)\n", pair_int64[0], pair_int64[1]); - #endif -@@ -134,6 +146,7 @@ - blkpg->data = (void *) (unsigned long) 0xcafef00dfffffeedULL; - - ioctl(-1, BLKPG, blkpg); -+ pidns_print_leader(); - printf("ioctl(-1, BLKPG, {op=%s, flags=%d, datalen=%d" - ", data=%#lx}) = -1 EBADF (%m)\n", - "BLKPG_RESIZE_PARTITION", blkpg->flags, blkpg->datalen, -@@ -149,6 +162,7 @@ - blkpg->data = bp; - - ioctl(-1, BLKPG, blkpg); -+ pidns_print_leader(); - printf("ioctl(-1, BLKPG, {op=%s, flags=%d, datalen=%d" - ", data={start=%lld, length=%lld, pno=%d" - ", devname=\"%.*s\"..., volname=\"%.*s\"...}})" -@@ -162,25 +176,31 @@ - #if defined BLKTRACESETUP && defined HAVE_STRUCT_BLK_USER_TRACE_SETUP - TAIL_ALLOC_OBJECT_CONST_PTR(struct blk_user_trace_setup, buts); - fill_memory(buts, sizeof(*buts)); -+ buts->pid = getpid(); - - ioctl(-1, BLKTRACESETUP, buts); -+ pidns_print_leader(); - printf("ioctl(-1, BLKTRACESETUP, {act_mask=%hu, buf_size=%u, buf_nr=%u" -- ", start_lba=%" PRI__u64 ", end_lba=%" PRI__u64 ", pid=%d})" -+ ", start_lba=%" PRI__u64 ", end_lba=%" PRI__u64 ", pid=%d%s})" - " = -1 EBADF (%m)\n", - buts->act_mask, buts->buf_size, buts->buf_nr, -- buts->start_lba, buts->end_lba, buts->pid); -+ buts->start_lba, buts->end_lba, buts->pid, -+ pidns_pid2str(PT_TGID)); - #endif - - unsigned int i; - for (i = 0; i < ARRAY_SIZE(block_argless); ++i) { - ioctl(-1, (unsigned long) block_argless[i].val, lmagic); -+ pidns_print_leader(); - printf("ioctl(-1, %s) = -1 EBADF (%m)\n", block_argless[i].str); - } - - ioctl(-1, _IOC(_IOC_READ, 0x12, 0xfe, 0xff), lmagic); -+ pidns_print_leader(); - printf("ioctl(-1, %s, %#lx) = -1 EBADF (%m)\n", - "_IOC(_IOC_READ, 0x12, 0xfe, 0xff)", lmagic); - -+ pidns_print_leader(); - puts("+++ exited with 0 +++"); - return 0; - } -Index: strace-5.7/tests-m32/ioprio--pidns-translation.c -=================================================================== ---- /dev/null 1970-01-01 00:00:00.000000000 +0000 -+++ strace-5.7/tests-m32/ioprio--pidns-translation.c 2020-09-09 19:52:38.894673629 +0200 -@@ -0,0 +1,2 @@ -+#define PIDNS_TRANSLATION -+#include "ioprio.c" -Index: strace-5.7/tests-m32/ioprio.c -=================================================================== ---- strace-5.7.orig/tests-m32/ioprio.c 2020-09-09 19:52:30.611668692 +0200 -+++ strace-5.7/tests-m32/ioprio.c 2020-09-09 19:52:38.894673629 +0200 -@@ -9,8 +9,8 @@ - */ - - #include "tests.h" -- - #include "scno.h" -+#include "pidns.h" - - #if defined(__NR_ioprio_get) && defined(__NR_ioprio_set) - -@@ -30,12 +30,18 @@ - int - main(void) - { -+ PIDNS_TEST_INIT; -+ - static const kernel_ulong_t bogus_which = - (kernel_ulong_t) 0xdeadfacefa57beefULL; - static const kernel_ulong_t bogus_who = - (kernel_ulong_t) 0xbadc0dedda7a1057ULL; - static const kernel_ulong_t bogus_ioprio = - (kernel_ulong_t) 0xdec0ded1facefeedULL; -+ -+ const int pid = getpid(); -+ const int pgid = getpgid(0); -+ - # if !XLAT_RAW - static const char * const bogus_ioprio_str = - "IOPRIO_PRIO_VALUE(0x7d677 /* IOPRIO_CLASS_??? */, 7917)"; -@@ -46,6 +52,7 @@ - - rc = syscall(__NR_ioprio_get, bogus_which, bogus_who); - errstr = sprintrc(rc); -+ pidns_print_leader(); - # if XLAT_RAW - printf("ioprio_get(%#x, %d) = %s\n", - (int) bogus_which, (int) bogus_who, errstr); -@@ -54,42 +61,52 @@ - (int) bogus_which, (int) bogus_who, errstr); - # endif - -- rc = syscall(__NR_ioprio_get, 1, 0); -+ rc = syscall(__NR_ioprio_get, 1, pid); - errstr = sprintrc(rc); -+ pidns_print_leader(); -+ printf("ioprio_get("); - # if XLAT_RAW -- printf("ioprio_get(0x1, 0) = %s\n", errstr); -+ printf("0x1, "); -+# elif XLAT_VERBOSE -+ printf("0x1 /* IOPRIO_WHO_PROCESS */, "); - # else /* XLAT_ABBREV */ --# if XLAT_VERBOSE -- printf("ioprio_get(0x1 /* IOPRIO_WHO_PROCESS */, 0) = %s", errstr); --# else -- printf("ioprio_get(IOPRIO_WHO_PROCESS, 0) = %s", errstr); --# endif -+ printf("IOPRIO_WHO_PROCESS, "); -+# endif -+ printf("%d%s) = %s", pid, pidns_pid2str(PT_TGID), errstr); -+# if !XLAT_RAW - if (rc >= 0) { - printf(" (IOPRIO_PRIO_VALUE("); - printxval(ioprio_class, (unsigned int) rc >> 13, - "IOPRIO_CLASS_???"); - printf(", %u))", (unsigned int) rc & 0x1fff); - } -- puts(""); - # endif -+ puts(""); - -- rc = syscall(__NR_ioprio_set, 2, 0, 8191); -+ rc = syscall(__NR_ioprio_set, 2, pgid, 8191); - errstr = sprintrc(rc); -+ pidns_print_leader(); -+ printf("ioprio_set("); - # if XLAT_RAW -- printf("ioprio_set(%#x, 0, 8191) = %s\n", 2, errstr); -+ printf("%#x", 2); - # elif XLAT_VERBOSE -- printf("ioprio_set(%#x /* IOPRIO_WHO_PGRP */, 0, 8191" -- " /* IOPRIO_PRIO_VALUE(0 /* IOPRIO_CLASS_NONE */, 8191) */)" -- " = %s\n", -- 2, errstr); -+ printf("%#x /* IOPRIO_WHO_PGRP */", 2); - # else /* XLAT_ABBREV */ -- printf("ioprio_set(IOPRIO_WHO_PGRP, 0" -- ", IOPRIO_PRIO_VALUE(IOPRIO_CLASS_NONE, 8191)) = %s\n", -- errstr); -+ printf("IOPRIO_WHO_PGRP"); -+# endif -+ printf(", %d%s", pgid, pidns_pid2str(PT_PGID)); -+# if XLAT_RAW -+ printf(", 8191)"); -+# elif XLAT_VERBOSE -+ printf(", 8191 /* IOPRIO_PRIO_VALUE(0 /* IOPRIO_CLASS_NONE */, 8191) */)"); -+# else /* XLAT_ABBREV */ -+ printf(", IOPRIO_PRIO_VALUE(IOPRIO_CLASS_NONE, 8191))"); - # endif -+ printf(" = %s\n", errstr); - - rc = syscall(__NR_ioprio_set, bogus_which, bogus_who, bogus_ioprio); - errstr = sprintrc(rc); -+ pidns_print_leader(); - # if XLAT_RAW - printf("ioprio_set(%#x, %d, %d) = %s\n", - (int) bogus_which, (int) bogus_who, (int) bogus_ioprio, -@@ -104,6 +121,7 @@ - errstr); - # endif - -+ pidns_print_leader(); - puts("+++ exited with 0 +++"); - - return 0; -Index: strace-5.7/tests-m32/kcmp-y--pidns-translation.c -=================================================================== ---- /dev/null 1970-01-01 00:00:00.000000000 +0000 -+++ strace-5.7/tests-m32/kcmp-y--pidns-translation.c 2020-09-09 19:52:38.894673629 +0200 -@@ -0,0 +1,2 @@ -+#define PIDNS_TRANSLATION -+#include "kcmp-y.c" -Index: strace-5.7/tests-m32/kcmp.c -=================================================================== ---- strace-5.7.orig/tests-m32/kcmp.c 2020-09-09 19:52:30.612668693 +0200 -+++ strace-5.7/tests-m32/kcmp.c 2020-09-09 19:52:38.894673629 +0200 -@@ -9,8 +9,8 @@ - */ - - #include "tests.h" -- - #include "scno.h" -+#include "pidns.h" - - #ifdef __NR_kcmp - -@@ -101,7 +101,11 @@ - rc = syscall(__NR_kcmp, pid1, pid2, type, idx1, idx2); - errstr = sprintrc(rc); - -- printf("kcmp(%d, %d, ", (int) pid1, (int) pid2); -+ const char *pid_str = pidns_pid2str(PT_TGID); -+ pidns_print_leader(); -+ printf("kcmp(%d%s, %d%s, ", -+ (int) pid1, (int) pid1 == getpid() ? pid_str : "", -+ (int) pid2, (int) pid2 == getpid() ? pid_str : ""); - - if (type_str) - printf("%s", type_str); -@@ -146,6 +150,8 @@ - int - main(void) - { -+ PIDNS_TEST_INIT; -+ - static const kernel_ulong_t bogus_pid1 = - (kernel_ulong_t) 0xdeadca75face1057ULL; - static const kernel_ulong_t bogus_pid2 = -@@ -221,6 +227,7 @@ - (uintptr_t) slot, 1); - } - -+ pidns_print_leader(); - puts("+++ exited with 0 +++"); - - return 0; -Index: strace-5.7/tests-m32/kill--pidns-translation.c -=================================================================== ---- /dev/null 1970-01-01 00:00:00.000000000 +0000 -+++ strace-5.7/tests-m32/kill--pidns-translation.c 2020-09-09 19:52:38.894673629 +0200 -@@ -0,0 +1,2 @@ -+#define PIDNS_TRANSLATION -+#include "kill.c" -Index: strace-5.7/tests-m32/kill.c -=================================================================== ---- strace-5.7.orig/tests-m32/kill.c 2020-09-09 19:52:30.612668693 +0200 -+++ strace-5.7/tests-m32/kill.c 2020-09-09 19:52:38.895673630 +0200 -@@ -11,6 +11,7 @@ - - #include "tests.h" - #include "scno.h" -+#include "pidns.h" - - #ifdef __NR_kill - -@@ -26,6 +27,8 @@ - int - main(void) - { -+ PIDNS_TEST_INIT; -+ - const struct sigaction act = { .sa_handler = handler }; - if (sigaction(SIGALRM, &act, NULL)) - perror_msg_and_fail("sigaction"); -@@ -37,18 +40,23 @@ - perror_msg_and_fail("sigprocmask"); - - const int pid = getpid(); -+ const char *pid_str = pidns_pid2str(PT_TGID); - long rc = syscall(__NR_kill, pid, (long) 0xdefaced00000000ULL | SIGALRM); -- printf("kill(%d, SIGALRM) = %ld\n", pid, rc); -+ pidns_print_leader(); -+ printf("kill(%d%s, SIGALRM) = %ld\n", pid, pid_str, rc); - - const long big_pid = (long) 0xfacefeedbadc0dedULL; - const long big_sig = (long) 0xdeadbeefcafef00dULL; - rc = syscall(__NR_kill, big_pid, big_sig); -+ pidns_print_leader(); - printf("kill(%d, %d) = %ld %s (%m)\n", - (int) big_pid, (int) big_sig, rc, errno2name()); - - rc = syscall(__NR_kill, (long) 0xdefaced00000000ULL | pid, 0); -- printf("kill(%d, 0) = %ld\n", pid, rc); -+ pidns_print_leader(); -+ printf("kill(%d%s, 0) = %ld\n", pid, pid_str, rc); - -+ pidns_print_leader(); - puts("+++ exited with 0 +++"); - return 0; - } -Index: strace-5.7/tests-m32/migrate_pages--pidns-translation.c -=================================================================== ---- /dev/null 1970-01-01 00:00:00.000000000 +0000 -+++ strace-5.7/tests-m32/migrate_pages--pidns-translation.c 2020-09-09 19:52:38.895673630 +0200 -@@ -0,0 +1,2 @@ -+#define PIDNS_TRANSLATION -+#include "migrate_pages.c" -Index: strace-5.7/tests-m32/migrate_pages.c -=================================================================== ---- strace-5.7.orig/tests-m32/migrate_pages.c 2020-09-09 19:52:30.612668693 +0200 -+++ strace-5.7/tests-m32/migrate_pages.c 2020-09-09 19:52:38.895673630 +0200 -@@ -10,6 +10,7 @@ - - #include "tests.h" - #include "scno.h" -+#include "pidns.h" - - #ifdef __NR_migrate_pages - -@@ -19,11 +20,21 @@ - int - main(void) - { -- const long pid = (long) 0xfacefeedffffffffULL; -+ PIDNS_TEST_INIT; -+ -+ const long pid = (long) 0xfacefeed00000000ULL | getpid(); - long rc = syscall(__NR_migrate_pages, pid, 0, 0, 0); -- printf("migrate_pages(%d, 0, NULL, NULL) = %ld %s (%m)\n", -- (int) pid, rc, errno2name()); - -+ pidns_print_leader(); -+ printf("migrate_pages(%d%s, 0, NULL, NULL) = %ld", -+ (int) pid, pidns_pid2str(PT_TGID), rc); -+ -+ if (rc < 0) -+ printf(" %s (%m)\n", errno2name()); -+ else -+ printf("\n"); -+ -+ pidns_print_leader(); - puts("+++ exited with 0 +++"); - return 0; - } -Index: strace-5.7/tests-m32/move_pages--pidns-translation.c -=================================================================== ---- /dev/null 1970-01-01 00:00:00.000000000 +0000 -+++ strace-5.7/tests-m32/move_pages--pidns-translation.c 2020-09-09 19:52:38.895673630 +0200 -@@ -0,0 +1,2 @@ -+#define PIDNS_TRANSLATION -+#include "move_pages.c" -Index: strace-5.7/tests-m32/move_pages.c -=================================================================== ---- strace-5.7.orig/tests-m32/move_pages.c 2020-09-09 19:52:30.613668693 +0200 -+++ strace-5.7/tests-m32/move_pages.c 2020-09-09 19:52:38.895673630 +0200 -@@ -10,6 +10,7 @@ - - #include "tests.h" - #include "scno.h" -+#include "pidns.h" - - #ifdef __NR_move_pages - -@@ -122,15 +123,20 @@ - } - - static void --print_stat_pages(const unsigned long pid, const unsigned long count, -- const void **const pages, int *const status) -+print_stat_pages(const unsigned long pid, -+ const char *pid_str, -+ const unsigned long count, -+ const void **const pages, -+ int *const status) - { - const unsigned long flags = (unsigned long) 0xfacefeed00000002ULL; - - long rc = syscall(__NR_move_pages, - pid, count, pages, NULL, status, flags); - const char *errstr = sprintrc(rc); -- printf("move_pages(%d, %lu, ", (int) pid, count); -+ pidns_print_leader(); -+ printf("move_pages(%d%s, %lu, ", (int) pid, pid_str, -+ count); - print_page_array(pages, count, 0); - printf(", NULL, "); - if (rc) { -@@ -152,6 +158,7 @@ - - static void - print_move_pages(const unsigned long pid, -+ const char *pid_str, - unsigned long count, - const unsigned int offset, - const void **const pages, -@@ -164,7 +171,9 @@ - long rc = syscall(__NR_move_pages, - pid, count, pages, nodes, status, flags); - const char *errstr = sprintrc(rc); -- printf("move_pages(%d, %lu, ", (int) pid, count); -+ pidns_print_leader(); -+ printf("move_pages(%d%s, %lu, ", (int) pid, pid_str, -+ count); - print_page_array(pages, count, offset); - printf(", "); - print_node_array(nodes, count, offset); -@@ -185,8 +194,11 @@ - int - main(void) - { -+ PIDNS_TEST_INIT; -+ - const unsigned long pid = - (unsigned long) 0xfacefeed00000000ULL | getpid(); -+ const char *pid_str = pidns_pid2str(PT_TGID); - unsigned long count = 1; - const unsigned page_size = get_page_size(); - const void *const page = tail_alloc(page_size); -@@ -195,40 +207,41 @@ - TAIL_ALLOC_OBJECT_VAR_PTR(int, nodes); - TAIL_ALLOC_OBJECT_VAR_PTR(int, status); - -- print_stat_pages(pid, 0, pages, status); -- print_move_pages(pid, 0, 0, pages, nodes, status); -- print_move_pages(pid, 0, 1, pages + 1, nodes + 1, status + 1); -+ print_stat_pages(pid, pid_str, 0, pages, status); -+ print_move_pages(pid, pid_str, 0, 0, pages, nodes, status); -+ print_move_pages(pid, pid_str, 0, 1, pages + 1, nodes + 1, status + 1); - - *pages = page; -- print_stat_pages(pid, count, pages, status); -+ print_stat_pages(pid, pid_str, count, pages, status); - *nodes = 0xdeadbee1; -- print_move_pages(pid, count, 0, pages, nodes, status); -- print_move_pages(pid, count, 1, pages, nodes, status); -+ print_move_pages(pid, pid_str, count, 0, pages, nodes, status); -+ print_move_pages(pid, pid_str, count, 1, pages, nodes, status); - - ++count; - --status; - *(--pages) = efault; -- print_stat_pages(pid, count, pages, status); -+ print_stat_pages(pid, pid_str, count, pages, status); - *(--nodes) = 0xdeadbee2; -- print_move_pages(pid, count, 0, pages, nodes, status); -- print_move_pages(pid, count, 1, pages, nodes, status); -+ print_move_pages(pid, pid_str, count, 0, pages, nodes, status); -+ print_move_pages(pid, pid_str, count, 1, pages, nodes, status); - - ++count; - --status; - *(--pages) = nodes; -- print_stat_pages(pid, count, pages, status); -+ print_stat_pages(pid, pid_str, count, pages, status); - *(--nodes) = 0xdeadbee3; -- print_move_pages(pid, count, 0, pages, nodes, status); -- print_move_pages(pid, count, 1, pages, nodes, status); -+ print_move_pages(pid, pid_str, count, 0, pages, nodes, status); -+ print_move_pages(pid, pid_str, count, 1, pages, nodes, status); - - ++count; - --status; - *(--pages) = status; -- print_stat_pages(pid, count, pages, status); -+ print_stat_pages(pid, pid_str, count, pages, status); - *(--nodes) = 0xdeadbee4; -- print_move_pages(pid, count, 0, pages, nodes, status); -- print_move_pages(pid, count, 1, pages, nodes, status); -+ print_move_pages(pid, pid_str, count, 0, pages, nodes, status); -+ print_move_pages(pid, pid_str, count, 1, pages, nodes, status); - -+ pidns_print_leader(); - puts("+++ exited with 0 +++"); - return 0; - } -Index: strace-5.7/tests-m32/net-sockaddr--pidns-translation.c -=================================================================== ---- /dev/null 1970-01-01 00:00:00.000000000 +0000 -+++ strace-5.7/tests-m32/net-sockaddr--pidns-translation.c 2020-09-09 19:52:38.896673630 +0200 -@@ -0,0 +1,2 @@ -+#define PIDNS_TRANSLATION -+#include "net-sockaddr.c" -Index: strace-5.7/tests-m32/net-sockaddr.c -=================================================================== ---- strace-5.7.orig/tests-m32/net-sockaddr.c 2020-09-09 19:52:30.614668694 +0200 -+++ strace-5.7/tests-m32/net-sockaddr.c 2020-09-09 19:52:38.896673630 +0200 -@@ -9,6 +9,7 @@ - */ - - #include "tests.h" -+#include "pidns.h" - #include - #include - #include -@@ -40,18 +41,21 @@ - memset(un->sun_path, '0', sizeof(un->sun_path)); - unsigned int len = sizeof(*un); - int ret = connect(-1, (void *) un, len); -+ pidns_print_leader(); - printf("connect(-1, {sa_family=AF_UNIX, sun_path=\"%.*u\"}" - ", %u) = %d EBADF (%m)\n", - (int) sizeof(un->sun_path), 0, len, ret); - - un->sun_path[1] = 0; - ret = connect(-1, (void *) un, len); -+ pidns_print_leader(); - printf("connect(-1, {sa_family=AF_UNIX, sun_path=\"%u\"}, %u)" - " = %d EBADF (%m)\n", 0, len, ret); - - un->sun_path[0] = 0; - un->sun_path[2] = 1; - ret = connect(-1, (void *) un, len); -+ pidns_print_leader(); - printf("connect(-1, {sa_family=AF_UNIX, sun_path=@\"\\0\\001%.*u\"}" - ", %u) = %d EBADF (%m)\n", - (int) sizeof(un->sun_path) - 3, 0, len, ret); -@@ -61,12 +65,14 @@ - memset(un->sun_path, '0', sizeof(un->sun_path)); - len = sizeof(*un) + 2; - ret = connect(-1, (void *) un, len); -+ pidns_print_leader(); - printf("connect(-1, {sa_family=AF_UNIX, sun_path=\"%.*u\"}" - ", %u) = %d EBADF (%m)\n", - (int) sizeof(un->sun_path), 0, len, ret); - - un->sun_path[0] = 0; - ret = connect(-1, (void *) un, len); -+ pidns_print_leader(); - printf("connect(-1, {sa_family=AF_UNIX, sun_path=@\"%.*u\"}" - ", %u) = %d EBADF (%m)\n", - (int) sizeof(un->sun_path) - 1, 0, len, ret); -@@ -75,18 +81,21 @@ - un->sun_family = AF_UNIX; - len = sizeof(*un) - 2; - ret = connect(-1, (void *) un, len); -+ pidns_print_leader(); - printf("connect(-1, {sa_family=AF_UNIX, sun_path=\"%.*u\"}" - ", %u) = %d EBADF (%m)\n", - (int) sizeof(un->sun_path) - 2, 0, len, ret); - - un->sun_path[0] = 0; - ret = connect(-1, (void *) un, len); -+ pidns_print_leader(); - printf("connect(-1, {sa_family=AF_UNIX, sun_path=@\"%.*u\"}" - ", %u) = %d EBADF (%m)\n", - (int) sizeof(un->sun_path) - 3, 0, len, ret); - - len = sizeof(*un); - ret = connect(-1, (void *) un, len); -+ pidns_print_leader(); - printf("connect(-1, %p, %u) = %d EBADF (%m)\n", un, len, ret); - - un = tail_alloc(sizeof(struct sockaddr_storage)); -@@ -94,12 +103,14 @@ - memset(un->sun_path, '0', sizeof(un->sun_path)); - len = sizeof(struct sockaddr_storage) + 1; - ret = connect(-1, (void *) un, len); -+ pidns_print_leader(); - printf("connect(-1, {sa_family=AF_UNIX, sun_path=\"%.*u\"}" - ", %u) = %d EBADF (%m)\n", - (int) sizeof(un->sun_path), 0, len, ret); - - un->sun_path[0] = 0; - ret = connect(-1, (void *) un, len); -+ pidns_print_leader(); - printf("connect(-1, {sa_family=AF_UNIX, sun_path=@\"%.*u\"}" - ", %u) = %d EBADF (%m)\n", - (int) sizeof(un->sun_path) - 1, 0, len, ret); -@@ -117,6 +128,7 @@ - in->sin_addr.s_addr = inet_addr(h_addr); - unsigned int len = sizeof(*in); - int ret = connect(-1, (void *) in, len); -+ pidns_print_leader(); - printf("connect(-1, {sa_family=AF_INET, sin_port=htons(%hu)" - ", sin_addr=inet_addr(\"%s\")}, %u) = %d EBADF (%m)\n", - h_port, h_addr, len, ret); -@@ -127,6 +139,7 @@ - in->sin_addr.s_addr = inet_addr(h_addr); - len = sizeof(*in) + 4; - ret = connect(-1, (void *) in, len); -+ pidns_print_leader(); - printf("connect(-1, {sa_family=AF_INET, sin_port=htons(%hu)" - ", sin_addr=inet_addr(\"%s\")}, %u) = %d EBADF (%m)\n", - h_port, h_addr, len, ret); -@@ -137,6 +150,7 @@ - in->sin_addr.s_addr = 0; - len = sizeof(*in) - 4; - ret = connect(-1, (void *) in, len); -+ pidns_print_leader(); - printf("connect(-1, {sa_family=AF_INET, sa_data=\"%s\"}, %u)" - " = %d EBADF (%m)\n", - "\\0\\0\\0\\0\\0\\0\\377\\377\\377\\377", -@@ -144,6 +158,7 @@ - - len = sizeof(*in); - ret = connect(-1, (void *) in, len); -+ pidns_print_leader(); - printf("connect(-1, %p, %u) = %d EBADF (%m)\n", in, len, ret); - } - -@@ -155,6 +170,7 @@ - in6->sin6_scope_id = 0xfacefeed; - unsigned int len = sizeof(*in6); - int ret = connect(-1, (void *) in6, len); -+ pidns_print_leader(); - printf("connect(-1, {sa_family=AF_INET6, sin6_port=htons(%hu)" - ", sin6_flowinfo=htonl(%u)" - ", inet_pton(AF_INET6, \"%s\", &sin6_addr)" -@@ -166,7 +182,8 @@ - in6->sin6_scope_id = ifindex_lo(); - if (in6->sin6_scope_id) { - ret = connect(-1, (void *) in6, len); -- printf("connect(-1, {sa_family=AF_INET6, sin6_port=htons(%hu)" -+ pidns_print_leader(); -+ printf("connect(-1, {sa_family=AF_INET6, sin6_port=htons(%hu)" - ", sin6_flowinfo=htonl(%u)" - ", inet_pton(AF_INET6, \"%s\", &sin6_addr)" - ", sin6_scope_id=%s}, %u)" -@@ -191,6 +208,7 @@ - in6->sin6_scope_id = 0xfacefeed; - unsigned int len = sizeof(*in6); - int ret = connect(-1, (void *) in6, len); -+ pidns_print_leader(); - printf("connect(-1, {sa_family=AF_INET6, sin6_port=htons(%hu)" - ", sin6_flowinfo=htonl(%u)" - ", inet_pton(AF_INET6, \"%s\", &sin6_addr)" -@@ -209,6 +227,7 @@ - in6->sin6_scope_id = 0xfacefeed; - len = sizeof(*in6) + 4; - ret = connect(-1, (void *) in6, len); -+ pidns_print_leader(); - printf("connect(-1, {sa_family=AF_INET6, sin6_port=htons(%hu)" - ", sin6_flowinfo=htonl(%u)" - ", inet_pton(AF_INET6, \"%s\", &sin6_addr)" -@@ -223,6 +242,7 @@ - inet_pton(AF_INET6, h_addr, &in6->sin6_addr); - len = sizeof(*in6) - sizeof(in6->sin6_scope_id); - ret = connect(-1, (void *) in6, len); -+ pidns_print_leader(); - printf("connect(-1, {sa_family=AF_INET6, sin6_port=htons(%hu)" - ", sin6_flowinfo=htonl(%u)" - ", inet_pton(AF_INET6, \"%s\", &sin6_addr)}, %u)" -@@ -236,6 +256,7 @@ - memset(&in6->sin6_addr, '0', sizeof(in6->sin6_addr) - 4); - len = sizeof(*in6) - sizeof(in6->sin6_scope_id) - 4; - ret = connect(-1, (void *) in6, len); -+ pidns_print_leader(); - printf("connect(-1, {sa_family=AF_INET6" - ", sa_data=\"\\0\\0\\0\\0\\0\\000%.*u\"}, %u)" - " = %d EBADF (%m)\n", -@@ -244,6 +265,7 @@ - - len = sizeof(*in6) - sizeof(in6->sin6_scope_id); - ret = connect(-1, (void *) in6, len); -+ pidns_print_leader(); - printf("connect(-1, %p, %u) = %d EBADF (%m)\n", in6, len, ret); - } - -@@ -262,6 +284,7 @@ - void *ipx = tail_memdup(&c_ipx, sizeof(c_ipx)); - unsigned int len = sizeof(c_ipx); - int ret = connect(-1, ipx, len); -+ pidns_print_leader(); - printf("connect(-1, {sa_family=AF_IPX, sipx_port=htons(%u)" - ", sipx_network=htonl(%#x)" - ", sipx_node=[%#02x, %#02x, %#02x, %#02x, %#02x, %#02x]" -@@ -316,18 +339,21 @@ - fill_memory(sax, size); - sax->fsa_ax25.sax25_family = AF_AX25; - rc = connect(-1, sax_void, sizeof(struct sockaddr_ax25) - 1); -+ pidns_print_leader(); - printf("connect(-1, {sa_family=AF_AX25, sa_data=\"\\202\\203\\204\\205" - "\\206\\207\\210\\211\\212\\213\\214\\215\\216\"}, %zu) = %s\n", - sizeof(struct sockaddr_ax25) - 1, sprintrc(rc)); - - memcpy(sax, &ax25, sizeof(ax25)); - rc = connect(-1, sax_void, sizeof(struct sockaddr_ax25)); -+ pidns_print_leader(); - printf("connect(-1, {sa_family=AF_AX25, fsa_ax25={sax25_call=VALID-13" - ", sax25_ndigis=8}, fsa_digipeater=[/* ??? */]}, %zu) = %s\n", - sizeof(struct sockaddr_ax25), sprintrc(rc)); - - sax->fsa_ax25.sax25_ndigis = 0; - rc = connect(-1, sax_void, sizeof(struct sockaddr_ax25)); -+ pidns_print_leader(); - printf("connect(-1, {sa_family=AF_AX25, sax25_call=VALID-13" - ", sax25_ndigis=0}, %zu) = %s\n", - sizeof(struct sockaddr_ax25), sprintrc(rc)); -@@ -335,6 +361,7 @@ - sax->fsa_ax25.sax25_ndigis = 8; - size = sizeof(struct sockaddr_ax25) + sizeof(ax25_address) * 3 + 1; - rc = connect(-1, sax_void, size); -+ pidns_print_leader(); - printf("connect(-1, {sa_family=AF_AX25, fsa_ax25={sax25_call=VALID-13" - ", sax25_ndigis=8}, fsa_digipeater" - "=[{ax25_call=\"\\xa6\\xa0\\x82\\x40\\x86\\x8a\\x00\"" -@@ -348,6 +375,7 @@ - sax->fsa_digipeater[2].ax25_call[6] = 0x4; - size = sizeof(struct sockaddr_ax25) + sizeof(ax25_address) * 4; - rc = connect(-1, sax_void, size); -+ pidns_print_leader(); - printf("connect(-1, {sa_family=AF_AX25, fsa_ax25={sax25_call=VALID-13" - ", sax25_ndigis=8}, fsa_digipeater" - "=[{ax25_call=\"\\xa6\\xa0\\x82\\x40\\x86\\x8a\\x00\"" -@@ -365,6 +393,7 @@ - for (size_t i = 0; i < 3; i++) { - size = sizeof(ax25) + sizeof(ax25_address) * (i / 2); - rc = connect(-1, sax_void, size); -+ pidns_print_leader(); - printf("connect(-1, {sa_family=AF_AX25" - ", fsa_ax25={sax25_call=VALID-13, sax25_ndigis=%d}" - ", fsa_digipeater=[VALID2-7, OK-15, %s /* FINE-2 */" -@@ -427,12 +456,14 @@ - long rc; - - rc = connect(-1, x25_void, sizeof(c_x25) - 1); -+ pidns_print_leader(); - printf("connect(-1, {sa_family=AF_X25" - ", sa_data=\"0123456789abcde\"}, %zu) = %s\n", - sizeof(c_x25) - 1, sprintrc(rc)); - - for (size_t i = 0; i < 2; i++) { - rc = connect(-1, x25_void, sizeof(c_x25) + i); -+ pidns_print_leader(); - printf("connect(-1, {sa_family=AF_X25" - ", sx25_addr={x25_addr=\"0123456789abcde\"...}" - "}, %zu) = %s\n", -@@ -442,6 +473,7 @@ - struct sockaddr_x25 *const x25 = x25_void; - x25->sx25_addr.x25_addr[10] = '\0'; - rc = connect(-1, x25_void, sizeof(c_x25)); -+ pidns_print_leader(); - printf("connect(-1, {sa_family=AF_X25" - ", sx25_addr={x25_addr=\"0123456789\"}" - "}, %zu) = %s\n", -@@ -457,19 +489,21 @@ - nl->nl_groups = 0xfacefeed; - unsigned int len = sizeof(*nl); - int ret = connect(-1, (void *) nl, len); -+ pidns_print_leader(); - printf("connect(-1, {sa_family=AF_NETLINK, nl_pid=%d" - ", nl_groups=%#08x}, %u) = %d EBADF (%m)\n", - nl->nl_pid, nl->nl_groups, len, ret); - - nl = ((void *) nl) - 4; - nl->nl_family = AF_NETLINK; -- nl->nl_pid = 1234567890; -+ nl->nl_pid = getpid(); - nl->nl_groups = 0xfacefeed; - len = sizeof(*nl) + 4; - ret = connect(-1, (void *) nl, len); -- printf("connect(-1, {sa_family=AF_NETLINK, nl_pid=%d" -+ pidns_print_leader(); -+ printf("connect(-1, {sa_family=AF_NETLINK, nl_pid=%d%s" - ", nl_groups=%#08x}, %u) = %d EBADF (%m)\n", -- nl->nl_pid, nl->nl_groups, len, ret); -+ nl->nl_pid, pidns_pid2str(PT_TGID), nl->nl_groups, len, ret); - } - - static void -@@ -487,6 +521,7 @@ - void *ll = tail_memdup(&c_ll, sizeof(c_ll)); - unsigned int len = sizeof(c_ll); - int ret = connect(-1, ll, len); -+ pidns_print_leader(); - printf("connect(-1, {sa_family=AF_PACKET" - ", sll_protocol=htons(ETH_P_ALL)" - ", sll_ifindex=%u, sll_hatype=ARPHRD_ETHER" -@@ -502,6 +537,7 @@ - - ((struct sockaddr_ll *) ll)->sll_halen++; - ret = connect(-1, ll, len); -+ pidns_print_leader(); - printf("connect(-1, {sa_family=AF_PACKET" - ", sll_protocol=htons(ETH_P_ALL)" - ", sll_ifindex=%u, sll_hatype=ARPHRD_ETHER" -@@ -517,6 +553,7 @@ - - ((struct sockaddr_ll *) ll)->sll_halen = 0; - ret = connect(-1, ll, len); -+ pidns_print_leader(); - printf("connect(-1, {sa_family=AF_PACKET" - ", sll_protocol=htons(ETH_P_ALL)" - ", sll_ifindex=%u, sll_hatype=ARPHRD_ETHER" -@@ -526,6 +563,7 @@ - ((struct sockaddr_ll *) ll)->sll_ifindex = ifindex_lo(); - if (((struct sockaddr_ll *) ll)->sll_ifindex) { - ret = connect(-1, ll, len); -+ pidns_print_leader(); - printf("connect(-1, {sa_family=AF_PACKET" - ", sll_protocol=htons(ETH_P_ALL)" - ", sll_ifindex=%s" -@@ -549,11 +587,13 @@ - unsigned int len = sizeof(*hci); - - int ret = connect(-1, (void *) hci, 4); -+ pidns_print_leader(); - 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); -+ pidns_print_leader(); - printf("connect(-1, {sa_family=AF_BLUETOOTH, hci_dev=htobs(%hu)" - # ifdef HAVE_STRUCT_SOCKADDR_HCI_HCI_CHANNEL - ", hci_channel=HCI_CHANNEL_RAW" -@@ -572,6 +612,7 @@ - void *sco = tail_memdup(&c_sco, sizeof(c_sco)); - unsigned int len = sizeof(c_sco); - int ret = connect(-1, sco, len); -+ pidns_print_leader(); - printf("connect(-1, {sa_family=AF_BLUETOOTH" - ", sco_bdaddr=%02x:%02x:%02x:%02x:%02x:%02x" - "}, %u) = %d EBADF (%m)\n", -@@ -592,6 +633,7 @@ - void *rc = tail_memdup(&c_rc, sizeof(c_rc)); - unsigned int len = sizeof(c_rc); - int ret = connect(-1, rc, len); -+ pidns_print_leader(); - printf("connect(-1, {sa_family=AF_BLUETOOTH" - ", rc_bdaddr=%02x:%02x:%02x:%02x:%02x:%02x" - ", rc_channel=%u}, %u) = %d EBADF (%m)\n", -@@ -619,6 +661,7 @@ - unsigned int len = sizeof(c_l2); - - int ret = connect(-1, l2, len); -+ pidns_print_leader(); - printf("connect(-1, {sa_family=AF_BLUETOOTH" - ", l2_psm=htobs(L2CAP_PSM_DYN_START + %hu)" - ", l2_bdaddr=%02x:%02x:%02x:%02x:%02x:%02x" -@@ -640,6 +683,7 @@ - # endif - memcpy(l2, &c_l2, sizeof(c_l2)); - ret = connect(-1, l2, len); -+ pidns_print_leader(); - printf("connect(-1, {sa_family=AF_BLUETOOTH" - ", l2_psm=htobs(L2CAP_PSM_SDP)" - ", l2_bdaddr=%02x:%02x:%02x:%02x:%02x:%02x" -@@ -660,6 +704,7 @@ - # endif - memcpy(l2, &c_l2, sizeof(c_l2)); - ret = connect(-1, l2, len); -+ pidns_print_leader(); - printf("connect(-1, {sa_family=AF_BLUETOOTH" - ", l2_psm=htobs(0xbad /* L2CAP_PSM_??? */)" - ", l2_bdaddr=%02x:%02x:%02x:%02x:%02x:%02x" -@@ -677,6 +722,7 @@ - c_l2.l2_cid = htobs(0xffff); - memcpy(l2, &c_l2, 12); - ret = connect(-1, l2, 12); -+ pidns_print_leader(); - printf("connect(-1, {sa_family=AF_BLUETOOTH" - ", l2_psm=htobs(L2CAP_PSM_AUTO_END)" - ", l2_bdaddr=%02x:%02x:%02x:%02x:%02x:%02x" -@@ -700,6 +746,7 @@ - u.sa->sa_family = 0xff; - unsigned int len = sizeof(*u.st) + 8; - int ret = connect(-1, (void *) u.st, len); -+ pidns_print_leader(); - printf("connect(-1, {sa_family=%#x /* AF_??? */, sa_data=\"%.*u\"}" - ", %u) = %d EBADF (%m)\n", u.sa->sa_family, - (int) (sizeof(*u.st) - sizeof(u.sa->sa_family)), 0, len, ret); -@@ -707,11 +754,13 @@ - u.sa->sa_family = 0; - len = sizeof(u.sa->sa_family) + 1; - ret = connect(-1, (void *) u.st, len); -+ pidns_print_leader(); - printf("connect(-1, {sa_family=AF_UNSPEC, sa_data=\"0\"}, %u)" - " = %d EBADF (%m)\n", len, ret); - - u.sa->sa_family = AF_BLUETOOTH; - ret = connect(-1, (void *) u.st, len); -+ pidns_print_leader(); - printf("connect(-1, {sa_family=AF_BLUETOOTH, sa_data=\"0\"}, %u)" - " = %d EBADF (%m)\n", len, ret); - } -@@ -719,6 +768,8 @@ - int - main(void) - { -+ PIDNS_TEST_INIT; -+ - check_un(); - check_in(); - check_in6(); -@@ -735,6 +786,7 @@ - #endif - check_raw(); - -+ pidns_print_leader(); - puts("+++ exited with 0 +++"); - return 0; - } -Index: strace-5.7/tests-m32/netlink_audit--pidns-translation.c -=================================================================== ---- /dev/null 1970-01-01 00:00:00.000000000 +0000 -+++ strace-5.7/tests-m32/netlink_audit--pidns-translation.c 2020-09-09 19:52:38.896673630 +0200 -@@ -0,0 +1,2 @@ -+#define PIDNS_TRANSLATION -+#include "netlink_audit.c" -Index: strace-5.7/tests-m32/netlink_audit--pidns-translation.test -=================================================================== ---- /dev/null 1970-01-01 00:00:00.000000000 +0000 -+++ strace-5.7/tests-m32/netlink_audit--pidns-translation.test 2020-09-09 19:52:38.897673631 +0200 -@@ -0,0 +1,13 @@ -+#!/bin/sh -+# -+# Check pidns translation of NETLINK_SOCK_DIAG protocol decoding -+# -+# Copyright (c) 2020 The strace developers. -+# All rights reserved. -+# -+# SPDX-License-Identifier: LGPL-2.1-or-later -+ -+. "${srcdir=.}/init.sh" -+ -+run_prog ../netlink_netlink_diag -+test_pidns -e trace=sendto "$@" -Index: strace-5.7/tests-m32/netlink_audit.c -=================================================================== ---- strace-5.7.orig/tests-m32/netlink_audit.c 2020-09-09 19:52:30.615668694 +0200 -+++ strace-5.7/tests-m32/netlink_audit.c 2020-09-09 19:52:38.897673631 +0200 -@@ -7,6 +7,7 @@ - */ - - #include "tests.h" -+#include "pidns.h" - #include - #include - #include -@@ -17,18 +18,23 @@ - static void - test_nlmsg_type(const int fd) - { -+ PIDNS_TEST_INIT; -+ - long rc; - struct nlmsghdr nlh = { - .nlmsg_len = sizeof(nlh), - .nlmsg_type = AUDIT_GET, - .nlmsg_flags = NLM_F_REQUEST, -+ .nlmsg_pid = getpid(), - }; - - rc = sendto(fd, &nlh, sizeof(nlh), MSG_DONTWAIT, NULL, 0); -+ pidns_print_leader(); - printf("sendto(%d, {len=%u, type=AUDIT_GET" -- ", flags=NLM_F_REQUEST, seq=0, pid=0}" -+ ", flags=NLM_F_REQUEST, seq=0, pid=%d%s}" - ", %u, MSG_DONTWAIT, NULL, 0) = %s\n", -- fd, nlh.nlmsg_len, (unsigned) sizeof(nlh), sprintrc(rc)); -+ fd, nlh.nlmsg_len, nlh.nlmsg_pid, pidns_pid2str(PT_TGID), -+ (unsigned) sizeof(nlh), sprintrc(rc)); - } - - int main(void) -@@ -39,6 +45,7 @@ - - test_nlmsg_type(fd); - -+ pidns_print_leader(); - printf("+++ exited with 0 +++\n"); - - return 0; -Index: strace-5.7/tests-m32/pidfd_open--pidns-translation.c -=================================================================== ---- /dev/null 1970-01-01 00:00:00.000000000 +0000 -+++ strace-5.7/tests-m32/pidfd_open--pidns-translation.c 2020-09-09 19:52:38.897673631 +0200 -@@ -0,0 +1,2 @@ -+#define PIDNS_TRANSLATION -+#include "pidfd_open.c" -Index: strace-5.7/tests-m32/pidfd_open.c -=================================================================== ---- strace-5.7.orig/tests-m32/pidfd_open.c 2020-09-09 19:52:30.615668694 +0200 -+++ strace-5.7/tests-m32/pidfd_open.c 2020-09-09 19:52:38.897673631 +0200 -@@ -10,6 +10,7 @@ - - #include "tests.h" - #include "scno.h" -+#include "pidns.h" - - #ifdef __NR_pidfd_open - -@@ -37,6 +38,8 @@ - int - main(void) - { -+ PIDNS_TEST_INIT; -+ - # if defined PATH_TRACING || defined PRINT_PATHS - skip_if_unavailable("/proc/self/fd/"); - # endif -@@ -50,16 +53,19 @@ - - k_pidfd_open(0, 0); - # ifndef PATH_TRACING -+ pidns_print_leader(); - printf("pidfd_open(0, 0) = %s\n", errstr); - # endif - - k_pidfd_open(-1U, 0); - # ifndef PATH_TRACING -+ pidns_print_leader(); - printf("pidfd_open(-1, 0) = %s\n", errstr); - # endif - - k_pidfd_open(0, -1U); - # ifndef PATH_TRACING -+ pidns_print_leader(); - printf("pidfd_open(0, %#x) = %s\n", -1U, errstr); - # endif - -@@ -68,7 +74,10 @@ - - k_pidfd_open(pid, flags); - # ifndef PATH_TRACING -- printf("pidfd_open(%d, %#x) = %s\n", pid, flags, errstr); -+ const char *pid_str = pidns_pid2str(PT_TGID); -+ pidns_print_leader(); -+ printf("pidfd_open(%d%s, %#x) = %s\n", -+ pid, pid_str, flags, errstr); - # endif - - # ifdef PRINT_PATHS -@@ -80,17 +89,19 @@ - # endif - - # ifndef PATH_TRACING -- printf("pidfd_open(%d, 0) = " -+ pidns_print_leader(); -+ printf("pidfd_open(%d%s, 0) = " - # if defined PRINT_PIDFD -- "%ld\n", pid, rc, pid -+ "%ld\n", pid, pid_str, rc, pid - # elif defined PRINT_PATHS -- "%ld\n", pid, rc -+ "%ld\n", pid, pid_str, rc - # else -- "%s\n", pid, errstr -+ "%s\n", pid, pid_str, errstr - # endif - ); - # endif - -+ pidns_print_leader(); - puts("+++ exited with 0 +++"); - return 0; - } -Index: strace-5.7/tests-m32/pidfd_send_signal--pidns-translation.c -=================================================================== ---- /dev/null 1970-01-01 00:00:00.000000000 +0000 -+++ strace-5.7/tests-m32/pidfd_send_signal--pidns-translation.c 2020-09-09 19:52:38.897673631 +0200 -@@ -0,0 +1,2 @@ -+#define PIDNS_TRANSLATION -+#include "pidfd_send_signal.c" -Index: strace-5.7/tests-m32/pidfd_send_signal.c -=================================================================== ---- strace-5.7.orig/tests-m32/pidfd_send_signal.c 2020-09-09 19:52:30.615668694 +0200 -+++ strace-5.7/tests-m32/pidfd_send_signal.c 2020-09-09 19:52:38.898673631 +0200 -@@ -10,6 +10,7 @@ - #include "tests.h" - #include - #include "scno.h" -+#include "pidns.h" - - #ifdef __NR_pidfd_send_signal - -@@ -36,6 +37,8 @@ - int - main(void) - { -+ PIDNS_TEST_INIT; -+ - static const char null_path[] = "/dev/null"; - - int fd = open(null_path, O_RDONLY); -@@ -46,19 +49,23 @@ - const void *esi = (const void *) si + 1; - - sys_pidfd_send_signal(fd, SIGUSR1, esi, 0); -+ pidns_print_leader(); - printf("pidfd_send_signal(%d, SIGUSR1, %p, 0) = %s\n", - fd, esi, errstr); - - si->si_signo = SIGUSR1; - si->si_code = SI_QUEUE; -+ si->si_pid = getpid(); - - sys_pidfd_send_signal(fd, SIGUSR2, si, -1); -+ pidns_print_leader(); - printf("pidfd_send_signal(%d, SIGUSR2, {si_signo=SIGUSR1" -- ", si_code=SI_QUEUE, si_errno=%u, si_pid=%d, si_uid=%d" -+ ", si_code=SI_QUEUE, si_errno=%u, si_pid=%d%s, si_uid=%d" - ", si_value={int=%d, ptr=%p}}, %#x) = %s\n", -- fd, si->si_errno, si->si_pid, si->si_uid, si->si_int, si->si_ptr, -- -1U, errstr); -+ fd, si->si_errno, si->si_pid, pidns_pid2str(PT_TGID), si->si_uid, -+ si->si_int, si->si_ptr, -1U, errstr); - -+ pidns_print_leader(); - puts("+++ exited with 0 +++"); - return 0; - } -Index: strace-5.7/tests-m32/pidns-cache.c -=================================================================== ---- /dev/null 1970-01-01 00:00:00.000000000 +0000 -+++ strace-5.7/tests-m32/pidns-cache.c 2020-09-09 19:52:38.898673631 +0200 -@@ -0,0 +1,62 @@ -+/* -+ * Copyright (c) 2020 The strace developers. -+ * All rights reserved. -+ * -+ * SPDX-License-Identifier: GPL-2.0-or-later -+ */ -+ -+#include "tests.h" -+#include "scno.h" -+#include "pidns.h" -+ -+#if defined __NR_getpid && (!defined __NR_getxpid || __NR_getxpid != __NR_getpid) -+ -+# include -+# include -+# include -+ -+# define SYSCALL_COUNT 1000 -+ -+/** -+ * Max ratio of the execution time with and without pidns translation. -+ */ -+# define MAX_TIME_RATIO 20 -+ -+static long -+execute_syscalls(void) -+{ -+ /* Load our PID in the cache */ -+ syscall(__NR_getpid); -+ -+ struct timeval stop, start; -+ gettimeofday(&start, NULL); -+ -+ for (int i = 0; i < SYSCALL_COUNT; i++) -+ syscall(__NR_getpid); -+ -+ gettimeofday(&stop, NULL); -+ -+ return (stop.tv_usec - start.tv_usec) + -+ (stop.tv_sec - start.tv_sec) * 1000000; -+} -+ -+int -+main(void) -+{ -+ long max_us = execute_syscalls() * MAX_TIME_RATIO; -+ -+ pidns_test_init(); -+ -+ long us = execute_syscalls(); -+ if (us > max_us) -+ error_msg_and_fail("pidns translation took too long: %ld us " -+ "(max: %ld us)", us, max_us); -+ -+ return 0; -+} -+ -+#else -+ -+SKIP_MAIN_UNDEFINED("__NR_getpid") -+ -+#endif -Index: strace-5.7/tests-m32/pidns-cache.test -=================================================================== ---- /dev/null 1970-01-01 00:00:00.000000000 +0000 -+++ strace-5.7/tests-m32/pidns-cache.test 2020-09-09 19:52:38.898673631 +0200 -@@ -0,0 +1,15 @@ -+#!/bin/sh -+# -+# Test pidns translation cache. -+# -+# Copyright (c) 2020 The strace developers. -+# All rights reserved. -+# -+# SPDX-License-Identifier: GPL-2.0-or-later -+ -+. "${srcdir=.}/init.sh" -+ -+check_prog timeout -+ -+run_prog > /dev/null -+run_strace --pidns-translation -f -e trace=getpid $args -Index: strace-5.7/tests-m32/prlimit64--pidns-translation.c -=================================================================== ---- /dev/null 1970-01-01 00:00:00.000000000 +0000 -+++ strace-5.7/tests-m32/prlimit64--pidns-translation.c 2020-09-09 19:52:38.898673631 +0200 -@@ -0,0 +1,2 @@ -+#define PIDNS_TRANSLATION -+#include "prlimit64.c" -Index: strace-5.7/tests-m32/prlimit64.c -=================================================================== ---- strace-5.7.orig/tests-m32/prlimit64.c 2020-09-09 19:52:30.616668695 +0200 -+++ strace-5.7/tests-m32/prlimit64.c 2020-09-09 19:52:38.898673631 +0200 -@@ -19,6 +19,7 @@ - # include - # include - -+# include "pidns.h" - # include "xlat.h" - # include "xlat/resources.h" - -@@ -42,8 +43,11 @@ - int - main(void) - { -+ PIDNS_TEST_INIT; -+ - unsigned long pid = - (unsigned long) 0xdefaced00000000ULL | (unsigned) getpid(); -+ const char *pid_str = pidns_pid2str(PT_TGID); - uint64_t *const rlimit = tail_alloc(sizeof(*rlimit) * 2); - const struct xlat_data *xlat; - size_t i = 0; -@@ -54,18 +58,23 @@ - - unsigned long res = 0xfacefeed00000000ULL | xlat->val; - long rc = syscall(__NR_prlimit64, pid, res, 0, rlimit); -+ pidns_print_leader(); - if (rc) -- printf("prlimit64(%d, %s, NULL, %p) = %ld %s (%m)\n", -- (unsigned) pid, xlat->str, rlimit, -+ printf("prlimit64(%d%s, %s, NULL, %p) =" -+ " %ld %s (%m)\n", -+ (unsigned) pid, pid_str, -+ xlat->str, rlimit, - rc, errno2name()); - else -- printf("prlimit64(%d, %s, NULL" -+ printf("prlimit64(%d%s, %s, NULL" - ", {rlim_cur=%s, rlim_max=%s}) = 0\n", -- (unsigned) pid, xlat->str, -+ (unsigned) pid, pid_str, -+ xlat->str, - sprint_rlim(rlimit[0]), - sprint_rlim(rlimit[1])); - } - -+ pidns_print_leader(); - puts("+++ exited with 0 +++"); - return 0; - } -Index: strace-5.7/tests-m32/process_vm_readv--pidns-translation.c -=================================================================== ---- /dev/null 1970-01-01 00:00:00.000000000 +0000 -+++ strace-5.7/tests-m32/process_vm_readv--pidns-translation.c 2020-09-09 19:52:38.899673632 +0200 -@@ -0,0 +1,2 @@ -+#define PIDNS_TRANSLATION -+#include "process_vm_readv.c" -Index: strace-5.7/tests-m32/process_vm_readv_writev.c -=================================================================== ---- strace-5.7.orig/tests-m32/process_vm_readv_writev.c 2020-09-09 19:52:30.616668695 +0200 -+++ strace-5.7/tests-m32/process_vm_readv_writev.c 2020-09-09 19:52:38.899673632 +0200 -@@ -12,6 +12,7 @@ - #include - #include - #include -+#include "pidns.h" - - #if OP_WR - # define in_iovec rmt_iovec -@@ -121,7 +122,7 @@ - } - - static void --do_call(kernel_ulong_t pid, -+do_call(kernel_ulong_t pid, enum pid_type pid_type, - kernel_ulong_t local_iov, const char *local_arg, - kernel_ulong_t liovcnt, - kernel_ulong_t remote_iov, const char *remote_arg, -@@ -135,7 +136,8 @@ - flags); - errstr = sprintrc(rc); - -- printf("%s(%d, ", OP_STR, (int) pid); -+ pidns_print_leader(); -+ printf("%s(%d%s, ", OP_STR, (int) pid, pidns_pid2str(pid_type)); - - if (pr_iov) - pr_iov((const struct iovec *) (uintptr_t) local_iov, local_arg, -@@ -164,6 +166,8 @@ - int - main(void) - { -+ PIDNS_TEST_INIT; -+ - enum { - SIZE_11 = 2, - SIZE_12 = 3, -@@ -243,18 +247,18 @@ - fill_memory_ex(data2_out, SIZE_2, SEGM2_BASE, SIZE_2); - - -- do_call(bogus_pid, (kernel_ulong_t) (uintptr_t) ARG_STR(NULL), -+ do_call(bogus_pid, PT_NONE, (kernel_ulong_t) (uintptr_t) ARG_STR(NULL), - bogus_iovcnt1, (kernel_ulong_t) (uintptr_t) ARG_STR(NULL), - bogus_iovcnt2, bogus_flags, NULL); - -- do_call(my_pid, ptr_cast(bogus_iov + ARRAY_SIZE(bogus_iovec)), -+ do_call(my_pid, PT_TGID, ptr_cast(bogus_iov + ARRAY_SIZE(bogus_iovec)), - "[]", 0, ptr_cast(in_iov + ARRAY_SIZE(in_iovec)), "[]", - 0, 0, NULL); -- do_call(my_pid, ptr_cast(bogus_iov + ARRAY_SIZE(bogus_iovec)), NULL, -- bogus_iovcnt1, ptr_cast(in_iov + ARRAY_SIZE(in_iovec)), NULL, -- bogus_iovcnt2, 0, print_iov); -+ do_call(my_pid, PT_TGID, ptr_cast(bogus_iov + ARRAY_SIZE(bogus_iovec)), -+ NULL, bogus_iovcnt1, ptr_cast(in_iov + ARRAY_SIZE(in_iovec)), -+ NULL, bogus_iovcnt2, 0, print_iov); - -- do_call(my_pid, ptr_cast(bogus_iov), (char *) &bogus_arg, -+ do_call(my_pid, PT_TGID, ptr_cast(bogus_iov), (char *) &bogus_arg, - ARRAY_SIZE(bogus_iovec), ptr_cast(rmt_iov + 2), - (char *) &rmt_arg_cut, ARRAY_SIZE(rmt_iovec) - 2, 0, print_iov); - -@@ -263,7 +267,7 @@ - lcl_arg_cut.check_rc = 1; - #endif - -- do_call(my_pid, ptr_cast(lcl_iov + 2), (char *) &lcl_arg_cut, -+ do_call(my_pid, PT_TGID, ptr_cast(lcl_iov + 2), (char *) &lcl_arg_cut, - ARRAY_SIZE(lcl_iovec) - 1, ptr_cast(bogus_iov + 2), - (char *) &bogus_arg_cut, ARRAY_SIZE(bogus_iovec) - 1, 0, - print_iov); -@@ -273,15 +277,16 @@ - rmt_arg_cut.addr_term = 1; - rmt_arg_cut.count = 5; - -- do_call(my_pid, ptr_cast(lcl_iov + 2), (char *) &lcl_arg_cut, -+ do_call(my_pid, PT_TGID, ptr_cast(lcl_iov + 2), (char *) &lcl_arg_cut, - ARRAY_SIZE(lcl_iovec) - 2, ptr_cast(rmt_iov + 1), - (char *) &rmt_arg_cut, ARRAY_SIZE(rmt_iovec), 0, print_iov); - - /* Correct call */ -- do_call(my_pid, ptr_cast(lcl_iov), (char *) &lcl_arg, -+ do_call(my_pid, PT_TGID, ptr_cast(lcl_iov), (char *) &lcl_arg, - ARRAY_SIZE(lcl_iovec), ptr_cast(rmt_iov), (char *) &rmt_arg, - ARRAY_SIZE(rmt_iovec), 0, print_iov); - -+ pidns_print_leader(); - puts("+++ exited with 0 +++"); - - return 0; -Index: strace-5.7/tests-m32/process_vm_writev--pidns-translation.c -=================================================================== ---- /dev/null 1970-01-01 00:00:00.000000000 +0000 -+++ strace-5.7/tests-m32/process_vm_writev--pidns-translation.c 2020-09-09 19:52:38.899673632 +0200 -@@ -0,0 +1,2 @@ -+#define PIDNS_TRANSLATION -+#include "process_vm_writev.c" -Index: strace-5.7/tests-m32/rt_sigqueueinfo--pidns-translation.c -=================================================================== ---- /dev/null 1970-01-01 00:00:00.000000000 +0000 -+++ strace-5.7/tests-m32/rt_sigqueueinfo--pidns-translation.c 2020-09-09 19:52:38.899673632 +0200 -@@ -0,0 +1,2 @@ -+#define PIDNS_TRANSLATION -+#include "rt_sigqueueinfo.c" -Index: strace-5.7/tests-m32/rt_sigqueueinfo.c -=================================================================== ---- strace-5.7.orig/tests-m32/rt_sigqueueinfo.c 2020-09-09 19:52:30.617668695 +0200 -+++ strace-5.7/tests-m32/rt_sigqueueinfo.c 2020-09-09 19:52:38.899673632 +0200 -@@ -7,6 +7,7 @@ - */ - - #include "tests.h" -+#include "pidns.h" - #include - #include - #include -@@ -15,6 +16,8 @@ - int - main(void) - { -+ PIDNS_TEST_INIT; -+ - struct sigaction sa = { - .sa_handler = SIG_IGN - }; -@@ -22,15 +25,19 @@ - .sival_ptr = (void *) (unsigned long) 0xdeadbeefbadc0dedULL - }; - pid_t pid = getpid(); -+ const char *pid_str = pidns_pid2str(PT_TGID); - - assert(sigaction(SIGUSR1, &sa, NULL) == 0); - if (sigqueue(pid, SIGUSR1, value)) - perror_msg_and_skip("sigqueue"); -- printf("rt_sigqueueinfo(%u, SIGUSR1, {si_signo=SIGUSR1, " -- "si_code=SI_QUEUE, si_pid=%d, si_uid=%d, " -+ pidns_print_leader(); -+ printf("rt_sigqueueinfo(%d%s, SIGUSR1, {si_signo=SIGUSR1, " -+ "si_code=SI_QUEUE, si_pid=%d%s, si_uid=%u, " - "si_value={int=%d, ptr=%p}}) = 0\n", -- pid, pid, getuid(), value.sival_int, value.sival_ptr); -- printf("+++ exited with 0 +++\n"); -+ pid, pid_str, pid, pid_str, -+ getuid(), value.sival_int, value.sival_ptr); -+ pidns_print_leader(); -+ puts("+++ exited with 0 +++"); - - return 0; - } -Index: strace-5.7/tests-m32/rt_tgsigqueueinfo--pidns-translation.c -=================================================================== ---- /dev/null 1970-01-01 00:00:00.000000000 +0000 -+++ strace-5.7/tests-m32/rt_tgsigqueueinfo--pidns-translation.c 2020-09-09 19:52:38.900673633 +0200 -@@ -0,0 +1,2 @@ -+#define PIDNS_TRANSLATION -+#include "rt_tgsigqueueinfo.c" -Index: strace-5.7/tests-m32/rt_tgsigqueueinfo.c -=================================================================== ---- strace-5.7.orig/tests-m32/rt_tgsigqueueinfo.c 2020-09-09 19:52:30.617668695 +0200 -+++ strace-5.7/tests-m32/rt_tgsigqueueinfo.c 2020-09-09 19:52:38.900673633 +0200 -@@ -10,8 +10,9 @@ - - #include "tests.h" - #include "scno.h" -+#include "pidns.h" - --#ifdef __NR_rt_tgsigqueueinfo -+#if defined __NR_rt_tgsigqueueinfo && defined __NR_gettid - - # include - # include -@@ -20,11 +21,11 @@ - # include - - static long --k_tgsigqueueinfo(const pid_t pid, const int sig, const void *const info) -+k_tgsigqueueinfo(const pid_t tgid, const int tid, const int sig, const void *const info) - { - return syscall(__NR_rt_tgsigqueueinfo, -- F8ILL_KULONG_MASK | pid, -- F8ILL_KULONG_MASK | pid, -+ F8ILL_KULONG_MASK | tgid, -+ F8ILL_KULONG_MASK | tid, - F8ILL_KULONG_MASK | sig, - info); - } -@@ -32,6 +33,8 @@ - int - main(void) - { -+ PIDNS_TEST_INIT; -+ - const struct sigaction sa = { - .sa_handler = SIG_IGN - }; -@@ -48,17 +51,22 @@ - info->si_value.sival_ptr = - (void *) (unsigned long) 0xdeadbeeffacefeedULL; - -- if (k_tgsigqueueinfo(info->si_pid, SIGUSR1, info)) -+ if (k_tgsigqueueinfo(getpid(), syscall(__NR_gettid), SIGUSR1, info)) - (errno == ENOSYS ? perror_msg_and_skip : perror_msg_and_fail)( - "rt_tgsigqueueinfo"); - -- printf("rt_tgsigqueueinfo(%u, %u, %s, {si_signo=%s" -- ", si_code=SI_QUEUE, si_errno=ENOENT, si_pid=%d" -+ pidns_print_leader(); -+ printf("rt_tgsigqueueinfo(%d%s, %d%s, %s, {si_signo=%s" -+ ", si_code=SI_QUEUE, si_errno=ENOENT, si_pid=%d%s" - ", si_uid=%d, si_value={int=%d, ptr=%p}}) = 0\n", -- info->si_pid, info->si_pid, "SIGUSR1", "SIGUSR1", -- info->si_pid, info->si_uid, info->si_value.sival_int, -+ info->si_pid, pidns_pid2str(PT_TGID), -+ info->si_pid, pidns_pid2str(PT_TID), -+ "SIGUSR1", "SIGUSR1", -+ info->si_pid, pidns_pid2str(PT_TGID), -+ info->si_uid, info->si_value.sival_int, - info->si_value.sival_ptr); - -+ pidns_print_leader(); - puts("+++ exited with 0 +++"); - return 0; - } -Index: strace-5.7/tests-m32/sched_xetaffinity--pidns-translation.c -=================================================================== ---- /dev/null 1970-01-01 00:00:00.000000000 +0000 -+++ strace-5.7/tests-m32/sched_xetaffinity--pidns-translation.c 2020-09-09 19:52:38.900673633 +0200 -@@ -0,0 +1,2 @@ -+#define PIDNS_TRANSLATION -+#include "sched_xetaffinity.c" -Index: strace-5.7/tests-m32/sched_xetaffinity.c -=================================================================== ---- strace-5.7.orig/tests-m32/sched_xetaffinity.c 2020-09-09 19:52:30.618668696 +0200 -+++ strace-5.7/tests-m32/sched_xetaffinity.c 2020-09-09 19:52:38.900673633 +0200 -@@ -10,6 +10,7 @@ - - #include "tests.h" - #include "scno.h" -+#include "pidns.h" - #include - - #if defined __NR_sched_getaffinity && defined __NR_sched_setaffinity \ -@@ -41,8 +42,11 @@ - int - main(void) - { -+ PIDNS_TEST_INIT; -+ - unsigned int cpuset_size = 1; - const pid_t pid = getpid(); -+ const char *pid_str = pidns_pid2str(PT_TGID); - - while (cpuset_size) { - assert(getaffinity(pid, cpuset_size, NULL) == -1); -@@ -50,18 +54,21 @@ - break; - if (EINVAL != errno) - perror_msg_and_skip("sched_getaffinity"); -- printf("sched_getaffinity(%d, %u, NULL) = %s\n", -- pid, cpuset_size, errstr); -+ pidns_print_leader(); -+ printf("sched_getaffinity(%d%s, %u, NULL) = %s\n", -+ pid, pid_str, cpuset_size, errstr); - cpuset_size <<= 1; - } - assert(cpuset_size); -- printf("sched_getaffinity(%d, %u, NULL) = %s\n", -- pid, cpuset_size, errstr); -+ pidns_print_leader(); -+ printf("sched_getaffinity(%d%s, %u, NULL) = %s\n", -+ pid, pid_str, cpuset_size, errstr); - - cpu_set_t *cpuset = tail_alloc(cpuset_size); - getaffinity(pid, cpuset_size, cpuset + 1); -- printf("sched_getaffinity(%d, %u, %p) = %s\n", -- pid, cpuset_size, cpuset + 1, errstr); -+ pidns_print_leader(); -+ printf("sched_getaffinity(%d%s, %u, %p) = %s\n", -+ pid, pid_str, cpuset_size, cpuset + 1, errstr); - - int ret_size = getaffinity(pid, cpuset_size, cpuset); - if (ret_size < 0) -@@ -69,7 +76,8 @@ - pid, (unsigned) cpuset_size, cpuset, errstr); - assert(ret_size <= (int) cpuset_size); - -- printf("sched_getaffinity(%d, %u, [", pid, cpuset_size); -+ pidns_print_leader(); -+ printf("sched_getaffinity(%d%s, %u, [", pid, pid_str, cpuset_size); - const char *sep; - unsigned int i, cpu; - for (i = 0, cpu = 0, sep = ""; i < (unsigned) ret_size * 8; ++i) { -@@ -85,8 +93,9 @@ - CPU_SET_S(cpu, cpuset_size, cpuset); - if (setaffinity(pid, cpuset_size, cpuset)) - perror_msg_and_skip("sched_setaffinity"); -- printf("sched_setaffinity(%d, %u, [%u]) = 0\n", -- pid, cpuset_size, cpu); -+ pidns_print_leader(); -+ printf("sched_setaffinity(%d%s, %u, [%u]) = 0\n", -+ pid, pid_str, cpuset_size, cpu); - - const unsigned int big_size = cpuset_size < 128 ? 128 : cpuset_size * 2; - cpuset = tail_alloc(big_size); -@@ -95,7 +104,8 @@ - perror_msg_and_fail("sched_getaffinity(%d, %u, %p) = %s\n", - pid, big_size, cpuset, errstr); - assert(ret_size <= (int) big_size); -- printf("sched_getaffinity(%d, %u, [", pid, big_size); -+ pidns_print_leader(); -+ printf("sched_getaffinity(%d%s, %u, [", pid, pid_str, big_size); - for (i = 0, sep = ""; i < (unsigned) ret_size * 8; ++i) { - if (CPU_ISSET_S(i, (unsigned) ret_size, cpuset)) { - printf("%s%u", sep, i); -@@ -104,6 +114,7 @@ - } - printf("]) = %s\n", errstr); - -+ pidns_print_leader(); - puts("+++ exited with 0 +++"); - return 0; - } -Index: strace-5.7/tests-m32/sched_xetattr--pidns-translation.c -=================================================================== ---- /dev/null 1970-01-01 00:00:00.000000000 +0000 -+++ strace-5.7/tests-m32/sched_xetattr--pidns-translation.c 2020-09-09 19:52:38.900673633 +0200 -@@ -0,0 +1,2 @@ -+#define PIDNS_TRANSLATION -+#include "sched_xetattr.c" -Index: strace-5.7/tests-m32/sched_xetattr.c -=================================================================== ---- strace-5.7.orig/tests-m32/sched_xetattr.c 2020-09-09 19:52:30.618668696 +0200 -+++ strace-5.7/tests-m32/sched_xetattr.c 2020-09-09 19:52:38.901673633 +0200 -@@ -15,6 +15,7 @@ - # include - # include - # include -+# include "pidns.h" - # include "sched_attr.h" - # include "xlat.h" - # include "xlat/schedulers.h" -@@ -41,6 +42,8 @@ - int - main(void) - { -+ PIDNS_TEST_INIT; -+ - static const kernel_ulong_t bogus_pid = - (kernel_ulong_t) 0xdefacedfacefeedULL; - static const kernel_ulong_t bogus_size = -@@ -48,20 +51,28 @@ - static const kernel_ulong_t bogus_flags = - (kernel_ulong_t) 0xdefaceddeadc0deULL; - -+ const int pid = getpid(); -+ const char *pid_str = pidns_pid2str(PT_TGID); -+ - TAIL_ALLOC_OBJECT_CONST_PTR(struct sched_attr, attr); - TAIL_ALLOC_OBJECT_CONST_PTR(unsigned int, psize); - void *const efault = attr + 1; - -- sys_sched_getattr(0, 0, 0, 0); -- printf("sched_getattr(0, NULL, 0, 0) = %s\n", errstr); -+ sys_sched_getattr(pid, 0, 0, 0); -+ pidns_print_leader(); -+ printf("sched_getattr(%d%s, NULL, 0, 0) = %s\n", -+ pid, pid_str, errstr); - - sys_sched_getattr(0, (unsigned long) attr, 0, 0); -+ pidns_print_leader(); - printf("sched_getattr(0, %p, 0, 0) = %s\n", attr, errstr); - - sys_sched_getattr(bogus_pid, 0, 0, 0); -+ pidns_print_leader(); - printf("sched_getattr(%d, NULL, 0, 0) = %s\n", (int) bogus_pid, errstr); - - sys_sched_getattr(-1U, (unsigned long) attr, bogus_size, bogus_flags); -+ pidns_print_leader(); - printf("sched_getattr(-1, %p, %s%u, %u) = %s\n", - attr, - # if defined __arm64__ || defined __aarch64__ -@@ -72,11 +83,13 @@ - (unsigned) bogus_size, (unsigned) bogus_flags, errstr); - - sys_sched_getattr(0, (unsigned long) efault, SCHED_ATTR_MIN_SIZE, 0); -+ pidns_print_leader(); - printf("sched_getattr(0, %p, %u, 0) = %s\n", - efault, (unsigned) SCHED_ATTR_MIN_SIZE, errstr); - - if (sys_sched_getattr(0, (unsigned long) attr, SCHED_ATTR_MIN_SIZE, 0)) - perror_msg_and_skip("sched_getattr"); -+ pidns_print_leader(); - printf("sched_getattr(0, {size=%u, sched_policy=", attr->size); - printxval(schedulers, attr->sched_policy, NULL); - printf(", sched_flags=%s, sched_nice=%d, sched_priority=%u" -@@ -91,11 +104,13 @@ - (unsigned) SCHED_ATTR_MIN_SIZE); - - sys_sched_getattr(0, (unsigned long) efault, sizeof(*attr), 0); -+ pidns_print_leader(); - printf("sched_getattr(0, %p, %u, 0) = %s\n", - efault, (unsigned) sizeof(*attr), errstr); - - if (sys_sched_getattr(0, (unsigned long) attr, sizeof(*attr), 0)) - perror_msg_and_skip("sched_getattr"); -+ pidns_print_leader(); - printf("sched_getattr(0, {size=%u, sched_policy=", attr->size); - printxval(schedulers, attr->sched_policy, NULL); - printf(", sched_flags=%s, sched_nice=%d, sched_priority=%u" -@@ -121,11 +136,13 @@ - F8ILL_KULONG_MASK | sizeof(*attr), F8ILL_KULONG_MASK); - # if defined __arm64__ || defined __aarch64__ - if (rc) { -+ pidns_print_leader(); - printf("sched_getattr(0, %p, 0xffffffff<<32|%u, 0) = %s\n", - attr, (unsigned) sizeof(*attr), errstr); - } else - # endif - { -+ pidns_print_leader(); - printf("sched_getattr(0, {size=%u, sched_policy=", attr->size); - printxval(schedulers, attr->sched_policy, NULL); - printf(", sched_flags=%s, sched_nice=%d, sched_priority=%u" -@@ -146,13 +163,16 @@ - } - - sys_sched_setattr(bogus_pid, 0, 0); -+ pidns_print_leader(); - printf("sched_setattr(%d, NULL, 0) = %s\n", (int) bogus_pid, errstr); - - attr->sched_flags |= 1; - -- if (sys_sched_setattr(0, (unsigned long) attr, 0)) -+ if (sys_sched_setattr(pid, (unsigned long) attr, 0)) - perror_msg_and_skip("sched_setattr"); -- printf("sched_setattr(0, {size=%u, sched_policy=", attr->size); -+ pidns_print_leader(); -+ printf("sched_setattr(%d%s, {size=%u, sched_policy=", -+ pid, pid_str, attr->size); - printxval(schedulers, attr->sched_policy, NULL); - printf(", sched_flags=%s, sched_nice=%d, sched_priority=%u" - ", sched_runtime=%" PRIu64 ", sched_deadline=%" PRIu64 -@@ -172,6 +192,7 @@ - - sys_sched_setattr(F8ILL_KULONG_MASK, (unsigned long) attr, - F8ILL_KULONG_MASK); -+ pidns_print_leader(); - printf("sched_setattr(0, {size=%u, sched_policy=", attr->size); - printxval(schedulers, attr->sched_policy, NULL); - printf(", sched_flags=%s, sched_nice=%d, sched_priority=%u" -@@ -193,11 +214,13 @@ - *psize = attr->size; - - sys_sched_setattr(0, (unsigned long) psize, 0); -+ pidns_print_leader(); - printf("sched_setattr(0, %p, 0) = %s\n", psize, errstr); - - attr->size = 0; - - sys_sched_setattr(0, (unsigned long) attr, 0); -+ pidns_print_leader(); - printf("sched_setattr(0, {size=%u, sched_policy=", attr->size); - printxval(schedulers, attr->sched_policy, NULL); - printf(", sched_flags=%s, sched_nice=%d, sched_priority=%u" -@@ -213,12 +236,14 @@ - attr->size = 1; - - sys_sched_setattr(0, (unsigned long) attr, 0); -+ pidns_print_leader(); - printf("sched_setattr(0, {size=%u} => {size=%u}, 0) = %s\n", - 1, attr->size, errstr); - - attr->size = SCHED_ATTR_MIN_SIZE - 1; - - sys_sched_setattr(0, (unsigned long) attr, 0); -+ pidns_print_leader(); - printf("sched_setattr(0, {size=%u} => {size=%u}, 0) = %s\n", - SCHED_ATTR_MIN_SIZE - 1, attr->size, errstr); - -@@ -232,6 +257,7 @@ - attr->sched_period = 0xded1ca7edda7aca7ULL; - - sys_sched_setattr(bogus_pid, (unsigned long) attr, bogus_flags); -+ pidns_print_leader(); - printf("sched_setattr(%d, {size=%u, sched_policy=%#x /* SCHED_??? */, " - "sched_flags=%#" PRIx64 " /* SCHED_FLAG_??? */, " - "sched_nice=%d, sched_priority=%u, sched_runtime=%" PRIu64 ", " -@@ -274,6 +300,7 @@ - attr->sched_period = 0xded1ca7edda7aca7ULL; - - sys_sched_setattr(bogus_pid, (unsigned long) attr, bogus_flags); -+ pidns_print_leader(); - printf("sched_setattr(%d, {size=%u, sched_policy=%#x /* SCHED_??? */, " - "sched_flags=SCHED_FLAG_RESET_ON_FORK|SCHED_FLAG_RECLAIM|" - "SCHED_FLAG_DL_OVERRUN|0x80, " -@@ -296,11 +323,13 @@ - const kernel_ulong_t ill = f8ill_ptr_to_kulong(attr); - - sys_sched_getattr(0, ill, sizeof(*attr), 0); -+ pidns_print_leader(); - printf("sched_getattr(0, %#llx, %u, 0) = %s\n", - (unsigned long long) ill, (unsigned) sizeof(*attr), - errstr); - - sys_sched_setattr(0, ill, 0); -+ pidns_print_leader(); - printf("sched_setattr(0, %#llx, 0) = %s\n", - (unsigned long long) ill, errstr); - } -@@ -310,6 +339,7 @@ - attr->sched_flags = 0x8fULL; - - sys_sched_setattr(bogus_pid, (unsigned long) attr, bogus_flags); -+ pidns_print_leader(); - printf("sched_setattr(%d, {size=%u, " - "sched_flags=SCHED_FLAG_RESET_ON_FORK|SCHED_FLAG_RECLAIM|" - "SCHED_FLAG_DL_OVERRUN|SCHED_FLAG_KEEP_POLICY|0x80, " -@@ -329,11 +359,13 @@ - const kernel_ulong_t ill = f8ill_ptr_to_kulong(attr); - - sys_sched_getattr(0, ill, sizeof(*attr), 0); -+ pidns_print_leader(); - printf("sched_getattr(0, %#llx, %u, 0) = %s\n", - (unsigned long long) ill, (unsigned) sizeof(*attr), - errstr); - - sys_sched_setattr(0, ill, 0); -+ pidns_print_leader(); - printf("sched_setattr(0, %#llx, 0) = %s\n", - (unsigned long long) ill, errstr); - } -@@ -342,6 +374,7 @@ - attr->sched_flags = 0xe7ULL; - - sys_sched_setattr(bogus_pid, (unsigned long) attr, bogus_flags); -+ pidns_print_leader(); - printf("sched_setattr(%d, {size=%u, sched_policy=%#x /* SCHED_??? */, " - "sched_flags=SCHED_FLAG_RESET_ON_FORK|SCHED_FLAG_RECLAIM|" - "SCHED_FLAG_DL_OVERRUN|SCHED_FLAG_UTIL_CLAMP_MIN" -@@ -365,11 +398,13 @@ - const kernel_ulong_t ill = f8ill_ptr_to_kulong(attr); - - sys_sched_getattr(0, ill, sizeof(*attr), 0); -+ pidns_print_leader(); - printf("sched_getattr(0, %#llx, %u, 0) = %s\n", - (unsigned long long) ill, (unsigned) sizeof(*attr), - errstr); - - sys_sched_setattr(0, ill, 0); -+ pidns_print_leader(); - printf("sched_setattr(0, %#llx, 0) = %s\n", - (unsigned long long) ill, errstr); - } -@@ -377,6 +412,7 @@ - attr->sched_flags = 0xcaffee90LL; - - sys_sched_setattr(bogus_pid, (unsigned long) attr, bogus_flags); -+ pidns_print_leader(); - printf("sched_setattr(%d, {size=%u, sched_flags=SCHED_FLAG_KEEP_PARAMS" - "|0xcaffee80, sched_util_min=%u, sched_util_max=%u}, %u) = %s\n", - (int) bogus_pid, -@@ -389,15 +425,18 @@ - const kernel_ulong_t ill = f8ill_ptr_to_kulong(attr); - - sys_sched_getattr(0, ill, sizeof(*attr), 0); -+ pidns_print_leader(); - printf("sched_getattr(0, %#llx, %u, 0) = %s\n", - (unsigned long long) ill, (unsigned) sizeof(*attr), - errstr); - - sys_sched_setattr(0, ill, 0); -+ pidns_print_leader(); - printf("sched_setattr(0, %#llx, 0) = %s\n", - (unsigned long long) ill, errstr); - } - -+ pidns_print_leader(); - puts("+++ exited with 0 +++"); - return 0; - } -Index: strace-5.7/tests-m32/sched_xetparam--pidns-translation.c -=================================================================== ---- /dev/null 1970-01-01 00:00:00.000000000 +0000 -+++ strace-5.7/tests-m32/sched_xetparam--pidns-translation.c 2020-09-09 19:52:38.901673633 +0200 -@@ -0,0 +1,2 @@ -+#define PIDNS_TRANSLATION -+#include "sched_xetparam.c" -Index: strace-5.7/tests-m32/sched_xetparam.c -=================================================================== ---- strace-5.7.orig/tests-m32/sched_xetparam.c 2020-09-09 19:52:30.619668697 +0200 -+++ strace-5.7/tests-m32/sched_xetparam.c 2020-09-09 19:52:38.901673633 +0200 -@@ -7,6 +7,7 @@ - - #include "tests.h" - #include "scno.h" -+# include "pidns.h" - - #if defined __NR_sched_getparam && defined __NR_sched_setparam - -@@ -17,18 +18,27 @@ - int - main(void) - { -+ PIDNS_TEST_INIT; -+ - struct sched_param *const param = - tail_alloc(sizeof(struct sched_param)); - -- long rc = syscall(__NR_sched_getparam, 0, param); -- printf("sched_getparam(0, [%d]) = %ld\n", -- param->sched_priority, rc); -+ const int pid = getpid(); -+ const char *pid_str = pidns_pid2str(PT_TGID); -+ -+ long rc = syscall(__NR_sched_getparam, pid, param); -+ pidns_print_leader(); -+ printf("sched_getparam(%d%s, [%d]) = %ld\n", -+ pid, pid_str, param->sched_priority, rc); - - param->sched_priority = -1; -- rc = syscall(__NR_sched_setparam, 0, param); -- printf("sched_setparam(0, [%d]) = %ld %s (%m)\n", -+ rc = syscall(__NR_sched_setparam, pid, param); -+ pidns_print_leader(); -+ printf("sched_setparam(%d%s, [%d]) = %ld %s (%m)\n", -+ pid, pid_str, - param->sched_priority, rc, errno2name()); - -+ pidns_print_leader(); - puts("+++ exited with 0 +++"); - return 0; - } -Index: strace-5.7/tests-m32/sched_xetscheduler--pidns-translation.c -=================================================================== ---- /dev/null 1970-01-01 00:00:00.000000000 +0000 -+++ strace-5.7/tests-m32/sched_xetscheduler--pidns-translation.c 2020-09-09 19:52:38.901673633 +0200 -@@ -0,0 +1,2 @@ -+#define PIDNS_TRANSLATION -+#include "sched_xetscheduler.c" -Index: strace-5.7/tests-m32/sched_xetscheduler.c -=================================================================== ---- strace-5.7.orig/tests-m32/sched_xetscheduler.c 2020-09-09 19:52:30.619668697 +0200 -+++ strace-5.7/tests-m32/sched_xetscheduler.c 2020-09-09 19:52:38.902673634 +0200 -@@ -7,6 +7,7 @@ - - #include "tests.h" - #include "scno.h" -+#include "pidns.h" - - #if defined __NR_sched_getscheduler && defined __NR_sched_setscheduler - -@@ -17,8 +18,13 @@ - int - main(void) - { -+ PIDNS_TEST_INIT; -+ - TAIL_ALLOC_OBJECT_CONST_PTR(struct sched_param, param); -- long rc = syscall(__NR_sched_getscheduler, 0); -+ const int pid = getpid(); -+ const char *pid_str = pidns_pid2str(PT_TGID); -+ -+ long rc = syscall(__NR_sched_getscheduler, pid); - const char *scheduler; - switch (rc) { - case SCHED_FIFO: -@@ -50,33 +56,43 @@ - default: - scheduler = "SCHED_OTHER"; - } -- printf("sched_getscheduler(0) = %ld (%s)\n", -- rc, scheduler); -+ pidns_print_leader(); -+ printf("sched_getscheduler(%d%s) = %ld (%s)\n", -+ pid, pid_str, rc, scheduler); - - rc = syscall(__NR_sched_getscheduler, -1); -+ pidns_print_leader(); - printf("sched_getscheduler(-1) = %s\n", sprintrc(rc)); - - param->sched_priority = -1; - -- rc = syscall(__NR_sched_setscheduler, 0, SCHED_FIFO, NULL); -- printf("sched_setscheduler(0, SCHED_FIFO, NULL) = %s\n", sprintrc(rc)); -- -- rc = syscall(__NR_sched_setscheduler, 0, SCHED_FIFO, param + 1); -- printf("sched_setscheduler(0, SCHED_FIFO, %p) = %s\n", param + 1, -- sprintrc(rc)); -- -- rc = syscall(__NR_sched_setscheduler, 0, 0xfaceda7a, param); -- printf("sched_setscheduler(0, %#x /* SCHED_??? */, [%d]) = %s\n", -- 0xfaceda7a, param->sched_priority, sprintrc(rc)); -+ rc = syscall(__NR_sched_setscheduler, pid, SCHED_FIFO, NULL); -+ pidns_print_leader(); -+ printf("sched_setscheduler(%d%s, SCHED_FIFO, NULL) = %s\n", -+ pid, pid_str, sprintrc(rc)); -+ -+ rc = syscall(__NR_sched_setscheduler, pid, SCHED_FIFO, param + 1); -+ pidns_print_leader(); -+ printf("sched_setscheduler(%d%s, SCHED_FIFO, %p) = %s\n", -+ pid, pid_str, param + 1, sprintrc(rc)); -+ -+ rc = syscall(__NR_sched_setscheduler, pid, 0xfaceda7a, param); -+ pidns_print_leader(); -+ printf("sched_setscheduler(%d%s, %#x /* SCHED_??? */, [%d]) = %s\n", -+ pid, pid_str, 0xfaceda7a, -+ param->sched_priority, sprintrc(rc)); - - rc = syscall(__NR_sched_setscheduler, -1, SCHED_FIFO, param); -+ pidns_print_leader(); - printf("sched_setscheduler(-1, SCHED_FIFO, [%d]) = %s\n", - param->sched_priority, sprintrc(rc)); - -- rc = syscall(__NR_sched_setscheduler, 0, SCHED_FIFO, param); -- printf("sched_setscheduler(0, SCHED_FIFO, [%d]) = %s\n", -- param->sched_priority, sprintrc(rc)); -+ rc = syscall(__NR_sched_setscheduler, pid, SCHED_FIFO, param); -+ pidns_print_leader(); -+ printf("sched_setscheduler(%d%s, SCHED_FIFO, [%d]) = %s\n", -+ pid, pid_str, param->sched_priority, sprintrc(rc)); - -+ pidns_print_leader(); - puts("+++ exited with 0 +++"); - return 0; - } -Index: strace-5.7/tests-m32/signal_receive--pidns-translation.c -=================================================================== ---- /dev/null 1970-01-01 00:00:00.000000000 +0000 -+++ strace-5.7/tests-m32/signal_receive--pidns-translation.c 2020-09-09 19:52:38.902673634 +0200 -@@ -0,0 +1,2 @@ -+#define PIDNS_TRANSLATION -+#include "signal_receive.c" -Index: strace-5.7/tests-m32/signal_receive.c -=================================================================== ---- strace-5.7.orig/tests-m32/signal_receive.c 2020-09-09 19:52:30.619668697 +0200 -+++ strace-5.7/tests-m32/signal_receive.c 2020-09-09 19:52:38.902673634 +0200 -@@ -8,6 +8,7 @@ - */ - - #include "tests.h" -+#include "pidns.h" - #include - #include - #include -@@ -26,10 +27,13 @@ - int - main(void) - { -+ PIDNS_TEST_INIT; -+ - static const char prefix[] = "KERNEL BUG"; - int printed = 0; - - const int pid = getpid(); -+ const char *pid_str = pidns_pid2str(PT_TGID); - const int uid = geteuid(); - - for (int sig = 1; sig <= 31; ++sig) { -@@ -73,10 +77,13 @@ - const int e_pid = s_pid; - const int e_uid = s_uid; - #endif -- printf("kill(%d, %s) = 0\n", pid, signal2name(sig)); -- printf("--- %s {si_signo=%s, si_code=SI_USER, si_pid=%d" -+ pidns_print_leader(); -+ printf("kill(%d%s, %s) = 0\n", pid, pid_str, signal2name(sig)); -+ pidns_print_leader(); -+ printf("--- %s {si_signo=%s, si_code=SI_USER, si_pid=%d%s" - ", si_uid=%d} ---\n", -- signal2name(sig), signal2name(e_sig), e_pid, e_uid); -+ signal2name(sig), signal2name(e_sig), -+ e_pid, pid_str, e_uid); - - if (s_code || sig != s_sig || pid != s_pid || uid != s_uid) { - /* -@@ -91,11 +98,11 @@ - } - fprintf(stderr, - "%s: expected: si_signo=%d, si_code=%d" -- ", si_pid=%d, si_uid=%d\n" -+ ", si_pid=%d%s, si_uid=%d\n" - "%s: received: si_signo=%d, si_code=%d" -- ", si_pid=%d, si_uid=%d\n", -- prefix, sig, SI_USER, pid, uid, -- prefix, sig, s_code, s_pid, s_uid); -+ ", si_pid=%d%s, si_uid=%d\n", -+ prefix, sig, SI_USER, pid, pid_str, uid, -+ prefix, sig, s_code, s_pid, pid_str, s_uid); - } - } - -@@ -104,6 +111,7 @@ - "*** PLEASE FIX THE KERNEL ***\n", prefix); - } - -+ pidns_print_leader(); - puts("+++ exited with 0 +++"); - return 0; - } -Index: strace-5.7/tests-m32/so_peercred--pidns-translation.c -=================================================================== ---- /dev/null 1970-01-01 00:00:00.000000000 +0000 -+++ strace-5.7/tests-m32/so_peercred--pidns-translation.c 2020-09-09 19:52:38.902673634 +0200 -@@ -0,0 +1,2 @@ -+#define PIDNS_TRANSLATION -+#include "so_peercred.c" -Index: strace-5.7/tests-m32/so_peercred.c -=================================================================== ---- strace-5.7.orig/tests-m32/so_peercred.c 2020-09-09 19:52:30.620668697 +0200 -+++ strace-5.7/tests-m32/so_peercred.c 2020-09-09 19:52:38.902673634 +0200 -@@ -9,6 +9,7 @@ - */ - - #include "tests.h" -+#include "pidns.h" - - #include - #include -@@ -53,6 +54,8 @@ - int - main(void) - { -+ PIDNS_TEST_INIT; -+ - TAIL_ALLOC_OBJECT_CONST_PTR(struct ucred, peercred); - TAIL_ALLOC_OBJECT_CONST_PTR(socklen_t, len); - -@@ -75,6 +78,8 @@ - struct ucred *const gid_truncated = - tail_alloc(sizeof_gid_truncated); - -+ const char *pid_str = pidns_pid2str(PT_TGID); -+ - int sv[2]; - if (socketpair(AF_UNIX, SOCK_STREAM, 0, sv)) - perror_msg_and_skip("socketpair AF_UNIX SOCK_STREAM"); -@@ -82,8 +87,10 @@ - /* classic getsockopt */ - *len = sizeof(*peercred); - get_peercred(sv[0], peercred, len); -+ pidns_print_leader(); - printf("getsockopt(%d, %s", sv[0], so_str()); - PRINT_FIELD_D(", {", *peercred, pid); -+ printf("%s", pid_str); - PRINT_FIELD_UID(", ", *peercred, uid); - PRINT_FIELD_UID(", ", *peercred, gid); - printf("}, [%d]) = %s\n", *len, errstr); -@@ -91,14 +98,17 @@ - /* getsockopt with zero optlen */ - *len = 0; - get_peercred(sv[0], peercred, len); -+ pidns_print_leader(); - printf("getsockopt(%d, %s, %p, [0]) = %s\n", - sv[0], so_str(), peercred, errstr); - - /* getsockopt with optlen larger than necessary - shortened */ - *len = sizeof(*peercred) + 1; - get_peercred(sv[0], peercred, len); -+ pidns_print_leader(); - printf("getsockopt(%d, %s", sv[0], so_str()); - PRINT_FIELD_D(", {", *peercred, pid); -+ printf("%s", pid_str); - PRINT_FIELD_UID(", ", *peercred, uid); - PRINT_FIELD_UID(", ", *peercred, gid); - printf("}, [%u->%d]) = %s\n", -@@ -110,6 +120,7 @@ - */ - *len = sizeof_pid_truncated; - get_peercred(sv[0], pid_truncated, len); -+ pidns_print_leader(); - printf("getsockopt(%d, %s, {pid=", sv[0], so_str()); - print_quoted_hex(pid_truncated, *len); - printf("}, [%d]) = %s\n", *len, errstr); -@@ -120,8 +131,10 @@ - */ - *len = sizeof_pid; - get_peercred(sv[0], pid, len); -+ pidns_print_leader(); - printf("getsockopt(%d, %s", sv[0], so_str()); - PRINT_FIELD_D(", {", *pid, pid); -+ printf("%s", pid_str); - printf("}, [%d]) = %s\n", *len, errstr); - - /* -@@ -136,8 +149,10 @@ - * to struct ucred.pid field. - */ - memcpy(uid, uid_truncated, sizeof_uid_truncated); -+ pidns_print_leader(); - printf("getsockopt(%d, %s", sv[0], so_str()); - PRINT_FIELD_D(", {", *uid, pid); -+ printf("%s", pid_str); - printf(", uid="); - print_quoted_hex(&uid->uid, sizeof_uid_truncated - - offsetof(struct ucred, uid)); -@@ -149,8 +164,10 @@ - */ - *len = sizeof_uid; - get_peercred(sv[0], uid, len); -+ pidns_print_leader(); - printf("getsockopt(%d, %s", sv[0], so_str()); - PRINT_FIELD_D(", {", *uid, pid); -+ printf("%s", pid_str); - PRINT_FIELD_UID(", ", *uid, uid); - printf("}, [%d]) = %s\n", *len, errstr); - -@@ -166,8 +183,10 @@ - * to struct ucred.pid and struct ucred.uid fields. - */ - memcpy(peercred, gid_truncated, sizeof_gid_truncated); -+ pidns_print_leader(); - printf("getsockopt(%d, %s", sv[0], so_str()); - PRINT_FIELD_D(", {", *peercred, pid); -+ printf("%s", pid_str); - PRINT_FIELD_UID(", ", *peercred, uid); - printf(", gid="); - print_quoted_hex(&peercred->gid, sizeof_gid_truncated - -@@ -177,14 +196,17 @@ - /* getsockopt optval EFAULT */ - *len = sizeof(*peercred); - get_peercred(sv[0], &peercred->uid, len); -+ pidns_print_leader(); - printf("getsockopt(%d, %s, %p, [%d]) = %s\n", - sv[0], so_str(), &peercred->uid, *len, errstr); - - /* getsockopt optlen EFAULT */ - get_peercred(sv[0], peercred, len + 1); -+ pidns_print_leader(); - printf("getsockopt(%d, %s, %p, %p) = %s\n", - sv[0], so_str(), peercred, len + 1, errstr); - -+ pidns_print_leader(); - puts("+++ exited with 0 +++"); - return 0; - } -Index: strace-5.7/tests-m32/tgkill--pidns-translation.c -=================================================================== ---- /dev/null 1970-01-01 00:00:00.000000000 +0000 -+++ strace-5.7/tests-m32/tgkill--pidns-translation.c 2020-09-09 19:52:38.902673634 +0200 -@@ -0,0 +1,2 @@ -+#define PIDNS_TRANSLATION -+#include "tgkill.c" -Index: strace-5.7/tests-m32/tgkill.c -=================================================================== ---- strace-5.7.orig/tests-m32/tgkill.c 2020-09-09 19:52:30.620668697 +0200 -+++ strace-5.7/tests-m32/tgkill.c 2020-09-09 19:52:38.903673634 +0200 -@@ -9,6 +9,7 @@ - - #include "tests.h" - #include "scno.h" -+#include "pidns.h" - - #ifdef __NR_tgkill - -@@ -36,28 +37,46 @@ - int - main(void) - { -+ PIDNS_TEST_INIT; -+ - const int pid = getpid(); -+ const char *pid_str = pidns_pid2str(PT_TGID); -+ const int tid = syscall(__NR_gettid); -+ const char *tid_str = pidns_pid2str(PT_TID); - const int bad_pid = -1; - const int bad_sig = 0xface; - -- k_tgkill(pid, pid, 0); -- printf("tgkill(%d, %d, 0) = %s\n", pid, pid, errstr); -+ k_tgkill(pid, tid, 0); -+ pidns_print_leader(); -+ printf("tgkill(%d%s, %d%s, 0) = %s\n", -+ pid, pid_str, tid, tid_str, errstr); - - k_tgkill(pid, bad_pid, 0); -- printf("tgkill(%d, %d, 0) = %s\n", pid, bad_pid, errstr); -- -- k_tgkill(bad_pid, pid, 0); -- printf("tgkill(%d, %d, 0) = %s\n", bad_pid, pid, errstr); -- -- k_tgkill(pid, pid, SIGCONT); -- printf("tgkill(%d, %d, SIGCONT) = %s\n", pid, pid, errstr); -- -- k_tgkill(pid, pid, bad_sig); -- printf("tgkill(%d, %d, %d) = %s\n", pid, pid, bad_sig, errstr); -- -- k_tgkill(pid, pid, -bad_sig); -- printf("tgkill(%d, %d, %d) = %s\n", pid, pid, -bad_sig, errstr); -+ pidns_print_leader(); -+ printf("tgkill(%d%s, %d, 0) = %s\n", -+ pid, pid_str, bad_pid, errstr); -+ -+ k_tgkill(bad_pid, tid, 0); -+ pidns_print_leader(); -+ printf("tgkill(%d, %d%s, 0) = %s\n", -+ bad_pid, tid, tid_str, errstr); -+ -+ k_tgkill(pid, tid, SIGCONT); -+ pidns_print_leader(); -+ printf("tgkill(%d%s, %d%s, SIGCONT) = %s\n", -+ pid, pid_str, tid, tid_str, errstr); -+ -+ k_tgkill(pid, tid, bad_sig); -+ pidns_print_leader(); -+ printf("tgkill(%d%s, %d%s, %d) = %s\n", -+ pid, pid_str, tid, tid_str, bad_sig, errstr); -+ -+ k_tgkill(pid, tid, -bad_sig); -+ pidns_print_leader(); -+ printf("tgkill(%d%s, %d%s, %d) = %s\n", -+ pid, pid_str, tid, tid_str, -bad_sig, errstr); - -+ pidns_print_leader(); - puts("+++ exited with 0 +++"); - return 0; - } -Index: strace-5.7/tests-m32/tkill--pidns-translation.c -=================================================================== ---- /dev/null 1970-01-01 00:00:00.000000000 +0000 -+++ strace-5.7/tests-m32/tkill--pidns-translation.c 2020-09-09 19:52:38.903673634 +0200 -@@ -0,0 +1,2 @@ -+#define PIDNS_TRANSLATION -+#include "tkill.c" -Index: strace-5.7/tests-m32/tkill.c -=================================================================== ---- strace-5.7.orig/tests-m32/tkill.c 2020-09-09 19:52:30.620668697 +0200 -+++ strace-5.7/tests-m32/tkill.c 2020-09-09 19:52:38.903673634 +0200 -@@ -9,6 +9,7 @@ - - #include "tests.h" - #include "scno.h" -+#include "pidns.h" - - #ifdef __NR_tkill - -@@ -33,22 +34,30 @@ - int - main(void) - { -- const int pid = getpid(); -+ PIDNS_TEST_INIT; -+ -+ const int tid = syscall(__NR_gettid); -+ const char *tid_str = pidns_pid2str(PT_TID); - const int bad_pid = -1; - const int bad_sig = 0xface; - -- k_tkill(pid, 0); -- printf("tkill(%d, 0) = %s\n", pid, errstr); -- -- k_tkill(pid, SIGCONT); -- printf("tkill(%d, SIGCONT) = %s\n", pid, errstr); -+ k_tkill(tid, 0); -+ pidns_print_leader(); -+ printf("tkill(%d%s, 0) = %s\n", tid, tid_str, errstr); -+ -+ k_tkill(tid, SIGCONT); -+ pidns_print_leader(); -+ printf("tkill(%d%s, SIGCONT) = %s\n", tid, tid_str, errstr); - - k_tkill(bad_pid, bad_sig); -+ pidns_print_leader(); - printf("tkill(%d, %d) = %s\n", bad_pid, bad_sig, errstr); - - k_tkill(bad_pid, -bad_sig); -+ pidns_print_leader(); - printf("tkill(%d, %d) = %s\n", bad_pid, -bad_sig, errstr); - -+ pidns_print_leader(); - puts("+++ exited with 0 +++"); - return 0; - } -Index: strace-5.7/tests-m32/trie_for_tests.c -=================================================================== ---- /dev/null 1970-01-01 00:00:00.000000000 +0000 -+++ strace-5.7/tests-m32/trie_for_tests.c 2020-09-09 19:52:38.903673634 +0200 -@@ -0,0 +1 @@ -+#include "trie.c" -Index: strace-5.7/tests-m32/trie_test.c -=================================================================== ---- /dev/null 1970-01-01 00:00:00.000000000 +0000 -+++ strace-5.7/tests-m32/trie_test.c 2020-09-09 19:52:38.903673634 +0200 -@@ -0,0 +1,121 @@ -+/* -+ * Copyright (c) 2017-2019 The strace developers. -+ * All rights reserved. -+ * -+ * SPDX-License-Identifier: GPL-2.0-or-later -+ */ -+ -+#include "tests.h" -+#include "trie.h" -+ -+#include -+#include -+ -+static void -+assert_equals(const char *msg, uint64_t expected, uint64_t actual) { -+ if (actual != expected) -+ error_msg_and_fail("%s: expected: %" PRIu64 -+ ", actual: %" PRIu64, msg, expected, actual); -+} -+ -+static void -+iterate_fn(void *data, uint64_t key, uint64_t value) -+{ -+ uint64_t expected = key < 256 && key % 10 == 0 ? key + 42 : -1ULL; -+ assert_equals("iterate_fn", expected, value); -+ -+ int *count = (int *) data; -+ if (value != -1ULL) -+ (*count)++; -+} -+ -+static void -+test_trie_iterate_fn(void) -+{ -+ struct trie *t = trie_create(8, 6, 3, 3, -1); -+ for (int i = 0; i < 26; i++) -+ trie_set(t, i * 10, i * 10 + 42); -+ -+ static const struct { -+ uint64_t start; -+ uint64_t end; -+ int expected_count; -+ } iterate_params[] = { -+ {0, 256, 26}, -+ {0, UINT64_MAX, 26}, -+ {20, 90, 8}, -+ {99, 999, 16}, -+ {10000, 100000, 0}, -+ {200, 100, 0}, -+ }; -+ -+ for (size_t i = 0; i < ARRAY_SIZE(iterate_params); i++) { -+ int count = 0; -+ trie_iterate_keys(t, iterate_params[i].start, iterate_params[i].end, iterate_fn, &count); -+ assert_equals("iteration count", iterate_params[i].expected_count, count); -+ } -+} -+ -+struct key_value_pair { -+ uint64_t key, value; -+}; -+ -+static void -+test_trie_get(void) -+{ -+ static const struct { -+ uint8_t key_size; -+ uint8_t item_size_lg; -+ uint8_t node_key_bits; -+ uint8_t data_block_key_bits; -+ uint64_t empty_value; -+ -+ struct key_value_pair set_values[3], get_values[3]; -+ } params[] = { -+ {64, 6, 10, 10, 0, -+ {{300, 1}, {0xfacefeed, 0xabcdef123456}, {-1ULL, -1ULL}}, -+ {{301, 0}, {0xfacefeed, 0xabcdef123456}, {-1ULL, -1ULL}}}, -+ {8, 2, 4, 4, 10, -+ {{0xab, 0xcd}, {0xface, 2}, {0, 3}}, -+ {{0xab, 0xd}, {0xface, 10}, {0, 3}}}, -+ {30, 0, 6, 3, -1, -+ {{0xaaaa, 127}, {0xface, 0}, {0, 0}}, -+ {{0xaaaa, 1}, {0xface, 0}, {1, 1}}}, -+ {16, 4, 5, 11, 0xffffff, -+ {{0xabcdef, 42}, {0xabcd, 42}, {0xffff, 0}}, -+ {{0xabcdef, 0xffff}, {0xabcd, 42}, {0xffff, 0}}}, -+ {41, 5, 1, 1, -1, -+ {{0xabcdef01, 0x22222222}, {-1, 0x33333333}, {10, 10}}, -+ {{0xabcdef01, 0x22222222}, {-1, 0xffffffff}, {10, 10}}}, -+ }; -+ -+ for (size_t i = 0; i < ARRAY_SIZE(params); i++) { -+ struct trie *t = trie_create(params[i].key_size, -+ params[i].item_size_lg, -+ params[i].node_key_bits, -+ params[i].data_block_key_bits, -+ params[i].empty_value); -+ -+ if (!t) -+ error_msg_and_fail("trie creation failed"); -+ -+ for (size_t j = 0; j < ARRAY_SIZE(params[i].set_values); j++) { -+ struct key_value_pair kv = params[i].set_values[j]; -+ trie_set(t, kv.key, kv.value); -+ } -+ for (size_t j = 0; j < ARRAY_SIZE(params[i].get_values); j++) { -+ struct key_value_pair kv = params[i].get_values[j]; -+ assert_equals("trie_get", kv.value, trie_get(t, kv.key)); -+ } -+ -+ trie_free(t); -+ } -+} -+ -+int -+main(void) -+{ -+ test_trie_get(); -+ test_trie_iterate_fn(); -+ return 0; -+} -Index: strace-5.7/tests-m32/xet_robust_list--pidns-translation.c -=================================================================== ---- /dev/null 1970-01-01 00:00:00.000000000 +0000 -+++ strace-5.7/tests-m32/xet_robust_list--pidns-translation.c 2020-09-09 19:52:38.903673634 +0200 -@@ -0,0 +1,2 @@ -+#define PIDNS_TRANSLATION -+#include "xet_robust_list.c" -Index: strace-5.7/tests-m32/xet_robust_list.c -=================================================================== ---- strace-5.7.orig/tests-m32/xet_robust_list.c 2020-09-09 19:52:30.621668698 +0200 -+++ strace-5.7/tests-m32/xet_robust_list.c 2020-09-09 19:52:38.904673635 +0200 -@@ -8,6 +8,7 @@ - - #include "tests.h" - #include "scno.h" -+#include "pidns.h" - - #if defined __NR_get_robust_list && defined __NR_set_robust_list - -@@ -30,27 +31,36 @@ - int - main(void) - { -+ PIDNS_TEST_INIT; -+ - const pid_t pid = getpid(); -+ const char *pid_str = pidns_pid2str(PT_TGID); - const long long_pid = (unsigned long) (0xdeadbeef00000000LL | pid); - TAIL_ALLOC_OBJECT_CONST_PTR(void *, p_head); - TAIL_ALLOC_OBJECT_CONST_PTR(size_t, p_len); - - if (syscall(__NR_get_robust_list, long_pid, p_head, p_len)) - perror_msg_and_skip("get_robust_list"); -- printf("get_robust_list(%d, [%s], [%lu]) = 0\n", -- (int) pid, sprintaddr(*p_head), (unsigned long) *p_len); -+ pidns_print_leader(); -+ printf("get_robust_list(%d%s, [%s], [%lu]) = 0\n", -+ pid, pid_str, sprintaddr(*p_head), -+ (unsigned long) *p_len); - - void *head = tail_alloc(*p_len); - if (syscall(__NR_set_robust_list, head, *p_len)) - perror_msg_and_skip("set_robust_list"); -+ pidns_print_leader(); - printf("set_robust_list(%p, %lu) = 0\n", - head, (unsigned long) *p_len); - - if (syscall(__NR_get_robust_list, long_pid, p_head, p_len)) - perror_msg_and_skip("get_robust_list"); -- printf("get_robust_list(%d, [%s], [%lu]) = 0\n", -- (int) pid, sprintaddr(*p_head), (unsigned long) *p_len); -+ pidns_print_leader(); -+ printf("get_robust_list(%d%s, [%s], [%lu]) = 0\n", -+ pid, pid_str, sprintaddr(*p_head), -+ (unsigned long) *p_len); - -+ pidns_print_leader(); - puts("+++ exited with 0 +++"); - return 0; - } -Index: strace-5.7/tests-m32/xetpgid--pidns-translation.c -=================================================================== ---- /dev/null 1970-01-01 00:00:00.000000000 +0000 -+++ strace-5.7/tests-m32/xetpgid--pidns-translation.c 2020-09-09 19:52:38.904673635 +0200 -@@ -0,0 +1,2 @@ -+#define PIDNS_TRANSLATION -+#include "xetpgid.c" -Index: strace-5.7/tests-m32/xetpgid.c -=================================================================== ---- strace-5.7.orig/tests-m32/xetpgid.c 2020-09-09 19:52:30.621668698 +0200 -+++ strace-5.7/tests-m32/xetpgid.c 2020-09-09 19:52:38.904673635 +0200 -@@ -10,6 +10,7 @@ - - #include "tests.h" - #include "scno.h" -+#include "pidns.h" - - #if defined __NR_getpgid && defined __NR_setpgid - -@@ -19,13 +20,21 @@ - int - main(void) - { -- const int pid = getpid(); -- long rc = syscall(__NR_getpgid, F8ILL_KULONG_MASK | pid); -- printf("getpgid(%d) = %ld\n", pid, rc); -+ PIDNS_TEST_INIT; - -- rc = syscall(__NR_setpgid, F8ILL_KULONG_MASK, F8ILL_KULONG_MASK | pid); -- printf("setpgid(0, %d) = %ld\n", pid, rc); -+ const int pid = getpid(); -+ long pgid = syscall(__NR_getpgid, F8ILL_KULONG_MASK | pid); -+ pidns_print_leader(); -+ printf("getpgid(%d%s) = %ld%s\n", pid, pidns_pid2str(PT_TGID), -+ pgid, pidns_pid2str(PT_PGID)); -+ -+ long rc = syscall(__NR_setpgid, F8ILL_KULONG_MASK, -+ F8ILL_KULONG_MASK | pgid); -+ pidns_print_leader(); -+ printf("setpgid(0, %ld%s) = %s\n", pgid, pidns_pid2str(PT_PGID), -+ sprintrc(rc)); - -+ pidns_print_leader(); - puts("+++ exited with 0 +++"); - return 0; - } -Index: strace-5.7/tests-m32/xetpriority--pidns-translation.c -=================================================================== ---- /dev/null 1970-01-01 00:00:00.000000000 +0000 -+++ strace-5.7/tests-m32/xetpriority--pidns-translation.c 2020-09-09 19:52:38.904673635 +0200 -@@ -0,0 +1,2 @@ -+#define PIDNS_TRANSLATION -+#include "xetpriority.c" -Index: strace-5.7/tests-m32/xetpriority.c -=================================================================== ---- strace-5.7.orig/tests-m32/xetpriority.c 2020-09-09 19:52:30.622668698 +0200 -+++ strace-5.7/tests-m32/xetpriority.c 2020-09-09 19:52:38.904673635 +0200 -@@ -7,6 +7,7 @@ - - #include "tests.h" - #include "scno.h" -+#include "pidns.h" - - #if defined __NR_getpriority && defined __NR_setpriority - -@@ -17,15 +18,30 @@ - int - main(void) - { -+ PIDNS_TEST_INIT; -+ - const int pid = getpid(); -+ const int pgid = getpgid(0); -+ - long rc = syscall(__NR_getpriority, PRIO_PROCESS, - F8ILL_KULONG_MASK | pid); -- printf("getpriority(PRIO_PROCESS, %d) = %ld\n", pid, rc); -+ pidns_print_leader(); -+ printf("getpriority(PRIO_PROCESS, %d%s) = %ld\n", -+ pid, pidns_pid2str(PT_TGID), rc); - - rc = syscall(__NR_setpriority, PRIO_PROCESS, - F8ILL_KULONG_MASK | pid, F8ILL_KULONG_MASK); -- printf("setpriority(PRIO_PROCESS, %d, 0) = %s\n", pid, sprintrc(rc)); -+ pidns_print_leader(); -+ printf("setpriority(PRIO_PROCESS, %d%s, 0) = %s\n", -+ pid, pidns_pid2str(PT_TGID), sprintrc(rc)); -+ -+ rc = syscall(__NR_getpriority, PRIO_PGRP, -+ F8ILL_KULONG_MASK | pgid); -+ pidns_print_leader(); -+ printf("getpriority(PRIO_PGRP, %d%s) = %ld\n", -+ pgid, pidns_pid2str(PT_PGID), rc); - -+ pidns_print_leader(); - puts("+++ exited with 0 +++"); - return 0; - } -Index: strace-5.7/tests-m32/xmalloc_for_tests.c -=================================================================== ---- /dev/null 1970-01-01 00:00:00.000000000 +0000 -+++ strace-5.7/tests-m32/xmalloc_for_tests.c 2020-09-09 19:52:38.905673636 +0200 -@@ -0,0 +1,2 @@ -+#define error_msg_and_die error_msg_and_fail -+#include "xmalloc.c" -Index: strace-5.7/tests-mx32/Makefile.am -=================================================================== ---- strace-5.7.orig/tests-mx32/Makefile.am 2020-09-09 19:52:30.622668698 +0200 -+++ strace-5.7/tests-mx32/Makefile.am 2020-09-09 19:52:38.905673636 +0200 -@@ -66,6 +66,7 @@ - test_ucopy.h \ - tests.h \ - tprintf.c \ -+ xmalloc_for_tests.c \ - # end of libtests_a_SOURCES - libtests_a_CPPFLAGS = $(AM_CPPFLAGS) -D_FILE_OFFSET_BITS=64 - check_LIBRARIES = libtests.a -@@ -109,17 +110,25 @@ - delay \ - execve-v \ - execveat-v \ -+ fcntl--pidns-translation \ -+ fcntl64--pidns-translation \ - filter_seccomp-flag \ - filter_seccomp-perf \ - filter-unavailable \ - fork-f \ -+ fork--pidns-translation \ - fsync-y \ - get_process_reaper \ -+ getpgrp--pidns-translation \ - getpid \ -+ getpid--pidns-translation \ - getppid \ -+ getsid--pidns-translation \ - gettid \ -+ gettid--pidns-translation \ - inject-nf \ - int_0x80 \ -+ ioctl_block--pidns-translation \ - ioctl_dm-v \ - ioctl_evdev-success \ - ioctl_evdev-success-Xabbrev \ -@@ -150,18 +159,25 @@ - ioctl_v4l2-success-v-Xabbrev \ - ioctl_v4l2-success-v-Xraw \ - ioctl_v4l2-success-v-Xverbose \ -+ ioprio--pidns-translation \ - is_linux_mips_n64 \ -+ kcmp-y--pidns-translation \ - kill_child \ -+ kill--pidns-translation \ - ksysent \ - list_sigaction_signum \ - localtime \ - looping_threads \ -+ migrate_pages--pidns-translation \ - mmsg-silent \ - mmsg_name-v \ -+ move_pages--pidns-translation \ - msg_control-v \ - net-accept-connect \ -+ net-sockaddr--pidns-translation \ - net-tpacket_stats-success \ - nlattr_ifla_xdp-y \ -+ netlink_audit--pidns-translation \ - netlink_inet_diag \ - netlink_netlink_diag \ - netlink_unix_diag \ -@@ -173,14 +189,20 @@ - pc \ - perf_event_open_nonverbose \ - perf_event_open_unabbrev \ -+ pidfd_open--pidns-translation \ -+ pidfd_send_signal--pidns-translation \ -+ pidns-cache \ - poll-P \ - ppoll-P \ - ppoll-v \ -+ prlimit64--pidns-translation \ - prctl-seccomp-filter-v \ - prctl-seccomp-strict \ - prctl-spec-inject \ - print_maxfd \ - print_ppid_tracerpid \ -+ process_vm_readv--pidns-translation \ -+ process_vm_writev--pidns-translation \ - qual_fault \ - qual_inject-error-signal \ - qual_inject-retval \ -@@ -194,7 +216,13 @@ - quotactl-xfs-v \ - redirect-fds \ - restart_syscall \ -+ rt_sigqueueinfo--pidns-translation \ -+ rt_tgsigqueueinfo--pidns-translation \ - run_expect_termsig \ -+ sched_xetaffinity--pidns-translation \ -+ sched_xetattr--pidns-translation \ -+ sched_xetparam--pidns-translation \ -+ sched_xetscheduler--pidns-translation \ - scm_rights \ - seccomp-filter-v \ - seccomp-strict \ -@@ -204,25 +232,33 @@ - set_sigign \ - setpgrp-exec \ - signal_receive \ -+ signal_receive--pidns-translation \ - sleep \ - stack-fcall \ - stack-fcall-attach \ - stack-fcall-mangled \ - status-none-threads \ - status-unfinished-threads \ -+ so_peercred--pidns-translation \ - syslog-success \ -+ tgkill--pidns-translation \ - threads-execve \ - threads-execve--quiet-thread-execve \ - threads-execve-q \ - threads-execve-qq \ - threads-execve-qqq \ -+ tkill--pidns-translation \ - tracer_ppid_pgid_sid \ -+ trie_test \ - unblock_reset_raise \ - unix-pair-send-recv \ - unix-pair-sendto-recvfrom \ - vfork-f \ - wait4-v \ - waitid-v \ -+ xetpgid--pidns-translation \ -+ xetpriority--pidns-translation \ -+ xet_robust_list--pidns-translation \ - zeroargc \ - # end of check_PROGRAMS - -@@ -272,6 +308,11 @@ - stack-fcall-mangled-0.c stack-fcall-mangled-1.c \ - stack-fcall-mangled-2.c stack-fcall-mangled-3.c - -+trie_test_SOURCES = trie_test.c trie_for_tests.c -+trie_test_CPPFLAGS = $(AM_CPPFLAGS) $(CODE_COVERAGE_CPPFLAGS) -+trie_test_CFLAGS = $(AM_CFLAGS) $(CODE_COVERAGE_CFLAGS) -+trie_test_LDADD = $(LDADD) $(CODE_COVERAGE_LIBS) -+ - include gen_tests.am - - if ENABLE_STACKTRACE -@@ -308,6 +349,7 @@ - int_0x80.test \ - inotify_init-y.test \ - ioctl.test \ -+ ioctl_block--pidns-translation.test \ - ioctl_evdev-success.test \ - ipc_msgbuf.test \ - kern_features-fault.test \ -@@ -379,15 +421,19 @@ - filtering_fd-syntax.test \ - filtering_syscall-syntax.test \ - first_exec_failure.test \ -+ fork--pidns-translation.test \ - get_regs.test \ -+ gettid--pidns-translation.test \ - inject-nf.test \ - interactive_block.test \ - kill_child.test \ - localtime.test \ - looping_threads.test \ -+ netlink_audit--pidns-translation.test \ - opipe.test \ - options-syntax.test \ - pc.test \ -+ pidns-cache.test \ - printpath-umovestr-legacy.test \ - printstrn-umoven-legacy.test \ - qual_fault-syntax.test \ -@@ -465,6 +511,7 @@ - filter_seccomp.in \ - filter_seccomp.sh \ - filter-unavailable.expected \ -+ fork--pidns-translation.awk \ - fstatat.c \ - fstatx.c \ - gen_pure_executables.sh \ -Index: strace-5.7/tests-mx32/fcntl--pidns-translation.c -=================================================================== ---- /dev/null 1970-01-01 00:00:00.000000000 +0000 -+++ strace-5.7/tests-mx32/fcntl--pidns-translation.c 2020-09-09 19:52:38.905673636 +0200 -@@ -0,0 +1,2 @@ -+#define PIDNS_TRANSLATION -+#include "fcntl.c" -Index: strace-5.7/tests-mx32/fcntl-common.c -=================================================================== ---- strace-5.7.orig/tests-mx32/fcntl-common.c 2020-09-09 19:52:30.623668699 +0200 -+++ strace-5.7/tests-mx32/fcntl-common.c 2020-09-09 19:52:38.905673636 +0200 -@@ -13,6 +13,8 @@ - #include - #include - #include "flock.h" -+#include "pidns.h" -+#include "scno.h" - - #define FILE_LEN 4096 - -@@ -48,12 +50,14 @@ - fl->l_len = (TYPEOF_FLOCK_OFF_T) 0xdefaced2cafef00dULL; - - invoke_test_syscall(0, cmd, fl); -+ pidns_print_leader(); - printf("%s(0, %s, {l_type=F_RDLCK, l_whence=SEEK_SET" - ", l_start=%jd, l_len=%jd}) = %s\n", TEST_SYSCALL_STR, name, - (intmax_t) fl->l_start, (intmax_t) fl->l_len, errstr); - - void *const bad_addr = (void *) fl + 1; - invoke_test_syscall(0, cmd, bad_addr); -+ pidns_print_leader(); - printf("%s(0, %s, %p) = %s\n", - TEST_SYSCALL_STR, name, bad_addr, errstr); - } -@@ -72,12 +76,14 @@ - fl->l_len = (TYPEOF_FLOCK_OFF_T) 0xdefaced2cafef00dULL; - - invoke_test_syscall(0, cmd, fl); -+ pidns_print_leader(); - printf("%s(0, %s, {l_type=F_RDLCK, l_whence=SEEK_SET" - ", l_start=%jd, l_len=%jd}) = %s\n", TEST_SYSCALL_STR, name, - (intmax_t) fl->l_start, (intmax_t) fl->l_len, errstr); - - void *const bad_addr = (void *) fl + 1; - invoke_test_syscall(0, cmd, bad_addr); -+ pidns_print_leader(); - printf("%s(0, %s, %p) = %s\n", - TEST_SYSCALL_STR, name, bad_addr, errstr); - } -@@ -94,6 +100,7 @@ - fl->l_len = FILE_LEN; - - long rc = invoke_test_syscall(0, F_SETLK, fl); -+ pidns_print_leader(); - printf("%s(0, F_SETLK, {l_type=F_RDLCK, l_whence=SEEK_SET" - ", l_start=0, l_len=%d}) = %s\n", - TEST_SYSCALL_STR, FILE_LEN, errstr); -@@ -101,11 +108,13 @@ - return; - - invoke_test_syscall(0, F_GETLK, fl); -+ pidns_print_leader(); - printf("%s(0, F_GETLK, {l_type=F_UNLCK, l_whence=SEEK_SET" - ", l_start=0, l_len=%d, l_pid=0}) = 0\n", - TEST_SYSCALL_STR, FILE_LEN); - - invoke_test_syscall(0, F_SETLKW, fl); -+ pidns_print_leader(); - printf("%s(0, F_SETLKW, {l_type=F_UNLCK, l_whence=SEEK_SET" - ", l_start=0, l_len=%d}) = 0\n", - TEST_SYSCALL_STR, FILE_LEN); -@@ -124,6 +133,7 @@ - fl->l_len = FILE_LEN; - - long rc = invoke_test_syscall(0, F_OFD_SETLK, fl); -+ pidns_print_leader(); - printf("%s(0, F_OFD_SETLK, {l_type=F_RDLCK, l_whence=SEEK_SET" - ", l_start=0, l_len=%d}) = %s\n", - TEST_SYSCALL_STR, FILE_LEN, errstr); -@@ -131,11 +141,13 @@ - return; - - invoke_test_syscall(0, F_OFD_GETLK, fl); -+ pidns_print_leader(); - printf("%s(0, F_OFD_GETLK, {l_type=F_UNLCK, l_whence=SEEK_SET" - ", l_start=0, l_len=%d, l_pid=0}) = 0\n", - TEST_SYSCALL_STR, FILE_LEN); - - invoke_test_syscall(0, F_OFD_SETLKW, fl); -+ pidns_print_leader(); - printf("%s(0, F_OFD_SETLKW, {l_type=F_UNLCK, l_whence=SEEK_SET" - ", l_start=0, l_len=%d}) = 0\n", - TEST_SYSCALL_STR, FILE_LEN); -@@ -167,18 +179,21 @@ - static long - test_f_owner_ex_type_pid(const int cmd, const char *const cmd_name, - const int type, const char *const type_name, -- pid_t pid) -+ enum pid_type pid_type, pid_t pid) - { - TAIL_ALLOC_OBJECT_CONST_PTR(struct_kernel_f_owner_ex, fo); - - fo->type = type; - fo->pid = pid; - long rc = invoke_test_syscall(0, cmd, fo); -- printf("%s(0, %s, {type=%s, pid=%d}) = %s\n", -- TEST_SYSCALL_STR, cmd_name, type_name, fo->pid, errstr); -+ pidns_print_leader(); -+ printf("%s(0, %s, {type=%s, pid=%d%s}) = %s\n", -+ TEST_SYSCALL_STR, cmd_name, type_name, -+ fo->pid, pidns_pid2str(pid_type), errstr); - - void *bad_addr = (void *) fo + 1; - invoke_test_syscall(0, cmd, bad_addr); -+ pidns_print_leader(); - printf("%s(0, %s, %p) = %s\n", - TEST_SYSCALL_STR, cmd_name, bad_addr, errstr); - -@@ -187,35 +202,35 @@ - - static void - test_f_owner_ex_umove_or_printaddr(const int type, const char *const type_name, -- pid_t pid) -+ enum pid_type pid_type, pid_t pid) - { - long rc = test_f_owner_ex_type_pid(ARG_STR(F_SETOWN_EX), -- type, type_name, pid); -+ type, type_name, pid_type, pid); - if (!rc) - test_f_owner_ex_type_pid(ARG_STR(F_GETOWN_EX), -- type, type_name, pid); -+ type, type_name, pid_type, pid); - } - - static void - test_f_owner_ex(void) - { -- static const struct { -+ struct { - int type; - const char *type_name; -- pid_t pid[2]; -+ enum pid_type pid_type; -+ pid_t pid; - } a[] = { -- { ARG_STR(F_OWNER_TID), { 1234567890, 20 } }, -- { ARG_STR(F_OWNER_PID), { 1298126790, 30 } }, -- { ARG_STR(F_OWNER_PGRP), { 1294567890, 40 } } -+ { ARG_STR(F_OWNER_TID), PT_NONE, 1234567890 }, -+ { ARG_STR(F_OWNER_PID), PT_NONE, 1234567890 }, -+ { ARG_STR(F_OWNER_PGRP), PT_NONE, 1234567890 }, -+ { ARG_STR(F_OWNER_TID), PT_TID, syscall(__NR_gettid) }, -+ { ARG_STR(F_OWNER_PID), PT_TGID, getpid() }, -+ { ARG_STR(F_OWNER_PGRP), PT_PGID, getpgid(0) }, - }; - -- for (unsigned int i = 0; i < ARRAY_SIZE(a); i++) { -- for (unsigned int j = 0; j < ARRAY_SIZE(a[0].pid); j++) { -- test_f_owner_ex_umove_or_printaddr(a[i].type, -- a[i].type_name, -- a[i].pid[j]); -- } -- } -+ for (unsigned int i = 0; i < ARRAY_SIZE(a); i++) -+ test_f_owner_ex_umove_or_printaddr(a[i].type, a[i].type_name, -+ a[i].pid_type, a[i].pid); - } - #endif /* TEST_F_OWNER_EX */ - -@@ -229,6 +244,23 @@ - }; - - static void -+test_xetown(void) -+{ -+ const int pid = getpid(); -+ const char *pid_str = pidns_pid2str(PT_TGID); -+ -+ invoke_test_syscall(0, F_SETOWN, (void *) (intptr_t) pid); -+ pidns_print_leader(); -+ printf("%s(0, F_SETOWN, %d%s) = %s\n", -+ TEST_SYSCALL_STR, pid, pid_str, errstr); -+ -+ invoke_test_syscall(0, F_GETOWN, NULL); -+ pidns_print_leader(); -+ printf("%s(0, F_GETOWN) = %d%s\n", -+ TEST_SYSCALL_STR, pid, pid_str); -+} -+ -+static void - print_retval_flags(const struct fcntl_cmd_check *check, long rc) - { - if (check->print_flags) { -@@ -243,12 +275,14 @@ - test_other_set_cmd(const struct fcntl_cmd_check *check) - { - invoke_test_syscall(check->fd, check->cmd, (void *) check->arg); -+ pidns_print_leader(); - printf("%s(%d, %s, %s) = %s\n", - TEST_SYSCALL_STR, check->fd, - check->cmd_str, check->arg_str, errstr); - - /* bad file fd */ - invoke_test_syscall(-1, check->cmd, (void *) check->arg); -+ pidns_print_leader(); - printf("%s(-1, %s, %s) = %s\n", - TEST_SYSCALL_STR, check->cmd_str, - check->arg_str, errstr); -@@ -258,12 +292,14 @@ - test_other_get_cmd(const struct fcntl_cmd_check *check) - { - long rc = invoke_test_syscall(check->fd, check->cmd, NULL); -+ pidns_print_leader(); - printf("%s(%d, %s) = ", - TEST_SYSCALL_STR, check->fd, check->cmd_str); - print_retval_flags(check, rc); - - /* bad file fd */ - invoke_test_syscall(-1, check->cmd, NULL); -+ pidns_print_leader(); - printf("%s(-1, %s) = %s\n", - TEST_SYSCALL_STR, check->cmd_str, errstr); - } -@@ -315,7 +351,6 @@ - { - static const struct fcntl_cmd_check set_checks[] = { - { 0, ARG_STR(F_SETFD), ARG_STR(FD_CLOEXEC) }, -- { 0, ARG_STR(F_SETOWN), ARG_STR(20) }, - #ifdef F_SETPIPE_SZ - { 0, ARG_STR(F_SETPIPE_SZ), ARG_STR(4097) }, - #endif -@@ -336,7 +371,6 @@ - static const struct fcntl_cmd_check get_checks[] = { - { 0, ARG_STR(F_GETFD), .print_flags = print_flags_getfd }, - { 1, ARG_STR(F_GETFD), .print_flags = print_flags_getfd }, -- { 0, ARG_STR(F_GETOWN) }, - #ifdef F_GETPIPE_SZ - { 0, ARG_STR(F_GETPIPE_SZ) }, - #endif -@@ -360,6 +394,8 @@ - int - main(void) - { -+ PIDNS_TEST_INIT; -+ - create_sample(); - test_flock(); - test_flock64(); -@@ -367,7 +403,9 @@ - test_f_owner_ex(); - #endif - test_fcntl_others(); -+ test_xetown(); - -+ pidns_print_leader(); - puts("+++ exited with 0 +++"); - return 0; - } -Index: strace-5.7/tests-mx32/fcntl.c -=================================================================== ---- strace-5.7.orig/tests-mx32/fcntl.c 2020-09-09 19:52:30.623668699 +0200 -+++ strace-5.7/tests-mx32/fcntl.c 2020-09-09 19:52:38.906673636 +0200 -@@ -24,6 +24,7 @@ - .l_len = 0xdefaced2cafef00dULL - }; - invoke_test_syscall(0, cmd, &fl); -+ pidns_print_leader(); - printf("%s(0, %s, %p) = %s\n", - TEST_SYSCALL_STR, name, &fl, errstr); - } -Index: strace-5.7/tests-mx32/fcntl64--pidns-translation.c -=================================================================== ---- /dev/null 1970-01-01 00:00:00.000000000 +0000 -+++ strace-5.7/tests-mx32/fcntl64--pidns-translation.c 2020-09-09 19:52:38.906673636 +0200 -@@ -0,0 +1,2 @@ -+#define PIDNS_TRANSLATION -+#include "fcntl64.c" -Index: strace-5.7/tests-mx32/fcntl64.c -=================================================================== ---- strace-5.7.orig/tests-mx32/fcntl64.c 2020-09-09 19:52:30.623668699 +0200 -+++ strace-5.7/tests-mx32/fcntl64.c 2020-09-09 19:52:38.906673636 +0200 -@@ -27,6 +27,7 @@ - fl->l_len = FILE_LEN; - - long rc = invoke_test_syscall(0, F_SETLK64, fl); -+ pidns_print_leader(); - printf("%s(0, F_SETLK64, {l_type=F_RDLCK, l_whence=SEEK_SET" - ", l_start=0, l_len=%d}) = %s\n", - TEST_SYSCALL_STR, FILE_LEN, errstr); -@@ -35,11 +36,13 @@ - return; - - invoke_test_syscall(0, F_GETLK64, fl); -+ pidns_print_leader(); - printf("%s(0, F_GETLK64, {l_type=F_UNLCK, l_whence=SEEK_SET" - ", l_start=0, l_len=%d, l_pid=0}) = 0\n", - TEST_SYSCALL_STR, FILE_LEN); - - invoke_test_syscall(0, F_SETLKW64, fl); -+ pidns_print_leader(); - printf("%s(0, F_SETLKW64, {l_type=F_UNLCK, l_whence=SEEK_SET" - ", l_start=0, l_len=%d}) = 0\n", - TEST_SYSCALL_STR, FILE_LEN); -Index: strace-5.7/tests-mx32/fork--pidns-translation.awk -=================================================================== ---- /dev/null 1970-01-01 00:00:00.000000000 +0000 -+++ strace-5.7/tests-mx32/fork--pidns-translation.awk 2020-09-09 19:52:38.906673636 +0200 -@@ -0,0 +1,15 @@ -+/fork/ { -+ match($0, "([0-9]+) in strace\x27s PID NS", a); -+ if (a[1]) -+ fork_pid = a[1] -+} -+ -+/exited with 0/ { -+ if (!exit_pid) -+ exit_pid = $1 -+} -+ -+END { -+ if (!fork_pid || !exit_pid || fork_pid != exit_pid) -+ exit 1 -+} -Index: strace-5.7/tests-mx32/fork--pidns-translation.c -=================================================================== ---- /dev/null 1970-01-01 00:00:00.000000000 +0000 -+++ strace-5.7/tests-mx32/fork--pidns-translation.c 2020-09-09 19:52:38.906673636 +0200 -@@ -0,0 +1,78 @@ -+/* -+ * Test PID namespace translation -+ * -+ * Copyright (c) 2020 Ákos Uzonyi -+ * All rights reserved. -+ * -+ * SPDX-License-Identifier: LGPL-2.1-or-later -+ */ -+ -+#include "tests.h" -+#include "scno.h" -+#include "pidns.h" -+ -+#ifdef __NR_fork -+ -+#include -+#include -+#include -+#include -+#include -+#include -+#include -+#include -+#include -+#include "nsfs.h" -+ -+#ifndef CLONE_NEWUSER -+# define CLONE_NEWUSER 0x10000000 -+#endif -+ -+#ifndef CLONE_NEWPID -+# define CLONE_NEWPID 0x20000000 -+#endif -+ -+static int -+fork_chain(int depth) -+{ -+ if (!depth) -+ return 0; -+ -+ int pid = syscall(__NR_fork); -+ if (pid < 0) -+ return errno; -+ -+ if (!pid) -+ _exit(fork_chain(depth - 1)); -+ -+ int status; -+ if (wait(&status) < 0) -+ return errno; -+ -+ if (!WIFEXITED(status)) -+ return -1; -+ -+ return WEXITSTATUS(status); -+} -+ -+int main(void) -+{ -+ check_ns_ioctl(); -+ -+ if (unshare(CLONE_NEWPID | CLONE_NEWUSER) < 0) { -+ if (errno == EPERM) -+ perror_msg_and_skip("unshare"); -+ -+ perror_msg_and_fail("unshare"); -+ } -+ -+ errno = fork_chain(2); -+ if (errno) -+ perror("fork_chain"); -+} -+ -+#else -+ -+SKIP_MAIN_UNDEFINED("__NR_fork") -+ -+#endif -Index: strace-5.7/tests-mx32/fork--pidns-translation.test -=================================================================== ---- /dev/null 1970-01-01 00:00:00.000000000 +0000 -+++ strace-5.7/tests-mx32/fork--pidns-translation.test 2020-09-09 19:52:38.906673636 +0200 -@@ -0,0 +1,14 @@ -+#!/bin/sh -+# -+# Check pidns translation of fork's return value. -+# -+# Copyright (c) 2020 The strace developers. -+# All rights reserved. -+# -+# SPDX-License-Identifier: LGPL-2.1-or-later -+ -+. "${srcdir=.}/init.sh" -+ -+run_prog -+run_strace -a6 --pidns-translation -f -e trace=fork $args -+match_awk -Index: strace-5.7/tests-mx32/gen_tests.in -=================================================================== ---- strace-5.7.orig/tests-mx32/gen_tests.in 2020-09-09 19:52:30.625668700 +0200 -+++ strace-5.7/tests-mx32/gen_tests.in 2020-09-09 19:52:38.907673637 +0200 -@@ -88,7 +88,9 @@ - fchown32 -a18 - fchownat - fcntl -a8 -+fcntl--pidns-translation test_pidns -a8 -e trace=fcntl - fcntl64 -a8 -+fcntl64--pidns-translation test_pidns -a8 -e trace=fcntl64 - fdatasync -a14 - file_handle -e trace=name_to_handle_at,open_by_handle_at - file_ioctl +ioctl.test -@@ -142,7 +144,9 @@ - getgroups32 -a19 - getpeername -a27 - getpgrp -a10 -+getpgrp--pidns-translation test_pidns -e trace=getpgrp -a10 - getpid -a9 -+getpid--pidns-translation test_pidns -e trace=getpid -a9 - getppid -a10 - getrandom -a32 -s3 - getresgid -a25 -@@ -152,6 +156,7 @@ - getrlimit -a27 - getrusage -v - getsid -a10 -+getsid--pidns-translation test_pidns -e trace=getsid -a10 - getsockname -a27 - gettid -a9 - getuid-creds +getuid.test -@@ -245,6 +250,7 @@ - ioperm -a27 - iopl -a8 - ioprio -a18 -e trace=ioprio_get,ioprio_set -+ioprio--pidns-translation test_pidns -a18 -e trace=ioprio_get,ioprio_set - ioprio-Xabbrev -a18 -e trace=ioprio_get,ioprio_set -Xabbrev - ioprio-Xraw -a18 -e trace=ioprio_get,ioprio_set -Xraw - ioprio-Xverbose -a18 -e trace=ioprio_get,ioprio_set -Xverbose -@@ -267,6 +273,7 @@ - ipc_shm-Xverbose +ipc.sh -Xverbose -a34 - kcmp -a22 - kcmp-y -a22 -y -e trace=kcmp -+kcmp-y--pidns-translation test_pidns -a22 -y -e trace=kcmp - kern_features -a16 - kernel_version -a16 -v -e trace=bpf - kernel_version-Xabbrev -a16 -Xabbrev -v -e trace=bpf -@@ -279,6 +286,7 @@ - keyctl-Xraw -a13 -s10 -e trace=keyctl -Xraw - keyctl-Xverbose -a41 -s10 -e trace=keyctl -Xverbose - kill -a12 -esignal=none -+kill--pidns-translation test_pidns -a12 -e trace=kill -esignal=none - ksysent ../$NAME - lchown -a30 - lchown32 -a32 -@@ -300,6 +308,7 @@ - memfd_create-Xraw -a30 -Xraw -e trace=memfd_create - memfd_create-Xverbose -Xverbose -e trace=memfd_create - migrate_pages -a33 -+migrate_pages--pidns-translation test_pidns -a33 -e trace=migrate_pages - mincore -a22 - mkdir -a20 - mkdirat -a28 -@@ -330,6 +339,7 @@ - move_pages-Xabbrev -s3 -e trace=move_pages -Xabbrev - move_pages-Xraw -s3 -a36 -e trace=move_pages -Xraw - move_pages-Xverbose -s3 -e trace=move_pages -Xverbose -+move_pages--pidns-translation test_pidns -s3 -e trace=move_pages - mq -a32 -e trace=mq_getsetattr,mq_open,mq_unlink - mq_sendrecv -a14 -e trace=mq_open,mq_notify,mq_timedsend,mq_timedreceive,mq_unlink - mq_sendrecv-read -eread=0 -a14 -e trace=mq_open,mq_notify,mq_timedsend,mq_timedreceive,mq_unlink -@@ -349,6 +359,7 @@ - net-packet_mreq-Xraw -e trace=setsockopt -Xraw - net-packet_mreq-Xverbose -e trace=setsockopt -Xverbose - net-sockaddr -a24 -e trace=connect -+net-sockaddr--pidns-translation test_pidns -a24 -e trace=connect - net-tpacket_req -e trace=setsockopt - net-tpacket_stats -e trace=getsockopt - net-yy-inet6 +net-yy-inet.test -@@ -452,7 +463,9 @@ - pidfd_open-P -a17 -P /dev/full -e trace=pidfd_open - pidfd_open-y -a17 -y -e trace=pidfd_open - pidfd_open-yy -a17 -yy -e trace=pidfd_open -+pidfd_open--pidns-translation test_pidns -a17 -e trace=pidfd_open - pidfd_send_signal -+pidfd_send_signal--pidns-translation test_pidns -e trace=pidfd_send_signal - pipe2 -a15 - pkey_alloc -a17 - pkey_free -a13 -@@ -475,8 +488,11 @@ - printstrn-umoven-peekdata -e signal=none -e trace=add_key - printstrn-umoven-undumpable -e signal=none -e trace=add_key - prlimit64 -+prlimit64--pidns-translation test_pidns -e trace=prlimit64 - process_vm_readv -s5 -a37 -+process_vm_readv--pidns-translation test_pidns -s5 -a37 -e trace=process_vm_readv - process_vm_writev -s5 -a38 -+process_vm_writev--pidns-translation test_pidns -s5 -a38 -e trace=process_vm_writev - pselect6 - ptrace -a23 -e signal=none - ptrace_syscall_info -a35 -e signal=none -e trace=ptrace -@@ -513,10 +529,12 @@ - rt_sigpending -a20 - rt_sigprocmask - rt_sigqueueinfo -esignal=none -+rt_sigqueueinfo--pidns-translation test_pidns -esignal=none -e trace=rt_sigqueueinfo - rt_sigreturn -esignal='!USR1' - rt_sigsuspend -a20 -esignal=none - rt_sigtimedwait -a38 - rt_tgsigqueueinfo -esignal=none -+rt_tgsigqueueinfo--pidns-translation test_pidns -esignal=none -e trace=rt_tgsigqueueinfo - s390_guarded_storage -a32 - s390_guarded_storage-v -e trace=s390_guarded_storage -a32 -v - s390_pci_mmio_read_write -e trace=s390_pci_mmio_read,s390_pci_mmio_write -a30 -@@ -527,9 +545,13 @@ - sched_get_priority_mxx -a33 -e trace=sched_get_priority_min,sched_get_priority_max - sched_rr_get_interval -a31 - sched_xetaffinity -a28 -e trace=sched_getaffinity,sched_setaffinity -+sched_xetaffinity--pidns-translation test_pidns -a28 -e trace=sched_getaffinity,sched_setaffinity - sched_xetattr -a29 -e trace=sched_getattr,sched_setattr -+sched_xetattr--pidns-translation test_pidns -a29 -e trace=sched_getattr,sched_setattr - sched_xetparam -a23 -e trace=sched_getparam,sched_setparam -+sched_xetparam--pidns-translation test_pidns -a23 -e trace=sched_getparam,sched_setparam - sched_xetscheduler -a22 -e trace=sched_getscheduler,sched_setscheduler -+sched_xetscheduler--pidns-translation test_pidns -a22 -e trace=sched_getscheduler,sched_setscheduler - sched_yield -a14 - seccomp-filter -e trace=seccomp - seccomp-filter-v -v -e trace=seccomp -@@ -576,6 +598,7 @@ - siginfo -e trace=none - signal -a25 -e signal=none -e trace='/^signal$' - signal_receive -a16 -e trace=kill -+signal_receive--pidns-translation test_pidns -a16 -e trace=kill - signalfd4 - sigpending -a15 - sigprocmask -a34 -@@ -587,6 +610,7 @@ - so_peercred-Xabbrev -e trace=getsockopt -Xabbrev - so_peercred-Xraw -e trace=getsockopt -Xraw -a39 - so_peercred-Xverbose -e trace=getsockopt -Xverbose -+so_peercred--pidns-translation test_pidns -e trace=getsockopt - sock_filter-v -v -e trace=getsockopt,setsockopt - sock_filter-v-Xabbrev -v -e trace=getsockopt,setsockopt -X abbrev - sock_filter-v-Xraw -a 37 -v -e trace=getsockopt,setsockopt -X raw -@@ -659,6 +683,7 @@ - syslog -a35 - tee - tgkill -a15 --signal='!cont' -+tgkill--pidns-translation test_pidns -a15 --signal='!cont' -e trace=tgkill - threads-execve--quiet-thread-execve +threads-execve.test -s40 --quiet=personality,thread-execve - threads-execve-q +threads-execve.test -q - threads-execve-qq +threads-execve.test -qq -@@ -670,6 +695,7 @@ - times -esignal=none - times-fail -a12 -e trace=times - tkill -a12 --signal='!cont' -+tkill--pidns-translation test_pidns --signal='!cont' -a12 -e trace=tkill - trace_clock test_trace_expr 'clock_nanosleep|times' -e%clock - trace_creds test_trace_expr '([gs]et[^p]*([gu]id|groups)|caps|prctl|[fl]?chown|print(path-umovestr|strn-umoven)-undumpable|ptrace|quotactl|rt_sigtimedwait|rt_(tg)?sigqueueinfo).*' -e%creds - trace_fstat test_trace_expr '' -e%fstat -v -P stat.sample -P /dev/full -@@ -686,6 +712,7 @@ - trace_stat_like test_trace_expr '' -e%%stat -v -P stat.sample -P /dev/full - trace_statfs test_trace_expr '' -e%statfs - trace_statfs_like test_trace_expr '' -e%%statfs -+trie_test run_prog - truncate - truncate64 - ugetrlimit -a28 -@@ -716,7 +743,10 @@ - xattr -a22 -e trace=getxattr,fgetxattr,lgetxattr,setxattr,fsetxattr,lsetxattr,listxattr,flistxattr,llistxattr,removexattr,fremovexattr,lremovexattr - xattr-strings -a22 -s 4 -e trace=fsetxattr - xet_robust_list -a24 -e trace=get_robust_list,set_robust_list -+xet_robust_list--pidns-translation test_pidns -a24 -e trace=get_robust_list,set_robust_list - xetitimer -a29 -e trace=setitimer,getitimer - xetpgid -a11 -e trace=getpgid,setpgid --xetpriority -a29 -e trace=getpriority,setpriority -+xetpgid--pidns-translation test_pidns -a11 -e trace=getpgid,setpgid -+xetpriority -a27 -e trace=getpriority,setpriority -+xetpriority--pidns-translation test_pidns -a27 -e trace=getpriority,setpriority - xettimeofday -a20 -e trace=gettimeofday,settimeofday -Index: strace-5.7/tests-mx32/getpgrp--pidns-translation.c -=================================================================== ---- /dev/null 1970-01-01 00:00:00.000000000 +0000 -+++ strace-5.7/tests-mx32/getpgrp--pidns-translation.c 2020-09-09 19:52:38.907673637 +0200 -@@ -0,0 +1,2 @@ -+#define PIDNS_TRANSLATION -+#include "getpgrp.c" -Index: strace-5.7/tests-mx32/getpgrp.c -=================================================================== ---- strace-5.7.orig/tests-mx32/getpgrp.c 2020-09-09 19:52:30.625668700 +0200 -+++ strace-5.7/tests-mx32/getpgrp.c 2020-09-09 19:52:38.907673637 +0200 -@@ -7,6 +7,7 @@ - - #include "tests.h" - #include "scno.h" -+#include "pidns.h" - - #ifdef __NR_getpgrp - -@@ -16,8 +17,13 @@ - int - main(void) - { -- printf("getpgrp() = %ld\n", syscall(__NR_getpgrp)); -+ PIDNS_TEST_INIT; - -+ pidns_print_leader(); -+ printf("getpgrp() = %d%s\n", (int) syscall(__NR_getpgrp), -+ pidns_pid2str(PT_PGID)); -+ -+ pidns_print_leader(); - puts("+++ exited with 0 +++"); - return 0; - } -Index: strace-5.7/tests-mx32/getpid--pidns-translation.c -=================================================================== ---- /dev/null 1970-01-01 00:00:00.000000000 +0000 -+++ strace-5.7/tests-mx32/getpid--pidns-translation.c 2020-09-09 19:52:38.907673637 +0200 -@@ -0,0 +1,2 @@ -+#define PIDNS_TRANSLATION -+#include "getpid.c" -Index: strace-5.7/tests-mx32/getpid.c -=================================================================== ---- strace-5.7.orig/tests-mx32/getpid.c 2020-09-09 19:52:30.625668700 +0200 -+++ strace-5.7/tests-mx32/getpid.c 2020-09-09 19:52:38.907673637 +0200 -@@ -7,6 +7,7 @@ - - #include "tests.h" - #include "scno.h" -+#include "pidns.h" - - #if defined __NR_getpid && (!defined __NR_getxpid || __NR_getxpid != __NR_getpid) - -@@ -16,7 +17,12 @@ - int - main(void) - { -- printf("getpid() = %ld\n", syscall(__NR_getpid)); -+ PIDNS_TEST_INIT; -+ -+ pidns_print_leader(); -+ printf("getpid() = %d%s\n", (int) syscall(__NR_getpid), -+ pidns_pid2str(PT_TGID)); -+ pidns_print_leader(); - puts("+++ exited with 0 +++"); - return 0; - } -Index: strace-5.7/tests-mx32/getsid--pidns-translation.c -=================================================================== ---- /dev/null 1970-01-01 00:00:00.000000000 +0000 -+++ strace-5.7/tests-mx32/getsid--pidns-translation.c 2020-09-09 19:52:38.907673637 +0200 -@@ -0,0 +1,2 @@ -+#define PIDNS_TRANSLATION -+#include "getsid.c" -Index: strace-5.7/tests-mx32/getsid.c -=================================================================== ---- strace-5.7.orig/tests-mx32/getsid.c 2020-09-09 19:52:30.625668700 +0200 -+++ strace-5.7/tests-mx32/getsid.c 2020-09-09 19:52:38.907673637 +0200 -@@ -6,15 +6,22 @@ - */ - - #include "tests.h" -+#include "pidns.h" -+ - #include - #include - - int - main(void) - { -+ PIDNS_TEST_INIT; -+ - pid_t pid = getpid(); -- printf("getsid(%d) = %d\n", pid, getsid(pid)); -+ pidns_print_leader(); -+ printf("getsid(%d%s) = %d%s\n", pid, pidns_pid2str(PT_TGID), -+ getsid(pid), pidns_pid2str(PT_SID)); - -+ pidns_print_leader(); - puts("+++ exited with 0 +++"); - return 0; - } -Index: strace-5.7/tests-mx32/gettid--pidns-translation.c -=================================================================== ---- /dev/null 1970-01-01 00:00:00.000000000 +0000 -+++ strace-5.7/tests-mx32/gettid--pidns-translation.c 2020-09-09 19:52:38.908673637 +0200 -@@ -0,0 +1,2 @@ -+#define PIDNS_TRANSLATION -+#include "gettid.c" -Index: strace-5.7/tests-mx32/gettid--pidns-translation.test -=================================================================== ---- /dev/null 1970-01-01 00:00:00.000000000 +0000 -+++ strace-5.7/tests-mx32/gettid--pidns-translation.test 2020-09-09 19:52:38.908673637 +0200 -@@ -0,0 +1,18 @@ -+#!/bin/sh -+# -+# Check pidns translation of gettid's return value. -+# -+# Copyright (c) 2020 The strace developers. -+# All rights reserved. -+# -+# SPDX-License-Identifier: LGPL-2.1-or-later -+ -+. "${srcdir=.}/init.sh" -+ -+run_prog > /dev/null -+run_strace -a9 --pidns-translation -f -e trace=gettid $args > "$EXP" -+parent_pid="$(tail -n 2 $LOG | head -n 1 | cut -d' ' -f1)" -+init_pid="$(tail -n 1 $LOG | cut -d' ' -f1)" -+# uniq: filter out extra gettid calls made by musl libc -+grep -E -v "^($parent_pid|$init_pid) |unfinished|resumed" "$LOG" | uniq > "$OUT" -+match_diff "$OUT" "$EXP" -Index: strace-5.7/tests-mx32/gettid.c -=================================================================== ---- strace-5.7.orig/tests-mx32/gettid.c 2020-09-09 19:52:30.626668701 +0200 -+++ strace-5.7/tests-mx32/gettid.c 2020-09-09 19:52:38.908673637 +0200 -@@ -9,11 +9,17 @@ - #include - #include - #include "scno.h" -+#include "pidns.h" - - int - main(void) - { -- printf("gettid() = %ld\n", syscall(__NR_gettid)); -+ PIDNS_TEST_INIT; -+ -+ pidns_print_leader(); -+ printf("gettid() = %d%s\n", (int) syscall(__NR_gettid), -+ pidns_pid2str(PT_TID)); -+ pidns_print_leader(); - puts("+++ exited with 0 +++"); - return 0; - } -Index: strace-5.7/tests-mx32/ioctl_block--pidns-translation.c -=================================================================== ---- /dev/null 1970-01-01 00:00:00.000000000 +0000 -+++ strace-5.7/tests-mx32/ioctl_block--pidns-translation.c 2020-09-09 19:52:38.908673637 +0200 -@@ -0,0 +1,2 @@ -+#define PIDNS_TRANSLATION -+#include "ioctl_block.c" -Index: strace-5.7/tests-mx32/ioctl_block--pidns-translation.test -=================================================================== ---- /dev/null 1970-01-01 00:00:00.000000000 +0000 -+++ strace-5.7/tests-mx32/ioctl_block--pidns-translation.test 2020-09-09 19:52:38.908673637 +0200 -@@ -0,0 +1,22 @@ -+#!/bin/sh -+# -+# Check pidns translation of ioctl(BLK*) syscall decoding. -+# -+# Copyright (c) 2020 The strace developers. -+# All rights reserved. -+# -+# SPDX-License-Identifier: LGPL-2.1-or-later -+ -+. "${srcdir=.}/init.sh" -+ -+check_prog head -+check_prog tail -+check_prog cut -+check_prog grep -+ -+run_prog > /dev/null -+run_strace --pidns-translation -f -a16 -e trace=ioctl $@ $args > "$EXP" -+parent_pid="$(tail -n 2 $LOG | head -n 1 | cut -d' ' -f1)" -+init_pid="$(tail -n 1 $LOG | cut -d' ' -f1)" -+grep -E -v "^($parent_pid|$init_pid) |ioctl\([0123][,<]" "$LOG" > "$OUT" -+match_diff "$OUT" "$EXP" -Index: strace-5.7/tests-mx32/ioctl_block.c -=================================================================== ---- strace-5.7.orig/tests-mx32/ioctl_block.c 2020-09-09 19:52:30.626668701 +0200 -+++ strace-5.7/tests-mx32/ioctl_block.c 2020-09-09 19:52:38.908673637 +0200 -@@ -9,7 +9,9 @@ - */ - - #include "tests.h" -+#include "pidns.h" - #include -+#include - #include - #include - #include -@@ -41,12 +43,15 @@ - #define TEST_NULL_ARG(cmd) \ - do { \ - ioctl(-1, cmd, 0); \ -+ pidns_print_leader(); \ - printf("ioctl(-1, %s, NULL) = -1 EBADF (%m)\n", #cmd); \ - } while (0) - - int - main(void) - { -+ PIDNS_TEST_INIT; -+ - TEST_NULL_ARG(BLKBSZGET); - TEST_NULL_ARG(BLKBSZSET); - TEST_NULL_ARG(BLKFRAGET); -@@ -91,18 +96,22 @@ - #endif - - ioctl(-1, BLKRASET, lmagic); -+ pidns_print_leader(); - printf("ioctl(-1, BLKRASET, %lu) = -1 EBADF (%m)\n", lmagic); - - ioctl(-1, BLKFRASET, lmagic); -+ pidns_print_leader(); - printf("ioctl(-1, BLKFRASET, %lu) = -1 EBADF (%m)\n", lmagic); - - TAIL_ALLOC_OBJECT_CONST_PTR(int, val_int); - *val_int = magic; - - ioctl(-1, BLKROSET, val_int); -+ pidns_print_leader(); - printf("ioctl(-1, BLKROSET, [%d]) = -1 EBADF (%m)\n", *val_int); - - ioctl(-1, BLKBSZSET, val_int); -+ pidns_print_leader(); - printf("ioctl(-1, BLKBSZSET, [%d]) = -1 EBADF (%m)\n", *val_int); - - uint64_t *pair_int64 = tail_alloc(sizeof(*pair_int64) * 2); -@@ -111,18 +120,21 @@ - - #ifdef BLKDISCARD - ioctl(-1, BLKDISCARD, pair_int64); -+ pidns_print_leader(); - printf("ioctl(-1, BLKDISCARD, [%" PRIu64 ", %" PRIu64 "])" - " = -1 EBADF (%m)\n", pair_int64[0], pair_int64[1]); - #endif - - #ifdef BLKSECDISCARD - ioctl(-1, BLKSECDISCARD, pair_int64); -+ pidns_print_leader(); - printf("ioctl(-1, BLKSECDISCARD, [%" PRIu64 ", %" PRIu64 "])" - " = -1 EBADF (%m)\n", pair_int64[0], pair_int64[1]); - #endif - - #ifdef BLKZEROOUT - ioctl(-1, BLKZEROOUT, pair_int64); -+ pidns_print_leader(); - printf("ioctl(-1, BLKZEROOUT, [%" PRIu64 ", %" PRIu64 "])" - " = -1 EBADF (%m)\n", pair_int64[0], pair_int64[1]); - #endif -@@ -134,6 +146,7 @@ - blkpg->data = (void *) (unsigned long) 0xcafef00dfffffeedULL; - - ioctl(-1, BLKPG, blkpg); -+ pidns_print_leader(); - printf("ioctl(-1, BLKPG, {op=%s, flags=%d, datalen=%d" - ", data=%#lx}) = -1 EBADF (%m)\n", - "BLKPG_RESIZE_PARTITION", blkpg->flags, blkpg->datalen, -@@ -149,6 +162,7 @@ - blkpg->data = bp; - - ioctl(-1, BLKPG, blkpg); -+ pidns_print_leader(); - printf("ioctl(-1, BLKPG, {op=%s, flags=%d, datalen=%d" - ", data={start=%lld, length=%lld, pno=%d" - ", devname=\"%.*s\"..., volname=\"%.*s\"...}})" -@@ -162,25 +176,31 @@ - #if defined BLKTRACESETUP && defined HAVE_STRUCT_BLK_USER_TRACE_SETUP - TAIL_ALLOC_OBJECT_CONST_PTR(struct blk_user_trace_setup, buts); - fill_memory(buts, sizeof(*buts)); -+ buts->pid = getpid(); - - ioctl(-1, BLKTRACESETUP, buts); -+ pidns_print_leader(); - printf("ioctl(-1, BLKTRACESETUP, {act_mask=%hu, buf_size=%u, buf_nr=%u" -- ", start_lba=%" PRI__u64 ", end_lba=%" PRI__u64 ", pid=%d})" -+ ", start_lba=%" PRI__u64 ", end_lba=%" PRI__u64 ", pid=%d%s})" - " = -1 EBADF (%m)\n", - buts->act_mask, buts->buf_size, buts->buf_nr, -- buts->start_lba, buts->end_lba, buts->pid); -+ buts->start_lba, buts->end_lba, buts->pid, -+ pidns_pid2str(PT_TGID)); - #endif - - unsigned int i; - for (i = 0; i < ARRAY_SIZE(block_argless); ++i) { - ioctl(-1, (unsigned long) block_argless[i].val, lmagic); -+ pidns_print_leader(); - printf("ioctl(-1, %s) = -1 EBADF (%m)\n", block_argless[i].str); - } - - ioctl(-1, _IOC(_IOC_READ, 0x12, 0xfe, 0xff), lmagic); -+ pidns_print_leader(); - printf("ioctl(-1, %s, %#lx) = -1 EBADF (%m)\n", - "_IOC(_IOC_READ, 0x12, 0xfe, 0xff)", lmagic); - -+ pidns_print_leader(); - puts("+++ exited with 0 +++"); - return 0; - } -Index: strace-5.7/tests-mx32/ioprio--pidns-translation.c -=================================================================== ---- /dev/null 1970-01-01 00:00:00.000000000 +0000 -+++ strace-5.7/tests-mx32/ioprio--pidns-translation.c 2020-09-09 19:52:38.908673637 +0200 -@@ -0,0 +1,2 @@ -+#define PIDNS_TRANSLATION -+#include "ioprio.c" -Index: strace-5.7/tests-mx32/ioprio.c -=================================================================== ---- strace-5.7.orig/tests-mx32/ioprio.c 2020-09-09 19:52:30.627668701 +0200 -+++ strace-5.7/tests-mx32/ioprio.c 2020-09-09 19:52:38.909673638 +0200 -@@ -9,8 +9,8 @@ - */ - - #include "tests.h" -- - #include "scno.h" -+#include "pidns.h" - - #if defined(__NR_ioprio_get) && defined(__NR_ioprio_set) - -@@ -30,12 +30,18 @@ - int - main(void) - { -+ PIDNS_TEST_INIT; -+ - static const kernel_ulong_t bogus_which = - (kernel_ulong_t) 0xdeadfacefa57beefULL; - static const kernel_ulong_t bogus_who = - (kernel_ulong_t) 0xbadc0dedda7a1057ULL; - static const kernel_ulong_t bogus_ioprio = - (kernel_ulong_t) 0xdec0ded1facefeedULL; -+ -+ const int pid = getpid(); -+ const int pgid = getpgid(0); -+ - # if !XLAT_RAW - static const char * const bogus_ioprio_str = - "IOPRIO_PRIO_VALUE(0x7d677 /* IOPRIO_CLASS_??? */, 7917)"; -@@ -46,6 +52,7 @@ - - rc = syscall(__NR_ioprio_get, bogus_which, bogus_who); - errstr = sprintrc(rc); -+ pidns_print_leader(); - # if XLAT_RAW - printf("ioprio_get(%#x, %d) = %s\n", - (int) bogus_which, (int) bogus_who, errstr); -@@ -54,42 +61,52 @@ - (int) bogus_which, (int) bogus_who, errstr); - # endif - -- rc = syscall(__NR_ioprio_get, 1, 0); -+ rc = syscall(__NR_ioprio_get, 1, pid); - errstr = sprintrc(rc); -+ pidns_print_leader(); -+ printf("ioprio_get("); - # if XLAT_RAW -- printf("ioprio_get(0x1, 0) = %s\n", errstr); -+ printf("0x1, "); -+# elif XLAT_VERBOSE -+ printf("0x1 /* IOPRIO_WHO_PROCESS */, "); - # else /* XLAT_ABBREV */ --# if XLAT_VERBOSE -- printf("ioprio_get(0x1 /* IOPRIO_WHO_PROCESS */, 0) = %s", errstr); --# else -- printf("ioprio_get(IOPRIO_WHO_PROCESS, 0) = %s", errstr); --# endif -+ printf("IOPRIO_WHO_PROCESS, "); -+# endif -+ printf("%d%s) = %s", pid, pidns_pid2str(PT_TGID), errstr); -+# if !XLAT_RAW - if (rc >= 0) { - printf(" (IOPRIO_PRIO_VALUE("); - printxval(ioprio_class, (unsigned int) rc >> 13, - "IOPRIO_CLASS_???"); - printf(", %u))", (unsigned int) rc & 0x1fff); - } -- puts(""); - # endif -+ puts(""); - -- rc = syscall(__NR_ioprio_set, 2, 0, 8191); -+ rc = syscall(__NR_ioprio_set, 2, pgid, 8191); - errstr = sprintrc(rc); -+ pidns_print_leader(); -+ printf("ioprio_set("); - # if XLAT_RAW -- printf("ioprio_set(%#x, 0, 8191) = %s\n", 2, errstr); -+ printf("%#x", 2); - # elif XLAT_VERBOSE -- printf("ioprio_set(%#x /* IOPRIO_WHO_PGRP */, 0, 8191" -- " /* IOPRIO_PRIO_VALUE(0 /* IOPRIO_CLASS_NONE */, 8191) */)" -- " = %s\n", -- 2, errstr); -+ printf("%#x /* IOPRIO_WHO_PGRP */", 2); - # else /* XLAT_ABBREV */ -- printf("ioprio_set(IOPRIO_WHO_PGRP, 0" -- ", IOPRIO_PRIO_VALUE(IOPRIO_CLASS_NONE, 8191)) = %s\n", -- errstr); -+ printf("IOPRIO_WHO_PGRP"); -+# endif -+ printf(", %d%s", pgid, pidns_pid2str(PT_PGID)); -+# if XLAT_RAW -+ printf(", 8191)"); -+# elif XLAT_VERBOSE -+ printf(", 8191 /* IOPRIO_PRIO_VALUE(0 /* IOPRIO_CLASS_NONE */, 8191) */)"); -+# else /* XLAT_ABBREV */ -+ printf(", IOPRIO_PRIO_VALUE(IOPRIO_CLASS_NONE, 8191))"); - # endif -+ printf(" = %s\n", errstr); - - rc = syscall(__NR_ioprio_set, bogus_which, bogus_who, bogus_ioprio); - errstr = sprintrc(rc); -+ pidns_print_leader(); - # if XLAT_RAW - printf("ioprio_set(%#x, %d, %d) = %s\n", - (int) bogus_which, (int) bogus_who, (int) bogus_ioprio, -@@ -104,6 +121,7 @@ - errstr); - # endif - -+ pidns_print_leader(); - puts("+++ exited with 0 +++"); - - return 0; -Index: strace-5.7/tests-mx32/kcmp-y--pidns-translation.c -=================================================================== ---- /dev/null 1970-01-01 00:00:00.000000000 +0000 -+++ strace-5.7/tests-mx32/kcmp-y--pidns-translation.c 2020-09-09 19:52:38.909673638 +0200 -@@ -0,0 +1,2 @@ -+#define PIDNS_TRANSLATION -+#include "kcmp-y.c" -Index: strace-5.7/tests-mx32/kcmp.c -=================================================================== ---- strace-5.7.orig/tests-mx32/kcmp.c 2020-09-09 19:52:30.627668701 +0200 -+++ strace-5.7/tests-mx32/kcmp.c 2020-09-09 19:52:38.909673638 +0200 -@@ -9,8 +9,8 @@ - */ - - #include "tests.h" -- - #include "scno.h" -+#include "pidns.h" - - #ifdef __NR_kcmp - -@@ -101,7 +101,11 @@ - rc = syscall(__NR_kcmp, pid1, pid2, type, idx1, idx2); - errstr = sprintrc(rc); - -- printf("kcmp(%d, %d, ", (int) pid1, (int) pid2); -+ const char *pid_str = pidns_pid2str(PT_TGID); -+ pidns_print_leader(); -+ printf("kcmp(%d%s, %d%s, ", -+ (int) pid1, (int) pid1 == getpid() ? pid_str : "", -+ (int) pid2, (int) pid2 == getpid() ? pid_str : ""); - - if (type_str) - printf("%s", type_str); -@@ -146,6 +150,8 @@ - int - main(void) - { -+ PIDNS_TEST_INIT; -+ - static const kernel_ulong_t bogus_pid1 = - (kernel_ulong_t) 0xdeadca75face1057ULL; - static const kernel_ulong_t bogus_pid2 = -@@ -221,6 +227,7 @@ - (uintptr_t) slot, 1); - } - -+ pidns_print_leader(); - puts("+++ exited with 0 +++"); - - return 0; -Index: strace-5.7/tests-mx32/kill--pidns-translation.c -=================================================================== ---- /dev/null 1970-01-01 00:00:00.000000000 +0000 -+++ strace-5.7/tests-mx32/kill--pidns-translation.c 2020-09-09 19:52:38.909673638 +0200 -@@ -0,0 +1,2 @@ -+#define PIDNS_TRANSLATION -+#include "kill.c" -Index: strace-5.7/tests-mx32/kill.c -=================================================================== ---- strace-5.7.orig/tests-mx32/kill.c 2020-09-09 19:52:30.628668702 +0200 -+++ strace-5.7/tests-mx32/kill.c 2020-09-09 19:52:38.909673638 +0200 -@@ -11,6 +11,7 @@ - - #include "tests.h" - #include "scno.h" -+#include "pidns.h" - - #ifdef __NR_kill - -@@ -26,6 +27,8 @@ - int - main(void) - { -+ PIDNS_TEST_INIT; -+ - const struct sigaction act = { .sa_handler = handler }; - if (sigaction(SIGALRM, &act, NULL)) - perror_msg_and_fail("sigaction"); -@@ -37,18 +40,23 @@ - perror_msg_and_fail("sigprocmask"); - - const int pid = getpid(); -+ const char *pid_str = pidns_pid2str(PT_TGID); - long rc = syscall(__NR_kill, pid, (long) 0xdefaced00000000ULL | SIGALRM); -- printf("kill(%d, SIGALRM) = %ld\n", pid, rc); -+ pidns_print_leader(); -+ printf("kill(%d%s, SIGALRM) = %ld\n", pid, pid_str, rc); - - const long big_pid = (long) 0xfacefeedbadc0dedULL; - const long big_sig = (long) 0xdeadbeefcafef00dULL; - rc = syscall(__NR_kill, big_pid, big_sig); -+ pidns_print_leader(); - printf("kill(%d, %d) = %ld %s (%m)\n", - (int) big_pid, (int) big_sig, rc, errno2name()); - - rc = syscall(__NR_kill, (long) 0xdefaced00000000ULL | pid, 0); -- printf("kill(%d, 0) = %ld\n", pid, rc); -+ pidns_print_leader(); -+ printf("kill(%d%s, 0) = %ld\n", pid, pid_str, rc); - -+ pidns_print_leader(); - puts("+++ exited with 0 +++"); - return 0; - } -Index: strace-5.7/tests-mx32/migrate_pages--pidns-translation.c -=================================================================== ---- /dev/null 1970-01-01 00:00:00.000000000 +0000 -+++ strace-5.7/tests-mx32/migrate_pages--pidns-translation.c 2020-09-09 19:52:38.909673638 +0200 -@@ -0,0 +1,2 @@ -+#define PIDNS_TRANSLATION -+#include "migrate_pages.c" -Index: strace-5.7/tests-mx32/migrate_pages.c -=================================================================== ---- strace-5.7.orig/tests-mx32/migrate_pages.c 2020-09-09 19:52:30.628668702 +0200 -+++ strace-5.7/tests-mx32/migrate_pages.c 2020-09-09 19:52:38.909673638 +0200 -@@ -10,6 +10,7 @@ - - #include "tests.h" - #include "scno.h" -+#include "pidns.h" - - #ifdef __NR_migrate_pages - -@@ -19,11 +20,21 @@ - int - main(void) - { -- const long pid = (long) 0xfacefeedffffffffULL; -+ PIDNS_TEST_INIT; -+ -+ const long pid = (long) 0xfacefeed00000000ULL | getpid(); - long rc = syscall(__NR_migrate_pages, pid, 0, 0, 0); -- printf("migrate_pages(%d, 0, NULL, NULL) = %ld %s (%m)\n", -- (int) pid, rc, errno2name()); - -+ pidns_print_leader(); -+ printf("migrate_pages(%d%s, 0, NULL, NULL) = %ld", -+ (int) pid, pidns_pid2str(PT_TGID), rc); -+ -+ if (rc < 0) -+ printf(" %s (%m)\n", errno2name()); -+ else -+ printf("\n"); -+ -+ pidns_print_leader(); - puts("+++ exited with 0 +++"); - return 0; - } -Index: strace-5.7/tests-mx32/move_pages--pidns-translation.c -=================================================================== ---- /dev/null 1970-01-01 00:00:00.000000000 +0000 -+++ strace-5.7/tests-mx32/move_pages--pidns-translation.c 2020-09-09 19:52:38.910673638 +0200 -@@ -0,0 +1,2 @@ -+#define PIDNS_TRANSLATION -+#include "move_pages.c" -Index: strace-5.7/tests-mx32/move_pages.c -=================================================================== ---- strace-5.7.orig/tests-mx32/move_pages.c 2020-09-09 19:52:30.629668703 +0200 -+++ strace-5.7/tests-mx32/move_pages.c 2020-09-09 19:52:38.910673638 +0200 -@@ -10,6 +10,7 @@ - - #include "tests.h" - #include "scno.h" -+#include "pidns.h" - - #ifdef __NR_move_pages - -@@ -122,15 +123,20 @@ - } - - static void --print_stat_pages(const unsigned long pid, const unsigned long count, -- const void **const pages, int *const status) -+print_stat_pages(const unsigned long pid, -+ const char *pid_str, -+ const unsigned long count, -+ const void **const pages, -+ int *const status) - { - const unsigned long flags = (unsigned long) 0xfacefeed00000002ULL; - - long rc = syscall(__NR_move_pages, - pid, count, pages, NULL, status, flags); - const char *errstr = sprintrc(rc); -- printf("move_pages(%d, %lu, ", (int) pid, count); -+ pidns_print_leader(); -+ printf("move_pages(%d%s, %lu, ", (int) pid, pid_str, -+ count); - print_page_array(pages, count, 0); - printf(", NULL, "); - if (rc) { -@@ -152,6 +158,7 @@ - - static void - print_move_pages(const unsigned long pid, -+ const char *pid_str, - unsigned long count, - const unsigned int offset, - const void **const pages, -@@ -164,7 +171,9 @@ - long rc = syscall(__NR_move_pages, - pid, count, pages, nodes, status, flags); - const char *errstr = sprintrc(rc); -- printf("move_pages(%d, %lu, ", (int) pid, count); -+ pidns_print_leader(); -+ printf("move_pages(%d%s, %lu, ", (int) pid, pid_str, -+ count); - print_page_array(pages, count, offset); - printf(", "); - print_node_array(nodes, count, offset); -@@ -185,8 +194,11 @@ - int - main(void) - { -+ PIDNS_TEST_INIT; -+ - const unsigned long pid = - (unsigned long) 0xfacefeed00000000ULL | getpid(); -+ const char *pid_str = pidns_pid2str(PT_TGID); - unsigned long count = 1; - const unsigned page_size = get_page_size(); - const void *const page = tail_alloc(page_size); -@@ -195,40 +207,41 @@ - TAIL_ALLOC_OBJECT_VAR_PTR(int, nodes); - TAIL_ALLOC_OBJECT_VAR_PTR(int, status); - -- print_stat_pages(pid, 0, pages, status); -- print_move_pages(pid, 0, 0, pages, nodes, status); -- print_move_pages(pid, 0, 1, pages + 1, nodes + 1, status + 1); -+ print_stat_pages(pid, pid_str, 0, pages, status); -+ print_move_pages(pid, pid_str, 0, 0, pages, nodes, status); -+ print_move_pages(pid, pid_str, 0, 1, pages + 1, nodes + 1, status + 1); - - *pages = page; -- print_stat_pages(pid, count, pages, status); -+ print_stat_pages(pid, pid_str, count, pages, status); - *nodes = 0xdeadbee1; -- print_move_pages(pid, count, 0, pages, nodes, status); -- print_move_pages(pid, count, 1, pages, nodes, status); -+ print_move_pages(pid, pid_str, count, 0, pages, nodes, status); -+ print_move_pages(pid, pid_str, count, 1, pages, nodes, status); - - ++count; - --status; - *(--pages) = efault; -- print_stat_pages(pid, count, pages, status); -+ print_stat_pages(pid, pid_str, count, pages, status); - *(--nodes) = 0xdeadbee2; -- print_move_pages(pid, count, 0, pages, nodes, status); -- print_move_pages(pid, count, 1, pages, nodes, status); -+ print_move_pages(pid, pid_str, count, 0, pages, nodes, status); -+ print_move_pages(pid, pid_str, count, 1, pages, nodes, status); - - ++count; - --status; - *(--pages) = nodes; -- print_stat_pages(pid, count, pages, status); -+ print_stat_pages(pid, pid_str, count, pages, status); - *(--nodes) = 0xdeadbee3; -- print_move_pages(pid, count, 0, pages, nodes, status); -- print_move_pages(pid, count, 1, pages, nodes, status); -+ print_move_pages(pid, pid_str, count, 0, pages, nodes, status); -+ print_move_pages(pid, pid_str, count, 1, pages, nodes, status); - - ++count; - --status; - *(--pages) = status; -- print_stat_pages(pid, count, pages, status); -+ print_stat_pages(pid, pid_str, count, pages, status); - *(--nodes) = 0xdeadbee4; -- print_move_pages(pid, count, 0, pages, nodes, status); -- print_move_pages(pid, count, 1, pages, nodes, status); -+ print_move_pages(pid, pid_str, count, 0, pages, nodes, status); -+ print_move_pages(pid, pid_str, count, 1, pages, nodes, status); - -+ pidns_print_leader(); - puts("+++ exited with 0 +++"); - return 0; - } -Index: strace-5.7/tests-mx32/net-sockaddr--pidns-translation.c -=================================================================== ---- /dev/null 1970-01-01 00:00:00.000000000 +0000 -+++ strace-5.7/tests-mx32/net-sockaddr--pidns-translation.c 2020-09-09 19:52:38.910673638 +0200 -@@ -0,0 +1,2 @@ -+#define PIDNS_TRANSLATION -+#include "net-sockaddr.c" -Index: strace-5.7/tests-mx32/net-sockaddr.c -=================================================================== ---- strace-5.7.orig/tests-mx32/net-sockaddr.c 2020-09-09 19:52:30.630668703 +0200 -+++ strace-5.7/tests-mx32/net-sockaddr.c 2020-09-09 19:52:38.910673638 +0200 -@@ -9,6 +9,7 @@ - */ - - #include "tests.h" -+#include "pidns.h" - #include - #include - #include -@@ -40,18 +41,21 @@ - memset(un->sun_path, '0', sizeof(un->sun_path)); - unsigned int len = sizeof(*un); - int ret = connect(-1, (void *) un, len); -+ pidns_print_leader(); - printf("connect(-1, {sa_family=AF_UNIX, sun_path=\"%.*u\"}" - ", %u) = %d EBADF (%m)\n", - (int) sizeof(un->sun_path), 0, len, ret); - - un->sun_path[1] = 0; - ret = connect(-1, (void *) un, len); -+ pidns_print_leader(); - printf("connect(-1, {sa_family=AF_UNIX, sun_path=\"%u\"}, %u)" - " = %d EBADF (%m)\n", 0, len, ret); - - un->sun_path[0] = 0; - un->sun_path[2] = 1; - ret = connect(-1, (void *) un, len); -+ pidns_print_leader(); - printf("connect(-1, {sa_family=AF_UNIX, sun_path=@\"\\0\\001%.*u\"}" - ", %u) = %d EBADF (%m)\n", - (int) sizeof(un->sun_path) - 3, 0, len, ret); -@@ -61,12 +65,14 @@ - memset(un->sun_path, '0', sizeof(un->sun_path)); - len = sizeof(*un) + 2; - ret = connect(-1, (void *) un, len); -+ pidns_print_leader(); - printf("connect(-1, {sa_family=AF_UNIX, sun_path=\"%.*u\"}" - ", %u) = %d EBADF (%m)\n", - (int) sizeof(un->sun_path), 0, len, ret); - - un->sun_path[0] = 0; - ret = connect(-1, (void *) un, len); -+ pidns_print_leader(); - printf("connect(-1, {sa_family=AF_UNIX, sun_path=@\"%.*u\"}" - ", %u) = %d EBADF (%m)\n", - (int) sizeof(un->sun_path) - 1, 0, len, ret); -@@ -75,18 +81,21 @@ - un->sun_family = AF_UNIX; - len = sizeof(*un) - 2; - ret = connect(-1, (void *) un, len); -+ pidns_print_leader(); - printf("connect(-1, {sa_family=AF_UNIX, sun_path=\"%.*u\"}" - ", %u) = %d EBADF (%m)\n", - (int) sizeof(un->sun_path) - 2, 0, len, ret); - - un->sun_path[0] = 0; - ret = connect(-1, (void *) un, len); -+ pidns_print_leader(); - printf("connect(-1, {sa_family=AF_UNIX, sun_path=@\"%.*u\"}" - ", %u) = %d EBADF (%m)\n", - (int) sizeof(un->sun_path) - 3, 0, len, ret); - - len = sizeof(*un); - ret = connect(-1, (void *) un, len); -+ pidns_print_leader(); - printf("connect(-1, %p, %u) = %d EBADF (%m)\n", un, len, ret); - - un = tail_alloc(sizeof(struct sockaddr_storage)); -@@ -94,12 +103,14 @@ - memset(un->sun_path, '0', sizeof(un->sun_path)); - len = sizeof(struct sockaddr_storage) + 1; - ret = connect(-1, (void *) un, len); -+ pidns_print_leader(); - printf("connect(-1, {sa_family=AF_UNIX, sun_path=\"%.*u\"}" - ", %u) = %d EBADF (%m)\n", - (int) sizeof(un->sun_path), 0, len, ret); - - un->sun_path[0] = 0; - ret = connect(-1, (void *) un, len); -+ pidns_print_leader(); - printf("connect(-1, {sa_family=AF_UNIX, sun_path=@\"%.*u\"}" - ", %u) = %d EBADF (%m)\n", - (int) sizeof(un->sun_path) - 1, 0, len, ret); -@@ -117,6 +128,7 @@ - in->sin_addr.s_addr = inet_addr(h_addr); - unsigned int len = sizeof(*in); - int ret = connect(-1, (void *) in, len); -+ pidns_print_leader(); - printf("connect(-1, {sa_family=AF_INET, sin_port=htons(%hu)" - ", sin_addr=inet_addr(\"%s\")}, %u) = %d EBADF (%m)\n", - h_port, h_addr, len, ret); -@@ -127,6 +139,7 @@ - in->sin_addr.s_addr = inet_addr(h_addr); - len = sizeof(*in) + 4; - ret = connect(-1, (void *) in, len); -+ pidns_print_leader(); - printf("connect(-1, {sa_family=AF_INET, sin_port=htons(%hu)" - ", sin_addr=inet_addr(\"%s\")}, %u) = %d EBADF (%m)\n", - h_port, h_addr, len, ret); -@@ -137,6 +150,7 @@ - in->sin_addr.s_addr = 0; - len = sizeof(*in) - 4; - ret = connect(-1, (void *) in, len); -+ pidns_print_leader(); - printf("connect(-1, {sa_family=AF_INET, sa_data=\"%s\"}, %u)" - " = %d EBADF (%m)\n", - "\\0\\0\\0\\0\\0\\0\\377\\377\\377\\377", -@@ -144,6 +158,7 @@ - - len = sizeof(*in); - ret = connect(-1, (void *) in, len); -+ pidns_print_leader(); - printf("connect(-1, %p, %u) = %d EBADF (%m)\n", in, len, ret); - } - -@@ -155,6 +170,7 @@ - in6->sin6_scope_id = 0xfacefeed; - unsigned int len = sizeof(*in6); - int ret = connect(-1, (void *) in6, len); -+ pidns_print_leader(); - printf("connect(-1, {sa_family=AF_INET6, sin6_port=htons(%hu)" - ", sin6_flowinfo=htonl(%u)" - ", inet_pton(AF_INET6, \"%s\", &sin6_addr)" -@@ -166,7 +182,8 @@ - in6->sin6_scope_id = ifindex_lo(); - if (in6->sin6_scope_id) { - ret = connect(-1, (void *) in6, len); -- printf("connect(-1, {sa_family=AF_INET6, sin6_port=htons(%hu)" -+ pidns_print_leader(); -+ printf("connect(-1, {sa_family=AF_INET6, sin6_port=htons(%hu)" - ", sin6_flowinfo=htonl(%u)" - ", inet_pton(AF_INET6, \"%s\", &sin6_addr)" - ", sin6_scope_id=%s}, %u)" -@@ -191,6 +208,7 @@ - in6->sin6_scope_id = 0xfacefeed; - unsigned int len = sizeof(*in6); - int ret = connect(-1, (void *) in6, len); -+ pidns_print_leader(); - printf("connect(-1, {sa_family=AF_INET6, sin6_port=htons(%hu)" - ", sin6_flowinfo=htonl(%u)" - ", inet_pton(AF_INET6, \"%s\", &sin6_addr)" -@@ -209,6 +227,7 @@ - in6->sin6_scope_id = 0xfacefeed; - len = sizeof(*in6) + 4; - ret = connect(-1, (void *) in6, len); -+ pidns_print_leader(); - printf("connect(-1, {sa_family=AF_INET6, sin6_port=htons(%hu)" - ", sin6_flowinfo=htonl(%u)" - ", inet_pton(AF_INET6, \"%s\", &sin6_addr)" -@@ -223,6 +242,7 @@ - inet_pton(AF_INET6, h_addr, &in6->sin6_addr); - len = sizeof(*in6) - sizeof(in6->sin6_scope_id); - ret = connect(-1, (void *) in6, len); -+ pidns_print_leader(); - printf("connect(-1, {sa_family=AF_INET6, sin6_port=htons(%hu)" - ", sin6_flowinfo=htonl(%u)" - ", inet_pton(AF_INET6, \"%s\", &sin6_addr)}, %u)" -@@ -236,6 +256,7 @@ - memset(&in6->sin6_addr, '0', sizeof(in6->sin6_addr) - 4); - len = sizeof(*in6) - sizeof(in6->sin6_scope_id) - 4; - ret = connect(-1, (void *) in6, len); -+ pidns_print_leader(); - printf("connect(-1, {sa_family=AF_INET6" - ", sa_data=\"\\0\\0\\0\\0\\0\\000%.*u\"}, %u)" - " = %d EBADF (%m)\n", -@@ -244,6 +265,7 @@ - - len = sizeof(*in6) - sizeof(in6->sin6_scope_id); - ret = connect(-1, (void *) in6, len); -+ pidns_print_leader(); - printf("connect(-1, %p, %u) = %d EBADF (%m)\n", in6, len, ret); - } - -@@ -262,6 +284,7 @@ - void *ipx = tail_memdup(&c_ipx, sizeof(c_ipx)); - unsigned int len = sizeof(c_ipx); - int ret = connect(-1, ipx, len); -+ pidns_print_leader(); - printf("connect(-1, {sa_family=AF_IPX, sipx_port=htons(%u)" - ", sipx_network=htonl(%#x)" - ", sipx_node=[%#02x, %#02x, %#02x, %#02x, %#02x, %#02x]" -@@ -316,18 +339,21 @@ - fill_memory(sax, size); - sax->fsa_ax25.sax25_family = AF_AX25; - rc = connect(-1, sax_void, sizeof(struct sockaddr_ax25) - 1); -+ pidns_print_leader(); - printf("connect(-1, {sa_family=AF_AX25, sa_data=\"\\202\\203\\204\\205" - "\\206\\207\\210\\211\\212\\213\\214\\215\\216\"}, %zu) = %s\n", - sizeof(struct sockaddr_ax25) - 1, sprintrc(rc)); - - memcpy(sax, &ax25, sizeof(ax25)); - rc = connect(-1, sax_void, sizeof(struct sockaddr_ax25)); -+ pidns_print_leader(); - printf("connect(-1, {sa_family=AF_AX25, fsa_ax25={sax25_call=VALID-13" - ", sax25_ndigis=8}, fsa_digipeater=[/* ??? */]}, %zu) = %s\n", - sizeof(struct sockaddr_ax25), sprintrc(rc)); - - sax->fsa_ax25.sax25_ndigis = 0; - rc = connect(-1, sax_void, sizeof(struct sockaddr_ax25)); -+ pidns_print_leader(); - printf("connect(-1, {sa_family=AF_AX25, sax25_call=VALID-13" - ", sax25_ndigis=0}, %zu) = %s\n", - sizeof(struct sockaddr_ax25), sprintrc(rc)); -@@ -335,6 +361,7 @@ - sax->fsa_ax25.sax25_ndigis = 8; - size = sizeof(struct sockaddr_ax25) + sizeof(ax25_address) * 3 + 1; - rc = connect(-1, sax_void, size); -+ pidns_print_leader(); - printf("connect(-1, {sa_family=AF_AX25, fsa_ax25={sax25_call=VALID-13" - ", sax25_ndigis=8}, fsa_digipeater" - "=[{ax25_call=\"\\xa6\\xa0\\x82\\x40\\x86\\x8a\\x00\"" -@@ -348,6 +375,7 @@ - sax->fsa_digipeater[2].ax25_call[6] = 0x4; - size = sizeof(struct sockaddr_ax25) + sizeof(ax25_address) * 4; - rc = connect(-1, sax_void, size); -+ pidns_print_leader(); - printf("connect(-1, {sa_family=AF_AX25, fsa_ax25={sax25_call=VALID-13" - ", sax25_ndigis=8}, fsa_digipeater" - "=[{ax25_call=\"\\xa6\\xa0\\x82\\x40\\x86\\x8a\\x00\"" -@@ -365,6 +393,7 @@ - for (size_t i = 0; i < 3; i++) { - size = sizeof(ax25) + sizeof(ax25_address) * (i / 2); - rc = connect(-1, sax_void, size); -+ pidns_print_leader(); - printf("connect(-1, {sa_family=AF_AX25" - ", fsa_ax25={sax25_call=VALID-13, sax25_ndigis=%d}" - ", fsa_digipeater=[VALID2-7, OK-15, %s /* FINE-2 */" -@@ -427,12 +456,14 @@ - long rc; - - rc = connect(-1, x25_void, sizeof(c_x25) - 1); -+ pidns_print_leader(); - printf("connect(-1, {sa_family=AF_X25" - ", sa_data=\"0123456789abcde\"}, %zu) = %s\n", - sizeof(c_x25) - 1, sprintrc(rc)); - - for (size_t i = 0; i < 2; i++) { - rc = connect(-1, x25_void, sizeof(c_x25) + i); -+ pidns_print_leader(); - printf("connect(-1, {sa_family=AF_X25" - ", sx25_addr={x25_addr=\"0123456789abcde\"...}" - "}, %zu) = %s\n", -@@ -442,6 +473,7 @@ - struct sockaddr_x25 *const x25 = x25_void; - x25->sx25_addr.x25_addr[10] = '\0'; - rc = connect(-1, x25_void, sizeof(c_x25)); -+ pidns_print_leader(); - printf("connect(-1, {sa_family=AF_X25" - ", sx25_addr={x25_addr=\"0123456789\"}" - "}, %zu) = %s\n", -@@ -457,19 +489,21 @@ - nl->nl_groups = 0xfacefeed; - unsigned int len = sizeof(*nl); - int ret = connect(-1, (void *) nl, len); -+ pidns_print_leader(); - printf("connect(-1, {sa_family=AF_NETLINK, nl_pid=%d" - ", nl_groups=%#08x}, %u) = %d EBADF (%m)\n", - nl->nl_pid, nl->nl_groups, len, ret); - - nl = ((void *) nl) - 4; - nl->nl_family = AF_NETLINK; -- nl->nl_pid = 1234567890; -+ nl->nl_pid = getpid(); - nl->nl_groups = 0xfacefeed; - len = sizeof(*nl) + 4; - ret = connect(-1, (void *) nl, len); -- printf("connect(-1, {sa_family=AF_NETLINK, nl_pid=%d" -+ pidns_print_leader(); -+ printf("connect(-1, {sa_family=AF_NETLINK, nl_pid=%d%s" - ", nl_groups=%#08x}, %u) = %d EBADF (%m)\n", -- nl->nl_pid, nl->nl_groups, len, ret); -+ nl->nl_pid, pidns_pid2str(PT_TGID), nl->nl_groups, len, ret); - } - - static void -@@ -487,6 +521,7 @@ - void *ll = tail_memdup(&c_ll, sizeof(c_ll)); - unsigned int len = sizeof(c_ll); - int ret = connect(-1, ll, len); -+ pidns_print_leader(); - printf("connect(-1, {sa_family=AF_PACKET" - ", sll_protocol=htons(ETH_P_ALL)" - ", sll_ifindex=%u, sll_hatype=ARPHRD_ETHER" -@@ -502,6 +537,7 @@ - - ((struct sockaddr_ll *) ll)->sll_halen++; - ret = connect(-1, ll, len); -+ pidns_print_leader(); - printf("connect(-1, {sa_family=AF_PACKET" - ", sll_protocol=htons(ETH_P_ALL)" - ", sll_ifindex=%u, sll_hatype=ARPHRD_ETHER" -@@ -517,6 +553,7 @@ - - ((struct sockaddr_ll *) ll)->sll_halen = 0; - ret = connect(-1, ll, len); -+ pidns_print_leader(); - printf("connect(-1, {sa_family=AF_PACKET" - ", sll_protocol=htons(ETH_P_ALL)" - ", sll_ifindex=%u, sll_hatype=ARPHRD_ETHER" -@@ -526,6 +563,7 @@ - ((struct sockaddr_ll *) ll)->sll_ifindex = ifindex_lo(); - if (((struct sockaddr_ll *) ll)->sll_ifindex) { - ret = connect(-1, ll, len); -+ pidns_print_leader(); - printf("connect(-1, {sa_family=AF_PACKET" - ", sll_protocol=htons(ETH_P_ALL)" - ", sll_ifindex=%s" -@@ -549,11 +587,13 @@ - unsigned int len = sizeof(*hci); - - int ret = connect(-1, (void *) hci, 4); -+ pidns_print_leader(); - 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); -+ pidns_print_leader(); - printf("connect(-1, {sa_family=AF_BLUETOOTH, hci_dev=htobs(%hu)" - # ifdef HAVE_STRUCT_SOCKADDR_HCI_HCI_CHANNEL - ", hci_channel=HCI_CHANNEL_RAW" -@@ -572,6 +612,7 @@ - void *sco = tail_memdup(&c_sco, sizeof(c_sco)); - unsigned int len = sizeof(c_sco); - int ret = connect(-1, sco, len); -+ pidns_print_leader(); - printf("connect(-1, {sa_family=AF_BLUETOOTH" - ", sco_bdaddr=%02x:%02x:%02x:%02x:%02x:%02x" - "}, %u) = %d EBADF (%m)\n", -@@ -592,6 +633,7 @@ - void *rc = tail_memdup(&c_rc, sizeof(c_rc)); - unsigned int len = sizeof(c_rc); - int ret = connect(-1, rc, len); -+ pidns_print_leader(); - printf("connect(-1, {sa_family=AF_BLUETOOTH" - ", rc_bdaddr=%02x:%02x:%02x:%02x:%02x:%02x" - ", rc_channel=%u}, %u) = %d EBADF (%m)\n", -@@ -619,6 +661,7 @@ - unsigned int len = sizeof(c_l2); - - int ret = connect(-1, l2, len); -+ pidns_print_leader(); - printf("connect(-1, {sa_family=AF_BLUETOOTH" - ", l2_psm=htobs(L2CAP_PSM_DYN_START + %hu)" - ", l2_bdaddr=%02x:%02x:%02x:%02x:%02x:%02x" -@@ -640,6 +683,7 @@ - # endif - memcpy(l2, &c_l2, sizeof(c_l2)); - ret = connect(-1, l2, len); -+ pidns_print_leader(); - printf("connect(-1, {sa_family=AF_BLUETOOTH" - ", l2_psm=htobs(L2CAP_PSM_SDP)" - ", l2_bdaddr=%02x:%02x:%02x:%02x:%02x:%02x" -@@ -660,6 +704,7 @@ - # endif - memcpy(l2, &c_l2, sizeof(c_l2)); - ret = connect(-1, l2, len); -+ pidns_print_leader(); - printf("connect(-1, {sa_family=AF_BLUETOOTH" - ", l2_psm=htobs(0xbad /* L2CAP_PSM_??? */)" - ", l2_bdaddr=%02x:%02x:%02x:%02x:%02x:%02x" -@@ -677,6 +722,7 @@ - c_l2.l2_cid = htobs(0xffff); - memcpy(l2, &c_l2, 12); - ret = connect(-1, l2, 12); -+ pidns_print_leader(); - printf("connect(-1, {sa_family=AF_BLUETOOTH" - ", l2_psm=htobs(L2CAP_PSM_AUTO_END)" - ", l2_bdaddr=%02x:%02x:%02x:%02x:%02x:%02x" -@@ -700,6 +746,7 @@ - u.sa->sa_family = 0xff; - unsigned int len = sizeof(*u.st) + 8; - int ret = connect(-1, (void *) u.st, len); -+ pidns_print_leader(); - printf("connect(-1, {sa_family=%#x /* AF_??? */, sa_data=\"%.*u\"}" - ", %u) = %d EBADF (%m)\n", u.sa->sa_family, - (int) (sizeof(*u.st) - sizeof(u.sa->sa_family)), 0, len, ret); -@@ -707,11 +754,13 @@ - u.sa->sa_family = 0; - len = sizeof(u.sa->sa_family) + 1; - ret = connect(-1, (void *) u.st, len); -+ pidns_print_leader(); - printf("connect(-1, {sa_family=AF_UNSPEC, sa_data=\"0\"}, %u)" - " = %d EBADF (%m)\n", len, ret); - - u.sa->sa_family = AF_BLUETOOTH; - ret = connect(-1, (void *) u.st, len); -+ pidns_print_leader(); - printf("connect(-1, {sa_family=AF_BLUETOOTH, sa_data=\"0\"}, %u)" - " = %d EBADF (%m)\n", len, ret); - } -@@ -719,6 +768,8 @@ - int - main(void) - { -+ PIDNS_TEST_INIT; -+ - check_un(); - check_in(); - check_in6(); -@@ -735,6 +786,7 @@ - #endif - check_raw(); - -+ pidns_print_leader(); - puts("+++ exited with 0 +++"); - return 0; - } -Index: strace-5.7/tests-mx32/netlink_audit--pidns-translation.c -=================================================================== ---- /dev/null 1970-01-01 00:00:00.000000000 +0000 -+++ strace-5.7/tests-mx32/netlink_audit--pidns-translation.c 2020-09-09 19:52:38.910673638 +0200 -@@ -0,0 +1,2 @@ -+#define PIDNS_TRANSLATION -+#include "netlink_audit.c" -Index: strace-5.7/tests-mx32/netlink_audit--pidns-translation.test -=================================================================== ---- /dev/null 1970-01-01 00:00:00.000000000 +0000 -+++ strace-5.7/tests-mx32/netlink_audit--pidns-translation.test 2020-09-09 19:52:38.911673639 +0200 -@@ -0,0 +1,13 @@ -+#!/bin/sh -+# -+# Check pidns translation of NETLINK_SOCK_DIAG protocol decoding -+# -+# Copyright (c) 2020 The strace developers. -+# All rights reserved. -+# -+# SPDX-License-Identifier: LGPL-2.1-or-later -+ -+. "${srcdir=.}/init.sh" -+ -+run_prog ../netlink_netlink_diag -+test_pidns -e trace=sendto "$@" -Index: strace-5.7/tests-mx32/netlink_audit.c -=================================================================== ---- strace-5.7.orig/tests-mx32/netlink_audit.c 2020-09-09 19:52:30.630668703 +0200 -+++ strace-5.7/tests-mx32/netlink_audit.c 2020-09-09 19:52:38.911673639 +0200 -@@ -7,6 +7,7 @@ - */ - - #include "tests.h" -+#include "pidns.h" - #include - #include - #include -@@ -17,18 +18,23 @@ - static void - test_nlmsg_type(const int fd) - { -+ PIDNS_TEST_INIT; -+ - long rc; - struct nlmsghdr nlh = { - .nlmsg_len = sizeof(nlh), - .nlmsg_type = AUDIT_GET, - .nlmsg_flags = NLM_F_REQUEST, -+ .nlmsg_pid = getpid(), - }; - - rc = sendto(fd, &nlh, sizeof(nlh), MSG_DONTWAIT, NULL, 0); -+ pidns_print_leader(); - printf("sendto(%d, {len=%u, type=AUDIT_GET" -- ", flags=NLM_F_REQUEST, seq=0, pid=0}" -+ ", flags=NLM_F_REQUEST, seq=0, pid=%d%s}" - ", %u, MSG_DONTWAIT, NULL, 0) = %s\n", -- fd, nlh.nlmsg_len, (unsigned) sizeof(nlh), sprintrc(rc)); -+ fd, nlh.nlmsg_len, nlh.nlmsg_pid, pidns_pid2str(PT_TGID), -+ (unsigned) sizeof(nlh), sprintrc(rc)); - } - - int main(void) -@@ -39,6 +45,7 @@ - - test_nlmsg_type(fd); - -+ pidns_print_leader(); - printf("+++ exited with 0 +++\n"); - - return 0; -Index: strace-5.7/tests-mx32/pidfd_open--pidns-translation.c -=================================================================== ---- /dev/null 1970-01-01 00:00:00.000000000 +0000 -+++ strace-5.7/tests-mx32/pidfd_open--pidns-translation.c 2020-09-09 19:52:38.911673639 +0200 -@@ -0,0 +1,2 @@ -+#define PIDNS_TRANSLATION -+#include "pidfd_open.c" -Index: strace-5.7/tests-mx32/pidfd_open.c -=================================================================== ---- strace-5.7.orig/tests-mx32/pidfd_open.c 2020-09-09 19:52:30.631668704 +0200 -+++ strace-5.7/tests-mx32/pidfd_open.c 2020-09-09 19:52:38.911673639 +0200 -@@ -10,6 +10,7 @@ - - #include "tests.h" - #include "scno.h" -+#include "pidns.h" - - #ifdef __NR_pidfd_open - -@@ -37,6 +38,8 @@ - int - main(void) - { -+ PIDNS_TEST_INIT; -+ - # if defined PATH_TRACING || defined PRINT_PATHS - skip_if_unavailable("/proc/self/fd/"); - # endif -@@ -50,16 +53,19 @@ - - k_pidfd_open(0, 0); - # ifndef PATH_TRACING -+ pidns_print_leader(); - printf("pidfd_open(0, 0) = %s\n", errstr); - # endif - - k_pidfd_open(-1U, 0); - # ifndef PATH_TRACING -+ pidns_print_leader(); - printf("pidfd_open(-1, 0) = %s\n", errstr); - # endif - - k_pidfd_open(0, -1U); - # ifndef PATH_TRACING -+ pidns_print_leader(); - printf("pidfd_open(0, %#x) = %s\n", -1U, errstr); - # endif - -@@ -68,7 +74,10 @@ - - k_pidfd_open(pid, flags); - # ifndef PATH_TRACING -- printf("pidfd_open(%d, %#x) = %s\n", pid, flags, errstr); -+ const char *pid_str = pidns_pid2str(PT_TGID); -+ pidns_print_leader(); -+ printf("pidfd_open(%d%s, %#x) = %s\n", -+ pid, pid_str, flags, errstr); - # endif - - # ifdef PRINT_PATHS -@@ -80,17 +89,19 @@ - # endif - - # ifndef PATH_TRACING -- printf("pidfd_open(%d, 0) = " -+ pidns_print_leader(); -+ printf("pidfd_open(%d%s, 0) = " - # if defined PRINT_PIDFD -- "%ld\n", pid, rc, pid -+ "%ld\n", pid, pid_str, rc, pid - # elif defined PRINT_PATHS -- "%ld\n", pid, rc -+ "%ld\n", pid, pid_str, rc - # else -- "%s\n", pid, errstr -+ "%s\n", pid, pid_str, errstr - # endif - ); - # endif - -+ pidns_print_leader(); - puts("+++ exited with 0 +++"); - return 0; - } -Index: strace-5.7/tests-mx32/pidfd_send_signal--pidns-translation.c -=================================================================== ---- /dev/null 1970-01-01 00:00:00.000000000 +0000 -+++ strace-5.7/tests-mx32/pidfd_send_signal--pidns-translation.c 2020-09-09 19:52:38.911673639 +0200 -@@ -0,0 +1,2 @@ -+#define PIDNS_TRANSLATION -+#include "pidfd_send_signal.c" -Index: strace-5.7/tests-mx32/pidfd_send_signal.c -=================================================================== ---- strace-5.7.orig/tests-mx32/pidfd_send_signal.c 2020-09-09 19:52:30.631668704 +0200 -+++ strace-5.7/tests-mx32/pidfd_send_signal.c 2020-09-09 19:52:38.911673639 +0200 -@@ -10,6 +10,7 @@ - #include "tests.h" - #include - #include "scno.h" -+#include "pidns.h" - - #ifdef __NR_pidfd_send_signal - -@@ -36,6 +37,8 @@ - int - main(void) - { -+ PIDNS_TEST_INIT; -+ - static const char null_path[] = "/dev/null"; - - int fd = open(null_path, O_RDONLY); -@@ -46,19 +49,23 @@ - const void *esi = (const void *) si + 1; - - sys_pidfd_send_signal(fd, SIGUSR1, esi, 0); -+ pidns_print_leader(); - printf("pidfd_send_signal(%d, SIGUSR1, %p, 0) = %s\n", - fd, esi, errstr); - - si->si_signo = SIGUSR1; - si->si_code = SI_QUEUE; -+ si->si_pid = getpid(); - - sys_pidfd_send_signal(fd, SIGUSR2, si, -1); -+ pidns_print_leader(); - printf("pidfd_send_signal(%d, SIGUSR2, {si_signo=SIGUSR1" -- ", si_code=SI_QUEUE, si_errno=%u, si_pid=%d, si_uid=%d" -+ ", si_code=SI_QUEUE, si_errno=%u, si_pid=%d%s, si_uid=%d" - ", si_value={int=%d, ptr=%p}}, %#x) = %s\n", -- fd, si->si_errno, si->si_pid, si->si_uid, si->si_int, si->si_ptr, -- -1U, errstr); -+ fd, si->si_errno, si->si_pid, pidns_pid2str(PT_TGID), si->si_uid, -+ si->si_int, si->si_ptr, -1U, errstr); - -+ pidns_print_leader(); - puts("+++ exited with 0 +++"); - return 0; - } -Index: strace-5.7/tests-mx32/pidns-cache.c -=================================================================== ---- /dev/null 1970-01-01 00:00:00.000000000 +0000 -+++ strace-5.7/tests-mx32/pidns-cache.c 2020-09-09 19:52:38.912673640 +0200 -@@ -0,0 +1,62 @@ -+/* -+ * Copyright (c) 2020 The strace developers. -+ * All rights reserved. -+ * -+ * SPDX-License-Identifier: GPL-2.0-or-later -+ */ -+ -+#include "tests.h" -+#include "scno.h" -+#include "pidns.h" -+ -+#if defined __NR_getpid && (!defined __NR_getxpid || __NR_getxpid != __NR_getpid) -+ -+# include -+# include -+# include -+ -+# define SYSCALL_COUNT 1000 -+ -+/** -+ * Max ratio of the execution time with and without pidns translation. -+ */ -+# define MAX_TIME_RATIO 20 -+ -+static long -+execute_syscalls(void) -+{ -+ /* Load our PID in the cache */ -+ syscall(__NR_getpid); -+ -+ struct timeval stop, start; -+ gettimeofday(&start, NULL); -+ -+ for (int i = 0; i < SYSCALL_COUNT; i++) -+ syscall(__NR_getpid); -+ -+ gettimeofday(&stop, NULL); -+ -+ return (stop.tv_usec - start.tv_usec) + -+ (stop.tv_sec - start.tv_sec) * 1000000; -+} -+ -+int -+main(void) -+{ -+ long max_us = execute_syscalls() * MAX_TIME_RATIO; -+ -+ pidns_test_init(); -+ -+ long us = execute_syscalls(); -+ if (us > max_us) -+ error_msg_and_fail("pidns translation took too long: %ld us " -+ "(max: %ld us)", us, max_us); -+ -+ return 0; -+} -+ -+#else -+ -+SKIP_MAIN_UNDEFINED("__NR_getpid") -+ -+#endif -Index: strace-5.7/tests-mx32/pidns-cache.test -=================================================================== ---- /dev/null 1970-01-01 00:00:00.000000000 +0000 -+++ strace-5.7/tests-mx32/pidns-cache.test 2020-09-09 19:52:38.912673640 +0200 -@@ -0,0 +1,15 @@ -+#!/bin/sh -+# -+# Test pidns translation cache. -+# -+# Copyright (c) 2020 The strace developers. -+# All rights reserved. -+# -+# SPDX-License-Identifier: GPL-2.0-or-later -+ -+. "${srcdir=.}/init.sh" -+ -+check_prog timeout -+ -+run_prog > /dev/null -+run_strace --pidns-translation -f -e trace=getpid $args -Index: strace-5.7/tests-mx32/prlimit64--pidns-translation.c -=================================================================== ---- /dev/null 1970-01-01 00:00:00.000000000 +0000 -+++ strace-5.7/tests-mx32/prlimit64--pidns-translation.c 2020-09-09 19:52:38.912673640 +0200 -@@ -0,0 +1,2 @@ -+#define PIDNS_TRANSLATION -+#include "prlimit64.c" -Index: strace-5.7/tests-mx32/prlimit64.c -=================================================================== ---- strace-5.7.orig/tests-mx32/prlimit64.c 2020-09-09 19:52:30.632668704 +0200 -+++ strace-5.7/tests-mx32/prlimit64.c 2020-09-09 19:52:38.912673640 +0200 -@@ -19,6 +19,7 @@ - # include - # include - -+# include "pidns.h" - # include "xlat.h" - # include "xlat/resources.h" - -@@ -42,8 +43,11 @@ - int - main(void) - { -+ PIDNS_TEST_INIT; -+ - unsigned long pid = - (unsigned long) 0xdefaced00000000ULL | (unsigned) getpid(); -+ const char *pid_str = pidns_pid2str(PT_TGID); - uint64_t *const rlimit = tail_alloc(sizeof(*rlimit) * 2); - const struct xlat_data *xlat; - size_t i = 0; -@@ -54,18 +58,23 @@ - - unsigned long res = 0xfacefeed00000000ULL | xlat->val; - long rc = syscall(__NR_prlimit64, pid, res, 0, rlimit); -+ pidns_print_leader(); - if (rc) -- printf("prlimit64(%d, %s, NULL, %p) = %ld %s (%m)\n", -- (unsigned) pid, xlat->str, rlimit, -+ printf("prlimit64(%d%s, %s, NULL, %p) =" -+ " %ld %s (%m)\n", -+ (unsigned) pid, pid_str, -+ xlat->str, rlimit, - rc, errno2name()); - else -- printf("prlimit64(%d, %s, NULL" -+ printf("prlimit64(%d%s, %s, NULL" - ", {rlim_cur=%s, rlim_max=%s}) = 0\n", -- (unsigned) pid, xlat->str, -+ (unsigned) pid, pid_str, -+ xlat->str, - sprint_rlim(rlimit[0]), - sprint_rlim(rlimit[1])); - } - -+ pidns_print_leader(); - puts("+++ exited with 0 +++"); - return 0; - } -Index: strace-5.7/tests-mx32/process_vm_readv--pidns-translation.c -=================================================================== ---- /dev/null 1970-01-01 00:00:00.000000000 +0000 -+++ strace-5.7/tests-mx32/process_vm_readv--pidns-translation.c 2020-09-09 19:52:38.912673640 +0200 -@@ -0,0 +1,2 @@ -+#define PIDNS_TRANSLATION -+#include "process_vm_readv.c" -Index: strace-5.7/tests-mx32/process_vm_readv_writev.c -=================================================================== ---- strace-5.7.orig/tests-mx32/process_vm_readv_writev.c 2020-09-09 19:52:30.632668704 +0200 -+++ strace-5.7/tests-mx32/process_vm_readv_writev.c 2020-09-09 19:52:38.913673640 +0200 -@@ -12,6 +12,7 @@ - #include - #include - #include -+#include "pidns.h" - - #if OP_WR - # define in_iovec rmt_iovec -@@ -121,7 +122,7 @@ - } - - static void --do_call(kernel_ulong_t pid, -+do_call(kernel_ulong_t pid, enum pid_type pid_type, - kernel_ulong_t local_iov, const char *local_arg, - kernel_ulong_t liovcnt, - kernel_ulong_t remote_iov, const char *remote_arg, -@@ -135,7 +136,8 @@ - flags); - errstr = sprintrc(rc); - -- printf("%s(%d, ", OP_STR, (int) pid); -+ pidns_print_leader(); -+ printf("%s(%d%s, ", OP_STR, (int) pid, pidns_pid2str(pid_type)); - - if (pr_iov) - pr_iov((const struct iovec *) (uintptr_t) local_iov, local_arg, -@@ -164,6 +166,8 @@ - int - main(void) - { -+ PIDNS_TEST_INIT; -+ - enum { - SIZE_11 = 2, - SIZE_12 = 3, -@@ -243,18 +247,18 @@ - fill_memory_ex(data2_out, SIZE_2, SEGM2_BASE, SIZE_2); - - -- do_call(bogus_pid, (kernel_ulong_t) (uintptr_t) ARG_STR(NULL), -+ do_call(bogus_pid, PT_NONE, (kernel_ulong_t) (uintptr_t) ARG_STR(NULL), - bogus_iovcnt1, (kernel_ulong_t) (uintptr_t) ARG_STR(NULL), - bogus_iovcnt2, bogus_flags, NULL); - -- do_call(my_pid, ptr_cast(bogus_iov + ARRAY_SIZE(bogus_iovec)), -+ do_call(my_pid, PT_TGID, ptr_cast(bogus_iov + ARRAY_SIZE(bogus_iovec)), - "[]", 0, ptr_cast(in_iov + ARRAY_SIZE(in_iovec)), "[]", - 0, 0, NULL); -- do_call(my_pid, ptr_cast(bogus_iov + ARRAY_SIZE(bogus_iovec)), NULL, -- bogus_iovcnt1, ptr_cast(in_iov + ARRAY_SIZE(in_iovec)), NULL, -- bogus_iovcnt2, 0, print_iov); -+ do_call(my_pid, PT_TGID, ptr_cast(bogus_iov + ARRAY_SIZE(bogus_iovec)), -+ NULL, bogus_iovcnt1, ptr_cast(in_iov + ARRAY_SIZE(in_iovec)), -+ NULL, bogus_iovcnt2, 0, print_iov); - -- do_call(my_pid, ptr_cast(bogus_iov), (char *) &bogus_arg, -+ do_call(my_pid, PT_TGID, ptr_cast(bogus_iov), (char *) &bogus_arg, - ARRAY_SIZE(bogus_iovec), ptr_cast(rmt_iov + 2), - (char *) &rmt_arg_cut, ARRAY_SIZE(rmt_iovec) - 2, 0, print_iov); - -@@ -263,7 +267,7 @@ - lcl_arg_cut.check_rc = 1; - #endif - -- do_call(my_pid, ptr_cast(lcl_iov + 2), (char *) &lcl_arg_cut, -+ do_call(my_pid, PT_TGID, ptr_cast(lcl_iov + 2), (char *) &lcl_arg_cut, - ARRAY_SIZE(lcl_iovec) - 1, ptr_cast(bogus_iov + 2), - (char *) &bogus_arg_cut, ARRAY_SIZE(bogus_iovec) - 1, 0, - print_iov); -@@ -273,15 +277,16 @@ - rmt_arg_cut.addr_term = 1; - rmt_arg_cut.count = 5; - -- do_call(my_pid, ptr_cast(lcl_iov + 2), (char *) &lcl_arg_cut, -+ do_call(my_pid, PT_TGID, ptr_cast(lcl_iov + 2), (char *) &lcl_arg_cut, - ARRAY_SIZE(lcl_iovec) - 2, ptr_cast(rmt_iov + 1), - (char *) &rmt_arg_cut, ARRAY_SIZE(rmt_iovec), 0, print_iov); - - /* Correct call */ -- do_call(my_pid, ptr_cast(lcl_iov), (char *) &lcl_arg, -+ do_call(my_pid, PT_TGID, ptr_cast(lcl_iov), (char *) &lcl_arg, - ARRAY_SIZE(lcl_iovec), ptr_cast(rmt_iov), (char *) &rmt_arg, - ARRAY_SIZE(rmt_iovec), 0, print_iov); - -+ pidns_print_leader(); - puts("+++ exited with 0 +++"); - - return 0; -Index: strace-5.7/tests-mx32/process_vm_writev--pidns-translation.c -=================================================================== ---- /dev/null 1970-01-01 00:00:00.000000000 +0000 -+++ strace-5.7/tests-mx32/process_vm_writev--pidns-translation.c 2020-09-09 19:52:38.913673640 +0200 -@@ -0,0 +1,2 @@ -+#define PIDNS_TRANSLATION -+#include "process_vm_writev.c" -Index: strace-5.7/tests-mx32/rt_sigqueueinfo--pidns-translation.c -=================================================================== ---- /dev/null 1970-01-01 00:00:00.000000000 +0000 -+++ strace-5.7/tests-mx32/rt_sigqueueinfo--pidns-translation.c 2020-09-09 19:52:38.913673640 +0200 -@@ -0,0 +1,2 @@ -+#define PIDNS_TRANSLATION -+#include "rt_sigqueueinfo.c" -Index: strace-5.7/tests-mx32/rt_sigqueueinfo.c -=================================================================== ---- strace-5.7.orig/tests-mx32/rt_sigqueueinfo.c 2020-09-09 19:52:30.633668705 +0200 -+++ strace-5.7/tests-mx32/rt_sigqueueinfo.c 2020-09-09 19:52:38.913673640 +0200 -@@ -7,6 +7,7 @@ - */ - - #include "tests.h" -+#include "pidns.h" - #include - #include - #include -@@ -15,6 +16,8 @@ - int - main(void) - { -+ PIDNS_TEST_INIT; -+ - struct sigaction sa = { - .sa_handler = SIG_IGN - }; -@@ -22,15 +25,19 @@ - .sival_ptr = (void *) (unsigned long) 0xdeadbeefbadc0dedULL - }; - pid_t pid = getpid(); -+ const char *pid_str = pidns_pid2str(PT_TGID); - - assert(sigaction(SIGUSR1, &sa, NULL) == 0); - if (sigqueue(pid, SIGUSR1, value)) - perror_msg_and_skip("sigqueue"); -- printf("rt_sigqueueinfo(%u, SIGUSR1, {si_signo=SIGUSR1, " -- "si_code=SI_QUEUE, si_pid=%d, si_uid=%d, " -+ pidns_print_leader(); -+ printf("rt_sigqueueinfo(%d%s, SIGUSR1, {si_signo=SIGUSR1, " -+ "si_code=SI_QUEUE, si_pid=%d%s, si_uid=%u, " - "si_value={int=%d, ptr=%p}}) = 0\n", -- pid, pid, getuid(), value.sival_int, value.sival_ptr); -- printf("+++ exited with 0 +++\n"); -+ pid, pid_str, pid, pid_str, -+ getuid(), value.sival_int, value.sival_ptr); -+ pidns_print_leader(); -+ puts("+++ exited with 0 +++"); - - return 0; - } -Index: strace-5.7/tests-mx32/rt_tgsigqueueinfo--pidns-translation.c -=================================================================== ---- /dev/null 1970-01-01 00:00:00.000000000 +0000 -+++ strace-5.7/tests-mx32/rt_tgsigqueueinfo--pidns-translation.c 2020-09-09 19:52:38.913673640 +0200 -@@ -0,0 +1,2 @@ -+#define PIDNS_TRANSLATION -+#include "rt_tgsigqueueinfo.c" -Index: strace-5.7/tests-mx32/rt_tgsigqueueinfo.c -=================================================================== ---- strace-5.7.orig/tests-mx32/rt_tgsigqueueinfo.c 2020-09-09 19:52:30.633668705 +0200 -+++ strace-5.7/tests-mx32/rt_tgsigqueueinfo.c 2020-09-09 19:52:38.913673640 +0200 -@@ -10,8 +10,9 @@ - - #include "tests.h" - #include "scno.h" -+#include "pidns.h" - --#ifdef __NR_rt_tgsigqueueinfo -+#if defined __NR_rt_tgsigqueueinfo && defined __NR_gettid - - # include - # include -@@ -20,11 +21,11 @@ - # include - - static long --k_tgsigqueueinfo(const pid_t pid, const int sig, const void *const info) -+k_tgsigqueueinfo(const pid_t tgid, const int tid, const int sig, const void *const info) - { - return syscall(__NR_rt_tgsigqueueinfo, -- F8ILL_KULONG_MASK | pid, -- F8ILL_KULONG_MASK | pid, -+ F8ILL_KULONG_MASK | tgid, -+ F8ILL_KULONG_MASK | tid, - F8ILL_KULONG_MASK | sig, - info); - } -@@ -32,6 +33,8 @@ - int - main(void) - { -+ PIDNS_TEST_INIT; -+ - const struct sigaction sa = { - .sa_handler = SIG_IGN - }; -@@ -48,17 +51,22 @@ - info->si_value.sival_ptr = - (void *) (unsigned long) 0xdeadbeeffacefeedULL; - -- if (k_tgsigqueueinfo(info->si_pid, SIGUSR1, info)) -+ if (k_tgsigqueueinfo(getpid(), syscall(__NR_gettid), SIGUSR1, info)) - (errno == ENOSYS ? perror_msg_and_skip : perror_msg_and_fail)( - "rt_tgsigqueueinfo"); - -- printf("rt_tgsigqueueinfo(%u, %u, %s, {si_signo=%s" -- ", si_code=SI_QUEUE, si_errno=ENOENT, si_pid=%d" -+ pidns_print_leader(); -+ printf("rt_tgsigqueueinfo(%d%s, %d%s, %s, {si_signo=%s" -+ ", si_code=SI_QUEUE, si_errno=ENOENT, si_pid=%d%s" - ", si_uid=%d, si_value={int=%d, ptr=%p}}) = 0\n", -- info->si_pid, info->si_pid, "SIGUSR1", "SIGUSR1", -- info->si_pid, info->si_uid, info->si_value.sival_int, -+ info->si_pid, pidns_pid2str(PT_TGID), -+ info->si_pid, pidns_pid2str(PT_TID), -+ "SIGUSR1", "SIGUSR1", -+ info->si_pid, pidns_pid2str(PT_TGID), -+ info->si_uid, info->si_value.sival_int, - info->si_value.sival_ptr); - -+ pidns_print_leader(); - puts("+++ exited with 0 +++"); - return 0; - } -Index: strace-5.7/tests-mx32/sched_xetaffinity--pidns-translation.c -=================================================================== ---- /dev/null 1970-01-01 00:00:00.000000000 +0000 -+++ strace-5.7/tests-mx32/sched_xetaffinity--pidns-translation.c 2020-09-09 19:52:38.914673641 +0200 -@@ -0,0 +1,2 @@ -+#define PIDNS_TRANSLATION -+#include "sched_xetaffinity.c" -Index: strace-5.7/tests-mx32/sched_xetaffinity.c -=================================================================== ---- strace-5.7.orig/tests-mx32/sched_xetaffinity.c 2020-09-09 19:52:30.633668705 +0200 -+++ strace-5.7/tests-mx32/sched_xetaffinity.c 2020-09-09 19:52:38.914673641 +0200 -@@ -10,6 +10,7 @@ - - #include "tests.h" - #include "scno.h" -+#include "pidns.h" - #include - - #if defined __NR_sched_getaffinity && defined __NR_sched_setaffinity \ -@@ -41,8 +42,11 @@ - int - main(void) - { -+ PIDNS_TEST_INIT; -+ - unsigned int cpuset_size = 1; - const pid_t pid = getpid(); -+ const char *pid_str = pidns_pid2str(PT_TGID); - - while (cpuset_size) { - assert(getaffinity(pid, cpuset_size, NULL) == -1); -@@ -50,18 +54,21 @@ - break; - if (EINVAL != errno) - perror_msg_and_skip("sched_getaffinity"); -- printf("sched_getaffinity(%d, %u, NULL) = %s\n", -- pid, cpuset_size, errstr); -+ pidns_print_leader(); -+ printf("sched_getaffinity(%d%s, %u, NULL) = %s\n", -+ pid, pid_str, cpuset_size, errstr); - cpuset_size <<= 1; - } - assert(cpuset_size); -- printf("sched_getaffinity(%d, %u, NULL) = %s\n", -- pid, cpuset_size, errstr); -+ pidns_print_leader(); -+ printf("sched_getaffinity(%d%s, %u, NULL) = %s\n", -+ pid, pid_str, cpuset_size, errstr); - - cpu_set_t *cpuset = tail_alloc(cpuset_size); - getaffinity(pid, cpuset_size, cpuset + 1); -- printf("sched_getaffinity(%d, %u, %p) = %s\n", -- pid, cpuset_size, cpuset + 1, errstr); -+ pidns_print_leader(); -+ printf("sched_getaffinity(%d%s, %u, %p) = %s\n", -+ pid, pid_str, cpuset_size, cpuset + 1, errstr); - - int ret_size = getaffinity(pid, cpuset_size, cpuset); - if (ret_size < 0) -@@ -69,7 +76,8 @@ - pid, (unsigned) cpuset_size, cpuset, errstr); - assert(ret_size <= (int) cpuset_size); - -- printf("sched_getaffinity(%d, %u, [", pid, cpuset_size); -+ pidns_print_leader(); -+ printf("sched_getaffinity(%d%s, %u, [", pid, pid_str, cpuset_size); - const char *sep; - unsigned int i, cpu; - for (i = 0, cpu = 0, sep = ""; i < (unsigned) ret_size * 8; ++i) { -@@ -85,8 +93,9 @@ - CPU_SET_S(cpu, cpuset_size, cpuset); - if (setaffinity(pid, cpuset_size, cpuset)) - perror_msg_and_skip("sched_setaffinity"); -- printf("sched_setaffinity(%d, %u, [%u]) = 0\n", -- pid, cpuset_size, cpu); -+ pidns_print_leader(); -+ printf("sched_setaffinity(%d%s, %u, [%u]) = 0\n", -+ pid, pid_str, cpuset_size, cpu); - - const unsigned int big_size = cpuset_size < 128 ? 128 : cpuset_size * 2; - cpuset = tail_alloc(big_size); -@@ -95,7 +104,8 @@ - perror_msg_and_fail("sched_getaffinity(%d, %u, %p) = %s\n", - pid, big_size, cpuset, errstr); - assert(ret_size <= (int) big_size); -- printf("sched_getaffinity(%d, %u, [", pid, big_size); -+ pidns_print_leader(); -+ printf("sched_getaffinity(%d%s, %u, [", pid, pid_str, big_size); - for (i = 0, sep = ""; i < (unsigned) ret_size * 8; ++i) { - if (CPU_ISSET_S(i, (unsigned) ret_size, cpuset)) { - printf("%s%u", sep, i); -@@ -104,6 +114,7 @@ - } - printf("]) = %s\n", errstr); - -+ pidns_print_leader(); - puts("+++ exited with 0 +++"); - return 0; - } -Index: strace-5.7/tests-mx32/sched_xetattr--pidns-translation.c -=================================================================== ---- /dev/null 1970-01-01 00:00:00.000000000 +0000 -+++ strace-5.7/tests-mx32/sched_xetattr--pidns-translation.c 2020-09-09 19:52:38.914673641 +0200 -@@ -0,0 +1,2 @@ -+#define PIDNS_TRANSLATION -+#include "sched_xetattr.c" -Index: strace-5.7/tests-mx32/sched_xetattr.c -=================================================================== ---- strace-5.7.orig/tests-mx32/sched_xetattr.c 2020-09-09 19:52:30.634668706 +0200 -+++ strace-5.7/tests-mx32/sched_xetattr.c 2020-09-09 19:52:38.914673641 +0200 -@@ -15,6 +15,7 @@ - # include - # include - # include -+# include "pidns.h" - # include "sched_attr.h" - # include "xlat.h" - # include "xlat/schedulers.h" -@@ -41,6 +42,8 @@ - int - main(void) - { -+ PIDNS_TEST_INIT; -+ - static const kernel_ulong_t bogus_pid = - (kernel_ulong_t) 0xdefacedfacefeedULL; - static const kernel_ulong_t bogus_size = -@@ -48,20 +51,28 @@ - static const kernel_ulong_t bogus_flags = - (kernel_ulong_t) 0xdefaceddeadc0deULL; - -+ const int pid = getpid(); -+ const char *pid_str = pidns_pid2str(PT_TGID); -+ - TAIL_ALLOC_OBJECT_CONST_PTR(struct sched_attr, attr); - TAIL_ALLOC_OBJECT_CONST_PTR(unsigned int, psize); - void *const efault = attr + 1; - -- sys_sched_getattr(0, 0, 0, 0); -- printf("sched_getattr(0, NULL, 0, 0) = %s\n", errstr); -+ sys_sched_getattr(pid, 0, 0, 0); -+ pidns_print_leader(); -+ printf("sched_getattr(%d%s, NULL, 0, 0) = %s\n", -+ pid, pid_str, errstr); - - sys_sched_getattr(0, (unsigned long) attr, 0, 0); -+ pidns_print_leader(); - printf("sched_getattr(0, %p, 0, 0) = %s\n", attr, errstr); - - sys_sched_getattr(bogus_pid, 0, 0, 0); -+ pidns_print_leader(); - printf("sched_getattr(%d, NULL, 0, 0) = %s\n", (int) bogus_pid, errstr); - - sys_sched_getattr(-1U, (unsigned long) attr, bogus_size, bogus_flags); -+ pidns_print_leader(); - printf("sched_getattr(-1, %p, %s%u, %u) = %s\n", - attr, - # if defined __arm64__ || defined __aarch64__ -@@ -72,11 +83,13 @@ - (unsigned) bogus_size, (unsigned) bogus_flags, errstr); - - sys_sched_getattr(0, (unsigned long) efault, SCHED_ATTR_MIN_SIZE, 0); -+ pidns_print_leader(); - printf("sched_getattr(0, %p, %u, 0) = %s\n", - efault, (unsigned) SCHED_ATTR_MIN_SIZE, errstr); - - if (sys_sched_getattr(0, (unsigned long) attr, SCHED_ATTR_MIN_SIZE, 0)) - perror_msg_and_skip("sched_getattr"); -+ pidns_print_leader(); - printf("sched_getattr(0, {size=%u, sched_policy=", attr->size); - printxval(schedulers, attr->sched_policy, NULL); - printf(", sched_flags=%s, sched_nice=%d, sched_priority=%u" -@@ -91,11 +104,13 @@ - (unsigned) SCHED_ATTR_MIN_SIZE); - - sys_sched_getattr(0, (unsigned long) efault, sizeof(*attr), 0); -+ pidns_print_leader(); - printf("sched_getattr(0, %p, %u, 0) = %s\n", - efault, (unsigned) sizeof(*attr), errstr); - - if (sys_sched_getattr(0, (unsigned long) attr, sizeof(*attr), 0)) - perror_msg_and_skip("sched_getattr"); -+ pidns_print_leader(); - printf("sched_getattr(0, {size=%u, sched_policy=", attr->size); - printxval(schedulers, attr->sched_policy, NULL); - printf(", sched_flags=%s, sched_nice=%d, sched_priority=%u" -@@ -121,11 +136,13 @@ - F8ILL_KULONG_MASK | sizeof(*attr), F8ILL_KULONG_MASK); - # if defined __arm64__ || defined __aarch64__ - if (rc) { -+ pidns_print_leader(); - printf("sched_getattr(0, %p, 0xffffffff<<32|%u, 0) = %s\n", - attr, (unsigned) sizeof(*attr), errstr); - } else - # endif - { -+ pidns_print_leader(); - printf("sched_getattr(0, {size=%u, sched_policy=", attr->size); - printxval(schedulers, attr->sched_policy, NULL); - printf(", sched_flags=%s, sched_nice=%d, sched_priority=%u" -@@ -146,13 +163,16 @@ - } - - sys_sched_setattr(bogus_pid, 0, 0); -+ pidns_print_leader(); - printf("sched_setattr(%d, NULL, 0) = %s\n", (int) bogus_pid, errstr); - - attr->sched_flags |= 1; - -- if (sys_sched_setattr(0, (unsigned long) attr, 0)) -+ if (sys_sched_setattr(pid, (unsigned long) attr, 0)) - perror_msg_and_skip("sched_setattr"); -- printf("sched_setattr(0, {size=%u, sched_policy=", attr->size); -+ pidns_print_leader(); -+ printf("sched_setattr(%d%s, {size=%u, sched_policy=", -+ pid, pid_str, attr->size); - printxval(schedulers, attr->sched_policy, NULL); - printf(", sched_flags=%s, sched_nice=%d, sched_priority=%u" - ", sched_runtime=%" PRIu64 ", sched_deadline=%" PRIu64 -@@ -172,6 +192,7 @@ - - sys_sched_setattr(F8ILL_KULONG_MASK, (unsigned long) attr, - F8ILL_KULONG_MASK); -+ pidns_print_leader(); - printf("sched_setattr(0, {size=%u, sched_policy=", attr->size); - printxval(schedulers, attr->sched_policy, NULL); - printf(", sched_flags=%s, sched_nice=%d, sched_priority=%u" -@@ -193,11 +214,13 @@ - *psize = attr->size; - - sys_sched_setattr(0, (unsigned long) psize, 0); -+ pidns_print_leader(); - printf("sched_setattr(0, %p, 0) = %s\n", psize, errstr); - - attr->size = 0; - - sys_sched_setattr(0, (unsigned long) attr, 0); -+ pidns_print_leader(); - printf("sched_setattr(0, {size=%u, sched_policy=", attr->size); - printxval(schedulers, attr->sched_policy, NULL); - printf(", sched_flags=%s, sched_nice=%d, sched_priority=%u" -@@ -213,12 +236,14 @@ - attr->size = 1; - - sys_sched_setattr(0, (unsigned long) attr, 0); -+ pidns_print_leader(); - printf("sched_setattr(0, {size=%u} => {size=%u}, 0) = %s\n", - 1, attr->size, errstr); - - attr->size = SCHED_ATTR_MIN_SIZE - 1; - - sys_sched_setattr(0, (unsigned long) attr, 0); -+ pidns_print_leader(); - printf("sched_setattr(0, {size=%u} => {size=%u}, 0) = %s\n", - SCHED_ATTR_MIN_SIZE - 1, attr->size, errstr); - -@@ -232,6 +257,7 @@ - attr->sched_period = 0xded1ca7edda7aca7ULL; - - sys_sched_setattr(bogus_pid, (unsigned long) attr, bogus_flags); -+ pidns_print_leader(); - printf("sched_setattr(%d, {size=%u, sched_policy=%#x /* SCHED_??? */, " - "sched_flags=%#" PRIx64 " /* SCHED_FLAG_??? */, " - "sched_nice=%d, sched_priority=%u, sched_runtime=%" PRIu64 ", " -@@ -274,6 +300,7 @@ - attr->sched_period = 0xded1ca7edda7aca7ULL; - - sys_sched_setattr(bogus_pid, (unsigned long) attr, bogus_flags); -+ pidns_print_leader(); - printf("sched_setattr(%d, {size=%u, sched_policy=%#x /* SCHED_??? */, " - "sched_flags=SCHED_FLAG_RESET_ON_FORK|SCHED_FLAG_RECLAIM|" - "SCHED_FLAG_DL_OVERRUN|0x80, " -@@ -296,11 +323,13 @@ - const kernel_ulong_t ill = f8ill_ptr_to_kulong(attr); - - sys_sched_getattr(0, ill, sizeof(*attr), 0); -+ pidns_print_leader(); - printf("sched_getattr(0, %#llx, %u, 0) = %s\n", - (unsigned long long) ill, (unsigned) sizeof(*attr), - errstr); - - sys_sched_setattr(0, ill, 0); -+ pidns_print_leader(); - printf("sched_setattr(0, %#llx, 0) = %s\n", - (unsigned long long) ill, errstr); - } -@@ -310,6 +339,7 @@ - attr->sched_flags = 0x8fULL; - - sys_sched_setattr(bogus_pid, (unsigned long) attr, bogus_flags); -+ pidns_print_leader(); - printf("sched_setattr(%d, {size=%u, " - "sched_flags=SCHED_FLAG_RESET_ON_FORK|SCHED_FLAG_RECLAIM|" - "SCHED_FLAG_DL_OVERRUN|SCHED_FLAG_KEEP_POLICY|0x80, " -@@ -329,11 +359,13 @@ - const kernel_ulong_t ill = f8ill_ptr_to_kulong(attr); - - sys_sched_getattr(0, ill, sizeof(*attr), 0); -+ pidns_print_leader(); - printf("sched_getattr(0, %#llx, %u, 0) = %s\n", - (unsigned long long) ill, (unsigned) sizeof(*attr), - errstr); - - sys_sched_setattr(0, ill, 0); -+ pidns_print_leader(); - printf("sched_setattr(0, %#llx, 0) = %s\n", - (unsigned long long) ill, errstr); - } -@@ -342,6 +374,7 @@ - attr->sched_flags = 0xe7ULL; - - sys_sched_setattr(bogus_pid, (unsigned long) attr, bogus_flags); -+ pidns_print_leader(); - printf("sched_setattr(%d, {size=%u, sched_policy=%#x /* SCHED_??? */, " - "sched_flags=SCHED_FLAG_RESET_ON_FORK|SCHED_FLAG_RECLAIM|" - "SCHED_FLAG_DL_OVERRUN|SCHED_FLAG_UTIL_CLAMP_MIN" -@@ -365,11 +398,13 @@ - const kernel_ulong_t ill = f8ill_ptr_to_kulong(attr); - - sys_sched_getattr(0, ill, sizeof(*attr), 0); -+ pidns_print_leader(); - printf("sched_getattr(0, %#llx, %u, 0) = %s\n", - (unsigned long long) ill, (unsigned) sizeof(*attr), - errstr); - - sys_sched_setattr(0, ill, 0); -+ pidns_print_leader(); - printf("sched_setattr(0, %#llx, 0) = %s\n", - (unsigned long long) ill, errstr); - } -@@ -377,6 +412,7 @@ - attr->sched_flags = 0xcaffee90LL; - - sys_sched_setattr(bogus_pid, (unsigned long) attr, bogus_flags); -+ pidns_print_leader(); - printf("sched_setattr(%d, {size=%u, sched_flags=SCHED_FLAG_KEEP_PARAMS" - "|0xcaffee80, sched_util_min=%u, sched_util_max=%u}, %u) = %s\n", - (int) bogus_pid, -@@ -389,15 +425,18 @@ - const kernel_ulong_t ill = f8ill_ptr_to_kulong(attr); - - sys_sched_getattr(0, ill, sizeof(*attr), 0); -+ pidns_print_leader(); - printf("sched_getattr(0, %#llx, %u, 0) = %s\n", - (unsigned long long) ill, (unsigned) sizeof(*attr), - errstr); - - sys_sched_setattr(0, ill, 0); -+ pidns_print_leader(); - printf("sched_setattr(0, %#llx, 0) = %s\n", - (unsigned long long) ill, errstr); - } - -+ pidns_print_leader(); - puts("+++ exited with 0 +++"); - return 0; - } -Index: strace-5.7/tests-mx32/sched_xetparam--pidns-translation.c -=================================================================== ---- /dev/null 1970-01-01 00:00:00.000000000 +0000 -+++ strace-5.7/tests-mx32/sched_xetparam--pidns-translation.c 2020-09-09 19:52:38.914673641 +0200 -@@ -0,0 +1,2 @@ -+#define PIDNS_TRANSLATION -+#include "sched_xetparam.c" -Index: strace-5.7/tests-mx32/sched_xetparam.c -=================================================================== ---- strace-5.7.orig/tests-mx32/sched_xetparam.c 2020-09-09 19:52:30.635668706 +0200 -+++ strace-5.7/tests-mx32/sched_xetparam.c 2020-09-09 19:52:38.914673641 +0200 -@@ -7,6 +7,7 @@ - - #include "tests.h" - #include "scno.h" -+# include "pidns.h" - - #if defined __NR_sched_getparam && defined __NR_sched_setparam - -@@ -17,18 +18,27 @@ - int - main(void) - { -+ PIDNS_TEST_INIT; -+ - struct sched_param *const param = - tail_alloc(sizeof(struct sched_param)); - -- long rc = syscall(__NR_sched_getparam, 0, param); -- printf("sched_getparam(0, [%d]) = %ld\n", -- param->sched_priority, rc); -+ const int pid = getpid(); -+ const char *pid_str = pidns_pid2str(PT_TGID); -+ -+ long rc = syscall(__NR_sched_getparam, pid, param); -+ pidns_print_leader(); -+ printf("sched_getparam(%d%s, [%d]) = %ld\n", -+ pid, pid_str, param->sched_priority, rc); - - param->sched_priority = -1; -- rc = syscall(__NR_sched_setparam, 0, param); -- printf("sched_setparam(0, [%d]) = %ld %s (%m)\n", -+ rc = syscall(__NR_sched_setparam, pid, param); -+ pidns_print_leader(); -+ printf("sched_setparam(%d%s, [%d]) = %ld %s (%m)\n", -+ pid, pid_str, - param->sched_priority, rc, errno2name()); - -+ pidns_print_leader(); - puts("+++ exited with 0 +++"); - return 0; - } -Index: strace-5.7/tests-mx32/sched_xetscheduler--pidns-translation.c -=================================================================== ---- /dev/null 1970-01-01 00:00:00.000000000 +0000 -+++ strace-5.7/tests-mx32/sched_xetscheduler--pidns-translation.c 2020-09-09 19:52:38.915673641 +0200 -@@ -0,0 +1,2 @@ -+#define PIDNS_TRANSLATION -+#include "sched_xetscheduler.c" -Index: strace-5.7/tests-mx32/sched_xetscheduler.c -=================================================================== ---- strace-5.7.orig/tests-mx32/sched_xetscheduler.c 2020-09-09 19:52:30.635668706 +0200 -+++ strace-5.7/tests-mx32/sched_xetscheduler.c 2020-09-09 19:52:38.915673641 +0200 -@@ -7,6 +7,7 @@ - - #include "tests.h" - #include "scno.h" -+#include "pidns.h" - - #if defined __NR_sched_getscheduler && defined __NR_sched_setscheduler - -@@ -17,8 +18,13 @@ - int - main(void) - { -+ PIDNS_TEST_INIT; -+ - TAIL_ALLOC_OBJECT_CONST_PTR(struct sched_param, param); -- long rc = syscall(__NR_sched_getscheduler, 0); -+ const int pid = getpid(); -+ const char *pid_str = pidns_pid2str(PT_TGID); -+ -+ long rc = syscall(__NR_sched_getscheduler, pid); - const char *scheduler; - switch (rc) { - case SCHED_FIFO: -@@ -50,33 +56,43 @@ - default: - scheduler = "SCHED_OTHER"; - } -- printf("sched_getscheduler(0) = %ld (%s)\n", -- rc, scheduler); -+ pidns_print_leader(); -+ printf("sched_getscheduler(%d%s) = %ld (%s)\n", -+ pid, pid_str, rc, scheduler); - - rc = syscall(__NR_sched_getscheduler, -1); -+ pidns_print_leader(); - printf("sched_getscheduler(-1) = %s\n", sprintrc(rc)); - - param->sched_priority = -1; - -- rc = syscall(__NR_sched_setscheduler, 0, SCHED_FIFO, NULL); -- printf("sched_setscheduler(0, SCHED_FIFO, NULL) = %s\n", sprintrc(rc)); -- -- rc = syscall(__NR_sched_setscheduler, 0, SCHED_FIFO, param + 1); -- printf("sched_setscheduler(0, SCHED_FIFO, %p) = %s\n", param + 1, -- sprintrc(rc)); -- -- rc = syscall(__NR_sched_setscheduler, 0, 0xfaceda7a, param); -- printf("sched_setscheduler(0, %#x /* SCHED_??? */, [%d]) = %s\n", -- 0xfaceda7a, param->sched_priority, sprintrc(rc)); -+ rc = syscall(__NR_sched_setscheduler, pid, SCHED_FIFO, NULL); -+ pidns_print_leader(); -+ printf("sched_setscheduler(%d%s, SCHED_FIFO, NULL) = %s\n", -+ pid, pid_str, sprintrc(rc)); -+ -+ rc = syscall(__NR_sched_setscheduler, pid, SCHED_FIFO, param + 1); -+ pidns_print_leader(); -+ printf("sched_setscheduler(%d%s, SCHED_FIFO, %p) = %s\n", -+ pid, pid_str, param + 1, sprintrc(rc)); -+ -+ rc = syscall(__NR_sched_setscheduler, pid, 0xfaceda7a, param); -+ pidns_print_leader(); -+ printf("sched_setscheduler(%d%s, %#x /* SCHED_??? */, [%d]) = %s\n", -+ pid, pid_str, 0xfaceda7a, -+ param->sched_priority, sprintrc(rc)); - - rc = syscall(__NR_sched_setscheduler, -1, SCHED_FIFO, param); -+ pidns_print_leader(); - printf("sched_setscheduler(-1, SCHED_FIFO, [%d]) = %s\n", - param->sched_priority, sprintrc(rc)); - -- rc = syscall(__NR_sched_setscheduler, 0, SCHED_FIFO, param); -- printf("sched_setscheduler(0, SCHED_FIFO, [%d]) = %s\n", -- param->sched_priority, sprintrc(rc)); -+ rc = syscall(__NR_sched_setscheduler, pid, SCHED_FIFO, param); -+ pidns_print_leader(); -+ printf("sched_setscheduler(%d%s, SCHED_FIFO, [%d]) = %s\n", -+ pid, pid_str, param->sched_priority, sprintrc(rc)); - -+ pidns_print_leader(); - puts("+++ exited with 0 +++"); - return 0; - } -Index: strace-5.7/tests-mx32/signal_receive--pidns-translation.c -=================================================================== ---- /dev/null 1970-01-01 00:00:00.000000000 +0000 -+++ strace-5.7/tests-mx32/signal_receive--pidns-translation.c 2020-09-09 19:52:38.915673641 +0200 -@@ -0,0 +1,2 @@ -+#define PIDNS_TRANSLATION -+#include "signal_receive.c" -Index: strace-5.7/tests-mx32/signal_receive.c -=================================================================== ---- strace-5.7.orig/tests-mx32/signal_receive.c 2020-09-09 19:52:30.635668706 +0200 -+++ strace-5.7/tests-mx32/signal_receive.c 2020-09-09 19:52:38.915673641 +0200 -@@ -8,6 +8,7 @@ - */ - - #include "tests.h" -+#include "pidns.h" - #include - #include - #include -@@ -26,10 +27,13 @@ - int - main(void) - { -+ PIDNS_TEST_INIT; -+ - static const char prefix[] = "KERNEL BUG"; - int printed = 0; - - const int pid = getpid(); -+ const char *pid_str = pidns_pid2str(PT_TGID); - const int uid = geteuid(); - - for (int sig = 1; sig <= 31; ++sig) { -@@ -73,10 +77,13 @@ - const int e_pid = s_pid; - const int e_uid = s_uid; - #endif -- printf("kill(%d, %s) = 0\n", pid, signal2name(sig)); -- printf("--- %s {si_signo=%s, si_code=SI_USER, si_pid=%d" -+ pidns_print_leader(); -+ printf("kill(%d%s, %s) = 0\n", pid, pid_str, signal2name(sig)); -+ pidns_print_leader(); -+ printf("--- %s {si_signo=%s, si_code=SI_USER, si_pid=%d%s" - ", si_uid=%d} ---\n", -- signal2name(sig), signal2name(e_sig), e_pid, e_uid); -+ signal2name(sig), signal2name(e_sig), -+ e_pid, pid_str, e_uid); - - if (s_code || sig != s_sig || pid != s_pid || uid != s_uid) { - /* -@@ -91,11 +98,11 @@ - } - fprintf(stderr, - "%s: expected: si_signo=%d, si_code=%d" -- ", si_pid=%d, si_uid=%d\n" -+ ", si_pid=%d%s, si_uid=%d\n" - "%s: received: si_signo=%d, si_code=%d" -- ", si_pid=%d, si_uid=%d\n", -- prefix, sig, SI_USER, pid, uid, -- prefix, sig, s_code, s_pid, s_uid); -+ ", si_pid=%d%s, si_uid=%d\n", -+ prefix, sig, SI_USER, pid, pid_str, uid, -+ prefix, sig, s_code, s_pid, pid_str, s_uid); - } - } - -@@ -104,6 +111,7 @@ - "*** PLEASE FIX THE KERNEL ***\n", prefix); - } - -+ pidns_print_leader(); - puts("+++ exited with 0 +++"); - return 0; - } -Index: strace-5.7/tests-mx32/so_peercred--pidns-translation.c -=================================================================== ---- /dev/null 1970-01-01 00:00:00.000000000 +0000 -+++ strace-5.7/tests-mx32/so_peercred--pidns-translation.c 2020-09-09 19:52:38.915673641 +0200 -@@ -0,0 +1,2 @@ -+#define PIDNS_TRANSLATION -+#include "so_peercred.c" -Index: strace-5.7/tests-mx32/so_peercred.c -=================================================================== ---- strace-5.7.orig/tests-mx32/so_peercred.c 2020-09-09 19:52:30.636668707 +0200 -+++ strace-5.7/tests-mx32/so_peercred.c 2020-09-09 19:52:38.915673641 +0200 -@@ -9,6 +9,7 @@ - */ - - #include "tests.h" -+#include "pidns.h" - - #include - #include -@@ -53,6 +54,8 @@ - int - main(void) - { -+ PIDNS_TEST_INIT; -+ - TAIL_ALLOC_OBJECT_CONST_PTR(struct ucred, peercred); - TAIL_ALLOC_OBJECT_CONST_PTR(socklen_t, len); - -@@ -75,6 +78,8 @@ - struct ucred *const gid_truncated = - tail_alloc(sizeof_gid_truncated); - -+ const char *pid_str = pidns_pid2str(PT_TGID); -+ - int sv[2]; - if (socketpair(AF_UNIX, SOCK_STREAM, 0, sv)) - perror_msg_and_skip("socketpair AF_UNIX SOCK_STREAM"); -@@ -82,8 +87,10 @@ - /* classic getsockopt */ - *len = sizeof(*peercred); - get_peercred(sv[0], peercred, len); -+ pidns_print_leader(); - printf("getsockopt(%d, %s", sv[0], so_str()); - PRINT_FIELD_D(", {", *peercred, pid); -+ printf("%s", pid_str); - PRINT_FIELD_UID(", ", *peercred, uid); - PRINT_FIELD_UID(", ", *peercred, gid); - printf("}, [%d]) = %s\n", *len, errstr); -@@ -91,14 +98,17 @@ - /* getsockopt with zero optlen */ - *len = 0; - get_peercred(sv[0], peercred, len); -+ pidns_print_leader(); - printf("getsockopt(%d, %s, %p, [0]) = %s\n", - sv[0], so_str(), peercred, errstr); - - /* getsockopt with optlen larger than necessary - shortened */ - *len = sizeof(*peercred) + 1; - get_peercred(sv[0], peercred, len); -+ pidns_print_leader(); - printf("getsockopt(%d, %s", sv[0], so_str()); - PRINT_FIELD_D(", {", *peercred, pid); -+ printf("%s", pid_str); - PRINT_FIELD_UID(", ", *peercred, uid); - PRINT_FIELD_UID(", ", *peercred, gid); - printf("}, [%u->%d]) = %s\n", -@@ -110,6 +120,7 @@ - */ - *len = sizeof_pid_truncated; - get_peercred(sv[0], pid_truncated, len); -+ pidns_print_leader(); - printf("getsockopt(%d, %s, {pid=", sv[0], so_str()); - print_quoted_hex(pid_truncated, *len); - printf("}, [%d]) = %s\n", *len, errstr); -@@ -120,8 +131,10 @@ - */ - *len = sizeof_pid; - get_peercred(sv[0], pid, len); -+ pidns_print_leader(); - printf("getsockopt(%d, %s", sv[0], so_str()); - PRINT_FIELD_D(", {", *pid, pid); -+ printf("%s", pid_str); - printf("}, [%d]) = %s\n", *len, errstr); - - /* -@@ -136,8 +149,10 @@ - * to struct ucred.pid field. - */ - memcpy(uid, uid_truncated, sizeof_uid_truncated); -+ pidns_print_leader(); - printf("getsockopt(%d, %s", sv[0], so_str()); - PRINT_FIELD_D(", {", *uid, pid); -+ printf("%s", pid_str); - printf(", uid="); - print_quoted_hex(&uid->uid, sizeof_uid_truncated - - offsetof(struct ucred, uid)); -@@ -149,8 +164,10 @@ - */ - *len = sizeof_uid; - get_peercred(sv[0], uid, len); -+ pidns_print_leader(); - printf("getsockopt(%d, %s", sv[0], so_str()); - PRINT_FIELD_D(", {", *uid, pid); -+ printf("%s", pid_str); - PRINT_FIELD_UID(", ", *uid, uid); - printf("}, [%d]) = %s\n", *len, errstr); - -@@ -166,8 +183,10 @@ - * to struct ucred.pid and struct ucred.uid fields. - */ - memcpy(peercred, gid_truncated, sizeof_gid_truncated); -+ pidns_print_leader(); - printf("getsockopt(%d, %s", sv[0], so_str()); - PRINT_FIELD_D(", {", *peercred, pid); -+ printf("%s", pid_str); - PRINT_FIELD_UID(", ", *peercred, uid); - printf(", gid="); - print_quoted_hex(&peercred->gid, sizeof_gid_truncated - -@@ -177,14 +196,17 @@ - /* getsockopt optval EFAULT */ - *len = sizeof(*peercred); - get_peercred(sv[0], &peercred->uid, len); -+ pidns_print_leader(); - printf("getsockopt(%d, %s, %p, [%d]) = %s\n", - sv[0], so_str(), &peercred->uid, *len, errstr); - - /* getsockopt optlen EFAULT */ - get_peercred(sv[0], peercred, len + 1); -+ pidns_print_leader(); - printf("getsockopt(%d, %s, %p, %p) = %s\n", - sv[0], so_str(), peercred, len + 1, errstr); - -+ pidns_print_leader(); - puts("+++ exited with 0 +++"); - return 0; - } -Index: strace-5.7/tests-mx32/tgkill--pidns-translation.c -=================================================================== ---- /dev/null 1970-01-01 00:00:00.000000000 +0000 -+++ strace-5.7/tests-mx32/tgkill--pidns-translation.c 2020-09-09 19:52:38.916673642 +0200 -@@ -0,0 +1,2 @@ -+#define PIDNS_TRANSLATION -+#include "tgkill.c" -Index: strace-5.7/tests-mx32/tgkill.c -=================================================================== ---- strace-5.7.orig/tests-mx32/tgkill.c 2020-09-09 19:52:30.636668707 +0200 -+++ strace-5.7/tests-mx32/tgkill.c 2020-09-09 19:52:38.916673642 +0200 -@@ -9,6 +9,7 @@ - - #include "tests.h" - #include "scno.h" -+#include "pidns.h" - - #ifdef __NR_tgkill - -@@ -36,28 +37,46 @@ - int - main(void) - { -+ PIDNS_TEST_INIT; -+ - const int pid = getpid(); -+ const char *pid_str = pidns_pid2str(PT_TGID); -+ const int tid = syscall(__NR_gettid); -+ const char *tid_str = pidns_pid2str(PT_TID); - const int bad_pid = -1; - const int bad_sig = 0xface; - -- k_tgkill(pid, pid, 0); -- printf("tgkill(%d, %d, 0) = %s\n", pid, pid, errstr); -+ k_tgkill(pid, tid, 0); -+ pidns_print_leader(); -+ printf("tgkill(%d%s, %d%s, 0) = %s\n", -+ pid, pid_str, tid, tid_str, errstr); - - k_tgkill(pid, bad_pid, 0); -- printf("tgkill(%d, %d, 0) = %s\n", pid, bad_pid, errstr); -- -- k_tgkill(bad_pid, pid, 0); -- printf("tgkill(%d, %d, 0) = %s\n", bad_pid, pid, errstr); -- -- k_tgkill(pid, pid, SIGCONT); -- printf("tgkill(%d, %d, SIGCONT) = %s\n", pid, pid, errstr); -- -- k_tgkill(pid, pid, bad_sig); -- printf("tgkill(%d, %d, %d) = %s\n", pid, pid, bad_sig, errstr); -- -- k_tgkill(pid, pid, -bad_sig); -- printf("tgkill(%d, %d, %d) = %s\n", pid, pid, -bad_sig, errstr); -+ pidns_print_leader(); -+ printf("tgkill(%d%s, %d, 0) = %s\n", -+ pid, pid_str, bad_pid, errstr); -+ -+ k_tgkill(bad_pid, tid, 0); -+ pidns_print_leader(); -+ printf("tgkill(%d, %d%s, 0) = %s\n", -+ bad_pid, tid, tid_str, errstr); -+ -+ k_tgkill(pid, tid, SIGCONT); -+ pidns_print_leader(); -+ printf("tgkill(%d%s, %d%s, SIGCONT) = %s\n", -+ pid, pid_str, tid, tid_str, errstr); -+ -+ k_tgkill(pid, tid, bad_sig); -+ pidns_print_leader(); -+ printf("tgkill(%d%s, %d%s, %d) = %s\n", -+ pid, pid_str, tid, tid_str, bad_sig, errstr); -+ -+ k_tgkill(pid, tid, -bad_sig); -+ pidns_print_leader(); -+ printf("tgkill(%d%s, %d%s, %d) = %s\n", -+ pid, pid_str, tid, tid_str, -bad_sig, errstr); - -+ pidns_print_leader(); - puts("+++ exited with 0 +++"); - return 0; - } -Index: strace-5.7/tests-mx32/tkill--pidns-translation.c -=================================================================== ---- /dev/null 1970-01-01 00:00:00.000000000 +0000 -+++ strace-5.7/tests-mx32/tkill--pidns-translation.c 2020-09-09 19:52:38.916673642 +0200 -@@ -0,0 +1,2 @@ -+#define PIDNS_TRANSLATION -+#include "tkill.c" -Index: strace-5.7/tests-mx32/tkill.c -=================================================================== ---- strace-5.7.orig/tests-mx32/tkill.c 2020-09-09 19:52:30.636668707 +0200 -+++ strace-5.7/tests-mx32/tkill.c 2020-09-09 19:52:38.916673642 +0200 -@@ -9,6 +9,7 @@ - - #include "tests.h" - #include "scno.h" -+#include "pidns.h" - - #ifdef __NR_tkill - -@@ -33,22 +34,30 @@ - int - main(void) - { -- const int pid = getpid(); -+ PIDNS_TEST_INIT; -+ -+ const int tid = syscall(__NR_gettid); -+ const char *tid_str = pidns_pid2str(PT_TID); - const int bad_pid = -1; - const int bad_sig = 0xface; - -- k_tkill(pid, 0); -- printf("tkill(%d, 0) = %s\n", pid, errstr); -- -- k_tkill(pid, SIGCONT); -- printf("tkill(%d, SIGCONT) = %s\n", pid, errstr); -+ k_tkill(tid, 0); -+ pidns_print_leader(); -+ printf("tkill(%d%s, 0) = %s\n", tid, tid_str, errstr); -+ -+ k_tkill(tid, SIGCONT); -+ pidns_print_leader(); -+ printf("tkill(%d%s, SIGCONT) = %s\n", tid, tid_str, errstr); - - k_tkill(bad_pid, bad_sig); -+ pidns_print_leader(); - printf("tkill(%d, %d) = %s\n", bad_pid, bad_sig, errstr); - - k_tkill(bad_pid, -bad_sig); -+ pidns_print_leader(); - printf("tkill(%d, %d) = %s\n", bad_pid, -bad_sig, errstr); - -+ pidns_print_leader(); - puts("+++ exited with 0 +++"); - return 0; - } -Index: strace-5.7/tests-mx32/trie_for_tests.c -=================================================================== ---- /dev/null 1970-01-01 00:00:00.000000000 +0000 -+++ strace-5.7/tests-mx32/trie_for_tests.c 2020-09-09 19:52:38.916673642 +0200 -@@ -0,0 +1 @@ -+#include "trie.c" -Index: strace-5.7/tests-mx32/trie_test.c -=================================================================== ---- /dev/null 1970-01-01 00:00:00.000000000 +0000 -+++ strace-5.7/tests-mx32/trie_test.c 2020-09-09 19:52:38.916673642 +0200 -@@ -0,0 +1,121 @@ -+/* -+ * Copyright (c) 2017-2019 The strace developers. -+ * All rights reserved. -+ * -+ * SPDX-License-Identifier: GPL-2.0-or-later -+ */ -+ -+#include "tests.h" -+#include "trie.h" -+ -+#include -+#include -+ -+static void -+assert_equals(const char *msg, uint64_t expected, uint64_t actual) { -+ if (actual != expected) -+ error_msg_and_fail("%s: expected: %" PRIu64 -+ ", actual: %" PRIu64, msg, expected, actual); -+} -+ -+static void -+iterate_fn(void *data, uint64_t key, uint64_t value) -+{ -+ uint64_t expected = key < 256 && key % 10 == 0 ? key + 42 : -1ULL; -+ assert_equals("iterate_fn", expected, value); -+ -+ int *count = (int *) data; -+ if (value != -1ULL) -+ (*count)++; -+} -+ -+static void -+test_trie_iterate_fn(void) -+{ -+ struct trie *t = trie_create(8, 6, 3, 3, -1); -+ for (int i = 0; i < 26; i++) -+ trie_set(t, i * 10, i * 10 + 42); -+ -+ static const struct { -+ uint64_t start; -+ uint64_t end; -+ int expected_count; -+ } iterate_params[] = { -+ {0, 256, 26}, -+ {0, UINT64_MAX, 26}, -+ {20, 90, 8}, -+ {99, 999, 16}, -+ {10000, 100000, 0}, -+ {200, 100, 0}, -+ }; -+ -+ for (size_t i = 0; i < ARRAY_SIZE(iterate_params); i++) { -+ int count = 0; -+ trie_iterate_keys(t, iterate_params[i].start, iterate_params[i].end, iterate_fn, &count); -+ assert_equals("iteration count", iterate_params[i].expected_count, count); -+ } -+} -+ -+struct key_value_pair { -+ uint64_t key, value; -+}; -+ -+static void -+test_trie_get(void) -+{ -+ static const struct { -+ uint8_t key_size; -+ uint8_t item_size_lg; -+ uint8_t node_key_bits; -+ uint8_t data_block_key_bits; -+ uint64_t empty_value; -+ -+ struct key_value_pair set_values[3], get_values[3]; -+ } params[] = { -+ {64, 6, 10, 10, 0, -+ {{300, 1}, {0xfacefeed, 0xabcdef123456}, {-1ULL, -1ULL}}, -+ {{301, 0}, {0xfacefeed, 0xabcdef123456}, {-1ULL, -1ULL}}}, -+ {8, 2, 4, 4, 10, -+ {{0xab, 0xcd}, {0xface, 2}, {0, 3}}, -+ {{0xab, 0xd}, {0xface, 10}, {0, 3}}}, -+ {30, 0, 6, 3, -1, -+ {{0xaaaa, 127}, {0xface, 0}, {0, 0}}, -+ {{0xaaaa, 1}, {0xface, 0}, {1, 1}}}, -+ {16, 4, 5, 11, 0xffffff, -+ {{0xabcdef, 42}, {0xabcd, 42}, {0xffff, 0}}, -+ {{0xabcdef, 0xffff}, {0xabcd, 42}, {0xffff, 0}}}, -+ {41, 5, 1, 1, -1, -+ {{0xabcdef01, 0x22222222}, {-1, 0x33333333}, {10, 10}}, -+ {{0xabcdef01, 0x22222222}, {-1, 0xffffffff}, {10, 10}}}, -+ }; -+ -+ for (size_t i = 0; i < ARRAY_SIZE(params); i++) { -+ struct trie *t = trie_create(params[i].key_size, -+ params[i].item_size_lg, -+ params[i].node_key_bits, -+ params[i].data_block_key_bits, -+ params[i].empty_value); -+ -+ if (!t) -+ error_msg_and_fail("trie creation failed"); -+ -+ for (size_t j = 0; j < ARRAY_SIZE(params[i].set_values); j++) { -+ struct key_value_pair kv = params[i].set_values[j]; -+ trie_set(t, kv.key, kv.value); -+ } -+ for (size_t j = 0; j < ARRAY_SIZE(params[i].get_values); j++) { -+ struct key_value_pair kv = params[i].get_values[j]; -+ assert_equals("trie_get", kv.value, trie_get(t, kv.key)); -+ } -+ -+ trie_free(t); -+ } -+} -+ -+int -+main(void) -+{ -+ test_trie_get(); -+ test_trie_iterate_fn(); -+ return 0; -+} -Index: strace-5.7/tests-mx32/xet_robust_list--pidns-translation.c -=================================================================== ---- /dev/null 1970-01-01 00:00:00.000000000 +0000 -+++ strace-5.7/tests-mx32/xet_robust_list--pidns-translation.c 2020-09-09 19:52:38.916673642 +0200 -@@ -0,0 +1,2 @@ -+#define PIDNS_TRANSLATION -+#include "xet_robust_list.c" -Index: strace-5.7/tests-mx32/xet_robust_list.c -=================================================================== ---- strace-5.7.orig/tests-mx32/xet_robust_list.c 2020-09-09 19:52:30.637668707 +0200 -+++ strace-5.7/tests-mx32/xet_robust_list.c 2020-09-09 19:52:38.917673643 +0200 -@@ -8,6 +8,7 @@ - - #include "tests.h" - #include "scno.h" -+#include "pidns.h" - - #if defined __NR_get_robust_list && defined __NR_set_robust_list - -@@ -30,27 +31,36 @@ - int - main(void) - { -+ PIDNS_TEST_INIT; -+ - const pid_t pid = getpid(); -+ const char *pid_str = pidns_pid2str(PT_TGID); - const long long_pid = (unsigned long) (0xdeadbeef00000000LL | pid); - TAIL_ALLOC_OBJECT_CONST_PTR(void *, p_head); - TAIL_ALLOC_OBJECT_CONST_PTR(size_t, p_len); - - if (syscall(__NR_get_robust_list, long_pid, p_head, p_len)) - perror_msg_and_skip("get_robust_list"); -- printf("get_robust_list(%d, [%s], [%lu]) = 0\n", -- (int) pid, sprintaddr(*p_head), (unsigned long) *p_len); -+ pidns_print_leader(); -+ printf("get_robust_list(%d%s, [%s], [%lu]) = 0\n", -+ pid, pid_str, sprintaddr(*p_head), -+ (unsigned long) *p_len); - - void *head = tail_alloc(*p_len); - if (syscall(__NR_set_robust_list, head, *p_len)) - perror_msg_and_skip("set_robust_list"); -+ pidns_print_leader(); - printf("set_robust_list(%p, %lu) = 0\n", - head, (unsigned long) *p_len); - - if (syscall(__NR_get_robust_list, long_pid, p_head, p_len)) - perror_msg_and_skip("get_robust_list"); -- printf("get_robust_list(%d, [%s], [%lu]) = 0\n", -- (int) pid, sprintaddr(*p_head), (unsigned long) *p_len); -+ pidns_print_leader(); -+ printf("get_robust_list(%d%s, [%s], [%lu]) = 0\n", -+ pid, pid_str, sprintaddr(*p_head), -+ (unsigned long) *p_len); - -+ pidns_print_leader(); - puts("+++ exited with 0 +++"); - return 0; - } -Index: strace-5.7/tests-mx32/xetpgid--pidns-translation.c -=================================================================== ---- /dev/null 1970-01-01 00:00:00.000000000 +0000 -+++ strace-5.7/tests-mx32/xetpgid--pidns-translation.c 2020-09-09 19:52:38.917673643 +0200 -@@ -0,0 +1,2 @@ -+#define PIDNS_TRANSLATION -+#include "xetpgid.c" -Index: strace-5.7/tests-mx32/xetpgid.c -=================================================================== ---- strace-5.7.orig/tests-mx32/xetpgid.c 2020-09-09 19:52:30.637668707 +0200 -+++ strace-5.7/tests-mx32/xetpgid.c 2020-09-09 19:52:38.917673643 +0200 -@@ -10,6 +10,7 @@ - - #include "tests.h" - #include "scno.h" -+#include "pidns.h" - - #if defined __NR_getpgid && defined __NR_setpgid - -@@ -19,13 +20,21 @@ - int - main(void) - { -- const int pid = getpid(); -- long rc = syscall(__NR_getpgid, F8ILL_KULONG_MASK | pid); -- printf("getpgid(%d) = %ld\n", pid, rc); -+ PIDNS_TEST_INIT; - -- rc = syscall(__NR_setpgid, F8ILL_KULONG_MASK, F8ILL_KULONG_MASK | pid); -- printf("setpgid(0, %d) = %ld\n", pid, rc); -+ const int pid = getpid(); -+ long pgid = syscall(__NR_getpgid, F8ILL_KULONG_MASK | pid); -+ pidns_print_leader(); -+ printf("getpgid(%d%s) = %ld%s\n", pid, pidns_pid2str(PT_TGID), -+ pgid, pidns_pid2str(PT_PGID)); -+ -+ long rc = syscall(__NR_setpgid, F8ILL_KULONG_MASK, -+ F8ILL_KULONG_MASK | pgid); -+ pidns_print_leader(); -+ printf("setpgid(0, %ld%s) = %s\n", pgid, pidns_pid2str(PT_PGID), -+ sprintrc(rc)); - -+ pidns_print_leader(); - puts("+++ exited with 0 +++"); - return 0; - } -Index: strace-5.7/tests-mx32/xetpriority--pidns-translation.c -=================================================================== ---- /dev/null 1970-01-01 00:00:00.000000000 +0000 -+++ strace-5.7/tests-mx32/xetpriority--pidns-translation.c 2020-09-09 19:52:38.917673643 +0200 -@@ -0,0 +1,2 @@ -+#define PIDNS_TRANSLATION -+#include "xetpriority.c" -Index: strace-5.7/tests-mx32/xetpriority.c -=================================================================== ---- strace-5.7.orig/tests-mx32/xetpriority.c 2020-09-09 19:52:30.638668708 +0200 -+++ strace-5.7/tests-mx32/xetpriority.c 2020-09-09 19:52:38.917673643 +0200 -@@ -7,6 +7,7 @@ - - #include "tests.h" - #include "scno.h" -+#include "pidns.h" - - #if defined __NR_getpriority && defined __NR_setpriority - -@@ -17,15 +18,30 @@ - int - main(void) - { -+ PIDNS_TEST_INIT; -+ - const int pid = getpid(); -+ const int pgid = getpgid(0); -+ - long rc = syscall(__NR_getpriority, PRIO_PROCESS, - F8ILL_KULONG_MASK | pid); -- printf("getpriority(PRIO_PROCESS, %d) = %ld\n", pid, rc); -+ pidns_print_leader(); -+ printf("getpriority(PRIO_PROCESS, %d%s) = %ld\n", -+ pid, pidns_pid2str(PT_TGID), rc); - - rc = syscall(__NR_setpriority, PRIO_PROCESS, - F8ILL_KULONG_MASK | pid, F8ILL_KULONG_MASK); -- printf("setpriority(PRIO_PROCESS, %d, 0) = %s\n", pid, sprintrc(rc)); -+ pidns_print_leader(); -+ printf("setpriority(PRIO_PROCESS, %d%s, 0) = %s\n", -+ pid, pidns_pid2str(PT_TGID), sprintrc(rc)); -+ -+ rc = syscall(__NR_getpriority, PRIO_PGRP, -+ F8ILL_KULONG_MASK | pgid); -+ pidns_print_leader(); -+ printf("getpriority(PRIO_PGRP, %d%s) = %ld\n", -+ pgid, pidns_pid2str(PT_PGID), rc); - -+ pidns_print_leader(); - puts("+++ exited with 0 +++"); - return 0; - } -Index: strace-5.7/tests-mx32/xmalloc_for_tests.c -=================================================================== ---- /dev/null 1970-01-01 00:00:00.000000000 +0000 -+++ strace-5.7/tests-mx32/xmalloc_for_tests.c 2020-09-09 19:52:38.917673643 +0200 -@@ -0,0 +1,2 @@ -+#define error_msg_and_die error_msg_and_fail -+#include "xmalloc.c" -Index: strace-5.7/Makefile.in -=================================================================== ---- strace-5.7.orig/Makefile.in 2020-09-09 19:52:30.641668710 +0200 -+++ strace-5.7/Makefile.in 2020-09-09 19:52:38.920673644 +0200 -@@ -1870,7 +1870,7 @@ - CODE_COVERAGE_GENHTML_OPTIONS = $(CODE_COVERAGE_GENHTML_OPTIONS_DEFAULT) \ - --prefix $(shell cd $(abs_top_srcdir)/.. && pwd || echo .) - --CODE_COVERAGE_IGNORE_PATTERN = '/usr/include/*' -+CODE_COVERAGE_IGNORE_PATTERN = '/usr/include/*' '*/tests/*' '*/tests-m32/*' '*/tests-mx32/*' - - # Enable this to get link map generated - #strace_LDFLAGS += -Wl,-Map=strace.mapfile -Index: strace-5.7/tests/Makefile.in -=================================================================== ---- strace-5.7.orig/tests/Makefile.in 2020-09-09 19:52:30.693668741 +0200 -+++ strace-5.7/tests/Makefile.in 2020-09-09 20:23:40.076946659 +0200 -@@ -121,10 +121,17 @@ - clone3-success-Xabbrev$(EXEEXT) clone3-success-Xraw$(EXEEXT) \ - clone3-success-Xverbose$(EXEEXT) count-f$(EXEEXT) \ - delay$(EXEEXT) execve-v$(EXEEXT) execveat-v$(EXEEXT) \ -+ fcntl--pidns-translation$(EXEEXT) \ -+ fcntl64--pidns-translation$(EXEEXT) \ - filter_seccomp-flag$(EXEEXT) filter_seccomp-perf$(EXEEXT) \ -- filter-unavailable$(EXEEXT) fork-f$(EXEEXT) fsync-y$(EXEEXT) \ -- get_process_reaper$(EXEEXT) getpid$(EXEEXT) getppid$(EXEEXT) \ -- gettid$(EXEEXT) inject-nf$(EXEEXT) int_0x80$(EXEEXT) \ -+ filter-unavailable$(EXEEXT) fork-f$(EXEEXT) \ -+ fork--pidns-translation$(EXEEXT) fsync-y$(EXEEXT) \ -+ get_process_reaper$(EXEEXT) \ -+ getpgrp--pidns-translation$(EXEEXT) getpid$(EXEEXT) \ -+ getpid--pidns-translation$(EXEEXT) getppid$(EXEEXT) \ -+ getsid--pidns-translation$(EXEEXT) gettid$(EXEEXT) \ -+ gettid--pidns-translation$(EXEEXT) inject-nf$(EXEEXT) \ -+ int_0x80$(EXEEXT) ioctl_block--pidns-translation$(EXEEXT) \ - ioctl_dm-v$(EXEEXT) ioctl_evdev-success$(EXEEXT) \ - ioctl_evdev-success-Xabbrev$(EXEEXT) \ - ioctl_evdev-success-Xraw$(EXEEXT) \ -@@ -151,43 +158,68 @@ - ioctl_v4l2-success-v-Xabbrev$(EXEEXT) \ - ioctl_v4l2-success-v-Xraw$(EXEEXT) \ - ioctl_v4l2-success-v-Xverbose$(EXEEXT) \ -- is_linux_mips_n64$(EXEEXT) kill_child$(EXEEXT) \ -- ksysent$(EXEEXT) list_sigaction_signum$(EXEEXT) \ -- localtime$(EXEEXT) looping_threads$(EXEEXT) \ -- mmsg-silent$(EXEEXT) mmsg_name-v$(EXEEXT) \ -+ ioprio--pidns-translation$(EXEEXT) is_linux_mips_n64$(EXEEXT) \ -+ kcmp-y--pidns-translation$(EXEEXT) kill_child$(EXEEXT) \ -+ kill--pidns-translation$(EXEEXT) ksysent$(EXEEXT) \ -+ list_sigaction_signum$(EXEEXT) localtime$(EXEEXT) \ -+ looping_threads$(EXEEXT) \ -+ migrate_pages--pidns-translation$(EXEEXT) mmsg-silent$(EXEEXT) \ -+ mmsg_name-v$(EXEEXT) move_pages--pidns-translation$(EXEEXT) \ - msg_control-v$(EXEEXT) net-accept-connect$(EXEEXT) \ -+ net-sockaddr--pidns-translation$(EXEEXT) \ - net-tpacket_stats-success$(EXEEXT) nlattr_ifla_xdp-y$(EXEEXT) \ -+ netlink_audit--pidns-translation$(EXEEXT) \ - netlink_inet_diag$(EXEEXT) netlink_netlink_diag$(EXEEXT) \ - netlink_unix_diag$(EXEEXT) nsyscalls$(EXEEXT) \ - nsyscalls-d$(EXEEXT) oldselect-P$(EXEEXT) \ - oldselect-efault-P$(EXEEXT) orphaned_process_group$(EXEEXT) \ - pc$(EXEEXT) perf_event_open_nonverbose$(EXEEXT) \ -- perf_event_open_unabbrev$(EXEEXT) poll-P$(EXEEXT) \ -- ppoll-P$(EXEEXT) ppoll-v$(EXEEXT) \ -+ perf_event_open_unabbrev$(EXEEXT) \ -+ pidfd_open--pidns-translation$(EXEEXT) \ -+ pidfd_send_signal--pidns-translation$(EXEEXT) \ -+ pidns-cache$(EXEEXT) poll-P$(EXEEXT) ppoll-P$(EXEEXT) \ -+ ppoll-v$(EXEEXT) prlimit64--pidns-translation$(EXEEXT) \ - prctl-seccomp-filter-v$(EXEEXT) prctl-seccomp-strict$(EXEEXT) \ - prctl-spec-inject$(EXEEXT) print_maxfd$(EXEEXT) \ -- print_ppid_tracerpid$(EXEEXT) qual_fault$(EXEEXT) \ -- qual_inject-error-signal$(EXEEXT) qual_inject-retval$(EXEEXT) \ -- qual_inject-signal$(EXEEXT) qual_signal$(EXEEXT) \ -- quotactl-success$(EXEEXT) quotactl-success-v$(EXEEXT) \ -- quotactl-v$(EXEEXT) quotactl-xfs-success$(EXEEXT) \ -- quotactl-xfs-success-v$(EXEEXT) quotactl-xfs-v$(EXEEXT) \ -- redirect-fds$(EXEEXT) restart_syscall$(EXEEXT) \ -- run_expect_termsig$(EXEEXT) scm_rights$(EXEEXT) \ -- seccomp-filter-v$(EXEEXT) seccomp-strict$(EXEEXT) \ -- select-P$(EXEEXT) set_ptracer_any$(EXEEXT) \ -- set_sigblock$(EXEEXT) set_sigign$(EXEEXT) \ -- setpgrp-exec$(EXEEXT) signal_receive$(EXEEXT) sleep$(EXEEXT) \ -+ print_ppid_tracerpid$(EXEEXT) \ -+ process_vm_readv--pidns-translation$(EXEEXT) \ -+ process_vm_writev--pidns-translation$(EXEEXT) \ -+ qual_fault$(EXEEXT) qual_inject-error-signal$(EXEEXT) \ -+ qual_inject-retval$(EXEEXT) qual_inject-signal$(EXEEXT) \ -+ qual_signal$(EXEEXT) quotactl-success$(EXEEXT) \ -+ quotactl-success-v$(EXEEXT) quotactl-v$(EXEEXT) \ -+ quotactl-xfs-success$(EXEEXT) quotactl-xfs-success-v$(EXEEXT) \ -+ quotactl-xfs-v$(EXEEXT) redirect-fds$(EXEEXT) \ -+ restart_syscall$(EXEEXT) \ -+ rt_sigqueueinfo--pidns-translation$(EXEEXT) \ -+ rt_tgsigqueueinfo--pidns-translation$(EXEEXT) \ -+ run_expect_termsig$(EXEEXT) \ -+ sched_xetaffinity--pidns-translation$(EXEEXT) \ -+ sched_xetattr--pidns-translation$(EXEEXT) \ -+ sched_xetparam--pidns-translation$(EXEEXT) \ -+ sched_xetscheduler--pidns-translation$(EXEEXT) \ -+ scm_rights$(EXEEXT) seccomp-filter-v$(EXEEXT) \ -+ seccomp-strict$(EXEEXT) select-P$(EXEEXT) \ -+ set_ptracer_any$(EXEEXT) set_sigblock$(EXEEXT) \ -+ set_sigign$(EXEEXT) setpgrp-exec$(EXEEXT) \ -+ signal_receive$(EXEEXT) \ -+ signal_receive--pidns-translation$(EXEEXT) sleep$(EXEEXT) \ - stack-fcall$(EXEEXT) stack-fcall-attach$(EXEEXT) \ - stack-fcall-mangled$(EXEEXT) status-none-threads$(EXEEXT) \ -- status-unfinished-threads$(EXEEXT) syslog-success$(EXEEXT) \ -+ status-unfinished-threads$(EXEEXT) \ -+ so_peercred--pidns-translation$(EXEEXT) \ -+ syslog-success$(EXEEXT) tgkill--pidns-translation$(EXEEXT) \ - threads-execve$(EXEEXT) \ - threads-execve--quiet-thread-execve$(EXEEXT) \ - threads-execve-q$(EXEEXT) threads-execve-qq$(EXEEXT) \ -- threads-execve-qqq$(EXEEXT) tracer_ppid_pgid_sid$(EXEEXT) \ -+ threads-execve-qqq$(EXEEXT) tkill--pidns-translation$(EXEEXT) \ -+ tracer_ppid_pgid_sid$(EXEEXT) trie_test$(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) -+ wait4-v$(EXEEXT) waitid-v$(EXEEXT) \ -+ xetpgid--pidns-translation$(EXEEXT) \ -+ xetpriority--pidns-translation$(EXEEXT) \ -+ xet_robust_list--pidns-translation$(EXEEXT) zeroargc$(EXEEXT) - @ENABLE_STACKTRACE_TRUE@@USE_DEMANGLE_TRUE@am__append_1 = strace-k-demangle.test - TESTS = $(GEN_TESTS) $(DECODER_TESTS) $(MISC_TESTS) $(am__EXEEXT_2) - subdir = tests -@@ -545,7 +577,8 @@ - libtests_a-tail_alloc.$(OBJEXT) \ - libtests_a-test_printpath.$(OBJEXT) \ - libtests_a-test_printstrn.$(OBJEXT) \ -- libtests_a-test_ucopy.$(OBJEXT) libtests_a-tprintf.$(OBJEXT) -+ libtests_a-test_ucopy.$(OBJEXT) libtests_a-tprintf.$(OBJEXT) \ -+ libtests_a-xmalloc_for_tests.$(OBJEXT) - libtests_a_OBJECTS = $(am_libtests_a_OBJECTS) - _newselect_SOURCES = _newselect.c - _newselect_OBJECTS = _newselect.$(OBJEXT) -@@ -973,10 +1006,19 @@ - fcntl_OBJECTS = fcntl.$(OBJEXT) - fcntl_LDADD = $(LDADD) - fcntl_DEPENDENCIES = libtests.a -+fcntl__pidns_translation_SOURCES = fcntl--pidns-translation.c -+fcntl__pidns_translation_OBJECTS = fcntl--pidns-translation.$(OBJEXT) -+fcntl__pidns_translation_LDADD = $(LDADD) -+fcntl__pidns_translation_DEPENDENCIES = libtests.a - fcntl64_SOURCES = fcntl64.c - fcntl64_OBJECTS = fcntl64.$(OBJEXT) - fcntl64_LDADD = $(LDADD) - fcntl64_DEPENDENCIES = libtests.a -+fcntl64__pidns_translation_SOURCES = fcntl64--pidns-translation.c -+fcntl64__pidns_translation_OBJECTS = \ -+ fcntl64--pidns-translation.$(OBJEXT) -+fcntl64__pidns_translation_LDADD = $(LDADD) -+fcntl64__pidns_translation_DEPENDENCIES = libtests.a - fdatasync_SOURCES = fdatasync.c - fdatasync_OBJECTS = fdatasync.$(OBJEXT) - fdatasync_LDADD = $(LDADD) -@@ -1012,6 +1054,10 @@ - flock_OBJECTS = flock.$(OBJEXT) - flock_LDADD = $(LDADD) - flock_DEPENDENCIES = libtests.a -+fork__pidns_translation_SOURCES = fork--pidns-translation.c -+fork__pidns_translation_OBJECTS = fork--pidns-translation.$(OBJEXT) -+fork__pidns_translation_LDADD = $(LDADD) -+fork__pidns_translation_DEPENDENCIES = libtests.a - fork_f_SOURCES = fork-f.c - fork_f_OBJECTS = fork-f.$(OBJEXT) - fork_f_LDADD = $(LDADD) -@@ -1180,10 +1226,20 @@ - getpgrp_OBJECTS = getpgrp.$(OBJEXT) - getpgrp_LDADD = $(LDADD) - getpgrp_DEPENDENCIES = libtests.a -+getpgrp__pidns_translation_SOURCES = getpgrp--pidns-translation.c -+getpgrp__pidns_translation_OBJECTS = \ -+ getpgrp--pidns-translation.$(OBJEXT) -+getpgrp__pidns_translation_LDADD = $(LDADD) -+getpgrp__pidns_translation_DEPENDENCIES = libtests.a - getpid_SOURCES = getpid.c - getpid_OBJECTS = getpid.$(OBJEXT) - getpid_LDADD = $(LDADD) - getpid_DEPENDENCIES = libtests.a -+getpid__pidns_translation_SOURCES = getpid--pidns-translation.c -+getpid__pidns_translation_OBJECTS = \ -+ getpid--pidns-translation.$(OBJEXT) -+getpid__pidns_translation_LDADD = $(LDADD) -+getpid__pidns_translation_DEPENDENCIES = libtests.a - getppid_SOURCES = getppid.c - getppid_OBJECTS = getppid.$(OBJEXT) - getppid_LDADD = $(LDADD) -@@ -1220,6 +1276,11 @@ - getsid_OBJECTS = getsid.$(OBJEXT) - getsid_LDADD = $(LDADD) - getsid_DEPENDENCIES = libtests.a -+getsid__pidns_translation_SOURCES = getsid--pidns-translation.c -+getsid__pidns_translation_OBJECTS = \ -+ getsid--pidns-translation.$(OBJEXT) -+getsid__pidns_translation_LDADD = $(LDADD) -+getsid__pidns_translation_DEPENDENCIES = libtests.a - getsockname_SOURCES = getsockname.c - getsockname_OBJECTS = getsockname.$(OBJEXT) - getsockname_LDADD = $(LDADD) -@@ -1228,6 +1289,11 @@ - gettid_OBJECTS = gettid.$(OBJEXT) - gettid_LDADD = $(LDADD) - gettid_DEPENDENCIES = libtests.a -+gettid__pidns_translation_SOURCES = gettid--pidns-translation.c -+gettid__pidns_translation_OBJECTS = \ -+ gettid--pidns-translation.$(OBJEXT) -+gettid__pidns_translation_LDADD = $(LDADD) -+gettid__pidns_translation_DEPENDENCIES = libtests.a - getuid_SOURCES = getuid.c - getuid_OBJECTS = getuid.$(OBJEXT) - getuid_LDADD = $(LDADD) -@@ -1308,6 +1374,12 @@ - ioctl_block_OBJECTS = ioctl_block.$(OBJEXT) - ioctl_block_LDADD = $(LDADD) - ioctl_block_DEPENDENCIES = libtests.a -+ioctl_block__pidns_translation_SOURCES = \ -+ ioctl_block--pidns-translation.c -+ioctl_block__pidns_translation_OBJECTS = \ -+ ioctl_block--pidns-translation.$(OBJEXT) -+ioctl_block__pidns_translation_LDADD = $(LDADD) -+ioctl_block__pidns_translation_DEPENDENCIES = libtests.a - ioctl_dm_SOURCES = ioctl_dm.c - ioctl_dm_OBJECTS = ioctl_dm.$(OBJEXT) - ioctl_dm_LDADD = $(LDADD) -@@ -1628,6 +1700,11 @@ - ioprio_OBJECTS = ioprio.$(OBJEXT) - ioprio_LDADD = $(LDADD) - ioprio_DEPENDENCIES = libtests.a -+ioprio__pidns_translation_SOURCES = ioprio--pidns-translation.c -+ioprio__pidns_translation_OBJECTS = \ -+ ioprio--pidns-translation.$(OBJEXT) -+ioprio__pidns_translation_LDADD = $(LDADD) -+ioprio__pidns_translation_DEPENDENCIES = libtests.a - ioprio_Xabbrev_SOURCES = ioprio-Xabbrev.c - ioprio_Xabbrev_OBJECTS = ioprio-Xabbrev.$(OBJEXT) - ioprio_Xabbrev_LDADD = $(LDADD) -@@ -1724,6 +1801,11 @@ - kcmp_y_OBJECTS = kcmp-y.$(OBJEXT) - kcmp_y_LDADD = $(LDADD) - kcmp_y_DEPENDENCIES = libtests.a -+kcmp_y__pidns_translation_SOURCES = kcmp-y--pidns-translation.c -+kcmp_y__pidns_translation_OBJECTS = \ -+ kcmp-y--pidns-translation.$(OBJEXT) -+kcmp_y__pidns_translation_LDADD = $(LDADD) -+kcmp_y__pidns_translation_DEPENDENCIES = libtests.a - kern_features_SOURCES = kern_features.c - kern_features_OBJECTS = kern_features.$(OBJEXT) - kern_features_LDADD = $(LDADD) -@@ -1772,6 +1854,10 @@ - kill_OBJECTS = kill.$(OBJEXT) - kill_LDADD = $(LDADD) - kill_DEPENDENCIES = libtests.a -+kill__pidns_translation_SOURCES = kill--pidns-translation.c -+kill__pidns_translation_OBJECTS = kill--pidns-translation.$(OBJEXT) -+kill__pidns_translation_LDADD = $(LDADD) -+kill__pidns_translation_DEPENDENCIES = libtests.a - kill_child_SOURCES = kill_child.c - kill_child_OBJECTS = kill_child.$(OBJEXT) - kill_child_LDADD = $(LDADD) -@@ -1878,6 +1964,12 @@ - migrate_pages_OBJECTS = migrate_pages.$(OBJEXT) - migrate_pages_LDADD = $(LDADD) - migrate_pages_DEPENDENCIES = libtests.a -+migrate_pages__pidns_translation_SOURCES = \ -+ migrate_pages--pidns-translation.c -+migrate_pages__pidns_translation_OBJECTS = \ -+ migrate_pages--pidns-translation.$(OBJEXT) -+migrate_pages__pidns_translation_LDADD = $(LDADD) -+migrate_pages__pidns_translation_DEPENDENCIES = libtests.a - mincore_SOURCES = mincore.c - mincore_OBJECTS = mincore.$(OBJEXT) - mincore_LDADD = $(LDADD) -@@ -1990,6 +2082,12 @@ - move_pages_OBJECTS = move_pages.$(OBJEXT) - move_pages_LDADD = $(LDADD) - move_pages_DEPENDENCIES = libtests.a -+move_pages__pidns_translation_SOURCES = \ -+ move_pages--pidns-translation.c -+move_pages__pidns_translation_OBJECTS = \ -+ move_pages--pidns-translation.$(OBJEXT) -+move_pages__pidns_translation_LDADD = $(LDADD) -+move_pages__pidns_translation_DEPENDENCIES = libtests.a - move_pages_Xabbrev_SOURCES = move_pages-Xabbrev.c - move_pages_Xabbrev_OBJECTS = move_pages-Xabbrev.$(OBJEXT) - move_pages_Xabbrev_LDADD = $(LDADD) -@@ -2086,6 +2184,12 @@ - net_sockaddr_OBJECTS = net-sockaddr.$(OBJEXT) - net_sockaddr_LDADD = $(LDADD) - net_sockaddr_DEPENDENCIES = libtests.a -+net_sockaddr__pidns_translation_SOURCES = \ -+ net-sockaddr--pidns-translation.c -+net_sockaddr__pidns_translation_OBJECTS = \ -+ net-sockaddr--pidns-translation.$(OBJEXT) -+net_sockaddr__pidns_translation_LDADD = $(LDADD) -+net_sockaddr__pidns_translation_DEPENDENCIES = libtests.a - net_tpacket_req_SOURCES = net-tpacket_req.c - net_tpacket_req_OBJECTS = net-tpacket_req.$(OBJEXT) - net_tpacket_req_LDADD = $(LDADD) -@@ -2123,6 +2227,12 @@ - netlink_audit_OBJECTS = netlink_audit.$(OBJEXT) - netlink_audit_LDADD = $(LDADD) - netlink_audit_DEPENDENCIES = libtests.a -+netlink_audit__pidns_translation_SOURCES = \ -+ netlink_audit--pidns-translation.c -+netlink_audit__pidns_translation_OBJECTS = \ -+ netlink_audit--pidns-translation.$(OBJEXT) -+netlink_audit__pidns_translation_LDADD = $(LDADD) -+netlink_audit__pidns_translation_DEPENDENCIES = libtests.a - netlink_crypto_SOURCES = netlink_crypto.c - netlink_crypto_OBJECTS = netlink_crypto.$(OBJEXT) - netlink_crypto_LDADD = $(LDADD) -@@ -2543,6 +2653,12 @@ - pidfd_open--decode-fd-socket.$(OBJEXT) - pidfd_open__decode_fd_socket_LDADD = $(LDADD) - pidfd_open__decode_fd_socket_DEPENDENCIES = libtests.a -+pidfd_open__pidns_translation_SOURCES = \ -+ pidfd_open--pidns-translation.c -+pidfd_open__pidns_translation_OBJECTS = \ -+ pidfd_open--pidns-translation.$(OBJEXT) -+pidfd_open__pidns_translation_LDADD = $(LDADD) -+pidfd_open__pidns_translation_DEPENDENCIES = libtests.a - pidfd_open_P_SOURCES = pidfd_open-P.c - pidfd_open_P_OBJECTS = pidfd_open-P.$(OBJEXT) - pidfd_open_P_LDADD = $(LDADD) -@@ -2559,6 +2675,16 @@ - pidfd_send_signal_OBJECTS = pidfd_send_signal.$(OBJEXT) - pidfd_send_signal_LDADD = $(LDADD) - pidfd_send_signal_DEPENDENCIES = libtests.a -+pidfd_send_signal__pidns_translation_SOURCES = \ -+ pidfd_send_signal--pidns-translation.c -+pidfd_send_signal__pidns_translation_OBJECTS = \ -+ pidfd_send_signal--pidns-translation.$(OBJEXT) -+pidfd_send_signal__pidns_translation_LDADD = $(LDADD) -+pidfd_send_signal__pidns_translation_DEPENDENCIES = libtests.a -+pidns_cache_SOURCES = pidns-cache.c -+pidns_cache_OBJECTS = pidns-cache.$(OBJEXT) -+pidns_cache_LDADD = $(LDADD) -+pidns_cache_DEPENDENCIES = libtests.a - pipe_SOURCES = pipe.c - pipe_OBJECTS = pipe.$(OBJEXT) - pipe_LDADD = $(LDADD) -@@ -2717,14 +2843,31 @@ - prlimit64_OBJECTS = prlimit64.$(OBJEXT) - prlimit64_LDADD = $(LDADD) - prlimit64_DEPENDENCIES = libtests.a -+prlimit64__pidns_translation_SOURCES = prlimit64--pidns-translation.c -+prlimit64__pidns_translation_OBJECTS = \ -+ prlimit64--pidns-translation.$(OBJEXT) -+prlimit64__pidns_translation_LDADD = $(LDADD) -+prlimit64__pidns_translation_DEPENDENCIES = libtests.a - process_vm_readv_SOURCES = process_vm_readv.c - process_vm_readv_OBJECTS = process_vm_readv.$(OBJEXT) - process_vm_readv_LDADD = $(LDADD) - process_vm_readv_DEPENDENCIES = libtests.a -+process_vm_readv__pidns_translation_SOURCES = \ -+ process_vm_readv--pidns-translation.c -+process_vm_readv__pidns_translation_OBJECTS = \ -+ process_vm_readv--pidns-translation.$(OBJEXT) -+process_vm_readv__pidns_translation_LDADD = $(LDADD) -+process_vm_readv__pidns_translation_DEPENDENCIES = libtests.a - process_vm_writev_SOURCES = process_vm_writev.c - process_vm_writev_OBJECTS = process_vm_writev.$(OBJEXT) - process_vm_writev_LDADD = $(LDADD) - process_vm_writev_DEPENDENCIES = libtests.a -+process_vm_writev__pidns_translation_SOURCES = \ -+ process_vm_writev--pidns-translation.c -+process_vm_writev__pidns_translation_OBJECTS = \ -+ process_vm_writev--pidns-translation.$(OBJEXT) -+process_vm_writev__pidns_translation_LDADD = $(LDADD) -+process_vm_writev__pidns_translation_DEPENDENCIES = libtests.a - pselect6_SOURCES = pselect6.c - pselect6_OBJECTS = pselect6.$(OBJEXT) - pselect6_LDADD = $(LDADD) -@@ -2918,6 +3061,12 @@ - rt_sigqueueinfo_OBJECTS = rt_sigqueueinfo.$(OBJEXT) - rt_sigqueueinfo_LDADD = $(LDADD) - rt_sigqueueinfo_DEPENDENCIES = libtests.a -+rt_sigqueueinfo__pidns_translation_SOURCES = \ -+ rt_sigqueueinfo--pidns-translation.c -+rt_sigqueueinfo__pidns_translation_OBJECTS = \ -+ rt_sigqueueinfo--pidns-translation.$(OBJEXT) -+rt_sigqueueinfo__pidns_translation_LDADD = $(LDADD) -+rt_sigqueueinfo__pidns_translation_DEPENDENCIES = libtests.a - rt_sigreturn_SOURCES = rt_sigreturn.c - rt_sigreturn_OBJECTS = rt_sigreturn.$(OBJEXT) - rt_sigreturn_LDADD = $(LDADD) -@@ -2934,6 +3083,12 @@ - rt_tgsigqueueinfo_OBJECTS = rt_tgsigqueueinfo.$(OBJEXT) - rt_tgsigqueueinfo_LDADD = $(LDADD) - rt_tgsigqueueinfo_DEPENDENCIES = libtests.a -+rt_tgsigqueueinfo__pidns_translation_SOURCES = \ -+ rt_tgsigqueueinfo--pidns-translation.c -+rt_tgsigqueueinfo__pidns_translation_OBJECTS = \ -+ rt_tgsigqueueinfo--pidns-translation.$(OBJEXT) -+rt_tgsigqueueinfo__pidns_translation_LDADD = $(LDADD) -+rt_tgsigqueueinfo__pidns_translation_DEPENDENCIES = libtests.a - run_expect_termsig_SOURCES = run_expect_termsig.c - run_expect_termsig_OBJECTS = run_expect_termsig.$(OBJEXT) - run_expect_termsig_LDADD = $(LDADD) -@@ -2974,18 +3129,42 @@ - sched_xetaffinity_OBJECTS = sched_xetaffinity.$(OBJEXT) - sched_xetaffinity_LDADD = $(LDADD) - sched_xetaffinity_DEPENDENCIES = libtests.a -+sched_xetaffinity__pidns_translation_SOURCES = \ -+ sched_xetaffinity--pidns-translation.c -+sched_xetaffinity__pidns_translation_OBJECTS = \ -+ sched_xetaffinity--pidns-translation.$(OBJEXT) -+sched_xetaffinity__pidns_translation_LDADD = $(LDADD) -+sched_xetaffinity__pidns_translation_DEPENDENCIES = libtests.a - sched_xetattr_SOURCES = sched_xetattr.c - sched_xetattr_OBJECTS = sched_xetattr.$(OBJEXT) - sched_xetattr_LDADD = $(LDADD) - sched_xetattr_DEPENDENCIES = libtests.a -+sched_xetattr__pidns_translation_SOURCES = \ -+ sched_xetattr--pidns-translation.c -+sched_xetattr__pidns_translation_OBJECTS = \ -+ sched_xetattr--pidns-translation.$(OBJEXT) -+sched_xetattr__pidns_translation_LDADD = $(LDADD) -+sched_xetattr__pidns_translation_DEPENDENCIES = libtests.a - sched_xetparam_SOURCES = sched_xetparam.c - sched_xetparam_OBJECTS = sched_xetparam.$(OBJEXT) - sched_xetparam_LDADD = $(LDADD) - sched_xetparam_DEPENDENCIES = libtests.a -+sched_xetparam__pidns_translation_SOURCES = \ -+ sched_xetparam--pidns-translation.c -+sched_xetparam__pidns_translation_OBJECTS = \ -+ sched_xetparam--pidns-translation.$(OBJEXT) -+sched_xetparam__pidns_translation_LDADD = $(LDADD) -+sched_xetparam__pidns_translation_DEPENDENCIES = libtests.a - sched_xetscheduler_SOURCES = sched_xetscheduler.c - sched_xetscheduler_OBJECTS = sched_xetscheduler.$(OBJEXT) - sched_xetscheduler_LDADD = $(LDADD) - sched_xetscheduler_DEPENDENCIES = libtests.a -+sched_xetscheduler__pidns_translation_SOURCES = \ -+ sched_xetscheduler--pidns-translation.c -+sched_xetscheduler__pidns_translation_OBJECTS = \ -+ sched_xetscheduler--pidns-translation.$(OBJEXT) -+sched_xetscheduler__pidns_translation_LDADD = $(LDADD) -+sched_xetscheduler__pidns_translation_DEPENDENCIES = libtests.a - sched_yield_SOURCES = sched_yield.c - sched_yield_OBJECTS = sched_yield.$(OBJEXT) - sched_yield_LDADD = $(LDADD) -@@ -3198,6 +3377,12 @@ - signal_receive_OBJECTS = signal_receive.$(OBJEXT) - signal_receive_LDADD = $(LDADD) - signal_receive_DEPENDENCIES = libtests.a -+signal_receive__pidns_translation_SOURCES = \ -+ signal_receive--pidns-translation.c -+signal_receive__pidns_translation_OBJECTS = \ -+ signal_receive--pidns-translation.$(OBJEXT) -+signal_receive__pidns_translation_LDADD = $(LDADD) -+signal_receive__pidns_translation_DEPENDENCIES = libtests.a - signalfd4_SOURCES = signalfd4.c - signalfd4_OBJECTS = signalfd4.$(OBJEXT) - signalfd4_LDADD = $(LDADD) -@@ -3234,6 +3419,12 @@ - so_peercred_OBJECTS = so_peercred.$(OBJEXT) - so_peercred_LDADD = $(LDADD) - so_peercred_DEPENDENCIES = libtests.a -+so_peercred__pidns_translation_SOURCES = \ -+ so_peercred--pidns-translation.c -+so_peercred__pidns_translation_OBJECTS = \ -+ so_peercred--pidns-translation.$(OBJEXT) -+so_peercred__pidns_translation_LDADD = $(LDADD) -+so_peercred__pidns_translation_DEPENDENCIES = libtests.a - so_peercred_Xabbrev_SOURCES = so_peercred-Xabbrev.c - so_peercred_Xabbrev_OBJECTS = so_peercred-Xabbrev.$(OBJEXT) - so_peercred_Xabbrev_LDADD = $(LDADD) -@@ -3448,6 +3639,11 @@ - tgkill_OBJECTS = tgkill.$(OBJEXT) - tgkill_LDADD = $(LDADD) - tgkill_DEPENDENCIES = libtests.a -+tgkill__pidns_translation_SOURCES = tgkill--pidns-translation.c -+tgkill__pidns_translation_OBJECTS = \ -+ tgkill--pidns-translation.$(OBJEXT) -+tgkill__pidns_translation_LDADD = $(LDADD) -+tgkill__pidns_translation_DEPENDENCIES = libtests.a - threads_execve_SOURCES = threads-execve.c - threads_execve_OBJECTS = threads-execve.$(OBJEXT) - threads_execve_DEPENDENCIES = $(am__DEPENDENCIES_1) $(LDADD) -@@ -3493,10 +3689,20 @@ - tkill_OBJECTS = tkill.$(OBJEXT) - tkill_LDADD = $(LDADD) - tkill_DEPENDENCIES = libtests.a -+tkill__pidns_translation_SOURCES = tkill--pidns-translation.c -+tkill__pidns_translation_OBJECTS = tkill--pidns-translation.$(OBJEXT) -+tkill__pidns_translation_LDADD = $(LDADD) -+tkill__pidns_translation_DEPENDENCIES = libtests.a - tracer_ppid_pgid_sid_SOURCES = tracer_ppid_pgid_sid.c - tracer_ppid_pgid_sid_OBJECTS = tracer_ppid_pgid_sid.$(OBJEXT) - tracer_ppid_pgid_sid_LDADD = $(LDADD) - tracer_ppid_pgid_sid_DEPENDENCIES = libtests.a -+am_trie_test_OBJECTS = trie_test-trie_test.$(OBJEXT) \ -+ trie_test-trie_for_tests.$(OBJEXT) -+trie_test_OBJECTS = $(am_trie_test_OBJECTS) -+trie_test_DEPENDENCIES = $(LDADD) $(am__DEPENDENCIES_1) -+trie_test_LINK = $(CCLD) $(trie_test_CFLAGS) $(CFLAGS) $(AM_LDFLAGS) \ -+ $(LDFLAGS) -o $@ - truncate_SOURCES = truncate.c - truncate_OBJECTS = truncate.$(OBJEXT) - truncate_LDADD = $(LDADD) -@@ -3658,6 +3864,12 @@ - xet_robust_list_OBJECTS = xet_robust_list.$(OBJEXT) - xet_robust_list_LDADD = $(LDADD) - xet_robust_list_DEPENDENCIES = libtests.a -+xet_robust_list__pidns_translation_SOURCES = \ -+ xet_robust_list--pidns-translation.c -+xet_robust_list__pidns_translation_OBJECTS = \ -+ xet_robust_list--pidns-translation.$(OBJEXT) -+xet_robust_list__pidns_translation_LDADD = $(LDADD) -+xet_robust_list__pidns_translation_DEPENDENCIES = libtests.a - xet_thread_area_x86_SOURCES = xet_thread_area_x86.c - xet_thread_area_x86_OBJECTS = xet_thread_area_x86.$(OBJEXT) - xet_thread_area_x86_LDADD = $(LDADD) -@@ -3670,10 +3882,21 @@ - xetpgid_OBJECTS = xetpgid.$(OBJEXT) - xetpgid_LDADD = $(LDADD) - xetpgid_DEPENDENCIES = libtests.a -+xetpgid__pidns_translation_SOURCES = xetpgid--pidns-translation.c -+xetpgid__pidns_translation_OBJECTS = \ -+ xetpgid--pidns-translation.$(OBJEXT) -+xetpgid__pidns_translation_LDADD = $(LDADD) -+xetpgid__pidns_translation_DEPENDENCIES = libtests.a - xetpriority_SOURCES = xetpriority.c - xetpriority_OBJECTS = xetpriority.$(OBJEXT) - xetpriority_LDADD = $(LDADD) - xetpriority_DEPENDENCIES = libtests.a -+xetpriority__pidns_translation_SOURCES = \ -+ xetpriority--pidns-translation.c -+xetpriority__pidns_translation_OBJECTS = \ -+ xetpriority--pidns-translation.$(OBJEXT) -+xetpriority__pidns_translation_LDADD = $(LDADD) -+xetpriority__pidns_translation_DEPENDENCIES = libtests.a - xettimeofday_SOURCES = xettimeofday.c - xettimeofday_OBJECTS = xettimeofday.$(OBJEXT) - xettimeofday_LDADD = $(LDADD) -@@ -3759,13 +3982,15 @@ - ./$(DEPDIR)/fanotify_mark.Po ./$(DEPDIR)/fchdir.Po \ - ./$(DEPDIR)/fchmod.Po ./$(DEPDIR)/fchmodat.Po \ - ./$(DEPDIR)/fchown.Po ./$(DEPDIR)/fchown32.Po \ -- ./$(DEPDIR)/fchownat.Po ./$(DEPDIR)/fcntl.Po \ -- ./$(DEPDIR)/fcntl64.Po ./$(DEPDIR)/fdatasync.Po \ -+ ./$(DEPDIR)/fchownat.Po \ -+ ./$(DEPDIR)/fcntl--pidns-translation.Po ./$(DEPDIR)/fcntl.Po \ -+ ./$(DEPDIR)/fcntl64--pidns-translation.Po ./$(DEPDIR)/fcntl64.Po \ -+ ./$(DEPDIR)/fdatasync.Po \ - ./$(DEPDIR)/fflush.Po ./$(DEPDIR)/file_handle.Po \ - ./$(DEPDIR)/file_ioctl.Po ./$(DEPDIR)/filter-unavailable.Po \ - ./$(DEPDIR)/filter_seccomp-flag.Po \ - ./$(DEPDIR)/filter_seccomp-perf.Po ./$(DEPDIR)/finit_module.Po \ -- ./$(DEPDIR)/flock.Po ./$(DEPDIR)/fork-f.Po \ -+ ./$(DEPDIR)/flock.Po ./$(DEPDIR)/fork--pidns-translation.Po ./$(DEPDIR)/fork-f.Po \ - ./$(DEPDIR)/fsconfig-P.Po ./$(DEPDIR)/fsconfig.Po \ - ./$(DEPDIR)/fsmount.Po ./$(DEPDIR)/fsopen.Po \ - ./$(DEPDIR)/fspick-P.Po ./$(DEPDIR)/fspick.Po \ -@@ -3786,13 +4011,14 @@ - ./$(DEPDIR)/geteuid32.Po ./$(DEPDIR)/getgid.Po \ - ./$(DEPDIR)/getgid32.Po ./$(DEPDIR)/getgroups.Po \ - ./$(DEPDIR)/getgroups32.Po ./$(DEPDIR)/getpeername.Po \ -- ./$(DEPDIR)/getpgrp.Po ./$(DEPDIR)/getpid.Po \ -+ ./$(DEPDIR)/getpgrp--pidns-translation.Po ./$(DEPDIR)/getpgrp.Po \ -+ ./$(DEPDIR)/getpid--pidns-translation.Po ./$(DEPDIR)/getpid.Po \ - ./$(DEPDIR)/getppid.Po ./$(DEPDIR)/getrandom.Po \ - ./$(DEPDIR)/getresgid.Po ./$(DEPDIR)/getresgid32.Po \ - ./$(DEPDIR)/getresuid.Po ./$(DEPDIR)/getresuid32.Po \ - ./$(DEPDIR)/getrlimit.Po ./$(DEPDIR)/getrusage.Po \ -- ./$(DEPDIR)/getsid.Po ./$(DEPDIR)/getsockname.Po \ -- ./$(DEPDIR)/gettid.Po ./$(DEPDIR)/getuid.Po \ -+ ./$(DEPDIR)/getsid--pidns-translation.Po ./$(DEPDIR)/getsid.Po ./$(DEPDIR)/getsockname.Po \ -+ ./$(DEPDIR)/gettid--pidns-translation.Po ./$(DEPDIR)/gettid.Po ./$(DEPDIR)/getuid.Po \ - ./$(DEPDIR)/getuid32.Po ./$(DEPDIR)/getxgid.Po \ - ./$(DEPDIR)/getxpid.Po ./$(DEPDIR)/getxuid.Po \ - ./$(DEPDIR)/group_req.Po ./$(DEPDIR)/inet-cmsg.Po \ -@@ -3802,7 +4028,7 @@ - ./$(DEPDIR)/inotify_init1.Po ./$(DEPDIR)/int_0x80.Po \ - ./$(DEPDIR)/io_uring_enter.Po ./$(DEPDIR)/io_uring_register.Po \ - ./$(DEPDIR)/io_uring_setup.Po ./$(DEPDIR)/ioctl.Po \ -- ./$(DEPDIR)/ioctl_block.Po ./$(DEPDIR)/ioctl_dm-v.Po \ -+ ./$(DEPDIR)/ioctl_block--pidns-translation.Po ./$(DEPDIR)/ioctl_block.Po ./$(DEPDIR)/ioctl_dm-v.Po \ - ./$(DEPDIR)/ioctl_dm.Po ./$(DEPDIR)/ioctl_evdev-Xabbrev.Po \ - ./$(DEPDIR)/ioctl_evdev-Xraw.Po \ - ./$(DEPDIR)/ioctl_evdev-Xverbose.Po \ -@@ -3861,7 +4087,7 @@ - ./$(DEPDIR)/ioctl_v4l2-v-Xverbose.Po \ - ./$(DEPDIR)/ioctl_v4l2-v.Po ./$(DEPDIR)/ioctl_v4l2.Po \ - ./$(DEPDIR)/ioctl_watchdog.Po ./$(DEPDIR)/ioperm.Po \ -- ./$(DEPDIR)/iopl.Po ./$(DEPDIR)/ioprio-Xabbrev.Po \ -+ ./$(DEPDIR)/iopl.Po ./$(DEPDIR)/ioprio--pidns-translation.Po ./$(DEPDIR)/ioprio-Xabbrev.Po \ - ./$(DEPDIR)/ioprio-Xraw.Po ./$(DEPDIR)/ioprio-Xverbose.Po \ - ./$(DEPDIR)/ioprio.Po ./$(DEPDIR)/ip_mreq.Po \ - ./$(DEPDIR)/ipc.Po ./$(DEPDIR)/ipc_msg-Xabbrev.Po \ -@@ -3873,15 +4099,15 @@ - ./$(DEPDIR)/ipc_sem-Xverbose.Po ./$(DEPDIR)/ipc_sem.Po \ - ./$(DEPDIR)/ipc_shm-Xabbrev.Po ./$(DEPDIR)/ipc_shm-Xraw.Po \ - ./$(DEPDIR)/ipc_shm-Xverbose.Po ./$(DEPDIR)/ipc_shm.Po \ -- ./$(DEPDIR)/is_linux_mips_n64.Po ./$(DEPDIR)/kcmp-y.Po \ -- ./$(DEPDIR)/kcmp.Po ./$(DEPDIR)/kern_features.Po \ -+ ./$(DEPDIR)/is_linux_mips_n64.Po ./$(DEPDIR)/kcmp-y--pidns-translation.Po \ -+ ./$(DEPDIR)/kcmp-y.Po ./$(DEPDIR)/kcmp.Po ./$(DEPDIR)/kern_features.Po \ - ./$(DEPDIR)/kernel_version-Xabbrev.Po \ - ./$(DEPDIR)/kernel_version-Xraw.Po \ - ./$(DEPDIR)/kernel_version-Xverbose.Po \ - ./$(DEPDIR)/kernel_version.Po ./$(DEPDIR)/kexec_file_load.Po \ - ./$(DEPDIR)/kexec_load.Po ./$(DEPDIR)/keyctl-Xabbrev.Po \ - ./$(DEPDIR)/keyctl-Xraw.Po ./$(DEPDIR)/keyctl-Xverbose.Po \ -- ./$(DEPDIR)/keyctl.Po ./$(DEPDIR)/kill.Po \ -+ ./$(DEPDIR)/keyctl.Po ./$(DEPDIR)/kill--pidns-translation.Po ./$(DEPDIR)/kill.Po \ - ./$(DEPDIR)/kill_child.Po ./$(DEPDIR)/ksysent.Po \ - ./$(DEPDIR)/lchown.Po ./$(DEPDIR)/lchown32.Po \ - ./$(DEPDIR)/libtests_a-create_nl_socket.Po \ -@@ -3915,7 +4141,8 @@ - ./$(DEPDIR)/libtests_a-test_printpath.Po \ - ./$(DEPDIR)/libtests_a-test_printstrn.Po \ - ./$(DEPDIR)/libtests_a-test_ucopy.Po \ -- ./$(DEPDIR)/libtests_a-tprintf.Po ./$(DEPDIR)/link.Po \ -+ ./$(DEPDIR)/libtests_a-tprintf.Po \ -+ ./$(DEPDIR)/libtests_a-xmalloc_for_tests.Po ./$(DEPDIR)/link.Po \ - ./$(DEPDIR)/linkat.Po ./$(DEPDIR)/list_sigaction_signum.Po \ - ./$(DEPDIR)/llseek.Po ./$(DEPDIR)/localtime.Po \ - ./$(DEPDIR)/lookup_dcookie.Po ./$(DEPDIR)/looping_threads.Po \ -@@ -3928,7 +4155,9 @@ - ./$(DEPDIR)/membarrier.Po ./$(DEPDIR)/memfd_create-Xabbrev.Po \ - ./$(DEPDIR)/memfd_create-Xraw.Po \ - ./$(DEPDIR)/memfd_create-Xverbose.Po \ -- ./$(DEPDIR)/memfd_create.Po ./$(DEPDIR)/migrate_pages.Po \ -+ ./$(DEPDIR)/memfd_create.Po \ -+ ./$(DEPDIR)/migrate_pages--pidns-translation.Po \ -+ ./$(DEPDIR)/migrate_pages.Po \ - ./$(DEPDIR)/mincore.Po ./$(DEPDIR)/mkdir.Po \ - ./$(DEPDIR)/mkdirat.Po ./$(DEPDIR)/mknod.Po \ - ./$(DEPDIR)/mknodat.Po ./$(DEPDIR)/mlock.Po \ -@@ -3944,7 +4173,7 @@ - ./$(DEPDIR)/modify_ldt.Po ./$(DEPDIR)/mount-Xabbrev.Po \ - ./$(DEPDIR)/mount-Xraw.Po ./$(DEPDIR)/mount-Xverbose.Po \ - ./$(DEPDIR)/mount.Po ./$(DEPDIR)/move_mount-P.Po \ -- ./$(DEPDIR)/move_mount.Po ./$(DEPDIR)/move_pages-Xabbrev.Po \ -+ ./$(DEPDIR)/move_mount.Po ./$(DEPDIR)/move_pages--pidns-translation.Po ./$(DEPDIR)/move_pages-Xabbrev.Po \ - ./$(DEPDIR)/move_pages-Xraw.Po \ - ./$(DEPDIR)/move_pages-Xverbose.Po ./$(DEPDIR)/move_pages.Po \ - ./$(DEPDIR)/mq.Po ./$(DEPDIR)/mq_sendrecv-read.Po \ -@@ -3961,12 +4190,13 @@ - ./$(DEPDIR)/net-packet_mreq-Xabbrev.Po \ - ./$(DEPDIR)/net-packet_mreq-Xraw.Po \ - ./$(DEPDIR)/net-packet_mreq-Xverbose.Po \ -- ./$(DEPDIR)/net-packet_mreq.Po ./$(DEPDIR)/net-sockaddr.Po \ -+ ./$(DEPDIR)/net-packet_mreq.Po ./$(DEPDIR)/net-sockaddr--pidns-translation.Po ./$(DEPDIR)/net-sockaddr.Po \ - ./$(DEPDIR)/net-tpacket_req.Po \ - ./$(DEPDIR)/net-tpacket_stats-success.Po \ - ./$(DEPDIR)/net-tpacket_stats.Po ./$(DEPDIR)/net-y-unix.Po \ - ./$(DEPDIR)/net-yy-inet.Po ./$(DEPDIR)/net-yy-inet6.Po \ - ./$(DEPDIR)/net-yy-netlink.Po ./$(DEPDIR)/net-yy-unix.Po \ -+ ./$(DEPDIR)/netlink_audit--pidns-translation.Po \ - ./$(DEPDIR)/netlink_audit.Po ./$(DEPDIR)/netlink_crypto.Po \ - ./$(DEPDIR)/netlink_generic.Po \ - ./$(DEPDIR)/netlink_inet_diag.Po \ -@@ -4043,9 +4273,11 @@ - ./$(DEPDIR)/pidfd_open--decode-fd-path.Po \ - ./$(DEPDIR)/pidfd_open--decode-fd-pidfd.Po \ - ./$(DEPDIR)/pidfd_open--decode-fd-socket.Po \ -+ ./$(DEPDIR)/pidfd_open--pidns-translation.Po \ - ./$(DEPDIR)/pidfd_open-P.Po ./$(DEPDIR)/pidfd_open-y.Po \ - ./$(DEPDIR)/pidfd_open-yy.Po ./$(DEPDIR)/pidfd_open.Po \ -- ./$(DEPDIR)/pidfd_send_signal.Po ./$(DEPDIR)/pipe.Po \ -+ ./$(DEPDIR)/pidfd_send_signal--pidns-translation.Po \ -+ ./$(DEPDIR)/pidfd_send_signal.Po ./$(DEPDIR)/pidns-cache.Po ./$(DEPDIR)/pipe.Po \ - ./$(DEPDIR)/pipe2.Po ./$(DEPDIR)/pkey_alloc.Po \ - ./$(DEPDIR)/pkey_free.Po ./$(DEPDIR)/pkey_mprotect.Po \ - ./$(DEPDIR)/poll-P.Po ./$(DEPDIR)/poll.Po \ -@@ -4070,8 +4302,10 @@ - ./$(DEPDIR)/printsignal-Xverbose.Po ./$(DEPDIR)/printstr.Po \ - ./$(DEPDIR)/printstrn-umoven-peekdata.Po \ - ./$(DEPDIR)/printstrn-umoven-undumpable.Po \ -- ./$(DEPDIR)/printstrn-umoven.Po ./$(DEPDIR)/prlimit64.Po \ -+ ./$(DEPDIR)/printstrn-umoven.Po ./$(DEPDIR)/prlimit64--pidns-translation.Po ./$(DEPDIR)/prlimit64.Po \ -+ ./$(DEPDIR)/process_vm_readv--pidns-translation.Po \ - ./$(DEPDIR)/process_vm_readv.Po \ -+ ./$(DEPDIR)/process_vm_writev--pidns-translation.Po \ - ./$(DEPDIR)/process_vm_writev.Po ./$(DEPDIR)/pselect6.Po \ - ./$(DEPDIR)/ptrace.Po ./$(DEPDIR)/ptrace_syscall_info.Po \ - ./$(DEPDIR)/pwritev-pwritev.Po ./$(DEPDIR)/qual_fault.Po \ -@@ -4101,9 +4335,10 @@ - ./$(DEPDIR)/request_key.Po ./$(DEPDIR)/restart_syscall.Po \ - ./$(DEPDIR)/riscv_flush_icache.Po ./$(DEPDIR)/rmdir.Po \ - ./$(DEPDIR)/rt_sigaction.Po ./$(DEPDIR)/rt_sigpending.Po \ -- ./$(DEPDIR)/rt_sigprocmask.Po ./$(DEPDIR)/rt_sigqueueinfo.Po \ -+ ./$(DEPDIR)/rt_sigprocmask.Po ./$(DEPDIR)/rt_sigqueueinfo--pidns-translation.Po ./$(DEPDIR)/rt_sigqueueinfo.Po \ - ./$(DEPDIR)/rt_sigreturn.Po ./$(DEPDIR)/rt_sigsuspend.Po \ - ./$(DEPDIR)/rt_sigtimedwait.Po \ -+ ./$(DEPDIR)/rt_tgsigqueueinfo--pidns-translation.Po \ - ./$(DEPDIR)/rt_tgsigqueueinfo.Po \ - ./$(DEPDIR)/run_expect_termsig.Po \ - ./$(DEPDIR)/s390_guarded_storage-v.Po \ -@@ -4113,9 +4348,15 @@ - ./$(DEPDIR)/s390_sthyi.Po \ - ./$(DEPDIR)/sched_get_priority_mxx.Po \ - ./$(DEPDIR)/sched_rr_get_interval.Po \ -- ./$(DEPDIR)/sched_xetaffinity.Po ./$(DEPDIR)/sched_xetattr.Po \ -+ ./$(DEPDIR)/sched_xetaffinity--pidns-translation.Po \ -+ ./$(DEPDIR)/sched_xetaffinity.Po \ -+ ./$(DEPDIR)/sched_xetattr--pidns-translation.Po \ -+ ./$(DEPDIR)/sched_xetattr.Po \ -+ ./$(DEPDIR)/sched_xetparam--pidns-translation.Po \ - ./$(DEPDIR)/sched_xetparam.Po \ -- ./$(DEPDIR)/sched_xetscheduler.Po ./$(DEPDIR)/sched_yield.Po \ -+ ./$(DEPDIR)/sched_xetscheduler--pidns-translation.Po \ -+ ./$(DEPDIR)/sched_xetscheduler.Po \ -+ ./$(DEPDIR)/sched_yield.Po \ - ./$(DEPDIR)/scm_rights.Po ./$(DEPDIR)/seccomp-filter-v.Po \ - ./$(DEPDIR)/seccomp-filter.Po ./$(DEPDIR)/seccomp-strict.Po \ - ./$(DEPDIR)/seccomp_get_action_avail.Po \ -@@ -4143,11 +4384,12 @@ - ./$(DEPDIR)/shmxt.Po ./$(DEPDIR)/shutdown.Po \ - ./$(DEPDIR)/sigaction.Po ./$(DEPDIR)/sigaltstack.Po \ - ./$(DEPDIR)/siginfo.Po ./$(DEPDIR)/signal.Po \ -- ./$(DEPDIR)/signal_receive.Po ./$(DEPDIR)/signalfd4.Po \ -+ ./$(DEPDIR)/signal_receive--pidns-translation.Po ./$(DEPDIR)/signal_receive.Po ./$(DEPDIR)/signalfd4.Po \ - ./$(DEPDIR)/sigpending.Po ./$(DEPDIR)/sigprocmask.Po \ - ./$(DEPDIR)/sigreturn.Po ./$(DEPDIR)/sigsuspend.Po \ - ./$(DEPDIR)/sleep.Po ./$(DEPDIR)/so_error.Po \ -- ./$(DEPDIR)/so_linger.Po ./$(DEPDIR)/so_peercred-Xabbrev.Po \ -+ ./$(DEPDIR)/so_linger.Po ./$(DEPDIR)/so_peercred--pidns-translation.Po \ -+ ./$(DEPDIR)/so_peercred-Xabbrev.Po \ - ./$(DEPDIR)/so_peercred-Xraw.Po \ - ./$(DEPDIR)/so_peercred-Xverbose.Po ./$(DEPDIR)/so_peercred.Po \ - ./$(DEPDIR)/sock_filter-v-Xabbrev.Po \ -@@ -4186,7 +4428,7 @@ - ./$(DEPDIR)/symlinkat.Po ./$(DEPDIR)/sync.Po \ - ./$(DEPDIR)/sync_file_range.Po ./$(DEPDIR)/sync_file_range2.Po \ - ./$(DEPDIR)/sysinfo.Po ./$(DEPDIR)/syslog-success.Po \ -- ./$(DEPDIR)/syslog.Po ./$(DEPDIR)/tee.Po ./$(DEPDIR)/tgkill.Po \ -+ ./$(DEPDIR)/syslog.Po ./$(DEPDIR)/tee.Po ./$(DEPDIR)/tgkill--pidns-translation.Po ./$(DEPDIR)/tgkill.Po \ - ./$(DEPDIR)/threads-execve--quiet-thread-execve.Po \ - ./$(DEPDIR)/threads-execve-q.Po \ - ./$(DEPDIR)/threads-execve-qq.Po \ -@@ -4194,7 +4436,8 @@ - ./$(DEPDIR)/threads-execve.Po ./$(DEPDIR)/time.Po \ - ./$(DEPDIR)/timer_create.Po ./$(DEPDIR)/timer_xettime.Po \ - ./$(DEPDIR)/timerfd_xettime.Po ./$(DEPDIR)/times-fail.Po \ -- ./$(DEPDIR)/times.Po ./$(DEPDIR)/tkill.Po ./$(DEPDIR)/tracer_ppid_pgid_sid.Po \ -+ ./$(DEPDIR)/times.Po ./$(DEPDIR)/tkill--pidns-translation.Po \ -+ ./$(DEPDIR)/tkill.Po ./$(DEPDIR)/tracer_ppid_pgid_sid.Po \ - ./$(DEPDIR)/truncate.Po ./$(DEPDIR)/truncate64-truncate64.Po \ - ./$(DEPDIR)/ugetrlimit.Po ./$(DEPDIR)/uio-uio.Po \ - ./$(DEPDIR)/umask.Po ./$(DEPDIR)/umount.Po \ -@@ -4216,9 +4459,11 @@ - ./$(DEPDIR)/wait4-v.Po ./$(DEPDIR)/wait4.Po \ - ./$(DEPDIR)/waitid-v.Po ./$(DEPDIR)/waitid.Po \ - ./$(DEPDIR)/waitpid.Po ./$(DEPDIR)/xattr-strings.Po \ -- ./$(DEPDIR)/xattr.Po ./$(DEPDIR)/xet_robust_list.Po \ -+ ./$(DEPDIR)/xattr.Po ./$(DEPDIR)/xet_robust_list--pidns-translation.Po \ -+ ./$(DEPDIR)/xet_robust_list.Po \ - ./$(DEPDIR)/xet_thread_area_x86.Po ./$(DEPDIR)/xetitimer.Po \ -- ./$(DEPDIR)/xetpgid.Po ./$(DEPDIR)/xetpriority.Po \ -+ ./$(DEPDIR)/xetpgid--pidns-translation.Po ./$(DEPDIR)/xetpgid.Po \ -+ ./$(DEPDIR)/xetpriority--pidns-translation.Po ./$(DEPDIR)/xetpriority.Po \ - ./$(DEPDIR)/xettimeofday.Po ./$(DEPDIR)/zeroargc.Po - am__mv = mv -f - AM_V_lt = $(am__v_lt_@AM_V@) -@@ -4264,26 +4509,30 @@ - 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 fcntl64.c fdatasync.c fflush.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-f.c fsconfig.c fsconfig-P.c fsmount.c fsopen.c \ -- fspick.c fspick-P.c fstat.c fstat-Xabbrev.c fstat-Xraw.c \ -- fstat-Xverbose.c fstat64.c fstat64-Xabbrev.c fstat64-Xraw.c \ -- fstat64-Xverbose.c fstatat64.c fstatfs.c fstatfs64.c fsync.c \ -- fsync-y.c ftruncate.c ftruncate64.c futex.c futimesat.c \ -- get_mempolicy.c get_process_reaper.c getcpu.c getcwd.c \ -- getdents.c getdents-v.c getdents64.c getdents64-v.c getegid.c \ -- getegid32.c geteuid.c geteuid32.c getgid.c getgid32.c \ -- getgroups.c getgroups32.c getpeername.c getpgrp.c getpid.c \ -- getppid.c getrandom.c getresgid.c getresgid32.c getresuid.c \ -- getresuid32.c getrlimit.c getrusage.c getsid.c getsockname.c \ -- gettid.c getuid.c getuid32.c getxgid.c getxpid.c getxuid.c \ -- group_req.c inet-cmsg.c init_module.c inject-nf.c inotify.c \ -- inotify_init.c inotify_init-y.c inotify_init1.c \ -- inotify_init1-y.c int_0x80.c io_uring_enter.c \ -- io_uring_register.c io_uring_setup.c ioctl.c ioctl_block.c \ -- ioctl_dm.c ioctl_dm-v.c ioctl_evdev.c ioctl_evdev-Xabbrev.c \ -+ flock.c fork--pidns-translation.c fork-f.c fsconfig.c \ -+ fsconfig-P.c fsmount.c fsopen.c fspick.c fspick-P.c fstat.c \ -+ fstat-Xabbrev.c fstat-Xraw.c fstat-Xverbose.c fstat64.c \ -+ fstat64-Xabbrev.c fstat64-Xraw.c fstat64-Xverbose.c \ -+ fstatat64.c fstatfs.c fstatfs64.c fsync.c fsync-y.c \ -+ ftruncate.c ftruncate64.c futex.c futimesat.c get_mempolicy.c \ -+ get_process_reaper.c getcpu.c getcwd.c getdents.c getdents-v.c \ -+ getdents64.c getdents64-v.c getegid.c getegid32.c geteuid.c \ -+ geteuid32.c getgid.c getgid32.c getgroups.c getgroups32.c \ -+ getpeername.c getpgrp.c getpgrp--pidns-translation.c getpid.c \ -+ getpid--pidns-translation.c getppid.c getrandom.c getresgid.c \ -+ getresgid32.c getresuid.c getresuid32.c getrlimit.c \ -+ getrusage.c getsid.c getsid--pidns-translation.c getsockname.c \ -+ gettid.c gettid--pidns-translation.c getuid.c getuid32.c \ -+ getxgid.c getxpid.c getxuid.c group_req.c inet-cmsg.c \ -+ init_module.c inject-nf.c inotify.c inotify_init.c \ -+ inotify_init-y.c inotify_init1.c inotify_init1-y.c int_0x80.c \ -+ io_uring_enter.c io_uring_register.c io_uring_setup.c ioctl.c \ -+ ioctl_block.c ioctl_block--pidns-translation.c ioctl_dm.c \ -+ ioctl_dm-v.c ioctl_evdev.c ioctl_evdev-Xabbrev.c \ - ioctl_evdev-Xraw.c ioctl_evdev-Xverbose.c \ - ioctl_evdev-success.c ioctl_evdev-success-Xabbrev.c \ - ioctl_evdev-success-Xraw.c ioctl_evdev-success-Xverbose.c \ -@@ -4311,47 +4560,51 @@ - ioctl_v4l2-success-v-Xverbose.c ioctl_v4l2-v.c \ - ioctl_v4l2-v-Xabbrev.c ioctl_v4l2-v-Xraw.c \ - ioctl_v4l2-v-Xverbose.c ioctl_watchdog.c ioperm.c iopl.c \ -- ioprio.c ioprio-Xabbrev.c ioprio-Xraw.c ioprio-Xverbose.c \ -- ip_mreq.c ipc.c ipc_msg.c ipc_msg-Xabbrev.c ipc_msg-Xraw.c \ -- ipc_msg-Xverbose.c ipc_msgbuf.c ipc_msgbuf-Xabbrev.c \ -- ipc_msgbuf-Xraw.c ipc_msgbuf-Xverbose.c ipc_sem.c \ -- ipc_sem-Xabbrev.c ipc_sem-Xraw.c ipc_sem-Xverbose.c ipc_shm.c \ -- ipc_shm-Xabbrev.c ipc_shm-Xraw.c ipc_shm-Xverbose.c \ -- is_linux_mips_n64.c kcmp.c kcmp-y.c kern_features.c \ -+ ioprio.c ioprio--pidns-translation.c ioprio-Xabbrev.c \ -+ ioprio-Xraw.c ioprio-Xverbose.c ip_mreq.c ipc.c ipc_msg.c \ -+ ipc_msg-Xabbrev.c ipc_msg-Xraw.c ipc_msg-Xverbose.c \ -+ ipc_msgbuf.c ipc_msgbuf-Xabbrev.c ipc_msgbuf-Xraw.c \ -+ ipc_msgbuf-Xverbose.c ipc_sem.c ipc_sem-Xabbrev.c \ -+ ipc_sem-Xraw.c ipc_sem-Xverbose.c ipc_shm.c ipc_shm-Xabbrev.c \ -+ ipc_shm-Xraw.c ipc_shm-Xverbose.c is_linux_mips_n64.c kcmp.c \ -+ kcmp-y.c kcmp-y--pidns-translation.c kern_features.c \ - kernel_version.c kernel_version-Xabbrev.c \ - kernel_version-Xraw.c kernel_version-Xverbose.c \ - kexec_file_load.c kexec_load.c keyctl.c keyctl-Xabbrev.c \ -- keyctl-Xraw.c keyctl-Xverbose.c kill.c kill_child.c ksysent.c \ -- lchown.c lchown32.c link.c linkat.c list_sigaction_signum.c \ -- llseek.c localtime.c lookup_dcookie.c looping_threads.c \ -- lseek.c lstat.c lstat64.c madvise.c maybe_switch_current_tcp.c \ -+ keyctl-Xraw.c keyctl-Xverbose.c kill.c \ -+ kill--pidns-translation.c kill_child.c ksysent.c lchown.c \ -+ lchown32.c link.c linkat.c list_sigaction_signum.c llseek.c \ -+ localtime.c lookup_dcookie.c looping_threads.c lseek.c lstat.c \ -+ lstat64.c madvise.c maybe_switch_current_tcp.c \ - maybe_switch_current_tcp--quiet-thread-execve.c mbind.c \ - mbind-Xabbrev.c mbind-Xraw.c mbind-Xverbose.c membarrier.c \ - memfd_create.c memfd_create-Xabbrev.c memfd_create-Xraw.c \ -- memfd_create-Xverbose.c migrate_pages.c mincore.c mkdir.c \ -- mkdirat.c mknod.c mknodat.c mlock.c mlock2.c mlockall.c mmap.c \ -+ memfd_create-Xverbose.c migrate_pages.c \ -+ migrate_pages--pidns-translation.c mincore.c mkdir.c mkdirat.c \ -+ mknod.c mknodat.c mlock.c mlock2.c mlockall.c mmap.c \ - mmap-Xabbrev.c mmap-Xraw.c mmap-Xverbose.c mmap64.c \ - mmap64-Xabbrev.c mmap64-Xraw.c mmap64-Xverbose.c mmsg.c \ - mmsg-silent.c mmsg_name.c mmsg_name-v.c modify_ldt.c mount.c \ - mount-Xabbrev.c mount-Xraw.c mount-Xverbose.c move_mount.c \ -- move_mount-P.c move_pages.c move_pages-Xabbrev.c \ -- move_pages-Xraw.c move_pages-Xverbose.c mq.c mq_sendrecv.c \ -- mq_sendrecv-read.c mq_sendrecv-write.c msg_control.c \ -- msg_control-v.c msg_name.c munlockall.c nanosleep.c \ -- net--decode-fds-dev-netlink.c net--decode-fds-none-netlink.c \ -- net--decode-fds-path-netlink.c \ -+ move_mount-P.c move_pages.c move_pages--pidns-translation.c \ -+ move_pages-Xabbrev.c move_pages-Xraw.c move_pages-Xverbose.c \ -+ mq.c mq_sendrecv.c mq_sendrecv-read.c mq_sendrecv-write.c \ -+ msg_control.c msg_control-v.c msg_name.c munlockall.c \ -+ nanosleep.c net--decode-fds-dev-netlink.c \ -+ net--decode-fds-none-netlink.c net--decode-fds-path-netlink.c \ - net--decode-fds-socket-netlink.c net-accept-connect.c \ - net-icmp_filter.c net-packet_mreq.c net-packet_mreq-Xabbrev.c \ - net-packet_mreq-Xraw.c net-packet_mreq-Xverbose.c \ -- net-sockaddr.c net-tpacket_req.c net-tpacket_stats.c \ -+ net-sockaddr.c net-sockaddr--pidns-translation.c \ -+ net-tpacket_req.c net-tpacket_stats.c \ - net-tpacket_stats-success.c net-y-unix.c net-yy-inet.c \ - net-yy-inet6.c net-yy-netlink.c net-yy-unix.c netlink_audit.c \ -- netlink_crypto.c netlink_generic.c netlink_inet_diag.c \ -- netlink_kobject_uevent.c netlink_netfilter.c \ -- netlink_netlink_diag.c netlink_protocol.c netlink_route.c \ -- netlink_selinux.c netlink_sock_diag.c netlink_unix_diag.c \ -- netlink_xfrm.c newfstatat.c nfnetlink_acct.c \ -- nfnetlink_cthelper.c nfnetlink_ctnetlink.c \ -+ netlink_audit--pidns-translation.c netlink_crypto.c \ -+ netlink_generic.c netlink_inet_diag.c netlink_kobject_uevent.c \ -+ netlink_netfilter.c netlink_netlink_diag.c netlink_protocol.c \ -+ netlink_route.c netlink_selinux.c netlink_sock_diag.c \ -+ netlink_unix_diag.c netlink_xfrm.c newfstatat.c \ -+ nfnetlink_acct.c nfnetlink_cthelper.c nfnetlink_ctnetlink.c \ - nfnetlink_ctnetlink_exp.c nfnetlink_cttimeout.c \ - nfnetlink_ipset.c nfnetlink_nft_compat.c nfnetlink_nftables.c \ - nfnetlink_osf.c nfnetlink_queue.c nfnetlink_ulog.c nlattr.c \ -@@ -4381,12 +4634,13 @@ - personality-Xraw.c personality-Xverbose.c pidfd_getfd.c \ - pidfd_getfd-y.c pidfd_getfd-yy.c pidfd_open.c \ - pidfd_open--decode-fd-path.c pidfd_open--decode-fd-pidfd.c \ -- pidfd_open--decode-fd-socket.c pidfd_open-P.c pidfd_open-y.c \ -- pidfd_open-yy.c pidfd_send_signal.c pipe.c pipe2.c \ -- pkey_alloc.c pkey_free.c pkey_mprotect.c poll.c poll-P.c \ -- ppoll.c ppoll-P.c ppoll-v.c prctl-arg2-intptr.c \ -- prctl-dumpable.c prctl-name.c prctl-no-args.c \ -- prctl-pdeathsig.c prctl-seccomp-filter-v.c \ -+ pidfd_open--decode-fd-socket.c pidfd_open--pidns-translation.c \ -+ pidfd_open-P.c pidfd_open-y.c pidfd_open-yy.c \ -+ pidfd_send_signal.c pidfd_send_signal--pidns-translation.c \ -+ pidns-cache.c pipe.c pipe2.c pkey_alloc.c pkey_free.c \ -+ pkey_mprotect.c poll.c poll-P.c ppoll.c ppoll-P.c ppoll-v.c \ -+ prctl-arg2-intptr.c prctl-dumpable.c prctl-name.c \ -+ prctl-no-args.c prctl-pdeathsig.c prctl-seccomp-filter-v.c \ - prctl-seccomp-strict.c prctl-securebits.c prctl-spec-inject.c \ - prctl-tid_address.c prctl-tsc.c pread64-pwrite64.c preadv.c \ - preadv-pwritev.c preadv2-pwritev2.c print_maxfd.c \ -@@ -4395,8 +4649,10 @@ - printsignal-Xabbrev.c printsignal-Xraw.c \ - printsignal-Xverbose.c printstr.c printstrn-umoven.c \ - printstrn-umoven-peekdata.c printstrn-umoven-undumpable.c \ -- prlimit64.c process_vm_readv.c process_vm_writev.c pselect6.c \ -- ptrace.c ptrace_syscall_info.c pwritev.c qual_fault.c \ -+ prlimit64.c prlimit64--pidns-translation.c process_vm_readv.c \ -+ process_vm_readv--pidns-translation.c process_vm_writev.c \ -+ process_vm_writev--pidns-translation.c pselect6.c ptrace.c \ -+ ptrace_syscall_info.c pwritev.c qual_fault.c \ - qual_inject-error-signal.c qual_inject-retval.c \ - qual_inject-signal.c qual_signal.c quotactl.c \ - quotactl-Xabbrev.c quotactl-Xraw.c quotactl-Xverbose.c \ -@@ -4409,60 +4665,70 @@ - remap_file_pages-Xraw.c remap_file_pages-Xverbose.c rename.c \ - renameat.c renameat2.c request_key.c restart_syscall.c \ - riscv_flush_icache.c rmdir.c rt_sigaction.c rt_sigpending.c \ -- rt_sigprocmask.c rt_sigqueueinfo.c rt_sigreturn.c \ -+ rt_sigprocmask.c rt_sigqueueinfo.c \ -+ rt_sigqueueinfo--pidns-translation.c rt_sigreturn.c \ - rt_sigsuspend.c rt_sigtimedwait.c rt_tgsigqueueinfo.c \ -- run_expect_termsig.c s390_guarded_storage.c \ -- s390_guarded_storage-v.c s390_pci_mmio_read_write.c \ -- s390_runtime_instr.c s390_sthyi.c s390_sthyi-v.c \ -- sched_get_priority_mxx.c sched_rr_get_interval.c \ -- sched_xetaffinity.c sched_xetattr.c sched_xetparam.c \ -- sched_xetscheduler.c sched_yield.c scm_rights.c \ -- seccomp-filter.c seccomp-filter-v.c seccomp-strict.c \ -- seccomp_get_action_avail.c select.c select-P.c semop.c \ -- semop-indirect.c semtimedop.c sendfile.c sendfile64.c \ -- set_mempolicy.c set_mempolicy-Xabbrev.c set_mempolicy-Xraw.c \ -- set_mempolicy-Xverbose.c set_ptracer_any.c set_sigblock.c \ -- set_sigign.c setdomainname.c setfsgid.c setfsgid32.c \ -- setfsuid.c setfsuid32.c setgid.c setgid32.c setgroups.c \ -- setgroups32.c sethostname.c setns.c setpgrp-exec.c setregid.c \ -- setregid32.c setresgid.c setresgid32.c setresuid.c \ -- setresuid32.c setreuid.c setreuid32.c setrlimit.c \ -- setrlimit-Xabbrev.c setrlimit-Xraw.c setrlimit-Xverbose.c \ -- setuid.c setuid32.c shmxt.c shutdown.c sigaction.c \ -- sigaltstack.c siginfo.c signal.c signal_receive.c signalfd4.c \ -- sigpending.c sigprocmask.c sigreturn.c sigsuspend.c sleep.c \ -- so_error.c so_linger.c so_peercred.c so_peercred-Xabbrev.c \ -- so_peercred-Xraw.c so_peercred-Xverbose.c sock_filter-v.c \ -- sock_filter-v-Xabbrev.c sock_filter-v-Xraw.c \ -- 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_attach_SOURCES) \ -- $(stack_fcall_mangled_SOURCES) stat.c stat64.c statfs.c \ -- statfs64.c status-all.c status-failed.c status-failed-long.c \ -- status-failed-status.c status-none.c status-none-f.c \ -- status-none-threads.c status-successful.c \ -- status-successful-long.c status-successful-status.c \ -- status-unfinished.c status-unfinished-threads.c statx.c \ -- strace--strings-in-hex.c strace--strings-in-hex-all.c \ -+ rt_tgsigqueueinfo--pidns-translation.c run_expect_termsig.c \ -+ s390_guarded_storage.c s390_guarded_storage-v.c \ -+ s390_pci_mmio_read_write.c s390_runtime_instr.c s390_sthyi.c \ -+ s390_sthyi-v.c sched_get_priority_mxx.c \ -+ sched_rr_get_interval.c sched_xetaffinity.c \ -+ sched_xetaffinity--pidns-translation.c sched_xetattr.c \ -+ sched_xetattr--pidns-translation.c sched_xetparam.c \ -+ sched_xetparam--pidns-translation.c sched_xetscheduler.c \ -+ sched_xetscheduler--pidns-translation.c sched_yield.c \ -+ scm_rights.c seccomp-filter.c seccomp-filter-v.c \ -+ seccomp-strict.c seccomp_get_action_avail.c select.c \ -+ select-P.c semop.c semop-indirect.c semtimedop.c sendfile.c \ -+ sendfile64.c set_mempolicy.c set_mempolicy-Xabbrev.c \ -+ set_mempolicy-Xraw.c set_mempolicy-Xverbose.c \ -+ set_ptracer_any.c set_sigblock.c set_sigign.c setdomainname.c \ -+ setfsgid.c setfsgid32.c setfsuid.c setfsuid32.c setgid.c \ -+ setgid32.c setgroups.c setgroups32.c sethostname.c setns.c \ -+ setpgrp-exec.c setregid.c setregid32.c setresgid.c \ -+ setresgid32.c setresuid.c setresuid32.c setreuid.c \ -+ setreuid32.c setrlimit.c setrlimit-Xabbrev.c setrlimit-Xraw.c \ -+ setrlimit-Xverbose.c setuid.c setuid32.c shmxt.c shutdown.c \ -+ sigaction.c sigaltstack.c siginfo.c signal.c signal_receive.c \ -+ signal_receive--pidns-translation.c signalfd4.c sigpending.c \ -+ sigprocmask.c sigreturn.c sigsuspend.c sleep.c so_error.c \ -+ so_linger.c so_peercred.c so_peercred--pidns-translation.c \ -+ so_peercred-Xabbrev.c so_peercred-Xraw.c \ -+ so_peercred-Xverbose.c sock_filter-v.c sock_filter-v-Xabbrev.c \ -+ sock_filter-v-Xraw.c 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_attach_SOURCES) $(stack_fcall_mangled_SOURCES) \ -+ stat.c stat64.c statfs.c statfs64.c status-all.c \ -+ status-failed.c status-failed-long.c status-failed-status.c \ -+ status-none.c status-none-f.c status-none-threads.c \ -+ status-successful.c status-successful-long.c \ -+ status-successful-status.c status-unfinished.c \ -+ status-unfinished-threads.c statx.c strace--strings-in-hex.c \ -+ strace--strings-in-hex-all.c \ - strace--strings-in-hex-non-ascii.c strace-x.c strace-xx.c \ - swap.c sxetmask.c symlink.c symlinkat.c sync.c \ - sync_file_range.c sync_file_range2.c sysinfo.c syslog.c \ -- syslog-success.c tee.c tgkill.c threads-execve.c \ -- threads-execve--quiet-thread-execve.c threads-execve-q.c \ -- threads-execve-qq.c threads-execve-qqq.c time.c timer_create.c \ -- timer_xettime.c timerfd_xettime.c times.c times-fail.c tkill.c \ -- tracer_ppid_pgid_sid.c truncate.c truncate64.c ugetrlimit.c \ -- uio.c umask.c umount.c umount2.c umoven-illptr.c umovestr.c \ -- umovestr-illptr.c umovestr2.c umovestr3.c umovestr_cached.c \ -- umovestr_cached_adjacent.c uname.c unblock_reset_raise.c \ -- unix-pair-send-recv.c unix-pair-sendto-recvfrom.c unlink.c \ -- unlinkat.c unshare.c userfaultfd.c ustat.c utime.c utimensat.c \ -- utimensat-Xabbrev.c utimensat-Xraw.c utimensat-Xverbose.c \ -- utimes.c vfork-f.c vhangup.c vmsplice.c wait4.c wait4-v.c \ -- waitid.c waitid-v.c waitpid.c xattr.c xattr-strings.c \ -- xet_robust_list.c xet_thread_area_x86.c xetitimer.c xetpgid.c \ -- xetpriority.c xettimeofday.c zeroargc.c -+ syslog-success.c tee.c tgkill.c tgkill--pidns-translation.c \ -+ threads-execve.c threads-execve--quiet-thread-execve.c \ -+ threads-execve-q.c threads-execve-qq.c threads-execve-qqq.c \ -+ time.c timer_create.c timer_xettime.c timerfd_xettime.c \ -+ times.c times-fail.c tkill.c tkill--pidns-translation.c \ -+ tracer_ppid_pgid_sid.c $(trie_test_SOURCES) truncate.c \ -+ truncate64.c ugetrlimit.c uio.c umask.c umount.c umount2.c \ -+ umoven-illptr.c umovestr.c umovestr-illptr.c umovestr2.c \ -+ umovestr3.c umovestr_cached.c umovestr_cached_adjacent.c \ -+ uname.c unblock_reset_raise.c unix-pair-send-recv.c \ -+ unix-pair-sendto-recvfrom.c unlink.c unlinkat.c unshare.c \ -+ userfaultfd.c ustat.c utime.c utimensat.c utimensat-Xabbrev.c \ -+ utimensat-Xraw.c utimensat-Xverbose.c utimes.c vfork-f.c \ -+ vhangup.c vmsplice.c wait4.c wait4-v.c waitid.c waitid-v.c \ -+ waitpid.c xattr.c xattr-strings.c xet_robust_list.c \ -+ xet_robust_list--pidns-translation.c xet_thread_area_x86.c \ -+ xetitimer.c xetpgid.c xetpgid--pidns-translation.c \ -+ xetpriority.c xetpriority--pidns-translation.c xettimeofday.c \ -+ zeroargc.c - DIST_SOURCES = $(libtests_a_SOURCES) _newselect.c _newselect-P.c \ - accept.c accept4.c access.c acct.c add_key.c adjtimex.c aio.c \ - aio_pgetevents.c alarm.c answer.c attach-f-p.c \ -@@ -4490,26 +4756,30 @@ - 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 fcntl64.c fdatasync.c fflush.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-f.c fsconfig.c fsconfig-P.c fsmount.c fsopen.c \ -- fspick.c fspick-P.c fstat.c fstat-Xabbrev.c fstat-Xraw.c \ -- fstat-Xverbose.c fstat64.c fstat64-Xabbrev.c fstat64-Xraw.c \ -- fstat64-Xverbose.c fstatat64.c fstatfs.c fstatfs64.c fsync.c \ -- fsync-y.c ftruncate.c ftruncate64.c futex.c futimesat.c \ -- get_mempolicy.c get_process_reaper.c getcpu.c getcwd.c \ -- getdents.c getdents-v.c getdents64.c getdents64-v.c getegid.c \ -- getegid32.c geteuid.c geteuid32.c getgid.c getgid32.c \ -- getgroups.c getgroups32.c getpeername.c getpgrp.c getpid.c \ -- getppid.c getrandom.c getresgid.c getresgid32.c getresuid.c \ -- getresuid32.c getrlimit.c getrusage.c getsid.c getsockname.c \ -- gettid.c getuid.c getuid32.c getxgid.c getxpid.c getxuid.c \ -- group_req.c inet-cmsg.c init_module.c inject-nf.c inotify.c \ -- inotify_init.c inotify_init-y.c inotify_init1.c \ -- inotify_init1-y.c int_0x80.c io_uring_enter.c \ -- io_uring_register.c io_uring_setup.c ioctl.c ioctl_block.c \ -- ioctl_dm.c ioctl_dm-v.c ioctl_evdev.c ioctl_evdev-Xabbrev.c \ -+ flock.c fork--pidns-translation.c fork-f.c fsconfig.c \ -+ fsconfig-P.c fsmount.c fsopen.c fspick.c fspick-P.c fstat.c \ -+ fstat-Xabbrev.c fstat-Xraw.c fstat-Xverbose.c fstat64.c \ -+ fstat64-Xabbrev.c fstat64-Xraw.c fstat64-Xverbose.c \ -+ fstatat64.c fstatfs.c fstatfs64.c fsync.c fsync-y.c \ -+ ftruncate.c ftruncate64.c futex.c futimesat.c get_mempolicy.c \ -+ get_process_reaper.c getcpu.c getcwd.c getdents.c getdents-v.c \ -+ getdents64.c getdents64-v.c getegid.c getegid32.c geteuid.c \ -+ geteuid32.c getgid.c getgid32.c getgroups.c getgroups32.c \ -+ getpeername.c getpgrp.c getpgrp--pidns-translation.c getpid.c \ -+ getpid--pidns-translation.c getppid.c getrandom.c getresgid.c \ -+ getresgid32.c getresuid.c getresuid32.c getrlimit.c \ -+ getrusage.c getsid.c getsid--pidns-translation.c getsockname.c \ -+ gettid.c gettid--pidns-translation.c getuid.c getuid32.c \ -+ getxgid.c getxpid.c getxuid.c group_req.c inet-cmsg.c \ -+ init_module.c inject-nf.c inotify.c inotify_init.c \ -+ inotify_init-y.c inotify_init1.c inotify_init1-y.c int_0x80.c \ -+ io_uring_enter.c io_uring_register.c io_uring_setup.c ioctl.c \ -+ ioctl_block.c ioctl_block--pidns-translation.c ioctl_dm.c \ -+ ioctl_dm-v.c ioctl_evdev.c ioctl_evdev-Xabbrev.c \ - ioctl_evdev-Xraw.c ioctl_evdev-Xverbose.c \ - ioctl_evdev-success.c ioctl_evdev-success-Xabbrev.c \ - ioctl_evdev-success-Xraw.c ioctl_evdev-success-Xverbose.c \ -@@ -4537,47 +4807,51 @@ - ioctl_v4l2-success-v-Xverbose.c ioctl_v4l2-v.c \ - ioctl_v4l2-v-Xabbrev.c ioctl_v4l2-v-Xraw.c \ - ioctl_v4l2-v-Xverbose.c ioctl_watchdog.c ioperm.c iopl.c \ -- ioprio.c ioprio-Xabbrev.c ioprio-Xraw.c ioprio-Xverbose.c \ -- ip_mreq.c ipc.c ipc_msg.c ipc_msg-Xabbrev.c ipc_msg-Xraw.c \ -- ipc_msg-Xverbose.c ipc_msgbuf.c ipc_msgbuf-Xabbrev.c \ -- ipc_msgbuf-Xraw.c ipc_msgbuf-Xverbose.c ipc_sem.c \ -- ipc_sem-Xabbrev.c ipc_sem-Xraw.c ipc_sem-Xverbose.c ipc_shm.c \ -- ipc_shm-Xabbrev.c ipc_shm-Xraw.c ipc_shm-Xverbose.c \ -- is_linux_mips_n64.c kcmp.c kcmp-y.c kern_features.c \ -+ ioprio.c ioprio--pidns-translation.c ioprio-Xabbrev.c \ -+ ioprio-Xraw.c ioprio-Xverbose.c ip_mreq.c ipc.c ipc_msg.c \ -+ ipc_msg-Xabbrev.c ipc_msg-Xraw.c ipc_msg-Xverbose.c \ -+ ipc_msgbuf.c ipc_msgbuf-Xabbrev.c ipc_msgbuf-Xraw.c \ -+ ipc_msgbuf-Xverbose.c ipc_sem.c ipc_sem-Xabbrev.c \ -+ ipc_sem-Xraw.c ipc_sem-Xverbose.c ipc_shm.c ipc_shm-Xabbrev.c \ -+ ipc_shm-Xraw.c ipc_shm-Xverbose.c is_linux_mips_n64.c kcmp.c \ -+ kcmp-y.c kcmp-y--pidns-translation.c kern_features.c \ - kernel_version.c kernel_version-Xabbrev.c \ - kernel_version-Xraw.c kernel_version-Xverbose.c \ - kexec_file_load.c kexec_load.c keyctl.c keyctl-Xabbrev.c \ -- keyctl-Xraw.c keyctl-Xverbose.c kill.c kill_child.c ksysent.c \ -- lchown.c lchown32.c link.c linkat.c list_sigaction_signum.c \ -- llseek.c localtime.c lookup_dcookie.c looping_threads.c \ -- lseek.c lstat.c lstat64.c madvise.c maybe_switch_current_tcp.c \ -+ keyctl-Xraw.c keyctl-Xverbose.c kill.c \ -+ kill--pidns-translation.c kill_child.c ksysent.c lchown.c \ -+ lchown32.c link.c linkat.c list_sigaction_signum.c llseek.c \ -+ localtime.c lookup_dcookie.c looping_threads.c lseek.c lstat.c \ -+ lstat64.c madvise.c maybe_switch_current_tcp.c \ - maybe_switch_current_tcp--quiet-thread-execve.c mbind.c \ - mbind-Xabbrev.c mbind-Xraw.c mbind-Xverbose.c membarrier.c \ - memfd_create.c memfd_create-Xabbrev.c memfd_create-Xraw.c \ -- memfd_create-Xverbose.c migrate_pages.c mincore.c mkdir.c \ -- mkdirat.c mknod.c mknodat.c mlock.c mlock2.c mlockall.c mmap.c \ -+ memfd_create-Xverbose.c migrate_pages.c \ -+ migrate_pages--pidns-translation.c mincore.c mkdir.c mkdirat.c \ -+ mknod.c mknodat.c mlock.c mlock2.c mlockall.c mmap.c \ - mmap-Xabbrev.c mmap-Xraw.c mmap-Xverbose.c mmap64.c \ - mmap64-Xabbrev.c mmap64-Xraw.c mmap64-Xverbose.c mmsg.c \ - mmsg-silent.c mmsg_name.c mmsg_name-v.c modify_ldt.c mount.c \ - mount-Xabbrev.c mount-Xraw.c mount-Xverbose.c move_mount.c \ -- move_mount-P.c move_pages.c move_pages-Xabbrev.c \ -- move_pages-Xraw.c move_pages-Xverbose.c mq.c mq_sendrecv.c \ -- mq_sendrecv-read.c mq_sendrecv-write.c msg_control.c \ -- msg_control-v.c msg_name.c munlockall.c nanosleep.c \ -- net--decode-fds-dev-netlink.c net--decode-fds-none-netlink.c \ -- net--decode-fds-path-netlink.c \ -+ move_mount-P.c move_pages.c move_pages--pidns-translation.c \ -+ move_pages-Xabbrev.c move_pages-Xraw.c move_pages-Xverbose.c \ -+ mq.c mq_sendrecv.c mq_sendrecv-read.c mq_sendrecv-write.c \ -+ msg_control.c msg_control-v.c msg_name.c munlockall.c \ -+ nanosleep.c net--decode-fds-dev-netlink.c \ -+ net--decode-fds-none-netlink.c net--decode-fds-path-netlink.c \ - net--decode-fds-socket-netlink.c net-accept-connect.c \ - net-icmp_filter.c net-packet_mreq.c net-packet_mreq-Xabbrev.c \ - net-packet_mreq-Xraw.c net-packet_mreq-Xverbose.c \ -- net-sockaddr.c net-tpacket_req.c net-tpacket_stats.c \ -+ net-sockaddr.c net-sockaddr--pidns-translation.c \ -+ net-tpacket_req.c net-tpacket_stats.c \ - net-tpacket_stats-success.c net-y-unix.c net-yy-inet.c \ - net-yy-inet6.c net-yy-netlink.c net-yy-unix.c netlink_audit.c \ -- netlink_crypto.c netlink_generic.c netlink_inet_diag.c \ -- netlink_kobject_uevent.c netlink_netfilter.c \ -- netlink_netlink_diag.c netlink_protocol.c netlink_route.c \ -- netlink_selinux.c netlink_sock_diag.c netlink_unix_diag.c \ -- netlink_xfrm.c newfstatat.c nfnetlink_acct.c \ -- nfnetlink_cthelper.c nfnetlink_ctnetlink.c \ -+ netlink_audit--pidns-translation.c netlink_crypto.c \ -+ netlink_generic.c netlink_inet_diag.c netlink_kobject_uevent.c \ -+ netlink_netfilter.c netlink_netlink_diag.c netlink_protocol.c \ -+ netlink_route.c netlink_selinux.c netlink_sock_diag.c \ -+ netlink_unix_diag.c netlink_xfrm.c newfstatat.c \ -+ nfnetlink_acct.c nfnetlink_cthelper.c nfnetlink_ctnetlink.c \ - nfnetlink_ctnetlink_exp.c nfnetlink_cttimeout.c \ - nfnetlink_ipset.c nfnetlink_nft_compat.c nfnetlink_nftables.c \ - nfnetlink_osf.c nfnetlink_queue.c nfnetlink_ulog.c nlattr.c \ -@@ -4607,12 +4881,13 @@ - personality-Xraw.c personality-Xverbose.c pidfd_getfd.c \ - pidfd_getfd-y.c pidfd_getfd-yy.c pidfd_open.c \ - pidfd_open--decode-fd-path.c pidfd_open--decode-fd-pidfd.c \ -- pidfd_open--decode-fd-socket.c pidfd_open-P.c pidfd_open-y.c \ -- pidfd_open-yy.c pidfd_send_signal.c pipe.c pipe2.c \ -- pkey_alloc.c pkey_free.c pkey_mprotect.c poll.c poll-P.c \ -- ppoll.c ppoll-P.c ppoll-v.c prctl-arg2-intptr.c \ -- prctl-dumpable.c prctl-name.c prctl-no-args.c \ -- prctl-pdeathsig.c prctl-seccomp-filter-v.c \ -+ pidfd_open--decode-fd-socket.c pidfd_open--pidns-translation.c \ -+ pidfd_open-P.c pidfd_open-y.c pidfd_open-yy.c \ -+ pidfd_send_signal.c pidfd_send_signal--pidns-translation.c \ -+ pidns-cache.c pipe.c pipe2.c pkey_alloc.c pkey_free.c \ -+ pkey_mprotect.c poll.c poll-P.c ppoll.c ppoll-P.c ppoll-v.c \ -+ prctl-arg2-intptr.c prctl-dumpable.c prctl-name.c \ -+ prctl-no-args.c prctl-pdeathsig.c prctl-seccomp-filter-v.c \ - prctl-seccomp-strict.c prctl-securebits.c prctl-spec-inject.c \ - prctl-tid_address.c prctl-tsc.c pread64-pwrite64.c preadv.c \ - preadv-pwritev.c preadv2-pwritev2.c print_maxfd.c \ -@@ -4621,8 +4896,10 @@ - printsignal-Xabbrev.c printsignal-Xraw.c \ - printsignal-Xverbose.c printstr.c printstrn-umoven.c \ - printstrn-umoven-peekdata.c printstrn-umoven-undumpable.c \ -- prlimit64.c process_vm_readv.c process_vm_writev.c pselect6.c \ -- ptrace.c ptrace_syscall_info.c pwritev.c qual_fault.c \ -+ prlimit64.c prlimit64--pidns-translation.c process_vm_readv.c \ -+ process_vm_readv--pidns-translation.c process_vm_writev.c \ -+ process_vm_writev--pidns-translation.c pselect6.c ptrace.c \ -+ ptrace_syscall_info.c pwritev.c qual_fault.c \ - qual_inject-error-signal.c qual_inject-retval.c \ - qual_inject-signal.c qual_signal.c quotactl.c \ - quotactl-Xabbrev.c quotactl-Xraw.c quotactl-Xverbose.c \ -@@ -4635,60 +4912,70 @@ - remap_file_pages-Xraw.c remap_file_pages-Xverbose.c rename.c \ - renameat.c renameat2.c request_key.c restart_syscall.c \ - riscv_flush_icache.c rmdir.c rt_sigaction.c rt_sigpending.c \ -- rt_sigprocmask.c rt_sigqueueinfo.c rt_sigreturn.c \ -+ rt_sigprocmask.c rt_sigqueueinfo.c \ -+ rt_sigqueueinfo--pidns-translation.c rt_sigreturn.c \ - rt_sigsuspend.c rt_sigtimedwait.c rt_tgsigqueueinfo.c \ -- run_expect_termsig.c s390_guarded_storage.c \ -- s390_guarded_storage-v.c s390_pci_mmio_read_write.c \ -- s390_runtime_instr.c s390_sthyi.c s390_sthyi-v.c \ -- sched_get_priority_mxx.c sched_rr_get_interval.c \ -- sched_xetaffinity.c sched_xetattr.c sched_xetparam.c \ -- sched_xetscheduler.c sched_yield.c scm_rights.c \ -- seccomp-filter.c seccomp-filter-v.c seccomp-strict.c \ -- seccomp_get_action_avail.c select.c select-P.c semop.c \ -- semop-indirect.c semtimedop.c sendfile.c sendfile64.c \ -- set_mempolicy.c set_mempolicy-Xabbrev.c set_mempolicy-Xraw.c \ -- set_mempolicy-Xverbose.c set_ptracer_any.c set_sigblock.c \ -- set_sigign.c setdomainname.c setfsgid.c setfsgid32.c \ -- setfsuid.c setfsuid32.c setgid.c setgid32.c setgroups.c \ -- setgroups32.c sethostname.c setns.c setpgrp-exec.c setregid.c \ -- setregid32.c setresgid.c setresgid32.c setresuid.c \ -- setresuid32.c setreuid.c setreuid32.c setrlimit.c \ -- setrlimit-Xabbrev.c setrlimit-Xraw.c setrlimit-Xverbose.c \ -- setuid.c setuid32.c shmxt.c shutdown.c sigaction.c \ -- sigaltstack.c siginfo.c signal.c signal_receive.c signalfd4.c \ -- sigpending.c sigprocmask.c sigreturn.c sigsuspend.c sleep.c \ -- so_error.c so_linger.c so_peercred.c so_peercred-Xabbrev.c \ -- so_peercred-Xraw.c so_peercred-Xverbose.c sock_filter-v.c \ -- sock_filter-v-Xabbrev.c sock_filter-v-Xraw.c \ -- 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_attach_SOURCES) \ -- $(stack_fcall_mangled_SOURCES) stat.c stat64.c statfs.c \ -- statfs64.c status-all.c status-failed.c status-failed-long.c \ -- status-failed-status.c status-none.c status-none-f.c \ -- status-none-threads.c status-successful.c \ -- status-successful-long.c status-successful-status.c \ -- status-unfinished.c status-unfinished-threads.c statx.c \ -- strace--strings-in-hex.c strace--strings-in-hex-all.c \ -+ rt_tgsigqueueinfo--pidns-translation.c run_expect_termsig.c \ -+ s390_guarded_storage.c s390_guarded_storage-v.c \ -+ s390_pci_mmio_read_write.c s390_runtime_instr.c s390_sthyi.c \ -+ s390_sthyi-v.c sched_get_priority_mxx.c \ -+ sched_rr_get_interval.c sched_xetaffinity.c \ -+ sched_xetaffinity--pidns-translation.c sched_xetattr.c \ -+ sched_xetattr--pidns-translation.c sched_xetparam.c \ -+ sched_xetparam--pidns-translation.c sched_xetscheduler.c \ -+ sched_xetscheduler--pidns-translation.c sched_yield.c \ -+ scm_rights.c seccomp-filter.c seccomp-filter-v.c \ -+ seccomp-strict.c seccomp_get_action_avail.c select.c \ -+ select-P.c semop.c semop-indirect.c semtimedop.c sendfile.c \ -+ sendfile64.c set_mempolicy.c set_mempolicy-Xabbrev.c \ -+ set_mempolicy-Xraw.c set_mempolicy-Xverbose.c \ -+ set_ptracer_any.c set_sigblock.c set_sigign.c setdomainname.c \ -+ setfsgid.c setfsgid32.c setfsuid.c setfsuid32.c setgid.c \ -+ setgid32.c setgroups.c setgroups32.c sethostname.c setns.c \ -+ setpgrp-exec.c setregid.c setregid32.c setresgid.c \ -+ setresgid32.c setresuid.c setresuid32.c setreuid.c \ -+ setreuid32.c setrlimit.c setrlimit-Xabbrev.c setrlimit-Xraw.c \ -+ setrlimit-Xverbose.c setuid.c setuid32.c shmxt.c shutdown.c \ -+ sigaction.c sigaltstack.c siginfo.c signal.c signal_receive.c \ -+ signal_receive--pidns-translation.c signalfd4.c sigpending.c \ -+ sigprocmask.c sigreturn.c sigsuspend.c sleep.c so_error.c \ -+ so_linger.c so_peercred.c so_peercred--pidns-translation.c \ -+ so_peercred-Xabbrev.c so_peercred-Xraw.c \ -+ so_peercred-Xverbose.c sock_filter-v.c sock_filter-v-Xabbrev.c \ -+ sock_filter-v-Xraw.c 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_attach_SOURCES) $(stack_fcall_mangled_SOURCES) \ -+ stat.c stat64.c statfs.c statfs64.c status-all.c \ -+ status-failed.c status-failed-long.c status-failed-status.c \ -+ status-none.c status-none-f.c status-none-threads.c \ -+ status-successful.c status-successful-long.c \ -+ status-successful-status.c status-unfinished.c \ -+ status-unfinished-threads.c statx.c strace--strings-in-hex.c \ -+ strace--strings-in-hex-all.c \ - strace--strings-in-hex-non-ascii.c strace-x.c strace-xx.c \ - swap.c sxetmask.c symlink.c symlinkat.c sync.c \ - sync_file_range.c sync_file_range2.c sysinfo.c syslog.c \ -- syslog-success.c tee.c tgkill.c threads-execve.c \ -- threads-execve--quiet-thread-execve.c threads-execve-q.c \ -- threads-execve-qq.c threads-execve-qqq.c time.c timer_create.c \ -- timer_xettime.c timerfd_xettime.c times.c times-fail.c tkill.c \ -- tracer_ppid_pgid_sid.c truncate.c truncate64.c ugetrlimit.c \ -- uio.c umask.c umount.c umount2.c umoven-illptr.c umovestr.c \ -- umovestr-illptr.c umovestr2.c umovestr3.c umovestr_cached.c \ -- umovestr_cached_adjacent.c uname.c unblock_reset_raise.c \ -- unix-pair-send-recv.c unix-pair-sendto-recvfrom.c unlink.c \ -- unlinkat.c unshare.c userfaultfd.c ustat.c utime.c utimensat.c \ -- utimensat-Xabbrev.c utimensat-Xraw.c utimensat-Xverbose.c \ -- utimes.c vfork-f.c vhangup.c vmsplice.c wait4.c wait4-v.c \ -- waitid.c waitid-v.c waitpid.c xattr.c xattr-strings.c \ -- xet_robust_list.c xet_thread_area_x86.c xetitimer.c xetpgid.c \ -- xetpriority.c xettimeofday.c zeroargc.c -+ syslog-success.c tee.c tgkill.c tgkill--pidns-translation.c \ -+ threads-execve.c threads-execve--quiet-thread-execve.c \ -+ threads-execve-q.c threads-execve-qq.c threads-execve-qqq.c \ -+ time.c timer_create.c timer_xettime.c timerfd_xettime.c \ -+ times.c times-fail.c tkill.c tkill--pidns-translation.c \ -+ tracer_ppid_pgid_sid.c $(trie_test_SOURCES) truncate.c \ -+ truncate64.c ugetrlimit.c uio.c umask.c umount.c umount2.c \ -+ umoven-illptr.c umovestr.c umovestr-illptr.c umovestr2.c \ -+ umovestr3.c umovestr_cached.c umovestr_cached_adjacent.c \ -+ uname.c unblock_reset_raise.c unix-pair-send-recv.c \ -+ unix-pair-sendto-recvfrom.c unlink.c unlinkat.c unshare.c \ -+ userfaultfd.c ustat.c utime.c utimensat.c utimensat-Xabbrev.c \ -+ utimensat-Xraw.c utimensat-Xverbose.c utimes.c vfork-f.c \ -+ vhangup.c vmsplice.c wait4.c wait4-v.c waitid.c waitid-v.c \ -+ waitpid.c xattr.c xattr-strings.c xet_robust_list.c \ -+ xet_robust_list--pidns-translation.c xet_thread_area_x86.c \ -+ xetitimer.c xetpgid.c xetpgid--pidns-translation.c \ -+ xetpriority.c xetpriority--pidns-translation.c xettimeofday.c \ -+ zeroargc.c - am__can_run_installinfo = \ - case $$AM_UPDATE_INFO_DIR in \ - n|no|NO) false;; \ -@@ -5145,6 +5432,7 @@ - test_ucopy.h \ - tests.h \ - tprintf.c \ -+ xmalloc_for_tests.c \ - # end of libtests_a_SOURCES - - libtests_a_CPPFLAGS = $(AM_CPPFLAGS) -D_FILE_OFFSET_BITS=64 -@@ -5825,6 +6113,10 @@ - stack-fcall-mangled-0.c stack-fcall-mangled-1.c \ - stack-fcall-mangled-2.c stack-fcall-mangled-3.c - -+trie_test_SOURCES = trie_test.c trie_for_tests.c -+trie_test_CPPFLAGS = $(AM_CPPFLAGS) $(CODE_COVERAGE_CPPFLAGS) -+trie_test_CFLAGS = $(AM_CFLAGS) $(CODE_COVERAGE_CFLAGS) -+trie_test_LDADD = $(LDADD) $(CODE_COVERAGE_LIBS) - - # Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in; do not edit. - GEN_TESTS = _newselect.gen.test _newselect-P.gen.test accept.gen.test \ -@@ -5861,13 +6153,14 @@ - 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 \ -- fcntl64.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 fsopen.gen.test \ -- fspick.gen.test fspick-P.gen.test fstat.gen.test \ -- fstat-Xabbrev.gen.test fstat-Xraw.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 \ -+ fsopen.gen.test fspick.gen.test fspick-P.gen.test \ -+ fstat.gen.test fstat-Xabbrev.gen.test fstat-Xraw.gen.test \ - fstat-Xverbose.gen.test fstat64.gen.test \ - fstat64-Xabbrev.gen.test fstat64-Xraw.gen.test \ - fstat64-Xverbose.gen.test fstatat64.gen.test fstatfs.gen.test \ -@@ -5881,11 +6174,13 @@ - geteuid32-creds.gen.test getgid.gen.test getgid-creds.gen.test \ - getgid32.gen.test getgid32-creds.gen.test getgroups.gen.test \ - getgroups32.gen.test getpeername.gen.test getpgrp.gen.test \ -- getpid.gen.test getppid.gen.test getrandom.gen.test \ -- getresgid.gen.test getresgid32.gen.test getresuid.gen.test \ -- getresuid32.gen.test getrlimit.gen.test getrusage.gen.test \ -- getsid.gen.test getsockname.gen.test gettid.gen.test \ -- getuid-creds.gen.test getuid32.gen.test \ -+ getpgrp--pidns-translation.gen.test getpid.gen.test \ -+ getpid--pidns-translation.gen.test getppid.gen.test \ -+ getrandom.gen.test getresgid.gen.test getresgid32.gen.test \ -+ getresuid.gen.test getresuid32.gen.test getrlimit.gen.test \ -+ getrusage.gen.test getsid.gen.test \ -+ getsid--pidns-translation.gen.test getsockname.gen.test \ -+ gettid.gen.test getuid-creds.gen.test getuid32.gen.test \ - getuid32-creds.gen.test getxgid.gen.test getxpid.gen.test \ - getxuid.gen.test group_req.gen.test inet-cmsg.gen.test \ - init_module.gen.test inotify.gen.test inotify_init.gen.test \ -@@ -5937,9 +6232,9 @@ - ioctl_v4l2-success-v-Xraw.gen.test \ - ioctl_v4l2-success-v-Xverbose.gen.test ioctl_watchdog.gen.test \ - ioperm.gen.test iopl.gen.test ioprio.gen.test \ -- ioprio-Xabbrev.gen.test ioprio-Xraw.gen.test \ -- ioprio-Xverbose.gen.test ip_mreq.gen.test ipc.gen.test \ -- ipc_msg.gen.test ipc_msg-Xabbrev.gen.test \ -+ ioprio--pidns-translation.gen.test ioprio-Xabbrev.gen.test \ -+ ioprio-Xraw.gen.test ioprio-Xverbose.gen.test ip_mreq.gen.test \ -+ ipc.gen.test ipc_msg.gen.test ipc_msg-Xabbrev.gen.test \ - ipc_msg-Xraw.gen.test ipc_msg-Xverbose.gen.test \ - ipc_msgbuf-Xabbrev.gen.test ipc_msgbuf-Xraw.gen.test \ - ipc_msgbuf-Xverbose.gen.test ipc_sem.gen.test \ -@@ -5947,24 +6242,27 @@ - ipc_sem-Xverbose.gen.test ipc_shm.gen.test \ - ipc_shm-Xabbrev.gen.test ipc_shm-Xraw.gen.test \ - ipc_shm-Xverbose.gen.test kcmp.gen.test kcmp-y.gen.test \ -- kern_features.gen.test kernel_version.gen.test \ -- kernel_version-Xabbrev.gen.test kernel_version-Xraw.gen.test \ -- kernel_version-Xverbose.gen.test kexec_file_load.gen.test \ -- kexec_load.gen.test keyctl.gen.test keyctl-Xabbrev.gen.test \ -- keyctl-Xraw.gen.test keyctl-Xverbose.gen.test kill.gen.test \ -- ksysent.gen.test lchown.gen.test lchown32.gen.test \ -- link.gen.test linkat.gen.test lookup_dcookie.gen.test \ -- lstat.gen.test lstat64.gen.test madvise.gen.test \ -+ kcmp-y--pidns-translation.gen.test kern_features.gen.test \ -+ kernel_version.gen.test kernel_version-Xabbrev.gen.test \ -+ kernel_version-Xraw.gen.test kernel_version-Xverbose.gen.test \ -+ kexec_file_load.gen.test kexec_load.gen.test keyctl.gen.test \ -+ keyctl-Xabbrev.gen.test keyctl-Xraw.gen.test \ -+ keyctl-Xverbose.gen.test kill.gen.test \ -+ kill--pidns-translation.gen.test ksysent.gen.test \ -+ lchown.gen.test lchown32.gen.test link.gen.test \ -+ linkat.gen.test lookup_dcookie.gen.test lstat.gen.test \ -+ lstat64.gen.test madvise.gen.test \ - maybe_switch_current_tcp.gen.test \ - maybe_switch_current_tcp--quiet-thread-execve.gen.test \ - mbind.gen.test mbind-Xabbrev.gen.test mbind-Xraw.gen.test \ - mbind-Xverbose.gen.test membarrier.gen.test \ - memfd_create.gen.test memfd_create-Xabbrev.gen.test \ - memfd_create-Xraw.gen.test memfd_create-Xverbose.gen.test \ -- migrate_pages.gen.test mincore.gen.test mkdir.gen.test \ -- mkdirat.gen.test mknod.gen.test mknodat.gen.test \ -- mlock.gen.test mlock2.gen.test mlockall.gen.test \ -- mmap-Xabbrev.gen.test mmap-Xraw.gen.test \ -+ migrate_pages.gen.test \ -+ migrate_pages--pidns-translation.gen.test mincore.gen.test \ -+ mkdir.gen.test mkdirat.gen.test mknod.gen.test \ -+ mknodat.gen.test mlock.gen.test mlock2.gen.test \ -+ mlockall.gen.test mmap-Xabbrev.gen.test mmap-Xraw.gen.test \ - mmap-Xverbose.gen.test mmap64.gen.test mmap64-Xabbrev.gen.test \ - mmap64-Xraw.gen.test mmap64-Xverbose.gen.test mmsg.gen.test \ - mmsg-silent.gen.test mmsg_name.gen.test mmsg_name-v.gen.test \ -@@ -5972,17 +6270,19 @@ - mount-Xraw.gen.test mount-Xverbose.gen.test \ - move_mount.gen.test move_mount-P.gen.test move_pages.gen.test \ - move_pages-Xabbrev.gen.test move_pages-Xraw.gen.test \ -- move_pages-Xverbose.gen.test mq.gen.test mq_sendrecv.gen.test \ -- mq_sendrecv-read.gen.test mq_sendrecv-write.gen.test \ -- msg_control.gen.test msg_control-v.gen.test msg_name.gen.test \ -- munlockall.gen.test nanosleep.gen.test \ -- net--decode-fds-dev-netlink.gen.test \ -+ move_pages-Xverbose.gen.test \ -+ move_pages--pidns-translation.gen.test mq.gen.test \ -+ mq_sendrecv.gen.test mq_sendrecv-read.gen.test \ -+ mq_sendrecv-write.gen.test msg_control.gen.test \ -+ msg_control-v.gen.test msg_name.gen.test munlockall.gen.test \ -+ nanosleep.gen.test net--decode-fds-dev-netlink.gen.test \ - net--decode-fds-none-netlink.gen.test \ - net--decode-fds-path-netlink.gen.test \ - net--decode-fds-socket-netlink.gen.test \ - net-icmp_filter.gen.test net-packet_mreq.gen.test \ - net-packet_mreq-Xabbrev.gen.test net-packet_mreq-Xraw.gen.test \ - net-packet_mreq-Xverbose.gen.test net-sockaddr.gen.test \ -+ net-sockaddr--pidns-translation.gen.test \ - net-tpacket_req.gen.test net-tpacket_stats.gen.test \ - net-yy-inet6.gen.test netlink_audit.gen.test \ - netlink_crypto.gen.test netlink_generic.gen.test \ -@@ -6036,18 +6336,25 @@ - pidfd_open--decode-fd-pidfd.gen.test \ - pidfd_open--decode-fd-socket.gen.test pidfd_open-P.gen.test \ - pidfd_open-y.gen.test pidfd_open-yy.gen.test \ -- pidfd_send_signal.gen.test pipe2.gen.test pkey_alloc.gen.test \ -- pkey_free.gen.test pkey_mprotect.gen.test ppoll.gen.test \ -- ppoll-P.gen.test ppoll-v.gen.test pread64-pwrite64.gen.test \ -- preadv.gen.test preadv-pwritev.gen.test \ -- preadv2-pwritev2.gen.test printpath-umovestr.gen.test \ -+ pidfd_open--pidns-translation.gen.test \ -+ pidfd_send_signal.gen.test \ -+ pidfd_send_signal--pidns-translation.gen.test pipe2.gen.test \ -+ pkey_alloc.gen.test pkey_free.gen.test pkey_mprotect.gen.test \ -+ ppoll.gen.test ppoll-P.gen.test ppoll-v.gen.test \ -+ pread64-pwrite64.gen.test preadv.gen.test \ -+ preadv-pwritev.gen.test preadv2-pwritev2.gen.test \ -+ printpath-umovestr.gen.test \ - printpath-umovestr-peekdata.gen.test \ - printpath-umovestr-undumpable.gen.test \ - printsignal-Xabbrev.gen.test printsignal-Xraw.gen.test \ - printsignal-Xverbose.gen.test printstr.gen.test \ - printstrn-umoven.gen.test printstrn-umoven-peekdata.gen.test \ - printstrn-umoven-undumpable.gen.test prlimit64.gen.test \ -- process_vm_readv.gen.test process_vm_writev.gen.test \ -+ prlimit64--pidns-translation.gen.test \ -+ process_vm_readv.gen.test \ -+ process_vm_readv--pidns-translation.gen.test \ -+ process_vm_writev.gen.test \ -+ process_vm_writev--pidns-translation.gen.test \ - pselect6.gen.test ptrace.gen.test ptrace_syscall_info.gen.test \ - pwritev.gen.test quotactl.gen.test quotactl-Xabbrev.gen.test \ - quotactl-Xraw.gen.test quotactl-Xverbose.gen.test \ -@@ -6063,15 +6370,23 @@ - renameat.gen.test renameat2.gen.test request_key.gen.test \ - riscv_flush_icache.gen.test rmdir.gen.test \ - rt_sigpending.gen.test rt_sigprocmask.gen.test \ -- rt_sigqueueinfo.gen.test rt_sigreturn.gen.test \ -- rt_sigsuspend.gen.test rt_sigtimedwait.gen.test \ -- rt_tgsigqueueinfo.gen.test s390_guarded_storage.gen.test \ -- s390_guarded_storage-v.gen.test \ -+ rt_sigqueueinfo.gen.test \ -+ rt_sigqueueinfo--pidns-translation.gen.test \ -+ rt_sigreturn.gen.test rt_sigsuspend.gen.test \ -+ rt_sigtimedwait.gen.test rt_tgsigqueueinfo.gen.test \ -+ rt_tgsigqueueinfo--pidns-translation.gen.test \ -+ s390_guarded_storage.gen.test s390_guarded_storage-v.gen.test \ - s390_pci_mmio_read_write.gen.test s390_runtime_instr.gen.test \ - s390_sthyi.gen.test s390_sthyi-v.gen.test sched.gen.test \ - sched_get_priority_mxx.gen.test sched_rr_get_interval.gen.test \ -- sched_xetaffinity.gen.test sched_xetattr.gen.test \ -- sched_xetparam.gen.test sched_xetscheduler.gen.test \ -+ sched_xetaffinity.gen.test \ -+ sched_xetaffinity--pidns-translation.gen.test \ -+ sched_xetattr.gen.test \ -+ sched_xetattr--pidns-translation.gen.test \ -+ sched_xetparam.gen.test \ -+ sched_xetparam--pidns-translation.gen.test \ -+ sched_xetscheduler.gen.test \ -+ sched_xetscheduler--pidns-translation.gen.test \ - sched_yield.gen.test seccomp-filter.gen.test \ - seccomp-filter-v.gen.test seccomp_get_action_avail.gen.test \ - select.gen.test select-P.gen.test semop.gen.test \ -@@ -6089,18 +6404,20 @@ - setrlimit-Xraw.gen.test setrlimit-Xverbose.gen.test \ - setuid.gen.test setuid32.gen.test shmxt.gen.test \ - shutdown.gen.test sigaction.gen.test siginfo.gen.test \ -- signal.gen.test signal_receive.gen.test signalfd4.gen.test \ -+ signal.gen.test signal_receive.gen.test \ -+ signal_receive--pidns-translation.gen.test signalfd4.gen.test \ - sigpending.gen.test sigprocmask.gen.test sigreturn.gen.test \ - sigsuspend.gen.test so_error.gen.test so_linger.gen.test \ - so_peercred.gen.test so_peercred-Xabbrev.gen.test \ - so_peercred-Xraw.gen.test so_peercred-Xverbose.gen.test \ -- sock_filter-v.gen.test sock_filter-v-Xabbrev.gen.test \ -- sock_filter-v-Xraw.gen.test sock_filter-v-Xverbose.gen.test \ -- sockaddr_xlat-Xabbrev.gen.test sockaddr_xlat-Xraw.gen.test \ -- sockaddr_xlat-Xverbose.gen.test socketcall.gen.test \ -- sockopt-sol_netlink.gen.test sockopt-timestamp.gen.test \ -- splice.gen.test stat.gen.test stat64.gen.test statfs.gen.test \ -- statfs64.gen.test status-all.gen.test status-failed.gen.test \ -+ so_peercred--pidns-translation.gen.test sock_filter-v.gen.test \ -+ sock_filter-v-Xabbrev.gen.test sock_filter-v-Xraw.gen.test \ -+ sock_filter-v-Xverbose.gen.test sockaddr_xlat-Xabbrev.gen.test \ -+ sockaddr_xlat-Xraw.gen.test sockaddr_xlat-Xverbose.gen.test \ -+ socketcall.gen.test sockopt-sol_netlink.gen.test \ -+ sockopt-timestamp.gen.test splice.gen.test stat.gen.test \ -+ stat64.gen.test statfs.gen.test statfs64.gen.test \ -+ status-all.gen.test status-failed.gen.test \ - status-failed-long.gen.test status-failed-status.gen.test \ - status-none.gen.test status-successful.gen.test \ - status-successful-long.gen.test \ -@@ -6142,33 +6459,37 @@ - symlink.gen.test symlinkat.gen.test sync.gen.test \ - sync_file_range.gen.test sync_file_range2.gen.test \ - sysinfo.gen.test syslog.gen.test tee.gen.test tgkill.gen.test \ -+ tgkill--pidns-translation.gen.test \ - threads-execve--quiet-thread-execve.gen.test \ - threads-execve-q.gen.test threads-execve-qq.gen.test \ - threads-execve-qqq.gen.test time.gen.test \ - timer_create.gen.test timer_xettime.gen.test \ - timerfd_xettime.gen.test times.gen.test times-fail.gen.test \ -- tkill.gen.test trace_clock.gen.test trace_creds.gen.test \ -- trace_fstat.gen.test trace_fstatfs.gen.test \ -- trace_lstat.gen.test trace_personality_32.gen.test \ -- trace_personality_64.gen.test \ -+ tkill.gen.test tkill--pidns-translation.gen.test \ -+ trace_clock.gen.test trace_creds.gen.test trace_fstat.gen.test \ -+ trace_fstatfs.gen.test trace_lstat.gen.test \ -+ trace_personality_32.gen.test trace_personality_64.gen.test \ - trace_personality_regex_32.gen.test \ - trace_personality_regex_64.gen.test \ - trace_personality_regex_x32.gen.test \ - trace_personality_x32.gen.test trace_question.gen.test \ - trace_stat.gen.test trace_stat_like.gen.test \ - trace_statfs.gen.test trace_statfs_like.gen.test \ -- truncate.gen.test truncate64.gen.test ugetrlimit.gen.test \ -- umask.gen.test umoven-illptr.gen.test umovestr-illptr.gen.test \ -- umovestr3.gen.test umovestr_cached_adjacent.gen.test \ -- unlink.gen.test unlinkat.gen.test unshare.gen.test \ -- userfaultfd.gen.test ustat.gen.test utime.gen.test \ -- utimensat.gen.test utimensat-Xabbrev.gen.test \ -- utimensat-Xraw.gen.test utimensat-Xverbose.gen.test \ -- utimes.gen.test vfork-f.gen.test vhangup.gen.test \ -- vmsplice.gen.test wait4.gen.test wait4-v.gen.test \ -- waitid.gen.test waitid-v.gen.test waitpid.gen.test \ -- xattr.gen.test xattr-strings.gen.test xet_robust_list.gen.test \ -- xetitimer.gen.test xetpgid.gen.test xetpriority.gen.test \ -+ trie_test.gen.test truncate.gen.test truncate64.gen.test \ -+ ugetrlimit.gen.test umask.gen.test umoven-illptr.gen.test \ -+ umovestr-illptr.gen.test umovestr3.gen.test \ -+ umovestr_cached_adjacent.gen.test unlink.gen.test \ -+ unlinkat.gen.test unshare.gen.test userfaultfd.gen.test \ -+ ustat.gen.test utime.gen.test utimensat.gen.test \ -+ utimensat-Xabbrev.gen.test utimensat-Xraw.gen.test \ -+ utimensat-Xverbose.gen.test utimes.gen.test vfork-f.gen.test \ -+ vhangup.gen.test vmsplice.gen.test wait4.gen.test \ -+ wait4-v.gen.test waitid.gen.test waitid-v.gen.test \ -+ waitpid.gen.test xattr.gen.test xattr-strings.gen.test \ -+ xet_robust_list.gen.test \ -+ xet_robust_list--pidns-translation.gen.test xetitimer.gen.test \ -+ xetpgid.gen.test xetpgid--pidns-translation.gen.test \ -+ xetpriority.gen.test xetpriority--pidns-translation.gen.test \ - xettimeofday.gen.test - @ENABLE_STACKTRACE_FALSE@STACKTRACE_TESTS = - @ENABLE_STACKTRACE_TRUE@STACKTRACE_TESTS = strace-k.test \ -@@ -6198,6 +6519,7 @@ - int_0x80.test \ - inotify_init-y.test \ - ioctl.test \ -+ ioctl_block--pidns-translation.test \ - ioctl_evdev-success.test \ - ipc_msgbuf.test \ - kern_features-fault.test \ -@@ -6269,15 +6591,19 @@ - filtering_fd-syntax.test \ - filtering_syscall-syntax.test \ - first_exec_failure.test \ -+ fork--pidns-translation.test \ - get_regs.test \ -+ gettid--pidns-translation.test \ - inject-nf.test \ - interactive_block.test \ - kill_child.test \ - localtime.test \ - looping_threads.test \ -+ netlink_audit--pidns-translation.test \ - opipe.test \ - options-syntax.test \ - pc.test \ -+ pidns-cache.test \ - printpath-umovestr-legacy.test \ - printstrn-umoven-legacy.test \ - qual_fault-syntax.test \ -@@ -6350,6 +6676,7 @@ - filter_seccomp.in \ - filter_seccomp.sh \ - filter-unavailable.expected \ -+ fork--pidns-translation.awk \ - fstatat.c \ - fstatx.c \ - gen_pure_executables.sh \ -@@ -6935,10 +7262,18 @@ - @rm -f fcntl$(EXEEXT) - $(AM_V_CCLD)$(LINK) $(fcntl_OBJECTS) $(fcntl_LDADD) $(LIBS) - -+fcntl--pidns-translation$(EXEEXT): $(fcntl__pidns_translation_OBJECTS) $(fcntl__pidns_translation_DEPENDENCIES) $(EXTRA_fcntl__pidns_translation_DEPENDENCIES) -+ @rm -f fcntl--pidns-translation$(EXEEXT) -+ $(AM_V_CCLD)$(LINK) $(fcntl__pidns_translation_OBJECTS) $(fcntl__pidns_translation_LDADD) $(LIBS) -+ - fcntl64$(EXEEXT): $(fcntl64_OBJECTS) $(fcntl64_DEPENDENCIES) $(EXTRA_fcntl64_DEPENDENCIES) - @rm -f fcntl64$(EXEEXT) - $(AM_V_CCLD)$(LINK) $(fcntl64_OBJECTS) $(fcntl64_LDADD) $(LIBS) - -+fcntl64--pidns-translation$(EXEEXT): $(fcntl64__pidns_translation_OBJECTS) $(fcntl64__pidns_translation_DEPENDENCIES) $(EXTRA_fcntl64__pidns_translation_DEPENDENCIES) -+ @rm -f fcntl64--pidns-translation$(EXEEXT) -+ $(AM_V_CCLD)$(LINK) $(fcntl64__pidns_translation_OBJECTS) $(fcntl64__pidns_translation_LDADD) $(LIBS) -+ - fdatasync$(EXEEXT): $(fdatasync_OBJECTS) $(fdatasync_DEPENDENCIES) $(EXTRA_fdatasync_DEPENDENCIES) - @rm -f fdatasync$(EXEEXT) - $(AM_V_CCLD)$(LINK) $(fdatasync_OBJECTS) $(fdatasync_LDADD) $(LIBS) -@@ -6975,6 +7310,10 @@ - @rm -f flock$(EXEEXT) - $(AM_V_CCLD)$(LINK) $(flock_OBJECTS) $(flock_LDADD) $(LIBS) - -+fork--pidns-translation$(EXEEXT): $(fork__pidns_translation_OBJECTS) $(fork__pidns_translation_DEPENDENCIES) $(EXTRA_fork__pidns_translation_DEPENDENCIES) -+ @rm -f fork--pidns-translation$(EXEEXT) -+ $(AM_V_CCLD)$(LINK) $(fork__pidns_translation_OBJECTS) $(fork__pidns_translation_LDADD) $(LIBS) -+ - fork-f$(EXEEXT): $(fork_f_OBJECTS) $(fork_f_DEPENDENCIES) $(EXTRA_fork_f_DEPENDENCIES) - @rm -f fork-f$(EXEEXT) - $(AM_V_CCLD)$(LINK) $(fork_f_OBJECTS) $(fork_f_LDADD) $(LIBS) -@@ -7143,10 +7482,18 @@ - @rm -f getpgrp$(EXEEXT) - $(AM_V_CCLD)$(LINK) $(getpgrp_OBJECTS) $(getpgrp_LDADD) $(LIBS) - -+getpgrp--pidns-translation$(EXEEXT): $(getpgrp__pidns_translation_OBJECTS) $(getpgrp__pidns_translation_DEPENDENCIES) $(EXTRA_getpgrp__pidns_translation_DEPENDENCIES) -+ @rm -f getpgrp--pidns-translation$(EXEEXT) -+ $(AM_V_CCLD)$(LINK) $(getpgrp__pidns_translation_OBJECTS) $(getpgrp__pidns_translation_LDADD) $(LIBS) -+ - getpid$(EXEEXT): $(getpid_OBJECTS) $(getpid_DEPENDENCIES) $(EXTRA_getpid_DEPENDENCIES) - @rm -f getpid$(EXEEXT) - $(AM_V_CCLD)$(LINK) $(getpid_OBJECTS) $(getpid_LDADD) $(LIBS) - -+getpid--pidns-translation$(EXEEXT): $(getpid__pidns_translation_OBJECTS) $(getpid__pidns_translation_DEPENDENCIES) $(EXTRA_getpid__pidns_translation_DEPENDENCIES) -+ @rm -f getpid--pidns-translation$(EXEEXT) -+ $(AM_V_CCLD)$(LINK) $(getpid__pidns_translation_OBJECTS) $(getpid__pidns_translation_LDADD) $(LIBS) -+ - getppid$(EXEEXT): $(getppid_OBJECTS) $(getppid_DEPENDENCIES) $(EXTRA_getppid_DEPENDENCIES) - @rm -f getppid$(EXEEXT) - $(AM_V_CCLD)$(LINK) $(getppid_OBJECTS) $(getppid_LDADD) $(LIBS) -@@ -7183,6 +7530,10 @@ - @rm -f getsid$(EXEEXT) - $(AM_V_CCLD)$(LINK) $(getsid_OBJECTS) $(getsid_LDADD) $(LIBS) - -+getsid--pidns-translation$(EXEEXT): $(getsid__pidns_translation_OBJECTS) $(getsid__pidns_translation_DEPENDENCIES) $(EXTRA_getsid__pidns_translation_DEPENDENCIES) -+ @rm -f getsid--pidns-translation$(EXEEXT) -+ $(AM_V_CCLD)$(LINK) $(getsid__pidns_translation_OBJECTS) $(getsid__pidns_translation_LDADD) $(LIBS) -+ - getsockname$(EXEEXT): $(getsockname_OBJECTS) $(getsockname_DEPENDENCIES) $(EXTRA_getsockname_DEPENDENCIES) - @rm -f getsockname$(EXEEXT) - $(AM_V_CCLD)$(LINK) $(getsockname_OBJECTS) $(getsockname_LDADD) $(LIBS) -@@ -7191,6 +7542,10 @@ - @rm -f gettid$(EXEEXT) - $(AM_V_CCLD)$(LINK) $(gettid_OBJECTS) $(gettid_LDADD) $(LIBS) - -+gettid--pidns-translation$(EXEEXT): $(gettid__pidns_translation_OBJECTS) $(gettid__pidns_translation_DEPENDENCIES) $(EXTRA_gettid__pidns_translation_DEPENDENCIES) -+ @rm -f gettid--pidns-translation$(EXEEXT) -+ $(AM_V_CCLD)$(LINK) $(gettid__pidns_translation_OBJECTS) $(gettid__pidns_translation_LDADD) $(LIBS) -+ - getuid$(EXEEXT): $(getuid_OBJECTS) $(getuid_DEPENDENCIES) $(EXTRA_getuid_DEPENDENCIES) - @rm -f getuid$(EXEEXT) - $(AM_V_CCLD)$(LINK) $(getuid_OBJECTS) $(getuid_LDADD) $(LIBS) -@@ -7271,6 +7626,10 @@ - @rm -f ioctl_block$(EXEEXT) - $(AM_V_CCLD)$(LINK) $(ioctl_block_OBJECTS) $(ioctl_block_LDADD) $(LIBS) - -+ioctl_block--pidns-translation$(EXEEXT): $(ioctl_block__pidns_translation_OBJECTS) $(ioctl_block__pidns_translation_DEPENDENCIES) $(EXTRA_ioctl_block__pidns_translation_DEPENDENCIES) -+ @rm -f ioctl_block--pidns-translation$(EXEEXT) -+ $(AM_V_CCLD)$(LINK) $(ioctl_block__pidns_translation_OBJECTS) $(ioctl_block__pidns_translation_LDADD) $(LIBS) -+ - ioctl_dm$(EXEEXT): $(ioctl_dm_OBJECTS) $(ioctl_dm_DEPENDENCIES) $(EXTRA_ioctl_dm_DEPENDENCIES) - @rm -f ioctl_dm$(EXEEXT) - $(AM_V_CCLD)$(LINK) $(ioctl_dm_OBJECTS) $(ioctl_dm_LDADD) $(LIBS) -@@ -7571,6 +7930,10 @@ - @rm -f ioprio$(EXEEXT) - $(AM_V_CCLD)$(LINK) $(ioprio_OBJECTS) $(ioprio_LDADD) $(LIBS) - -+ioprio--pidns-translation$(EXEEXT): $(ioprio__pidns_translation_OBJECTS) $(ioprio__pidns_translation_DEPENDENCIES) $(EXTRA_ioprio__pidns_translation_DEPENDENCIES) -+ @rm -f ioprio--pidns-translation$(EXEEXT) -+ $(AM_V_CCLD)$(LINK) $(ioprio__pidns_translation_OBJECTS) $(ioprio__pidns_translation_LDADD) $(LIBS) -+ - ioprio-Xabbrev$(EXEEXT): $(ioprio_Xabbrev_OBJECTS) $(ioprio_Xabbrev_DEPENDENCIES) $(EXTRA_ioprio_Xabbrev_DEPENDENCIES) - @rm -f ioprio-Xabbrev$(EXEEXT) - $(AM_V_CCLD)$(LINK) $(ioprio_Xabbrev_OBJECTS) $(ioprio_Xabbrev_LDADD) $(LIBS) -@@ -7667,6 +8030,10 @@ - @rm -f kcmp-y$(EXEEXT) - $(AM_V_CCLD)$(LINK) $(kcmp_y_OBJECTS) $(kcmp_y_LDADD) $(LIBS) - -+kcmp-y--pidns-translation$(EXEEXT): $(kcmp_y__pidns_translation_OBJECTS) $(kcmp_y__pidns_translation_DEPENDENCIES) $(EXTRA_kcmp_y__pidns_translation_DEPENDENCIES) -+ @rm -f kcmp-y--pidns-translation$(EXEEXT) -+ $(AM_V_CCLD)$(LINK) $(kcmp_y__pidns_translation_OBJECTS) $(kcmp_y__pidns_translation_LDADD) $(LIBS) -+ - kern_features$(EXEEXT): $(kern_features_OBJECTS) $(kern_features_DEPENDENCIES) $(EXTRA_kern_features_DEPENDENCIES) - @rm -f kern_features$(EXEEXT) - $(AM_V_CCLD)$(LINK) $(kern_features_OBJECTS) $(kern_features_LDADD) $(LIBS) -@@ -7715,6 +8082,10 @@ - @rm -f kill$(EXEEXT) - $(AM_V_CCLD)$(LINK) $(kill_OBJECTS) $(kill_LDADD) $(LIBS) - -+kill--pidns-translation$(EXEEXT): $(kill__pidns_translation_OBJECTS) $(kill__pidns_translation_DEPENDENCIES) $(EXTRA_kill__pidns_translation_DEPENDENCIES) -+ @rm -f kill--pidns-translation$(EXEEXT) -+ $(AM_V_CCLD)$(LINK) $(kill__pidns_translation_OBJECTS) $(kill__pidns_translation_LDADD) $(LIBS) -+ - kill_child$(EXEEXT): $(kill_child_OBJECTS) $(kill_child_DEPENDENCIES) $(EXTRA_kill_child_DEPENDENCIES) - @rm -f kill_child$(EXEEXT) - $(AM_V_CCLD)$(LINK) $(kill_child_OBJECTS) $(kill_child_LDADD) $(LIBS) -@@ -7823,6 +8194,10 @@ - @rm -f migrate_pages$(EXEEXT) - $(AM_V_CCLD)$(LINK) $(migrate_pages_OBJECTS) $(migrate_pages_LDADD) $(LIBS) - -+migrate_pages--pidns-translation$(EXEEXT): $(migrate_pages__pidns_translation_OBJECTS) $(migrate_pages__pidns_translation_DEPENDENCIES) $(EXTRA_migrate_pages__pidns_translation_DEPENDENCIES) -+ @rm -f migrate_pages--pidns-translation$(EXEEXT) -+ $(AM_V_CCLD)$(LINK) $(migrate_pages__pidns_translation_OBJECTS) $(migrate_pages__pidns_translation_LDADD) $(LIBS) -+ - mincore$(EXEEXT): $(mincore_OBJECTS) $(mincore_DEPENDENCIES) $(EXTRA_mincore_DEPENDENCIES) - @rm -f mincore$(EXEEXT) - $(AM_V_CCLD)$(LINK) $(mincore_OBJECTS) $(mincore_LDADD) $(LIBS) -@@ -7935,6 +8310,10 @@ - @rm -f move_pages$(EXEEXT) - $(AM_V_CCLD)$(LINK) $(move_pages_OBJECTS) $(move_pages_LDADD) $(LIBS) - -+move_pages--pidns-translation$(EXEEXT): $(move_pages__pidns_translation_OBJECTS) $(move_pages__pidns_translation_DEPENDENCIES) $(EXTRA_move_pages__pidns_translation_DEPENDENCIES) -+ @rm -f move_pages--pidns-translation$(EXEEXT) -+ $(AM_V_CCLD)$(LINK) $(move_pages__pidns_translation_OBJECTS) $(move_pages__pidns_translation_LDADD) $(LIBS) -+ - move_pages-Xabbrev$(EXEEXT): $(move_pages_Xabbrev_OBJECTS) $(move_pages_Xabbrev_DEPENDENCIES) $(EXTRA_move_pages_Xabbrev_DEPENDENCIES) - @rm -f move_pages-Xabbrev$(EXEEXT) - $(AM_V_CCLD)$(LINK) $(move_pages_Xabbrev_OBJECTS) $(move_pages_Xabbrev_LDADD) $(LIBS) -@@ -8027,6 +8406,10 @@ - @rm -f net-sockaddr$(EXEEXT) - $(AM_V_CCLD)$(LINK) $(net_sockaddr_OBJECTS) $(net_sockaddr_LDADD) $(LIBS) - -+net-sockaddr--pidns-translation$(EXEEXT): $(net_sockaddr__pidns_translation_OBJECTS) $(net_sockaddr__pidns_translation_DEPENDENCIES) $(EXTRA_net_sockaddr__pidns_translation_DEPENDENCIES) -+ @rm -f net-sockaddr--pidns-translation$(EXEEXT) -+ $(AM_V_CCLD)$(LINK) $(net_sockaddr__pidns_translation_OBJECTS) $(net_sockaddr__pidns_translation_LDADD) $(LIBS) -+ - net-tpacket_req$(EXEEXT): $(net_tpacket_req_OBJECTS) $(net_tpacket_req_DEPENDENCIES) $(EXTRA_net_tpacket_req_DEPENDENCIES) - @rm -f net-tpacket_req$(EXEEXT) - $(AM_V_CCLD)$(LINK) $(net_tpacket_req_OBJECTS) $(net_tpacket_req_LDADD) $(LIBS) -@@ -8063,6 +8446,10 @@ - @rm -f netlink_audit$(EXEEXT) - $(AM_V_CCLD)$(LINK) $(netlink_audit_OBJECTS) $(netlink_audit_LDADD) $(LIBS) - -+netlink_audit--pidns-translation$(EXEEXT): $(netlink_audit__pidns_translation_OBJECTS) $(netlink_audit__pidns_translation_DEPENDENCIES) $(EXTRA_netlink_audit__pidns_translation_DEPENDENCIES) -+ @rm -f netlink_audit--pidns-translation$(EXEEXT) -+ $(AM_V_CCLD)$(LINK) $(netlink_audit__pidns_translation_OBJECTS) $(netlink_audit__pidns_translation_LDADD) $(LIBS) -+ - netlink_crypto$(EXEEXT): $(netlink_crypto_OBJECTS) $(netlink_crypto_DEPENDENCIES) $(EXTRA_netlink_crypto_DEPENDENCIES) - @rm -f netlink_crypto$(EXEEXT) - $(AM_V_CCLD)$(LINK) $(netlink_crypto_OBJECTS) $(netlink_crypto_LDADD) $(LIBS) -@@ -8479,6 +8866,10 @@ - @rm -f pidfd_open--decode-fd-socket$(EXEEXT) - $(AM_V_CCLD)$(LINK) $(pidfd_open__decode_fd_socket_OBJECTS) $(pidfd_open__decode_fd_socket_LDADD) $(LIBS) - -+pidfd_open--pidns-translation$(EXEEXT): $(pidfd_open__pidns_translation_OBJECTS) $(pidfd_open__pidns_translation_DEPENDENCIES) $(EXTRA_pidfd_open__pidns_translation_DEPENDENCIES) -+ @rm -f pidfd_open--pidns-translation$(EXEEXT) -+ $(AM_V_CCLD)$(LINK) $(pidfd_open__pidns_translation_OBJECTS) $(pidfd_open__pidns_translation_LDADD) $(LIBS) -+ - pidfd_open-P$(EXEEXT): $(pidfd_open_P_OBJECTS) $(pidfd_open_P_DEPENDENCIES) $(EXTRA_pidfd_open_P_DEPENDENCIES) - @rm -f pidfd_open-P$(EXEEXT) - $(AM_V_CCLD)$(LINK) $(pidfd_open_P_OBJECTS) $(pidfd_open_P_LDADD) $(LIBS) -@@ -8495,6 +8886,14 @@ - @rm -f pidfd_send_signal$(EXEEXT) - $(AM_V_CCLD)$(LINK) $(pidfd_send_signal_OBJECTS) $(pidfd_send_signal_LDADD) $(LIBS) - -+pidfd_send_signal--pidns-translation$(EXEEXT): $(pidfd_send_signal__pidns_translation_OBJECTS) $(pidfd_send_signal__pidns_translation_DEPENDENCIES) $(EXTRA_pidfd_send_signal__pidns_translation_DEPENDENCIES) -+ @rm -f pidfd_send_signal--pidns-translation$(EXEEXT) -+ $(AM_V_CCLD)$(LINK) $(pidfd_send_signal__pidns_translation_OBJECTS) $(pidfd_send_signal__pidns_translation_LDADD) $(LIBS) -+ -+pidns-cache$(EXEEXT): $(pidns_cache_OBJECTS) $(pidns_cache_DEPENDENCIES) $(EXTRA_pidns_cache_DEPENDENCIES) -+ @rm -f pidns-cache$(EXEEXT) -+ $(AM_V_CCLD)$(LINK) $(pidns_cache_OBJECTS) $(pidns_cache_LDADD) $(LIBS) -+ - pipe$(EXEEXT): $(pipe_OBJECTS) $(pipe_DEPENDENCIES) $(EXTRA_pipe_DEPENDENCIES) - @rm -f pipe$(EXEEXT) - $(AM_V_CCLD)$(LINK) $(pipe_OBJECTS) $(pipe_LDADD) $(LIBS) -@@ -8647,14 +9046,26 @@ - @rm -f prlimit64$(EXEEXT) - $(AM_V_CCLD)$(LINK) $(prlimit64_OBJECTS) $(prlimit64_LDADD) $(LIBS) - -+prlimit64--pidns-translation$(EXEEXT): $(prlimit64__pidns_translation_OBJECTS) $(prlimit64__pidns_translation_DEPENDENCIES) $(EXTRA_prlimit64__pidns_translation_DEPENDENCIES) -+ @rm -f prlimit64--pidns-translation$(EXEEXT) -+ $(AM_V_CCLD)$(LINK) $(prlimit64__pidns_translation_OBJECTS) $(prlimit64__pidns_translation_LDADD) $(LIBS) -+ - process_vm_readv$(EXEEXT): $(process_vm_readv_OBJECTS) $(process_vm_readv_DEPENDENCIES) $(EXTRA_process_vm_readv_DEPENDENCIES) - @rm -f process_vm_readv$(EXEEXT) - $(AM_V_CCLD)$(LINK) $(process_vm_readv_OBJECTS) $(process_vm_readv_LDADD) $(LIBS) - -+process_vm_readv--pidns-translation$(EXEEXT): $(process_vm_readv__pidns_translation_OBJECTS) $(process_vm_readv__pidns_translation_DEPENDENCIES) $(EXTRA_process_vm_readv__pidns_translation_DEPENDENCIES) -+ @rm -f process_vm_readv--pidns-translation$(EXEEXT) -+ $(AM_V_CCLD)$(LINK) $(process_vm_readv__pidns_translation_OBJECTS) $(process_vm_readv__pidns_translation_LDADD) $(LIBS) -+ - process_vm_writev$(EXEEXT): $(process_vm_writev_OBJECTS) $(process_vm_writev_DEPENDENCIES) $(EXTRA_process_vm_writev_DEPENDENCIES) - @rm -f process_vm_writev$(EXEEXT) - $(AM_V_CCLD)$(LINK) $(process_vm_writev_OBJECTS) $(process_vm_writev_LDADD) $(LIBS) - -+process_vm_writev--pidns-translation$(EXEEXT): $(process_vm_writev__pidns_translation_OBJECTS) $(process_vm_writev__pidns_translation_DEPENDENCIES) $(EXTRA_process_vm_writev__pidns_translation_DEPENDENCIES) -+ @rm -f process_vm_writev--pidns-translation$(EXEEXT) -+ $(AM_V_CCLD)$(LINK) $(process_vm_writev__pidns_translation_OBJECTS) $(process_vm_writev__pidns_translation_LDADD) $(LIBS) -+ - pselect6$(EXEEXT): $(pselect6_OBJECTS) $(pselect6_DEPENDENCIES) $(EXTRA_pselect6_DEPENDENCIES) - @rm -f pselect6$(EXEEXT) - $(AM_V_CCLD)$(LINK) $(pselect6_OBJECTS) $(pselect6_LDADD) $(LIBS) -@@ -8847,6 +9258,10 @@ - @rm -f rt_sigqueueinfo$(EXEEXT) - $(AM_V_CCLD)$(LINK) $(rt_sigqueueinfo_OBJECTS) $(rt_sigqueueinfo_LDADD) $(LIBS) - -+rt_sigqueueinfo--pidns-translation$(EXEEXT): $(rt_sigqueueinfo__pidns_translation_OBJECTS) $(rt_sigqueueinfo__pidns_translation_DEPENDENCIES) $(EXTRA_rt_sigqueueinfo__pidns_translation_DEPENDENCIES) -+ @rm -f rt_sigqueueinfo--pidns-translation$(EXEEXT) -+ $(AM_V_CCLD)$(LINK) $(rt_sigqueueinfo__pidns_translation_OBJECTS) $(rt_sigqueueinfo__pidns_translation_LDADD) $(LIBS) -+ - rt_sigreturn$(EXEEXT): $(rt_sigreturn_OBJECTS) $(rt_sigreturn_DEPENDENCIES) $(EXTRA_rt_sigreturn_DEPENDENCIES) - @rm -f rt_sigreturn$(EXEEXT) - $(AM_V_CCLD)$(LINK) $(rt_sigreturn_OBJECTS) $(rt_sigreturn_LDADD) $(LIBS) -@@ -8863,6 +9278,10 @@ - @rm -f rt_tgsigqueueinfo$(EXEEXT) - $(AM_V_CCLD)$(LINK) $(rt_tgsigqueueinfo_OBJECTS) $(rt_tgsigqueueinfo_LDADD) $(LIBS) - -+rt_tgsigqueueinfo--pidns-translation$(EXEEXT): $(rt_tgsigqueueinfo__pidns_translation_OBJECTS) $(rt_tgsigqueueinfo__pidns_translation_DEPENDENCIES) $(EXTRA_rt_tgsigqueueinfo__pidns_translation_DEPENDENCIES) -+ @rm -f rt_tgsigqueueinfo--pidns-translation$(EXEEXT) -+ $(AM_V_CCLD)$(LINK) $(rt_tgsigqueueinfo__pidns_translation_OBJECTS) $(rt_tgsigqueueinfo__pidns_translation_LDADD) $(LIBS) -+ - run_expect_termsig$(EXEEXT): $(run_expect_termsig_OBJECTS) $(run_expect_termsig_DEPENDENCIES) $(EXTRA_run_expect_termsig_DEPENDENCIES) - @rm -f run_expect_termsig$(EXEEXT) - $(AM_V_CCLD)$(LINK) $(run_expect_termsig_OBJECTS) $(run_expect_termsig_LDADD) $(LIBS) -@@ -8903,18 +9322,34 @@ - @rm -f sched_xetaffinity$(EXEEXT) - $(AM_V_CCLD)$(LINK) $(sched_xetaffinity_OBJECTS) $(sched_xetaffinity_LDADD) $(LIBS) - -+sched_xetaffinity--pidns-translation$(EXEEXT): $(sched_xetaffinity__pidns_translation_OBJECTS) $(sched_xetaffinity__pidns_translation_DEPENDENCIES) $(EXTRA_sched_xetaffinity__pidns_translation_DEPENDENCIES) -+ @rm -f sched_xetaffinity--pidns-translation$(EXEEXT) -+ $(AM_V_CCLD)$(LINK) $(sched_xetaffinity__pidns_translation_OBJECTS) $(sched_xetaffinity__pidns_translation_LDADD) $(LIBS) -+ - sched_xetattr$(EXEEXT): $(sched_xetattr_OBJECTS) $(sched_xetattr_DEPENDENCIES) $(EXTRA_sched_xetattr_DEPENDENCIES) - @rm -f sched_xetattr$(EXEEXT) - $(AM_V_CCLD)$(LINK) $(sched_xetattr_OBJECTS) $(sched_xetattr_LDADD) $(LIBS) - -+sched_xetattr--pidns-translation$(EXEEXT): $(sched_xetattr__pidns_translation_OBJECTS) $(sched_xetattr__pidns_translation_DEPENDENCIES) $(EXTRA_sched_xetattr__pidns_translation_DEPENDENCIES) -+ @rm -f sched_xetattr--pidns-translation$(EXEEXT) -+ $(AM_V_CCLD)$(LINK) $(sched_xetattr__pidns_translation_OBJECTS) $(sched_xetattr__pidns_translation_LDADD) $(LIBS) -+ - sched_xetparam$(EXEEXT): $(sched_xetparam_OBJECTS) $(sched_xetparam_DEPENDENCIES) $(EXTRA_sched_xetparam_DEPENDENCIES) - @rm -f sched_xetparam$(EXEEXT) - $(AM_V_CCLD)$(LINK) $(sched_xetparam_OBJECTS) $(sched_xetparam_LDADD) $(LIBS) - -+sched_xetparam--pidns-translation$(EXEEXT): $(sched_xetparam__pidns_translation_OBJECTS) $(sched_xetparam__pidns_translation_DEPENDENCIES) $(EXTRA_sched_xetparam__pidns_translation_DEPENDENCIES) -+ @rm -f sched_xetparam--pidns-translation$(EXEEXT) -+ $(AM_V_CCLD)$(LINK) $(sched_xetparam__pidns_translation_OBJECTS) $(sched_xetparam__pidns_translation_LDADD) $(LIBS) -+ - sched_xetscheduler$(EXEEXT): $(sched_xetscheduler_OBJECTS) $(sched_xetscheduler_DEPENDENCIES) $(EXTRA_sched_xetscheduler_DEPENDENCIES) - @rm -f sched_xetscheduler$(EXEEXT) - $(AM_V_CCLD)$(LINK) $(sched_xetscheduler_OBJECTS) $(sched_xetscheduler_LDADD) $(LIBS) - -+sched_xetscheduler--pidns-translation$(EXEEXT): $(sched_xetscheduler__pidns_translation_OBJECTS) $(sched_xetscheduler__pidns_translation_DEPENDENCIES) $(EXTRA_sched_xetscheduler__pidns_translation_DEPENDENCIES) -+ @rm -f sched_xetscheduler--pidns-translation$(EXEEXT) -+ $(AM_V_CCLD)$(LINK) $(sched_xetscheduler__pidns_translation_OBJECTS) $(sched_xetscheduler__pidns_translation_LDADD) $(LIBS) -+ - sched_yield$(EXEEXT): $(sched_yield_OBJECTS) $(sched_yield_DEPENDENCIES) $(EXTRA_sched_yield_DEPENDENCIES) - @rm -f sched_yield$(EXEEXT) - $(AM_V_CCLD)$(LINK) $(sched_yield_OBJECTS) $(sched_yield_LDADD) $(LIBS) -@@ -9127,6 +9562,10 @@ - @rm -f signal_receive$(EXEEXT) - $(AM_V_CCLD)$(LINK) $(signal_receive_OBJECTS) $(signal_receive_LDADD) $(LIBS) - -+signal_receive--pidns-translation$(EXEEXT): $(signal_receive__pidns_translation_OBJECTS) $(signal_receive__pidns_translation_DEPENDENCIES) $(EXTRA_signal_receive__pidns_translation_DEPENDENCIES) -+ @rm -f signal_receive--pidns-translation$(EXEEXT) -+ $(AM_V_CCLD)$(LINK) $(signal_receive__pidns_translation_OBJECTS) $(signal_receive__pidns_translation_LDADD) $(LIBS) -+ - signalfd4$(EXEEXT): $(signalfd4_OBJECTS) $(signalfd4_DEPENDENCIES) $(EXTRA_signalfd4_DEPENDENCIES) - @rm -f signalfd4$(EXEEXT) - $(AM_V_CCLD)$(LINK) $(signalfd4_OBJECTS) $(signalfd4_LDADD) $(LIBS) -@@ -9163,6 +9602,10 @@ - @rm -f so_peercred$(EXEEXT) - $(AM_V_CCLD)$(LINK) $(so_peercred_OBJECTS) $(so_peercred_LDADD) $(LIBS) - -+so_peercred--pidns-translation$(EXEEXT): $(so_peercred__pidns_translation_OBJECTS) $(so_peercred__pidns_translation_DEPENDENCIES) $(EXTRA_so_peercred__pidns_translation_DEPENDENCIES) -+ @rm -f so_peercred--pidns-translation$(EXEEXT) -+ $(AM_V_CCLD)$(LINK) $(so_peercred__pidns_translation_OBJECTS) $(so_peercred__pidns_translation_LDADD) $(LIBS) -+ - so_peercred-Xabbrev$(EXEEXT): $(so_peercred_Xabbrev_OBJECTS) $(so_peercred_Xabbrev_DEPENDENCIES) $(EXTRA_so_peercred_Xabbrev_DEPENDENCIES) - @rm -f so_peercred-Xabbrev$(EXEEXT) - $(AM_V_CCLD)$(LINK) $(so_peercred_Xabbrev_OBJECTS) $(so_peercred_Xabbrev_LDADD) $(LIBS) -@@ -9367,6 +9810,10 @@ - @rm -f tgkill$(EXEEXT) - $(AM_V_CCLD)$(LINK) $(tgkill_OBJECTS) $(tgkill_LDADD) $(LIBS) - -+tgkill--pidns-translation$(EXEEXT): $(tgkill__pidns_translation_OBJECTS) $(tgkill__pidns_translation_DEPENDENCIES) $(EXTRA_tgkill__pidns_translation_DEPENDENCIES) -+ @rm -f tgkill--pidns-translation$(EXEEXT) -+ $(AM_V_CCLD)$(LINK) $(tgkill__pidns_translation_OBJECTS) $(tgkill__pidns_translation_LDADD) $(LIBS) -+ - threads-execve$(EXEEXT): $(threads_execve_OBJECTS) $(threads_execve_DEPENDENCIES) $(EXTRA_threads_execve_DEPENDENCIES) - @rm -f threads-execve$(EXEEXT) - $(AM_V_CCLD)$(LINK) $(threads_execve_OBJECTS) $(threads_execve_LDADD) $(LIBS) -@@ -9415,10 +9862,18 @@ - @rm -f tkill$(EXEEXT) - $(AM_V_CCLD)$(LINK) $(tkill_OBJECTS) $(tkill_LDADD) $(LIBS) - -+tkill--pidns-translation$(EXEEXT): $(tkill__pidns_translation_OBJECTS) $(tkill__pidns_translation_DEPENDENCIES) $(EXTRA_tkill__pidns_translation_DEPENDENCIES) -+ @rm -f tkill--pidns-translation$(EXEEXT) -+ $(AM_V_CCLD)$(LINK) $(tkill__pidns_translation_OBJECTS) $(tkill__pidns_translation_LDADD) $(LIBS) -+ - tracer_ppid_pgid_sid$(EXEEXT): $(tracer_ppid_pgid_sid_OBJECTS) $(tracer_ppid_pgid_sid_DEPENDENCIES) $(EXTRA_tracer_ppid_pgid_sid_DEPENDENCIES) - @rm -f tracer_ppid_pgid_sid$(EXEEXT) - $(AM_V_CCLD)$(LINK) $(tracer_ppid_pgid_sid_OBJECTS) $(tracer_ppid_pgid_sid_LDADD) $(LIBS) - -+trie_test$(EXEEXT): $(trie_test_OBJECTS) $(trie_test_DEPENDENCIES) $(EXTRA_trie_test_DEPENDENCIES) -+ @rm -f trie_test$(EXEEXT) -+ $(AM_V_CCLD)$(trie_test_LINK) $(trie_test_OBJECTS) $(trie_test_LDADD) $(LIBS) -+ - truncate$(EXEEXT): $(truncate_OBJECTS) $(truncate_DEPENDENCIES) $(EXTRA_truncate_DEPENDENCIES) - @rm -f truncate$(EXEEXT) - $(AM_V_CCLD)$(LINK) $(truncate_OBJECTS) $(truncate_LDADD) $(LIBS) -@@ -9579,6 +10034,10 @@ - @rm -f xet_robust_list$(EXEEXT) - $(AM_V_CCLD)$(LINK) $(xet_robust_list_OBJECTS) $(xet_robust_list_LDADD) $(LIBS) - -+xet_robust_list--pidns-translation$(EXEEXT): $(xet_robust_list__pidns_translation_OBJECTS) $(xet_robust_list__pidns_translation_DEPENDENCIES) $(EXTRA_xet_robust_list__pidns_translation_DEPENDENCIES) -+ @rm -f xet_robust_list--pidns-translation$(EXEEXT) -+ $(AM_V_CCLD)$(LINK) $(xet_robust_list__pidns_translation_OBJECTS) $(xet_robust_list__pidns_translation_LDADD) $(LIBS) -+ - xet_thread_area_x86$(EXEEXT): $(xet_thread_area_x86_OBJECTS) $(xet_thread_area_x86_DEPENDENCIES) $(EXTRA_xet_thread_area_x86_DEPENDENCIES) - @rm -f xet_thread_area_x86$(EXEEXT) - $(AM_V_CCLD)$(LINK) $(xet_thread_area_x86_OBJECTS) $(xet_thread_area_x86_LDADD) $(LIBS) -@@ -9591,10 +10050,18 @@ - @rm -f xetpgid$(EXEEXT) - $(AM_V_CCLD)$(LINK) $(xetpgid_OBJECTS) $(xetpgid_LDADD) $(LIBS) - -+xetpgid--pidns-translation$(EXEEXT): $(xetpgid__pidns_translation_OBJECTS) $(xetpgid__pidns_translation_DEPENDENCIES) $(EXTRA_xetpgid__pidns_translation_DEPENDENCIES) -+ @rm -f xetpgid--pidns-translation$(EXEEXT) -+ $(AM_V_CCLD)$(LINK) $(xetpgid__pidns_translation_OBJECTS) $(xetpgid__pidns_translation_LDADD) $(LIBS) -+ - xetpriority$(EXEEXT): $(xetpriority_OBJECTS) $(xetpriority_DEPENDENCIES) $(EXTRA_xetpriority_DEPENDENCIES) - @rm -f xetpriority$(EXEEXT) - $(AM_V_CCLD)$(LINK) $(xetpriority_OBJECTS) $(xetpriority_LDADD) $(LIBS) - -+xetpriority--pidns-translation$(EXEEXT): $(xetpriority__pidns_translation_OBJECTS) $(xetpriority__pidns_translation_DEPENDENCIES) $(EXTRA_xetpriority__pidns_translation_DEPENDENCIES) -+ @rm -f xetpriority--pidns-translation$(EXEEXT) -+ $(AM_V_CCLD)$(LINK) $(xetpriority__pidns_translation_OBJECTS) $(xetpriority__pidns_translation_LDADD) $(LIBS) -+ - xettimeofday$(EXEEXT): $(xettimeofday_OBJECTS) $(xettimeofday_DEPENDENCIES) $(EXTRA_xettimeofday_DEPENDENCIES) - @rm -f xettimeofday$(EXEEXT) - $(AM_V_CCLD)$(LINK) $(xettimeofday_OBJECTS) $(xettimeofday_LDADD) $(LIBS) -@@ -9714,7 +10181,9 @@ - @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/fchown.Po@am__quote@ # am--include-marker - @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/fchown32.Po@am__quote@ # am--include-marker - @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/fchownat.Po@am__quote@ # am--include-marker -+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/fcntl--pidns-translation.Po@am__quote@ # am--include-marker - @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/fcntl.Po@am__quote@ # am--include-marker -+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/fcntl64--pidns-translation.Po@am__quote@ # am--include-marker - @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/fcntl64.Po@am__quote@ # am--include-marker - @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/fdatasync.Po@am__quote@ # am--include-marker - @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/fflush.Po@am__quote@ # am--include-marker -@@ -9725,6 +10194,7 @@ - @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/filter_seccomp-perf.Po@am__quote@ # am--include-marker - @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/finit_module.Po@am__quote@ # am--include-marker - @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/flock.Po@am__quote@ # am--include-marker -+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/fork--pidns-translation.Po@am__quote@ # am--include-marker - @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/fork-f.Po@am__quote@ # am--include-marker - @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/fsconfig-P.Po@am__quote@ # am--include-marker - @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/fsconfig.Po@am__quote@ # am--include-marker -@@ -9766,7 +10236,9 @@ - @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/getgroups.Po@am__quote@ # am--include-marker - @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/getgroups32.Po@am__quote@ # am--include-marker - @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/getpeername.Po@am__quote@ # am--include-marker -+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/getpgrp--pidns-translation.Po@am__quote@ # am--include-marker - @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/getpgrp.Po@am__quote@ # am--include-marker -+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/getpid--pidns-translation.Po@am__quote@ # am--include-marker - @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/getpid.Po@am__quote@ # am--include-marker - @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/getppid.Po@am__quote@ # am--include-marker - @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/getrandom.Po@am__quote@ # am--include-marker -@@ -9776,8 +10248,10 @@ - @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/getresuid32.Po@am__quote@ # am--include-marker - @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/getrlimit.Po@am__quote@ # am--include-marker - @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/getrusage.Po@am__quote@ # am--include-marker -+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/getsid--pidns-translation.Po@am__quote@ # am--include-marker - @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/getsid.Po@am__quote@ # am--include-marker - @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/getsockname.Po@am__quote@ # am--include-marker -+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/gettid--pidns-translation.Po@am__quote@ # am--include-marker - @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/gettid.Po@am__quote@ # am--include-marker - @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/getuid.Po@am__quote@ # am--include-marker - @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/getuid32.Po@am__quote@ # am--include-marker -@@ -9798,6 +10272,7 @@ - @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/io_uring_register.Po@am__quote@ # am--include-marker - @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/io_uring_setup.Po@am__quote@ # am--include-marker - @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ioctl.Po@am__quote@ # am--include-marker -+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ioctl_block--pidns-translation.Po@am__quote@ # am--include-marker - @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ioctl_block.Po@am__quote@ # am--include-marker - @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ioctl_dm-v.Po@am__quote@ # am--include-marker - @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ioctl_dm.Po@am__quote@ # am--include-marker -@@ -9873,6 +10348,7 @@ - @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ioctl_watchdog.Po@am__quote@ # am--include-marker - @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ioperm.Po@am__quote@ # am--include-marker - @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/iopl.Po@am__quote@ # am--include-marker -+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ioprio--pidns-translation.Po@am__quote@ # am--include-marker - @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ioprio-Xabbrev.Po@am__quote@ # am--include-marker - @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ioprio-Xraw.Po@am__quote@ # am--include-marker - @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ioprio-Xverbose.Po@am__quote@ # am--include-marker -@@ -9896,6 +10372,7 @@ - @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ipc_shm-Xverbose.Po@am__quote@ # am--include-marker - @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ipc_shm.Po@am__quote@ # am--include-marker - @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/is_linux_mips_n64.Po@am__quote@ # am--include-marker -+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/kcmp-y--pidns-translation.Po@am__quote@ # am--include-marker - @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/kcmp-y.Po@am__quote@ # am--include-marker - @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/kcmp.Po@am__quote@ # am--include-marker - @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/kern_features.Po@am__quote@ # am--include-marker -@@ -9909,6 +10386,7 @@ - @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/keyctl-Xraw.Po@am__quote@ # am--include-marker - @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/keyctl-Xverbose.Po@am__quote@ # am--include-marker - @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/keyctl.Po@am__quote@ # am--include-marker -+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/kill--pidns-translation.Po@am__quote@ # am--include-marker - @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/kill.Po@am__quote@ # am--include-marker - @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/kill_child.Po@am__quote@ # am--include-marker - @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ksysent.Po@am__quote@ # am--include-marker -@@ -9946,6 +10424,7 @@ - @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libtests_a-test_printstrn.Po@am__quote@ # am--include-marker - @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libtests_a-test_ucopy.Po@am__quote@ # am--include-marker - @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libtests_a-tprintf.Po@am__quote@ # am--include-marker -+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libtests_a-xmalloc_for_tests.Po@am__quote@ # am--include-marker - @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/link.Po@am__quote@ # am--include-marker - @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/linkat.Po@am__quote@ # am--include-marker - @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/list_sigaction_signum.Po@am__quote@ # am--include-marker -@@ -9968,6 +10447,7 @@ - @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/memfd_create-Xraw.Po@am__quote@ # am--include-marker - @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/memfd_create-Xverbose.Po@am__quote@ # am--include-marker - @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/memfd_create.Po@am__quote@ # am--include-marker -+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/migrate_pages--pidns-translation.Po@am__quote@ # am--include-marker - @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/migrate_pages.Po@am__quote@ # am--include-marker - @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/mincore.Po@am__quote@ # am--include-marker - @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/mkdir.Po@am__quote@ # am--include-marker -@@ -9996,6 +10476,7 @@ - @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/mount.Po@am__quote@ # am--include-marker - @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/move_mount-P.Po@am__quote@ # am--include-marker - @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/move_mount.Po@am__quote@ # am--include-marker -+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/move_pages--pidns-translation.Po@am__quote@ # am--include-marker - @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/move_pages-Xabbrev.Po@am__quote@ # am--include-marker - @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/move_pages-Xraw.Po@am__quote@ # am--include-marker - @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/move_pages-Xverbose.Po@am__quote@ # am--include-marker -@@ -10019,6 +10500,7 @@ - @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/net-packet_mreq-Xraw.Po@am__quote@ # am--include-marker - @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/net-packet_mreq-Xverbose.Po@am__quote@ # am--include-marker - @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/net-packet_mreq.Po@am__quote@ # am--include-marker -+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/net-sockaddr--pidns-translation.Po@am__quote@ # am--include-marker - @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/net-sockaddr.Po@am__quote@ # am--include-marker - @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/net-tpacket_req.Po@am__quote@ # am--include-marker - @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/net-tpacket_stats-success.Po@am__quote@ # am--include-marker -@@ -10028,6 +10510,7 @@ - @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/net-yy-inet6.Po@am__quote@ # am--include-marker - @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/net-yy-netlink.Po@am__quote@ # am--include-marker - @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/net-yy-unix.Po@am__quote@ # am--include-marker -+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/netlink_audit--pidns-translation.Po@am__quote@ # am--include-marker - @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/netlink_audit.Po@am__quote@ # am--include-marker - @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/netlink_crypto.Po@am__quote@ # am--include-marker - @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/netlink_generic.Po@am__quote@ # am--include-marker -@@ -10132,11 +10615,14 @@ - @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/pidfd_open--decode-fd-path.Po@am__quote@ # am--include-marker - @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/pidfd_open--decode-fd-pidfd.Po@am__quote@ # am--include-marker - @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/pidfd_open--decode-fd-socket.Po@am__quote@ # am--include-marker -+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/pidfd_open--pidns-translation.Po@am__quote@ # am--include-marker - @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/pidfd_open-P.Po@am__quote@ # am--include-marker - @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/pidfd_open-y.Po@am__quote@ # am--include-marker - @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/pidfd_open-yy.Po@am__quote@ # am--include-marker - @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/pidfd_open.Po@am__quote@ # am--include-marker -+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/pidfd_send_signal--pidns-translation.Po@am__quote@ # am--include-marker - @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/pidfd_send_signal.Po@am__quote@ # am--include-marker -+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/pidns-cache.Po@am__quote@ # am--include-marker - @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/pipe.Po@am__quote@ # am--include-marker - @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/pipe2.Po@am__quote@ # am--include-marker - @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/pkey_alloc.Po@am__quote@ # am--include-marker -@@ -10174,8 +10660,11 @@ - @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/printstrn-umoven-peekdata.Po@am__quote@ # am--include-marker - @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/printstrn-umoven-undumpable.Po@am__quote@ # am--include-marker - @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/printstrn-umoven.Po@am__quote@ # am--include-marker -+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/prlimit64--pidns-translation.Po@am__quote@ # am--include-marker - @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/prlimit64.Po@am__quote@ # am--include-marker -+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/process_vm_readv--pidns-translation.Po@am__quote@ # am--include-marker - @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/process_vm_readv.Po@am__quote@ # am--include-marker -+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/process_vm_writev--pidns-translation.Po@am__quote@ # am--include-marker - @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/process_vm_writev.Po@am__quote@ # am--include-marker - @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/pselect6.Po@am__quote@ # am--include-marker - @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ptrace.Po@am__quote@ # am--include-marker -@@ -10224,10 +10713,12 @@ - @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/rt_sigaction.Po@am__quote@ # am--include-marker - @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/rt_sigpending.Po@am__quote@ # am--include-marker - @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/rt_sigprocmask.Po@am__quote@ # am--include-marker -+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/rt_sigqueueinfo--pidns-translation.Po@am__quote@ # am--include-marker - @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/rt_sigqueueinfo.Po@am__quote@ # am--include-marker - @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/rt_sigreturn.Po@am__quote@ # am--include-marker - @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/rt_sigsuspend.Po@am__quote@ # am--include-marker - @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/rt_sigtimedwait.Po@am__quote@ # am--include-marker -+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/rt_tgsigqueueinfo--pidns-translation.Po@am__quote@ # am--include-marker - @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/rt_tgsigqueueinfo.Po@am__quote@ # am--include-marker - @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/run_expect_termsig.Po@am__quote@ # am--include-marker - @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/s390_guarded_storage-v.Po@am__quote@ # am--include-marker -@@ -10238,9 +10729,13 @@ - @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/s390_sthyi.Po@am__quote@ # am--include-marker - @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/sched_get_priority_mxx.Po@am__quote@ # am--include-marker - @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/sched_rr_get_interval.Po@am__quote@ # am--include-marker -+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/sched_xetaffinity--pidns-translation.Po@am__quote@ # am--include-marker - @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/sched_xetaffinity.Po@am__quote@ # am--include-marker -+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/sched_xetattr--pidns-translation.Po@am__quote@ # am--include-marker - @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/sched_xetattr.Po@am__quote@ # am--include-marker -+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/sched_xetparam--pidns-translation.Po@am__quote@ # am--include-marker - @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/sched_xetparam.Po@am__quote@ # am--include-marker -+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/sched_xetscheduler--pidns-translation.Po@am__quote@ # am--include-marker - @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/sched_xetscheduler.Po@am__quote@ # am--include-marker - @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/sched_yield.Po@am__quote@ # am--include-marker - @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/scm_rights.Po@am__quote@ # am--include-marker -@@ -10294,6 +10789,7 @@ - @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/sigaltstack.Po@am__quote@ # am--include-marker - @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/siginfo.Po@am__quote@ # am--include-marker - @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/signal.Po@am__quote@ # am--include-marker -+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/signal_receive--pidns-translation.Po@am__quote@ # am--include-marker - @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/signal_receive.Po@am__quote@ # am--include-marker - @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/signalfd4.Po@am__quote@ # am--include-marker - @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/sigpending.Po@am__quote@ # am--include-marker -@@ -10303,6 +10799,7 @@ - @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/sleep.Po@am__quote@ # am--include-marker - @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/so_error.Po@am__quote@ # am--include-marker - @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/so_linger.Po@am__quote@ # am--include-marker -+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/so_peercred--pidns-translation.Po@am__quote@ # am--include-marker - @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/so_peercred-Xabbrev.Po@am__quote@ # am--include-marker - @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/so_peercred-Xraw.Po@am__quote@ # am--include-marker - @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/so_peercred-Xverbose.Po@am__quote@ # am--include-marker -@@ -10362,6 +10859,7 @@ - @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/syslog-success.Po@am__quote@ # am--include-marker - @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/syslog.Po@am__quote@ # am--include-marker - @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/tee.Po@am__quote@ # am--include-marker -+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/tgkill--pidns-translation.Po@am__quote@ # am--include-marker - @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/tgkill.Po@am__quote@ # am--include-marker - @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/threads-execve--quiet-thread-execve.Po@am__quote@ # am--include-marker - @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/threads-execve-q.Po@am__quote@ # am--include-marker -@@ -10374,6 +10872,7 @@ - @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/timerfd_xettime.Po@am__quote@ # am--include-marker - @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/times-fail.Po@am__quote@ # am--include-marker - @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/times.Po@am__quote@ # am--include-marker -+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/tkill--pidns-translation.Po@am__quote@ # am--include-marker - @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/tkill.Po@am__quote@ # am--include-marker - @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/tracer_ppid_pgid_sid.Po@am__quote@ # am--include-marker - @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/truncate.Po@am__quote@ # am--include-marker -@@ -10415,10 +10914,13 @@ - @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/waitpid.Po@am__quote@ # am--include-marker - @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/xattr-strings.Po@am__quote@ # am--include-marker - @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/xattr.Po@am__quote@ # am--include-marker -+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/xet_robust_list--pidns-translation.Po@am__quote@ # am--include-marker - @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/xet_robust_list.Po@am__quote@ # am--include-marker - @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/xet_thread_area_x86.Po@am__quote@ # am--include-marker - @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/xetitimer.Po@am__quote@ # am--include-marker -+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/xetpgid--pidns-translation.Po@am__quote@ # am--include-marker - @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/xetpgid.Po@am__quote@ # am--include-marker -+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/xetpriority--pidns-translation.Po@am__quote@ # am--include-marker - @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/xetpriority.Po@am__quote@ # am--include-marker - @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/xettimeofday.Po@am__quote@ # am--include-marker - @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/zeroargc.Po@am__quote@ # am--include-marker -@@ -10893,6 +11395,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-tprintf.obj `if test -f 'tprintf.c'; then $(CYGPATH_W) 'tprintf.c'; else $(CYGPATH_W) '$(srcdir)/tprintf.c'; fi` - -+libtests_a-xmalloc_for_tests.o: xmalloc_for_tests.c -+@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libtests_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT libtests_a-xmalloc_for_tests.o -MD -MP -MF $(DEPDIR)/libtests_a-xmalloc_for_tests.Tpo -c -o libtests_a-xmalloc_for_tests.o `test -f 'xmalloc_for_tests.c' || echo '$(srcdir)/'`xmalloc_for_tests.c -+@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libtests_a-xmalloc_for_tests.Tpo $(DEPDIR)/libtests_a-xmalloc_for_tests.Po -+@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='xmalloc_for_tests.c' object='libtests_a-xmalloc_for_tests.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-xmalloc_for_tests.o `test -f 'xmalloc_for_tests.c' || echo '$(srcdir)/'`xmalloc_for_tests.c -+ -+libtests_a-xmalloc_for_tests.obj: xmalloc_for_tests.c -+@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libtests_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT libtests_a-xmalloc_for_tests.obj -MD -MP -MF $(DEPDIR)/libtests_a-xmalloc_for_tests.Tpo -c -o libtests_a-xmalloc_for_tests.obj `if test -f 'xmalloc_for_tests.c'; then $(CYGPATH_W) 'xmalloc_for_tests.c'; else $(CYGPATH_W) '$(srcdir)/xmalloc_for_tests.c'; fi` -+@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libtests_a-xmalloc_for_tests.Tpo $(DEPDIR)/libtests_a-xmalloc_for_tests.Po -+@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='xmalloc_for_tests.c' object='libtests_a-xmalloc_for_tests.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-xmalloc_for_tests.obj `if test -f 'xmalloc_for_tests.c'; then $(CYGPATH_W) 'xmalloc_for_tests.c'; else $(CYGPATH_W) '$(srcdir)/xmalloc_for_tests.c'; fi` -+ - fstat64-fstat64.o: fstat64.c - @am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(fstat64_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT fstat64-fstat64.o -MD -MP -MF $(DEPDIR)/fstat64-fstat64.Tpo -c -o fstat64-fstat64.o `test -f 'fstat64.c' || echo '$(srcdir)/'`fstat64.c - @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/fstat64-fstat64.Tpo $(DEPDIR)/fstat64-fstat64.Po -@@ -11103,6 +11619,34 @@ - @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ - @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(statfs_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o statfs-statfs.obj `if test -f 'statfs.c'; then $(CYGPATH_W) 'statfs.c'; else $(CYGPATH_W) '$(srcdir)/statfs.c'; fi` - -+trie_test-trie_test.o: trie_test.c -+@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(trie_test_CPPFLAGS) $(CPPFLAGS) $(trie_test_CFLAGS) $(CFLAGS) -MT trie_test-trie_test.o -MD -MP -MF $(DEPDIR)/trie_test-trie_test.Tpo -c -o trie_test-trie_test.o `test -f 'trie_test.c' || echo '$(srcdir)/'`trie_test.c -+@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/trie_test-trie_test.Tpo $(DEPDIR)/trie_test-trie_test.Po -+@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='trie_test.c' object='trie_test-trie_test.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) $(trie_test_CPPFLAGS) $(CPPFLAGS) $(trie_test_CFLAGS) $(CFLAGS) -c -o trie_test-trie_test.o `test -f 'trie_test.c' || echo '$(srcdir)/'`trie_test.c -+ -+trie_test-trie_test.obj: trie_test.c -+@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(trie_test_CPPFLAGS) $(CPPFLAGS) $(trie_test_CFLAGS) $(CFLAGS) -MT trie_test-trie_test.obj -MD -MP -MF $(DEPDIR)/trie_test-trie_test.Tpo -c -o trie_test-trie_test.obj `if test -f 'trie_test.c'; then $(CYGPATH_W) 'trie_test.c'; else $(CYGPATH_W) '$(srcdir)/trie_test.c'; fi` -+@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/trie_test-trie_test.Tpo $(DEPDIR)/trie_test-trie_test.Po -+@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='trie_test.c' object='trie_test-trie_test.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) $(trie_test_CPPFLAGS) $(CPPFLAGS) $(trie_test_CFLAGS) $(CFLAGS) -c -o trie_test-trie_test.obj `if test -f 'trie_test.c'; then $(CYGPATH_W) 'trie_test.c'; else $(CYGPATH_W) '$(srcdir)/trie_test.c'; fi` -+ -+trie_test-trie_for_tests.o: trie_for_tests.c -+@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(trie_test_CPPFLAGS) $(CPPFLAGS) $(trie_test_CFLAGS) $(CFLAGS) -MT trie_test-trie_for_tests.o -MD -MP -MF $(DEPDIR)/trie_test-trie_for_tests.Tpo -c -o trie_test-trie_for_tests.o `test -f 'trie_for_tests.c' || echo '$(srcdir)/'`trie_for_tests.c -+@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/trie_test-trie_for_tests.Tpo $(DEPDIR)/trie_test-trie_for_tests.Po -+@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='trie_for_tests.c' object='trie_test-trie_for_tests.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) $(trie_test_CPPFLAGS) $(CPPFLAGS) $(trie_test_CFLAGS) $(CFLAGS) -c -o trie_test-trie_for_tests.o `test -f 'trie_for_tests.c' || echo '$(srcdir)/'`trie_for_tests.c -+ -+trie_test-trie_for_tests.obj: trie_for_tests.c -+@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(trie_test_CPPFLAGS) $(CPPFLAGS) $(trie_test_CFLAGS) $(CFLAGS) -MT trie_test-trie_for_tests.obj -MD -MP -MF $(DEPDIR)/trie_test-trie_for_tests.Tpo -c -o trie_test-trie_for_tests.obj `if test -f 'trie_for_tests.c'; then $(CYGPATH_W) 'trie_for_tests.c'; else $(CYGPATH_W) '$(srcdir)/trie_for_tests.c'; fi` -+@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/trie_test-trie_for_tests.Tpo $(DEPDIR)/trie_test-trie_for_tests.Po -+@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='trie_for_tests.c' object='trie_test-trie_for_tests.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) $(trie_test_CPPFLAGS) $(CPPFLAGS) $(trie_test_CFLAGS) $(CFLAGS) -c -o trie_test-trie_for_tests.obj `if test -f 'trie_for_tests.c'; then $(CYGPATH_W) 'trie_for_tests.c'; else $(CYGPATH_W) '$(srcdir)/trie_for_tests.c'; fi` -+ - truncate64-truncate64.o: truncate64.c - @am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(truncate64_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT truncate64-truncate64.o -MD -MP -MF $(DEPDIR)/truncate64-truncate64.Tpo -c -o truncate64-truncate64.o `test -f 'truncate64.c' || echo '$(srcdir)/'`truncate64.c - @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/truncate64-truncate64.Tpo $(DEPDIR)/truncate64-truncate64.Po -@@ -11551,7 +12095,9 @@ - -rm -f ./$(DEPDIR)/fchown.Po - -rm -f ./$(DEPDIR)/fchown32.Po - -rm -f ./$(DEPDIR)/fchownat.Po -+ -rm -f ./$(DEPDIR)/fcntl--pidns-translation.Po - -rm -f ./$(DEPDIR)/fcntl.Po -+ -rm -f ./$(DEPDIR)/fcntl64--pidns-translation.Po - -rm -f ./$(DEPDIR)/fcntl64.Po - -rm -f ./$(DEPDIR)/fdatasync.Po - -rm -f ./$(DEPDIR)/fflush.Po -@@ -11562,6 +12108,7 @@ - -rm -f ./$(DEPDIR)/filter_seccomp-perf.Po - -rm -f ./$(DEPDIR)/finit_module.Po - -rm -f ./$(DEPDIR)/flock.Po -+ -rm -f ./$(DEPDIR)/fork--pidns-translation.Po - -rm -f ./$(DEPDIR)/fork-f.Po - -rm -f ./$(DEPDIR)/fsconfig-P.Po - -rm -f ./$(DEPDIR)/fsconfig.Po -@@ -11603,7 +12150,9 @@ - -rm -f ./$(DEPDIR)/getgroups.Po - -rm -f ./$(DEPDIR)/getgroups32.Po - -rm -f ./$(DEPDIR)/getpeername.Po -+ -rm -f ./$(DEPDIR)/getpgrp--pidns-translation.Po - -rm -f ./$(DEPDIR)/getpgrp.Po -+ -rm -f ./$(DEPDIR)/getpid--pidns-translation.Po - -rm -f ./$(DEPDIR)/getpid.Po - -rm -f ./$(DEPDIR)/getppid.Po - -rm -f ./$(DEPDIR)/getrandom.Po -@@ -11613,8 +12162,10 @@ - -rm -f ./$(DEPDIR)/getresuid32.Po - -rm -f ./$(DEPDIR)/getrlimit.Po - -rm -f ./$(DEPDIR)/getrusage.Po -+ -rm -f ./$(DEPDIR)/getsid--pidns-translation.Po - -rm -f ./$(DEPDIR)/getsid.Po - -rm -f ./$(DEPDIR)/getsockname.Po -+ -rm -f ./$(DEPDIR)/gettid--pidns-translation.Po - -rm -f ./$(DEPDIR)/gettid.Po - -rm -f ./$(DEPDIR)/getuid.Po - -rm -f ./$(DEPDIR)/getuid32.Po -@@ -11635,6 +12186,7 @@ - -rm -f ./$(DEPDIR)/io_uring_register.Po - -rm -f ./$(DEPDIR)/io_uring_setup.Po - -rm -f ./$(DEPDIR)/ioctl.Po -+ -rm -f ./$(DEPDIR)/ioctl_block--pidns-translation.Po - -rm -f ./$(DEPDIR)/ioctl_block.Po - -rm -f ./$(DEPDIR)/ioctl_dm-v.Po - -rm -f ./$(DEPDIR)/ioctl_dm.Po -@@ -11710,6 +12262,7 @@ - -rm -f ./$(DEPDIR)/ioctl_watchdog.Po - -rm -f ./$(DEPDIR)/ioperm.Po - -rm -f ./$(DEPDIR)/iopl.Po -+ -rm -f ./$(DEPDIR)/ioprio--pidns-translation.Po - -rm -f ./$(DEPDIR)/ioprio-Xabbrev.Po - -rm -f ./$(DEPDIR)/ioprio-Xraw.Po - -rm -f ./$(DEPDIR)/ioprio-Xverbose.Po -@@ -11733,6 +12286,7 @@ - -rm -f ./$(DEPDIR)/ipc_shm-Xverbose.Po - -rm -f ./$(DEPDIR)/ipc_shm.Po - -rm -f ./$(DEPDIR)/is_linux_mips_n64.Po -+ -rm -f ./$(DEPDIR)/kcmp-y--pidns-translation.Po - -rm -f ./$(DEPDIR)/kcmp-y.Po - -rm -f ./$(DEPDIR)/kcmp.Po - -rm -f ./$(DEPDIR)/kern_features.Po -@@ -11746,6 +12300,7 @@ - -rm -f ./$(DEPDIR)/keyctl-Xraw.Po - -rm -f ./$(DEPDIR)/keyctl-Xverbose.Po - -rm -f ./$(DEPDIR)/keyctl.Po -+ -rm -f ./$(DEPDIR)/kill--pidns-translation.Po - -rm -f ./$(DEPDIR)/kill.Po - -rm -f ./$(DEPDIR)/kill_child.Po - -rm -f ./$(DEPDIR)/ksysent.Po -@@ -11783,6 +12338,7 @@ - -rm -f ./$(DEPDIR)/libtests_a-test_printstrn.Po - -rm -f ./$(DEPDIR)/libtests_a-test_ucopy.Po - -rm -f ./$(DEPDIR)/libtests_a-tprintf.Po -+ -rm -f ./$(DEPDIR)/libtests_a-xmalloc_for_tests.Po - -rm -f ./$(DEPDIR)/link.Po - -rm -f ./$(DEPDIR)/linkat.Po - -rm -f ./$(DEPDIR)/list_sigaction_signum.Po -@@ -11805,6 +12361,7 @@ - -rm -f ./$(DEPDIR)/memfd_create-Xraw.Po - -rm -f ./$(DEPDIR)/memfd_create-Xverbose.Po - -rm -f ./$(DEPDIR)/memfd_create.Po -+ -rm -f ./$(DEPDIR)/migrate_pages--pidns-translation.Po - -rm -f ./$(DEPDIR)/migrate_pages.Po - -rm -f ./$(DEPDIR)/mincore.Po - -rm -f ./$(DEPDIR)/mkdir.Po -@@ -11833,6 +12390,7 @@ - -rm -f ./$(DEPDIR)/mount.Po - -rm -f ./$(DEPDIR)/move_mount-P.Po - -rm -f ./$(DEPDIR)/move_mount.Po -+ -rm -f ./$(DEPDIR)/move_pages--pidns-translation.Po - -rm -f ./$(DEPDIR)/move_pages-Xabbrev.Po - -rm -f ./$(DEPDIR)/move_pages-Xraw.Po - -rm -f ./$(DEPDIR)/move_pages-Xverbose.Po -@@ -11856,6 +12414,7 @@ - -rm -f ./$(DEPDIR)/net-packet_mreq-Xraw.Po - -rm -f ./$(DEPDIR)/net-packet_mreq-Xverbose.Po - -rm -f ./$(DEPDIR)/net-packet_mreq.Po -+ -rm -f ./$(DEPDIR)/net-sockaddr--pidns-translation.Po - -rm -f ./$(DEPDIR)/net-sockaddr.Po - -rm -f ./$(DEPDIR)/net-tpacket_req.Po - -rm -f ./$(DEPDIR)/net-tpacket_stats-success.Po -@@ -11865,6 +12424,7 @@ - -rm -f ./$(DEPDIR)/net-yy-inet6.Po - -rm -f ./$(DEPDIR)/net-yy-netlink.Po - -rm -f ./$(DEPDIR)/net-yy-unix.Po -+ -rm -f ./$(DEPDIR)/netlink_audit--pidns-translation.Po - -rm -f ./$(DEPDIR)/netlink_audit.Po - -rm -f ./$(DEPDIR)/netlink_crypto.Po - -rm -f ./$(DEPDIR)/netlink_generic.Po -@@ -11969,11 +12529,14 @@ - -rm -f ./$(DEPDIR)/pidfd_open--decode-fd-path.Po - -rm -f ./$(DEPDIR)/pidfd_open--decode-fd-pidfd.Po - -rm -f ./$(DEPDIR)/pidfd_open--decode-fd-socket.Po -+ -rm -f ./$(DEPDIR)/pidfd_open--pidns-translation.Po - -rm -f ./$(DEPDIR)/pidfd_open-P.Po - -rm -f ./$(DEPDIR)/pidfd_open-y.Po - -rm -f ./$(DEPDIR)/pidfd_open-yy.Po - -rm -f ./$(DEPDIR)/pidfd_open.Po -+ -rm -f ./$(DEPDIR)/pidfd_send_signal--pidns-translation.Po - -rm -f ./$(DEPDIR)/pidfd_send_signal.Po -+ -rm -f ./$(DEPDIR)/pidns-cache.Po - -rm -f ./$(DEPDIR)/pipe.Po - -rm -f ./$(DEPDIR)/pipe2.Po - -rm -f ./$(DEPDIR)/pkey_alloc.Po -@@ -12011,8 +12574,11 @@ - -rm -f ./$(DEPDIR)/printstrn-umoven-peekdata.Po - -rm -f ./$(DEPDIR)/printstrn-umoven-undumpable.Po - -rm -f ./$(DEPDIR)/printstrn-umoven.Po -+ -rm -f ./$(DEPDIR)/prlimit64--pidns-translation.Po - -rm -f ./$(DEPDIR)/prlimit64.Po -+ -rm -f ./$(DEPDIR)/process_vm_readv--pidns-translation.Po - -rm -f ./$(DEPDIR)/process_vm_readv.Po -+ -rm -f ./$(DEPDIR)/process_vm_writev--pidns-translation.Po - -rm -f ./$(DEPDIR)/process_vm_writev.Po - -rm -f ./$(DEPDIR)/pselect6.Po - -rm -f ./$(DEPDIR)/ptrace.Po -@@ -12061,10 +12627,12 @@ - -rm -f ./$(DEPDIR)/rt_sigaction.Po - -rm -f ./$(DEPDIR)/rt_sigpending.Po - -rm -f ./$(DEPDIR)/rt_sigprocmask.Po -+ -rm -f ./$(DEPDIR)/rt_sigqueueinfo--pidns-translation.Po - -rm -f ./$(DEPDIR)/rt_sigqueueinfo.Po - -rm -f ./$(DEPDIR)/rt_sigreturn.Po - -rm -f ./$(DEPDIR)/rt_sigsuspend.Po - -rm -f ./$(DEPDIR)/rt_sigtimedwait.Po -+ -rm -f ./$(DEPDIR)/rt_tgsigqueueinfo--pidns-translation.Po - -rm -f ./$(DEPDIR)/rt_tgsigqueueinfo.Po - -rm -f ./$(DEPDIR)/run_expect_termsig.Po - -rm -f ./$(DEPDIR)/s390_guarded_storage-v.Po -@@ -12075,9 +12643,13 @@ - -rm -f ./$(DEPDIR)/s390_sthyi.Po - -rm -f ./$(DEPDIR)/sched_get_priority_mxx.Po - -rm -f ./$(DEPDIR)/sched_rr_get_interval.Po -+ -rm -f ./$(DEPDIR)/sched_xetaffinity--pidns-translation.Po - -rm -f ./$(DEPDIR)/sched_xetaffinity.Po -+ -rm -f ./$(DEPDIR)/sched_xetattr--pidns-translation.Po - -rm -f ./$(DEPDIR)/sched_xetattr.Po -+ -rm -f ./$(DEPDIR)/sched_xetparam--pidns-translation.Po - -rm -f ./$(DEPDIR)/sched_xetparam.Po -+ -rm -f ./$(DEPDIR)/sched_xetscheduler--pidns-translation.Po - -rm -f ./$(DEPDIR)/sched_xetscheduler.Po - -rm -f ./$(DEPDIR)/sched_yield.Po - -rm -f ./$(DEPDIR)/scm_rights.Po -@@ -12131,6 +12703,7 @@ - -rm -f ./$(DEPDIR)/sigaltstack.Po - -rm -f ./$(DEPDIR)/siginfo.Po - -rm -f ./$(DEPDIR)/signal.Po -+ -rm -f ./$(DEPDIR)/signal_receive--pidns-translation.Po - -rm -f ./$(DEPDIR)/signal_receive.Po - -rm -f ./$(DEPDIR)/signalfd4.Po - -rm -f ./$(DEPDIR)/sigpending.Po -@@ -12140,6 +12713,7 @@ - -rm -f ./$(DEPDIR)/sleep.Po - -rm -f ./$(DEPDIR)/so_error.Po - -rm -f ./$(DEPDIR)/so_linger.Po -+ -rm -f ./$(DEPDIR)/so_peercred--pidns-translation.Po - -rm -f ./$(DEPDIR)/so_peercred-Xabbrev.Po - -rm -f ./$(DEPDIR)/so_peercred-Xraw.Po - -rm -f ./$(DEPDIR)/so_peercred-Xverbose.Po -@@ -12199,6 +12773,7 @@ - -rm -f ./$(DEPDIR)/syslog-success.Po - -rm -f ./$(DEPDIR)/syslog.Po - -rm -f ./$(DEPDIR)/tee.Po -+ -rm -f ./$(DEPDIR)/tgkill--pidns-translation.Po - -rm -f ./$(DEPDIR)/tgkill.Po - -rm -f ./$(DEPDIR)/threads-execve--quiet-thread-execve.Po - -rm -f ./$(DEPDIR)/threads-execve-q.Po -@@ -12211,6 +12786,7 @@ - -rm -f ./$(DEPDIR)/timerfd_xettime.Po - -rm -f ./$(DEPDIR)/times-fail.Po - -rm -f ./$(DEPDIR)/times.Po -+ -rm -f ./$(DEPDIR)/tkill--pidns-translation.Po - -rm -f ./$(DEPDIR)/tkill.Po - -rm -f ./$(DEPDIR)/tracer_ppid_pgid_sid.Po - -rm -f ./$(DEPDIR)/truncate.Po -@@ -12252,10 +12828,13 @@ - -rm -f ./$(DEPDIR)/waitpid.Po - -rm -f ./$(DEPDIR)/xattr-strings.Po - -rm -f ./$(DEPDIR)/xattr.Po -+ -rm -f ./$(DEPDIR)/xet_robust_list--pidns-translation.Po - -rm -f ./$(DEPDIR)/xet_robust_list.Po - -rm -f ./$(DEPDIR)/xet_thread_area_x86.Po - -rm -f ./$(DEPDIR)/xetitimer.Po -+ -rm -f ./$(DEPDIR)/xetpgid--pidns-translation.Po - -rm -f ./$(DEPDIR)/xetpgid.Po -+ -rm -f ./$(DEPDIR)/xetpriority--pidns-translation.Po - -rm -f ./$(DEPDIR)/xetpriority.Po - -rm -f ./$(DEPDIR)/xettimeofday.Po - -rm -f ./$(DEPDIR)/zeroargc.Po -@@ -12409,7 +12988,9 @@ - -rm -f ./$(DEPDIR)/fchown.Po - -rm -f ./$(DEPDIR)/fchown32.Po - -rm -f ./$(DEPDIR)/fchownat.Po -+ -rm -f ./$(DEPDIR)/fcntl--pidns-translation.Po - -rm -f ./$(DEPDIR)/fcntl.Po -+ -rm -f ./$(DEPDIR)/fcntl64--pidns-translation.Po - -rm -f ./$(DEPDIR)/fcntl64.Po - -rm -f ./$(DEPDIR)/fdatasync.Po - -rm -f ./$(DEPDIR)/fflush.Po -@@ -12420,6 +13001,7 @@ - -rm -f ./$(DEPDIR)/filter_seccomp-perf.Po - -rm -f ./$(DEPDIR)/finit_module.Po - -rm -f ./$(DEPDIR)/flock.Po -+ -rm -f ./$(DEPDIR)/fork--pidns-translation.Po - -rm -f ./$(DEPDIR)/fork-f.Po - -rm -f ./$(DEPDIR)/fsconfig-P.Po - -rm -f ./$(DEPDIR)/fsconfig.Po -@@ -12461,7 +13043,9 @@ - -rm -f ./$(DEPDIR)/getgroups.Po - -rm -f ./$(DEPDIR)/getgroups32.Po - -rm -f ./$(DEPDIR)/getpeername.Po -+ -rm -f ./$(DEPDIR)/getpgrp--pidns-translation.Po - -rm -f ./$(DEPDIR)/getpgrp.Po -+ -rm -f ./$(DEPDIR)/getpid--pidns-translation.Po - -rm -f ./$(DEPDIR)/getpid.Po - -rm -f ./$(DEPDIR)/getppid.Po - -rm -f ./$(DEPDIR)/getrandom.Po -@@ -12471,8 +13055,10 @@ - -rm -f ./$(DEPDIR)/getresuid32.Po - -rm -f ./$(DEPDIR)/getrlimit.Po - -rm -f ./$(DEPDIR)/getrusage.Po -+ -rm -f ./$(DEPDIR)/getsid--pidns-translation.Po - -rm -f ./$(DEPDIR)/getsid.Po - -rm -f ./$(DEPDIR)/getsockname.Po -+ -rm -f ./$(DEPDIR)/gettid--pidns-translation.Po - -rm -f ./$(DEPDIR)/gettid.Po - -rm -f ./$(DEPDIR)/getuid.Po - -rm -f ./$(DEPDIR)/getuid32.Po -@@ -12493,6 +13079,7 @@ - -rm -f ./$(DEPDIR)/io_uring_register.Po - -rm -f ./$(DEPDIR)/io_uring_setup.Po - -rm -f ./$(DEPDIR)/ioctl.Po -+ -rm -f ./$(DEPDIR)/ioctl_block--pidns-translation.Po - -rm -f ./$(DEPDIR)/ioctl_block.Po - -rm -f ./$(DEPDIR)/ioctl_dm-v.Po - -rm -f ./$(DEPDIR)/ioctl_dm.Po -@@ -12568,6 +13155,7 @@ - -rm -f ./$(DEPDIR)/ioctl_watchdog.Po - -rm -f ./$(DEPDIR)/ioperm.Po - -rm -f ./$(DEPDIR)/iopl.Po -+ -rm -f ./$(DEPDIR)/ioprio--pidns-translation.Po - -rm -f ./$(DEPDIR)/ioprio-Xabbrev.Po - -rm -f ./$(DEPDIR)/ioprio-Xraw.Po - -rm -f ./$(DEPDIR)/ioprio-Xverbose.Po -@@ -12591,6 +13179,7 @@ - -rm -f ./$(DEPDIR)/ipc_shm-Xverbose.Po - -rm -f ./$(DEPDIR)/ipc_shm.Po - -rm -f ./$(DEPDIR)/is_linux_mips_n64.Po -+ -rm -f ./$(DEPDIR)/kcmp-y--pidns-translation.Po - -rm -f ./$(DEPDIR)/kcmp-y.Po - -rm -f ./$(DEPDIR)/kcmp.Po - -rm -f ./$(DEPDIR)/kern_features.Po -@@ -12604,6 +13193,7 @@ - -rm -f ./$(DEPDIR)/keyctl-Xraw.Po - -rm -f ./$(DEPDIR)/keyctl-Xverbose.Po - -rm -f ./$(DEPDIR)/keyctl.Po -+ -rm -f ./$(DEPDIR)/kill--pidns-translation.Po - -rm -f ./$(DEPDIR)/kill.Po - -rm -f ./$(DEPDIR)/kill_child.Po - -rm -f ./$(DEPDIR)/ksysent.Po -@@ -12641,6 +13231,7 @@ - -rm -f ./$(DEPDIR)/libtests_a-test_printstrn.Po - -rm -f ./$(DEPDIR)/libtests_a-test_ucopy.Po - -rm -f ./$(DEPDIR)/libtests_a-tprintf.Po -+ -rm -f ./$(DEPDIR)/libtests_a-xmalloc_for_tests.Po - -rm -f ./$(DEPDIR)/link.Po - -rm -f ./$(DEPDIR)/linkat.Po - -rm -f ./$(DEPDIR)/list_sigaction_signum.Po -@@ -12663,6 +13254,7 @@ - -rm -f ./$(DEPDIR)/memfd_create-Xraw.Po - -rm -f ./$(DEPDIR)/memfd_create-Xverbose.Po - -rm -f ./$(DEPDIR)/memfd_create.Po -+ -rm -f ./$(DEPDIR)/migrate_pages--pidns-translation.Po - -rm -f ./$(DEPDIR)/migrate_pages.Po - -rm -f ./$(DEPDIR)/mincore.Po - -rm -f ./$(DEPDIR)/mkdir.Po -@@ -12691,6 +13283,7 @@ - -rm -f ./$(DEPDIR)/mount.Po - -rm -f ./$(DEPDIR)/move_mount-P.Po - -rm -f ./$(DEPDIR)/move_mount.Po -+ -rm -f ./$(DEPDIR)/move_pages--pidns-translation.Po - -rm -f ./$(DEPDIR)/move_pages-Xabbrev.Po - -rm -f ./$(DEPDIR)/move_pages-Xraw.Po - -rm -f ./$(DEPDIR)/move_pages-Xverbose.Po -@@ -12714,6 +13307,7 @@ - -rm -f ./$(DEPDIR)/net-packet_mreq-Xraw.Po - -rm -f ./$(DEPDIR)/net-packet_mreq-Xverbose.Po - -rm -f ./$(DEPDIR)/net-packet_mreq.Po -+ -rm -f ./$(DEPDIR)/net-sockaddr--pidns-translation.Po - -rm -f ./$(DEPDIR)/net-sockaddr.Po - -rm -f ./$(DEPDIR)/net-tpacket_req.Po - -rm -f ./$(DEPDIR)/net-tpacket_stats-success.Po -@@ -12723,6 +13317,7 @@ - -rm -f ./$(DEPDIR)/net-yy-inet6.Po - -rm -f ./$(DEPDIR)/net-yy-netlink.Po - -rm -f ./$(DEPDIR)/net-yy-unix.Po -+ -rm -f ./$(DEPDIR)/netlink_audit--pidns-translation.Po - -rm -f ./$(DEPDIR)/netlink_audit.Po - -rm -f ./$(DEPDIR)/netlink_crypto.Po - -rm -f ./$(DEPDIR)/netlink_generic.Po -@@ -12827,11 +13422,14 @@ - -rm -f ./$(DEPDIR)/pidfd_open--decode-fd-path.Po - -rm -f ./$(DEPDIR)/pidfd_open--decode-fd-pidfd.Po - -rm -f ./$(DEPDIR)/pidfd_open--decode-fd-socket.Po -+ -rm -f ./$(DEPDIR)/pidfd_open--pidns-translation.Po - -rm -f ./$(DEPDIR)/pidfd_open-P.Po - -rm -f ./$(DEPDIR)/pidfd_open-y.Po - -rm -f ./$(DEPDIR)/pidfd_open-yy.Po - -rm -f ./$(DEPDIR)/pidfd_open.Po -+ -rm -f ./$(DEPDIR)/pidfd_send_signal--pidns-translation.Po - -rm -f ./$(DEPDIR)/pidfd_send_signal.Po -+ -rm -f ./$(DEPDIR)/pidns-cache.Po - -rm -f ./$(DEPDIR)/pipe.Po - -rm -f ./$(DEPDIR)/pipe2.Po - -rm -f ./$(DEPDIR)/pkey_alloc.Po -@@ -12869,8 +13467,11 @@ - -rm -f ./$(DEPDIR)/printstrn-umoven-peekdata.Po - -rm -f ./$(DEPDIR)/printstrn-umoven-undumpable.Po - -rm -f ./$(DEPDIR)/printstrn-umoven.Po -+ -rm -f ./$(DEPDIR)/prlimit64--pidns-translation.Po - -rm -f ./$(DEPDIR)/prlimit64.Po -+ -rm -f ./$(DEPDIR)/process_vm_readv--pidns-translation.Po - -rm -f ./$(DEPDIR)/process_vm_readv.Po -+ -rm -f ./$(DEPDIR)/process_vm_writev--pidns-translation.Po - -rm -f ./$(DEPDIR)/process_vm_writev.Po - -rm -f ./$(DEPDIR)/pselect6.Po - -rm -f ./$(DEPDIR)/ptrace.Po -@@ -12919,10 +13520,12 @@ - -rm -f ./$(DEPDIR)/rt_sigaction.Po - -rm -f ./$(DEPDIR)/rt_sigpending.Po - -rm -f ./$(DEPDIR)/rt_sigprocmask.Po -+ -rm -f ./$(DEPDIR)/rt_sigqueueinfo--pidns-translation.Po - -rm -f ./$(DEPDIR)/rt_sigqueueinfo.Po - -rm -f ./$(DEPDIR)/rt_sigreturn.Po - -rm -f ./$(DEPDIR)/rt_sigsuspend.Po - -rm -f ./$(DEPDIR)/rt_sigtimedwait.Po -+ -rm -f ./$(DEPDIR)/rt_tgsigqueueinfo--pidns-translation.Po - -rm -f ./$(DEPDIR)/rt_tgsigqueueinfo.Po - -rm -f ./$(DEPDIR)/run_expect_termsig.Po - -rm -f ./$(DEPDIR)/s390_guarded_storage-v.Po -@@ -12933,9 +13536,13 @@ - -rm -f ./$(DEPDIR)/s390_sthyi.Po - -rm -f ./$(DEPDIR)/sched_get_priority_mxx.Po - -rm -f ./$(DEPDIR)/sched_rr_get_interval.Po -+ -rm -f ./$(DEPDIR)/sched_xetaffinity--pidns-translation.Po - -rm -f ./$(DEPDIR)/sched_xetaffinity.Po -+ -rm -f ./$(DEPDIR)/sched_xetattr--pidns-translation.Po - -rm -f ./$(DEPDIR)/sched_xetattr.Po -+ -rm -f ./$(DEPDIR)/sched_xetparam--pidns-translation.Po - -rm -f ./$(DEPDIR)/sched_xetparam.Po -+ -rm -f ./$(DEPDIR)/sched_xetscheduler--pidns-translation.Po - -rm -f ./$(DEPDIR)/sched_xetscheduler.Po - -rm -f ./$(DEPDIR)/sched_yield.Po - -rm -f ./$(DEPDIR)/scm_rights.Po -@@ -12989,6 +13596,7 @@ - -rm -f ./$(DEPDIR)/sigaltstack.Po - -rm -f ./$(DEPDIR)/siginfo.Po - -rm -f ./$(DEPDIR)/signal.Po -+ -rm -f ./$(DEPDIR)/signal_receive--pidns-translation.Po - -rm -f ./$(DEPDIR)/signal_receive.Po - -rm -f ./$(DEPDIR)/signalfd4.Po - -rm -f ./$(DEPDIR)/sigpending.Po -@@ -12998,6 +13606,7 @@ - -rm -f ./$(DEPDIR)/sleep.Po - -rm -f ./$(DEPDIR)/so_error.Po - -rm -f ./$(DEPDIR)/so_linger.Po -+ -rm -f ./$(DEPDIR)/so_peercred--pidns-translation.Po - -rm -f ./$(DEPDIR)/so_peercred-Xabbrev.Po - -rm -f ./$(DEPDIR)/so_peercred-Xraw.Po - -rm -f ./$(DEPDIR)/so_peercred-Xverbose.Po -@@ -13057,6 +13666,7 @@ - -rm -f ./$(DEPDIR)/syslog-success.Po - -rm -f ./$(DEPDIR)/syslog.Po - -rm -f ./$(DEPDIR)/tee.Po -+ -rm -f ./$(DEPDIR)/tgkill--pidns-translation.Po - -rm -f ./$(DEPDIR)/tgkill.Po - -rm -f ./$(DEPDIR)/threads-execve--quiet-thread-execve.Po - -rm -f ./$(DEPDIR)/threads-execve-q.Po -@@ -13069,6 +13679,7 @@ - -rm -f ./$(DEPDIR)/timerfd_xettime.Po - -rm -f ./$(DEPDIR)/times-fail.Po - -rm -f ./$(DEPDIR)/times.Po -+ -rm -f ./$(DEPDIR)/tkill--pidns-translation.Po - -rm -f ./$(DEPDIR)/tkill.Po - -rm -f ./$(DEPDIR)/tracer_ppid_pgid_sid.Po - -rm -f ./$(DEPDIR)/truncate.Po -@@ -13110,14 +13721,26 @@ - -rm -f ./$(DEPDIR)/waitpid.Po - -rm -f ./$(DEPDIR)/xattr-strings.Po - -rm -f ./$(DEPDIR)/xattr.Po -+ -rm -f ./$(DEPDIR)/xet_robust_list--pidns-translation.Po - -rm -f ./$(DEPDIR)/xet_robust_list.Po - -rm -f ./$(DEPDIR)/xet_thread_area_x86.Po - -rm -f ./$(DEPDIR)/xetitimer.Po -+ -rm -f ./$(DEPDIR)/xetpgid--pidns-translation.Po - -rm -f ./$(DEPDIR)/xetpgid.Po -+ -rm -f ./$(DEPDIR)/xetpriority--pidns-translation.Po - -rm -f ./$(DEPDIR)/xetpriority.Po - -rm -f ./$(DEPDIR)/xettimeofday.Po - -rm -f ./$(DEPDIR)/zeroargc.Po - -rm -f Makefile -+distclean-am: clean-am distclean-compile distclean-generic \ -+ distclean-tags -+ -+dvi: dvi-am -+ -+dvi-am: -+ -+html: html-am -+ -rm -f Makefile - maintainer-clean-am: distclean-am maintainer-clean-generic - - mostlyclean: mostlyclean-am -@@ -13407,9 +14030,15 @@ - $(srcdir)/fcntl.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in - $(AM_V_GEN) $^ $@ - -+$(srcdir)/fcntl--pidns-translation.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in -+ $(AM_V_GEN) $^ $@ -+ - $(srcdir)/fcntl64.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in - $(AM_V_GEN) $^ $@ - -+$(srcdir)/fcntl64--pidns-translation.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in -+ $(AM_V_GEN) $^ $@ -+ - $(srcdir)/fdatasync.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in - $(AM_V_GEN) $^ $@ - -@@ -13569,9 +14198,15 @@ - $(srcdir)/getpgrp.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in - $(AM_V_GEN) $^ $@ - -+$(srcdir)/getpgrp--pidns-translation.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in -+ $(AM_V_GEN) $^ $@ -+ - $(srcdir)/getpid.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in - $(AM_V_GEN) $^ $@ - -+$(srcdir)/getpid--pidns-translation.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in -+ $(AM_V_GEN) $^ $@ -+ - $(srcdir)/getppid.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in - $(AM_V_GEN) $^ $@ - -@@ -13599,6 +14234,9 @@ - $(srcdir)/getsid.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in - $(AM_V_GEN) $^ $@ - -+$(srcdir)/getsid--pidns-translation.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in -+ $(AM_V_GEN) $^ $@ -+ - $(srcdir)/getsockname.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in - $(AM_V_GEN) $^ $@ - -@@ -13878,6 +14516,9 @@ - $(srcdir)/ioprio.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in - $(AM_V_GEN) $^ $@ - -+$(srcdir)/ioprio--pidns-translation.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in -+ $(AM_V_GEN) $^ $@ -+ - $(srcdir)/ioprio-Xabbrev.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in - $(AM_V_GEN) $^ $@ - -@@ -13944,6 +14585,9 @@ - $(srcdir)/kcmp-y.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in - $(AM_V_GEN) $^ $@ - -+$(srcdir)/kcmp-y--pidns-translation.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in -+ $(AM_V_GEN) $^ $@ -+ - $(srcdir)/kern_features.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in - $(AM_V_GEN) $^ $@ - -@@ -13980,6 +14624,9 @@ - $(srcdir)/kill.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in - $(AM_V_GEN) $^ $@ - -+$(srcdir)/kill--pidns-translation.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in -+ $(AM_V_GEN) $^ $@ -+ - $(srcdir)/ksysent.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in - $(AM_V_GEN) $^ $@ - -@@ -14043,6 +14690,9 @@ - $(srcdir)/migrate_pages.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in - $(AM_V_GEN) $^ $@ - -+$(srcdir)/migrate_pages--pidns-translation.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in -+ $(AM_V_GEN) $^ $@ -+ - $(srcdir)/mincore.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in - $(AM_V_GEN) $^ $@ - -@@ -14133,6 +14783,9 @@ - $(srcdir)/move_pages-Xverbose.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in - $(AM_V_GEN) $^ $@ - -+$(srcdir)/move_pages--pidns-translation.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in -+ $(AM_V_GEN) $^ $@ -+ - $(srcdir)/mq.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in - $(AM_V_GEN) $^ $@ - -@@ -14190,6 +14843,9 @@ - $(srcdir)/net-sockaddr.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in - $(AM_V_GEN) $^ $@ - -+$(srcdir)/net-sockaddr--pidns-translation.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in -+ $(AM_V_GEN) $^ $@ -+ - $(srcdir)/net-tpacket_req.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in - $(AM_V_GEN) $^ $@ - -@@ -14499,9 +15155,15 @@ - $(srcdir)/pidfd_open-yy.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in - $(AM_V_GEN) $^ $@ - -+$(srcdir)/pidfd_open--pidns-translation.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in -+ $(AM_V_GEN) $^ $@ -+ - $(srcdir)/pidfd_send_signal.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in - $(AM_V_GEN) $^ $@ - -+$(srcdir)/pidfd_send_signal--pidns-translation.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in -+ $(AM_V_GEN) $^ $@ -+ - $(srcdir)/pipe2.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in - $(AM_V_GEN) $^ $@ - -@@ -14568,12 +15230,21 @@ - $(srcdir)/prlimit64.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in - $(AM_V_GEN) $^ $@ - -+$(srcdir)/prlimit64--pidns-translation.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in -+ $(AM_V_GEN) $^ $@ -+ - $(srcdir)/process_vm_readv.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in - $(AM_V_GEN) $^ $@ - -+$(srcdir)/process_vm_readv--pidns-translation.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in -+ $(AM_V_GEN) $^ $@ -+ - $(srcdir)/process_vm_writev.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in - $(AM_V_GEN) $^ $@ - -+$(srcdir)/process_vm_writev--pidns-translation.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in -+ $(AM_V_GEN) $^ $@ -+ - $(srcdir)/pselect6.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in - $(AM_V_GEN) $^ $@ - -@@ -14682,6 +15353,9 @@ - $(srcdir)/rt_sigqueueinfo.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in - $(AM_V_GEN) $^ $@ - -+$(srcdir)/rt_sigqueueinfo--pidns-translation.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in -+ $(AM_V_GEN) $^ $@ -+ - $(srcdir)/rt_sigreturn.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in - $(AM_V_GEN) $^ $@ - -@@ -14694,6 +15368,9 @@ - $(srcdir)/rt_tgsigqueueinfo.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in - $(AM_V_GEN) $^ $@ - -+$(srcdir)/rt_tgsigqueueinfo--pidns-translation.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in -+ $(AM_V_GEN) $^ $@ -+ - $(srcdir)/s390_guarded_storage.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in - $(AM_V_GEN) $^ $@ - -@@ -14724,15 +15401,27 @@ - $(srcdir)/sched_xetaffinity.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in - $(AM_V_GEN) $^ $@ - -+$(srcdir)/sched_xetaffinity--pidns-translation.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in -+ $(AM_V_GEN) $^ $@ -+ - $(srcdir)/sched_xetattr.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in - $(AM_V_GEN) $^ $@ - -+$(srcdir)/sched_xetattr--pidns-translation.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in -+ $(AM_V_GEN) $^ $@ -+ - $(srcdir)/sched_xetparam.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in - $(AM_V_GEN) $^ $@ - -+$(srcdir)/sched_xetparam--pidns-translation.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in -+ $(AM_V_GEN) $^ $@ -+ - $(srcdir)/sched_xetscheduler.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in - $(AM_V_GEN) $^ $@ - -+$(srcdir)/sched_xetscheduler--pidns-translation.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in -+ $(AM_V_GEN) $^ $@ -+ - $(srcdir)/sched_yield.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in - $(AM_V_GEN) $^ $@ - -@@ -14871,6 +15560,9 @@ - $(srcdir)/signal_receive.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in - $(AM_V_GEN) $^ $@ - -+$(srcdir)/signal_receive--pidns-translation.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in -+ $(AM_V_GEN) $^ $@ -+ - $(srcdir)/signalfd4.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in - $(AM_V_GEN) $^ $@ - -@@ -14904,6 +15596,9 @@ - $(srcdir)/so_peercred-Xverbose.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in - $(AM_V_GEN) $^ $@ - -+$(srcdir)/so_peercred--pidns-translation.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in -+ $(AM_V_GEN) $^ $@ -+ - $(srcdir)/sock_filter-v.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in - $(AM_V_GEN) $^ $@ - -@@ -15120,6 +15815,9 @@ - $(srcdir)/tgkill.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in - $(AM_V_GEN) $^ $@ - -+$(srcdir)/tgkill--pidns-translation.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in -+ $(AM_V_GEN) $^ $@ -+ - $(srcdir)/threads-execve--quiet-thread-execve.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in - $(AM_V_GEN) $^ $@ - -@@ -15153,6 +15851,9 @@ - $(srcdir)/tkill.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in - $(AM_V_GEN) $^ $@ - -+$(srcdir)/tkill--pidns-translation.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in -+ $(AM_V_GEN) $^ $@ -+ - $(srcdir)/trace_clock.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in - $(AM_V_GEN) $^ $@ - -@@ -15201,6 +15902,9 @@ - $(srcdir)/trace_statfs_like.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in - $(AM_V_GEN) $^ $@ - -+$(srcdir)/trie_test.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in -+ $(AM_V_GEN) $^ $@ -+ - $(srcdir)/truncate.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in - $(AM_V_GEN) $^ $@ - -@@ -15291,15 +15995,24 @@ - $(srcdir)/xet_robust_list.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in - $(AM_V_GEN) $^ $@ - -+$(srcdir)/xet_robust_list--pidns-translation.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in -+ $(AM_V_GEN) $^ $@ -+ - $(srcdir)/xetitimer.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in - $(AM_V_GEN) $^ $@ - - $(srcdir)/xetpgid.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in - $(AM_V_GEN) $^ $@ - -+$(srcdir)/xetpgid--pidns-translation.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in -+ $(AM_V_GEN) $^ $@ -+ - $(srcdir)/xetpriority.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in - $(AM_V_GEN) $^ $@ - -+$(srcdir)/xetpriority--pidns-translation.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in -+ $(AM_V_GEN) $^ $@ -+ - $(srcdir)/xettimeofday.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 2020-09-09 19:52:30.741668769 +0200 -+++ strace-5.7/tests-m32/Makefile.in 2020-09-09 20:23:32.889940661 +0200 -@@ -121,10 +121,17 @@ - clone3-success-Xabbrev$(EXEEXT) clone3-success-Xraw$(EXEEXT) \ - clone3-success-Xverbose$(EXEEXT) count-f$(EXEEXT) \ - delay$(EXEEXT) execve-v$(EXEEXT) execveat-v$(EXEEXT) \ -+ fcntl--pidns-translation$(EXEEXT) \ -+ fcntl64--pidns-translation$(EXEEXT) \ - filter_seccomp-flag$(EXEEXT) filter_seccomp-perf$(EXEEXT) \ -- filter-unavailable$(EXEEXT) fork-f$(EXEEXT) fsync-y$(EXEEXT) \ -- get_process_reaper$(EXEEXT) getpid$(EXEEXT) getppid$(EXEEXT) \ -- gettid$(EXEEXT) inject-nf$(EXEEXT) int_0x80$(EXEEXT) \ -+ filter-unavailable$(EXEEXT) fork-f$(EXEEXT) \ -+ fork--pidns-translation$(EXEEXT) fsync-y$(EXEEXT) \ -+ get_process_reaper$(EXEEXT) \ -+ getpgrp--pidns-translation$(EXEEXT) getpid$(EXEEXT) \ -+ getpid--pidns-translation$(EXEEXT) getppid$(EXEEXT) \ -+ getsid--pidns-translation$(EXEEXT) gettid$(EXEEXT) \ -+ gettid--pidns-translation$(EXEEXT) inject-nf$(EXEEXT) \ -+ int_0x80$(EXEEXT) ioctl_block--pidns-translation$(EXEEXT) \ - ioctl_dm-v$(EXEEXT) ioctl_evdev-success$(EXEEXT) \ - ioctl_evdev-success-Xabbrev$(EXEEXT) \ - ioctl_evdev-success-Xraw$(EXEEXT) \ -@@ -151,43 +158,68 @@ - ioctl_v4l2-success-v-Xabbrev$(EXEEXT) \ - ioctl_v4l2-success-v-Xraw$(EXEEXT) \ - ioctl_v4l2-success-v-Xverbose$(EXEEXT) \ -- is_linux_mips_n64$(EXEEXT) kill_child$(EXEEXT) \ -- ksysent$(EXEEXT) list_sigaction_signum$(EXEEXT) \ -- localtime$(EXEEXT) looping_threads$(EXEEXT) \ -- mmsg-silent$(EXEEXT) mmsg_name-v$(EXEEXT) \ -+ ioprio--pidns-translation$(EXEEXT) is_linux_mips_n64$(EXEEXT) \ -+ kcmp-y--pidns-translation$(EXEEXT) kill_child$(EXEEXT) \ -+ kill--pidns-translation$(EXEEXT) ksysent$(EXEEXT) \ -+ list_sigaction_signum$(EXEEXT) localtime$(EXEEXT) \ -+ looping_threads$(EXEEXT) \ -+ migrate_pages--pidns-translation$(EXEEXT) mmsg-silent$(EXEEXT) \ -+ mmsg_name-v$(EXEEXT) move_pages--pidns-translation$(EXEEXT) \ - msg_control-v$(EXEEXT) net-accept-connect$(EXEEXT) \ -+ net-sockaddr--pidns-translation$(EXEEXT) \ - net-tpacket_stats-success$(EXEEXT) nlattr_ifla_xdp-y$(EXEEXT) \ -+ netlink_audit--pidns-translation$(EXEEXT) \ - netlink_inet_diag$(EXEEXT) netlink_netlink_diag$(EXEEXT) \ - netlink_unix_diag$(EXEEXT) nsyscalls$(EXEEXT) \ - nsyscalls-d$(EXEEXT) oldselect-P$(EXEEXT) \ - oldselect-efault-P$(EXEEXT) orphaned_process_group$(EXEEXT) \ - pc$(EXEEXT) perf_event_open_nonverbose$(EXEEXT) \ -- perf_event_open_unabbrev$(EXEEXT) poll-P$(EXEEXT) \ -- ppoll-P$(EXEEXT) ppoll-v$(EXEEXT) \ -+ perf_event_open_unabbrev$(EXEEXT) \ -+ pidfd_open--pidns-translation$(EXEEXT) \ -+ pidfd_send_signal--pidns-translation$(EXEEXT) \ -+ pidns-cache$(EXEEXT) poll-P$(EXEEXT) ppoll-P$(EXEEXT) \ -+ ppoll-v$(EXEEXT) prlimit64--pidns-translation$(EXEEXT) \ - prctl-seccomp-filter-v$(EXEEXT) prctl-seccomp-strict$(EXEEXT) \ - prctl-spec-inject$(EXEEXT) print_maxfd$(EXEEXT) \ -- print_ppid_tracerpid$(EXEEXT) qual_fault$(EXEEXT) \ -- qual_inject-error-signal$(EXEEXT) qual_inject-retval$(EXEEXT) \ -- qual_inject-signal$(EXEEXT) qual_signal$(EXEEXT) \ -- quotactl-success$(EXEEXT) quotactl-success-v$(EXEEXT) \ -- quotactl-v$(EXEEXT) quotactl-xfs-success$(EXEEXT) \ -- quotactl-xfs-success-v$(EXEEXT) quotactl-xfs-v$(EXEEXT) \ -- redirect-fds$(EXEEXT) restart_syscall$(EXEEXT) \ -- run_expect_termsig$(EXEEXT) scm_rights$(EXEEXT) \ -- seccomp-filter-v$(EXEEXT) seccomp-strict$(EXEEXT) \ -- select-P$(EXEEXT) set_ptracer_any$(EXEEXT) \ -- set_sigblock$(EXEEXT) set_sigign$(EXEEXT) \ -- setpgrp-exec$(EXEEXT) signal_receive$(EXEEXT) sleep$(EXEEXT) \ -+ print_ppid_tracerpid$(EXEEXT) \ -+ process_vm_readv--pidns-translation$(EXEEXT) \ -+ process_vm_writev--pidns-translation$(EXEEXT) \ -+ qual_fault$(EXEEXT) qual_inject-error-signal$(EXEEXT) \ -+ qual_inject-retval$(EXEEXT) qual_inject-signal$(EXEEXT) \ -+ qual_signal$(EXEEXT) quotactl-success$(EXEEXT) \ -+ quotactl-success-v$(EXEEXT) quotactl-v$(EXEEXT) \ -+ quotactl-xfs-success$(EXEEXT) quotactl-xfs-success-v$(EXEEXT) \ -+ quotactl-xfs-v$(EXEEXT) redirect-fds$(EXEEXT) \ -+ restart_syscall$(EXEEXT) \ -+ rt_sigqueueinfo--pidns-translation$(EXEEXT) \ -+ rt_tgsigqueueinfo--pidns-translation$(EXEEXT) \ -+ run_expect_termsig$(EXEEXT) \ -+ sched_xetaffinity--pidns-translation$(EXEEXT) \ -+ sched_xetattr--pidns-translation$(EXEEXT) \ -+ sched_xetparam--pidns-translation$(EXEEXT) \ -+ sched_xetscheduler--pidns-translation$(EXEEXT) \ -+ scm_rights$(EXEEXT) seccomp-filter-v$(EXEEXT) \ -+ seccomp-strict$(EXEEXT) select-P$(EXEEXT) \ -+ set_ptracer_any$(EXEEXT) set_sigblock$(EXEEXT) \ -+ set_sigign$(EXEEXT) setpgrp-exec$(EXEEXT) \ -+ signal_receive$(EXEEXT) \ -+ signal_receive--pidns-translation$(EXEEXT) sleep$(EXEEXT) \ - stack-fcall$(EXEEXT) stack-fcall-attach$(EXEEXT) \ - stack-fcall-mangled$(EXEEXT) status-none-threads$(EXEEXT) \ -- status-unfinished-threads$(EXEEXT) syslog-success$(EXEEXT) \ -+ status-unfinished-threads$(EXEEXT) \ -+ so_peercred--pidns-translation$(EXEEXT) \ -+ syslog-success$(EXEEXT) tgkill--pidns-translation$(EXEEXT) \ - threads-execve$(EXEEXT) \ - threads-execve--quiet-thread-execve$(EXEEXT) \ - threads-execve-q$(EXEEXT) threads-execve-qq$(EXEEXT) \ -- threads-execve-qqq$(EXEEXT) tracer_ppid_pgid_sid$(EXEEXT) \ -+ threads-execve-qqq$(EXEEXT) tkill--pidns-translation$(EXEEXT) \ -+ tracer_ppid_pgid_sid$(EXEEXT) trie_test$(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) -+ wait4-v$(EXEEXT) waitid-v$(EXEEXT) \ -+ xetpgid--pidns-translation$(EXEEXT) \ -+ xetpriority--pidns-translation$(EXEEXT) \ -+ xet_robust_list--pidns-translation$(EXEEXT) zeroargc$(EXEEXT) - @ENABLE_STACKTRACE_TRUE@@USE_DEMANGLE_TRUE@am__append_1 = strace-k-demangle.test - TESTS = $(GEN_TESTS) $(DECODER_TESTS) $(MISC_TESTS) $(am__EXEEXT_2) - subdir = tests-m32 -@@ -545,7 +577,8 @@ - libtests_a-tail_alloc.$(OBJEXT) \ - libtests_a-test_printpath.$(OBJEXT) \ - libtests_a-test_printstrn.$(OBJEXT) \ -- libtests_a-test_ucopy.$(OBJEXT) libtests_a-tprintf.$(OBJEXT) -+ libtests_a-test_ucopy.$(OBJEXT) libtests_a-tprintf.$(OBJEXT) \ -+ libtests_a-xmalloc_for_tests.$(OBJEXT) - libtests_a_OBJECTS = $(am_libtests_a_OBJECTS) - _newselect_SOURCES = _newselect.c - _newselect_OBJECTS = _newselect.$(OBJEXT) -@@ -973,10 +1006,19 @@ - fcntl_OBJECTS = fcntl.$(OBJEXT) - fcntl_LDADD = $(LDADD) - fcntl_DEPENDENCIES = libtests.a -+fcntl__pidns_translation_SOURCES = fcntl--pidns-translation.c -+fcntl__pidns_translation_OBJECTS = fcntl--pidns-translation.$(OBJEXT) -+fcntl__pidns_translation_LDADD = $(LDADD) -+fcntl__pidns_translation_DEPENDENCIES = libtests.a - fcntl64_SOURCES = fcntl64.c - fcntl64_OBJECTS = fcntl64.$(OBJEXT) - fcntl64_LDADD = $(LDADD) - fcntl64_DEPENDENCIES = libtests.a -+fcntl64__pidns_translation_SOURCES = fcntl64--pidns-translation.c -+fcntl64__pidns_translation_OBJECTS = \ -+ fcntl64--pidns-translation.$(OBJEXT) -+fcntl64__pidns_translation_LDADD = $(LDADD) -+fcntl64__pidns_translation_DEPENDENCIES = libtests.a - fdatasync_SOURCES = fdatasync.c - fdatasync_OBJECTS = fdatasync.$(OBJEXT) - fdatasync_LDADD = $(LDADD) -@@ -1012,6 +1054,10 @@ - flock_OBJECTS = flock.$(OBJEXT) - flock_LDADD = $(LDADD) - flock_DEPENDENCIES = libtests.a -+fork__pidns_translation_SOURCES = fork--pidns-translation.c -+fork__pidns_translation_OBJECTS = fork--pidns-translation.$(OBJEXT) -+fork__pidns_translation_LDADD = $(LDADD) -+fork__pidns_translation_DEPENDENCIES = libtests.a - fork_f_SOURCES = fork-f.c - fork_f_OBJECTS = fork-f.$(OBJEXT) - fork_f_LDADD = $(LDADD) -@@ -1180,10 +1226,20 @@ - getpgrp_OBJECTS = getpgrp.$(OBJEXT) - getpgrp_LDADD = $(LDADD) - getpgrp_DEPENDENCIES = libtests.a -+getpgrp__pidns_translation_SOURCES = getpgrp--pidns-translation.c -+getpgrp__pidns_translation_OBJECTS = \ -+ getpgrp--pidns-translation.$(OBJEXT) -+getpgrp__pidns_translation_LDADD = $(LDADD) -+getpgrp__pidns_translation_DEPENDENCIES = libtests.a - getpid_SOURCES = getpid.c - getpid_OBJECTS = getpid.$(OBJEXT) - getpid_LDADD = $(LDADD) - getpid_DEPENDENCIES = libtests.a -+getpid__pidns_translation_SOURCES = getpid--pidns-translation.c -+getpid__pidns_translation_OBJECTS = \ -+ getpid--pidns-translation.$(OBJEXT) -+getpid__pidns_translation_LDADD = $(LDADD) -+getpid__pidns_translation_DEPENDENCIES = libtests.a - getppid_SOURCES = getppid.c - getppid_OBJECTS = getppid.$(OBJEXT) - getppid_LDADD = $(LDADD) -@@ -1220,6 +1276,11 @@ - getsid_OBJECTS = getsid.$(OBJEXT) - getsid_LDADD = $(LDADD) - getsid_DEPENDENCIES = libtests.a -+getsid__pidns_translation_SOURCES = getsid--pidns-translation.c -+getsid__pidns_translation_OBJECTS = \ -+ getsid--pidns-translation.$(OBJEXT) -+getsid__pidns_translation_LDADD = $(LDADD) -+getsid__pidns_translation_DEPENDENCIES = libtests.a - getsockname_SOURCES = getsockname.c - getsockname_OBJECTS = getsockname.$(OBJEXT) - getsockname_LDADD = $(LDADD) -@@ -1228,6 +1289,11 @@ - gettid_OBJECTS = gettid.$(OBJEXT) - gettid_LDADD = $(LDADD) - gettid_DEPENDENCIES = libtests.a -+gettid__pidns_translation_SOURCES = gettid--pidns-translation.c -+gettid__pidns_translation_OBJECTS = \ -+ gettid--pidns-translation.$(OBJEXT) -+gettid__pidns_translation_LDADD = $(LDADD) -+gettid__pidns_translation_DEPENDENCIES = libtests.a - getuid_SOURCES = getuid.c - getuid_OBJECTS = getuid.$(OBJEXT) - getuid_LDADD = $(LDADD) -@@ -1308,6 +1374,12 @@ - ioctl_block_OBJECTS = ioctl_block.$(OBJEXT) - ioctl_block_LDADD = $(LDADD) - ioctl_block_DEPENDENCIES = libtests.a -+ioctl_block__pidns_translation_SOURCES = \ -+ ioctl_block--pidns-translation.c -+ioctl_block__pidns_translation_OBJECTS = \ -+ ioctl_block--pidns-translation.$(OBJEXT) -+ioctl_block__pidns_translation_LDADD = $(LDADD) -+ioctl_block__pidns_translation_DEPENDENCIES = libtests.a - ioctl_dm_SOURCES = ioctl_dm.c - ioctl_dm_OBJECTS = ioctl_dm.$(OBJEXT) - ioctl_dm_LDADD = $(LDADD) -@@ -1628,6 +1700,11 @@ - ioprio_OBJECTS = ioprio.$(OBJEXT) - ioprio_LDADD = $(LDADD) - ioprio_DEPENDENCIES = libtests.a -+ioprio__pidns_translation_SOURCES = ioprio--pidns-translation.c -+ioprio__pidns_translation_OBJECTS = \ -+ ioprio--pidns-translation.$(OBJEXT) -+ioprio__pidns_translation_LDADD = $(LDADD) -+ioprio__pidns_translation_DEPENDENCIES = libtests.a - ioprio_Xabbrev_SOURCES = ioprio-Xabbrev.c - ioprio_Xabbrev_OBJECTS = ioprio-Xabbrev.$(OBJEXT) - ioprio_Xabbrev_LDADD = $(LDADD) -@@ -1724,6 +1801,11 @@ - kcmp_y_OBJECTS = kcmp-y.$(OBJEXT) - kcmp_y_LDADD = $(LDADD) - kcmp_y_DEPENDENCIES = libtests.a -+kcmp_y__pidns_translation_SOURCES = kcmp-y--pidns-translation.c -+kcmp_y__pidns_translation_OBJECTS = \ -+ kcmp-y--pidns-translation.$(OBJEXT) -+kcmp_y__pidns_translation_LDADD = $(LDADD) -+kcmp_y__pidns_translation_DEPENDENCIES = libtests.a - kern_features_SOURCES = kern_features.c - kern_features_OBJECTS = kern_features.$(OBJEXT) - kern_features_LDADD = $(LDADD) -@@ -1772,6 +1854,10 @@ - kill_OBJECTS = kill.$(OBJEXT) - kill_LDADD = $(LDADD) - kill_DEPENDENCIES = libtests.a -+kill__pidns_translation_SOURCES = kill--pidns-translation.c -+kill__pidns_translation_OBJECTS = kill--pidns-translation.$(OBJEXT) -+kill__pidns_translation_LDADD = $(LDADD) -+kill__pidns_translation_DEPENDENCIES = libtests.a - kill_child_SOURCES = kill_child.c - kill_child_OBJECTS = kill_child.$(OBJEXT) - kill_child_LDADD = $(LDADD) -@@ -1878,6 +1964,12 @@ - migrate_pages_OBJECTS = migrate_pages.$(OBJEXT) - migrate_pages_LDADD = $(LDADD) - migrate_pages_DEPENDENCIES = libtests.a -+migrate_pages__pidns_translation_SOURCES = \ -+ migrate_pages--pidns-translation.c -+migrate_pages__pidns_translation_OBJECTS = \ -+ migrate_pages--pidns-translation.$(OBJEXT) -+migrate_pages__pidns_translation_LDADD = $(LDADD) -+migrate_pages__pidns_translation_DEPENDENCIES = libtests.a - mincore_SOURCES = mincore.c - mincore_OBJECTS = mincore.$(OBJEXT) - mincore_LDADD = $(LDADD) -@@ -1990,6 +2082,12 @@ - move_pages_OBJECTS = move_pages.$(OBJEXT) - move_pages_LDADD = $(LDADD) - move_pages_DEPENDENCIES = libtests.a -+move_pages__pidns_translation_SOURCES = \ -+ move_pages--pidns-translation.c -+move_pages__pidns_translation_OBJECTS = \ -+ move_pages--pidns-translation.$(OBJEXT) -+move_pages__pidns_translation_LDADD = $(LDADD) -+move_pages__pidns_translation_DEPENDENCIES = libtests.a - move_pages_Xabbrev_SOURCES = move_pages-Xabbrev.c - move_pages_Xabbrev_OBJECTS = move_pages-Xabbrev.$(OBJEXT) - move_pages_Xabbrev_LDADD = $(LDADD) -@@ -2086,6 +2184,12 @@ - net_sockaddr_OBJECTS = net-sockaddr.$(OBJEXT) - net_sockaddr_LDADD = $(LDADD) - net_sockaddr_DEPENDENCIES = libtests.a -+net_sockaddr__pidns_translation_SOURCES = \ -+ net-sockaddr--pidns-translation.c -+net_sockaddr__pidns_translation_OBJECTS = \ -+ net-sockaddr--pidns-translation.$(OBJEXT) -+net_sockaddr__pidns_translation_LDADD = $(LDADD) -+net_sockaddr__pidns_translation_DEPENDENCIES = libtests.a - net_tpacket_req_SOURCES = net-tpacket_req.c - net_tpacket_req_OBJECTS = net-tpacket_req.$(OBJEXT) - net_tpacket_req_LDADD = $(LDADD) -@@ -2123,6 +2227,12 @@ - netlink_audit_OBJECTS = netlink_audit.$(OBJEXT) - netlink_audit_LDADD = $(LDADD) - netlink_audit_DEPENDENCIES = libtests.a -+netlink_audit__pidns_translation_SOURCES = \ -+ netlink_audit--pidns-translation.c -+netlink_audit__pidns_translation_OBJECTS = \ -+ netlink_audit--pidns-translation.$(OBJEXT) -+netlink_audit__pidns_translation_LDADD = $(LDADD) -+netlink_audit__pidns_translation_DEPENDENCIES = libtests.a - netlink_crypto_SOURCES = netlink_crypto.c - netlink_crypto_OBJECTS = netlink_crypto.$(OBJEXT) - netlink_crypto_LDADD = $(LDADD) -@@ -2543,6 +2653,12 @@ - pidfd_open--decode-fd-socket.$(OBJEXT) - pidfd_open__decode_fd_socket_LDADD = $(LDADD) - pidfd_open__decode_fd_socket_DEPENDENCIES = libtests.a -+pidfd_open__pidns_translation_SOURCES = \ -+ pidfd_open--pidns-translation.c -+pidfd_open__pidns_translation_OBJECTS = \ -+ pidfd_open--pidns-translation.$(OBJEXT) -+pidfd_open__pidns_translation_LDADD = $(LDADD) -+pidfd_open__pidns_translation_DEPENDENCIES = libtests.a - pidfd_open_P_SOURCES = pidfd_open-P.c - pidfd_open_P_OBJECTS = pidfd_open-P.$(OBJEXT) - pidfd_open_P_LDADD = $(LDADD) -@@ -2559,6 +2675,16 @@ - pidfd_send_signal_OBJECTS = pidfd_send_signal.$(OBJEXT) - pidfd_send_signal_LDADD = $(LDADD) - pidfd_send_signal_DEPENDENCIES = libtests.a -+pidfd_send_signal__pidns_translation_SOURCES = \ -+ pidfd_send_signal--pidns-translation.c -+pidfd_send_signal__pidns_translation_OBJECTS = \ -+ pidfd_send_signal--pidns-translation.$(OBJEXT) -+pidfd_send_signal__pidns_translation_LDADD = $(LDADD) -+pidfd_send_signal__pidns_translation_DEPENDENCIES = libtests.a -+pidns_cache_SOURCES = pidns-cache.c -+pidns_cache_OBJECTS = pidns-cache.$(OBJEXT) -+pidns_cache_LDADD = $(LDADD) -+pidns_cache_DEPENDENCIES = libtests.a - pipe_SOURCES = pipe.c - pipe_OBJECTS = pipe.$(OBJEXT) - pipe_LDADD = $(LDADD) -@@ -2717,14 +2843,31 @@ - prlimit64_OBJECTS = prlimit64.$(OBJEXT) - prlimit64_LDADD = $(LDADD) - prlimit64_DEPENDENCIES = libtests.a -+prlimit64__pidns_translation_SOURCES = prlimit64--pidns-translation.c -+prlimit64__pidns_translation_OBJECTS = \ -+ prlimit64--pidns-translation.$(OBJEXT) -+prlimit64__pidns_translation_LDADD = $(LDADD) -+prlimit64__pidns_translation_DEPENDENCIES = libtests.a - process_vm_readv_SOURCES = process_vm_readv.c - process_vm_readv_OBJECTS = process_vm_readv.$(OBJEXT) - process_vm_readv_LDADD = $(LDADD) - process_vm_readv_DEPENDENCIES = libtests.a -+process_vm_readv__pidns_translation_SOURCES = \ -+ process_vm_readv--pidns-translation.c -+process_vm_readv__pidns_translation_OBJECTS = \ -+ process_vm_readv--pidns-translation.$(OBJEXT) -+process_vm_readv__pidns_translation_LDADD = $(LDADD) -+process_vm_readv__pidns_translation_DEPENDENCIES = libtests.a - process_vm_writev_SOURCES = process_vm_writev.c - process_vm_writev_OBJECTS = process_vm_writev.$(OBJEXT) - process_vm_writev_LDADD = $(LDADD) - process_vm_writev_DEPENDENCIES = libtests.a -+process_vm_writev__pidns_translation_SOURCES = \ -+ process_vm_writev--pidns-translation.c -+process_vm_writev__pidns_translation_OBJECTS = \ -+ process_vm_writev--pidns-translation.$(OBJEXT) -+process_vm_writev__pidns_translation_LDADD = $(LDADD) -+process_vm_writev__pidns_translation_DEPENDENCIES = libtests.a - pselect6_SOURCES = pselect6.c - pselect6_OBJECTS = pselect6.$(OBJEXT) - pselect6_LDADD = $(LDADD) -@@ -2918,6 +3061,12 @@ - rt_sigqueueinfo_OBJECTS = rt_sigqueueinfo.$(OBJEXT) - rt_sigqueueinfo_LDADD = $(LDADD) - rt_sigqueueinfo_DEPENDENCIES = libtests.a -+rt_sigqueueinfo__pidns_translation_SOURCES = \ -+ rt_sigqueueinfo--pidns-translation.c -+rt_sigqueueinfo__pidns_translation_OBJECTS = \ -+ rt_sigqueueinfo--pidns-translation.$(OBJEXT) -+rt_sigqueueinfo__pidns_translation_LDADD = $(LDADD) -+rt_sigqueueinfo__pidns_translation_DEPENDENCIES = libtests.a - rt_sigreturn_SOURCES = rt_sigreturn.c - rt_sigreturn_OBJECTS = rt_sigreturn.$(OBJEXT) - rt_sigreturn_LDADD = $(LDADD) -@@ -2934,6 +3083,12 @@ - rt_tgsigqueueinfo_OBJECTS = rt_tgsigqueueinfo.$(OBJEXT) - rt_tgsigqueueinfo_LDADD = $(LDADD) - rt_tgsigqueueinfo_DEPENDENCIES = libtests.a -+rt_tgsigqueueinfo__pidns_translation_SOURCES = \ -+ rt_tgsigqueueinfo--pidns-translation.c -+rt_tgsigqueueinfo__pidns_translation_OBJECTS = \ -+ rt_tgsigqueueinfo--pidns-translation.$(OBJEXT) -+rt_tgsigqueueinfo__pidns_translation_LDADD = $(LDADD) -+rt_tgsigqueueinfo__pidns_translation_DEPENDENCIES = libtests.a - run_expect_termsig_SOURCES = run_expect_termsig.c - run_expect_termsig_OBJECTS = run_expect_termsig.$(OBJEXT) - run_expect_termsig_LDADD = $(LDADD) -@@ -2974,18 +3129,42 @@ - sched_xetaffinity_OBJECTS = sched_xetaffinity.$(OBJEXT) - sched_xetaffinity_LDADD = $(LDADD) - sched_xetaffinity_DEPENDENCIES = libtests.a -+sched_xetaffinity__pidns_translation_SOURCES = \ -+ sched_xetaffinity--pidns-translation.c -+sched_xetaffinity__pidns_translation_OBJECTS = \ -+ sched_xetaffinity--pidns-translation.$(OBJEXT) -+sched_xetaffinity__pidns_translation_LDADD = $(LDADD) -+sched_xetaffinity__pidns_translation_DEPENDENCIES = libtests.a - sched_xetattr_SOURCES = sched_xetattr.c - sched_xetattr_OBJECTS = sched_xetattr.$(OBJEXT) - sched_xetattr_LDADD = $(LDADD) - sched_xetattr_DEPENDENCIES = libtests.a -+sched_xetattr__pidns_translation_SOURCES = \ -+ sched_xetattr--pidns-translation.c -+sched_xetattr__pidns_translation_OBJECTS = \ -+ sched_xetattr--pidns-translation.$(OBJEXT) -+sched_xetattr__pidns_translation_LDADD = $(LDADD) -+sched_xetattr__pidns_translation_DEPENDENCIES = libtests.a - sched_xetparam_SOURCES = sched_xetparam.c - sched_xetparam_OBJECTS = sched_xetparam.$(OBJEXT) - sched_xetparam_LDADD = $(LDADD) - sched_xetparam_DEPENDENCIES = libtests.a -+sched_xetparam__pidns_translation_SOURCES = \ -+ sched_xetparam--pidns-translation.c -+sched_xetparam__pidns_translation_OBJECTS = \ -+ sched_xetparam--pidns-translation.$(OBJEXT) -+sched_xetparam__pidns_translation_LDADD = $(LDADD) -+sched_xetparam__pidns_translation_DEPENDENCIES = libtests.a - sched_xetscheduler_SOURCES = sched_xetscheduler.c - sched_xetscheduler_OBJECTS = sched_xetscheduler.$(OBJEXT) - sched_xetscheduler_LDADD = $(LDADD) - sched_xetscheduler_DEPENDENCIES = libtests.a -+sched_xetscheduler__pidns_translation_SOURCES = \ -+ sched_xetscheduler--pidns-translation.c -+sched_xetscheduler__pidns_translation_OBJECTS = \ -+ sched_xetscheduler--pidns-translation.$(OBJEXT) -+sched_xetscheduler__pidns_translation_LDADD = $(LDADD) -+sched_xetscheduler__pidns_translation_DEPENDENCIES = libtests.a - sched_yield_SOURCES = sched_yield.c - sched_yield_OBJECTS = sched_yield.$(OBJEXT) - sched_yield_LDADD = $(LDADD) -@@ -3198,6 +3377,12 @@ - signal_receive_OBJECTS = signal_receive.$(OBJEXT) - signal_receive_LDADD = $(LDADD) - signal_receive_DEPENDENCIES = libtests.a -+signal_receive__pidns_translation_SOURCES = \ -+ signal_receive--pidns-translation.c -+signal_receive__pidns_translation_OBJECTS = \ -+ signal_receive--pidns-translation.$(OBJEXT) -+signal_receive__pidns_translation_LDADD = $(LDADD) -+signal_receive__pidns_translation_DEPENDENCIES = libtests.a - signalfd4_SOURCES = signalfd4.c - signalfd4_OBJECTS = signalfd4.$(OBJEXT) - signalfd4_LDADD = $(LDADD) -@@ -3234,6 +3419,12 @@ - so_peercred_OBJECTS = so_peercred.$(OBJEXT) - so_peercred_LDADD = $(LDADD) - so_peercred_DEPENDENCIES = libtests.a -+so_peercred__pidns_translation_SOURCES = \ -+ so_peercred--pidns-translation.c -+so_peercred__pidns_translation_OBJECTS = \ -+ so_peercred--pidns-translation.$(OBJEXT) -+so_peercred__pidns_translation_LDADD = $(LDADD) -+so_peercred__pidns_translation_DEPENDENCIES = libtests.a - so_peercred_Xabbrev_SOURCES = so_peercred-Xabbrev.c - so_peercred_Xabbrev_OBJECTS = so_peercred-Xabbrev.$(OBJEXT) - so_peercred_Xabbrev_LDADD = $(LDADD) -@@ -3448,6 +3639,11 @@ - tgkill_OBJECTS = tgkill.$(OBJEXT) - tgkill_LDADD = $(LDADD) - tgkill_DEPENDENCIES = libtests.a -+tgkill__pidns_translation_SOURCES = tgkill--pidns-translation.c -+tgkill__pidns_translation_OBJECTS = \ -+ tgkill--pidns-translation.$(OBJEXT) -+tgkill__pidns_translation_LDADD = $(LDADD) -+tgkill__pidns_translation_DEPENDENCIES = libtests.a - threads_execve_SOURCES = threads-execve.c - threads_execve_OBJECTS = threads-execve.$(OBJEXT) - threads_execve_DEPENDENCIES = $(am__DEPENDENCIES_1) $(LDADD) -@@ -3493,10 +3689,20 @@ - tkill_OBJECTS = tkill.$(OBJEXT) - tkill_LDADD = $(LDADD) - tkill_DEPENDENCIES = libtests.a -+tkill__pidns_translation_SOURCES = tkill--pidns-translation.c -+tkill__pidns_translation_OBJECTS = tkill--pidns-translation.$(OBJEXT) -+tkill__pidns_translation_LDADD = $(LDADD) -+tkill__pidns_translation_DEPENDENCIES = libtests.a - tracer_ppid_pgid_sid_SOURCES = tracer_ppid_pgid_sid.c - tracer_ppid_pgid_sid_OBJECTS = tracer_ppid_pgid_sid.$(OBJEXT) - tracer_ppid_pgid_sid_LDADD = $(LDADD) - tracer_ppid_pgid_sid_DEPENDENCIES = libtests.a -+am_trie_test_OBJECTS = trie_test-trie_test.$(OBJEXT) \ -+ trie_test-trie_for_tests.$(OBJEXT) -+trie_test_OBJECTS = $(am_trie_test_OBJECTS) -+trie_test_DEPENDENCIES = $(LDADD) $(am__DEPENDENCIES_1) -+trie_test_LINK = $(CCLD) $(trie_test_CFLAGS) $(CFLAGS) $(AM_LDFLAGS) \ -+ $(LDFLAGS) -o $@ - truncate_SOURCES = truncate.c - truncate_OBJECTS = truncate.$(OBJEXT) - truncate_LDADD = $(LDADD) -@@ -3658,6 +3864,12 @@ - xet_robust_list_OBJECTS = xet_robust_list.$(OBJEXT) - xet_robust_list_LDADD = $(LDADD) - xet_robust_list_DEPENDENCIES = libtests.a -+xet_robust_list__pidns_translation_SOURCES = \ -+ xet_robust_list--pidns-translation.c -+xet_robust_list__pidns_translation_OBJECTS = \ -+ xet_robust_list--pidns-translation.$(OBJEXT) -+xet_robust_list__pidns_translation_LDADD = $(LDADD) -+xet_robust_list__pidns_translation_DEPENDENCIES = libtests.a - xet_thread_area_x86_SOURCES = xet_thread_area_x86.c - xet_thread_area_x86_OBJECTS = xet_thread_area_x86.$(OBJEXT) - xet_thread_area_x86_LDADD = $(LDADD) -@@ -3670,10 +3882,21 @@ - xetpgid_OBJECTS = xetpgid.$(OBJEXT) - xetpgid_LDADD = $(LDADD) - xetpgid_DEPENDENCIES = libtests.a -+xetpgid__pidns_translation_SOURCES = xetpgid--pidns-translation.c -+xetpgid__pidns_translation_OBJECTS = \ -+ xetpgid--pidns-translation.$(OBJEXT) -+xetpgid__pidns_translation_LDADD = $(LDADD) -+xetpgid__pidns_translation_DEPENDENCIES = libtests.a - xetpriority_SOURCES = xetpriority.c - xetpriority_OBJECTS = xetpriority.$(OBJEXT) - xetpriority_LDADD = $(LDADD) - xetpriority_DEPENDENCIES = libtests.a -+xetpriority__pidns_translation_SOURCES = \ -+ xetpriority--pidns-translation.c -+xetpriority__pidns_translation_OBJECTS = \ -+ xetpriority--pidns-translation.$(OBJEXT) -+xetpriority__pidns_translation_LDADD = $(LDADD) -+xetpriority__pidns_translation_DEPENDENCIES = libtests.a - xettimeofday_SOURCES = xettimeofday.c - xettimeofday_OBJECTS = xettimeofday.$(OBJEXT) - xettimeofday_LDADD = $(LDADD) -@@ -3759,13 +3982,15 @@ - ./$(DEPDIR)/fanotify_mark.Po ./$(DEPDIR)/fchdir.Po \ - ./$(DEPDIR)/fchmod.Po ./$(DEPDIR)/fchmodat.Po \ - ./$(DEPDIR)/fchown.Po ./$(DEPDIR)/fchown32.Po \ -- ./$(DEPDIR)/fchownat.Po ./$(DEPDIR)/fcntl.Po \ -- ./$(DEPDIR)/fcntl64.Po ./$(DEPDIR)/fdatasync.Po \ -+ ./$(DEPDIR)/fchownat.Po \ -+ ./$(DEPDIR)/fcntl--pidns-translation.Po ./$(DEPDIR)/fcntl.Po \ -+ ./$(DEPDIR)/fcntl64--pidns-translation.Po ./$(DEPDIR)/fcntl64.Po \ -+ ./$(DEPDIR)/fdatasync.Po \ - ./$(DEPDIR)/fflush.Po ./$(DEPDIR)/file_handle.Po \ - ./$(DEPDIR)/file_ioctl.Po ./$(DEPDIR)/filter-unavailable.Po \ - ./$(DEPDIR)/filter_seccomp-flag.Po \ - ./$(DEPDIR)/filter_seccomp-perf.Po ./$(DEPDIR)/finit_module.Po \ -- ./$(DEPDIR)/flock.Po ./$(DEPDIR)/fork-f.Po \ -+ ./$(DEPDIR)/flock.Po ./$(DEPDIR)/fork--pidns-translation.Po ./$(DEPDIR)/fork-f.Po \ - ./$(DEPDIR)/fsconfig-P.Po ./$(DEPDIR)/fsconfig.Po \ - ./$(DEPDIR)/fsmount.Po ./$(DEPDIR)/fsopen.Po \ - ./$(DEPDIR)/fspick-P.Po ./$(DEPDIR)/fspick.Po \ -@@ -3786,13 +4011,14 @@ - ./$(DEPDIR)/geteuid32.Po ./$(DEPDIR)/getgid.Po \ - ./$(DEPDIR)/getgid32.Po ./$(DEPDIR)/getgroups.Po \ - ./$(DEPDIR)/getgroups32.Po ./$(DEPDIR)/getpeername.Po \ -- ./$(DEPDIR)/getpgrp.Po ./$(DEPDIR)/getpid.Po \ -+ ./$(DEPDIR)/getpgrp--pidns-translation.Po ./$(DEPDIR)/getpgrp.Po \ -+ ./$(DEPDIR)/getpid--pidns-translation.Po ./$(DEPDIR)/getpid.Po \ - ./$(DEPDIR)/getppid.Po ./$(DEPDIR)/getrandom.Po \ - ./$(DEPDIR)/getresgid.Po ./$(DEPDIR)/getresgid32.Po \ - ./$(DEPDIR)/getresuid.Po ./$(DEPDIR)/getresuid32.Po \ - ./$(DEPDIR)/getrlimit.Po ./$(DEPDIR)/getrusage.Po \ -- ./$(DEPDIR)/getsid.Po ./$(DEPDIR)/getsockname.Po \ -- ./$(DEPDIR)/gettid.Po ./$(DEPDIR)/getuid.Po \ -+ ./$(DEPDIR)/getsid--pidns-translation.Po ./$(DEPDIR)/getsid.Po ./$(DEPDIR)/getsockname.Po \ -+ ./$(DEPDIR)/gettid--pidns-translation.Po ./$(DEPDIR)/gettid.Po ./$(DEPDIR)/getuid.Po \ - ./$(DEPDIR)/getuid32.Po ./$(DEPDIR)/getxgid.Po \ - ./$(DEPDIR)/getxpid.Po ./$(DEPDIR)/getxuid.Po \ - ./$(DEPDIR)/group_req.Po ./$(DEPDIR)/inet-cmsg.Po \ -@@ -3802,7 +4028,7 @@ - ./$(DEPDIR)/inotify_init1.Po ./$(DEPDIR)/int_0x80.Po \ - ./$(DEPDIR)/io_uring_enter.Po ./$(DEPDIR)/io_uring_register.Po \ - ./$(DEPDIR)/io_uring_setup.Po ./$(DEPDIR)/ioctl.Po \ -- ./$(DEPDIR)/ioctl_block.Po ./$(DEPDIR)/ioctl_dm-v.Po \ -+ ./$(DEPDIR)/ioctl_block--pidns-translation.Po ./$(DEPDIR)/ioctl_block.Po ./$(DEPDIR)/ioctl_dm-v.Po \ - ./$(DEPDIR)/ioctl_dm.Po ./$(DEPDIR)/ioctl_evdev-Xabbrev.Po \ - ./$(DEPDIR)/ioctl_evdev-Xraw.Po \ - ./$(DEPDIR)/ioctl_evdev-Xverbose.Po \ -@@ -3861,7 +4087,7 @@ - ./$(DEPDIR)/ioctl_v4l2-v-Xverbose.Po \ - ./$(DEPDIR)/ioctl_v4l2-v.Po ./$(DEPDIR)/ioctl_v4l2.Po \ - ./$(DEPDIR)/ioctl_watchdog.Po ./$(DEPDIR)/ioperm.Po \ -- ./$(DEPDIR)/iopl.Po ./$(DEPDIR)/ioprio-Xabbrev.Po \ -+ ./$(DEPDIR)/iopl.Po ./$(DEPDIR)/ioprio--pidns-translation.Po ./$(DEPDIR)/ioprio-Xabbrev.Po \ - ./$(DEPDIR)/ioprio-Xraw.Po ./$(DEPDIR)/ioprio-Xverbose.Po \ - ./$(DEPDIR)/ioprio.Po ./$(DEPDIR)/ip_mreq.Po \ - ./$(DEPDIR)/ipc.Po ./$(DEPDIR)/ipc_msg-Xabbrev.Po \ -@@ -3873,15 +4099,15 @@ - ./$(DEPDIR)/ipc_sem-Xverbose.Po ./$(DEPDIR)/ipc_sem.Po \ - ./$(DEPDIR)/ipc_shm-Xabbrev.Po ./$(DEPDIR)/ipc_shm-Xraw.Po \ - ./$(DEPDIR)/ipc_shm-Xverbose.Po ./$(DEPDIR)/ipc_shm.Po \ -- ./$(DEPDIR)/is_linux_mips_n64.Po ./$(DEPDIR)/kcmp-y.Po \ -- ./$(DEPDIR)/kcmp.Po ./$(DEPDIR)/kern_features.Po \ -+ ./$(DEPDIR)/is_linux_mips_n64.Po ./$(DEPDIR)/kcmp-y--pidns-translation.Po \ -+ ./$(DEPDIR)/kcmp-y.Po ./$(DEPDIR)/kcmp.Po ./$(DEPDIR)/kern_features.Po \ - ./$(DEPDIR)/kernel_version-Xabbrev.Po \ - ./$(DEPDIR)/kernel_version-Xraw.Po \ - ./$(DEPDIR)/kernel_version-Xverbose.Po \ - ./$(DEPDIR)/kernel_version.Po ./$(DEPDIR)/kexec_file_load.Po \ - ./$(DEPDIR)/kexec_load.Po ./$(DEPDIR)/keyctl-Xabbrev.Po \ - ./$(DEPDIR)/keyctl-Xraw.Po ./$(DEPDIR)/keyctl-Xverbose.Po \ -- ./$(DEPDIR)/keyctl.Po ./$(DEPDIR)/kill.Po \ -+ ./$(DEPDIR)/keyctl.Po ./$(DEPDIR)/kill--pidns-translation.Po ./$(DEPDIR)/kill.Po \ - ./$(DEPDIR)/kill_child.Po ./$(DEPDIR)/ksysent.Po \ - ./$(DEPDIR)/lchown.Po ./$(DEPDIR)/lchown32.Po \ - ./$(DEPDIR)/libtests_a-create_nl_socket.Po \ -@@ -3915,7 +4141,8 @@ - ./$(DEPDIR)/libtests_a-test_printpath.Po \ - ./$(DEPDIR)/libtests_a-test_printstrn.Po \ - ./$(DEPDIR)/libtests_a-test_ucopy.Po \ -- ./$(DEPDIR)/libtests_a-tprintf.Po ./$(DEPDIR)/link.Po \ -+ ./$(DEPDIR)/libtests_a-tprintf.Po \ -+ ./$(DEPDIR)/libtests_a-xmalloc_for_tests.Po ./$(DEPDIR)/link.Po \ - ./$(DEPDIR)/linkat.Po ./$(DEPDIR)/list_sigaction_signum.Po \ - ./$(DEPDIR)/llseek.Po ./$(DEPDIR)/localtime.Po \ - ./$(DEPDIR)/lookup_dcookie.Po ./$(DEPDIR)/looping_threads.Po \ -@@ -3928,7 +4155,9 @@ - ./$(DEPDIR)/membarrier.Po ./$(DEPDIR)/memfd_create-Xabbrev.Po \ - ./$(DEPDIR)/memfd_create-Xraw.Po \ - ./$(DEPDIR)/memfd_create-Xverbose.Po \ -- ./$(DEPDIR)/memfd_create.Po ./$(DEPDIR)/migrate_pages.Po \ -+ ./$(DEPDIR)/memfd_create.Po \ -+ ./$(DEPDIR)/migrate_pages--pidns-translation.Po \ -+ ./$(DEPDIR)/migrate_pages.Po \ - ./$(DEPDIR)/mincore.Po ./$(DEPDIR)/mkdir.Po \ - ./$(DEPDIR)/mkdirat.Po ./$(DEPDIR)/mknod.Po \ - ./$(DEPDIR)/mknodat.Po ./$(DEPDIR)/mlock.Po \ -@@ -3944,7 +4173,7 @@ - ./$(DEPDIR)/modify_ldt.Po ./$(DEPDIR)/mount-Xabbrev.Po \ - ./$(DEPDIR)/mount-Xraw.Po ./$(DEPDIR)/mount-Xverbose.Po \ - ./$(DEPDIR)/mount.Po ./$(DEPDIR)/move_mount-P.Po \ -- ./$(DEPDIR)/move_mount.Po ./$(DEPDIR)/move_pages-Xabbrev.Po \ -+ ./$(DEPDIR)/move_mount.Po ./$(DEPDIR)/move_pages--pidns-translation.Po ./$(DEPDIR)/move_pages-Xabbrev.Po \ - ./$(DEPDIR)/move_pages-Xraw.Po \ - ./$(DEPDIR)/move_pages-Xverbose.Po ./$(DEPDIR)/move_pages.Po \ - ./$(DEPDIR)/mq.Po ./$(DEPDIR)/mq_sendrecv-read.Po \ -@@ -3961,12 +4190,13 @@ - ./$(DEPDIR)/net-packet_mreq-Xabbrev.Po \ - ./$(DEPDIR)/net-packet_mreq-Xraw.Po \ - ./$(DEPDIR)/net-packet_mreq-Xverbose.Po \ -- ./$(DEPDIR)/net-packet_mreq.Po ./$(DEPDIR)/net-sockaddr.Po \ -+ ./$(DEPDIR)/net-packet_mreq.Po ./$(DEPDIR)/net-sockaddr--pidns-translation.Po ./$(DEPDIR)/net-sockaddr.Po \ - ./$(DEPDIR)/net-tpacket_req.Po \ - ./$(DEPDIR)/net-tpacket_stats-success.Po \ - ./$(DEPDIR)/net-tpacket_stats.Po ./$(DEPDIR)/net-y-unix.Po \ - ./$(DEPDIR)/net-yy-inet.Po ./$(DEPDIR)/net-yy-inet6.Po \ - ./$(DEPDIR)/net-yy-netlink.Po ./$(DEPDIR)/net-yy-unix.Po \ -+ ./$(DEPDIR)/netlink_audit--pidns-translation.Po \ - ./$(DEPDIR)/netlink_audit.Po ./$(DEPDIR)/netlink_crypto.Po \ - ./$(DEPDIR)/netlink_generic.Po \ - ./$(DEPDIR)/netlink_inet_diag.Po \ -@@ -4043,9 +4273,11 @@ - ./$(DEPDIR)/pidfd_open--decode-fd-path.Po \ - ./$(DEPDIR)/pidfd_open--decode-fd-pidfd.Po \ - ./$(DEPDIR)/pidfd_open--decode-fd-socket.Po \ -+ ./$(DEPDIR)/pidfd_open--pidns-translation.Po \ - ./$(DEPDIR)/pidfd_open-P.Po ./$(DEPDIR)/pidfd_open-y.Po \ - ./$(DEPDIR)/pidfd_open-yy.Po ./$(DEPDIR)/pidfd_open.Po \ -- ./$(DEPDIR)/pidfd_send_signal.Po ./$(DEPDIR)/pipe.Po \ -+ ./$(DEPDIR)/pidfd_send_signal--pidns-translation.Po \ -+ ./$(DEPDIR)/pidfd_send_signal.Po ./$(DEPDIR)/pidns-cache.Po ./$(DEPDIR)/pipe.Po \ - ./$(DEPDIR)/pipe2.Po ./$(DEPDIR)/pkey_alloc.Po \ - ./$(DEPDIR)/pkey_free.Po ./$(DEPDIR)/pkey_mprotect.Po \ - ./$(DEPDIR)/poll-P.Po ./$(DEPDIR)/poll.Po \ -@@ -4070,8 +4302,10 @@ - ./$(DEPDIR)/printsignal-Xverbose.Po ./$(DEPDIR)/printstr.Po \ - ./$(DEPDIR)/printstrn-umoven-peekdata.Po \ - ./$(DEPDIR)/printstrn-umoven-undumpable.Po \ -- ./$(DEPDIR)/printstrn-umoven.Po ./$(DEPDIR)/prlimit64.Po \ -+ ./$(DEPDIR)/printstrn-umoven.Po ./$(DEPDIR)/prlimit64--pidns-translation.Po ./$(DEPDIR)/prlimit64.Po \ -+ ./$(DEPDIR)/process_vm_readv--pidns-translation.Po \ - ./$(DEPDIR)/process_vm_readv.Po \ -+ ./$(DEPDIR)/process_vm_writev--pidns-translation.Po \ - ./$(DEPDIR)/process_vm_writev.Po ./$(DEPDIR)/pselect6.Po \ - ./$(DEPDIR)/ptrace.Po ./$(DEPDIR)/ptrace_syscall_info.Po \ - ./$(DEPDIR)/pwritev-pwritev.Po ./$(DEPDIR)/qual_fault.Po \ -@@ -4101,9 +4335,10 @@ - ./$(DEPDIR)/request_key.Po ./$(DEPDIR)/restart_syscall.Po \ - ./$(DEPDIR)/riscv_flush_icache.Po ./$(DEPDIR)/rmdir.Po \ - ./$(DEPDIR)/rt_sigaction.Po ./$(DEPDIR)/rt_sigpending.Po \ -- ./$(DEPDIR)/rt_sigprocmask.Po ./$(DEPDIR)/rt_sigqueueinfo.Po \ -+ ./$(DEPDIR)/rt_sigprocmask.Po ./$(DEPDIR)/rt_sigqueueinfo--pidns-translation.Po ./$(DEPDIR)/rt_sigqueueinfo.Po \ - ./$(DEPDIR)/rt_sigreturn.Po ./$(DEPDIR)/rt_sigsuspend.Po \ - ./$(DEPDIR)/rt_sigtimedwait.Po \ -+ ./$(DEPDIR)/rt_tgsigqueueinfo--pidns-translation.Po \ - ./$(DEPDIR)/rt_tgsigqueueinfo.Po \ - ./$(DEPDIR)/run_expect_termsig.Po \ - ./$(DEPDIR)/s390_guarded_storage-v.Po \ -@@ -4113,9 +4348,15 @@ - ./$(DEPDIR)/s390_sthyi.Po \ - ./$(DEPDIR)/sched_get_priority_mxx.Po \ - ./$(DEPDIR)/sched_rr_get_interval.Po \ -- ./$(DEPDIR)/sched_xetaffinity.Po ./$(DEPDIR)/sched_xetattr.Po \ -+ ./$(DEPDIR)/sched_xetaffinity--pidns-translation.Po \ -+ ./$(DEPDIR)/sched_xetaffinity.Po \ -+ ./$(DEPDIR)/sched_xetattr--pidns-translation.Po \ -+ ./$(DEPDIR)/sched_xetattr.Po \ -+ ./$(DEPDIR)/sched_xetparam--pidns-translation.Po \ - ./$(DEPDIR)/sched_xetparam.Po \ -- ./$(DEPDIR)/sched_xetscheduler.Po ./$(DEPDIR)/sched_yield.Po \ -+ ./$(DEPDIR)/sched_xetscheduler--pidns-translation.Po \ -+ ./$(DEPDIR)/sched_xetscheduler.Po \ -+ ./$(DEPDIR)/sched_yield.Po \ - ./$(DEPDIR)/scm_rights.Po ./$(DEPDIR)/seccomp-filter-v.Po \ - ./$(DEPDIR)/seccomp-filter.Po ./$(DEPDIR)/seccomp-strict.Po \ - ./$(DEPDIR)/seccomp_get_action_avail.Po \ -@@ -4143,11 +4384,12 @@ - ./$(DEPDIR)/shmxt.Po ./$(DEPDIR)/shutdown.Po \ - ./$(DEPDIR)/sigaction.Po ./$(DEPDIR)/sigaltstack.Po \ - ./$(DEPDIR)/siginfo.Po ./$(DEPDIR)/signal.Po \ -- ./$(DEPDIR)/signal_receive.Po ./$(DEPDIR)/signalfd4.Po \ -+ ./$(DEPDIR)/signal_receive--pidns-translation.Po ./$(DEPDIR)/signal_receive.Po ./$(DEPDIR)/signalfd4.Po \ - ./$(DEPDIR)/sigpending.Po ./$(DEPDIR)/sigprocmask.Po \ - ./$(DEPDIR)/sigreturn.Po ./$(DEPDIR)/sigsuspend.Po \ - ./$(DEPDIR)/sleep.Po ./$(DEPDIR)/so_error.Po \ -- ./$(DEPDIR)/so_linger.Po ./$(DEPDIR)/so_peercred-Xabbrev.Po \ -+ ./$(DEPDIR)/so_linger.Po ./$(DEPDIR)/so_peercred--pidns-translation.Po \ -+ ./$(DEPDIR)/so_peercred-Xabbrev.Po \ - ./$(DEPDIR)/so_peercred-Xraw.Po \ - ./$(DEPDIR)/so_peercred-Xverbose.Po ./$(DEPDIR)/so_peercred.Po \ - ./$(DEPDIR)/sock_filter-v-Xabbrev.Po \ -@@ -4186,7 +4428,7 @@ - ./$(DEPDIR)/symlinkat.Po ./$(DEPDIR)/sync.Po \ - ./$(DEPDIR)/sync_file_range.Po ./$(DEPDIR)/sync_file_range2.Po \ - ./$(DEPDIR)/sysinfo.Po ./$(DEPDIR)/syslog-success.Po \ -- ./$(DEPDIR)/syslog.Po ./$(DEPDIR)/tee.Po ./$(DEPDIR)/tgkill.Po \ -+ ./$(DEPDIR)/syslog.Po ./$(DEPDIR)/tee.Po ./$(DEPDIR)/tgkill--pidns-translation.Po ./$(DEPDIR)/tgkill.Po \ - ./$(DEPDIR)/threads-execve--quiet-thread-execve.Po \ - ./$(DEPDIR)/threads-execve-q.Po \ - ./$(DEPDIR)/threads-execve-qq.Po \ -@@ -4194,7 +4436,8 @@ - ./$(DEPDIR)/threads-execve.Po ./$(DEPDIR)/time.Po \ - ./$(DEPDIR)/timer_create.Po ./$(DEPDIR)/timer_xettime.Po \ - ./$(DEPDIR)/timerfd_xettime.Po ./$(DEPDIR)/times-fail.Po \ -- ./$(DEPDIR)/times.Po ./$(DEPDIR)/tkill.Po ./$(DEPDIR)/tracer_ppid_pgid_sid.Po \ -+ ./$(DEPDIR)/times.Po ./$(DEPDIR)/tkill--pidns-translation.Po \ -+ ./$(DEPDIR)/tkill.Po ./$(DEPDIR)/tracer_ppid_pgid_sid.Po \ - ./$(DEPDIR)/truncate.Po ./$(DEPDIR)/truncate64-truncate64.Po \ - ./$(DEPDIR)/ugetrlimit.Po ./$(DEPDIR)/uio-uio.Po \ - ./$(DEPDIR)/umask.Po ./$(DEPDIR)/umount.Po \ -@@ -4216,9 +4459,11 @@ - ./$(DEPDIR)/wait4-v.Po ./$(DEPDIR)/wait4.Po \ - ./$(DEPDIR)/waitid-v.Po ./$(DEPDIR)/waitid.Po \ - ./$(DEPDIR)/waitpid.Po ./$(DEPDIR)/xattr-strings.Po \ -- ./$(DEPDIR)/xattr.Po ./$(DEPDIR)/xet_robust_list.Po \ -+ ./$(DEPDIR)/xattr.Po ./$(DEPDIR)/xet_robust_list--pidns-translation.Po \ -+ ./$(DEPDIR)/xet_robust_list.Po \ - ./$(DEPDIR)/xet_thread_area_x86.Po ./$(DEPDIR)/xetitimer.Po \ -- ./$(DEPDIR)/xetpgid.Po ./$(DEPDIR)/xetpriority.Po \ -+ ./$(DEPDIR)/xetpgid--pidns-translation.Po ./$(DEPDIR)/xetpgid.Po \ -+ ./$(DEPDIR)/xetpriority--pidns-translation.Po ./$(DEPDIR)/xetpriority.Po \ - ./$(DEPDIR)/xettimeofday.Po ./$(DEPDIR)/zeroargc.Po - am__mv = mv -f - AM_V_lt = $(am__v_lt_@AM_V@) -@@ -4264,26 +4509,30 @@ - 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 fcntl64.c fdatasync.c fflush.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-f.c fsconfig.c fsconfig-P.c fsmount.c fsopen.c \ -- fspick.c fspick-P.c fstat.c fstat-Xabbrev.c fstat-Xraw.c \ -- fstat-Xverbose.c fstat64.c fstat64-Xabbrev.c fstat64-Xraw.c \ -- fstat64-Xverbose.c fstatat64.c fstatfs.c fstatfs64.c fsync.c \ -- fsync-y.c ftruncate.c ftruncate64.c futex.c futimesat.c \ -- get_mempolicy.c get_process_reaper.c getcpu.c getcwd.c \ -- getdents.c getdents-v.c getdents64.c getdents64-v.c getegid.c \ -- getegid32.c geteuid.c geteuid32.c getgid.c getgid32.c \ -- getgroups.c getgroups32.c getpeername.c getpgrp.c getpid.c \ -- getppid.c getrandom.c getresgid.c getresgid32.c getresuid.c \ -- getresuid32.c getrlimit.c getrusage.c getsid.c getsockname.c \ -- gettid.c getuid.c getuid32.c getxgid.c getxpid.c getxuid.c \ -- group_req.c inet-cmsg.c init_module.c inject-nf.c inotify.c \ -- inotify_init.c inotify_init-y.c inotify_init1.c \ -- inotify_init1-y.c int_0x80.c io_uring_enter.c \ -- io_uring_register.c io_uring_setup.c ioctl.c ioctl_block.c \ -- ioctl_dm.c ioctl_dm-v.c ioctl_evdev.c ioctl_evdev-Xabbrev.c \ -+ flock.c fork--pidns-translation.c fork-f.c fsconfig.c \ -+ fsconfig-P.c fsmount.c fsopen.c fspick.c fspick-P.c fstat.c \ -+ fstat-Xabbrev.c fstat-Xraw.c fstat-Xverbose.c fstat64.c \ -+ fstat64-Xabbrev.c fstat64-Xraw.c fstat64-Xverbose.c \ -+ fstatat64.c fstatfs.c fstatfs64.c fsync.c fsync-y.c \ -+ ftruncate.c ftruncate64.c futex.c futimesat.c get_mempolicy.c \ -+ get_process_reaper.c getcpu.c getcwd.c getdents.c getdents-v.c \ -+ getdents64.c getdents64-v.c getegid.c getegid32.c geteuid.c \ -+ geteuid32.c getgid.c getgid32.c getgroups.c getgroups32.c \ -+ getpeername.c getpgrp.c getpgrp--pidns-translation.c getpid.c \ -+ getpid--pidns-translation.c getppid.c getrandom.c getresgid.c \ -+ getresgid32.c getresuid.c getresuid32.c getrlimit.c \ -+ getrusage.c getsid.c getsid--pidns-translation.c getsockname.c \ -+ gettid.c gettid--pidns-translation.c getuid.c getuid32.c \ -+ getxgid.c getxpid.c getxuid.c group_req.c inet-cmsg.c \ -+ init_module.c inject-nf.c inotify.c inotify_init.c \ -+ inotify_init-y.c inotify_init1.c inotify_init1-y.c int_0x80.c \ -+ io_uring_enter.c io_uring_register.c io_uring_setup.c ioctl.c \ -+ ioctl_block.c ioctl_block--pidns-translation.c ioctl_dm.c \ -+ ioctl_dm-v.c ioctl_evdev.c ioctl_evdev-Xabbrev.c \ - ioctl_evdev-Xraw.c ioctl_evdev-Xverbose.c \ - ioctl_evdev-success.c ioctl_evdev-success-Xabbrev.c \ - ioctl_evdev-success-Xraw.c ioctl_evdev-success-Xverbose.c \ -@@ -4311,47 +4560,51 @@ - ioctl_v4l2-success-v-Xverbose.c ioctl_v4l2-v.c \ - ioctl_v4l2-v-Xabbrev.c ioctl_v4l2-v-Xraw.c \ - ioctl_v4l2-v-Xverbose.c ioctl_watchdog.c ioperm.c iopl.c \ -- ioprio.c ioprio-Xabbrev.c ioprio-Xraw.c ioprio-Xverbose.c \ -- ip_mreq.c ipc.c ipc_msg.c ipc_msg-Xabbrev.c ipc_msg-Xraw.c \ -- ipc_msg-Xverbose.c ipc_msgbuf.c ipc_msgbuf-Xabbrev.c \ -- ipc_msgbuf-Xraw.c ipc_msgbuf-Xverbose.c ipc_sem.c \ -- ipc_sem-Xabbrev.c ipc_sem-Xraw.c ipc_sem-Xverbose.c ipc_shm.c \ -- ipc_shm-Xabbrev.c ipc_shm-Xraw.c ipc_shm-Xverbose.c \ -- is_linux_mips_n64.c kcmp.c kcmp-y.c kern_features.c \ -+ ioprio.c ioprio--pidns-translation.c ioprio-Xabbrev.c \ -+ ioprio-Xraw.c ioprio-Xverbose.c ip_mreq.c ipc.c ipc_msg.c \ -+ ipc_msg-Xabbrev.c ipc_msg-Xraw.c ipc_msg-Xverbose.c \ -+ ipc_msgbuf.c ipc_msgbuf-Xabbrev.c ipc_msgbuf-Xraw.c \ -+ ipc_msgbuf-Xverbose.c ipc_sem.c ipc_sem-Xabbrev.c \ -+ ipc_sem-Xraw.c ipc_sem-Xverbose.c ipc_shm.c ipc_shm-Xabbrev.c \ -+ ipc_shm-Xraw.c ipc_shm-Xverbose.c is_linux_mips_n64.c kcmp.c \ -+ kcmp-y.c kcmp-y--pidns-translation.c kern_features.c \ - kernel_version.c kernel_version-Xabbrev.c \ - kernel_version-Xraw.c kernel_version-Xverbose.c \ - kexec_file_load.c kexec_load.c keyctl.c keyctl-Xabbrev.c \ -- keyctl-Xraw.c keyctl-Xverbose.c kill.c kill_child.c ksysent.c \ -- lchown.c lchown32.c link.c linkat.c list_sigaction_signum.c \ -- llseek.c localtime.c lookup_dcookie.c looping_threads.c \ -- lseek.c lstat.c lstat64.c madvise.c maybe_switch_current_tcp.c \ -+ keyctl-Xraw.c keyctl-Xverbose.c kill.c \ -+ kill--pidns-translation.c kill_child.c ksysent.c lchown.c \ -+ lchown32.c link.c linkat.c list_sigaction_signum.c llseek.c \ -+ localtime.c lookup_dcookie.c looping_threads.c lseek.c lstat.c \ -+ lstat64.c madvise.c maybe_switch_current_tcp.c \ - maybe_switch_current_tcp--quiet-thread-execve.c mbind.c \ - mbind-Xabbrev.c mbind-Xraw.c mbind-Xverbose.c membarrier.c \ - memfd_create.c memfd_create-Xabbrev.c memfd_create-Xraw.c \ -- memfd_create-Xverbose.c migrate_pages.c mincore.c mkdir.c \ -- mkdirat.c mknod.c mknodat.c mlock.c mlock2.c mlockall.c mmap.c \ -+ memfd_create-Xverbose.c migrate_pages.c \ -+ migrate_pages--pidns-translation.c mincore.c mkdir.c mkdirat.c \ -+ mknod.c mknodat.c mlock.c mlock2.c mlockall.c mmap.c \ - mmap-Xabbrev.c mmap-Xraw.c mmap-Xverbose.c mmap64.c \ - mmap64-Xabbrev.c mmap64-Xraw.c mmap64-Xverbose.c mmsg.c \ - mmsg-silent.c mmsg_name.c mmsg_name-v.c modify_ldt.c mount.c \ - mount-Xabbrev.c mount-Xraw.c mount-Xverbose.c move_mount.c \ -- move_mount-P.c move_pages.c move_pages-Xabbrev.c \ -- move_pages-Xraw.c move_pages-Xverbose.c mq.c mq_sendrecv.c \ -- mq_sendrecv-read.c mq_sendrecv-write.c msg_control.c \ -- msg_control-v.c msg_name.c munlockall.c nanosleep.c \ -- net--decode-fds-dev-netlink.c net--decode-fds-none-netlink.c \ -- net--decode-fds-path-netlink.c \ -+ move_mount-P.c move_pages.c move_pages--pidns-translation.c \ -+ move_pages-Xabbrev.c move_pages-Xraw.c move_pages-Xverbose.c \ -+ mq.c mq_sendrecv.c mq_sendrecv-read.c mq_sendrecv-write.c \ -+ msg_control.c msg_control-v.c msg_name.c munlockall.c \ -+ nanosleep.c net--decode-fds-dev-netlink.c \ -+ net--decode-fds-none-netlink.c net--decode-fds-path-netlink.c \ - net--decode-fds-socket-netlink.c net-accept-connect.c \ - net-icmp_filter.c net-packet_mreq.c net-packet_mreq-Xabbrev.c \ - net-packet_mreq-Xraw.c net-packet_mreq-Xverbose.c \ -- net-sockaddr.c net-tpacket_req.c net-tpacket_stats.c \ -+ net-sockaddr.c net-sockaddr--pidns-translation.c \ -+ net-tpacket_req.c net-tpacket_stats.c \ - net-tpacket_stats-success.c net-y-unix.c net-yy-inet.c \ - net-yy-inet6.c net-yy-netlink.c net-yy-unix.c netlink_audit.c \ -- netlink_crypto.c netlink_generic.c netlink_inet_diag.c \ -- netlink_kobject_uevent.c netlink_netfilter.c \ -- netlink_netlink_diag.c netlink_protocol.c netlink_route.c \ -- netlink_selinux.c netlink_sock_diag.c netlink_unix_diag.c \ -- netlink_xfrm.c newfstatat.c nfnetlink_acct.c \ -- nfnetlink_cthelper.c nfnetlink_ctnetlink.c \ -+ netlink_audit--pidns-translation.c netlink_crypto.c \ -+ netlink_generic.c netlink_inet_diag.c netlink_kobject_uevent.c \ -+ netlink_netfilter.c netlink_netlink_diag.c netlink_protocol.c \ -+ netlink_route.c netlink_selinux.c netlink_sock_diag.c \ -+ netlink_unix_diag.c netlink_xfrm.c newfstatat.c \ -+ nfnetlink_acct.c nfnetlink_cthelper.c nfnetlink_ctnetlink.c \ - nfnetlink_ctnetlink_exp.c nfnetlink_cttimeout.c \ - nfnetlink_ipset.c nfnetlink_nft_compat.c nfnetlink_nftables.c \ - nfnetlink_osf.c nfnetlink_queue.c nfnetlink_ulog.c nlattr.c \ -@@ -4381,12 +4634,13 @@ - personality-Xraw.c personality-Xverbose.c pidfd_getfd.c \ - pidfd_getfd-y.c pidfd_getfd-yy.c pidfd_open.c \ - pidfd_open--decode-fd-path.c pidfd_open--decode-fd-pidfd.c \ -- pidfd_open--decode-fd-socket.c pidfd_open-P.c pidfd_open-y.c \ -- pidfd_open-yy.c pidfd_send_signal.c pipe.c pipe2.c \ -- pkey_alloc.c pkey_free.c pkey_mprotect.c poll.c poll-P.c \ -- ppoll.c ppoll-P.c ppoll-v.c prctl-arg2-intptr.c \ -- prctl-dumpable.c prctl-name.c prctl-no-args.c \ -- prctl-pdeathsig.c prctl-seccomp-filter-v.c \ -+ pidfd_open--decode-fd-socket.c pidfd_open--pidns-translation.c \ -+ pidfd_open-P.c pidfd_open-y.c pidfd_open-yy.c \ -+ pidfd_send_signal.c pidfd_send_signal--pidns-translation.c \ -+ pidns-cache.c pipe.c pipe2.c pkey_alloc.c pkey_free.c \ -+ pkey_mprotect.c poll.c poll-P.c ppoll.c ppoll-P.c ppoll-v.c \ -+ prctl-arg2-intptr.c prctl-dumpable.c prctl-name.c \ -+ prctl-no-args.c prctl-pdeathsig.c prctl-seccomp-filter-v.c \ - prctl-seccomp-strict.c prctl-securebits.c prctl-spec-inject.c \ - prctl-tid_address.c prctl-tsc.c pread64-pwrite64.c preadv.c \ - preadv-pwritev.c preadv2-pwritev2.c print_maxfd.c \ -@@ -4395,8 +4649,10 @@ - printsignal-Xabbrev.c printsignal-Xraw.c \ - printsignal-Xverbose.c printstr.c printstrn-umoven.c \ - printstrn-umoven-peekdata.c printstrn-umoven-undumpable.c \ -- prlimit64.c process_vm_readv.c process_vm_writev.c pselect6.c \ -- ptrace.c ptrace_syscall_info.c pwritev.c qual_fault.c \ -+ prlimit64.c prlimit64--pidns-translation.c process_vm_readv.c \ -+ process_vm_readv--pidns-translation.c process_vm_writev.c \ -+ process_vm_writev--pidns-translation.c pselect6.c ptrace.c \ -+ ptrace_syscall_info.c pwritev.c qual_fault.c \ - qual_inject-error-signal.c qual_inject-retval.c \ - qual_inject-signal.c qual_signal.c quotactl.c \ - quotactl-Xabbrev.c quotactl-Xraw.c quotactl-Xverbose.c \ -@@ -4409,60 +4665,70 @@ - remap_file_pages-Xraw.c remap_file_pages-Xverbose.c rename.c \ - renameat.c renameat2.c request_key.c restart_syscall.c \ - riscv_flush_icache.c rmdir.c rt_sigaction.c rt_sigpending.c \ -- rt_sigprocmask.c rt_sigqueueinfo.c rt_sigreturn.c \ -+ rt_sigprocmask.c rt_sigqueueinfo.c \ -+ rt_sigqueueinfo--pidns-translation.c rt_sigreturn.c \ - rt_sigsuspend.c rt_sigtimedwait.c rt_tgsigqueueinfo.c \ -- run_expect_termsig.c s390_guarded_storage.c \ -- s390_guarded_storage-v.c s390_pci_mmio_read_write.c \ -- s390_runtime_instr.c s390_sthyi.c s390_sthyi-v.c \ -- sched_get_priority_mxx.c sched_rr_get_interval.c \ -- sched_xetaffinity.c sched_xetattr.c sched_xetparam.c \ -- sched_xetscheduler.c sched_yield.c scm_rights.c \ -- seccomp-filter.c seccomp-filter-v.c seccomp-strict.c \ -- seccomp_get_action_avail.c select.c select-P.c semop.c \ -- semop-indirect.c semtimedop.c sendfile.c sendfile64.c \ -- set_mempolicy.c set_mempolicy-Xabbrev.c set_mempolicy-Xraw.c \ -- set_mempolicy-Xverbose.c set_ptracer_any.c set_sigblock.c \ -- set_sigign.c setdomainname.c setfsgid.c setfsgid32.c \ -- setfsuid.c setfsuid32.c setgid.c setgid32.c setgroups.c \ -- setgroups32.c sethostname.c setns.c setpgrp-exec.c setregid.c \ -- setregid32.c setresgid.c setresgid32.c setresuid.c \ -- setresuid32.c setreuid.c setreuid32.c setrlimit.c \ -- setrlimit-Xabbrev.c setrlimit-Xraw.c setrlimit-Xverbose.c \ -- setuid.c setuid32.c shmxt.c shutdown.c sigaction.c \ -- sigaltstack.c siginfo.c signal.c signal_receive.c signalfd4.c \ -- sigpending.c sigprocmask.c sigreturn.c sigsuspend.c sleep.c \ -- so_error.c so_linger.c so_peercred.c so_peercred-Xabbrev.c \ -- so_peercred-Xraw.c so_peercred-Xverbose.c sock_filter-v.c \ -- sock_filter-v-Xabbrev.c sock_filter-v-Xraw.c \ -- 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_attach_SOURCES) \ -- $(stack_fcall_mangled_SOURCES) stat.c stat64.c statfs.c \ -- statfs64.c status-all.c status-failed.c status-failed-long.c \ -- status-failed-status.c status-none.c status-none-f.c \ -- status-none-threads.c status-successful.c \ -- status-successful-long.c status-successful-status.c \ -- status-unfinished.c status-unfinished-threads.c statx.c \ -- strace--strings-in-hex.c strace--strings-in-hex-all.c \ -+ rt_tgsigqueueinfo--pidns-translation.c run_expect_termsig.c \ -+ s390_guarded_storage.c s390_guarded_storage-v.c \ -+ s390_pci_mmio_read_write.c s390_runtime_instr.c s390_sthyi.c \ -+ s390_sthyi-v.c sched_get_priority_mxx.c \ -+ sched_rr_get_interval.c sched_xetaffinity.c \ -+ sched_xetaffinity--pidns-translation.c sched_xetattr.c \ -+ sched_xetattr--pidns-translation.c sched_xetparam.c \ -+ sched_xetparam--pidns-translation.c sched_xetscheduler.c \ -+ sched_xetscheduler--pidns-translation.c sched_yield.c \ -+ scm_rights.c seccomp-filter.c seccomp-filter-v.c \ -+ seccomp-strict.c seccomp_get_action_avail.c select.c \ -+ select-P.c semop.c semop-indirect.c semtimedop.c sendfile.c \ -+ sendfile64.c set_mempolicy.c set_mempolicy-Xabbrev.c \ -+ set_mempolicy-Xraw.c set_mempolicy-Xverbose.c \ -+ set_ptracer_any.c set_sigblock.c set_sigign.c setdomainname.c \ -+ setfsgid.c setfsgid32.c setfsuid.c setfsuid32.c setgid.c \ -+ setgid32.c setgroups.c setgroups32.c sethostname.c setns.c \ -+ setpgrp-exec.c setregid.c setregid32.c setresgid.c \ -+ setresgid32.c setresuid.c setresuid32.c setreuid.c \ -+ setreuid32.c setrlimit.c setrlimit-Xabbrev.c setrlimit-Xraw.c \ -+ setrlimit-Xverbose.c setuid.c setuid32.c shmxt.c shutdown.c \ -+ sigaction.c sigaltstack.c siginfo.c signal.c signal_receive.c \ -+ signal_receive--pidns-translation.c signalfd4.c sigpending.c \ -+ sigprocmask.c sigreturn.c sigsuspend.c sleep.c so_error.c \ -+ so_linger.c so_peercred.c so_peercred--pidns-translation.c \ -+ so_peercred-Xabbrev.c so_peercred-Xraw.c \ -+ so_peercred-Xverbose.c sock_filter-v.c sock_filter-v-Xabbrev.c \ -+ sock_filter-v-Xraw.c 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_attach_SOURCES) $(stack_fcall_mangled_SOURCES) \ -+ stat.c stat64.c statfs.c statfs64.c status-all.c \ -+ status-failed.c status-failed-long.c status-failed-status.c \ -+ status-none.c status-none-f.c status-none-threads.c \ -+ status-successful.c status-successful-long.c \ -+ status-successful-status.c status-unfinished.c \ -+ status-unfinished-threads.c statx.c strace--strings-in-hex.c \ -+ strace--strings-in-hex-all.c \ - strace--strings-in-hex-non-ascii.c strace-x.c strace-xx.c \ - swap.c sxetmask.c symlink.c symlinkat.c sync.c \ - sync_file_range.c sync_file_range2.c sysinfo.c syslog.c \ -- syslog-success.c tee.c tgkill.c threads-execve.c \ -- threads-execve--quiet-thread-execve.c threads-execve-q.c \ -- threads-execve-qq.c threads-execve-qqq.c time.c timer_create.c \ -- timer_xettime.c timerfd_xettime.c times.c times-fail.c tkill.c \ -- tracer_ppid_pgid_sid.c truncate.c truncate64.c ugetrlimit.c \ -- uio.c umask.c umount.c umount2.c umoven-illptr.c umovestr.c \ -- umovestr-illptr.c umovestr2.c umovestr3.c umovestr_cached.c \ -- umovestr_cached_adjacent.c uname.c unblock_reset_raise.c \ -- unix-pair-send-recv.c unix-pair-sendto-recvfrom.c unlink.c \ -- unlinkat.c unshare.c userfaultfd.c ustat.c utime.c utimensat.c \ -- utimensat-Xabbrev.c utimensat-Xraw.c utimensat-Xverbose.c \ -- utimes.c vfork-f.c vhangup.c vmsplice.c wait4.c wait4-v.c \ -- waitid.c waitid-v.c waitpid.c xattr.c xattr-strings.c \ -- xet_robust_list.c xet_thread_area_x86.c xetitimer.c xetpgid.c \ -- xetpriority.c xettimeofday.c zeroargc.c -+ syslog-success.c tee.c tgkill.c tgkill--pidns-translation.c \ -+ threads-execve.c threads-execve--quiet-thread-execve.c \ -+ threads-execve-q.c threads-execve-qq.c threads-execve-qqq.c \ -+ time.c timer_create.c timer_xettime.c timerfd_xettime.c \ -+ times.c times-fail.c tkill.c tkill--pidns-translation.c \ -+ tracer_ppid_pgid_sid.c $(trie_test_SOURCES) truncate.c \ -+ truncate64.c ugetrlimit.c uio.c umask.c umount.c umount2.c \ -+ umoven-illptr.c umovestr.c umovestr-illptr.c umovestr2.c \ -+ umovestr3.c umovestr_cached.c umovestr_cached_adjacent.c \ -+ uname.c unblock_reset_raise.c unix-pair-send-recv.c \ -+ unix-pair-sendto-recvfrom.c unlink.c unlinkat.c unshare.c \ -+ userfaultfd.c ustat.c utime.c utimensat.c utimensat-Xabbrev.c \ -+ utimensat-Xraw.c utimensat-Xverbose.c utimes.c vfork-f.c \ -+ vhangup.c vmsplice.c wait4.c wait4-v.c waitid.c waitid-v.c \ -+ waitpid.c xattr.c xattr-strings.c xet_robust_list.c \ -+ xet_robust_list--pidns-translation.c xet_thread_area_x86.c \ -+ xetitimer.c xetpgid.c xetpgid--pidns-translation.c \ -+ xetpriority.c xetpriority--pidns-translation.c xettimeofday.c \ -+ zeroargc.c - DIST_SOURCES = $(libtests_a_SOURCES) _newselect.c _newselect-P.c \ - accept.c accept4.c access.c acct.c add_key.c adjtimex.c aio.c \ - aio_pgetevents.c alarm.c answer.c attach-f-p.c \ -@@ -4490,26 +4756,30 @@ - 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 fcntl64.c fdatasync.c fflush.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-f.c fsconfig.c fsconfig-P.c fsmount.c fsopen.c \ -- fspick.c fspick-P.c fstat.c fstat-Xabbrev.c fstat-Xraw.c \ -- fstat-Xverbose.c fstat64.c fstat64-Xabbrev.c fstat64-Xraw.c \ -- fstat64-Xverbose.c fstatat64.c fstatfs.c fstatfs64.c fsync.c \ -- fsync-y.c ftruncate.c ftruncate64.c futex.c futimesat.c \ -- get_mempolicy.c get_process_reaper.c getcpu.c getcwd.c \ -- getdents.c getdents-v.c getdents64.c getdents64-v.c getegid.c \ -- getegid32.c geteuid.c geteuid32.c getgid.c getgid32.c \ -- getgroups.c getgroups32.c getpeername.c getpgrp.c getpid.c \ -- getppid.c getrandom.c getresgid.c getresgid32.c getresuid.c \ -- getresuid32.c getrlimit.c getrusage.c getsid.c getsockname.c \ -- gettid.c getuid.c getuid32.c getxgid.c getxpid.c getxuid.c \ -- group_req.c inet-cmsg.c init_module.c inject-nf.c inotify.c \ -- inotify_init.c inotify_init-y.c inotify_init1.c \ -- inotify_init1-y.c int_0x80.c io_uring_enter.c \ -- io_uring_register.c io_uring_setup.c ioctl.c ioctl_block.c \ -- ioctl_dm.c ioctl_dm-v.c ioctl_evdev.c ioctl_evdev-Xabbrev.c \ -+ flock.c fork--pidns-translation.c fork-f.c fsconfig.c \ -+ fsconfig-P.c fsmount.c fsopen.c fspick.c fspick-P.c fstat.c \ -+ fstat-Xabbrev.c fstat-Xraw.c fstat-Xverbose.c fstat64.c \ -+ fstat64-Xabbrev.c fstat64-Xraw.c fstat64-Xverbose.c \ -+ fstatat64.c fstatfs.c fstatfs64.c fsync.c fsync-y.c \ -+ ftruncate.c ftruncate64.c futex.c futimesat.c get_mempolicy.c \ -+ get_process_reaper.c getcpu.c getcwd.c getdents.c getdents-v.c \ -+ getdents64.c getdents64-v.c getegid.c getegid32.c geteuid.c \ -+ geteuid32.c getgid.c getgid32.c getgroups.c getgroups32.c \ -+ getpeername.c getpgrp.c getpgrp--pidns-translation.c getpid.c \ -+ getpid--pidns-translation.c getppid.c getrandom.c getresgid.c \ -+ getresgid32.c getresuid.c getresuid32.c getrlimit.c \ -+ getrusage.c getsid.c getsid--pidns-translation.c getsockname.c \ -+ gettid.c gettid--pidns-translation.c getuid.c getuid32.c \ -+ getxgid.c getxpid.c getxuid.c group_req.c inet-cmsg.c \ -+ init_module.c inject-nf.c inotify.c inotify_init.c \ -+ inotify_init-y.c inotify_init1.c inotify_init1-y.c int_0x80.c \ -+ io_uring_enter.c io_uring_register.c io_uring_setup.c ioctl.c \ -+ ioctl_block.c ioctl_block--pidns-translation.c ioctl_dm.c \ -+ ioctl_dm-v.c ioctl_evdev.c ioctl_evdev-Xabbrev.c \ - ioctl_evdev-Xraw.c ioctl_evdev-Xverbose.c \ - ioctl_evdev-success.c ioctl_evdev-success-Xabbrev.c \ - ioctl_evdev-success-Xraw.c ioctl_evdev-success-Xverbose.c \ -@@ -4537,47 +4807,51 @@ - ioctl_v4l2-success-v-Xverbose.c ioctl_v4l2-v.c \ - ioctl_v4l2-v-Xabbrev.c ioctl_v4l2-v-Xraw.c \ - ioctl_v4l2-v-Xverbose.c ioctl_watchdog.c ioperm.c iopl.c \ -- ioprio.c ioprio-Xabbrev.c ioprio-Xraw.c ioprio-Xverbose.c \ -- ip_mreq.c ipc.c ipc_msg.c ipc_msg-Xabbrev.c ipc_msg-Xraw.c \ -- ipc_msg-Xverbose.c ipc_msgbuf.c ipc_msgbuf-Xabbrev.c \ -- ipc_msgbuf-Xraw.c ipc_msgbuf-Xverbose.c ipc_sem.c \ -- ipc_sem-Xabbrev.c ipc_sem-Xraw.c ipc_sem-Xverbose.c ipc_shm.c \ -- ipc_shm-Xabbrev.c ipc_shm-Xraw.c ipc_shm-Xverbose.c \ -- is_linux_mips_n64.c kcmp.c kcmp-y.c kern_features.c \ -+ ioprio.c ioprio--pidns-translation.c ioprio-Xabbrev.c \ -+ ioprio-Xraw.c ioprio-Xverbose.c ip_mreq.c ipc.c ipc_msg.c \ -+ ipc_msg-Xabbrev.c ipc_msg-Xraw.c ipc_msg-Xverbose.c \ -+ ipc_msgbuf.c ipc_msgbuf-Xabbrev.c ipc_msgbuf-Xraw.c \ -+ ipc_msgbuf-Xverbose.c ipc_sem.c ipc_sem-Xabbrev.c \ -+ ipc_sem-Xraw.c ipc_sem-Xverbose.c ipc_shm.c ipc_shm-Xabbrev.c \ -+ ipc_shm-Xraw.c ipc_shm-Xverbose.c is_linux_mips_n64.c kcmp.c \ -+ kcmp-y.c kcmp-y--pidns-translation.c kern_features.c \ - kernel_version.c kernel_version-Xabbrev.c \ - kernel_version-Xraw.c kernel_version-Xverbose.c \ - kexec_file_load.c kexec_load.c keyctl.c keyctl-Xabbrev.c \ -- keyctl-Xraw.c keyctl-Xverbose.c kill.c kill_child.c ksysent.c \ -- lchown.c lchown32.c link.c linkat.c list_sigaction_signum.c \ -- llseek.c localtime.c lookup_dcookie.c looping_threads.c \ -- lseek.c lstat.c lstat64.c madvise.c maybe_switch_current_tcp.c \ -+ keyctl-Xraw.c keyctl-Xverbose.c kill.c \ -+ kill--pidns-translation.c kill_child.c ksysent.c lchown.c \ -+ lchown32.c link.c linkat.c list_sigaction_signum.c llseek.c \ -+ localtime.c lookup_dcookie.c looping_threads.c lseek.c lstat.c \ -+ lstat64.c madvise.c maybe_switch_current_tcp.c \ - maybe_switch_current_tcp--quiet-thread-execve.c mbind.c \ - mbind-Xabbrev.c mbind-Xraw.c mbind-Xverbose.c membarrier.c \ - memfd_create.c memfd_create-Xabbrev.c memfd_create-Xraw.c \ -- memfd_create-Xverbose.c migrate_pages.c mincore.c mkdir.c \ -- mkdirat.c mknod.c mknodat.c mlock.c mlock2.c mlockall.c mmap.c \ -+ memfd_create-Xverbose.c migrate_pages.c \ -+ migrate_pages--pidns-translation.c mincore.c mkdir.c mkdirat.c \ -+ mknod.c mknodat.c mlock.c mlock2.c mlockall.c mmap.c \ - mmap-Xabbrev.c mmap-Xraw.c mmap-Xverbose.c mmap64.c \ - mmap64-Xabbrev.c mmap64-Xraw.c mmap64-Xverbose.c mmsg.c \ - mmsg-silent.c mmsg_name.c mmsg_name-v.c modify_ldt.c mount.c \ - mount-Xabbrev.c mount-Xraw.c mount-Xverbose.c move_mount.c \ -- move_mount-P.c move_pages.c move_pages-Xabbrev.c \ -- move_pages-Xraw.c move_pages-Xverbose.c mq.c mq_sendrecv.c \ -- mq_sendrecv-read.c mq_sendrecv-write.c msg_control.c \ -- msg_control-v.c msg_name.c munlockall.c nanosleep.c \ -- net--decode-fds-dev-netlink.c net--decode-fds-none-netlink.c \ -- net--decode-fds-path-netlink.c \ -+ move_mount-P.c move_pages.c move_pages--pidns-translation.c \ -+ move_pages-Xabbrev.c move_pages-Xraw.c move_pages-Xverbose.c \ -+ mq.c mq_sendrecv.c mq_sendrecv-read.c mq_sendrecv-write.c \ -+ msg_control.c msg_control-v.c msg_name.c munlockall.c \ -+ nanosleep.c net--decode-fds-dev-netlink.c \ -+ net--decode-fds-none-netlink.c net--decode-fds-path-netlink.c \ - net--decode-fds-socket-netlink.c net-accept-connect.c \ - net-icmp_filter.c net-packet_mreq.c net-packet_mreq-Xabbrev.c \ - net-packet_mreq-Xraw.c net-packet_mreq-Xverbose.c \ -- net-sockaddr.c net-tpacket_req.c net-tpacket_stats.c \ -+ net-sockaddr.c net-sockaddr--pidns-translation.c \ -+ net-tpacket_req.c net-tpacket_stats.c \ - net-tpacket_stats-success.c net-y-unix.c net-yy-inet.c \ - net-yy-inet6.c net-yy-netlink.c net-yy-unix.c netlink_audit.c \ -- netlink_crypto.c netlink_generic.c netlink_inet_diag.c \ -- netlink_kobject_uevent.c netlink_netfilter.c \ -- netlink_netlink_diag.c netlink_protocol.c netlink_route.c \ -- netlink_selinux.c netlink_sock_diag.c netlink_unix_diag.c \ -- netlink_xfrm.c newfstatat.c nfnetlink_acct.c \ -- nfnetlink_cthelper.c nfnetlink_ctnetlink.c \ -+ netlink_audit--pidns-translation.c netlink_crypto.c \ -+ netlink_generic.c netlink_inet_diag.c netlink_kobject_uevent.c \ -+ netlink_netfilter.c netlink_netlink_diag.c netlink_protocol.c \ -+ netlink_route.c netlink_selinux.c netlink_sock_diag.c \ -+ netlink_unix_diag.c netlink_xfrm.c newfstatat.c \ -+ nfnetlink_acct.c nfnetlink_cthelper.c nfnetlink_ctnetlink.c \ - nfnetlink_ctnetlink_exp.c nfnetlink_cttimeout.c \ - nfnetlink_ipset.c nfnetlink_nft_compat.c nfnetlink_nftables.c \ - nfnetlink_osf.c nfnetlink_queue.c nfnetlink_ulog.c nlattr.c \ -@@ -4607,12 +4881,13 @@ - personality-Xraw.c personality-Xverbose.c pidfd_getfd.c \ - pidfd_getfd-y.c pidfd_getfd-yy.c pidfd_open.c \ - pidfd_open--decode-fd-path.c pidfd_open--decode-fd-pidfd.c \ -- pidfd_open--decode-fd-socket.c pidfd_open-P.c pidfd_open-y.c \ -- pidfd_open-yy.c pidfd_send_signal.c pipe.c pipe2.c \ -- pkey_alloc.c pkey_free.c pkey_mprotect.c poll.c poll-P.c \ -- ppoll.c ppoll-P.c ppoll-v.c prctl-arg2-intptr.c \ -- prctl-dumpable.c prctl-name.c prctl-no-args.c \ -- prctl-pdeathsig.c prctl-seccomp-filter-v.c \ -+ pidfd_open--decode-fd-socket.c pidfd_open--pidns-translation.c \ -+ pidfd_open-P.c pidfd_open-y.c pidfd_open-yy.c \ -+ pidfd_send_signal.c pidfd_send_signal--pidns-translation.c \ -+ pidns-cache.c pipe.c pipe2.c pkey_alloc.c pkey_free.c \ -+ pkey_mprotect.c poll.c poll-P.c ppoll.c ppoll-P.c ppoll-v.c \ -+ prctl-arg2-intptr.c prctl-dumpable.c prctl-name.c \ -+ prctl-no-args.c prctl-pdeathsig.c prctl-seccomp-filter-v.c \ - prctl-seccomp-strict.c prctl-securebits.c prctl-spec-inject.c \ - prctl-tid_address.c prctl-tsc.c pread64-pwrite64.c preadv.c \ - preadv-pwritev.c preadv2-pwritev2.c print_maxfd.c \ -@@ -4621,8 +4896,10 @@ - printsignal-Xabbrev.c printsignal-Xraw.c \ - printsignal-Xverbose.c printstr.c printstrn-umoven.c \ - printstrn-umoven-peekdata.c printstrn-umoven-undumpable.c \ -- prlimit64.c process_vm_readv.c process_vm_writev.c pselect6.c \ -- ptrace.c ptrace_syscall_info.c pwritev.c qual_fault.c \ -+ prlimit64.c prlimit64--pidns-translation.c process_vm_readv.c \ -+ process_vm_readv--pidns-translation.c process_vm_writev.c \ -+ process_vm_writev--pidns-translation.c pselect6.c ptrace.c \ -+ ptrace_syscall_info.c pwritev.c qual_fault.c \ - qual_inject-error-signal.c qual_inject-retval.c \ - qual_inject-signal.c qual_signal.c quotactl.c \ - quotactl-Xabbrev.c quotactl-Xraw.c quotactl-Xverbose.c \ -@@ -4635,60 +4912,70 @@ - remap_file_pages-Xraw.c remap_file_pages-Xverbose.c rename.c \ - renameat.c renameat2.c request_key.c restart_syscall.c \ - riscv_flush_icache.c rmdir.c rt_sigaction.c rt_sigpending.c \ -- rt_sigprocmask.c rt_sigqueueinfo.c rt_sigreturn.c \ -+ rt_sigprocmask.c rt_sigqueueinfo.c \ -+ rt_sigqueueinfo--pidns-translation.c rt_sigreturn.c \ - rt_sigsuspend.c rt_sigtimedwait.c rt_tgsigqueueinfo.c \ -- run_expect_termsig.c s390_guarded_storage.c \ -- s390_guarded_storage-v.c s390_pci_mmio_read_write.c \ -- s390_runtime_instr.c s390_sthyi.c s390_sthyi-v.c \ -- sched_get_priority_mxx.c sched_rr_get_interval.c \ -- sched_xetaffinity.c sched_xetattr.c sched_xetparam.c \ -- sched_xetscheduler.c sched_yield.c scm_rights.c \ -- seccomp-filter.c seccomp-filter-v.c seccomp-strict.c \ -- seccomp_get_action_avail.c select.c select-P.c semop.c \ -- semop-indirect.c semtimedop.c sendfile.c sendfile64.c \ -- set_mempolicy.c set_mempolicy-Xabbrev.c set_mempolicy-Xraw.c \ -- set_mempolicy-Xverbose.c set_ptracer_any.c set_sigblock.c \ -- set_sigign.c setdomainname.c setfsgid.c setfsgid32.c \ -- setfsuid.c setfsuid32.c setgid.c setgid32.c setgroups.c \ -- setgroups32.c sethostname.c setns.c setpgrp-exec.c setregid.c \ -- setregid32.c setresgid.c setresgid32.c setresuid.c \ -- setresuid32.c setreuid.c setreuid32.c setrlimit.c \ -- setrlimit-Xabbrev.c setrlimit-Xraw.c setrlimit-Xverbose.c \ -- setuid.c setuid32.c shmxt.c shutdown.c sigaction.c \ -- sigaltstack.c siginfo.c signal.c signal_receive.c signalfd4.c \ -- sigpending.c sigprocmask.c sigreturn.c sigsuspend.c sleep.c \ -- so_error.c so_linger.c so_peercred.c so_peercred-Xabbrev.c \ -- so_peercred-Xraw.c so_peercred-Xverbose.c sock_filter-v.c \ -- sock_filter-v-Xabbrev.c sock_filter-v-Xraw.c \ -- 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_attach_SOURCES) \ -- $(stack_fcall_mangled_SOURCES) stat.c stat64.c statfs.c \ -- statfs64.c status-all.c status-failed.c status-failed-long.c \ -- status-failed-status.c status-none.c status-none-f.c \ -- status-none-threads.c status-successful.c \ -- status-successful-long.c status-successful-status.c \ -- status-unfinished.c status-unfinished-threads.c statx.c \ -- strace--strings-in-hex.c strace--strings-in-hex-all.c \ -+ rt_tgsigqueueinfo--pidns-translation.c run_expect_termsig.c \ -+ s390_guarded_storage.c s390_guarded_storage-v.c \ -+ s390_pci_mmio_read_write.c s390_runtime_instr.c s390_sthyi.c \ -+ s390_sthyi-v.c sched_get_priority_mxx.c \ -+ sched_rr_get_interval.c sched_xetaffinity.c \ -+ sched_xetaffinity--pidns-translation.c sched_xetattr.c \ -+ sched_xetattr--pidns-translation.c sched_xetparam.c \ -+ sched_xetparam--pidns-translation.c sched_xetscheduler.c \ -+ sched_xetscheduler--pidns-translation.c sched_yield.c \ -+ scm_rights.c seccomp-filter.c seccomp-filter-v.c \ -+ seccomp-strict.c seccomp_get_action_avail.c select.c \ -+ select-P.c semop.c semop-indirect.c semtimedop.c sendfile.c \ -+ sendfile64.c set_mempolicy.c set_mempolicy-Xabbrev.c \ -+ set_mempolicy-Xraw.c set_mempolicy-Xverbose.c \ -+ set_ptracer_any.c set_sigblock.c set_sigign.c setdomainname.c \ -+ setfsgid.c setfsgid32.c setfsuid.c setfsuid32.c setgid.c \ -+ setgid32.c setgroups.c setgroups32.c sethostname.c setns.c \ -+ setpgrp-exec.c setregid.c setregid32.c setresgid.c \ -+ setresgid32.c setresuid.c setresuid32.c setreuid.c \ -+ setreuid32.c setrlimit.c setrlimit-Xabbrev.c setrlimit-Xraw.c \ -+ setrlimit-Xverbose.c setuid.c setuid32.c shmxt.c shutdown.c \ -+ sigaction.c sigaltstack.c siginfo.c signal.c signal_receive.c \ -+ signal_receive--pidns-translation.c signalfd4.c sigpending.c \ -+ sigprocmask.c sigreturn.c sigsuspend.c sleep.c so_error.c \ -+ so_linger.c so_peercred.c so_peercred--pidns-translation.c \ -+ so_peercred-Xabbrev.c so_peercred-Xraw.c \ -+ so_peercred-Xverbose.c sock_filter-v.c sock_filter-v-Xabbrev.c \ -+ sock_filter-v-Xraw.c 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_attach_SOURCES) $(stack_fcall_mangled_SOURCES) \ -+ stat.c stat64.c statfs.c statfs64.c status-all.c \ -+ status-failed.c status-failed-long.c status-failed-status.c \ -+ status-none.c status-none-f.c status-none-threads.c \ -+ status-successful.c status-successful-long.c \ -+ status-successful-status.c status-unfinished.c \ -+ status-unfinished-threads.c statx.c strace--strings-in-hex.c \ -+ strace--strings-in-hex-all.c \ - strace--strings-in-hex-non-ascii.c strace-x.c strace-xx.c \ - swap.c sxetmask.c symlink.c symlinkat.c sync.c \ - sync_file_range.c sync_file_range2.c sysinfo.c syslog.c \ -- syslog-success.c tee.c tgkill.c threads-execve.c \ -- threads-execve--quiet-thread-execve.c threads-execve-q.c \ -- threads-execve-qq.c threads-execve-qqq.c time.c timer_create.c \ -- timer_xettime.c timerfd_xettime.c times.c times-fail.c tkill.c \ -- tracer_ppid_pgid_sid.c truncate.c truncate64.c ugetrlimit.c \ -- uio.c umask.c umount.c umount2.c umoven-illptr.c umovestr.c \ -- umovestr-illptr.c umovestr2.c umovestr3.c umovestr_cached.c \ -- umovestr_cached_adjacent.c uname.c unblock_reset_raise.c \ -- unix-pair-send-recv.c unix-pair-sendto-recvfrom.c unlink.c \ -- unlinkat.c unshare.c userfaultfd.c ustat.c utime.c utimensat.c \ -- utimensat-Xabbrev.c utimensat-Xraw.c utimensat-Xverbose.c \ -- utimes.c vfork-f.c vhangup.c vmsplice.c wait4.c wait4-v.c \ -- waitid.c waitid-v.c waitpid.c xattr.c xattr-strings.c \ -- xet_robust_list.c xet_thread_area_x86.c xetitimer.c xetpgid.c \ -- xetpriority.c xettimeofday.c zeroargc.c -+ syslog-success.c tee.c tgkill.c tgkill--pidns-translation.c \ -+ threads-execve.c threads-execve--quiet-thread-execve.c \ -+ threads-execve-q.c threads-execve-qq.c threads-execve-qqq.c \ -+ time.c timer_create.c timer_xettime.c timerfd_xettime.c \ -+ times.c times-fail.c tkill.c tkill--pidns-translation.c \ -+ tracer_ppid_pgid_sid.c $(trie_test_SOURCES) truncate.c \ -+ truncate64.c ugetrlimit.c uio.c umask.c umount.c umount2.c \ -+ umoven-illptr.c umovestr.c umovestr-illptr.c umovestr2.c \ -+ umovestr3.c umovestr_cached.c umovestr_cached_adjacent.c \ -+ uname.c unblock_reset_raise.c unix-pair-send-recv.c \ -+ unix-pair-sendto-recvfrom.c unlink.c unlinkat.c unshare.c \ -+ userfaultfd.c ustat.c utime.c utimensat.c utimensat-Xabbrev.c \ -+ utimensat-Xraw.c utimensat-Xverbose.c utimes.c vfork-f.c \ -+ vhangup.c vmsplice.c wait4.c wait4-v.c waitid.c waitid-v.c \ -+ waitpid.c xattr.c xattr-strings.c xet_robust_list.c \ -+ xet_robust_list--pidns-translation.c xet_thread_area_x86.c \ -+ xetitimer.c xetpgid.c xetpgid--pidns-translation.c \ -+ xetpriority.c xetpriority--pidns-translation.c xettimeofday.c \ -+ zeroargc.c - am__can_run_installinfo = \ - case $$AM_UPDATE_INFO_DIR in \ - n|no|NO) false;; \ -@@ -5145,6 +5432,7 @@ - test_ucopy.h \ - tests.h \ - tprintf.c \ -+ xmalloc_for_tests.c \ - # end of libtests_a_SOURCES - - libtests_a_CPPFLAGS = $(AM_CPPFLAGS) -D_FILE_OFFSET_BITS=64 -@@ -5825,6 +6113,10 @@ - stack-fcall-mangled-0.c stack-fcall-mangled-1.c \ - stack-fcall-mangled-2.c stack-fcall-mangled-3.c - -+trie_test_SOURCES = trie_test.c trie_for_tests.c -+trie_test_CPPFLAGS = $(AM_CPPFLAGS) $(CODE_COVERAGE_CPPFLAGS) -+trie_test_CFLAGS = $(AM_CFLAGS) $(CODE_COVERAGE_CFLAGS) -+trie_test_LDADD = $(LDADD) $(CODE_COVERAGE_LIBS) - - # Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in; do not edit. - GEN_TESTS = _newselect.gen.test _newselect-P.gen.test accept.gen.test \ -@@ -5861,13 +6153,14 @@ - 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 \ -- fcntl64.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 fsopen.gen.test \ -- fspick.gen.test fspick-P.gen.test fstat.gen.test \ -- fstat-Xabbrev.gen.test fstat-Xraw.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 \ -+ fsopen.gen.test fspick.gen.test fspick-P.gen.test \ -+ fstat.gen.test fstat-Xabbrev.gen.test fstat-Xraw.gen.test \ - fstat-Xverbose.gen.test fstat64.gen.test \ - fstat64-Xabbrev.gen.test fstat64-Xraw.gen.test \ - fstat64-Xverbose.gen.test fstatat64.gen.test fstatfs.gen.test \ -@@ -5881,11 +6174,13 @@ - geteuid32-creds.gen.test getgid.gen.test getgid-creds.gen.test \ - getgid32.gen.test getgid32-creds.gen.test getgroups.gen.test \ - getgroups32.gen.test getpeername.gen.test getpgrp.gen.test \ -- getpid.gen.test getppid.gen.test getrandom.gen.test \ -- getresgid.gen.test getresgid32.gen.test getresuid.gen.test \ -- getresuid32.gen.test getrlimit.gen.test getrusage.gen.test \ -- getsid.gen.test getsockname.gen.test gettid.gen.test \ -- getuid-creds.gen.test getuid32.gen.test \ -+ getpgrp--pidns-translation.gen.test getpid.gen.test \ -+ getpid--pidns-translation.gen.test getppid.gen.test \ -+ getrandom.gen.test getresgid.gen.test getresgid32.gen.test \ -+ getresuid.gen.test getresuid32.gen.test getrlimit.gen.test \ -+ getrusage.gen.test getsid.gen.test \ -+ getsid--pidns-translation.gen.test getsockname.gen.test \ -+ gettid.gen.test getuid-creds.gen.test getuid32.gen.test \ - getuid32-creds.gen.test getxgid.gen.test getxpid.gen.test \ - getxuid.gen.test group_req.gen.test inet-cmsg.gen.test \ - init_module.gen.test inotify.gen.test inotify_init.gen.test \ -@@ -5937,9 +6232,9 @@ - ioctl_v4l2-success-v-Xraw.gen.test \ - ioctl_v4l2-success-v-Xverbose.gen.test ioctl_watchdog.gen.test \ - ioperm.gen.test iopl.gen.test ioprio.gen.test \ -- ioprio-Xabbrev.gen.test ioprio-Xraw.gen.test \ -- ioprio-Xverbose.gen.test ip_mreq.gen.test ipc.gen.test \ -- ipc_msg.gen.test ipc_msg-Xabbrev.gen.test \ -+ ioprio--pidns-translation.gen.test ioprio-Xabbrev.gen.test \ -+ ioprio-Xraw.gen.test ioprio-Xverbose.gen.test ip_mreq.gen.test \ -+ ipc.gen.test ipc_msg.gen.test ipc_msg-Xabbrev.gen.test \ - ipc_msg-Xraw.gen.test ipc_msg-Xverbose.gen.test \ - ipc_msgbuf-Xabbrev.gen.test ipc_msgbuf-Xraw.gen.test \ - ipc_msgbuf-Xverbose.gen.test ipc_sem.gen.test \ -@@ -5947,24 +6242,27 @@ - ipc_sem-Xverbose.gen.test ipc_shm.gen.test \ - ipc_shm-Xabbrev.gen.test ipc_shm-Xraw.gen.test \ - ipc_shm-Xverbose.gen.test kcmp.gen.test kcmp-y.gen.test \ -- kern_features.gen.test kernel_version.gen.test \ -- kernel_version-Xabbrev.gen.test kernel_version-Xraw.gen.test \ -- kernel_version-Xverbose.gen.test kexec_file_load.gen.test \ -- kexec_load.gen.test keyctl.gen.test keyctl-Xabbrev.gen.test \ -- keyctl-Xraw.gen.test keyctl-Xverbose.gen.test kill.gen.test \ -- ksysent.gen.test lchown.gen.test lchown32.gen.test \ -- link.gen.test linkat.gen.test lookup_dcookie.gen.test \ -- lstat.gen.test lstat64.gen.test madvise.gen.test \ -+ kcmp-y--pidns-translation.gen.test kern_features.gen.test \ -+ kernel_version.gen.test kernel_version-Xabbrev.gen.test \ -+ kernel_version-Xraw.gen.test kernel_version-Xverbose.gen.test \ -+ kexec_file_load.gen.test kexec_load.gen.test keyctl.gen.test \ -+ keyctl-Xabbrev.gen.test keyctl-Xraw.gen.test \ -+ keyctl-Xverbose.gen.test kill.gen.test \ -+ kill--pidns-translation.gen.test ksysent.gen.test \ -+ lchown.gen.test lchown32.gen.test link.gen.test \ -+ linkat.gen.test lookup_dcookie.gen.test lstat.gen.test \ -+ lstat64.gen.test madvise.gen.test \ - maybe_switch_current_tcp.gen.test \ - maybe_switch_current_tcp--quiet-thread-execve.gen.test \ - mbind.gen.test mbind-Xabbrev.gen.test mbind-Xraw.gen.test \ - mbind-Xverbose.gen.test membarrier.gen.test \ - memfd_create.gen.test memfd_create-Xabbrev.gen.test \ - memfd_create-Xraw.gen.test memfd_create-Xverbose.gen.test \ -- migrate_pages.gen.test mincore.gen.test mkdir.gen.test \ -- mkdirat.gen.test mknod.gen.test mknodat.gen.test \ -- mlock.gen.test mlock2.gen.test mlockall.gen.test \ -- mmap-Xabbrev.gen.test mmap-Xraw.gen.test \ -+ migrate_pages.gen.test \ -+ migrate_pages--pidns-translation.gen.test mincore.gen.test \ -+ mkdir.gen.test mkdirat.gen.test mknod.gen.test \ -+ mknodat.gen.test mlock.gen.test mlock2.gen.test \ -+ mlockall.gen.test mmap-Xabbrev.gen.test mmap-Xraw.gen.test \ - mmap-Xverbose.gen.test mmap64.gen.test mmap64-Xabbrev.gen.test \ - mmap64-Xraw.gen.test mmap64-Xverbose.gen.test mmsg.gen.test \ - mmsg-silent.gen.test mmsg_name.gen.test mmsg_name-v.gen.test \ -@@ -5972,17 +6270,19 @@ - mount-Xraw.gen.test mount-Xverbose.gen.test \ - move_mount.gen.test move_mount-P.gen.test move_pages.gen.test \ - move_pages-Xabbrev.gen.test move_pages-Xraw.gen.test \ -- move_pages-Xverbose.gen.test mq.gen.test mq_sendrecv.gen.test \ -- mq_sendrecv-read.gen.test mq_sendrecv-write.gen.test \ -- msg_control.gen.test msg_control-v.gen.test msg_name.gen.test \ -- munlockall.gen.test nanosleep.gen.test \ -- net--decode-fds-dev-netlink.gen.test \ -+ move_pages-Xverbose.gen.test \ -+ move_pages--pidns-translation.gen.test mq.gen.test \ -+ mq_sendrecv.gen.test mq_sendrecv-read.gen.test \ -+ mq_sendrecv-write.gen.test msg_control.gen.test \ -+ msg_control-v.gen.test msg_name.gen.test munlockall.gen.test \ -+ nanosleep.gen.test net--decode-fds-dev-netlink.gen.test \ - net--decode-fds-none-netlink.gen.test \ - net--decode-fds-path-netlink.gen.test \ - net--decode-fds-socket-netlink.gen.test \ - net-icmp_filter.gen.test net-packet_mreq.gen.test \ - net-packet_mreq-Xabbrev.gen.test net-packet_mreq-Xraw.gen.test \ - net-packet_mreq-Xverbose.gen.test net-sockaddr.gen.test \ -+ net-sockaddr--pidns-translation.gen.test \ - net-tpacket_req.gen.test net-tpacket_stats.gen.test \ - net-yy-inet6.gen.test netlink_audit.gen.test \ - netlink_crypto.gen.test netlink_generic.gen.test \ -@@ -6036,18 +6336,25 @@ - pidfd_open--decode-fd-pidfd.gen.test \ - pidfd_open--decode-fd-socket.gen.test pidfd_open-P.gen.test \ - pidfd_open-y.gen.test pidfd_open-yy.gen.test \ -- pidfd_send_signal.gen.test pipe2.gen.test pkey_alloc.gen.test \ -- pkey_free.gen.test pkey_mprotect.gen.test ppoll.gen.test \ -- ppoll-P.gen.test ppoll-v.gen.test pread64-pwrite64.gen.test \ -- preadv.gen.test preadv-pwritev.gen.test \ -- preadv2-pwritev2.gen.test printpath-umovestr.gen.test \ -+ pidfd_open--pidns-translation.gen.test \ -+ pidfd_send_signal.gen.test \ -+ pidfd_send_signal--pidns-translation.gen.test pipe2.gen.test \ -+ pkey_alloc.gen.test pkey_free.gen.test pkey_mprotect.gen.test \ -+ ppoll.gen.test ppoll-P.gen.test ppoll-v.gen.test \ -+ pread64-pwrite64.gen.test preadv.gen.test \ -+ preadv-pwritev.gen.test preadv2-pwritev2.gen.test \ -+ printpath-umovestr.gen.test \ - printpath-umovestr-peekdata.gen.test \ - printpath-umovestr-undumpable.gen.test \ - printsignal-Xabbrev.gen.test printsignal-Xraw.gen.test \ - printsignal-Xverbose.gen.test printstr.gen.test \ - printstrn-umoven.gen.test printstrn-umoven-peekdata.gen.test \ - printstrn-umoven-undumpable.gen.test prlimit64.gen.test \ -- process_vm_readv.gen.test process_vm_writev.gen.test \ -+ prlimit64--pidns-translation.gen.test \ -+ process_vm_readv.gen.test \ -+ process_vm_readv--pidns-translation.gen.test \ -+ process_vm_writev.gen.test \ -+ process_vm_writev--pidns-translation.gen.test \ - pselect6.gen.test ptrace.gen.test ptrace_syscall_info.gen.test \ - pwritev.gen.test quotactl.gen.test quotactl-Xabbrev.gen.test \ - quotactl-Xraw.gen.test quotactl-Xverbose.gen.test \ -@@ -6063,15 +6370,23 @@ - renameat.gen.test renameat2.gen.test request_key.gen.test \ - riscv_flush_icache.gen.test rmdir.gen.test \ - rt_sigpending.gen.test rt_sigprocmask.gen.test \ -- rt_sigqueueinfo.gen.test rt_sigreturn.gen.test \ -- rt_sigsuspend.gen.test rt_sigtimedwait.gen.test \ -- rt_tgsigqueueinfo.gen.test s390_guarded_storage.gen.test \ -- s390_guarded_storage-v.gen.test \ -+ rt_sigqueueinfo.gen.test \ -+ rt_sigqueueinfo--pidns-translation.gen.test \ -+ rt_sigreturn.gen.test rt_sigsuspend.gen.test \ -+ rt_sigtimedwait.gen.test rt_tgsigqueueinfo.gen.test \ -+ rt_tgsigqueueinfo--pidns-translation.gen.test \ -+ s390_guarded_storage.gen.test s390_guarded_storage-v.gen.test \ - s390_pci_mmio_read_write.gen.test s390_runtime_instr.gen.test \ - s390_sthyi.gen.test s390_sthyi-v.gen.test sched.gen.test \ - sched_get_priority_mxx.gen.test sched_rr_get_interval.gen.test \ -- sched_xetaffinity.gen.test sched_xetattr.gen.test \ -- sched_xetparam.gen.test sched_xetscheduler.gen.test \ -+ sched_xetaffinity.gen.test \ -+ sched_xetaffinity--pidns-translation.gen.test \ -+ sched_xetattr.gen.test \ -+ sched_xetattr--pidns-translation.gen.test \ -+ sched_xetparam.gen.test \ -+ sched_xetparam--pidns-translation.gen.test \ -+ sched_xetscheduler.gen.test \ -+ sched_xetscheduler--pidns-translation.gen.test \ - sched_yield.gen.test seccomp-filter.gen.test \ - seccomp-filter-v.gen.test seccomp_get_action_avail.gen.test \ - select.gen.test select-P.gen.test semop.gen.test \ -@@ -6089,18 +6404,20 @@ - setrlimit-Xraw.gen.test setrlimit-Xverbose.gen.test \ - setuid.gen.test setuid32.gen.test shmxt.gen.test \ - shutdown.gen.test sigaction.gen.test siginfo.gen.test \ -- signal.gen.test signal_receive.gen.test signalfd4.gen.test \ -+ signal.gen.test signal_receive.gen.test \ -+ signal_receive--pidns-translation.gen.test signalfd4.gen.test \ - sigpending.gen.test sigprocmask.gen.test sigreturn.gen.test \ - sigsuspend.gen.test so_error.gen.test so_linger.gen.test \ - so_peercred.gen.test so_peercred-Xabbrev.gen.test \ - so_peercred-Xraw.gen.test so_peercred-Xverbose.gen.test \ -- sock_filter-v.gen.test sock_filter-v-Xabbrev.gen.test \ -- sock_filter-v-Xraw.gen.test sock_filter-v-Xverbose.gen.test \ -- sockaddr_xlat-Xabbrev.gen.test sockaddr_xlat-Xraw.gen.test \ -- sockaddr_xlat-Xverbose.gen.test socketcall.gen.test \ -- sockopt-sol_netlink.gen.test sockopt-timestamp.gen.test \ -- splice.gen.test stat.gen.test stat64.gen.test statfs.gen.test \ -- statfs64.gen.test status-all.gen.test status-failed.gen.test \ -+ so_peercred--pidns-translation.gen.test sock_filter-v.gen.test \ -+ sock_filter-v-Xabbrev.gen.test sock_filter-v-Xraw.gen.test \ -+ sock_filter-v-Xverbose.gen.test sockaddr_xlat-Xabbrev.gen.test \ -+ sockaddr_xlat-Xraw.gen.test sockaddr_xlat-Xverbose.gen.test \ -+ socketcall.gen.test sockopt-sol_netlink.gen.test \ -+ sockopt-timestamp.gen.test splice.gen.test stat.gen.test \ -+ stat64.gen.test statfs.gen.test statfs64.gen.test \ -+ status-all.gen.test status-failed.gen.test \ - status-failed-long.gen.test status-failed-status.gen.test \ - status-none.gen.test status-successful.gen.test \ - status-successful-long.gen.test \ -@@ -6142,33 +6459,37 @@ - symlink.gen.test symlinkat.gen.test sync.gen.test \ - sync_file_range.gen.test sync_file_range2.gen.test \ - sysinfo.gen.test syslog.gen.test tee.gen.test tgkill.gen.test \ -+ tgkill--pidns-translation.gen.test \ - threads-execve--quiet-thread-execve.gen.test \ - threads-execve-q.gen.test threads-execve-qq.gen.test \ - threads-execve-qqq.gen.test time.gen.test \ - timer_create.gen.test timer_xettime.gen.test \ - timerfd_xettime.gen.test times.gen.test times-fail.gen.test \ -- tkill.gen.test trace_clock.gen.test trace_creds.gen.test \ -- trace_fstat.gen.test trace_fstatfs.gen.test \ -- trace_lstat.gen.test trace_personality_32.gen.test \ -- trace_personality_64.gen.test \ -+ tkill.gen.test tkill--pidns-translation.gen.test \ -+ trace_clock.gen.test trace_creds.gen.test trace_fstat.gen.test \ -+ trace_fstatfs.gen.test trace_lstat.gen.test \ -+ trace_personality_32.gen.test trace_personality_64.gen.test \ - trace_personality_regex_32.gen.test \ - trace_personality_regex_64.gen.test \ - trace_personality_regex_x32.gen.test \ - trace_personality_x32.gen.test trace_question.gen.test \ - trace_stat.gen.test trace_stat_like.gen.test \ - trace_statfs.gen.test trace_statfs_like.gen.test \ -- truncate.gen.test truncate64.gen.test ugetrlimit.gen.test \ -- umask.gen.test umoven-illptr.gen.test umovestr-illptr.gen.test \ -- umovestr3.gen.test umovestr_cached_adjacent.gen.test \ -- unlink.gen.test unlinkat.gen.test unshare.gen.test \ -- userfaultfd.gen.test ustat.gen.test utime.gen.test \ -- utimensat.gen.test utimensat-Xabbrev.gen.test \ -- utimensat-Xraw.gen.test utimensat-Xverbose.gen.test \ -- utimes.gen.test vfork-f.gen.test vhangup.gen.test \ -- vmsplice.gen.test wait4.gen.test wait4-v.gen.test \ -- waitid.gen.test waitid-v.gen.test waitpid.gen.test \ -- xattr.gen.test xattr-strings.gen.test xet_robust_list.gen.test \ -- xetitimer.gen.test xetpgid.gen.test xetpriority.gen.test \ -+ trie_test.gen.test truncate.gen.test truncate64.gen.test \ -+ ugetrlimit.gen.test umask.gen.test umoven-illptr.gen.test \ -+ umovestr-illptr.gen.test umovestr3.gen.test \ -+ umovestr_cached_adjacent.gen.test unlink.gen.test \ -+ unlinkat.gen.test unshare.gen.test userfaultfd.gen.test \ -+ ustat.gen.test utime.gen.test utimensat.gen.test \ -+ utimensat-Xabbrev.gen.test utimensat-Xraw.gen.test \ -+ utimensat-Xverbose.gen.test utimes.gen.test vfork-f.gen.test \ -+ vhangup.gen.test vmsplice.gen.test wait4.gen.test \ -+ wait4-v.gen.test waitid.gen.test waitid-v.gen.test \ -+ waitpid.gen.test xattr.gen.test xattr-strings.gen.test \ -+ xet_robust_list.gen.test \ -+ xet_robust_list--pidns-translation.gen.test xetitimer.gen.test \ -+ xetpgid.gen.test xetpgid--pidns-translation.gen.test \ -+ xetpriority.gen.test xetpriority--pidns-translation.gen.test \ - xettimeofday.gen.test - @ENABLE_STACKTRACE_FALSE@STACKTRACE_TESTS = - @ENABLE_STACKTRACE_TRUE@STACKTRACE_TESTS = strace-k.test \ -@@ -6198,6 +6519,7 @@ - int_0x80.test \ - inotify_init-y.test \ - ioctl.test \ -+ ioctl_block--pidns-translation.test \ - ioctl_evdev-success.test \ - ipc_msgbuf.test \ - kern_features-fault.test \ -@@ -6269,15 +6591,19 @@ - filtering_fd-syntax.test \ - filtering_syscall-syntax.test \ - first_exec_failure.test \ -+ fork--pidns-translation.test \ - get_regs.test \ -+ gettid--pidns-translation.test \ - inject-nf.test \ - interactive_block.test \ - kill_child.test \ - localtime.test \ - looping_threads.test \ -+ netlink_audit--pidns-translation.test \ - opipe.test \ - options-syntax.test \ - pc.test \ -+ pidns-cache.test \ - printpath-umovestr-legacy.test \ - printstrn-umoven-legacy.test \ - qual_fault-syntax.test \ -@@ -6350,6 +6676,7 @@ - filter_seccomp.in \ - filter_seccomp.sh \ - filter-unavailable.expected \ -+ fork--pidns-translation.awk \ - fstatat.c \ - fstatx.c \ - gen_pure_executables.sh \ -@@ -6935,10 +7262,18 @@ - @rm -f fcntl$(EXEEXT) - $(AM_V_CCLD)$(LINK) $(fcntl_OBJECTS) $(fcntl_LDADD) $(LIBS) - -+fcntl--pidns-translation$(EXEEXT): $(fcntl__pidns_translation_OBJECTS) $(fcntl__pidns_translation_DEPENDENCIES) $(EXTRA_fcntl__pidns_translation_DEPENDENCIES) -+ @rm -f fcntl--pidns-translation$(EXEEXT) -+ $(AM_V_CCLD)$(LINK) $(fcntl__pidns_translation_OBJECTS) $(fcntl__pidns_translation_LDADD) $(LIBS) -+ - fcntl64$(EXEEXT): $(fcntl64_OBJECTS) $(fcntl64_DEPENDENCIES) $(EXTRA_fcntl64_DEPENDENCIES) - @rm -f fcntl64$(EXEEXT) - $(AM_V_CCLD)$(LINK) $(fcntl64_OBJECTS) $(fcntl64_LDADD) $(LIBS) - -+fcntl64--pidns-translation$(EXEEXT): $(fcntl64__pidns_translation_OBJECTS) $(fcntl64__pidns_translation_DEPENDENCIES) $(EXTRA_fcntl64__pidns_translation_DEPENDENCIES) -+ @rm -f fcntl64--pidns-translation$(EXEEXT) -+ $(AM_V_CCLD)$(LINK) $(fcntl64__pidns_translation_OBJECTS) $(fcntl64__pidns_translation_LDADD) $(LIBS) -+ - fdatasync$(EXEEXT): $(fdatasync_OBJECTS) $(fdatasync_DEPENDENCIES) $(EXTRA_fdatasync_DEPENDENCIES) - @rm -f fdatasync$(EXEEXT) - $(AM_V_CCLD)$(LINK) $(fdatasync_OBJECTS) $(fdatasync_LDADD) $(LIBS) -@@ -6975,6 +7310,10 @@ - @rm -f flock$(EXEEXT) - $(AM_V_CCLD)$(LINK) $(flock_OBJECTS) $(flock_LDADD) $(LIBS) - -+fork--pidns-translation$(EXEEXT): $(fork__pidns_translation_OBJECTS) $(fork__pidns_translation_DEPENDENCIES) $(EXTRA_fork__pidns_translation_DEPENDENCIES) -+ @rm -f fork--pidns-translation$(EXEEXT) -+ $(AM_V_CCLD)$(LINK) $(fork__pidns_translation_OBJECTS) $(fork__pidns_translation_LDADD) $(LIBS) -+ - fork-f$(EXEEXT): $(fork_f_OBJECTS) $(fork_f_DEPENDENCIES) $(EXTRA_fork_f_DEPENDENCIES) - @rm -f fork-f$(EXEEXT) - $(AM_V_CCLD)$(LINK) $(fork_f_OBJECTS) $(fork_f_LDADD) $(LIBS) -@@ -7143,10 +7482,18 @@ - @rm -f getpgrp$(EXEEXT) - $(AM_V_CCLD)$(LINK) $(getpgrp_OBJECTS) $(getpgrp_LDADD) $(LIBS) - -+getpgrp--pidns-translation$(EXEEXT): $(getpgrp__pidns_translation_OBJECTS) $(getpgrp__pidns_translation_DEPENDENCIES) $(EXTRA_getpgrp__pidns_translation_DEPENDENCIES) -+ @rm -f getpgrp--pidns-translation$(EXEEXT) -+ $(AM_V_CCLD)$(LINK) $(getpgrp__pidns_translation_OBJECTS) $(getpgrp__pidns_translation_LDADD) $(LIBS) -+ - getpid$(EXEEXT): $(getpid_OBJECTS) $(getpid_DEPENDENCIES) $(EXTRA_getpid_DEPENDENCIES) - @rm -f getpid$(EXEEXT) - $(AM_V_CCLD)$(LINK) $(getpid_OBJECTS) $(getpid_LDADD) $(LIBS) - -+getpid--pidns-translation$(EXEEXT): $(getpid__pidns_translation_OBJECTS) $(getpid__pidns_translation_DEPENDENCIES) $(EXTRA_getpid__pidns_translation_DEPENDENCIES) -+ @rm -f getpid--pidns-translation$(EXEEXT) -+ $(AM_V_CCLD)$(LINK) $(getpid__pidns_translation_OBJECTS) $(getpid__pidns_translation_LDADD) $(LIBS) -+ - getppid$(EXEEXT): $(getppid_OBJECTS) $(getppid_DEPENDENCIES) $(EXTRA_getppid_DEPENDENCIES) - @rm -f getppid$(EXEEXT) - $(AM_V_CCLD)$(LINK) $(getppid_OBJECTS) $(getppid_LDADD) $(LIBS) -@@ -7183,6 +7530,10 @@ - @rm -f getsid$(EXEEXT) - $(AM_V_CCLD)$(LINK) $(getsid_OBJECTS) $(getsid_LDADD) $(LIBS) - -+getsid--pidns-translation$(EXEEXT): $(getsid__pidns_translation_OBJECTS) $(getsid__pidns_translation_DEPENDENCIES) $(EXTRA_getsid__pidns_translation_DEPENDENCIES) -+ @rm -f getsid--pidns-translation$(EXEEXT) -+ $(AM_V_CCLD)$(LINK) $(getsid__pidns_translation_OBJECTS) $(getsid__pidns_translation_LDADD) $(LIBS) -+ - getsockname$(EXEEXT): $(getsockname_OBJECTS) $(getsockname_DEPENDENCIES) $(EXTRA_getsockname_DEPENDENCIES) - @rm -f getsockname$(EXEEXT) - $(AM_V_CCLD)$(LINK) $(getsockname_OBJECTS) $(getsockname_LDADD) $(LIBS) -@@ -7191,6 +7542,10 @@ - @rm -f gettid$(EXEEXT) - $(AM_V_CCLD)$(LINK) $(gettid_OBJECTS) $(gettid_LDADD) $(LIBS) - -+gettid--pidns-translation$(EXEEXT): $(gettid__pidns_translation_OBJECTS) $(gettid__pidns_translation_DEPENDENCIES) $(EXTRA_gettid__pidns_translation_DEPENDENCIES) -+ @rm -f gettid--pidns-translation$(EXEEXT) -+ $(AM_V_CCLD)$(LINK) $(gettid__pidns_translation_OBJECTS) $(gettid__pidns_translation_LDADD) $(LIBS) -+ - getuid$(EXEEXT): $(getuid_OBJECTS) $(getuid_DEPENDENCIES) $(EXTRA_getuid_DEPENDENCIES) - @rm -f getuid$(EXEEXT) - $(AM_V_CCLD)$(LINK) $(getuid_OBJECTS) $(getuid_LDADD) $(LIBS) -@@ -7271,6 +7626,10 @@ - @rm -f ioctl_block$(EXEEXT) - $(AM_V_CCLD)$(LINK) $(ioctl_block_OBJECTS) $(ioctl_block_LDADD) $(LIBS) - -+ioctl_block--pidns-translation$(EXEEXT): $(ioctl_block__pidns_translation_OBJECTS) $(ioctl_block__pidns_translation_DEPENDENCIES) $(EXTRA_ioctl_block__pidns_translation_DEPENDENCIES) -+ @rm -f ioctl_block--pidns-translation$(EXEEXT) -+ $(AM_V_CCLD)$(LINK) $(ioctl_block__pidns_translation_OBJECTS) $(ioctl_block__pidns_translation_LDADD) $(LIBS) -+ - ioctl_dm$(EXEEXT): $(ioctl_dm_OBJECTS) $(ioctl_dm_DEPENDENCIES) $(EXTRA_ioctl_dm_DEPENDENCIES) - @rm -f ioctl_dm$(EXEEXT) - $(AM_V_CCLD)$(LINK) $(ioctl_dm_OBJECTS) $(ioctl_dm_LDADD) $(LIBS) -@@ -7571,6 +7930,10 @@ - @rm -f ioprio$(EXEEXT) - $(AM_V_CCLD)$(LINK) $(ioprio_OBJECTS) $(ioprio_LDADD) $(LIBS) - -+ioprio--pidns-translation$(EXEEXT): $(ioprio__pidns_translation_OBJECTS) $(ioprio__pidns_translation_DEPENDENCIES) $(EXTRA_ioprio__pidns_translation_DEPENDENCIES) -+ @rm -f ioprio--pidns-translation$(EXEEXT) -+ $(AM_V_CCLD)$(LINK) $(ioprio__pidns_translation_OBJECTS) $(ioprio__pidns_translation_LDADD) $(LIBS) -+ - ioprio-Xabbrev$(EXEEXT): $(ioprio_Xabbrev_OBJECTS) $(ioprio_Xabbrev_DEPENDENCIES) $(EXTRA_ioprio_Xabbrev_DEPENDENCIES) - @rm -f ioprio-Xabbrev$(EXEEXT) - $(AM_V_CCLD)$(LINK) $(ioprio_Xabbrev_OBJECTS) $(ioprio_Xabbrev_LDADD) $(LIBS) -@@ -7667,6 +8030,10 @@ - @rm -f kcmp-y$(EXEEXT) - $(AM_V_CCLD)$(LINK) $(kcmp_y_OBJECTS) $(kcmp_y_LDADD) $(LIBS) - -+kcmp-y--pidns-translation$(EXEEXT): $(kcmp_y__pidns_translation_OBJECTS) $(kcmp_y__pidns_translation_DEPENDENCIES) $(EXTRA_kcmp_y__pidns_translation_DEPENDENCIES) -+ @rm -f kcmp-y--pidns-translation$(EXEEXT) -+ $(AM_V_CCLD)$(LINK) $(kcmp_y__pidns_translation_OBJECTS) $(kcmp_y__pidns_translation_LDADD) $(LIBS) -+ - kern_features$(EXEEXT): $(kern_features_OBJECTS) $(kern_features_DEPENDENCIES) $(EXTRA_kern_features_DEPENDENCIES) - @rm -f kern_features$(EXEEXT) - $(AM_V_CCLD)$(LINK) $(kern_features_OBJECTS) $(kern_features_LDADD) $(LIBS) -@@ -7715,6 +8082,10 @@ - @rm -f kill$(EXEEXT) - $(AM_V_CCLD)$(LINK) $(kill_OBJECTS) $(kill_LDADD) $(LIBS) - -+kill--pidns-translation$(EXEEXT): $(kill__pidns_translation_OBJECTS) $(kill__pidns_translation_DEPENDENCIES) $(EXTRA_kill__pidns_translation_DEPENDENCIES) -+ @rm -f kill--pidns-translation$(EXEEXT) -+ $(AM_V_CCLD)$(LINK) $(kill__pidns_translation_OBJECTS) $(kill__pidns_translation_LDADD) $(LIBS) -+ - kill_child$(EXEEXT): $(kill_child_OBJECTS) $(kill_child_DEPENDENCIES) $(EXTRA_kill_child_DEPENDENCIES) - @rm -f kill_child$(EXEEXT) - $(AM_V_CCLD)$(LINK) $(kill_child_OBJECTS) $(kill_child_LDADD) $(LIBS) -@@ -7823,6 +8194,10 @@ - @rm -f migrate_pages$(EXEEXT) - $(AM_V_CCLD)$(LINK) $(migrate_pages_OBJECTS) $(migrate_pages_LDADD) $(LIBS) - -+migrate_pages--pidns-translation$(EXEEXT): $(migrate_pages__pidns_translation_OBJECTS) $(migrate_pages__pidns_translation_DEPENDENCIES) $(EXTRA_migrate_pages__pidns_translation_DEPENDENCIES) -+ @rm -f migrate_pages--pidns-translation$(EXEEXT) -+ $(AM_V_CCLD)$(LINK) $(migrate_pages__pidns_translation_OBJECTS) $(migrate_pages__pidns_translation_LDADD) $(LIBS) -+ - mincore$(EXEEXT): $(mincore_OBJECTS) $(mincore_DEPENDENCIES) $(EXTRA_mincore_DEPENDENCIES) - @rm -f mincore$(EXEEXT) - $(AM_V_CCLD)$(LINK) $(mincore_OBJECTS) $(mincore_LDADD) $(LIBS) -@@ -7935,6 +8310,10 @@ - @rm -f move_pages$(EXEEXT) - $(AM_V_CCLD)$(LINK) $(move_pages_OBJECTS) $(move_pages_LDADD) $(LIBS) - -+move_pages--pidns-translation$(EXEEXT): $(move_pages__pidns_translation_OBJECTS) $(move_pages__pidns_translation_DEPENDENCIES) $(EXTRA_move_pages__pidns_translation_DEPENDENCIES) -+ @rm -f move_pages--pidns-translation$(EXEEXT) -+ $(AM_V_CCLD)$(LINK) $(move_pages__pidns_translation_OBJECTS) $(move_pages__pidns_translation_LDADD) $(LIBS) -+ - move_pages-Xabbrev$(EXEEXT): $(move_pages_Xabbrev_OBJECTS) $(move_pages_Xabbrev_DEPENDENCIES) $(EXTRA_move_pages_Xabbrev_DEPENDENCIES) - @rm -f move_pages-Xabbrev$(EXEEXT) - $(AM_V_CCLD)$(LINK) $(move_pages_Xabbrev_OBJECTS) $(move_pages_Xabbrev_LDADD) $(LIBS) -@@ -8027,6 +8406,10 @@ - @rm -f net-sockaddr$(EXEEXT) - $(AM_V_CCLD)$(LINK) $(net_sockaddr_OBJECTS) $(net_sockaddr_LDADD) $(LIBS) - -+net-sockaddr--pidns-translation$(EXEEXT): $(net_sockaddr__pidns_translation_OBJECTS) $(net_sockaddr__pidns_translation_DEPENDENCIES) $(EXTRA_net_sockaddr__pidns_translation_DEPENDENCIES) -+ @rm -f net-sockaddr--pidns-translation$(EXEEXT) -+ $(AM_V_CCLD)$(LINK) $(net_sockaddr__pidns_translation_OBJECTS) $(net_sockaddr__pidns_translation_LDADD) $(LIBS) -+ - net-tpacket_req$(EXEEXT): $(net_tpacket_req_OBJECTS) $(net_tpacket_req_DEPENDENCIES) $(EXTRA_net_tpacket_req_DEPENDENCIES) - @rm -f net-tpacket_req$(EXEEXT) - $(AM_V_CCLD)$(LINK) $(net_tpacket_req_OBJECTS) $(net_tpacket_req_LDADD) $(LIBS) -@@ -8063,6 +8446,10 @@ - @rm -f netlink_audit$(EXEEXT) - $(AM_V_CCLD)$(LINK) $(netlink_audit_OBJECTS) $(netlink_audit_LDADD) $(LIBS) - -+netlink_audit--pidns-translation$(EXEEXT): $(netlink_audit__pidns_translation_OBJECTS) $(netlink_audit__pidns_translation_DEPENDENCIES) $(EXTRA_netlink_audit__pidns_translation_DEPENDENCIES) -+ @rm -f netlink_audit--pidns-translation$(EXEEXT) -+ $(AM_V_CCLD)$(LINK) $(netlink_audit__pidns_translation_OBJECTS) $(netlink_audit__pidns_translation_LDADD) $(LIBS) -+ - netlink_crypto$(EXEEXT): $(netlink_crypto_OBJECTS) $(netlink_crypto_DEPENDENCIES) $(EXTRA_netlink_crypto_DEPENDENCIES) - @rm -f netlink_crypto$(EXEEXT) - $(AM_V_CCLD)$(LINK) $(netlink_crypto_OBJECTS) $(netlink_crypto_LDADD) $(LIBS) -@@ -8479,6 +8866,10 @@ - @rm -f pidfd_open--decode-fd-socket$(EXEEXT) - $(AM_V_CCLD)$(LINK) $(pidfd_open__decode_fd_socket_OBJECTS) $(pidfd_open__decode_fd_socket_LDADD) $(LIBS) - -+pidfd_open--pidns-translation$(EXEEXT): $(pidfd_open__pidns_translation_OBJECTS) $(pidfd_open__pidns_translation_DEPENDENCIES) $(EXTRA_pidfd_open__pidns_translation_DEPENDENCIES) -+ @rm -f pidfd_open--pidns-translation$(EXEEXT) -+ $(AM_V_CCLD)$(LINK) $(pidfd_open__pidns_translation_OBJECTS) $(pidfd_open__pidns_translation_LDADD) $(LIBS) -+ - pidfd_open-P$(EXEEXT): $(pidfd_open_P_OBJECTS) $(pidfd_open_P_DEPENDENCIES) $(EXTRA_pidfd_open_P_DEPENDENCIES) - @rm -f pidfd_open-P$(EXEEXT) - $(AM_V_CCLD)$(LINK) $(pidfd_open_P_OBJECTS) $(pidfd_open_P_LDADD) $(LIBS) -@@ -8495,6 +8886,14 @@ - @rm -f pidfd_send_signal$(EXEEXT) - $(AM_V_CCLD)$(LINK) $(pidfd_send_signal_OBJECTS) $(pidfd_send_signal_LDADD) $(LIBS) - -+pidfd_send_signal--pidns-translation$(EXEEXT): $(pidfd_send_signal__pidns_translation_OBJECTS) $(pidfd_send_signal__pidns_translation_DEPENDENCIES) $(EXTRA_pidfd_send_signal__pidns_translation_DEPENDENCIES) -+ @rm -f pidfd_send_signal--pidns-translation$(EXEEXT) -+ $(AM_V_CCLD)$(LINK) $(pidfd_send_signal__pidns_translation_OBJECTS) $(pidfd_send_signal__pidns_translation_LDADD) $(LIBS) -+ -+pidns-cache$(EXEEXT): $(pidns_cache_OBJECTS) $(pidns_cache_DEPENDENCIES) $(EXTRA_pidns_cache_DEPENDENCIES) -+ @rm -f pidns-cache$(EXEEXT) -+ $(AM_V_CCLD)$(LINK) $(pidns_cache_OBJECTS) $(pidns_cache_LDADD) $(LIBS) -+ - pipe$(EXEEXT): $(pipe_OBJECTS) $(pipe_DEPENDENCIES) $(EXTRA_pipe_DEPENDENCIES) - @rm -f pipe$(EXEEXT) - $(AM_V_CCLD)$(LINK) $(pipe_OBJECTS) $(pipe_LDADD) $(LIBS) -@@ -8647,14 +9046,26 @@ - @rm -f prlimit64$(EXEEXT) - $(AM_V_CCLD)$(LINK) $(prlimit64_OBJECTS) $(prlimit64_LDADD) $(LIBS) - -+prlimit64--pidns-translation$(EXEEXT): $(prlimit64__pidns_translation_OBJECTS) $(prlimit64__pidns_translation_DEPENDENCIES) $(EXTRA_prlimit64__pidns_translation_DEPENDENCIES) -+ @rm -f prlimit64--pidns-translation$(EXEEXT) -+ $(AM_V_CCLD)$(LINK) $(prlimit64__pidns_translation_OBJECTS) $(prlimit64__pidns_translation_LDADD) $(LIBS) -+ - process_vm_readv$(EXEEXT): $(process_vm_readv_OBJECTS) $(process_vm_readv_DEPENDENCIES) $(EXTRA_process_vm_readv_DEPENDENCIES) - @rm -f process_vm_readv$(EXEEXT) - $(AM_V_CCLD)$(LINK) $(process_vm_readv_OBJECTS) $(process_vm_readv_LDADD) $(LIBS) - -+process_vm_readv--pidns-translation$(EXEEXT): $(process_vm_readv__pidns_translation_OBJECTS) $(process_vm_readv__pidns_translation_DEPENDENCIES) $(EXTRA_process_vm_readv__pidns_translation_DEPENDENCIES) -+ @rm -f process_vm_readv--pidns-translation$(EXEEXT) -+ $(AM_V_CCLD)$(LINK) $(process_vm_readv__pidns_translation_OBJECTS) $(process_vm_readv__pidns_translation_LDADD) $(LIBS) -+ - process_vm_writev$(EXEEXT): $(process_vm_writev_OBJECTS) $(process_vm_writev_DEPENDENCIES) $(EXTRA_process_vm_writev_DEPENDENCIES) - @rm -f process_vm_writev$(EXEEXT) - $(AM_V_CCLD)$(LINK) $(process_vm_writev_OBJECTS) $(process_vm_writev_LDADD) $(LIBS) - -+process_vm_writev--pidns-translation$(EXEEXT): $(process_vm_writev__pidns_translation_OBJECTS) $(process_vm_writev__pidns_translation_DEPENDENCIES) $(EXTRA_process_vm_writev__pidns_translation_DEPENDENCIES) -+ @rm -f process_vm_writev--pidns-translation$(EXEEXT) -+ $(AM_V_CCLD)$(LINK) $(process_vm_writev__pidns_translation_OBJECTS) $(process_vm_writev__pidns_translation_LDADD) $(LIBS) -+ - pselect6$(EXEEXT): $(pselect6_OBJECTS) $(pselect6_DEPENDENCIES) $(EXTRA_pselect6_DEPENDENCIES) - @rm -f pselect6$(EXEEXT) - $(AM_V_CCLD)$(LINK) $(pselect6_OBJECTS) $(pselect6_LDADD) $(LIBS) -@@ -8847,6 +9258,10 @@ - @rm -f rt_sigqueueinfo$(EXEEXT) - $(AM_V_CCLD)$(LINK) $(rt_sigqueueinfo_OBJECTS) $(rt_sigqueueinfo_LDADD) $(LIBS) - -+rt_sigqueueinfo--pidns-translation$(EXEEXT): $(rt_sigqueueinfo__pidns_translation_OBJECTS) $(rt_sigqueueinfo__pidns_translation_DEPENDENCIES) $(EXTRA_rt_sigqueueinfo__pidns_translation_DEPENDENCIES) -+ @rm -f rt_sigqueueinfo--pidns-translation$(EXEEXT) -+ $(AM_V_CCLD)$(LINK) $(rt_sigqueueinfo__pidns_translation_OBJECTS) $(rt_sigqueueinfo__pidns_translation_LDADD) $(LIBS) -+ - rt_sigreturn$(EXEEXT): $(rt_sigreturn_OBJECTS) $(rt_sigreturn_DEPENDENCIES) $(EXTRA_rt_sigreturn_DEPENDENCIES) - @rm -f rt_sigreturn$(EXEEXT) - $(AM_V_CCLD)$(LINK) $(rt_sigreturn_OBJECTS) $(rt_sigreturn_LDADD) $(LIBS) -@@ -8863,6 +9278,10 @@ - @rm -f rt_tgsigqueueinfo$(EXEEXT) - $(AM_V_CCLD)$(LINK) $(rt_tgsigqueueinfo_OBJECTS) $(rt_tgsigqueueinfo_LDADD) $(LIBS) - -+rt_tgsigqueueinfo--pidns-translation$(EXEEXT): $(rt_tgsigqueueinfo__pidns_translation_OBJECTS) $(rt_tgsigqueueinfo__pidns_translation_DEPENDENCIES) $(EXTRA_rt_tgsigqueueinfo__pidns_translation_DEPENDENCIES) -+ @rm -f rt_tgsigqueueinfo--pidns-translation$(EXEEXT) -+ $(AM_V_CCLD)$(LINK) $(rt_tgsigqueueinfo__pidns_translation_OBJECTS) $(rt_tgsigqueueinfo__pidns_translation_LDADD) $(LIBS) -+ - run_expect_termsig$(EXEEXT): $(run_expect_termsig_OBJECTS) $(run_expect_termsig_DEPENDENCIES) $(EXTRA_run_expect_termsig_DEPENDENCIES) - @rm -f run_expect_termsig$(EXEEXT) - $(AM_V_CCLD)$(LINK) $(run_expect_termsig_OBJECTS) $(run_expect_termsig_LDADD) $(LIBS) -@@ -8903,18 +9322,34 @@ - @rm -f sched_xetaffinity$(EXEEXT) - $(AM_V_CCLD)$(LINK) $(sched_xetaffinity_OBJECTS) $(sched_xetaffinity_LDADD) $(LIBS) - -+sched_xetaffinity--pidns-translation$(EXEEXT): $(sched_xetaffinity__pidns_translation_OBJECTS) $(sched_xetaffinity__pidns_translation_DEPENDENCIES) $(EXTRA_sched_xetaffinity__pidns_translation_DEPENDENCIES) -+ @rm -f sched_xetaffinity--pidns-translation$(EXEEXT) -+ $(AM_V_CCLD)$(LINK) $(sched_xetaffinity__pidns_translation_OBJECTS) $(sched_xetaffinity__pidns_translation_LDADD) $(LIBS) -+ - sched_xetattr$(EXEEXT): $(sched_xetattr_OBJECTS) $(sched_xetattr_DEPENDENCIES) $(EXTRA_sched_xetattr_DEPENDENCIES) - @rm -f sched_xetattr$(EXEEXT) - $(AM_V_CCLD)$(LINK) $(sched_xetattr_OBJECTS) $(sched_xetattr_LDADD) $(LIBS) - -+sched_xetattr--pidns-translation$(EXEEXT): $(sched_xetattr__pidns_translation_OBJECTS) $(sched_xetattr__pidns_translation_DEPENDENCIES) $(EXTRA_sched_xetattr__pidns_translation_DEPENDENCIES) -+ @rm -f sched_xetattr--pidns-translation$(EXEEXT) -+ $(AM_V_CCLD)$(LINK) $(sched_xetattr__pidns_translation_OBJECTS) $(sched_xetattr__pidns_translation_LDADD) $(LIBS) -+ - sched_xetparam$(EXEEXT): $(sched_xetparam_OBJECTS) $(sched_xetparam_DEPENDENCIES) $(EXTRA_sched_xetparam_DEPENDENCIES) - @rm -f sched_xetparam$(EXEEXT) - $(AM_V_CCLD)$(LINK) $(sched_xetparam_OBJECTS) $(sched_xetparam_LDADD) $(LIBS) - -+sched_xetparam--pidns-translation$(EXEEXT): $(sched_xetparam__pidns_translation_OBJECTS) $(sched_xetparam__pidns_translation_DEPENDENCIES) $(EXTRA_sched_xetparam__pidns_translation_DEPENDENCIES) -+ @rm -f sched_xetparam--pidns-translation$(EXEEXT) -+ $(AM_V_CCLD)$(LINK) $(sched_xetparam__pidns_translation_OBJECTS) $(sched_xetparam__pidns_translation_LDADD) $(LIBS) -+ - sched_xetscheduler$(EXEEXT): $(sched_xetscheduler_OBJECTS) $(sched_xetscheduler_DEPENDENCIES) $(EXTRA_sched_xetscheduler_DEPENDENCIES) - @rm -f sched_xetscheduler$(EXEEXT) - $(AM_V_CCLD)$(LINK) $(sched_xetscheduler_OBJECTS) $(sched_xetscheduler_LDADD) $(LIBS) - -+sched_xetscheduler--pidns-translation$(EXEEXT): $(sched_xetscheduler__pidns_translation_OBJECTS) $(sched_xetscheduler__pidns_translation_DEPENDENCIES) $(EXTRA_sched_xetscheduler__pidns_translation_DEPENDENCIES) -+ @rm -f sched_xetscheduler--pidns-translation$(EXEEXT) -+ $(AM_V_CCLD)$(LINK) $(sched_xetscheduler__pidns_translation_OBJECTS) $(sched_xetscheduler__pidns_translation_LDADD) $(LIBS) -+ - sched_yield$(EXEEXT): $(sched_yield_OBJECTS) $(sched_yield_DEPENDENCIES) $(EXTRA_sched_yield_DEPENDENCIES) - @rm -f sched_yield$(EXEEXT) - $(AM_V_CCLD)$(LINK) $(sched_yield_OBJECTS) $(sched_yield_LDADD) $(LIBS) -@@ -9127,6 +9562,10 @@ - @rm -f signal_receive$(EXEEXT) - $(AM_V_CCLD)$(LINK) $(signal_receive_OBJECTS) $(signal_receive_LDADD) $(LIBS) - -+signal_receive--pidns-translation$(EXEEXT): $(signal_receive__pidns_translation_OBJECTS) $(signal_receive__pidns_translation_DEPENDENCIES) $(EXTRA_signal_receive__pidns_translation_DEPENDENCIES) -+ @rm -f signal_receive--pidns-translation$(EXEEXT) -+ $(AM_V_CCLD)$(LINK) $(signal_receive__pidns_translation_OBJECTS) $(signal_receive__pidns_translation_LDADD) $(LIBS) -+ - signalfd4$(EXEEXT): $(signalfd4_OBJECTS) $(signalfd4_DEPENDENCIES) $(EXTRA_signalfd4_DEPENDENCIES) - @rm -f signalfd4$(EXEEXT) - $(AM_V_CCLD)$(LINK) $(signalfd4_OBJECTS) $(signalfd4_LDADD) $(LIBS) -@@ -9163,6 +9602,10 @@ - @rm -f so_peercred$(EXEEXT) - $(AM_V_CCLD)$(LINK) $(so_peercred_OBJECTS) $(so_peercred_LDADD) $(LIBS) - -+so_peercred--pidns-translation$(EXEEXT): $(so_peercred__pidns_translation_OBJECTS) $(so_peercred__pidns_translation_DEPENDENCIES) $(EXTRA_so_peercred__pidns_translation_DEPENDENCIES) -+ @rm -f so_peercred--pidns-translation$(EXEEXT) -+ $(AM_V_CCLD)$(LINK) $(so_peercred__pidns_translation_OBJECTS) $(so_peercred__pidns_translation_LDADD) $(LIBS) -+ - so_peercred-Xabbrev$(EXEEXT): $(so_peercred_Xabbrev_OBJECTS) $(so_peercred_Xabbrev_DEPENDENCIES) $(EXTRA_so_peercred_Xabbrev_DEPENDENCIES) - @rm -f so_peercred-Xabbrev$(EXEEXT) - $(AM_V_CCLD)$(LINK) $(so_peercred_Xabbrev_OBJECTS) $(so_peercred_Xabbrev_LDADD) $(LIBS) -@@ -9367,6 +9810,10 @@ - @rm -f tgkill$(EXEEXT) - $(AM_V_CCLD)$(LINK) $(tgkill_OBJECTS) $(tgkill_LDADD) $(LIBS) - -+tgkill--pidns-translation$(EXEEXT): $(tgkill__pidns_translation_OBJECTS) $(tgkill__pidns_translation_DEPENDENCIES) $(EXTRA_tgkill__pidns_translation_DEPENDENCIES) -+ @rm -f tgkill--pidns-translation$(EXEEXT) -+ $(AM_V_CCLD)$(LINK) $(tgkill__pidns_translation_OBJECTS) $(tgkill__pidns_translation_LDADD) $(LIBS) -+ - threads-execve$(EXEEXT): $(threads_execve_OBJECTS) $(threads_execve_DEPENDENCIES) $(EXTRA_threads_execve_DEPENDENCIES) - @rm -f threads-execve$(EXEEXT) - $(AM_V_CCLD)$(LINK) $(threads_execve_OBJECTS) $(threads_execve_LDADD) $(LIBS) -@@ -9415,10 +9862,18 @@ - @rm -f tkill$(EXEEXT) - $(AM_V_CCLD)$(LINK) $(tkill_OBJECTS) $(tkill_LDADD) $(LIBS) - -+tkill--pidns-translation$(EXEEXT): $(tkill__pidns_translation_OBJECTS) $(tkill__pidns_translation_DEPENDENCIES) $(EXTRA_tkill__pidns_translation_DEPENDENCIES) -+ @rm -f tkill--pidns-translation$(EXEEXT) -+ $(AM_V_CCLD)$(LINK) $(tkill__pidns_translation_OBJECTS) $(tkill__pidns_translation_LDADD) $(LIBS) -+ - tracer_ppid_pgid_sid$(EXEEXT): $(tracer_ppid_pgid_sid_OBJECTS) $(tracer_ppid_pgid_sid_DEPENDENCIES) $(EXTRA_tracer_ppid_pgid_sid_DEPENDENCIES) - @rm -f tracer_ppid_pgid_sid$(EXEEXT) - $(AM_V_CCLD)$(LINK) $(tracer_ppid_pgid_sid_OBJECTS) $(tracer_ppid_pgid_sid_LDADD) $(LIBS) - -+trie_test$(EXEEXT): $(trie_test_OBJECTS) $(trie_test_DEPENDENCIES) $(EXTRA_trie_test_DEPENDENCIES) -+ @rm -f trie_test$(EXEEXT) -+ $(AM_V_CCLD)$(trie_test_LINK) $(trie_test_OBJECTS) $(trie_test_LDADD) $(LIBS) -+ - truncate$(EXEEXT): $(truncate_OBJECTS) $(truncate_DEPENDENCIES) $(EXTRA_truncate_DEPENDENCIES) - @rm -f truncate$(EXEEXT) - $(AM_V_CCLD)$(LINK) $(truncate_OBJECTS) $(truncate_LDADD) $(LIBS) -@@ -9579,6 +10034,10 @@ - @rm -f xet_robust_list$(EXEEXT) - $(AM_V_CCLD)$(LINK) $(xet_robust_list_OBJECTS) $(xet_robust_list_LDADD) $(LIBS) - -+xet_robust_list--pidns-translation$(EXEEXT): $(xet_robust_list__pidns_translation_OBJECTS) $(xet_robust_list__pidns_translation_DEPENDENCIES) $(EXTRA_xet_robust_list__pidns_translation_DEPENDENCIES) -+ @rm -f xet_robust_list--pidns-translation$(EXEEXT) -+ $(AM_V_CCLD)$(LINK) $(xet_robust_list__pidns_translation_OBJECTS) $(xet_robust_list__pidns_translation_LDADD) $(LIBS) -+ - xet_thread_area_x86$(EXEEXT): $(xet_thread_area_x86_OBJECTS) $(xet_thread_area_x86_DEPENDENCIES) $(EXTRA_xet_thread_area_x86_DEPENDENCIES) - @rm -f xet_thread_area_x86$(EXEEXT) - $(AM_V_CCLD)$(LINK) $(xet_thread_area_x86_OBJECTS) $(xet_thread_area_x86_LDADD) $(LIBS) -@@ -9591,10 +10050,18 @@ - @rm -f xetpgid$(EXEEXT) - $(AM_V_CCLD)$(LINK) $(xetpgid_OBJECTS) $(xetpgid_LDADD) $(LIBS) - -+xetpgid--pidns-translation$(EXEEXT): $(xetpgid__pidns_translation_OBJECTS) $(xetpgid__pidns_translation_DEPENDENCIES) $(EXTRA_xetpgid__pidns_translation_DEPENDENCIES) -+ @rm -f xetpgid--pidns-translation$(EXEEXT) -+ $(AM_V_CCLD)$(LINK) $(xetpgid__pidns_translation_OBJECTS) $(xetpgid__pidns_translation_LDADD) $(LIBS) -+ - xetpriority$(EXEEXT): $(xetpriority_OBJECTS) $(xetpriority_DEPENDENCIES) $(EXTRA_xetpriority_DEPENDENCIES) - @rm -f xetpriority$(EXEEXT) - $(AM_V_CCLD)$(LINK) $(xetpriority_OBJECTS) $(xetpriority_LDADD) $(LIBS) - -+xetpriority--pidns-translation$(EXEEXT): $(xetpriority__pidns_translation_OBJECTS) $(xetpriority__pidns_translation_DEPENDENCIES) $(EXTRA_xetpriority__pidns_translation_DEPENDENCIES) -+ @rm -f xetpriority--pidns-translation$(EXEEXT) -+ $(AM_V_CCLD)$(LINK) $(xetpriority__pidns_translation_OBJECTS) $(xetpriority__pidns_translation_LDADD) $(LIBS) -+ - xettimeofday$(EXEEXT): $(xettimeofday_OBJECTS) $(xettimeofday_DEPENDENCIES) $(EXTRA_xettimeofday_DEPENDENCIES) - @rm -f xettimeofday$(EXEEXT) - $(AM_V_CCLD)$(LINK) $(xettimeofday_OBJECTS) $(xettimeofday_LDADD) $(LIBS) -@@ -9714,7 +10181,9 @@ - @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/fchown.Po@am__quote@ # am--include-marker - @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/fchown32.Po@am__quote@ # am--include-marker - @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/fchownat.Po@am__quote@ # am--include-marker -+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/fcntl--pidns-translation.Po@am__quote@ # am--include-marker - @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/fcntl.Po@am__quote@ # am--include-marker -+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/fcntl64--pidns-translation.Po@am__quote@ # am--include-marker - @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/fcntl64.Po@am__quote@ # am--include-marker - @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/fdatasync.Po@am__quote@ # am--include-marker - @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/fflush.Po@am__quote@ # am--include-marker -@@ -9725,6 +10194,7 @@ - @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/filter_seccomp-perf.Po@am__quote@ # am--include-marker - @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/finit_module.Po@am__quote@ # am--include-marker - @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/flock.Po@am__quote@ # am--include-marker -+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/fork--pidns-translation.Po@am__quote@ # am--include-marker - @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/fork-f.Po@am__quote@ # am--include-marker - @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/fsconfig-P.Po@am__quote@ # am--include-marker - @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/fsconfig.Po@am__quote@ # am--include-marker -@@ -9766,7 +10236,9 @@ - @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/getgroups.Po@am__quote@ # am--include-marker - @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/getgroups32.Po@am__quote@ # am--include-marker - @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/getpeername.Po@am__quote@ # am--include-marker -+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/getpgrp--pidns-translation.Po@am__quote@ # am--include-marker - @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/getpgrp.Po@am__quote@ # am--include-marker -+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/getpid--pidns-translation.Po@am__quote@ # am--include-marker - @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/getpid.Po@am__quote@ # am--include-marker - @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/getppid.Po@am__quote@ # am--include-marker - @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/getrandom.Po@am__quote@ # am--include-marker -@@ -9776,8 +10248,10 @@ - @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/getresuid32.Po@am__quote@ # am--include-marker - @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/getrlimit.Po@am__quote@ # am--include-marker - @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/getrusage.Po@am__quote@ # am--include-marker -+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/getsid--pidns-translation.Po@am__quote@ # am--include-marker - @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/getsid.Po@am__quote@ # am--include-marker - @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/getsockname.Po@am__quote@ # am--include-marker -+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/gettid--pidns-translation.Po@am__quote@ # am--include-marker - @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/gettid.Po@am__quote@ # am--include-marker - @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/getuid.Po@am__quote@ # am--include-marker - @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/getuid32.Po@am__quote@ # am--include-marker -@@ -9798,6 +10272,7 @@ - @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/io_uring_register.Po@am__quote@ # am--include-marker - @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/io_uring_setup.Po@am__quote@ # am--include-marker - @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ioctl.Po@am__quote@ # am--include-marker -+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ioctl_block--pidns-translation.Po@am__quote@ # am--include-marker - @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ioctl_block.Po@am__quote@ # am--include-marker - @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ioctl_dm-v.Po@am__quote@ # am--include-marker - @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ioctl_dm.Po@am__quote@ # am--include-marker -@@ -9873,6 +10348,7 @@ - @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ioctl_watchdog.Po@am__quote@ # am--include-marker - @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ioperm.Po@am__quote@ # am--include-marker - @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/iopl.Po@am__quote@ # am--include-marker -+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ioprio--pidns-translation.Po@am__quote@ # am--include-marker - @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ioprio-Xabbrev.Po@am__quote@ # am--include-marker - @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ioprio-Xraw.Po@am__quote@ # am--include-marker - @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ioprio-Xverbose.Po@am__quote@ # am--include-marker -@@ -9896,6 +10372,7 @@ - @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ipc_shm-Xverbose.Po@am__quote@ # am--include-marker - @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ipc_shm.Po@am__quote@ # am--include-marker - @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/is_linux_mips_n64.Po@am__quote@ # am--include-marker -+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/kcmp-y--pidns-translation.Po@am__quote@ # am--include-marker - @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/kcmp-y.Po@am__quote@ # am--include-marker - @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/kcmp.Po@am__quote@ # am--include-marker - @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/kern_features.Po@am__quote@ # am--include-marker -@@ -9909,6 +10386,7 @@ - @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/keyctl-Xraw.Po@am__quote@ # am--include-marker - @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/keyctl-Xverbose.Po@am__quote@ # am--include-marker - @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/keyctl.Po@am__quote@ # am--include-marker -+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/kill--pidns-translation.Po@am__quote@ # am--include-marker - @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/kill.Po@am__quote@ # am--include-marker - @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/kill_child.Po@am__quote@ # am--include-marker - @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ksysent.Po@am__quote@ # am--include-marker -@@ -9946,6 +10424,7 @@ - @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libtests_a-test_printstrn.Po@am__quote@ # am--include-marker - @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libtests_a-test_ucopy.Po@am__quote@ # am--include-marker - @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libtests_a-tprintf.Po@am__quote@ # am--include-marker -+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libtests_a-xmalloc_for_tests.Po@am__quote@ # am--include-marker - @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/link.Po@am__quote@ # am--include-marker - @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/linkat.Po@am__quote@ # am--include-marker - @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/list_sigaction_signum.Po@am__quote@ # am--include-marker -@@ -9968,6 +10447,7 @@ - @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/memfd_create-Xraw.Po@am__quote@ # am--include-marker - @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/memfd_create-Xverbose.Po@am__quote@ # am--include-marker - @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/memfd_create.Po@am__quote@ # am--include-marker -+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/migrate_pages--pidns-translation.Po@am__quote@ # am--include-marker - @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/migrate_pages.Po@am__quote@ # am--include-marker - @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/mincore.Po@am__quote@ # am--include-marker - @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/mkdir.Po@am__quote@ # am--include-marker -@@ -9996,6 +10476,7 @@ - @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/mount.Po@am__quote@ # am--include-marker - @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/move_mount-P.Po@am__quote@ # am--include-marker - @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/move_mount.Po@am__quote@ # am--include-marker -+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/move_pages--pidns-translation.Po@am__quote@ # am--include-marker - @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/move_pages-Xabbrev.Po@am__quote@ # am--include-marker - @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/move_pages-Xraw.Po@am__quote@ # am--include-marker - @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/move_pages-Xverbose.Po@am__quote@ # am--include-marker -@@ -10019,6 +10500,7 @@ - @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/net-packet_mreq-Xraw.Po@am__quote@ # am--include-marker - @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/net-packet_mreq-Xverbose.Po@am__quote@ # am--include-marker - @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/net-packet_mreq.Po@am__quote@ # am--include-marker -+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/net-sockaddr--pidns-translation.Po@am__quote@ # am--include-marker - @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/net-sockaddr.Po@am__quote@ # am--include-marker - @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/net-tpacket_req.Po@am__quote@ # am--include-marker - @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/net-tpacket_stats-success.Po@am__quote@ # am--include-marker -@@ -10028,6 +10510,7 @@ - @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/net-yy-inet6.Po@am__quote@ # am--include-marker - @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/net-yy-netlink.Po@am__quote@ # am--include-marker - @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/net-yy-unix.Po@am__quote@ # am--include-marker -+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/netlink_audit--pidns-translation.Po@am__quote@ # am--include-marker - @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/netlink_audit.Po@am__quote@ # am--include-marker - @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/netlink_crypto.Po@am__quote@ # am--include-marker - @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/netlink_generic.Po@am__quote@ # am--include-marker -@@ -10132,11 +10615,14 @@ - @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/pidfd_open--decode-fd-path.Po@am__quote@ # am--include-marker - @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/pidfd_open--decode-fd-pidfd.Po@am__quote@ # am--include-marker - @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/pidfd_open--decode-fd-socket.Po@am__quote@ # am--include-marker -+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/pidfd_open--pidns-translation.Po@am__quote@ # am--include-marker - @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/pidfd_open-P.Po@am__quote@ # am--include-marker - @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/pidfd_open-y.Po@am__quote@ # am--include-marker - @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/pidfd_open-yy.Po@am__quote@ # am--include-marker - @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/pidfd_open.Po@am__quote@ # am--include-marker -+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/pidfd_send_signal--pidns-translation.Po@am__quote@ # am--include-marker - @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/pidfd_send_signal.Po@am__quote@ # am--include-marker -+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/pidns-cache.Po@am__quote@ # am--include-marker - @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/pipe.Po@am__quote@ # am--include-marker - @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/pipe2.Po@am__quote@ # am--include-marker - @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/pkey_alloc.Po@am__quote@ # am--include-marker -@@ -10174,8 +10660,11 @@ - @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/printstrn-umoven-peekdata.Po@am__quote@ # am--include-marker - @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/printstrn-umoven-undumpable.Po@am__quote@ # am--include-marker - @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/printstrn-umoven.Po@am__quote@ # am--include-marker -+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/prlimit64--pidns-translation.Po@am__quote@ # am--include-marker - @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/prlimit64.Po@am__quote@ # am--include-marker -+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/process_vm_readv--pidns-translation.Po@am__quote@ # am--include-marker - @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/process_vm_readv.Po@am__quote@ # am--include-marker -+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/process_vm_writev--pidns-translation.Po@am__quote@ # am--include-marker - @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/process_vm_writev.Po@am__quote@ # am--include-marker - @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/pselect6.Po@am__quote@ # am--include-marker - @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ptrace.Po@am__quote@ # am--include-marker -@@ -10224,10 +10713,12 @@ - @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/rt_sigaction.Po@am__quote@ # am--include-marker - @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/rt_sigpending.Po@am__quote@ # am--include-marker - @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/rt_sigprocmask.Po@am__quote@ # am--include-marker -+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/rt_sigqueueinfo--pidns-translation.Po@am__quote@ # am--include-marker - @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/rt_sigqueueinfo.Po@am__quote@ # am--include-marker - @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/rt_sigreturn.Po@am__quote@ # am--include-marker - @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/rt_sigsuspend.Po@am__quote@ # am--include-marker - @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/rt_sigtimedwait.Po@am__quote@ # am--include-marker -+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/rt_tgsigqueueinfo--pidns-translation.Po@am__quote@ # am--include-marker - @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/rt_tgsigqueueinfo.Po@am__quote@ # am--include-marker - @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/run_expect_termsig.Po@am__quote@ # am--include-marker - @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/s390_guarded_storage-v.Po@am__quote@ # am--include-marker -@@ -10238,9 +10729,13 @@ - @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/s390_sthyi.Po@am__quote@ # am--include-marker - @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/sched_get_priority_mxx.Po@am__quote@ # am--include-marker - @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/sched_rr_get_interval.Po@am__quote@ # am--include-marker -+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/sched_xetaffinity--pidns-translation.Po@am__quote@ # am--include-marker - @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/sched_xetaffinity.Po@am__quote@ # am--include-marker -+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/sched_xetattr--pidns-translation.Po@am__quote@ # am--include-marker - @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/sched_xetattr.Po@am__quote@ # am--include-marker -+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/sched_xetparam--pidns-translation.Po@am__quote@ # am--include-marker - @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/sched_xetparam.Po@am__quote@ # am--include-marker -+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/sched_xetscheduler--pidns-translation.Po@am__quote@ # am--include-marker - @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/sched_xetscheduler.Po@am__quote@ # am--include-marker - @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/sched_yield.Po@am__quote@ # am--include-marker - @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/scm_rights.Po@am__quote@ # am--include-marker -@@ -10294,6 +10789,7 @@ - @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/sigaltstack.Po@am__quote@ # am--include-marker - @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/siginfo.Po@am__quote@ # am--include-marker - @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/signal.Po@am__quote@ # am--include-marker -+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/signal_receive--pidns-translation.Po@am__quote@ # am--include-marker - @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/signal_receive.Po@am__quote@ # am--include-marker - @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/signalfd4.Po@am__quote@ # am--include-marker - @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/sigpending.Po@am__quote@ # am--include-marker -@@ -10303,6 +10799,7 @@ - @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/sleep.Po@am__quote@ # am--include-marker - @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/so_error.Po@am__quote@ # am--include-marker - @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/so_linger.Po@am__quote@ # am--include-marker -+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/so_peercred--pidns-translation.Po@am__quote@ # am--include-marker - @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/so_peercred-Xabbrev.Po@am__quote@ # am--include-marker - @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/so_peercred-Xraw.Po@am__quote@ # am--include-marker - @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/so_peercred-Xverbose.Po@am__quote@ # am--include-marker -@@ -10362,6 +10859,7 @@ - @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/syslog-success.Po@am__quote@ # am--include-marker - @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/syslog.Po@am__quote@ # am--include-marker - @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/tee.Po@am__quote@ # am--include-marker -+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/tgkill--pidns-translation.Po@am__quote@ # am--include-marker - @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/tgkill.Po@am__quote@ # am--include-marker - @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/threads-execve--quiet-thread-execve.Po@am__quote@ # am--include-marker - @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/threads-execve-q.Po@am__quote@ # am--include-marker -@@ -10374,6 +10872,7 @@ - @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/timerfd_xettime.Po@am__quote@ # am--include-marker - @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/times-fail.Po@am__quote@ # am--include-marker - @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/times.Po@am__quote@ # am--include-marker -+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/tkill--pidns-translation.Po@am__quote@ # am--include-marker - @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/tkill.Po@am__quote@ # am--include-marker - @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/tracer_ppid_pgid_sid.Po@am__quote@ # am--include-marker - @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/truncate.Po@am__quote@ # am--include-marker -@@ -10415,10 +10914,13 @@ - @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/waitpid.Po@am__quote@ # am--include-marker - @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/xattr-strings.Po@am__quote@ # am--include-marker - @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/xattr.Po@am__quote@ # am--include-marker -+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/xet_robust_list--pidns-translation.Po@am__quote@ # am--include-marker - @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/xet_robust_list.Po@am__quote@ # am--include-marker - @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/xet_thread_area_x86.Po@am__quote@ # am--include-marker - @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/xetitimer.Po@am__quote@ # am--include-marker -+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/xetpgid--pidns-translation.Po@am__quote@ # am--include-marker - @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/xetpgid.Po@am__quote@ # am--include-marker -+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/xetpriority--pidns-translation.Po@am__quote@ # am--include-marker - @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/xetpriority.Po@am__quote@ # am--include-marker - @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/xettimeofday.Po@am__quote@ # am--include-marker - @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/zeroargc.Po@am__quote@ # am--include-marker -@@ -10893,6 +11395,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-tprintf.obj `if test -f 'tprintf.c'; then $(CYGPATH_W) 'tprintf.c'; else $(CYGPATH_W) '$(srcdir)/tprintf.c'; fi` - -+libtests_a-xmalloc_for_tests.o: xmalloc_for_tests.c -+@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libtests_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT libtests_a-xmalloc_for_tests.o -MD -MP -MF $(DEPDIR)/libtests_a-xmalloc_for_tests.Tpo -c -o libtests_a-xmalloc_for_tests.o `test -f 'xmalloc_for_tests.c' || echo '$(srcdir)/'`xmalloc_for_tests.c -+@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libtests_a-xmalloc_for_tests.Tpo $(DEPDIR)/libtests_a-xmalloc_for_tests.Po -+@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='xmalloc_for_tests.c' object='libtests_a-xmalloc_for_tests.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-xmalloc_for_tests.o `test -f 'xmalloc_for_tests.c' || echo '$(srcdir)/'`xmalloc_for_tests.c -+ -+libtests_a-xmalloc_for_tests.obj: xmalloc_for_tests.c -+@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libtests_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT libtests_a-xmalloc_for_tests.obj -MD -MP -MF $(DEPDIR)/libtests_a-xmalloc_for_tests.Tpo -c -o libtests_a-xmalloc_for_tests.obj `if test -f 'xmalloc_for_tests.c'; then $(CYGPATH_W) 'xmalloc_for_tests.c'; else $(CYGPATH_W) '$(srcdir)/xmalloc_for_tests.c'; fi` -+@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libtests_a-xmalloc_for_tests.Tpo $(DEPDIR)/libtests_a-xmalloc_for_tests.Po -+@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='xmalloc_for_tests.c' object='libtests_a-xmalloc_for_tests.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-xmalloc_for_tests.obj `if test -f 'xmalloc_for_tests.c'; then $(CYGPATH_W) 'xmalloc_for_tests.c'; else $(CYGPATH_W) '$(srcdir)/xmalloc_for_tests.c'; fi` -+ - fstat64-fstat64.o: fstat64.c - @am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(fstat64_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT fstat64-fstat64.o -MD -MP -MF $(DEPDIR)/fstat64-fstat64.Tpo -c -o fstat64-fstat64.o `test -f 'fstat64.c' || echo '$(srcdir)/'`fstat64.c - @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/fstat64-fstat64.Tpo $(DEPDIR)/fstat64-fstat64.Po -@@ -11103,6 +11619,34 @@ - @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ - @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(statfs_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o statfs-statfs.obj `if test -f 'statfs.c'; then $(CYGPATH_W) 'statfs.c'; else $(CYGPATH_W) '$(srcdir)/statfs.c'; fi` - -+trie_test-trie_test.o: trie_test.c -+@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(trie_test_CPPFLAGS) $(CPPFLAGS) $(trie_test_CFLAGS) $(CFLAGS) -MT trie_test-trie_test.o -MD -MP -MF $(DEPDIR)/trie_test-trie_test.Tpo -c -o trie_test-trie_test.o `test -f 'trie_test.c' || echo '$(srcdir)/'`trie_test.c -+@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/trie_test-trie_test.Tpo $(DEPDIR)/trie_test-trie_test.Po -+@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='trie_test.c' object='trie_test-trie_test.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) $(trie_test_CPPFLAGS) $(CPPFLAGS) $(trie_test_CFLAGS) $(CFLAGS) -c -o trie_test-trie_test.o `test -f 'trie_test.c' || echo '$(srcdir)/'`trie_test.c -+ -+trie_test-trie_test.obj: trie_test.c -+@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(trie_test_CPPFLAGS) $(CPPFLAGS) $(trie_test_CFLAGS) $(CFLAGS) -MT trie_test-trie_test.obj -MD -MP -MF $(DEPDIR)/trie_test-trie_test.Tpo -c -o trie_test-trie_test.obj `if test -f 'trie_test.c'; then $(CYGPATH_W) 'trie_test.c'; else $(CYGPATH_W) '$(srcdir)/trie_test.c'; fi` -+@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/trie_test-trie_test.Tpo $(DEPDIR)/trie_test-trie_test.Po -+@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='trie_test.c' object='trie_test-trie_test.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) $(trie_test_CPPFLAGS) $(CPPFLAGS) $(trie_test_CFLAGS) $(CFLAGS) -c -o trie_test-trie_test.obj `if test -f 'trie_test.c'; then $(CYGPATH_W) 'trie_test.c'; else $(CYGPATH_W) '$(srcdir)/trie_test.c'; fi` -+ -+trie_test-trie_for_tests.o: trie_for_tests.c -+@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(trie_test_CPPFLAGS) $(CPPFLAGS) $(trie_test_CFLAGS) $(CFLAGS) -MT trie_test-trie_for_tests.o -MD -MP -MF $(DEPDIR)/trie_test-trie_for_tests.Tpo -c -o trie_test-trie_for_tests.o `test -f 'trie_for_tests.c' || echo '$(srcdir)/'`trie_for_tests.c -+@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/trie_test-trie_for_tests.Tpo $(DEPDIR)/trie_test-trie_for_tests.Po -+@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='trie_for_tests.c' object='trie_test-trie_for_tests.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) $(trie_test_CPPFLAGS) $(CPPFLAGS) $(trie_test_CFLAGS) $(CFLAGS) -c -o trie_test-trie_for_tests.o `test -f 'trie_for_tests.c' || echo '$(srcdir)/'`trie_for_tests.c -+ -+trie_test-trie_for_tests.obj: trie_for_tests.c -+@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(trie_test_CPPFLAGS) $(CPPFLAGS) $(trie_test_CFLAGS) $(CFLAGS) -MT trie_test-trie_for_tests.obj -MD -MP -MF $(DEPDIR)/trie_test-trie_for_tests.Tpo -c -o trie_test-trie_for_tests.obj `if test -f 'trie_for_tests.c'; then $(CYGPATH_W) 'trie_for_tests.c'; else $(CYGPATH_W) '$(srcdir)/trie_for_tests.c'; fi` -+@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/trie_test-trie_for_tests.Tpo $(DEPDIR)/trie_test-trie_for_tests.Po -+@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='trie_for_tests.c' object='trie_test-trie_for_tests.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) $(trie_test_CPPFLAGS) $(CPPFLAGS) $(trie_test_CFLAGS) $(CFLAGS) -c -o trie_test-trie_for_tests.obj `if test -f 'trie_for_tests.c'; then $(CYGPATH_W) 'trie_for_tests.c'; else $(CYGPATH_W) '$(srcdir)/trie_for_tests.c'; fi` -+ - truncate64-truncate64.o: truncate64.c - @am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(truncate64_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT truncate64-truncate64.o -MD -MP -MF $(DEPDIR)/truncate64-truncate64.Tpo -c -o truncate64-truncate64.o `test -f 'truncate64.c' || echo '$(srcdir)/'`truncate64.c - @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/truncate64-truncate64.Tpo $(DEPDIR)/truncate64-truncate64.Po -@@ -11551,7 +12095,9 @@ - -rm -f ./$(DEPDIR)/fchown.Po - -rm -f ./$(DEPDIR)/fchown32.Po - -rm -f ./$(DEPDIR)/fchownat.Po -+ -rm -f ./$(DEPDIR)/fcntl--pidns-translation.Po - -rm -f ./$(DEPDIR)/fcntl.Po -+ -rm -f ./$(DEPDIR)/fcntl64--pidns-translation.Po - -rm -f ./$(DEPDIR)/fcntl64.Po - -rm -f ./$(DEPDIR)/fdatasync.Po - -rm -f ./$(DEPDIR)/fflush.Po -@@ -11562,6 +12108,7 @@ - -rm -f ./$(DEPDIR)/filter_seccomp-perf.Po - -rm -f ./$(DEPDIR)/finit_module.Po - -rm -f ./$(DEPDIR)/flock.Po -+ -rm -f ./$(DEPDIR)/fork--pidns-translation.Po - -rm -f ./$(DEPDIR)/fork-f.Po - -rm -f ./$(DEPDIR)/fsconfig-P.Po - -rm -f ./$(DEPDIR)/fsconfig.Po -@@ -11603,7 +12150,9 @@ - -rm -f ./$(DEPDIR)/getgroups.Po - -rm -f ./$(DEPDIR)/getgroups32.Po - -rm -f ./$(DEPDIR)/getpeername.Po -+ -rm -f ./$(DEPDIR)/getpgrp--pidns-translation.Po - -rm -f ./$(DEPDIR)/getpgrp.Po -+ -rm -f ./$(DEPDIR)/getpid--pidns-translation.Po - -rm -f ./$(DEPDIR)/getpid.Po - -rm -f ./$(DEPDIR)/getppid.Po - -rm -f ./$(DEPDIR)/getrandom.Po -@@ -11613,8 +12162,10 @@ - -rm -f ./$(DEPDIR)/getresuid32.Po - -rm -f ./$(DEPDIR)/getrlimit.Po - -rm -f ./$(DEPDIR)/getrusage.Po -+ -rm -f ./$(DEPDIR)/getsid--pidns-translation.Po - -rm -f ./$(DEPDIR)/getsid.Po - -rm -f ./$(DEPDIR)/getsockname.Po -+ -rm -f ./$(DEPDIR)/gettid--pidns-translation.Po - -rm -f ./$(DEPDIR)/gettid.Po - -rm -f ./$(DEPDIR)/getuid.Po - -rm -f ./$(DEPDIR)/getuid32.Po -@@ -11635,6 +12186,7 @@ - -rm -f ./$(DEPDIR)/io_uring_register.Po - -rm -f ./$(DEPDIR)/io_uring_setup.Po - -rm -f ./$(DEPDIR)/ioctl.Po -+ -rm -f ./$(DEPDIR)/ioctl_block--pidns-translation.Po - -rm -f ./$(DEPDIR)/ioctl_block.Po - -rm -f ./$(DEPDIR)/ioctl_dm-v.Po - -rm -f ./$(DEPDIR)/ioctl_dm.Po -@@ -11710,6 +12262,7 @@ - -rm -f ./$(DEPDIR)/ioctl_watchdog.Po - -rm -f ./$(DEPDIR)/ioperm.Po - -rm -f ./$(DEPDIR)/iopl.Po -+ -rm -f ./$(DEPDIR)/ioprio--pidns-translation.Po - -rm -f ./$(DEPDIR)/ioprio-Xabbrev.Po - -rm -f ./$(DEPDIR)/ioprio-Xraw.Po - -rm -f ./$(DEPDIR)/ioprio-Xverbose.Po -@@ -11733,6 +12286,7 @@ - -rm -f ./$(DEPDIR)/ipc_shm-Xverbose.Po - -rm -f ./$(DEPDIR)/ipc_shm.Po - -rm -f ./$(DEPDIR)/is_linux_mips_n64.Po -+ -rm -f ./$(DEPDIR)/kcmp-y--pidns-translation.Po - -rm -f ./$(DEPDIR)/kcmp-y.Po - -rm -f ./$(DEPDIR)/kcmp.Po - -rm -f ./$(DEPDIR)/kern_features.Po -@@ -11746,6 +12300,7 @@ - -rm -f ./$(DEPDIR)/keyctl-Xraw.Po - -rm -f ./$(DEPDIR)/keyctl-Xverbose.Po - -rm -f ./$(DEPDIR)/keyctl.Po -+ -rm -f ./$(DEPDIR)/kill--pidns-translation.Po - -rm -f ./$(DEPDIR)/kill.Po - -rm -f ./$(DEPDIR)/kill_child.Po - -rm -f ./$(DEPDIR)/ksysent.Po -@@ -11783,6 +12338,7 @@ - -rm -f ./$(DEPDIR)/libtests_a-test_printstrn.Po - -rm -f ./$(DEPDIR)/libtests_a-test_ucopy.Po - -rm -f ./$(DEPDIR)/libtests_a-tprintf.Po -+ -rm -f ./$(DEPDIR)/libtests_a-xmalloc_for_tests.Po - -rm -f ./$(DEPDIR)/link.Po - -rm -f ./$(DEPDIR)/linkat.Po - -rm -f ./$(DEPDIR)/list_sigaction_signum.Po -@@ -11805,6 +12361,7 @@ - -rm -f ./$(DEPDIR)/memfd_create-Xraw.Po - -rm -f ./$(DEPDIR)/memfd_create-Xverbose.Po - -rm -f ./$(DEPDIR)/memfd_create.Po -+ -rm -f ./$(DEPDIR)/migrate_pages--pidns-translation.Po - -rm -f ./$(DEPDIR)/migrate_pages.Po - -rm -f ./$(DEPDIR)/mincore.Po - -rm -f ./$(DEPDIR)/mkdir.Po -@@ -11833,6 +12390,7 @@ - -rm -f ./$(DEPDIR)/mount.Po - -rm -f ./$(DEPDIR)/move_mount-P.Po - -rm -f ./$(DEPDIR)/move_mount.Po -+ -rm -f ./$(DEPDIR)/move_pages--pidns-translation.Po - -rm -f ./$(DEPDIR)/move_pages-Xabbrev.Po - -rm -f ./$(DEPDIR)/move_pages-Xraw.Po - -rm -f ./$(DEPDIR)/move_pages-Xverbose.Po -@@ -11856,6 +12414,7 @@ - -rm -f ./$(DEPDIR)/net-packet_mreq-Xraw.Po - -rm -f ./$(DEPDIR)/net-packet_mreq-Xverbose.Po - -rm -f ./$(DEPDIR)/net-packet_mreq.Po -+ -rm -f ./$(DEPDIR)/net-sockaddr--pidns-translation.Po - -rm -f ./$(DEPDIR)/net-sockaddr.Po - -rm -f ./$(DEPDIR)/net-tpacket_req.Po - -rm -f ./$(DEPDIR)/net-tpacket_stats-success.Po -@@ -11865,6 +12424,7 @@ - -rm -f ./$(DEPDIR)/net-yy-inet6.Po - -rm -f ./$(DEPDIR)/net-yy-netlink.Po - -rm -f ./$(DEPDIR)/net-yy-unix.Po -+ -rm -f ./$(DEPDIR)/netlink_audit--pidns-translation.Po - -rm -f ./$(DEPDIR)/netlink_audit.Po - -rm -f ./$(DEPDIR)/netlink_crypto.Po - -rm -f ./$(DEPDIR)/netlink_generic.Po -@@ -11969,11 +12529,14 @@ - -rm -f ./$(DEPDIR)/pidfd_open--decode-fd-path.Po - -rm -f ./$(DEPDIR)/pidfd_open--decode-fd-pidfd.Po - -rm -f ./$(DEPDIR)/pidfd_open--decode-fd-socket.Po -+ -rm -f ./$(DEPDIR)/pidfd_open--pidns-translation.Po - -rm -f ./$(DEPDIR)/pidfd_open-P.Po - -rm -f ./$(DEPDIR)/pidfd_open-y.Po - -rm -f ./$(DEPDIR)/pidfd_open-yy.Po - -rm -f ./$(DEPDIR)/pidfd_open.Po -+ -rm -f ./$(DEPDIR)/pidfd_send_signal--pidns-translation.Po - -rm -f ./$(DEPDIR)/pidfd_send_signal.Po -+ -rm -f ./$(DEPDIR)/pidns-cache.Po - -rm -f ./$(DEPDIR)/pipe.Po - -rm -f ./$(DEPDIR)/pipe2.Po - -rm -f ./$(DEPDIR)/pkey_alloc.Po -@@ -12011,8 +12574,11 @@ - -rm -f ./$(DEPDIR)/printstrn-umoven-peekdata.Po - -rm -f ./$(DEPDIR)/printstrn-umoven-undumpable.Po - -rm -f ./$(DEPDIR)/printstrn-umoven.Po -+ -rm -f ./$(DEPDIR)/prlimit64--pidns-translation.Po - -rm -f ./$(DEPDIR)/prlimit64.Po -+ -rm -f ./$(DEPDIR)/process_vm_readv--pidns-translation.Po - -rm -f ./$(DEPDIR)/process_vm_readv.Po -+ -rm -f ./$(DEPDIR)/process_vm_writev--pidns-translation.Po - -rm -f ./$(DEPDIR)/process_vm_writev.Po - -rm -f ./$(DEPDIR)/pselect6.Po - -rm -f ./$(DEPDIR)/ptrace.Po -@@ -12061,10 +12627,12 @@ - -rm -f ./$(DEPDIR)/rt_sigaction.Po - -rm -f ./$(DEPDIR)/rt_sigpending.Po - -rm -f ./$(DEPDIR)/rt_sigprocmask.Po -+ -rm -f ./$(DEPDIR)/rt_sigqueueinfo--pidns-translation.Po - -rm -f ./$(DEPDIR)/rt_sigqueueinfo.Po - -rm -f ./$(DEPDIR)/rt_sigreturn.Po - -rm -f ./$(DEPDIR)/rt_sigsuspend.Po - -rm -f ./$(DEPDIR)/rt_sigtimedwait.Po -+ -rm -f ./$(DEPDIR)/rt_tgsigqueueinfo--pidns-translation.Po - -rm -f ./$(DEPDIR)/rt_tgsigqueueinfo.Po - -rm -f ./$(DEPDIR)/run_expect_termsig.Po - -rm -f ./$(DEPDIR)/s390_guarded_storage-v.Po -@@ -12075,9 +12643,13 @@ - -rm -f ./$(DEPDIR)/s390_sthyi.Po - -rm -f ./$(DEPDIR)/sched_get_priority_mxx.Po - -rm -f ./$(DEPDIR)/sched_rr_get_interval.Po -+ -rm -f ./$(DEPDIR)/sched_xetaffinity--pidns-translation.Po - -rm -f ./$(DEPDIR)/sched_xetaffinity.Po -+ -rm -f ./$(DEPDIR)/sched_xetattr--pidns-translation.Po - -rm -f ./$(DEPDIR)/sched_xetattr.Po -+ -rm -f ./$(DEPDIR)/sched_xetparam--pidns-translation.Po - -rm -f ./$(DEPDIR)/sched_xetparam.Po -+ -rm -f ./$(DEPDIR)/sched_xetscheduler--pidns-translation.Po - -rm -f ./$(DEPDIR)/sched_xetscheduler.Po - -rm -f ./$(DEPDIR)/sched_yield.Po - -rm -f ./$(DEPDIR)/scm_rights.Po -@@ -12131,6 +12703,7 @@ - -rm -f ./$(DEPDIR)/sigaltstack.Po - -rm -f ./$(DEPDIR)/siginfo.Po - -rm -f ./$(DEPDIR)/signal.Po -+ -rm -f ./$(DEPDIR)/signal_receive--pidns-translation.Po - -rm -f ./$(DEPDIR)/signal_receive.Po - -rm -f ./$(DEPDIR)/signalfd4.Po - -rm -f ./$(DEPDIR)/sigpending.Po -@@ -12140,6 +12713,7 @@ - -rm -f ./$(DEPDIR)/sleep.Po - -rm -f ./$(DEPDIR)/so_error.Po - -rm -f ./$(DEPDIR)/so_linger.Po -+ -rm -f ./$(DEPDIR)/so_peercred--pidns-translation.Po - -rm -f ./$(DEPDIR)/so_peercred-Xabbrev.Po - -rm -f ./$(DEPDIR)/so_peercred-Xraw.Po - -rm -f ./$(DEPDIR)/so_peercred-Xverbose.Po -@@ -12199,6 +12773,7 @@ - -rm -f ./$(DEPDIR)/syslog-success.Po - -rm -f ./$(DEPDIR)/syslog.Po - -rm -f ./$(DEPDIR)/tee.Po -+ -rm -f ./$(DEPDIR)/tgkill--pidns-translation.Po - -rm -f ./$(DEPDIR)/tgkill.Po - -rm -f ./$(DEPDIR)/threads-execve--quiet-thread-execve.Po - -rm -f ./$(DEPDIR)/threads-execve-q.Po -@@ -12211,6 +12786,7 @@ - -rm -f ./$(DEPDIR)/timerfd_xettime.Po - -rm -f ./$(DEPDIR)/times-fail.Po - -rm -f ./$(DEPDIR)/times.Po -+ -rm -f ./$(DEPDIR)/tkill--pidns-translation.Po - -rm -f ./$(DEPDIR)/tkill.Po - -rm -f ./$(DEPDIR)/tracer_ppid_pgid_sid.Po - -rm -f ./$(DEPDIR)/truncate.Po -@@ -12252,10 +12828,13 @@ - -rm -f ./$(DEPDIR)/waitpid.Po - -rm -f ./$(DEPDIR)/xattr-strings.Po - -rm -f ./$(DEPDIR)/xattr.Po -+ -rm -f ./$(DEPDIR)/xet_robust_list--pidns-translation.Po - -rm -f ./$(DEPDIR)/xet_robust_list.Po - -rm -f ./$(DEPDIR)/xet_thread_area_x86.Po - -rm -f ./$(DEPDIR)/xetitimer.Po -+ -rm -f ./$(DEPDIR)/xetpgid--pidns-translation.Po - -rm -f ./$(DEPDIR)/xetpgid.Po -+ -rm -f ./$(DEPDIR)/xetpriority--pidns-translation.Po - -rm -f ./$(DEPDIR)/xetpriority.Po - -rm -f ./$(DEPDIR)/xettimeofday.Po - -rm -f ./$(DEPDIR)/zeroargc.Po -@@ -12409,7 +12988,9 @@ - -rm -f ./$(DEPDIR)/fchown.Po - -rm -f ./$(DEPDIR)/fchown32.Po - -rm -f ./$(DEPDIR)/fchownat.Po -+ -rm -f ./$(DEPDIR)/fcntl--pidns-translation.Po - -rm -f ./$(DEPDIR)/fcntl.Po -+ -rm -f ./$(DEPDIR)/fcntl64--pidns-translation.Po - -rm -f ./$(DEPDIR)/fcntl64.Po - -rm -f ./$(DEPDIR)/fdatasync.Po - -rm -f ./$(DEPDIR)/fflush.Po -@@ -12420,6 +13001,7 @@ - -rm -f ./$(DEPDIR)/filter_seccomp-perf.Po - -rm -f ./$(DEPDIR)/finit_module.Po - -rm -f ./$(DEPDIR)/flock.Po -+ -rm -f ./$(DEPDIR)/fork--pidns-translation.Po - -rm -f ./$(DEPDIR)/fork-f.Po - -rm -f ./$(DEPDIR)/fsconfig-P.Po - -rm -f ./$(DEPDIR)/fsconfig.Po -@@ -12461,7 +13043,9 @@ - -rm -f ./$(DEPDIR)/getgroups.Po - -rm -f ./$(DEPDIR)/getgroups32.Po - -rm -f ./$(DEPDIR)/getpeername.Po -+ -rm -f ./$(DEPDIR)/getpgrp--pidns-translation.Po - -rm -f ./$(DEPDIR)/getpgrp.Po -+ -rm -f ./$(DEPDIR)/getpid--pidns-translation.Po - -rm -f ./$(DEPDIR)/getpid.Po - -rm -f ./$(DEPDIR)/getppid.Po - -rm -f ./$(DEPDIR)/getrandom.Po -@@ -12471,8 +13055,10 @@ - -rm -f ./$(DEPDIR)/getresuid32.Po - -rm -f ./$(DEPDIR)/getrlimit.Po - -rm -f ./$(DEPDIR)/getrusage.Po -+ -rm -f ./$(DEPDIR)/getsid--pidns-translation.Po - -rm -f ./$(DEPDIR)/getsid.Po - -rm -f ./$(DEPDIR)/getsockname.Po -+ -rm -f ./$(DEPDIR)/gettid--pidns-translation.Po - -rm -f ./$(DEPDIR)/gettid.Po - -rm -f ./$(DEPDIR)/getuid.Po - -rm -f ./$(DEPDIR)/getuid32.Po -@@ -12493,6 +13079,7 @@ - -rm -f ./$(DEPDIR)/io_uring_register.Po - -rm -f ./$(DEPDIR)/io_uring_setup.Po - -rm -f ./$(DEPDIR)/ioctl.Po -+ -rm -f ./$(DEPDIR)/ioctl_block--pidns-translation.Po - -rm -f ./$(DEPDIR)/ioctl_block.Po - -rm -f ./$(DEPDIR)/ioctl_dm-v.Po - -rm -f ./$(DEPDIR)/ioctl_dm.Po -@@ -12568,6 +13155,7 @@ - -rm -f ./$(DEPDIR)/ioctl_watchdog.Po - -rm -f ./$(DEPDIR)/ioperm.Po - -rm -f ./$(DEPDIR)/iopl.Po -+ -rm -f ./$(DEPDIR)/ioprio--pidns-translation.Po - -rm -f ./$(DEPDIR)/ioprio-Xabbrev.Po - -rm -f ./$(DEPDIR)/ioprio-Xraw.Po - -rm -f ./$(DEPDIR)/ioprio-Xverbose.Po -@@ -12591,6 +13179,7 @@ - -rm -f ./$(DEPDIR)/ipc_shm-Xverbose.Po - -rm -f ./$(DEPDIR)/ipc_shm.Po - -rm -f ./$(DEPDIR)/is_linux_mips_n64.Po -+ -rm -f ./$(DEPDIR)/kcmp-y--pidns-translation.Po - -rm -f ./$(DEPDIR)/kcmp-y.Po - -rm -f ./$(DEPDIR)/kcmp.Po - -rm -f ./$(DEPDIR)/kern_features.Po -@@ -12604,6 +13193,7 @@ - -rm -f ./$(DEPDIR)/keyctl-Xraw.Po - -rm -f ./$(DEPDIR)/keyctl-Xverbose.Po - -rm -f ./$(DEPDIR)/keyctl.Po -+ -rm -f ./$(DEPDIR)/kill--pidns-translation.Po - -rm -f ./$(DEPDIR)/kill.Po - -rm -f ./$(DEPDIR)/kill_child.Po - -rm -f ./$(DEPDIR)/ksysent.Po -@@ -12641,6 +13231,7 @@ - -rm -f ./$(DEPDIR)/libtests_a-test_printstrn.Po - -rm -f ./$(DEPDIR)/libtests_a-test_ucopy.Po - -rm -f ./$(DEPDIR)/libtests_a-tprintf.Po -+ -rm -f ./$(DEPDIR)/libtests_a-xmalloc_for_tests.Po - -rm -f ./$(DEPDIR)/link.Po - -rm -f ./$(DEPDIR)/linkat.Po - -rm -f ./$(DEPDIR)/list_sigaction_signum.Po -@@ -12663,6 +13254,7 @@ - -rm -f ./$(DEPDIR)/memfd_create-Xraw.Po - -rm -f ./$(DEPDIR)/memfd_create-Xverbose.Po - -rm -f ./$(DEPDIR)/memfd_create.Po -+ -rm -f ./$(DEPDIR)/migrate_pages--pidns-translation.Po - -rm -f ./$(DEPDIR)/migrate_pages.Po - -rm -f ./$(DEPDIR)/mincore.Po - -rm -f ./$(DEPDIR)/mkdir.Po -@@ -12691,6 +13283,7 @@ - -rm -f ./$(DEPDIR)/mount.Po - -rm -f ./$(DEPDIR)/move_mount-P.Po - -rm -f ./$(DEPDIR)/move_mount.Po -+ -rm -f ./$(DEPDIR)/move_pages--pidns-translation.Po - -rm -f ./$(DEPDIR)/move_pages-Xabbrev.Po - -rm -f ./$(DEPDIR)/move_pages-Xraw.Po - -rm -f ./$(DEPDIR)/move_pages-Xverbose.Po -@@ -12714,6 +13307,7 @@ - -rm -f ./$(DEPDIR)/net-packet_mreq-Xraw.Po - -rm -f ./$(DEPDIR)/net-packet_mreq-Xverbose.Po - -rm -f ./$(DEPDIR)/net-packet_mreq.Po -+ -rm -f ./$(DEPDIR)/net-sockaddr--pidns-translation.Po - -rm -f ./$(DEPDIR)/net-sockaddr.Po - -rm -f ./$(DEPDIR)/net-tpacket_req.Po - -rm -f ./$(DEPDIR)/net-tpacket_stats-success.Po -@@ -12723,6 +13317,7 @@ - -rm -f ./$(DEPDIR)/net-yy-inet6.Po - -rm -f ./$(DEPDIR)/net-yy-netlink.Po - -rm -f ./$(DEPDIR)/net-yy-unix.Po -+ -rm -f ./$(DEPDIR)/netlink_audit--pidns-translation.Po - -rm -f ./$(DEPDIR)/netlink_audit.Po - -rm -f ./$(DEPDIR)/netlink_crypto.Po - -rm -f ./$(DEPDIR)/netlink_generic.Po -@@ -12827,11 +13422,14 @@ - -rm -f ./$(DEPDIR)/pidfd_open--decode-fd-path.Po - -rm -f ./$(DEPDIR)/pidfd_open--decode-fd-pidfd.Po - -rm -f ./$(DEPDIR)/pidfd_open--decode-fd-socket.Po -+ -rm -f ./$(DEPDIR)/pidfd_open--pidns-translation.Po - -rm -f ./$(DEPDIR)/pidfd_open-P.Po - -rm -f ./$(DEPDIR)/pidfd_open-y.Po - -rm -f ./$(DEPDIR)/pidfd_open-yy.Po - -rm -f ./$(DEPDIR)/pidfd_open.Po -+ -rm -f ./$(DEPDIR)/pidfd_send_signal--pidns-translation.Po - -rm -f ./$(DEPDIR)/pidfd_send_signal.Po -+ -rm -f ./$(DEPDIR)/pidns-cache.Po - -rm -f ./$(DEPDIR)/pipe.Po - -rm -f ./$(DEPDIR)/pipe2.Po - -rm -f ./$(DEPDIR)/pkey_alloc.Po -@@ -12869,8 +13467,11 @@ - -rm -f ./$(DEPDIR)/printstrn-umoven-peekdata.Po - -rm -f ./$(DEPDIR)/printstrn-umoven-undumpable.Po - -rm -f ./$(DEPDIR)/printstrn-umoven.Po -+ -rm -f ./$(DEPDIR)/prlimit64--pidns-translation.Po - -rm -f ./$(DEPDIR)/prlimit64.Po -+ -rm -f ./$(DEPDIR)/process_vm_readv--pidns-translation.Po - -rm -f ./$(DEPDIR)/process_vm_readv.Po -+ -rm -f ./$(DEPDIR)/process_vm_writev--pidns-translation.Po - -rm -f ./$(DEPDIR)/process_vm_writev.Po - -rm -f ./$(DEPDIR)/pselect6.Po - -rm -f ./$(DEPDIR)/ptrace.Po -@@ -12919,10 +13520,12 @@ - -rm -f ./$(DEPDIR)/rt_sigaction.Po - -rm -f ./$(DEPDIR)/rt_sigpending.Po - -rm -f ./$(DEPDIR)/rt_sigprocmask.Po -+ -rm -f ./$(DEPDIR)/rt_sigqueueinfo--pidns-translation.Po - -rm -f ./$(DEPDIR)/rt_sigqueueinfo.Po - -rm -f ./$(DEPDIR)/rt_sigreturn.Po - -rm -f ./$(DEPDIR)/rt_sigsuspend.Po - -rm -f ./$(DEPDIR)/rt_sigtimedwait.Po -+ -rm -f ./$(DEPDIR)/rt_tgsigqueueinfo--pidns-translation.Po - -rm -f ./$(DEPDIR)/rt_tgsigqueueinfo.Po - -rm -f ./$(DEPDIR)/run_expect_termsig.Po - -rm -f ./$(DEPDIR)/s390_guarded_storage-v.Po -@@ -12933,9 +13536,13 @@ - -rm -f ./$(DEPDIR)/s390_sthyi.Po - -rm -f ./$(DEPDIR)/sched_get_priority_mxx.Po - -rm -f ./$(DEPDIR)/sched_rr_get_interval.Po -+ -rm -f ./$(DEPDIR)/sched_xetaffinity--pidns-translation.Po - -rm -f ./$(DEPDIR)/sched_xetaffinity.Po -+ -rm -f ./$(DEPDIR)/sched_xetattr--pidns-translation.Po - -rm -f ./$(DEPDIR)/sched_xetattr.Po -+ -rm -f ./$(DEPDIR)/sched_xetparam--pidns-translation.Po - -rm -f ./$(DEPDIR)/sched_xetparam.Po -+ -rm -f ./$(DEPDIR)/sched_xetscheduler--pidns-translation.Po - -rm -f ./$(DEPDIR)/sched_xetscheduler.Po - -rm -f ./$(DEPDIR)/sched_yield.Po - -rm -f ./$(DEPDIR)/scm_rights.Po -@@ -12989,6 +13596,7 @@ - -rm -f ./$(DEPDIR)/sigaltstack.Po - -rm -f ./$(DEPDIR)/siginfo.Po - -rm -f ./$(DEPDIR)/signal.Po -+ -rm -f ./$(DEPDIR)/signal_receive--pidns-translation.Po - -rm -f ./$(DEPDIR)/signal_receive.Po - -rm -f ./$(DEPDIR)/signalfd4.Po - -rm -f ./$(DEPDIR)/sigpending.Po -@@ -12998,6 +13606,7 @@ - -rm -f ./$(DEPDIR)/sleep.Po - -rm -f ./$(DEPDIR)/so_error.Po - -rm -f ./$(DEPDIR)/so_linger.Po -+ -rm -f ./$(DEPDIR)/so_peercred--pidns-translation.Po - -rm -f ./$(DEPDIR)/so_peercred-Xabbrev.Po - -rm -f ./$(DEPDIR)/so_peercred-Xraw.Po - -rm -f ./$(DEPDIR)/so_peercred-Xverbose.Po -@@ -13057,6 +13666,7 @@ - -rm -f ./$(DEPDIR)/syslog-success.Po - -rm -f ./$(DEPDIR)/syslog.Po - -rm -f ./$(DEPDIR)/tee.Po -+ -rm -f ./$(DEPDIR)/tgkill--pidns-translation.Po - -rm -f ./$(DEPDIR)/tgkill.Po - -rm -f ./$(DEPDIR)/threads-execve--quiet-thread-execve.Po - -rm -f ./$(DEPDIR)/threads-execve-q.Po -@@ -13069,6 +13679,7 @@ - -rm -f ./$(DEPDIR)/timerfd_xettime.Po - -rm -f ./$(DEPDIR)/times-fail.Po - -rm -f ./$(DEPDIR)/times.Po -+ -rm -f ./$(DEPDIR)/tkill--pidns-translation.Po - -rm -f ./$(DEPDIR)/tkill.Po - -rm -f ./$(DEPDIR)/tracer_ppid_pgid_sid.Po - -rm -f ./$(DEPDIR)/truncate.Po -@@ -13110,14 +13721,26 @@ - -rm -f ./$(DEPDIR)/waitpid.Po - -rm -f ./$(DEPDIR)/xattr-strings.Po - -rm -f ./$(DEPDIR)/xattr.Po -+ -rm -f ./$(DEPDIR)/xet_robust_list--pidns-translation.Po - -rm -f ./$(DEPDIR)/xet_robust_list.Po - -rm -f ./$(DEPDIR)/xet_thread_area_x86.Po - -rm -f ./$(DEPDIR)/xetitimer.Po -+ -rm -f ./$(DEPDIR)/xetpgid--pidns-translation.Po - -rm -f ./$(DEPDIR)/xetpgid.Po -+ -rm -f ./$(DEPDIR)/xetpriority--pidns-translation.Po - -rm -f ./$(DEPDIR)/xetpriority.Po - -rm -f ./$(DEPDIR)/xettimeofday.Po - -rm -f ./$(DEPDIR)/zeroargc.Po - -rm -f Makefile -+distclean-am: clean-am distclean-compile distclean-generic \ -+ distclean-tags -+ -+dvi: dvi-am -+ -+dvi-am: -+ -+html: html-am -+ -rm -f Makefile - maintainer-clean-am: distclean-am maintainer-clean-generic - - mostlyclean: mostlyclean-am -@@ -13407,9 +14030,15 @@ - $(srcdir)/fcntl.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in - $(AM_V_GEN) $^ $@ - -+$(srcdir)/fcntl--pidns-translation.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in -+ $(AM_V_GEN) $^ $@ -+ - $(srcdir)/fcntl64.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in - $(AM_V_GEN) $^ $@ - -+$(srcdir)/fcntl64--pidns-translation.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in -+ $(AM_V_GEN) $^ $@ -+ - $(srcdir)/fdatasync.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in - $(AM_V_GEN) $^ $@ - -@@ -13569,9 +14198,15 @@ - $(srcdir)/getpgrp.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in - $(AM_V_GEN) $^ $@ - -+$(srcdir)/getpgrp--pidns-translation.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in -+ $(AM_V_GEN) $^ $@ -+ - $(srcdir)/getpid.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in - $(AM_V_GEN) $^ $@ - -+$(srcdir)/getpid--pidns-translation.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in -+ $(AM_V_GEN) $^ $@ -+ - $(srcdir)/getppid.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in - $(AM_V_GEN) $^ $@ - -@@ -13599,6 +14234,9 @@ - $(srcdir)/getsid.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in - $(AM_V_GEN) $^ $@ - -+$(srcdir)/getsid--pidns-translation.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in -+ $(AM_V_GEN) $^ $@ -+ - $(srcdir)/getsockname.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in - $(AM_V_GEN) $^ $@ - -@@ -13878,6 +14516,9 @@ - $(srcdir)/ioprio.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in - $(AM_V_GEN) $^ $@ - -+$(srcdir)/ioprio--pidns-translation.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in -+ $(AM_V_GEN) $^ $@ -+ - $(srcdir)/ioprio-Xabbrev.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in - $(AM_V_GEN) $^ $@ - -@@ -13944,6 +14585,9 @@ - $(srcdir)/kcmp-y.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in - $(AM_V_GEN) $^ $@ - -+$(srcdir)/kcmp-y--pidns-translation.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in -+ $(AM_V_GEN) $^ $@ -+ - $(srcdir)/kern_features.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in - $(AM_V_GEN) $^ $@ - -@@ -13980,6 +14624,9 @@ - $(srcdir)/kill.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in - $(AM_V_GEN) $^ $@ - -+$(srcdir)/kill--pidns-translation.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in -+ $(AM_V_GEN) $^ $@ -+ - $(srcdir)/ksysent.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in - $(AM_V_GEN) $^ $@ - -@@ -14043,6 +14690,9 @@ - $(srcdir)/migrate_pages.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in - $(AM_V_GEN) $^ $@ - -+$(srcdir)/migrate_pages--pidns-translation.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in -+ $(AM_V_GEN) $^ $@ -+ - $(srcdir)/mincore.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in - $(AM_V_GEN) $^ $@ - -@@ -14133,6 +14783,9 @@ - $(srcdir)/move_pages-Xverbose.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in - $(AM_V_GEN) $^ $@ - -+$(srcdir)/move_pages--pidns-translation.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in -+ $(AM_V_GEN) $^ $@ -+ - $(srcdir)/mq.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in - $(AM_V_GEN) $^ $@ - -@@ -14190,6 +14843,9 @@ - $(srcdir)/net-sockaddr.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in - $(AM_V_GEN) $^ $@ - -+$(srcdir)/net-sockaddr--pidns-translation.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in -+ $(AM_V_GEN) $^ $@ -+ - $(srcdir)/net-tpacket_req.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in - $(AM_V_GEN) $^ $@ - -@@ -14499,9 +15155,15 @@ - $(srcdir)/pidfd_open-yy.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in - $(AM_V_GEN) $^ $@ - -+$(srcdir)/pidfd_open--pidns-translation.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in -+ $(AM_V_GEN) $^ $@ -+ - $(srcdir)/pidfd_send_signal.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in - $(AM_V_GEN) $^ $@ - -+$(srcdir)/pidfd_send_signal--pidns-translation.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in -+ $(AM_V_GEN) $^ $@ -+ - $(srcdir)/pipe2.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in - $(AM_V_GEN) $^ $@ - -@@ -14568,12 +15230,21 @@ - $(srcdir)/prlimit64.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in - $(AM_V_GEN) $^ $@ - -+$(srcdir)/prlimit64--pidns-translation.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in -+ $(AM_V_GEN) $^ $@ -+ - $(srcdir)/process_vm_readv.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in - $(AM_V_GEN) $^ $@ - -+$(srcdir)/process_vm_readv--pidns-translation.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in -+ $(AM_V_GEN) $^ $@ -+ - $(srcdir)/process_vm_writev.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in - $(AM_V_GEN) $^ $@ - -+$(srcdir)/process_vm_writev--pidns-translation.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in -+ $(AM_V_GEN) $^ $@ -+ - $(srcdir)/pselect6.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in - $(AM_V_GEN) $^ $@ - -@@ -14682,6 +15353,9 @@ - $(srcdir)/rt_sigqueueinfo.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in - $(AM_V_GEN) $^ $@ - -+$(srcdir)/rt_sigqueueinfo--pidns-translation.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in -+ $(AM_V_GEN) $^ $@ -+ - $(srcdir)/rt_sigreturn.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in - $(AM_V_GEN) $^ $@ - -@@ -14694,6 +15368,9 @@ - $(srcdir)/rt_tgsigqueueinfo.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in - $(AM_V_GEN) $^ $@ - -+$(srcdir)/rt_tgsigqueueinfo--pidns-translation.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in -+ $(AM_V_GEN) $^ $@ -+ - $(srcdir)/s390_guarded_storage.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in - $(AM_V_GEN) $^ $@ - -@@ -14724,15 +15401,27 @@ - $(srcdir)/sched_xetaffinity.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in - $(AM_V_GEN) $^ $@ - -+$(srcdir)/sched_xetaffinity--pidns-translation.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in -+ $(AM_V_GEN) $^ $@ -+ - $(srcdir)/sched_xetattr.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in - $(AM_V_GEN) $^ $@ - -+$(srcdir)/sched_xetattr--pidns-translation.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in -+ $(AM_V_GEN) $^ $@ -+ - $(srcdir)/sched_xetparam.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in - $(AM_V_GEN) $^ $@ - -+$(srcdir)/sched_xetparam--pidns-translation.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in -+ $(AM_V_GEN) $^ $@ -+ - $(srcdir)/sched_xetscheduler.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in - $(AM_V_GEN) $^ $@ - -+$(srcdir)/sched_xetscheduler--pidns-translation.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in -+ $(AM_V_GEN) $^ $@ -+ - $(srcdir)/sched_yield.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in - $(AM_V_GEN) $^ $@ - -@@ -14871,6 +15560,9 @@ - $(srcdir)/signal_receive.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in - $(AM_V_GEN) $^ $@ - -+$(srcdir)/signal_receive--pidns-translation.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in -+ $(AM_V_GEN) $^ $@ -+ - $(srcdir)/signalfd4.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in - $(AM_V_GEN) $^ $@ - -@@ -14904,6 +15596,9 @@ - $(srcdir)/so_peercred-Xverbose.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in - $(AM_V_GEN) $^ $@ - -+$(srcdir)/so_peercred--pidns-translation.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in -+ $(AM_V_GEN) $^ $@ -+ - $(srcdir)/sock_filter-v.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in - $(AM_V_GEN) $^ $@ - -@@ -15120,6 +15815,9 @@ - $(srcdir)/tgkill.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in - $(AM_V_GEN) $^ $@ - -+$(srcdir)/tgkill--pidns-translation.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in -+ $(AM_V_GEN) $^ $@ -+ - $(srcdir)/threads-execve--quiet-thread-execve.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in - $(AM_V_GEN) $^ $@ - -@@ -15153,6 +15851,9 @@ - $(srcdir)/tkill.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in - $(AM_V_GEN) $^ $@ - -+$(srcdir)/tkill--pidns-translation.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in -+ $(AM_V_GEN) $^ $@ -+ - $(srcdir)/trace_clock.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in - $(AM_V_GEN) $^ $@ - -@@ -15201,6 +15902,9 @@ - $(srcdir)/trace_statfs_like.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in - $(AM_V_GEN) $^ $@ - -+$(srcdir)/trie_test.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in -+ $(AM_V_GEN) $^ $@ -+ - $(srcdir)/truncate.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in - $(AM_V_GEN) $^ $@ - -@@ -15291,15 +15995,24 @@ - $(srcdir)/xet_robust_list.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in - $(AM_V_GEN) $^ $@ - -+$(srcdir)/xet_robust_list--pidns-translation.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in -+ $(AM_V_GEN) $^ $@ -+ - $(srcdir)/xetitimer.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in - $(AM_V_GEN) $^ $@ - - $(srcdir)/xetpgid.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in - $(AM_V_GEN) $^ $@ - -+$(srcdir)/xetpgid--pidns-translation.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in -+ $(AM_V_GEN) $^ $@ -+ - $(srcdir)/xetpriority.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in - $(AM_V_GEN) $^ $@ - -+$(srcdir)/xetpriority--pidns-translation.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in -+ $(AM_V_GEN) $^ $@ -+ - $(srcdir)/xettimeofday.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 2020-09-09 19:52:30.790668799 +0200 -+++ strace-5.7/tests-mx32/Makefile.in 2020-09-09 20:23:25.738934694 +0200 -@@ -121,10 +121,17 @@ - clone3-success-Xabbrev$(EXEEXT) clone3-success-Xraw$(EXEEXT) \ - clone3-success-Xverbose$(EXEEXT) count-f$(EXEEXT) \ - delay$(EXEEXT) execve-v$(EXEEXT) execveat-v$(EXEEXT) \ -+ fcntl--pidns-translation$(EXEEXT) \ -+ fcntl64--pidns-translation$(EXEEXT) \ - filter_seccomp-flag$(EXEEXT) filter_seccomp-perf$(EXEEXT) \ -- filter-unavailable$(EXEEXT) fork-f$(EXEEXT) fsync-y$(EXEEXT) \ -- get_process_reaper$(EXEEXT) getpid$(EXEEXT) getppid$(EXEEXT) \ -- gettid$(EXEEXT) inject-nf$(EXEEXT) int_0x80$(EXEEXT) \ -+ filter-unavailable$(EXEEXT) fork-f$(EXEEXT) \ -+ fork--pidns-translation$(EXEEXT) fsync-y$(EXEEXT) \ -+ get_process_reaper$(EXEEXT) \ -+ getpgrp--pidns-translation$(EXEEXT) getpid$(EXEEXT) \ -+ getpid--pidns-translation$(EXEEXT) getppid$(EXEEXT) \ -+ getsid--pidns-translation$(EXEEXT) gettid$(EXEEXT) \ -+ gettid--pidns-translation$(EXEEXT) inject-nf$(EXEEXT) \ -+ int_0x80$(EXEEXT) ioctl_block--pidns-translation$(EXEEXT) \ - ioctl_dm-v$(EXEEXT) ioctl_evdev-success$(EXEEXT) \ - ioctl_evdev-success-Xabbrev$(EXEEXT) \ - ioctl_evdev-success-Xraw$(EXEEXT) \ -@@ -151,43 +158,68 @@ - ioctl_v4l2-success-v-Xabbrev$(EXEEXT) \ - ioctl_v4l2-success-v-Xraw$(EXEEXT) \ - ioctl_v4l2-success-v-Xverbose$(EXEEXT) \ -- is_linux_mips_n64$(EXEEXT) kill_child$(EXEEXT) \ -- ksysent$(EXEEXT) list_sigaction_signum$(EXEEXT) \ -- localtime$(EXEEXT) looping_threads$(EXEEXT) \ -- mmsg-silent$(EXEEXT) mmsg_name-v$(EXEEXT) \ -+ ioprio--pidns-translation$(EXEEXT) is_linux_mips_n64$(EXEEXT) \ -+ kcmp-y--pidns-translation$(EXEEXT) kill_child$(EXEEXT) \ -+ kill--pidns-translation$(EXEEXT) ksysent$(EXEEXT) \ -+ list_sigaction_signum$(EXEEXT) localtime$(EXEEXT) \ -+ looping_threads$(EXEEXT) \ -+ migrate_pages--pidns-translation$(EXEEXT) mmsg-silent$(EXEEXT) \ -+ mmsg_name-v$(EXEEXT) move_pages--pidns-translation$(EXEEXT) \ - msg_control-v$(EXEEXT) net-accept-connect$(EXEEXT) \ -+ net-sockaddr--pidns-translation$(EXEEXT) \ - net-tpacket_stats-success$(EXEEXT) nlattr_ifla_xdp-y$(EXEEXT) \ -+ netlink_audit--pidns-translation$(EXEEXT) \ - netlink_inet_diag$(EXEEXT) netlink_netlink_diag$(EXEEXT) \ - netlink_unix_diag$(EXEEXT) nsyscalls$(EXEEXT) \ - nsyscalls-d$(EXEEXT) oldselect-P$(EXEEXT) \ - oldselect-efault-P$(EXEEXT) orphaned_process_group$(EXEEXT) \ - pc$(EXEEXT) perf_event_open_nonverbose$(EXEEXT) \ -- perf_event_open_unabbrev$(EXEEXT) poll-P$(EXEEXT) \ -- ppoll-P$(EXEEXT) ppoll-v$(EXEEXT) \ -+ perf_event_open_unabbrev$(EXEEXT) \ -+ pidfd_open--pidns-translation$(EXEEXT) \ -+ pidfd_send_signal--pidns-translation$(EXEEXT) \ -+ pidns-cache$(EXEEXT) poll-P$(EXEEXT) ppoll-P$(EXEEXT) \ -+ ppoll-v$(EXEEXT) prlimit64--pidns-translation$(EXEEXT) \ - prctl-seccomp-filter-v$(EXEEXT) prctl-seccomp-strict$(EXEEXT) \ - prctl-spec-inject$(EXEEXT) print_maxfd$(EXEEXT) \ -- print_ppid_tracerpid$(EXEEXT) qual_fault$(EXEEXT) \ -- qual_inject-error-signal$(EXEEXT) qual_inject-retval$(EXEEXT) \ -- qual_inject-signal$(EXEEXT) qual_signal$(EXEEXT) \ -- quotactl-success$(EXEEXT) quotactl-success-v$(EXEEXT) \ -- quotactl-v$(EXEEXT) quotactl-xfs-success$(EXEEXT) \ -- quotactl-xfs-success-v$(EXEEXT) quotactl-xfs-v$(EXEEXT) \ -- redirect-fds$(EXEEXT) restart_syscall$(EXEEXT) \ -- run_expect_termsig$(EXEEXT) scm_rights$(EXEEXT) \ -- seccomp-filter-v$(EXEEXT) seccomp-strict$(EXEEXT) \ -- select-P$(EXEEXT) set_ptracer_any$(EXEEXT) \ -- set_sigblock$(EXEEXT) set_sigign$(EXEEXT) \ -- setpgrp-exec$(EXEEXT) signal_receive$(EXEEXT) sleep$(EXEEXT) \ -+ print_ppid_tracerpid$(EXEEXT) \ -+ process_vm_readv--pidns-translation$(EXEEXT) \ -+ process_vm_writev--pidns-translation$(EXEEXT) \ -+ qual_fault$(EXEEXT) qual_inject-error-signal$(EXEEXT) \ -+ qual_inject-retval$(EXEEXT) qual_inject-signal$(EXEEXT) \ -+ qual_signal$(EXEEXT) quotactl-success$(EXEEXT) \ -+ quotactl-success-v$(EXEEXT) quotactl-v$(EXEEXT) \ -+ quotactl-xfs-success$(EXEEXT) quotactl-xfs-success-v$(EXEEXT) \ -+ quotactl-xfs-v$(EXEEXT) redirect-fds$(EXEEXT) \ -+ restart_syscall$(EXEEXT) \ -+ rt_sigqueueinfo--pidns-translation$(EXEEXT) \ -+ rt_tgsigqueueinfo--pidns-translation$(EXEEXT) \ -+ run_expect_termsig$(EXEEXT) \ -+ sched_xetaffinity--pidns-translation$(EXEEXT) \ -+ sched_xetattr--pidns-translation$(EXEEXT) \ -+ sched_xetparam--pidns-translation$(EXEEXT) \ -+ sched_xetscheduler--pidns-translation$(EXEEXT) \ -+ scm_rights$(EXEEXT) seccomp-filter-v$(EXEEXT) \ -+ seccomp-strict$(EXEEXT) select-P$(EXEEXT) \ -+ set_ptracer_any$(EXEEXT) set_sigblock$(EXEEXT) \ -+ set_sigign$(EXEEXT) setpgrp-exec$(EXEEXT) \ -+ signal_receive$(EXEEXT) \ -+ signal_receive--pidns-translation$(EXEEXT) sleep$(EXEEXT) \ - stack-fcall$(EXEEXT) stack-fcall-attach$(EXEEXT) \ - stack-fcall-mangled$(EXEEXT) status-none-threads$(EXEEXT) \ -- status-unfinished-threads$(EXEEXT) syslog-success$(EXEEXT) \ -+ status-unfinished-threads$(EXEEXT) \ -+ so_peercred--pidns-translation$(EXEEXT) \ -+ syslog-success$(EXEEXT) tgkill--pidns-translation$(EXEEXT) \ - threads-execve$(EXEEXT) \ - threads-execve--quiet-thread-execve$(EXEEXT) \ - threads-execve-q$(EXEEXT) threads-execve-qq$(EXEEXT) \ -- threads-execve-qqq$(EXEEXT) tracer_ppid_pgid_sid$(EXEEXT) \ -+ threads-execve-qqq$(EXEEXT) tkill--pidns-translation$(EXEEXT) \ -+ tracer_ppid_pgid_sid$(EXEEXT) trie_test$(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) -+ wait4-v$(EXEEXT) waitid-v$(EXEEXT) \ -+ xetpgid--pidns-translation$(EXEEXT) \ -+ xetpriority--pidns-translation$(EXEEXT) \ -+ xet_robust_list--pidns-translation$(EXEEXT) zeroargc$(EXEEXT) - @ENABLE_STACKTRACE_TRUE@@USE_DEMANGLE_TRUE@am__append_1 = strace-k-demangle.test - TESTS = $(GEN_TESTS) $(DECODER_TESTS) $(MISC_TESTS) $(am__EXEEXT_2) - subdir = tests-mx32 -@@ -545,7 +577,8 @@ - libtests_a-tail_alloc.$(OBJEXT) \ - libtests_a-test_printpath.$(OBJEXT) \ - libtests_a-test_printstrn.$(OBJEXT) \ -- libtests_a-test_ucopy.$(OBJEXT) libtests_a-tprintf.$(OBJEXT) -+ libtests_a-test_ucopy.$(OBJEXT) libtests_a-tprintf.$(OBJEXT) \ -+ libtests_a-xmalloc_for_tests.$(OBJEXT) - libtests_a_OBJECTS = $(am_libtests_a_OBJECTS) - _newselect_SOURCES = _newselect.c - _newselect_OBJECTS = _newselect.$(OBJEXT) -@@ -973,10 +1006,19 @@ - fcntl_OBJECTS = fcntl.$(OBJEXT) - fcntl_LDADD = $(LDADD) - fcntl_DEPENDENCIES = libtests.a -+fcntl__pidns_translation_SOURCES = fcntl--pidns-translation.c -+fcntl__pidns_translation_OBJECTS = fcntl--pidns-translation.$(OBJEXT) -+fcntl__pidns_translation_LDADD = $(LDADD) -+fcntl__pidns_translation_DEPENDENCIES = libtests.a - fcntl64_SOURCES = fcntl64.c - fcntl64_OBJECTS = fcntl64.$(OBJEXT) - fcntl64_LDADD = $(LDADD) - fcntl64_DEPENDENCIES = libtests.a -+fcntl64__pidns_translation_SOURCES = fcntl64--pidns-translation.c -+fcntl64__pidns_translation_OBJECTS = \ -+ fcntl64--pidns-translation.$(OBJEXT) -+fcntl64__pidns_translation_LDADD = $(LDADD) -+fcntl64__pidns_translation_DEPENDENCIES = libtests.a - fdatasync_SOURCES = fdatasync.c - fdatasync_OBJECTS = fdatasync.$(OBJEXT) - fdatasync_LDADD = $(LDADD) -@@ -1012,6 +1054,10 @@ - flock_OBJECTS = flock.$(OBJEXT) - flock_LDADD = $(LDADD) - flock_DEPENDENCIES = libtests.a -+fork__pidns_translation_SOURCES = fork--pidns-translation.c -+fork__pidns_translation_OBJECTS = fork--pidns-translation.$(OBJEXT) -+fork__pidns_translation_LDADD = $(LDADD) -+fork__pidns_translation_DEPENDENCIES = libtests.a - fork_f_SOURCES = fork-f.c - fork_f_OBJECTS = fork-f.$(OBJEXT) - fork_f_LDADD = $(LDADD) -@@ -1180,10 +1226,20 @@ - getpgrp_OBJECTS = getpgrp.$(OBJEXT) - getpgrp_LDADD = $(LDADD) - getpgrp_DEPENDENCIES = libtests.a -+getpgrp__pidns_translation_SOURCES = getpgrp--pidns-translation.c -+getpgrp__pidns_translation_OBJECTS = \ -+ getpgrp--pidns-translation.$(OBJEXT) -+getpgrp__pidns_translation_LDADD = $(LDADD) -+getpgrp__pidns_translation_DEPENDENCIES = libtests.a - getpid_SOURCES = getpid.c - getpid_OBJECTS = getpid.$(OBJEXT) - getpid_LDADD = $(LDADD) - getpid_DEPENDENCIES = libtests.a -+getpid__pidns_translation_SOURCES = getpid--pidns-translation.c -+getpid__pidns_translation_OBJECTS = \ -+ getpid--pidns-translation.$(OBJEXT) -+getpid__pidns_translation_LDADD = $(LDADD) -+getpid__pidns_translation_DEPENDENCIES = libtests.a - getppid_SOURCES = getppid.c - getppid_OBJECTS = getppid.$(OBJEXT) - getppid_LDADD = $(LDADD) -@@ -1220,6 +1276,11 @@ - getsid_OBJECTS = getsid.$(OBJEXT) - getsid_LDADD = $(LDADD) - getsid_DEPENDENCIES = libtests.a -+getsid__pidns_translation_SOURCES = getsid--pidns-translation.c -+getsid__pidns_translation_OBJECTS = \ -+ getsid--pidns-translation.$(OBJEXT) -+getsid__pidns_translation_LDADD = $(LDADD) -+getsid__pidns_translation_DEPENDENCIES = libtests.a - getsockname_SOURCES = getsockname.c - getsockname_OBJECTS = getsockname.$(OBJEXT) - getsockname_LDADD = $(LDADD) -@@ -1228,6 +1289,11 @@ - gettid_OBJECTS = gettid.$(OBJEXT) - gettid_LDADD = $(LDADD) - gettid_DEPENDENCIES = libtests.a -+gettid__pidns_translation_SOURCES = gettid--pidns-translation.c -+gettid__pidns_translation_OBJECTS = \ -+ gettid--pidns-translation.$(OBJEXT) -+gettid__pidns_translation_LDADD = $(LDADD) -+gettid__pidns_translation_DEPENDENCIES = libtests.a - getuid_SOURCES = getuid.c - getuid_OBJECTS = getuid.$(OBJEXT) - getuid_LDADD = $(LDADD) -@@ -1308,6 +1374,12 @@ - ioctl_block_OBJECTS = ioctl_block.$(OBJEXT) - ioctl_block_LDADD = $(LDADD) - ioctl_block_DEPENDENCIES = libtests.a -+ioctl_block__pidns_translation_SOURCES = \ -+ ioctl_block--pidns-translation.c -+ioctl_block__pidns_translation_OBJECTS = \ -+ ioctl_block--pidns-translation.$(OBJEXT) -+ioctl_block__pidns_translation_LDADD = $(LDADD) -+ioctl_block__pidns_translation_DEPENDENCIES = libtests.a - ioctl_dm_SOURCES = ioctl_dm.c - ioctl_dm_OBJECTS = ioctl_dm.$(OBJEXT) - ioctl_dm_LDADD = $(LDADD) -@@ -1628,6 +1700,11 @@ - ioprio_OBJECTS = ioprio.$(OBJEXT) - ioprio_LDADD = $(LDADD) - ioprio_DEPENDENCIES = libtests.a -+ioprio__pidns_translation_SOURCES = ioprio--pidns-translation.c -+ioprio__pidns_translation_OBJECTS = \ -+ ioprio--pidns-translation.$(OBJEXT) -+ioprio__pidns_translation_LDADD = $(LDADD) -+ioprio__pidns_translation_DEPENDENCIES = libtests.a - ioprio_Xabbrev_SOURCES = ioprio-Xabbrev.c - ioprio_Xabbrev_OBJECTS = ioprio-Xabbrev.$(OBJEXT) - ioprio_Xabbrev_LDADD = $(LDADD) -@@ -1724,6 +1801,11 @@ - kcmp_y_OBJECTS = kcmp-y.$(OBJEXT) - kcmp_y_LDADD = $(LDADD) - kcmp_y_DEPENDENCIES = libtests.a -+kcmp_y__pidns_translation_SOURCES = kcmp-y--pidns-translation.c -+kcmp_y__pidns_translation_OBJECTS = \ -+ kcmp-y--pidns-translation.$(OBJEXT) -+kcmp_y__pidns_translation_LDADD = $(LDADD) -+kcmp_y__pidns_translation_DEPENDENCIES = libtests.a - kern_features_SOURCES = kern_features.c - kern_features_OBJECTS = kern_features.$(OBJEXT) - kern_features_LDADD = $(LDADD) -@@ -1772,6 +1854,10 @@ - kill_OBJECTS = kill.$(OBJEXT) - kill_LDADD = $(LDADD) - kill_DEPENDENCIES = libtests.a -+kill__pidns_translation_SOURCES = kill--pidns-translation.c -+kill__pidns_translation_OBJECTS = kill--pidns-translation.$(OBJEXT) -+kill__pidns_translation_LDADD = $(LDADD) -+kill__pidns_translation_DEPENDENCIES = libtests.a - kill_child_SOURCES = kill_child.c - kill_child_OBJECTS = kill_child.$(OBJEXT) - kill_child_LDADD = $(LDADD) -@@ -1878,6 +1964,12 @@ - migrate_pages_OBJECTS = migrate_pages.$(OBJEXT) - migrate_pages_LDADD = $(LDADD) - migrate_pages_DEPENDENCIES = libtests.a -+migrate_pages__pidns_translation_SOURCES = \ -+ migrate_pages--pidns-translation.c -+migrate_pages__pidns_translation_OBJECTS = \ -+ migrate_pages--pidns-translation.$(OBJEXT) -+migrate_pages__pidns_translation_LDADD = $(LDADD) -+migrate_pages__pidns_translation_DEPENDENCIES = libtests.a - mincore_SOURCES = mincore.c - mincore_OBJECTS = mincore.$(OBJEXT) - mincore_LDADD = $(LDADD) -@@ -1990,6 +2082,12 @@ - move_pages_OBJECTS = move_pages.$(OBJEXT) - move_pages_LDADD = $(LDADD) - move_pages_DEPENDENCIES = libtests.a -+move_pages__pidns_translation_SOURCES = \ -+ move_pages--pidns-translation.c -+move_pages__pidns_translation_OBJECTS = \ -+ move_pages--pidns-translation.$(OBJEXT) -+move_pages__pidns_translation_LDADD = $(LDADD) -+move_pages__pidns_translation_DEPENDENCIES = libtests.a - move_pages_Xabbrev_SOURCES = move_pages-Xabbrev.c - move_pages_Xabbrev_OBJECTS = move_pages-Xabbrev.$(OBJEXT) - move_pages_Xabbrev_LDADD = $(LDADD) -@@ -2086,6 +2184,12 @@ - net_sockaddr_OBJECTS = net-sockaddr.$(OBJEXT) - net_sockaddr_LDADD = $(LDADD) - net_sockaddr_DEPENDENCIES = libtests.a -+net_sockaddr__pidns_translation_SOURCES = \ -+ net-sockaddr--pidns-translation.c -+net_sockaddr__pidns_translation_OBJECTS = \ -+ net-sockaddr--pidns-translation.$(OBJEXT) -+net_sockaddr__pidns_translation_LDADD = $(LDADD) -+net_sockaddr__pidns_translation_DEPENDENCIES = libtests.a - net_tpacket_req_SOURCES = net-tpacket_req.c - net_tpacket_req_OBJECTS = net-tpacket_req.$(OBJEXT) - net_tpacket_req_LDADD = $(LDADD) -@@ -2123,6 +2227,12 @@ - netlink_audit_OBJECTS = netlink_audit.$(OBJEXT) - netlink_audit_LDADD = $(LDADD) - netlink_audit_DEPENDENCIES = libtests.a -+netlink_audit__pidns_translation_SOURCES = \ -+ netlink_audit--pidns-translation.c -+netlink_audit__pidns_translation_OBJECTS = \ -+ netlink_audit--pidns-translation.$(OBJEXT) -+netlink_audit__pidns_translation_LDADD = $(LDADD) -+netlink_audit__pidns_translation_DEPENDENCIES = libtests.a - netlink_crypto_SOURCES = netlink_crypto.c - netlink_crypto_OBJECTS = netlink_crypto.$(OBJEXT) - netlink_crypto_LDADD = $(LDADD) -@@ -2543,6 +2653,12 @@ - pidfd_open--decode-fd-socket.$(OBJEXT) - pidfd_open__decode_fd_socket_LDADD = $(LDADD) - pidfd_open__decode_fd_socket_DEPENDENCIES = libtests.a -+pidfd_open__pidns_translation_SOURCES = \ -+ pidfd_open--pidns-translation.c -+pidfd_open__pidns_translation_OBJECTS = \ -+ pidfd_open--pidns-translation.$(OBJEXT) -+pidfd_open__pidns_translation_LDADD = $(LDADD) -+pidfd_open__pidns_translation_DEPENDENCIES = libtests.a - pidfd_open_P_SOURCES = pidfd_open-P.c - pidfd_open_P_OBJECTS = pidfd_open-P.$(OBJEXT) - pidfd_open_P_LDADD = $(LDADD) -@@ -2559,6 +2675,16 @@ - pidfd_send_signal_OBJECTS = pidfd_send_signal.$(OBJEXT) - pidfd_send_signal_LDADD = $(LDADD) - pidfd_send_signal_DEPENDENCIES = libtests.a -+pidfd_send_signal__pidns_translation_SOURCES = \ -+ pidfd_send_signal--pidns-translation.c -+pidfd_send_signal__pidns_translation_OBJECTS = \ -+ pidfd_send_signal--pidns-translation.$(OBJEXT) -+pidfd_send_signal__pidns_translation_LDADD = $(LDADD) -+pidfd_send_signal__pidns_translation_DEPENDENCIES = libtests.a -+pidns_cache_SOURCES = pidns-cache.c -+pidns_cache_OBJECTS = pidns-cache.$(OBJEXT) -+pidns_cache_LDADD = $(LDADD) -+pidns_cache_DEPENDENCIES = libtests.a - pipe_SOURCES = pipe.c - pipe_OBJECTS = pipe.$(OBJEXT) - pipe_LDADD = $(LDADD) -@@ -2717,14 +2843,31 @@ - prlimit64_OBJECTS = prlimit64.$(OBJEXT) - prlimit64_LDADD = $(LDADD) - prlimit64_DEPENDENCIES = libtests.a -+prlimit64__pidns_translation_SOURCES = prlimit64--pidns-translation.c -+prlimit64__pidns_translation_OBJECTS = \ -+ prlimit64--pidns-translation.$(OBJEXT) -+prlimit64__pidns_translation_LDADD = $(LDADD) -+prlimit64__pidns_translation_DEPENDENCIES = libtests.a - process_vm_readv_SOURCES = process_vm_readv.c - process_vm_readv_OBJECTS = process_vm_readv.$(OBJEXT) - process_vm_readv_LDADD = $(LDADD) - process_vm_readv_DEPENDENCIES = libtests.a -+process_vm_readv__pidns_translation_SOURCES = \ -+ process_vm_readv--pidns-translation.c -+process_vm_readv__pidns_translation_OBJECTS = \ -+ process_vm_readv--pidns-translation.$(OBJEXT) -+process_vm_readv__pidns_translation_LDADD = $(LDADD) -+process_vm_readv__pidns_translation_DEPENDENCIES = libtests.a - process_vm_writev_SOURCES = process_vm_writev.c - process_vm_writev_OBJECTS = process_vm_writev.$(OBJEXT) - process_vm_writev_LDADD = $(LDADD) - process_vm_writev_DEPENDENCIES = libtests.a -+process_vm_writev__pidns_translation_SOURCES = \ -+ process_vm_writev--pidns-translation.c -+process_vm_writev__pidns_translation_OBJECTS = \ -+ process_vm_writev--pidns-translation.$(OBJEXT) -+process_vm_writev__pidns_translation_LDADD = $(LDADD) -+process_vm_writev__pidns_translation_DEPENDENCIES = libtests.a - pselect6_SOURCES = pselect6.c - pselect6_OBJECTS = pselect6.$(OBJEXT) - pselect6_LDADD = $(LDADD) -@@ -2918,6 +3061,12 @@ - rt_sigqueueinfo_OBJECTS = rt_sigqueueinfo.$(OBJEXT) - rt_sigqueueinfo_LDADD = $(LDADD) - rt_sigqueueinfo_DEPENDENCIES = libtests.a -+rt_sigqueueinfo__pidns_translation_SOURCES = \ -+ rt_sigqueueinfo--pidns-translation.c -+rt_sigqueueinfo__pidns_translation_OBJECTS = \ -+ rt_sigqueueinfo--pidns-translation.$(OBJEXT) -+rt_sigqueueinfo__pidns_translation_LDADD = $(LDADD) -+rt_sigqueueinfo__pidns_translation_DEPENDENCIES = libtests.a - rt_sigreturn_SOURCES = rt_sigreturn.c - rt_sigreturn_OBJECTS = rt_sigreturn.$(OBJEXT) - rt_sigreturn_LDADD = $(LDADD) -@@ -2934,6 +3083,12 @@ - rt_tgsigqueueinfo_OBJECTS = rt_tgsigqueueinfo.$(OBJEXT) - rt_tgsigqueueinfo_LDADD = $(LDADD) - rt_tgsigqueueinfo_DEPENDENCIES = libtests.a -+rt_tgsigqueueinfo__pidns_translation_SOURCES = \ -+ rt_tgsigqueueinfo--pidns-translation.c -+rt_tgsigqueueinfo__pidns_translation_OBJECTS = \ -+ rt_tgsigqueueinfo--pidns-translation.$(OBJEXT) -+rt_tgsigqueueinfo__pidns_translation_LDADD = $(LDADD) -+rt_tgsigqueueinfo__pidns_translation_DEPENDENCIES = libtests.a - run_expect_termsig_SOURCES = run_expect_termsig.c - run_expect_termsig_OBJECTS = run_expect_termsig.$(OBJEXT) - run_expect_termsig_LDADD = $(LDADD) -@@ -2974,18 +3129,42 @@ - sched_xetaffinity_OBJECTS = sched_xetaffinity.$(OBJEXT) - sched_xetaffinity_LDADD = $(LDADD) - sched_xetaffinity_DEPENDENCIES = libtests.a -+sched_xetaffinity__pidns_translation_SOURCES = \ -+ sched_xetaffinity--pidns-translation.c -+sched_xetaffinity__pidns_translation_OBJECTS = \ -+ sched_xetaffinity--pidns-translation.$(OBJEXT) -+sched_xetaffinity__pidns_translation_LDADD = $(LDADD) -+sched_xetaffinity__pidns_translation_DEPENDENCIES = libtests.a - sched_xetattr_SOURCES = sched_xetattr.c - sched_xetattr_OBJECTS = sched_xetattr.$(OBJEXT) - sched_xetattr_LDADD = $(LDADD) - sched_xetattr_DEPENDENCIES = libtests.a -+sched_xetattr__pidns_translation_SOURCES = \ -+ sched_xetattr--pidns-translation.c -+sched_xetattr__pidns_translation_OBJECTS = \ -+ sched_xetattr--pidns-translation.$(OBJEXT) -+sched_xetattr__pidns_translation_LDADD = $(LDADD) -+sched_xetattr__pidns_translation_DEPENDENCIES = libtests.a - sched_xetparam_SOURCES = sched_xetparam.c - sched_xetparam_OBJECTS = sched_xetparam.$(OBJEXT) - sched_xetparam_LDADD = $(LDADD) - sched_xetparam_DEPENDENCIES = libtests.a -+sched_xetparam__pidns_translation_SOURCES = \ -+ sched_xetparam--pidns-translation.c -+sched_xetparam__pidns_translation_OBJECTS = \ -+ sched_xetparam--pidns-translation.$(OBJEXT) -+sched_xetparam__pidns_translation_LDADD = $(LDADD) -+sched_xetparam__pidns_translation_DEPENDENCIES = libtests.a - sched_xetscheduler_SOURCES = sched_xetscheduler.c - sched_xetscheduler_OBJECTS = sched_xetscheduler.$(OBJEXT) - sched_xetscheduler_LDADD = $(LDADD) - sched_xetscheduler_DEPENDENCIES = libtests.a -+sched_xetscheduler__pidns_translation_SOURCES = \ -+ sched_xetscheduler--pidns-translation.c -+sched_xetscheduler__pidns_translation_OBJECTS = \ -+ sched_xetscheduler--pidns-translation.$(OBJEXT) -+sched_xetscheduler__pidns_translation_LDADD = $(LDADD) -+sched_xetscheduler__pidns_translation_DEPENDENCIES = libtests.a - sched_yield_SOURCES = sched_yield.c - sched_yield_OBJECTS = sched_yield.$(OBJEXT) - sched_yield_LDADD = $(LDADD) -@@ -3198,6 +3377,12 @@ - signal_receive_OBJECTS = signal_receive.$(OBJEXT) - signal_receive_LDADD = $(LDADD) - signal_receive_DEPENDENCIES = libtests.a -+signal_receive__pidns_translation_SOURCES = \ -+ signal_receive--pidns-translation.c -+signal_receive__pidns_translation_OBJECTS = \ -+ signal_receive--pidns-translation.$(OBJEXT) -+signal_receive__pidns_translation_LDADD = $(LDADD) -+signal_receive__pidns_translation_DEPENDENCIES = libtests.a - signalfd4_SOURCES = signalfd4.c - signalfd4_OBJECTS = signalfd4.$(OBJEXT) - signalfd4_LDADD = $(LDADD) -@@ -3234,6 +3419,12 @@ - so_peercred_OBJECTS = so_peercred.$(OBJEXT) - so_peercred_LDADD = $(LDADD) - so_peercred_DEPENDENCIES = libtests.a -+so_peercred__pidns_translation_SOURCES = \ -+ so_peercred--pidns-translation.c -+so_peercred__pidns_translation_OBJECTS = \ -+ so_peercred--pidns-translation.$(OBJEXT) -+so_peercred__pidns_translation_LDADD = $(LDADD) -+so_peercred__pidns_translation_DEPENDENCIES = libtests.a - so_peercred_Xabbrev_SOURCES = so_peercred-Xabbrev.c - so_peercred_Xabbrev_OBJECTS = so_peercred-Xabbrev.$(OBJEXT) - so_peercred_Xabbrev_LDADD = $(LDADD) -@@ -3448,6 +3639,11 @@ - tgkill_OBJECTS = tgkill.$(OBJEXT) - tgkill_LDADD = $(LDADD) - tgkill_DEPENDENCIES = libtests.a -+tgkill__pidns_translation_SOURCES = tgkill--pidns-translation.c -+tgkill__pidns_translation_OBJECTS = \ -+ tgkill--pidns-translation.$(OBJEXT) -+tgkill__pidns_translation_LDADD = $(LDADD) -+tgkill__pidns_translation_DEPENDENCIES = libtests.a - threads_execve_SOURCES = threads-execve.c - threads_execve_OBJECTS = threads-execve.$(OBJEXT) - threads_execve_DEPENDENCIES = $(am__DEPENDENCIES_1) $(LDADD) -@@ -3493,10 +3689,20 @@ - tkill_OBJECTS = tkill.$(OBJEXT) - tkill_LDADD = $(LDADD) - tkill_DEPENDENCIES = libtests.a -+tkill__pidns_translation_SOURCES = tkill--pidns-translation.c -+tkill__pidns_translation_OBJECTS = tkill--pidns-translation.$(OBJEXT) -+tkill__pidns_translation_LDADD = $(LDADD) -+tkill__pidns_translation_DEPENDENCIES = libtests.a - tracer_ppid_pgid_sid_SOURCES = tracer_ppid_pgid_sid.c - tracer_ppid_pgid_sid_OBJECTS = tracer_ppid_pgid_sid.$(OBJEXT) - tracer_ppid_pgid_sid_LDADD = $(LDADD) - tracer_ppid_pgid_sid_DEPENDENCIES = libtests.a -+am_trie_test_OBJECTS = trie_test-trie_test.$(OBJEXT) \ -+ trie_test-trie_for_tests.$(OBJEXT) -+trie_test_OBJECTS = $(am_trie_test_OBJECTS) -+trie_test_DEPENDENCIES = $(LDADD) $(am__DEPENDENCIES_1) -+trie_test_LINK = $(CCLD) $(trie_test_CFLAGS) $(CFLAGS) $(AM_LDFLAGS) \ -+ $(LDFLAGS) -o $@ - truncate_SOURCES = truncate.c - truncate_OBJECTS = truncate.$(OBJEXT) - truncate_LDADD = $(LDADD) -@@ -3658,6 +3864,12 @@ - xet_robust_list_OBJECTS = xet_robust_list.$(OBJEXT) - xet_robust_list_LDADD = $(LDADD) - xet_robust_list_DEPENDENCIES = libtests.a -+xet_robust_list__pidns_translation_SOURCES = \ -+ xet_robust_list--pidns-translation.c -+xet_robust_list__pidns_translation_OBJECTS = \ -+ xet_robust_list--pidns-translation.$(OBJEXT) -+xet_robust_list__pidns_translation_LDADD = $(LDADD) -+xet_robust_list__pidns_translation_DEPENDENCIES = libtests.a - xet_thread_area_x86_SOURCES = xet_thread_area_x86.c - xet_thread_area_x86_OBJECTS = xet_thread_area_x86.$(OBJEXT) - xet_thread_area_x86_LDADD = $(LDADD) -@@ -3670,10 +3882,21 @@ - xetpgid_OBJECTS = xetpgid.$(OBJEXT) - xetpgid_LDADD = $(LDADD) - xetpgid_DEPENDENCIES = libtests.a -+xetpgid__pidns_translation_SOURCES = xetpgid--pidns-translation.c -+xetpgid__pidns_translation_OBJECTS = \ -+ xetpgid--pidns-translation.$(OBJEXT) -+xetpgid__pidns_translation_LDADD = $(LDADD) -+xetpgid__pidns_translation_DEPENDENCIES = libtests.a - xetpriority_SOURCES = xetpriority.c - xetpriority_OBJECTS = xetpriority.$(OBJEXT) - xetpriority_LDADD = $(LDADD) - xetpriority_DEPENDENCIES = libtests.a -+xetpriority__pidns_translation_SOURCES = \ -+ xetpriority--pidns-translation.c -+xetpriority__pidns_translation_OBJECTS = \ -+ xetpriority--pidns-translation.$(OBJEXT) -+xetpriority__pidns_translation_LDADD = $(LDADD) -+xetpriority__pidns_translation_DEPENDENCIES = libtests.a - xettimeofday_SOURCES = xettimeofday.c - xettimeofday_OBJECTS = xettimeofday.$(OBJEXT) - xettimeofday_LDADD = $(LDADD) -@@ -3759,13 +3982,15 @@ - ./$(DEPDIR)/fanotify_mark.Po ./$(DEPDIR)/fchdir.Po \ - ./$(DEPDIR)/fchmod.Po ./$(DEPDIR)/fchmodat.Po \ - ./$(DEPDIR)/fchown.Po ./$(DEPDIR)/fchown32.Po \ -- ./$(DEPDIR)/fchownat.Po ./$(DEPDIR)/fcntl.Po \ -- ./$(DEPDIR)/fcntl64.Po ./$(DEPDIR)/fdatasync.Po \ -+ ./$(DEPDIR)/fchownat.Po \ -+ ./$(DEPDIR)/fcntl--pidns-translation.Po ./$(DEPDIR)/fcntl.Po \ -+ ./$(DEPDIR)/fcntl64--pidns-translation.Po ./$(DEPDIR)/fcntl64.Po \ -+ ./$(DEPDIR)/fdatasync.Po \ - ./$(DEPDIR)/fflush.Po ./$(DEPDIR)/file_handle.Po \ - ./$(DEPDIR)/file_ioctl.Po ./$(DEPDIR)/filter-unavailable.Po \ - ./$(DEPDIR)/filter_seccomp-flag.Po \ - ./$(DEPDIR)/filter_seccomp-perf.Po ./$(DEPDIR)/finit_module.Po \ -- ./$(DEPDIR)/flock.Po ./$(DEPDIR)/fork-f.Po \ -+ ./$(DEPDIR)/flock.Po ./$(DEPDIR)/fork--pidns-translation.Po ./$(DEPDIR)/fork-f.Po \ - ./$(DEPDIR)/fsconfig-P.Po ./$(DEPDIR)/fsconfig.Po \ - ./$(DEPDIR)/fsmount.Po ./$(DEPDIR)/fsopen.Po \ - ./$(DEPDIR)/fspick-P.Po ./$(DEPDIR)/fspick.Po \ -@@ -3786,13 +4011,14 @@ - ./$(DEPDIR)/geteuid32.Po ./$(DEPDIR)/getgid.Po \ - ./$(DEPDIR)/getgid32.Po ./$(DEPDIR)/getgroups.Po \ - ./$(DEPDIR)/getgroups32.Po ./$(DEPDIR)/getpeername.Po \ -- ./$(DEPDIR)/getpgrp.Po ./$(DEPDIR)/getpid.Po \ -+ ./$(DEPDIR)/getpgrp--pidns-translation.Po ./$(DEPDIR)/getpgrp.Po \ -+ ./$(DEPDIR)/getpid--pidns-translation.Po ./$(DEPDIR)/getpid.Po \ - ./$(DEPDIR)/getppid.Po ./$(DEPDIR)/getrandom.Po \ - ./$(DEPDIR)/getresgid.Po ./$(DEPDIR)/getresgid32.Po \ - ./$(DEPDIR)/getresuid.Po ./$(DEPDIR)/getresuid32.Po \ - ./$(DEPDIR)/getrlimit.Po ./$(DEPDIR)/getrusage.Po \ -- ./$(DEPDIR)/getsid.Po ./$(DEPDIR)/getsockname.Po \ -- ./$(DEPDIR)/gettid.Po ./$(DEPDIR)/getuid.Po \ -+ ./$(DEPDIR)/getsid--pidns-translation.Po ./$(DEPDIR)/getsid.Po ./$(DEPDIR)/getsockname.Po \ -+ ./$(DEPDIR)/gettid--pidns-translation.Po ./$(DEPDIR)/gettid.Po ./$(DEPDIR)/getuid.Po \ - ./$(DEPDIR)/getuid32.Po ./$(DEPDIR)/getxgid.Po \ - ./$(DEPDIR)/getxpid.Po ./$(DEPDIR)/getxuid.Po \ - ./$(DEPDIR)/group_req.Po ./$(DEPDIR)/inet-cmsg.Po \ -@@ -3802,7 +4028,7 @@ - ./$(DEPDIR)/inotify_init1.Po ./$(DEPDIR)/int_0x80.Po \ - ./$(DEPDIR)/io_uring_enter.Po ./$(DEPDIR)/io_uring_register.Po \ - ./$(DEPDIR)/io_uring_setup.Po ./$(DEPDIR)/ioctl.Po \ -- ./$(DEPDIR)/ioctl_block.Po ./$(DEPDIR)/ioctl_dm-v.Po \ -+ ./$(DEPDIR)/ioctl_block--pidns-translation.Po ./$(DEPDIR)/ioctl_block.Po ./$(DEPDIR)/ioctl_dm-v.Po \ - ./$(DEPDIR)/ioctl_dm.Po ./$(DEPDIR)/ioctl_evdev-Xabbrev.Po \ - ./$(DEPDIR)/ioctl_evdev-Xraw.Po \ - ./$(DEPDIR)/ioctl_evdev-Xverbose.Po \ -@@ -3861,7 +4087,7 @@ - ./$(DEPDIR)/ioctl_v4l2-v-Xverbose.Po \ - ./$(DEPDIR)/ioctl_v4l2-v.Po ./$(DEPDIR)/ioctl_v4l2.Po \ - ./$(DEPDIR)/ioctl_watchdog.Po ./$(DEPDIR)/ioperm.Po \ -- ./$(DEPDIR)/iopl.Po ./$(DEPDIR)/ioprio-Xabbrev.Po \ -+ ./$(DEPDIR)/iopl.Po ./$(DEPDIR)/ioprio--pidns-translation.Po ./$(DEPDIR)/ioprio-Xabbrev.Po \ - ./$(DEPDIR)/ioprio-Xraw.Po ./$(DEPDIR)/ioprio-Xverbose.Po \ - ./$(DEPDIR)/ioprio.Po ./$(DEPDIR)/ip_mreq.Po \ - ./$(DEPDIR)/ipc.Po ./$(DEPDIR)/ipc_msg-Xabbrev.Po \ -@@ -3873,15 +4099,15 @@ - ./$(DEPDIR)/ipc_sem-Xverbose.Po ./$(DEPDIR)/ipc_sem.Po \ - ./$(DEPDIR)/ipc_shm-Xabbrev.Po ./$(DEPDIR)/ipc_shm-Xraw.Po \ - ./$(DEPDIR)/ipc_shm-Xverbose.Po ./$(DEPDIR)/ipc_shm.Po \ -- ./$(DEPDIR)/is_linux_mips_n64.Po ./$(DEPDIR)/kcmp-y.Po \ -- ./$(DEPDIR)/kcmp.Po ./$(DEPDIR)/kern_features.Po \ -+ ./$(DEPDIR)/is_linux_mips_n64.Po ./$(DEPDIR)/kcmp-y--pidns-translation.Po \ -+ ./$(DEPDIR)/kcmp-y.Po ./$(DEPDIR)/kcmp.Po ./$(DEPDIR)/kern_features.Po \ - ./$(DEPDIR)/kernel_version-Xabbrev.Po \ - ./$(DEPDIR)/kernel_version-Xraw.Po \ - ./$(DEPDIR)/kernel_version-Xverbose.Po \ - ./$(DEPDIR)/kernel_version.Po ./$(DEPDIR)/kexec_file_load.Po \ - ./$(DEPDIR)/kexec_load.Po ./$(DEPDIR)/keyctl-Xabbrev.Po \ - ./$(DEPDIR)/keyctl-Xraw.Po ./$(DEPDIR)/keyctl-Xverbose.Po \ -- ./$(DEPDIR)/keyctl.Po ./$(DEPDIR)/kill.Po \ -+ ./$(DEPDIR)/keyctl.Po ./$(DEPDIR)/kill--pidns-translation.Po ./$(DEPDIR)/kill.Po \ - ./$(DEPDIR)/kill_child.Po ./$(DEPDIR)/ksysent.Po \ - ./$(DEPDIR)/lchown.Po ./$(DEPDIR)/lchown32.Po \ - ./$(DEPDIR)/libtests_a-create_nl_socket.Po \ -@@ -3915,7 +4141,8 @@ - ./$(DEPDIR)/libtests_a-test_printpath.Po \ - ./$(DEPDIR)/libtests_a-test_printstrn.Po \ - ./$(DEPDIR)/libtests_a-test_ucopy.Po \ -- ./$(DEPDIR)/libtests_a-tprintf.Po ./$(DEPDIR)/link.Po \ -+ ./$(DEPDIR)/libtests_a-tprintf.Po \ -+ ./$(DEPDIR)/libtests_a-xmalloc_for_tests.Po ./$(DEPDIR)/link.Po \ - ./$(DEPDIR)/linkat.Po ./$(DEPDIR)/list_sigaction_signum.Po \ - ./$(DEPDIR)/llseek.Po ./$(DEPDIR)/localtime.Po \ - ./$(DEPDIR)/lookup_dcookie.Po ./$(DEPDIR)/looping_threads.Po \ -@@ -3928,7 +4155,9 @@ - ./$(DEPDIR)/membarrier.Po ./$(DEPDIR)/memfd_create-Xabbrev.Po \ - ./$(DEPDIR)/memfd_create-Xraw.Po \ - ./$(DEPDIR)/memfd_create-Xverbose.Po \ -- ./$(DEPDIR)/memfd_create.Po ./$(DEPDIR)/migrate_pages.Po \ -+ ./$(DEPDIR)/memfd_create.Po \ -+ ./$(DEPDIR)/migrate_pages--pidns-translation.Po \ -+ ./$(DEPDIR)/migrate_pages.Po \ - ./$(DEPDIR)/mincore.Po ./$(DEPDIR)/mkdir.Po \ - ./$(DEPDIR)/mkdirat.Po ./$(DEPDIR)/mknod.Po \ - ./$(DEPDIR)/mknodat.Po ./$(DEPDIR)/mlock.Po \ -@@ -3944,7 +4173,7 @@ - ./$(DEPDIR)/modify_ldt.Po ./$(DEPDIR)/mount-Xabbrev.Po \ - ./$(DEPDIR)/mount-Xraw.Po ./$(DEPDIR)/mount-Xverbose.Po \ - ./$(DEPDIR)/mount.Po ./$(DEPDIR)/move_mount-P.Po \ -- ./$(DEPDIR)/move_mount.Po ./$(DEPDIR)/move_pages-Xabbrev.Po \ -+ ./$(DEPDIR)/move_mount.Po ./$(DEPDIR)/move_pages--pidns-translation.Po ./$(DEPDIR)/move_pages-Xabbrev.Po \ - ./$(DEPDIR)/move_pages-Xraw.Po \ - ./$(DEPDIR)/move_pages-Xverbose.Po ./$(DEPDIR)/move_pages.Po \ - ./$(DEPDIR)/mq.Po ./$(DEPDIR)/mq_sendrecv-read.Po \ -@@ -3961,12 +4190,13 @@ - ./$(DEPDIR)/net-packet_mreq-Xabbrev.Po \ - ./$(DEPDIR)/net-packet_mreq-Xraw.Po \ - ./$(DEPDIR)/net-packet_mreq-Xverbose.Po \ -- ./$(DEPDIR)/net-packet_mreq.Po ./$(DEPDIR)/net-sockaddr.Po \ -+ ./$(DEPDIR)/net-packet_mreq.Po ./$(DEPDIR)/net-sockaddr--pidns-translation.Po ./$(DEPDIR)/net-sockaddr.Po \ - ./$(DEPDIR)/net-tpacket_req.Po \ - ./$(DEPDIR)/net-tpacket_stats-success.Po \ - ./$(DEPDIR)/net-tpacket_stats.Po ./$(DEPDIR)/net-y-unix.Po \ - ./$(DEPDIR)/net-yy-inet.Po ./$(DEPDIR)/net-yy-inet6.Po \ - ./$(DEPDIR)/net-yy-netlink.Po ./$(DEPDIR)/net-yy-unix.Po \ -+ ./$(DEPDIR)/netlink_audit--pidns-translation.Po \ - ./$(DEPDIR)/netlink_audit.Po ./$(DEPDIR)/netlink_crypto.Po \ - ./$(DEPDIR)/netlink_generic.Po \ - ./$(DEPDIR)/netlink_inet_diag.Po \ -@@ -4043,9 +4273,11 @@ - ./$(DEPDIR)/pidfd_open--decode-fd-path.Po \ - ./$(DEPDIR)/pidfd_open--decode-fd-pidfd.Po \ - ./$(DEPDIR)/pidfd_open--decode-fd-socket.Po \ -+ ./$(DEPDIR)/pidfd_open--pidns-translation.Po \ - ./$(DEPDIR)/pidfd_open-P.Po ./$(DEPDIR)/pidfd_open-y.Po \ - ./$(DEPDIR)/pidfd_open-yy.Po ./$(DEPDIR)/pidfd_open.Po \ -- ./$(DEPDIR)/pidfd_send_signal.Po ./$(DEPDIR)/pipe.Po \ -+ ./$(DEPDIR)/pidfd_send_signal--pidns-translation.Po \ -+ ./$(DEPDIR)/pidfd_send_signal.Po ./$(DEPDIR)/pidns-cache.Po ./$(DEPDIR)/pipe.Po \ - ./$(DEPDIR)/pipe2.Po ./$(DEPDIR)/pkey_alloc.Po \ - ./$(DEPDIR)/pkey_free.Po ./$(DEPDIR)/pkey_mprotect.Po \ - ./$(DEPDIR)/poll-P.Po ./$(DEPDIR)/poll.Po \ -@@ -4070,8 +4302,10 @@ - ./$(DEPDIR)/printsignal-Xverbose.Po ./$(DEPDIR)/printstr.Po \ - ./$(DEPDIR)/printstrn-umoven-peekdata.Po \ - ./$(DEPDIR)/printstrn-umoven-undumpable.Po \ -- ./$(DEPDIR)/printstrn-umoven.Po ./$(DEPDIR)/prlimit64.Po \ -+ ./$(DEPDIR)/printstrn-umoven.Po ./$(DEPDIR)/prlimit64--pidns-translation.Po ./$(DEPDIR)/prlimit64.Po \ -+ ./$(DEPDIR)/process_vm_readv--pidns-translation.Po \ - ./$(DEPDIR)/process_vm_readv.Po \ -+ ./$(DEPDIR)/process_vm_writev--pidns-translation.Po \ - ./$(DEPDIR)/process_vm_writev.Po ./$(DEPDIR)/pselect6.Po \ - ./$(DEPDIR)/ptrace.Po ./$(DEPDIR)/ptrace_syscall_info.Po \ - ./$(DEPDIR)/pwritev-pwritev.Po ./$(DEPDIR)/qual_fault.Po \ -@@ -4101,9 +4335,10 @@ - ./$(DEPDIR)/request_key.Po ./$(DEPDIR)/restart_syscall.Po \ - ./$(DEPDIR)/riscv_flush_icache.Po ./$(DEPDIR)/rmdir.Po \ - ./$(DEPDIR)/rt_sigaction.Po ./$(DEPDIR)/rt_sigpending.Po \ -- ./$(DEPDIR)/rt_sigprocmask.Po ./$(DEPDIR)/rt_sigqueueinfo.Po \ -+ ./$(DEPDIR)/rt_sigprocmask.Po ./$(DEPDIR)/rt_sigqueueinfo--pidns-translation.Po ./$(DEPDIR)/rt_sigqueueinfo.Po \ - ./$(DEPDIR)/rt_sigreturn.Po ./$(DEPDIR)/rt_sigsuspend.Po \ - ./$(DEPDIR)/rt_sigtimedwait.Po \ -+ ./$(DEPDIR)/rt_tgsigqueueinfo--pidns-translation.Po \ - ./$(DEPDIR)/rt_tgsigqueueinfo.Po \ - ./$(DEPDIR)/run_expect_termsig.Po \ - ./$(DEPDIR)/s390_guarded_storage-v.Po \ -@@ -4113,9 +4348,15 @@ - ./$(DEPDIR)/s390_sthyi.Po \ - ./$(DEPDIR)/sched_get_priority_mxx.Po \ - ./$(DEPDIR)/sched_rr_get_interval.Po \ -- ./$(DEPDIR)/sched_xetaffinity.Po ./$(DEPDIR)/sched_xetattr.Po \ -+ ./$(DEPDIR)/sched_xetaffinity--pidns-translation.Po \ -+ ./$(DEPDIR)/sched_xetaffinity.Po \ -+ ./$(DEPDIR)/sched_xetattr--pidns-translation.Po \ -+ ./$(DEPDIR)/sched_xetattr.Po \ -+ ./$(DEPDIR)/sched_xetparam--pidns-translation.Po \ - ./$(DEPDIR)/sched_xetparam.Po \ -- ./$(DEPDIR)/sched_xetscheduler.Po ./$(DEPDIR)/sched_yield.Po \ -+ ./$(DEPDIR)/sched_xetscheduler--pidns-translation.Po \ -+ ./$(DEPDIR)/sched_xetscheduler.Po \ -+ ./$(DEPDIR)/sched_yield.Po \ - ./$(DEPDIR)/scm_rights.Po ./$(DEPDIR)/seccomp-filter-v.Po \ - ./$(DEPDIR)/seccomp-filter.Po ./$(DEPDIR)/seccomp-strict.Po \ - ./$(DEPDIR)/seccomp_get_action_avail.Po \ -@@ -4143,11 +4384,12 @@ - ./$(DEPDIR)/shmxt.Po ./$(DEPDIR)/shutdown.Po \ - ./$(DEPDIR)/sigaction.Po ./$(DEPDIR)/sigaltstack.Po \ - ./$(DEPDIR)/siginfo.Po ./$(DEPDIR)/signal.Po \ -- ./$(DEPDIR)/signal_receive.Po ./$(DEPDIR)/signalfd4.Po \ -+ ./$(DEPDIR)/signal_receive--pidns-translation.Po ./$(DEPDIR)/signal_receive.Po ./$(DEPDIR)/signalfd4.Po \ - ./$(DEPDIR)/sigpending.Po ./$(DEPDIR)/sigprocmask.Po \ - ./$(DEPDIR)/sigreturn.Po ./$(DEPDIR)/sigsuspend.Po \ - ./$(DEPDIR)/sleep.Po ./$(DEPDIR)/so_error.Po \ -- ./$(DEPDIR)/so_linger.Po ./$(DEPDIR)/so_peercred-Xabbrev.Po \ -+ ./$(DEPDIR)/so_linger.Po ./$(DEPDIR)/so_peercred--pidns-translation.Po \ -+ ./$(DEPDIR)/so_peercred-Xabbrev.Po \ - ./$(DEPDIR)/so_peercred-Xraw.Po \ - ./$(DEPDIR)/so_peercred-Xverbose.Po ./$(DEPDIR)/so_peercred.Po \ - ./$(DEPDIR)/sock_filter-v-Xabbrev.Po \ -@@ -4186,7 +4428,7 @@ - ./$(DEPDIR)/symlinkat.Po ./$(DEPDIR)/sync.Po \ - ./$(DEPDIR)/sync_file_range.Po ./$(DEPDIR)/sync_file_range2.Po \ - ./$(DEPDIR)/sysinfo.Po ./$(DEPDIR)/syslog-success.Po \ -- ./$(DEPDIR)/syslog.Po ./$(DEPDIR)/tee.Po ./$(DEPDIR)/tgkill.Po \ -+ ./$(DEPDIR)/syslog.Po ./$(DEPDIR)/tee.Po ./$(DEPDIR)/tgkill--pidns-translation.Po ./$(DEPDIR)/tgkill.Po \ - ./$(DEPDIR)/threads-execve--quiet-thread-execve.Po \ - ./$(DEPDIR)/threads-execve-q.Po \ - ./$(DEPDIR)/threads-execve-qq.Po \ -@@ -4194,7 +4436,8 @@ - ./$(DEPDIR)/threads-execve.Po ./$(DEPDIR)/time.Po \ - ./$(DEPDIR)/timer_create.Po ./$(DEPDIR)/timer_xettime.Po \ - ./$(DEPDIR)/timerfd_xettime.Po ./$(DEPDIR)/times-fail.Po \ -- ./$(DEPDIR)/times.Po ./$(DEPDIR)/tkill.Po ./$(DEPDIR)/tracer_ppid_pgid_sid.Po \ -+ ./$(DEPDIR)/times.Po ./$(DEPDIR)/tkill--pidns-translation.Po \ -+ ./$(DEPDIR)/tkill.Po ./$(DEPDIR)/tracer_ppid_pgid_sid.Po \ - ./$(DEPDIR)/truncate.Po ./$(DEPDIR)/truncate64-truncate64.Po \ - ./$(DEPDIR)/ugetrlimit.Po ./$(DEPDIR)/uio-uio.Po \ - ./$(DEPDIR)/umask.Po ./$(DEPDIR)/umount.Po \ -@@ -4216,9 +4459,11 @@ - ./$(DEPDIR)/wait4-v.Po ./$(DEPDIR)/wait4.Po \ - ./$(DEPDIR)/waitid-v.Po ./$(DEPDIR)/waitid.Po \ - ./$(DEPDIR)/waitpid.Po ./$(DEPDIR)/xattr-strings.Po \ -- ./$(DEPDIR)/xattr.Po ./$(DEPDIR)/xet_robust_list.Po \ -+ ./$(DEPDIR)/xattr.Po ./$(DEPDIR)/xet_robust_list--pidns-translation.Po \ -+ ./$(DEPDIR)/xet_robust_list.Po \ - ./$(DEPDIR)/xet_thread_area_x86.Po ./$(DEPDIR)/xetitimer.Po \ -- ./$(DEPDIR)/xetpgid.Po ./$(DEPDIR)/xetpriority.Po \ -+ ./$(DEPDIR)/xetpgid--pidns-translation.Po ./$(DEPDIR)/xetpgid.Po \ -+ ./$(DEPDIR)/xetpriority--pidns-translation.Po ./$(DEPDIR)/xetpriority.Po \ - ./$(DEPDIR)/xettimeofday.Po ./$(DEPDIR)/zeroargc.Po - am__mv = mv -f - AM_V_lt = $(am__v_lt_@AM_V@) -@@ -4264,26 +4509,30 @@ - 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 fcntl64.c fdatasync.c fflush.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-f.c fsconfig.c fsconfig-P.c fsmount.c fsopen.c \ -- fspick.c fspick-P.c fstat.c fstat-Xabbrev.c fstat-Xraw.c \ -- fstat-Xverbose.c fstat64.c fstat64-Xabbrev.c fstat64-Xraw.c \ -- fstat64-Xverbose.c fstatat64.c fstatfs.c fstatfs64.c fsync.c \ -- fsync-y.c ftruncate.c ftruncate64.c futex.c futimesat.c \ -- get_mempolicy.c get_process_reaper.c getcpu.c getcwd.c \ -- getdents.c getdents-v.c getdents64.c getdents64-v.c getegid.c \ -- getegid32.c geteuid.c geteuid32.c getgid.c getgid32.c \ -- getgroups.c getgroups32.c getpeername.c getpgrp.c getpid.c \ -- getppid.c getrandom.c getresgid.c getresgid32.c getresuid.c \ -- getresuid32.c getrlimit.c getrusage.c getsid.c getsockname.c \ -- gettid.c getuid.c getuid32.c getxgid.c getxpid.c getxuid.c \ -- group_req.c inet-cmsg.c init_module.c inject-nf.c inotify.c \ -- inotify_init.c inotify_init-y.c inotify_init1.c \ -- inotify_init1-y.c int_0x80.c io_uring_enter.c \ -- io_uring_register.c io_uring_setup.c ioctl.c ioctl_block.c \ -- ioctl_dm.c ioctl_dm-v.c ioctl_evdev.c ioctl_evdev-Xabbrev.c \ -+ flock.c fork--pidns-translation.c fork-f.c fsconfig.c \ -+ fsconfig-P.c fsmount.c fsopen.c fspick.c fspick-P.c fstat.c \ -+ fstat-Xabbrev.c fstat-Xraw.c fstat-Xverbose.c fstat64.c \ -+ fstat64-Xabbrev.c fstat64-Xraw.c fstat64-Xverbose.c \ -+ fstatat64.c fstatfs.c fstatfs64.c fsync.c fsync-y.c \ -+ ftruncate.c ftruncate64.c futex.c futimesat.c get_mempolicy.c \ -+ get_process_reaper.c getcpu.c getcwd.c getdents.c getdents-v.c \ -+ getdents64.c getdents64-v.c getegid.c getegid32.c geteuid.c \ -+ geteuid32.c getgid.c getgid32.c getgroups.c getgroups32.c \ -+ getpeername.c getpgrp.c getpgrp--pidns-translation.c getpid.c \ -+ getpid--pidns-translation.c getppid.c getrandom.c getresgid.c \ -+ getresgid32.c getresuid.c getresuid32.c getrlimit.c \ -+ getrusage.c getsid.c getsid--pidns-translation.c getsockname.c \ -+ gettid.c gettid--pidns-translation.c getuid.c getuid32.c \ -+ getxgid.c getxpid.c getxuid.c group_req.c inet-cmsg.c \ -+ init_module.c inject-nf.c inotify.c inotify_init.c \ -+ inotify_init-y.c inotify_init1.c inotify_init1-y.c int_0x80.c \ -+ io_uring_enter.c io_uring_register.c io_uring_setup.c ioctl.c \ -+ ioctl_block.c ioctl_block--pidns-translation.c ioctl_dm.c \ -+ ioctl_dm-v.c ioctl_evdev.c ioctl_evdev-Xabbrev.c \ - ioctl_evdev-Xraw.c ioctl_evdev-Xverbose.c \ - ioctl_evdev-success.c ioctl_evdev-success-Xabbrev.c \ - ioctl_evdev-success-Xraw.c ioctl_evdev-success-Xverbose.c \ -@@ -4311,47 +4560,51 @@ - ioctl_v4l2-success-v-Xverbose.c ioctl_v4l2-v.c \ - ioctl_v4l2-v-Xabbrev.c ioctl_v4l2-v-Xraw.c \ - ioctl_v4l2-v-Xverbose.c ioctl_watchdog.c ioperm.c iopl.c \ -- ioprio.c ioprio-Xabbrev.c ioprio-Xraw.c ioprio-Xverbose.c \ -- ip_mreq.c ipc.c ipc_msg.c ipc_msg-Xabbrev.c ipc_msg-Xraw.c \ -- ipc_msg-Xverbose.c ipc_msgbuf.c ipc_msgbuf-Xabbrev.c \ -- ipc_msgbuf-Xraw.c ipc_msgbuf-Xverbose.c ipc_sem.c \ -- ipc_sem-Xabbrev.c ipc_sem-Xraw.c ipc_sem-Xverbose.c ipc_shm.c \ -- ipc_shm-Xabbrev.c ipc_shm-Xraw.c ipc_shm-Xverbose.c \ -- is_linux_mips_n64.c kcmp.c kcmp-y.c kern_features.c \ -+ ioprio.c ioprio--pidns-translation.c ioprio-Xabbrev.c \ -+ ioprio-Xraw.c ioprio-Xverbose.c ip_mreq.c ipc.c ipc_msg.c \ -+ ipc_msg-Xabbrev.c ipc_msg-Xraw.c ipc_msg-Xverbose.c \ -+ ipc_msgbuf.c ipc_msgbuf-Xabbrev.c ipc_msgbuf-Xraw.c \ -+ ipc_msgbuf-Xverbose.c ipc_sem.c ipc_sem-Xabbrev.c \ -+ ipc_sem-Xraw.c ipc_sem-Xverbose.c ipc_shm.c ipc_shm-Xabbrev.c \ -+ ipc_shm-Xraw.c ipc_shm-Xverbose.c is_linux_mips_n64.c kcmp.c \ -+ kcmp-y.c kcmp-y--pidns-translation.c kern_features.c \ - kernel_version.c kernel_version-Xabbrev.c \ - kernel_version-Xraw.c kernel_version-Xverbose.c \ - kexec_file_load.c kexec_load.c keyctl.c keyctl-Xabbrev.c \ -- keyctl-Xraw.c keyctl-Xverbose.c kill.c kill_child.c ksysent.c \ -- lchown.c lchown32.c link.c linkat.c list_sigaction_signum.c \ -- llseek.c localtime.c lookup_dcookie.c looping_threads.c \ -- lseek.c lstat.c lstat64.c madvise.c maybe_switch_current_tcp.c \ -+ keyctl-Xraw.c keyctl-Xverbose.c kill.c \ -+ kill--pidns-translation.c kill_child.c ksysent.c lchown.c \ -+ lchown32.c link.c linkat.c list_sigaction_signum.c llseek.c \ -+ localtime.c lookup_dcookie.c looping_threads.c lseek.c lstat.c \ -+ lstat64.c madvise.c maybe_switch_current_tcp.c \ - maybe_switch_current_tcp--quiet-thread-execve.c mbind.c \ - mbind-Xabbrev.c mbind-Xraw.c mbind-Xverbose.c membarrier.c \ - memfd_create.c memfd_create-Xabbrev.c memfd_create-Xraw.c \ -- memfd_create-Xverbose.c migrate_pages.c mincore.c mkdir.c \ -- mkdirat.c mknod.c mknodat.c mlock.c mlock2.c mlockall.c mmap.c \ -+ memfd_create-Xverbose.c migrate_pages.c \ -+ migrate_pages--pidns-translation.c mincore.c mkdir.c mkdirat.c \ -+ mknod.c mknodat.c mlock.c mlock2.c mlockall.c mmap.c \ - mmap-Xabbrev.c mmap-Xraw.c mmap-Xverbose.c mmap64.c \ - mmap64-Xabbrev.c mmap64-Xraw.c mmap64-Xverbose.c mmsg.c \ - mmsg-silent.c mmsg_name.c mmsg_name-v.c modify_ldt.c mount.c \ - mount-Xabbrev.c mount-Xraw.c mount-Xverbose.c move_mount.c \ -- move_mount-P.c move_pages.c move_pages-Xabbrev.c \ -- move_pages-Xraw.c move_pages-Xverbose.c mq.c mq_sendrecv.c \ -- mq_sendrecv-read.c mq_sendrecv-write.c msg_control.c \ -- msg_control-v.c msg_name.c munlockall.c nanosleep.c \ -- net--decode-fds-dev-netlink.c net--decode-fds-none-netlink.c \ -- net--decode-fds-path-netlink.c \ -+ move_mount-P.c move_pages.c move_pages--pidns-translation.c \ -+ move_pages-Xabbrev.c move_pages-Xraw.c move_pages-Xverbose.c \ -+ mq.c mq_sendrecv.c mq_sendrecv-read.c mq_sendrecv-write.c \ -+ msg_control.c msg_control-v.c msg_name.c munlockall.c \ -+ nanosleep.c net--decode-fds-dev-netlink.c \ -+ net--decode-fds-none-netlink.c net--decode-fds-path-netlink.c \ - net--decode-fds-socket-netlink.c net-accept-connect.c \ - net-icmp_filter.c net-packet_mreq.c net-packet_mreq-Xabbrev.c \ - net-packet_mreq-Xraw.c net-packet_mreq-Xverbose.c \ -- net-sockaddr.c net-tpacket_req.c net-tpacket_stats.c \ -+ net-sockaddr.c net-sockaddr--pidns-translation.c \ -+ net-tpacket_req.c net-tpacket_stats.c \ - net-tpacket_stats-success.c net-y-unix.c net-yy-inet.c \ - net-yy-inet6.c net-yy-netlink.c net-yy-unix.c netlink_audit.c \ -- netlink_crypto.c netlink_generic.c netlink_inet_diag.c \ -- netlink_kobject_uevent.c netlink_netfilter.c \ -- netlink_netlink_diag.c netlink_protocol.c netlink_route.c \ -- netlink_selinux.c netlink_sock_diag.c netlink_unix_diag.c \ -- netlink_xfrm.c newfstatat.c nfnetlink_acct.c \ -- nfnetlink_cthelper.c nfnetlink_ctnetlink.c \ -+ netlink_audit--pidns-translation.c netlink_crypto.c \ -+ netlink_generic.c netlink_inet_diag.c netlink_kobject_uevent.c \ -+ netlink_netfilter.c netlink_netlink_diag.c netlink_protocol.c \ -+ netlink_route.c netlink_selinux.c netlink_sock_diag.c \ -+ netlink_unix_diag.c netlink_xfrm.c newfstatat.c \ -+ nfnetlink_acct.c nfnetlink_cthelper.c nfnetlink_ctnetlink.c \ - nfnetlink_ctnetlink_exp.c nfnetlink_cttimeout.c \ - nfnetlink_ipset.c nfnetlink_nft_compat.c nfnetlink_nftables.c \ - nfnetlink_osf.c nfnetlink_queue.c nfnetlink_ulog.c nlattr.c \ -@@ -4381,12 +4634,13 @@ - personality-Xraw.c personality-Xverbose.c pidfd_getfd.c \ - pidfd_getfd-y.c pidfd_getfd-yy.c pidfd_open.c \ - pidfd_open--decode-fd-path.c pidfd_open--decode-fd-pidfd.c \ -- pidfd_open--decode-fd-socket.c pidfd_open-P.c pidfd_open-y.c \ -- pidfd_open-yy.c pidfd_send_signal.c pipe.c pipe2.c \ -- pkey_alloc.c pkey_free.c pkey_mprotect.c poll.c poll-P.c \ -- ppoll.c ppoll-P.c ppoll-v.c prctl-arg2-intptr.c \ -- prctl-dumpable.c prctl-name.c prctl-no-args.c \ -- prctl-pdeathsig.c prctl-seccomp-filter-v.c \ -+ pidfd_open--decode-fd-socket.c pidfd_open--pidns-translation.c \ -+ pidfd_open-P.c pidfd_open-y.c pidfd_open-yy.c \ -+ pidfd_send_signal.c pidfd_send_signal--pidns-translation.c \ -+ pidns-cache.c pipe.c pipe2.c pkey_alloc.c pkey_free.c \ -+ pkey_mprotect.c poll.c poll-P.c ppoll.c ppoll-P.c ppoll-v.c \ -+ prctl-arg2-intptr.c prctl-dumpable.c prctl-name.c \ -+ prctl-no-args.c prctl-pdeathsig.c prctl-seccomp-filter-v.c \ - prctl-seccomp-strict.c prctl-securebits.c prctl-spec-inject.c \ - prctl-tid_address.c prctl-tsc.c pread64-pwrite64.c preadv.c \ - preadv-pwritev.c preadv2-pwritev2.c print_maxfd.c \ -@@ -4395,8 +4649,10 @@ - printsignal-Xabbrev.c printsignal-Xraw.c \ - printsignal-Xverbose.c printstr.c printstrn-umoven.c \ - printstrn-umoven-peekdata.c printstrn-umoven-undumpable.c \ -- prlimit64.c process_vm_readv.c process_vm_writev.c pselect6.c \ -- ptrace.c ptrace_syscall_info.c pwritev.c qual_fault.c \ -+ prlimit64.c prlimit64--pidns-translation.c process_vm_readv.c \ -+ process_vm_readv--pidns-translation.c process_vm_writev.c \ -+ process_vm_writev--pidns-translation.c pselect6.c ptrace.c \ -+ ptrace_syscall_info.c pwritev.c qual_fault.c \ - qual_inject-error-signal.c qual_inject-retval.c \ - qual_inject-signal.c qual_signal.c quotactl.c \ - quotactl-Xabbrev.c quotactl-Xraw.c quotactl-Xverbose.c \ -@@ -4409,60 +4665,70 @@ - remap_file_pages-Xraw.c remap_file_pages-Xverbose.c rename.c \ - renameat.c renameat2.c request_key.c restart_syscall.c \ - riscv_flush_icache.c rmdir.c rt_sigaction.c rt_sigpending.c \ -- rt_sigprocmask.c rt_sigqueueinfo.c rt_sigreturn.c \ -+ rt_sigprocmask.c rt_sigqueueinfo.c \ -+ rt_sigqueueinfo--pidns-translation.c rt_sigreturn.c \ - rt_sigsuspend.c rt_sigtimedwait.c rt_tgsigqueueinfo.c \ -- run_expect_termsig.c s390_guarded_storage.c \ -- s390_guarded_storage-v.c s390_pci_mmio_read_write.c \ -- s390_runtime_instr.c s390_sthyi.c s390_sthyi-v.c \ -- sched_get_priority_mxx.c sched_rr_get_interval.c \ -- sched_xetaffinity.c sched_xetattr.c sched_xetparam.c \ -- sched_xetscheduler.c sched_yield.c scm_rights.c \ -- seccomp-filter.c seccomp-filter-v.c seccomp-strict.c \ -- seccomp_get_action_avail.c select.c select-P.c semop.c \ -- semop-indirect.c semtimedop.c sendfile.c sendfile64.c \ -- set_mempolicy.c set_mempolicy-Xabbrev.c set_mempolicy-Xraw.c \ -- set_mempolicy-Xverbose.c set_ptracer_any.c set_sigblock.c \ -- set_sigign.c setdomainname.c setfsgid.c setfsgid32.c \ -- setfsuid.c setfsuid32.c setgid.c setgid32.c setgroups.c \ -- setgroups32.c sethostname.c setns.c setpgrp-exec.c setregid.c \ -- setregid32.c setresgid.c setresgid32.c setresuid.c \ -- setresuid32.c setreuid.c setreuid32.c setrlimit.c \ -- setrlimit-Xabbrev.c setrlimit-Xraw.c setrlimit-Xverbose.c \ -- setuid.c setuid32.c shmxt.c shutdown.c sigaction.c \ -- sigaltstack.c siginfo.c signal.c signal_receive.c signalfd4.c \ -- sigpending.c sigprocmask.c sigreturn.c sigsuspend.c sleep.c \ -- so_error.c so_linger.c so_peercred.c so_peercred-Xabbrev.c \ -- so_peercred-Xraw.c so_peercred-Xverbose.c sock_filter-v.c \ -- sock_filter-v-Xabbrev.c sock_filter-v-Xraw.c \ -- 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_attach_SOURCES) \ -- $(stack_fcall_mangled_SOURCES) stat.c stat64.c statfs.c \ -- statfs64.c status-all.c status-failed.c status-failed-long.c \ -- status-failed-status.c status-none.c status-none-f.c \ -- status-none-threads.c status-successful.c \ -- status-successful-long.c status-successful-status.c \ -- status-unfinished.c status-unfinished-threads.c statx.c \ -- strace--strings-in-hex.c strace--strings-in-hex-all.c \ -+ rt_tgsigqueueinfo--pidns-translation.c run_expect_termsig.c \ -+ s390_guarded_storage.c s390_guarded_storage-v.c \ -+ s390_pci_mmio_read_write.c s390_runtime_instr.c s390_sthyi.c \ -+ s390_sthyi-v.c sched_get_priority_mxx.c \ -+ sched_rr_get_interval.c sched_xetaffinity.c \ -+ sched_xetaffinity--pidns-translation.c sched_xetattr.c \ -+ sched_xetattr--pidns-translation.c sched_xetparam.c \ -+ sched_xetparam--pidns-translation.c sched_xetscheduler.c \ -+ sched_xetscheduler--pidns-translation.c sched_yield.c \ -+ scm_rights.c seccomp-filter.c seccomp-filter-v.c \ -+ seccomp-strict.c seccomp_get_action_avail.c select.c \ -+ select-P.c semop.c semop-indirect.c semtimedop.c sendfile.c \ -+ sendfile64.c set_mempolicy.c set_mempolicy-Xabbrev.c \ -+ set_mempolicy-Xraw.c set_mempolicy-Xverbose.c \ -+ set_ptracer_any.c set_sigblock.c set_sigign.c setdomainname.c \ -+ setfsgid.c setfsgid32.c setfsuid.c setfsuid32.c setgid.c \ -+ setgid32.c setgroups.c setgroups32.c sethostname.c setns.c \ -+ setpgrp-exec.c setregid.c setregid32.c setresgid.c \ -+ setresgid32.c setresuid.c setresuid32.c setreuid.c \ -+ setreuid32.c setrlimit.c setrlimit-Xabbrev.c setrlimit-Xraw.c \ -+ setrlimit-Xverbose.c setuid.c setuid32.c shmxt.c shutdown.c \ -+ sigaction.c sigaltstack.c siginfo.c signal.c signal_receive.c \ -+ signal_receive--pidns-translation.c signalfd4.c sigpending.c \ -+ sigprocmask.c sigreturn.c sigsuspend.c sleep.c so_error.c \ -+ so_linger.c so_peercred.c so_peercred--pidns-translation.c \ -+ so_peercred-Xabbrev.c so_peercred-Xraw.c \ -+ so_peercred-Xverbose.c sock_filter-v.c sock_filter-v-Xabbrev.c \ -+ sock_filter-v-Xraw.c 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_attach_SOURCES) $(stack_fcall_mangled_SOURCES) \ -+ stat.c stat64.c statfs.c statfs64.c status-all.c \ -+ status-failed.c status-failed-long.c status-failed-status.c \ -+ status-none.c status-none-f.c status-none-threads.c \ -+ status-successful.c status-successful-long.c \ -+ status-successful-status.c status-unfinished.c \ -+ status-unfinished-threads.c statx.c strace--strings-in-hex.c \ -+ strace--strings-in-hex-all.c \ - strace--strings-in-hex-non-ascii.c strace-x.c strace-xx.c \ - swap.c sxetmask.c symlink.c symlinkat.c sync.c \ - sync_file_range.c sync_file_range2.c sysinfo.c syslog.c \ -- syslog-success.c tee.c tgkill.c threads-execve.c \ -- threads-execve--quiet-thread-execve.c threads-execve-q.c \ -- threads-execve-qq.c threads-execve-qqq.c time.c timer_create.c \ -- timer_xettime.c timerfd_xettime.c times.c times-fail.c tkill.c \ -- tracer_ppid_pgid_sid.c truncate.c truncate64.c ugetrlimit.c \ -- uio.c umask.c umount.c umount2.c umoven-illptr.c umovestr.c \ -- umovestr-illptr.c umovestr2.c umovestr3.c umovestr_cached.c \ -- umovestr_cached_adjacent.c uname.c unblock_reset_raise.c \ -- unix-pair-send-recv.c unix-pair-sendto-recvfrom.c unlink.c \ -- unlinkat.c unshare.c userfaultfd.c ustat.c utime.c utimensat.c \ -- utimensat-Xabbrev.c utimensat-Xraw.c utimensat-Xverbose.c \ -- utimes.c vfork-f.c vhangup.c vmsplice.c wait4.c wait4-v.c \ -- waitid.c waitid-v.c waitpid.c xattr.c xattr-strings.c \ -- xet_robust_list.c xet_thread_area_x86.c xetitimer.c xetpgid.c \ -- xetpriority.c xettimeofday.c zeroargc.c -+ syslog-success.c tee.c tgkill.c tgkill--pidns-translation.c \ -+ threads-execve.c threads-execve--quiet-thread-execve.c \ -+ threads-execve-q.c threads-execve-qq.c threads-execve-qqq.c \ -+ time.c timer_create.c timer_xettime.c timerfd_xettime.c \ -+ times.c times-fail.c tkill.c tkill--pidns-translation.c \ -+ tracer_ppid_pgid_sid.c $(trie_test_SOURCES) truncate.c \ -+ truncate64.c ugetrlimit.c uio.c umask.c umount.c umount2.c \ -+ umoven-illptr.c umovestr.c umovestr-illptr.c umovestr2.c \ -+ umovestr3.c umovestr_cached.c umovestr_cached_adjacent.c \ -+ uname.c unblock_reset_raise.c unix-pair-send-recv.c \ -+ unix-pair-sendto-recvfrom.c unlink.c unlinkat.c unshare.c \ -+ userfaultfd.c ustat.c utime.c utimensat.c utimensat-Xabbrev.c \ -+ utimensat-Xraw.c utimensat-Xverbose.c utimes.c vfork-f.c \ -+ vhangup.c vmsplice.c wait4.c wait4-v.c waitid.c waitid-v.c \ -+ waitpid.c xattr.c xattr-strings.c xet_robust_list.c \ -+ xet_robust_list--pidns-translation.c xet_thread_area_x86.c \ -+ xetitimer.c xetpgid.c xetpgid--pidns-translation.c \ -+ xetpriority.c xetpriority--pidns-translation.c xettimeofday.c \ -+ zeroargc.c - DIST_SOURCES = $(libtests_a_SOURCES) _newselect.c _newselect-P.c \ - accept.c accept4.c access.c acct.c add_key.c adjtimex.c aio.c \ - aio_pgetevents.c alarm.c answer.c attach-f-p.c \ -@@ -4490,26 +4756,30 @@ - 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 fcntl64.c fdatasync.c fflush.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-f.c fsconfig.c fsconfig-P.c fsmount.c fsopen.c \ -- fspick.c fspick-P.c fstat.c fstat-Xabbrev.c fstat-Xraw.c \ -- fstat-Xverbose.c fstat64.c fstat64-Xabbrev.c fstat64-Xraw.c \ -- fstat64-Xverbose.c fstatat64.c fstatfs.c fstatfs64.c fsync.c \ -- fsync-y.c ftruncate.c ftruncate64.c futex.c futimesat.c \ -- get_mempolicy.c get_process_reaper.c getcpu.c getcwd.c \ -- getdents.c getdents-v.c getdents64.c getdents64-v.c getegid.c \ -- getegid32.c geteuid.c geteuid32.c getgid.c getgid32.c \ -- getgroups.c getgroups32.c getpeername.c getpgrp.c getpid.c \ -- getppid.c getrandom.c getresgid.c getresgid32.c getresuid.c \ -- getresuid32.c getrlimit.c getrusage.c getsid.c getsockname.c \ -- gettid.c getuid.c getuid32.c getxgid.c getxpid.c getxuid.c \ -- group_req.c inet-cmsg.c init_module.c inject-nf.c inotify.c \ -- inotify_init.c inotify_init-y.c inotify_init1.c \ -- inotify_init1-y.c int_0x80.c io_uring_enter.c \ -- io_uring_register.c io_uring_setup.c ioctl.c ioctl_block.c \ -- ioctl_dm.c ioctl_dm-v.c ioctl_evdev.c ioctl_evdev-Xabbrev.c \ -+ flock.c fork--pidns-translation.c fork-f.c fsconfig.c \ -+ fsconfig-P.c fsmount.c fsopen.c fspick.c fspick-P.c fstat.c \ -+ fstat-Xabbrev.c fstat-Xraw.c fstat-Xverbose.c fstat64.c \ -+ fstat64-Xabbrev.c fstat64-Xraw.c fstat64-Xverbose.c \ -+ fstatat64.c fstatfs.c fstatfs64.c fsync.c fsync-y.c \ -+ ftruncate.c ftruncate64.c futex.c futimesat.c get_mempolicy.c \ -+ get_process_reaper.c getcpu.c getcwd.c getdents.c getdents-v.c \ -+ getdents64.c getdents64-v.c getegid.c getegid32.c geteuid.c \ -+ geteuid32.c getgid.c getgid32.c getgroups.c getgroups32.c \ -+ getpeername.c getpgrp.c getpgrp--pidns-translation.c getpid.c \ -+ getpid--pidns-translation.c getppid.c getrandom.c getresgid.c \ -+ getresgid32.c getresuid.c getresuid32.c getrlimit.c \ -+ getrusage.c getsid.c getsid--pidns-translation.c getsockname.c \ -+ gettid.c gettid--pidns-translation.c getuid.c getuid32.c \ -+ getxgid.c getxpid.c getxuid.c group_req.c inet-cmsg.c \ -+ init_module.c inject-nf.c inotify.c inotify_init.c \ -+ inotify_init-y.c inotify_init1.c inotify_init1-y.c int_0x80.c \ -+ io_uring_enter.c io_uring_register.c io_uring_setup.c ioctl.c \ -+ ioctl_block.c ioctl_block--pidns-translation.c ioctl_dm.c \ -+ ioctl_dm-v.c ioctl_evdev.c ioctl_evdev-Xabbrev.c \ - ioctl_evdev-Xraw.c ioctl_evdev-Xverbose.c \ - ioctl_evdev-success.c ioctl_evdev-success-Xabbrev.c \ - ioctl_evdev-success-Xraw.c ioctl_evdev-success-Xverbose.c \ -@@ -4537,47 +4807,51 @@ - ioctl_v4l2-success-v-Xverbose.c ioctl_v4l2-v.c \ - ioctl_v4l2-v-Xabbrev.c ioctl_v4l2-v-Xraw.c \ - ioctl_v4l2-v-Xverbose.c ioctl_watchdog.c ioperm.c iopl.c \ -- ioprio.c ioprio-Xabbrev.c ioprio-Xraw.c ioprio-Xverbose.c \ -- ip_mreq.c ipc.c ipc_msg.c ipc_msg-Xabbrev.c ipc_msg-Xraw.c \ -- ipc_msg-Xverbose.c ipc_msgbuf.c ipc_msgbuf-Xabbrev.c \ -- ipc_msgbuf-Xraw.c ipc_msgbuf-Xverbose.c ipc_sem.c \ -- ipc_sem-Xabbrev.c ipc_sem-Xraw.c ipc_sem-Xverbose.c ipc_shm.c \ -- ipc_shm-Xabbrev.c ipc_shm-Xraw.c ipc_shm-Xverbose.c \ -- is_linux_mips_n64.c kcmp.c kcmp-y.c kern_features.c \ -+ ioprio.c ioprio--pidns-translation.c ioprio-Xabbrev.c \ -+ ioprio-Xraw.c ioprio-Xverbose.c ip_mreq.c ipc.c ipc_msg.c \ -+ ipc_msg-Xabbrev.c ipc_msg-Xraw.c ipc_msg-Xverbose.c \ -+ ipc_msgbuf.c ipc_msgbuf-Xabbrev.c ipc_msgbuf-Xraw.c \ -+ ipc_msgbuf-Xverbose.c ipc_sem.c ipc_sem-Xabbrev.c \ -+ ipc_sem-Xraw.c ipc_sem-Xverbose.c ipc_shm.c ipc_shm-Xabbrev.c \ -+ ipc_shm-Xraw.c ipc_shm-Xverbose.c is_linux_mips_n64.c kcmp.c \ -+ kcmp-y.c kcmp-y--pidns-translation.c kern_features.c \ - kernel_version.c kernel_version-Xabbrev.c \ - kernel_version-Xraw.c kernel_version-Xverbose.c \ - kexec_file_load.c kexec_load.c keyctl.c keyctl-Xabbrev.c \ -- keyctl-Xraw.c keyctl-Xverbose.c kill.c kill_child.c ksysent.c \ -- lchown.c lchown32.c link.c linkat.c list_sigaction_signum.c \ -- llseek.c localtime.c lookup_dcookie.c looping_threads.c \ -- lseek.c lstat.c lstat64.c madvise.c maybe_switch_current_tcp.c \ -+ keyctl-Xraw.c keyctl-Xverbose.c kill.c \ -+ kill--pidns-translation.c kill_child.c ksysent.c lchown.c \ -+ lchown32.c link.c linkat.c list_sigaction_signum.c llseek.c \ -+ localtime.c lookup_dcookie.c looping_threads.c lseek.c lstat.c \ -+ lstat64.c madvise.c maybe_switch_current_tcp.c \ - maybe_switch_current_tcp--quiet-thread-execve.c mbind.c \ - mbind-Xabbrev.c mbind-Xraw.c mbind-Xverbose.c membarrier.c \ - memfd_create.c memfd_create-Xabbrev.c memfd_create-Xraw.c \ -- memfd_create-Xverbose.c migrate_pages.c mincore.c mkdir.c \ -- mkdirat.c mknod.c mknodat.c mlock.c mlock2.c mlockall.c mmap.c \ -+ memfd_create-Xverbose.c migrate_pages.c \ -+ migrate_pages--pidns-translation.c mincore.c mkdir.c mkdirat.c \ -+ mknod.c mknodat.c mlock.c mlock2.c mlockall.c mmap.c \ - mmap-Xabbrev.c mmap-Xraw.c mmap-Xverbose.c mmap64.c \ - mmap64-Xabbrev.c mmap64-Xraw.c mmap64-Xverbose.c mmsg.c \ - mmsg-silent.c mmsg_name.c mmsg_name-v.c modify_ldt.c mount.c \ - mount-Xabbrev.c mount-Xraw.c mount-Xverbose.c move_mount.c \ -- move_mount-P.c move_pages.c move_pages-Xabbrev.c \ -- move_pages-Xraw.c move_pages-Xverbose.c mq.c mq_sendrecv.c \ -- mq_sendrecv-read.c mq_sendrecv-write.c msg_control.c \ -- msg_control-v.c msg_name.c munlockall.c nanosleep.c \ -- net--decode-fds-dev-netlink.c net--decode-fds-none-netlink.c \ -- net--decode-fds-path-netlink.c \ -+ move_mount-P.c move_pages.c move_pages--pidns-translation.c \ -+ move_pages-Xabbrev.c move_pages-Xraw.c move_pages-Xverbose.c \ -+ mq.c mq_sendrecv.c mq_sendrecv-read.c mq_sendrecv-write.c \ -+ msg_control.c msg_control-v.c msg_name.c munlockall.c \ -+ nanosleep.c net--decode-fds-dev-netlink.c \ -+ net--decode-fds-none-netlink.c net--decode-fds-path-netlink.c \ - net--decode-fds-socket-netlink.c net-accept-connect.c \ - net-icmp_filter.c net-packet_mreq.c net-packet_mreq-Xabbrev.c \ - net-packet_mreq-Xraw.c net-packet_mreq-Xverbose.c \ -- net-sockaddr.c net-tpacket_req.c net-tpacket_stats.c \ -+ net-sockaddr.c net-sockaddr--pidns-translation.c \ -+ net-tpacket_req.c net-tpacket_stats.c \ - net-tpacket_stats-success.c net-y-unix.c net-yy-inet.c \ - net-yy-inet6.c net-yy-netlink.c net-yy-unix.c netlink_audit.c \ -- netlink_crypto.c netlink_generic.c netlink_inet_diag.c \ -- netlink_kobject_uevent.c netlink_netfilter.c \ -- netlink_netlink_diag.c netlink_protocol.c netlink_route.c \ -- netlink_selinux.c netlink_sock_diag.c netlink_unix_diag.c \ -- netlink_xfrm.c newfstatat.c nfnetlink_acct.c \ -- nfnetlink_cthelper.c nfnetlink_ctnetlink.c \ -+ netlink_audit--pidns-translation.c netlink_crypto.c \ -+ netlink_generic.c netlink_inet_diag.c netlink_kobject_uevent.c \ -+ netlink_netfilter.c netlink_netlink_diag.c netlink_protocol.c \ -+ netlink_route.c netlink_selinux.c netlink_sock_diag.c \ -+ netlink_unix_diag.c netlink_xfrm.c newfstatat.c \ -+ nfnetlink_acct.c nfnetlink_cthelper.c nfnetlink_ctnetlink.c \ - nfnetlink_ctnetlink_exp.c nfnetlink_cttimeout.c \ - nfnetlink_ipset.c nfnetlink_nft_compat.c nfnetlink_nftables.c \ - nfnetlink_osf.c nfnetlink_queue.c nfnetlink_ulog.c nlattr.c \ -@@ -4607,12 +4881,13 @@ - personality-Xraw.c personality-Xverbose.c pidfd_getfd.c \ - pidfd_getfd-y.c pidfd_getfd-yy.c pidfd_open.c \ - pidfd_open--decode-fd-path.c pidfd_open--decode-fd-pidfd.c \ -- pidfd_open--decode-fd-socket.c pidfd_open-P.c pidfd_open-y.c \ -- pidfd_open-yy.c pidfd_send_signal.c pipe.c pipe2.c \ -- pkey_alloc.c pkey_free.c pkey_mprotect.c poll.c poll-P.c \ -- ppoll.c ppoll-P.c ppoll-v.c prctl-arg2-intptr.c \ -- prctl-dumpable.c prctl-name.c prctl-no-args.c \ -- prctl-pdeathsig.c prctl-seccomp-filter-v.c \ -+ pidfd_open--decode-fd-socket.c pidfd_open--pidns-translation.c \ -+ pidfd_open-P.c pidfd_open-y.c pidfd_open-yy.c \ -+ pidfd_send_signal.c pidfd_send_signal--pidns-translation.c \ -+ pidns-cache.c pipe.c pipe2.c pkey_alloc.c pkey_free.c \ -+ pkey_mprotect.c poll.c poll-P.c ppoll.c ppoll-P.c ppoll-v.c \ -+ prctl-arg2-intptr.c prctl-dumpable.c prctl-name.c \ -+ prctl-no-args.c prctl-pdeathsig.c prctl-seccomp-filter-v.c \ - prctl-seccomp-strict.c prctl-securebits.c prctl-spec-inject.c \ - prctl-tid_address.c prctl-tsc.c pread64-pwrite64.c preadv.c \ - preadv-pwritev.c preadv2-pwritev2.c print_maxfd.c \ -@@ -4621,8 +4896,10 @@ - printsignal-Xabbrev.c printsignal-Xraw.c \ - printsignal-Xverbose.c printstr.c printstrn-umoven.c \ - printstrn-umoven-peekdata.c printstrn-umoven-undumpable.c \ -- prlimit64.c process_vm_readv.c process_vm_writev.c pselect6.c \ -- ptrace.c ptrace_syscall_info.c pwritev.c qual_fault.c \ -+ prlimit64.c prlimit64--pidns-translation.c process_vm_readv.c \ -+ process_vm_readv--pidns-translation.c process_vm_writev.c \ -+ process_vm_writev--pidns-translation.c pselect6.c ptrace.c \ -+ ptrace_syscall_info.c pwritev.c qual_fault.c \ - qual_inject-error-signal.c qual_inject-retval.c \ - qual_inject-signal.c qual_signal.c quotactl.c \ - quotactl-Xabbrev.c quotactl-Xraw.c quotactl-Xverbose.c \ -@@ -4635,60 +4912,70 @@ - remap_file_pages-Xraw.c remap_file_pages-Xverbose.c rename.c \ - renameat.c renameat2.c request_key.c restart_syscall.c \ - riscv_flush_icache.c rmdir.c rt_sigaction.c rt_sigpending.c \ -- rt_sigprocmask.c rt_sigqueueinfo.c rt_sigreturn.c \ -+ rt_sigprocmask.c rt_sigqueueinfo.c \ -+ rt_sigqueueinfo--pidns-translation.c rt_sigreturn.c \ - rt_sigsuspend.c rt_sigtimedwait.c rt_tgsigqueueinfo.c \ -- run_expect_termsig.c s390_guarded_storage.c \ -- s390_guarded_storage-v.c s390_pci_mmio_read_write.c \ -- s390_runtime_instr.c s390_sthyi.c s390_sthyi-v.c \ -- sched_get_priority_mxx.c sched_rr_get_interval.c \ -- sched_xetaffinity.c sched_xetattr.c sched_xetparam.c \ -- sched_xetscheduler.c sched_yield.c scm_rights.c \ -- seccomp-filter.c seccomp-filter-v.c seccomp-strict.c \ -- seccomp_get_action_avail.c select.c select-P.c semop.c \ -- semop-indirect.c semtimedop.c sendfile.c sendfile64.c \ -- set_mempolicy.c set_mempolicy-Xabbrev.c set_mempolicy-Xraw.c \ -- set_mempolicy-Xverbose.c set_ptracer_any.c set_sigblock.c \ -- set_sigign.c setdomainname.c setfsgid.c setfsgid32.c \ -- setfsuid.c setfsuid32.c setgid.c setgid32.c setgroups.c \ -- setgroups32.c sethostname.c setns.c setpgrp-exec.c setregid.c \ -- setregid32.c setresgid.c setresgid32.c setresuid.c \ -- setresuid32.c setreuid.c setreuid32.c setrlimit.c \ -- setrlimit-Xabbrev.c setrlimit-Xraw.c setrlimit-Xverbose.c \ -- setuid.c setuid32.c shmxt.c shutdown.c sigaction.c \ -- sigaltstack.c siginfo.c signal.c signal_receive.c signalfd4.c \ -- sigpending.c sigprocmask.c sigreturn.c sigsuspend.c sleep.c \ -- so_error.c so_linger.c so_peercred.c so_peercred-Xabbrev.c \ -- so_peercred-Xraw.c so_peercred-Xverbose.c sock_filter-v.c \ -- sock_filter-v-Xabbrev.c sock_filter-v-Xraw.c \ -- 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_attach_SOURCES) \ -- $(stack_fcall_mangled_SOURCES) stat.c stat64.c statfs.c \ -- statfs64.c status-all.c status-failed.c status-failed-long.c \ -- status-failed-status.c status-none.c status-none-f.c \ -- status-none-threads.c status-successful.c \ -- status-successful-long.c status-successful-status.c \ -- status-unfinished.c status-unfinished-threads.c statx.c \ -- strace--strings-in-hex.c strace--strings-in-hex-all.c \ -+ rt_tgsigqueueinfo--pidns-translation.c run_expect_termsig.c \ -+ s390_guarded_storage.c s390_guarded_storage-v.c \ -+ s390_pci_mmio_read_write.c s390_runtime_instr.c s390_sthyi.c \ -+ s390_sthyi-v.c sched_get_priority_mxx.c \ -+ sched_rr_get_interval.c sched_xetaffinity.c \ -+ sched_xetaffinity--pidns-translation.c sched_xetattr.c \ -+ sched_xetattr--pidns-translation.c sched_xetparam.c \ -+ sched_xetparam--pidns-translation.c sched_xetscheduler.c \ -+ sched_xetscheduler--pidns-translation.c sched_yield.c \ -+ scm_rights.c seccomp-filter.c seccomp-filter-v.c \ -+ seccomp-strict.c seccomp_get_action_avail.c select.c \ -+ select-P.c semop.c semop-indirect.c semtimedop.c sendfile.c \ -+ sendfile64.c set_mempolicy.c set_mempolicy-Xabbrev.c \ -+ set_mempolicy-Xraw.c set_mempolicy-Xverbose.c \ -+ set_ptracer_any.c set_sigblock.c set_sigign.c setdomainname.c \ -+ setfsgid.c setfsgid32.c setfsuid.c setfsuid32.c setgid.c \ -+ setgid32.c setgroups.c setgroups32.c sethostname.c setns.c \ -+ setpgrp-exec.c setregid.c setregid32.c setresgid.c \ -+ setresgid32.c setresuid.c setresuid32.c setreuid.c \ -+ setreuid32.c setrlimit.c setrlimit-Xabbrev.c setrlimit-Xraw.c \ -+ setrlimit-Xverbose.c setuid.c setuid32.c shmxt.c shutdown.c \ -+ sigaction.c sigaltstack.c siginfo.c signal.c signal_receive.c \ -+ signal_receive--pidns-translation.c signalfd4.c sigpending.c \ -+ sigprocmask.c sigreturn.c sigsuspend.c sleep.c so_error.c \ -+ so_linger.c so_peercred.c so_peercred--pidns-translation.c \ -+ so_peercred-Xabbrev.c so_peercred-Xraw.c \ -+ so_peercred-Xverbose.c sock_filter-v.c sock_filter-v-Xabbrev.c \ -+ sock_filter-v-Xraw.c 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_attach_SOURCES) $(stack_fcall_mangled_SOURCES) \ -+ stat.c stat64.c statfs.c statfs64.c status-all.c \ -+ status-failed.c status-failed-long.c status-failed-status.c \ -+ status-none.c status-none-f.c status-none-threads.c \ -+ status-successful.c status-successful-long.c \ -+ status-successful-status.c status-unfinished.c \ -+ status-unfinished-threads.c statx.c strace--strings-in-hex.c \ -+ strace--strings-in-hex-all.c \ - strace--strings-in-hex-non-ascii.c strace-x.c strace-xx.c \ - swap.c sxetmask.c symlink.c symlinkat.c sync.c \ - sync_file_range.c sync_file_range2.c sysinfo.c syslog.c \ -- syslog-success.c tee.c tgkill.c threads-execve.c \ -- threads-execve--quiet-thread-execve.c threads-execve-q.c \ -- threads-execve-qq.c threads-execve-qqq.c time.c timer_create.c \ -- timer_xettime.c timerfd_xettime.c times.c times-fail.c tkill.c \ -- tracer_ppid_pgid_sid.c truncate.c truncate64.c ugetrlimit.c \ -- uio.c umask.c umount.c umount2.c umoven-illptr.c umovestr.c \ -- umovestr-illptr.c umovestr2.c umovestr3.c umovestr_cached.c \ -- umovestr_cached_adjacent.c uname.c unblock_reset_raise.c \ -- unix-pair-send-recv.c unix-pair-sendto-recvfrom.c unlink.c \ -- unlinkat.c unshare.c userfaultfd.c ustat.c utime.c utimensat.c \ -- utimensat-Xabbrev.c utimensat-Xraw.c utimensat-Xverbose.c \ -- utimes.c vfork-f.c vhangup.c vmsplice.c wait4.c wait4-v.c \ -- waitid.c waitid-v.c waitpid.c xattr.c xattr-strings.c \ -- xet_robust_list.c xet_thread_area_x86.c xetitimer.c xetpgid.c \ -- xetpriority.c xettimeofday.c zeroargc.c -+ syslog-success.c tee.c tgkill.c tgkill--pidns-translation.c \ -+ threads-execve.c threads-execve--quiet-thread-execve.c \ -+ threads-execve-q.c threads-execve-qq.c threads-execve-qqq.c \ -+ time.c timer_create.c timer_xettime.c timerfd_xettime.c \ -+ times.c times-fail.c tkill.c tkill--pidns-translation.c \ -+ tracer_ppid_pgid_sid.c $(trie_test_SOURCES) truncate.c \ -+ truncate64.c ugetrlimit.c uio.c umask.c umount.c umount2.c \ -+ umoven-illptr.c umovestr.c umovestr-illptr.c umovestr2.c \ -+ umovestr3.c umovestr_cached.c umovestr_cached_adjacent.c \ -+ uname.c unblock_reset_raise.c unix-pair-send-recv.c \ -+ unix-pair-sendto-recvfrom.c unlink.c unlinkat.c unshare.c \ -+ userfaultfd.c ustat.c utime.c utimensat.c utimensat-Xabbrev.c \ -+ utimensat-Xraw.c utimensat-Xverbose.c utimes.c vfork-f.c \ -+ vhangup.c vmsplice.c wait4.c wait4-v.c waitid.c waitid-v.c \ -+ waitpid.c xattr.c xattr-strings.c xet_robust_list.c \ -+ xet_robust_list--pidns-translation.c xet_thread_area_x86.c \ -+ xetitimer.c xetpgid.c xetpgid--pidns-translation.c \ -+ xetpriority.c xetpriority--pidns-translation.c xettimeofday.c \ -+ zeroargc.c - am__can_run_installinfo = \ - case $$AM_UPDATE_INFO_DIR in \ - n|no|NO) false;; \ -@@ -5145,6 +5432,7 @@ - test_ucopy.h \ - tests.h \ - tprintf.c \ -+ xmalloc_for_tests.c \ - # end of libtests_a_SOURCES - - libtests_a_CPPFLAGS = $(AM_CPPFLAGS) -D_FILE_OFFSET_BITS=64 -@@ -5825,6 +6113,10 @@ - stack-fcall-mangled-0.c stack-fcall-mangled-1.c \ - stack-fcall-mangled-2.c stack-fcall-mangled-3.c - -+trie_test_SOURCES = trie_test.c trie_for_tests.c -+trie_test_CPPFLAGS = $(AM_CPPFLAGS) $(CODE_COVERAGE_CPPFLAGS) -+trie_test_CFLAGS = $(AM_CFLAGS) $(CODE_COVERAGE_CFLAGS) -+trie_test_LDADD = $(LDADD) $(CODE_COVERAGE_LIBS) - - # Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in; do not edit. - GEN_TESTS = _newselect.gen.test _newselect-P.gen.test accept.gen.test \ -@@ -5861,13 +6153,14 @@ - 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 \ -- fcntl64.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 fsopen.gen.test \ -- fspick.gen.test fspick-P.gen.test fstat.gen.test \ -- fstat-Xabbrev.gen.test fstat-Xraw.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 \ -+ fsopen.gen.test fspick.gen.test fspick-P.gen.test \ -+ fstat.gen.test fstat-Xabbrev.gen.test fstat-Xraw.gen.test \ - fstat-Xverbose.gen.test fstat64.gen.test \ - fstat64-Xabbrev.gen.test fstat64-Xraw.gen.test \ - fstat64-Xverbose.gen.test fstatat64.gen.test fstatfs.gen.test \ -@@ -5881,11 +6174,13 @@ - geteuid32-creds.gen.test getgid.gen.test getgid-creds.gen.test \ - getgid32.gen.test getgid32-creds.gen.test getgroups.gen.test \ - getgroups32.gen.test getpeername.gen.test getpgrp.gen.test \ -- getpid.gen.test getppid.gen.test getrandom.gen.test \ -- getresgid.gen.test getresgid32.gen.test getresuid.gen.test \ -- getresuid32.gen.test getrlimit.gen.test getrusage.gen.test \ -- getsid.gen.test getsockname.gen.test gettid.gen.test \ -- getuid-creds.gen.test getuid32.gen.test \ -+ getpgrp--pidns-translation.gen.test getpid.gen.test \ -+ getpid--pidns-translation.gen.test getppid.gen.test \ -+ getrandom.gen.test getresgid.gen.test getresgid32.gen.test \ -+ getresuid.gen.test getresuid32.gen.test getrlimit.gen.test \ -+ getrusage.gen.test getsid.gen.test \ -+ getsid--pidns-translation.gen.test getsockname.gen.test \ -+ gettid.gen.test getuid-creds.gen.test getuid32.gen.test \ - getuid32-creds.gen.test getxgid.gen.test getxpid.gen.test \ - getxuid.gen.test group_req.gen.test inet-cmsg.gen.test \ - init_module.gen.test inotify.gen.test inotify_init.gen.test \ -@@ -5937,9 +6232,9 @@ - ioctl_v4l2-success-v-Xraw.gen.test \ - ioctl_v4l2-success-v-Xverbose.gen.test ioctl_watchdog.gen.test \ - ioperm.gen.test iopl.gen.test ioprio.gen.test \ -- ioprio-Xabbrev.gen.test ioprio-Xraw.gen.test \ -- ioprio-Xverbose.gen.test ip_mreq.gen.test ipc.gen.test \ -- ipc_msg.gen.test ipc_msg-Xabbrev.gen.test \ -+ ioprio--pidns-translation.gen.test ioprio-Xabbrev.gen.test \ -+ ioprio-Xraw.gen.test ioprio-Xverbose.gen.test ip_mreq.gen.test \ -+ ipc.gen.test ipc_msg.gen.test ipc_msg-Xabbrev.gen.test \ - ipc_msg-Xraw.gen.test ipc_msg-Xverbose.gen.test \ - ipc_msgbuf-Xabbrev.gen.test ipc_msgbuf-Xraw.gen.test \ - ipc_msgbuf-Xverbose.gen.test ipc_sem.gen.test \ -@@ -5947,24 +6242,27 @@ - ipc_sem-Xverbose.gen.test ipc_shm.gen.test \ - ipc_shm-Xabbrev.gen.test ipc_shm-Xraw.gen.test \ - ipc_shm-Xverbose.gen.test kcmp.gen.test kcmp-y.gen.test \ -- kern_features.gen.test kernel_version.gen.test \ -- kernel_version-Xabbrev.gen.test kernel_version-Xraw.gen.test \ -- kernel_version-Xverbose.gen.test kexec_file_load.gen.test \ -- kexec_load.gen.test keyctl.gen.test keyctl-Xabbrev.gen.test \ -- keyctl-Xraw.gen.test keyctl-Xverbose.gen.test kill.gen.test \ -- ksysent.gen.test lchown.gen.test lchown32.gen.test \ -- link.gen.test linkat.gen.test lookup_dcookie.gen.test \ -- lstat.gen.test lstat64.gen.test madvise.gen.test \ -+ kcmp-y--pidns-translation.gen.test kern_features.gen.test \ -+ kernel_version.gen.test kernel_version-Xabbrev.gen.test \ -+ kernel_version-Xraw.gen.test kernel_version-Xverbose.gen.test \ -+ kexec_file_load.gen.test kexec_load.gen.test keyctl.gen.test \ -+ keyctl-Xabbrev.gen.test keyctl-Xraw.gen.test \ -+ keyctl-Xverbose.gen.test kill.gen.test \ -+ kill--pidns-translation.gen.test ksysent.gen.test \ -+ lchown.gen.test lchown32.gen.test link.gen.test \ -+ linkat.gen.test lookup_dcookie.gen.test lstat.gen.test \ -+ lstat64.gen.test madvise.gen.test \ - maybe_switch_current_tcp.gen.test \ - maybe_switch_current_tcp--quiet-thread-execve.gen.test \ - mbind.gen.test mbind-Xabbrev.gen.test mbind-Xraw.gen.test \ - mbind-Xverbose.gen.test membarrier.gen.test \ - memfd_create.gen.test memfd_create-Xabbrev.gen.test \ - memfd_create-Xraw.gen.test memfd_create-Xverbose.gen.test \ -- migrate_pages.gen.test mincore.gen.test mkdir.gen.test \ -- mkdirat.gen.test mknod.gen.test mknodat.gen.test \ -- mlock.gen.test mlock2.gen.test mlockall.gen.test \ -- mmap-Xabbrev.gen.test mmap-Xraw.gen.test \ -+ migrate_pages.gen.test \ -+ migrate_pages--pidns-translation.gen.test mincore.gen.test \ -+ mkdir.gen.test mkdirat.gen.test mknod.gen.test \ -+ mknodat.gen.test mlock.gen.test mlock2.gen.test \ -+ mlockall.gen.test mmap-Xabbrev.gen.test mmap-Xraw.gen.test \ - mmap-Xverbose.gen.test mmap64.gen.test mmap64-Xabbrev.gen.test \ - mmap64-Xraw.gen.test mmap64-Xverbose.gen.test mmsg.gen.test \ - mmsg-silent.gen.test mmsg_name.gen.test mmsg_name-v.gen.test \ -@@ -5972,17 +6270,19 @@ - mount-Xraw.gen.test mount-Xverbose.gen.test \ - move_mount.gen.test move_mount-P.gen.test move_pages.gen.test \ - move_pages-Xabbrev.gen.test move_pages-Xraw.gen.test \ -- move_pages-Xverbose.gen.test mq.gen.test mq_sendrecv.gen.test \ -- mq_sendrecv-read.gen.test mq_sendrecv-write.gen.test \ -- msg_control.gen.test msg_control-v.gen.test msg_name.gen.test \ -- munlockall.gen.test nanosleep.gen.test \ -- net--decode-fds-dev-netlink.gen.test \ -+ move_pages-Xverbose.gen.test \ -+ move_pages--pidns-translation.gen.test mq.gen.test \ -+ mq_sendrecv.gen.test mq_sendrecv-read.gen.test \ -+ mq_sendrecv-write.gen.test msg_control.gen.test \ -+ msg_control-v.gen.test msg_name.gen.test munlockall.gen.test \ -+ nanosleep.gen.test net--decode-fds-dev-netlink.gen.test \ - net--decode-fds-none-netlink.gen.test \ - net--decode-fds-path-netlink.gen.test \ - net--decode-fds-socket-netlink.gen.test \ - net-icmp_filter.gen.test net-packet_mreq.gen.test \ - net-packet_mreq-Xabbrev.gen.test net-packet_mreq-Xraw.gen.test \ - net-packet_mreq-Xverbose.gen.test net-sockaddr.gen.test \ -+ net-sockaddr--pidns-translation.gen.test \ - net-tpacket_req.gen.test net-tpacket_stats.gen.test \ - net-yy-inet6.gen.test netlink_audit.gen.test \ - netlink_crypto.gen.test netlink_generic.gen.test \ -@@ -6036,18 +6336,25 @@ - pidfd_open--decode-fd-pidfd.gen.test \ - pidfd_open--decode-fd-socket.gen.test pidfd_open-P.gen.test \ - pidfd_open-y.gen.test pidfd_open-yy.gen.test \ -- pidfd_send_signal.gen.test pipe2.gen.test pkey_alloc.gen.test \ -- pkey_free.gen.test pkey_mprotect.gen.test ppoll.gen.test \ -- ppoll-P.gen.test ppoll-v.gen.test pread64-pwrite64.gen.test \ -- preadv.gen.test preadv-pwritev.gen.test \ -- preadv2-pwritev2.gen.test printpath-umovestr.gen.test \ -+ pidfd_open--pidns-translation.gen.test \ -+ pidfd_send_signal.gen.test \ -+ pidfd_send_signal--pidns-translation.gen.test pipe2.gen.test \ -+ pkey_alloc.gen.test pkey_free.gen.test pkey_mprotect.gen.test \ -+ ppoll.gen.test ppoll-P.gen.test ppoll-v.gen.test \ -+ pread64-pwrite64.gen.test preadv.gen.test \ -+ preadv-pwritev.gen.test preadv2-pwritev2.gen.test \ -+ printpath-umovestr.gen.test \ - printpath-umovestr-peekdata.gen.test \ - printpath-umovestr-undumpable.gen.test \ - printsignal-Xabbrev.gen.test printsignal-Xraw.gen.test \ - printsignal-Xverbose.gen.test printstr.gen.test \ - printstrn-umoven.gen.test printstrn-umoven-peekdata.gen.test \ - printstrn-umoven-undumpable.gen.test prlimit64.gen.test \ -- process_vm_readv.gen.test process_vm_writev.gen.test \ -+ prlimit64--pidns-translation.gen.test \ -+ process_vm_readv.gen.test \ -+ process_vm_readv--pidns-translation.gen.test \ -+ process_vm_writev.gen.test \ -+ process_vm_writev--pidns-translation.gen.test \ - pselect6.gen.test ptrace.gen.test ptrace_syscall_info.gen.test \ - pwritev.gen.test quotactl.gen.test quotactl-Xabbrev.gen.test \ - quotactl-Xraw.gen.test quotactl-Xverbose.gen.test \ -@@ -6063,15 +6370,23 @@ - renameat.gen.test renameat2.gen.test request_key.gen.test \ - riscv_flush_icache.gen.test rmdir.gen.test \ - rt_sigpending.gen.test rt_sigprocmask.gen.test \ -- rt_sigqueueinfo.gen.test rt_sigreturn.gen.test \ -- rt_sigsuspend.gen.test rt_sigtimedwait.gen.test \ -- rt_tgsigqueueinfo.gen.test s390_guarded_storage.gen.test \ -- s390_guarded_storage-v.gen.test \ -+ rt_sigqueueinfo.gen.test \ -+ rt_sigqueueinfo--pidns-translation.gen.test \ -+ rt_sigreturn.gen.test rt_sigsuspend.gen.test \ -+ rt_sigtimedwait.gen.test rt_tgsigqueueinfo.gen.test \ -+ rt_tgsigqueueinfo--pidns-translation.gen.test \ -+ s390_guarded_storage.gen.test s390_guarded_storage-v.gen.test \ - s390_pci_mmio_read_write.gen.test s390_runtime_instr.gen.test \ - s390_sthyi.gen.test s390_sthyi-v.gen.test sched.gen.test \ - sched_get_priority_mxx.gen.test sched_rr_get_interval.gen.test \ -- sched_xetaffinity.gen.test sched_xetattr.gen.test \ -- sched_xetparam.gen.test sched_xetscheduler.gen.test \ -+ sched_xetaffinity.gen.test \ -+ sched_xetaffinity--pidns-translation.gen.test \ -+ sched_xetattr.gen.test \ -+ sched_xetattr--pidns-translation.gen.test \ -+ sched_xetparam.gen.test \ -+ sched_xetparam--pidns-translation.gen.test \ -+ sched_xetscheduler.gen.test \ -+ sched_xetscheduler--pidns-translation.gen.test \ - sched_yield.gen.test seccomp-filter.gen.test \ - seccomp-filter-v.gen.test seccomp_get_action_avail.gen.test \ - select.gen.test select-P.gen.test semop.gen.test \ -@@ -6089,18 +6404,20 @@ - setrlimit-Xraw.gen.test setrlimit-Xverbose.gen.test \ - setuid.gen.test setuid32.gen.test shmxt.gen.test \ - shutdown.gen.test sigaction.gen.test siginfo.gen.test \ -- signal.gen.test signal_receive.gen.test signalfd4.gen.test \ -+ signal.gen.test signal_receive.gen.test \ -+ signal_receive--pidns-translation.gen.test signalfd4.gen.test \ - sigpending.gen.test sigprocmask.gen.test sigreturn.gen.test \ - sigsuspend.gen.test so_error.gen.test so_linger.gen.test \ - so_peercred.gen.test so_peercred-Xabbrev.gen.test \ - so_peercred-Xraw.gen.test so_peercred-Xverbose.gen.test \ -- sock_filter-v.gen.test sock_filter-v-Xabbrev.gen.test \ -- sock_filter-v-Xraw.gen.test sock_filter-v-Xverbose.gen.test \ -- sockaddr_xlat-Xabbrev.gen.test sockaddr_xlat-Xraw.gen.test \ -- sockaddr_xlat-Xverbose.gen.test socketcall.gen.test \ -- sockopt-sol_netlink.gen.test sockopt-timestamp.gen.test \ -- splice.gen.test stat.gen.test stat64.gen.test statfs.gen.test \ -- statfs64.gen.test status-all.gen.test status-failed.gen.test \ -+ so_peercred--pidns-translation.gen.test sock_filter-v.gen.test \ -+ sock_filter-v-Xabbrev.gen.test sock_filter-v-Xraw.gen.test \ -+ sock_filter-v-Xverbose.gen.test sockaddr_xlat-Xabbrev.gen.test \ -+ sockaddr_xlat-Xraw.gen.test sockaddr_xlat-Xverbose.gen.test \ -+ socketcall.gen.test sockopt-sol_netlink.gen.test \ -+ sockopt-timestamp.gen.test splice.gen.test stat.gen.test \ -+ stat64.gen.test statfs.gen.test statfs64.gen.test \ -+ status-all.gen.test status-failed.gen.test \ - status-failed-long.gen.test status-failed-status.gen.test \ - status-none.gen.test status-successful.gen.test \ - status-successful-long.gen.test \ -@@ -6142,33 +6459,37 @@ - symlink.gen.test symlinkat.gen.test sync.gen.test \ - sync_file_range.gen.test sync_file_range2.gen.test \ - sysinfo.gen.test syslog.gen.test tee.gen.test tgkill.gen.test \ -+ tgkill--pidns-translation.gen.test \ - threads-execve--quiet-thread-execve.gen.test \ - threads-execve-q.gen.test threads-execve-qq.gen.test \ - threads-execve-qqq.gen.test time.gen.test \ - timer_create.gen.test timer_xettime.gen.test \ - timerfd_xettime.gen.test times.gen.test times-fail.gen.test \ -- tkill.gen.test trace_clock.gen.test trace_creds.gen.test \ -- trace_fstat.gen.test trace_fstatfs.gen.test \ -- trace_lstat.gen.test trace_personality_32.gen.test \ -- trace_personality_64.gen.test \ -+ tkill.gen.test tkill--pidns-translation.gen.test \ -+ trace_clock.gen.test trace_creds.gen.test trace_fstat.gen.test \ -+ trace_fstatfs.gen.test trace_lstat.gen.test \ -+ trace_personality_32.gen.test trace_personality_64.gen.test \ - trace_personality_regex_32.gen.test \ - trace_personality_regex_64.gen.test \ - trace_personality_regex_x32.gen.test \ - trace_personality_x32.gen.test trace_question.gen.test \ - trace_stat.gen.test trace_stat_like.gen.test \ - trace_statfs.gen.test trace_statfs_like.gen.test \ -- truncate.gen.test truncate64.gen.test ugetrlimit.gen.test \ -- umask.gen.test umoven-illptr.gen.test umovestr-illptr.gen.test \ -- umovestr3.gen.test umovestr_cached_adjacent.gen.test \ -- unlink.gen.test unlinkat.gen.test unshare.gen.test \ -- userfaultfd.gen.test ustat.gen.test utime.gen.test \ -- utimensat.gen.test utimensat-Xabbrev.gen.test \ -- utimensat-Xraw.gen.test utimensat-Xverbose.gen.test \ -- utimes.gen.test vfork-f.gen.test vhangup.gen.test \ -- vmsplice.gen.test wait4.gen.test wait4-v.gen.test \ -- waitid.gen.test waitid-v.gen.test waitpid.gen.test \ -- xattr.gen.test xattr-strings.gen.test xet_robust_list.gen.test \ -- xetitimer.gen.test xetpgid.gen.test xetpriority.gen.test \ -+ trie_test.gen.test truncate.gen.test truncate64.gen.test \ -+ ugetrlimit.gen.test umask.gen.test umoven-illptr.gen.test \ -+ umovestr-illptr.gen.test umovestr3.gen.test \ -+ umovestr_cached_adjacent.gen.test unlink.gen.test \ -+ unlinkat.gen.test unshare.gen.test userfaultfd.gen.test \ -+ ustat.gen.test utime.gen.test utimensat.gen.test \ -+ utimensat-Xabbrev.gen.test utimensat-Xraw.gen.test \ -+ utimensat-Xverbose.gen.test utimes.gen.test vfork-f.gen.test \ -+ vhangup.gen.test vmsplice.gen.test wait4.gen.test \ -+ wait4-v.gen.test waitid.gen.test waitid-v.gen.test \ -+ waitpid.gen.test xattr.gen.test xattr-strings.gen.test \ -+ xet_robust_list.gen.test \ -+ xet_robust_list--pidns-translation.gen.test xetitimer.gen.test \ -+ xetpgid.gen.test xetpgid--pidns-translation.gen.test \ -+ xetpriority.gen.test xetpriority--pidns-translation.gen.test \ - xettimeofday.gen.test - @ENABLE_STACKTRACE_FALSE@STACKTRACE_TESTS = - @ENABLE_STACKTRACE_TRUE@STACKTRACE_TESTS = strace-k.test \ -@@ -6198,6 +6519,7 @@ - int_0x80.test \ - inotify_init-y.test \ - ioctl.test \ -+ ioctl_block--pidns-translation.test \ - ioctl_evdev-success.test \ - ipc_msgbuf.test \ - kern_features-fault.test \ -@@ -6269,15 +6591,19 @@ - filtering_fd-syntax.test \ - filtering_syscall-syntax.test \ - first_exec_failure.test \ -+ fork--pidns-translation.test \ - get_regs.test \ -+ gettid--pidns-translation.test \ - inject-nf.test \ - interactive_block.test \ - kill_child.test \ - localtime.test \ - looping_threads.test \ -+ netlink_audit--pidns-translation.test \ - opipe.test \ - options-syntax.test \ - pc.test \ -+ pidns-cache.test \ - printpath-umovestr-legacy.test \ - printstrn-umoven-legacy.test \ - qual_fault-syntax.test \ -@@ -6350,6 +6676,7 @@ - filter_seccomp.in \ - filter_seccomp.sh \ - filter-unavailable.expected \ -+ fork--pidns-translation.awk \ - fstatat.c \ - fstatx.c \ - gen_pure_executables.sh \ -@@ -6935,10 +7262,18 @@ - @rm -f fcntl$(EXEEXT) - $(AM_V_CCLD)$(LINK) $(fcntl_OBJECTS) $(fcntl_LDADD) $(LIBS) - -+fcntl--pidns-translation$(EXEEXT): $(fcntl__pidns_translation_OBJECTS) $(fcntl__pidns_translation_DEPENDENCIES) $(EXTRA_fcntl__pidns_translation_DEPENDENCIES) -+ @rm -f fcntl--pidns-translation$(EXEEXT) -+ $(AM_V_CCLD)$(LINK) $(fcntl__pidns_translation_OBJECTS) $(fcntl__pidns_translation_LDADD) $(LIBS) -+ - fcntl64$(EXEEXT): $(fcntl64_OBJECTS) $(fcntl64_DEPENDENCIES) $(EXTRA_fcntl64_DEPENDENCIES) - @rm -f fcntl64$(EXEEXT) - $(AM_V_CCLD)$(LINK) $(fcntl64_OBJECTS) $(fcntl64_LDADD) $(LIBS) - -+fcntl64--pidns-translation$(EXEEXT): $(fcntl64__pidns_translation_OBJECTS) $(fcntl64__pidns_translation_DEPENDENCIES) $(EXTRA_fcntl64__pidns_translation_DEPENDENCIES) -+ @rm -f fcntl64--pidns-translation$(EXEEXT) -+ $(AM_V_CCLD)$(LINK) $(fcntl64__pidns_translation_OBJECTS) $(fcntl64__pidns_translation_LDADD) $(LIBS) -+ - fdatasync$(EXEEXT): $(fdatasync_OBJECTS) $(fdatasync_DEPENDENCIES) $(EXTRA_fdatasync_DEPENDENCIES) - @rm -f fdatasync$(EXEEXT) - $(AM_V_CCLD)$(LINK) $(fdatasync_OBJECTS) $(fdatasync_LDADD) $(LIBS) -@@ -6975,6 +7310,10 @@ - @rm -f flock$(EXEEXT) - $(AM_V_CCLD)$(LINK) $(flock_OBJECTS) $(flock_LDADD) $(LIBS) - -+fork--pidns-translation$(EXEEXT): $(fork__pidns_translation_OBJECTS) $(fork__pidns_translation_DEPENDENCIES) $(EXTRA_fork__pidns_translation_DEPENDENCIES) -+ @rm -f fork--pidns-translation$(EXEEXT) -+ $(AM_V_CCLD)$(LINK) $(fork__pidns_translation_OBJECTS) $(fork__pidns_translation_LDADD) $(LIBS) -+ - fork-f$(EXEEXT): $(fork_f_OBJECTS) $(fork_f_DEPENDENCIES) $(EXTRA_fork_f_DEPENDENCIES) - @rm -f fork-f$(EXEEXT) - $(AM_V_CCLD)$(LINK) $(fork_f_OBJECTS) $(fork_f_LDADD) $(LIBS) -@@ -7143,10 +7482,18 @@ - @rm -f getpgrp$(EXEEXT) - $(AM_V_CCLD)$(LINK) $(getpgrp_OBJECTS) $(getpgrp_LDADD) $(LIBS) - -+getpgrp--pidns-translation$(EXEEXT): $(getpgrp__pidns_translation_OBJECTS) $(getpgrp__pidns_translation_DEPENDENCIES) $(EXTRA_getpgrp__pidns_translation_DEPENDENCIES) -+ @rm -f getpgrp--pidns-translation$(EXEEXT) -+ $(AM_V_CCLD)$(LINK) $(getpgrp__pidns_translation_OBJECTS) $(getpgrp__pidns_translation_LDADD) $(LIBS) -+ - getpid$(EXEEXT): $(getpid_OBJECTS) $(getpid_DEPENDENCIES) $(EXTRA_getpid_DEPENDENCIES) - @rm -f getpid$(EXEEXT) - $(AM_V_CCLD)$(LINK) $(getpid_OBJECTS) $(getpid_LDADD) $(LIBS) - -+getpid--pidns-translation$(EXEEXT): $(getpid__pidns_translation_OBJECTS) $(getpid__pidns_translation_DEPENDENCIES) $(EXTRA_getpid__pidns_translation_DEPENDENCIES) -+ @rm -f getpid--pidns-translation$(EXEEXT) -+ $(AM_V_CCLD)$(LINK) $(getpid__pidns_translation_OBJECTS) $(getpid__pidns_translation_LDADD) $(LIBS) -+ - getppid$(EXEEXT): $(getppid_OBJECTS) $(getppid_DEPENDENCIES) $(EXTRA_getppid_DEPENDENCIES) - @rm -f getppid$(EXEEXT) - $(AM_V_CCLD)$(LINK) $(getppid_OBJECTS) $(getppid_LDADD) $(LIBS) -@@ -7183,6 +7530,10 @@ - @rm -f getsid$(EXEEXT) - $(AM_V_CCLD)$(LINK) $(getsid_OBJECTS) $(getsid_LDADD) $(LIBS) - -+getsid--pidns-translation$(EXEEXT): $(getsid__pidns_translation_OBJECTS) $(getsid__pidns_translation_DEPENDENCIES) $(EXTRA_getsid__pidns_translation_DEPENDENCIES) -+ @rm -f getsid--pidns-translation$(EXEEXT) -+ $(AM_V_CCLD)$(LINK) $(getsid__pidns_translation_OBJECTS) $(getsid__pidns_translation_LDADD) $(LIBS) -+ - getsockname$(EXEEXT): $(getsockname_OBJECTS) $(getsockname_DEPENDENCIES) $(EXTRA_getsockname_DEPENDENCIES) - @rm -f getsockname$(EXEEXT) - $(AM_V_CCLD)$(LINK) $(getsockname_OBJECTS) $(getsockname_LDADD) $(LIBS) -@@ -7191,6 +7542,10 @@ - @rm -f gettid$(EXEEXT) - $(AM_V_CCLD)$(LINK) $(gettid_OBJECTS) $(gettid_LDADD) $(LIBS) - -+gettid--pidns-translation$(EXEEXT): $(gettid__pidns_translation_OBJECTS) $(gettid__pidns_translation_DEPENDENCIES) $(EXTRA_gettid__pidns_translation_DEPENDENCIES) -+ @rm -f gettid--pidns-translation$(EXEEXT) -+ $(AM_V_CCLD)$(LINK) $(gettid__pidns_translation_OBJECTS) $(gettid__pidns_translation_LDADD) $(LIBS) -+ - getuid$(EXEEXT): $(getuid_OBJECTS) $(getuid_DEPENDENCIES) $(EXTRA_getuid_DEPENDENCIES) - @rm -f getuid$(EXEEXT) - $(AM_V_CCLD)$(LINK) $(getuid_OBJECTS) $(getuid_LDADD) $(LIBS) -@@ -7271,6 +7626,10 @@ - @rm -f ioctl_block$(EXEEXT) - $(AM_V_CCLD)$(LINK) $(ioctl_block_OBJECTS) $(ioctl_block_LDADD) $(LIBS) - -+ioctl_block--pidns-translation$(EXEEXT): $(ioctl_block__pidns_translation_OBJECTS) $(ioctl_block__pidns_translation_DEPENDENCIES) $(EXTRA_ioctl_block__pidns_translation_DEPENDENCIES) -+ @rm -f ioctl_block--pidns-translation$(EXEEXT) -+ $(AM_V_CCLD)$(LINK) $(ioctl_block__pidns_translation_OBJECTS) $(ioctl_block__pidns_translation_LDADD) $(LIBS) -+ - ioctl_dm$(EXEEXT): $(ioctl_dm_OBJECTS) $(ioctl_dm_DEPENDENCIES) $(EXTRA_ioctl_dm_DEPENDENCIES) - @rm -f ioctl_dm$(EXEEXT) - $(AM_V_CCLD)$(LINK) $(ioctl_dm_OBJECTS) $(ioctl_dm_LDADD) $(LIBS) -@@ -7571,6 +7930,10 @@ - @rm -f ioprio$(EXEEXT) - $(AM_V_CCLD)$(LINK) $(ioprio_OBJECTS) $(ioprio_LDADD) $(LIBS) - -+ioprio--pidns-translation$(EXEEXT): $(ioprio__pidns_translation_OBJECTS) $(ioprio__pidns_translation_DEPENDENCIES) $(EXTRA_ioprio__pidns_translation_DEPENDENCIES) -+ @rm -f ioprio--pidns-translation$(EXEEXT) -+ $(AM_V_CCLD)$(LINK) $(ioprio__pidns_translation_OBJECTS) $(ioprio__pidns_translation_LDADD) $(LIBS) -+ - ioprio-Xabbrev$(EXEEXT): $(ioprio_Xabbrev_OBJECTS) $(ioprio_Xabbrev_DEPENDENCIES) $(EXTRA_ioprio_Xabbrev_DEPENDENCIES) - @rm -f ioprio-Xabbrev$(EXEEXT) - $(AM_V_CCLD)$(LINK) $(ioprio_Xabbrev_OBJECTS) $(ioprio_Xabbrev_LDADD) $(LIBS) -@@ -7667,6 +8030,10 @@ - @rm -f kcmp-y$(EXEEXT) - $(AM_V_CCLD)$(LINK) $(kcmp_y_OBJECTS) $(kcmp_y_LDADD) $(LIBS) - -+kcmp-y--pidns-translation$(EXEEXT): $(kcmp_y__pidns_translation_OBJECTS) $(kcmp_y__pidns_translation_DEPENDENCIES) $(EXTRA_kcmp_y__pidns_translation_DEPENDENCIES) -+ @rm -f kcmp-y--pidns-translation$(EXEEXT) -+ $(AM_V_CCLD)$(LINK) $(kcmp_y__pidns_translation_OBJECTS) $(kcmp_y__pidns_translation_LDADD) $(LIBS) -+ - kern_features$(EXEEXT): $(kern_features_OBJECTS) $(kern_features_DEPENDENCIES) $(EXTRA_kern_features_DEPENDENCIES) - @rm -f kern_features$(EXEEXT) - $(AM_V_CCLD)$(LINK) $(kern_features_OBJECTS) $(kern_features_LDADD) $(LIBS) -@@ -7715,6 +8082,10 @@ - @rm -f kill$(EXEEXT) - $(AM_V_CCLD)$(LINK) $(kill_OBJECTS) $(kill_LDADD) $(LIBS) - -+kill--pidns-translation$(EXEEXT): $(kill__pidns_translation_OBJECTS) $(kill__pidns_translation_DEPENDENCIES) $(EXTRA_kill__pidns_translation_DEPENDENCIES) -+ @rm -f kill--pidns-translation$(EXEEXT) -+ $(AM_V_CCLD)$(LINK) $(kill__pidns_translation_OBJECTS) $(kill__pidns_translation_LDADD) $(LIBS) -+ - kill_child$(EXEEXT): $(kill_child_OBJECTS) $(kill_child_DEPENDENCIES) $(EXTRA_kill_child_DEPENDENCIES) - @rm -f kill_child$(EXEEXT) - $(AM_V_CCLD)$(LINK) $(kill_child_OBJECTS) $(kill_child_LDADD) $(LIBS) -@@ -7823,6 +8194,10 @@ - @rm -f migrate_pages$(EXEEXT) - $(AM_V_CCLD)$(LINK) $(migrate_pages_OBJECTS) $(migrate_pages_LDADD) $(LIBS) - -+migrate_pages--pidns-translation$(EXEEXT): $(migrate_pages__pidns_translation_OBJECTS) $(migrate_pages__pidns_translation_DEPENDENCIES) $(EXTRA_migrate_pages__pidns_translation_DEPENDENCIES) -+ @rm -f migrate_pages--pidns-translation$(EXEEXT) -+ $(AM_V_CCLD)$(LINK) $(migrate_pages__pidns_translation_OBJECTS) $(migrate_pages__pidns_translation_LDADD) $(LIBS) -+ - mincore$(EXEEXT): $(mincore_OBJECTS) $(mincore_DEPENDENCIES) $(EXTRA_mincore_DEPENDENCIES) - @rm -f mincore$(EXEEXT) - $(AM_V_CCLD)$(LINK) $(mincore_OBJECTS) $(mincore_LDADD) $(LIBS) -@@ -7935,6 +8310,10 @@ - @rm -f move_pages$(EXEEXT) - $(AM_V_CCLD)$(LINK) $(move_pages_OBJECTS) $(move_pages_LDADD) $(LIBS) - -+move_pages--pidns-translation$(EXEEXT): $(move_pages__pidns_translation_OBJECTS) $(move_pages__pidns_translation_DEPENDENCIES) $(EXTRA_move_pages__pidns_translation_DEPENDENCIES) -+ @rm -f move_pages--pidns-translation$(EXEEXT) -+ $(AM_V_CCLD)$(LINK) $(move_pages__pidns_translation_OBJECTS) $(move_pages__pidns_translation_LDADD) $(LIBS) -+ - move_pages-Xabbrev$(EXEEXT): $(move_pages_Xabbrev_OBJECTS) $(move_pages_Xabbrev_DEPENDENCIES) $(EXTRA_move_pages_Xabbrev_DEPENDENCIES) - @rm -f move_pages-Xabbrev$(EXEEXT) - $(AM_V_CCLD)$(LINK) $(move_pages_Xabbrev_OBJECTS) $(move_pages_Xabbrev_LDADD) $(LIBS) -@@ -8027,6 +8406,10 @@ - @rm -f net-sockaddr$(EXEEXT) - $(AM_V_CCLD)$(LINK) $(net_sockaddr_OBJECTS) $(net_sockaddr_LDADD) $(LIBS) - -+net-sockaddr--pidns-translation$(EXEEXT): $(net_sockaddr__pidns_translation_OBJECTS) $(net_sockaddr__pidns_translation_DEPENDENCIES) $(EXTRA_net_sockaddr__pidns_translation_DEPENDENCIES) -+ @rm -f net-sockaddr--pidns-translation$(EXEEXT) -+ $(AM_V_CCLD)$(LINK) $(net_sockaddr__pidns_translation_OBJECTS) $(net_sockaddr__pidns_translation_LDADD) $(LIBS) -+ - net-tpacket_req$(EXEEXT): $(net_tpacket_req_OBJECTS) $(net_tpacket_req_DEPENDENCIES) $(EXTRA_net_tpacket_req_DEPENDENCIES) - @rm -f net-tpacket_req$(EXEEXT) - $(AM_V_CCLD)$(LINK) $(net_tpacket_req_OBJECTS) $(net_tpacket_req_LDADD) $(LIBS) -@@ -8063,6 +8446,10 @@ - @rm -f netlink_audit$(EXEEXT) - $(AM_V_CCLD)$(LINK) $(netlink_audit_OBJECTS) $(netlink_audit_LDADD) $(LIBS) - -+netlink_audit--pidns-translation$(EXEEXT): $(netlink_audit__pidns_translation_OBJECTS) $(netlink_audit__pidns_translation_DEPENDENCIES) $(EXTRA_netlink_audit__pidns_translation_DEPENDENCIES) -+ @rm -f netlink_audit--pidns-translation$(EXEEXT) -+ $(AM_V_CCLD)$(LINK) $(netlink_audit__pidns_translation_OBJECTS) $(netlink_audit__pidns_translation_LDADD) $(LIBS) -+ - netlink_crypto$(EXEEXT): $(netlink_crypto_OBJECTS) $(netlink_crypto_DEPENDENCIES) $(EXTRA_netlink_crypto_DEPENDENCIES) - @rm -f netlink_crypto$(EXEEXT) - $(AM_V_CCLD)$(LINK) $(netlink_crypto_OBJECTS) $(netlink_crypto_LDADD) $(LIBS) -@@ -8479,6 +8866,10 @@ - @rm -f pidfd_open--decode-fd-socket$(EXEEXT) - $(AM_V_CCLD)$(LINK) $(pidfd_open__decode_fd_socket_OBJECTS) $(pidfd_open__decode_fd_socket_LDADD) $(LIBS) - -+pidfd_open--pidns-translation$(EXEEXT): $(pidfd_open__pidns_translation_OBJECTS) $(pidfd_open__pidns_translation_DEPENDENCIES) $(EXTRA_pidfd_open__pidns_translation_DEPENDENCIES) -+ @rm -f pidfd_open--pidns-translation$(EXEEXT) -+ $(AM_V_CCLD)$(LINK) $(pidfd_open__pidns_translation_OBJECTS) $(pidfd_open__pidns_translation_LDADD) $(LIBS) -+ - pidfd_open-P$(EXEEXT): $(pidfd_open_P_OBJECTS) $(pidfd_open_P_DEPENDENCIES) $(EXTRA_pidfd_open_P_DEPENDENCIES) - @rm -f pidfd_open-P$(EXEEXT) - $(AM_V_CCLD)$(LINK) $(pidfd_open_P_OBJECTS) $(pidfd_open_P_LDADD) $(LIBS) -@@ -8495,6 +8886,14 @@ - @rm -f pidfd_send_signal$(EXEEXT) - $(AM_V_CCLD)$(LINK) $(pidfd_send_signal_OBJECTS) $(pidfd_send_signal_LDADD) $(LIBS) - -+pidfd_send_signal--pidns-translation$(EXEEXT): $(pidfd_send_signal__pidns_translation_OBJECTS) $(pidfd_send_signal__pidns_translation_DEPENDENCIES) $(EXTRA_pidfd_send_signal__pidns_translation_DEPENDENCIES) -+ @rm -f pidfd_send_signal--pidns-translation$(EXEEXT) -+ $(AM_V_CCLD)$(LINK) $(pidfd_send_signal__pidns_translation_OBJECTS) $(pidfd_send_signal__pidns_translation_LDADD) $(LIBS) -+ -+pidns-cache$(EXEEXT): $(pidns_cache_OBJECTS) $(pidns_cache_DEPENDENCIES) $(EXTRA_pidns_cache_DEPENDENCIES) -+ @rm -f pidns-cache$(EXEEXT) -+ $(AM_V_CCLD)$(LINK) $(pidns_cache_OBJECTS) $(pidns_cache_LDADD) $(LIBS) -+ - pipe$(EXEEXT): $(pipe_OBJECTS) $(pipe_DEPENDENCIES) $(EXTRA_pipe_DEPENDENCIES) - @rm -f pipe$(EXEEXT) - $(AM_V_CCLD)$(LINK) $(pipe_OBJECTS) $(pipe_LDADD) $(LIBS) -@@ -8647,14 +9046,26 @@ - @rm -f prlimit64$(EXEEXT) - $(AM_V_CCLD)$(LINK) $(prlimit64_OBJECTS) $(prlimit64_LDADD) $(LIBS) - -+prlimit64--pidns-translation$(EXEEXT): $(prlimit64__pidns_translation_OBJECTS) $(prlimit64__pidns_translation_DEPENDENCIES) $(EXTRA_prlimit64__pidns_translation_DEPENDENCIES) -+ @rm -f prlimit64--pidns-translation$(EXEEXT) -+ $(AM_V_CCLD)$(LINK) $(prlimit64__pidns_translation_OBJECTS) $(prlimit64__pidns_translation_LDADD) $(LIBS) -+ - process_vm_readv$(EXEEXT): $(process_vm_readv_OBJECTS) $(process_vm_readv_DEPENDENCIES) $(EXTRA_process_vm_readv_DEPENDENCIES) - @rm -f process_vm_readv$(EXEEXT) - $(AM_V_CCLD)$(LINK) $(process_vm_readv_OBJECTS) $(process_vm_readv_LDADD) $(LIBS) - -+process_vm_readv--pidns-translation$(EXEEXT): $(process_vm_readv__pidns_translation_OBJECTS) $(process_vm_readv__pidns_translation_DEPENDENCIES) $(EXTRA_process_vm_readv__pidns_translation_DEPENDENCIES) -+ @rm -f process_vm_readv--pidns-translation$(EXEEXT) -+ $(AM_V_CCLD)$(LINK) $(process_vm_readv__pidns_translation_OBJECTS) $(process_vm_readv__pidns_translation_LDADD) $(LIBS) -+ - process_vm_writev$(EXEEXT): $(process_vm_writev_OBJECTS) $(process_vm_writev_DEPENDENCIES) $(EXTRA_process_vm_writev_DEPENDENCIES) - @rm -f process_vm_writev$(EXEEXT) - $(AM_V_CCLD)$(LINK) $(process_vm_writev_OBJECTS) $(process_vm_writev_LDADD) $(LIBS) - -+process_vm_writev--pidns-translation$(EXEEXT): $(process_vm_writev__pidns_translation_OBJECTS) $(process_vm_writev__pidns_translation_DEPENDENCIES) $(EXTRA_process_vm_writev__pidns_translation_DEPENDENCIES) -+ @rm -f process_vm_writev--pidns-translation$(EXEEXT) -+ $(AM_V_CCLD)$(LINK) $(process_vm_writev__pidns_translation_OBJECTS) $(process_vm_writev__pidns_translation_LDADD) $(LIBS) -+ - pselect6$(EXEEXT): $(pselect6_OBJECTS) $(pselect6_DEPENDENCIES) $(EXTRA_pselect6_DEPENDENCIES) - @rm -f pselect6$(EXEEXT) - $(AM_V_CCLD)$(LINK) $(pselect6_OBJECTS) $(pselect6_LDADD) $(LIBS) -@@ -8847,6 +9258,10 @@ - @rm -f rt_sigqueueinfo$(EXEEXT) - $(AM_V_CCLD)$(LINK) $(rt_sigqueueinfo_OBJECTS) $(rt_sigqueueinfo_LDADD) $(LIBS) - -+rt_sigqueueinfo--pidns-translation$(EXEEXT): $(rt_sigqueueinfo__pidns_translation_OBJECTS) $(rt_sigqueueinfo__pidns_translation_DEPENDENCIES) $(EXTRA_rt_sigqueueinfo__pidns_translation_DEPENDENCIES) -+ @rm -f rt_sigqueueinfo--pidns-translation$(EXEEXT) -+ $(AM_V_CCLD)$(LINK) $(rt_sigqueueinfo__pidns_translation_OBJECTS) $(rt_sigqueueinfo__pidns_translation_LDADD) $(LIBS) -+ - rt_sigreturn$(EXEEXT): $(rt_sigreturn_OBJECTS) $(rt_sigreturn_DEPENDENCIES) $(EXTRA_rt_sigreturn_DEPENDENCIES) - @rm -f rt_sigreturn$(EXEEXT) - $(AM_V_CCLD)$(LINK) $(rt_sigreturn_OBJECTS) $(rt_sigreturn_LDADD) $(LIBS) -@@ -8863,6 +9278,10 @@ - @rm -f rt_tgsigqueueinfo$(EXEEXT) - $(AM_V_CCLD)$(LINK) $(rt_tgsigqueueinfo_OBJECTS) $(rt_tgsigqueueinfo_LDADD) $(LIBS) - -+rt_tgsigqueueinfo--pidns-translation$(EXEEXT): $(rt_tgsigqueueinfo__pidns_translation_OBJECTS) $(rt_tgsigqueueinfo__pidns_translation_DEPENDENCIES) $(EXTRA_rt_tgsigqueueinfo__pidns_translation_DEPENDENCIES) -+ @rm -f rt_tgsigqueueinfo--pidns-translation$(EXEEXT) -+ $(AM_V_CCLD)$(LINK) $(rt_tgsigqueueinfo__pidns_translation_OBJECTS) $(rt_tgsigqueueinfo__pidns_translation_LDADD) $(LIBS) -+ - run_expect_termsig$(EXEEXT): $(run_expect_termsig_OBJECTS) $(run_expect_termsig_DEPENDENCIES) $(EXTRA_run_expect_termsig_DEPENDENCIES) - @rm -f run_expect_termsig$(EXEEXT) - $(AM_V_CCLD)$(LINK) $(run_expect_termsig_OBJECTS) $(run_expect_termsig_LDADD) $(LIBS) -@@ -8903,18 +9322,34 @@ - @rm -f sched_xetaffinity$(EXEEXT) - $(AM_V_CCLD)$(LINK) $(sched_xetaffinity_OBJECTS) $(sched_xetaffinity_LDADD) $(LIBS) - -+sched_xetaffinity--pidns-translation$(EXEEXT): $(sched_xetaffinity__pidns_translation_OBJECTS) $(sched_xetaffinity__pidns_translation_DEPENDENCIES) $(EXTRA_sched_xetaffinity__pidns_translation_DEPENDENCIES) -+ @rm -f sched_xetaffinity--pidns-translation$(EXEEXT) -+ $(AM_V_CCLD)$(LINK) $(sched_xetaffinity__pidns_translation_OBJECTS) $(sched_xetaffinity__pidns_translation_LDADD) $(LIBS) -+ - sched_xetattr$(EXEEXT): $(sched_xetattr_OBJECTS) $(sched_xetattr_DEPENDENCIES) $(EXTRA_sched_xetattr_DEPENDENCIES) - @rm -f sched_xetattr$(EXEEXT) - $(AM_V_CCLD)$(LINK) $(sched_xetattr_OBJECTS) $(sched_xetattr_LDADD) $(LIBS) - -+sched_xetattr--pidns-translation$(EXEEXT): $(sched_xetattr__pidns_translation_OBJECTS) $(sched_xetattr__pidns_translation_DEPENDENCIES) $(EXTRA_sched_xetattr__pidns_translation_DEPENDENCIES) -+ @rm -f sched_xetattr--pidns-translation$(EXEEXT) -+ $(AM_V_CCLD)$(LINK) $(sched_xetattr__pidns_translation_OBJECTS) $(sched_xetattr__pidns_translation_LDADD) $(LIBS) -+ - sched_xetparam$(EXEEXT): $(sched_xetparam_OBJECTS) $(sched_xetparam_DEPENDENCIES) $(EXTRA_sched_xetparam_DEPENDENCIES) - @rm -f sched_xetparam$(EXEEXT) - $(AM_V_CCLD)$(LINK) $(sched_xetparam_OBJECTS) $(sched_xetparam_LDADD) $(LIBS) - -+sched_xetparam--pidns-translation$(EXEEXT): $(sched_xetparam__pidns_translation_OBJECTS) $(sched_xetparam__pidns_translation_DEPENDENCIES) $(EXTRA_sched_xetparam__pidns_translation_DEPENDENCIES) -+ @rm -f sched_xetparam--pidns-translation$(EXEEXT) -+ $(AM_V_CCLD)$(LINK) $(sched_xetparam__pidns_translation_OBJECTS) $(sched_xetparam__pidns_translation_LDADD) $(LIBS) -+ - sched_xetscheduler$(EXEEXT): $(sched_xetscheduler_OBJECTS) $(sched_xetscheduler_DEPENDENCIES) $(EXTRA_sched_xetscheduler_DEPENDENCIES) - @rm -f sched_xetscheduler$(EXEEXT) - $(AM_V_CCLD)$(LINK) $(sched_xetscheduler_OBJECTS) $(sched_xetscheduler_LDADD) $(LIBS) - -+sched_xetscheduler--pidns-translation$(EXEEXT): $(sched_xetscheduler__pidns_translation_OBJECTS) $(sched_xetscheduler__pidns_translation_DEPENDENCIES) $(EXTRA_sched_xetscheduler__pidns_translation_DEPENDENCIES) -+ @rm -f sched_xetscheduler--pidns-translation$(EXEEXT) -+ $(AM_V_CCLD)$(LINK) $(sched_xetscheduler__pidns_translation_OBJECTS) $(sched_xetscheduler__pidns_translation_LDADD) $(LIBS) -+ - sched_yield$(EXEEXT): $(sched_yield_OBJECTS) $(sched_yield_DEPENDENCIES) $(EXTRA_sched_yield_DEPENDENCIES) - @rm -f sched_yield$(EXEEXT) - $(AM_V_CCLD)$(LINK) $(sched_yield_OBJECTS) $(sched_yield_LDADD) $(LIBS) -@@ -9127,6 +9562,10 @@ - @rm -f signal_receive$(EXEEXT) - $(AM_V_CCLD)$(LINK) $(signal_receive_OBJECTS) $(signal_receive_LDADD) $(LIBS) - -+signal_receive--pidns-translation$(EXEEXT): $(signal_receive__pidns_translation_OBJECTS) $(signal_receive__pidns_translation_DEPENDENCIES) $(EXTRA_signal_receive__pidns_translation_DEPENDENCIES) -+ @rm -f signal_receive--pidns-translation$(EXEEXT) -+ $(AM_V_CCLD)$(LINK) $(signal_receive__pidns_translation_OBJECTS) $(signal_receive__pidns_translation_LDADD) $(LIBS) -+ - signalfd4$(EXEEXT): $(signalfd4_OBJECTS) $(signalfd4_DEPENDENCIES) $(EXTRA_signalfd4_DEPENDENCIES) - @rm -f signalfd4$(EXEEXT) - $(AM_V_CCLD)$(LINK) $(signalfd4_OBJECTS) $(signalfd4_LDADD) $(LIBS) -@@ -9163,6 +9602,10 @@ - @rm -f so_peercred$(EXEEXT) - $(AM_V_CCLD)$(LINK) $(so_peercred_OBJECTS) $(so_peercred_LDADD) $(LIBS) - -+so_peercred--pidns-translation$(EXEEXT): $(so_peercred__pidns_translation_OBJECTS) $(so_peercred__pidns_translation_DEPENDENCIES) $(EXTRA_so_peercred__pidns_translation_DEPENDENCIES) -+ @rm -f so_peercred--pidns-translation$(EXEEXT) -+ $(AM_V_CCLD)$(LINK) $(so_peercred__pidns_translation_OBJECTS) $(so_peercred__pidns_translation_LDADD) $(LIBS) -+ - so_peercred-Xabbrev$(EXEEXT): $(so_peercred_Xabbrev_OBJECTS) $(so_peercred_Xabbrev_DEPENDENCIES) $(EXTRA_so_peercred_Xabbrev_DEPENDENCIES) - @rm -f so_peercred-Xabbrev$(EXEEXT) - $(AM_V_CCLD)$(LINK) $(so_peercred_Xabbrev_OBJECTS) $(so_peercred_Xabbrev_LDADD) $(LIBS) -@@ -9367,6 +9810,10 @@ - @rm -f tgkill$(EXEEXT) - $(AM_V_CCLD)$(LINK) $(tgkill_OBJECTS) $(tgkill_LDADD) $(LIBS) - -+tgkill--pidns-translation$(EXEEXT): $(tgkill__pidns_translation_OBJECTS) $(tgkill__pidns_translation_DEPENDENCIES) $(EXTRA_tgkill__pidns_translation_DEPENDENCIES) -+ @rm -f tgkill--pidns-translation$(EXEEXT) -+ $(AM_V_CCLD)$(LINK) $(tgkill__pidns_translation_OBJECTS) $(tgkill__pidns_translation_LDADD) $(LIBS) -+ - threads-execve$(EXEEXT): $(threads_execve_OBJECTS) $(threads_execve_DEPENDENCIES) $(EXTRA_threads_execve_DEPENDENCIES) - @rm -f threads-execve$(EXEEXT) - $(AM_V_CCLD)$(LINK) $(threads_execve_OBJECTS) $(threads_execve_LDADD) $(LIBS) -@@ -9415,10 +9862,18 @@ - @rm -f tkill$(EXEEXT) - $(AM_V_CCLD)$(LINK) $(tkill_OBJECTS) $(tkill_LDADD) $(LIBS) - -+tkill--pidns-translation$(EXEEXT): $(tkill__pidns_translation_OBJECTS) $(tkill__pidns_translation_DEPENDENCIES) $(EXTRA_tkill__pidns_translation_DEPENDENCIES) -+ @rm -f tkill--pidns-translation$(EXEEXT) -+ $(AM_V_CCLD)$(LINK) $(tkill__pidns_translation_OBJECTS) $(tkill__pidns_translation_LDADD) $(LIBS) -+ - tracer_ppid_pgid_sid$(EXEEXT): $(tracer_ppid_pgid_sid_OBJECTS) $(tracer_ppid_pgid_sid_DEPENDENCIES) $(EXTRA_tracer_ppid_pgid_sid_DEPENDENCIES) - @rm -f tracer_ppid_pgid_sid$(EXEEXT) - $(AM_V_CCLD)$(LINK) $(tracer_ppid_pgid_sid_OBJECTS) $(tracer_ppid_pgid_sid_LDADD) $(LIBS) - -+trie_test$(EXEEXT): $(trie_test_OBJECTS) $(trie_test_DEPENDENCIES) $(EXTRA_trie_test_DEPENDENCIES) -+ @rm -f trie_test$(EXEEXT) -+ $(AM_V_CCLD)$(trie_test_LINK) $(trie_test_OBJECTS) $(trie_test_LDADD) $(LIBS) -+ - truncate$(EXEEXT): $(truncate_OBJECTS) $(truncate_DEPENDENCIES) $(EXTRA_truncate_DEPENDENCIES) - @rm -f truncate$(EXEEXT) - $(AM_V_CCLD)$(LINK) $(truncate_OBJECTS) $(truncate_LDADD) $(LIBS) -@@ -9579,6 +10034,10 @@ - @rm -f xet_robust_list$(EXEEXT) - $(AM_V_CCLD)$(LINK) $(xet_robust_list_OBJECTS) $(xet_robust_list_LDADD) $(LIBS) - -+xet_robust_list--pidns-translation$(EXEEXT): $(xet_robust_list__pidns_translation_OBJECTS) $(xet_robust_list__pidns_translation_DEPENDENCIES) $(EXTRA_xet_robust_list__pidns_translation_DEPENDENCIES) -+ @rm -f xet_robust_list--pidns-translation$(EXEEXT) -+ $(AM_V_CCLD)$(LINK) $(xet_robust_list__pidns_translation_OBJECTS) $(xet_robust_list__pidns_translation_LDADD) $(LIBS) -+ - xet_thread_area_x86$(EXEEXT): $(xet_thread_area_x86_OBJECTS) $(xet_thread_area_x86_DEPENDENCIES) $(EXTRA_xet_thread_area_x86_DEPENDENCIES) - @rm -f xet_thread_area_x86$(EXEEXT) - $(AM_V_CCLD)$(LINK) $(xet_thread_area_x86_OBJECTS) $(xet_thread_area_x86_LDADD) $(LIBS) -@@ -9591,10 +10050,18 @@ - @rm -f xetpgid$(EXEEXT) - $(AM_V_CCLD)$(LINK) $(xetpgid_OBJECTS) $(xetpgid_LDADD) $(LIBS) - -+xetpgid--pidns-translation$(EXEEXT): $(xetpgid__pidns_translation_OBJECTS) $(xetpgid__pidns_translation_DEPENDENCIES) $(EXTRA_xetpgid__pidns_translation_DEPENDENCIES) -+ @rm -f xetpgid--pidns-translation$(EXEEXT) -+ $(AM_V_CCLD)$(LINK) $(xetpgid__pidns_translation_OBJECTS) $(xetpgid__pidns_translation_LDADD) $(LIBS) -+ - xetpriority$(EXEEXT): $(xetpriority_OBJECTS) $(xetpriority_DEPENDENCIES) $(EXTRA_xetpriority_DEPENDENCIES) - @rm -f xetpriority$(EXEEXT) - $(AM_V_CCLD)$(LINK) $(xetpriority_OBJECTS) $(xetpriority_LDADD) $(LIBS) - -+xetpriority--pidns-translation$(EXEEXT): $(xetpriority__pidns_translation_OBJECTS) $(xetpriority__pidns_translation_DEPENDENCIES) $(EXTRA_xetpriority__pidns_translation_DEPENDENCIES) -+ @rm -f xetpriority--pidns-translation$(EXEEXT) -+ $(AM_V_CCLD)$(LINK) $(xetpriority__pidns_translation_OBJECTS) $(xetpriority__pidns_translation_LDADD) $(LIBS) -+ - xettimeofday$(EXEEXT): $(xettimeofday_OBJECTS) $(xettimeofday_DEPENDENCIES) $(EXTRA_xettimeofday_DEPENDENCIES) - @rm -f xettimeofday$(EXEEXT) - $(AM_V_CCLD)$(LINK) $(xettimeofday_OBJECTS) $(xettimeofday_LDADD) $(LIBS) -@@ -9714,7 +10181,9 @@ - @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/fchown.Po@am__quote@ # am--include-marker - @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/fchown32.Po@am__quote@ # am--include-marker - @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/fchownat.Po@am__quote@ # am--include-marker -+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/fcntl--pidns-translation.Po@am__quote@ # am--include-marker - @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/fcntl.Po@am__quote@ # am--include-marker -+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/fcntl64--pidns-translation.Po@am__quote@ # am--include-marker - @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/fcntl64.Po@am__quote@ # am--include-marker - @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/fdatasync.Po@am__quote@ # am--include-marker - @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/fflush.Po@am__quote@ # am--include-marker -@@ -9725,6 +10194,7 @@ - @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/filter_seccomp-perf.Po@am__quote@ # am--include-marker - @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/finit_module.Po@am__quote@ # am--include-marker - @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/flock.Po@am__quote@ # am--include-marker -+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/fork--pidns-translation.Po@am__quote@ # am--include-marker - @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/fork-f.Po@am__quote@ # am--include-marker - @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/fsconfig-P.Po@am__quote@ # am--include-marker - @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/fsconfig.Po@am__quote@ # am--include-marker -@@ -9766,7 +10236,9 @@ - @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/getgroups.Po@am__quote@ # am--include-marker - @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/getgroups32.Po@am__quote@ # am--include-marker - @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/getpeername.Po@am__quote@ # am--include-marker -+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/getpgrp--pidns-translation.Po@am__quote@ # am--include-marker - @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/getpgrp.Po@am__quote@ # am--include-marker -+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/getpid--pidns-translation.Po@am__quote@ # am--include-marker - @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/getpid.Po@am__quote@ # am--include-marker - @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/getppid.Po@am__quote@ # am--include-marker - @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/getrandom.Po@am__quote@ # am--include-marker -@@ -9776,8 +10248,10 @@ - @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/getresuid32.Po@am__quote@ # am--include-marker - @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/getrlimit.Po@am__quote@ # am--include-marker - @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/getrusage.Po@am__quote@ # am--include-marker -+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/getsid--pidns-translation.Po@am__quote@ # am--include-marker - @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/getsid.Po@am__quote@ # am--include-marker - @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/getsockname.Po@am__quote@ # am--include-marker -+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/gettid--pidns-translation.Po@am__quote@ # am--include-marker - @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/gettid.Po@am__quote@ # am--include-marker - @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/getuid.Po@am__quote@ # am--include-marker - @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/getuid32.Po@am__quote@ # am--include-marker -@@ -9798,6 +10272,7 @@ - @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/io_uring_register.Po@am__quote@ # am--include-marker - @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/io_uring_setup.Po@am__quote@ # am--include-marker - @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ioctl.Po@am__quote@ # am--include-marker -+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ioctl_block--pidns-translation.Po@am__quote@ # am--include-marker - @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ioctl_block.Po@am__quote@ # am--include-marker - @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ioctl_dm-v.Po@am__quote@ # am--include-marker - @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ioctl_dm.Po@am__quote@ # am--include-marker -@@ -9873,6 +10348,7 @@ - @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ioctl_watchdog.Po@am__quote@ # am--include-marker - @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ioperm.Po@am__quote@ # am--include-marker - @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/iopl.Po@am__quote@ # am--include-marker -+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ioprio--pidns-translation.Po@am__quote@ # am--include-marker - @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ioprio-Xabbrev.Po@am__quote@ # am--include-marker - @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ioprio-Xraw.Po@am__quote@ # am--include-marker - @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ioprio-Xverbose.Po@am__quote@ # am--include-marker -@@ -9896,6 +10372,7 @@ - @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ipc_shm-Xverbose.Po@am__quote@ # am--include-marker - @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ipc_shm.Po@am__quote@ # am--include-marker - @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/is_linux_mips_n64.Po@am__quote@ # am--include-marker -+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/kcmp-y--pidns-translation.Po@am__quote@ # am--include-marker - @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/kcmp-y.Po@am__quote@ # am--include-marker - @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/kcmp.Po@am__quote@ # am--include-marker - @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/kern_features.Po@am__quote@ # am--include-marker -@@ -9909,6 +10386,7 @@ - @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/keyctl-Xraw.Po@am__quote@ # am--include-marker - @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/keyctl-Xverbose.Po@am__quote@ # am--include-marker - @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/keyctl.Po@am__quote@ # am--include-marker -+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/kill--pidns-translation.Po@am__quote@ # am--include-marker - @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/kill.Po@am__quote@ # am--include-marker - @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/kill_child.Po@am__quote@ # am--include-marker - @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ksysent.Po@am__quote@ # am--include-marker -@@ -9946,6 +10424,7 @@ - @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libtests_a-test_printstrn.Po@am__quote@ # am--include-marker - @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libtests_a-test_ucopy.Po@am__quote@ # am--include-marker - @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libtests_a-tprintf.Po@am__quote@ # am--include-marker -+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libtests_a-xmalloc_for_tests.Po@am__quote@ # am--include-marker - @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/link.Po@am__quote@ # am--include-marker - @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/linkat.Po@am__quote@ # am--include-marker - @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/list_sigaction_signum.Po@am__quote@ # am--include-marker -@@ -9968,6 +10447,7 @@ - @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/memfd_create-Xraw.Po@am__quote@ # am--include-marker - @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/memfd_create-Xverbose.Po@am__quote@ # am--include-marker - @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/memfd_create.Po@am__quote@ # am--include-marker -+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/migrate_pages--pidns-translation.Po@am__quote@ # am--include-marker - @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/migrate_pages.Po@am__quote@ # am--include-marker - @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/mincore.Po@am__quote@ # am--include-marker - @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/mkdir.Po@am__quote@ # am--include-marker -@@ -9996,6 +10476,7 @@ - @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/mount.Po@am__quote@ # am--include-marker - @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/move_mount-P.Po@am__quote@ # am--include-marker - @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/move_mount.Po@am__quote@ # am--include-marker -+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/move_pages--pidns-translation.Po@am__quote@ # am--include-marker - @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/move_pages-Xabbrev.Po@am__quote@ # am--include-marker - @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/move_pages-Xraw.Po@am__quote@ # am--include-marker - @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/move_pages-Xverbose.Po@am__quote@ # am--include-marker -@@ -10019,6 +10500,7 @@ - @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/net-packet_mreq-Xraw.Po@am__quote@ # am--include-marker - @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/net-packet_mreq-Xverbose.Po@am__quote@ # am--include-marker - @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/net-packet_mreq.Po@am__quote@ # am--include-marker -+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/net-sockaddr--pidns-translation.Po@am__quote@ # am--include-marker - @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/net-sockaddr.Po@am__quote@ # am--include-marker - @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/net-tpacket_req.Po@am__quote@ # am--include-marker - @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/net-tpacket_stats-success.Po@am__quote@ # am--include-marker -@@ -10028,6 +10510,7 @@ - @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/net-yy-inet6.Po@am__quote@ # am--include-marker - @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/net-yy-netlink.Po@am__quote@ # am--include-marker - @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/net-yy-unix.Po@am__quote@ # am--include-marker -+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/netlink_audit--pidns-translation.Po@am__quote@ # am--include-marker - @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/netlink_audit.Po@am__quote@ # am--include-marker - @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/netlink_crypto.Po@am__quote@ # am--include-marker - @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/netlink_generic.Po@am__quote@ # am--include-marker -@@ -10132,11 +10615,14 @@ - @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/pidfd_open--decode-fd-path.Po@am__quote@ # am--include-marker - @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/pidfd_open--decode-fd-pidfd.Po@am__quote@ # am--include-marker - @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/pidfd_open--decode-fd-socket.Po@am__quote@ # am--include-marker -+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/pidfd_open--pidns-translation.Po@am__quote@ # am--include-marker - @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/pidfd_open-P.Po@am__quote@ # am--include-marker - @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/pidfd_open-y.Po@am__quote@ # am--include-marker - @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/pidfd_open-yy.Po@am__quote@ # am--include-marker - @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/pidfd_open.Po@am__quote@ # am--include-marker -+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/pidfd_send_signal--pidns-translation.Po@am__quote@ # am--include-marker - @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/pidfd_send_signal.Po@am__quote@ # am--include-marker -+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/pidns-cache.Po@am__quote@ # am--include-marker - @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/pipe.Po@am__quote@ # am--include-marker - @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/pipe2.Po@am__quote@ # am--include-marker - @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/pkey_alloc.Po@am__quote@ # am--include-marker -@@ -10174,8 +10660,11 @@ - @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/printstrn-umoven-peekdata.Po@am__quote@ # am--include-marker - @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/printstrn-umoven-undumpable.Po@am__quote@ # am--include-marker - @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/printstrn-umoven.Po@am__quote@ # am--include-marker -+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/prlimit64--pidns-translation.Po@am__quote@ # am--include-marker - @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/prlimit64.Po@am__quote@ # am--include-marker -+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/process_vm_readv--pidns-translation.Po@am__quote@ # am--include-marker - @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/process_vm_readv.Po@am__quote@ # am--include-marker -+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/process_vm_writev--pidns-translation.Po@am__quote@ # am--include-marker - @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/process_vm_writev.Po@am__quote@ # am--include-marker - @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/pselect6.Po@am__quote@ # am--include-marker - @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ptrace.Po@am__quote@ # am--include-marker -@@ -10224,10 +10713,12 @@ - @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/rt_sigaction.Po@am__quote@ # am--include-marker - @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/rt_sigpending.Po@am__quote@ # am--include-marker - @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/rt_sigprocmask.Po@am__quote@ # am--include-marker -+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/rt_sigqueueinfo--pidns-translation.Po@am__quote@ # am--include-marker - @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/rt_sigqueueinfo.Po@am__quote@ # am--include-marker - @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/rt_sigreturn.Po@am__quote@ # am--include-marker - @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/rt_sigsuspend.Po@am__quote@ # am--include-marker - @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/rt_sigtimedwait.Po@am__quote@ # am--include-marker -+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/rt_tgsigqueueinfo--pidns-translation.Po@am__quote@ # am--include-marker - @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/rt_tgsigqueueinfo.Po@am__quote@ # am--include-marker - @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/run_expect_termsig.Po@am__quote@ # am--include-marker - @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/s390_guarded_storage-v.Po@am__quote@ # am--include-marker -@@ -10238,9 +10729,13 @@ - @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/s390_sthyi.Po@am__quote@ # am--include-marker - @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/sched_get_priority_mxx.Po@am__quote@ # am--include-marker - @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/sched_rr_get_interval.Po@am__quote@ # am--include-marker -+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/sched_xetaffinity--pidns-translation.Po@am__quote@ # am--include-marker - @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/sched_xetaffinity.Po@am__quote@ # am--include-marker -+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/sched_xetattr--pidns-translation.Po@am__quote@ # am--include-marker - @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/sched_xetattr.Po@am__quote@ # am--include-marker -+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/sched_xetparam--pidns-translation.Po@am__quote@ # am--include-marker - @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/sched_xetparam.Po@am__quote@ # am--include-marker -+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/sched_xetscheduler--pidns-translation.Po@am__quote@ # am--include-marker - @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/sched_xetscheduler.Po@am__quote@ # am--include-marker - @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/sched_yield.Po@am__quote@ # am--include-marker - @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/scm_rights.Po@am__quote@ # am--include-marker -@@ -10294,6 +10789,7 @@ - @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/sigaltstack.Po@am__quote@ # am--include-marker - @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/siginfo.Po@am__quote@ # am--include-marker - @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/signal.Po@am__quote@ # am--include-marker -+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/signal_receive--pidns-translation.Po@am__quote@ # am--include-marker - @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/signal_receive.Po@am__quote@ # am--include-marker - @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/signalfd4.Po@am__quote@ # am--include-marker - @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/sigpending.Po@am__quote@ # am--include-marker -@@ -10303,6 +10799,7 @@ - @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/sleep.Po@am__quote@ # am--include-marker - @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/so_error.Po@am__quote@ # am--include-marker - @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/so_linger.Po@am__quote@ # am--include-marker -+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/so_peercred--pidns-translation.Po@am__quote@ # am--include-marker - @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/so_peercred-Xabbrev.Po@am__quote@ # am--include-marker - @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/so_peercred-Xraw.Po@am__quote@ # am--include-marker - @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/so_peercred-Xverbose.Po@am__quote@ # am--include-marker -@@ -10362,6 +10859,7 @@ - @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/syslog-success.Po@am__quote@ # am--include-marker - @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/syslog.Po@am__quote@ # am--include-marker - @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/tee.Po@am__quote@ # am--include-marker -+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/tgkill--pidns-translation.Po@am__quote@ # am--include-marker - @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/tgkill.Po@am__quote@ # am--include-marker - @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/threads-execve--quiet-thread-execve.Po@am__quote@ # am--include-marker - @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/threads-execve-q.Po@am__quote@ # am--include-marker -@@ -10374,6 +10872,7 @@ - @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/timerfd_xettime.Po@am__quote@ # am--include-marker - @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/times-fail.Po@am__quote@ # am--include-marker - @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/times.Po@am__quote@ # am--include-marker -+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/tkill--pidns-translation.Po@am__quote@ # am--include-marker - @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/tkill.Po@am__quote@ # am--include-marker - @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/tracer_ppid_pgid_sid.Po@am__quote@ # am--include-marker - @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/truncate.Po@am__quote@ # am--include-marker -@@ -10415,10 +10914,13 @@ - @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/waitpid.Po@am__quote@ # am--include-marker - @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/xattr-strings.Po@am__quote@ # am--include-marker - @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/xattr.Po@am__quote@ # am--include-marker -+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/xet_robust_list--pidns-translation.Po@am__quote@ # am--include-marker - @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/xet_robust_list.Po@am__quote@ # am--include-marker - @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/xet_thread_area_x86.Po@am__quote@ # am--include-marker - @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/xetitimer.Po@am__quote@ # am--include-marker -+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/xetpgid--pidns-translation.Po@am__quote@ # am--include-marker - @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/xetpgid.Po@am__quote@ # am--include-marker -+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/xetpriority--pidns-translation.Po@am__quote@ # am--include-marker - @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/xetpriority.Po@am__quote@ # am--include-marker - @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/xettimeofday.Po@am__quote@ # am--include-marker - @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/zeroargc.Po@am__quote@ # am--include-marker -@@ -10893,6 +11395,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-tprintf.obj `if test -f 'tprintf.c'; then $(CYGPATH_W) 'tprintf.c'; else $(CYGPATH_W) '$(srcdir)/tprintf.c'; fi` - -+libtests_a-xmalloc_for_tests.o: xmalloc_for_tests.c -+@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libtests_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT libtests_a-xmalloc_for_tests.o -MD -MP -MF $(DEPDIR)/libtests_a-xmalloc_for_tests.Tpo -c -o libtests_a-xmalloc_for_tests.o `test -f 'xmalloc_for_tests.c' || echo '$(srcdir)/'`xmalloc_for_tests.c -+@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libtests_a-xmalloc_for_tests.Tpo $(DEPDIR)/libtests_a-xmalloc_for_tests.Po -+@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='xmalloc_for_tests.c' object='libtests_a-xmalloc_for_tests.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-xmalloc_for_tests.o `test -f 'xmalloc_for_tests.c' || echo '$(srcdir)/'`xmalloc_for_tests.c -+ -+libtests_a-xmalloc_for_tests.obj: xmalloc_for_tests.c -+@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libtests_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT libtests_a-xmalloc_for_tests.obj -MD -MP -MF $(DEPDIR)/libtests_a-xmalloc_for_tests.Tpo -c -o libtests_a-xmalloc_for_tests.obj `if test -f 'xmalloc_for_tests.c'; then $(CYGPATH_W) 'xmalloc_for_tests.c'; else $(CYGPATH_W) '$(srcdir)/xmalloc_for_tests.c'; fi` -+@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libtests_a-xmalloc_for_tests.Tpo $(DEPDIR)/libtests_a-xmalloc_for_tests.Po -+@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='xmalloc_for_tests.c' object='libtests_a-xmalloc_for_tests.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-xmalloc_for_tests.obj `if test -f 'xmalloc_for_tests.c'; then $(CYGPATH_W) 'xmalloc_for_tests.c'; else $(CYGPATH_W) '$(srcdir)/xmalloc_for_tests.c'; fi` -+ - fstat64-fstat64.o: fstat64.c - @am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(fstat64_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT fstat64-fstat64.o -MD -MP -MF $(DEPDIR)/fstat64-fstat64.Tpo -c -o fstat64-fstat64.o `test -f 'fstat64.c' || echo '$(srcdir)/'`fstat64.c - @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/fstat64-fstat64.Tpo $(DEPDIR)/fstat64-fstat64.Po -@@ -11103,6 +11619,34 @@ - @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ - @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(statfs_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o statfs-statfs.obj `if test -f 'statfs.c'; then $(CYGPATH_W) 'statfs.c'; else $(CYGPATH_W) '$(srcdir)/statfs.c'; fi` - -+trie_test-trie_test.o: trie_test.c -+@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(trie_test_CPPFLAGS) $(CPPFLAGS) $(trie_test_CFLAGS) $(CFLAGS) -MT trie_test-trie_test.o -MD -MP -MF $(DEPDIR)/trie_test-trie_test.Tpo -c -o trie_test-trie_test.o `test -f 'trie_test.c' || echo '$(srcdir)/'`trie_test.c -+@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/trie_test-trie_test.Tpo $(DEPDIR)/trie_test-trie_test.Po -+@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='trie_test.c' object='trie_test-trie_test.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) $(trie_test_CPPFLAGS) $(CPPFLAGS) $(trie_test_CFLAGS) $(CFLAGS) -c -o trie_test-trie_test.o `test -f 'trie_test.c' || echo '$(srcdir)/'`trie_test.c -+ -+trie_test-trie_test.obj: trie_test.c -+@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(trie_test_CPPFLAGS) $(CPPFLAGS) $(trie_test_CFLAGS) $(CFLAGS) -MT trie_test-trie_test.obj -MD -MP -MF $(DEPDIR)/trie_test-trie_test.Tpo -c -o trie_test-trie_test.obj `if test -f 'trie_test.c'; then $(CYGPATH_W) 'trie_test.c'; else $(CYGPATH_W) '$(srcdir)/trie_test.c'; fi` -+@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/trie_test-trie_test.Tpo $(DEPDIR)/trie_test-trie_test.Po -+@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='trie_test.c' object='trie_test-trie_test.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) $(trie_test_CPPFLAGS) $(CPPFLAGS) $(trie_test_CFLAGS) $(CFLAGS) -c -o trie_test-trie_test.obj `if test -f 'trie_test.c'; then $(CYGPATH_W) 'trie_test.c'; else $(CYGPATH_W) '$(srcdir)/trie_test.c'; fi` -+ -+trie_test-trie_for_tests.o: trie_for_tests.c -+@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(trie_test_CPPFLAGS) $(CPPFLAGS) $(trie_test_CFLAGS) $(CFLAGS) -MT trie_test-trie_for_tests.o -MD -MP -MF $(DEPDIR)/trie_test-trie_for_tests.Tpo -c -o trie_test-trie_for_tests.o `test -f 'trie_for_tests.c' || echo '$(srcdir)/'`trie_for_tests.c -+@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/trie_test-trie_for_tests.Tpo $(DEPDIR)/trie_test-trie_for_tests.Po -+@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='trie_for_tests.c' object='trie_test-trie_for_tests.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) $(trie_test_CPPFLAGS) $(CPPFLAGS) $(trie_test_CFLAGS) $(CFLAGS) -c -o trie_test-trie_for_tests.o `test -f 'trie_for_tests.c' || echo '$(srcdir)/'`trie_for_tests.c -+ -+trie_test-trie_for_tests.obj: trie_for_tests.c -+@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(trie_test_CPPFLAGS) $(CPPFLAGS) $(trie_test_CFLAGS) $(CFLAGS) -MT trie_test-trie_for_tests.obj -MD -MP -MF $(DEPDIR)/trie_test-trie_for_tests.Tpo -c -o trie_test-trie_for_tests.obj `if test -f 'trie_for_tests.c'; then $(CYGPATH_W) 'trie_for_tests.c'; else $(CYGPATH_W) '$(srcdir)/trie_for_tests.c'; fi` -+@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/trie_test-trie_for_tests.Tpo $(DEPDIR)/trie_test-trie_for_tests.Po -+@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='trie_for_tests.c' object='trie_test-trie_for_tests.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) $(trie_test_CPPFLAGS) $(CPPFLAGS) $(trie_test_CFLAGS) $(CFLAGS) -c -o trie_test-trie_for_tests.obj `if test -f 'trie_for_tests.c'; then $(CYGPATH_W) 'trie_for_tests.c'; else $(CYGPATH_W) '$(srcdir)/trie_for_tests.c'; fi` -+ - truncate64-truncate64.o: truncate64.c - @am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(truncate64_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT truncate64-truncate64.o -MD -MP -MF $(DEPDIR)/truncate64-truncate64.Tpo -c -o truncate64-truncate64.o `test -f 'truncate64.c' || echo '$(srcdir)/'`truncate64.c - @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/truncate64-truncate64.Tpo $(DEPDIR)/truncate64-truncate64.Po -@@ -11551,7 +12095,9 @@ - -rm -f ./$(DEPDIR)/fchown.Po - -rm -f ./$(DEPDIR)/fchown32.Po - -rm -f ./$(DEPDIR)/fchownat.Po -+ -rm -f ./$(DEPDIR)/fcntl--pidns-translation.Po - -rm -f ./$(DEPDIR)/fcntl.Po -+ -rm -f ./$(DEPDIR)/fcntl64--pidns-translation.Po - -rm -f ./$(DEPDIR)/fcntl64.Po - -rm -f ./$(DEPDIR)/fdatasync.Po - -rm -f ./$(DEPDIR)/fflush.Po -@@ -11562,6 +12108,7 @@ - -rm -f ./$(DEPDIR)/filter_seccomp-perf.Po - -rm -f ./$(DEPDIR)/finit_module.Po - -rm -f ./$(DEPDIR)/flock.Po -+ -rm -f ./$(DEPDIR)/fork--pidns-translation.Po - -rm -f ./$(DEPDIR)/fork-f.Po - -rm -f ./$(DEPDIR)/fsconfig-P.Po - -rm -f ./$(DEPDIR)/fsconfig.Po -@@ -11603,7 +12150,9 @@ - -rm -f ./$(DEPDIR)/getgroups.Po - -rm -f ./$(DEPDIR)/getgroups32.Po - -rm -f ./$(DEPDIR)/getpeername.Po -+ -rm -f ./$(DEPDIR)/getpgrp--pidns-translation.Po - -rm -f ./$(DEPDIR)/getpgrp.Po -+ -rm -f ./$(DEPDIR)/getpid--pidns-translation.Po - -rm -f ./$(DEPDIR)/getpid.Po - -rm -f ./$(DEPDIR)/getppid.Po - -rm -f ./$(DEPDIR)/getrandom.Po -@@ -11613,8 +12162,10 @@ - -rm -f ./$(DEPDIR)/getresuid32.Po - -rm -f ./$(DEPDIR)/getrlimit.Po - -rm -f ./$(DEPDIR)/getrusage.Po -+ -rm -f ./$(DEPDIR)/getsid--pidns-translation.Po - -rm -f ./$(DEPDIR)/getsid.Po - -rm -f ./$(DEPDIR)/getsockname.Po -+ -rm -f ./$(DEPDIR)/gettid--pidns-translation.Po - -rm -f ./$(DEPDIR)/gettid.Po - -rm -f ./$(DEPDIR)/getuid.Po - -rm -f ./$(DEPDIR)/getuid32.Po -@@ -11635,6 +12186,7 @@ - -rm -f ./$(DEPDIR)/io_uring_register.Po - -rm -f ./$(DEPDIR)/io_uring_setup.Po - -rm -f ./$(DEPDIR)/ioctl.Po -+ -rm -f ./$(DEPDIR)/ioctl_block--pidns-translation.Po - -rm -f ./$(DEPDIR)/ioctl_block.Po - -rm -f ./$(DEPDIR)/ioctl_dm-v.Po - -rm -f ./$(DEPDIR)/ioctl_dm.Po -@@ -11710,6 +12262,7 @@ - -rm -f ./$(DEPDIR)/ioctl_watchdog.Po - -rm -f ./$(DEPDIR)/ioperm.Po - -rm -f ./$(DEPDIR)/iopl.Po -+ -rm -f ./$(DEPDIR)/ioprio--pidns-translation.Po - -rm -f ./$(DEPDIR)/ioprio-Xabbrev.Po - -rm -f ./$(DEPDIR)/ioprio-Xraw.Po - -rm -f ./$(DEPDIR)/ioprio-Xverbose.Po -@@ -11733,6 +12286,7 @@ - -rm -f ./$(DEPDIR)/ipc_shm-Xverbose.Po - -rm -f ./$(DEPDIR)/ipc_shm.Po - -rm -f ./$(DEPDIR)/is_linux_mips_n64.Po -+ -rm -f ./$(DEPDIR)/kcmp-y--pidns-translation.Po - -rm -f ./$(DEPDIR)/kcmp-y.Po - -rm -f ./$(DEPDIR)/kcmp.Po - -rm -f ./$(DEPDIR)/kern_features.Po -@@ -11746,6 +12300,7 @@ - -rm -f ./$(DEPDIR)/keyctl-Xraw.Po - -rm -f ./$(DEPDIR)/keyctl-Xverbose.Po - -rm -f ./$(DEPDIR)/keyctl.Po -+ -rm -f ./$(DEPDIR)/kill--pidns-translation.Po - -rm -f ./$(DEPDIR)/kill.Po - -rm -f ./$(DEPDIR)/kill_child.Po - -rm -f ./$(DEPDIR)/ksysent.Po -@@ -11783,6 +12338,7 @@ - -rm -f ./$(DEPDIR)/libtests_a-test_printstrn.Po - -rm -f ./$(DEPDIR)/libtests_a-test_ucopy.Po - -rm -f ./$(DEPDIR)/libtests_a-tprintf.Po -+ -rm -f ./$(DEPDIR)/libtests_a-xmalloc_for_tests.Po - -rm -f ./$(DEPDIR)/link.Po - -rm -f ./$(DEPDIR)/linkat.Po - -rm -f ./$(DEPDIR)/list_sigaction_signum.Po -@@ -11805,6 +12361,7 @@ - -rm -f ./$(DEPDIR)/memfd_create-Xraw.Po - -rm -f ./$(DEPDIR)/memfd_create-Xverbose.Po - -rm -f ./$(DEPDIR)/memfd_create.Po -+ -rm -f ./$(DEPDIR)/migrate_pages--pidns-translation.Po - -rm -f ./$(DEPDIR)/migrate_pages.Po - -rm -f ./$(DEPDIR)/mincore.Po - -rm -f ./$(DEPDIR)/mkdir.Po -@@ -11833,6 +12390,7 @@ - -rm -f ./$(DEPDIR)/mount.Po - -rm -f ./$(DEPDIR)/move_mount-P.Po - -rm -f ./$(DEPDIR)/move_mount.Po -+ -rm -f ./$(DEPDIR)/move_pages--pidns-translation.Po - -rm -f ./$(DEPDIR)/move_pages-Xabbrev.Po - -rm -f ./$(DEPDIR)/move_pages-Xraw.Po - -rm -f ./$(DEPDIR)/move_pages-Xverbose.Po -@@ -11856,6 +12414,7 @@ - -rm -f ./$(DEPDIR)/net-packet_mreq-Xraw.Po - -rm -f ./$(DEPDIR)/net-packet_mreq-Xverbose.Po - -rm -f ./$(DEPDIR)/net-packet_mreq.Po -+ -rm -f ./$(DEPDIR)/net-sockaddr--pidns-translation.Po - -rm -f ./$(DEPDIR)/net-sockaddr.Po - -rm -f ./$(DEPDIR)/net-tpacket_req.Po - -rm -f ./$(DEPDIR)/net-tpacket_stats-success.Po -@@ -11865,6 +12424,7 @@ - -rm -f ./$(DEPDIR)/net-yy-inet6.Po - -rm -f ./$(DEPDIR)/net-yy-netlink.Po - -rm -f ./$(DEPDIR)/net-yy-unix.Po -+ -rm -f ./$(DEPDIR)/netlink_audit--pidns-translation.Po - -rm -f ./$(DEPDIR)/netlink_audit.Po - -rm -f ./$(DEPDIR)/netlink_crypto.Po - -rm -f ./$(DEPDIR)/netlink_generic.Po -@@ -11969,11 +12529,14 @@ - -rm -f ./$(DEPDIR)/pidfd_open--decode-fd-path.Po - -rm -f ./$(DEPDIR)/pidfd_open--decode-fd-pidfd.Po - -rm -f ./$(DEPDIR)/pidfd_open--decode-fd-socket.Po -+ -rm -f ./$(DEPDIR)/pidfd_open--pidns-translation.Po - -rm -f ./$(DEPDIR)/pidfd_open-P.Po - -rm -f ./$(DEPDIR)/pidfd_open-y.Po - -rm -f ./$(DEPDIR)/pidfd_open-yy.Po - -rm -f ./$(DEPDIR)/pidfd_open.Po -+ -rm -f ./$(DEPDIR)/pidfd_send_signal--pidns-translation.Po - -rm -f ./$(DEPDIR)/pidfd_send_signal.Po -+ -rm -f ./$(DEPDIR)/pidns-cache.Po - -rm -f ./$(DEPDIR)/pipe.Po - -rm -f ./$(DEPDIR)/pipe2.Po - -rm -f ./$(DEPDIR)/pkey_alloc.Po -@@ -12011,8 +12574,11 @@ - -rm -f ./$(DEPDIR)/printstrn-umoven-peekdata.Po - -rm -f ./$(DEPDIR)/printstrn-umoven-undumpable.Po - -rm -f ./$(DEPDIR)/printstrn-umoven.Po -+ -rm -f ./$(DEPDIR)/prlimit64--pidns-translation.Po - -rm -f ./$(DEPDIR)/prlimit64.Po -+ -rm -f ./$(DEPDIR)/process_vm_readv--pidns-translation.Po - -rm -f ./$(DEPDIR)/process_vm_readv.Po -+ -rm -f ./$(DEPDIR)/process_vm_writev--pidns-translation.Po - -rm -f ./$(DEPDIR)/process_vm_writev.Po - -rm -f ./$(DEPDIR)/pselect6.Po - -rm -f ./$(DEPDIR)/ptrace.Po -@@ -12061,10 +12627,12 @@ - -rm -f ./$(DEPDIR)/rt_sigaction.Po - -rm -f ./$(DEPDIR)/rt_sigpending.Po - -rm -f ./$(DEPDIR)/rt_sigprocmask.Po -+ -rm -f ./$(DEPDIR)/rt_sigqueueinfo--pidns-translation.Po - -rm -f ./$(DEPDIR)/rt_sigqueueinfo.Po - -rm -f ./$(DEPDIR)/rt_sigreturn.Po - -rm -f ./$(DEPDIR)/rt_sigsuspend.Po - -rm -f ./$(DEPDIR)/rt_sigtimedwait.Po -+ -rm -f ./$(DEPDIR)/rt_tgsigqueueinfo--pidns-translation.Po - -rm -f ./$(DEPDIR)/rt_tgsigqueueinfo.Po - -rm -f ./$(DEPDIR)/run_expect_termsig.Po - -rm -f ./$(DEPDIR)/s390_guarded_storage-v.Po -@@ -12075,9 +12643,13 @@ - -rm -f ./$(DEPDIR)/s390_sthyi.Po - -rm -f ./$(DEPDIR)/sched_get_priority_mxx.Po - -rm -f ./$(DEPDIR)/sched_rr_get_interval.Po -+ -rm -f ./$(DEPDIR)/sched_xetaffinity--pidns-translation.Po - -rm -f ./$(DEPDIR)/sched_xetaffinity.Po -+ -rm -f ./$(DEPDIR)/sched_xetattr--pidns-translation.Po - -rm -f ./$(DEPDIR)/sched_xetattr.Po -+ -rm -f ./$(DEPDIR)/sched_xetparam--pidns-translation.Po - -rm -f ./$(DEPDIR)/sched_xetparam.Po -+ -rm -f ./$(DEPDIR)/sched_xetscheduler--pidns-translation.Po - -rm -f ./$(DEPDIR)/sched_xetscheduler.Po - -rm -f ./$(DEPDIR)/sched_yield.Po - -rm -f ./$(DEPDIR)/scm_rights.Po -@@ -12131,6 +12703,7 @@ - -rm -f ./$(DEPDIR)/sigaltstack.Po - -rm -f ./$(DEPDIR)/siginfo.Po - -rm -f ./$(DEPDIR)/signal.Po -+ -rm -f ./$(DEPDIR)/signal_receive--pidns-translation.Po - -rm -f ./$(DEPDIR)/signal_receive.Po - -rm -f ./$(DEPDIR)/signalfd4.Po - -rm -f ./$(DEPDIR)/sigpending.Po -@@ -12140,6 +12713,7 @@ - -rm -f ./$(DEPDIR)/sleep.Po - -rm -f ./$(DEPDIR)/so_error.Po - -rm -f ./$(DEPDIR)/so_linger.Po -+ -rm -f ./$(DEPDIR)/so_peercred--pidns-translation.Po - -rm -f ./$(DEPDIR)/so_peercred-Xabbrev.Po - -rm -f ./$(DEPDIR)/so_peercred-Xraw.Po - -rm -f ./$(DEPDIR)/so_peercred-Xverbose.Po -@@ -12199,6 +12773,7 @@ - -rm -f ./$(DEPDIR)/syslog-success.Po - -rm -f ./$(DEPDIR)/syslog.Po - -rm -f ./$(DEPDIR)/tee.Po -+ -rm -f ./$(DEPDIR)/tgkill--pidns-translation.Po - -rm -f ./$(DEPDIR)/tgkill.Po - -rm -f ./$(DEPDIR)/threads-execve--quiet-thread-execve.Po - -rm -f ./$(DEPDIR)/threads-execve-q.Po -@@ -12211,6 +12786,7 @@ - -rm -f ./$(DEPDIR)/timerfd_xettime.Po - -rm -f ./$(DEPDIR)/times-fail.Po - -rm -f ./$(DEPDIR)/times.Po -+ -rm -f ./$(DEPDIR)/tkill--pidns-translation.Po - -rm -f ./$(DEPDIR)/tkill.Po - -rm -f ./$(DEPDIR)/tracer_ppid_pgid_sid.Po - -rm -f ./$(DEPDIR)/truncate.Po -@@ -12252,10 +12828,13 @@ - -rm -f ./$(DEPDIR)/waitpid.Po - -rm -f ./$(DEPDIR)/xattr-strings.Po - -rm -f ./$(DEPDIR)/xattr.Po -+ -rm -f ./$(DEPDIR)/xet_robust_list--pidns-translation.Po - -rm -f ./$(DEPDIR)/xet_robust_list.Po - -rm -f ./$(DEPDIR)/xet_thread_area_x86.Po - -rm -f ./$(DEPDIR)/xetitimer.Po -+ -rm -f ./$(DEPDIR)/xetpgid--pidns-translation.Po - -rm -f ./$(DEPDIR)/xetpgid.Po -+ -rm -f ./$(DEPDIR)/xetpriority--pidns-translation.Po - -rm -f ./$(DEPDIR)/xetpriority.Po - -rm -f ./$(DEPDIR)/xettimeofday.Po - -rm -f ./$(DEPDIR)/zeroargc.Po -@@ -12409,7 +12988,9 @@ - -rm -f ./$(DEPDIR)/fchown.Po - -rm -f ./$(DEPDIR)/fchown32.Po - -rm -f ./$(DEPDIR)/fchownat.Po -+ -rm -f ./$(DEPDIR)/fcntl--pidns-translation.Po - -rm -f ./$(DEPDIR)/fcntl.Po -+ -rm -f ./$(DEPDIR)/fcntl64--pidns-translation.Po - -rm -f ./$(DEPDIR)/fcntl64.Po - -rm -f ./$(DEPDIR)/fdatasync.Po - -rm -f ./$(DEPDIR)/fflush.Po -@@ -12420,6 +13001,7 @@ - -rm -f ./$(DEPDIR)/filter_seccomp-perf.Po - -rm -f ./$(DEPDIR)/finit_module.Po - -rm -f ./$(DEPDIR)/flock.Po -+ -rm -f ./$(DEPDIR)/fork--pidns-translation.Po - -rm -f ./$(DEPDIR)/fork-f.Po - -rm -f ./$(DEPDIR)/fsconfig-P.Po - -rm -f ./$(DEPDIR)/fsconfig.Po -@@ -12461,7 +13043,9 @@ - -rm -f ./$(DEPDIR)/getgroups.Po - -rm -f ./$(DEPDIR)/getgroups32.Po - -rm -f ./$(DEPDIR)/getpeername.Po -+ -rm -f ./$(DEPDIR)/getpgrp--pidns-translation.Po - -rm -f ./$(DEPDIR)/getpgrp.Po -+ -rm -f ./$(DEPDIR)/getpid--pidns-translation.Po - -rm -f ./$(DEPDIR)/getpid.Po - -rm -f ./$(DEPDIR)/getppid.Po - -rm -f ./$(DEPDIR)/getrandom.Po -@@ -12471,8 +13055,10 @@ - -rm -f ./$(DEPDIR)/getresuid32.Po - -rm -f ./$(DEPDIR)/getrlimit.Po - -rm -f ./$(DEPDIR)/getrusage.Po -+ -rm -f ./$(DEPDIR)/getsid--pidns-translation.Po - -rm -f ./$(DEPDIR)/getsid.Po - -rm -f ./$(DEPDIR)/getsockname.Po -+ -rm -f ./$(DEPDIR)/gettid--pidns-translation.Po - -rm -f ./$(DEPDIR)/gettid.Po - -rm -f ./$(DEPDIR)/getuid.Po - -rm -f ./$(DEPDIR)/getuid32.Po -@@ -12493,6 +13079,7 @@ - -rm -f ./$(DEPDIR)/io_uring_register.Po - -rm -f ./$(DEPDIR)/io_uring_setup.Po - -rm -f ./$(DEPDIR)/ioctl.Po -+ -rm -f ./$(DEPDIR)/ioctl_block--pidns-translation.Po - -rm -f ./$(DEPDIR)/ioctl_block.Po - -rm -f ./$(DEPDIR)/ioctl_dm-v.Po - -rm -f ./$(DEPDIR)/ioctl_dm.Po -@@ -12568,6 +13155,7 @@ - -rm -f ./$(DEPDIR)/ioctl_watchdog.Po - -rm -f ./$(DEPDIR)/ioperm.Po - -rm -f ./$(DEPDIR)/iopl.Po -+ -rm -f ./$(DEPDIR)/ioprio--pidns-translation.Po - -rm -f ./$(DEPDIR)/ioprio-Xabbrev.Po - -rm -f ./$(DEPDIR)/ioprio-Xraw.Po - -rm -f ./$(DEPDIR)/ioprio-Xverbose.Po -@@ -12591,6 +13179,7 @@ - -rm -f ./$(DEPDIR)/ipc_shm-Xverbose.Po - -rm -f ./$(DEPDIR)/ipc_shm.Po - -rm -f ./$(DEPDIR)/is_linux_mips_n64.Po -+ -rm -f ./$(DEPDIR)/kcmp-y--pidns-translation.Po - -rm -f ./$(DEPDIR)/kcmp-y.Po - -rm -f ./$(DEPDIR)/kcmp.Po - -rm -f ./$(DEPDIR)/kern_features.Po -@@ -12604,6 +13193,7 @@ - -rm -f ./$(DEPDIR)/keyctl-Xraw.Po - -rm -f ./$(DEPDIR)/keyctl-Xverbose.Po - -rm -f ./$(DEPDIR)/keyctl.Po -+ -rm -f ./$(DEPDIR)/kill--pidns-translation.Po - -rm -f ./$(DEPDIR)/kill.Po - -rm -f ./$(DEPDIR)/kill_child.Po - -rm -f ./$(DEPDIR)/ksysent.Po -@@ -12641,6 +13231,7 @@ - -rm -f ./$(DEPDIR)/libtests_a-test_printstrn.Po - -rm -f ./$(DEPDIR)/libtests_a-test_ucopy.Po - -rm -f ./$(DEPDIR)/libtests_a-tprintf.Po -+ -rm -f ./$(DEPDIR)/libtests_a-xmalloc_for_tests.Po - -rm -f ./$(DEPDIR)/link.Po - -rm -f ./$(DEPDIR)/linkat.Po - -rm -f ./$(DEPDIR)/list_sigaction_signum.Po -@@ -12663,6 +13254,7 @@ - -rm -f ./$(DEPDIR)/memfd_create-Xraw.Po - -rm -f ./$(DEPDIR)/memfd_create-Xverbose.Po - -rm -f ./$(DEPDIR)/memfd_create.Po -+ -rm -f ./$(DEPDIR)/migrate_pages--pidns-translation.Po - -rm -f ./$(DEPDIR)/migrate_pages.Po - -rm -f ./$(DEPDIR)/mincore.Po - -rm -f ./$(DEPDIR)/mkdir.Po -@@ -12691,6 +13283,7 @@ - -rm -f ./$(DEPDIR)/mount.Po - -rm -f ./$(DEPDIR)/move_mount-P.Po - -rm -f ./$(DEPDIR)/move_mount.Po -+ -rm -f ./$(DEPDIR)/move_pages--pidns-translation.Po - -rm -f ./$(DEPDIR)/move_pages-Xabbrev.Po - -rm -f ./$(DEPDIR)/move_pages-Xraw.Po - -rm -f ./$(DEPDIR)/move_pages-Xverbose.Po -@@ -12714,6 +13307,7 @@ - -rm -f ./$(DEPDIR)/net-packet_mreq-Xraw.Po - -rm -f ./$(DEPDIR)/net-packet_mreq-Xverbose.Po - -rm -f ./$(DEPDIR)/net-packet_mreq.Po -+ -rm -f ./$(DEPDIR)/net-sockaddr--pidns-translation.Po - -rm -f ./$(DEPDIR)/net-sockaddr.Po - -rm -f ./$(DEPDIR)/net-tpacket_req.Po - -rm -f ./$(DEPDIR)/net-tpacket_stats-success.Po -@@ -12723,6 +13317,7 @@ - -rm -f ./$(DEPDIR)/net-yy-inet6.Po - -rm -f ./$(DEPDIR)/net-yy-netlink.Po - -rm -f ./$(DEPDIR)/net-yy-unix.Po -+ -rm -f ./$(DEPDIR)/netlink_audit--pidns-translation.Po - -rm -f ./$(DEPDIR)/netlink_audit.Po - -rm -f ./$(DEPDIR)/netlink_crypto.Po - -rm -f ./$(DEPDIR)/netlink_generic.Po -@@ -12827,11 +13422,14 @@ - -rm -f ./$(DEPDIR)/pidfd_open--decode-fd-path.Po - -rm -f ./$(DEPDIR)/pidfd_open--decode-fd-pidfd.Po - -rm -f ./$(DEPDIR)/pidfd_open--decode-fd-socket.Po -+ -rm -f ./$(DEPDIR)/pidfd_open--pidns-translation.Po - -rm -f ./$(DEPDIR)/pidfd_open-P.Po - -rm -f ./$(DEPDIR)/pidfd_open-y.Po - -rm -f ./$(DEPDIR)/pidfd_open-yy.Po - -rm -f ./$(DEPDIR)/pidfd_open.Po -+ -rm -f ./$(DEPDIR)/pidfd_send_signal--pidns-translation.Po - -rm -f ./$(DEPDIR)/pidfd_send_signal.Po -+ -rm -f ./$(DEPDIR)/pidns-cache.Po - -rm -f ./$(DEPDIR)/pipe.Po - -rm -f ./$(DEPDIR)/pipe2.Po - -rm -f ./$(DEPDIR)/pkey_alloc.Po -@@ -12869,8 +13467,11 @@ - -rm -f ./$(DEPDIR)/printstrn-umoven-peekdata.Po - -rm -f ./$(DEPDIR)/printstrn-umoven-undumpable.Po - -rm -f ./$(DEPDIR)/printstrn-umoven.Po -+ -rm -f ./$(DEPDIR)/prlimit64--pidns-translation.Po - -rm -f ./$(DEPDIR)/prlimit64.Po -+ -rm -f ./$(DEPDIR)/process_vm_readv--pidns-translation.Po - -rm -f ./$(DEPDIR)/process_vm_readv.Po -+ -rm -f ./$(DEPDIR)/process_vm_writev--pidns-translation.Po - -rm -f ./$(DEPDIR)/process_vm_writev.Po - -rm -f ./$(DEPDIR)/pselect6.Po - -rm -f ./$(DEPDIR)/ptrace.Po -@@ -12919,10 +13520,12 @@ - -rm -f ./$(DEPDIR)/rt_sigaction.Po - -rm -f ./$(DEPDIR)/rt_sigpending.Po - -rm -f ./$(DEPDIR)/rt_sigprocmask.Po -+ -rm -f ./$(DEPDIR)/rt_sigqueueinfo--pidns-translation.Po - -rm -f ./$(DEPDIR)/rt_sigqueueinfo.Po - -rm -f ./$(DEPDIR)/rt_sigreturn.Po - -rm -f ./$(DEPDIR)/rt_sigsuspend.Po - -rm -f ./$(DEPDIR)/rt_sigtimedwait.Po -+ -rm -f ./$(DEPDIR)/rt_tgsigqueueinfo--pidns-translation.Po - -rm -f ./$(DEPDIR)/rt_tgsigqueueinfo.Po - -rm -f ./$(DEPDIR)/run_expect_termsig.Po - -rm -f ./$(DEPDIR)/s390_guarded_storage-v.Po -@@ -12933,9 +13536,13 @@ - -rm -f ./$(DEPDIR)/s390_sthyi.Po - -rm -f ./$(DEPDIR)/sched_get_priority_mxx.Po - -rm -f ./$(DEPDIR)/sched_rr_get_interval.Po -+ -rm -f ./$(DEPDIR)/sched_xetaffinity--pidns-translation.Po - -rm -f ./$(DEPDIR)/sched_xetaffinity.Po -+ -rm -f ./$(DEPDIR)/sched_xetattr--pidns-translation.Po - -rm -f ./$(DEPDIR)/sched_xetattr.Po -+ -rm -f ./$(DEPDIR)/sched_xetparam--pidns-translation.Po - -rm -f ./$(DEPDIR)/sched_xetparam.Po -+ -rm -f ./$(DEPDIR)/sched_xetscheduler--pidns-translation.Po - -rm -f ./$(DEPDIR)/sched_xetscheduler.Po - -rm -f ./$(DEPDIR)/sched_yield.Po - -rm -f ./$(DEPDIR)/scm_rights.Po -@@ -12989,6 +13596,7 @@ - -rm -f ./$(DEPDIR)/sigaltstack.Po - -rm -f ./$(DEPDIR)/siginfo.Po - -rm -f ./$(DEPDIR)/signal.Po -+ -rm -f ./$(DEPDIR)/signal_receive--pidns-translation.Po - -rm -f ./$(DEPDIR)/signal_receive.Po - -rm -f ./$(DEPDIR)/signalfd4.Po - -rm -f ./$(DEPDIR)/sigpending.Po -@@ -12998,6 +13606,7 @@ - -rm -f ./$(DEPDIR)/sleep.Po - -rm -f ./$(DEPDIR)/so_error.Po - -rm -f ./$(DEPDIR)/so_linger.Po -+ -rm -f ./$(DEPDIR)/so_peercred--pidns-translation.Po - -rm -f ./$(DEPDIR)/so_peercred-Xabbrev.Po - -rm -f ./$(DEPDIR)/so_peercred-Xraw.Po - -rm -f ./$(DEPDIR)/so_peercred-Xverbose.Po -@@ -13057,6 +13666,7 @@ - -rm -f ./$(DEPDIR)/syslog-success.Po - -rm -f ./$(DEPDIR)/syslog.Po - -rm -f ./$(DEPDIR)/tee.Po -+ -rm -f ./$(DEPDIR)/tgkill--pidns-translation.Po - -rm -f ./$(DEPDIR)/tgkill.Po - -rm -f ./$(DEPDIR)/threads-execve--quiet-thread-execve.Po - -rm -f ./$(DEPDIR)/threads-execve-q.Po -@@ -13069,6 +13679,7 @@ - -rm -f ./$(DEPDIR)/timerfd_xettime.Po - -rm -f ./$(DEPDIR)/times-fail.Po - -rm -f ./$(DEPDIR)/times.Po -+ -rm -f ./$(DEPDIR)/tkill--pidns-translation.Po - -rm -f ./$(DEPDIR)/tkill.Po - -rm -f ./$(DEPDIR)/tracer_ppid_pgid_sid.Po - -rm -f ./$(DEPDIR)/truncate.Po -@@ -13110,14 +13721,26 @@ - -rm -f ./$(DEPDIR)/waitpid.Po - -rm -f ./$(DEPDIR)/xattr-strings.Po - -rm -f ./$(DEPDIR)/xattr.Po -+ -rm -f ./$(DEPDIR)/xet_robust_list--pidns-translation.Po - -rm -f ./$(DEPDIR)/xet_robust_list.Po - -rm -f ./$(DEPDIR)/xet_thread_area_x86.Po - -rm -f ./$(DEPDIR)/xetitimer.Po -+ -rm -f ./$(DEPDIR)/xetpgid--pidns-translation.Po - -rm -f ./$(DEPDIR)/xetpgid.Po -+ -rm -f ./$(DEPDIR)/xetpriority--pidns-translation.Po - -rm -f ./$(DEPDIR)/xetpriority.Po - -rm -f ./$(DEPDIR)/xettimeofday.Po - -rm -f ./$(DEPDIR)/zeroargc.Po - -rm -f Makefile -+distclean-am: clean-am distclean-compile distclean-generic \ -+ distclean-tags -+ -+dvi: dvi-am -+ -+dvi-am: -+ -+html: html-am -+ -rm -f Makefile - maintainer-clean-am: distclean-am maintainer-clean-generic - - mostlyclean: mostlyclean-am -@@ -13407,9 +14030,15 @@ - $(srcdir)/fcntl.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in - $(AM_V_GEN) $^ $@ - -+$(srcdir)/fcntl--pidns-translation.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in -+ $(AM_V_GEN) $^ $@ -+ - $(srcdir)/fcntl64.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in - $(AM_V_GEN) $^ $@ - -+$(srcdir)/fcntl64--pidns-translation.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in -+ $(AM_V_GEN) $^ $@ -+ - $(srcdir)/fdatasync.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in - $(AM_V_GEN) $^ $@ - -@@ -13569,9 +14198,15 @@ - $(srcdir)/getpgrp.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in - $(AM_V_GEN) $^ $@ - -+$(srcdir)/getpgrp--pidns-translation.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in -+ $(AM_V_GEN) $^ $@ -+ - $(srcdir)/getpid.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in - $(AM_V_GEN) $^ $@ - -+$(srcdir)/getpid--pidns-translation.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in -+ $(AM_V_GEN) $^ $@ -+ - $(srcdir)/getppid.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in - $(AM_V_GEN) $^ $@ - -@@ -13599,6 +14234,9 @@ - $(srcdir)/getsid.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in - $(AM_V_GEN) $^ $@ - -+$(srcdir)/getsid--pidns-translation.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in -+ $(AM_V_GEN) $^ $@ -+ - $(srcdir)/getsockname.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in - $(AM_V_GEN) $^ $@ - -@@ -13878,6 +14516,9 @@ - $(srcdir)/ioprio.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in - $(AM_V_GEN) $^ $@ - -+$(srcdir)/ioprio--pidns-translation.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in -+ $(AM_V_GEN) $^ $@ -+ - $(srcdir)/ioprio-Xabbrev.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in - $(AM_V_GEN) $^ $@ - -@@ -13944,6 +14585,9 @@ - $(srcdir)/kcmp-y.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in - $(AM_V_GEN) $^ $@ - -+$(srcdir)/kcmp-y--pidns-translation.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in -+ $(AM_V_GEN) $^ $@ -+ - $(srcdir)/kern_features.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in - $(AM_V_GEN) $^ $@ - -@@ -13980,6 +14624,9 @@ - $(srcdir)/kill.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in - $(AM_V_GEN) $^ $@ - -+$(srcdir)/kill--pidns-translation.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in -+ $(AM_V_GEN) $^ $@ -+ - $(srcdir)/ksysent.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in - $(AM_V_GEN) $^ $@ - -@@ -14043,6 +14690,9 @@ - $(srcdir)/migrate_pages.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in - $(AM_V_GEN) $^ $@ - -+$(srcdir)/migrate_pages--pidns-translation.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in -+ $(AM_V_GEN) $^ $@ -+ - $(srcdir)/mincore.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in - $(AM_V_GEN) $^ $@ - -@@ -14133,6 +14783,9 @@ - $(srcdir)/move_pages-Xverbose.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in - $(AM_V_GEN) $^ $@ - -+$(srcdir)/move_pages--pidns-translation.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in -+ $(AM_V_GEN) $^ $@ -+ - $(srcdir)/mq.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in - $(AM_V_GEN) $^ $@ - -@@ -14190,6 +14843,9 @@ - $(srcdir)/net-sockaddr.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in - $(AM_V_GEN) $^ $@ - -+$(srcdir)/net-sockaddr--pidns-translation.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in -+ $(AM_V_GEN) $^ $@ -+ - $(srcdir)/net-tpacket_req.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in - $(AM_V_GEN) $^ $@ - -@@ -14499,9 +15155,15 @@ - $(srcdir)/pidfd_open-yy.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in - $(AM_V_GEN) $^ $@ - -+$(srcdir)/pidfd_open--pidns-translation.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in -+ $(AM_V_GEN) $^ $@ -+ - $(srcdir)/pidfd_send_signal.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in - $(AM_V_GEN) $^ $@ - -+$(srcdir)/pidfd_send_signal--pidns-translation.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in -+ $(AM_V_GEN) $^ $@ -+ - $(srcdir)/pipe2.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in - $(AM_V_GEN) $^ $@ - -@@ -14568,12 +15230,21 @@ - $(srcdir)/prlimit64.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in - $(AM_V_GEN) $^ $@ - -+$(srcdir)/prlimit64--pidns-translation.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in -+ $(AM_V_GEN) $^ $@ -+ - $(srcdir)/process_vm_readv.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in - $(AM_V_GEN) $^ $@ - -+$(srcdir)/process_vm_readv--pidns-translation.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in -+ $(AM_V_GEN) $^ $@ -+ - $(srcdir)/process_vm_writev.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in - $(AM_V_GEN) $^ $@ - -+$(srcdir)/process_vm_writev--pidns-translation.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in -+ $(AM_V_GEN) $^ $@ -+ - $(srcdir)/pselect6.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in - $(AM_V_GEN) $^ $@ - -@@ -14682,6 +15353,9 @@ - $(srcdir)/rt_sigqueueinfo.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in - $(AM_V_GEN) $^ $@ - -+$(srcdir)/rt_sigqueueinfo--pidns-translation.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in -+ $(AM_V_GEN) $^ $@ -+ - $(srcdir)/rt_sigreturn.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in - $(AM_V_GEN) $^ $@ - -@@ -14694,6 +15368,9 @@ - $(srcdir)/rt_tgsigqueueinfo.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in - $(AM_V_GEN) $^ $@ - -+$(srcdir)/rt_tgsigqueueinfo--pidns-translation.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in -+ $(AM_V_GEN) $^ $@ -+ - $(srcdir)/s390_guarded_storage.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in - $(AM_V_GEN) $^ $@ - -@@ -14724,15 +15401,27 @@ - $(srcdir)/sched_xetaffinity.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in - $(AM_V_GEN) $^ $@ - -+$(srcdir)/sched_xetaffinity--pidns-translation.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in -+ $(AM_V_GEN) $^ $@ -+ - $(srcdir)/sched_xetattr.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in - $(AM_V_GEN) $^ $@ - -+$(srcdir)/sched_xetattr--pidns-translation.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in -+ $(AM_V_GEN) $^ $@ -+ - $(srcdir)/sched_xetparam.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in - $(AM_V_GEN) $^ $@ - -+$(srcdir)/sched_xetparam--pidns-translation.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in -+ $(AM_V_GEN) $^ $@ -+ - $(srcdir)/sched_xetscheduler.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in - $(AM_V_GEN) $^ $@ - -+$(srcdir)/sched_xetscheduler--pidns-translation.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in -+ $(AM_V_GEN) $^ $@ -+ - $(srcdir)/sched_yield.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in - $(AM_V_GEN) $^ $@ - -@@ -14871,6 +15560,9 @@ - $(srcdir)/signal_receive.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in - $(AM_V_GEN) $^ $@ - -+$(srcdir)/signal_receive--pidns-translation.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in -+ $(AM_V_GEN) $^ $@ -+ - $(srcdir)/signalfd4.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in - $(AM_V_GEN) $^ $@ - -@@ -14904,6 +15596,9 @@ - $(srcdir)/so_peercred-Xverbose.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in - $(AM_V_GEN) $^ $@ - -+$(srcdir)/so_peercred--pidns-translation.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in -+ $(AM_V_GEN) $^ $@ -+ - $(srcdir)/sock_filter-v.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in - $(AM_V_GEN) $^ $@ - -@@ -15120,6 +15815,9 @@ - $(srcdir)/tgkill.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in - $(AM_V_GEN) $^ $@ - -+$(srcdir)/tgkill--pidns-translation.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in -+ $(AM_V_GEN) $^ $@ -+ - $(srcdir)/threads-execve--quiet-thread-execve.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in - $(AM_V_GEN) $^ $@ - -@@ -15153,6 +15851,9 @@ - $(srcdir)/tkill.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in - $(AM_V_GEN) $^ $@ - -+$(srcdir)/tkill--pidns-translation.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in -+ $(AM_V_GEN) $^ $@ -+ - $(srcdir)/trace_clock.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in - $(AM_V_GEN) $^ $@ - -@@ -15201,6 +15902,9 @@ - $(srcdir)/trace_statfs_like.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in - $(AM_V_GEN) $^ $@ - -+$(srcdir)/trie_test.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in -+ $(AM_V_GEN) $^ $@ -+ - $(srcdir)/truncate.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in - $(AM_V_GEN) $^ $@ - -@@ -15291,15 +15995,24 @@ - $(srcdir)/xet_robust_list.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in - $(AM_V_GEN) $^ $@ - -+$(srcdir)/xet_robust_list--pidns-translation.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in -+ $(AM_V_GEN) $^ $@ -+ - $(srcdir)/xetitimer.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in - $(AM_V_GEN) $^ $@ - - $(srcdir)/xetpgid.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in - $(AM_V_GEN) $^ $@ - -+$(srcdir)/xetpgid--pidns-translation.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in -+ $(AM_V_GEN) $^ $@ -+ - $(srcdir)/xetpriority.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in - $(AM_V_GEN) $^ $@ - -+$(srcdir)/xetpriority--pidns-translation.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in -+ $(AM_V_GEN) $^ $@ -+ - $(srcdir)/xettimeofday.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in - $(AM_V_GEN) $^ $@ - diff --git a/0142-tests-add-fchmod-y-test.patch b/0142-tests-add-fchmod-y-test.patch deleted file mode 100755 index 527c11c..0000000 --- a/0142-tests-add-fchmod-y-test.patch +++ /dev/null @@ -1,1102 +0,0 @@ -From 80e96680db68fb424455180f24cd08089bd8c94b Mon Sep 17 00:00:00 2001 -From: "Dmitry V. Levin" -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 - -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 -+#include -+#include -+#include -+ -+#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 -- * Copyright (c) 2016 Dmitry V. Levin -- * Copyright (c) 2016-2020 The strace developers. -+ * Copyright (c) 2016 Dmitry V. Levin -+ * 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 --# include - # include - # include - - 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 -+#include -+#include -+#include -+ -+#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 -- * Copyright (c) 2016 Dmitry V. Levin -- * Copyright (c) 2016-2020 The strace developers. -+ * Copyright (c) 2016 Dmitry V. Levin -+ * 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 --# include - # include - # include - - 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 -+#include -+#include -+#include -+ -+#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 -- * Copyright (c) 2016 Dmitry V. Levin -- * Copyright (c) 2016-2020 The strace developers. -+ * Copyright (c) 2016 Dmitry V. Levin -+ * 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 --# include - # include - # include - - 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) $^ $@ - diff --git a/0143-tests-introduce-create_and_enter_subdir-and-leave_an.patch b/0143-tests-introduce-create_and_enter_subdir-and-leave_an.patch deleted file mode 100755 index d8d067b..0000000 --- a/0143-tests-introduce-create_and_enter_subdir-and-leave_an.patch +++ /dev/null @@ -1,1270 +0,0 @@ -From 8f4f1f846588e9016b546889466b8bfb92b8c116 Mon Sep 17 00:00:00 2001 -From: "Dmitry V. Levin" -Date: Thu, 1 Apr 2021 08:00:00 +0000 -Subject: [PATCH 143/149] tests: introduce create_and_enter_subdir and - leave_and_remove_subdir - -Introduce the pair of functions that is going to be used to make sure -the current workdir of the tracee is different from the current workdir -of the tracer. - -Use the new interface in a few tests where the difference is going to be -relevant with --secontext option. - -* tests/subdir.c: New file. -* tests/Makefile.am (libtests_a_SOURCES): Add subdir.c. -* tests/tests.h (create_and_enter_subdir, leave_and_remove_subdir): -New function prototypes. -* tests/access.c (main): Use create_and_enter_subdir and -leave_and_remove_subdir. -* tests/chmod.c (main): Likewise. -* tests/execve.c (main): Likewise. -* tests/fchmod.c (main): Likewise. -* tests/fchmodat.c (main): Likewise. -* tests/fchownat.c (main): Likewise. -* tests/linkat.c (main): Likewise. -* tests/open.c (main): Likewise. -* tests/openat.c (main): Likewise. - -Conflicts: - tests/execve.c ---- - tests/Makefile.am | 1 + - tests/access.c | 10 +++++++++- - tests/chmod.c | 9 ++++++++- - tests/execve.c | 12 ++++++++++-- - tests/fchmod.c | 8 ++++++++ - tests/fchmodat.c | 9 ++++++++- - tests/fchownat.c | 8 ++++++++ - tests/linkat.c | 10 +++++++++- - tests/open.c | 8 ++++++++ - tests/openat.c | 10 +++++++++- - tests/subdir.c | 40 ++++++++++++++++++++++++++++++++++++++++ - tests/tests.h | 12 ++++++++++++ - 12 files changed, 130 insertions(+), 7 deletions(-) - create mode 100644 tests/subdir.c - -Index: strace-5.7/tests/Makefile.am -=================================================================== ---- strace-5.7.orig/tests/Makefile.am 2021-08-24 19:42:08.850580847 +0200 -+++ strace-5.7/tests/Makefile.am 2021-08-24 19:42:16.041519983 +0200 -@@ -58,6 +58,7 @@ - skip_unavailable.c \ - sprintrc.c \ - status.c \ -+ subdir.c \ - tail_alloc.c \ - test_netlink.h \ - test_nlattr.h \ -Index: strace-5.7/tests/access.c -=================================================================== ---- strace-5.7.orig/tests/access.c 2021-08-24 19:42:08.851580838 +0200 -+++ strace-5.7/tests/access.c 2021-08-24 19:42:16.041519983 +0200 -@@ -1,5 +1,5 @@ - /* -- * Copyright (c) 2016-2019 The strace developers. -+ * Copyright (c) 2016-2021 The strace developers. - * All rights reserved. - * - * SPDX-License-Identifier: GPL-2.0-or-later -@@ -16,6 +16,12 @@ - int - main(void) - { -+ /* -+ * Make sure the current workdir of the tracee -+ * is different from the current workdir of the tracer. -+ */ -+ create_and_enter_subdir("access_subdir"); -+ - static const char sample[] = "access_sample"; - - long rc = syscall(__NR_access, sample, F_OK); -@@ -26,6 +32,8 @@ - printf("access(\"%s\", R_OK|W_OK|X_OK) = %ld %s (%m)\n", - sample, rc, errno2name()); - -+ leave_and_remove_subdir(); -+ - puts("+++ exited with 0 +++"); - return 0; - } -Index: strace-5.7/tests/chmod.c -=================================================================== ---- strace-5.7.orig/tests/chmod.c 2021-08-24 19:42:08.851580838 +0200 -+++ strace-5.7/tests/chmod.c 2021-08-24 19:42:16.042519974 +0200 -@@ -15,11 +15,16 @@ - # include - # include - # include --# include - - int - main(void) - { -+ /* -+ * Make sure the current workdir of the tracee -+ * is different from the current workdir of the tracer. -+ */ -+ create_and_enter_subdir("chmod_subdir"); -+ - static const char fname[] = "chmod_test_file"; - - if (open(fname, O_CREAT|O_RDONLY, 0400) < 0) -@@ -37,6 +42,8 @@ - rc = syscall(__NR_chmod, fname, 004); - printf("chmod(\"%s\", 004) = %s\n", fname, sprintrc(rc)); - -+ leave_and_remove_subdir(); -+ - puts("+++ exited with 0 +++"); - return 0; - } -Index: strace-5.7/tests/execve.c -=================================================================== ---- strace-5.7.orig/tests/execve.c 2021-08-24 19:42:08.851580838 +0200 -+++ strace-5.7/tests/execve.c 2021-08-24 19:42:16.042519974 +0200 -@@ -1,8 +1,8 @@ - /* - * This file is part of execve strace test. - * -- * Copyright (c) 2015-2016 Dmitry V. Levin -- * Copyright (c) 2015-2018 The strace developers. -+ * Copyright (c) 2015-2016 Dmitry V. Levin -+ * Copyright (c) 2015-2021 The strace developers. - * All rights reserved. - * - * SPDX-License-Identifier: GPL-2.0-or-later -@@ -34,6 +34,12 @@ - int - main(void) - { -+ /* -+ * Make sure the current workdir of the tracee -+ * is different from the current workdir of the tracer. -+ */ -+ create_and_enter_subdir("execve_subdir"); -+ - char ** const tail_argv = tail_memdup(argv, sizeof(argv)); - char ** const tail_envp = tail_memdup(envp, sizeof(envp)); - -@@ -167,5 +173,7 @@ - printf("execve(\"%s\", %p, NULL) = -1 ENOENT (%m)\n", - Q_FILENAME, efault); - -+ leave_and_remove_subdir(); -+ - return 0; - } -Index: strace-5.7/tests/fchmod.c -=================================================================== ---- strace-5.7.orig/tests/fchmod.c 2021-08-24 19:42:08.851580838 +0200 -+++ strace-5.7/tests/fchmod.c 2021-08-24 19:42:16.042519974 +0200 -@@ -21,6 +21,12 @@ - int - main(void) - { -+ /* -+ * Make sure the current workdir of the tracee -+ * is different from the current workdir of the tracer. -+ */ -+ create_and_enter_subdir("fchmod_subdir"); -+ - static const char sample[] = "fchmod_sample_file"; - (void) unlink(sample); - int fd = open(sample, O_CREAT|O_RDONLY, 0400); -@@ -70,6 +76,8 @@ - # endif - sprintrc(rc)); - -+ leave_and_remove_subdir(); -+ - puts("+++ exited with 0 +++"); - return 0; - } -Index: strace-5.7/tests/fchmodat.c -=================================================================== ---- strace-5.7.orig/tests/fchmodat.c 2021-08-24 19:42:08.851580838 +0200 -+++ strace-5.7/tests/fchmodat.c 2021-08-24 19:42:16.043519966 +0200 -@@ -14,13 +14,18 @@ - #ifdef __NR_fchmodat - - # include --# include - # include - # include - - int - main(void) - { -+ /* -+ * Make sure the current workdir of the tracee -+ * is different from the current workdir of the tracer. -+ */ -+ create_and_enter_subdir("fchmodat_subdir"); -+ - static const char sample[] = "fchmodat_sample"; - - if (open(sample, O_RDONLY | O_CREAT, 0400) < 0) -@@ -41,6 +46,8 @@ - printf("fchmodat(AT_FDCWD, \"%s\", 004) = %s\n", - sample, sprintrc(rc)); - -+ leave_and_remove_subdir(); -+ - puts("+++ exited with 0 +++"); - return 0; - } -Index: strace-5.7/tests/fchownat.c -=================================================================== ---- strace-5.7.orig/tests/fchownat.c 2021-08-24 19:42:08.852580830 +0200 -+++ strace-5.7/tests/fchownat.c 2021-08-24 19:42:16.043519966 +0200 -@@ -20,6 +20,12 @@ - int - main(void) - { -+ /* -+ * Make sure the current workdir of the tracee -+ * is different from the current workdir of the tracer. -+ */ -+ create_and_enter_subdir("fchownat_subdir"); -+ - static const char sample[] = "fchownat_sample"; - uid_t uid = geteuid(); - uid_t gid = getegid(); -@@ -39,6 +45,8 @@ - printf("fchownat(AT_FDCWD, \"%s\", -1, -1, AT_SYMLINK_NOFOLLOW) = %s\n", - sample, sprintrc(rc)); - -+ leave_and_remove_subdir(); -+ - puts("+++ exited with 0 +++"); - return 0; - } -Index: strace-5.7/tests/linkat.c -=================================================================== ---- strace-5.7.orig/tests/linkat.c 2021-08-24 19:42:08.852580830 +0200 -+++ strace-5.7/tests/linkat.c 2021-08-24 19:42:16.043519966 +0200 -@@ -1,5 +1,5 @@ - /* -- * Copyright (c) 2016-2019 The strace developers. -+ * Copyright (c) 2016-2021 The strace developers. - * All rights reserved. - * - * SPDX-License-Identifier: GPL-2.0-or-later -@@ -16,6 +16,12 @@ - int - main(void) - { -+ /* -+ * Make sure the current workdir of the tracee -+ * is different from the current workdir of the tracer. -+ */ -+ create_and_enter_subdir("linkat_subdir"); -+ - static const char sample_1[] = "linkat_sample_old"; - static const char sample_2[] = "linkat_sample_new"; - const long fd_old = (long) 0xdeadbeefffffffffULL; -@@ -33,6 +39,8 @@ - "|AT_NO_AUTOMOUNT|AT_EMPTY_PATH|AT_RECURSIVE|0xffff60ff", - rc, errno2name()); - -+ leave_and_remove_subdir(); -+ - puts("+++ exited with 0 +++"); - return 0; - } -Index: strace-5.7/tests/open.c -=================================================================== ---- strace-5.7.orig/tests/open.c 2021-08-24 19:42:08.852580830 +0200 -+++ strace-5.7/tests/open.c 2021-08-24 19:42:16.044519958 +0200 -@@ -18,6 +18,12 @@ - int - main(void) - { -+ /* -+ * Make sure the current workdir of the tracee -+ * is different from the current workdir of the tracer. -+ */ -+ create_and_enter_subdir("open_subdir"); -+ - static const char sample[] = "open.sample"; - - long fd = syscall(__NR_open, sample, O_RDONLY|O_CREAT, 0400); -@@ -43,6 +49,8 @@ - sample, sprintrc(fd)); - # endif /* O_TMPFILE */ - -+ leave_and_remove_subdir(); -+ - puts("+++ exited with 0 +++"); - return 0; - } -Index: strace-5.7/tests/openat.c -=================================================================== ---- strace-5.7.orig/tests/openat.c 2021-08-24 19:42:08.852580830 +0200 -+++ strace-5.7/tests/openat.c 2021-08-24 19:42:16.044519958 +0200 -@@ -1,6 +1,6 @@ - /* - * Copyright (c) 2016 Katerina Koukiou -- * Copyright (c) 2016-2019 The strace developers. -+ * Copyright (c) 2016-2021 The strace developers. - * All rights reserved. - * - * SPDX-License-Identifier: GPL-2.0-or-later -@@ -39,6 +39,12 @@ - int - main(void) - { -+ /* -+ * Make sure the current workdir of the tracee -+ * is different from the current workdir of the tracer. -+ */ -+ create_and_enter_subdir("openat_subdir"); -+ - long fd = syscall(__NR_openat, -100, sample, O_RDONLY|O_CREAT, 0400); - printf("openat(AT_FDCWD, \"%s\", O_RDONLY|O_CREAT, 0400) = %s\n", - sample, sprintrc(fd)); -@@ -101,6 +107,8 @@ - test_mode_flag(modes[m].val, modes[m].str, - flags[f].val, flags[f].str); - -+ leave_and_remove_subdir(); -+ - puts("+++ exited with 0 +++"); - return 0; - } -Index: strace-5.7/tests/subdir.c -=================================================================== ---- /dev/null 1970-01-01 00:00:00.000000000 +0000 -+++ strace-5.7/tests/subdir.c 2021-08-24 19:42:16.044519958 +0200 -@@ -0,0 +1,40 @@ -+/* -+ * Copyright (c) 2021 The strace developers. -+ * All rights reserved. -+ * -+ * SPDX-License-Identifier: GPL-2.0-or-later -+ */ -+ -+#include "tests.h" -+ -+#include -+#include -+#include -+ -+static const char *subdir; -+static DIR *dirp; -+ -+void -+create_and_enter_subdir(const char *name) -+{ -+ dirp = opendir("."); -+ if (!dirp) -+ perror_msg_and_fail("opendir: %s", "."); -+ (void) mkdir(name, 0700); -+ if (chdir(name)) -+ perror_msg_and_fail("chdir: %s", name); -+ subdir = name; -+} -+ -+void -+leave_and_remove_subdir(void) -+{ -+ if (fchdir(dirfd(dirp))) -+ perror_msg_and_fail("fchdir: %d", dirfd(dirp)); -+ if (closedir(dirp)) -+ perror_msg_and_fail("closedir"); -+ dirp = 0; -+ if (rmdir(subdir)) -+ perror_msg_and_fail("rmdir: %s", subdir); -+ subdir = 0; -+} -Index: strace-5.7/tests/tests.h -=================================================================== ---- strace-5.7.orig/tests/tests.h 2021-08-24 19:42:08.852580830 +0200 -+++ strace-5.7/tests/tests.h 2021-08-24 19:42:16.045519949 +0200 -@@ -161,6 +161,18 @@ - char *get_fd_path(int fd) ATTRIBUTE_MALLOC; - - /* -+ * Create the specified directory and chdir into it, -+ * die on chdir failure. -+ */ -+void create_and_enter_subdir(const char *subdir); -+ -+/* -+ * Leave from the directory entered by create_and_enter_subdir, -+ * remove that directory, die on failure. -+ */ -+void leave_and_remove_subdir(void); -+ -+/* - * 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:42:08.853580821 +0200 -+++ strace-5.7/tests-m32/Makefile.am 2021-08-24 19:42:16.045519949 +0200 -@@ -58,6 +58,7 @@ - skip_unavailable.c \ - sprintrc.c \ - status.c \ -+ subdir.c \ - tail_alloc.c \ - test_netlink.h \ - test_nlattr.h \ -Index: strace-5.7/tests-m32/access.c -=================================================================== ---- strace-5.7.orig/tests-m32/access.c 2021-08-24 19:42:08.853580821 +0200 -+++ strace-5.7/tests-m32/access.c 2021-08-24 19:42:16.045519949 +0200 -@@ -1,5 +1,5 @@ - /* -- * Copyright (c) 2016-2019 The strace developers. -+ * Copyright (c) 2016-2021 The strace developers. - * All rights reserved. - * - * SPDX-License-Identifier: GPL-2.0-or-later -@@ -16,6 +16,12 @@ - int - main(void) - { -+ /* -+ * Make sure the current workdir of the tracee -+ * is different from the current workdir of the tracer. -+ */ -+ create_and_enter_subdir("access_subdir"); -+ - static const char sample[] = "access_sample"; - - long rc = syscall(__NR_access, sample, F_OK); -@@ -26,6 +32,8 @@ - printf("access(\"%s\", R_OK|W_OK|X_OK) = %ld %s (%m)\n", - sample, rc, errno2name()); - -+ leave_and_remove_subdir(); -+ - puts("+++ exited with 0 +++"); - return 0; - } -Index: strace-5.7/tests-m32/chmod.c -=================================================================== ---- strace-5.7.orig/tests-m32/chmod.c 2021-08-24 19:42:08.853580821 +0200 -+++ strace-5.7/tests-m32/chmod.c 2021-08-24 19:42:16.046519941 +0200 -@@ -15,11 +15,16 @@ - # include - # include - # include --# include - - int - main(void) - { -+ /* -+ * Make sure the current workdir of the tracee -+ * is different from the current workdir of the tracer. -+ */ -+ create_and_enter_subdir("chmod_subdir"); -+ - static const char fname[] = "chmod_test_file"; - - if (open(fname, O_CREAT|O_RDONLY, 0400) < 0) -@@ -37,6 +42,8 @@ - rc = syscall(__NR_chmod, fname, 004); - printf("chmod(\"%s\", 004) = %s\n", fname, sprintrc(rc)); - -+ leave_and_remove_subdir(); -+ - puts("+++ exited with 0 +++"); - return 0; - } -Index: strace-5.7/tests-m32/execve.c -=================================================================== ---- strace-5.7.orig/tests-m32/execve.c 2021-08-24 19:42:08.853580821 +0200 -+++ strace-5.7/tests-m32/execve.c 2021-08-24 19:42:16.046519941 +0200 -@@ -1,8 +1,8 @@ - /* - * This file is part of execve strace test. - * -- * Copyright (c) 2015-2016 Dmitry V. Levin -- * Copyright (c) 2015-2018 The strace developers. -+ * Copyright (c) 2015-2016 Dmitry V. Levin -+ * Copyright (c) 2015-2021 The strace developers. - * All rights reserved. - * - * SPDX-License-Identifier: GPL-2.0-or-later -@@ -34,6 +34,12 @@ - int - main(void) - { -+ /* -+ * Make sure the current workdir of the tracee -+ * is different from the current workdir of the tracer. -+ */ -+ create_and_enter_subdir("execve_subdir"); -+ - char ** const tail_argv = tail_memdup(argv, sizeof(argv)); - char ** const tail_envp = tail_memdup(envp, sizeof(envp)); - -@@ -167,5 +173,7 @@ - printf("execve(\"%s\", %p, NULL) = -1 ENOENT (%m)\n", - Q_FILENAME, efault); - -+ leave_and_remove_subdir(); -+ - return 0; - } -Index: strace-5.7/tests-m32/fchmod.c -=================================================================== ---- strace-5.7.orig/tests-m32/fchmod.c 2021-08-24 19:42:08.853580821 +0200 -+++ strace-5.7/tests-m32/fchmod.c 2021-08-24 19:42:16.046519941 +0200 -@@ -21,6 +21,12 @@ - int - main(void) - { -+ /* -+ * Make sure the current workdir of the tracee -+ * is different from the current workdir of the tracer. -+ */ -+ create_and_enter_subdir("fchmod_subdir"); -+ - static const char sample[] = "fchmod_sample_file"; - (void) unlink(sample); - int fd = open(sample, O_CREAT|O_RDONLY, 0400); -@@ -70,6 +76,8 @@ - # endif - sprintrc(rc)); - -+ leave_and_remove_subdir(); -+ - puts("+++ exited with 0 +++"); - return 0; - } -Index: strace-5.7/tests-m32/fchmodat.c -=================================================================== ---- strace-5.7.orig/tests-m32/fchmodat.c 2021-08-24 19:42:08.854580813 +0200 -+++ strace-5.7/tests-m32/fchmodat.c 2021-08-24 19:42:16.046519941 +0200 -@@ -14,13 +14,18 @@ - #ifdef __NR_fchmodat - - # include --# include - # include - # include - - int - main(void) - { -+ /* -+ * Make sure the current workdir of the tracee -+ * is different from the current workdir of the tracer. -+ */ -+ create_and_enter_subdir("fchmodat_subdir"); -+ - static const char sample[] = "fchmodat_sample"; - - if (open(sample, O_RDONLY | O_CREAT, 0400) < 0) -@@ -41,6 +46,8 @@ - printf("fchmodat(AT_FDCWD, \"%s\", 004) = %s\n", - sample, sprintrc(rc)); - -+ leave_and_remove_subdir(); -+ - puts("+++ exited with 0 +++"); - return 0; - } -Index: strace-5.7/tests-m32/fchownat.c -=================================================================== ---- strace-5.7.orig/tests-m32/fchownat.c 2021-08-24 19:42:08.854580813 +0200 -+++ strace-5.7/tests-m32/fchownat.c 2021-08-24 19:42:16.047519932 +0200 -@@ -20,6 +20,12 @@ - int - main(void) - { -+ /* -+ * Make sure the current workdir of the tracee -+ * is different from the current workdir of the tracer. -+ */ -+ create_and_enter_subdir("fchownat_subdir"); -+ - static const char sample[] = "fchownat_sample"; - uid_t uid = geteuid(); - uid_t gid = getegid(); -@@ -39,6 +45,8 @@ - printf("fchownat(AT_FDCWD, \"%s\", -1, -1, AT_SYMLINK_NOFOLLOW) = %s\n", - sample, sprintrc(rc)); - -+ leave_and_remove_subdir(); -+ - puts("+++ exited with 0 +++"); - return 0; - } -Index: strace-5.7/tests-m32/linkat.c -=================================================================== ---- strace-5.7.orig/tests-m32/linkat.c 2021-08-24 19:42:08.854580813 +0200 -+++ strace-5.7/tests-m32/linkat.c 2021-08-24 19:42:16.047519932 +0200 -@@ -1,5 +1,5 @@ - /* -- * Copyright (c) 2016-2019 The strace developers. -+ * Copyright (c) 2016-2021 The strace developers. - * All rights reserved. - * - * SPDX-License-Identifier: GPL-2.0-or-later -@@ -16,6 +16,12 @@ - int - main(void) - { -+ /* -+ * Make sure the current workdir of the tracee -+ * is different from the current workdir of the tracer. -+ */ -+ create_and_enter_subdir("linkat_subdir"); -+ - static const char sample_1[] = "linkat_sample_old"; - static const char sample_2[] = "linkat_sample_new"; - const long fd_old = (long) 0xdeadbeefffffffffULL; -@@ -33,6 +39,8 @@ - "|AT_NO_AUTOMOUNT|AT_EMPTY_PATH|AT_RECURSIVE|0xffff60ff", - rc, errno2name()); - -+ leave_and_remove_subdir(); -+ - puts("+++ exited with 0 +++"); - return 0; - } -Index: strace-5.7/tests-m32/open.c -=================================================================== ---- strace-5.7.orig/tests-m32/open.c 2021-08-24 19:42:08.854580813 +0200 -+++ strace-5.7/tests-m32/open.c 2021-08-24 19:42:16.047519932 +0200 -@@ -18,6 +18,12 @@ - int - main(void) - { -+ /* -+ * Make sure the current workdir of the tracee -+ * is different from the current workdir of the tracer. -+ */ -+ create_and_enter_subdir("open_subdir"); -+ - static const char sample[] = "open.sample"; - - long fd = syscall(__NR_open, sample, O_RDONLY|O_CREAT, 0400); -@@ -43,6 +49,8 @@ - sample, sprintrc(fd)); - # endif /* O_TMPFILE */ - -+ leave_and_remove_subdir(); -+ - puts("+++ exited with 0 +++"); - return 0; - } -Index: strace-5.7/tests-m32/openat.c -=================================================================== ---- strace-5.7.orig/tests-m32/openat.c 2021-08-24 19:42:08.854580813 +0200 -+++ strace-5.7/tests-m32/openat.c 2021-08-24 19:42:16.047519932 +0200 -@@ -1,6 +1,6 @@ - /* - * Copyright (c) 2016 Katerina Koukiou -- * Copyright (c) 2016-2019 The strace developers. -+ * Copyright (c) 2016-2021 The strace developers. - * All rights reserved. - * - * SPDX-License-Identifier: GPL-2.0-or-later -@@ -39,6 +39,12 @@ - int - main(void) - { -+ /* -+ * Make sure the current workdir of the tracee -+ * is different from the current workdir of the tracer. -+ */ -+ create_and_enter_subdir("openat_subdir"); -+ - long fd = syscall(__NR_openat, -100, sample, O_RDONLY|O_CREAT, 0400); - printf("openat(AT_FDCWD, \"%s\", O_RDONLY|O_CREAT, 0400) = %s\n", - sample, sprintrc(fd)); -@@ -101,6 +107,8 @@ - test_mode_flag(modes[m].val, modes[m].str, - flags[f].val, flags[f].str); - -+ leave_and_remove_subdir(); -+ - puts("+++ exited with 0 +++"); - return 0; - } -Index: strace-5.7/tests-m32/subdir.c -=================================================================== ---- /dev/null 1970-01-01 00:00:00.000000000 +0000 -+++ strace-5.7/tests-m32/subdir.c 2021-08-24 19:42:16.048519924 +0200 -@@ -0,0 +1,40 @@ -+/* -+ * Copyright (c) 2021 The strace developers. -+ * All rights reserved. -+ * -+ * SPDX-License-Identifier: GPL-2.0-or-later -+ */ -+ -+#include "tests.h" -+ -+#include -+#include -+#include -+ -+static const char *subdir; -+static DIR *dirp; -+ -+void -+create_and_enter_subdir(const char *name) -+{ -+ dirp = opendir("."); -+ if (!dirp) -+ perror_msg_and_fail("opendir: %s", "."); -+ (void) mkdir(name, 0700); -+ if (chdir(name)) -+ perror_msg_and_fail("chdir: %s", name); -+ subdir = name; -+} -+ -+void -+leave_and_remove_subdir(void) -+{ -+ if (fchdir(dirfd(dirp))) -+ perror_msg_and_fail("fchdir: %d", dirfd(dirp)); -+ if (closedir(dirp)) -+ perror_msg_and_fail("closedir"); -+ dirp = 0; -+ if (rmdir(subdir)) -+ perror_msg_and_fail("rmdir: %s", subdir); -+ subdir = 0; -+} -Index: strace-5.7/tests-m32/tests.h -=================================================================== ---- strace-5.7.orig/tests-m32/tests.h 2021-08-24 19:42:08.855580804 +0200 -+++ strace-5.7/tests-m32/tests.h 2021-08-24 19:42:16.048519924 +0200 -@@ -161,6 +161,18 @@ - char *get_fd_path(int fd) ATTRIBUTE_MALLOC; - - /* -+ * Create the specified directory and chdir into it, -+ * die on chdir failure. -+ */ -+void create_and_enter_subdir(const char *subdir); -+ -+/* -+ * Leave from the directory entered by create_and_enter_subdir, -+ * remove that directory, die on failure. -+ */ -+void leave_and_remove_subdir(void); -+ -+/* - * 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:42:08.855580804 +0200 -+++ strace-5.7/tests-mx32/Makefile.am 2021-08-24 19:42:16.048519924 +0200 -@@ -58,6 +58,7 @@ - skip_unavailable.c \ - sprintrc.c \ - status.c \ -+ subdir.c \ - tail_alloc.c \ - test_netlink.h \ - test_nlattr.h \ -Index: strace-5.7/tests-mx32/access.c -=================================================================== ---- strace-5.7.orig/tests-mx32/access.c 2021-08-24 19:42:08.855580804 +0200 -+++ strace-5.7/tests-mx32/access.c 2021-08-24 19:42:16.048519924 +0200 -@@ -1,5 +1,5 @@ - /* -- * Copyright (c) 2016-2019 The strace developers. -+ * Copyright (c) 2016-2021 The strace developers. - * All rights reserved. - * - * SPDX-License-Identifier: GPL-2.0-or-later -@@ -16,6 +16,12 @@ - int - main(void) - { -+ /* -+ * Make sure the current workdir of the tracee -+ * is different from the current workdir of the tracer. -+ */ -+ create_and_enter_subdir("access_subdir"); -+ - static const char sample[] = "access_sample"; - - long rc = syscall(__NR_access, sample, F_OK); -@@ -26,6 +32,8 @@ - printf("access(\"%s\", R_OK|W_OK|X_OK) = %ld %s (%m)\n", - sample, rc, errno2name()); - -+ leave_and_remove_subdir(); -+ - puts("+++ exited with 0 +++"); - return 0; - } -Index: strace-5.7/tests-mx32/chmod.c -=================================================================== ---- strace-5.7.orig/tests-mx32/chmod.c 2021-08-24 19:42:08.855580804 +0200 -+++ strace-5.7/tests-mx32/chmod.c 2021-08-24 19:42:16.049519915 +0200 -@@ -15,11 +15,16 @@ - # include - # include - # include --# include - - int - main(void) - { -+ /* -+ * Make sure the current workdir of the tracee -+ * is different from the current workdir of the tracer. -+ */ -+ create_and_enter_subdir("chmod_subdir"); -+ - static const char fname[] = "chmod_test_file"; - - if (open(fname, O_CREAT|O_RDONLY, 0400) < 0) -@@ -37,6 +42,8 @@ - rc = syscall(__NR_chmod, fname, 004); - printf("chmod(\"%s\", 004) = %s\n", fname, sprintrc(rc)); - -+ leave_and_remove_subdir(); -+ - puts("+++ exited with 0 +++"); - return 0; - } -Index: strace-5.7/tests-mx32/execve.c -=================================================================== ---- strace-5.7.orig/tests-mx32/execve.c 2021-08-24 19:42:08.855580804 +0200 -+++ strace-5.7/tests-mx32/execve.c 2021-08-24 19:42:16.049519915 +0200 -@@ -1,8 +1,8 @@ - /* - * This file is part of execve strace test. - * -- * Copyright (c) 2015-2016 Dmitry V. Levin -- * Copyright (c) 2015-2018 The strace developers. -+ * Copyright (c) 2015-2016 Dmitry V. Levin -+ * Copyright (c) 2015-2021 The strace developers. - * All rights reserved. - * - * SPDX-License-Identifier: GPL-2.0-or-later -@@ -34,6 +34,12 @@ - int - main(void) - { -+ /* -+ * Make sure the current workdir of the tracee -+ * is different from the current workdir of the tracer. -+ */ -+ create_and_enter_subdir("execve_subdir"); -+ - char ** const tail_argv = tail_memdup(argv, sizeof(argv)); - char ** const tail_envp = tail_memdup(envp, sizeof(envp)); - -@@ -167,5 +173,7 @@ - printf("execve(\"%s\", %p, NULL) = -1 ENOENT (%m)\n", - Q_FILENAME, efault); - -+ leave_and_remove_subdir(); -+ - return 0; - } -Index: strace-5.7/tests-mx32/fchmod.c -=================================================================== ---- strace-5.7.orig/tests-mx32/fchmod.c 2021-08-24 19:42:08.856580796 +0200 -+++ strace-5.7/tests-mx32/fchmod.c 2021-08-24 19:42:16.049519915 +0200 -@@ -21,6 +21,12 @@ - int - main(void) - { -+ /* -+ * Make sure the current workdir of the tracee -+ * is different from the current workdir of the tracer. -+ */ -+ create_and_enter_subdir("fchmod_subdir"); -+ - static const char sample[] = "fchmod_sample_file"; - (void) unlink(sample); - int fd = open(sample, O_CREAT|O_RDONLY, 0400); -@@ -70,6 +76,8 @@ - # endif - sprintrc(rc)); - -+ leave_and_remove_subdir(); -+ - puts("+++ exited with 0 +++"); - return 0; - } -Index: strace-5.7/tests-mx32/fchmodat.c -=================================================================== ---- strace-5.7.orig/tests-mx32/fchmodat.c 2021-08-24 19:42:08.856580796 +0200 -+++ strace-5.7/tests-mx32/fchmodat.c 2021-08-24 19:42:16.049519915 +0200 -@@ -14,13 +14,18 @@ - #ifdef __NR_fchmodat - - # include --# include - # include - # include - - int - main(void) - { -+ /* -+ * Make sure the current workdir of the tracee -+ * is different from the current workdir of the tracer. -+ */ -+ create_and_enter_subdir("fchmodat_subdir"); -+ - static const char sample[] = "fchmodat_sample"; - - if (open(sample, O_RDONLY | O_CREAT, 0400) < 0) -@@ -41,6 +46,8 @@ - printf("fchmodat(AT_FDCWD, \"%s\", 004) = %s\n", - sample, sprintrc(rc)); - -+ leave_and_remove_subdir(); -+ - puts("+++ exited with 0 +++"); - return 0; - } -Index: strace-5.7/tests-mx32/fchownat.c -=================================================================== ---- strace-5.7.orig/tests-mx32/fchownat.c 2021-08-24 19:42:08.856580796 +0200 -+++ strace-5.7/tests-mx32/fchownat.c 2021-08-24 19:42:16.050519907 +0200 -@@ -20,6 +20,12 @@ - int - main(void) - { -+ /* -+ * Make sure the current workdir of the tracee -+ * is different from the current workdir of the tracer. -+ */ -+ create_and_enter_subdir("fchownat_subdir"); -+ - static const char sample[] = "fchownat_sample"; - uid_t uid = geteuid(); - uid_t gid = getegid(); -@@ -39,6 +45,8 @@ - printf("fchownat(AT_FDCWD, \"%s\", -1, -1, AT_SYMLINK_NOFOLLOW) = %s\n", - sample, sprintrc(rc)); - -+ leave_and_remove_subdir(); -+ - puts("+++ exited with 0 +++"); - return 0; - } -Index: strace-5.7/tests-mx32/linkat.c -=================================================================== ---- strace-5.7.orig/tests-mx32/linkat.c 2021-08-24 19:42:08.856580796 +0200 -+++ strace-5.7/tests-mx32/linkat.c 2021-08-24 19:42:16.050519907 +0200 -@@ -1,5 +1,5 @@ - /* -- * Copyright (c) 2016-2019 The strace developers. -+ * Copyright (c) 2016-2021 The strace developers. - * All rights reserved. - * - * SPDX-License-Identifier: GPL-2.0-or-later -@@ -16,6 +16,12 @@ - int - main(void) - { -+ /* -+ * Make sure the current workdir of the tracee -+ * is different from the current workdir of the tracer. -+ */ -+ create_and_enter_subdir("linkat_subdir"); -+ - static const char sample_1[] = "linkat_sample_old"; - static const char sample_2[] = "linkat_sample_new"; - const long fd_old = (long) 0xdeadbeefffffffffULL; -@@ -33,6 +39,8 @@ - "|AT_NO_AUTOMOUNT|AT_EMPTY_PATH|AT_RECURSIVE|0xffff60ff", - rc, errno2name()); - -+ leave_and_remove_subdir(); -+ - puts("+++ exited with 0 +++"); - return 0; - } -Index: strace-5.7/tests-mx32/open.c -=================================================================== ---- strace-5.7.orig/tests-mx32/open.c 2021-08-24 19:42:08.856580796 +0200 -+++ strace-5.7/tests-mx32/open.c 2021-08-24 19:42:16.050519907 +0200 -@@ -18,6 +18,12 @@ - int - main(void) - { -+ /* -+ * Make sure the current workdir of the tracee -+ * is different from the current workdir of the tracer. -+ */ -+ create_and_enter_subdir("open_subdir"); -+ - static const char sample[] = "open.sample"; - - long fd = syscall(__NR_open, sample, O_RDONLY|O_CREAT, 0400); -@@ -43,6 +49,8 @@ - sample, sprintrc(fd)); - # endif /* O_TMPFILE */ - -+ leave_and_remove_subdir(); -+ - puts("+++ exited with 0 +++"); - return 0; - } -Index: strace-5.7/tests-mx32/openat.c -=================================================================== ---- strace-5.7.orig/tests-mx32/openat.c 2021-08-24 19:42:08.856580796 +0200 -+++ strace-5.7/tests-mx32/openat.c 2021-08-24 19:42:16.050519907 +0200 -@@ -1,6 +1,6 @@ - /* - * Copyright (c) 2016 Katerina Koukiou -- * Copyright (c) 2016-2019 The strace developers. -+ * Copyright (c) 2016-2021 The strace developers. - * All rights reserved. - * - * SPDX-License-Identifier: GPL-2.0-or-later -@@ -39,6 +39,12 @@ - int - main(void) - { -+ /* -+ * Make sure the current workdir of the tracee -+ * is different from the current workdir of the tracer. -+ */ -+ create_and_enter_subdir("openat_subdir"); -+ - long fd = syscall(__NR_openat, -100, sample, O_RDONLY|O_CREAT, 0400); - printf("openat(AT_FDCWD, \"%s\", O_RDONLY|O_CREAT, 0400) = %s\n", - sample, sprintrc(fd)); -@@ -101,6 +107,8 @@ - test_mode_flag(modes[m].val, modes[m].str, - flags[f].val, flags[f].str); - -+ leave_and_remove_subdir(); -+ - puts("+++ exited with 0 +++"); - return 0; - } -Index: strace-5.7/tests-mx32/subdir.c -=================================================================== ---- /dev/null 1970-01-01 00:00:00.000000000 +0000 -+++ strace-5.7/tests-mx32/subdir.c 2021-08-24 19:42:16.050519907 +0200 -@@ -0,0 +1,40 @@ -+/* -+ * Copyright (c) 2021 The strace developers. -+ * All rights reserved. -+ * -+ * SPDX-License-Identifier: GPL-2.0-or-later -+ */ -+ -+#include "tests.h" -+ -+#include -+#include -+#include -+ -+static const char *subdir; -+static DIR *dirp; -+ -+void -+create_and_enter_subdir(const char *name) -+{ -+ dirp = opendir("."); -+ if (!dirp) -+ perror_msg_and_fail("opendir: %s", "."); -+ (void) mkdir(name, 0700); -+ if (chdir(name)) -+ perror_msg_and_fail("chdir: %s", name); -+ subdir = name; -+} -+ -+void -+leave_and_remove_subdir(void) -+{ -+ if (fchdir(dirfd(dirp))) -+ perror_msg_and_fail("fchdir: %d", dirfd(dirp)); -+ if (closedir(dirp)) -+ perror_msg_and_fail("closedir"); -+ dirp = 0; -+ if (rmdir(subdir)) -+ perror_msg_and_fail("rmdir: %s", subdir); -+ subdir = 0; -+} -Index: strace-5.7/tests-mx32/tests.h -=================================================================== ---- strace-5.7.orig/tests-mx32/tests.h 2021-08-24 19:42:08.857580787 +0200 -+++ strace-5.7/tests-mx32/tests.h 2021-08-24 19:42:16.051519898 +0200 -@@ -161,6 +161,18 @@ - char *get_fd_path(int fd) ATTRIBUTE_MALLOC; - - /* -+ * Create the specified directory and chdir into it, -+ * die on chdir failure. -+ */ -+void create_and_enter_subdir(const char *subdir); -+ -+/* -+ * Leave from the directory entered by create_and_enter_subdir, -+ * remove that directory, die on failure. -+ */ -+void leave_and_remove_subdir(void); -+ -+/* - * 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:42:08.862580745 +0200 -+++ strace-5.7/tests/Makefile.in 2021-08-24 19:42:54.720192609 +0200 -@@ -574,7 +574,7 @@ - libtests_a-signal2name.$(OBJEXT) \ - libtests_a-skip_unavailable.$(OBJEXT) \ - libtests_a-sprintrc.$(OBJEXT) libtests_a-status.$(OBJEXT) \ -- libtests_a-tail_alloc.$(OBJEXT) \ -+ libtests_a-subdir.$(OBJEXT) libtests_a-tail_alloc.$(OBJEXT) \ - libtests_a-test_printpath.$(OBJEXT) \ - libtests_a-test_printstrn.$(OBJEXT) \ - libtests_a-test_ucopy.$(OBJEXT) libtests_a-tprintf.$(OBJEXT) \ -@@ -5430,6 +5430,7 @@ - skip_unavailable.c \ - sprintrc.c \ - status.c \ -+ subdir.c \ - tail_alloc.c \ - test_netlink.h \ - test_nlattr.h \ -@@ -10433,6 +10434,7 @@ - @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libtests_a-skip_unavailable.Po@am__quote@ # am--include-marker - @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libtests_a-sprintrc.Po@am__quote@ # am--include-marker - @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libtests_a-status.Po@am__quote@ # am--include-marker -+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libtests_a-subdir.Po@am__quote@ # am--include-marker - @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libtests_a-tail_alloc.Po@am__quote@ # am--include-marker - @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libtests_a-test_printpath.Po@am__quote@ # am--include-marker - @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libtests_a-test_printstrn.Po@am__quote@ # am--include-marker -@@ -11353,6 +11355,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-status.obj `if test -f 'status.c'; then $(CYGPATH_W) 'status.c'; else $(CYGPATH_W) '$(srcdir)/status.c'; fi` - -+libtests_a-subdir.o: subdir.c -+@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libtests_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT libtests_a-subdir.o -MD -MP -MF $(DEPDIR)/libtests_a-subdir.Tpo -c -o libtests_a-subdir.o `test -f 'subdir.c' || echo '$(srcdir)/'`subdir.c -+@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libtests_a-subdir.Tpo $(DEPDIR)/libtests_a-subdir.Po -+@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='subdir.c' object='libtests_a-subdir.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-subdir.o `test -f 'subdir.c' || echo '$(srcdir)/'`subdir.c -+ -+libtests_a-subdir.obj: subdir.c -+@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libtests_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT libtests_a-subdir.obj -MD -MP -MF $(DEPDIR)/libtests_a-subdir.Tpo -c -o libtests_a-subdir.obj `if test -f 'subdir.c'; then $(CYGPATH_W) 'subdir.c'; else $(CYGPATH_W) '$(srcdir)/subdir.c'; fi` -+@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libtests_a-subdir.Tpo $(DEPDIR)/libtests_a-subdir.Po -+@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='subdir.c' object='libtests_a-subdir.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-subdir.obj `if test -f 'subdir.c'; then $(CYGPATH_W) 'subdir.c'; else $(CYGPATH_W) '$(srcdir)/subdir.c'; fi` -+ - libtests_a-tail_alloc.o: tail_alloc.c - @am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libtests_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT libtests_a-tail_alloc.o -MD -MP -MF $(DEPDIR)/libtests_a-tail_alloc.Tpo -c -o libtests_a-tail_alloc.o `test -f 'tail_alloc.c' || echo '$(srcdir)/'`tail_alloc.c - @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libtests_a-tail_alloc.Tpo $(DEPDIR)/libtests_a-tail_alloc.Po -Index: strace-5.7/tests-m32/Makefile.in -=================================================================== ---- strace-5.7.orig/tests-m32/Makefile.in 2021-08-24 19:42:08.866580711 +0200 -+++ strace-5.7/tests-m32/Makefile.in 2021-08-24 19:43:13.669032228 +0200 -@@ -574,7 +574,7 @@ - libtests_a-signal2name.$(OBJEXT) \ - libtests_a-skip_unavailable.$(OBJEXT) \ - libtests_a-sprintrc.$(OBJEXT) libtests_a-status.$(OBJEXT) \ -- libtests_a-tail_alloc.$(OBJEXT) \ -+ libtests_a-subdir.$(OBJEXT) libtests_a-tail_alloc.$(OBJEXT) \ - libtests_a-test_printpath.$(OBJEXT) \ - libtests_a-test_printstrn.$(OBJEXT) \ - libtests_a-test_ucopy.$(OBJEXT) libtests_a-tprintf.$(OBJEXT) \ -@@ -5430,6 +5430,7 @@ - skip_unavailable.c \ - sprintrc.c \ - status.c \ -+ subdir.c \ - tail_alloc.c \ - test_netlink.h \ - test_nlattr.h \ -@@ -10433,6 +10434,7 @@ - @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libtests_a-skip_unavailable.Po@am__quote@ # am--include-marker - @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libtests_a-sprintrc.Po@am__quote@ # am--include-marker - @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libtests_a-status.Po@am__quote@ # am--include-marker -+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libtests_a-subdir.Po@am__quote@ # am--include-marker - @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libtests_a-tail_alloc.Po@am__quote@ # am--include-marker - @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libtests_a-test_printpath.Po@am__quote@ # am--include-marker - @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libtests_a-test_printstrn.Po@am__quote@ # am--include-marker -@@ -11353,6 +11355,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-status.obj `if test -f 'status.c'; then $(CYGPATH_W) 'status.c'; else $(CYGPATH_W) '$(srcdir)/status.c'; fi` - -+libtests_a-subdir.o: subdir.c -+@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libtests_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT libtests_a-subdir.o -MD -MP -MF $(DEPDIR)/libtests_a-subdir.Tpo -c -o libtests_a-subdir.o `test -f 'subdir.c' || echo '$(srcdir)/'`subdir.c -+@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libtests_a-subdir.Tpo $(DEPDIR)/libtests_a-subdir.Po -+@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='subdir.c' object='libtests_a-subdir.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-subdir.o `test -f 'subdir.c' || echo '$(srcdir)/'`subdir.c -+ -+libtests_a-subdir.obj: subdir.c -+@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libtests_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT libtests_a-subdir.obj -MD -MP -MF $(DEPDIR)/libtests_a-subdir.Tpo -c -o libtests_a-subdir.obj `if test -f 'subdir.c'; then $(CYGPATH_W) 'subdir.c'; else $(CYGPATH_W) '$(srcdir)/subdir.c'; fi` -+@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libtests_a-subdir.Tpo $(DEPDIR)/libtests_a-subdir.Po -+@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='subdir.c' object='libtests_a-subdir.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-subdir.obj `if test -f 'subdir.c'; then $(CYGPATH_W) 'subdir.c'; else $(CYGPATH_W) '$(srcdir)/subdir.c'; fi` -+ - libtests_a-tail_alloc.o: tail_alloc.c - @am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libtests_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT libtests_a-tail_alloc.o -MD -MP -MF $(DEPDIR)/libtests_a-tail_alloc.Tpo -c -o libtests_a-tail_alloc.o `test -f 'tail_alloc.c' || echo '$(srcdir)/'`tail_alloc.c - @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libtests_a-tail_alloc.Tpo $(DEPDIR)/libtests_a-tail_alloc.Po -Index: strace-5.7/tests-mx32/Makefile.in -=================================================================== ---- strace-5.7.orig/tests-mx32/Makefile.in 2021-08-24 19:42:08.870580677 +0200 -+++ strace-5.7/tests-mx32/Makefile.in 2021-08-24 19:43:32.469873099 +0200 -@@ -574,7 +574,7 @@ - libtests_a-signal2name.$(OBJEXT) \ - libtests_a-skip_unavailable.$(OBJEXT) \ - libtests_a-sprintrc.$(OBJEXT) libtests_a-status.$(OBJEXT) \ -- libtests_a-tail_alloc.$(OBJEXT) \ -+ libtests_a-subdir.$(OBJEXT) libtests_a-tail_alloc.$(OBJEXT) \ - libtests_a-test_printpath.$(OBJEXT) \ - libtests_a-test_printstrn.$(OBJEXT) \ - libtests_a-test_ucopy.$(OBJEXT) libtests_a-tprintf.$(OBJEXT) \ -@@ -5430,6 +5430,7 @@ - skip_unavailable.c \ - sprintrc.c \ - status.c \ -+ subdir.c \ - tail_alloc.c \ - test_netlink.h \ - test_nlattr.h \ -@@ -10433,6 +10434,7 @@ - @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libtests_a-skip_unavailable.Po@am__quote@ # am--include-marker - @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libtests_a-sprintrc.Po@am__quote@ # am--include-marker - @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libtests_a-status.Po@am__quote@ # am--include-marker -+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libtests_a-subdir.Po@am__quote@ # am--include-marker - @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libtests_a-tail_alloc.Po@am__quote@ # am--include-marker - @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libtests_a-test_printpath.Po@am__quote@ # am--include-marker - @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libtests_a-test_printstrn.Po@am__quote@ # am--include-marker -@@ -11353,6 +11355,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-status.obj `if test -f 'status.c'; then $(CYGPATH_W) 'status.c'; else $(CYGPATH_W) '$(srcdir)/status.c'; fi` - -+libtests_a-subdir.o: subdir.c -+@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libtests_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT libtests_a-subdir.o -MD -MP -MF $(DEPDIR)/libtests_a-subdir.Tpo -c -o libtests_a-subdir.o `test -f 'subdir.c' || echo '$(srcdir)/'`subdir.c -+@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libtests_a-subdir.Tpo $(DEPDIR)/libtests_a-subdir.Po -+@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='subdir.c' object='libtests_a-subdir.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-subdir.o `test -f 'subdir.c' || echo '$(srcdir)/'`subdir.c -+ -+libtests_a-subdir.obj: subdir.c -+@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libtests_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT libtests_a-subdir.obj -MD -MP -MF $(DEPDIR)/libtests_a-subdir.Tpo -c -o libtests_a-subdir.obj `if test -f 'subdir.c'; then $(CYGPATH_W) 'subdir.c'; else $(CYGPATH_W) '$(srcdir)/subdir.c'; fi` -+@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libtests_a-subdir.Tpo $(DEPDIR)/libtests_a-subdir.Po -+@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='subdir.c' object='libtests_a-subdir.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-subdir.obj `if test -f 'subdir.c'; then $(CYGPATH_W) 'subdir.c'; else $(CYGPATH_W) '$(srcdir)/subdir.c'; fi` -+ - libtests_a-tail_alloc.o: tail_alloc.c - @am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libtests_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT libtests_a-tail_alloc.o -MD -MP -MF $(DEPDIR)/libtests_a-tail_alloc.Tpo -c -o libtests_a-tail_alloc.o `test -f 'tail_alloc.c' || echo '$(srcdir)/'`tail_alloc.c - @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libtests_a-tail_alloc.Tpo $(DEPDIR)/libtests_a-tail_alloc.Po diff --git a/0144-tests-check-decoding-of-faccessat-syscall-in-P-y-and.patch b/0144-tests-check-decoding-of-faccessat-syscall-in-P-y-and.patch deleted file mode 100755 index 5a79ea0..0000000 --- a/0144-tests-check-decoding-of-faccessat-syscall-in-P-y-and.patch +++ /dev/null @@ -1,795 +0,0 @@ -From e244ae965b17280313d92baef71165efc00ac51b Mon Sep 17 00:00:00 2001 -From: "Dmitry V. Levin" -Date: Sat, 4 Jul 2020 08:00:00 +0000 -Subject: [PATCH 144/149] tests: check decoding of faccessat syscall in -P, -y, - and -yy modes - -* tests/faccessat.c: Rewrite. -* tests/faccessat-P.c: New file. -* tests/faccessat-y.c: Likewise. -* tests/faccessat-yy.c: Likewise. -* tests/faccessat.test: New test. -* tests/Makefile.am (DECODER_TESTS): Add faccessat.test. -* tests/gen_tests.in (faccessat): Remove. -(faccessat-P, faccessat-y, faccessat-yy): New entries. -* tests/pure_executables.list: Add faccessat-P, faccessat-y, -and faccessat-yy. -* tests/.gitignore: Likewise. ---- - tests/.gitignore | 3 ++ - tests/Makefile.am | 1 + - tests/faccessat-P.c | 4 ++ - tests/faccessat-y.c | 4 ++ - tests/faccessat-yy.c | 4 ++ - tests/faccessat.c | 127 ++++++++++++++++++++++++++++++++++++++++++-- - tests/faccessat.test | 19 +++++++ - tests/gen_tests.in | 4 +- - tests/pure_executables.list | 3 ++ - 9 files changed, 163 insertions(+), 6 deletions(-) - create mode 100644 tests/faccessat-P.c - create mode 100644 tests/faccessat-y.c - create mode 100644 tests/faccessat-yy.c - create mode 100755 tests/faccessat.test - -Index: strace-5.7/tests/Makefile.am -=================================================================== ---- strace-5.7.orig/tests/Makefile.am 2021-08-24 19:42:16.041519983 +0200 -+++ strace-5.7/tests/Makefile.am 2021-08-24 19:46:08.275554370 +0200 -@@ -346,6 +346,7 @@ - execve-v.test \ - execve.test \ - fadvise64.test \ -+ faccessat.test \ - futex.test \ - getuid.test \ - int_0x80.test \ -Index: strace-5.7/tests/faccessat-P.c -=================================================================== ---- /dev/null 1970-01-01 00:00:00.000000000 +0000 -+++ strace-5.7/tests/faccessat-P.c 2021-08-24 19:46:08.275554370 +0200 -@@ -0,0 +1,4 @@ -+#define PATH_TRACING -+#define SKIP_IF_PROC_IS_UNAVAILABLE skip_if_unavailable("/proc/self/fd/") -+ -+#include "faccessat.c" -Index: strace-5.7/tests/faccessat-y.c -=================================================================== ---- /dev/null 1970-01-01 00:00:00.000000000 +0000 -+++ strace-5.7/tests/faccessat-y.c 2021-08-24 19:46:08.276554362 +0200 -@@ -0,0 +1,4 @@ -+#define FD_PATH "" -+#define SKIP_IF_PROC_IS_UNAVAILABLE skip_if_unavailable("/proc/self/fd/") -+ -+#include "faccessat.c" -Index: strace-5.7/tests/faccessat-yy.c -=================================================================== ---- /dev/null 1970-01-01 00:00:00.000000000 +0000 -+++ strace-5.7/tests/faccessat-yy.c 2021-08-24 19:46:08.276554362 +0200 -@@ -0,0 +1,4 @@ -+#define FD_PATH ">" -+#define SKIP_IF_PROC_IS_UNAVAILABLE skip_if_unavailable("/proc/self/fd/") -+ -+#include "faccessat.c" -Index: strace-5.7/tests/faccessat.c -=================================================================== ---- strace-5.7.orig/tests/faccessat.c 2021-08-24 17:01:53.365934740 +0200 -+++ strace-5.7/tests/faccessat.c 2021-08-24 19:46:08.277554353 +0200 -@@ -1,4 +1,6 @@ - /* -+ * Check decoding of faccessat syscall. -+ * - * Copyright (c) 2016-2019 The strace developers. - * All rights reserved. - * -@@ -10,18 +12,133 @@ - - #ifdef __NR_faccessat - -+# include - # include - # include - -+# ifndef FD_PATH -+# define FD_PATH "" -+# endif -+# ifndef SKIP_IF_PROC_IS_UNAVAILABLE -+# define SKIP_IF_PROC_IS_UNAVAILABLE -+# endif -+ -+static const char *errstr; -+ -+static long -+k_faccessat(const unsigned int dirfd, -+ const void *const pathname, -+ const unsigned int mode) -+{ -+ const kernel_ulong_t fill = (kernel_ulong_t) 0xdefaced00000000ULL; -+ const kernel_ulong_t bad = (kernel_ulong_t) 0xbadc0dedbadc0dedULL; -+ -+ const kernel_ulong_t arg1 = fill | dirfd; -+ const kernel_ulong_t arg2 = (uintptr_t) pathname; -+ const kernel_ulong_t arg3 = fill | mode; -+ const long rc = syscall(__NR_faccessat, -+ arg1, arg2, arg3, bad, bad, bad); -+ errstr = sprintrc(rc); -+ return rc; -+} -+ - int - main(void) - { -- static const char sample[] = "faccessat.sample"; -- const long int fd = (long int) 0xdeadbeefffffffffULL; -+ SKIP_IF_PROC_IS_UNAVAILABLE; - -- long rc = syscall(__NR_faccessat, fd, sample, F_OK); -- printf("faccessat(%d, \"%s\", F_OK) = %ld %s (%m)\n", -- (int) fd, sample, rc, errno2name()); -+ TAIL_ALLOC_OBJECT_CONST_PTR(const char, unterminated); -+ char *unterminated_str; -+ if (asprintf(&unterminated_str, "%p", unterminated) < 0) -+ perror_msg_and_fail("asprintf"); -+ const void *const efault = unterminated + 1; -+ char *efault_str; -+ if (asprintf(&efault_str, "%p", efault) < 0) -+ perror_msg_and_fail("asprintf"); -+ -+ typedef struct { -+ char sym; -+ char null; -+ } sym_null; -+ -+ TAIL_ALLOC_OBJECT_CONST_PTR(sym_null, dot); -+ dot->sym = '.'; -+ dot->null = '\0'; -+ const char *const null = &dot->null; -+ -+ TAIL_ALLOC_OBJECT_CONST_PTR(sym_null, slash); -+ slash->sym = '/'; -+ slash->null = '\0'; -+ -+ static const char path[] = "/dev/full"; -+ const char *const fd_path = tail_memdup(path, sizeof(path)); -+ int fd = open(path, O_WRONLY); -+ if (fd < 0) -+ perror_msg_and_fail("open: %s", path); -+ char *fd_str; -+ if (asprintf(&fd_str, "%d%s", fd, FD_PATH) < 0) -+ perror_msg_and_fail("asprintf"); -+ char *path_quoted; -+ if (asprintf(&path_quoted, "\"%s\"", path) < 0) -+ perror_msg_and_fail("asprintf"); -+ -+ struct { -+ int val; -+ const char *str; -+ } dirfds[] = { -+ { ARG_STR(-1) }, -+ { -100, "AT_FDCWD" }, -+ { fd, fd_str }, -+ }, modes[] = { -+ { ARG_STR(F_OK) }, -+ { ARG_STR(R_OK) }, -+ { ARG_STR(W_OK) }, -+ { ARG_STR(X_OK) }, -+ { ARG_STR(R_OK|W_OK) }, -+ { ARG_STR(R_OK|X_OK) }, -+ { ARG_STR(W_OK|X_OK) }, -+ { ARG_STR(R_OK|W_OK|X_OK) }, -+ { 8, "0x8 /* ?_OK */" }, -+ { -1, "R_OK|W_OK|X_OK|0xfffffff8" }, -+ }; -+ -+ struct { -+ const void *val; -+ const char *str; -+ } paths[] = { -+ { 0, "NULL" }, -+ { efault, efault_str }, -+ { unterminated, unterminated_str }, -+ { null, "\"\"" }, -+ { &dot->sym, "\".\"" }, -+ { &slash->sym, "\"/\"" }, -+ { fd_path, path_quoted }, -+ }; -+ -+ for (unsigned int dirfd_i = 0; -+ dirfd_i < ARRAY_SIZE(dirfds); -+ ++dirfd_i) { -+ for (unsigned int path_i = 0; -+ path_i < ARRAY_SIZE(paths); -+ ++path_i) { -+ for (unsigned int mode_i = 0; -+ mode_i < ARRAY_SIZE(modes); -+ ++mode_i) { -+ k_faccessat(dirfds[dirfd_i].val, -+ paths[path_i].val, -+ modes[mode_i].val); -+# ifdef PATH_TRACING -+ if (dirfds[dirfd_i].val == fd || -+ paths[path_i].val == fd_path) -+# endif -+ printf("faccessat(%s, %s, %s) = %s\n", -+ dirfds[dirfd_i].str, -+ paths[path_i].str, -+ modes[mode_i].str, -+ errstr); -+ } -+ } -+ } - - puts("+++ exited with 0 +++"); - return 0; -Index: strace-5.7/tests/faccessat.test -=================================================================== ---- /dev/null 1970-01-01 00:00:00.000000000 +0000 -+++ strace-5.7/tests/faccessat.test 2021-08-24 19:46:08.277554353 +0200 -@@ -0,0 +1,19 @@ -+#!/bin/sh -+# -+# Check decoding of faccessat syscall. -+# -+# Copyright (c) 2020 Dmitry V. Levin -+# All rights reserved. -+# -+# SPDX-License-Identifier: GPL-2.0-or-later -+ -+. "${srcdir=.}/init.sh" -+ -+check_prog sed -+ -+run_prog > /dev/null -+run_strace -a23 --trace=faccessat "$@" $args > "$EXP" -+ -+# Filter out faccessat() calls made by ld.so and libc. -+sed -n '/^faccessat(-1, NULL,/,$p' < "$LOG" > "$OUT" -+match_diff "$OUT" "$EXP" -Index: strace-5.7/tests/gen_tests.in -=================================================================== ---- strace-5.7.orig/tests/gen_tests.in 2021-08-24 19:37:43.192829355 +0200 -+++ strace-5.7/tests/gen_tests.in 2021-08-24 19:46:08.278554345 +0200 -@@ -73,7 +73,9 @@ - erestartsys -a34 -e signal=none -e trace=recvfrom - execveat - execveat-v -v -e trace=execveat --faccessat -P $NAME.sample -+faccessat-P -a23 --trace=faccessat -P /dev/full -+faccessat-y +faccessat.test -a24 -y -+faccessat-yy +faccessat.test -a24 -yy - fadvise64_64 +fadvise64.test - fallocate -a18 - fanotify_init -Index: strace-5.7/tests/pure_executables.list -=================================================================== ---- strace-5.7.orig/tests/pure_executables.list 2021-08-24 19:37:43.192829355 +0200 -+++ strace-5.7/tests/pure_executables.list 2021-08-24 19:46:08.279554336 +0200 -@@ -61,6 +61,9 @@ - execve - execveat - faccessat -+faccessat-P -+faccessat-y -+faccessat-yy - fadvise64 - fadvise64_64 - fallocate -Index: strace-5.7/tests-m32/Makefile.am -=================================================================== ---- strace-5.7.orig/tests-m32/Makefile.am 2021-08-24 19:42:16.045519949 +0200 -+++ strace-5.7/tests-m32/Makefile.am 2021-08-24 19:46:08.279554336 +0200 -@@ -346,6 +346,7 @@ - execve-v.test \ - execve.test \ - fadvise64.test \ -+ faccessat.test \ - futex.test \ - getuid.test \ - int_0x80.test \ -Index: strace-5.7/tests-m32/faccessat-P.c -=================================================================== ---- /dev/null 1970-01-01 00:00:00.000000000 +0000 -+++ strace-5.7/tests-m32/faccessat-P.c 2021-08-24 19:46:08.279554336 +0200 -@@ -0,0 +1,4 @@ -+#define PATH_TRACING -+#define SKIP_IF_PROC_IS_UNAVAILABLE skip_if_unavailable("/proc/self/fd/") -+ -+#include "faccessat.c" -Index: strace-5.7/tests-m32/faccessat-y.c -=================================================================== ---- /dev/null 1970-01-01 00:00:00.000000000 +0000 -+++ strace-5.7/tests-m32/faccessat-y.c 2021-08-24 19:46:08.280554328 +0200 -@@ -0,0 +1,4 @@ -+#define FD_PATH "" -+#define SKIP_IF_PROC_IS_UNAVAILABLE skip_if_unavailable("/proc/self/fd/") -+ -+#include "faccessat.c" -Index: strace-5.7/tests-m32/faccessat-yy.c -=================================================================== ---- /dev/null 1970-01-01 00:00:00.000000000 +0000 -+++ strace-5.7/tests-m32/faccessat-yy.c 2021-08-24 19:46:08.280554328 +0200 -@@ -0,0 +1,4 @@ -+#define FD_PATH ">" -+#define SKIP_IF_PROC_IS_UNAVAILABLE skip_if_unavailable("/proc/self/fd/") -+ -+#include "faccessat.c" -Index: strace-5.7/tests-m32/faccessat.c -=================================================================== ---- strace-5.7.orig/tests-m32/faccessat.c 2019-09-25 03:02:03.000000000 +0200 -+++ strace-5.7/tests-m32/faccessat.c 2021-08-24 19:46:08.281554319 +0200 -@@ -1,4 +1,6 @@ - /* -+ * Check decoding of faccessat syscall. -+ * - * Copyright (c) 2016-2019 The strace developers. - * All rights reserved. - * -@@ -10,18 +12,133 @@ - - #ifdef __NR_faccessat - -+# include - # include - # include - -+# ifndef FD_PATH -+# define FD_PATH "" -+# endif -+# ifndef SKIP_IF_PROC_IS_UNAVAILABLE -+# define SKIP_IF_PROC_IS_UNAVAILABLE -+# endif -+ -+static const char *errstr; -+ -+static long -+k_faccessat(const unsigned int dirfd, -+ const void *const pathname, -+ const unsigned int mode) -+{ -+ const kernel_ulong_t fill = (kernel_ulong_t) 0xdefaced00000000ULL; -+ const kernel_ulong_t bad = (kernel_ulong_t) 0xbadc0dedbadc0dedULL; -+ -+ const kernel_ulong_t arg1 = fill | dirfd; -+ const kernel_ulong_t arg2 = (uintptr_t) pathname; -+ const kernel_ulong_t arg3 = fill | mode; -+ const long rc = syscall(__NR_faccessat, -+ arg1, arg2, arg3, bad, bad, bad); -+ errstr = sprintrc(rc); -+ return rc; -+} -+ - int - main(void) - { -- static const char sample[] = "faccessat.sample"; -- const long int fd = (long int) 0xdeadbeefffffffffULL; -+ SKIP_IF_PROC_IS_UNAVAILABLE; - -- long rc = syscall(__NR_faccessat, fd, sample, F_OK); -- printf("faccessat(%d, \"%s\", F_OK) = %ld %s (%m)\n", -- (int) fd, sample, rc, errno2name()); -+ TAIL_ALLOC_OBJECT_CONST_PTR(const char, unterminated); -+ char *unterminated_str; -+ if (asprintf(&unterminated_str, "%p", unterminated) < 0) -+ perror_msg_and_fail("asprintf"); -+ const void *const efault = unterminated + 1; -+ char *efault_str; -+ if (asprintf(&efault_str, "%p", efault) < 0) -+ perror_msg_and_fail("asprintf"); -+ -+ typedef struct { -+ char sym; -+ char null; -+ } sym_null; -+ -+ TAIL_ALLOC_OBJECT_CONST_PTR(sym_null, dot); -+ dot->sym = '.'; -+ dot->null = '\0'; -+ const char *const null = &dot->null; -+ -+ TAIL_ALLOC_OBJECT_CONST_PTR(sym_null, slash); -+ slash->sym = '/'; -+ slash->null = '\0'; -+ -+ static const char path[] = "/dev/full"; -+ const char *const fd_path = tail_memdup(path, sizeof(path)); -+ int fd = open(path, O_WRONLY); -+ if (fd < 0) -+ perror_msg_and_fail("open: %s", path); -+ char *fd_str; -+ if (asprintf(&fd_str, "%d%s", fd, FD_PATH) < 0) -+ perror_msg_and_fail("asprintf"); -+ char *path_quoted; -+ if (asprintf(&path_quoted, "\"%s\"", path) < 0) -+ perror_msg_and_fail("asprintf"); -+ -+ struct { -+ int val; -+ const char *str; -+ } dirfds[] = { -+ { ARG_STR(-1) }, -+ { -100, "AT_FDCWD" }, -+ { fd, fd_str }, -+ }, modes[] = { -+ { ARG_STR(F_OK) }, -+ { ARG_STR(R_OK) }, -+ { ARG_STR(W_OK) }, -+ { ARG_STR(X_OK) }, -+ { ARG_STR(R_OK|W_OK) }, -+ { ARG_STR(R_OK|X_OK) }, -+ { ARG_STR(W_OK|X_OK) }, -+ { ARG_STR(R_OK|W_OK|X_OK) }, -+ { 8, "0x8 /* ?_OK */" }, -+ { -1, "R_OK|W_OK|X_OK|0xfffffff8" }, -+ }; -+ -+ struct { -+ const void *val; -+ const char *str; -+ } paths[] = { -+ { 0, "NULL" }, -+ { efault, efault_str }, -+ { unterminated, unterminated_str }, -+ { null, "\"\"" }, -+ { &dot->sym, "\".\"" }, -+ { &slash->sym, "\"/\"" }, -+ { fd_path, path_quoted }, -+ }; -+ -+ for (unsigned int dirfd_i = 0; -+ dirfd_i < ARRAY_SIZE(dirfds); -+ ++dirfd_i) { -+ for (unsigned int path_i = 0; -+ path_i < ARRAY_SIZE(paths); -+ ++path_i) { -+ for (unsigned int mode_i = 0; -+ mode_i < ARRAY_SIZE(modes); -+ ++mode_i) { -+ k_faccessat(dirfds[dirfd_i].val, -+ paths[path_i].val, -+ modes[mode_i].val); -+# ifdef PATH_TRACING -+ if (dirfds[dirfd_i].val == fd || -+ paths[path_i].val == fd_path) -+# endif -+ printf("faccessat(%s, %s, %s) = %s\n", -+ dirfds[dirfd_i].str, -+ paths[path_i].str, -+ modes[mode_i].str, -+ errstr); -+ } -+ } -+ } - - puts("+++ exited with 0 +++"); - return 0; -Index: strace-5.7/tests-m32/faccessat.test -=================================================================== ---- /dev/null 1970-01-01 00:00:00.000000000 +0000 -+++ strace-5.7/tests-m32/faccessat.test 2021-08-24 19:46:08.281554319 +0200 -@@ -0,0 +1,19 @@ -+#!/bin/sh -+# -+# Check decoding of faccessat syscall. -+# -+# Copyright (c) 2020 Dmitry V. Levin -+# All rights reserved. -+# -+# SPDX-License-Identifier: GPL-2.0-or-later -+ -+. "${srcdir=.}/init.sh" -+ -+check_prog sed -+ -+run_prog > /dev/null -+run_strace -a23 --trace=faccessat "$@" $args > "$EXP" -+ -+# Filter out faccessat() calls made by ld.so and libc. -+sed -n '/^faccessat(-1, NULL,/,$p' < "$LOG" > "$OUT" -+match_diff "$OUT" "$EXP" -Index: strace-5.7/tests-m32/gen_tests.in -=================================================================== ---- strace-5.7.orig/tests-m32/gen_tests.in 2021-08-24 19:37:43.193829347 +0200 -+++ strace-5.7/tests-m32/gen_tests.in 2021-08-24 19:46:08.282554311 +0200 -@@ -73,7 +73,9 @@ - erestartsys -a34 -e signal=none -e trace=recvfrom - execveat - execveat-v -v -e trace=execveat --faccessat -P $NAME.sample -+faccessat-P -a23 --trace=faccessat -P /dev/full -+faccessat-y +faccessat.test -a24 -y -+faccessat-yy +faccessat.test -a24 -yy - fadvise64_64 +fadvise64.test - fallocate -a18 - fanotify_init -Index: strace-5.7/tests-m32/pure_executables.list -=================================================================== ---- strace-5.7.orig/tests-m32/pure_executables.list 2021-08-24 19:37:43.193829347 +0200 -+++ strace-5.7/tests-m32/pure_executables.list 2021-08-24 19:46:08.283554302 +0200 -@@ -61,6 +61,9 @@ - execve - execveat - faccessat -+faccessat-P -+faccessat-y -+faccessat-yy - fadvise64 - fadvise64_64 - fallocate -Index: strace-5.7/tests-mx32/Makefile.am -=================================================================== ---- strace-5.7.orig/tests-mx32/Makefile.am 2021-08-24 19:42:16.048519924 +0200 -+++ strace-5.7/tests-mx32/Makefile.am 2021-08-24 19:46:08.283554302 +0200 -@@ -346,6 +346,7 @@ - execve-v.test \ - execve.test \ - fadvise64.test \ -+ faccessat.test \ - futex.test \ - getuid.test \ - int_0x80.test \ -Index: strace-5.7/tests-mx32/faccessat-P.c -=================================================================== ---- /dev/null 1970-01-01 00:00:00.000000000 +0000 -+++ strace-5.7/tests-mx32/faccessat-P.c 2021-08-24 19:46:08.283554302 +0200 -@@ -0,0 +1,4 @@ -+#define PATH_TRACING -+#define SKIP_IF_PROC_IS_UNAVAILABLE skip_if_unavailable("/proc/self/fd/") -+ -+#include "faccessat.c" -Index: strace-5.7/tests-mx32/faccessat-y.c -=================================================================== ---- /dev/null 1970-01-01 00:00:00.000000000 +0000 -+++ strace-5.7/tests-mx32/faccessat-y.c 2021-08-24 19:46:08.284554294 +0200 -@@ -0,0 +1,4 @@ -+#define FD_PATH "" -+#define SKIP_IF_PROC_IS_UNAVAILABLE skip_if_unavailable("/proc/self/fd/") -+ -+#include "faccessat.c" -Index: strace-5.7/tests-mx32/faccessat-yy.c -=================================================================== ---- /dev/null 1970-01-01 00:00:00.000000000 +0000 -+++ strace-5.7/tests-mx32/faccessat-yy.c 2021-08-24 19:46:08.284554294 +0200 -@@ -0,0 +1,4 @@ -+#define FD_PATH ">" -+#define SKIP_IF_PROC_IS_UNAVAILABLE skip_if_unavailable("/proc/self/fd/") -+ -+#include "faccessat.c" -Index: strace-5.7/tests-mx32/faccessat.c -=================================================================== ---- strace-5.7.orig/tests-mx32/faccessat.c 2019-09-25 03:02:03.000000000 +0200 -+++ strace-5.7/tests-mx32/faccessat.c 2021-08-24 19:46:08.285554285 +0200 -@@ -1,4 +1,6 @@ - /* -+ * Check decoding of faccessat syscall. -+ * - * Copyright (c) 2016-2019 The strace developers. - * All rights reserved. - * -@@ -10,18 +12,133 @@ - - #ifdef __NR_faccessat - -+# include - # include - # include - -+# ifndef FD_PATH -+# define FD_PATH "" -+# endif -+# ifndef SKIP_IF_PROC_IS_UNAVAILABLE -+# define SKIP_IF_PROC_IS_UNAVAILABLE -+# endif -+ -+static const char *errstr; -+ -+static long -+k_faccessat(const unsigned int dirfd, -+ const void *const pathname, -+ const unsigned int mode) -+{ -+ const kernel_ulong_t fill = (kernel_ulong_t) 0xdefaced00000000ULL; -+ const kernel_ulong_t bad = (kernel_ulong_t) 0xbadc0dedbadc0dedULL; -+ -+ const kernel_ulong_t arg1 = fill | dirfd; -+ const kernel_ulong_t arg2 = (uintptr_t) pathname; -+ const kernel_ulong_t arg3 = fill | mode; -+ const long rc = syscall(__NR_faccessat, -+ arg1, arg2, arg3, bad, bad, bad); -+ errstr = sprintrc(rc); -+ return rc; -+} -+ - int - main(void) - { -- static const char sample[] = "faccessat.sample"; -- const long int fd = (long int) 0xdeadbeefffffffffULL; -+ SKIP_IF_PROC_IS_UNAVAILABLE; - -- long rc = syscall(__NR_faccessat, fd, sample, F_OK); -- printf("faccessat(%d, \"%s\", F_OK) = %ld %s (%m)\n", -- (int) fd, sample, rc, errno2name()); -+ TAIL_ALLOC_OBJECT_CONST_PTR(const char, unterminated); -+ char *unterminated_str; -+ if (asprintf(&unterminated_str, "%p", unterminated) < 0) -+ perror_msg_and_fail("asprintf"); -+ const void *const efault = unterminated + 1; -+ char *efault_str; -+ if (asprintf(&efault_str, "%p", efault) < 0) -+ perror_msg_and_fail("asprintf"); -+ -+ typedef struct { -+ char sym; -+ char null; -+ } sym_null; -+ -+ TAIL_ALLOC_OBJECT_CONST_PTR(sym_null, dot); -+ dot->sym = '.'; -+ dot->null = '\0'; -+ const char *const null = &dot->null; -+ -+ TAIL_ALLOC_OBJECT_CONST_PTR(sym_null, slash); -+ slash->sym = '/'; -+ slash->null = '\0'; -+ -+ static const char path[] = "/dev/full"; -+ const char *const fd_path = tail_memdup(path, sizeof(path)); -+ int fd = open(path, O_WRONLY); -+ if (fd < 0) -+ perror_msg_and_fail("open: %s", path); -+ char *fd_str; -+ if (asprintf(&fd_str, "%d%s", fd, FD_PATH) < 0) -+ perror_msg_and_fail("asprintf"); -+ char *path_quoted; -+ if (asprintf(&path_quoted, "\"%s\"", path) < 0) -+ perror_msg_and_fail("asprintf"); -+ -+ struct { -+ int val; -+ const char *str; -+ } dirfds[] = { -+ { ARG_STR(-1) }, -+ { -100, "AT_FDCWD" }, -+ { fd, fd_str }, -+ }, modes[] = { -+ { ARG_STR(F_OK) }, -+ { ARG_STR(R_OK) }, -+ { ARG_STR(W_OK) }, -+ { ARG_STR(X_OK) }, -+ { ARG_STR(R_OK|W_OK) }, -+ { ARG_STR(R_OK|X_OK) }, -+ { ARG_STR(W_OK|X_OK) }, -+ { ARG_STR(R_OK|W_OK|X_OK) }, -+ { 8, "0x8 /* ?_OK */" }, -+ { -1, "R_OK|W_OK|X_OK|0xfffffff8" }, -+ }; -+ -+ struct { -+ const void *val; -+ const char *str; -+ } paths[] = { -+ { 0, "NULL" }, -+ { efault, efault_str }, -+ { unterminated, unterminated_str }, -+ { null, "\"\"" }, -+ { &dot->sym, "\".\"" }, -+ { &slash->sym, "\"/\"" }, -+ { fd_path, path_quoted }, -+ }; -+ -+ for (unsigned int dirfd_i = 0; -+ dirfd_i < ARRAY_SIZE(dirfds); -+ ++dirfd_i) { -+ for (unsigned int path_i = 0; -+ path_i < ARRAY_SIZE(paths); -+ ++path_i) { -+ for (unsigned int mode_i = 0; -+ mode_i < ARRAY_SIZE(modes); -+ ++mode_i) { -+ k_faccessat(dirfds[dirfd_i].val, -+ paths[path_i].val, -+ modes[mode_i].val); -+# ifdef PATH_TRACING -+ if (dirfds[dirfd_i].val == fd || -+ paths[path_i].val == fd_path) -+# endif -+ printf("faccessat(%s, %s, %s) = %s\n", -+ dirfds[dirfd_i].str, -+ paths[path_i].str, -+ modes[mode_i].str, -+ errstr); -+ } -+ } -+ } - - puts("+++ exited with 0 +++"); - return 0; -Index: strace-5.7/tests-mx32/faccessat.test -=================================================================== ---- /dev/null 1970-01-01 00:00:00.000000000 +0000 -+++ strace-5.7/tests-mx32/faccessat.test 2021-08-24 19:46:08.285554285 +0200 -@@ -0,0 +1,19 @@ -+#!/bin/sh -+# -+# Check decoding of faccessat syscall. -+# -+# Copyright (c) 2020 Dmitry V. Levin -+# All rights reserved. -+# -+# SPDX-License-Identifier: GPL-2.0-or-later -+ -+. "${srcdir=.}/init.sh" -+ -+check_prog sed -+ -+run_prog > /dev/null -+run_strace -a23 --trace=faccessat "$@" $args > "$EXP" -+ -+# Filter out faccessat() calls made by ld.so and libc. -+sed -n '/^faccessat(-1, NULL,/,$p' < "$LOG" > "$OUT" -+match_diff "$OUT" "$EXP" -Index: strace-5.7/tests-mx32/gen_tests.in -=================================================================== ---- strace-5.7.orig/tests-mx32/gen_tests.in 2021-08-24 19:37:43.194829339 +0200 -+++ strace-5.7/tests-mx32/gen_tests.in 2021-08-24 19:46:08.286554277 +0200 -@@ -73,7 +73,9 @@ - erestartsys -a34 -e signal=none -e trace=recvfrom - execveat - execveat-v -v -e trace=execveat --faccessat -P $NAME.sample -+faccessat-P -a23 --trace=faccessat -P /dev/full -+faccessat-y +faccessat.test -a24 -y -+faccessat-yy +faccessat.test -a24 -yy - fadvise64_64 +fadvise64.test - fallocate -a18 - fanotify_init -Index: strace-5.7/tests-mx32/pure_executables.list -=================================================================== ---- strace-5.7.orig/tests-mx32/pure_executables.list 2021-08-24 19:37:43.195829330 +0200 -+++ strace-5.7/tests-mx32/pure_executables.list 2021-08-24 19:46:08.286554277 +0200 -@@ -61,6 +61,9 @@ - execve - execveat - faccessat -+faccessat-P -+faccessat-y -+faccessat-yy - fadvise64 - fadvise64_64 - fallocate -Index: strace-5.7/tests/Makefile.in -=================================================================== ---- strace-5.7.orig/tests/Makefile.in 2021-08-24 19:42:54.720192609 +0200 -+++ strace-5.7/tests/Makefile.in 2021-08-24 19:46:08.292554226 +0200 -@@ -6523,6 +6523,7 @@ - execve-v.test \ - execve.test \ - fadvise64.test \ -+ faccessat.test \ - futex.test \ - getuid.test \ - int_0x80.test \ -Index: strace-5.7/tests-m32/Makefile.in -=================================================================== ---- strace-5.7.orig/tests-m32/Makefile.in 2021-08-24 19:43:13.669032228 +0200 -+++ strace-5.7/tests-m32/Makefile.in 2021-08-24 19:46:08.296554192 +0200 -@@ -6523,6 +6523,7 @@ - execve-v.test \ - execve.test \ - fadvise64.test \ -+ faccessat.test \ - futex.test \ - getuid.test \ - int_0x80.test \ -Index: strace-5.7/tests-mx32/Makefile.in -=================================================================== ---- strace-5.7.orig/tests-mx32/Makefile.in 2021-08-24 19:43:32.469873099 +0200 -+++ strace-5.7/tests-mx32/Makefile.in 2021-08-24 19:46:08.299554167 +0200 -@@ -6523,6 +6523,7 @@ - execve-v.test \ - execve.test \ - fadvise64.test \ -+ faccessat.test \ - futex.test \ - getuid.test \ - int_0x80.test \ diff --git a/0145-xmalloc-introduce-xasprintf.patch b/0145-xmalloc-introduce-xasprintf.patch deleted file mode 100755 index 92a88d1..0000000 --- a/0145-xmalloc-introduce-xasprintf.patch +++ /dev/null @@ -1,65 +0,0 @@ -From f2b8769e4a9aa99cd5e0aef41a0408c34de3cc8e Mon Sep 17 00:00:00 2001 -From: "Dmitry V. Levin" -Date: Mon, 15 Mar 2021 08:00:00 +0000 -Subject: [PATCH 145/149] xmalloc: introduce xasprintf - -xasprintf is a trivial wrapper around vasprintf, -the primary purpose of adding it is to simplify tests. - -* xmalloc.h (xasprintf): New function declaration. -* xmalloc.c: Include and -(xasprintf): New function. ---- - xmalloc.c | 16 ++++++++++++++++ - xmalloc.h | 6 ++++++ - 2 files changed, 22 insertions(+) - -diff --git a/xmalloc.c b/xmalloc.c -index 8688f91..75019e9 100644 ---- a/xmalloc.c -+++ b/xmalloc.c -@@ -10,6 +10,8 @@ - # include "config.h" - #endif - -+#include -+#include - #include - #include - -@@ -146,3 +148,17 @@ xstrndup(const char *str, size_t n) - - return p; - } -+ -+char * -+xasprintf(const char *fmt, ...) -+{ -+ va_list ap; -+ va_start(ap, fmt); -+ -+ char *res; -+ if (vasprintf(&res, fmt, ap) < 0) -+ die_out_of_memory(); -+ -+ va_end(ap); -+ return res; -+} -diff --git a/xmalloc.h b/xmalloc.h -index 4bf1e2c..1305a1e 100644 ---- a/xmalloc.h -+++ b/xmalloc.h -@@ -77,4 +77,10 @@ void *xgrowarray(void *ptr, size_t *nmemb, size_t memb_size); - char *xstrdup(const char *str) ATTRIBUTE_MALLOC; - char *xstrndup(const char *str, size_t n) ATTRIBUTE_MALLOC; - -+/** -+ * Analogous to asprintf, die in case of an error. -+ */ -+char *xasprintf(const char *fmt, ...) -+ ATTRIBUTE_FORMAT((printf, 1, 2)) ATTRIBUTE_MALLOC; -+ - #endif /* !STRACE_XMALLOC_H */ --- -2.1.4 - diff --git a/0146-tests-use-xasprintf-instead-of-asprintf.patch b/0146-tests-use-xasprintf-instead-of-asprintf.patch deleted file mode 100755 index 931f9da..0000000 --- a/0146-tests-use-xasprintf-instead-of-asprintf.patch +++ /dev/null @@ -1,891 +0,0 @@ -From bcd0f3ef964aead4b9e95c10f4c5c75f58ba102c Mon Sep 17 00:00:00 2001 -From: "Dmitry V. Levin" -Date: Mon, 15 Mar 2021 08:00:00 +0000 -Subject: [PATCH 146/149] tests: use xasprintf instead of asprintf - -* tests/clone-flags.c: Include "xmalloc.h", replace all asprintf -invocations followed by perror_msg_and_fail with xasprintf. -* tests/epoll_pwait2.c: Likewise. -* tests/faccessat.c: Likewise. -* tests/faccessat2.c: Likewise. -* tests/ioctl_kvm_run_common.c: Likewise. -* tests/keyctl.c: Likewise. -* tests/lock_file.c: Likewise. -* tests/mq.c: Likewise. -* tests/mq_sendrecv.c: Likewise. -* tests/netlink_protocol.c: Likewise. -* tests/old_mmap.c: Likewise. -* tests/tracer_ppid_pgid_sid.c: Likewise. - -Conflicts: - tests/epoll_pwait2.c - tests/faccessat2.c - tests/mq_sendrecv.c ---- - tests/clone-flags.c | 5 ++--- - tests/faccessat.c | 17 +++++------------ - tests/ioctl_kvm_run_common.c | 6 ++---- - tests/keyctl.c | 29 +++++++++++++---------------- - tests/lock_file.c | 5 ++--- - tests/mq.c | 5 ++--- - tests/mq_sendrecv.c | 4 ++-- - tests/netlink_protocol.c | 5 ++--- - tests/old_mmap.c | 5 ++--- - tests/tracer_ppid_pgid_sid.c | 6 ++---- - 10 files changed, 34 insertions(+), 53 deletions(-) - -diff --git a/tests/clone-flags.c b/tests/clone-flags.c -index 04bb2c7..aa7d48c 100644 ---- a/tests/clone-flags.c -+++ b/tests/clone-flags.c -@@ -8,6 +8,7 @@ - */ - - #include "tests.h" -+#include "xmalloc.h" - - #include - #include -@@ -134,9 +135,7 @@ main(void) - *ptid = 0; - pid = do_clone(child, child_stack, child_stack_size, - CLONE_PIDFD|SIGCHLD, 0, ptid); -- char *fname = 0; -- if (asprintf(&fname, "/proc/self/fd/%d", *ptid) < 0) -- perror_msg_and_fail("asprintf"); -+ char *fname = xasprintf("/proc/self/fd/%d", *ptid); - int rc = readlink(fname, buf, sizeof(buf) - 1); - if ((unsigned int) rc >= sizeof(buf)) - perror_msg_and_fail("readlink"); -diff --git a/tests/faccessat.c b/tests/faccessat.c -index c42aa2d..8cda6f3 100644 ---- a/tests/faccessat.c -+++ b/tests/faccessat.c -@@ -12,6 +12,7 @@ - - #ifdef __NR_faccessat - -+# include "xmalloc.h" - # include - # include - # include -@@ -48,13 +49,9 @@ main(void) - SKIP_IF_PROC_IS_UNAVAILABLE; - - TAIL_ALLOC_OBJECT_CONST_PTR(const char, unterminated); -- char *unterminated_str; -- if (asprintf(&unterminated_str, "%p", unterminated) < 0) -- perror_msg_and_fail("asprintf"); -+ char *unterminated_str = xasprintf("%p", unterminated); - const void *const efault = unterminated + 1; -- char *efault_str; -- if (asprintf(&efault_str, "%p", efault) < 0) -- perror_msg_and_fail("asprintf"); -+ char *efault_str = xasprintf("%p", efault); - - typedef struct { - char sym; -@@ -75,12 +72,8 @@ main(void) - int fd = open(path, O_WRONLY); - if (fd < 0) - perror_msg_and_fail("open: %s", path); -- char *fd_str; -- if (asprintf(&fd_str, "%d%s", fd, FD_PATH) < 0) -- perror_msg_and_fail("asprintf"); -- char *path_quoted; -- if (asprintf(&path_quoted, "\"%s\"", path) < 0) -- perror_msg_and_fail("asprintf"); -+ char *fd_str = xasprintf("%d%s", fd, FD_PATH); -+ char *path_quoted = xasprintf("\"%s\"", path); - - struct { - int val; -diff --git a/tests/ioctl_kvm_run_common.c b/tests/ioctl_kvm_run_common.c -index 9107c30..be1190e 100644 ---- a/tests/ioctl_kvm_run_common.c -+++ b/tests/ioctl_kvm_run_common.c -@@ -48,6 +48,7 @@ - # define KVM_MAX_CPUID_ENTRIES 80 - # endif - -+# include "xmalloc.h" - # include "xlat.h" - # include "xlat/kvm_cpuid_flags.h" - -@@ -254,12 +255,9 @@ static int - vcpu_dev_should_have_cpuid(int fd) - { - int r = 0; -- char *filename = NULL; -+ char *filename = xasprintf("/proc/%d/fd/%d", getpid(), fd); - char buf[sizeof(vcpu_dev)]; - -- if (asprintf(&filename, "/proc/%d/fd/%d", getpid(), fd) < 0) -- error_msg_and_fail("asprintf"); -- - if (readlink(filename, buf, sizeof(buf)) == sizeof(buf) - 1 - && (memcmp(buf, vcpu_dev, sizeof(buf) - 1) == 0)) - r = 1; -diff --git a/tests/keyctl.c b/tests/keyctl.c -index 6dc30fb..96ac197 100644 ---- a/tests/keyctl.c -+++ b/tests/keyctl.c -@@ -11,6 +11,7 @@ - #include "tests.h" - - #include "scno.h" -+#include "xmalloc.h" - - #ifdef __NR_keyctl - -@@ -445,7 +446,6 @@ main(void) - struct iovec *key_iov = tail_alloc(sizeof(*key_iov) * IOV_SIZE); - char *bogus_buf1 = tail_alloc(9); - char *bogus_buf2 = tail_alloc(256); -- char *key_iov_str1; - char *key_iov_str2 = tail_alloc(4096); - const char *errstr; - ssize_t ret; -@@ -472,21 +472,18 @@ main(void) - 0x100000001ULL * i); - } - -- ret = asprintf(&key_iov_str1, "[{iov_base=%p, iov_len=%zu}, " -- "{iov_base=%p, iov_len=%zu}, " -- "{iov_base=%p, iov_len=%zu}, " -- "{iov_base=%p, iov_len=%zu}]", -- key_iov[IOV_SIZE - 4].iov_base, -- key_iov[IOV_SIZE - 4].iov_len, -- key_iov[IOV_SIZE - 3].iov_base, -- key_iov[IOV_SIZE - 3].iov_len, -- key_iov[IOV_SIZE - 2].iov_base, -- key_iov[IOV_SIZE - 2].iov_len, -- key_iov[IOV_SIZE - 1].iov_base, -- key_iov[IOV_SIZE - 1].iov_len); -- -- if (ret < 0) -- error_msg_and_fail("asprintf"); -+ char *key_iov_str1 = xasprintf("[{iov_base=%p, iov_len=%zu}, " -+ "{iov_base=%p, iov_len=%zu}, " -+ "{iov_base=%p, iov_len=%zu}, " -+ "{iov_base=%p, iov_len=%zu}]", -+ key_iov[IOV_SIZE - 4].iov_base, -+ key_iov[IOV_SIZE - 4].iov_len, -+ key_iov[IOV_SIZE - 3].iov_base, -+ key_iov[IOV_SIZE - 3].iov_len, -+ key_iov[IOV_SIZE - 2].iov_base, -+ key_iov[IOV_SIZE - 2].iov_len, -+ key_iov[IOV_SIZE - 1].iov_base, -+ key_iov[IOV_SIZE - 1].iov_len); - - ret = snprintf(key_iov_str2, IOV_STR_SIZE, - "[{iov_base=\"%s\\0\", iov_len=%zu}, " -diff --git a/tests/lock_file.c b/tests/lock_file.c -index 56cf112..7618552 100644 ---- a/tests/lock_file.c -+++ b/tests/lock_file.c -@@ -6,6 +6,7 @@ - */ - - #include "tests.h" -+#include "xmalloc.h" - - #include - #include -@@ -21,9 +22,7 @@ lock_file_by_dirname(const char *path_name, const char *lock_name) - const char *slash = path_name ? strrchr(path_name, '/') : NULL; - const int plen = slash ? (int) (slash - path_name) + 1 : 0; - -- char *lock_file = NULL; -- if (asprintf(&lock_file, "%.*s%s", plen, path_name, lock_name) < 0) -- perror_msg_and_fail("asprintf"); -+ char *lock_file = xasprintf("%.*s%s", plen, path_name, lock_name); - - int lock_fd = open(lock_file, O_RDONLY); - if (lock_fd < 0) -diff --git a/tests/mq.c b/tests/mq.c -index a083e5a..7aa0914 100644 ---- a/tests/mq.c -+++ b/tests/mq.c -@@ -17,6 +17,7 @@ - # include - # include - # include -+# include "xmalloc.h" - - int - main(void) -@@ -24,9 +25,7 @@ main(void) - struct mq_attr attr; - (void) close(0); - -- char *name; -- if (asprintf(&name, "/strace-mq-%u.sample", getpid()) < 0) -- perror_msg_and_fail("asprintf"); -+ char *name = xasprintf("/strace-mq-%u.sample", getpid()); - - if (mq_open(name, O_CREAT, 0700, NULL)) - perror_msg_and_skip("mq_open"); -diff --git a/tests/mq_sendrecv.c b/tests/mq_sendrecv.c -index 45ddf5e..5a919c4 100644 ---- a/tests/mq_sendrecv.c -+++ b/tests/mq_sendrecv.c -@@ -27,6 +27,7 @@ - # include - # include - -+# include "xmalloc.h" - # include "sigevent.h" - - # ifndef DUMPIO_READ -@@ -407,8 +408,7 @@ main(void) - - /* Sending and receiving test */ - -- if (asprintf(&mq_name, "strace-mq_sendrecv-%u.sample", getpid()) < 0) -- perror_msg_and_fail("asprintf"); -+ mq_name = xasprintf("strace-mq_sendrecv-%u.sample", getpid()); - - # if DUMPIO_READ || DUMPIO_WRITE - close(0); -diff --git a/tests/netlink_protocol.c b/tests/netlink_protocol.c -index e632ba3..c37489f 100644 ---- a/tests/netlink_protocol.c -+++ b/tests/netlink_protocol.c -@@ -22,6 +22,7 @@ - # include "netlink.h" - # include - # include -+# include "xmalloc.h" - - static void - send_query(const int fd) -@@ -388,9 +389,7 @@ int main(void) - { - const int fd = create_nl_socket(NETLINK_SOCK_DIAG); - -- char *path; -- if (asprintf(&path, "/proc/self/fd/%u", fd) < 0) -- perror_msg_and_fail("asprintf"); -+ char *path = xasprintf("/proc/self/fd/%u", fd); - char buf[256]; - if (getxattr(path, "system.sockprotoname", buf, sizeof(buf) - 1) < 0) - perror_msg_and_skip("getxattr"); -diff --git a/tests/old_mmap.c b/tests/old_mmap.c -index f095bc4..bb70359 100644 ---- a/tests/old_mmap.c -+++ b/tests/old_mmap.c -@@ -27,6 +27,7 @@ - # include - # include - # include -+# include "xmalloc.h" - - # ifndef TEST_FD - # define TEST_FD -2LU -@@ -82,9 +83,7 @@ main(void) - # ifndef PATH_TRACING - const char *errstr; - if (implemented) { -- char *str; -- if (asprintf(&str, "%#lx", rc) < 0) -- perror_msg_and_fail("asprintf"); -+ char *str = xasprintf("%#lx", rc); - errstr = str; - } else { - errstr = sprintrc(rc); -diff --git a/tests/tracer_ppid_pgid_sid.c b/tests/tracer_ppid_pgid_sid.c -index 69687fa..ce9936d 100644 ---- a/tests/tracer_ppid_pgid_sid.c -+++ b/tests/tracer_ppid_pgid_sid.c -@@ -8,6 +8,7 @@ - */ - - #include "tests.h" -+#include "xmalloc.h" - #include - #include - #include -@@ -55,10 +56,7 @@ get_tracer_pid(void) - static void - get_ppid_pgid_sid(int pid, int *ppid, int *pgid, int *sid) - { -- char *stat; -- if (asprintf(&stat, "/proc/%d/stat", pid) < 0) -- perror_msg_and_fail("asprintf"); -- -+ char *stat = xasprintf("/proc/%d/stat", pid); - FILE *fp = fopen(stat, "r"); - if (!fp) - perror_msg_and_fail("fopen: %s", stat); -diff --git a/tests-m32/clone-flags.c b/tests-m32/clone-flags.c -index 04bb2c7..aa7d48c 100644 ---- a/tests-m32/clone-flags.c -+++ b/tests-m32/clone-flags.c -@@ -8,6 +8,7 @@ - */ - - #include "tests.h" -+#include "xmalloc.h" - - #include - #include -@@ -134,9 +135,7 @@ main(void) - *ptid = 0; - pid = do_clone(child, child_stack, child_stack_size, - CLONE_PIDFD|SIGCHLD, 0, ptid); -- char *fname = 0; -- if (asprintf(&fname, "/proc/self/fd/%d", *ptid) < 0) -- perror_msg_and_fail("asprintf"); -+ char *fname = xasprintf("/proc/self/fd/%d", *ptid); - int rc = readlink(fname, buf, sizeof(buf) - 1); - if ((unsigned int) rc >= sizeof(buf)) - perror_msg_and_fail("readlink"); -diff --git a/tests-m32/faccessat.c b/tests-m32/faccessat.c -index c42aa2d..8cda6f3 100644 ---- a/tests-m32/faccessat.c -+++ b/tests-m32/faccessat.c -@@ -12,6 +12,7 @@ - - #ifdef __NR_faccessat - -+# include "xmalloc.h" - # include - # include - # include -@@ -48,13 +49,9 @@ main(void) - SKIP_IF_PROC_IS_UNAVAILABLE; - - TAIL_ALLOC_OBJECT_CONST_PTR(const char, unterminated); -- char *unterminated_str; -- if (asprintf(&unterminated_str, "%p", unterminated) < 0) -- perror_msg_and_fail("asprintf"); -+ char *unterminated_str = xasprintf("%p", unterminated); - const void *const efault = unterminated + 1; -- char *efault_str; -- if (asprintf(&efault_str, "%p", efault) < 0) -- perror_msg_and_fail("asprintf"); -+ char *efault_str = xasprintf("%p", efault); - - typedef struct { - char sym; -@@ -75,12 +72,8 @@ main(void) - int fd = open(path, O_WRONLY); - if (fd < 0) - perror_msg_and_fail("open: %s", path); -- char *fd_str; -- if (asprintf(&fd_str, "%d%s", fd, FD_PATH) < 0) -- perror_msg_and_fail("asprintf"); -- char *path_quoted; -- if (asprintf(&path_quoted, "\"%s\"", path) < 0) -- perror_msg_and_fail("asprintf"); -+ char *fd_str = xasprintf("%d%s", fd, FD_PATH); -+ char *path_quoted = xasprintf("\"%s\"", path); - - struct { - int val; -diff --git a/tests-m32/ioctl_kvm_run_common.c b/tests-m32/ioctl_kvm_run_common.c -index 9107c30..be1190e 100644 ---- a/tests-m32/ioctl_kvm_run_common.c -+++ b/tests-m32/ioctl_kvm_run_common.c -@@ -48,6 +48,7 @@ - # define KVM_MAX_CPUID_ENTRIES 80 - # endif - -+# include "xmalloc.h" - # include "xlat.h" - # include "xlat/kvm_cpuid_flags.h" - -@@ -254,12 +255,9 @@ static int - vcpu_dev_should_have_cpuid(int fd) - { - int r = 0; -- char *filename = NULL; -+ char *filename = xasprintf("/proc/%d/fd/%d", getpid(), fd); - char buf[sizeof(vcpu_dev)]; - -- if (asprintf(&filename, "/proc/%d/fd/%d", getpid(), fd) < 0) -- error_msg_and_fail("asprintf"); -- - if (readlink(filename, buf, sizeof(buf)) == sizeof(buf) - 1 - && (memcmp(buf, vcpu_dev, sizeof(buf) - 1) == 0)) - r = 1; -diff --git a/tests-m32/keyctl.c b/tests-m32/keyctl.c -index 6dc30fb..96ac197 100644 ---- a/tests-m32/keyctl.c -+++ b/tests-m32/keyctl.c -@@ -11,6 +11,7 @@ - #include "tests.h" - - #include "scno.h" -+#include "xmalloc.h" - - #ifdef __NR_keyctl - -@@ -445,7 +446,6 @@ main(void) - struct iovec *key_iov = tail_alloc(sizeof(*key_iov) * IOV_SIZE); - char *bogus_buf1 = tail_alloc(9); - char *bogus_buf2 = tail_alloc(256); -- char *key_iov_str1; - char *key_iov_str2 = tail_alloc(4096); - const char *errstr; - ssize_t ret; -@@ -472,21 +472,18 @@ main(void) - 0x100000001ULL * i); - } - -- ret = asprintf(&key_iov_str1, "[{iov_base=%p, iov_len=%zu}, " -- "{iov_base=%p, iov_len=%zu}, " -- "{iov_base=%p, iov_len=%zu}, " -- "{iov_base=%p, iov_len=%zu}]", -- key_iov[IOV_SIZE - 4].iov_base, -- key_iov[IOV_SIZE - 4].iov_len, -- key_iov[IOV_SIZE - 3].iov_base, -- key_iov[IOV_SIZE - 3].iov_len, -- key_iov[IOV_SIZE - 2].iov_base, -- key_iov[IOV_SIZE - 2].iov_len, -- key_iov[IOV_SIZE - 1].iov_base, -- key_iov[IOV_SIZE - 1].iov_len); -- -- if (ret < 0) -- error_msg_and_fail("asprintf"); -+ char *key_iov_str1 = xasprintf("[{iov_base=%p, iov_len=%zu}, " -+ "{iov_base=%p, iov_len=%zu}, " -+ "{iov_base=%p, iov_len=%zu}, " -+ "{iov_base=%p, iov_len=%zu}]", -+ key_iov[IOV_SIZE - 4].iov_base, -+ key_iov[IOV_SIZE - 4].iov_len, -+ key_iov[IOV_SIZE - 3].iov_base, -+ key_iov[IOV_SIZE - 3].iov_len, -+ key_iov[IOV_SIZE - 2].iov_base, -+ key_iov[IOV_SIZE - 2].iov_len, -+ key_iov[IOV_SIZE - 1].iov_base, -+ key_iov[IOV_SIZE - 1].iov_len); - - ret = snprintf(key_iov_str2, IOV_STR_SIZE, - "[{iov_base=\"%s\\0\", iov_len=%zu}, " -diff --git a/tests-m32/lock_file.c b/tests-m32/lock_file.c -index 56cf112..7618552 100644 ---- a/tests-m32/lock_file.c -+++ b/tests-m32/lock_file.c -@@ -6,6 +6,7 @@ - */ - - #include "tests.h" -+#include "xmalloc.h" - - #include - #include -@@ -21,9 +22,7 @@ lock_file_by_dirname(const char *path_name, const char *lock_name) - const char *slash = path_name ? strrchr(path_name, '/') : NULL; - const int plen = slash ? (int) (slash - path_name) + 1 : 0; - -- char *lock_file = NULL; -- if (asprintf(&lock_file, "%.*s%s", plen, path_name, lock_name) < 0) -- perror_msg_and_fail("asprintf"); -+ char *lock_file = xasprintf("%.*s%s", plen, path_name, lock_name); - - int lock_fd = open(lock_file, O_RDONLY); - if (lock_fd < 0) -diff --git a/tests-m32/mq.c b/tests-m32/mq.c -index a083e5a..7aa0914 100644 ---- a/tests-m32/mq.c -+++ b/tests-m32/mq.c -@@ -17,6 +17,7 @@ - # include - # include - # include -+# include "xmalloc.h" - - int - main(void) -@@ -24,9 +25,7 @@ main(void) - struct mq_attr attr; - (void) close(0); - -- char *name; -- if (asprintf(&name, "/strace-mq-%u.sample", getpid()) < 0) -- perror_msg_and_fail("asprintf"); -+ char *name = xasprintf("/strace-mq-%u.sample", getpid()); - - if (mq_open(name, O_CREAT, 0700, NULL)) - perror_msg_and_skip("mq_open"); -diff --git a/tests-m32/mq_sendrecv.c b/tests-m32/mq_sendrecv.c -index 45ddf5e..5a919c4 100644 ---- a/tests-m32/mq_sendrecv.c -+++ b/tests-m32/mq_sendrecv.c -@@ -27,6 +27,7 @@ - # include - # include - -+# include "xmalloc.h" - # include "sigevent.h" - - # ifndef DUMPIO_READ -@@ -407,8 +408,7 @@ main(void) - - /* Sending and receiving test */ - -- if (asprintf(&mq_name, "strace-mq_sendrecv-%u.sample", getpid()) < 0) -- perror_msg_and_fail("asprintf"); -+ mq_name = xasprintf("strace-mq_sendrecv-%u.sample", getpid()); - - # if DUMPIO_READ || DUMPIO_WRITE - close(0); -diff --git a/tests-m32/netlink_protocol.c b/tests-m32/netlink_protocol.c -index e632ba3..c37489f 100644 ---- a/tests-m32/netlink_protocol.c -+++ b/tests-m32/netlink_protocol.c -@@ -22,6 +22,7 @@ - # include "netlink.h" - # include - # include -+# include "xmalloc.h" - - static void - send_query(const int fd) -@@ -388,9 +389,7 @@ int main(void) - { - const int fd = create_nl_socket(NETLINK_SOCK_DIAG); - -- char *path; -- if (asprintf(&path, "/proc/self/fd/%u", fd) < 0) -- perror_msg_and_fail("asprintf"); -+ char *path = xasprintf("/proc/self/fd/%u", fd); - char buf[256]; - if (getxattr(path, "system.sockprotoname", buf, sizeof(buf) - 1) < 0) - perror_msg_and_skip("getxattr"); -diff --git a/tests-m32/old_mmap.c b/tests-m32/old_mmap.c -index f095bc4..bb70359 100644 ---- a/tests-m32/old_mmap.c -+++ b/tests-m32/old_mmap.c -@@ -27,6 +27,7 @@ - # include - # include - # include -+# include "xmalloc.h" - - # ifndef TEST_FD - # define TEST_FD -2LU -@@ -82,9 +83,7 @@ main(void) - # ifndef PATH_TRACING - const char *errstr; - if (implemented) { -- char *str; -- if (asprintf(&str, "%#lx", rc) < 0) -- perror_msg_and_fail("asprintf"); -+ char *str = xasprintf("%#lx", rc); - errstr = str; - } else { - errstr = sprintrc(rc); -diff --git a/tests-m32/tracer_ppid_pgid_sid.c b/tests-m32/tracer_ppid_pgid_sid.c -index 69687fa..ce9936d 100644 ---- a/tests-m32/tracer_ppid_pgid_sid.c -+++ b/tests-m32/tracer_ppid_pgid_sid.c -@@ -8,6 +8,7 @@ - */ - - #include "tests.h" -+#include "xmalloc.h" - #include - #include - #include -@@ -55,10 +56,7 @@ get_tracer_pid(void) - static void - get_ppid_pgid_sid(int pid, int *ppid, int *pgid, int *sid) - { -- char *stat; -- if (asprintf(&stat, "/proc/%d/stat", pid) < 0) -- perror_msg_and_fail("asprintf"); -- -+ char *stat = xasprintf("/proc/%d/stat", pid); - FILE *fp = fopen(stat, "r"); - if (!fp) - perror_msg_and_fail("fopen: %s", stat); -diff --git a/tests-mx32/clone-flags.c b/tests-mx32/clone-flags.c -index 04bb2c7..aa7d48c 100644 ---- a/tests-mx32/clone-flags.c -+++ b/tests-mx32/clone-flags.c -@@ -8,6 +8,7 @@ - */ - - #include "tests.h" -+#include "xmalloc.h" - - #include - #include -@@ -134,9 +135,7 @@ main(void) - *ptid = 0; - pid = do_clone(child, child_stack, child_stack_size, - CLONE_PIDFD|SIGCHLD, 0, ptid); -- char *fname = 0; -- if (asprintf(&fname, "/proc/self/fd/%d", *ptid) < 0) -- perror_msg_and_fail("asprintf"); -+ char *fname = xasprintf("/proc/self/fd/%d", *ptid); - int rc = readlink(fname, buf, sizeof(buf) - 1); - if ((unsigned int) rc >= sizeof(buf)) - perror_msg_and_fail("readlink"); -diff --git a/tests-mx32/faccessat.c b/tests-mx32/faccessat.c -index c42aa2d..8cda6f3 100644 ---- a/tests-mx32/faccessat.c -+++ b/tests-mx32/faccessat.c -@@ -12,6 +12,7 @@ - - #ifdef __NR_faccessat - -+# include "xmalloc.h" - # include - # include - # include -@@ -48,13 +49,9 @@ main(void) - SKIP_IF_PROC_IS_UNAVAILABLE; - - TAIL_ALLOC_OBJECT_CONST_PTR(const char, unterminated); -- char *unterminated_str; -- if (asprintf(&unterminated_str, "%p", unterminated) < 0) -- perror_msg_and_fail("asprintf"); -+ char *unterminated_str = xasprintf("%p", unterminated); - const void *const efault = unterminated + 1; -- char *efault_str; -- if (asprintf(&efault_str, "%p", efault) < 0) -- perror_msg_and_fail("asprintf"); -+ char *efault_str = xasprintf("%p", efault); - - typedef struct { - char sym; -@@ -75,12 +72,8 @@ main(void) - int fd = open(path, O_WRONLY); - if (fd < 0) - perror_msg_and_fail("open: %s", path); -- char *fd_str; -- if (asprintf(&fd_str, "%d%s", fd, FD_PATH) < 0) -- perror_msg_and_fail("asprintf"); -- char *path_quoted; -- if (asprintf(&path_quoted, "\"%s\"", path) < 0) -- perror_msg_and_fail("asprintf"); -+ char *fd_str = xasprintf("%d%s", fd, FD_PATH); -+ char *path_quoted = xasprintf("\"%s\"", path); - - struct { - int val; -diff --git a/tests-mx32/ioctl_kvm_run_common.c b/tests-mx32/ioctl_kvm_run_common.c -index 9107c30..be1190e 100644 ---- a/tests-mx32/ioctl_kvm_run_common.c -+++ b/tests-mx32/ioctl_kvm_run_common.c -@@ -48,6 +48,7 @@ - # define KVM_MAX_CPUID_ENTRIES 80 - # endif - -+# include "xmalloc.h" - # include "xlat.h" - # include "xlat/kvm_cpuid_flags.h" - -@@ -254,12 +255,9 @@ static int - vcpu_dev_should_have_cpuid(int fd) - { - int r = 0; -- char *filename = NULL; -+ char *filename = xasprintf("/proc/%d/fd/%d", getpid(), fd); - char buf[sizeof(vcpu_dev)]; - -- if (asprintf(&filename, "/proc/%d/fd/%d", getpid(), fd) < 0) -- error_msg_and_fail("asprintf"); -- - if (readlink(filename, buf, sizeof(buf)) == sizeof(buf) - 1 - && (memcmp(buf, vcpu_dev, sizeof(buf) - 1) == 0)) - r = 1; -diff --git a/tests-mx32/keyctl.c b/tests-mx32/keyctl.c -index 6dc30fb..96ac197 100644 ---- a/tests-mx32/keyctl.c -+++ b/tests-mx32/keyctl.c -@@ -11,6 +11,7 @@ - #include "tests.h" - - #include "scno.h" -+#include "xmalloc.h" - - #ifdef __NR_keyctl - -@@ -445,7 +446,6 @@ main(void) - struct iovec *key_iov = tail_alloc(sizeof(*key_iov) * IOV_SIZE); - char *bogus_buf1 = tail_alloc(9); - char *bogus_buf2 = tail_alloc(256); -- char *key_iov_str1; - char *key_iov_str2 = tail_alloc(4096); - const char *errstr; - ssize_t ret; -@@ -472,21 +472,18 @@ main(void) - 0x100000001ULL * i); - } - -- ret = asprintf(&key_iov_str1, "[{iov_base=%p, iov_len=%zu}, " -- "{iov_base=%p, iov_len=%zu}, " -- "{iov_base=%p, iov_len=%zu}, " -- "{iov_base=%p, iov_len=%zu}]", -- key_iov[IOV_SIZE - 4].iov_base, -- key_iov[IOV_SIZE - 4].iov_len, -- key_iov[IOV_SIZE - 3].iov_base, -- key_iov[IOV_SIZE - 3].iov_len, -- key_iov[IOV_SIZE - 2].iov_base, -- key_iov[IOV_SIZE - 2].iov_len, -- key_iov[IOV_SIZE - 1].iov_base, -- key_iov[IOV_SIZE - 1].iov_len); -- -- if (ret < 0) -- error_msg_and_fail("asprintf"); -+ char *key_iov_str1 = xasprintf("[{iov_base=%p, iov_len=%zu}, " -+ "{iov_base=%p, iov_len=%zu}, " -+ "{iov_base=%p, iov_len=%zu}, " -+ "{iov_base=%p, iov_len=%zu}]", -+ key_iov[IOV_SIZE - 4].iov_base, -+ key_iov[IOV_SIZE - 4].iov_len, -+ key_iov[IOV_SIZE - 3].iov_base, -+ key_iov[IOV_SIZE - 3].iov_len, -+ key_iov[IOV_SIZE - 2].iov_base, -+ key_iov[IOV_SIZE - 2].iov_len, -+ key_iov[IOV_SIZE - 1].iov_base, -+ key_iov[IOV_SIZE - 1].iov_len); - - ret = snprintf(key_iov_str2, IOV_STR_SIZE, - "[{iov_base=\"%s\\0\", iov_len=%zu}, " -diff --git a/tests-mx32/lock_file.c b/tests-mx32/lock_file.c -index 56cf112..7618552 100644 ---- a/tests-mx32/lock_file.c -+++ b/tests-mx32/lock_file.c -@@ -6,6 +6,7 @@ - */ - - #include "tests.h" -+#include "xmalloc.h" - - #include - #include -@@ -21,9 +22,7 @@ lock_file_by_dirname(const char *path_name, const char *lock_name) - const char *slash = path_name ? strrchr(path_name, '/') : NULL; - const int plen = slash ? (int) (slash - path_name) + 1 : 0; - -- char *lock_file = NULL; -- if (asprintf(&lock_file, "%.*s%s", plen, path_name, lock_name) < 0) -- perror_msg_and_fail("asprintf"); -+ char *lock_file = xasprintf("%.*s%s", plen, path_name, lock_name); - - int lock_fd = open(lock_file, O_RDONLY); - if (lock_fd < 0) -diff --git a/tests-mx32/mq.c b/tests-mx32/mq.c -index a083e5a..7aa0914 100644 ---- a/tests-mx32/mq.c -+++ b/tests-mx32/mq.c -@@ -17,6 +17,7 @@ - # include - # include - # include -+# include "xmalloc.h" - - int - main(void) -@@ -24,9 +25,7 @@ main(void) - struct mq_attr attr; - (void) close(0); - -- char *name; -- if (asprintf(&name, "/strace-mq-%u.sample", getpid()) < 0) -- perror_msg_and_fail("asprintf"); -+ char *name = xasprintf("/strace-mq-%u.sample", getpid()); - - if (mq_open(name, O_CREAT, 0700, NULL)) - perror_msg_and_skip("mq_open"); -diff --git a/tests-mx32/mq_sendrecv.c b/tests-mx32/mq_sendrecv.c -index 45ddf5e..5a919c4 100644 ---- a/tests-mx32/mq_sendrecv.c -+++ b/tests-mx32/mq_sendrecv.c -@@ -27,6 +27,7 @@ - # include - # include - -+# include "xmalloc.h" - # include "sigevent.h" - - # ifndef DUMPIO_READ -@@ -407,8 +408,7 @@ main(void) - - /* Sending and receiving test */ - -- if (asprintf(&mq_name, "strace-mq_sendrecv-%u.sample", getpid()) < 0) -- perror_msg_and_fail("asprintf"); -+ mq_name = xasprintf("strace-mq_sendrecv-%u.sample", getpid()); - - # if DUMPIO_READ || DUMPIO_WRITE - close(0); -diff --git a/tests-mx32/netlink_protocol.c b/tests-mx32/netlink_protocol.c -index e632ba3..c37489f 100644 ---- a/tests-mx32/netlink_protocol.c -+++ b/tests-mx32/netlink_protocol.c -@@ -22,6 +22,7 @@ - # include "netlink.h" - # include - # include -+# include "xmalloc.h" - - static void - send_query(const int fd) -@@ -388,9 +389,7 @@ int main(void) - { - const int fd = create_nl_socket(NETLINK_SOCK_DIAG); - -- char *path; -- if (asprintf(&path, "/proc/self/fd/%u", fd) < 0) -- perror_msg_and_fail("asprintf"); -+ char *path = xasprintf("/proc/self/fd/%u", fd); - char buf[256]; - if (getxattr(path, "system.sockprotoname", buf, sizeof(buf) - 1) < 0) - perror_msg_and_skip("getxattr"); -diff --git a/tests-mx32/old_mmap.c b/tests-mx32/old_mmap.c -index f095bc4..bb70359 100644 ---- a/tests-mx32/old_mmap.c -+++ b/tests-mx32/old_mmap.c -@@ -27,6 +27,7 @@ - # include - # include - # include -+# include "xmalloc.h" - - # ifndef TEST_FD - # define TEST_FD -2LU -@@ -82,9 +83,7 @@ main(void) - # ifndef PATH_TRACING - const char *errstr; - if (implemented) { -- char *str; -- if (asprintf(&str, "%#lx", rc) < 0) -- perror_msg_and_fail("asprintf"); -+ char *str = xasprintf("%#lx", rc); - errstr = str; - } else { - errstr = sprintrc(rc); -diff --git a/tests-mx32/tracer_ppid_pgid_sid.c b/tests-mx32/tracer_ppid_pgid_sid.c -index 69687fa..ce9936d 100644 ---- a/tests-mx32/tracer_ppid_pgid_sid.c -+++ b/tests-mx32/tracer_ppid_pgid_sid.c -@@ -8,6 +8,7 @@ - */ - - #include "tests.h" -+#include "xmalloc.h" - #include - #include - #include -@@ -55,10 +56,7 @@ get_tracer_pid(void) - static void - get_ppid_pgid_sid(int pid, int *ppid, int *pgid, int *sid) - { -- char *stat; -- if (asprintf(&stat, "/proc/%d/stat", pid) < 0) -- perror_msg_and_fail("asprintf"); -- -+ char *stat = xasprintf("/proc/%d/stat", pid); - FILE *fp = fopen(stat, "r"); - if (!fp) - perror_msg_and_fail("fopen: %s", stat); --- -2.1.4 - diff --git a/0147-file_handle-print-f_handle-as-a-hexadecimal-string.patch b/0147-file_handle-print-f_handle-as-a-hexadecimal-string.patch deleted file mode 100755 index 1e0c295..0000000 --- a/0147-file_handle-print-f_handle-as-a-hexadecimal-string.patch +++ /dev/null @@ -1,276 +0,0 @@ -From 5a8d3bab6f492b3932299d9e80fb247ab00b8102 Mon Sep 17 00:00:00 2001 -From: "Dmitry V. Levin" -Date: Sun, 7 Mar 2021 08:00:00 +0000 -Subject: [PATCH 147/149] file_handle: print f_handle as a hexadecimal string - -Printing the sequence of bytes as a hexadecimal number is misleading -because the latter depends on endianness. - -* src/file_handle.c (print_f_handle): New function. -(SYS_FUNC(name_to_handle_at), SYS_FUNC(open_by_handle_at)): Use it -to print struct file_handle.f_handle. -* tests/file_handle.c (print_handle_data, do_open_by_handle_at, main): -Update expected output. ---- - file_handle.c | 47 ++++++++++++++++++++++------------------------- - tests/file_handle.c | 26 +++++++++++--------------- - 2 files changed, 33 insertions(+), 40 deletions(-) - -diff --git a/file_handle.c b/file_handle.c -index d82a1bc..343111f 100644 ---- a/file_handle.c -+++ b/file_handle.c -@@ -19,6 +19,22 @@ typedef struct { - int handle_type; - } file_handle_header; - -+static void -+print_f_handle(struct tcb *tcp, kernel_ulong_t addr, unsigned int handle_bytes) -+{ -+ unsigned int len = MIN(handle_bytes, MAX_HANDLE_SZ); -+ char f_handle[MAX_HANDLE_SZ]; -+ addr += sizeof(file_handle_header); -+ if (addr > sizeof(file_handle_header) && -+ !umoven(tcp, addr, len, f_handle)) { -+ print_quoted_string(f_handle, len, QUOTE_FORCE_HEX); -+ if (handle_bytes > len) -+ tprints("..."); -+ } else { -+ tprints("???"); -+ } -+} -+ - SYS_FUNC(name_to_handle_at) - { - file_handle_header h; -@@ -53,24 +69,15 @@ SYS_FUNC(name_to_handle_at) - - return 0; - } else { -- unsigned int i = get_tcb_priv_ulong(tcp); -- - if ((!syserror(tcp) || EOVERFLOW == tcp->u_error) - && !umove(tcp, addr, &h)) { -- unsigned char f_handle[MAX_HANDLE_SZ]; - -- if (i != h.handle_bytes) -+ if (h.handle_bytes != get_tcb_priv_ulong(tcp)) - tprintf(" => %u", h.handle_bytes); - if (!syserror(tcp)) { -- tprintf(", handle_type=%d", h.handle_type); -- if (h.handle_bytes > MAX_HANDLE_SZ) -- h.handle_bytes = MAX_HANDLE_SZ; -- if (!umoven(tcp, addr + sizeof(h), h.handle_bytes, -- f_handle)) { -- tprints(", f_handle=0x"); -- for (i = 0; i < h.handle_bytes; ++i) -- tprintf("%02x", f_handle[i]); -- } -+ tprintf(", handle_type=%d, f_handle=", -+ h.handle_type); -+ print_f_handle(tcp, addr, h.handle_bytes); - } - } - tprints("}, "); -@@ -96,19 +103,9 @@ SYS_FUNC(open_by_handle_at) - - /* handle */ - if (!umove_or_printaddr(tcp, addr, &h)) { -- unsigned char f_handle[MAX_HANDLE_SZ]; -- -- tprintf("{handle_bytes=%u, handle_type=%d", -+ tprintf("{handle_bytes=%u, handle_type=%d, f_handle=", - h.handle_bytes, h.handle_type); -- if (h.handle_bytes > MAX_HANDLE_SZ) -- h.handle_bytes = MAX_HANDLE_SZ; -- if (!umoven(tcp, addr + sizeof(h), h.handle_bytes, &f_handle)) { -- unsigned int i; -- -- tprints(", f_handle=0x"); -- for (i = 0; i < h.handle_bytes; ++i) -- tprintf("%02x", f_handle[i]); -- } -+ print_f_handle(tcp, addr, h.handle_bytes); - tprints("}"); - } - tprints(", "); -diff --git a/tests/file_handle.c b/tests/file_handle.c -index edabde6..07af7ba 100644 ---- a/tests/file_handle.c -+++ b/tests/file_handle.c -@@ -42,14 +42,10 @@ struct file_handle { - void - print_handle_data(unsigned char *bytes, unsigned int size) - { -- unsigned int i; -- -- if (size > MAX_HANDLE_SZ) -- size = MAX_HANDLE_SZ; -- -- printf("0x"); -- for (i = 0; i < size; ++i) -- printf("%02x", bytes[i]); -+ unsigned int len = MIN(size, MAX_HANDLE_SZ); -+ print_quoted_hex(bytes, len); -+ if (size > len) -+ printf("..."); - } - - void -@@ -111,11 +107,13 @@ do_open_by_handle_at(kernel_ulong_t mount_fd, - printf("{handle_bytes=%u, handle_type=%d", fh->handle_bytes, - fh->handle_type); - -+ printf(", f_handle="); - if (valid_data) { -- printf(", f_handle="); - print_handle_data((unsigned char *) fh + - sizeof(struct file_handle), - fh->handle_bytes); -+ } else { -+ printf("???"); - } - - printf("}"); -@@ -275,16 +273,14 @@ main(void) - assert(syscall(__NR_name_to_handle_at, fdcwd, ".", handle, &mount_id, - flags) == 0); - printf("name_to_handle_at(AT_FDCWD, \".\", {handle_bytes=%u" -- ", handle_type=%d, f_handle=0x", -+ ", handle_type=%d, f_handle=", - handle->handle_bytes, handle->handle_type); -- for (i = 0; i < handle->handle_bytes; ++i) -- printf("%02x", handle->f_handle[i]); -+ print_handle_data(handle->f_handle, handle->handle_bytes); - printf("}, [%d], AT_SYMLINK_FOLLOW) = 0\n", mount_id); - - printf("open_by_handle_at(-1, {handle_bytes=%u, handle_type=%d" -- ", f_handle=0x", handle->handle_bytes, handle->handle_type); -- for (i = 0; i < handle->handle_bytes; ++i) -- printf("%02x", handle->f_handle[i]); -+ ", f_handle=", handle->handle_bytes, handle->handle_type); -+ print_handle_data(handle->f_handle, handle->handle_bytes); - int rc = syscall(__NR_open_by_handle_at, -1, handle, - O_RDONLY | O_DIRECTORY); - printf("}, O_RDONLY|O_DIRECTORY) = %d %s (%m)\n", rc, errno2name()); -diff --git a/tests-m32/file_handle.c b/tests-m32/file_handle.c -index edabde6..07af7ba 100644 ---- a/tests-m32/file_handle.c -+++ b/tests-m32/file_handle.c -@@ -42,14 +42,10 @@ struct file_handle { - void - print_handle_data(unsigned char *bytes, unsigned int size) - { -- unsigned int i; -- -- if (size > MAX_HANDLE_SZ) -- size = MAX_HANDLE_SZ; -- -- printf("0x"); -- for (i = 0; i < size; ++i) -- printf("%02x", bytes[i]); -+ unsigned int len = MIN(size, MAX_HANDLE_SZ); -+ print_quoted_hex(bytes, len); -+ if (size > len) -+ printf("..."); - } - - void -@@ -111,11 +107,13 @@ do_open_by_handle_at(kernel_ulong_t mount_fd, - printf("{handle_bytes=%u, handle_type=%d", fh->handle_bytes, - fh->handle_type); - -+ printf(", f_handle="); - if (valid_data) { -- printf(", f_handle="); - print_handle_data((unsigned char *) fh + - sizeof(struct file_handle), - fh->handle_bytes); -+ } else { -+ printf("???"); - } - - printf("}"); -@@ -275,16 +273,14 @@ main(void) - assert(syscall(__NR_name_to_handle_at, fdcwd, ".", handle, &mount_id, - flags) == 0); - printf("name_to_handle_at(AT_FDCWD, \".\", {handle_bytes=%u" -- ", handle_type=%d, f_handle=0x", -+ ", handle_type=%d, f_handle=", - handle->handle_bytes, handle->handle_type); -- for (i = 0; i < handle->handle_bytes; ++i) -- printf("%02x", handle->f_handle[i]); -+ print_handle_data(handle->f_handle, handle->handle_bytes); - printf("}, [%d], AT_SYMLINK_FOLLOW) = 0\n", mount_id); - - printf("open_by_handle_at(-1, {handle_bytes=%u, handle_type=%d" -- ", f_handle=0x", handle->handle_bytes, handle->handle_type); -- for (i = 0; i < handle->handle_bytes; ++i) -- printf("%02x", handle->f_handle[i]); -+ ", f_handle=", handle->handle_bytes, handle->handle_type); -+ print_handle_data(handle->f_handle, handle->handle_bytes); - int rc = syscall(__NR_open_by_handle_at, -1, handle, - O_RDONLY | O_DIRECTORY); - printf("}, O_RDONLY|O_DIRECTORY) = %d %s (%m)\n", rc, errno2name()); -diff --git a/tests-mx32/file_handle.c b/tests-mx32/file_handle.c -index edabde6..07af7ba 100644 ---- a/tests-mx32/file_handle.c -+++ b/tests-mx32/file_handle.c -@@ -42,14 +42,10 @@ struct file_handle { - void - print_handle_data(unsigned char *bytes, unsigned int size) - { -- unsigned int i; -- -- if (size > MAX_HANDLE_SZ) -- size = MAX_HANDLE_SZ; -- -- printf("0x"); -- for (i = 0; i < size; ++i) -- printf("%02x", bytes[i]); -+ unsigned int len = MIN(size, MAX_HANDLE_SZ); -+ print_quoted_hex(bytes, len); -+ if (size > len) -+ printf("..."); - } - - void -@@ -111,11 +107,13 @@ do_open_by_handle_at(kernel_ulong_t mount_fd, - printf("{handle_bytes=%u, handle_type=%d", fh->handle_bytes, - fh->handle_type); - -+ printf(", f_handle="); - if (valid_data) { -- printf(", f_handle="); - print_handle_data((unsigned char *) fh + - sizeof(struct file_handle), - fh->handle_bytes); -+ } else { -+ printf("???"); - } - - printf("}"); -@@ -275,16 +273,14 @@ main(void) - assert(syscall(__NR_name_to_handle_at, fdcwd, ".", handle, &mount_id, - flags) == 0); - printf("name_to_handle_at(AT_FDCWD, \".\", {handle_bytes=%u" -- ", handle_type=%d, f_handle=0x", -+ ", handle_type=%d, f_handle=", - handle->handle_bytes, handle->handle_type); -- for (i = 0; i < handle->handle_bytes; ++i) -- printf("%02x", handle->f_handle[i]); -+ print_handle_data(handle->f_handle, handle->handle_bytes); - printf("}, [%d], AT_SYMLINK_FOLLOW) = 0\n", mount_id); - - printf("open_by_handle_at(-1, {handle_bytes=%u, handle_type=%d" -- ", f_handle=0x", handle->handle_bytes, handle->handle_type); -- for (i = 0; i < handle->handle_bytes; ++i) -- printf("%02x", handle->f_handle[i]); -+ ", f_handle=", handle->handle_bytes, handle->handle_type); -+ print_handle_data(handle->f_handle, handle->handle_bytes); - int rc = syscall(__NR_open_by_handle_at, -1, handle, - O_RDONLY | O_DIRECTORY); - printf("}, O_RDONLY|O_DIRECTORY) = %d %s (%m)\n", rc, errno2name()); --- -2.1.4 - diff --git a/0148-tests-fix-execve-test-with-fresh-linux-kernels.patch b/0148-tests-fix-execve-test-with-fresh-linux-kernels.patch deleted file mode 100755 index d6338b4..0000000 --- a/0148-tests-fix-execve-test-with-fresh-linux-kernels.patch +++ /dev/null @@ -1,486 +0,0 @@ -From 1ec648999d3bf01ae87cac65c810d5d8f19c71c0 Mon Sep 17 00:00:00 2001 -From: Sven Schnelle -Date: Tue, 10 Nov 2020 07:38:34 +0100 -Subject: [PATCH 148/149] tests: fix execve test with fresh linux kernels - -Starting with Linux commit v5.9-rc1~164^2^2~2, execve copies syscall -arguments before trying to find the executable, failing with EFAULT -in case of a faulty address. Adjust the test to handle both variants -of execve behaviour. - -* tests/execve.c (errstr): New variable. -(call_execve): New function. -(main): Use it instead of execve. Do not hardcode ENOENT in expected -output of tests, use errstr instead. - -Signed-off-by: Sven Schnelle -Signed-off-by: Dmitry V. Levin ---- - tests/execve.c | 54 ++++++++++++++++++++++++++++++++---------------------- - 1 file changed, 32 insertions(+), 22 deletions(-) - -diff --git a/tests/execve.c b/tests/execve.c -index 2f6ae52..961d284 100644 ---- a/tests/execve.c -+++ b/tests/execve.c -@@ -12,6 +12,16 @@ - #include - #include - -+static const char *errstr; -+ -+static int -+call_execve(const char *pathname, char *const *argv, char *const *envp) -+{ -+ int rc = execve(pathname, argv, envp); -+ errstr = sprintrc(rc); -+ return rc; -+} -+ - #define FILENAME "test.execve\nfilename" - #define Q_FILENAME "test.execve\\nfilename" - -@@ -43,7 +53,7 @@ main(void) - char ** const tail_argv = tail_memdup(argv, sizeof(argv)); - char ** const tail_envp = tail_memdup(envp, sizeof(envp)); - -- execve(FILENAME, tail_argv, tail_envp); -+ call_execve(FILENAME, tail_argv, tail_envp); - printf("execve(\"%s\"" - ", [\"%s\", \"%s\", \"%s\", %p, %p, %p, ... /* %p */]" - #if VERBOSE -@@ -51,7 +61,7 @@ main(void) - #else - ", %p /* 5 vars, unterminated */" - #endif -- ") = -1 ENOENT (%m)\n", -+ ") = %s\n", - Q_FILENAME, q_argv[0], q_argv[1], q_argv[2], - argv[3], argv[4], argv[5], (char *) tail_argv + sizeof(argv) - #if VERBOSE -@@ -60,60 +70,60 @@ main(void) - #else - , tail_envp - #endif -- ); -+ , errstr); - - tail_argv[ARRAY_SIZE(q_argv)] = NULL; - tail_envp[ARRAY_SIZE(q_envp)] = NULL; - (void) q_envp; /* workaround for clang bug #33068 */ - -- execve(FILENAME, tail_argv, tail_envp); -+ call_execve(FILENAME, tail_argv, tail_envp); - printf("execve(\"%s\", [\"%s\", \"%s\", \"%s\"]" - #if VERBOSE - ", [\"%s\", \"%s\"]" - #else - ", %p /* 2 vars */" - #endif -- ") = -1 ENOENT (%m)\n", -+ ") = %s\n", - Q_FILENAME, q_argv[0], q_argv[1], q_argv[2] - #if VERBOSE - , q_envp[0], q_envp[1] - #else - , tail_envp - #endif -- ); -+ , errstr); - -- execve(FILENAME, tail_argv + 2, tail_envp + 1); -+ call_execve(FILENAME, tail_argv + 2, tail_envp + 1); - printf("execve(\"%s\", [\"%s\"]" - #if VERBOSE - ", [\"%s\"]" - #else - ", %p /* 1 var */" - #endif -- ") = -1 ENOENT (%m)\n", -+ ") = %s\n", - Q_FILENAME, q_argv[2] - #if VERBOSE - , q_envp[1] - #else - , tail_envp + 1 - #endif -- ); -+ , errstr); - - TAIL_ALLOC_OBJECT_CONST_PTR(char *, empty); - char **const efault = empty + 1; - *empty = NULL; - -- execve(FILENAME, empty, empty); -+ call_execve(FILENAME, empty, empty); - printf("execve(\"%s\", []" - #if VERBOSE - ", []" - #else - ", %p /* 0 vars */" - #endif -- ") = -1 ENOENT (%m)\n", Q_FILENAME -+ ") = %s\n", Q_FILENAME - #if !VERBOSE - , empty - #endif -- ); -+ , errstr); - - char *const str_a = tail_alloc(DEFAULT_STRLEN + 2); - fill_memory_ex(str_a, DEFAULT_STRLEN + 1, '0', 10); -@@ -132,7 +142,7 @@ main(void) - } - a[i] = b[i] = NULL; - -- execve(FILENAME, a, b); -+ call_execve(FILENAME, a, b); - printf("execve(\"%s\", [\"%.*s\"...", Q_FILENAME, DEFAULT_STRLEN, a[0]); - for (i = 1; i < DEFAULT_STRLEN; ++i) - printf(", \"%s\"", a[i]); -@@ -149,9 +159,9 @@ main(void) - #else - printf("], %p /* %u vars */", b, DEFAULT_STRLEN + 1); - #endif -- printf(") = -1 ENOENT (%m)\n"); -+ printf(") = %s\n", errstr); - -- execve(FILENAME, a + 1, b + 1); -+ call_execve(FILENAME, a + 1, b + 1); - printf("execve(\"%s\", [\"%s\"", Q_FILENAME, a[1]); - for (i = 2; i <= DEFAULT_STRLEN; ++i) - printf(", \"%s\"", a[i]); -@@ -163,15 +173,15 @@ main(void) - #else - printf("], %p /* %d vars */", b + 1, DEFAULT_STRLEN); - #endif -- printf(") = -1 ENOENT (%m)\n"); -+ printf(") = %s\n", errstr); - -- execve(FILENAME, (char **) tail_argv[ARRAY_SIZE(q_argv)], efault); -- printf("execve(\"%s\", NULL, %p) = -1 ENOENT (%m)\n", -- Q_FILENAME, efault); -+ call_execve(FILENAME, (char **) tail_argv[ARRAY_SIZE(q_argv)], efault); -+ printf("execve(\"%s\", NULL, %p) = %s\n", -+ Q_FILENAME, efault, errstr); - -- execve(FILENAME, efault, NULL); -- printf("execve(\"%s\", %p, NULL) = -1 ENOENT (%m)\n", -- Q_FILENAME, efault); -+ call_execve(FILENAME, efault, NULL); -+ printf("execve(\"%s\", %p, NULL) = %s\n", -+ Q_FILENAME, efault, errstr); - - leave_and_remove_subdir(); - -diff --git a/tests-m32/execve.c b/tests-m32/execve.c -index 2f6ae52..961d284 100644 ---- a/tests-m32/execve.c -+++ b/tests-m32/execve.c -@@ -12,6 +12,16 @@ - #include - #include - -+static const char *errstr; -+ -+static int -+call_execve(const char *pathname, char *const *argv, char *const *envp) -+{ -+ int rc = execve(pathname, argv, envp); -+ errstr = sprintrc(rc); -+ return rc; -+} -+ - #define FILENAME "test.execve\nfilename" - #define Q_FILENAME "test.execve\\nfilename" - -@@ -43,7 +53,7 @@ main(void) - char ** const tail_argv = tail_memdup(argv, sizeof(argv)); - char ** const tail_envp = tail_memdup(envp, sizeof(envp)); - -- execve(FILENAME, tail_argv, tail_envp); -+ call_execve(FILENAME, tail_argv, tail_envp); - printf("execve(\"%s\"" - ", [\"%s\", \"%s\", \"%s\", %p, %p, %p, ... /* %p */]" - #if VERBOSE -@@ -51,7 +61,7 @@ main(void) - #else - ", %p /* 5 vars, unterminated */" - #endif -- ") = -1 ENOENT (%m)\n", -+ ") = %s\n", - Q_FILENAME, q_argv[0], q_argv[1], q_argv[2], - argv[3], argv[4], argv[5], (char *) tail_argv + sizeof(argv) - #if VERBOSE -@@ -60,60 +70,60 @@ main(void) - #else - , tail_envp - #endif -- ); -+ , errstr); - - tail_argv[ARRAY_SIZE(q_argv)] = NULL; - tail_envp[ARRAY_SIZE(q_envp)] = NULL; - (void) q_envp; /* workaround for clang bug #33068 */ - -- execve(FILENAME, tail_argv, tail_envp); -+ call_execve(FILENAME, tail_argv, tail_envp); - printf("execve(\"%s\", [\"%s\", \"%s\", \"%s\"]" - #if VERBOSE - ", [\"%s\", \"%s\"]" - #else - ", %p /* 2 vars */" - #endif -- ") = -1 ENOENT (%m)\n", -+ ") = %s\n", - Q_FILENAME, q_argv[0], q_argv[1], q_argv[2] - #if VERBOSE - , q_envp[0], q_envp[1] - #else - , tail_envp - #endif -- ); -+ , errstr); - -- execve(FILENAME, tail_argv + 2, tail_envp + 1); -+ call_execve(FILENAME, tail_argv + 2, tail_envp + 1); - printf("execve(\"%s\", [\"%s\"]" - #if VERBOSE - ", [\"%s\"]" - #else - ", %p /* 1 var */" - #endif -- ") = -1 ENOENT (%m)\n", -+ ") = %s\n", - Q_FILENAME, q_argv[2] - #if VERBOSE - , q_envp[1] - #else - , tail_envp + 1 - #endif -- ); -+ , errstr); - - TAIL_ALLOC_OBJECT_CONST_PTR(char *, empty); - char **const efault = empty + 1; - *empty = NULL; - -- execve(FILENAME, empty, empty); -+ call_execve(FILENAME, empty, empty); - printf("execve(\"%s\", []" - #if VERBOSE - ", []" - #else - ", %p /* 0 vars */" - #endif -- ") = -1 ENOENT (%m)\n", Q_FILENAME -+ ") = %s\n", Q_FILENAME - #if !VERBOSE - , empty - #endif -- ); -+ , errstr); - - char *const str_a = tail_alloc(DEFAULT_STRLEN + 2); - fill_memory_ex(str_a, DEFAULT_STRLEN + 1, '0', 10); -@@ -132,7 +142,7 @@ main(void) - } - a[i] = b[i] = NULL; - -- execve(FILENAME, a, b); -+ call_execve(FILENAME, a, b); - printf("execve(\"%s\", [\"%.*s\"...", Q_FILENAME, DEFAULT_STRLEN, a[0]); - for (i = 1; i < DEFAULT_STRLEN; ++i) - printf(", \"%s\"", a[i]); -@@ -149,9 +159,9 @@ main(void) - #else - printf("], %p /* %u vars */", b, DEFAULT_STRLEN + 1); - #endif -- printf(") = -1 ENOENT (%m)\n"); -+ printf(") = %s\n", errstr); - -- execve(FILENAME, a + 1, b + 1); -+ call_execve(FILENAME, a + 1, b + 1); - printf("execve(\"%s\", [\"%s\"", Q_FILENAME, a[1]); - for (i = 2; i <= DEFAULT_STRLEN; ++i) - printf(", \"%s\"", a[i]); -@@ -163,15 +173,15 @@ main(void) - #else - printf("], %p /* %d vars */", b + 1, DEFAULT_STRLEN); - #endif -- printf(") = -1 ENOENT (%m)\n"); -+ printf(") = %s\n", errstr); - -- execve(FILENAME, (char **) tail_argv[ARRAY_SIZE(q_argv)], efault); -- printf("execve(\"%s\", NULL, %p) = -1 ENOENT (%m)\n", -- Q_FILENAME, efault); -+ call_execve(FILENAME, (char **) tail_argv[ARRAY_SIZE(q_argv)], efault); -+ printf("execve(\"%s\", NULL, %p) = %s\n", -+ Q_FILENAME, efault, errstr); - -- execve(FILENAME, efault, NULL); -- printf("execve(\"%s\", %p, NULL) = -1 ENOENT (%m)\n", -- Q_FILENAME, efault); -+ call_execve(FILENAME, efault, NULL); -+ printf("execve(\"%s\", %p, NULL) = %s\n", -+ Q_FILENAME, efault, errstr); - - leave_and_remove_subdir(); - -diff --git a/tests-mx32/execve.c b/tests-mx32/execve.c -index 2f6ae52..961d284 100644 ---- a/tests-mx32/execve.c -+++ b/tests-mx32/execve.c -@@ -12,6 +12,16 @@ - #include - #include - -+static const char *errstr; -+ -+static int -+call_execve(const char *pathname, char *const *argv, char *const *envp) -+{ -+ int rc = execve(pathname, argv, envp); -+ errstr = sprintrc(rc); -+ return rc; -+} -+ - #define FILENAME "test.execve\nfilename" - #define Q_FILENAME "test.execve\\nfilename" - -@@ -43,7 +53,7 @@ main(void) - char ** const tail_argv = tail_memdup(argv, sizeof(argv)); - char ** const tail_envp = tail_memdup(envp, sizeof(envp)); - -- execve(FILENAME, tail_argv, tail_envp); -+ call_execve(FILENAME, tail_argv, tail_envp); - printf("execve(\"%s\"" - ", [\"%s\", \"%s\", \"%s\", %p, %p, %p, ... /* %p */]" - #if VERBOSE -@@ -51,7 +61,7 @@ main(void) - #else - ", %p /* 5 vars, unterminated */" - #endif -- ") = -1 ENOENT (%m)\n", -+ ") = %s\n", - Q_FILENAME, q_argv[0], q_argv[1], q_argv[2], - argv[3], argv[4], argv[5], (char *) tail_argv + sizeof(argv) - #if VERBOSE -@@ -60,60 +70,60 @@ main(void) - #else - , tail_envp - #endif -- ); -+ , errstr); - - tail_argv[ARRAY_SIZE(q_argv)] = NULL; - tail_envp[ARRAY_SIZE(q_envp)] = NULL; - (void) q_envp; /* workaround for clang bug #33068 */ - -- execve(FILENAME, tail_argv, tail_envp); -+ call_execve(FILENAME, tail_argv, tail_envp); - printf("execve(\"%s\", [\"%s\", \"%s\", \"%s\"]" - #if VERBOSE - ", [\"%s\", \"%s\"]" - #else - ", %p /* 2 vars */" - #endif -- ") = -1 ENOENT (%m)\n", -+ ") = %s\n", - Q_FILENAME, q_argv[0], q_argv[1], q_argv[2] - #if VERBOSE - , q_envp[0], q_envp[1] - #else - , tail_envp - #endif -- ); -+ , errstr); - -- execve(FILENAME, tail_argv + 2, tail_envp + 1); -+ call_execve(FILENAME, tail_argv + 2, tail_envp + 1); - printf("execve(\"%s\", [\"%s\"]" - #if VERBOSE - ", [\"%s\"]" - #else - ", %p /* 1 var */" - #endif -- ") = -1 ENOENT (%m)\n", -+ ") = %s\n", - Q_FILENAME, q_argv[2] - #if VERBOSE - , q_envp[1] - #else - , tail_envp + 1 - #endif -- ); -+ , errstr); - - TAIL_ALLOC_OBJECT_CONST_PTR(char *, empty); - char **const efault = empty + 1; - *empty = NULL; - -- execve(FILENAME, empty, empty); -+ call_execve(FILENAME, empty, empty); - printf("execve(\"%s\", []" - #if VERBOSE - ", []" - #else - ", %p /* 0 vars */" - #endif -- ") = -1 ENOENT (%m)\n", Q_FILENAME -+ ") = %s\n", Q_FILENAME - #if !VERBOSE - , empty - #endif -- ); -+ , errstr); - - char *const str_a = tail_alloc(DEFAULT_STRLEN + 2); - fill_memory_ex(str_a, DEFAULT_STRLEN + 1, '0', 10); -@@ -132,7 +142,7 @@ main(void) - } - a[i] = b[i] = NULL; - -- execve(FILENAME, a, b); -+ call_execve(FILENAME, a, b); - printf("execve(\"%s\", [\"%.*s\"...", Q_FILENAME, DEFAULT_STRLEN, a[0]); - for (i = 1; i < DEFAULT_STRLEN; ++i) - printf(", \"%s\"", a[i]); -@@ -149,9 +159,9 @@ main(void) - #else - printf("], %p /* %u vars */", b, DEFAULT_STRLEN + 1); - #endif -- printf(") = -1 ENOENT (%m)\n"); -+ printf(") = %s\n", errstr); - -- execve(FILENAME, a + 1, b + 1); -+ call_execve(FILENAME, a + 1, b + 1); - printf("execve(\"%s\", [\"%s\"", Q_FILENAME, a[1]); - for (i = 2; i <= DEFAULT_STRLEN; ++i) - printf(", \"%s\"", a[i]); -@@ -163,15 +173,15 @@ main(void) - #else - printf("], %p /* %d vars */", b + 1, DEFAULT_STRLEN); - #endif -- printf(") = -1 ENOENT (%m)\n"); -+ printf(") = %s\n", errstr); - -- execve(FILENAME, (char **) tail_argv[ARRAY_SIZE(q_argv)], efault); -- printf("execve(\"%s\", NULL, %p) = -1 ENOENT (%m)\n", -- Q_FILENAME, efault); -+ call_execve(FILENAME, (char **) tail_argv[ARRAY_SIZE(q_argv)], efault); -+ printf("execve(\"%s\", NULL, %p) = %s\n", -+ Q_FILENAME, efault, errstr); - -- execve(FILENAME, efault, NULL); -- printf("execve(\"%s\", %p, NULL) = -1 ENOENT (%m)\n", -- Q_FILENAME, efault); -+ call_execve(FILENAME, efault, NULL); -+ printf("execve(\"%s\", %p, NULL) = %s\n", -+ Q_FILENAME, efault, errstr); - - leave_and_remove_subdir(); - --- -2.1.4 - diff --git a/0149-Implement-secontext-full-option-to-display-SELinux-c.patch b/0149-Implement-secontext-full-option-to-display-SELinux-c.patch deleted file mode 100755 index c09d112..0000000 --- a/0149-Implement-secontext-full-option-to-display-SELinux-c.patch +++ /dev/null @@ -1,13901 +0,0 @@ -From 45d71f938a2e92662a14097b7e1c27c13137c5f6 Mon Sep 17 00:00:00 2001 -From: =?UTF-8?q?Renaud=20M=C3=A9trich?= -Date: Wed, 29 Jan 2020 15:22:47 +0100 -Subject: [PATCH 149/149] Implement --secontext[=full] option to display - SELinux contexts - -This is very useful when debugging SELinux issues, in particular, when -a process runs in an unexpected context or didn't transition properly, -or typically when a file being opened does not have the proper context. - -When --secontext=full is specified, strace will print the complete -context (user, role, type and category) instead of just the type which -is printed for --secontext option, as shown in the examples below: - -Without any "--secontext" options: ------------------------------------------------------------------------ -118104 16:52:11.141122 select(9, [4 6], NULL, NULL, NULL) = 1 (in [4]) <1.845416> -119820 16:52:13.133319 openat(AT_FDCWD, "/home/rmetrich/.ssh/authorized_keys", O_RDONLY|O_NONBLOCK) = 11 <0.000399> ------------------------------------------------------------------------ - -With "--secontext=full" option: ------------------------------------------------------------------------ -118104 [system_u:system_r:sshd_t:s0-s0:c0.c1023] 16:52:11.141122 select(9, [4 6], NULL, NULL, NULL) = 1 (in [4]) <1.845416> -119820 [system_u:system_r:sshd_t:s0-s0:c0.c1023] 16:52:13.133319 openat(AT_FDCWD, "/home/rmetrich/.ssh/authorized_keys" [system_u:object_r:nfs_t:s0], O_RDONLY|O_NONBLOCK) = 11 [system_u:object_r:nfs_t:s0] <0.000399> ------------------------------------------------------------------------ - -With "--secontext" option: ------------------------------------------------------------------------ -118104 [sshd_t] 16:52:11.141122 select(9, [4 6], NULL, NULL, NULL) = 1 (in [4]) <1.845416> -119820 [sshd_t] 16:52:13.133319 openat(AT_FDCWD, "/home/rmetrich/.ssh/authorized_keys" [nfs_t], O_RDONLY|O_NONBLOCK) = 11 [nfs_t] <0.000399> ------------------------------------------------------------------------ - -To implement this, a new "--with-libselinux" configure option has been -introduced. It defaults to "check", which means automatic support on -SELinux aware systems. - -Co-authored-by: Dmitry V. Levin ---- - Makefile.am | 10 +++ - NEWS | 3 + - bootstrap | 11 ++- - configure.ac | 2 + - defs.h | 9 ++ - dirent.c | 3 + - m4/mpers.m4 | 26 ++++++ - m4/st_selinux.m4 | 80 ++++++++++++++++++ - open.c | 3 + - secontext.c | 139 +++++++++++++++++++++++++++++++ - secontext.h | 21 +++++ - strace.1.in | 9 ++ - strace.c | 53 +++++++++++- - strace.spec.in | 3 + - syscall.c | 5 ++ - tests/.gitignore | 5 ++ - tests/Makefile.am | 11 +++ - tests/access.c | 23 +++++- - tests/chmod.c | 35 +++++--- - tests/execve.c | 53 +++++++++--- - tests/execve.test | 2 +- - tests/execveat.c | 122 +++++++++++++++++++++++++-- - tests/faccessat.c | 137 ++++++++++++++++++++++++++++++- - tests/faccessat.test | 2 +- - tests/fanotify_mark.c | 121 +++++++++++++++++---------- - tests/fchmod.c | 23 ++++-- - tests/fchmodat.c | 67 +++++++++++++-- - tests/fchownat.c | 73 +++++++++++++++-- - tests/file_handle.c | 204 +++++++++++++++++++++++++++++++--------------- - tests/gen_secontext.sh | 72 ++++++++++++++++ - tests/gen_tests.in | 30 +++++++ - tests/linkat.c | 150 +++++++++++++++++++++++++++++++++- - tests/open.c | 18 ++-- - tests/openat.c | 91 +++++++++++++++++---- - tests/options-syntax.test | 13 ++- - tests/secontext.c | 201 +++++++++++++++++++++++++++++++++++++++++++++ - tests/secontext.h | 46 +++++++++++ - tests/strace-V.test | 4 +- - util.c | 16 ++++ - xgetdents.c | 3 + - 40 files changed, 1703 insertions(+), 196 deletions(-) - create mode 100644 m4/st_selinux.m4 - create mode 100644 secontext.c - create mode 100644 secontext.h - create mode 100755 tests/gen_secontext.sh - create mode 100644 tests/secontext.c - create mode 100644 tests/secontext.h - -Index: strace-5.7/Makefile.am -=================================================================== ---- strace-5.7.orig/Makefile.am 2021-08-24 21:08:35.376312714 +0200 -+++ strace-5.7/Makefile.am 2021-08-24 21:08:43.248246086 +0200 -@@ -404,11 +404,21 @@ - endif - endif - -+if ENABLE_SECONTEXT -+libstrace_a_SOURCES += \ -+ secontext.c \ -+ secontext.h -+strace_CPPFLAGS += $(libselinux_CPPFLAGS) -+strace_LDFLAGS += $(libselinux_LDFLAGS) -+strace_LDADD += $(libselinux_LIBS) -+endif -+ - @CODE_COVERAGE_RULES@ - CODE_COVERAGE_BRANCH_COVERAGE = 1 - CODE_COVERAGE_GENHTML_OPTIONS = $(CODE_COVERAGE_GENHTML_OPTIONS_DEFAULT) \ - --prefix $(shell cd $(abs_top_srcdir)/.. && pwd || echo .) - CODE_COVERAGE_IGNORE_PATTERN = '/usr/include/*' '*/tests/*' '*/tests-m32/*' '*/tests-mx32/*' -+ - strace_CPPFLAGS += $(CODE_COVERAGE_CPPFLAGS) - strace_CFLAGS += $(CODE_COVERAGE_CFLAGS) - strace_LDADD += $(CODE_COVERAGE_LIBS) -Index: strace-5.7/NEWS -=================================================================== ---- strace-5.7.orig/NEWS 2021-08-24 21:08:35.376312714 +0200 -+++ strace-5.7/NEWS 2021-08-24 21:08:43.249246078 +0200 -@@ -2,6 +2,9 @@ - ============================================== - - * Improvements -+ * Implemented --secontext[=full] option to display SELinux contexts. -+ * Added --pidns-translation option for PID namespace translation (addresses -+ Fedora bug #1035433). - * Implemented interval specification in "when=" subexpression of syscall - tampering expressions. - * Added -e trace=%clock option for tracing syscalls reading of modifying -Index: strace-5.7/configure.ac -=================================================================== ---- strace-5.7.orig/configure.ac 2021-08-24 21:08:35.376312714 +0200 -+++ strace-5.7/configure.ac 2021-08-24 21:08:43.250246069 +0200 -@@ -764,6 +764,8 @@ - - st_STACKTRACE - -+st_SELINUX -+ - if test "$arch" = mips && test "$no_create" != yes; then - mkdir -p linux/mips - if $srcdir/linux/mips/genstub.sh \ -Index: strace-5.7/defs.h -=================================================================== ---- strace-5.7.orig/defs.h 2021-08-24 21:08:35.377312705 +0200 -+++ strace-5.7/defs.h 2021-08-24 21:08:43.251246061 +0200 -@@ -287,6 +287,10 @@ - */ - unsigned int pid_ns; - -+#ifdef ENABLE_SECONTEXT -+ int last_dirfd; /* Use AT_FDCWD for 'not set' */ -+#endif -+ - struct mmap_cache_t *mmap_cache; - - /* -@@ -1123,6 +1127,11 @@ - extern void print_x25_addr(const void /* struct x25_address */ *addr); - extern const char *get_sockaddr_by_inode(struct tcb *, int fd, unsigned long inode); - extern bool print_sockaddr_by_inode(struct tcb *, int fd, unsigned long inode); -+ -+/** -+ * Prints dirfd file descriptor and saves it in tcp->last_dirfd, -+ * the latter is used when printing SELinux contexts. -+ */ - extern void print_dirfd(struct tcb *, int); - - extern int -Index: strace-5.7/dirent.c -=================================================================== ---- strace-5.7.orig/dirent.c 2021-08-24 21:08:35.377312705 +0200 -+++ strace-5.7/dirent.c 2021-08-24 21:08:43.251246061 +0200 -@@ -100,6 +100,9 @@ - { - if (entering(tcp)) { - printfd(tcp, tcp->u_arg[0]); -+#ifdef ENABLE_SECONTEXT -+ tcp->last_dirfd = (int) tcp->u_arg[0]; -+#endif - tprints(", "); - } else { - if (tcp->u_rval == 0) -Index: strace-5.7/m4/mpers.m4 -=================================================================== ---- strace-5.7.orig/m4/mpers.m4 2021-08-24 21:08:35.377312705 +0200 -+++ strace-5.7/m4/mpers.m4 2021-08-24 21:08:43.252246052 +0200 -@@ -63,9 +63,11 @@ - pushdef([MPERS_NAME], translit([$1], [a-z], [A-Z])) - pushdef([HAVE_MPERS], [HAVE_]MPERS_NAME[_MPERS]) - pushdef([HAVE_RUNTIME], [HAVE_]MPERS_NAME[_RUNTIME]) -+pushdef([HAVE_SELINUX_RUNTIME], [HAVE_]MPERS_NAME[_SELINUX_RUNTIME]) - pushdef([MPERS_CFLAGS], [$cc_flags_$1]) - pushdef([st_cv_cc], [st_cv_$1_cc]) - pushdef([st_cv_runtime], [st_cv_$1_runtime]) -+pushdef([st_cv_selinux_runtime], [st_cv_$1_selinux_runtime]) - pushdef([st_cv_mpers], [st_cv_$1_mpers]) - - pushdef([EXEEXT], MPERS_NAME[_EXEEXT])dnl -@@ -126,6 +128,26 @@ - else - st_cv_mpers=no - fi]) -+ AS_IF([test "x$enable_secontext$st_cv_mpers$st_cv_runtime" = xyesyesyes], -+ [AC_CACHE_CHECK([whether selinux runtime works with mpers_name personality], -+ [st_cv_selinux_runtime], -+ [saved_CPPFLAGS="$CPPFLAGS" -+ saved_LDFLAGS="$LDFLAGS" -+ saved_LIBS="$LIBS" -+ CPPFLAGS="$CPPFLAGS $libselinux_CPPFLAGS" -+ LDFLAGS="$LDFLAGS $libselinux_LDFLAGS" -+ LIBS="$LIBS $libselinux_LIBS" -+ AC_LINK_IFELSE([AC_LANG_PROGRAM([[#include ]], -+ [[return 0]])], -+ [st_cv_selinux_runtime=yes], -+ [st_cv_selinux_runtime=no], -+ [st_cv_selinux_runtime=no]) -+ LIBS="$saved_LIBS" -+ LDFLAGS="$saved_LDFLAGS" -+ CPPFLAGS="$saved_CPPFLAGS" -+ ]) -+ ], -+ [st_cv_selinux_runtime=no]) - if test $st_cv_mpers = yes; then - AC_DEFINE(HAVE_MPERS, [1], - [Define to 1 if you have mpers_name mpers support]) -@@ -165,6 +187,7 @@ - *) # case "$enable_mpers" - st_cv_runtime=no - st_cv_mpers=no -+ st_cv_selinux_runtime=no - ;; - esac - -@@ -187,6 +210,7 @@ - esac - - AM_CONDITIONAL(HAVE_RUNTIME, [test "$st_cv_mpers$st_cv_runtime" = yesyes]) -+AM_CONDITIONAL(HAVE_SELINUX_RUNTIME, [test "$st_cv_mpers$st_cv_selinux_runtime" = yesyes]) - AM_CONDITIONAL(HAVE_MPERS, [test "$st_cv_mpers" = yes]) - - st_RESTORE_VAR([CC]) -@@ -201,9 +225,11 @@ - - popdef([st_cv_mpers]) - popdef([st_cv_runtime]) -+popdef([st_cv_selinux_runtime]) - popdef([st_cv_cc]) - popdef([MPERS_CFLAGS]) - popdef([HAVE_RUNTIME]) -+popdef([HAVE_SELINUX_RUNTIME]) - popdef([HAVE_MPERS]) - popdef([MPERS_NAME]) - popdef([mpers_name]) -Index: strace-5.7/m4/st_selinux.m4 -=================================================================== ---- /dev/null 1970-01-01 00:00:00.000000000 +0000 -+++ strace-5.7/m4/st_selinux.m4 2021-08-24 21:08:43.252246052 +0200 -@@ -0,0 +1,80 @@ -+#!/usr/bin/m4 -+# -+# Copyright (c) 2020 The strace developers. -+# All rights reserved. -+# -+# SPDX-License-Identifier: LGPL-2.1-or-later -+ -+AC_DEFUN([st_SELINUX], [dnl -+ -+libselinux_CPPFLAGS= -+libselinux_LDFLAGS= -+libselinux_LIBS= -+enable_secontext=no -+ -+AC_ARG_WITH([libselinux], -+ [AS_HELP_STRING([--with-libselinux], -+ [use libselinux to collect security contexts])], -+ [case "${withval}" in -+ yes|no|check) ;; -+ *) with_libselinux=yes -+ libselinux_CPPFLAGS="-I${withval}/include" -+ libselinux_LDFLAGS="-L${withval}/lib" ;; -+ esac], -+ [with_libselinux=check] -+) -+ -+AS_IF([test "x$with_libselinux" != xno], -+ [saved_CPPFLAGS="$CPPFLAGS" -+ CPPFLAGS="$CPPFLAGS $libselinux_CPPFLAGS" -+ found_selinux_h=no -+ AC_CHECK_HEADERS([selinux/selinux.h], -+ [found_selinux_h=yes]) -+ CPPFLAGS="$saved_CPPFLAGS" -+ AS_IF([test "x$found_selinux_h" = xyes], -+ [saved_LDFLAGS="$LDFLAGS" -+ LDFLAGS="$LDFLAGS $libselinux_LDFLAGS" -+ AC_CHECK_LIB([selinux],[getpidcon], -+ [libselinux_LIBS="-lselinux" -+ enable_secontext=yes -+ ], -+ [if test "x$with_libselinux" != xcheck; then -+ AC_MSG_FAILURE([failed to find getpidcon in libselinux]) -+ fi -+ ] -+ ) -+ AC_CHECK_LIB([selinux],[getfilecon], -+ [libselinux_LIBS="-lselinux" -+ enable_secontext=yes -+ ], -+ [if test "x$with_libselinux" != xcheck; then -+ AC_MSG_FAILURE([failed to find getfilecon in libselinux]) -+ fi -+ ] -+ ) -+ LDFLAGS="$saved_LDFLAGS" -+ ], -+ [if test "x$with_libselinux" != xcheck; then -+ AC_MSG_FAILURE([failed to find selinux.h]) -+ fi -+ ] -+ ) -+ ] -+) -+ -+AC_MSG_CHECKING([whether to enable security contexts support]) -+AS_IF([test "x$enable_secontext" = xyes], -+ [AC_DEFINE([ENABLE_SECONTEXT], [1], -+ [Define to enable SELinux security contexts support]) -+ AC_DEFINE([HAVE_SELINUX_RUNTIME], [1], -+ [Define to enable SELinux security contexts testing]) -+ AC_SUBST(libselinux_LIBS) -+ AC_SUBST(libselinux_LDFLAGS) -+ AC_SUBST(libselinux_CPPFLAGS) -+ AC_MSG_RESULT([yes])], -+ [AC_MSG_RESULT([no])]) -+ -+AM_CONDITIONAL([ENABLE_SECONTEXT], [test "x$enable_secontext" = xyes]) -+AM_CONDITIONAL([HAVE_SELINUX_RUNTIME], [test "x$enable_secontext" = xyes]) -+ -+]) -Index: strace-5.7/open.c -=================================================================== ---- strace-5.7.orig/open.c 2021-08-24 21:08:35.378312697 +0200 -+++ strace-5.7/open.c 2021-08-24 21:08:43.253246044 +0200 -@@ -50,6 +50,9 @@ - print_xlat_d(AT_FDCWD); - else - printfd(tcp, fd); -+#ifdef ENABLE_SECONTEXT -+ tcp->last_dirfd = fd; -+#endif - } - - /* -Index: strace-5.7/secontext.c -=================================================================== ---- /dev/null 1970-01-01 00:00:00.000000000 +0000 -+++ strace-5.7/secontext.c 2021-08-24 21:08:43.253246044 +0200 -@@ -0,0 +1,139 @@ -+/* -+ * Copyright (c) 2020-2021 The strace developers. -+ * All rights reserved. -+ * -+ * SPDX-License-Identifier: LGPL-2.1-or-later -+ */ -+ -+#include "defs.h" -+ -+#include -+#include -+#include -+#include -+ -+#include "secontext.h" -+#include "xstring.h" -+ -+bool selinux_context = false; -+bool selinux_context_full = false; -+ -+static int -+getcontext(int rc, char **secontext, char **result) -+{ -+ if (rc < 0) -+ return rc; -+ -+ *result = NULL; -+ if (!selinux_context_full) { -+ char *saveptr = NULL; -+ char *secontext_copy = xstrdup(*secontext); -+ const char *token; -+ unsigned int i; -+ -+ /* -+ * We only want to keep the type (3rd field, ':' separator). -+ */ -+ for (token = strtok_r(secontext_copy, ":", &saveptr), i = 0; -+ token; token = strtok_r(NULL, ":", &saveptr), i++) { -+ if (i == 2) { -+ *result = xstrdup(token); -+ break; -+ } -+ } -+ free(secontext_copy); -+ } -+ -+ if (*result == NULL) { -+ /* -+ * On the CI at least, the context may have a trailing \n, -+ * let's remove it just in case. -+ */ -+ size_t len = strlen(*secontext); -+ for (; len > 0; --len) { -+ if ((*secontext)[len - 1] != '\n') -+ break; -+ } -+ *result = xstrndup(*secontext, len); -+ } -+ freecon(*secontext); -+ return 0; -+} -+/* -+ * Retrieves the SELinux context of the given PID (extracted from the tcb). -+ * Memory must be freed. -+ * Returns 0 on success, -1 on failure. -+ */ -+int -+selinux_getpidcon(struct tcb *tcp, char **result) -+{ -+ if (!selinux_context) -+ return -1; -+ -+ int proc_pid = 0; -+ translate_pid(NULL, tcp->pid, PT_TID, &proc_pid); -+ if (!proc_pid) -+ return -1; -+ -+ char *secontext; -+ return getcontext(getpidcon(proc_pid, &secontext), &secontext, result); -+} -+ -+/* -+ * Retrieves the SELinux context of the given pid and descriptor. -+ * Memory must be freed. -+ * Returns 0 on success, -1 on failure. -+ */ -+int -+selinux_getfdcon(pid_t pid, int fd, char **result) -+{ -+ if (!selinux_context || pid <= 0 || fd < 0) -+ return -1; -+ -+ int proc_pid = 0; -+ translate_pid(NULL, pid, PT_TID, &proc_pid); -+ if (!proc_pid) -+ return -1; -+ -+ char linkpath[sizeof("/proc/%u/fd/%u") + 2 * sizeof(int)*3]; -+ xsprintf(linkpath, "/proc/%u/fd/%u", proc_pid, fd); -+ -+ char *secontext; -+ return getcontext(getfilecon(linkpath, &secontext), &secontext, result); -+} -+ -+/* -+ * Retrieves the SELinux context of the given path. -+ * Memory must be freed. -+ * Returns 0 on success, -1 on failure. -+ */ -+int -+selinux_getfilecon(struct tcb *tcp, const char *path, char **result) -+{ -+ if (!selinux_context) -+ return -1; -+ -+ int proc_pid = 0; -+ translate_pid(NULL, tcp->pid, PT_TID, &proc_pid); -+ if (!proc_pid) -+ return -1; -+ -+ int ret = -1; -+ char fname[PATH_MAX]; -+ -+ if (path[0] == '/') -+ ret = snprintf(fname, sizeof(fname), "/proc/%u/root%s", -+ proc_pid, path); -+ else if (tcp->last_dirfd == AT_FDCWD) -+ ret = snprintf(fname, sizeof(fname), "/proc/%u/cwd/%s", -+ proc_pid, path); -+ else if (tcp->last_dirfd >= 0 ) -+ ret = snprintf(fname, sizeof(fname), "/proc/%u/fd/%u/%s", -+ proc_pid, tcp->last_dirfd, path); -+ -+ if ((unsigned int) ret >= sizeof(fname)) -+ return -1; -+ -+ char *secontext; -+ return getcontext(getfilecon(fname, &secontext), &secontext, result); -+} -Index: strace-5.7/secontext.h -=================================================================== ---- /dev/null 1970-01-01 00:00:00.000000000 +0000 -+++ strace-5.7/secontext.h 2021-08-24 21:08:43.253246044 +0200 -@@ -0,0 +1,21 @@ -+/* -+ * SELinux interface. -+ * -+ * Copyright (c) 2020-2021 The strace developers. -+ * -+ * SPDX-License-Identifier: LGPL-2.1-or-later -+ */ -+ -+#ifndef STRACE_SECONTEXT_H -+#define STRACE_SECONTEXT_H -+ -+#include "defs.h" -+ -+extern bool selinux_context; -+extern bool selinux_context_full; -+ -+int selinux_getfdcon(pid_t pid, int fd, char **context); -+int selinux_getfilecon(struct tcb *tcp, const char *path, char **context); -+int selinux_getpidcon(struct tcb *tcp, char **context); -+ -+#endif /* !STRACE_SECONTEXT_H */ -Index: strace-5.7/strace.1.in -=================================================================== ---- strace-5.7.orig/strace.1.in 2021-08-24 21:08:35.379312688 +0200 -+++ strace-5.7/strace.1.in 2021-08-24 21:08:43.254246035 +0200 -@@ -53,6 +53,7 @@ - .OM \-P path - .OM \-p pid - .OP \-\-seccomp\-bpf -+.if '@ENABLE_SECONTEXT_FALSE@'#' .OP \-\-secontext\fR[=full] - .BR "" { - .OR \-p pid - .BR "" | -@@ -1079,6 +1080,14 @@ - .B \-\-pidns\-translation - If strace and tracee are in different PID namespaces, print PIDs in - strace's namespace, too. -+.if '@ENABLE_SECONTEXT_FALSE@'#' .TP -+.if '@ENABLE_SECONTEXT_FALSE@'#' .BR \-\-secontext "[=full]" -+.if '@ENABLE_SECONTEXT_FALSE@'#' When SELinux is available and is not disabled, -+.if '@ENABLE_SECONTEXT_FALSE@'#' print in square brackets SELinux contexts of -+.if '@ENABLE_SECONTEXT_FALSE@'#' processes, files, and descriptors. When -+.if '@ENABLE_SECONTEXT_FALSE@'#' .B full -+.if '@ENABLE_SECONTEXT_FALSE@'#' is specified, print the complete context (user, -+.if '@ENABLE_SECONTEXT_FALSE@'#' role, type and category) instead of just the type. - .SS Statistics - .TP 12 - .B \-c -Index: strace-5.7/strace.c -=================================================================== ---- strace-5.7.orig/strace.c 2021-08-24 21:08:35.380312680 +0200 -+++ strace-5.7/strace.c 2021-08-24 21:08:43.255246027 +0200 -@@ -40,6 +40,7 @@ - #include "xstring.h" - #include "delay.h" - #include "wait.h" -+#include "secontext.h" - - /* In some libc, these aren't declared. Do it ourself: */ - extern char **environ; -@@ -239,6 +240,9 @@ - " no-mx32-mpers" - # endif - #endif /* SUPPORTED_PERSONALITIES > 2 */ -+#ifdef ENABLE_SECONTEXT -+ " secontext" -+#endif - ""; - - printf("%s -- version %s\n" -@@ -258,11 +262,17 @@ - #else - # define K_OPT "" - #endif -+#ifdef ENABLE_SECONTEXT -+# define SECONTEXT_OPT "[--secontext[=full]]\n" -+#else -+# define SECONTEXT_OPT "" -+#endif - - printf("\ - Usage: strace [-ACdffhi" K_OPT "qqrtttTvVwxxyyzZ] [-I N] [-b execve] [-e EXPR]...\n\ - [-a COLUMN] [-o FILE] [-s STRSIZE] [-X FORMAT] [-O OVERHEAD]\n\ -- [-S SORTBY] [-P PATH]... [-p PID]... [-U COLUMNS] [--seccomp-bpf]\n\ -+ [-S SORTBY] [-P PATH]... [-p PID]... [-U COLUMNS] [--seccomp-bpf]\n"\ -+ SECONTEXT_OPT "\ - { -p PID | [-DDD] [-E VAR=VAL]... [-u USERNAME] PROG [ARGS] }\n\ - or: strace -c[dfwzZ] [-I N] [-b execve] [-e EXPR]... [-O OVERHEAD]\n\ - [-S SORTBY] [-P PATH]... [-p PID]... [-U COLUMNS] [--seccomp-bpf]\n\ -@@ -401,6 +411,14 @@ - -yy, --decode-fds=all\n\ - print all available information associated with file\n\ - descriptors in addition to paths\n\ -+" -+#ifdef ENABLE_SECONTEXT -+"\ -+ --secontext[=full]\n\ -+ print SELinux contexts (type only unless 'full' is specified)\n\ -+" -+#endif -+"\ - \n\ - Statistics:\n\ - -c, --summary-only\n\ -@@ -774,6 +792,14 @@ - else if (nprocs > 1 && !outfname) - tprintf("[pid %5u] ", tcp->pid); - -+#ifdef ENABLE_SECONTEXT -+ char *context; -+ if (!selinux_getpidcon(tcp, &context)) { -+ tprintf("[%s] ", context); -+ free(context); -+ } -+#endif -+ - if (tflag_format) { - struct timespec ts; - clock_gettime(CLOCK_REALTIME, &ts); -@@ -885,6 +911,9 @@ - #if SUPPORTED_PERSONALITIES > 1 - tcp->currpers = current_personality; - #endif -+#ifdef ENABLE_SECONTEXT -+ tcp->last_dirfd = AT_FDCWD; -+#endif - nprocs++; - debug_msg("new tcb for pid %d, active tcbs:%d", - tcp->pid, nprocs); -@@ -2027,6 +2056,9 @@ - GETOPT_OUTPUT_SEPARATELY, - GETOPT_TS, - GETOPT_PIDNS_TRANSLATION, -+#ifdef ENABLE_SECONTEXT -+ GETOPT_SECONTEXT, -+#endif - - GETOPT_QUAL_TRACE, - GETOPT_QUAL_ABBREV, -@@ -2082,6 +2114,9 @@ - { "failed-only", no_argument, 0, 'Z' }, - { "failing-only", no_argument, 0, 'Z' }, - { "seccomp-bpf", no_argument, 0, GETOPT_SECCOMP }, -+#ifdef ENABLE_SECONTEXT -+ { "secontext", optional_argument, 0, GETOPT_SECONTEXT }, -+#endif - - { "trace", required_argument, 0, GETOPT_QUAL_TRACE }, - { "abbrev", required_argument, 0, GETOPT_QUAL_ABBREV }, -@@ -2307,6 +2342,17 @@ - case GETOPT_SECCOMP: - seccomp_filtering = true; - break; -+#ifdef ENABLE_SECONTEXT -+ case GETOPT_SECONTEXT: -+ selinux_context = true; -+ if (optarg) { -+ if (!strcmp(optarg, "full")) -+ selinux_context_full = true; -+ else -+ error_opt_arg(c, lopt, optarg); -+ } -+ break; -+#endif - case GETOPT_QUAL_TRACE: - qualify_trace(optarg); - break; -@@ -2486,6 +2532,11 @@ - if (!number_set_array_is_empty(decode_fd_set, 0)) - error_msg("-y/--decode-fds has no effect " - "with -c/--summary-only"); -+#ifdef ENABLE_SECONTEXT -+ if (selinux_context) -+ error_msg("--secontext has no effect with " -+ "-c/--summary-only"); -+#endif - } - - if (!outfname) { -Index: strace-5.7/strace.spec.in -=================================================================== ---- strace-5.7.orig/strace.spec.in 2021-08-24 21:08:35.380312680 +0200 -+++ strace-5.7/strace.spec.in 2021-08-24 21:08:43.255246027 +0200 -@@ -29,11 +29,14 @@ - # Install binutils-devel to enable symbol demangling. - %if 0%{?fedora} >= 20 || 0%{?centos} >= 6 || 0%{?rhel} >= 6 - %define buildrequires_stacktrace BuildRequires: elfutils-devel binutils-devel -+%define buildrequires_selinux BuildRequires: libselinux-devel - %endif - %if 0%{?suse_version} >= 1100 - %define buildrequires_stacktrace BuildRequires: libdw-devel binutils-devel -+%define buildrequires_selinux BuildRequires: libselinux-devel - %endif - %{?buildrequires_stacktrace} -+%{?buildrequires_selinux} - - # OBS compatibility - %{?!buildroot:BuildRoot: %_tmppath/buildroot-%name-%version-%release} -Index: strace-5.7/syscall.c -=================================================================== ---- strace-5.7.orig/syscall.c 2021-08-24 21:08:35.381312671 +0200 -+++ strace-5.7/syscall.c 2021-08-24 21:08:43.256246018 +0200 -@@ -23,6 +23,7 @@ - #include "delay.h" - #include "retval.h" - #include -+#include - - /* for struct iovec */ - #include -@@ -982,6 +983,10 @@ - tcp->sys_func_rval = 0; - free_tcb_priv_data(tcp); - -+#ifdef ENABLE_SECONTEXT -+ tcp->last_dirfd = AT_FDCWD; -+#endif -+ - if (cflag) - tcp->ltime = tcp->stime; - } -Index: strace-5.7/tests/Makefile.am -=================================================================== ---- strace-5.7.orig/tests/Makefile.am 2021-08-24 21:08:35.381312671 +0200 -+++ strace-5.7/tests/Makefile.am 2021-08-24 21:08:43.257246010 +0200 -@@ -28,6 +28,12 @@ - -DTESTS_SIZEOF_LONG=$(SIZEOF_LONG) - AM_LDFLAGS = $(ARCH_MFLAGS) - -+if HAVE_SELINUX_RUNTIME -+libselinux_LDADD = $(libselinux_LIBS) -+else -+libselinux_LDADD = -+endif -+ - libtests_a_SOURCES = \ - create_nl_socket.c \ - create_tmpfile.c \ -@@ -54,6 +60,8 @@ - printxval-Xabbrev.c \ - printxval-Xraw.c \ - printxval-Xverbose.c \ -+ secontext.c \ -+ secontext.h \ - signal2name.c \ - skip_unavailable.c \ - sprintrc.c \ -@@ -76,7 +84,10 @@ - - include pure_executables.am - -+include secontext.am -+ - check_PROGRAMS = $(PURE_EXECUTABLES) \ -+ $(secontext_EXECUTABLES) \ - _newselect-P \ - answer \ - attach-f-p \ -Index: strace-5.7/tests/access.c -=================================================================== ---- strace-5.7.orig/tests/access.c 2021-08-24 21:08:35.381312671 +0200 -+++ strace-5.7/tests/access.c 2021-08-24 21:08:43.257246010 +0200 -@@ -10,9 +10,12 @@ - - #ifdef __NR_access - -+# include - # include - # include - -+# include "secontext.h" -+ - int - main(void) - { -@@ -22,15 +25,27 @@ - */ - create_and_enter_subdir("access_subdir"); - -+ char *my_secontext = SECONTEXT_PID_MY(); -+ - static const char sample[] = "access_sample"; -+ (void) unlink(sample); -+ if (open(sample, O_CREAT|O_RDONLY, 0400) == -1) -+ perror_msg_and_fail("open: %s", sample); - - long rc = syscall(__NR_access, sample, F_OK); -- printf("access(\"%s\", F_OK) = %ld %s (%m)\n", -- sample, rc, errno2name()); -+ printf("%s%s(\"%s\"%s, F_OK) = %s\n", -+ my_secontext, "access", -+ sample, SECONTEXT_FILE(sample), -+ sprintrc(rc)); -+ -+ if (unlink(sample)) -+ perror_msg_and_fail("unlink: %s", sample); - - rc = syscall(__NR_access, sample, R_OK|W_OK|X_OK); -- printf("access(\"%s\", R_OK|W_OK|X_OK) = %ld %s (%m)\n", -- sample, rc, errno2name()); -+ printf("%s%s(\"%s\", R_OK|W_OK|X_OK) = %s\n", -+ my_secontext, "access", -+ sample, -+ sprintrc(rc)); - - leave_and_remove_subdir(); - -Index: strace-5.7/tests/chmod.c -=================================================================== ---- strace-5.7.orig/tests/chmod.c 2021-08-24 21:08:35.382312663 +0200 -+++ strace-5.7/tests/chmod.c 2021-08-24 21:08:43.257246010 +0200 -@@ -16,6 +16,8 @@ - # include - # include - -+# include "secontext.h" -+ - int - main(void) - { -@@ -25,22 +27,33 @@ - */ - create_and_enter_subdir("chmod_subdir"); - -- static const char fname[] = "chmod_test_file"; -- -- if (open(fname, O_CREAT|O_RDONLY, 0400) < 0) -- perror_msg_and_fail("open"); -- -- long rc = syscall(__NR_chmod, fname, 0600); -- printf("chmod(\"%s\", 0600) = %s\n", fname, sprintrc(rc)); -- -- if (unlink(fname)) -- perror_msg_and_fail("unlink"); -- -- rc = syscall(__NR_chmod, fname, 051); -- printf("chmod(\"%s\", 051) = %s\n", fname, sprintrc(rc)); -+ char *my_secontext = SECONTEXT_PID_MY(); - -- rc = syscall(__NR_chmod, fname, 004); -- printf("chmod(\"%s\", 004) = %s\n", fname, sprintrc(rc)); -+ static const char sample[] = "chmod_test_file"; -+ (void) unlink(sample); -+ if (open(sample, O_CREAT|O_RDONLY, 0400) < 0) -+ perror_msg_and_fail("open: %s", sample); -+ -+ long rc = syscall(__NR_chmod, sample, 0600); -+ printf("%s%s(\"%s\"%s, 0600) = %s\n", -+ my_secontext, "chmod", -+ sample, SECONTEXT_FILE(sample), -+ sprintrc(rc)); -+ -+ if (unlink(sample)) -+ perror_msg_and_fail("unlink: %s", sample); -+ -+ rc = syscall(__NR_chmod, sample, 051); -+ printf("%s%s(\"%s\", 051) = %s\n", -+ my_secontext, "chmod", -+ sample, -+ sprintrc(rc)); -+ -+ rc = syscall(__NR_chmod, sample, 004); -+ printf("%s%s(\"%s\", 004) = %s\n", -+ my_secontext, "chmod", -+ sample, -+ sprintrc(rc)); - - leave_and_remove_subdir(); - -Index: strace-5.7/tests/execve.c -=================================================================== ---- strace-5.7.orig/tests/execve.c 2021-08-24 21:08:35.382312663 +0200 -+++ strace-5.7/tests/execve.c 2021-08-24 21:08:43.258246001 +0200 -@@ -9,9 +9,12 @@ - */ - - #include "tests.h" -+#include - #include - #include - -+#include "secontext.h" -+ - static const char *errstr; - - static int -@@ -52,9 +55,16 @@ - - char ** const tail_argv = tail_memdup(argv, sizeof(argv)); - char ** const tail_envp = tail_memdup(envp, sizeof(envp)); -+ char *my_secontext = SECONTEXT_PID_MY(); -+ -+ (void) unlink(FILENAME); -+ if (open(FILENAME, O_RDONLY | O_CREAT, 0400) < 0) -+ perror_msg_and_fail("open"); -+ -+ char *FILENAME_secontext = SECONTEXT_FILE(FILENAME); - - call_execve(FILENAME, tail_argv, tail_envp); -- printf("execve(\"%s\"" -+ printf("%s%s(\"%s\"%s" - ", [\"%s\", \"%s\", \"%s\", %p, %p, %p, ... /* %p */]" - #if VERBOSE - ", [\"%s\", \"%s\", %p, %p, %p, ... /* %p */]" -@@ -62,7 +72,9 @@ - ", %p /* 5 vars, unterminated */" - #endif - ") = %s\n", -- Q_FILENAME, q_argv[0], q_argv[1], q_argv[2], -+ my_secontext, "execve", -+ Q_FILENAME, FILENAME_secontext, -+ q_argv[0], q_argv[1], q_argv[2], - argv[3], argv[4], argv[5], (char *) tail_argv + sizeof(argv) - #if VERBOSE - , q_envp[0], q_envp[1], envp[2], envp[3], envp[4], -@@ -77,14 +89,16 @@ - (void) q_envp; /* workaround for clang bug #33068 */ - - call_execve(FILENAME, tail_argv, tail_envp); -- printf("execve(\"%s\", [\"%s\", \"%s\", \"%s\"]" -+ printf("%s%s(\"%s\"%s, [\"%s\", \"%s\", \"%s\"]" - #if VERBOSE - ", [\"%s\", \"%s\"]" - #else - ", %p /* 2 vars */" - #endif - ") = %s\n", -- Q_FILENAME, q_argv[0], q_argv[1], q_argv[2] -+ my_secontext, "execve", -+ Q_FILENAME, FILENAME_secontext, -+ q_argv[0], q_argv[1], q_argv[2] - #if VERBOSE - , q_envp[0], q_envp[1] - #else -@@ -93,14 +107,16 @@ - , errstr); - - call_execve(FILENAME, tail_argv + 2, tail_envp + 1); -- printf("execve(\"%s\", [\"%s\"]" -+ printf("%s%s(\"%s\"%s, [\"%s\"]" - #if VERBOSE - ", [\"%s\"]" - #else - ", %p /* 1 var */" - #endif - ") = %s\n", -- Q_FILENAME, q_argv[2] -+ my_secontext, "execve", -+ Q_FILENAME, FILENAME_secontext, -+ q_argv[2] - #if VERBOSE - , q_envp[1] - #else -@@ -113,13 +129,15 @@ - *empty = NULL; - - call_execve(FILENAME, empty, empty); -- printf("execve(\"%s\", []" -+ printf("%s%s(\"%s\"%s, []" - #if VERBOSE - ", []" - #else - ", %p /* 0 vars */" - #endif -- ") = %s\n", Q_FILENAME -+ ") = %s\n", -+ my_secontext, "execve", -+ Q_FILENAME, FILENAME_secontext - #if !VERBOSE - , empty - #endif -@@ -143,7 +161,10 @@ - a[i] = b[i] = NULL; - - call_execve(FILENAME, a, b); -- printf("execve(\"%s\", [\"%.*s\"...", Q_FILENAME, DEFAULT_STRLEN, a[0]); -+ printf("%s%s(\"%s\"%s, [\"%.*s\"...", -+ my_secontext, "execve", -+ Q_FILENAME, FILENAME_secontext, -+ DEFAULT_STRLEN, a[0]); - for (i = 1; i < DEFAULT_STRLEN; ++i) - printf(", \"%s\"", a[i]); - #if VERBOSE -@@ -162,7 +183,10 @@ - printf(") = %s\n", errstr); - - call_execve(FILENAME, a + 1, b + 1); -- printf("execve(\"%s\", [\"%s\"", Q_FILENAME, a[1]); -+ printf("%s%s(\"%s\"%s, [\"%s\"", -+ my_secontext, "execve", -+ Q_FILENAME, FILENAME_secontext, -+ a[1]); - for (i = 2; i <= DEFAULT_STRLEN; ++i) - printf(", \"%s\"", a[i]); - #if VERBOSE -@@ -175,12 +199,17 @@ - #endif - printf(") = %s\n", errstr); - -+ if (unlink(FILENAME)) -+ perror_msg_and_fail("unlink"); -+ - call_execve(FILENAME, (char **) tail_argv[ARRAY_SIZE(q_argv)], efault); -- printf("execve(\"%s\", NULL, %p) = %s\n", -+ printf("%s%s(\"%s\", NULL, %p) = %s\n", -+ my_secontext, "execve", - Q_FILENAME, efault, errstr); - - call_execve(FILENAME, efault, NULL); -- printf("execve(\"%s\", %p, NULL) = %s\n", -+ printf("%s%s(\"%s\", %p, NULL) = %s\n", -+ my_secontext, "execve", - Q_FILENAME, efault, errstr); - - leave_and_remove_subdir(); -Index: strace-5.7/tests/execve.test -=================================================================== ---- strace-5.7.orig/tests/execve.test 2021-08-24 21:08:35.382312663 +0200 -+++ strace-5.7/tests/execve.test 2021-08-24 21:08:43.258246001 +0200 -@@ -11,7 +11,7 @@ - - check_prog grep - run_prog > /dev/null --run_strace -eexecve $args > "$EXP" -+run_strace -eexecve "$@" $args > "$EXP" - - # Filter out execve() call made by strace. - grep -F test.execve < "$LOG" > "$OUT" -Index: strace-5.7/tests/execveat.c -=================================================================== ---- strace-5.7.orig/tests/execveat.c 2021-08-24 21:08:35.383312654 +0200 -+++ strace-5.7/tests/execveat.c 2021-08-24 21:08:43.259245993 +0200 -@@ -13,9 +13,102 @@ - - #ifdef __NR_execveat - -+# include - # include - # include - -+# include "secontext.h" -+ -+static void -+tests_with_existing_file(void) -+{ -+ /* -+ * Make sure the current workdir of the tracee -+ * is different from the current workdir of the tracer. -+ */ -+ create_and_enter_subdir("execveat_subdir"); -+ -+ char *my_secontext = SECONTEXT_PID_MY(); -+ -+ static const char sample[] = "execveat_sample"; -+ (void) unlink(sample); -+ if (open(sample, O_RDONLY | O_CREAT, 0400) < 0) -+ perror_msg_and_fail("open"); -+ -+ char *sample_secontext = SECONTEXT_FILE(sample); -+ static const char *argv[] = { sample, NULL }; -+ -+ /* -+ * Tests with AT_FDCWD. -+ */ -+ -+ long rc = syscall(__NR_execveat, -100, sample, argv, NULL, 0); -+ printf("%s%s(AT_FDCWD, \"%s\"%s, [\"%s\"], NULL, 0) = %s\n", -+ my_secontext, "execveat", -+ sample, sample_secontext, -+ argv[0], -+ sprintrc(rc)); -+ -+ if (unlink(sample)) -+ perror_msg_and_fail("unlink"); -+ -+ rc = syscall(__NR_execveat, -100, sample, argv, NULL, 0); -+ printf("%s%s(AT_FDCWD, \"%s\", [\"%s\"], NULL, 0) = %s\n", -+ my_secontext, "execveat", -+ sample, -+ argv[0], -+ sprintrc(rc)); -+ -+ /* -+ * Tests with dirfd. -+ */ -+ -+ int cwd_fd = get_dir_fd("."); -+ char *cwd = get_fd_path(cwd_fd); -+ char *cwd_secontext = SECONTEXT_FILE("."); -+ char *sample_realpath = xasprintf("%s/%s", cwd, sample); -+ -+ /* no file */ -+ rc = syscall(__NR_execveat, cwd_fd, sample, argv, NULL, 0); -+ printf("%s%s(%d%s, \"%s\", [\"%s\"], NULL, 0) = %s\n", -+ my_secontext, "execveat", -+ cwd_fd, cwd_secontext, -+ sample, -+ argv[0], -+ sprintrc(rc)); -+ -+ if (open(sample, O_RDONLY | O_CREAT, 0400) < 0) -+ perror_msg_and_fail("open"); -+ -+ rc = syscall(__NR_execveat, cwd_fd, sample, argv, NULL, 0); -+ printf("%s%s(%d%s, \"%s\"%s, [\"%s\"], NULL, 0) = %s\n", -+ my_secontext, "execveat", -+ cwd_fd, cwd_secontext, -+ sample, sample_secontext, -+ argv[0], -+ sprintrc(rc)); -+ -+ /* cwd_fd ignored when path is absolute */ -+ if (chdir("../..")) -+ perror_msg_and_fail("chdir"); -+ -+ rc = syscall(__NR_execveat, cwd_fd, sample_realpath, argv, NULL, 0); -+ printf("%s%s(%d%s, \"%s\"%s, [\"%s\"], NULL, 0) = %s\n", -+ my_secontext, "execveat", -+ cwd_fd, cwd_secontext, -+ sample_realpath, sample_secontext, -+ argv[0], -+ sprintrc(rc)); -+ -+ if (fchdir(cwd_fd)) -+ perror_msg_and_fail("fchdir"); -+ -+ if (unlink(sample)) -+ perror_msg_and_fail("unlink"); -+ -+ leave_and_remove_subdir(); -+} -+ - # define FILENAME "test.execveat\nfilename" - # define Q_FILENAME "test.execveat\\nfilename" - -@@ -40,9 +133,10 @@ - { - const char ** const tail_argv = tail_memdup(argv, sizeof(argv)); - const char ** const tail_envp = tail_memdup(envp, sizeof(envp)); -+ char *my_secontext = SECONTEXT_PID_MY(); - - syscall(__NR_execveat, -100, FILENAME, tail_argv, tail_envp, 0x1100); -- printf("execveat(AT_FDCWD, \"%s\"" -+ printf("%s%s(AT_FDCWD, \"%s\"" - ", [\"%s\", \"%s\", \"%s\", %p, %p, %p, ... /* %p */]" - # if VERBOSE - ", [\"%s\", \"%s\", %p, %p, %p, ... /* %p */]" -@@ -50,6 +144,7 @@ - ", %p /* 5 vars, unterminated */" - # endif - ", AT_SYMLINK_NOFOLLOW|AT_EMPTY_PATH) = -1 %s (%m)\n", -+ my_secontext, "execveat", - Q_FILENAME, q_argv[0], q_argv[1], q_argv[2], - argv[3], argv[4], argv[5], (char *) tail_argv + sizeof(argv), - # if VERBOSE -@@ -65,13 +160,14 @@ - (void) q_envp; /* workaround for clang bug #33068 */ - - syscall(__NR_execveat, -100, FILENAME, tail_argv, tail_envp, 0x1100); -- printf("execveat(AT_FDCWD, \"%s\", [\"%s\", \"%s\", \"%s\"]" -+ printf("%s%s(AT_FDCWD, \"%s\", [\"%s\", \"%s\", \"%s\"]" - # if VERBOSE - ", [\"%s\", \"%s\"]" - # else - ", %p /* 2 vars */" - # endif - ", AT_SYMLINK_NOFOLLOW|AT_EMPTY_PATH) = -1 %s (%m)\n", -+ my_secontext, "execveat", - Q_FILENAME, q_argv[0], q_argv[1], q_argv[2], - # if VERBOSE - q_envp[0], q_envp[1], -@@ -81,13 +177,14 @@ - errno2name()); - - syscall(__NR_execveat, -100, FILENAME, tail_argv + 2, tail_envp + 1, 0x1100); -- printf("execveat(AT_FDCWD, \"%s\", [\"%s\"]" -+ printf("%s%s(AT_FDCWD, \"%s\", [\"%s\"]" - # if VERBOSE - ", [\"%s\"]" - # else - ", %p /* 1 var */" - # endif - ", AT_SYMLINK_NOFOLLOW|AT_EMPTY_PATH) = -1 %s (%m)\n", -+ my_secontext, "execveat", - Q_FILENAME, q_argv[2], - # if VERBOSE - q_envp[1], -@@ -101,13 +198,14 @@ - *empty = NULL; - - syscall(__NR_execveat, -100, FILENAME, empty, empty, 0x1100); -- printf("execveat(AT_FDCWD, \"%s\", []" -+ printf("%s%s(AT_FDCWD, \"%s\", []" - # if VERBOSE - ", []" - # else - ", %p /* 0 vars */" - # endif - ", AT_SYMLINK_NOFOLLOW|AT_EMPTY_PATH) = -1 %s (%m)\n", -+ my_secontext, "execveat", - Q_FILENAME, - # if !VERBOSE - empty, -@@ -132,7 +230,9 @@ - a[i] = b[i] = NULL; - - syscall(__NR_execveat, -100, FILENAME, a, b, 0x1100); -- printf("execveat(AT_FDCWD, \"%s\", [\"%.*s\"...", Q_FILENAME, DEFAULT_STRLEN, a[0]); -+ printf("%s%s(AT_FDCWD, \"%s\", [\"%.*s\"...", -+ my_secontext, "execveat", -+ Q_FILENAME, DEFAULT_STRLEN, a[0]); - for (i = 1; i < DEFAULT_STRLEN; ++i) - printf(", \"%s\"", a[i]); - # if VERBOSE -@@ -152,7 +252,9 @@ - errno2name()); - - syscall(__NR_execveat, -100, FILENAME, a + 1, b + 1, 0x1100); -- printf("execveat(AT_FDCWD, \"%s\", [\"%s\"", Q_FILENAME, a[1]); -+ printf("%s%s(AT_FDCWD, \"%s\", [\"%s\"", -+ my_secontext, "execveat", -+ Q_FILENAME, a[1]); - for (i = 2; i <= DEFAULT_STRLEN; ++i) - printf(", \"%s\"", a[i]); - # if VERBOSE -@@ -167,15 +269,19 @@ - errno2name()); - - syscall(__NR_execveat, -100, FILENAME, NULL, efault, 0x1100); -- printf("execveat(AT_FDCWD, \"%s\", NULL, %p" -+ printf("%s%s(AT_FDCWD, \"%s\", NULL, %p" - ", AT_SYMLINK_NOFOLLOW|AT_EMPTY_PATH) = -1 %s (%m)\n", -+ my_secontext, "execveat", - Q_FILENAME, efault, errno2name()); - - syscall(__NR_execveat, -100, FILENAME, efault, NULL, 0x1100); -- printf("execveat(AT_FDCWD, \"%s\", %p, NULL" -+ printf("%s%s(AT_FDCWD, \"%s\", %p, NULL" - ", AT_SYMLINK_NOFOLLOW|AT_EMPTY_PATH) = -1 %s (%m)\n", -+ my_secontext, "execveat", - Q_FILENAME, efault, errno2name()); - -+ tests_with_existing_file(); -+ - puts("+++ exited with 0 +++"); - return 0; - } -Index: strace-5.7/tests/faccessat.c -=================================================================== ---- strace-5.7.orig/tests/faccessat.c 2021-08-24 21:08:35.383312654 +0200 -+++ strace-5.7/tests/faccessat.c 2021-08-24 21:08:43.260245984 +0200 -@@ -12,12 +12,16 @@ - - #ifdef __NR_faccessat - --# include "xmalloc.h" - # include - # include - # include - --# ifndef FD_PATH -+# include "secontext.h" -+# include "xmalloc.h" -+ -+# ifdef FD_PATH -+# define YFLAG -+# else - # define FD_PATH "" - # endif - # ifndef SKIP_IF_PROC_IS_UNAVAILABLE -@@ -43,11 +47,130 @@ - return rc; - } - -+# ifndef PATH_TRACING -+static void -+tests_with_existing_file(void) -+{ -+ /* -+ * Make sure the current workdir of the tracee -+ * is different from the current workdir of the tracer. -+ */ -+ create_and_enter_subdir("faccessat_subdir"); -+ -+ char *my_secontext = SECONTEXT_PID_MY(); -+ -+ k_faccessat(-1, NULL, F_OK); -+ printf("%s%s(-1, NULL, F_OK) = %s\n", -+ my_secontext, "faccessat", errstr); -+ -+ static const char sample[] = "faccessat_sample"; -+ (void) unlink(sample); -+ int fd = open(sample, O_CREAT|O_RDONLY, 0400); -+ if (fd == -1) -+ perror_msg_and_fail("open"); -+ close(fd); -+ char *sample_secontext = SECONTEXT_FILE(sample); -+ -+ /* -+ * Tests with AT_FDCWD. -+ */ -+ -+ k_faccessat(-100, sample, F_OK); -+ printf("%s%s(AT_FDCWD, \"%s\"%s, F_OK) = %s\n", -+ my_secontext, "faccessat", -+ sample, sample_secontext, -+ errstr); -+ -+ if (unlink(sample)) -+ perror_msg_and_fail("unlink"); -+ -+ k_faccessat(-100, sample, F_OK); -+ printf("%s%s(AT_FDCWD, \"%s\", F_OK) = %s\n", -+ my_secontext, "faccessat", -+ sample, -+ errstr); -+ -+ /* -+ * Tests with dirfd. -+ */ -+ -+ int cwd_fd = get_dir_fd("."); -+ char *cwd = get_fd_path(cwd_fd); -+ char *cwd_secontext = SECONTEXT_FILE("."); -+ char *sample_realpath = xasprintf("%s/%s", cwd, sample); -+ -+ /* no file */ -+ k_faccessat(cwd_fd, sample, F_OK); -+# ifdef YFLAG -+ printf("%s%s(%d<%s>%s, \"%s\", F_OK) = %s\n", -+# else -+ printf("%s%s(%d%s, \"%s\", F_OK) = %s\n", -+# endif -+ my_secontext, "faccessat", -+ cwd_fd, -+# ifdef YFLAG -+ cwd, -+# endif -+ cwd_secontext, -+ sample, -+ errstr); -+ -+ fd = open(sample, O_CREAT|O_RDONLY, 0400); -+ if (fd == -1) -+ perror_msg_and_fail("open"); -+ close(fd); -+ -+ k_faccessat(cwd_fd, sample, F_OK); -+# ifdef YFLAG -+ printf("%s%s(%d<%s>%s, \"%s\"%s, F_OK) = %s\n", -+# else -+ printf("%s%s(%d%s, \"%s\"%s, F_OK) = %s\n", -+# endif -+ my_secontext, "faccessat", -+ cwd_fd, -+# ifdef YFLAG -+ cwd, -+# endif -+ cwd_secontext, -+ sample, sample_secontext, -+ errstr); -+ -+ /* cwd_fd ignored when path is absolute */ -+ if (chdir("../..")) -+ perror_msg_and_fail("chdir"); -+ -+ k_faccessat(cwd_fd, sample_realpath, F_OK); -+# ifdef YFLAG -+ printf("%s%s(%d<%s>%s, \"%s\"%s, F_OK) = %s\n", -+# else -+ printf("%s%s(%d%s, \"%s\"%s, F_OK) = %s\n", -+# endif -+ my_secontext, "faccessat", -+ cwd_fd, -+# ifdef YFLAG -+ cwd, -+# endif -+ cwd_secontext, -+ sample_realpath, sample_secontext, -+ errstr); -+ -+ if (fchdir(cwd_fd)) -+ perror_msg_and_fail("fchdir"); -+ -+ if (unlink(sample)) -+ perror_msg_and_fail("unlink"); -+ -+ leave_and_remove_subdir(); -+} -+# endif -+ - int - main(void) - { - SKIP_IF_PROC_IS_UNAVAILABLE; - -+# ifndef TEST_SECONTEXT -+ - TAIL_ALLOC_OBJECT_CONST_PTR(const char, unterminated); - char *unterminated_str = xasprintf("%p", unterminated); - const void *const efault = unterminated + 1; -@@ -120,10 +243,10 @@ - k_faccessat(dirfds[dirfd_i].val, - paths[path_i].val, - modes[mode_i].val); --# ifdef PATH_TRACING -+# ifdef PATH_TRACING - if (dirfds[dirfd_i].val == fd || - paths[path_i].val == fd_path) --# endif -+# endif - printf("faccessat(%s, %s, %s) = %s\n", - dirfds[dirfd_i].str, - paths[path_i].str, -@@ -133,6 +256,12 @@ - } - } - -+# endif /* !TEST_SECONTEXT */ -+ -+# ifndef PATH_TRACING -+ tests_with_existing_file(); -+# endif -+ - puts("+++ exited with 0 +++"); - return 0; - } -Index: strace-5.7/tests/faccessat.test -=================================================================== ---- strace-5.7.orig/tests/faccessat.test 2021-08-24 21:08:35.383312654 +0200 -+++ strace-5.7/tests/faccessat.test 2021-08-24 21:08:43.260245984 +0200 -@@ -15,5 +15,5 @@ - run_strace -a23 --trace=faccessat "$@" $args > "$EXP" - - # Filter out faccessat() calls made by ld.so and libc. --sed -n '/^faccessat(-1, NULL,/,$p' < "$LOG" > "$OUT" -+sed -n '/faccessat(-1, NULL,/,$p' < "$LOG" > "$OUT" - match_diff "$OUT" "$EXP" -Index: strace-5.7/tests/fanotify_mark.c -=================================================================== ---- strace-5.7.orig/tests/fanotify_mark.c 2021-08-24 21:07:01.122112055 +0200 -+++ strace-5.7/tests/fanotify_mark.c 2021-08-24 21:08:43.261245976 +0200 -@@ -3,7 +3,7 @@ - * - * Copyright (c) 2015-2016 Dmitry V. Levin - * Copyright (c) 2016 Eugene Syromyatnikov -- * Copyright (c) 2015-2020 The strace developers. -+ * Copyright (c) 2015-2021 The strace developers. - * All rights reserved. - * - * SPDX-License-Identifier: GPL-2.0-or-later -@@ -21,6 +21,8 @@ - # include - # include - -+# include "secontext.h" -+ - # if XLAT_RAW - # define str_fan_mark_add "0x1" - # define str_fan_modify_ondir "0x40000002" -@@ -35,6 +37,7 @@ - # define str_at_fdcwd "AT_FDCWD" - # endif - -+# ifndef TEST_SECONTEXT - /* Performs fanotify_mark call via the syscall interface. */ - static void - do_call(kernel_ulong_t fd, kernel_ulong_t flags, const char *flags_str, -@@ -44,18 +47,18 @@ - long rc; - - rc = syscall(__NR_fanotify_mark, fd, flags, --# if (LONG_MAX > INT_MAX) \ -- || (defined __x86_64__ && defined __ILP32__) \ -- || defined LINUX_MIPSN32 -+# if (LONG_MAX > INT_MAX) \ -+ || (defined __x86_64__ && defined __ILP32__) \ -+ || defined LINUX_MIPSN32 - mask, --# else -+# else - /* arch/parisc/kernel/sys_parisc32.c, commit ab8a261b */ --# ifdef HPPA -+# ifdef HPPA - LL_VAL_TO_PAIR((mask << 32) | (mask >> 32)), --# else -+# else - LL_VAL_TO_PAIR(mask), -+# endif - # endif --# endif - dirfd, path); - - printf("fanotify_mark(%d, %s, %s, %s, %s) = %s\n", -@@ -68,12 +71,14 @@ - const char *str; - }; - --# define STR16 "0123456789abcdef" --# define STR64 STR16 STR16 STR16 STR16 -+# define STR16 "0123456789abcdef" -+# define STR64 STR16 STR16 STR16 STR16 -+# endif /* !TEST_SECONTEXT */ - - int - main(void) - { -+# ifndef TEST_SECONTEXT - enum { - PATH1_SIZE = 64, - }; -@@ -87,47 +92,47 @@ - { F8ILL_KULONG_MASK, "0" }, - { (kernel_ulong_t) 0xdec0deddefacec00ULL, - "0xefacec00" --# if !XLAT_RAW -+# if !XLAT_RAW - " /* FAN_MARK_??? */" --# endif -+# endif - }, - { (kernel_ulong_t) 0xda7a105700000040ULL, --# if XLAT_RAW -+# if XLAT_RAW - "0x40" --# elif XLAT_VERBOSE -+# elif XLAT_VERBOSE - "0x40 /* FAN_MARK_IGNORED_SURV_MODIFY */" --# else -+# else - "FAN_MARK_IGNORED_SURV_MODIFY" --# endif -+# endif - }, - { (kernel_ulong_t) 0xbadc0deddeadffffULL, --# if XLAT_RAW || XLAT_VERBOSE -+# if XLAT_RAW || XLAT_VERBOSE - "0xdeadffff" --# endif --# if XLAT_VERBOSE -+# endif -+# if XLAT_VERBOSE - " /* " --# endif --# if !XLAT_RAW -+# endif -+# if !XLAT_RAW - "FAN_MARK_ADD|FAN_MARK_REMOVE|FAN_MARK_DONT_FOLLOW|" - "FAN_MARK_ONLYDIR|FAN_MARK_MOUNT|FAN_MARK_IGNORED_MASK|" - "FAN_MARK_IGNORED_SURV_MODIFY|FAN_MARK_FLUSH|" - "FAN_MARK_FILESYSTEM|0xdeadfe00" --# endif --# if XLAT_VERBOSE -+# endif -+# if XLAT_VERBOSE - " */" --# endif -+# endif - }, - }; - static const struct strval64 masks[] = { - { ARG_ULL_STR(0) }, - { 0xdeadfeedffffffffULL, --# if XLAT_RAW || XLAT_VERBOSE -+# if XLAT_RAW || XLAT_VERBOSE - "0xdeadfeedffffffff" --# endif --# if XLAT_VERBOSE -+# endif -+# if XLAT_VERBOSE - " /* " --# endif --# if !XLAT_RAW -+# endif -+# if !XLAT_RAW - "FAN_ACCESS|" - "FAN_MODIFY|" - "FAN_ATTRIB|" -@@ -149,27 +154,27 @@ - "FAN_ONDIR|" - "FAN_EVENT_ON_CHILD|" - "0xdeadfeedb7f0a000" --# endif --# if XLAT_VERBOSE -+# endif -+# if XLAT_VERBOSE - " */" --# endif -+# endif - }, - { ARG_ULL_STR(0xffffffffb7f0a000) --# if !XLAT_RAW -+# if !XLAT_RAW - " /* FAN_??? */" --# endif -+# endif - }, - }; - static const struct strval dirfds[] = { - { (kernel_ulong_t) 0xfacefeed00000001ULL, "1" }, - { (kernel_ulong_t) 0xdec0ded0ffffffffULL, --# if XLAT_RAW -+# if XLAT_RAW - "-1" --# elif XLAT_VERBOSE -+# elif XLAT_VERBOSE - "-1 /* FAN_NOFD */" --# else -+# else - "FAN_NOFD" --# endif -+# endif - }, - { (kernel_ulong_t) 0xbadfacedffffff9cULL, str_at_fdcwd }, - { (kernel_ulong_t) 0xdefaced1beeff00dULL, "-1091571699" }, -@@ -202,12 +207,6 @@ - snprintf(bogus_path1_after_addr, sizeof(bogus_path1_after_addr), "%p", - bogus_path1 + PATH1_SIZE); - -- rc = fanotify_mark(-1, FAN_MARK_ADD, FAN_MODIFY | FAN_ONDIR, -- -100, "."); -- printf("fanotify_mark(-1, %s, %s, %s, \".\") = %s\n", -- str_fan_mark_add, str_fan_modify_ondir, str_at_fdcwd, -- sprintrc(rc)); -- - for (i = 0; i < ARRAY_SIZE(fds); i++) { - for (j = 0; j < ARRAY_SIZE(flags); j++) { - for (k = 0; k < ARRAY_SIZE(masks); k++) { -@@ -226,6 +225,40 @@ - } - } - } -+# else /* TEST_SECONTEXT */ -+ int rc; -+# endif -+ /* -+ * Test with AT_FDCWD. -+ */ -+ -+ char *my_secontext = SECONTEXT_PID_MY(); -+ char path[] = "."; -+ char *path_secontext = SECONTEXT_FILE(path); -+ -+ rc = fanotify_mark(-1, FAN_MARK_ADD, FAN_MODIFY | FAN_ONDIR, -+ -100, path); -+ printf("%s%s(-1, %s, %s, %s, \"%s\"%s) = %s\n", -+ my_secontext, "fanotify_mark", -+ str_fan_mark_add, str_fan_modify_ondir, str_at_fdcwd, -+ path, path_secontext, -+ sprintrc(rc)); -+ -+ /* -+ * Test with dirfd. -+ */ -+ -+ int cwd_fd = get_dir_fd("."); -+ char *cwd_secontext = SECONTEXT_FILE("."); -+ -+ rc = fanotify_mark(-1, FAN_MARK_ADD, FAN_MODIFY | FAN_ONDIR, -+ cwd_fd, path); -+ printf("%s%s(-1, %s, %s, %d%s, \"%s\"%s) = %s\n", -+ my_secontext, "fanotify_mark", -+ str_fan_mark_add, str_fan_modify_ondir, -+ cwd_fd, cwd_secontext, -+ path, path_secontext, -+ sprintrc(rc)); - - puts("+++ exited with 0 +++"); - return 0; -Index: strace-5.7/tests/fchmod.c -=================================================================== ---- strace-5.7.orig/tests/fchmod.c 2021-08-24 21:08:35.384312646 +0200 -+++ strace-5.7/tests/fchmod.c 2021-08-24 21:08:43.261245976 +0200 -@@ -18,6 +18,8 @@ - # include - # include - -+# include "secontext.h" -+ - int - main(void) - { -@@ -27,6 +29,8 @@ - */ - create_and_enter_subdir("fchmod_subdir"); - -+ char *my_secontext = SECONTEXT_PID_MY(); -+ - static const char sample[] = "fchmod_sample_file"; - (void) unlink(sample); - int fd = open(sample, O_CREAT|O_RDONLY, 0400); -@@ -37,16 +41,19 @@ - char *sample_realpath = get_fd_path(fd); - # endif - -+ const char *sample_secontext = SECONTEXT_FILE(sample); - long rc = syscall(__NR_fchmod, fd, 0600); - # ifdef YFLAG -- printf("fchmod(%d<%s>, 0600) = %s\n", -+ printf("%s%s(%d<%s>%s, 0600) = %s\n", - # else -- printf("fchmod(%d, 0600) = %s\n", -+ printf("%s%s(%d%s, 0600) = %s\n", - # endif -+ my_secontext, "fchmod", - fd, - # ifdef YFLAG - sample_realpath, - # endif -+ sample_secontext, - sprintrc(rc)); - - if (unlink(sample)) -@@ -54,26 +61,30 @@ - - rc = syscall(__NR_fchmod, fd, 051); - # ifdef YFLAG -- printf("fchmod(%d<%s (deleted)>, 051) = %s\n", -+ printf("%s%s(%d<%s (deleted)>%s, 051) = %s\n", - # else -- printf("fchmod(%d, 051) = %s\n", -+ printf("%s%s(%d%s, 051) = %s\n", - # endif -+ my_secontext, "fchmod", - fd, - # ifdef YFLAG - sample_realpath, - # endif -+ sample_secontext, - sprintrc(rc)); - - rc = syscall(__NR_fchmod, fd, 004); - # ifdef YFLAG -- printf("fchmod(%d<%s (deleted)>, 004) = %s\n", -+ printf("%s%s(%d<%s (deleted)>%s, 004) = %s\n", - # else -- printf("fchmod(%d, 004) = %s\n", -+ printf("%s%s(%d%s, 004) = %s\n", - # endif -+ my_secontext, "fchmod", - fd, - # ifdef YFLAG - sample_realpath, - # endif -+ sample_secontext, - sprintrc(rc)); - - leave_and_remove_subdir(); -Index: strace-5.7/tests/fchmodat.c -=================================================================== ---- strace-5.7.orig/tests/fchmodat.c 2021-08-24 21:08:35.384312646 +0200 -+++ strace-5.7/tests/fchmodat.c 2021-08-24 21:08:43.261245976 +0200 -@@ -17,6 +17,8 @@ - # include - # include - -+# include "secontext.h" -+ - int - main(void) - { -@@ -26,26 +28,81 @@ - */ - create_and_enter_subdir("fchmodat_subdir"); - -- static const char sample[] = "fchmodat_sample"; -+ char *my_secontext = SECONTEXT_PID_MY(); - -+ static const char sample[] = "fchmodat_sample_file"; - if (open(sample, O_RDONLY | O_CREAT, 0400) < 0) - perror_msg_and_fail("open"); - -+ char *sample_secontext = SECONTEXT_FILE(sample); -+ -+ /* -+ * Tests with AT_FDCWD. -+ */ -+ - long rc = syscall(__NR_fchmodat, -100, sample, 0600); -- printf("fchmodat(AT_FDCWD, \"%s\", 0600) = %s\n", -- sample, sprintrc(rc)); -+ printf("%s%s(AT_FDCWD, \"%s\"%s, 0600) = %s\n", -+ my_secontext, "fchmodat", -+ sample, sample_secontext, -+ sprintrc(rc)); - - if (unlink(sample)) - perror_msg_and_fail("unlink"); - - rc = syscall(__NR_fchmodat, -100, sample, 051); -- printf("fchmodat(AT_FDCWD, \"%s\", 051) = %s\n", -+ printf("%s%s(AT_FDCWD, \"%s\", 051) = %s\n", -+ my_secontext, "fchmodat", - sample, sprintrc(rc)); - - rc = syscall(__NR_fchmodat, -100, sample, 004); -- printf("fchmodat(AT_FDCWD, \"%s\", 004) = %s\n", -+ printf("%s%s(AT_FDCWD, \"%s\", 004) = %s\n", -+ my_secontext, "fchmodat", - sample, sprintrc(rc)); - -+ /* -+ * Tests with dirfd. -+ */ -+ -+ int cwd_fd = get_dir_fd("."); -+ char *cwd = get_fd_path(cwd_fd); -+ char *cwd_secontext = SECONTEXT_FILE("."); -+ char *sample_realpath = xasprintf("%s/%s", cwd, sample); -+ -+ /* no file */ -+ rc = syscall(__NR_fchmodat, cwd_fd, sample, 0400); -+ printf("%s%s(%d%s, \"%s\", 0400) = %s\n", -+ my_secontext, "fchmodat", -+ cwd_fd, cwd_secontext, -+ sample, -+ sprintrc(rc)); -+ -+ if (open(sample, O_RDONLY | O_CREAT, 0400) < 0) -+ perror_msg_and_fail("open"); -+ -+ rc = syscall(__NR_fchmodat, cwd_fd, sample, 0400); -+ printf("%s%s(%d%s, \"%s\"%s, 0400) = %s\n", -+ my_secontext, "fchmodat", -+ cwd_fd, cwd_secontext, -+ sample, sample_secontext, -+ sprintrc(rc)); -+ -+ /* cwd_fd ignored when path is absolute */ -+ if (chdir("../..")) -+ perror_msg_and_fail("chdir"); -+ -+ rc = syscall(__NR_fchmodat, cwd_fd, sample_realpath, 0400); -+ printf("%s%s(%d%s, \"%s\"%s, 0400) = %s\n", -+ my_secontext, "fchmodat", -+ cwd_fd, cwd_secontext, -+ sample_realpath, sample_secontext, -+ sprintrc(rc)); -+ -+ if (fchdir(cwd_fd)) -+ perror_msg_and_fail("fchdir"); -+ -+ if (unlink(sample)) -+ perror_msg_and_fail("unlink"); -+ - leave_and_remove_subdir(); - - puts("+++ exited with 0 +++"); -Index: strace-5.7/tests/fchownat.c -=================================================================== ---- strace-5.7.orig/tests/fchownat.c 2021-08-24 21:08:35.384312646 +0200 -+++ strace-5.7/tests/fchownat.c 2021-08-24 21:08:43.262245968 +0200 -@@ -17,6 +17,8 @@ - # include - # include - -+# include "secontext.h" -+ - int - main(void) - { -@@ -26,25 +28,86 @@ - */ - create_and_enter_subdir("fchownat_subdir"); - -- static const char sample[] = "fchownat_sample"; -+ char *my_secontext = SECONTEXT_PID_MY(); - uid_t uid = geteuid(); - uid_t gid = getegid(); - -- if (open(sample, O_RDONLY | O_CREAT, 0400) == -1) -+ static const char sample[] = "fchownat_sample"; -+ int fd = open(sample, O_RDONLY | O_CREAT, 0400); -+ if (fd == -1) - perror_msg_and_fail("open"); -+ close(fd); -+ -+ char *sample_secontext = SECONTEXT_FILE(sample); -+ -+ /* -+ * Tests with AT_FDCWD. -+ */ - - long rc = syscall(__NR_fchownat, AT_FDCWD, sample, uid, gid, 0); -- printf("fchownat(AT_FDCWD, \"%s\", %d, %d, 0) = %s\n", -- sample, uid, gid, sprintrc(rc)); -+ printf("%s%s(AT_FDCWD, \"%s\"%s, %d, %d, 0) = %s\n", -+ my_secontext, "fchownat", -+ sample, sample_secontext, -+ uid, gid, sprintrc(rc)); - - if (unlink(sample)) - perror_msg_and_fail("unlink"); - - rc = syscall(__NR_fchownat, AT_FDCWD, - sample, -1, -1L, AT_SYMLINK_NOFOLLOW); -- printf("fchownat(AT_FDCWD, \"%s\", -1, -1, AT_SYMLINK_NOFOLLOW) = %s\n", -+ printf("%s%s(AT_FDCWD, \"%s\", -1, -1, AT_SYMLINK_NOFOLLOW) = %s\n", -+ my_secontext, "fchownat", - sample, sprintrc(rc)); - -+ /* -+ * Tests with dirfd. -+ */ -+ -+ int cwd_fd = get_dir_fd("."); -+ char *cwd = get_fd_path(cwd_fd); -+ char *cwd_secontext = SECONTEXT_FILE("."); -+ char *sample_realpath = xasprintf("%s/%s", cwd, sample); -+ -+ /* no file */ -+ rc = syscall(__NR_fchownat, cwd_fd, sample, uid, gid, 0); -+ printf("%s%s(%d%s, \"%s\", %d, %d, 0) = %s\n", -+ my_secontext, "fchownat", -+ cwd_fd, cwd_secontext, -+ sample, -+ uid, gid, -+ sprintrc(rc)); -+ -+ fd = open(sample, O_RDONLY | O_CREAT, 0400); -+ if (fd == -1) -+ perror_msg_and_fail("open"); -+ close(fd); -+ -+ rc = syscall(__NR_fchownat, cwd_fd, sample, uid, gid, 0); -+ printf("%s%s(%d%s, \"%s\"%s, %d, %d, 0) = %s\n", -+ my_secontext, "fchownat", -+ cwd_fd, cwd_secontext, -+ sample, sample_secontext, -+ uid, gid, -+ sprintrc(rc)); -+ -+ /* cwd_fd ignored when path is absolute */ -+ if (chdir("../..")) -+ perror_msg_and_fail("chdir"); -+ -+ rc = syscall(__NR_fchownat, cwd_fd, sample_realpath, uid, gid, 0); -+ printf("%s%s(%d%s, \"%s\"%s, %d, %d, 0) = %s\n", -+ my_secontext, "fchownat", -+ cwd_fd, cwd_secontext, -+ sample_realpath, sample_secontext, -+ uid, gid, -+ sprintrc(rc)); -+ -+ if (fchdir(cwd_fd)) -+ perror_msg_and_fail("fchdir"); -+ -+ if (unlink(sample)) -+ perror_msg_and_fail("unlink"); -+ - leave_and_remove_subdir(); - - puts("+++ exited with 0 +++"); -Index: strace-5.7/tests/file_handle.c -=================================================================== ---- strace-5.7.orig/tests/file_handle.c 2021-08-24 21:08:35.385312637 +0200 -+++ strace-5.7/tests/file_handle.c 2021-08-24 21:08:43.263245959 +0200 -@@ -21,6 +21,8 @@ - # include - # include - -+# include "secontext.h" -+ - enum assert_rc { - ASSERT_NONE, - ASSERT_SUCCESS, -@@ -48,6 +50,7 @@ - printf("..."); - } - -+# ifndef TEST_SECONTEXT - void - do_name_to_handle_at(kernel_ulong_t dirfd, const char *dirfd_str, - kernel_ulong_t pathname, const char *pathname_str, -@@ -129,6 +132,7 @@ - - printf("%s\n", sprintrc(rc)); - } -+# endif /* !TEST_SECONTEXT */ - - struct strval { - kernel_ulong_t val; -@@ -141,12 +145,86 @@ - int - main(void) - { -+ char *my_secontext = SECONTEXT_PID_MY(); - enum { - PATH1_SIZE = 64, - }; - - static const kernel_ulong_t fdcwd = - (kernel_ulong_t) 0x87654321ffffff9cULL; -+ -+ struct file_handle *handle = -+ tail_alloc(sizeof(struct file_handle) + MAX_HANDLE_SZ); -+ struct file_handle *handle_0 = -+ tail_alloc(sizeof(struct file_handle) + 0); -+ struct file_handle *handle_8 = -+ tail_alloc(sizeof(struct file_handle) + 8); -+ struct file_handle *handle_128 = -+ tail_alloc(sizeof(struct file_handle) + 128); -+ struct file_handle *handle_256 = -+ tail_alloc(sizeof(struct file_handle) + 256); -+ TAIL_ALLOC_OBJECT_CONST_PTR(int, bogus_mount_id); -+ -+ char handle_0_addr[sizeof("0x") + sizeof(void *) * 2]; -+ -+ const int flags = 0x400; -+ int mount_id; -+ -+ handle_0->handle_bytes = 256; -+ handle_8->handle_bytes = 0; -+ handle_128->handle_bytes = 128; -+ handle_256->handle_bytes = 256; -+ -+ fill_memory((char *) handle_128 + sizeof(struct file_handle), 128); -+ fill_memory((char *) handle_256 + sizeof(struct file_handle), 256); -+ -+ snprintf(handle_0_addr, sizeof(handle_0_addr), "%p", -+ handle_0 + sizeof(struct file_handle)); -+ -+ handle->handle_bytes = 0; -+ -+ char path[] = "."; -+ char *path_secontext = SECONTEXT_FILE(path); -+ -+ assert(syscall(__NR_name_to_handle_at, fdcwd, path, handle, &mount_id, -+ flags | 1) == -1); -+ if (EINVAL != errno) -+ perror_msg_and_skip("name_to_handle_at"); -+ printf("%s%s(AT_FDCWD, \"%s\"%s, {handle_bytes=0}, %p" -+ ", AT_SYMLINK_FOLLOW|0x1) = -1 EINVAL (%m)\n", -+ my_secontext, "name_to_handle_at", -+ path, path_secontext, -+ &mount_id); -+ -+ assert(syscall(__NR_name_to_handle_at, fdcwd, path, handle, &mount_id, -+ flags) == -1); -+ if (EOVERFLOW != errno) -+ perror_msg_and_skip("name_to_handle_at"); -+ printf("%s%s(AT_FDCWD, \"%s\"%s, {handle_bytes=0 => %u}" -+ ", %p, AT_SYMLINK_FOLLOW) = -1 EOVERFLOW (%m)\n", -+ my_secontext, "name_to_handle_at", -+ path, path_secontext, -+ handle->handle_bytes, &mount_id); -+ -+ assert(syscall(__NR_name_to_handle_at, fdcwd, path, handle, &mount_id, -+ flags) == 0); -+ printf("%s%s(AT_FDCWD, \"%s\"%s, {handle_bytes=%u" -+ ", handle_type=%d, f_handle=", -+ my_secontext, "name_to_handle_at", -+ path, path_secontext, -+ handle->handle_bytes, handle->handle_type); -+ print_handle_data(handle->f_handle, handle->handle_bytes); -+ printf("}, [%d], AT_SYMLINK_FOLLOW) = 0\n", mount_id); -+ -+ printf("%s%s(-1, {handle_bytes=%u, handle_type=%d, f_handle=", -+ my_secontext, "open_by_handle_at", -+ handle->handle_bytes, handle->handle_type); -+ print_handle_data(handle->f_handle, handle->handle_bytes); -+ int rc = syscall(__NR_open_by_handle_at, -1, handle, -+ O_RDONLY | O_DIRECTORY); -+ printf("}, O_RDONLY|O_DIRECTORY) = %d %s (%m)\n", rc, errno2name()); -+ -+# ifndef TEST_SECONTEXT - static const struct strval dirfds[] = { - { (kernel_ulong_t) 0xdeadca57badda7a1ULL, "-1159878751" }, - { (kernel_ulong_t) 0x12345678ffffff9cULL, "AT_FDCWD" }, -@@ -171,29 +249,11 @@ - }; - - static const char str64[] = STR64; -- -- - char *bogus_path1 = tail_memdup(str64, PATH1_SIZE); - char *bogus_path2 = tail_memdup(str64, sizeof(str64)); -- -- struct file_handle *handle = -- tail_alloc(sizeof(struct file_handle) + MAX_HANDLE_SZ); -- struct file_handle *handle_0 = -- tail_alloc(sizeof(struct file_handle) + 0); -- struct file_handle *handle_8 = -- tail_alloc(sizeof(struct file_handle) + 8); -- struct file_handle *handle_128 = -- tail_alloc(sizeof(struct file_handle) + 128); -- struct file_handle *handle_256 = -- tail_alloc(sizeof(struct file_handle) + 256); -- TAIL_ALLOC_OBJECT_CONST_PTR(int, bogus_mount_id); -- -- char handle_0_addr[sizeof("0x") + sizeof(void *) * 2]; -- - char bogus_path1_addr[sizeof("0x") + sizeof(void *) * 2]; - char bogus_path1_after_addr[sizeof("0x") + sizeof(void *) * 2]; - -- - struct strval paths[] = { - { (kernel_ulong_t) 0, "NULL" }, - { (kernel_ulong_t) (uintptr_t) (bogus_path1 + PATH1_SIZE), -@@ -229,62 +289,16 @@ - (kernel_ulong_t) (uintptr_t) bogus_mount_id, - }; - -- const int flags = 0x400; -- int mount_id; - unsigned int i; - unsigned int j; - unsigned int k; - unsigned int l; - unsigned int m; - -- - snprintf(bogus_path1_addr, sizeof(bogus_path1_addr), "%p", bogus_path1); - snprintf(bogus_path1_after_addr, sizeof(bogus_path1_after_addr), "%p", - bogus_path1 + PATH1_SIZE); - -- handle_0->handle_bytes = 256; -- handle_8->handle_bytes = 0; -- handle_128->handle_bytes = 128; -- handle_256->handle_bytes = 256; -- -- fill_memory((char *) handle_128 + sizeof(struct file_handle), 128); -- fill_memory((char *) handle_256 + sizeof(struct file_handle), 256); -- -- snprintf(handle_0_addr, sizeof(handle_0_addr), "%p", -- handle_0 + sizeof(struct file_handle)); -- -- handle->handle_bytes = 0; -- -- assert(syscall(__NR_name_to_handle_at, fdcwd, ".", handle, &mount_id, -- flags | 1) == -1); -- if (EINVAL != errno) -- perror_msg_and_skip("name_to_handle_at"); -- printf("name_to_handle_at(AT_FDCWD, \".\", {handle_bytes=0}, %p" -- ", AT_SYMLINK_FOLLOW|0x1) = -1 EINVAL (%m)\n", &mount_id); -- -- assert(syscall(__NR_name_to_handle_at, fdcwd, ".", handle, &mount_id, -- flags) == -1); -- if (EOVERFLOW != errno) -- perror_msg_and_skip("name_to_handle_at"); -- printf("name_to_handle_at(AT_FDCWD, \".\", {handle_bytes=0 => %u}" -- ", %p, AT_SYMLINK_FOLLOW) = -1 EOVERFLOW (%m)\n", -- handle->handle_bytes, &mount_id); -- -- assert(syscall(__NR_name_to_handle_at, fdcwd, ".", handle, &mount_id, -- flags) == 0); -- printf("name_to_handle_at(AT_FDCWD, \".\", {handle_bytes=%u" -- ", handle_type=%d, f_handle=", -- handle->handle_bytes, handle->handle_type); -- print_handle_data(handle->f_handle, handle->handle_bytes); -- printf("}, [%d], AT_SYMLINK_FOLLOW) = 0\n", mount_id); -- -- printf("open_by_handle_at(-1, {handle_bytes=%u, handle_type=%d" -- ", f_handle=", handle->handle_bytes, handle->handle_type); -- print_handle_data(handle->f_handle, handle->handle_bytes); -- int rc = syscall(__NR_open_by_handle_at, -1, handle, -- O_RDONLY | O_DIRECTORY); -- printf("}, O_RDONLY|O_DIRECTORY) = %d %s (%m)\n", rc, errno2name()); -- - for (i = 0; i < ARRAY_SIZE(dirfds); i++) { - for (j = 0; j < ARRAY_SIZE(paths); j++) { - for (k = 0; k < ARRAY_SIZE(name_handles); k++) { -@@ -320,6 +334,68 @@ - } - } - } -+# endif -+ -+ /* -+ * Tests with dirfd. -+ */ -+ -+ int cwd_fd = get_dir_fd("."); -+ char *cwd = get_fd_path(cwd_fd); -+ char *cwd_secontext = SECONTEXT_FILE("."); -+ -+ assert(syscall(__NR_name_to_handle_at, cwd_fd, path, handle, &mount_id, -+ flags) == 0); -+ printf("%s%s(%d%s, \"%s\"%s, {handle_bytes=%u, handle_type=%d" -+ ", f_handle=", -+ my_secontext, "name_to_handle_at", -+ cwd_fd, cwd_secontext, -+ path, path_secontext, -+ handle->handle_bytes, handle->handle_type); -+ print_handle_data((unsigned char *) handle + -+ sizeof(struct file_handle), -+ handle->handle_bytes); -+ printf("}, [%d], AT_SYMLINK_FOLLOW) = 0\n", mount_id); -+ -+ printf("%s%s(-1, {handle_bytes=%u, handle_type=%d, f_handle=", -+ my_secontext, "open_by_handle_at", -+ handle->handle_bytes, handle->handle_type); -+ print_handle_data((unsigned char *) handle + -+ sizeof(struct file_handle), -+ handle->handle_bytes); -+ rc = syscall(__NR_open_by_handle_at, -1, handle, -+ O_RDONLY | O_DIRECTORY); -+ printf("}, O_RDONLY|O_DIRECTORY) = %s\n", sprintrc(rc)); -+ -+ /* cwd_fd ignored when path is absolute */ -+ if (chdir("..")) -+ perror_msg_and_fail("chdir"); -+ -+ assert(syscall(__NR_name_to_handle_at, cwd_fd, cwd, handle, &mount_id, -+ flags) == 0); -+ printf("%s%s(%d%s, \"%s\"%s, {handle_bytes=%u" -+ ", handle_type=%d, f_handle=", -+ my_secontext, "name_to_handle_at", -+ cwd_fd, cwd_secontext, -+ cwd, cwd_secontext, -+ handle->handle_bytes, handle->handle_type); -+ print_handle_data((unsigned char *) handle + -+ sizeof(struct file_handle), -+ handle->handle_bytes); -+ printf("}, [%d], AT_SYMLINK_FOLLOW) = 0\n", mount_id); -+ -+ printf("%s%s(-1, {handle_bytes=%u, handle_type=%d, f_handle=", -+ my_secontext, "open_by_handle_at", -+ handle->handle_bytes, handle->handle_type); -+ print_handle_data((unsigned char *) handle + -+ sizeof(struct file_handle), -+ handle->handle_bytes); -+ rc = syscall(__NR_open_by_handle_at, -1, handle, -+ O_RDONLY | O_DIRECTORY); -+ printf("}, O_RDONLY|O_DIRECTORY) = %s\n", sprintrc(rc)); -+ -+ if (fchdir(cwd_fd)) -+ perror_msg_and_fail("fchdir"); - - puts("+++ exited with 0 +++"); - return 0; -Index: strace-5.7/tests/gen_secontext.sh -=================================================================== ---- /dev/null 1970-01-01 00:00:00.000000000 +0000 -+++ strace-5.7/tests/gen_secontext.sh 2021-08-24 21:08:43.263245959 +0200 -@@ -0,0 +1,72 @@ -+#!/bin/sh -efu -+# -+# Copyright (c) 2021 The strace developers. -+# All rights reserved. -+# -+# SPDX-License-Identifier: GPL-2.0-or-later -+ -+usage() -+{ -+ cat >&2 <] -+ -+Generate secontext files from list. -+EOF -+ exit 1 -+} -+ -+if [ $# -eq 0 ]; then -+ input="${0%/*}/gen_tests.in" -+else -+ input="$1" -+ shift -+fi -+dir="$(dirname "$input")" -+[ $# -eq 0 ] || usage -+ -+{ -+ cat < "$dir/secontext.am" -+ -+sed -r -n 's/^([^#[:space:]]+--secontext)[[:space:]].*/\1/p' < "$input" | -+while read -r name; do { -+ cat <<-EOF > "$dir/$name.c" -+ /* -+ * Copyright (c) 2021 The strace developers. -+ * All rights reserved. -+ * -+ * SPDX-License-Identifier: GPL-2.0-or-later -+ */ -+ -+ #include "tests.h" -+ -+ #ifdef HAVE_SELINUX_RUNTIME -+ -+ # define TEST_SECONTEXT -+ # include "${name%--secontext}.c" -+ -+ #else -+ -+ SKIP_MAIN_UNDEFINED("HAVE_SELINUX_RUNTIME") -+ -+ #endif -+ EOF -+} < /dev/null; done -+ -+sed -r -n 's/^([^#[:space:]]+--secontext_full)[[:space:]].*/\1/p' < "$input" | -+while read -r name; do { -+ cat <<-EOF > "$dir/$name.c" -+ #define PRINT_SECONTEXT_FULL -+ #include "${name%_full}.c" -+ EOF -+} < /dev/null; done -Index: strace-5.7/tests/gen_tests.in -=================================================================== ---- strace-5.7.orig/tests/gen_tests.in 2021-08-24 21:08:35.385312637 +0200 -+++ strace-5.7/tests/gen_tests.in 2021-08-24 21:08:43.263245959 +0200 -@@ -10,6 +10,8 @@ - accept -a22 - accept4 -a37 - access -a30 --trace-path=access_sample -+access--secontext -a30 --secontext --trace-path=access_sample -e trace=access -+access--secontext_full -a30 --secontext=full --trace-path=access_sample -e trace=access - acct -a20 - add_key -a30 -s12 - adjtimex -a15 -@@ -24,6 +26,8 @@ - bpf-v -a20 -v -e trace=bpf - btrfs +ioctl.test - chmod -a28 -+chmod--secontext -a28 --secontext -e trace=chmod -+chmod--secontext_full -a28 --secontext=full -e trace=chmod - chown -a28 - chown32 -a31 - chroot -a24 -@@ -71,25 +75,43 @@ - epoll_pwait - epoll_wait -a26 - erestartsys -a34 -e signal=none -e trace=recvfrom -+execve--secontext +execve.test --secontext -+execve--secontext_full +execve.test --secontext=full - execveat -+execveat--secontext --secontext --trace=execveat -+execveat--secontext_full --secontext=full --trace=execveat - execveat-v -v -e trace=execveat -+faccessat--secontext +faccessat.test -a24 --secontext -+faccessat--secontext_full +faccessat.test -a24 --secontext=full - faccessat-P -a23 --trace=faccessat -P /dev/full - faccessat-y +faccessat.test -a24 -y -+faccessat-y--secontext +faccessat.test -a24 -y --secontext -+faccessat-y--secontext_full +faccessat.test -a24 -y --secontext=full - faccessat-yy +faccessat.test -a24 -yy - fadvise64_64 +fadvise64.test - fallocate -a18 - fanotify_init - fanotify_mark -a32 -+fanotify_mark--secontext -a32 --secontext -e trace=fanotify_mark -+fanotify_mark--secontext_full -a32 --secontext=full -e trace=fanotify_mark - fanotify_mark-Xabbrev -a32 -Xabbrev -e trace=fanotify_mark - fanotify_mark-Xraw -a32 -Xraw -e trace=fanotify_mark - fanotify_mark-Xverbose -a32 -Xverbose -e trace=fanotify_mark - fchdir -a11 - fchmod -a15 -+fchmod--secontext -a15 --secontext -e trace=fchmod -+fchmod--secontext_full -a15 --secontext=full -e trace=fchmod - fchmod-y -y -e trace=fchmod -+fchmod-y--secontext -a15 -y --secontext -e trace=fchmod -+fchmod-y--secontext_full -a15 -y --secontext=full -e trace=fchmod - fchmodat -+fchmodat--secontext --secontext -e trace=fchmodat -+fchmodat--secontext_full --secontext=full -e trace=fchmodat - fchown -a16 - fchown32 -a18 - fchownat -+fchownat--secontext --secontext -e trace=fchownat -+fchownat--secontext_full --secontext=full -e trace=fchownat - fcntl -a8 - fcntl--pidns-translation test_pidns -a8 -e trace=fcntl - fcntl64 -a8 -@@ -97,6 +119,8 @@ - fdatasync -a14 - file_handle -e trace=name_to_handle_at,open_by_handle_at - file_ioctl +ioctl.test -+file_handle--secontext --secontext -e trace=name_to_handle_at,open_by_handle_at -+file_handle--secontext_full --secontext=full -e trace=name_to_handle_at,open_by_handle_at - filter_seccomp . "${srcdir=.}/filter_seccomp.sh"; test_prog_set --seccomp-bpf -f - filter_seccomp-flag ../$NAME - finit_module -a25 -@@ -295,6 +319,8 @@ - lchown32 -a32 - link - linkat -+linkat--secontext --secontext -e trace=linkat -+linkat--secontext_full --secontext=full -e trace=linkat - lookup_dcookie -a27 - lstat -a31 --no-abbrev --trace-path=stat.sample --trace-path=/dev/full - lstat64 -a32 --no-abbrev --trace-path=stat.sample --trace-path=/dev/full -@@ -434,9 +460,13 @@ - oldselect-efault-P -a13 -e trace=select -P /dev/full 9>>/dev/full - oldstat -a32 -v -P stat.sample -P /dev/full - open -a30 -P $NAME.sample -+open--secontext -a30 -P open.sample --secontext --trace=open -+open--secontext_full -a30 -P open.sample --secontext=full --trace=open - open_tree -a30 -y - open_tree-P -a30 --decode-fds -P /dev/full -e trace=open_tree - openat -a36 -P $NAME.sample -+openat--secontext -a36 -P openat.sample -P $PWD/openat.sample --secontext -e trace=openat -+openat--secontext_full -a36 -P openat.sample -P $PWD/openat.sample --secontext=full -e trace=openat - openat2 -a35 - openat2-Xabbrev --trace=openat2 -a35 -Xabbrev - openat2-Xraw --trace=openat2 -a32 -Xraw -Index: strace-5.7/tests/linkat.c -=================================================================== ---- strace-5.7.orig/tests/linkat.c 2021-08-24 21:08:35.385312637 +0200 -+++ strace-5.7/tests/linkat.c 2021-08-24 21:08:43.264245951 +0200 -@@ -10,8 +10,14 @@ - - #ifdef __NR_linkat - -+# include - # include -+# include - # include -+# include -+ -+# include "secontext.h" -+# include "xmalloc.h" - - int - main(void) -@@ -27,18 +33,158 @@ - const long fd_old = (long) 0xdeadbeefffffffffULL; - const long fd_new = (long) 0xdeadbeeffffffffeULL; - -+ char *my_secontext = SECONTEXT_PID_MY(); -+ -+ (void) unlink(sample_1); -+ (void) unlink(sample_2); -+ - long rc = syscall(__NR_linkat, fd_old, sample_1, fd_new, sample_2, 0); -- printf("linkat(%d, \"%s\", %d, \"%s\", 0) = %ld %s (%m)\n", -+ printf("%s%s(%d, \"%s\", %d, \"%s\", 0) = %ld %s (%m)\n", -+ my_secontext, "linkat", - (int) fd_old, sample_1, (int) fd_new, sample_2, - rc, errno2name()); - - rc = syscall(__NR_linkat, -100, sample_1, -100, sample_2, -1L); -- printf("linkat(%s, \"%s\", %s, \"%s\", %s) = %ld %s (%m)\n", -+ printf("%s%s(%s, \"%s\", %s, \"%s\", %s) = %ld %s (%m)\n", -+ my_secontext, "linkat", - "AT_FDCWD", sample_1, "AT_FDCWD", sample_2, - "AT_SYMLINK_NOFOLLOW|AT_REMOVEDIR|AT_SYMLINK_FOLLOW" - "|AT_NO_AUTOMOUNT|AT_EMPTY_PATH|AT_RECURSIVE|0xffff60ff", - rc, errno2name()); - -+ /* -+ * Tests with AT_FDCWD. -+ */ -+ -+ int fd_sample_1 = open(sample_1, O_RDONLY | O_CREAT, 0400); -+ if (fd_sample_1 < 0) -+ perror_msg_and_fail("open"); -+ if (close(fd_sample_1)) -+ perror_msg_and_fail("close"); -+ -+ char *sample_1_secontext = SECONTEXT_FILE(sample_1); -+ -+ rc = syscall(__NR_linkat, -100, sample_1, -100, sample_2, 0); -+ /* no context printed for sample_2 since file doesn't exist yet */ -+ printf("%s%s(AT_FDCWD, \"%s\"%s, AT_FDCWD, \"%s\", 0) = %s\n", -+ my_secontext, "linkat", -+ sample_1, sample_1_secontext, -+ sample_2, -+ sprintrc(rc)); -+ -+ const char *sample_2_secontext = sample_1_secontext; -+ -+ rc = syscall(__NR_linkat, -100, sample_1, -100, sample_2, 0); -+ printf("%s%s(AT_FDCWD, \"%s\"%s, AT_FDCWD, \"%s\"%s, 0) = %s\n", -+ my_secontext, "linkat", -+ sample_1, sample_1_secontext, -+ sample_2, sample_2_secontext, -+ sprintrc(rc)); -+ -+ int fd_sample_2 = open(sample_2, O_RDONLY | O_CREAT, 0400); -+ if (fd_sample_2 < 0) -+ perror_msg_and_fail("open"); -+ if (close(fd_sample_2)) -+ perror_msg_and_fail("close"); -+ -+ free(sample_1_secontext); -+ update_secontext_type(sample_1, "default_t"); -+ sample_1_secontext = SECONTEXT_FILE(sample_1); -+ sample_2_secontext = sample_1_secontext; -+ -+ rc = syscall(__NR_linkat, -100, sample_1, -100, sample_2, 0); -+ printf("%s%s(AT_FDCWD, \"%s\"%s, AT_FDCWD, \"%s\"%s, 0) = %s\n", -+ my_secontext, "linkat", -+ sample_1, sample_1_secontext, -+ sample_2, sample_2_secontext, -+ sprintrc(rc)); -+ -+ if (unlink(sample_2)) -+ perror_msg_and_fail("unlink: %s", sample_2); -+ -+ /* -+ * Tests with dirfd. -+ */ -+ -+ int dfd_old = get_dir_fd("."); -+ char *cwd = get_fd_path(dfd_old); -+ char *dfd_old_secontext = SECONTEXT_FILE("."); -+ -+ rc = syscall(__NR_linkat, dfd_old, sample_1, -100, sample_2, 0); -+ /* no context printed for sample_2 since file doesn't exist yet */ -+ printf("%s%s(%d%s, \"%s\"%s, AT_FDCWD, \"%s\", 0) = %s\n", -+ my_secontext, "linkat", -+ dfd_old, dfd_old_secontext, -+ sample_1, sample_1_secontext, -+ sample_2, -+ sprintrc(rc)); -+ -+ rc = syscall(__NR_linkat, dfd_old, sample_1, -100, sample_2, 0); -+ printf("%s%s(%d%s, \"%s\"%s, AT_FDCWD, \"%s\"%s, 0) = %s\n", -+ my_secontext, "linkat", -+ dfd_old, dfd_old_secontext, -+ sample_1, sample_1_secontext, -+ sample_2, sample_2_secontext, -+ sprintrc(rc)); -+ -+ if (unlink(sample_2)) -+ perror_msg_and_fail("unlink: %s", sample_2); -+ -+ static const char new_dir[] = "new"; -+ char *new_sample_2 = xasprintf("%s/%s", new_dir, sample_2); -+ -+ (void) unlink(new_sample_2); -+ (void) rmdir(new_dir); -+ -+ if (mkdir(new_dir, 0700)) -+ perror_msg_and_fail("mkdir"); -+ char *new_dir_realpath = xasprintf("%s/%s", cwd, new_dir); -+ char *new_dir_secontext = SECONTEXT_FILE(new_dir); -+ int dfd_new = get_dir_fd(new_dir); -+ -+ rc = syscall(__NR_linkat, dfd_old, sample_1, dfd_new, sample_2, 0); -+ /* no context printed for sample_2 since file doesn't exist yet */ -+ printf("%s%s(%d%s, \"%s\"%s, %d%s, \"%s\", 0) = %s\n", -+ my_secontext, "linkat", -+ dfd_old, dfd_old_secontext, -+ sample_1, sample_1_secontext, -+ dfd_new, new_dir_secontext, -+ sample_2, -+ sprintrc(rc)); -+ -+ rc = syscall(__NR_linkat, dfd_old, sample_1, dfd_new, sample_2, 0); -+ printf("%s%s(%d%s, \"%s\"%s, %d%s, \"%s\"%s, 0) = %s\n", -+ my_secontext, "linkat", -+ dfd_old, dfd_old_secontext, -+ sample_1, sample_1_secontext, -+ dfd_new, new_dir_secontext, -+ sample_2, SECONTEXT_FILE(new_sample_2), -+ sprintrc(rc)); -+ -+ char *new_sample_2_realpath = xasprintf("%s/%s", new_dir_realpath, sample_2); -+ -+ /* dfd ignored when path is absolute */ -+ if (chdir("../..")) -+ perror_msg_and_fail("chdir"); -+ -+ rc = syscall(__NR_linkat, dfd_old, sample_1, -100, new_sample_2_realpath, 0); -+ printf("%s%s(%d%s, \"%s\"%s, AT_FDCWD, \"%s\"%s, 0) = %s\n", -+ my_secontext, "linkat", -+ dfd_old, dfd_old_secontext, -+ sample_1, sample_1_secontext, -+ new_sample_2_realpath, SECONTEXT_FILE(new_sample_2_realpath), -+ sprintrc(rc)); -+ -+ if (fchdir(dfd_old)) -+ perror_msg_and_fail("fchdir"); -+ -+ if (unlink(sample_1)) -+ perror_msg_and_fail("unlink: %s", sample_1); -+ if (unlink(new_sample_2)) -+ perror_msg_and_fail("unlink: %s", new_sample_2); -+ if (rmdir(new_dir)) -+ perror_msg_and_fail("rmdir: %s", new_dir); -+ - leave_and_remove_subdir(); - - puts("+++ exited with 0 +++"); -Index: strace-5.7/tests/open.c -=================================================================== ---- strace-5.7.orig/tests/open.c 2021-08-24 21:08:35.386312629 +0200 -+++ strace-5.7/tests/open.c 2021-08-24 21:08:43.264245951 +0200 -@@ -15,6 +15,8 @@ - # include - # include - -+# include "secontext.h" -+ - int - main(void) - { -@@ -25,10 +27,12 @@ - create_and_enter_subdir("open_subdir"); - - static const char sample[] = "open.sample"; -+ char *my_secontext = SECONTEXT_PID_MY(); - - long fd = syscall(__NR_open, sample, O_RDONLY|O_CREAT, 0400); -- printf("open(\"%s\", O_RDONLY|O_CREAT, 0400) = %s\n", -- sample, sprintrc(fd)); -+ printf("%s%s(\"%s\", O_RDONLY|O_CREAT, 0400) = %s%s\n", -+ my_secontext, "open", -+ sample, sprintrc(fd), SECONTEXT_FILE(sample)); - - if (fd != -1) { - close(fd); -@@ -36,16 +40,18 @@ - perror_msg_and_fail("unlink"); - - fd = syscall(__NR_open, sample, O_RDONLY); -- printf("open(\"%s\", O_RDONLY) = %s\n", sample, sprintrc(fd)); -+ printf("%s%s(\"%s\", O_RDONLY) = %s\n", -+ my_secontext, "open", sample, sprintrc(fd)); - - fd = syscall(__NR_open, sample, O_WRONLY|O_NONBLOCK|0x80000000); -- printf("open(\"%s\", O_WRONLY|O_NONBLOCK|0x80000000) = %s\n", -- sample, sprintrc(fd)); -+ printf("%s%s(\"%s\", O_WRONLY|O_NONBLOCK|0x80000000) = %s\n", -+ my_secontext, "open", sample, sprintrc(fd)); - } - - # ifdef O_TMPFILE - fd = syscall(__NR_open, sample, O_WRONLY|O_TMPFILE, 0600); -- printf("open(\"%s\", O_WRONLY|O_TMPFILE, 0600) = %s\n", -+ printf("%s%s(\"%s\", O_WRONLY|O_TMPFILE, 0600) = %s\n", -+ my_secontext, "open", - sample, sprintrc(fd)); - # endif /* O_TMPFILE */ - -Index: strace-5.7/tests/openat.c -=================================================================== ---- strace-5.7.orig/tests/openat.c 2021-08-24 21:08:35.386312629 +0200 -+++ strace-5.7/tests/openat.c 2021-08-24 21:08:43.264245951 +0200 -@@ -15,6 +15,8 @@ - # include - # include - -+# include "secontext.h" -+ - # ifdef O_TMPFILE - /* The kernel & C libraries often inline O_DIRECTORY. */ - # define STRACE_O_TMPFILE (O_TMPFILE & ~O_DIRECTORY) -@@ -26,10 +28,12 @@ - - static void - test_mode_flag(unsigned int mode_val, const char *mode_str, -- unsigned int flag_val, const char *flag_str) -+ unsigned int flag_val, const char *flag_str, -+ const char *my_secontext) - { - long rc = syscall(__NR_openat, -1, sample, mode_val | flag_val, 0); -- printf("openat(-1, \"%s\", %s%s%s%s) = %s\n", -+ printf("%s%s(-1, \"%s\", %s%s%s%s) = %s\n", -+ my_secontext, "openat", - sample, mode_str, - flag_val ? "|" : "", flag_str, - flag_val & (O_CREAT | STRACE_O_TMPFILE) ? ", 000" : "", -@@ -45,20 +49,7 @@ - */ - create_and_enter_subdir("openat_subdir"); - -- long fd = syscall(__NR_openat, -100, sample, O_RDONLY|O_CREAT, 0400); -- printf("openat(AT_FDCWD, \"%s\", O_RDONLY|O_CREAT, 0400) = %s\n", -- sample, sprintrc(fd)); -- -- if (fd != -1) { -- close(fd); -- if (unlink(sample) == -1) -- perror_msg_and_fail("unlink"); -- -- fd = syscall(__NR_openat, -100, sample, O_RDONLY); -- printf("openat(AT_FDCWD, \"%s\", O_RDONLY) = %s\n", -- sample, sprintrc(fd)); -- } -- -+ char *my_secontext = SECONTEXT_PID_MY(); - struct { - unsigned int val; - const char *str; -@@ -105,7 +96,73 @@ - for (unsigned int m = 0; m < ARRAY_SIZE(modes); ++m) - for (unsigned int f = 0; f < ARRAY_SIZE(flags); ++f) - test_mode_flag(modes[m].val, modes[m].str, -- flags[f].val, flags[f].str); -+ flags[f].val, flags[f].str, -+ my_secontext); -+ -+ /* -+ * Tests with AT_FDCWD. -+ */ -+ -+ (void) unlink(sample); -+ long fd = syscall(__NR_openat, -100, sample, O_RDONLY|O_CREAT, 0400); -+ -+ char *sample_secontext = SECONTEXT_FILE(sample); -+ -+ /* -+ * File context in openat() is not displayed because file doesn't exist -+ * yet, but is displayed in return value since the file got created. -+ */ -+ printf("%s%s(AT_FDCWD, \"%s\", O_RDONLY|O_CREAT, 0400) = %s%s\n", -+ my_secontext, "openat", -+ sample, -+ sprintrc(fd), sample_secontext); -+ -+ close(fd); -+ -+ fd = syscall(__NR_openat, -100, sample, O_RDONLY); -+ printf("%s%s(AT_FDCWD, \"%s\"%s, O_RDONLY) = %s%s\n", -+ my_secontext, "openat", -+ sample, sample_secontext, -+ sprintrc(fd), sample_secontext); -+ if (fd != -1) { -+ close(fd); -+ if (unlink(sample)) -+ perror_msg_and_fail("unlink"); -+ } -+ -+ /* -+ * Tests with dirfd. -+ */ -+ -+ int cwd_fd = get_dir_fd("."); -+ char *cwd_secontext = SECONTEXT_FILE("."); -+ -+ fd = syscall(__NR_openat, cwd_fd, sample, O_RDONLY|O_CREAT, 0400); -+ if (fd == -1) -+ perror_msg_and_fail("openat"); -+ close(fd); -+ -+ /* -+ * File context in openat() is not displayed because file doesn't exist -+ * yet, but is displayed in return value since the file got created. -+ */ -+ printf("%s%s(%d%s, \"%s\", O_RDONLY|O_CREAT, 0400) = %s%s\n", -+ my_secontext, "openat", -+ cwd_fd, cwd_secontext, -+ sample, -+ sprintrc(fd), sample_secontext); -+ -+ fd = syscall(__NR_openat, cwd_fd, sample, O_RDONLY); -+ printf("%s%s(%d%s, \"%s\"%s, O_RDONLY) = %s%s\n", -+ my_secontext, "openat", -+ cwd_fd, cwd_secontext, -+ sample, sample_secontext, -+ sprintrc(fd), sample_secontext); -+ if (fd != -1) { -+ close(fd); -+ if (unlink(sample)) -+ perror_msg_and_fail("unlink"); -+ } - - leave_and_remove_subdir(); - -Index: strace-5.7/tests/options-syntax.test -=================================================================== ---- strace-5.7.orig/tests/options-syntax.test 2021-08-24 21:08:35.386312629 +0200 -+++ strace-5.7/tests/options-syntax.test 2021-08-24 21:08:43.265245942 +0200 -@@ -2,14 +2,16 @@ - # - # Check strace options syntax. - # --# Copyright (c) 2016 Dmitry V. Levin --# Copyright (c) 2016-2020 The strace developers. -+# Copyright (c) 2016 Dmitry V. Levin -+# Copyright (c) 2016-2021 The strace developers. - # All rights reserved. - # - # SPDX-License-Identifier: GPL-2.0-or-later - - . "${srcdir=.}/syntax.sh" - -+compiled_with_secontext=$(get_config_option ENABLE_SECONTEXT "y") -+ - check_e "Invalid process id: '0'" -p 0 - check_e "Invalid process id: '0'" --attach=0 - check_e "Invalid process id: '-42'" -p -42 -@@ -46,6 +48,8 @@ - check_e '-t and --absolute-timestamps cannot be provided simultaneously' --absolute-timestamps -ttt -p $$ - check_e '-t and --absolute-timestamps cannot be provided simultaneously' -t --timestamps=ns -t -p $$ - check_e '-t and --absolute-timestamps cannot be provided simultaneously' --timestamps=ns -t --absolute-timestamps=unix -p $$ -+[ -z "$compiled_with_secontext" ] || -+ check_h "invalid --secontext argument: 'ss'" --secontext=ss - check_h 'PROG [ARGS] must be specified with -D/--daemonize' -D -p $$ - check_h 'PROG [ARGS] must be specified with -D/--daemonize' -DD -p $$ - check_h 'PROG [ARGS] must be specified with -D/--daemonize' -DDD -p $$ -@@ -281,6 +285,11 @@ - $STRACE_EXE: Only the last of -z/--successful-only/-Z/--failed-only options will take effect. See status qualifier for more complex filters. - $STRACE_EXE: $umsg" -u :nosuchuser: -cirtTyzZ true - -+ if [ -n "$compiled_with_secontext" ]; then -+ check_e "--secontext has no effect with -c/--summary-only -+$STRACE_EXE: $umsg" -u :nosuchuser: -c --secontext true -+ fi -+ - for c in --output-separately -A/--output-append-mode; do - check_e "$c has no effect without -o/--output - $STRACE_EXE: $umsg" -u :nosuchuser: ${c%%/*} true -Index: strace-5.7/tests/secontext.c -=================================================================== ---- /dev/null 1970-01-01 00:00:00.000000000 +0000 -+++ strace-5.7/tests/secontext.c 2021-08-24 21:08:43.265245942 +0200 -@@ -0,0 +1,201 @@ -+/* -+ * Copyright (c) 2021 The strace developers. -+ * All rights reserved. -+ * -+ * SPDX-License-Identifier: GPL-2.0-or-later -+ */ -+ -+#include "tests.h" -+ -+#ifdef HAVE_SELINUX_RUNTIME -+ -+# include -+# include -+# include -+# include -+# include -+# include -+ -+# include "xmalloc.h" -+ -+# define TEST_SECONTEXT -+# include "secontext.h" -+ -+static char * -+secontext_format(char *context, const char *fmt) -+ ATTRIBUTE_FORMAT((printf, 2, 0)) ATTRIBUTE_MALLOC; -+ -+static char * -+secontext_format(char *context, const char *fmt) -+{ -+ int saved_errno = errno; -+ char *res = context ? xasprintf(fmt, context) : xstrdup(""); -+ free(context); -+ errno = saved_errno; -+ return res; -+} -+ -+# define FORMAT_SPACE_BEFORE(string) secontext_format(string, " [%s]") -+# define FORMAT_SPACE_AFTER(string) secontext_format(string, "[%s] ") -+ -+static char * -+strip_trailing_newlines(char *context) -+{ -+ /* -+ * On the CI at least, the context may have a trailing \n, -+ * let's remove it just in case. -+ */ -+ size_t len = strlen(context); -+ for (; len > 0; --len) { -+ if (context[len - 1] != '\n') -+ break; -+ } -+ context[len] = '\0'; -+ return context; -+} -+ -+static char * -+raw_secontext_full_file(const char *filename) -+{ -+ int saved_errno = errno; -+ char *full_secontext = NULL; -+ char *secontext; -+ -+ if (getfilecon(filename, &secontext) >= 0) { -+ full_secontext = strip_trailing_newlines(xstrdup(secontext)); -+ freecon(secontext); -+ } -+ errno = saved_errno; -+ return full_secontext; -+} -+ -+static char * -+raw_secontext_short_file(const char *filename) -+{ -+ int saved_errno = errno; -+ -+ char *ctx = raw_secontext_full_file(filename); -+ if (ctx == NULL) -+ return ctx; -+ -+ char *saveptr = NULL; -+ const char *token; -+ unsigned int i; -+ -+ char *ctx_copy = xstrdup(ctx); -+ char *context = NULL; -+ for (token = strtok_r(ctx_copy, ":", &saveptr), i = 0; -+ token; token = strtok_r(NULL, ":", &saveptr), i++) { -+ if (i == 2) { -+ context = xstrdup(token); -+ break; -+ } -+ } -+ if (context == NULL) -+ context = xstrdup(ctx); -+ free(ctx_copy); -+ free(ctx); -+ -+ errno = saved_errno; -+ return context; -+} -+ -+static char * -+raw_secontext_full_pid(pid_t pid) -+{ -+ int saved_errno = errno; -+ char *full_secontext = NULL; -+ char *secontext; -+ -+ if (getpidcon(pid, &secontext) == 0) { -+ full_secontext = strip_trailing_newlines(xstrdup(secontext)); -+ freecon(secontext); -+ } -+ errno = saved_errno; -+ return full_secontext; -+} -+ -+static char * -+raw_secontext_short_pid(pid_t pid) -+{ -+ int saved_errno = errno; -+ -+ char *ctx = raw_secontext_full_pid(pid); -+ if (ctx == NULL) -+ return ctx; -+ -+ char *saveptr = NULL; -+ const char *token; -+ int i; -+ -+ char *ctx_copy = xstrdup(ctx); -+ char *context = NULL; -+ for (token = strtok_r(ctx_copy, ":", &saveptr), i = 0; -+ token; token = strtok_r(NULL, ":", &saveptr), i++) { -+ if (i == 2) { -+ context = xstrdup(token); -+ break; -+ } -+ } -+ if (context == NULL) -+ context = xstrdup(ctx); -+ free(ctx_copy); -+ free(ctx); -+ -+ errno = saved_errno; -+ return context; -+} -+ -+char * -+secontext_full_file(const char *filename) -+{ -+ return FORMAT_SPACE_BEFORE(raw_secontext_full_file(filename)); -+} -+ -+char * -+secontext_full_pid(pid_t pid) -+{ -+ return FORMAT_SPACE_AFTER(raw_secontext_full_pid(pid)); -+} -+ -+char * -+secontext_short_file(const char *filename) -+{ -+ return FORMAT_SPACE_BEFORE(raw_secontext_short_file(filename)); -+} -+ -+char * -+secontext_short_pid(pid_t pid) -+{ -+ return FORMAT_SPACE_AFTER(raw_secontext_short_pid(pid)); -+} -+ -+void -+update_secontext_type(const char *file, const char *newtype) -+{ -+ char *ctx = raw_secontext_full_file(file); -+ if (ctx == NULL) -+ return; -+ -+ char *saveptr = NULL; -+ char *token; -+ int field; -+ char *split[4]; -+ -+ for (token = strtok_r(ctx, ":", &saveptr), field = 0; -+ token; token = strtok_r(NULL, ":", &saveptr), field++) { -+ assert(field < 4); -+ split[field] = token; -+ } -+ assert(field == 4); -+ -+ char *newcontext = xasprintf("%s:%s:%s:%s", split[0], split[1], -+ newtype, split[3]); -+ -+ (void) setfilecon(file, newcontext); -+ -+ free(newcontext); -+ free(ctx); -+} -+ -+#endif /* HAVE_SELINUX_RUNTIME */ -Index: strace-5.7/tests/secontext.h -=================================================================== ---- /dev/null 1970-01-01 00:00:00.000000000 +0000 -+++ strace-5.7/tests/secontext.h 2021-08-24 21:08:43.265245942 +0200 -@@ -0,0 +1,46 @@ -+/* -+ * Copyright (c) 2021 The strace developers. -+ * All rights reserved. -+ * -+ * SPDX-License-Identifier: GPL-2.0-or-later -+ */ -+ -+#include "tests.h" -+#include "xmalloc.h" -+#include -+ -+#if defined TEST_SECONTEXT && defined HAVE_SELINUX_RUNTIME -+ -+void update_secontext_type(const char *file, const char *newtype); -+ -+# ifdef PRINT_SECONTEXT_FULL -+ -+char *secontext_full_file(const char *) ATTRIBUTE_MALLOC; -+char *secontext_full_pid(pid_t) ATTRIBUTE_MALLOC; -+ -+# define SECONTEXT_FILE(filename) secontext_full_file(filename) -+# define SECONTEXT_PID(pid) secontext_full_pid(pid) -+ -+# else -+ -+char *secontext_short_file(const char *) ATTRIBUTE_MALLOC; -+char *secontext_short_pid(pid_t) ATTRIBUTE_MALLOC; -+ -+# define SECONTEXT_FILE(filename) secontext_short_file(filename) -+# define SECONTEXT_PID(pid) secontext_short_pid(pid) -+ -+# endif -+ -+#else -+ -+static inline void -+update_secontext_type(const char *file, const char *newtype) -+{ -+} -+ -+# define SECONTEXT_FILE(filename) xstrdup("") -+# define SECONTEXT_PID(pid) xstrdup("") -+ -+#endif -+ -+#define SECONTEXT_PID_MY() SECONTEXT_PID(getpid()) -Index: strace-5.7/tests/strace-V.test -=================================================================== ---- strace-5.7.orig/tests/strace-V.test 2021-08-24 21:08:35.387312620 +0200 -+++ strace-5.7/tests/strace-V.test 2021-08-24 21:08:43.266245934 +0200 -@@ -33,7 +33,9 @@ - ;; - esac - --features="${option_unwind}${option_demangle}${option_m32}${option_mx32}" -+option_secontext=$(get_config_option ENABLE_SECONTEXT " secontext") -+ -+features="${option_unwind}${option_demangle}${option_m32}${option_mx32}${option_secontext}" - [ -n "$features" ] || features=" (none)" - - cat > "$EXP" << __EOF__ -Index: strace-5.7/tests-m32/Makefile.am -=================================================================== ---- strace-5.7.orig/tests-m32/Makefile.am 2021-08-24 21:08:35.387312620 +0200 -+++ strace-5.7/tests-m32/Makefile.am 2021-08-24 21:08:43.266245934 +0200 -@@ -28,6 +28,12 @@ - -DTESTS_SIZEOF_LONG=$(SIZEOF_LONG) - AM_LDFLAGS = $(ARCH_MFLAGS) - -+if HAVE_SELINUX_RUNTIME -+libselinux_LDADD = $(libselinux_LIBS) -+else -+libselinux_LDADD = -+endif -+ - libtests_a_SOURCES = \ - create_nl_socket.c \ - create_tmpfile.c \ -@@ -54,6 +60,8 @@ - printxval-Xabbrev.c \ - printxval-Xraw.c \ - printxval-Xverbose.c \ -+ secontext.c \ -+ secontext.h \ - signal2name.c \ - skip_unavailable.c \ - sprintrc.c \ -@@ -76,7 +84,10 @@ - - include pure_executables.am - -+include secontext.am -+ - check_PROGRAMS = $(PURE_EXECUTABLES) \ -+ $(secontext_EXECUTABLES) \ - _newselect-P \ - answer \ - attach-f-p \ -Index: strace-5.7/tests-m32/access.c -=================================================================== ---- strace-5.7.orig/tests-m32/access.c 2021-08-24 21:08:35.387312620 +0200 -+++ strace-5.7/tests-m32/access.c 2021-08-24 21:08:43.266245934 +0200 -@@ -10,9 +10,12 @@ - - #ifdef __NR_access - -+# include - # include - # include - -+# include "secontext.h" -+ - int - main(void) - { -@@ -22,15 +25,27 @@ - */ - create_and_enter_subdir("access_subdir"); - -+ char *my_secontext = SECONTEXT_PID_MY(); -+ - static const char sample[] = "access_sample"; -+ (void) unlink(sample); -+ if (open(sample, O_CREAT|O_RDONLY, 0400) == -1) -+ perror_msg_and_fail("open: %s", sample); - - long rc = syscall(__NR_access, sample, F_OK); -- printf("access(\"%s\", F_OK) = %ld %s (%m)\n", -- sample, rc, errno2name()); -+ printf("%s%s(\"%s\"%s, F_OK) = %s\n", -+ my_secontext, "access", -+ sample, SECONTEXT_FILE(sample), -+ sprintrc(rc)); -+ -+ if (unlink(sample)) -+ perror_msg_and_fail("unlink: %s", sample); - - rc = syscall(__NR_access, sample, R_OK|W_OK|X_OK); -- printf("access(\"%s\", R_OK|W_OK|X_OK) = %ld %s (%m)\n", -- sample, rc, errno2name()); -+ printf("%s%s(\"%s\", R_OK|W_OK|X_OK) = %s\n", -+ my_secontext, "access", -+ sample, -+ sprintrc(rc)); - - leave_and_remove_subdir(); - -Index: strace-5.7/tests-m32/chmod.c -=================================================================== ---- strace-5.7.orig/tests-m32/chmod.c 2021-08-24 21:08:35.387312620 +0200 -+++ strace-5.7/tests-m32/chmod.c 2021-08-24 21:08:43.267245925 +0200 -@@ -16,6 +16,8 @@ - # include - # include - -+# include "secontext.h" -+ - int - main(void) - { -@@ -25,22 +27,33 @@ - */ - create_and_enter_subdir("chmod_subdir"); - -- static const char fname[] = "chmod_test_file"; -- -- if (open(fname, O_CREAT|O_RDONLY, 0400) < 0) -- perror_msg_and_fail("open"); -- -- long rc = syscall(__NR_chmod, fname, 0600); -- printf("chmod(\"%s\", 0600) = %s\n", fname, sprintrc(rc)); -- -- if (unlink(fname)) -- perror_msg_and_fail("unlink"); -- -- rc = syscall(__NR_chmod, fname, 051); -- printf("chmod(\"%s\", 051) = %s\n", fname, sprintrc(rc)); -+ char *my_secontext = SECONTEXT_PID_MY(); - -- rc = syscall(__NR_chmod, fname, 004); -- printf("chmod(\"%s\", 004) = %s\n", fname, sprintrc(rc)); -+ static const char sample[] = "chmod_test_file"; -+ (void) unlink(sample); -+ if (open(sample, O_CREAT|O_RDONLY, 0400) < 0) -+ perror_msg_and_fail("open: %s", sample); -+ -+ long rc = syscall(__NR_chmod, sample, 0600); -+ printf("%s%s(\"%s\"%s, 0600) = %s\n", -+ my_secontext, "chmod", -+ sample, SECONTEXT_FILE(sample), -+ sprintrc(rc)); -+ -+ if (unlink(sample)) -+ perror_msg_and_fail("unlink: %s", sample); -+ -+ rc = syscall(__NR_chmod, sample, 051); -+ printf("%s%s(\"%s\", 051) = %s\n", -+ my_secontext, "chmod", -+ sample, -+ sprintrc(rc)); -+ -+ rc = syscall(__NR_chmod, sample, 004); -+ printf("%s%s(\"%s\", 004) = %s\n", -+ my_secontext, "chmod", -+ sample, -+ sprintrc(rc)); - - leave_and_remove_subdir(); - -Index: strace-5.7/tests-m32/execve.c -=================================================================== ---- strace-5.7.orig/tests-m32/execve.c 2021-08-24 21:08:35.388312612 +0200 -+++ strace-5.7/tests-m32/execve.c 2021-08-24 21:08:43.267245925 +0200 -@@ -9,9 +9,12 @@ - */ - - #include "tests.h" -+#include - #include - #include - -+#include "secontext.h" -+ - static const char *errstr; - - static int -@@ -52,9 +55,16 @@ - - char ** const tail_argv = tail_memdup(argv, sizeof(argv)); - char ** const tail_envp = tail_memdup(envp, sizeof(envp)); -+ char *my_secontext = SECONTEXT_PID_MY(); -+ -+ (void) unlink(FILENAME); -+ if (open(FILENAME, O_RDONLY | O_CREAT, 0400) < 0) -+ perror_msg_and_fail("open"); -+ -+ char *FILENAME_secontext = SECONTEXT_FILE(FILENAME); - - call_execve(FILENAME, tail_argv, tail_envp); -- printf("execve(\"%s\"" -+ printf("%s%s(\"%s\"%s" - ", [\"%s\", \"%s\", \"%s\", %p, %p, %p, ... /* %p */]" - #if VERBOSE - ", [\"%s\", \"%s\", %p, %p, %p, ... /* %p */]" -@@ -62,7 +72,9 @@ - ", %p /* 5 vars, unterminated */" - #endif - ") = %s\n", -- Q_FILENAME, q_argv[0], q_argv[1], q_argv[2], -+ my_secontext, "execve", -+ Q_FILENAME, FILENAME_secontext, -+ q_argv[0], q_argv[1], q_argv[2], - argv[3], argv[4], argv[5], (char *) tail_argv + sizeof(argv) - #if VERBOSE - , q_envp[0], q_envp[1], envp[2], envp[3], envp[4], -@@ -77,14 +89,16 @@ - (void) q_envp; /* workaround for clang bug #33068 */ - - call_execve(FILENAME, tail_argv, tail_envp); -- printf("execve(\"%s\", [\"%s\", \"%s\", \"%s\"]" -+ printf("%s%s(\"%s\"%s, [\"%s\", \"%s\", \"%s\"]" - #if VERBOSE - ", [\"%s\", \"%s\"]" - #else - ", %p /* 2 vars */" - #endif - ") = %s\n", -- Q_FILENAME, q_argv[0], q_argv[1], q_argv[2] -+ my_secontext, "execve", -+ Q_FILENAME, FILENAME_secontext, -+ q_argv[0], q_argv[1], q_argv[2] - #if VERBOSE - , q_envp[0], q_envp[1] - #else -@@ -93,14 +107,16 @@ - , errstr); - - call_execve(FILENAME, tail_argv + 2, tail_envp + 1); -- printf("execve(\"%s\", [\"%s\"]" -+ printf("%s%s(\"%s\"%s, [\"%s\"]" - #if VERBOSE - ", [\"%s\"]" - #else - ", %p /* 1 var */" - #endif - ") = %s\n", -- Q_FILENAME, q_argv[2] -+ my_secontext, "execve", -+ Q_FILENAME, FILENAME_secontext, -+ q_argv[2] - #if VERBOSE - , q_envp[1] - #else -@@ -113,13 +129,15 @@ - *empty = NULL; - - call_execve(FILENAME, empty, empty); -- printf("execve(\"%s\", []" -+ printf("%s%s(\"%s\"%s, []" - #if VERBOSE - ", []" - #else - ", %p /* 0 vars */" - #endif -- ") = %s\n", Q_FILENAME -+ ") = %s\n", -+ my_secontext, "execve", -+ Q_FILENAME, FILENAME_secontext - #if !VERBOSE - , empty - #endif -@@ -143,7 +161,10 @@ - a[i] = b[i] = NULL; - - call_execve(FILENAME, a, b); -- printf("execve(\"%s\", [\"%.*s\"...", Q_FILENAME, DEFAULT_STRLEN, a[0]); -+ printf("%s%s(\"%s\"%s, [\"%.*s\"...", -+ my_secontext, "execve", -+ Q_FILENAME, FILENAME_secontext, -+ DEFAULT_STRLEN, a[0]); - for (i = 1; i < DEFAULT_STRLEN; ++i) - printf(", \"%s\"", a[i]); - #if VERBOSE -@@ -162,7 +183,10 @@ - printf(") = %s\n", errstr); - - call_execve(FILENAME, a + 1, b + 1); -- printf("execve(\"%s\", [\"%s\"", Q_FILENAME, a[1]); -+ printf("%s%s(\"%s\"%s, [\"%s\"", -+ my_secontext, "execve", -+ Q_FILENAME, FILENAME_secontext, -+ a[1]); - for (i = 2; i <= DEFAULT_STRLEN; ++i) - printf(", \"%s\"", a[i]); - #if VERBOSE -@@ -175,12 +199,17 @@ - #endif - printf(") = %s\n", errstr); - -+ if (unlink(FILENAME)) -+ perror_msg_and_fail("unlink"); -+ - call_execve(FILENAME, (char **) tail_argv[ARRAY_SIZE(q_argv)], efault); -- printf("execve(\"%s\", NULL, %p) = %s\n", -+ printf("%s%s(\"%s\", NULL, %p) = %s\n", -+ my_secontext, "execve", - Q_FILENAME, efault, errstr); - - call_execve(FILENAME, efault, NULL); -- printf("execve(\"%s\", %p, NULL) = %s\n", -+ printf("%s%s(\"%s\", %p, NULL) = %s\n", -+ my_secontext, "execve", - Q_FILENAME, efault, errstr); - - leave_and_remove_subdir(); -Index: strace-5.7/tests-m32/execve.test -=================================================================== ---- strace-5.7.orig/tests-m32/execve.test 2021-08-24 21:08:35.388312612 +0200 -+++ strace-5.7/tests-m32/execve.test 2021-08-24 21:08:43.268245917 +0200 -@@ -11,7 +11,7 @@ - - check_prog grep - run_prog > /dev/null --run_strace -eexecve $args > "$EXP" -+run_strace -eexecve "$@" $args > "$EXP" - - # Filter out execve() call made by strace. - grep -F test.execve < "$LOG" > "$OUT" -Index: strace-5.7/tests-m32/execveat.c -=================================================================== ---- strace-5.7.orig/tests-m32/execveat.c 2021-08-24 21:08:35.388312612 +0200 -+++ strace-5.7/tests-m32/execveat.c 2021-08-24 21:08:43.268245917 +0200 -@@ -13,9 +13,102 @@ - - #ifdef __NR_execveat - -+# include - # include - # include - -+# include "secontext.h" -+ -+static void -+tests_with_existing_file(void) -+{ -+ /* -+ * Make sure the current workdir of the tracee -+ * is different from the current workdir of the tracer. -+ */ -+ create_and_enter_subdir("execveat_subdir"); -+ -+ char *my_secontext = SECONTEXT_PID_MY(); -+ -+ static const char sample[] = "execveat_sample"; -+ (void) unlink(sample); -+ if (open(sample, O_RDONLY | O_CREAT, 0400) < 0) -+ perror_msg_and_fail("open"); -+ -+ char *sample_secontext = SECONTEXT_FILE(sample); -+ static const char *argv[] = { sample, NULL }; -+ -+ /* -+ * Tests with AT_FDCWD. -+ */ -+ -+ long rc = syscall(__NR_execveat, -100, sample, argv, NULL, 0); -+ printf("%s%s(AT_FDCWD, \"%s\"%s, [\"%s\"], NULL, 0) = %s\n", -+ my_secontext, "execveat", -+ sample, sample_secontext, -+ argv[0], -+ sprintrc(rc)); -+ -+ if (unlink(sample)) -+ perror_msg_and_fail("unlink"); -+ -+ rc = syscall(__NR_execveat, -100, sample, argv, NULL, 0); -+ printf("%s%s(AT_FDCWD, \"%s\", [\"%s\"], NULL, 0) = %s\n", -+ my_secontext, "execveat", -+ sample, -+ argv[0], -+ sprintrc(rc)); -+ -+ /* -+ * Tests with dirfd. -+ */ -+ -+ int cwd_fd = get_dir_fd("."); -+ char *cwd = get_fd_path(cwd_fd); -+ char *cwd_secontext = SECONTEXT_FILE("."); -+ char *sample_realpath = xasprintf("%s/%s", cwd, sample); -+ -+ /* no file */ -+ rc = syscall(__NR_execveat, cwd_fd, sample, argv, NULL, 0); -+ printf("%s%s(%d%s, \"%s\", [\"%s\"], NULL, 0) = %s\n", -+ my_secontext, "execveat", -+ cwd_fd, cwd_secontext, -+ sample, -+ argv[0], -+ sprintrc(rc)); -+ -+ if (open(sample, O_RDONLY | O_CREAT, 0400) < 0) -+ perror_msg_and_fail("open"); -+ -+ rc = syscall(__NR_execveat, cwd_fd, sample, argv, NULL, 0); -+ printf("%s%s(%d%s, \"%s\"%s, [\"%s\"], NULL, 0) = %s\n", -+ my_secontext, "execveat", -+ cwd_fd, cwd_secontext, -+ sample, sample_secontext, -+ argv[0], -+ sprintrc(rc)); -+ -+ /* cwd_fd ignored when path is absolute */ -+ if (chdir("../..")) -+ perror_msg_and_fail("chdir"); -+ -+ rc = syscall(__NR_execveat, cwd_fd, sample_realpath, argv, NULL, 0); -+ printf("%s%s(%d%s, \"%s\"%s, [\"%s\"], NULL, 0) = %s\n", -+ my_secontext, "execveat", -+ cwd_fd, cwd_secontext, -+ sample_realpath, sample_secontext, -+ argv[0], -+ sprintrc(rc)); -+ -+ if (fchdir(cwd_fd)) -+ perror_msg_and_fail("fchdir"); -+ -+ if (unlink(sample)) -+ perror_msg_and_fail("unlink"); -+ -+ leave_and_remove_subdir(); -+} -+ - # define FILENAME "test.execveat\nfilename" - # define Q_FILENAME "test.execveat\\nfilename" - -@@ -40,9 +133,10 @@ - { - const char ** const tail_argv = tail_memdup(argv, sizeof(argv)); - const char ** const tail_envp = tail_memdup(envp, sizeof(envp)); -+ char *my_secontext = SECONTEXT_PID_MY(); - - syscall(__NR_execveat, -100, FILENAME, tail_argv, tail_envp, 0x1100); -- printf("execveat(AT_FDCWD, \"%s\"" -+ printf("%s%s(AT_FDCWD, \"%s\"" - ", [\"%s\", \"%s\", \"%s\", %p, %p, %p, ... /* %p */]" - # if VERBOSE - ", [\"%s\", \"%s\", %p, %p, %p, ... /* %p */]" -@@ -50,6 +144,7 @@ - ", %p /* 5 vars, unterminated */" - # endif - ", AT_SYMLINK_NOFOLLOW|AT_EMPTY_PATH) = -1 %s (%m)\n", -+ my_secontext, "execveat", - Q_FILENAME, q_argv[0], q_argv[1], q_argv[2], - argv[3], argv[4], argv[5], (char *) tail_argv + sizeof(argv), - # if VERBOSE -@@ -65,13 +160,14 @@ - (void) q_envp; /* workaround for clang bug #33068 */ - - syscall(__NR_execveat, -100, FILENAME, tail_argv, tail_envp, 0x1100); -- printf("execveat(AT_FDCWD, \"%s\", [\"%s\", \"%s\", \"%s\"]" -+ printf("%s%s(AT_FDCWD, \"%s\", [\"%s\", \"%s\", \"%s\"]" - # if VERBOSE - ", [\"%s\", \"%s\"]" - # else - ", %p /* 2 vars */" - # endif - ", AT_SYMLINK_NOFOLLOW|AT_EMPTY_PATH) = -1 %s (%m)\n", -+ my_secontext, "execveat", - Q_FILENAME, q_argv[0], q_argv[1], q_argv[2], - # if VERBOSE - q_envp[0], q_envp[1], -@@ -81,13 +177,14 @@ - errno2name()); - - syscall(__NR_execveat, -100, FILENAME, tail_argv + 2, tail_envp + 1, 0x1100); -- printf("execveat(AT_FDCWD, \"%s\", [\"%s\"]" -+ printf("%s%s(AT_FDCWD, \"%s\", [\"%s\"]" - # if VERBOSE - ", [\"%s\"]" - # else - ", %p /* 1 var */" - # endif - ", AT_SYMLINK_NOFOLLOW|AT_EMPTY_PATH) = -1 %s (%m)\n", -+ my_secontext, "execveat", - Q_FILENAME, q_argv[2], - # if VERBOSE - q_envp[1], -@@ -101,13 +198,14 @@ - *empty = NULL; - - syscall(__NR_execveat, -100, FILENAME, empty, empty, 0x1100); -- printf("execveat(AT_FDCWD, \"%s\", []" -+ printf("%s%s(AT_FDCWD, \"%s\", []" - # if VERBOSE - ", []" - # else - ", %p /* 0 vars */" - # endif - ", AT_SYMLINK_NOFOLLOW|AT_EMPTY_PATH) = -1 %s (%m)\n", -+ my_secontext, "execveat", - Q_FILENAME, - # if !VERBOSE - empty, -@@ -132,7 +230,9 @@ - a[i] = b[i] = NULL; - - syscall(__NR_execveat, -100, FILENAME, a, b, 0x1100); -- printf("execveat(AT_FDCWD, \"%s\", [\"%.*s\"...", Q_FILENAME, DEFAULT_STRLEN, a[0]); -+ printf("%s%s(AT_FDCWD, \"%s\", [\"%.*s\"...", -+ my_secontext, "execveat", -+ Q_FILENAME, DEFAULT_STRLEN, a[0]); - for (i = 1; i < DEFAULT_STRLEN; ++i) - printf(", \"%s\"", a[i]); - # if VERBOSE -@@ -152,7 +252,9 @@ - errno2name()); - - syscall(__NR_execveat, -100, FILENAME, a + 1, b + 1, 0x1100); -- printf("execveat(AT_FDCWD, \"%s\", [\"%s\"", Q_FILENAME, a[1]); -+ printf("%s%s(AT_FDCWD, \"%s\", [\"%s\"", -+ my_secontext, "execveat", -+ Q_FILENAME, a[1]); - for (i = 2; i <= DEFAULT_STRLEN; ++i) - printf(", \"%s\"", a[i]); - # if VERBOSE -@@ -167,15 +269,19 @@ - errno2name()); - - syscall(__NR_execveat, -100, FILENAME, NULL, efault, 0x1100); -- printf("execveat(AT_FDCWD, \"%s\", NULL, %p" -+ printf("%s%s(AT_FDCWD, \"%s\", NULL, %p" - ", AT_SYMLINK_NOFOLLOW|AT_EMPTY_PATH) = -1 %s (%m)\n", -+ my_secontext, "execveat", - Q_FILENAME, efault, errno2name()); - - syscall(__NR_execveat, -100, FILENAME, efault, NULL, 0x1100); -- printf("execveat(AT_FDCWD, \"%s\", %p, NULL" -+ printf("%s%s(AT_FDCWD, \"%s\", %p, NULL" - ", AT_SYMLINK_NOFOLLOW|AT_EMPTY_PATH) = -1 %s (%m)\n", -+ my_secontext, "execveat", - Q_FILENAME, efault, errno2name()); - -+ tests_with_existing_file(); -+ - puts("+++ exited with 0 +++"); - return 0; - } -Index: strace-5.7/tests-m32/faccessat.c -=================================================================== ---- strace-5.7.orig/tests-m32/faccessat.c 2021-08-24 21:08:35.389312604 +0200 -+++ strace-5.7/tests-m32/faccessat.c 2021-08-24 21:08:43.269245908 +0200 -@@ -12,12 +12,16 @@ - - #ifdef __NR_faccessat - --# include "xmalloc.h" - # include - # include - # include - --# ifndef FD_PATH -+# include "secontext.h" -+# include "xmalloc.h" -+ -+# ifdef FD_PATH -+# define YFLAG -+# else - # define FD_PATH "" - # endif - # ifndef SKIP_IF_PROC_IS_UNAVAILABLE -@@ -43,11 +47,130 @@ - return rc; - } - -+# ifndef PATH_TRACING -+static void -+tests_with_existing_file(void) -+{ -+ /* -+ * Make sure the current workdir of the tracee -+ * is different from the current workdir of the tracer. -+ */ -+ create_and_enter_subdir("faccessat_subdir"); -+ -+ char *my_secontext = SECONTEXT_PID_MY(); -+ -+ k_faccessat(-1, NULL, F_OK); -+ printf("%s%s(-1, NULL, F_OK) = %s\n", -+ my_secontext, "faccessat", errstr); -+ -+ static const char sample[] = "faccessat_sample"; -+ (void) unlink(sample); -+ int fd = open(sample, O_CREAT|O_RDONLY, 0400); -+ if (fd == -1) -+ perror_msg_and_fail("open"); -+ close(fd); -+ char *sample_secontext = SECONTEXT_FILE(sample); -+ -+ /* -+ * Tests with AT_FDCWD. -+ */ -+ -+ k_faccessat(-100, sample, F_OK); -+ printf("%s%s(AT_FDCWD, \"%s\"%s, F_OK) = %s\n", -+ my_secontext, "faccessat", -+ sample, sample_secontext, -+ errstr); -+ -+ if (unlink(sample)) -+ perror_msg_and_fail("unlink"); -+ -+ k_faccessat(-100, sample, F_OK); -+ printf("%s%s(AT_FDCWD, \"%s\", F_OK) = %s\n", -+ my_secontext, "faccessat", -+ sample, -+ errstr); -+ -+ /* -+ * Tests with dirfd. -+ */ -+ -+ int cwd_fd = get_dir_fd("."); -+ char *cwd = get_fd_path(cwd_fd); -+ char *cwd_secontext = SECONTEXT_FILE("."); -+ char *sample_realpath = xasprintf("%s/%s", cwd, sample); -+ -+ /* no file */ -+ k_faccessat(cwd_fd, sample, F_OK); -+# ifdef YFLAG -+ printf("%s%s(%d<%s>%s, \"%s\", F_OK) = %s\n", -+# else -+ printf("%s%s(%d%s, \"%s\", F_OK) = %s\n", -+# endif -+ my_secontext, "faccessat", -+ cwd_fd, -+# ifdef YFLAG -+ cwd, -+# endif -+ cwd_secontext, -+ sample, -+ errstr); -+ -+ fd = open(sample, O_CREAT|O_RDONLY, 0400); -+ if (fd == -1) -+ perror_msg_and_fail("open"); -+ close(fd); -+ -+ k_faccessat(cwd_fd, sample, F_OK); -+# ifdef YFLAG -+ printf("%s%s(%d<%s>%s, \"%s\"%s, F_OK) = %s\n", -+# else -+ printf("%s%s(%d%s, \"%s\"%s, F_OK) = %s\n", -+# endif -+ my_secontext, "faccessat", -+ cwd_fd, -+# ifdef YFLAG -+ cwd, -+# endif -+ cwd_secontext, -+ sample, sample_secontext, -+ errstr); -+ -+ /* cwd_fd ignored when path is absolute */ -+ if (chdir("../..")) -+ perror_msg_and_fail("chdir"); -+ -+ k_faccessat(cwd_fd, sample_realpath, F_OK); -+# ifdef YFLAG -+ printf("%s%s(%d<%s>%s, \"%s\"%s, F_OK) = %s\n", -+# else -+ printf("%s%s(%d%s, \"%s\"%s, F_OK) = %s\n", -+# endif -+ my_secontext, "faccessat", -+ cwd_fd, -+# ifdef YFLAG -+ cwd, -+# endif -+ cwd_secontext, -+ sample_realpath, sample_secontext, -+ errstr); -+ -+ if (fchdir(cwd_fd)) -+ perror_msg_and_fail("fchdir"); -+ -+ if (unlink(sample)) -+ perror_msg_and_fail("unlink"); -+ -+ leave_and_remove_subdir(); -+} -+# endif -+ - int - main(void) - { - SKIP_IF_PROC_IS_UNAVAILABLE; - -+# ifndef TEST_SECONTEXT -+ - TAIL_ALLOC_OBJECT_CONST_PTR(const char, unterminated); - char *unterminated_str = xasprintf("%p", unterminated); - const void *const efault = unterminated + 1; -@@ -120,10 +243,10 @@ - k_faccessat(dirfds[dirfd_i].val, - paths[path_i].val, - modes[mode_i].val); --# ifdef PATH_TRACING -+# ifdef PATH_TRACING - if (dirfds[dirfd_i].val == fd || - paths[path_i].val == fd_path) --# endif -+# endif - printf("faccessat(%s, %s, %s) = %s\n", - dirfds[dirfd_i].str, - paths[path_i].str, -@@ -133,6 +256,12 @@ - } - } - -+# endif /* !TEST_SECONTEXT */ -+ -+# ifndef PATH_TRACING -+ tests_with_existing_file(); -+# endif -+ - puts("+++ exited with 0 +++"); - return 0; - } -Index: strace-5.7/tests-m32/faccessat.test -=================================================================== ---- strace-5.7.orig/tests-m32/faccessat.test 2021-08-24 21:08:35.389312604 +0200 -+++ strace-5.7/tests-m32/faccessat.test 2021-08-24 21:08:43.269245908 +0200 -@@ -15,5 +15,5 @@ - run_strace -a23 --trace=faccessat "$@" $args > "$EXP" - - # Filter out faccessat() calls made by ld.so and libc. --sed -n '/^faccessat(-1, NULL,/,$p' < "$LOG" > "$OUT" -+sed -n '/faccessat(-1, NULL,/,$p' < "$LOG" > "$OUT" - match_diff "$OUT" "$EXP" -Index: strace-5.7/tests-m32/fanotify_mark.c -=================================================================== ---- strace-5.7.orig/tests-m32/fanotify_mark.c 2021-08-24 21:07:01.122112055 +0200 -+++ strace-5.7/tests-m32/fanotify_mark.c 2021-08-24 21:08:43.269245908 +0200 -@@ -3,7 +3,7 @@ - * - * Copyright (c) 2015-2016 Dmitry V. Levin - * Copyright (c) 2016 Eugene Syromyatnikov -- * Copyright (c) 2015-2020 The strace developers. -+ * Copyright (c) 2015-2021 The strace developers. - * All rights reserved. - * - * SPDX-License-Identifier: GPL-2.0-or-later -@@ -21,6 +21,8 @@ - # include - # include - -+# include "secontext.h" -+ - # if XLAT_RAW - # define str_fan_mark_add "0x1" - # define str_fan_modify_ondir "0x40000002" -@@ -35,6 +37,7 @@ - # define str_at_fdcwd "AT_FDCWD" - # endif - -+# ifndef TEST_SECONTEXT - /* Performs fanotify_mark call via the syscall interface. */ - static void - do_call(kernel_ulong_t fd, kernel_ulong_t flags, const char *flags_str, -@@ -44,18 +47,18 @@ - long rc; - - rc = syscall(__NR_fanotify_mark, fd, flags, --# if (LONG_MAX > INT_MAX) \ -- || (defined __x86_64__ && defined __ILP32__) \ -- || defined LINUX_MIPSN32 -+# if (LONG_MAX > INT_MAX) \ -+ || (defined __x86_64__ && defined __ILP32__) \ -+ || defined LINUX_MIPSN32 - mask, --# else -+# else - /* arch/parisc/kernel/sys_parisc32.c, commit ab8a261b */ --# ifdef HPPA -+# ifdef HPPA - LL_VAL_TO_PAIR((mask << 32) | (mask >> 32)), --# else -+# else - LL_VAL_TO_PAIR(mask), -+# endif - # endif --# endif - dirfd, path); - - printf("fanotify_mark(%d, %s, %s, %s, %s) = %s\n", -@@ -68,12 +71,14 @@ - const char *str; - }; - --# define STR16 "0123456789abcdef" --# define STR64 STR16 STR16 STR16 STR16 -+# define STR16 "0123456789abcdef" -+# define STR64 STR16 STR16 STR16 STR16 -+# endif /* !TEST_SECONTEXT */ - - int - main(void) - { -+# ifndef TEST_SECONTEXT - enum { - PATH1_SIZE = 64, - }; -@@ -87,47 +92,47 @@ - { F8ILL_KULONG_MASK, "0" }, - { (kernel_ulong_t) 0xdec0deddefacec00ULL, - "0xefacec00" --# if !XLAT_RAW -+# if !XLAT_RAW - " /* FAN_MARK_??? */" --# endif -+# endif - }, - { (kernel_ulong_t) 0xda7a105700000040ULL, --# if XLAT_RAW -+# if XLAT_RAW - "0x40" --# elif XLAT_VERBOSE -+# elif XLAT_VERBOSE - "0x40 /* FAN_MARK_IGNORED_SURV_MODIFY */" --# else -+# else - "FAN_MARK_IGNORED_SURV_MODIFY" --# endif -+# endif - }, - { (kernel_ulong_t) 0xbadc0deddeadffffULL, --# if XLAT_RAW || XLAT_VERBOSE -+# if XLAT_RAW || XLAT_VERBOSE - "0xdeadffff" --# endif --# if XLAT_VERBOSE -+# endif -+# if XLAT_VERBOSE - " /* " --# endif --# if !XLAT_RAW -+# endif -+# if !XLAT_RAW - "FAN_MARK_ADD|FAN_MARK_REMOVE|FAN_MARK_DONT_FOLLOW|" - "FAN_MARK_ONLYDIR|FAN_MARK_MOUNT|FAN_MARK_IGNORED_MASK|" - "FAN_MARK_IGNORED_SURV_MODIFY|FAN_MARK_FLUSH|" - "FAN_MARK_FILESYSTEM|0xdeadfe00" --# endif --# if XLAT_VERBOSE -+# endif -+# if XLAT_VERBOSE - " */" --# endif -+# endif - }, - }; - static const struct strval64 masks[] = { - { ARG_ULL_STR(0) }, - { 0xdeadfeedffffffffULL, --# if XLAT_RAW || XLAT_VERBOSE -+# if XLAT_RAW || XLAT_VERBOSE - "0xdeadfeedffffffff" --# endif --# if XLAT_VERBOSE -+# endif -+# if XLAT_VERBOSE - " /* " --# endif --# if !XLAT_RAW -+# endif -+# if !XLAT_RAW - "FAN_ACCESS|" - "FAN_MODIFY|" - "FAN_ATTRIB|" -@@ -149,27 +154,27 @@ - "FAN_ONDIR|" - "FAN_EVENT_ON_CHILD|" - "0xdeadfeedb7f0a000" --# endif --# if XLAT_VERBOSE -+# endif -+# if XLAT_VERBOSE - " */" --# endif -+# endif - }, - { ARG_ULL_STR(0xffffffffb7f0a000) --# if !XLAT_RAW -+# if !XLAT_RAW - " /* FAN_??? */" --# endif -+# endif - }, - }; - static const struct strval dirfds[] = { - { (kernel_ulong_t) 0xfacefeed00000001ULL, "1" }, - { (kernel_ulong_t) 0xdec0ded0ffffffffULL, --# if XLAT_RAW -+# if XLAT_RAW - "-1" --# elif XLAT_VERBOSE -+# elif XLAT_VERBOSE - "-1 /* FAN_NOFD */" --# else -+# else - "FAN_NOFD" --# endif -+# endif - }, - { (kernel_ulong_t) 0xbadfacedffffff9cULL, str_at_fdcwd }, - { (kernel_ulong_t) 0xdefaced1beeff00dULL, "-1091571699" }, -@@ -202,12 +207,6 @@ - snprintf(bogus_path1_after_addr, sizeof(bogus_path1_after_addr), "%p", - bogus_path1 + PATH1_SIZE); - -- rc = fanotify_mark(-1, FAN_MARK_ADD, FAN_MODIFY | FAN_ONDIR, -- -100, "."); -- printf("fanotify_mark(-1, %s, %s, %s, \".\") = %s\n", -- str_fan_mark_add, str_fan_modify_ondir, str_at_fdcwd, -- sprintrc(rc)); -- - for (i = 0; i < ARRAY_SIZE(fds); i++) { - for (j = 0; j < ARRAY_SIZE(flags); j++) { - for (k = 0; k < ARRAY_SIZE(masks); k++) { -@@ -226,6 +225,40 @@ - } - } - } -+# else /* TEST_SECONTEXT */ -+ int rc; -+# endif -+ /* -+ * Test with AT_FDCWD. -+ */ -+ -+ char *my_secontext = SECONTEXT_PID_MY(); -+ char path[] = "."; -+ char *path_secontext = SECONTEXT_FILE(path); -+ -+ rc = fanotify_mark(-1, FAN_MARK_ADD, FAN_MODIFY | FAN_ONDIR, -+ -100, path); -+ printf("%s%s(-1, %s, %s, %s, \"%s\"%s) = %s\n", -+ my_secontext, "fanotify_mark", -+ str_fan_mark_add, str_fan_modify_ondir, str_at_fdcwd, -+ path, path_secontext, -+ sprintrc(rc)); -+ -+ /* -+ * Test with dirfd. -+ */ -+ -+ int cwd_fd = get_dir_fd("."); -+ char *cwd_secontext = SECONTEXT_FILE("."); -+ -+ rc = fanotify_mark(-1, FAN_MARK_ADD, FAN_MODIFY | FAN_ONDIR, -+ cwd_fd, path); -+ printf("%s%s(-1, %s, %s, %d%s, \"%s\"%s) = %s\n", -+ my_secontext, "fanotify_mark", -+ str_fan_mark_add, str_fan_modify_ondir, -+ cwd_fd, cwd_secontext, -+ path, path_secontext, -+ sprintrc(rc)); - - puts("+++ exited with 0 +++"); - return 0; -Index: strace-5.7/tests-m32/fchmod.c -=================================================================== ---- strace-5.7.orig/tests-m32/fchmod.c 2021-08-24 21:08:35.389312604 +0200 -+++ strace-5.7/tests-m32/fchmod.c 2021-08-24 21:08:43.270245900 +0200 -@@ -18,6 +18,8 @@ - # include - # include - -+# include "secontext.h" -+ - int - main(void) - { -@@ -27,6 +29,8 @@ - */ - create_and_enter_subdir("fchmod_subdir"); - -+ char *my_secontext = SECONTEXT_PID_MY(); -+ - static const char sample[] = "fchmod_sample_file"; - (void) unlink(sample); - int fd = open(sample, O_CREAT|O_RDONLY, 0400); -@@ -37,16 +41,19 @@ - char *sample_realpath = get_fd_path(fd); - # endif - -+ const char *sample_secontext = SECONTEXT_FILE(sample); - long rc = syscall(__NR_fchmod, fd, 0600); - # ifdef YFLAG -- printf("fchmod(%d<%s>, 0600) = %s\n", -+ printf("%s%s(%d<%s>%s, 0600) = %s\n", - # else -- printf("fchmod(%d, 0600) = %s\n", -+ printf("%s%s(%d%s, 0600) = %s\n", - # endif -+ my_secontext, "fchmod", - fd, - # ifdef YFLAG - sample_realpath, - # endif -+ sample_secontext, - sprintrc(rc)); - - if (unlink(sample)) -@@ -54,26 +61,30 @@ - - rc = syscall(__NR_fchmod, fd, 051); - # ifdef YFLAG -- printf("fchmod(%d<%s (deleted)>, 051) = %s\n", -+ printf("%s%s(%d<%s (deleted)>%s, 051) = %s\n", - # else -- printf("fchmod(%d, 051) = %s\n", -+ printf("%s%s(%d%s, 051) = %s\n", - # endif -+ my_secontext, "fchmod", - fd, - # ifdef YFLAG - sample_realpath, - # endif -+ sample_secontext, - sprintrc(rc)); - - rc = syscall(__NR_fchmod, fd, 004); - # ifdef YFLAG -- printf("fchmod(%d<%s (deleted)>, 004) = %s\n", -+ printf("%s%s(%d<%s (deleted)>%s, 004) = %s\n", - # else -- printf("fchmod(%d, 004) = %s\n", -+ printf("%s%s(%d%s, 004) = %s\n", - # endif -+ my_secontext, "fchmod", - fd, - # ifdef YFLAG - sample_realpath, - # endif -+ sample_secontext, - sprintrc(rc)); - - leave_and_remove_subdir(); -Index: strace-5.7/tests-m32/fchmodat.c -=================================================================== ---- strace-5.7.orig/tests-m32/fchmodat.c 2021-08-24 21:08:35.390312595 +0200 -+++ strace-5.7/tests-m32/fchmodat.c 2021-08-24 21:08:43.270245900 +0200 -@@ -17,6 +17,8 @@ - # include - # include - -+# include "secontext.h" -+ - int - main(void) - { -@@ -26,26 +28,81 @@ - */ - create_and_enter_subdir("fchmodat_subdir"); - -- static const char sample[] = "fchmodat_sample"; -+ char *my_secontext = SECONTEXT_PID_MY(); - -+ static const char sample[] = "fchmodat_sample_file"; - if (open(sample, O_RDONLY | O_CREAT, 0400) < 0) - perror_msg_and_fail("open"); - -+ char *sample_secontext = SECONTEXT_FILE(sample); -+ -+ /* -+ * Tests with AT_FDCWD. -+ */ -+ - long rc = syscall(__NR_fchmodat, -100, sample, 0600); -- printf("fchmodat(AT_FDCWD, \"%s\", 0600) = %s\n", -- sample, sprintrc(rc)); -+ printf("%s%s(AT_FDCWD, \"%s\"%s, 0600) = %s\n", -+ my_secontext, "fchmodat", -+ sample, sample_secontext, -+ sprintrc(rc)); - - if (unlink(sample)) - perror_msg_and_fail("unlink"); - - rc = syscall(__NR_fchmodat, -100, sample, 051); -- printf("fchmodat(AT_FDCWD, \"%s\", 051) = %s\n", -+ printf("%s%s(AT_FDCWD, \"%s\", 051) = %s\n", -+ my_secontext, "fchmodat", - sample, sprintrc(rc)); - - rc = syscall(__NR_fchmodat, -100, sample, 004); -- printf("fchmodat(AT_FDCWD, \"%s\", 004) = %s\n", -+ printf("%s%s(AT_FDCWD, \"%s\", 004) = %s\n", -+ my_secontext, "fchmodat", - sample, sprintrc(rc)); - -+ /* -+ * Tests with dirfd. -+ */ -+ -+ int cwd_fd = get_dir_fd("."); -+ char *cwd = get_fd_path(cwd_fd); -+ char *cwd_secontext = SECONTEXT_FILE("."); -+ char *sample_realpath = xasprintf("%s/%s", cwd, sample); -+ -+ /* no file */ -+ rc = syscall(__NR_fchmodat, cwd_fd, sample, 0400); -+ printf("%s%s(%d%s, \"%s\", 0400) = %s\n", -+ my_secontext, "fchmodat", -+ cwd_fd, cwd_secontext, -+ sample, -+ sprintrc(rc)); -+ -+ if (open(sample, O_RDONLY | O_CREAT, 0400) < 0) -+ perror_msg_and_fail("open"); -+ -+ rc = syscall(__NR_fchmodat, cwd_fd, sample, 0400); -+ printf("%s%s(%d%s, \"%s\"%s, 0400) = %s\n", -+ my_secontext, "fchmodat", -+ cwd_fd, cwd_secontext, -+ sample, sample_secontext, -+ sprintrc(rc)); -+ -+ /* cwd_fd ignored when path is absolute */ -+ if (chdir("../..")) -+ perror_msg_and_fail("chdir"); -+ -+ rc = syscall(__NR_fchmodat, cwd_fd, sample_realpath, 0400); -+ printf("%s%s(%d%s, \"%s\"%s, 0400) = %s\n", -+ my_secontext, "fchmodat", -+ cwd_fd, cwd_secontext, -+ sample_realpath, sample_secontext, -+ sprintrc(rc)); -+ -+ if (fchdir(cwd_fd)) -+ perror_msg_and_fail("fchdir"); -+ -+ if (unlink(sample)) -+ perror_msg_and_fail("unlink"); -+ - leave_and_remove_subdir(); - - puts("+++ exited with 0 +++"); -Index: strace-5.7/tests-m32/fchownat.c -=================================================================== ---- strace-5.7.orig/tests-m32/fchownat.c 2021-08-24 21:08:35.390312595 +0200 -+++ strace-5.7/tests-m32/fchownat.c 2021-08-24 21:08:43.270245900 +0200 -@@ -17,6 +17,8 @@ - # include - # include - -+# include "secontext.h" -+ - int - main(void) - { -@@ -26,25 +28,86 @@ - */ - create_and_enter_subdir("fchownat_subdir"); - -- static const char sample[] = "fchownat_sample"; -+ char *my_secontext = SECONTEXT_PID_MY(); - uid_t uid = geteuid(); - uid_t gid = getegid(); - -- if (open(sample, O_RDONLY | O_CREAT, 0400) == -1) -+ static const char sample[] = "fchownat_sample"; -+ int fd = open(sample, O_RDONLY | O_CREAT, 0400); -+ if (fd == -1) - perror_msg_and_fail("open"); -+ close(fd); -+ -+ char *sample_secontext = SECONTEXT_FILE(sample); -+ -+ /* -+ * Tests with AT_FDCWD. -+ */ - - long rc = syscall(__NR_fchownat, AT_FDCWD, sample, uid, gid, 0); -- printf("fchownat(AT_FDCWD, \"%s\", %d, %d, 0) = %s\n", -- sample, uid, gid, sprintrc(rc)); -+ printf("%s%s(AT_FDCWD, \"%s\"%s, %d, %d, 0) = %s\n", -+ my_secontext, "fchownat", -+ sample, sample_secontext, -+ uid, gid, sprintrc(rc)); - - if (unlink(sample)) - perror_msg_and_fail("unlink"); - - rc = syscall(__NR_fchownat, AT_FDCWD, - sample, -1, -1L, AT_SYMLINK_NOFOLLOW); -- printf("fchownat(AT_FDCWD, \"%s\", -1, -1, AT_SYMLINK_NOFOLLOW) = %s\n", -+ printf("%s%s(AT_FDCWD, \"%s\", -1, -1, AT_SYMLINK_NOFOLLOW) = %s\n", -+ my_secontext, "fchownat", - sample, sprintrc(rc)); - -+ /* -+ * Tests with dirfd. -+ */ -+ -+ int cwd_fd = get_dir_fd("."); -+ char *cwd = get_fd_path(cwd_fd); -+ char *cwd_secontext = SECONTEXT_FILE("."); -+ char *sample_realpath = xasprintf("%s/%s", cwd, sample); -+ -+ /* no file */ -+ rc = syscall(__NR_fchownat, cwd_fd, sample, uid, gid, 0); -+ printf("%s%s(%d%s, \"%s\", %d, %d, 0) = %s\n", -+ my_secontext, "fchownat", -+ cwd_fd, cwd_secontext, -+ sample, -+ uid, gid, -+ sprintrc(rc)); -+ -+ fd = open(sample, O_RDONLY | O_CREAT, 0400); -+ if (fd == -1) -+ perror_msg_and_fail("open"); -+ close(fd); -+ -+ rc = syscall(__NR_fchownat, cwd_fd, sample, uid, gid, 0); -+ printf("%s%s(%d%s, \"%s\"%s, %d, %d, 0) = %s\n", -+ my_secontext, "fchownat", -+ cwd_fd, cwd_secontext, -+ sample, sample_secontext, -+ uid, gid, -+ sprintrc(rc)); -+ -+ /* cwd_fd ignored when path is absolute */ -+ if (chdir("../..")) -+ perror_msg_and_fail("chdir"); -+ -+ rc = syscall(__NR_fchownat, cwd_fd, sample_realpath, uid, gid, 0); -+ printf("%s%s(%d%s, \"%s\"%s, %d, %d, 0) = %s\n", -+ my_secontext, "fchownat", -+ cwd_fd, cwd_secontext, -+ sample_realpath, sample_secontext, -+ uid, gid, -+ sprintrc(rc)); -+ -+ if (fchdir(cwd_fd)) -+ perror_msg_and_fail("fchdir"); -+ -+ if (unlink(sample)) -+ perror_msg_and_fail("unlink"); -+ - leave_and_remove_subdir(); - - puts("+++ exited with 0 +++"); -Index: strace-5.7/tests-m32/file_handle.c -=================================================================== ---- strace-5.7.orig/tests-m32/file_handle.c 2021-08-24 21:08:35.390312595 +0200 -+++ strace-5.7/tests-m32/file_handle.c 2021-08-24 21:08:43.271245891 +0200 -@@ -21,6 +21,8 @@ - # include - # include - -+# include "secontext.h" -+ - enum assert_rc { - ASSERT_NONE, - ASSERT_SUCCESS, -@@ -48,6 +50,7 @@ - printf("..."); - } - -+# ifndef TEST_SECONTEXT - void - do_name_to_handle_at(kernel_ulong_t dirfd, const char *dirfd_str, - kernel_ulong_t pathname, const char *pathname_str, -@@ -129,6 +132,7 @@ - - printf("%s\n", sprintrc(rc)); - } -+# endif /* !TEST_SECONTEXT */ - - struct strval { - kernel_ulong_t val; -@@ -141,12 +145,86 @@ - int - main(void) - { -+ char *my_secontext = SECONTEXT_PID_MY(); - enum { - PATH1_SIZE = 64, - }; - - static const kernel_ulong_t fdcwd = - (kernel_ulong_t) 0x87654321ffffff9cULL; -+ -+ struct file_handle *handle = -+ tail_alloc(sizeof(struct file_handle) + MAX_HANDLE_SZ); -+ struct file_handle *handle_0 = -+ tail_alloc(sizeof(struct file_handle) + 0); -+ struct file_handle *handle_8 = -+ tail_alloc(sizeof(struct file_handle) + 8); -+ struct file_handle *handle_128 = -+ tail_alloc(sizeof(struct file_handle) + 128); -+ struct file_handle *handle_256 = -+ tail_alloc(sizeof(struct file_handle) + 256); -+ TAIL_ALLOC_OBJECT_CONST_PTR(int, bogus_mount_id); -+ -+ char handle_0_addr[sizeof("0x") + sizeof(void *) * 2]; -+ -+ const int flags = 0x400; -+ int mount_id; -+ -+ handle_0->handle_bytes = 256; -+ handle_8->handle_bytes = 0; -+ handle_128->handle_bytes = 128; -+ handle_256->handle_bytes = 256; -+ -+ fill_memory((char *) handle_128 + sizeof(struct file_handle), 128); -+ fill_memory((char *) handle_256 + sizeof(struct file_handle), 256); -+ -+ snprintf(handle_0_addr, sizeof(handle_0_addr), "%p", -+ handle_0 + sizeof(struct file_handle)); -+ -+ handle->handle_bytes = 0; -+ -+ char path[] = "."; -+ char *path_secontext = SECONTEXT_FILE(path); -+ -+ assert(syscall(__NR_name_to_handle_at, fdcwd, path, handle, &mount_id, -+ flags | 1) == -1); -+ if (EINVAL != errno) -+ perror_msg_and_skip("name_to_handle_at"); -+ printf("%s%s(AT_FDCWD, \"%s\"%s, {handle_bytes=0}, %p" -+ ", AT_SYMLINK_FOLLOW|0x1) = -1 EINVAL (%m)\n", -+ my_secontext, "name_to_handle_at", -+ path, path_secontext, -+ &mount_id); -+ -+ assert(syscall(__NR_name_to_handle_at, fdcwd, path, handle, &mount_id, -+ flags) == -1); -+ if (EOVERFLOW != errno) -+ perror_msg_and_skip("name_to_handle_at"); -+ printf("%s%s(AT_FDCWD, \"%s\"%s, {handle_bytes=0 => %u}" -+ ", %p, AT_SYMLINK_FOLLOW) = -1 EOVERFLOW (%m)\n", -+ my_secontext, "name_to_handle_at", -+ path, path_secontext, -+ handle->handle_bytes, &mount_id); -+ -+ assert(syscall(__NR_name_to_handle_at, fdcwd, path, handle, &mount_id, -+ flags) == 0); -+ printf("%s%s(AT_FDCWD, \"%s\"%s, {handle_bytes=%u" -+ ", handle_type=%d, f_handle=", -+ my_secontext, "name_to_handle_at", -+ path, path_secontext, -+ handle->handle_bytes, handle->handle_type); -+ print_handle_data(handle->f_handle, handle->handle_bytes); -+ printf("}, [%d], AT_SYMLINK_FOLLOW) = 0\n", mount_id); -+ -+ printf("%s%s(-1, {handle_bytes=%u, handle_type=%d, f_handle=", -+ my_secontext, "open_by_handle_at", -+ handle->handle_bytes, handle->handle_type); -+ print_handle_data(handle->f_handle, handle->handle_bytes); -+ int rc = syscall(__NR_open_by_handle_at, -1, handle, -+ O_RDONLY | O_DIRECTORY); -+ printf("}, O_RDONLY|O_DIRECTORY) = %d %s (%m)\n", rc, errno2name()); -+ -+# ifndef TEST_SECONTEXT - static const struct strval dirfds[] = { - { (kernel_ulong_t) 0xdeadca57badda7a1ULL, "-1159878751" }, - { (kernel_ulong_t) 0x12345678ffffff9cULL, "AT_FDCWD" }, -@@ -171,29 +249,11 @@ - }; - - static const char str64[] = STR64; -- -- - char *bogus_path1 = tail_memdup(str64, PATH1_SIZE); - char *bogus_path2 = tail_memdup(str64, sizeof(str64)); -- -- struct file_handle *handle = -- tail_alloc(sizeof(struct file_handle) + MAX_HANDLE_SZ); -- struct file_handle *handle_0 = -- tail_alloc(sizeof(struct file_handle) + 0); -- struct file_handle *handle_8 = -- tail_alloc(sizeof(struct file_handle) + 8); -- struct file_handle *handle_128 = -- tail_alloc(sizeof(struct file_handle) + 128); -- struct file_handle *handle_256 = -- tail_alloc(sizeof(struct file_handle) + 256); -- TAIL_ALLOC_OBJECT_CONST_PTR(int, bogus_mount_id); -- -- char handle_0_addr[sizeof("0x") + sizeof(void *) * 2]; -- - char bogus_path1_addr[sizeof("0x") + sizeof(void *) * 2]; - char bogus_path1_after_addr[sizeof("0x") + sizeof(void *) * 2]; - -- - struct strval paths[] = { - { (kernel_ulong_t) 0, "NULL" }, - { (kernel_ulong_t) (uintptr_t) (bogus_path1 + PATH1_SIZE), -@@ -229,62 +289,16 @@ - (kernel_ulong_t) (uintptr_t) bogus_mount_id, - }; - -- const int flags = 0x400; -- int mount_id; - unsigned int i; - unsigned int j; - unsigned int k; - unsigned int l; - unsigned int m; - -- - snprintf(bogus_path1_addr, sizeof(bogus_path1_addr), "%p", bogus_path1); - snprintf(bogus_path1_after_addr, sizeof(bogus_path1_after_addr), "%p", - bogus_path1 + PATH1_SIZE); - -- handle_0->handle_bytes = 256; -- handle_8->handle_bytes = 0; -- handle_128->handle_bytes = 128; -- handle_256->handle_bytes = 256; -- -- fill_memory((char *) handle_128 + sizeof(struct file_handle), 128); -- fill_memory((char *) handle_256 + sizeof(struct file_handle), 256); -- -- snprintf(handle_0_addr, sizeof(handle_0_addr), "%p", -- handle_0 + sizeof(struct file_handle)); -- -- handle->handle_bytes = 0; -- -- assert(syscall(__NR_name_to_handle_at, fdcwd, ".", handle, &mount_id, -- flags | 1) == -1); -- if (EINVAL != errno) -- perror_msg_and_skip("name_to_handle_at"); -- printf("name_to_handle_at(AT_FDCWD, \".\", {handle_bytes=0}, %p" -- ", AT_SYMLINK_FOLLOW|0x1) = -1 EINVAL (%m)\n", &mount_id); -- -- assert(syscall(__NR_name_to_handle_at, fdcwd, ".", handle, &mount_id, -- flags) == -1); -- if (EOVERFLOW != errno) -- perror_msg_and_skip("name_to_handle_at"); -- printf("name_to_handle_at(AT_FDCWD, \".\", {handle_bytes=0 => %u}" -- ", %p, AT_SYMLINK_FOLLOW) = -1 EOVERFLOW (%m)\n", -- handle->handle_bytes, &mount_id); -- -- assert(syscall(__NR_name_to_handle_at, fdcwd, ".", handle, &mount_id, -- flags) == 0); -- printf("name_to_handle_at(AT_FDCWD, \".\", {handle_bytes=%u" -- ", handle_type=%d, f_handle=", -- handle->handle_bytes, handle->handle_type); -- print_handle_data(handle->f_handle, handle->handle_bytes); -- printf("}, [%d], AT_SYMLINK_FOLLOW) = 0\n", mount_id); -- -- printf("open_by_handle_at(-1, {handle_bytes=%u, handle_type=%d" -- ", f_handle=", handle->handle_bytes, handle->handle_type); -- print_handle_data(handle->f_handle, handle->handle_bytes); -- int rc = syscall(__NR_open_by_handle_at, -1, handle, -- O_RDONLY | O_DIRECTORY); -- printf("}, O_RDONLY|O_DIRECTORY) = %d %s (%m)\n", rc, errno2name()); -- - for (i = 0; i < ARRAY_SIZE(dirfds); i++) { - for (j = 0; j < ARRAY_SIZE(paths); j++) { - for (k = 0; k < ARRAY_SIZE(name_handles); k++) { -@@ -320,6 +334,68 @@ - } - } - } -+# endif -+ -+ /* -+ * Tests with dirfd. -+ */ -+ -+ int cwd_fd = get_dir_fd("."); -+ char *cwd = get_fd_path(cwd_fd); -+ char *cwd_secontext = SECONTEXT_FILE("."); -+ -+ assert(syscall(__NR_name_to_handle_at, cwd_fd, path, handle, &mount_id, -+ flags) == 0); -+ printf("%s%s(%d%s, \"%s\"%s, {handle_bytes=%u, handle_type=%d" -+ ", f_handle=", -+ my_secontext, "name_to_handle_at", -+ cwd_fd, cwd_secontext, -+ path, path_secontext, -+ handle->handle_bytes, handle->handle_type); -+ print_handle_data((unsigned char *) handle + -+ sizeof(struct file_handle), -+ handle->handle_bytes); -+ printf("}, [%d], AT_SYMLINK_FOLLOW) = 0\n", mount_id); -+ -+ printf("%s%s(-1, {handle_bytes=%u, handle_type=%d, f_handle=", -+ my_secontext, "open_by_handle_at", -+ handle->handle_bytes, handle->handle_type); -+ print_handle_data((unsigned char *) handle + -+ sizeof(struct file_handle), -+ handle->handle_bytes); -+ rc = syscall(__NR_open_by_handle_at, -1, handle, -+ O_RDONLY | O_DIRECTORY); -+ printf("}, O_RDONLY|O_DIRECTORY) = %s\n", sprintrc(rc)); -+ -+ /* cwd_fd ignored when path is absolute */ -+ if (chdir("..")) -+ perror_msg_and_fail("chdir"); -+ -+ assert(syscall(__NR_name_to_handle_at, cwd_fd, cwd, handle, &mount_id, -+ flags) == 0); -+ printf("%s%s(%d%s, \"%s\"%s, {handle_bytes=%u" -+ ", handle_type=%d, f_handle=", -+ my_secontext, "name_to_handle_at", -+ cwd_fd, cwd_secontext, -+ cwd, cwd_secontext, -+ handle->handle_bytes, handle->handle_type); -+ print_handle_data((unsigned char *) handle + -+ sizeof(struct file_handle), -+ handle->handle_bytes); -+ printf("}, [%d], AT_SYMLINK_FOLLOW) = 0\n", mount_id); -+ -+ printf("%s%s(-1, {handle_bytes=%u, handle_type=%d, f_handle=", -+ my_secontext, "open_by_handle_at", -+ handle->handle_bytes, handle->handle_type); -+ print_handle_data((unsigned char *) handle + -+ sizeof(struct file_handle), -+ handle->handle_bytes); -+ rc = syscall(__NR_open_by_handle_at, -1, handle, -+ O_RDONLY | O_DIRECTORY); -+ printf("}, O_RDONLY|O_DIRECTORY) = %s\n", sprintrc(rc)); -+ -+ if (fchdir(cwd_fd)) -+ perror_msg_and_fail("fchdir"); - - puts("+++ exited with 0 +++"); - return 0; -Index: strace-5.7/tests-m32/gen_secontext.sh -=================================================================== ---- /dev/null 1970-01-01 00:00:00.000000000 +0000 -+++ strace-5.7/tests-m32/gen_secontext.sh 2021-08-24 21:08:43.271245891 +0200 -@@ -0,0 +1,72 @@ -+#!/bin/sh -efu -+# -+# Copyright (c) 2021 The strace developers. -+# All rights reserved. -+# -+# SPDX-License-Identifier: GPL-2.0-or-later -+ -+usage() -+{ -+ cat >&2 <] -+ -+Generate secontext files from list. -+EOF -+ exit 1 -+} -+ -+if [ $# -eq 0 ]; then -+ input="${0%/*}/gen_tests.in" -+else -+ input="$1" -+ shift -+fi -+dir="$(dirname "$input")" -+[ $# -eq 0 ] || usage -+ -+{ -+ cat < "$dir/secontext.am" -+ -+sed -r -n 's/^([^#[:space:]]+--secontext)[[:space:]].*/\1/p' < "$input" | -+while read -r name; do { -+ cat <<-EOF > "$dir/$name.c" -+ /* -+ * Copyright (c) 2021 The strace developers. -+ * All rights reserved. -+ * -+ * SPDX-License-Identifier: GPL-2.0-or-later -+ */ -+ -+ #include "tests.h" -+ -+ #ifdef HAVE_SELINUX_RUNTIME -+ -+ # define TEST_SECONTEXT -+ # include "${name%--secontext}.c" -+ -+ #else -+ -+ SKIP_MAIN_UNDEFINED("HAVE_SELINUX_RUNTIME") -+ -+ #endif -+ EOF -+} < /dev/null; done -+ -+sed -r -n 's/^([^#[:space:]]+--secontext_full)[[:space:]].*/\1/p' < "$input" | -+while read -r name; do { -+ cat <<-EOF > "$dir/$name.c" -+ #define PRINT_SECONTEXT_FULL -+ #include "${name%_full}.c" -+ EOF -+} < /dev/null; done -Index: strace-5.7/tests-m32/gen_tests.in -=================================================================== ---- strace-5.7.orig/tests-m32/gen_tests.in 2021-08-24 21:08:35.391312587 +0200 -+++ strace-5.7/tests-m32/gen_tests.in 2021-08-24 21:08:43.272245883 +0200 -@@ -10,6 +10,8 @@ - accept -a22 - accept4 -a37 - access -a30 --trace-path=access_sample -+access--secontext -a30 --secontext --trace-path=access_sample -e trace=access -+access--secontext_full -a30 --secontext=full --trace-path=access_sample -e trace=access - acct -a20 - add_key -a30 -s12 - adjtimex -a15 -@@ -24,6 +26,8 @@ - bpf-v -a20 -v -e trace=bpf - btrfs +ioctl.test - chmod -a28 -+chmod--secontext -a28 --secontext -e trace=chmod -+chmod--secontext_full -a28 --secontext=full -e trace=chmod - chown -a28 - chown32 -a31 - chroot -a24 -@@ -71,25 +75,43 @@ - epoll_pwait - epoll_wait -a26 - erestartsys -a34 -e signal=none -e trace=recvfrom -+execve--secontext +execve.test --secontext -+execve--secontext_full +execve.test --secontext=full - execveat -+execveat--secontext --secontext --trace=execveat -+execveat--secontext_full --secontext=full --trace=execveat - execveat-v -v -e trace=execveat -+faccessat--secontext +faccessat.test -a24 --secontext -+faccessat--secontext_full +faccessat.test -a24 --secontext=full - faccessat-P -a23 --trace=faccessat -P /dev/full - faccessat-y +faccessat.test -a24 -y -+faccessat-y--secontext +faccessat.test -a24 -y --secontext -+faccessat-y--secontext_full +faccessat.test -a24 -y --secontext=full - faccessat-yy +faccessat.test -a24 -yy - fadvise64_64 +fadvise64.test - fallocate -a18 - fanotify_init - fanotify_mark -a32 -+fanotify_mark--secontext -a32 --secontext -e trace=fanotify_mark -+fanotify_mark--secontext_full -a32 --secontext=full -e trace=fanotify_mark - fanotify_mark-Xabbrev -a32 -Xabbrev -e trace=fanotify_mark - fanotify_mark-Xraw -a32 -Xraw -e trace=fanotify_mark - fanotify_mark-Xverbose -a32 -Xverbose -e trace=fanotify_mark - fchdir -a11 - fchmod -a15 -+fchmod--secontext -a15 --secontext -e trace=fchmod -+fchmod--secontext_full -a15 --secontext=full -e trace=fchmod - fchmod-y -y -e trace=fchmod -+fchmod-y--secontext -a15 -y --secontext -e trace=fchmod -+fchmod-y--secontext_full -a15 -y --secontext=full -e trace=fchmod - fchmodat -+fchmodat--secontext --secontext -e trace=fchmodat -+fchmodat--secontext_full --secontext=full -e trace=fchmodat - fchown -a16 - fchown32 -a18 - fchownat -+fchownat--secontext --secontext -e trace=fchownat -+fchownat--secontext_full --secontext=full -e trace=fchownat - fcntl -a8 - fcntl--pidns-translation test_pidns -a8 -e trace=fcntl - fcntl64 -a8 -@@ -97,6 +119,8 @@ - fdatasync -a14 - file_handle -e trace=name_to_handle_at,open_by_handle_at - file_ioctl +ioctl.test -+file_handle--secontext --secontext -e trace=name_to_handle_at,open_by_handle_at -+file_handle--secontext_full --secontext=full -e trace=name_to_handle_at,open_by_handle_at - filter_seccomp . "${srcdir=.}/filter_seccomp.sh"; test_prog_set --seccomp-bpf -f - filter_seccomp-flag ../$NAME - finit_module -a25 -@@ -295,6 +319,8 @@ - lchown32 -a32 - link - linkat -+linkat--secontext --secontext -e trace=linkat -+linkat--secontext_full --secontext=full -e trace=linkat - lookup_dcookie -a27 - lstat -a31 --no-abbrev --trace-path=stat.sample --trace-path=/dev/full - lstat64 -a32 --no-abbrev --trace-path=stat.sample --trace-path=/dev/full -@@ -434,9 +460,13 @@ - oldselect-efault-P -a13 -e trace=select -P /dev/full 9>>/dev/full - oldstat -a32 -v -P stat.sample -P /dev/full - open -a30 -P $NAME.sample -+open--secontext -a30 -P open.sample --secontext --trace=open -+open--secontext_full -a30 -P open.sample --secontext=full --trace=open - open_tree -a30 -y - open_tree-P -a30 --decode-fds -P /dev/full -e trace=open_tree - openat -a36 -P $NAME.sample -+openat--secontext -a36 -P openat.sample -P $PWD/openat.sample --secontext -e trace=openat -+openat--secontext_full -a36 -P openat.sample -P $PWD/openat.sample --secontext=full -e trace=openat - openat2 -a35 - openat2-Xabbrev --trace=openat2 -a35 -Xabbrev - openat2-Xraw --trace=openat2 -a32 -Xraw -Index: strace-5.7/tests-m32/linkat.c -=================================================================== ---- strace-5.7.orig/tests-m32/linkat.c 2021-08-24 21:08:35.391312587 +0200 -+++ strace-5.7/tests-m32/linkat.c 2021-08-24 21:08:43.272245883 +0200 -@@ -10,8 +10,14 @@ - - #ifdef __NR_linkat - -+# include - # include -+# include - # include -+# include -+ -+# include "secontext.h" -+# include "xmalloc.h" - - int - main(void) -@@ -27,18 +33,158 @@ - const long fd_old = (long) 0xdeadbeefffffffffULL; - const long fd_new = (long) 0xdeadbeeffffffffeULL; - -+ char *my_secontext = SECONTEXT_PID_MY(); -+ -+ (void) unlink(sample_1); -+ (void) unlink(sample_2); -+ - long rc = syscall(__NR_linkat, fd_old, sample_1, fd_new, sample_2, 0); -- printf("linkat(%d, \"%s\", %d, \"%s\", 0) = %ld %s (%m)\n", -+ printf("%s%s(%d, \"%s\", %d, \"%s\", 0) = %ld %s (%m)\n", -+ my_secontext, "linkat", - (int) fd_old, sample_1, (int) fd_new, sample_2, - rc, errno2name()); - - rc = syscall(__NR_linkat, -100, sample_1, -100, sample_2, -1L); -- printf("linkat(%s, \"%s\", %s, \"%s\", %s) = %ld %s (%m)\n", -+ printf("%s%s(%s, \"%s\", %s, \"%s\", %s) = %ld %s (%m)\n", -+ my_secontext, "linkat", - "AT_FDCWD", sample_1, "AT_FDCWD", sample_2, - "AT_SYMLINK_NOFOLLOW|AT_REMOVEDIR|AT_SYMLINK_FOLLOW" - "|AT_NO_AUTOMOUNT|AT_EMPTY_PATH|AT_RECURSIVE|0xffff60ff", - rc, errno2name()); - -+ /* -+ * Tests with AT_FDCWD. -+ */ -+ -+ int fd_sample_1 = open(sample_1, O_RDONLY | O_CREAT, 0400); -+ if (fd_sample_1 < 0) -+ perror_msg_and_fail("open"); -+ if (close(fd_sample_1)) -+ perror_msg_and_fail("close"); -+ -+ char *sample_1_secontext = SECONTEXT_FILE(sample_1); -+ -+ rc = syscall(__NR_linkat, -100, sample_1, -100, sample_2, 0); -+ /* no context printed for sample_2 since file doesn't exist yet */ -+ printf("%s%s(AT_FDCWD, \"%s\"%s, AT_FDCWD, \"%s\", 0) = %s\n", -+ my_secontext, "linkat", -+ sample_1, sample_1_secontext, -+ sample_2, -+ sprintrc(rc)); -+ -+ const char *sample_2_secontext = sample_1_secontext; -+ -+ rc = syscall(__NR_linkat, -100, sample_1, -100, sample_2, 0); -+ printf("%s%s(AT_FDCWD, \"%s\"%s, AT_FDCWD, \"%s\"%s, 0) = %s\n", -+ my_secontext, "linkat", -+ sample_1, sample_1_secontext, -+ sample_2, sample_2_secontext, -+ sprintrc(rc)); -+ -+ int fd_sample_2 = open(sample_2, O_RDONLY | O_CREAT, 0400); -+ if (fd_sample_2 < 0) -+ perror_msg_and_fail("open"); -+ if (close(fd_sample_2)) -+ perror_msg_and_fail("close"); -+ -+ free(sample_1_secontext); -+ update_secontext_type(sample_1, "default_t"); -+ sample_1_secontext = SECONTEXT_FILE(sample_1); -+ sample_2_secontext = sample_1_secontext; -+ -+ rc = syscall(__NR_linkat, -100, sample_1, -100, sample_2, 0); -+ printf("%s%s(AT_FDCWD, \"%s\"%s, AT_FDCWD, \"%s\"%s, 0) = %s\n", -+ my_secontext, "linkat", -+ sample_1, sample_1_secontext, -+ sample_2, sample_2_secontext, -+ sprintrc(rc)); -+ -+ if (unlink(sample_2)) -+ perror_msg_and_fail("unlink: %s", sample_2); -+ -+ /* -+ * Tests with dirfd. -+ */ -+ -+ int dfd_old = get_dir_fd("."); -+ char *cwd = get_fd_path(dfd_old); -+ char *dfd_old_secontext = SECONTEXT_FILE("."); -+ -+ rc = syscall(__NR_linkat, dfd_old, sample_1, -100, sample_2, 0); -+ /* no context printed for sample_2 since file doesn't exist yet */ -+ printf("%s%s(%d%s, \"%s\"%s, AT_FDCWD, \"%s\", 0) = %s\n", -+ my_secontext, "linkat", -+ dfd_old, dfd_old_secontext, -+ sample_1, sample_1_secontext, -+ sample_2, -+ sprintrc(rc)); -+ -+ rc = syscall(__NR_linkat, dfd_old, sample_1, -100, sample_2, 0); -+ printf("%s%s(%d%s, \"%s\"%s, AT_FDCWD, \"%s\"%s, 0) = %s\n", -+ my_secontext, "linkat", -+ dfd_old, dfd_old_secontext, -+ sample_1, sample_1_secontext, -+ sample_2, sample_2_secontext, -+ sprintrc(rc)); -+ -+ if (unlink(sample_2)) -+ perror_msg_and_fail("unlink: %s", sample_2); -+ -+ static const char new_dir[] = "new"; -+ char *new_sample_2 = xasprintf("%s/%s", new_dir, sample_2); -+ -+ (void) unlink(new_sample_2); -+ (void) rmdir(new_dir); -+ -+ if (mkdir(new_dir, 0700)) -+ perror_msg_and_fail("mkdir"); -+ char *new_dir_realpath = xasprintf("%s/%s", cwd, new_dir); -+ char *new_dir_secontext = SECONTEXT_FILE(new_dir); -+ int dfd_new = get_dir_fd(new_dir); -+ -+ rc = syscall(__NR_linkat, dfd_old, sample_1, dfd_new, sample_2, 0); -+ /* no context printed for sample_2 since file doesn't exist yet */ -+ printf("%s%s(%d%s, \"%s\"%s, %d%s, \"%s\", 0) = %s\n", -+ my_secontext, "linkat", -+ dfd_old, dfd_old_secontext, -+ sample_1, sample_1_secontext, -+ dfd_new, new_dir_secontext, -+ sample_2, -+ sprintrc(rc)); -+ -+ rc = syscall(__NR_linkat, dfd_old, sample_1, dfd_new, sample_2, 0); -+ printf("%s%s(%d%s, \"%s\"%s, %d%s, \"%s\"%s, 0) = %s\n", -+ my_secontext, "linkat", -+ dfd_old, dfd_old_secontext, -+ sample_1, sample_1_secontext, -+ dfd_new, new_dir_secontext, -+ sample_2, SECONTEXT_FILE(new_sample_2), -+ sprintrc(rc)); -+ -+ char *new_sample_2_realpath = xasprintf("%s/%s", new_dir_realpath, sample_2); -+ -+ /* dfd ignored when path is absolute */ -+ if (chdir("../..")) -+ perror_msg_and_fail("chdir"); -+ -+ rc = syscall(__NR_linkat, dfd_old, sample_1, -100, new_sample_2_realpath, 0); -+ printf("%s%s(%d%s, \"%s\"%s, AT_FDCWD, \"%s\"%s, 0) = %s\n", -+ my_secontext, "linkat", -+ dfd_old, dfd_old_secontext, -+ sample_1, sample_1_secontext, -+ new_sample_2_realpath, SECONTEXT_FILE(new_sample_2_realpath), -+ sprintrc(rc)); -+ -+ if (fchdir(dfd_old)) -+ perror_msg_and_fail("fchdir"); -+ -+ if (unlink(sample_1)) -+ perror_msg_and_fail("unlink: %s", sample_1); -+ if (unlink(new_sample_2)) -+ perror_msg_and_fail("unlink: %s", new_sample_2); -+ if (rmdir(new_dir)) -+ perror_msg_and_fail("rmdir: %s", new_dir); -+ - leave_and_remove_subdir(); - - puts("+++ exited with 0 +++"); -Index: strace-5.7/tests-m32/open.c -=================================================================== ---- strace-5.7.orig/tests-m32/open.c 2021-08-24 21:08:35.391312587 +0200 -+++ strace-5.7/tests-m32/open.c 2021-08-24 21:08:43.272245883 +0200 -@@ -15,6 +15,8 @@ - # include - # include - -+# include "secontext.h" -+ - int - main(void) - { -@@ -25,10 +27,12 @@ - create_and_enter_subdir("open_subdir"); - - static const char sample[] = "open.sample"; -+ char *my_secontext = SECONTEXT_PID_MY(); - - long fd = syscall(__NR_open, sample, O_RDONLY|O_CREAT, 0400); -- printf("open(\"%s\", O_RDONLY|O_CREAT, 0400) = %s\n", -- sample, sprintrc(fd)); -+ printf("%s%s(\"%s\", O_RDONLY|O_CREAT, 0400) = %s%s\n", -+ my_secontext, "open", -+ sample, sprintrc(fd), SECONTEXT_FILE(sample)); - - if (fd != -1) { - close(fd); -@@ -36,16 +40,18 @@ - perror_msg_and_fail("unlink"); - - fd = syscall(__NR_open, sample, O_RDONLY); -- printf("open(\"%s\", O_RDONLY) = %s\n", sample, sprintrc(fd)); -+ printf("%s%s(\"%s\", O_RDONLY) = %s\n", -+ my_secontext, "open", sample, sprintrc(fd)); - - fd = syscall(__NR_open, sample, O_WRONLY|O_NONBLOCK|0x80000000); -- printf("open(\"%s\", O_WRONLY|O_NONBLOCK|0x80000000) = %s\n", -- sample, sprintrc(fd)); -+ printf("%s%s(\"%s\", O_WRONLY|O_NONBLOCK|0x80000000) = %s\n", -+ my_secontext, "open", sample, sprintrc(fd)); - } - - # ifdef O_TMPFILE - fd = syscall(__NR_open, sample, O_WRONLY|O_TMPFILE, 0600); -- printf("open(\"%s\", O_WRONLY|O_TMPFILE, 0600) = %s\n", -+ printf("%s%s(\"%s\", O_WRONLY|O_TMPFILE, 0600) = %s\n", -+ my_secontext, "open", - sample, sprintrc(fd)); - # endif /* O_TMPFILE */ - -Index: strace-5.7/tests-m32/openat.c -=================================================================== ---- strace-5.7.orig/tests-m32/openat.c 2021-08-24 21:08:35.392312578 +0200 -+++ strace-5.7/tests-m32/openat.c 2021-08-24 21:08:43.273245874 +0200 -@@ -15,6 +15,8 @@ - # include - # include - -+# include "secontext.h" -+ - # ifdef O_TMPFILE - /* The kernel & C libraries often inline O_DIRECTORY. */ - # define STRACE_O_TMPFILE (O_TMPFILE & ~O_DIRECTORY) -@@ -26,10 +28,12 @@ - - static void - test_mode_flag(unsigned int mode_val, const char *mode_str, -- unsigned int flag_val, const char *flag_str) -+ unsigned int flag_val, const char *flag_str, -+ const char *my_secontext) - { - long rc = syscall(__NR_openat, -1, sample, mode_val | flag_val, 0); -- printf("openat(-1, \"%s\", %s%s%s%s) = %s\n", -+ printf("%s%s(-1, \"%s\", %s%s%s%s) = %s\n", -+ my_secontext, "openat", - sample, mode_str, - flag_val ? "|" : "", flag_str, - flag_val & (O_CREAT | STRACE_O_TMPFILE) ? ", 000" : "", -@@ -45,20 +49,7 @@ - */ - create_and_enter_subdir("openat_subdir"); - -- long fd = syscall(__NR_openat, -100, sample, O_RDONLY|O_CREAT, 0400); -- printf("openat(AT_FDCWD, \"%s\", O_RDONLY|O_CREAT, 0400) = %s\n", -- sample, sprintrc(fd)); -- -- if (fd != -1) { -- close(fd); -- if (unlink(sample) == -1) -- perror_msg_and_fail("unlink"); -- -- fd = syscall(__NR_openat, -100, sample, O_RDONLY); -- printf("openat(AT_FDCWD, \"%s\", O_RDONLY) = %s\n", -- sample, sprintrc(fd)); -- } -- -+ char *my_secontext = SECONTEXT_PID_MY(); - struct { - unsigned int val; - const char *str; -@@ -105,7 +96,73 @@ - for (unsigned int m = 0; m < ARRAY_SIZE(modes); ++m) - for (unsigned int f = 0; f < ARRAY_SIZE(flags); ++f) - test_mode_flag(modes[m].val, modes[m].str, -- flags[f].val, flags[f].str); -+ flags[f].val, flags[f].str, -+ my_secontext); -+ -+ /* -+ * Tests with AT_FDCWD. -+ */ -+ -+ (void) unlink(sample); -+ long fd = syscall(__NR_openat, -100, sample, O_RDONLY|O_CREAT, 0400); -+ -+ char *sample_secontext = SECONTEXT_FILE(sample); -+ -+ /* -+ * File context in openat() is not displayed because file doesn't exist -+ * yet, but is displayed in return value since the file got created. -+ */ -+ printf("%s%s(AT_FDCWD, \"%s\", O_RDONLY|O_CREAT, 0400) = %s%s\n", -+ my_secontext, "openat", -+ sample, -+ sprintrc(fd), sample_secontext); -+ -+ close(fd); -+ -+ fd = syscall(__NR_openat, -100, sample, O_RDONLY); -+ printf("%s%s(AT_FDCWD, \"%s\"%s, O_RDONLY) = %s%s\n", -+ my_secontext, "openat", -+ sample, sample_secontext, -+ sprintrc(fd), sample_secontext); -+ if (fd != -1) { -+ close(fd); -+ if (unlink(sample)) -+ perror_msg_and_fail("unlink"); -+ } -+ -+ /* -+ * Tests with dirfd. -+ */ -+ -+ int cwd_fd = get_dir_fd("."); -+ char *cwd_secontext = SECONTEXT_FILE("."); -+ -+ fd = syscall(__NR_openat, cwd_fd, sample, O_RDONLY|O_CREAT, 0400); -+ if (fd == -1) -+ perror_msg_and_fail("openat"); -+ close(fd); -+ -+ /* -+ * File context in openat() is not displayed because file doesn't exist -+ * yet, but is displayed in return value since the file got created. -+ */ -+ printf("%s%s(%d%s, \"%s\", O_RDONLY|O_CREAT, 0400) = %s%s\n", -+ my_secontext, "openat", -+ cwd_fd, cwd_secontext, -+ sample, -+ sprintrc(fd), sample_secontext); -+ -+ fd = syscall(__NR_openat, cwd_fd, sample, O_RDONLY); -+ printf("%s%s(%d%s, \"%s\"%s, O_RDONLY) = %s%s\n", -+ my_secontext, "openat", -+ cwd_fd, cwd_secontext, -+ sample, sample_secontext, -+ sprintrc(fd), sample_secontext); -+ if (fd != -1) { -+ close(fd); -+ if (unlink(sample)) -+ perror_msg_and_fail("unlink"); -+ } - - leave_and_remove_subdir(); - -Index: strace-5.7/tests-m32/options-syntax.test -=================================================================== ---- strace-5.7.orig/tests-m32/options-syntax.test 2021-08-24 21:08:35.392312578 +0200 -+++ strace-5.7/tests-m32/options-syntax.test 2021-08-24 21:08:43.273245874 +0200 -@@ -2,14 +2,16 @@ - # - # Check strace options syntax. - # --# Copyright (c) 2016 Dmitry V. Levin --# Copyright (c) 2016-2020 The strace developers. -+# Copyright (c) 2016 Dmitry V. Levin -+# Copyright (c) 2016-2021 The strace developers. - # All rights reserved. - # - # SPDX-License-Identifier: GPL-2.0-or-later - - . "${srcdir=.}/syntax.sh" - -+compiled_with_secontext=$(get_config_option ENABLE_SECONTEXT "y") -+ - check_e "Invalid process id: '0'" -p 0 - check_e "Invalid process id: '0'" --attach=0 - check_e "Invalid process id: '-42'" -p -42 -@@ -46,6 +48,8 @@ - check_e '-t and --absolute-timestamps cannot be provided simultaneously' --absolute-timestamps -ttt -p $$ - check_e '-t and --absolute-timestamps cannot be provided simultaneously' -t --timestamps=ns -t -p $$ - check_e '-t and --absolute-timestamps cannot be provided simultaneously' --timestamps=ns -t --absolute-timestamps=unix -p $$ -+[ -z "$compiled_with_secontext" ] || -+ check_h "invalid --secontext argument: 'ss'" --secontext=ss - check_h 'PROG [ARGS] must be specified with -D/--daemonize' -D -p $$ - check_h 'PROG [ARGS] must be specified with -D/--daemonize' -DD -p $$ - check_h 'PROG [ARGS] must be specified with -D/--daemonize' -DDD -p $$ -@@ -281,6 +285,11 @@ - $STRACE_EXE: Only the last of -z/--successful-only/-Z/--failed-only options will take effect. See status qualifier for more complex filters. - $STRACE_EXE: $umsg" -u :nosuchuser: -cirtTyzZ true - -+ if [ -n "$compiled_with_secontext" ]; then -+ check_e "--secontext has no effect with -c/--summary-only -+$STRACE_EXE: $umsg" -u :nosuchuser: -c --secontext true -+ fi -+ - for c in --output-separately -A/--output-append-mode; do - check_e "$c has no effect without -o/--output - $STRACE_EXE: $umsg" -u :nosuchuser: ${c%%/*} true -Index: strace-5.7/tests-m32/secontext.c -=================================================================== ---- /dev/null 1970-01-01 00:00:00.000000000 +0000 -+++ strace-5.7/tests-m32/secontext.c 2021-08-24 21:08:43.274245866 +0200 -@@ -0,0 +1,201 @@ -+/* -+ * Copyright (c) 2021 The strace developers. -+ * All rights reserved. -+ * -+ * SPDX-License-Identifier: GPL-2.0-or-later -+ */ -+ -+#include "tests.h" -+ -+#ifdef HAVE_SELINUX_RUNTIME -+ -+# include -+# include -+# include -+# include -+# include -+# include -+ -+# include "xmalloc.h" -+ -+# define TEST_SECONTEXT -+# include "secontext.h" -+ -+static char * -+secontext_format(char *context, const char *fmt) -+ ATTRIBUTE_FORMAT((printf, 2, 0)) ATTRIBUTE_MALLOC; -+ -+static char * -+secontext_format(char *context, const char *fmt) -+{ -+ int saved_errno = errno; -+ char *res = context ? xasprintf(fmt, context) : xstrdup(""); -+ free(context); -+ errno = saved_errno; -+ return res; -+} -+ -+# define FORMAT_SPACE_BEFORE(string) secontext_format(string, " [%s]") -+# define FORMAT_SPACE_AFTER(string) secontext_format(string, "[%s] ") -+ -+static char * -+strip_trailing_newlines(char *context) -+{ -+ /* -+ * On the CI at least, the context may have a trailing \n, -+ * let's remove it just in case. -+ */ -+ size_t len = strlen(context); -+ for (; len > 0; --len) { -+ if (context[len - 1] != '\n') -+ break; -+ } -+ context[len] = '\0'; -+ return context; -+} -+ -+static char * -+raw_secontext_full_file(const char *filename) -+{ -+ int saved_errno = errno; -+ char *full_secontext = NULL; -+ char *secontext; -+ -+ if (getfilecon(filename, &secontext) >= 0) { -+ full_secontext = strip_trailing_newlines(xstrdup(secontext)); -+ freecon(secontext); -+ } -+ errno = saved_errno; -+ return full_secontext; -+} -+ -+static char * -+raw_secontext_short_file(const char *filename) -+{ -+ int saved_errno = errno; -+ -+ char *ctx = raw_secontext_full_file(filename); -+ if (ctx == NULL) -+ return ctx; -+ -+ char *saveptr = NULL; -+ const char *token; -+ unsigned int i; -+ -+ char *ctx_copy = xstrdup(ctx); -+ char *context = NULL; -+ for (token = strtok_r(ctx_copy, ":", &saveptr), i = 0; -+ token; token = strtok_r(NULL, ":", &saveptr), i++) { -+ if (i == 2) { -+ context = xstrdup(token); -+ break; -+ } -+ } -+ if (context == NULL) -+ context = xstrdup(ctx); -+ free(ctx_copy); -+ free(ctx); -+ -+ errno = saved_errno; -+ return context; -+} -+ -+static char * -+raw_secontext_full_pid(pid_t pid) -+{ -+ int saved_errno = errno; -+ char *full_secontext = NULL; -+ char *secontext; -+ -+ if (getpidcon(pid, &secontext) == 0) { -+ full_secontext = strip_trailing_newlines(xstrdup(secontext)); -+ freecon(secontext); -+ } -+ errno = saved_errno; -+ return full_secontext; -+} -+ -+static char * -+raw_secontext_short_pid(pid_t pid) -+{ -+ int saved_errno = errno; -+ -+ char *ctx = raw_secontext_full_pid(pid); -+ if (ctx == NULL) -+ return ctx; -+ -+ char *saveptr = NULL; -+ const char *token; -+ int i; -+ -+ char *ctx_copy = xstrdup(ctx); -+ char *context = NULL; -+ for (token = strtok_r(ctx_copy, ":", &saveptr), i = 0; -+ token; token = strtok_r(NULL, ":", &saveptr), i++) { -+ if (i == 2) { -+ context = xstrdup(token); -+ break; -+ } -+ } -+ if (context == NULL) -+ context = xstrdup(ctx); -+ free(ctx_copy); -+ free(ctx); -+ -+ errno = saved_errno; -+ return context; -+} -+ -+char * -+secontext_full_file(const char *filename) -+{ -+ return FORMAT_SPACE_BEFORE(raw_secontext_full_file(filename)); -+} -+ -+char * -+secontext_full_pid(pid_t pid) -+{ -+ return FORMAT_SPACE_AFTER(raw_secontext_full_pid(pid)); -+} -+ -+char * -+secontext_short_file(const char *filename) -+{ -+ return FORMAT_SPACE_BEFORE(raw_secontext_short_file(filename)); -+} -+ -+char * -+secontext_short_pid(pid_t pid) -+{ -+ return FORMAT_SPACE_AFTER(raw_secontext_short_pid(pid)); -+} -+ -+void -+update_secontext_type(const char *file, const char *newtype) -+{ -+ char *ctx = raw_secontext_full_file(file); -+ if (ctx == NULL) -+ return; -+ -+ char *saveptr = NULL; -+ char *token; -+ int field; -+ char *split[4]; -+ -+ for (token = strtok_r(ctx, ":", &saveptr), field = 0; -+ token; token = strtok_r(NULL, ":", &saveptr), field++) { -+ assert(field < 4); -+ split[field] = token; -+ } -+ assert(field == 4); -+ -+ char *newcontext = xasprintf("%s:%s:%s:%s", split[0], split[1], -+ newtype, split[3]); -+ -+ (void) setfilecon(file, newcontext); -+ -+ free(newcontext); -+ free(ctx); -+} -+ -+#endif /* HAVE_SELINUX_RUNTIME */ -Index: strace-5.7/tests-m32/secontext.h -=================================================================== ---- /dev/null 1970-01-01 00:00:00.000000000 +0000 -+++ strace-5.7/tests-m32/secontext.h 2021-08-24 21:08:43.274245866 +0200 -@@ -0,0 +1,46 @@ -+/* -+ * Copyright (c) 2021 The strace developers. -+ * All rights reserved. -+ * -+ * SPDX-License-Identifier: GPL-2.0-or-later -+ */ -+ -+#include "tests.h" -+#include "xmalloc.h" -+#include -+ -+#if defined TEST_SECONTEXT && defined HAVE_SELINUX_RUNTIME -+ -+void update_secontext_type(const char *file, const char *newtype); -+ -+# ifdef PRINT_SECONTEXT_FULL -+ -+char *secontext_full_file(const char *) ATTRIBUTE_MALLOC; -+char *secontext_full_pid(pid_t) ATTRIBUTE_MALLOC; -+ -+# define SECONTEXT_FILE(filename) secontext_full_file(filename) -+# define SECONTEXT_PID(pid) secontext_full_pid(pid) -+ -+# else -+ -+char *secontext_short_file(const char *) ATTRIBUTE_MALLOC; -+char *secontext_short_pid(pid_t) ATTRIBUTE_MALLOC; -+ -+# define SECONTEXT_FILE(filename) secontext_short_file(filename) -+# define SECONTEXT_PID(pid) secontext_short_pid(pid) -+ -+# endif -+ -+#else -+ -+static inline void -+update_secontext_type(const char *file, const char *newtype) -+{ -+} -+ -+# define SECONTEXT_FILE(filename) xstrdup("") -+# define SECONTEXT_PID(pid) xstrdup("") -+ -+#endif -+ -+#define SECONTEXT_PID_MY() SECONTEXT_PID(getpid()) -Index: strace-5.7/tests-m32/strace-V.test -=================================================================== ---- strace-5.7.orig/tests-m32/strace-V.test 2021-08-24 21:08:35.392312578 +0200 -+++ strace-5.7/tests-m32/strace-V.test 2021-08-24 21:08:43.274245866 +0200 -@@ -33,7 +33,9 @@ - ;; - esac - --features="${option_unwind}${option_demangle}${option_m32}${option_mx32}" -+option_secontext=$(get_config_option ENABLE_SECONTEXT " secontext") -+ -+features="${option_unwind}${option_demangle}${option_m32}${option_mx32}${option_secontext}" - [ -n "$features" ] || features=" (none)" - - cat > "$EXP" << __EOF__ -Index: strace-5.7/tests-mx32/Makefile.am -=================================================================== ---- strace-5.7.orig/tests-mx32/Makefile.am 2021-08-24 21:08:35.393312570 +0200 -+++ strace-5.7/tests-mx32/Makefile.am 2021-08-24 21:08:43.274245866 +0200 -@@ -28,6 +28,12 @@ - -DTESTS_SIZEOF_LONG=$(SIZEOF_LONG) - AM_LDFLAGS = $(ARCH_MFLAGS) - -+if HAVE_SELINUX_RUNTIME -+libselinux_LDADD = $(libselinux_LIBS) -+else -+libselinux_LDADD = -+endif -+ - libtests_a_SOURCES = \ - create_nl_socket.c \ - create_tmpfile.c \ -@@ -54,6 +60,8 @@ - printxval-Xabbrev.c \ - printxval-Xraw.c \ - printxval-Xverbose.c \ -+ secontext.c \ -+ secontext.h \ - signal2name.c \ - skip_unavailable.c \ - sprintrc.c \ -@@ -76,7 +84,10 @@ - - include pure_executables.am - -+include secontext.am -+ - check_PROGRAMS = $(PURE_EXECUTABLES) \ -+ $(secontext_EXECUTABLES) \ - _newselect-P \ - answer \ - attach-f-p \ -Index: strace-5.7/tests-mx32/access.c -=================================================================== ---- strace-5.7.orig/tests-mx32/access.c 2021-08-24 21:08:35.393312570 +0200 -+++ strace-5.7/tests-mx32/access.c 2021-08-24 21:08:43.275245858 +0200 -@@ -10,9 +10,12 @@ - - #ifdef __NR_access - -+# include - # include - # include - -+# include "secontext.h" -+ - int - main(void) - { -@@ -22,15 +25,27 @@ - */ - create_and_enter_subdir("access_subdir"); - -+ char *my_secontext = SECONTEXT_PID_MY(); -+ - static const char sample[] = "access_sample"; -+ (void) unlink(sample); -+ if (open(sample, O_CREAT|O_RDONLY, 0400) == -1) -+ perror_msg_and_fail("open: %s", sample); - - long rc = syscall(__NR_access, sample, F_OK); -- printf("access(\"%s\", F_OK) = %ld %s (%m)\n", -- sample, rc, errno2name()); -+ printf("%s%s(\"%s\"%s, F_OK) = %s\n", -+ my_secontext, "access", -+ sample, SECONTEXT_FILE(sample), -+ sprintrc(rc)); -+ -+ if (unlink(sample)) -+ perror_msg_and_fail("unlink: %s", sample); - - rc = syscall(__NR_access, sample, R_OK|W_OK|X_OK); -- printf("access(\"%s\", R_OK|W_OK|X_OK) = %ld %s (%m)\n", -- sample, rc, errno2name()); -+ printf("%s%s(\"%s\", R_OK|W_OK|X_OK) = %s\n", -+ my_secontext, "access", -+ sample, -+ sprintrc(rc)); - - leave_and_remove_subdir(); - -Index: strace-5.7/tests-mx32/chmod.c -=================================================================== ---- strace-5.7.orig/tests-mx32/chmod.c 2021-08-24 21:08:35.393312570 +0200 -+++ strace-5.7/tests-mx32/chmod.c 2021-08-24 21:08:43.275245858 +0200 -@@ -16,6 +16,8 @@ - # include - # include - -+# include "secontext.h" -+ - int - main(void) - { -@@ -25,22 +27,33 @@ - */ - create_and_enter_subdir("chmod_subdir"); - -- static const char fname[] = "chmod_test_file"; -- -- if (open(fname, O_CREAT|O_RDONLY, 0400) < 0) -- perror_msg_and_fail("open"); -- -- long rc = syscall(__NR_chmod, fname, 0600); -- printf("chmod(\"%s\", 0600) = %s\n", fname, sprintrc(rc)); -- -- if (unlink(fname)) -- perror_msg_and_fail("unlink"); -- -- rc = syscall(__NR_chmod, fname, 051); -- printf("chmod(\"%s\", 051) = %s\n", fname, sprintrc(rc)); -+ char *my_secontext = SECONTEXT_PID_MY(); - -- rc = syscall(__NR_chmod, fname, 004); -- printf("chmod(\"%s\", 004) = %s\n", fname, sprintrc(rc)); -+ static const char sample[] = "chmod_test_file"; -+ (void) unlink(sample); -+ if (open(sample, O_CREAT|O_RDONLY, 0400) < 0) -+ perror_msg_and_fail("open: %s", sample); -+ -+ long rc = syscall(__NR_chmod, sample, 0600); -+ printf("%s%s(\"%s\"%s, 0600) = %s\n", -+ my_secontext, "chmod", -+ sample, SECONTEXT_FILE(sample), -+ sprintrc(rc)); -+ -+ if (unlink(sample)) -+ perror_msg_and_fail("unlink: %s", sample); -+ -+ rc = syscall(__NR_chmod, sample, 051); -+ printf("%s%s(\"%s\", 051) = %s\n", -+ my_secontext, "chmod", -+ sample, -+ sprintrc(rc)); -+ -+ rc = syscall(__NR_chmod, sample, 004); -+ printf("%s%s(\"%s\", 004) = %s\n", -+ my_secontext, "chmod", -+ sample, -+ sprintrc(rc)); - - leave_and_remove_subdir(); - -Index: strace-5.7/tests-mx32/execve.c -=================================================================== ---- strace-5.7.orig/tests-mx32/execve.c 2021-08-24 21:08:35.394312561 +0200 -+++ strace-5.7/tests-mx32/execve.c 2021-08-24 21:08:43.275245858 +0200 -@@ -9,9 +9,12 @@ - */ - - #include "tests.h" -+#include - #include - #include - -+#include "secontext.h" -+ - static const char *errstr; - - static int -@@ -52,9 +55,16 @@ - - char ** const tail_argv = tail_memdup(argv, sizeof(argv)); - char ** const tail_envp = tail_memdup(envp, sizeof(envp)); -+ char *my_secontext = SECONTEXT_PID_MY(); -+ -+ (void) unlink(FILENAME); -+ if (open(FILENAME, O_RDONLY | O_CREAT, 0400) < 0) -+ perror_msg_and_fail("open"); -+ -+ char *FILENAME_secontext = SECONTEXT_FILE(FILENAME); - - call_execve(FILENAME, tail_argv, tail_envp); -- printf("execve(\"%s\"" -+ printf("%s%s(\"%s\"%s" - ", [\"%s\", \"%s\", \"%s\", %p, %p, %p, ... /* %p */]" - #if VERBOSE - ", [\"%s\", \"%s\", %p, %p, %p, ... /* %p */]" -@@ -62,7 +72,9 @@ - ", %p /* 5 vars, unterminated */" - #endif - ") = %s\n", -- Q_FILENAME, q_argv[0], q_argv[1], q_argv[2], -+ my_secontext, "execve", -+ Q_FILENAME, FILENAME_secontext, -+ q_argv[0], q_argv[1], q_argv[2], - argv[3], argv[4], argv[5], (char *) tail_argv + sizeof(argv) - #if VERBOSE - , q_envp[0], q_envp[1], envp[2], envp[3], envp[4], -@@ -77,14 +89,16 @@ - (void) q_envp; /* workaround for clang bug #33068 */ - - call_execve(FILENAME, tail_argv, tail_envp); -- printf("execve(\"%s\", [\"%s\", \"%s\", \"%s\"]" -+ printf("%s%s(\"%s\"%s, [\"%s\", \"%s\", \"%s\"]" - #if VERBOSE - ", [\"%s\", \"%s\"]" - #else - ", %p /* 2 vars */" - #endif - ") = %s\n", -- Q_FILENAME, q_argv[0], q_argv[1], q_argv[2] -+ my_secontext, "execve", -+ Q_FILENAME, FILENAME_secontext, -+ q_argv[0], q_argv[1], q_argv[2] - #if VERBOSE - , q_envp[0], q_envp[1] - #else -@@ -93,14 +107,16 @@ - , errstr); - - call_execve(FILENAME, tail_argv + 2, tail_envp + 1); -- printf("execve(\"%s\", [\"%s\"]" -+ printf("%s%s(\"%s\"%s, [\"%s\"]" - #if VERBOSE - ", [\"%s\"]" - #else - ", %p /* 1 var */" - #endif - ") = %s\n", -- Q_FILENAME, q_argv[2] -+ my_secontext, "execve", -+ Q_FILENAME, FILENAME_secontext, -+ q_argv[2] - #if VERBOSE - , q_envp[1] - #else -@@ -113,13 +129,15 @@ - *empty = NULL; - - call_execve(FILENAME, empty, empty); -- printf("execve(\"%s\", []" -+ printf("%s%s(\"%s\"%s, []" - #if VERBOSE - ", []" - #else - ", %p /* 0 vars */" - #endif -- ") = %s\n", Q_FILENAME -+ ") = %s\n", -+ my_secontext, "execve", -+ Q_FILENAME, FILENAME_secontext - #if !VERBOSE - , empty - #endif -@@ -143,7 +161,10 @@ - a[i] = b[i] = NULL; - - call_execve(FILENAME, a, b); -- printf("execve(\"%s\", [\"%.*s\"...", Q_FILENAME, DEFAULT_STRLEN, a[0]); -+ printf("%s%s(\"%s\"%s, [\"%.*s\"...", -+ my_secontext, "execve", -+ Q_FILENAME, FILENAME_secontext, -+ DEFAULT_STRLEN, a[0]); - for (i = 1; i < DEFAULT_STRLEN; ++i) - printf(", \"%s\"", a[i]); - #if VERBOSE -@@ -162,7 +183,10 @@ - printf(") = %s\n", errstr); - - call_execve(FILENAME, a + 1, b + 1); -- printf("execve(\"%s\", [\"%s\"", Q_FILENAME, a[1]); -+ printf("%s%s(\"%s\"%s, [\"%s\"", -+ my_secontext, "execve", -+ Q_FILENAME, FILENAME_secontext, -+ a[1]); - for (i = 2; i <= DEFAULT_STRLEN; ++i) - printf(", \"%s\"", a[i]); - #if VERBOSE -@@ -175,12 +199,17 @@ - #endif - printf(") = %s\n", errstr); - -+ if (unlink(FILENAME)) -+ perror_msg_and_fail("unlink"); -+ - call_execve(FILENAME, (char **) tail_argv[ARRAY_SIZE(q_argv)], efault); -- printf("execve(\"%s\", NULL, %p) = %s\n", -+ printf("%s%s(\"%s\", NULL, %p) = %s\n", -+ my_secontext, "execve", - Q_FILENAME, efault, errstr); - - call_execve(FILENAME, efault, NULL); -- printf("execve(\"%s\", %p, NULL) = %s\n", -+ printf("%s%s(\"%s\", %p, NULL) = %s\n", -+ my_secontext, "execve", - Q_FILENAME, efault, errstr); - - leave_and_remove_subdir(); -Index: strace-5.7/tests-mx32/execve.test -=================================================================== ---- strace-5.7.orig/tests-mx32/execve.test 2021-08-24 21:08:35.394312561 +0200 -+++ strace-5.7/tests-mx32/execve.test 2021-08-24 21:08:43.275245858 +0200 -@@ -11,7 +11,7 @@ - - check_prog grep - run_prog > /dev/null --run_strace -eexecve $args > "$EXP" -+run_strace -eexecve "$@" $args > "$EXP" - - # Filter out execve() call made by strace. - grep -F test.execve < "$LOG" > "$OUT" -Index: strace-5.7/tests-mx32/execveat.c -=================================================================== ---- strace-5.7.orig/tests-mx32/execveat.c 2021-08-24 21:08:35.394312561 +0200 -+++ strace-5.7/tests-mx32/execveat.c 2021-08-24 21:08:43.276245849 +0200 -@@ -13,9 +13,102 @@ - - #ifdef __NR_execveat - -+# include - # include - # include - -+# include "secontext.h" -+ -+static void -+tests_with_existing_file(void) -+{ -+ /* -+ * Make sure the current workdir of the tracee -+ * is different from the current workdir of the tracer. -+ */ -+ create_and_enter_subdir("execveat_subdir"); -+ -+ char *my_secontext = SECONTEXT_PID_MY(); -+ -+ static const char sample[] = "execveat_sample"; -+ (void) unlink(sample); -+ if (open(sample, O_RDONLY | O_CREAT, 0400) < 0) -+ perror_msg_and_fail("open"); -+ -+ char *sample_secontext = SECONTEXT_FILE(sample); -+ static const char *argv[] = { sample, NULL }; -+ -+ /* -+ * Tests with AT_FDCWD. -+ */ -+ -+ long rc = syscall(__NR_execveat, -100, sample, argv, NULL, 0); -+ printf("%s%s(AT_FDCWD, \"%s\"%s, [\"%s\"], NULL, 0) = %s\n", -+ my_secontext, "execveat", -+ sample, sample_secontext, -+ argv[0], -+ sprintrc(rc)); -+ -+ if (unlink(sample)) -+ perror_msg_and_fail("unlink"); -+ -+ rc = syscall(__NR_execveat, -100, sample, argv, NULL, 0); -+ printf("%s%s(AT_FDCWD, \"%s\", [\"%s\"], NULL, 0) = %s\n", -+ my_secontext, "execveat", -+ sample, -+ argv[0], -+ sprintrc(rc)); -+ -+ /* -+ * Tests with dirfd. -+ */ -+ -+ int cwd_fd = get_dir_fd("."); -+ char *cwd = get_fd_path(cwd_fd); -+ char *cwd_secontext = SECONTEXT_FILE("."); -+ char *sample_realpath = xasprintf("%s/%s", cwd, sample); -+ -+ /* no file */ -+ rc = syscall(__NR_execveat, cwd_fd, sample, argv, NULL, 0); -+ printf("%s%s(%d%s, \"%s\", [\"%s\"], NULL, 0) = %s\n", -+ my_secontext, "execveat", -+ cwd_fd, cwd_secontext, -+ sample, -+ argv[0], -+ sprintrc(rc)); -+ -+ if (open(sample, O_RDONLY | O_CREAT, 0400) < 0) -+ perror_msg_and_fail("open"); -+ -+ rc = syscall(__NR_execveat, cwd_fd, sample, argv, NULL, 0); -+ printf("%s%s(%d%s, \"%s\"%s, [\"%s\"], NULL, 0) = %s\n", -+ my_secontext, "execveat", -+ cwd_fd, cwd_secontext, -+ sample, sample_secontext, -+ argv[0], -+ sprintrc(rc)); -+ -+ /* cwd_fd ignored when path is absolute */ -+ if (chdir("../..")) -+ perror_msg_and_fail("chdir"); -+ -+ rc = syscall(__NR_execveat, cwd_fd, sample_realpath, argv, NULL, 0); -+ printf("%s%s(%d%s, \"%s\"%s, [\"%s\"], NULL, 0) = %s\n", -+ my_secontext, "execveat", -+ cwd_fd, cwd_secontext, -+ sample_realpath, sample_secontext, -+ argv[0], -+ sprintrc(rc)); -+ -+ if (fchdir(cwd_fd)) -+ perror_msg_and_fail("fchdir"); -+ -+ if (unlink(sample)) -+ perror_msg_and_fail("unlink"); -+ -+ leave_and_remove_subdir(); -+} -+ - # define FILENAME "test.execveat\nfilename" - # define Q_FILENAME "test.execveat\\nfilename" - -@@ -40,9 +133,10 @@ - { - const char ** const tail_argv = tail_memdup(argv, sizeof(argv)); - const char ** const tail_envp = tail_memdup(envp, sizeof(envp)); -+ char *my_secontext = SECONTEXT_PID_MY(); - - syscall(__NR_execveat, -100, FILENAME, tail_argv, tail_envp, 0x1100); -- printf("execveat(AT_FDCWD, \"%s\"" -+ printf("%s%s(AT_FDCWD, \"%s\"" - ", [\"%s\", \"%s\", \"%s\", %p, %p, %p, ... /* %p */]" - # if VERBOSE - ", [\"%s\", \"%s\", %p, %p, %p, ... /* %p */]" -@@ -50,6 +144,7 @@ - ", %p /* 5 vars, unterminated */" - # endif - ", AT_SYMLINK_NOFOLLOW|AT_EMPTY_PATH) = -1 %s (%m)\n", -+ my_secontext, "execveat", - Q_FILENAME, q_argv[0], q_argv[1], q_argv[2], - argv[3], argv[4], argv[5], (char *) tail_argv + sizeof(argv), - # if VERBOSE -@@ -65,13 +160,14 @@ - (void) q_envp; /* workaround for clang bug #33068 */ - - syscall(__NR_execveat, -100, FILENAME, tail_argv, tail_envp, 0x1100); -- printf("execveat(AT_FDCWD, \"%s\", [\"%s\", \"%s\", \"%s\"]" -+ printf("%s%s(AT_FDCWD, \"%s\", [\"%s\", \"%s\", \"%s\"]" - # if VERBOSE - ", [\"%s\", \"%s\"]" - # else - ", %p /* 2 vars */" - # endif - ", AT_SYMLINK_NOFOLLOW|AT_EMPTY_PATH) = -1 %s (%m)\n", -+ my_secontext, "execveat", - Q_FILENAME, q_argv[0], q_argv[1], q_argv[2], - # if VERBOSE - q_envp[0], q_envp[1], -@@ -81,13 +177,14 @@ - errno2name()); - - syscall(__NR_execveat, -100, FILENAME, tail_argv + 2, tail_envp + 1, 0x1100); -- printf("execveat(AT_FDCWD, \"%s\", [\"%s\"]" -+ printf("%s%s(AT_FDCWD, \"%s\", [\"%s\"]" - # if VERBOSE - ", [\"%s\"]" - # else - ", %p /* 1 var */" - # endif - ", AT_SYMLINK_NOFOLLOW|AT_EMPTY_PATH) = -1 %s (%m)\n", -+ my_secontext, "execveat", - Q_FILENAME, q_argv[2], - # if VERBOSE - q_envp[1], -@@ -101,13 +198,14 @@ - *empty = NULL; - - syscall(__NR_execveat, -100, FILENAME, empty, empty, 0x1100); -- printf("execveat(AT_FDCWD, \"%s\", []" -+ printf("%s%s(AT_FDCWD, \"%s\", []" - # if VERBOSE - ", []" - # else - ", %p /* 0 vars */" - # endif - ", AT_SYMLINK_NOFOLLOW|AT_EMPTY_PATH) = -1 %s (%m)\n", -+ my_secontext, "execveat", - Q_FILENAME, - # if !VERBOSE - empty, -@@ -132,7 +230,9 @@ - a[i] = b[i] = NULL; - - syscall(__NR_execveat, -100, FILENAME, a, b, 0x1100); -- printf("execveat(AT_FDCWD, \"%s\", [\"%.*s\"...", Q_FILENAME, DEFAULT_STRLEN, a[0]); -+ printf("%s%s(AT_FDCWD, \"%s\", [\"%.*s\"...", -+ my_secontext, "execveat", -+ Q_FILENAME, DEFAULT_STRLEN, a[0]); - for (i = 1; i < DEFAULT_STRLEN; ++i) - printf(", \"%s\"", a[i]); - # if VERBOSE -@@ -152,7 +252,9 @@ - errno2name()); - - syscall(__NR_execveat, -100, FILENAME, a + 1, b + 1, 0x1100); -- printf("execveat(AT_FDCWD, \"%s\", [\"%s\"", Q_FILENAME, a[1]); -+ printf("%s%s(AT_FDCWD, \"%s\", [\"%s\"", -+ my_secontext, "execveat", -+ Q_FILENAME, a[1]); - for (i = 2; i <= DEFAULT_STRLEN; ++i) - printf(", \"%s\"", a[i]); - # if VERBOSE -@@ -167,15 +269,19 @@ - errno2name()); - - syscall(__NR_execveat, -100, FILENAME, NULL, efault, 0x1100); -- printf("execveat(AT_FDCWD, \"%s\", NULL, %p" -+ printf("%s%s(AT_FDCWD, \"%s\", NULL, %p" - ", AT_SYMLINK_NOFOLLOW|AT_EMPTY_PATH) = -1 %s (%m)\n", -+ my_secontext, "execveat", - Q_FILENAME, efault, errno2name()); - - syscall(__NR_execveat, -100, FILENAME, efault, NULL, 0x1100); -- printf("execveat(AT_FDCWD, \"%s\", %p, NULL" -+ printf("%s%s(AT_FDCWD, \"%s\", %p, NULL" - ", AT_SYMLINK_NOFOLLOW|AT_EMPTY_PATH) = -1 %s (%m)\n", -+ my_secontext, "execveat", - Q_FILENAME, efault, errno2name()); - -+ tests_with_existing_file(); -+ - puts("+++ exited with 0 +++"); - return 0; - } -Index: strace-5.7/tests-mx32/faccessat.c -=================================================================== ---- strace-5.7.orig/tests-mx32/faccessat.c 2021-08-24 21:08:35.394312561 +0200 -+++ strace-5.7/tests-mx32/faccessat.c 2021-08-24 21:08:43.276245849 +0200 -@@ -12,12 +12,16 @@ - - #ifdef __NR_faccessat - --# include "xmalloc.h" - # include - # include - # include - --# ifndef FD_PATH -+# include "secontext.h" -+# include "xmalloc.h" -+ -+# ifdef FD_PATH -+# define YFLAG -+# else - # define FD_PATH "" - # endif - # ifndef SKIP_IF_PROC_IS_UNAVAILABLE -@@ -43,11 +47,130 @@ - return rc; - } - -+# ifndef PATH_TRACING -+static void -+tests_with_existing_file(void) -+{ -+ /* -+ * Make sure the current workdir of the tracee -+ * is different from the current workdir of the tracer. -+ */ -+ create_and_enter_subdir("faccessat_subdir"); -+ -+ char *my_secontext = SECONTEXT_PID_MY(); -+ -+ k_faccessat(-1, NULL, F_OK); -+ printf("%s%s(-1, NULL, F_OK) = %s\n", -+ my_secontext, "faccessat", errstr); -+ -+ static const char sample[] = "faccessat_sample"; -+ (void) unlink(sample); -+ int fd = open(sample, O_CREAT|O_RDONLY, 0400); -+ if (fd == -1) -+ perror_msg_and_fail("open"); -+ close(fd); -+ char *sample_secontext = SECONTEXT_FILE(sample); -+ -+ /* -+ * Tests with AT_FDCWD. -+ */ -+ -+ k_faccessat(-100, sample, F_OK); -+ printf("%s%s(AT_FDCWD, \"%s\"%s, F_OK) = %s\n", -+ my_secontext, "faccessat", -+ sample, sample_secontext, -+ errstr); -+ -+ if (unlink(sample)) -+ perror_msg_and_fail("unlink"); -+ -+ k_faccessat(-100, sample, F_OK); -+ printf("%s%s(AT_FDCWD, \"%s\", F_OK) = %s\n", -+ my_secontext, "faccessat", -+ sample, -+ errstr); -+ -+ /* -+ * Tests with dirfd. -+ */ -+ -+ int cwd_fd = get_dir_fd("."); -+ char *cwd = get_fd_path(cwd_fd); -+ char *cwd_secontext = SECONTEXT_FILE("."); -+ char *sample_realpath = xasprintf("%s/%s", cwd, sample); -+ -+ /* no file */ -+ k_faccessat(cwd_fd, sample, F_OK); -+# ifdef YFLAG -+ printf("%s%s(%d<%s>%s, \"%s\", F_OK) = %s\n", -+# else -+ printf("%s%s(%d%s, \"%s\", F_OK) = %s\n", -+# endif -+ my_secontext, "faccessat", -+ cwd_fd, -+# ifdef YFLAG -+ cwd, -+# endif -+ cwd_secontext, -+ sample, -+ errstr); -+ -+ fd = open(sample, O_CREAT|O_RDONLY, 0400); -+ if (fd == -1) -+ perror_msg_and_fail("open"); -+ close(fd); -+ -+ k_faccessat(cwd_fd, sample, F_OK); -+# ifdef YFLAG -+ printf("%s%s(%d<%s>%s, \"%s\"%s, F_OK) = %s\n", -+# else -+ printf("%s%s(%d%s, \"%s\"%s, F_OK) = %s\n", -+# endif -+ my_secontext, "faccessat", -+ cwd_fd, -+# ifdef YFLAG -+ cwd, -+# endif -+ cwd_secontext, -+ sample, sample_secontext, -+ errstr); -+ -+ /* cwd_fd ignored when path is absolute */ -+ if (chdir("../..")) -+ perror_msg_and_fail("chdir"); -+ -+ k_faccessat(cwd_fd, sample_realpath, F_OK); -+# ifdef YFLAG -+ printf("%s%s(%d<%s>%s, \"%s\"%s, F_OK) = %s\n", -+# else -+ printf("%s%s(%d%s, \"%s\"%s, F_OK) = %s\n", -+# endif -+ my_secontext, "faccessat", -+ cwd_fd, -+# ifdef YFLAG -+ cwd, -+# endif -+ cwd_secontext, -+ sample_realpath, sample_secontext, -+ errstr); -+ -+ if (fchdir(cwd_fd)) -+ perror_msg_and_fail("fchdir"); -+ -+ if (unlink(sample)) -+ perror_msg_and_fail("unlink"); -+ -+ leave_and_remove_subdir(); -+} -+# endif -+ - int - main(void) - { - SKIP_IF_PROC_IS_UNAVAILABLE; - -+# ifndef TEST_SECONTEXT -+ - TAIL_ALLOC_OBJECT_CONST_PTR(const char, unterminated); - char *unterminated_str = xasprintf("%p", unterminated); - const void *const efault = unterminated + 1; -@@ -120,10 +243,10 @@ - k_faccessat(dirfds[dirfd_i].val, - paths[path_i].val, - modes[mode_i].val); --# ifdef PATH_TRACING -+# ifdef PATH_TRACING - if (dirfds[dirfd_i].val == fd || - paths[path_i].val == fd_path) --# endif -+# endif - printf("faccessat(%s, %s, %s) = %s\n", - dirfds[dirfd_i].str, - paths[path_i].str, -@@ -133,6 +256,12 @@ - } - } - -+# endif /* !TEST_SECONTEXT */ -+ -+# ifndef PATH_TRACING -+ tests_with_existing_file(); -+# endif -+ - puts("+++ exited with 0 +++"); - return 0; - } -Index: strace-5.7/tests-mx32/faccessat.test -=================================================================== ---- strace-5.7.orig/tests-mx32/faccessat.test 2021-08-24 21:08:35.395312553 +0200 -+++ strace-5.7/tests-mx32/faccessat.test 2021-08-24 21:08:43.276245849 +0200 -@@ -15,5 +15,5 @@ - run_strace -a23 --trace=faccessat "$@" $args > "$EXP" - - # Filter out faccessat() calls made by ld.so and libc. --sed -n '/^faccessat(-1, NULL,/,$p' < "$LOG" > "$OUT" -+sed -n '/faccessat(-1, NULL,/,$p' < "$LOG" > "$OUT" - match_diff "$OUT" "$EXP" -Index: strace-5.7/tests-mx32/fanotify_mark.c -=================================================================== ---- strace-5.7.orig/tests-mx32/fanotify_mark.c 2021-08-24 21:07:01.122112055 +0200 -+++ strace-5.7/tests-mx32/fanotify_mark.c 2021-08-24 21:08:43.276245849 +0200 -@@ -3,7 +3,7 @@ - * - * Copyright (c) 2015-2016 Dmitry V. Levin - * Copyright (c) 2016 Eugene Syromyatnikov -- * Copyright (c) 2015-2020 The strace developers. -+ * Copyright (c) 2015-2021 The strace developers. - * All rights reserved. - * - * SPDX-License-Identifier: GPL-2.0-or-later -@@ -21,6 +21,8 @@ - # include - # include - -+# include "secontext.h" -+ - # if XLAT_RAW - # define str_fan_mark_add "0x1" - # define str_fan_modify_ondir "0x40000002" -@@ -35,6 +37,7 @@ - # define str_at_fdcwd "AT_FDCWD" - # endif - -+# ifndef TEST_SECONTEXT - /* Performs fanotify_mark call via the syscall interface. */ - static void - do_call(kernel_ulong_t fd, kernel_ulong_t flags, const char *flags_str, -@@ -44,18 +47,18 @@ - long rc; - - rc = syscall(__NR_fanotify_mark, fd, flags, --# if (LONG_MAX > INT_MAX) \ -- || (defined __x86_64__ && defined __ILP32__) \ -- || defined LINUX_MIPSN32 -+# if (LONG_MAX > INT_MAX) \ -+ || (defined __x86_64__ && defined __ILP32__) \ -+ || defined LINUX_MIPSN32 - mask, --# else -+# else - /* arch/parisc/kernel/sys_parisc32.c, commit ab8a261b */ --# ifdef HPPA -+# ifdef HPPA - LL_VAL_TO_PAIR((mask << 32) | (mask >> 32)), --# else -+# else - LL_VAL_TO_PAIR(mask), -+# endif - # endif --# endif - dirfd, path); - - printf("fanotify_mark(%d, %s, %s, %s, %s) = %s\n", -@@ -68,12 +71,14 @@ - const char *str; - }; - --# define STR16 "0123456789abcdef" --# define STR64 STR16 STR16 STR16 STR16 -+# define STR16 "0123456789abcdef" -+# define STR64 STR16 STR16 STR16 STR16 -+# endif /* !TEST_SECONTEXT */ - - int - main(void) - { -+# ifndef TEST_SECONTEXT - enum { - PATH1_SIZE = 64, - }; -@@ -87,47 +92,47 @@ - { F8ILL_KULONG_MASK, "0" }, - { (kernel_ulong_t) 0xdec0deddefacec00ULL, - "0xefacec00" --# if !XLAT_RAW -+# if !XLAT_RAW - " /* FAN_MARK_??? */" --# endif -+# endif - }, - { (kernel_ulong_t) 0xda7a105700000040ULL, --# if XLAT_RAW -+# if XLAT_RAW - "0x40" --# elif XLAT_VERBOSE -+# elif XLAT_VERBOSE - "0x40 /* FAN_MARK_IGNORED_SURV_MODIFY */" --# else -+# else - "FAN_MARK_IGNORED_SURV_MODIFY" --# endif -+# endif - }, - { (kernel_ulong_t) 0xbadc0deddeadffffULL, --# if XLAT_RAW || XLAT_VERBOSE -+# if XLAT_RAW || XLAT_VERBOSE - "0xdeadffff" --# endif --# if XLAT_VERBOSE -+# endif -+# if XLAT_VERBOSE - " /* " --# endif --# if !XLAT_RAW -+# endif -+# if !XLAT_RAW - "FAN_MARK_ADD|FAN_MARK_REMOVE|FAN_MARK_DONT_FOLLOW|" - "FAN_MARK_ONLYDIR|FAN_MARK_MOUNT|FAN_MARK_IGNORED_MASK|" - "FAN_MARK_IGNORED_SURV_MODIFY|FAN_MARK_FLUSH|" - "FAN_MARK_FILESYSTEM|0xdeadfe00" --# endif --# if XLAT_VERBOSE -+# endif -+# if XLAT_VERBOSE - " */" --# endif -+# endif - }, - }; - static const struct strval64 masks[] = { - { ARG_ULL_STR(0) }, - { 0xdeadfeedffffffffULL, --# if XLAT_RAW || XLAT_VERBOSE -+# if XLAT_RAW || XLAT_VERBOSE - "0xdeadfeedffffffff" --# endif --# if XLAT_VERBOSE -+# endif -+# if XLAT_VERBOSE - " /* " --# endif --# if !XLAT_RAW -+# endif -+# if !XLAT_RAW - "FAN_ACCESS|" - "FAN_MODIFY|" - "FAN_ATTRIB|" -@@ -149,27 +154,27 @@ - "FAN_ONDIR|" - "FAN_EVENT_ON_CHILD|" - "0xdeadfeedb7f0a000" --# endif --# if XLAT_VERBOSE -+# endif -+# if XLAT_VERBOSE - " */" --# endif -+# endif - }, - { ARG_ULL_STR(0xffffffffb7f0a000) --# if !XLAT_RAW -+# if !XLAT_RAW - " /* FAN_??? */" --# endif -+# endif - }, - }; - static const struct strval dirfds[] = { - { (kernel_ulong_t) 0xfacefeed00000001ULL, "1" }, - { (kernel_ulong_t) 0xdec0ded0ffffffffULL, --# if XLAT_RAW -+# if XLAT_RAW - "-1" --# elif XLAT_VERBOSE -+# elif XLAT_VERBOSE - "-1 /* FAN_NOFD */" --# else -+# else - "FAN_NOFD" --# endif -+# endif - }, - { (kernel_ulong_t) 0xbadfacedffffff9cULL, str_at_fdcwd }, - { (kernel_ulong_t) 0xdefaced1beeff00dULL, "-1091571699" }, -@@ -202,12 +207,6 @@ - snprintf(bogus_path1_after_addr, sizeof(bogus_path1_after_addr), "%p", - bogus_path1 + PATH1_SIZE); - -- rc = fanotify_mark(-1, FAN_MARK_ADD, FAN_MODIFY | FAN_ONDIR, -- -100, "."); -- printf("fanotify_mark(-1, %s, %s, %s, \".\") = %s\n", -- str_fan_mark_add, str_fan_modify_ondir, str_at_fdcwd, -- sprintrc(rc)); -- - for (i = 0; i < ARRAY_SIZE(fds); i++) { - for (j = 0; j < ARRAY_SIZE(flags); j++) { - for (k = 0; k < ARRAY_SIZE(masks); k++) { -@@ -226,6 +225,40 @@ - } - } - } -+# else /* TEST_SECONTEXT */ -+ int rc; -+# endif -+ /* -+ * Test with AT_FDCWD. -+ */ -+ -+ char *my_secontext = SECONTEXT_PID_MY(); -+ char path[] = "."; -+ char *path_secontext = SECONTEXT_FILE(path); -+ -+ rc = fanotify_mark(-1, FAN_MARK_ADD, FAN_MODIFY | FAN_ONDIR, -+ -100, path); -+ printf("%s%s(-1, %s, %s, %s, \"%s\"%s) = %s\n", -+ my_secontext, "fanotify_mark", -+ str_fan_mark_add, str_fan_modify_ondir, str_at_fdcwd, -+ path, path_secontext, -+ sprintrc(rc)); -+ -+ /* -+ * Test with dirfd. -+ */ -+ -+ int cwd_fd = get_dir_fd("."); -+ char *cwd_secontext = SECONTEXT_FILE("."); -+ -+ rc = fanotify_mark(-1, FAN_MARK_ADD, FAN_MODIFY | FAN_ONDIR, -+ cwd_fd, path); -+ printf("%s%s(-1, %s, %s, %d%s, \"%s\"%s) = %s\n", -+ my_secontext, "fanotify_mark", -+ str_fan_mark_add, str_fan_modify_ondir, -+ cwd_fd, cwd_secontext, -+ path, path_secontext, -+ sprintrc(rc)); - - puts("+++ exited with 0 +++"); - return 0; -Index: strace-5.7/tests-mx32/fchmod.c -=================================================================== ---- strace-5.7.orig/tests-mx32/fchmod.c 2021-08-24 21:08:35.395312553 +0200 -+++ strace-5.7/tests-mx32/fchmod.c 2021-08-24 21:08:43.277245841 +0200 -@@ -18,6 +18,8 @@ - # include - # include - -+# include "secontext.h" -+ - int - main(void) - { -@@ -27,6 +29,8 @@ - */ - create_and_enter_subdir("fchmod_subdir"); - -+ char *my_secontext = SECONTEXT_PID_MY(); -+ - static const char sample[] = "fchmod_sample_file"; - (void) unlink(sample); - int fd = open(sample, O_CREAT|O_RDONLY, 0400); -@@ -37,16 +41,19 @@ - char *sample_realpath = get_fd_path(fd); - # endif - -+ const char *sample_secontext = SECONTEXT_FILE(sample); - long rc = syscall(__NR_fchmod, fd, 0600); - # ifdef YFLAG -- printf("fchmod(%d<%s>, 0600) = %s\n", -+ printf("%s%s(%d<%s>%s, 0600) = %s\n", - # else -- printf("fchmod(%d, 0600) = %s\n", -+ printf("%s%s(%d%s, 0600) = %s\n", - # endif -+ my_secontext, "fchmod", - fd, - # ifdef YFLAG - sample_realpath, - # endif -+ sample_secontext, - sprintrc(rc)); - - if (unlink(sample)) -@@ -54,26 +61,30 @@ - - rc = syscall(__NR_fchmod, fd, 051); - # ifdef YFLAG -- printf("fchmod(%d<%s (deleted)>, 051) = %s\n", -+ printf("%s%s(%d<%s (deleted)>%s, 051) = %s\n", - # else -- printf("fchmod(%d, 051) = %s\n", -+ printf("%s%s(%d%s, 051) = %s\n", - # endif -+ my_secontext, "fchmod", - fd, - # ifdef YFLAG - sample_realpath, - # endif -+ sample_secontext, - sprintrc(rc)); - - rc = syscall(__NR_fchmod, fd, 004); - # ifdef YFLAG -- printf("fchmod(%d<%s (deleted)>, 004) = %s\n", -+ printf("%s%s(%d<%s (deleted)>%s, 004) = %s\n", - # else -- printf("fchmod(%d, 004) = %s\n", -+ printf("%s%s(%d%s, 004) = %s\n", - # endif -+ my_secontext, "fchmod", - fd, - # ifdef YFLAG - sample_realpath, - # endif -+ sample_secontext, - sprintrc(rc)); - - leave_and_remove_subdir(); -Index: strace-5.7/tests-mx32/fchmodat.c -=================================================================== ---- strace-5.7.orig/tests-mx32/fchmodat.c 2021-08-24 21:08:35.396312544 +0200 -+++ strace-5.7/tests-mx32/fchmodat.c 2021-08-24 21:08:43.277245841 +0200 -@@ -17,6 +17,8 @@ - # include - # include - -+# include "secontext.h" -+ - int - main(void) - { -@@ -26,26 +28,81 @@ - */ - create_and_enter_subdir("fchmodat_subdir"); - -- static const char sample[] = "fchmodat_sample"; -+ char *my_secontext = SECONTEXT_PID_MY(); - -+ static const char sample[] = "fchmodat_sample_file"; - if (open(sample, O_RDONLY | O_CREAT, 0400) < 0) - perror_msg_and_fail("open"); - -+ char *sample_secontext = SECONTEXT_FILE(sample); -+ -+ /* -+ * Tests with AT_FDCWD. -+ */ -+ - long rc = syscall(__NR_fchmodat, -100, sample, 0600); -- printf("fchmodat(AT_FDCWD, \"%s\", 0600) = %s\n", -- sample, sprintrc(rc)); -+ printf("%s%s(AT_FDCWD, \"%s\"%s, 0600) = %s\n", -+ my_secontext, "fchmodat", -+ sample, sample_secontext, -+ sprintrc(rc)); - - if (unlink(sample)) - perror_msg_and_fail("unlink"); - - rc = syscall(__NR_fchmodat, -100, sample, 051); -- printf("fchmodat(AT_FDCWD, \"%s\", 051) = %s\n", -+ printf("%s%s(AT_FDCWD, \"%s\", 051) = %s\n", -+ my_secontext, "fchmodat", - sample, sprintrc(rc)); - - rc = syscall(__NR_fchmodat, -100, sample, 004); -- printf("fchmodat(AT_FDCWD, \"%s\", 004) = %s\n", -+ printf("%s%s(AT_FDCWD, \"%s\", 004) = %s\n", -+ my_secontext, "fchmodat", - sample, sprintrc(rc)); - -+ /* -+ * Tests with dirfd. -+ */ -+ -+ int cwd_fd = get_dir_fd("."); -+ char *cwd = get_fd_path(cwd_fd); -+ char *cwd_secontext = SECONTEXT_FILE("."); -+ char *sample_realpath = xasprintf("%s/%s", cwd, sample); -+ -+ /* no file */ -+ rc = syscall(__NR_fchmodat, cwd_fd, sample, 0400); -+ printf("%s%s(%d%s, \"%s\", 0400) = %s\n", -+ my_secontext, "fchmodat", -+ cwd_fd, cwd_secontext, -+ sample, -+ sprintrc(rc)); -+ -+ if (open(sample, O_RDONLY | O_CREAT, 0400) < 0) -+ perror_msg_and_fail("open"); -+ -+ rc = syscall(__NR_fchmodat, cwd_fd, sample, 0400); -+ printf("%s%s(%d%s, \"%s\"%s, 0400) = %s\n", -+ my_secontext, "fchmodat", -+ cwd_fd, cwd_secontext, -+ sample, sample_secontext, -+ sprintrc(rc)); -+ -+ /* cwd_fd ignored when path is absolute */ -+ if (chdir("../..")) -+ perror_msg_and_fail("chdir"); -+ -+ rc = syscall(__NR_fchmodat, cwd_fd, sample_realpath, 0400); -+ printf("%s%s(%d%s, \"%s\"%s, 0400) = %s\n", -+ my_secontext, "fchmodat", -+ cwd_fd, cwd_secontext, -+ sample_realpath, sample_secontext, -+ sprintrc(rc)); -+ -+ if (fchdir(cwd_fd)) -+ perror_msg_and_fail("fchdir"); -+ -+ if (unlink(sample)) -+ perror_msg_and_fail("unlink"); -+ - leave_and_remove_subdir(); - - puts("+++ exited with 0 +++"); -Index: strace-5.7/tests-mx32/fchownat.c -=================================================================== ---- strace-5.7.orig/tests-mx32/fchownat.c 2021-08-24 21:08:35.396312544 +0200 -+++ strace-5.7/tests-mx32/fchownat.c 2021-08-24 21:08:43.277245841 +0200 -@@ -17,6 +17,8 @@ - # include - # include - -+# include "secontext.h" -+ - int - main(void) - { -@@ -26,25 +28,86 @@ - */ - create_and_enter_subdir("fchownat_subdir"); - -- static const char sample[] = "fchownat_sample"; -+ char *my_secontext = SECONTEXT_PID_MY(); - uid_t uid = geteuid(); - uid_t gid = getegid(); - -- if (open(sample, O_RDONLY | O_CREAT, 0400) == -1) -+ static const char sample[] = "fchownat_sample"; -+ int fd = open(sample, O_RDONLY | O_CREAT, 0400); -+ if (fd == -1) - perror_msg_and_fail("open"); -+ close(fd); -+ -+ char *sample_secontext = SECONTEXT_FILE(sample); -+ -+ /* -+ * Tests with AT_FDCWD. -+ */ - - long rc = syscall(__NR_fchownat, AT_FDCWD, sample, uid, gid, 0); -- printf("fchownat(AT_FDCWD, \"%s\", %d, %d, 0) = %s\n", -- sample, uid, gid, sprintrc(rc)); -+ printf("%s%s(AT_FDCWD, \"%s\"%s, %d, %d, 0) = %s\n", -+ my_secontext, "fchownat", -+ sample, sample_secontext, -+ uid, gid, sprintrc(rc)); - - if (unlink(sample)) - perror_msg_and_fail("unlink"); - - rc = syscall(__NR_fchownat, AT_FDCWD, - sample, -1, -1L, AT_SYMLINK_NOFOLLOW); -- printf("fchownat(AT_FDCWD, \"%s\", -1, -1, AT_SYMLINK_NOFOLLOW) = %s\n", -+ printf("%s%s(AT_FDCWD, \"%s\", -1, -1, AT_SYMLINK_NOFOLLOW) = %s\n", -+ my_secontext, "fchownat", - sample, sprintrc(rc)); - -+ /* -+ * Tests with dirfd. -+ */ -+ -+ int cwd_fd = get_dir_fd("."); -+ char *cwd = get_fd_path(cwd_fd); -+ char *cwd_secontext = SECONTEXT_FILE("."); -+ char *sample_realpath = xasprintf("%s/%s", cwd, sample); -+ -+ /* no file */ -+ rc = syscall(__NR_fchownat, cwd_fd, sample, uid, gid, 0); -+ printf("%s%s(%d%s, \"%s\", %d, %d, 0) = %s\n", -+ my_secontext, "fchownat", -+ cwd_fd, cwd_secontext, -+ sample, -+ uid, gid, -+ sprintrc(rc)); -+ -+ fd = open(sample, O_RDONLY | O_CREAT, 0400); -+ if (fd == -1) -+ perror_msg_and_fail("open"); -+ close(fd); -+ -+ rc = syscall(__NR_fchownat, cwd_fd, sample, uid, gid, 0); -+ printf("%s%s(%d%s, \"%s\"%s, %d, %d, 0) = %s\n", -+ my_secontext, "fchownat", -+ cwd_fd, cwd_secontext, -+ sample, sample_secontext, -+ uid, gid, -+ sprintrc(rc)); -+ -+ /* cwd_fd ignored when path is absolute */ -+ if (chdir("../..")) -+ perror_msg_and_fail("chdir"); -+ -+ rc = syscall(__NR_fchownat, cwd_fd, sample_realpath, uid, gid, 0); -+ printf("%s%s(%d%s, \"%s\"%s, %d, %d, 0) = %s\n", -+ my_secontext, "fchownat", -+ cwd_fd, cwd_secontext, -+ sample_realpath, sample_secontext, -+ uid, gid, -+ sprintrc(rc)); -+ -+ if (fchdir(cwd_fd)) -+ perror_msg_and_fail("fchdir"); -+ -+ if (unlink(sample)) -+ perror_msg_and_fail("unlink"); -+ - leave_and_remove_subdir(); - - puts("+++ exited with 0 +++"); -Index: strace-5.7/tests-mx32/file_handle.c -=================================================================== ---- strace-5.7.orig/tests-mx32/file_handle.c 2021-08-24 21:08:35.396312544 +0200 -+++ strace-5.7/tests-mx32/file_handle.c 2021-08-24 21:08:43.277245841 +0200 -@@ -21,6 +21,8 @@ - # include - # include - -+# include "secontext.h" -+ - enum assert_rc { - ASSERT_NONE, - ASSERT_SUCCESS, -@@ -48,6 +50,7 @@ - printf("..."); - } - -+# ifndef TEST_SECONTEXT - void - do_name_to_handle_at(kernel_ulong_t dirfd, const char *dirfd_str, - kernel_ulong_t pathname, const char *pathname_str, -@@ -129,6 +132,7 @@ - - printf("%s\n", sprintrc(rc)); - } -+# endif /* !TEST_SECONTEXT */ - - struct strval { - kernel_ulong_t val; -@@ -141,12 +145,86 @@ - int - main(void) - { -+ char *my_secontext = SECONTEXT_PID_MY(); - enum { - PATH1_SIZE = 64, - }; - - static const kernel_ulong_t fdcwd = - (kernel_ulong_t) 0x87654321ffffff9cULL; -+ -+ struct file_handle *handle = -+ tail_alloc(sizeof(struct file_handle) + MAX_HANDLE_SZ); -+ struct file_handle *handle_0 = -+ tail_alloc(sizeof(struct file_handle) + 0); -+ struct file_handle *handle_8 = -+ tail_alloc(sizeof(struct file_handle) + 8); -+ struct file_handle *handle_128 = -+ tail_alloc(sizeof(struct file_handle) + 128); -+ struct file_handle *handle_256 = -+ tail_alloc(sizeof(struct file_handle) + 256); -+ TAIL_ALLOC_OBJECT_CONST_PTR(int, bogus_mount_id); -+ -+ char handle_0_addr[sizeof("0x") + sizeof(void *) * 2]; -+ -+ const int flags = 0x400; -+ int mount_id; -+ -+ handle_0->handle_bytes = 256; -+ handle_8->handle_bytes = 0; -+ handle_128->handle_bytes = 128; -+ handle_256->handle_bytes = 256; -+ -+ fill_memory((char *) handle_128 + sizeof(struct file_handle), 128); -+ fill_memory((char *) handle_256 + sizeof(struct file_handle), 256); -+ -+ snprintf(handle_0_addr, sizeof(handle_0_addr), "%p", -+ handle_0 + sizeof(struct file_handle)); -+ -+ handle->handle_bytes = 0; -+ -+ char path[] = "."; -+ char *path_secontext = SECONTEXT_FILE(path); -+ -+ assert(syscall(__NR_name_to_handle_at, fdcwd, path, handle, &mount_id, -+ flags | 1) == -1); -+ if (EINVAL != errno) -+ perror_msg_and_skip("name_to_handle_at"); -+ printf("%s%s(AT_FDCWD, \"%s\"%s, {handle_bytes=0}, %p" -+ ", AT_SYMLINK_FOLLOW|0x1) = -1 EINVAL (%m)\n", -+ my_secontext, "name_to_handle_at", -+ path, path_secontext, -+ &mount_id); -+ -+ assert(syscall(__NR_name_to_handle_at, fdcwd, path, handle, &mount_id, -+ flags) == -1); -+ if (EOVERFLOW != errno) -+ perror_msg_and_skip("name_to_handle_at"); -+ printf("%s%s(AT_FDCWD, \"%s\"%s, {handle_bytes=0 => %u}" -+ ", %p, AT_SYMLINK_FOLLOW) = -1 EOVERFLOW (%m)\n", -+ my_secontext, "name_to_handle_at", -+ path, path_secontext, -+ handle->handle_bytes, &mount_id); -+ -+ assert(syscall(__NR_name_to_handle_at, fdcwd, path, handle, &mount_id, -+ flags) == 0); -+ printf("%s%s(AT_FDCWD, \"%s\"%s, {handle_bytes=%u" -+ ", handle_type=%d, f_handle=", -+ my_secontext, "name_to_handle_at", -+ path, path_secontext, -+ handle->handle_bytes, handle->handle_type); -+ print_handle_data(handle->f_handle, handle->handle_bytes); -+ printf("}, [%d], AT_SYMLINK_FOLLOW) = 0\n", mount_id); -+ -+ printf("%s%s(-1, {handle_bytes=%u, handle_type=%d, f_handle=", -+ my_secontext, "open_by_handle_at", -+ handle->handle_bytes, handle->handle_type); -+ print_handle_data(handle->f_handle, handle->handle_bytes); -+ int rc = syscall(__NR_open_by_handle_at, -1, handle, -+ O_RDONLY | O_DIRECTORY); -+ printf("}, O_RDONLY|O_DIRECTORY) = %d %s (%m)\n", rc, errno2name()); -+ -+# ifndef TEST_SECONTEXT - static const struct strval dirfds[] = { - { (kernel_ulong_t) 0xdeadca57badda7a1ULL, "-1159878751" }, - { (kernel_ulong_t) 0x12345678ffffff9cULL, "AT_FDCWD" }, -@@ -171,29 +249,11 @@ - }; - - static const char str64[] = STR64; -- -- - char *bogus_path1 = tail_memdup(str64, PATH1_SIZE); - char *bogus_path2 = tail_memdup(str64, sizeof(str64)); -- -- struct file_handle *handle = -- tail_alloc(sizeof(struct file_handle) + MAX_HANDLE_SZ); -- struct file_handle *handle_0 = -- tail_alloc(sizeof(struct file_handle) + 0); -- struct file_handle *handle_8 = -- tail_alloc(sizeof(struct file_handle) + 8); -- struct file_handle *handle_128 = -- tail_alloc(sizeof(struct file_handle) + 128); -- struct file_handle *handle_256 = -- tail_alloc(sizeof(struct file_handle) + 256); -- TAIL_ALLOC_OBJECT_CONST_PTR(int, bogus_mount_id); -- -- char handle_0_addr[sizeof("0x") + sizeof(void *) * 2]; -- - char bogus_path1_addr[sizeof("0x") + sizeof(void *) * 2]; - char bogus_path1_after_addr[sizeof("0x") + sizeof(void *) * 2]; - -- - struct strval paths[] = { - { (kernel_ulong_t) 0, "NULL" }, - { (kernel_ulong_t) (uintptr_t) (bogus_path1 + PATH1_SIZE), -@@ -229,62 +289,16 @@ - (kernel_ulong_t) (uintptr_t) bogus_mount_id, - }; - -- const int flags = 0x400; -- int mount_id; - unsigned int i; - unsigned int j; - unsigned int k; - unsigned int l; - unsigned int m; - -- - snprintf(bogus_path1_addr, sizeof(bogus_path1_addr), "%p", bogus_path1); - snprintf(bogus_path1_after_addr, sizeof(bogus_path1_after_addr), "%p", - bogus_path1 + PATH1_SIZE); - -- handle_0->handle_bytes = 256; -- handle_8->handle_bytes = 0; -- handle_128->handle_bytes = 128; -- handle_256->handle_bytes = 256; -- -- fill_memory((char *) handle_128 + sizeof(struct file_handle), 128); -- fill_memory((char *) handle_256 + sizeof(struct file_handle), 256); -- -- snprintf(handle_0_addr, sizeof(handle_0_addr), "%p", -- handle_0 + sizeof(struct file_handle)); -- -- handle->handle_bytes = 0; -- -- assert(syscall(__NR_name_to_handle_at, fdcwd, ".", handle, &mount_id, -- flags | 1) == -1); -- if (EINVAL != errno) -- perror_msg_and_skip("name_to_handle_at"); -- printf("name_to_handle_at(AT_FDCWD, \".\", {handle_bytes=0}, %p" -- ", AT_SYMLINK_FOLLOW|0x1) = -1 EINVAL (%m)\n", &mount_id); -- -- assert(syscall(__NR_name_to_handle_at, fdcwd, ".", handle, &mount_id, -- flags) == -1); -- if (EOVERFLOW != errno) -- perror_msg_and_skip("name_to_handle_at"); -- printf("name_to_handle_at(AT_FDCWD, \".\", {handle_bytes=0 => %u}" -- ", %p, AT_SYMLINK_FOLLOW) = -1 EOVERFLOW (%m)\n", -- handle->handle_bytes, &mount_id); -- -- assert(syscall(__NR_name_to_handle_at, fdcwd, ".", handle, &mount_id, -- flags) == 0); -- printf("name_to_handle_at(AT_FDCWD, \".\", {handle_bytes=%u" -- ", handle_type=%d, f_handle=", -- handle->handle_bytes, handle->handle_type); -- print_handle_data(handle->f_handle, handle->handle_bytes); -- printf("}, [%d], AT_SYMLINK_FOLLOW) = 0\n", mount_id); -- -- printf("open_by_handle_at(-1, {handle_bytes=%u, handle_type=%d" -- ", f_handle=", handle->handle_bytes, handle->handle_type); -- print_handle_data(handle->f_handle, handle->handle_bytes); -- int rc = syscall(__NR_open_by_handle_at, -1, handle, -- O_RDONLY | O_DIRECTORY); -- printf("}, O_RDONLY|O_DIRECTORY) = %d %s (%m)\n", rc, errno2name()); -- - for (i = 0; i < ARRAY_SIZE(dirfds); i++) { - for (j = 0; j < ARRAY_SIZE(paths); j++) { - for (k = 0; k < ARRAY_SIZE(name_handles); k++) { -@@ -320,6 +334,68 @@ - } - } - } -+# endif -+ -+ /* -+ * Tests with dirfd. -+ */ -+ -+ int cwd_fd = get_dir_fd("."); -+ char *cwd = get_fd_path(cwd_fd); -+ char *cwd_secontext = SECONTEXT_FILE("."); -+ -+ assert(syscall(__NR_name_to_handle_at, cwd_fd, path, handle, &mount_id, -+ flags) == 0); -+ printf("%s%s(%d%s, \"%s\"%s, {handle_bytes=%u, handle_type=%d" -+ ", f_handle=", -+ my_secontext, "name_to_handle_at", -+ cwd_fd, cwd_secontext, -+ path, path_secontext, -+ handle->handle_bytes, handle->handle_type); -+ print_handle_data((unsigned char *) handle + -+ sizeof(struct file_handle), -+ handle->handle_bytes); -+ printf("}, [%d], AT_SYMLINK_FOLLOW) = 0\n", mount_id); -+ -+ printf("%s%s(-1, {handle_bytes=%u, handle_type=%d, f_handle=", -+ my_secontext, "open_by_handle_at", -+ handle->handle_bytes, handle->handle_type); -+ print_handle_data((unsigned char *) handle + -+ sizeof(struct file_handle), -+ handle->handle_bytes); -+ rc = syscall(__NR_open_by_handle_at, -1, handle, -+ O_RDONLY | O_DIRECTORY); -+ printf("}, O_RDONLY|O_DIRECTORY) = %s\n", sprintrc(rc)); -+ -+ /* cwd_fd ignored when path is absolute */ -+ if (chdir("..")) -+ perror_msg_and_fail("chdir"); -+ -+ assert(syscall(__NR_name_to_handle_at, cwd_fd, cwd, handle, &mount_id, -+ flags) == 0); -+ printf("%s%s(%d%s, \"%s\"%s, {handle_bytes=%u" -+ ", handle_type=%d, f_handle=", -+ my_secontext, "name_to_handle_at", -+ cwd_fd, cwd_secontext, -+ cwd, cwd_secontext, -+ handle->handle_bytes, handle->handle_type); -+ print_handle_data((unsigned char *) handle + -+ sizeof(struct file_handle), -+ handle->handle_bytes); -+ printf("}, [%d], AT_SYMLINK_FOLLOW) = 0\n", mount_id); -+ -+ printf("%s%s(-1, {handle_bytes=%u, handle_type=%d, f_handle=", -+ my_secontext, "open_by_handle_at", -+ handle->handle_bytes, handle->handle_type); -+ print_handle_data((unsigned char *) handle + -+ sizeof(struct file_handle), -+ handle->handle_bytes); -+ rc = syscall(__NR_open_by_handle_at, -1, handle, -+ O_RDONLY | O_DIRECTORY); -+ printf("}, O_RDONLY|O_DIRECTORY) = %s\n", sprintrc(rc)); -+ -+ if (fchdir(cwd_fd)) -+ perror_msg_and_fail("fchdir"); - - puts("+++ exited with 0 +++"); - return 0; -Index: strace-5.7/tests-mx32/gen_secontext.sh -=================================================================== ---- /dev/null 1970-01-01 00:00:00.000000000 +0000 -+++ strace-5.7/tests-mx32/gen_secontext.sh 2021-08-24 21:08:43.277245841 +0200 -@@ -0,0 +1,72 @@ -+#!/bin/sh -efu -+# -+# Copyright (c) 2021 The strace developers. -+# All rights reserved. -+# -+# SPDX-License-Identifier: GPL-2.0-or-later -+ -+usage() -+{ -+ cat >&2 <] -+ -+Generate secontext files from list. -+EOF -+ exit 1 -+} -+ -+if [ $# -eq 0 ]; then -+ input="${0%/*}/gen_tests.in" -+else -+ input="$1" -+ shift -+fi -+dir="$(dirname "$input")" -+[ $# -eq 0 ] || usage -+ -+{ -+ cat < "$dir/secontext.am" -+ -+sed -r -n 's/^([^#[:space:]]+--secontext)[[:space:]].*/\1/p' < "$input" | -+while read -r name; do { -+ cat <<-EOF > "$dir/$name.c" -+ /* -+ * Copyright (c) 2021 The strace developers. -+ * All rights reserved. -+ * -+ * SPDX-License-Identifier: GPL-2.0-or-later -+ */ -+ -+ #include "tests.h" -+ -+ #ifdef HAVE_SELINUX_RUNTIME -+ -+ # define TEST_SECONTEXT -+ # include "${name%--secontext}.c" -+ -+ #else -+ -+ SKIP_MAIN_UNDEFINED("HAVE_SELINUX_RUNTIME") -+ -+ #endif -+ EOF -+} < /dev/null; done -+ -+sed -r -n 's/^([^#[:space:]]+--secontext_full)[[:space:]].*/\1/p' < "$input" | -+while read -r name; do { -+ cat <<-EOF > "$dir/$name.c" -+ #define PRINT_SECONTEXT_FULL -+ #include "${name%_full}.c" -+ EOF -+} < /dev/null; done -Index: strace-5.7/tests-mx32/gen_tests.in -=================================================================== ---- strace-5.7.orig/tests-mx32/gen_tests.in 2021-08-24 21:08:35.397312536 +0200 -+++ strace-5.7/tests-mx32/gen_tests.in 2021-08-24 21:08:43.278245832 +0200 -@@ -10,6 +10,8 @@ - accept -a22 - accept4 -a37 - access -a30 --trace-path=access_sample -+access--secontext -a30 --secontext --trace-path=access_sample -e trace=access -+access--secontext_full -a30 --secontext=full --trace-path=access_sample -e trace=access - acct -a20 - add_key -a30 -s12 - adjtimex -a15 -@@ -24,6 +26,8 @@ - bpf-v -a20 -v -e trace=bpf - btrfs +ioctl.test - chmod -a28 -+chmod--secontext -a28 --secontext -e trace=chmod -+chmod--secontext_full -a28 --secontext=full -e trace=chmod - chown -a28 - chown32 -a31 - chroot -a24 -@@ -71,25 +75,43 @@ - epoll_pwait - epoll_wait -a26 - erestartsys -a34 -e signal=none -e trace=recvfrom -+execve--secontext +execve.test --secontext -+execve--secontext_full +execve.test --secontext=full - execveat -+execveat--secontext --secontext --trace=execveat -+execveat--secontext_full --secontext=full --trace=execveat - execveat-v -v -e trace=execveat -+faccessat--secontext +faccessat.test -a24 --secontext -+faccessat--secontext_full +faccessat.test -a24 --secontext=full - faccessat-P -a23 --trace=faccessat -P /dev/full - faccessat-y +faccessat.test -a24 -y -+faccessat-y--secontext +faccessat.test -a24 -y --secontext -+faccessat-y--secontext_full +faccessat.test -a24 -y --secontext=full - faccessat-yy +faccessat.test -a24 -yy - fadvise64_64 +fadvise64.test - fallocate -a18 - fanotify_init - fanotify_mark -a32 -+fanotify_mark--secontext -a32 --secontext -e trace=fanotify_mark -+fanotify_mark--secontext_full -a32 --secontext=full -e trace=fanotify_mark - fanotify_mark-Xabbrev -a32 -Xabbrev -e trace=fanotify_mark - fanotify_mark-Xraw -a32 -Xraw -e trace=fanotify_mark - fanotify_mark-Xverbose -a32 -Xverbose -e trace=fanotify_mark - fchdir -a11 - fchmod -a15 -+fchmod--secontext -a15 --secontext -e trace=fchmod -+fchmod--secontext_full -a15 --secontext=full -e trace=fchmod - fchmod-y -y -e trace=fchmod -+fchmod-y--secontext -a15 -y --secontext -e trace=fchmod -+fchmod-y--secontext_full -a15 -y --secontext=full -e trace=fchmod - fchmodat -+fchmodat--secontext --secontext -e trace=fchmodat -+fchmodat--secontext_full --secontext=full -e trace=fchmodat - fchown -a16 - fchown32 -a18 - fchownat -+fchownat--secontext --secontext -e trace=fchownat -+fchownat--secontext_full --secontext=full -e trace=fchownat - fcntl -a8 - fcntl--pidns-translation test_pidns -a8 -e trace=fcntl - fcntl64 -a8 -@@ -97,6 +119,8 @@ - fdatasync -a14 - file_handle -e trace=name_to_handle_at,open_by_handle_at - file_ioctl +ioctl.test -+file_handle--secontext --secontext -e trace=name_to_handle_at,open_by_handle_at -+file_handle--secontext_full --secontext=full -e trace=name_to_handle_at,open_by_handle_at - filter_seccomp . "${srcdir=.}/filter_seccomp.sh"; test_prog_set --seccomp-bpf -f - filter_seccomp-flag ../$NAME - finit_module -a25 -@@ -295,6 +319,8 @@ - lchown32 -a32 - link - linkat -+linkat--secontext --secontext -e trace=linkat -+linkat--secontext_full --secontext=full -e trace=linkat - lookup_dcookie -a27 - lstat -a31 --no-abbrev --trace-path=stat.sample --trace-path=/dev/full - lstat64 -a32 --no-abbrev --trace-path=stat.sample --trace-path=/dev/full -@@ -434,9 +460,13 @@ - oldselect-efault-P -a13 -e trace=select -P /dev/full 9>>/dev/full - oldstat -a32 -v -P stat.sample -P /dev/full - open -a30 -P $NAME.sample -+open--secontext -a30 -P open.sample --secontext --trace=open -+open--secontext_full -a30 -P open.sample --secontext=full --trace=open - open_tree -a30 -y - open_tree-P -a30 --decode-fds -P /dev/full -e trace=open_tree - openat -a36 -P $NAME.sample -+openat--secontext -a36 -P openat.sample -P $PWD/openat.sample --secontext -e trace=openat -+openat--secontext_full -a36 -P openat.sample -P $PWD/openat.sample --secontext=full -e trace=openat - openat2 -a35 - openat2-Xabbrev --trace=openat2 -a35 -Xabbrev - openat2-Xraw --trace=openat2 -a32 -Xraw -Index: strace-5.7/tests-mx32/linkat.c -=================================================================== ---- strace-5.7.orig/tests-mx32/linkat.c 2021-08-24 21:08:35.397312536 +0200 -+++ strace-5.7/tests-mx32/linkat.c 2021-08-24 21:08:43.278245832 +0200 -@@ -10,8 +10,14 @@ - - #ifdef __NR_linkat - -+# include - # include -+# include - # include -+# include -+ -+# include "secontext.h" -+# include "xmalloc.h" - - int - main(void) -@@ -27,18 +33,158 @@ - const long fd_old = (long) 0xdeadbeefffffffffULL; - const long fd_new = (long) 0xdeadbeeffffffffeULL; - -+ char *my_secontext = SECONTEXT_PID_MY(); -+ -+ (void) unlink(sample_1); -+ (void) unlink(sample_2); -+ - long rc = syscall(__NR_linkat, fd_old, sample_1, fd_new, sample_2, 0); -- printf("linkat(%d, \"%s\", %d, \"%s\", 0) = %ld %s (%m)\n", -+ printf("%s%s(%d, \"%s\", %d, \"%s\", 0) = %ld %s (%m)\n", -+ my_secontext, "linkat", - (int) fd_old, sample_1, (int) fd_new, sample_2, - rc, errno2name()); - - rc = syscall(__NR_linkat, -100, sample_1, -100, sample_2, -1L); -- printf("linkat(%s, \"%s\", %s, \"%s\", %s) = %ld %s (%m)\n", -+ printf("%s%s(%s, \"%s\", %s, \"%s\", %s) = %ld %s (%m)\n", -+ my_secontext, "linkat", - "AT_FDCWD", sample_1, "AT_FDCWD", sample_2, - "AT_SYMLINK_NOFOLLOW|AT_REMOVEDIR|AT_SYMLINK_FOLLOW" - "|AT_NO_AUTOMOUNT|AT_EMPTY_PATH|AT_RECURSIVE|0xffff60ff", - rc, errno2name()); - -+ /* -+ * Tests with AT_FDCWD. -+ */ -+ -+ int fd_sample_1 = open(sample_1, O_RDONLY | O_CREAT, 0400); -+ if (fd_sample_1 < 0) -+ perror_msg_and_fail("open"); -+ if (close(fd_sample_1)) -+ perror_msg_and_fail("close"); -+ -+ char *sample_1_secontext = SECONTEXT_FILE(sample_1); -+ -+ rc = syscall(__NR_linkat, -100, sample_1, -100, sample_2, 0); -+ /* no context printed for sample_2 since file doesn't exist yet */ -+ printf("%s%s(AT_FDCWD, \"%s\"%s, AT_FDCWD, \"%s\", 0) = %s\n", -+ my_secontext, "linkat", -+ sample_1, sample_1_secontext, -+ sample_2, -+ sprintrc(rc)); -+ -+ const char *sample_2_secontext = sample_1_secontext; -+ -+ rc = syscall(__NR_linkat, -100, sample_1, -100, sample_2, 0); -+ printf("%s%s(AT_FDCWD, \"%s\"%s, AT_FDCWD, \"%s\"%s, 0) = %s\n", -+ my_secontext, "linkat", -+ sample_1, sample_1_secontext, -+ sample_2, sample_2_secontext, -+ sprintrc(rc)); -+ -+ int fd_sample_2 = open(sample_2, O_RDONLY | O_CREAT, 0400); -+ if (fd_sample_2 < 0) -+ perror_msg_and_fail("open"); -+ if (close(fd_sample_2)) -+ perror_msg_and_fail("close"); -+ -+ free(sample_1_secontext); -+ update_secontext_type(sample_1, "default_t"); -+ sample_1_secontext = SECONTEXT_FILE(sample_1); -+ sample_2_secontext = sample_1_secontext; -+ -+ rc = syscall(__NR_linkat, -100, sample_1, -100, sample_2, 0); -+ printf("%s%s(AT_FDCWD, \"%s\"%s, AT_FDCWD, \"%s\"%s, 0) = %s\n", -+ my_secontext, "linkat", -+ sample_1, sample_1_secontext, -+ sample_2, sample_2_secontext, -+ sprintrc(rc)); -+ -+ if (unlink(sample_2)) -+ perror_msg_and_fail("unlink: %s", sample_2); -+ -+ /* -+ * Tests with dirfd. -+ */ -+ -+ int dfd_old = get_dir_fd("."); -+ char *cwd = get_fd_path(dfd_old); -+ char *dfd_old_secontext = SECONTEXT_FILE("."); -+ -+ rc = syscall(__NR_linkat, dfd_old, sample_1, -100, sample_2, 0); -+ /* no context printed for sample_2 since file doesn't exist yet */ -+ printf("%s%s(%d%s, \"%s\"%s, AT_FDCWD, \"%s\", 0) = %s\n", -+ my_secontext, "linkat", -+ dfd_old, dfd_old_secontext, -+ sample_1, sample_1_secontext, -+ sample_2, -+ sprintrc(rc)); -+ -+ rc = syscall(__NR_linkat, dfd_old, sample_1, -100, sample_2, 0); -+ printf("%s%s(%d%s, \"%s\"%s, AT_FDCWD, \"%s\"%s, 0) = %s\n", -+ my_secontext, "linkat", -+ dfd_old, dfd_old_secontext, -+ sample_1, sample_1_secontext, -+ sample_2, sample_2_secontext, -+ sprintrc(rc)); -+ -+ if (unlink(sample_2)) -+ perror_msg_and_fail("unlink: %s", sample_2); -+ -+ static const char new_dir[] = "new"; -+ char *new_sample_2 = xasprintf("%s/%s", new_dir, sample_2); -+ -+ (void) unlink(new_sample_2); -+ (void) rmdir(new_dir); -+ -+ if (mkdir(new_dir, 0700)) -+ perror_msg_and_fail("mkdir"); -+ char *new_dir_realpath = xasprintf("%s/%s", cwd, new_dir); -+ char *new_dir_secontext = SECONTEXT_FILE(new_dir); -+ int dfd_new = get_dir_fd(new_dir); -+ -+ rc = syscall(__NR_linkat, dfd_old, sample_1, dfd_new, sample_2, 0); -+ /* no context printed for sample_2 since file doesn't exist yet */ -+ printf("%s%s(%d%s, \"%s\"%s, %d%s, \"%s\", 0) = %s\n", -+ my_secontext, "linkat", -+ dfd_old, dfd_old_secontext, -+ sample_1, sample_1_secontext, -+ dfd_new, new_dir_secontext, -+ sample_2, -+ sprintrc(rc)); -+ -+ rc = syscall(__NR_linkat, dfd_old, sample_1, dfd_new, sample_2, 0); -+ printf("%s%s(%d%s, \"%s\"%s, %d%s, \"%s\"%s, 0) = %s\n", -+ my_secontext, "linkat", -+ dfd_old, dfd_old_secontext, -+ sample_1, sample_1_secontext, -+ dfd_new, new_dir_secontext, -+ sample_2, SECONTEXT_FILE(new_sample_2), -+ sprintrc(rc)); -+ -+ char *new_sample_2_realpath = xasprintf("%s/%s", new_dir_realpath, sample_2); -+ -+ /* dfd ignored when path is absolute */ -+ if (chdir("../..")) -+ perror_msg_and_fail("chdir"); -+ -+ rc = syscall(__NR_linkat, dfd_old, sample_1, -100, new_sample_2_realpath, 0); -+ printf("%s%s(%d%s, \"%s\"%s, AT_FDCWD, \"%s\"%s, 0) = %s\n", -+ my_secontext, "linkat", -+ dfd_old, dfd_old_secontext, -+ sample_1, sample_1_secontext, -+ new_sample_2_realpath, SECONTEXT_FILE(new_sample_2_realpath), -+ sprintrc(rc)); -+ -+ if (fchdir(dfd_old)) -+ perror_msg_and_fail("fchdir"); -+ -+ if (unlink(sample_1)) -+ perror_msg_and_fail("unlink: %s", sample_1); -+ if (unlink(new_sample_2)) -+ perror_msg_and_fail("unlink: %s", new_sample_2); -+ if (rmdir(new_dir)) -+ perror_msg_and_fail("rmdir: %s", new_dir); -+ - leave_and_remove_subdir(); - - puts("+++ exited with 0 +++"); -Index: strace-5.7/tests-mx32/open.c -=================================================================== ---- strace-5.7.orig/tests-mx32/open.c 2021-08-24 21:08:35.397312536 +0200 -+++ strace-5.7/tests-mx32/open.c 2021-08-24 21:08:43.278245832 +0200 -@@ -15,6 +15,8 @@ - # include - # include - -+# include "secontext.h" -+ - int - main(void) - { -@@ -25,10 +27,12 @@ - create_and_enter_subdir("open_subdir"); - - static const char sample[] = "open.sample"; -+ char *my_secontext = SECONTEXT_PID_MY(); - - long fd = syscall(__NR_open, sample, O_RDONLY|O_CREAT, 0400); -- printf("open(\"%s\", O_RDONLY|O_CREAT, 0400) = %s\n", -- sample, sprintrc(fd)); -+ printf("%s%s(\"%s\", O_RDONLY|O_CREAT, 0400) = %s%s\n", -+ my_secontext, "open", -+ sample, sprintrc(fd), SECONTEXT_FILE(sample)); - - if (fd != -1) { - close(fd); -@@ -36,16 +40,18 @@ - perror_msg_and_fail("unlink"); - - fd = syscall(__NR_open, sample, O_RDONLY); -- printf("open(\"%s\", O_RDONLY) = %s\n", sample, sprintrc(fd)); -+ printf("%s%s(\"%s\", O_RDONLY) = %s\n", -+ my_secontext, "open", sample, sprintrc(fd)); - - fd = syscall(__NR_open, sample, O_WRONLY|O_NONBLOCK|0x80000000); -- printf("open(\"%s\", O_WRONLY|O_NONBLOCK|0x80000000) = %s\n", -- sample, sprintrc(fd)); -+ printf("%s%s(\"%s\", O_WRONLY|O_NONBLOCK|0x80000000) = %s\n", -+ my_secontext, "open", sample, sprintrc(fd)); - } - - # ifdef O_TMPFILE - fd = syscall(__NR_open, sample, O_WRONLY|O_TMPFILE, 0600); -- printf("open(\"%s\", O_WRONLY|O_TMPFILE, 0600) = %s\n", -+ printf("%s%s(\"%s\", O_WRONLY|O_TMPFILE, 0600) = %s\n", -+ my_secontext, "open", - sample, sprintrc(fd)); - # endif /* O_TMPFILE */ - -Index: strace-5.7/tests-mx32/openat.c -=================================================================== ---- strace-5.7.orig/tests-mx32/openat.c 2021-08-24 21:08:35.397312536 +0200 -+++ strace-5.7/tests-mx32/openat.c 2021-08-24 21:08:43.278245832 +0200 -@@ -15,6 +15,8 @@ - # include - # include - -+# include "secontext.h" -+ - # ifdef O_TMPFILE - /* The kernel & C libraries often inline O_DIRECTORY. */ - # define STRACE_O_TMPFILE (O_TMPFILE & ~O_DIRECTORY) -@@ -26,10 +28,12 @@ - - static void - test_mode_flag(unsigned int mode_val, const char *mode_str, -- unsigned int flag_val, const char *flag_str) -+ unsigned int flag_val, const char *flag_str, -+ const char *my_secontext) - { - long rc = syscall(__NR_openat, -1, sample, mode_val | flag_val, 0); -- printf("openat(-1, \"%s\", %s%s%s%s) = %s\n", -+ printf("%s%s(-1, \"%s\", %s%s%s%s) = %s\n", -+ my_secontext, "openat", - sample, mode_str, - flag_val ? "|" : "", flag_str, - flag_val & (O_CREAT | STRACE_O_TMPFILE) ? ", 000" : "", -@@ -45,20 +49,7 @@ - */ - create_and_enter_subdir("openat_subdir"); - -- long fd = syscall(__NR_openat, -100, sample, O_RDONLY|O_CREAT, 0400); -- printf("openat(AT_FDCWD, \"%s\", O_RDONLY|O_CREAT, 0400) = %s\n", -- sample, sprintrc(fd)); -- -- if (fd != -1) { -- close(fd); -- if (unlink(sample) == -1) -- perror_msg_and_fail("unlink"); -- -- fd = syscall(__NR_openat, -100, sample, O_RDONLY); -- printf("openat(AT_FDCWD, \"%s\", O_RDONLY) = %s\n", -- sample, sprintrc(fd)); -- } -- -+ char *my_secontext = SECONTEXT_PID_MY(); - struct { - unsigned int val; - const char *str; -@@ -105,7 +96,73 @@ - for (unsigned int m = 0; m < ARRAY_SIZE(modes); ++m) - for (unsigned int f = 0; f < ARRAY_SIZE(flags); ++f) - test_mode_flag(modes[m].val, modes[m].str, -- flags[f].val, flags[f].str); -+ flags[f].val, flags[f].str, -+ my_secontext); -+ -+ /* -+ * Tests with AT_FDCWD. -+ */ -+ -+ (void) unlink(sample); -+ long fd = syscall(__NR_openat, -100, sample, O_RDONLY|O_CREAT, 0400); -+ -+ char *sample_secontext = SECONTEXT_FILE(sample); -+ -+ /* -+ * File context in openat() is not displayed because file doesn't exist -+ * yet, but is displayed in return value since the file got created. -+ */ -+ printf("%s%s(AT_FDCWD, \"%s\", O_RDONLY|O_CREAT, 0400) = %s%s\n", -+ my_secontext, "openat", -+ sample, -+ sprintrc(fd), sample_secontext); -+ -+ close(fd); -+ -+ fd = syscall(__NR_openat, -100, sample, O_RDONLY); -+ printf("%s%s(AT_FDCWD, \"%s\"%s, O_RDONLY) = %s%s\n", -+ my_secontext, "openat", -+ sample, sample_secontext, -+ sprintrc(fd), sample_secontext); -+ if (fd != -1) { -+ close(fd); -+ if (unlink(sample)) -+ perror_msg_and_fail("unlink"); -+ } -+ -+ /* -+ * Tests with dirfd. -+ */ -+ -+ int cwd_fd = get_dir_fd("."); -+ char *cwd_secontext = SECONTEXT_FILE("."); -+ -+ fd = syscall(__NR_openat, cwd_fd, sample, O_RDONLY|O_CREAT, 0400); -+ if (fd == -1) -+ perror_msg_and_fail("openat"); -+ close(fd); -+ -+ /* -+ * File context in openat() is not displayed because file doesn't exist -+ * yet, but is displayed in return value since the file got created. -+ */ -+ printf("%s%s(%d%s, \"%s\", O_RDONLY|O_CREAT, 0400) = %s%s\n", -+ my_secontext, "openat", -+ cwd_fd, cwd_secontext, -+ sample, -+ sprintrc(fd), sample_secontext); -+ -+ fd = syscall(__NR_openat, cwd_fd, sample, O_RDONLY); -+ printf("%s%s(%d%s, \"%s\"%s, O_RDONLY) = %s%s\n", -+ my_secontext, "openat", -+ cwd_fd, cwd_secontext, -+ sample, sample_secontext, -+ sprintrc(fd), sample_secontext); -+ if (fd != -1) { -+ close(fd); -+ if (unlink(sample)) -+ perror_msg_and_fail("unlink"); -+ } - - leave_and_remove_subdir(); - -Index: strace-5.7/tests-mx32/options-syntax.test -=================================================================== ---- strace-5.7.orig/tests-mx32/options-syntax.test 2021-08-24 21:08:35.398312527 +0200 -+++ strace-5.7/tests-mx32/options-syntax.test 2021-08-24 21:08:43.279245824 +0200 -@@ -2,14 +2,16 @@ - # - # Check strace options syntax. - # --# Copyright (c) 2016 Dmitry V. Levin --# Copyright (c) 2016-2020 The strace developers. -+# Copyright (c) 2016 Dmitry V. Levin -+# Copyright (c) 2016-2021 The strace developers. - # All rights reserved. - # - # SPDX-License-Identifier: GPL-2.0-or-later - - . "${srcdir=.}/syntax.sh" - -+compiled_with_secontext=$(get_config_option ENABLE_SECONTEXT "y") -+ - check_e "Invalid process id: '0'" -p 0 - check_e "Invalid process id: '0'" --attach=0 - check_e "Invalid process id: '-42'" -p -42 -@@ -46,6 +48,8 @@ - check_e '-t and --absolute-timestamps cannot be provided simultaneously' --absolute-timestamps -ttt -p $$ - check_e '-t and --absolute-timestamps cannot be provided simultaneously' -t --timestamps=ns -t -p $$ - check_e '-t and --absolute-timestamps cannot be provided simultaneously' --timestamps=ns -t --absolute-timestamps=unix -p $$ -+[ -z "$compiled_with_secontext" ] || -+ check_h "invalid --secontext argument: 'ss'" --secontext=ss - check_h 'PROG [ARGS] must be specified with -D/--daemonize' -D -p $$ - check_h 'PROG [ARGS] must be specified with -D/--daemonize' -DD -p $$ - check_h 'PROG [ARGS] must be specified with -D/--daemonize' -DDD -p $$ -@@ -281,6 +285,11 @@ - $STRACE_EXE: Only the last of -z/--successful-only/-Z/--failed-only options will take effect. See status qualifier for more complex filters. - $STRACE_EXE: $umsg" -u :nosuchuser: -cirtTyzZ true - -+ if [ -n "$compiled_with_secontext" ]; then -+ check_e "--secontext has no effect with -c/--summary-only -+$STRACE_EXE: $umsg" -u :nosuchuser: -c --secontext true -+ fi -+ - for c in --output-separately -A/--output-append-mode; do - check_e "$c has no effect without -o/--output - $STRACE_EXE: $umsg" -u :nosuchuser: ${c%%/*} true -Index: strace-5.7/tests-mx32/secontext.c -=================================================================== ---- /dev/null 1970-01-01 00:00:00.000000000 +0000 -+++ strace-5.7/tests-mx32/secontext.c 2021-08-24 21:08:43.279245824 +0200 -@@ -0,0 +1,201 @@ -+/* -+ * Copyright (c) 2021 The strace developers. -+ * All rights reserved. -+ * -+ * SPDX-License-Identifier: GPL-2.0-or-later -+ */ -+ -+#include "tests.h" -+ -+#ifdef HAVE_SELINUX_RUNTIME -+ -+# include -+# include -+# include -+# include -+# include -+# include -+ -+# include "xmalloc.h" -+ -+# define TEST_SECONTEXT -+# include "secontext.h" -+ -+static char * -+secontext_format(char *context, const char *fmt) -+ ATTRIBUTE_FORMAT((printf, 2, 0)) ATTRIBUTE_MALLOC; -+ -+static char * -+secontext_format(char *context, const char *fmt) -+{ -+ int saved_errno = errno; -+ char *res = context ? xasprintf(fmt, context) : xstrdup(""); -+ free(context); -+ errno = saved_errno; -+ return res; -+} -+ -+# define FORMAT_SPACE_BEFORE(string) secontext_format(string, " [%s]") -+# define FORMAT_SPACE_AFTER(string) secontext_format(string, "[%s] ") -+ -+static char * -+strip_trailing_newlines(char *context) -+{ -+ /* -+ * On the CI at least, the context may have a trailing \n, -+ * let's remove it just in case. -+ */ -+ size_t len = strlen(context); -+ for (; len > 0; --len) { -+ if (context[len - 1] != '\n') -+ break; -+ } -+ context[len] = '\0'; -+ return context; -+} -+ -+static char * -+raw_secontext_full_file(const char *filename) -+{ -+ int saved_errno = errno; -+ char *full_secontext = NULL; -+ char *secontext; -+ -+ if (getfilecon(filename, &secontext) >= 0) { -+ full_secontext = strip_trailing_newlines(xstrdup(secontext)); -+ freecon(secontext); -+ } -+ errno = saved_errno; -+ return full_secontext; -+} -+ -+static char * -+raw_secontext_short_file(const char *filename) -+{ -+ int saved_errno = errno; -+ -+ char *ctx = raw_secontext_full_file(filename); -+ if (ctx == NULL) -+ return ctx; -+ -+ char *saveptr = NULL; -+ const char *token; -+ unsigned int i; -+ -+ char *ctx_copy = xstrdup(ctx); -+ char *context = NULL; -+ for (token = strtok_r(ctx_copy, ":", &saveptr), i = 0; -+ token; token = strtok_r(NULL, ":", &saveptr), i++) { -+ if (i == 2) { -+ context = xstrdup(token); -+ break; -+ } -+ } -+ if (context == NULL) -+ context = xstrdup(ctx); -+ free(ctx_copy); -+ free(ctx); -+ -+ errno = saved_errno; -+ return context; -+} -+ -+static char * -+raw_secontext_full_pid(pid_t pid) -+{ -+ int saved_errno = errno; -+ char *full_secontext = NULL; -+ char *secontext; -+ -+ if (getpidcon(pid, &secontext) == 0) { -+ full_secontext = strip_trailing_newlines(xstrdup(secontext)); -+ freecon(secontext); -+ } -+ errno = saved_errno; -+ return full_secontext; -+} -+ -+static char * -+raw_secontext_short_pid(pid_t pid) -+{ -+ int saved_errno = errno; -+ -+ char *ctx = raw_secontext_full_pid(pid); -+ if (ctx == NULL) -+ return ctx; -+ -+ char *saveptr = NULL; -+ const char *token; -+ int i; -+ -+ char *ctx_copy = xstrdup(ctx); -+ char *context = NULL; -+ for (token = strtok_r(ctx_copy, ":", &saveptr), i = 0; -+ token; token = strtok_r(NULL, ":", &saveptr), i++) { -+ if (i == 2) { -+ context = xstrdup(token); -+ break; -+ } -+ } -+ if (context == NULL) -+ context = xstrdup(ctx); -+ free(ctx_copy); -+ free(ctx); -+ -+ errno = saved_errno; -+ return context; -+} -+ -+char * -+secontext_full_file(const char *filename) -+{ -+ return FORMAT_SPACE_BEFORE(raw_secontext_full_file(filename)); -+} -+ -+char * -+secontext_full_pid(pid_t pid) -+{ -+ return FORMAT_SPACE_AFTER(raw_secontext_full_pid(pid)); -+} -+ -+char * -+secontext_short_file(const char *filename) -+{ -+ return FORMAT_SPACE_BEFORE(raw_secontext_short_file(filename)); -+} -+ -+char * -+secontext_short_pid(pid_t pid) -+{ -+ return FORMAT_SPACE_AFTER(raw_secontext_short_pid(pid)); -+} -+ -+void -+update_secontext_type(const char *file, const char *newtype) -+{ -+ char *ctx = raw_secontext_full_file(file); -+ if (ctx == NULL) -+ return; -+ -+ char *saveptr = NULL; -+ char *token; -+ int field; -+ char *split[4]; -+ -+ for (token = strtok_r(ctx, ":", &saveptr), field = 0; -+ token; token = strtok_r(NULL, ":", &saveptr), field++) { -+ assert(field < 4); -+ split[field] = token; -+ } -+ assert(field == 4); -+ -+ char *newcontext = xasprintf("%s:%s:%s:%s", split[0], split[1], -+ newtype, split[3]); -+ -+ (void) setfilecon(file, newcontext); -+ -+ free(newcontext); -+ free(ctx); -+} -+ -+#endif /* HAVE_SELINUX_RUNTIME */ -Index: strace-5.7/tests-mx32/secontext.h -=================================================================== ---- /dev/null 1970-01-01 00:00:00.000000000 +0000 -+++ strace-5.7/tests-mx32/secontext.h 2021-08-24 21:08:43.279245824 +0200 -@@ -0,0 +1,46 @@ -+/* -+ * Copyright (c) 2021 The strace developers. -+ * All rights reserved. -+ * -+ * SPDX-License-Identifier: GPL-2.0-or-later -+ */ -+ -+#include "tests.h" -+#include "xmalloc.h" -+#include -+ -+#if defined TEST_SECONTEXT && defined HAVE_SELINUX_RUNTIME -+ -+void update_secontext_type(const char *file, const char *newtype); -+ -+# ifdef PRINT_SECONTEXT_FULL -+ -+char *secontext_full_file(const char *) ATTRIBUTE_MALLOC; -+char *secontext_full_pid(pid_t) ATTRIBUTE_MALLOC; -+ -+# define SECONTEXT_FILE(filename) secontext_full_file(filename) -+# define SECONTEXT_PID(pid) secontext_full_pid(pid) -+ -+# else -+ -+char *secontext_short_file(const char *) ATTRIBUTE_MALLOC; -+char *secontext_short_pid(pid_t) ATTRIBUTE_MALLOC; -+ -+# define SECONTEXT_FILE(filename) secontext_short_file(filename) -+# define SECONTEXT_PID(pid) secontext_short_pid(pid) -+ -+# endif -+ -+#else -+ -+static inline void -+update_secontext_type(const char *file, const char *newtype) -+{ -+} -+ -+# define SECONTEXT_FILE(filename) xstrdup("") -+# define SECONTEXT_PID(pid) xstrdup("") -+ -+#endif -+ -+#define SECONTEXT_PID_MY() SECONTEXT_PID(getpid()) -Index: strace-5.7/tests-mx32/strace-V.test -=================================================================== ---- strace-5.7.orig/tests-mx32/strace-V.test 2021-08-24 21:08:35.398312527 +0200 -+++ strace-5.7/tests-mx32/strace-V.test 2021-08-24 21:08:43.279245824 +0200 -@@ -33,7 +33,9 @@ - ;; - esac - --features="${option_unwind}${option_demangle}${option_m32}${option_mx32}" -+option_secontext=$(get_config_option ENABLE_SECONTEXT " secontext") -+ -+features="${option_unwind}${option_demangle}${option_m32}${option_mx32}${option_secontext}" - [ -n "$features" ] || features=" (none)" - - cat > "$EXP" << __EOF__ -Index: strace-5.7/util.c -=================================================================== ---- strace-5.7.orig/util.c 2021-08-24 21:08:35.399312519 +0200 -+++ strace-5.7/util.c 2021-08-24 21:08:43.279245824 +0200 -@@ -26,6 +26,7 @@ - #include "largefile_wrappers.h" - #include "number_set.h" - #include "print_utils.h" -+#include "secontext.h" - #include "static_assert.h" - #include "string_to_uint.h" - #include "xlat.h" -@@ -653,6 +654,13 @@ - } else { - tprintf("%d", fd); - } -+#ifdef ENABLE_SECONTEXT -+ char *context; -+ if (!selinux_getfdcon(pid, fd, &context)) { -+ tprintf(" [%s]", context); -+ free(context); -+ } -+#endif - } - - void -@@ -945,6 +953,14 @@ - else { - path[n++] = !nul_seen; - print_quoted_cstring(path, n); -+ -+#ifdef ENABLE_SECONTEXT -+ char *context; -+ if (nul_seen && !selinux_getfilecon(tcp, path, &context)) { -+ tprintf(" [%s]", context); -+ free(context); -+ } -+#endif - } - - return nul_seen; -Index: strace-5.7/xgetdents.c -=================================================================== ---- strace-5.7.orig/xgetdents.c 2021-08-24 21:08:35.399312519 +0200 -+++ strace-5.7/xgetdents.c 2021-08-24 21:08:43.280245815 +0200 -@@ -122,6 +122,9 @@ - { - if (entering(tcp)) { - printfd(tcp, tcp->u_arg[0]); -+#ifdef ENABLE_SECONTEXT -+ tcp->last_dirfd = (int) tcp->u_arg[0]; -+#endif - tprints(", "); - return 0; - } -Index: strace-5.7/Makefile.in -=================================================================== ---- strace-5.7.orig/Makefile.in 2021-08-24 21:08:35.404312477 +0200 -+++ strace-5.7/Makefile.in 2021-08-24 21:08:43.282245798 +0200 -@@ -122,14 +122,21 @@ - @ENABLE_STACKTRACE_TRUE@@USE_DEMANGLE_TRUE@am__append_11 = $(libiberty_CPPFLAGS) - @ENABLE_STACKTRACE_TRUE@@USE_DEMANGLE_TRUE@am__append_12 = $(libiberty_LDFLAGS) - @ENABLE_STACKTRACE_TRUE@@USE_DEMANGLE_TRUE@am__append_13 = $(libiberty_LIBS) --@HAVE_M32_MPERS_TRUE@am__append_14 = libmpers-m32.a --@HAVE_M32_MPERS_TRUE@am__append_15 = libmpers-m32.a --@HAVE_M32_MPERS_TRUE@am__append_16 = $(mpers_m32_targets) --@HAVE_M32_MPERS_TRUE@am__append_17 = $(mpers_m32_targets) --@HAVE_MX32_MPERS_TRUE@am__append_18 = libmpers-mx32.a --@HAVE_MX32_MPERS_TRUE@am__append_19 = libmpers-mx32.a --@HAVE_MX32_MPERS_TRUE@am__append_20 = $(mpers_mx32_targets) --@HAVE_MX32_MPERS_TRUE@am__append_21 = $(mpers_mx32_targets) -+@ENABLE_SECONTEXT_TRUE@am__append_14 = \ -+@ENABLE_SECONTEXT_TRUE@ secontext.c \ -+@ENABLE_SECONTEXT_TRUE@ secontext.h -+ -+@ENABLE_SECONTEXT_TRUE@am__append_15 = $(libselinux_CPPFLAGS) -+@ENABLE_SECONTEXT_TRUE@am__append_16 = $(libselinux_LDFLAGS) -+@ENABLE_SECONTEXT_TRUE@am__append_17 = $(libselinux_LIBS) -+@HAVE_M32_MPERS_TRUE@am__append_18 = libmpers-m32.a -+@HAVE_M32_MPERS_TRUE@am__append_19 = libmpers-m32.a -+@HAVE_M32_MPERS_TRUE@am__append_20 = $(mpers_m32_targets) -+@HAVE_M32_MPERS_TRUE@am__append_21 = $(mpers_m32_targets) -+@HAVE_MX32_MPERS_TRUE@am__append_22 = libmpers-mx32.a -+@HAVE_MX32_MPERS_TRUE@am__append_23 = libmpers-mx32.a -+@HAVE_MX32_MPERS_TRUE@am__append_24 = $(mpers_mx32_targets) -+@HAVE_MX32_MPERS_TRUE@am__append_25 = $(mpers_mx32_targets) - subdir = . - ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 - am__aclocal_m4_deps = $(top_srcdir)/xlat/btrfs_compress_types.m4 \ -@@ -178,6 +185,7 @@ - $(top_srcdir)/m4/st_esyscmd_s.m4 $(top_srcdir)/m4/st_libdw.m4 \ - $(top_srcdir)/m4/st_libunwind.m4 \ - $(top_srcdir)/m4/st_save_restore_var.m4 \ -+ $(top_srcdir)/m4/st_selinux.m4 \ - $(top_srcdir)/m4/st_stacktrace.m4 \ - $(top_srcdir)/m4/st_warn_cflags.m4 \ - $(top_srcdir)/m4/warnings.m4 $(top_srcdir)/configure.ac -@@ -382,7 +390,7 @@ - types/check-rtnl_link.c types/check-rtnl_mdb.c \ - types/check-rtnl_neightbl.c types/check-rtnl_route.c \ - types/check-v4l2.c unwind.c unwind.h unwind-libdw.c \ -- unwind-libunwind.c -+ unwind-libunwind.c secontext.c secontext.h - am__objects_3 = - am__dirstamp = $(am__leading_dot)dirstamp - am__objects_4 = types/libstrace_a-check-cryptouser.$(OBJEXT) \ -@@ -398,6 +406,8 @@ - @ENABLE_STACKTRACE_TRUE@am__objects_6 = libstrace_a-unwind.$(OBJEXT) - @ENABLE_STACKTRACE_TRUE@@USE_LIBDW_TRUE@am__objects_7 = libstrace_a-unwind-libdw.$(OBJEXT) - @ENABLE_STACKTRACE_TRUE@@USE_LIBUNWIND_TRUE@am__objects_8 = libstrace_a-unwind-libunwind.$(OBJEXT) -+@ENABLE_SECONTEXT_TRUE@am__objects_9 = \ -+@ENABLE_SECONTEXT_TRUE@ libstrace_a-secontext.$(OBJEXT) - am_libstrace_a_OBJECTS = libstrace_a-access.$(OBJEXT) \ - libstrace_a-affinity.$(OBJEXT) libstrace_a-aio.$(OBJEXT) \ - libstrace_a-alpha.$(OBJEXT) \ -@@ -567,7 +577,7 @@ - libstrace_a-xattr.$(OBJEXT) libstrace_a-xgetdents.$(OBJEXT) \ - libstrace_a-xlat.$(OBJEXT) libstrace_a-xmalloc.$(OBJEXT) \ - $(am__objects_3) $(am__objects_5) $(am__objects_6) \ -- $(am__objects_7) $(am__objects_8) -+ $(am__objects_7) $(am__objects_8) $(am__objects_9) - libstrace_a_OBJECTS = $(am_libstrace_a_OBJECTS) - am_strace_OBJECTS = strace-strace.$(OBJEXT) - strace_OBJECTS = $(am_strace_OBJECTS) -@@ -576,10 +586,12 @@ - @ENABLE_STACKTRACE_TRUE@@USE_LIBDW_TRUE@ $(am__DEPENDENCIES_1) - @ENABLE_STACKTRACE_TRUE@@USE_LIBUNWIND_TRUE@am__DEPENDENCIES_3 = $(am__DEPENDENCIES_1) - @ENABLE_STACKTRACE_TRUE@@USE_DEMANGLE_TRUE@am__DEPENDENCIES_4 = $(am__DEPENDENCIES_1) -+@ENABLE_SECONTEXT_TRUE@am__DEPENDENCIES_5 = $(am__DEPENDENCIES_1) - strace_DEPENDENCIES = libstrace.a $(am__DEPENDENCIES_1) \ - $(am__DEPENDENCIES_1) $(am__DEPENDENCIES_2) \ - $(am__DEPENDENCIES_3) $(am__DEPENDENCIES_4) \ -- $(am__DEPENDENCIES_1) $(am__append_14) $(am__append_18) -+ $(am__DEPENDENCIES_5) $(am__DEPENDENCIES_1) $(am__append_18) \ -+ $(am__append_22) - strace_LINK = $(CCLD) $(strace_CFLAGS) $(CFLAGS) $(strace_LDFLAGS) \ - $(LDFLAGS) -o $@ - am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; -@@ -1223,6 +1235,9 @@ - libiberty_CPPFLAGS = @libiberty_CPPFLAGS@ - libiberty_LDFLAGS = @libiberty_LDFLAGS@ - libiberty_LIBS = @libiberty_LIBS@ -+libselinux_CPPFLAGS = @libselinux_CPPFLAGS@ -+libselinux_LDFLAGS = @libselinux_LDFLAGS@ -+libselinux_LIBS = @libselinux_LIBS@ - libunwind_CPPFLAGS = @libunwind_CPPFLAGS@ - libunwind_LDFLAGS = @libunwind_LDFLAGS@ - libunwind_LIBS = @libunwind_LIBS@ -@@ -1782,14 +1797,15 @@ - xlat/xattrflags.h xlat/xdp_flags.h xlat/xfs_dqblk_flags.h \ - xlat/xfs_quota_flags.h - strace_CPPFLAGS = $(AM_CPPFLAGS) $(am__append_3) $(am__append_8) \ -- $(am__append_11) $(CODE_COVERAGE_CPPFLAGS) -+ $(am__append_11) $(am__append_15) $(CODE_COVERAGE_CPPFLAGS) - strace_CFLAGS = $(AM_CFLAGS) $(am__append_4) $(CODE_COVERAGE_CFLAGS) --strace_LDFLAGS = $(am__append_5) $(am__append_9) $(am__append_12) -+strace_LDFLAGS = $(am__append_5) $(am__append_9) $(am__append_12) \ -+ $(am__append_16) - strace_LDADD = libstrace.a $(clock_LIBS) $(timer_LIBS) $(am__append_6) \ -- $(am__append_10) $(am__append_13) $(CODE_COVERAGE_LIBS) \ -- $(am__append_14) $(am__append_18) -+ $(am__append_10) $(am__append_13) $(am__append_17) \ -+ $(CODE_COVERAGE_LIBS) $(am__append_18) $(am__append_22) - strace_SOURCES = strace.c --noinst_LIBRARIES = libstrace.a $(am__append_15) $(am__append_19) -+noinst_LIBRARIES = libstrace.a $(am__append_19) $(am__append_23) - libstrace_a_CPPFLAGS = $(strace_CPPFLAGS) - libstrace_a_CFLAGS = $(strace_CFLAGS) - libstrace_a_SOURCES = access.c affinity.c aio.c alpha.c arch_defs.h \ -@@ -1864,7 +1880,7 @@ - wait.h watchdog_ioctl.c xattr.c xfs_quota_stat.h xgetdents.c \ - xgetdents.h xlat.c xlat.h xmalloc.c xmalloc.h xstring.h \ - $(TYPES_HEADER_FILES) $(strace_SOURCES_check) $(am__append_1) \ -- $(am__append_2) $(am__append_7) -+ $(am__append_2) $(am__append_7) $(am__append_14) - strace_SOURCES_check = bpf_attr_check.c $(TYPES_CHECK_FILES) - CODE_COVERAGE_BRANCH_COVERAGE = 1 - CODE_COVERAGE_GENHTML_OPTIONS = $(CODE_COVERAGE_GENHTML_OPTIONS_DEFAULT) \ -@@ -2459,12 +2475,12 @@ - ioctl_redefs_h = $(filter-out ioctl_redefs0.h,$(subst ioctlent,ioctl_redefs,$(ioctlent_h))) - BUILT_SOURCES = $(ioctl_redefs_h) $(ioctlent_h) bpf_attr_check.c \ - native_printer_decls.h native_printer_defs.h printers.h sen.h \ -- sys_func.h .version scno.h $(am__append_16) $(am__append_20) -+ sys_func.h .version scno.h $(am__append_20) $(am__append_24) - CLEANFILES = $(ioctl_redefs_h) $(ioctlent_h) $(mpers_preproc_files) \ - ioctl_iocdef.h ioctl_iocdef.i bpf_attr_check.c \ - native_printer_decls.h native_printer_defs.h printers.h sen.h \ -- sys_func.h syscallent.i scno.h $(am__append_17) \ -- $(am__append_21) -+ sys_func.h syscallent.i scno.h $(am__append_21) \ -+ $(am__append_25) - DISTCLEANFILES = gnu/stubs-32.h gnu/stubs-x32.h linux/linux/signal.h - SCNO_CPPFLAGS = $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) \ - $(ARCH_MFLAGS) $(AM_CPPFLAGS) $(CPPFLAGS) -@@ -2963,6 +2979,7 @@ - @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libstrace_a-sched.Po@am__quote@ # am--include-marker - @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libstrace_a-scsi.Po@am__quote@ # am--include-marker - @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libstrace_a-seccomp.Po@am__quote@ # am--include-marker -+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libstrace_a-secontext.Po@am__quote@ # am--include-marker - @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libstrace_a-sendfile.Po@am__quote@ # am--include-marker - @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libstrace_a-sg_io_v3.Po@am__quote@ # am--include-marker - @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libstrace_a-sg_io_v4.Po@am__quote@ # am--include-marker -@@ -7814,6 +7831,20 @@ - @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ - @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libstrace_a_CPPFLAGS) $(CPPFLAGS) $(libstrace_a_CFLAGS) $(CFLAGS) -c -o libstrace_a-unwind-libunwind.obj `if test -f 'unwind-libunwind.c'; then $(CYGPATH_W) 'unwind-libunwind.c'; else $(CYGPATH_W) '$(srcdir)/unwind-libunwind.c'; fi` - -+libstrace_a-secontext.o: secontext.c -+@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libstrace_a_CPPFLAGS) $(CPPFLAGS) $(libstrace_a_CFLAGS) $(CFLAGS) -MT libstrace_a-secontext.o -MD -MP -MF $(DEPDIR)/libstrace_a-secontext.Tpo -c -o libstrace_a-secontext.o `test -f 'secontext.c' || echo '$(srcdir)/'`secontext.c -+@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libstrace_a-secontext.Tpo $(DEPDIR)/libstrace_a-secontext.Po -+@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='secontext.c' object='libstrace_a-secontext.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) $(libstrace_a_CPPFLAGS) $(CPPFLAGS) $(libstrace_a_CFLAGS) $(CFLAGS) -c -o libstrace_a-secontext.o `test -f 'secontext.c' || echo '$(srcdir)/'`secontext.c -+ -+libstrace_a-secontext.obj: secontext.c -+@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libstrace_a_CPPFLAGS) $(CPPFLAGS) $(libstrace_a_CFLAGS) $(CFLAGS) -MT libstrace_a-secontext.obj -MD -MP -MF $(DEPDIR)/libstrace_a-secontext.Tpo -c -o libstrace_a-secontext.obj `if test -f 'secontext.c'; then $(CYGPATH_W) 'secontext.c'; else $(CYGPATH_W) '$(srcdir)/secontext.c'; fi` -+@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libstrace_a-secontext.Tpo $(DEPDIR)/libstrace_a-secontext.Po -+@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='secontext.c' object='libstrace_a-secontext.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) $(libstrace_a_CPPFLAGS) $(CPPFLAGS) $(libstrace_a_CFLAGS) $(CFLAGS) -c -o libstrace_a-secontext.obj `if test -f 'secontext.c'; then $(CYGPATH_W) 'secontext.c'; else $(CYGPATH_W) '$(srcdir)/secontext.c'; fi` -+ - strace-strace.o: strace.c - @am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(strace_CPPFLAGS) $(CPPFLAGS) $(strace_CFLAGS) $(CFLAGS) -MT strace-strace.o -MD -MP -MF $(DEPDIR)/strace-strace.Tpo -c -o strace-strace.o `test -f 'strace.c' || echo '$(srcdir)/'`strace.c - @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/strace-strace.Tpo $(DEPDIR)/strace-strace.Po -Index: strace-5.7/tests/Makefile.in -=================================================================== ---- strace-5.7.orig/tests/Makefile.in 2021-08-24 21:08:35.436312206 +0200 -+++ strace-5.7/tests/Makefile.in 2021-08-24 21:08:43.286245764 +0200 -@@ -22,6 +22,8 @@ - # - # SPDX-License-Identifier: GPL-2.0-or-later - -+# Generated by ./tests/gen_secontext.sh from ./tests/gen_tests.in; do not edit. -+ - # scno.h make rules for strace. - # - # Copyright (c) 2017-2019 Dmitry V. Levin -@@ -102,8 +104,8 @@ - POST_UNINSTALL = : - build_triplet = @build@ - host_triplet = @host@ --check_PROGRAMS = $(am__EXEEXT_1) _newselect-P$(EXEEXT) answer$(EXEEXT) \ -- attach-f-p$(EXEEXT) attach-f-p-cmd$(EXEEXT) \ -+check_PROGRAMS = $(am__EXEEXT_1) $(am__EXEEXT_2) _newselect-P$(EXEEXT) \ -+ answer$(EXEEXT) attach-f-p$(EXEEXT) attach-f-p-cmd$(EXEEXT) \ - attach-p-cmd-cmd$(EXEEXT) attach-p-cmd-p$(EXEEXT) \ - block_reset_raise_run$(EXEEXT) block_reset_run$(EXEEXT) \ - bpf-obj_get_info_by_fd$(EXEEXT) \ -@@ -221,7 +223,7 @@ - xetpriority--pidns-translation$(EXEEXT) \ - xet_robust_list--pidns-translation$(EXEEXT) zeroargc$(EXEEXT) - @ENABLE_STACKTRACE_TRUE@@USE_DEMANGLE_TRUE@am__append_1 = strace-k-demangle.test --TESTS = $(GEN_TESTS) $(DECODER_TESTS) $(MISC_TESTS) $(am__EXEEXT_2) -+TESTS = $(GEN_TESTS) $(DECODER_TESTS) $(MISC_TESTS) $(am__EXEEXT_3) - subdir = tests - ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 - am__aclocal_m4_deps = $(top_srcdir)/xlat/btrfs_compress_types.m4 \ -@@ -270,6 +272,7 @@ - $(top_srcdir)/m4/st_esyscmd_s.m4 $(top_srcdir)/m4/st_libdw.m4 \ - $(top_srcdir)/m4/st_libunwind.m4 \ - $(top_srcdir)/m4/st_save_restore_var.m4 \ -+ $(top_srcdir)/m4/st_selinux.m4 \ - $(top_srcdir)/m4/st_stacktrace.m4 \ - $(top_srcdir)/m4/st_warn_cflags.m4 \ - $(top_srcdir)/m4/warnings.m4 $(top_srcdir)/configure.ac -@@ -298,7 +301,8 @@ - epoll_create$(EXEEXT) epoll_create1$(EXEEXT) \ - epoll_ctl$(EXEEXT) epoll_pwait$(EXEEXT) epoll_wait$(EXEEXT) \ - erestartsys$(EXEEXT) eventfd$(EXEEXT) execve$(EXEEXT) \ -- execveat$(EXEEXT) faccessat$(EXEEXT) fadvise64$(EXEEXT) \ -+ execveat$(EXEEXT) faccessat$(EXEEXT) faccessat-P$(EXEEXT) \ -+ faccessat-y$(EXEEXT) faccessat-yy$(EXEEXT) fadvise64$(EXEEXT) \ - fadvise64_64$(EXEEXT) fallocate$(EXEEXT) \ - fanotify_init$(EXEEXT) fanotify_mark$(EXEEXT) \ - fanotify_mark-Xabbrev$(EXEEXT) fanotify_mark-Xraw$(EXEEXT) \ -@@ -543,6 +547,26 @@ - xattr-strings$(EXEEXT) xet_robust_list$(EXEEXT) \ - xet_thread_area_x86$(EXEEXT) xetitimer$(EXEEXT) \ - xetpgid$(EXEEXT) xetpriority$(EXEEXT) xettimeofday$(EXEEXT) -+am__EXEEXT_2 = access--secontext$(EXEEXT) \ -+ access--secontext_full$(EXEEXT) chmod--secontext$(EXEEXT) \ -+ chmod--secontext_full$(EXEEXT) execve--secontext$(EXEEXT) \ -+ execve--secontext_full$(EXEEXT) execveat--secontext$(EXEEXT) \ -+ execveat--secontext_full$(EXEEXT) \ -+ faccessat--secontext$(EXEEXT) \ -+ faccessat--secontext_full$(EXEEXT) \ -+ faccessat-y--secontext$(EXEEXT) \ -+ faccessat-y--secontext_full$(EXEEXT) \ -+ fanotify_mark--secontext$(EXEEXT) \ -+ fanotify_mark--secontext_full$(EXEEXT) \ -+ fchmod--secontext$(EXEEXT) fchmod--secontext_full$(EXEEXT) \ -+ fchmod-y--secontext$(EXEEXT) fchmod-y--secontext_full$(EXEEXT) \ -+ fchmodat--secontext$(EXEEXT) fchmodat--secontext_full$(EXEEXT) \ -+ fchownat--secontext$(EXEEXT) fchownat--secontext_full$(EXEEXT) \ -+ file_handle--secontext$(EXEEXT) \ -+ file_handle--secontext_full$(EXEEXT) \ -+ linkat--secontext$(EXEEXT) linkat--secontext_full$(EXEEXT) \ -+ open--secontext$(EXEEXT) open--secontext_full$(EXEEXT) \ -+ openat--secontext$(EXEEXT) openat--secontext_full$(EXEEXT) - ARFLAGS = cru - AM_V_AR = $(am__v_AR_@AM_V@) - am__v_AR_ = $(am__v_AR_@AM_DEFAULT_V@) -@@ -571,6 +595,7 @@ - libtests_a-printxval-Xabbrev.$(OBJEXT) \ - libtests_a-printxval-Xraw.$(OBJEXT) \ - libtests_a-printxval-Xverbose.$(OBJEXT) \ -+ libtests_a-secontext.$(OBJEXT) \ - libtests_a-signal2name.$(OBJEXT) \ - libtests_a-skip_unavailable.$(OBJEXT) \ - libtests_a-sprintrc.$(OBJEXT) libtests_a-status.$(OBJEXT) \ -@@ -600,6 +625,14 @@ - access_OBJECTS = access.$(OBJEXT) - access_LDADD = $(LDADD) - access_DEPENDENCIES = libtests.a -+access__secontext_SOURCES = access--secontext.c -+access__secontext_OBJECTS = access--secontext.$(OBJEXT) -+am__DEPENDENCIES_1 = -+@HAVE_SELINUX_RUNTIME_TRUE@am__DEPENDENCIES_2 = $(am__DEPENDENCIES_1) -+access__secontext_DEPENDENCIES = $(LDADD) $(am__DEPENDENCIES_2) -+access__secontext_full_SOURCES = access--secontext_full.c -+access__secontext_full_OBJECTS = access--secontext_full.$(OBJEXT) -+access__secontext_full_DEPENDENCIES = $(LDADD) $(am__DEPENDENCIES_2) - acct_SOURCES = acct.c - acct_OBJECTS = acct.$(OBJEXT) - acct_LDADD = $(LDADD) -@@ -718,6 +751,12 @@ - chmod_OBJECTS = chmod.$(OBJEXT) - chmod_LDADD = $(LDADD) - chmod_DEPENDENCIES = libtests.a -+chmod__secontext_SOURCES = chmod--secontext.c -+chmod__secontext_OBJECTS = chmod--secontext.$(OBJEXT) -+chmod__secontext_DEPENDENCIES = $(LDADD) $(am__DEPENDENCIES_2) -+chmod__secontext_full_SOURCES = chmod--secontext_full.c -+chmod__secontext_full_OBJECTS = chmod--secontext_full.$(OBJEXT) -+chmod__secontext_full_DEPENDENCIES = $(LDADD) $(am__DEPENDENCIES_2) - chown_SOURCES = chown.c - chown_OBJECTS = chown.$(OBJEXT) - chown_LDADD = $(LDADD) -@@ -828,7 +867,6 @@ - creat_DEPENDENCIES = libtests.a - delay_SOURCES = delay.c - delay_OBJECTS = delay.$(OBJEXT) --am__DEPENDENCIES_1 = - delay_DEPENDENCIES = $(am__DEPENDENCIES_1) $(LDADD) - delete_module_SOURCES = delete_module.c - delete_module_OBJECTS = delete_module.$(OBJEXT) -@@ -930,6 +968,12 @@ - execve_OBJECTS = execve.$(OBJEXT) - execve_LDADD = $(LDADD) - execve_DEPENDENCIES = libtests.a -+execve__secontext_SOURCES = execve--secontext.c -+execve__secontext_OBJECTS = execve--secontext.$(OBJEXT) -+execve__secontext_DEPENDENCIES = $(LDADD) $(am__DEPENDENCIES_2) -+execve__secontext_full_SOURCES = execve--secontext_full.c -+execve__secontext_full_OBJECTS = execve--secontext_full.$(OBJEXT) -+execve__secontext_full_DEPENDENCIES = $(LDADD) $(am__DEPENDENCIES_2) - execve_v_SOURCES = execve-v.c - execve_v_OBJECTS = execve-v.$(OBJEXT) - execve_v_LDADD = $(LDADD) -@@ -938,6 +982,12 @@ - execveat_OBJECTS = execveat.$(OBJEXT) - execveat_LDADD = $(LDADD) - execveat_DEPENDENCIES = libtests.a -+execveat__secontext_SOURCES = execveat--secontext.c -+execveat__secontext_OBJECTS = execveat--secontext.$(OBJEXT) -+execveat__secontext_DEPENDENCIES = $(LDADD) $(am__DEPENDENCIES_2) -+execveat__secontext_full_SOURCES = execveat--secontext_full.c -+execveat__secontext_full_OBJECTS = execveat--secontext_full.$(OBJEXT) -+execveat__secontext_full_DEPENDENCIES = $(LDADD) $(am__DEPENDENCIES_2) - execveat_v_SOURCES = execveat-v.c - execveat_v_OBJECTS = execveat-v.$(OBJEXT) - execveat_v_LDADD = $(LDADD) -@@ -946,6 +996,34 @@ - faccessat_OBJECTS = faccessat.$(OBJEXT) - faccessat_LDADD = $(LDADD) - faccessat_DEPENDENCIES = libtests.a -+faccessat__secontext_SOURCES = faccessat--secontext.c -+faccessat__secontext_OBJECTS = faccessat--secontext.$(OBJEXT) -+faccessat__secontext_DEPENDENCIES = $(LDADD) $(am__DEPENDENCIES_2) -+faccessat__secontext_full_SOURCES = faccessat--secontext_full.c -+faccessat__secontext_full_OBJECTS = \ -+ faccessat--secontext_full.$(OBJEXT) -+faccessat__secontext_full_DEPENDENCIES = $(LDADD) \ -+ $(am__DEPENDENCIES_2) -+faccessat_P_SOURCES = faccessat-P.c -+faccessat_P_OBJECTS = faccessat-P.$(OBJEXT) -+faccessat_P_LDADD = $(LDADD) -+faccessat_P_DEPENDENCIES = libtests.a -+faccessat_y_SOURCES = faccessat-y.c -+faccessat_y_OBJECTS = faccessat-y.$(OBJEXT) -+faccessat_y_LDADD = $(LDADD) -+faccessat_y_DEPENDENCIES = libtests.a -+faccessat_y__secontext_SOURCES = faccessat-y--secontext.c -+faccessat_y__secontext_OBJECTS = faccessat-y--secontext.$(OBJEXT) -+faccessat_y__secontext_DEPENDENCIES = $(LDADD) $(am__DEPENDENCIES_2) -+faccessat_y__secontext_full_SOURCES = faccessat-y--secontext_full.c -+faccessat_y__secontext_full_OBJECTS = \ -+ faccessat-y--secontext_full.$(OBJEXT) -+faccessat_y__secontext_full_DEPENDENCIES = $(LDADD) \ -+ $(am__DEPENDENCIES_2) -+faccessat_yy_SOURCES = faccessat-yy.c -+faccessat_yy_OBJECTS = faccessat-yy.$(OBJEXT) -+faccessat_yy_LDADD = $(LDADD) -+faccessat_yy_DEPENDENCIES = libtests.a - fadvise64_SOURCES = fadvise64.c - fadvise64_OBJECTS = fadvise64.$(OBJEXT) - fadvise64_LDADD = $(LDADD) -@@ -966,6 +1044,15 @@ - fanotify_mark_OBJECTS = fanotify_mark.$(OBJEXT) - fanotify_mark_LDADD = $(LDADD) - fanotify_mark_DEPENDENCIES = libtests.a -+fanotify_mark__secontext_SOURCES = fanotify_mark--secontext.c -+fanotify_mark__secontext_OBJECTS = fanotify_mark--secontext.$(OBJEXT) -+fanotify_mark__secontext_DEPENDENCIES = $(LDADD) $(am__DEPENDENCIES_2) -+fanotify_mark__secontext_full_SOURCES = \ -+ fanotify_mark--secontext_full.c -+fanotify_mark__secontext_full_OBJECTS = \ -+ fanotify_mark--secontext_full.$(OBJEXT) -+fanotify_mark__secontext_full_DEPENDENCIES = $(LDADD) \ -+ $(am__DEPENDENCIES_2) - fanotify_mark_Xabbrev_SOURCES = fanotify_mark-Xabbrev.c - fanotify_mark_Xabbrev_OBJECTS = fanotify_mark-Xabbrev.$(OBJEXT) - fanotify_mark_Xabbrev_LDADD = $(LDADD) -@@ -986,14 +1073,32 @@ - fchmod_OBJECTS = fchmod.$(OBJEXT) - fchmod_LDADD = $(LDADD) - fchmod_DEPENDENCIES = libtests.a -+fchmod__secontext_SOURCES = fchmod--secontext.c -+fchmod__secontext_OBJECTS = fchmod--secontext.$(OBJEXT) -+fchmod__secontext_DEPENDENCIES = $(LDADD) $(am__DEPENDENCIES_2) -+fchmod__secontext_full_SOURCES = fchmod--secontext_full.c -+fchmod__secontext_full_OBJECTS = fchmod--secontext_full.$(OBJEXT) -+fchmod__secontext_full_DEPENDENCIES = $(LDADD) $(am__DEPENDENCIES_2) - fchmod_y_SOURCES = fchmod-y.c - fchmod_y_OBJECTS = fchmod-y.$(OBJEXT) - fchmod_y_LDADD = $(LDADD) - fchmod_y_DEPENDENCIES = libtests.a -+fchmod_y__secontext_SOURCES = fchmod-y--secontext.c -+fchmod_y__secontext_OBJECTS = fchmod-y--secontext.$(OBJEXT) -+fchmod_y__secontext_DEPENDENCIES = $(LDADD) $(am__DEPENDENCIES_2) -+fchmod_y__secontext_full_SOURCES = fchmod-y--secontext_full.c -+fchmod_y__secontext_full_OBJECTS = fchmod-y--secontext_full.$(OBJEXT) -+fchmod_y__secontext_full_DEPENDENCIES = $(LDADD) $(am__DEPENDENCIES_2) - fchmodat_SOURCES = fchmodat.c - fchmodat_OBJECTS = fchmodat.$(OBJEXT) - fchmodat_LDADD = $(LDADD) - fchmodat_DEPENDENCIES = libtests.a -+fchmodat__secontext_SOURCES = fchmodat--secontext.c -+fchmodat__secontext_OBJECTS = fchmodat--secontext.$(OBJEXT) -+fchmodat__secontext_DEPENDENCIES = $(LDADD) $(am__DEPENDENCIES_2) -+fchmodat__secontext_full_SOURCES = fchmodat--secontext_full.c -+fchmodat__secontext_full_OBJECTS = fchmodat--secontext_full.$(OBJEXT) -+fchmodat__secontext_full_DEPENDENCIES = $(LDADD) $(am__DEPENDENCIES_2) - fchown_SOURCES = fchown.c - fchown_OBJECTS = fchown.$(OBJEXT) - fchown_LDADD = $(LDADD) -@@ -1006,6 +1111,12 @@ - fchownat_OBJECTS = fchownat.$(OBJEXT) - fchownat_LDADD = $(LDADD) - fchownat_DEPENDENCIES = libtests.a -+fchownat__secontext_SOURCES = fchownat--secontext.c -+fchownat__secontext_OBJECTS = fchownat--secontext.$(OBJEXT) -+fchownat__secontext_DEPENDENCIES = $(LDADD) $(am__DEPENDENCIES_2) -+fchownat__secontext_full_SOURCES = fchownat--secontext_full.c -+fchownat__secontext_full_OBJECTS = fchownat--secontext_full.$(OBJEXT) -+fchownat__secontext_full_DEPENDENCIES = $(LDADD) $(am__DEPENDENCIES_2) - fcntl_SOURCES = fcntl.c - fcntl_OBJECTS = fcntl.$(OBJEXT) - fcntl_LDADD = $(LDADD) -@@ -1035,6 +1146,14 @@ - file_handle_OBJECTS = file_handle.$(OBJEXT) - file_handle_LDADD = $(LDADD) - file_handle_DEPENDENCIES = libtests.a -+file_handle__secontext_SOURCES = file_handle--secontext.c -+file_handle__secontext_OBJECTS = file_handle--secontext.$(OBJEXT) -+file_handle__secontext_DEPENDENCIES = $(LDADD) $(am__DEPENDENCIES_2) -+file_handle__secontext_full_SOURCES = file_handle--secontext_full.c -+file_handle__secontext_full_OBJECTS = \ -+ file_handle--secontext_full.$(OBJEXT) -+file_handle__secontext_full_DEPENDENCIES = $(LDADD) \ -+ $(am__DEPENDENCIES_2) - file_ioctl_SOURCES = file_ioctl.c - file_ioctl_OBJECTS = file_ioctl.$(OBJEXT) - file_ioctl_LDADD = $(LDADD) -@@ -1886,6 +2005,12 @@ - linkat_OBJECTS = linkat.$(OBJEXT) - linkat_LDADD = $(LDADD) - linkat_DEPENDENCIES = libtests.a -+linkat__secontext_SOURCES = linkat--secontext.c -+linkat__secontext_OBJECTS = linkat--secontext.$(OBJEXT) -+linkat__secontext_DEPENDENCIES = $(LDADD) $(am__DEPENDENCIES_2) -+linkat__secontext_full_SOURCES = linkat--secontext_full.c -+linkat__secontext_full_OBJECTS = linkat--secontext_full.$(OBJEXT) -+linkat__secontext_full_DEPENDENCIES = $(LDADD) $(am__DEPENDENCIES_2) - list_sigaction_signum_SOURCES = list_sigaction_signum.c - list_sigaction_signum_OBJECTS = list_sigaction_signum.$(OBJEXT) - list_sigaction_signum_LDADD = $(LDADD) -@@ -2530,6 +2655,12 @@ - open_OBJECTS = open.$(OBJEXT) - open_LDADD = $(LDADD) - open_DEPENDENCIES = libtests.a -+open__secontext_SOURCES = open--secontext.c -+open__secontext_OBJECTS = open--secontext.$(OBJEXT) -+open__secontext_DEPENDENCIES = $(LDADD) $(am__DEPENDENCIES_2) -+open__secontext_full_SOURCES = open--secontext_full.c -+open__secontext_full_OBJECTS = open--secontext_full.$(OBJEXT) -+open__secontext_full_DEPENDENCIES = $(LDADD) $(am__DEPENDENCIES_2) - open_tree_SOURCES = open_tree.c - open_tree_OBJECTS = open_tree.$(OBJEXT) - open_tree_LDADD = $(LDADD) -@@ -2542,6 +2673,12 @@ - openat_OBJECTS = openat.$(OBJEXT) - openat_LDADD = $(LDADD) - openat_DEPENDENCIES = libtests.a -+openat__secontext_SOURCES = openat--secontext.c -+openat__secontext_OBJECTS = openat--secontext.$(OBJEXT) -+openat__secontext_DEPENDENCIES = $(LDADD) $(am__DEPENDENCIES_2) -+openat__secontext_full_SOURCES = openat--secontext_full.c -+openat__secontext_full_OBJECTS = openat--secontext_full.$(OBJEXT) -+openat__secontext_full_DEPENDENCIES = $(LDADD) $(am__DEPENDENCIES_2) - openat2_SOURCES = openat2.c - openat2_OBJECTS = openat2.$(OBJEXT) - openat2_LDADD = $(LDADD) -@@ -4487,7 +4624,8 @@ - am__v_CCLD_0 = @echo " CCLD " $@; - am__v_CCLD_1 = - SOURCES = $(libtests_a_SOURCES) _newselect.c _newselect-P.c accept.c \ -- accept4.c access.c acct.c add_key.c adjtimex.c aio.c \ -+ accept4.c access.c access--secontext.c \ -+ access--secontext_full.c acct.c add_key.c adjtimex.c aio.c \ - aio_pgetevents.c alarm.c answer.c attach-f-p.c \ - attach-f-p-cmd.c attach-p-cmd-cmd.c attach-p-cmd-p.c \ - block_reset_raise_run.c block_reset_run.c bpf.c \ -@@ -4495,7 +4633,8 @@ - bpf-obj_get_info_by_fd-prog-v.c bpf-obj_get_info_by_fd-v.c \ - bpf-success.c bpf-success-long-y.c bpf-success-v.c bpf-v.c \ - brk.c btrfs.c caps.c caps-abbrev.c check_sigblock.c \ -- check_sigign.c chmod.c chown.c chown32.c chroot.c \ -+ check_sigign.c chmod.c chmod--secontext.c \ -+ chmod--secontext_full.c chown.c chown32.c chroot.c \ - clock_adjtime.c clock_nanosleep.c clock_xettime.c \ - clone-flags.c clone3.c clone3-Xabbrev.c clone3-Xraw.c \ - clone3-Xverbose.c clone3-success.c clone3-success-Xabbrev.c \ -@@ -4509,25 +4648,35 @@ - dup-yy.c dup2.c dup2-P.c dup2-y.c dup2-yy.c dup3.c dup3-P.c \ - dup3-y.c dup3-yy.c epoll_create.c epoll_create1.c epoll_ctl.c \ - epoll_pwait.c epoll_wait.c erestartsys.c eventfd.c execve.c \ -- 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 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 \ -- fsconfig-P.c fsmount.c fsopen.c fspick.c fspick-P.c fstat.c \ -- fstat-Xabbrev.c fstat-Xraw.c fstat-Xverbose.c fstat64.c \ -- fstat64-Xabbrev.c fstat64-Xraw.c fstat64-Xverbose.c \ -- fstatat64.c fstatfs.c fstatfs64.c fsync.c fsync-y.c \ -- ftruncate.c ftruncate64.c futex.c futimesat.c get_mempolicy.c \ -- get_process_reaper.c getcpu.c getcwd.c getdents.c getdents-v.c \ -- getdents64.c getdents64-v.c getegid.c getegid32.c geteuid.c \ -- geteuid32.c getgid.c getgid32.c getgroups.c getgroups32.c \ -- getpeername.c getpgrp.c getpgrp--pidns-translation.c getpid.c \ -+ execve--secontext.c execve--secontext_full.c execve-v.c \ -+ execveat.c execveat--secontext.c execveat--secontext_full.c \ -+ execveat-v.c faccessat.c faccessat--secontext.c \ -+ faccessat--secontext_full.c faccessat-P.c faccessat-y.c \ -+ faccessat-y--secontext.c faccessat-y--secontext_full.c \ -+ faccessat-yy.c fadvise64.c fadvise64_64.c fallocate.c \ -+ fanotify_init.c fanotify_mark.c fanotify_mark--secontext.c \ -+ fanotify_mark--secontext_full.c fanotify_mark-Xabbrev.c \ -+ fanotify_mark-Xraw.c fanotify_mark-Xverbose.c fchdir.c \ -+ fchmod.c fchmod--secontext.c fchmod--secontext_full.c \ -+ fchmod-y.c fchmod-y--secontext.c fchmod-y--secontext_full.c \ -+ fchmodat.c fchmodat--secontext.c fchmodat--secontext_full.c \ -+ fchown.c fchown32.c fchownat.c fchownat--secontext.c \ -+ fchownat--secontext_full.c fcntl.c fcntl--pidns-translation.c \ -+ fcntl64.c fcntl64--pidns-translation.c fdatasync.c fflush.c \ -+ file_handle.c file_handle--secontext.c \ -+ file_handle--secontext_full.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 fsconfig-P.c \ -+ fsmount.c fsopen.c fspick.c fspick-P.c fstat.c fstat-Xabbrev.c \ -+ fstat-Xraw.c fstat-Xverbose.c fstat64.c fstat64-Xabbrev.c \ -+ fstat64-Xraw.c fstat64-Xverbose.c fstatat64.c fstatfs.c \ -+ fstatfs64.c fsync.c fsync-y.c ftruncate.c ftruncate64.c \ -+ futex.c futimesat.c get_mempolicy.c get_process_reaper.c \ -+ getcpu.c getcwd.c getdents.c getdents-v.c getdents64.c \ -+ getdents64-v.c getegid.c getegid32.c geteuid.c geteuid32.c \ -+ getgid.c getgid32.c getgroups.c getgroups32.c getpeername.c \ -+ getpgrp.c getpgrp--pidns-translation.c getpid.c \ - getpid--pidns-translation.c getppid.c getrandom.c getresgid.c \ - getresgid32.c getresuid.c getresuid32.c getrlimit.c \ - getrusage.c getsid.c getsid--pidns-translation.c getsockname.c \ -@@ -4578,7 +4727,8 @@ - kexec_file_load.c kexec_load.c keyctl.c keyctl-Xabbrev.c \ - keyctl-Xraw.c keyctl-Xverbose.c kill.c \ - kill--pidns-translation.c kill_child.c ksysent.c lchown.c \ -- lchown32.c link.c linkat.c list_sigaction_signum.c llseek.c \ -+ lchown32.c link.c linkat.c linkat--secontext.c \ -+ linkat--secontext_full.c list_sigaction_signum.c llseek.c \ - localtime.c lookup_dcookie.c looping_threads.c lseek.c lstat.c \ - lstat64.c madvise.c maybe_switch_current_tcp.c \ - maybe_switch_current_tcp--quiet-thread-execve.c mbind.c \ -@@ -4629,23 +4779,25 @@ - old_mmap-Xabbrev.c old_mmap-Xraw.c old_mmap-Xverbose.c \ - old_mmap-v-none.c oldfstat.c oldlstat.c oldselect.c \ - oldselect-P.c oldselect-efault.c oldselect-efault-P.c \ -- oldstat.c open.c open_tree.c open_tree-P.c openat.c openat2.c \ -- openat2-Xabbrev.c openat2-Xraw.c openat2-Xverbose.c \ -- openat2-v.c openat2-v-y.c openat2-v-y-Xabbrev.c \ -- openat2-v-y-Xraw.c openat2-v-y-Xverbose.c openat2-y.c \ -- orphaned_process_group.c osf_utimes.c pause.c pc.c \ -- perf_event_open.c perf_event_open_nonverbose.c \ -- perf_event_open_unabbrev.c personality.c personality-Xabbrev.c \ -- personality-Xraw.c personality-Xverbose.c pidfd_getfd.c \ -- pidfd_getfd-y.c pidfd_getfd-yy.c pidfd_open.c \ -- pidfd_open--decode-fd-path.c pidfd_open--decode-fd-pidfd.c \ -- pidfd_open--decode-fd-socket.c pidfd_open--pidns-translation.c \ -- pidfd_open-P.c pidfd_open-y.c pidfd_open-yy.c \ -- pidfd_send_signal.c pidfd_send_signal--pidns-translation.c \ -- pidns-cache.c pipe.c pipe2.c pkey_alloc.c pkey_free.c \ -- pkey_mprotect.c poll.c poll-P.c ppoll.c ppoll-P.c ppoll-v.c \ -- prctl-arg2-intptr.c prctl-dumpable.c prctl-name.c \ -- prctl-no-args.c prctl-pdeathsig.c prctl-seccomp-filter-v.c \ -+ oldstat.c open.c open--secontext.c open--secontext_full.c \ -+ open_tree.c open_tree-P.c openat.c openat--secontext.c \ -+ openat--secontext_full.c openat2.c openat2-Xabbrev.c \ -+ openat2-Xraw.c openat2-Xverbose.c openat2-v.c openat2-v-y.c \ -+ openat2-v-y-Xabbrev.c openat2-v-y-Xraw.c \ -+ openat2-v-y-Xverbose.c openat2-y.c orphaned_process_group.c \ -+ osf_utimes.c pause.c pc.c perf_event_open.c \ -+ perf_event_open_nonverbose.c perf_event_open_unabbrev.c \ -+ personality.c personality-Xabbrev.c personality-Xraw.c \ -+ personality-Xverbose.c pidfd_getfd.c pidfd_getfd-y.c \ -+ pidfd_getfd-yy.c pidfd_open.c pidfd_open--decode-fd-path.c \ -+ pidfd_open--decode-fd-pidfd.c pidfd_open--decode-fd-socket.c \ -+ pidfd_open--pidns-translation.c pidfd_open-P.c pidfd_open-y.c \ -+ pidfd_open-yy.c pidfd_send_signal.c \ -+ pidfd_send_signal--pidns-translation.c pidns-cache.c pipe.c \ -+ pipe2.c pkey_alloc.c pkey_free.c pkey_mprotect.c poll.c \ -+ poll-P.c ppoll.c ppoll-P.c ppoll-v.c prctl-arg2-intptr.c \ -+ prctl-dumpable.c prctl-name.c prctl-no-args.c \ -+ prctl-pdeathsig.c prctl-seccomp-filter-v.c \ - prctl-seccomp-strict.c prctl-securebits.c prctl-spec-inject.c \ - prctl-tid_address.c prctl-tsc.c pread64-pwrite64.c preadv.c \ - preadv-pwritev.c preadv2-pwritev2.c print_maxfd.c \ -@@ -4735,7 +4887,8 @@ - xetpriority.c xetpriority--pidns-translation.c xettimeofday.c \ - zeroargc.c - DIST_SOURCES = $(libtests_a_SOURCES) _newselect.c _newselect-P.c \ -- accept.c accept4.c access.c acct.c add_key.c adjtimex.c aio.c \ -+ accept.c accept4.c access.c access--secontext.c \ -+ access--secontext_full.c acct.c add_key.c adjtimex.c aio.c \ - aio_pgetevents.c alarm.c answer.c attach-f-p.c \ - attach-f-p-cmd.c attach-p-cmd-cmd.c attach-p-cmd-p.c \ - block_reset_raise_run.c block_reset_run.c bpf.c \ -@@ -4743,7 +4896,8 @@ - bpf-obj_get_info_by_fd-prog-v.c bpf-obj_get_info_by_fd-v.c \ - bpf-success.c bpf-success-long-y.c bpf-success-v.c bpf-v.c \ - brk.c btrfs.c caps.c caps-abbrev.c check_sigblock.c \ -- check_sigign.c chmod.c chown.c chown32.c chroot.c \ -+ check_sigign.c chmod.c chmod--secontext.c \ -+ chmod--secontext_full.c chown.c chown32.c chroot.c \ - clock_adjtime.c clock_nanosleep.c clock_xettime.c \ - clone-flags.c clone3.c clone3-Xabbrev.c clone3-Xraw.c \ - clone3-Xverbose.c clone3-success.c clone3-success-Xabbrev.c \ -@@ -4757,25 +4911,35 @@ - dup-yy.c dup2.c dup2-P.c dup2-y.c dup2-yy.c dup3.c dup3-P.c \ - dup3-y.c dup3-yy.c epoll_create.c epoll_create1.c epoll_ctl.c \ - epoll_pwait.c epoll_wait.c erestartsys.c eventfd.c execve.c \ -- 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 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 \ -- fsconfig-P.c fsmount.c fsopen.c fspick.c fspick-P.c fstat.c \ -- fstat-Xabbrev.c fstat-Xraw.c fstat-Xverbose.c fstat64.c \ -- fstat64-Xabbrev.c fstat64-Xraw.c fstat64-Xverbose.c \ -- fstatat64.c fstatfs.c fstatfs64.c fsync.c fsync-y.c \ -- ftruncate.c ftruncate64.c futex.c futimesat.c get_mempolicy.c \ -- get_process_reaper.c getcpu.c getcwd.c getdents.c getdents-v.c \ -- getdents64.c getdents64-v.c getegid.c getegid32.c geteuid.c \ -- geteuid32.c getgid.c getgid32.c getgroups.c getgroups32.c \ -- getpeername.c getpgrp.c getpgrp--pidns-translation.c getpid.c \ -+ execve--secontext.c execve--secontext_full.c execve-v.c \ -+ execveat.c execveat--secontext.c execveat--secontext_full.c \ -+ execveat-v.c faccessat.c faccessat--secontext.c \ -+ faccessat--secontext_full.c faccessat-P.c faccessat-y.c \ -+ faccessat-y--secontext.c faccessat-y--secontext_full.c \ -+ faccessat-yy.c fadvise64.c fadvise64_64.c fallocate.c \ -+ fanotify_init.c fanotify_mark.c fanotify_mark--secontext.c \ -+ fanotify_mark--secontext_full.c fanotify_mark-Xabbrev.c \ -+ fanotify_mark-Xraw.c fanotify_mark-Xverbose.c fchdir.c \ -+ fchmod.c fchmod--secontext.c fchmod--secontext_full.c \ -+ fchmod-y.c fchmod-y--secontext.c fchmod-y--secontext_full.c \ -+ fchmodat.c fchmodat--secontext.c fchmodat--secontext_full.c \ -+ fchown.c fchown32.c fchownat.c fchownat--secontext.c \ -+ fchownat--secontext_full.c fcntl.c fcntl--pidns-translation.c \ -+ fcntl64.c fcntl64--pidns-translation.c fdatasync.c fflush.c \ -+ file_handle.c file_handle--secontext.c \ -+ file_handle--secontext_full.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 fsconfig-P.c \ -+ fsmount.c fsopen.c fspick.c fspick-P.c fstat.c fstat-Xabbrev.c \ -+ fstat-Xraw.c fstat-Xverbose.c fstat64.c fstat64-Xabbrev.c \ -+ fstat64-Xraw.c fstat64-Xverbose.c fstatat64.c fstatfs.c \ -+ fstatfs64.c fsync.c fsync-y.c ftruncate.c ftruncate64.c \ -+ futex.c futimesat.c get_mempolicy.c get_process_reaper.c \ -+ getcpu.c getcwd.c getdents.c getdents-v.c getdents64.c \ -+ getdents64-v.c getegid.c getegid32.c geteuid.c geteuid32.c \ -+ getgid.c getgid32.c getgroups.c getgroups32.c getpeername.c \ -+ getpgrp.c getpgrp--pidns-translation.c getpid.c \ - getpid--pidns-translation.c getppid.c getrandom.c getresgid.c \ - getresgid32.c getresuid.c getresuid32.c getrlimit.c \ - getrusage.c getsid.c getsid--pidns-translation.c getsockname.c \ -@@ -4826,7 +4990,8 @@ - kexec_file_load.c kexec_load.c keyctl.c keyctl-Xabbrev.c \ - keyctl-Xraw.c keyctl-Xverbose.c kill.c \ - kill--pidns-translation.c kill_child.c ksysent.c lchown.c \ -- lchown32.c link.c linkat.c list_sigaction_signum.c llseek.c \ -+ lchown32.c link.c linkat.c linkat--secontext.c \ -+ linkat--secontext_full.c list_sigaction_signum.c llseek.c \ - localtime.c lookup_dcookie.c looping_threads.c lseek.c lstat.c \ - lstat64.c madvise.c maybe_switch_current_tcp.c \ - maybe_switch_current_tcp--quiet-thread-execve.c mbind.c \ -@@ -4877,23 +5042,25 @@ - old_mmap-Xabbrev.c old_mmap-Xraw.c old_mmap-Xverbose.c \ - old_mmap-v-none.c oldfstat.c oldlstat.c oldselect.c \ - oldselect-P.c oldselect-efault.c oldselect-efault-P.c \ -- oldstat.c open.c open_tree.c open_tree-P.c openat.c openat2.c \ -- openat2-Xabbrev.c openat2-Xraw.c openat2-Xverbose.c \ -- openat2-v.c openat2-v-y.c openat2-v-y-Xabbrev.c \ -- openat2-v-y-Xraw.c openat2-v-y-Xverbose.c openat2-y.c \ -- orphaned_process_group.c osf_utimes.c pause.c pc.c \ -- perf_event_open.c perf_event_open_nonverbose.c \ -- perf_event_open_unabbrev.c personality.c personality-Xabbrev.c \ -- personality-Xraw.c personality-Xverbose.c pidfd_getfd.c \ -- pidfd_getfd-y.c pidfd_getfd-yy.c pidfd_open.c \ -- pidfd_open--decode-fd-path.c pidfd_open--decode-fd-pidfd.c \ -- pidfd_open--decode-fd-socket.c pidfd_open--pidns-translation.c \ -- pidfd_open-P.c pidfd_open-y.c pidfd_open-yy.c \ -- pidfd_send_signal.c pidfd_send_signal--pidns-translation.c \ -- pidns-cache.c pipe.c pipe2.c pkey_alloc.c pkey_free.c \ -- pkey_mprotect.c poll.c poll-P.c ppoll.c ppoll-P.c ppoll-v.c \ -- prctl-arg2-intptr.c prctl-dumpable.c prctl-name.c \ -- prctl-no-args.c prctl-pdeathsig.c prctl-seccomp-filter-v.c \ -+ oldstat.c open.c open--secontext.c open--secontext_full.c \ -+ open_tree.c open_tree-P.c openat.c openat--secontext.c \ -+ openat--secontext_full.c openat2.c openat2-Xabbrev.c \ -+ openat2-Xraw.c openat2-Xverbose.c openat2-v.c openat2-v-y.c \ -+ openat2-v-y-Xabbrev.c openat2-v-y-Xraw.c \ -+ openat2-v-y-Xverbose.c openat2-y.c orphaned_process_group.c \ -+ osf_utimes.c pause.c pc.c perf_event_open.c \ -+ perf_event_open_nonverbose.c perf_event_open_unabbrev.c \ -+ personality.c personality-Xabbrev.c personality-Xraw.c \ -+ personality-Xverbose.c pidfd_getfd.c pidfd_getfd-y.c \ -+ pidfd_getfd-yy.c pidfd_open.c pidfd_open--decode-fd-path.c \ -+ pidfd_open--decode-fd-pidfd.c pidfd_open--decode-fd-socket.c \ -+ pidfd_open--pidns-translation.c pidfd_open-P.c pidfd_open-y.c \ -+ pidfd_open-yy.c pidfd_send_signal.c \ -+ pidfd_send_signal--pidns-translation.c pidns-cache.c pipe.c \ -+ pipe2.c pkey_alloc.c pkey_free.c pkey_mprotect.c poll.c \ -+ poll-P.c ppoll.c ppoll-P.c ppoll-v.c prctl-arg2-intptr.c \ -+ prctl-dumpable.c prctl-name.c prctl-no-args.c \ -+ prctl-pdeathsig.c prctl-seccomp-filter-v.c \ - prctl-seccomp-strict.c prctl-securebits.c prctl-spec-inject.c \ - prctl-tid_address.c prctl-tsc.c pread64-pwrite64.c preadv.c \ - preadv-pwritev.c preadv2-pwritev2.c print_maxfd.c \ -@@ -5194,7 +5361,7 @@ - bases=`echo $$bases` - RECHECK_LOGS = $(TEST_LOGS) - AM_RECURSIVE_TARGETS = check recheck --@ENABLE_STACKTRACE_TRUE@am__EXEEXT_2 = strace-k.test strace-k-p.test \ -+@ENABLE_STACKTRACE_TRUE@am__EXEEXT_3 = strace-k.test strace-k-p.test \ - @ENABLE_STACKTRACE_TRUE@ $(am__append_1) - TEST_SUITE_LOG = test-suite.log - TEST_EXTENSIONS = @EXEEXT@ .test -@@ -5216,7 +5383,8 @@ - esac - am__DIST_COMMON = $(srcdir)/../scno.am $(srcdir)/Makefile.in \ - $(srcdir)/gen_tests.am $(srcdir)/pure_executables.am \ -- $(top_srcdir)/depcomp $(top_srcdir)/test-driver COPYING -+ $(srcdir)/secontext.am $(top_srcdir)/depcomp \ -+ $(top_srcdir)/test-driver COPYING - DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) - ACLOCAL = @ACLOCAL@ - AMTAR = @AMTAR@ -@@ -5357,6 +5525,9 @@ - libiberty_CPPFLAGS = @libiberty_CPPFLAGS@ - libiberty_LDFLAGS = @libiberty_LDFLAGS@ - libiberty_LIBS = @libiberty_LIBS@ -+libselinux_CPPFLAGS = @libselinux_CPPFLAGS@ -+libselinux_LDFLAGS = @libselinux_LDFLAGS@ -+libselinux_LIBS = @libselinux_LIBS@ - libunwind_CPPFLAGS = @libunwind_CPPFLAGS@ - libunwind_LDFLAGS = @libunwind_LDFLAGS@ - libunwind_LIBS = @libunwind_LIBS@ -@@ -5400,6 +5571,8 @@ - -DTESTS_SIZEOF_LONG=$(SIZEOF_LONG) - - AM_LDFLAGS = $(ARCH_MFLAGS) -+@HAVE_SELINUX_RUNTIME_FALSE@libselinux_LDADD = -+@HAVE_SELINUX_RUNTIME_TRUE@libselinux_LDADD = $(libselinux_LIBS) - libtests_a_SOURCES = \ - create_nl_socket.c \ - create_tmpfile.c \ -@@ -5426,6 +5599,8 @@ - printxval-Xabbrev.c \ - printxval-Xraw.c \ - printxval-Xverbose.c \ -+ secontext.c \ -+ secontext.h \ - signal2name.c \ - skip_unavailable.c \ - sprintrc.c \ -@@ -5505,6 +5680,9 @@ - execve \ - execveat \ - faccessat \ -+ faccessat-P \ -+ faccessat-y \ -+ faccessat-yy \ - fadvise64 \ - fadvise64_64 \ - fallocate \ -@@ -6077,6 +6255,69 @@ - xettimeofday \ - # - -+secontext_EXECUTABLES = \ -+ access--secontext \ -+ access--secontext_full \ -+ chmod--secontext \ -+ chmod--secontext_full \ -+ execve--secontext \ -+ execve--secontext_full \ -+ execveat--secontext \ -+ execveat--secontext_full \ -+ faccessat--secontext \ -+ faccessat--secontext_full \ -+ faccessat-y--secontext \ -+ faccessat-y--secontext_full \ -+ fanotify_mark--secontext \ -+ fanotify_mark--secontext_full \ -+ fchmod--secontext \ -+ fchmod--secontext_full \ -+ fchmod-y--secontext \ -+ fchmod-y--secontext_full \ -+ fchmodat--secontext \ -+ fchmodat--secontext_full \ -+ fchownat--secontext \ -+ fchownat--secontext_full \ -+ file_handle--secontext \ -+ file_handle--secontext_full \ -+ linkat--secontext \ -+ linkat--secontext_full \ -+ open--secontext \ -+ open--secontext_full \ -+ openat--secontext \ -+ openat--secontext_full \ -+ # -+ -+access__secontext_LDADD = $(LDADD) $(libselinux_LDADD) -+access__secontext_full_LDADD = $(LDADD) $(libselinux_LDADD) -+chmod__secontext_LDADD = $(LDADD) $(libselinux_LDADD) -+chmod__secontext_full_LDADD = $(LDADD) $(libselinux_LDADD) -+execve__secontext_LDADD = $(LDADD) $(libselinux_LDADD) -+execve__secontext_full_LDADD = $(LDADD) $(libselinux_LDADD) -+execveat__secontext_LDADD = $(LDADD) $(libselinux_LDADD) -+execveat__secontext_full_LDADD = $(LDADD) $(libselinux_LDADD) -+faccessat__secontext_LDADD = $(LDADD) $(libselinux_LDADD) -+faccessat__secontext_full_LDADD = $(LDADD) $(libselinux_LDADD) -+faccessat_y__secontext_LDADD = $(LDADD) $(libselinux_LDADD) -+faccessat_y__secontext_full_LDADD = $(LDADD) $(libselinux_LDADD) -+fanotify_mark__secontext_LDADD = $(LDADD) $(libselinux_LDADD) -+fanotify_mark__secontext_full_LDADD = $(LDADD) $(libselinux_LDADD) -+fchmod__secontext_LDADD = $(LDADD) $(libselinux_LDADD) -+fchmod__secontext_full_LDADD = $(LDADD) $(libselinux_LDADD) -+fchmod_y__secontext_LDADD = $(LDADD) $(libselinux_LDADD) -+fchmod_y__secontext_full_LDADD = $(LDADD) $(libselinux_LDADD) -+fchmodat__secontext_LDADD = $(LDADD) $(libselinux_LDADD) -+fchmodat__secontext_full_LDADD = $(LDADD) $(libselinux_LDADD) -+fchownat__secontext_LDADD = $(LDADD) $(libselinux_LDADD) -+fchownat__secontext_full_LDADD = $(LDADD) $(libselinux_LDADD) -+file_handle__secontext_LDADD = $(LDADD) $(libselinux_LDADD) -+file_handle__secontext_full_LDADD = $(LDADD) $(libselinux_LDADD) -+linkat__secontext_LDADD = $(LDADD) $(libselinux_LDADD) -+linkat__secontext_full_LDADD = $(LDADD) $(libselinux_LDADD) -+open__secontext_LDADD = $(LDADD) $(libselinux_LDADD) -+open__secontext_full_LDADD = $(LDADD) $(libselinux_LDADD) -+openat__secontext_LDADD = $(LDADD) $(libselinux_LDADD) -+openat__secontext_full_LDADD = $(LDADD) $(libselinux_LDADD) - attach_f_p_LDADD = -lpthread $(LDADD) - count_f_LDADD = -lpthread $(LDADD) - delay_LDADD = $(clock_LIBS) $(LDADD) -@@ -6129,14 +6370,15 @@ - - # Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in; do not edit. - GEN_TESTS = _newselect.gen.test _newselect-P.gen.test accept.gen.test \ -- accept4.gen.test access.gen.test acct.gen.test \ -- add_key.gen.test adjtimex.gen.test aio.gen.test \ -- aio_pgetevents.gen.test alarm.gen.test bpf.gen.test \ -- bpf-obj_get_info_by_fd.gen.test \ -+ accept4.gen.test access.gen.test access--secontext.gen.test \ -+ access--secontext_full.gen.test acct.gen.test add_key.gen.test \ -+ adjtimex.gen.test aio.gen.test aio_pgetevents.gen.test \ -+ alarm.gen.test bpf.gen.test bpf-obj_get_info_by_fd.gen.test \ - bpf-obj_get_info_by_fd-prog.gen.test \ - bpf-obj_get_info_by_fd-prog-v.gen.test \ - bpf-obj_get_info_by_fd-v.gen.test bpf-v.gen.test \ -- btrfs.gen.test chmod.gen.test chown.gen.test chown32.gen.test \ -+ btrfs.gen.test chmod.gen.test chmod--secontext.gen.test \ -+ chmod--secontext_full.gen.test chown.gen.test chown32.gen.test \ - chroot.gen.test clock.gen.test clock_adjtime.gen.test \ - clock_nanosleep.gen.test clock_xettime.gen.test \ - clone3.gen.test clone3-Xabbrev.gen.test clone3-Xraw.gen.test \ -@@ -6155,21 +6397,36 @@ - dup3-P.gen.test dup3-y.gen.test dup3-yy.gen.test \ - epoll_create.gen.test epoll_create1.gen.test \ - epoll_ctl.gen.test epoll_pwait.gen.test epoll_wait.gen.test \ -- erestartsys.gen.test execveat.gen.test execveat-v.gen.test \ -- faccessat.gen.test fadvise64_64.gen.test fallocate.gen.test \ -+ erestartsys.gen.test execve--secontext.gen.test \ -+ execve--secontext_full.gen.test execveat.gen.test \ -+ execveat--secontext.gen.test execveat--secontext_full.gen.test \ -+ execveat-v.gen.test faccessat--secontext.gen.test \ -+ faccessat--secontext_full.gen.test faccessat-P.gen.test \ -+ faccessat-y.gen.test faccessat-y--secontext.gen.test \ -+ faccessat-y--secontext_full.gen.test faccessat-yy.gen.test \ -+ fadvise64_64.gen.test fallocate.gen.test \ - fanotify_init.gen.test fanotify_mark.gen.test \ -+ fanotify_mark--secontext.gen.test \ -+ fanotify_mark--secontext_full.gen.test \ - fanotify_mark-Xabbrev.gen.test fanotify_mark-Xraw.gen.test \ - fanotify_mark-Xverbose.gen.test fchdir.gen.test \ -- fchmod.gen.test fchmod-y.gen.test fchmodat.gen.test \ -- fchown.gen.test fchown32.gen.test fchownat.gen.test \ -+ fchmod.gen.test fchmod--secontext.gen.test \ -+ fchmod--secontext_full.gen.test fchmod-y.gen.test \ -+ fchmod-y--secontext.gen.test fchmod-y--secontext_full.gen.test \ -+ fchmodat.gen.test fchmodat--secontext.gen.test \ -+ fchmodat--secontext_full.gen.test fchown.gen.test \ -+ fchown32.gen.test fchownat.gen.test \ -+ fchownat--secontext.gen.test fchownat--secontext_full.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 \ -- fsopen.gen.test fspick.gen.test fspick-P.gen.test \ -- fstat.gen.test fstat-Xabbrev.gen.test fstat-Xraw.gen.test \ -+ file_handle--secontext.gen.test \ -+ file_handle--secontext_full.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 fsopen.gen.test \ -+ fspick.gen.test fspick-P.gen.test fstat.gen.test \ -+ fstat-Xabbrev.gen.test fstat-Xraw.gen.test \ - fstat-Xverbose.gen.test fstat64.gen.test \ - fstat64-Xabbrev.gen.test fstat64-Xraw.gen.test \ - fstat64-Xverbose.gen.test fstatat64.gen.test fstatfs.gen.test \ -@@ -6259,8 +6516,9 @@ - keyctl-Xverbose.gen.test kill.gen.test \ - kill--pidns-translation.gen.test ksysent.gen.test \ - lchown.gen.test lchown32.gen.test link.gen.test \ -- linkat.gen.test lookup_dcookie.gen.test lstat.gen.test \ -- lstat64.gen.test madvise.gen.test \ -+ linkat.gen.test linkat--secontext.gen.test \ -+ linkat--secontext_full.gen.test lookup_dcookie.gen.test \ -+ lstat.gen.test lstat64.gen.test madvise.gen.test \ - maybe_switch_current_tcp.gen.test \ - maybe_switch_current_tcp--quiet-thread-execve.gen.test \ - mbind.gen.test mbind-Xabbrev.gen.test mbind-Xraw.gen.test \ -@@ -6328,14 +6586,17 @@ - old_mmap-v-none.gen.test oldfstat.gen.test oldlstat.gen.test \ - oldselect.gen.test oldselect-P.gen.test \ - oldselect-efault.gen.test oldselect-efault-P.gen.test \ -- oldstat.gen.test open.gen.test open_tree.gen.test \ -- open_tree-P.gen.test openat.gen.test openat2.gen.test \ -- openat2-Xabbrev.gen.test openat2-Xraw.gen.test \ -- openat2-Xverbose.gen.test openat2-v.gen.test \ -- openat2-v-y.gen.test openat2-v-y-Xabbrev.gen.test \ -- openat2-v-y-Xraw.gen.test openat2-v-y-Xverbose.gen.test \ -- openat2-y.gen.test orphaned_process_group.gen.test \ -- osf_utimes.gen.test pause.gen.test perf_event_open.gen.test \ -+ oldstat.gen.test open.gen.test open--secontext.gen.test \ -+ open--secontext_full.gen.test open_tree.gen.test \ -+ open_tree-P.gen.test openat.gen.test \ -+ openat--secontext.gen.test openat--secontext_full.gen.test \ -+ openat2.gen.test openat2-Xabbrev.gen.test \ -+ openat2-Xraw.gen.test openat2-Xverbose.gen.test \ -+ openat2-v.gen.test openat2-v-y.gen.test \ -+ openat2-v-y-Xabbrev.gen.test openat2-v-y-Xraw.gen.test \ -+ openat2-v-y-Xverbose.gen.test openat2-y.gen.test \ -+ orphaned_process_group.gen.test osf_utimes.gen.test \ -+ pause.gen.test perf_event_open.gen.test \ - perf_event_open_nonverbose.gen.test \ - perf_event_open_unabbrev.gen.test personality-Xabbrev.gen.test \ - personality-Xraw.gen.test personality-Xverbose.gen.test \ -@@ -6806,7 +7067,7 @@ - - .SUFFIXES: - .SUFFIXES: .c .log .o .obj .test .test$(EXEEXT) .trs --$(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(srcdir)/pure_executables.am $(srcdir)/gen_tests.am $(srcdir)/../scno.am $(am__configure_deps) -+$(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(srcdir)/pure_executables.am $(srcdir)/secontext.am $(srcdir)/gen_tests.am $(srcdir)/../scno.am $(am__configure_deps) - @for dep in $?; do \ - case '$(am__configure_deps)' in \ - *$$dep*) \ -@@ -6826,7 +7087,7 @@ - echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__maybe_remake_depfiles)'; \ - cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__maybe_remake_depfiles);; \ - esac; --$(srcdir)/pure_executables.am $(srcdir)/gen_tests.am $(srcdir)/../scno.am $(am__empty): -+$(srcdir)/pure_executables.am $(srcdir)/secontext.am $(srcdir)/gen_tests.am $(srcdir)/../scno.am $(am__empty): - - $(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) - cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh -@@ -6868,6 +7129,14 @@ - @rm -f access$(EXEEXT) - $(AM_V_CCLD)$(LINK) $(access_OBJECTS) $(access_LDADD) $(LIBS) - -+access--secontext$(EXEEXT): $(access__secontext_OBJECTS) $(access__secontext_DEPENDENCIES) $(EXTRA_access__secontext_DEPENDENCIES) -+ @rm -f access--secontext$(EXEEXT) -+ $(AM_V_CCLD)$(LINK) $(access__secontext_OBJECTS) $(access__secontext_LDADD) $(LIBS) -+ -+access--secontext_full$(EXEEXT): $(access__secontext_full_OBJECTS) $(access__secontext_full_DEPENDENCIES) $(EXTRA_access__secontext_full_DEPENDENCIES) -+ @rm -f access--secontext_full$(EXEEXT) -+ $(AM_V_CCLD)$(LINK) $(access__secontext_full_OBJECTS) $(access__secontext_full_LDADD) $(LIBS) -+ - acct$(EXEEXT): $(acct_OBJECTS) $(acct_DEPENDENCIES) $(EXTRA_acct_DEPENDENCIES) - @rm -f acct$(EXEEXT) - $(AM_V_CCLD)$(LINK) $(acct_OBJECTS) $(acct_LDADD) $(LIBS) -@@ -6984,6 +7253,14 @@ - @rm -f chmod$(EXEEXT) - $(AM_V_CCLD)$(LINK) $(chmod_OBJECTS) $(chmod_LDADD) $(LIBS) - -+chmod--secontext$(EXEEXT): $(chmod__secontext_OBJECTS) $(chmod__secontext_DEPENDENCIES) $(EXTRA_chmod__secontext_DEPENDENCIES) -+ @rm -f chmod--secontext$(EXEEXT) -+ $(AM_V_CCLD)$(LINK) $(chmod__secontext_OBJECTS) $(chmod__secontext_LDADD) $(LIBS) -+ -+chmod--secontext_full$(EXEEXT): $(chmod__secontext_full_OBJECTS) $(chmod__secontext_full_DEPENDENCIES) $(EXTRA_chmod__secontext_full_DEPENDENCIES) -+ @rm -f chmod--secontext_full$(EXEEXT) -+ $(AM_V_CCLD)$(LINK) $(chmod__secontext_full_OBJECTS) $(chmod__secontext_full_LDADD) $(LIBS) -+ - chown$(EXEEXT): $(chown_OBJECTS) $(chown_DEPENDENCIES) $(EXTRA_chown_DEPENDENCIES) - @rm -f chown$(EXEEXT) - $(AM_V_CCLD)$(LINK) $(chown_OBJECTS) $(chown_LDADD) $(LIBS) -@@ -7196,6 +7473,14 @@ - @rm -f execve$(EXEEXT) - $(AM_V_CCLD)$(LINK) $(execve_OBJECTS) $(execve_LDADD) $(LIBS) - -+execve--secontext$(EXEEXT): $(execve__secontext_OBJECTS) $(execve__secontext_DEPENDENCIES) $(EXTRA_execve__secontext_DEPENDENCIES) -+ @rm -f execve--secontext$(EXEEXT) -+ $(AM_V_CCLD)$(LINK) $(execve__secontext_OBJECTS) $(execve__secontext_LDADD) $(LIBS) -+ -+execve--secontext_full$(EXEEXT): $(execve__secontext_full_OBJECTS) $(execve__secontext_full_DEPENDENCIES) $(EXTRA_execve__secontext_full_DEPENDENCIES) -+ @rm -f execve--secontext_full$(EXEEXT) -+ $(AM_V_CCLD)$(LINK) $(execve__secontext_full_OBJECTS) $(execve__secontext_full_LDADD) $(LIBS) -+ - execve-v$(EXEEXT): $(execve_v_OBJECTS) $(execve_v_DEPENDENCIES) $(EXTRA_execve_v_DEPENDENCIES) - @rm -f execve-v$(EXEEXT) - $(AM_V_CCLD)$(LINK) $(execve_v_OBJECTS) $(execve_v_LDADD) $(LIBS) -@@ -7204,6 +7489,14 @@ - @rm -f execveat$(EXEEXT) - $(AM_V_CCLD)$(LINK) $(execveat_OBJECTS) $(execveat_LDADD) $(LIBS) - -+execveat--secontext$(EXEEXT): $(execveat__secontext_OBJECTS) $(execveat__secontext_DEPENDENCIES) $(EXTRA_execveat__secontext_DEPENDENCIES) -+ @rm -f execveat--secontext$(EXEEXT) -+ $(AM_V_CCLD)$(LINK) $(execveat__secontext_OBJECTS) $(execveat__secontext_LDADD) $(LIBS) -+ -+execveat--secontext_full$(EXEEXT): $(execveat__secontext_full_OBJECTS) $(execveat__secontext_full_DEPENDENCIES) $(EXTRA_execveat__secontext_full_DEPENDENCIES) -+ @rm -f execveat--secontext_full$(EXEEXT) -+ $(AM_V_CCLD)$(LINK) $(execveat__secontext_full_OBJECTS) $(execveat__secontext_full_LDADD) $(LIBS) -+ - execveat-v$(EXEEXT): $(execveat_v_OBJECTS) $(execveat_v_DEPENDENCIES) $(EXTRA_execveat_v_DEPENDENCIES) - @rm -f execveat-v$(EXEEXT) - $(AM_V_CCLD)$(LINK) $(execveat_v_OBJECTS) $(execveat_v_LDADD) $(LIBS) -@@ -7212,6 +7505,34 @@ - @rm -f faccessat$(EXEEXT) - $(AM_V_CCLD)$(LINK) $(faccessat_OBJECTS) $(faccessat_LDADD) $(LIBS) - -+faccessat--secontext$(EXEEXT): $(faccessat__secontext_OBJECTS) $(faccessat__secontext_DEPENDENCIES) $(EXTRA_faccessat__secontext_DEPENDENCIES) -+ @rm -f faccessat--secontext$(EXEEXT) -+ $(AM_V_CCLD)$(LINK) $(faccessat__secontext_OBJECTS) $(faccessat__secontext_LDADD) $(LIBS) -+ -+faccessat--secontext_full$(EXEEXT): $(faccessat__secontext_full_OBJECTS) $(faccessat__secontext_full_DEPENDENCIES) $(EXTRA_faccessat__secontext_full_DEPENDENCIES) -+ @rm -f faccessat--secontext_full$(EXEEXT) -+ $(AM_V_CCLD)$(LINK) $(faccessat__secontext_full_OBJECTS) $(faccessat__secontext_full_LDADD) $(LIBS) -+ -+faccessat-P$(EXEEXT): $(faccessat_P_OBJECTS) $(faccessat_P_DEPENDENCIES) $(EXTRA_faccessat_P_DEPENDENCIES) -+ @rm -f faccessat-P$(EXEEXT) -+ $(AM_V_CCLD)$(LINK) $(faccessat_P_OBJECTS) $(faccessat_P_LDADD) $(LIBS) -+ -+faccessat-y$(EXEEXT): $(faccessat_y_OBJECTS) $(faccessat_y_DEPENDENCIES) $(EXTRA_faccessat_y_DEPENDENCIES) -+ @rm -f faccessat-y$(EXEEXT) -+ $(AM_V_CCLD)$(LINK) $(faccessat_y_OBJECTS) $(faccessat_y_LDADD) $(LIBS) -+ -+faccessat-y--secontext$(EXEEXT): $(faccessat_y__secontext_OBJECTS) $(faccessat_y__secontext_DEPENDENCIES) $(EXTRA_faccessat_y__secontext_DEPENDENCIES) -+ @rm -f faccessat-y--secontext$(EXEEXT) -+ $(AM_V_CCLD)$(LINK) $(faccessat_y__secontext_OBJECTS) $(faccessat_y__secontext_LDADD) $(LIBS) -+ -+faccessat-y--secontext_full$(EXEEXT): $(faccessat_y__secontext_full_OBJECTS) $(faccessat_y__secontext_full_DEPENDENCIES) $(EXTRA_faccessat_y__secontext_full_DEPENDENCIES) -+ @rm -f faccessat-y--secontext_full$(EXEEXT) -+ $(AM_V_CCLD)$(LINK) $(faccessat_y__secontext_full_OBJECTS) $(faccessat_y__secontext_full_LDADD) $(LIBS) -+ -+faccessat-yy$(EXEEXT): $(faccessat_yy_OBJECTS) $(faccessat_yy_DEPENDENCIES) $(EXTRA_faccessat_yy_DEPENDENCIES) -+ @rm -f faccessat-yy$(EXEEXT) -+ $(AM_V_CCLD)$(LINK) $(faccessat_yy_OBJECTS) $(faccessat_yy_LDADD) $(LIBS) -+ - fadvise64$(EXEEXT): $(fadvise64_OBJECTS) $(fadvise64_DEPENDENCIES) $(EXTRA_fadvise64_DEPENDENCIES) - @rm -f fadvise64$(EXEEXT) - $(AM_V_CCLD)$(LINK) $(fadvise64_OBJECTS) $(fadvise64_LDADD) $(LIBS) -@@ -7232,6 +7553,14 @@ - @rm -f fanotify_mark$(EXEEXT) - $(AM_V_CCLD)$(LINK) $(fanotify_mark_OBJECTS) $(fanotify_mark_LDADD) $(LIBS) - -+fanotify_mark--secontext$(EXEEXT): $(fanotify_mark__secontext_OBJECTS) $(fanotify_mark__secontext_DEPENDENCIES) $(EXTRA_fanotify_mark__secontext_DEPENDENCIES) -+ @rm -f fanotify_mark--secontext$(EXEEXT) -+ $(AM_V_CCLD)$(LINK) $(fanotify_mark__secontext_OBJECTS) $(fanotify_mark__secontext_LDADD) $(LIBS) -+ -+fanotify_mark--secontext_full$(EXEEXT): $(fanotify_mark__secontext_full_OBJECTS) $(fanotify_mark__secontext_full_DEPENDENCIES) $(EXTRA_fanotify_mark__secontext_full_DEPENDENCIES) -+ @rm -f fanotify_mark--secontext_full$(EXEEXT) -+ $(AM_V_CCLD)$(LINK) $(fanotify_mark__secontext_full_OBJECTS) $(fanotify_mark__secontext_full_LDADD) $(LIBS) -+ - fanotify_mark-Xabbrev$(EXEEXT): $(fanotify_mark_Xabbrev_OBJECTS) $(fanotify_mark_Xabbrev_DEPENDENCIES) $(EXTRA_fanotify_mark_Xabbrev_DEPENDENCIES) - @rm -f fanotify_mark-Xabbrev$(EXEEXT) - $(AM_V_CCLD)$(LINK) $(fanotify_mark_Xabbrev_OBJECTS) $(fanotify_mark_Xabbrev_LDADD) $(LIBS) -@@ -7252,14 +7581,38 @@ - @rm -f fchmod$(EXEEXT) - $(AM_V_CCLD)$(LINK) $(fchmod_OBJECTS) $(fchmod_LDADD) $(LIBS) - -+fchmod--secontext$(EXEEXT): $(fchmod__secontext_OBJECTS) $(fchmod__secontext_DEPENDENCIES) $(EXTRA_fchmod__secontext_DEPENDENCIES) -+ @rm -f fchmod--secontext$(EXEEXT) -+ $(AM_V_CCLD)$(LINK) $(fchmod__secontext_OBJECTS) $(fchmod__secontext_LDADD) $(LIBS) -+ -+fchmod--secontext_full$(EXEEXT): $(fchmod__secontext_full_OBJECTS) $(fchmod__secontext_full_DEPENDENCIES) $(EXTRA_fchmod__secontext_full_DEPENDENCIES) -+ @rm -f fchmod--secontext_full$(EXEEXT) -+ $(AM_V_CCLD)$(LINK) $(fchmod__secontext_full_OBJECTS) $(fchmod__secontext_full_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) - -+fchmod-y--secontext$(EXEEXT): $(fchmod_y__secontext_OBJECTS) $(fchmod_y__secontext_DEPENDENCIES) $(EXTRA_fchmod_y__secontext_DEPENDENCIES) -+ @rm -f fchmod-y--secontext$(EXEEXT) -+ $(AM_V_CCLD)$(LINK) $(fchmod_y__secontext_OBJECTS) $(fchmod_y__secontext_LDADD) $(LIBS) -+ -+fchmod-y--secontext_full$(EXEEXT): $(fchmod_y__secontext_full_OBJECTS) $(fchmod_y__secontext_full_DEPENDENCIES) $(EXTRA_fchmod_y__secontext_full_DEPENDENCIES) -+ @rm -f fchmod-y--secontext_full$(EXEEXT) -+ $(AM_V_CCLD)$(LINK) $(fchmod_y__secontext_full_OBJECTS) $(fchmod_y__secontext_full_LDADD) $(LIBS) -+ - fchmodat$(EXEEXT): $(fchmodat_OBJECTS) $(fchmodat_DEPENDENCIES) $(EXTRA_fchmodat_DEPENDENCIES) - @rm -f fchmodat$(EXEEXT) - $(AM_V_CCLD)$(LINK) $(fchmodat_OBJECTS) $(fchmodat_LDADD) $(LIBS) - -+fchmodat--secontext$(EXEEXT): $(fchmodat__secontext_OBJECTS) $(fchmodat__secontext_DEPENDENCIES) $(EXTRA_fchmodat__secontext_DEPENDENCIES) -+ @rm -f fchmodat--secontext$(EXEEXT) -+ $(AM_V_CCLD)$(LINK) $(fchmodat__secontext_OBJECTS) $(fchmodat__secontext_LDADD) $(LIBS) -+ -+fchmodat--secontext_full$(EXEEXT): $(fchmodat__secontext_full_OBJECTS) $(fchmodat__secontext_full_DEPENDENCIES) $(EXTRA_fchmodat__secontext_full_DEPENDENCIES) -+ @rm -f fchmodat--secontext_full$(EXEEXT) -+ $(AM_V_CCLD)$(LINK) $(fchmodat__secontext_full_OBJECTS) $(fchmodat__secontext_full_LDADD) $(LIBS) -+ - fchown$(EXEEXT): $(fchown_OBJECTS) $(fchown_DEPENDENCIES) $(EXTRA_fchown_DEPENDENCIES) - @rm -f fchown$(EXEEXT) - $(AM_V_CCLD)$(LINK) $(fchown_OBJECTS) $(fchown_LDADD) $(LIBS) -@@ -7272,6 +7625,14 @@ - @rm -f fchownat$(EXEEXT) - $(AM_V_CCLD)$(LINK) $(fchownat_OBJECTS) $(fchownat_LDADD) $(LIBS) - -+fchownat--secontext$(EXEEXT): $(fchownat__secontext_OBJECTS) $(fchownat__secontext_DEPENDENCIES) $(EXTRA_fchownat__secontext_DEPENDENCIES) -+ @rm -f fchownat--secontext$(EXEEXT) -+ $(AM_V_CCLD)$(LINK) $(fchownat__secontext_OBJECTS) $(fchownat__secontext_LDADD) $(LIBS) -+ -+fchownat--secontext_full$(EXEEXT): $(fchownat__secontext_full_OBJECTS) $(fchownat__secontext_full_DEPENDENCIES) $(EXTRA_fchownat__secontext_full_DEPENDENCIES) -+ @rm -f fchownat--secontext_full$(EXEEXT) -+ $(AM_V_CCLD)$(LINK) $(fchownat__secontext_full_OBJECTS) $(fchownat__secontext_full_LDADD) $(LIBS) -+ - fcntl$(EXEEXT): $(fcntl_OBJECTS) $(fcntl_DEPENDENCIES) $(EXTRA_fcntl_DEPENDENCIES) - @rm -f fcntl$(EXEEXT) - $(AM_V_CCLD)$(LINK) $(fcntl_OBJECTS) $(fcntl_LDADD) $(LIBS) -@@ -7300,6 +7661,14 @@ - @rm -f file_handle$(EXEEXT) - $(AM_V_CCLD)$(LINK) $(file_handle_OBJECTS) $(file_handle_LDADD) $(LIBS) - -+file_handle--secontext$(EXEEXT): $(file_handle__secontext_OBJECTS) $(file_handle__secontext_DEPENDENCIES) $(EXTRA_file_handle__secontext_DEPENDENCIES) -+ @rm -f file_handle--secontext$(EXEEXT) -+ $(AM_V_CCLD)$(LINK) $(file_handle__secontext_OBJECTS) $(file_handle__secontext_LDADD) $(LIBS) -+ -+file_handle--secontext_full$(EXEEXT): $(file_handle__secontext_full_OBJECTS) $(file_handle__secontext_full_DEPENDENCIES) $(EXTRA_file_handle__secontext_full_DEPENDENCIES) -+ @rm -f file_handle--secontext_full$(EXEEXT) -+ $(AM_V_CCLD)$(LINK) $(file_handle__secontext_full_OBJECTS) $(file_handle__secontext_full_LDADD) $(LIBS) -+ - file_ioctl$(EXEEXT): $(file_ioctl_OBJECTS) $(file_ioctl_DEPENDENCIES) $(EXTRA_file_ioctl_DEPENDENCIES) - @rm -f file_ioctl$(EXEEXT) - $(AM_V_CCLD)$(LINK) $(file_ioctl_OBJECTS) $(file_ioctl_LDADD) $(LIBS) -@@ -8124,6 +8493,14 @@ - @rm -f linkat$(EXEEXT) - $(AM_V_CCLD)$(LINK) $(linkat_OBJECTS) $(linkat_LDADD) $(LIBS) - -+linkat--secontext$(EXEEXT): $(linkat__secontext_OBJECTS) $(linkat__secontext_DEPENDENCIES) $(EXTRA_linkat__secontext_DEPENDENCIES) -+ @rm -f linkat--secontext$(EXEEXT) -+ $(AM_V_CCLD)$(LINK) $(linkat__secontext_OBJECTS) $(linkat__secontext_LDADD) $(LIBS) -+ -+linkat--secontext_full$(EXEEXT): $(linkat__secontext_full_OBJECTS) $(linkat__secontext_full_DEPENDENCIES) $(EXTRA_linkat__secontext_full_DEPENDENCIES) -+ @rm -f linkat--secontext_full$(EXEEXT) -+ $(AM_V_CCLD)$(LINK) $(linkat__secontext_full_OBJECTS) $(linkat__secontext_full_LDADD) $(LIBS) -+ - list_sigaction_signum$(EXEEXT): $(list_sigaction_signum_OBJECTS) $(list_sigaction_signum_DEPENDENCIES) $(EXTRA_list_sigaction_signum_DEPENDENCIES) - @rm -f list_sigaction_signum$(EXEEXT) - $(AM_V_CCLD)$(LINK) $(list_sigaction_signum_OBJECTS) $(list_sigaction_signum_LDADD) $(LIBS) -@@ -8756,6 +9133,14 @@ - @rm -f open$(EXEEXT) - $(AM_V_CCLD)$(LINK) $(open_OBJECTS) $(open_LDADD) $(LIBS) - -+open--secontext$(EXEEXT): $(open__secontext_OBJECTS) $(open__secontext_DEPENDENCIES) $(EXTRA_open__secontext_DEPENDENCIES) -+ @rm -f open--secontext$(EXEEXT) -+ $(AM_V_CCLD)$(LINK) $(open__secontext_OBJECTS) $(open__secontext_LDADD) $(LIBS) -+ -+open--secontext_full$(EXEEXT): $(open__secontext_full_OBJECTS) $(open__secontext_full_DEPENDENCIES) $(EXTRA_open__secontext_full_DEPENDENCIES) -+ @rm -f open--secontext_full$(EXEEXT) -+ $(AM_V_CCLD)$(LINK) $(open__secontext_full_OBJECTS) $(open__secontext_full_LDADD) $(LIBS) -+ - open_tree$(EXEEXT): $(open_tree_OBJECTS) $(open_tree_DEPENDENCIES) $(EXTRA_open_tree_DEPENDENCIES) - @rm -f open_tree$(EXEEXT) - $(AM_V_CCLD)$(LINK) $(open_tree_OBJECTS) $(open_tree_LDADD) $(LIBS) -@@ -8768,6 +9153,14 @@ - @rm -f openat$(EXEEXT) - $(AM_V_CCLD)$(LINK) $(openat_OBJECTS) $(openat_LDADD) $(LIBS) - -+openat--secontext$(EXEEXT): $(openat__secontext_OBJECTS) $(openat__secontext_DEPENDENCIES) $(EXTRA_openat__secontext_DEPENDENCIES) -+ @rm -f openat--secontext$(EXEEXT) -+ $(AM_V_CCLD)$(LINK) $(openat__secontext_OBJECTS) $(openat__secontext_LDADD) $(LIBS) -+ -+openat--secontext_full$(EXEEXT): $(openat__secontext_full_OBJECTS) $(openat__secontext_full_DEPENDENCIES) $(EXTRA_openat__secontext_full_DEPENDENCIES) -+ @rm -f openat--secontext_full$(EXEEXT) -+ $(AM_V_CCLD)$(LINK) $(openat__secontext_full_OBJECTS) $(openat__secontext_full_LDADD) $(LIBS) -+ - openat2$(EXEEXT): $(openat2_OBJECTS) $(openat2_DEPENDENCIES) $(EXTRA_openat2_DEPENDENCIES) - @rm -f openat2$(EXEEXT) - $(AM_V_CCLD)$(LINK) $(openat2_OBJECTS) $(openat2_LDADD) $(LIBS) -@@ -10094,6 +10487,8 @@ - @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/_newselect.Po@am__quote@ # am--include-marker - @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/accept.Po@am__quote@ # am--include-marker - @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/accept4.Po@am__quote@ # am--include-marker -+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/access--secontext.Po@am__quote@ # am--include-marker -+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/access--secontext_full.Po@am__quote@ # am--include-marker - @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/access.Po@am__quote@ # am--include-marker - @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/acct.Po@am__quote@ # am--include-marker - @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/add_key.Po@am__quote@ # am--include-marker -@@ -10123,6 +10518,8 @@ - @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/caps.Po@am__quote@ # am--include-marker - @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/check_sigblock.Po@am__quote@ # am--include-marker - @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/check_sigign.Po@am__quote@ # am--include-marker -+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/chmod--secontext.Po@am__quote@ # am--include-marker -+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/chmod--secontext_full.Po@am__quote@ # am--include-marker - @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/chmod.Po@am__quote@ # am--include-marker - @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/chown.Po@am__quote@ # am--include-marker - @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/chown32.Po@am__quote@ # am--include-marker -@@ -10176,25 +10573,46 @@ - @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/epoll_wait.Po@am__quote@ # am--include-marker - @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/erestartsys.Po@am__quote@ # am--include-marker - @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/eventfd.Po@am__quote@ # am--include-marker -+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/execve--secontext.Po@am__quote@ # am--include-marker -+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/execve--secontext_full.Po@am__quote@ # am--include-marker - @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/execve-v.Po@am__quote@ # am--include-marker - @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/execve.Po@am__quote@ # am--include-marker -+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/execveat--secontext.Po@am__quote@ # am--include-marker -+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/execveat--secontext_full.Po@am__quote@ # am--include-marker - @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/execveat-v.Po@am__quote@ # am--include-marker - @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/execveat.Po@am__quote@ # am--include-marker -+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/faccessat--secontext.Po@am__quote@ # am--include-marker -+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/faccessat--secontext_full.Po@am__quote@ # am--include-marker -+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/faccessat-P.Po@am__quote@ # am--include-marker -+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/faccessat-y--secontext.Po@am__quote@ # am--include-marker -+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/faccessat-y--secontext_full.Po@am__quote@ # am--include-marker -+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/faccessat-y.Po@am__quote@ # am--include-marker -+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/faccessat-yy.Po@am__quote@ # am--include-marker - @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/faccessat.Po@am__quote@ # am--include-marker - @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/fadvise64.Po@am__quote@ # am--include-marker - @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/fadvise64_64.Po@am__quote@ # am--include-marker - @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/fallocate.Po@am__quote@ # am--include-marker - @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/fanotify_init.Po@am__quote@ # am--include-marker -+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/fanotify_mark--secontext.Po@am__quote@ # am--include-marker -+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/fanotify_mark--secontext_full.Po@am__quote@ # am--include-marker - @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/fanotify_mark-Xabbrev.Po@am__quote@ # am--include-marker - @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/fanotify_mark-Xraw.Po@am__quote@ # am--include-marker - @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--secontext.Po@am__quote@ # am--include-marker -+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/fchmod--secontext_full.Po@am__quote@ # am--include-marker -+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/fchmod-y--secontext.Po@am__quote@ # am--include-marker -+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/fchmod-y--secontext_full.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--secontext.Po@am__quote@ # am--include-marker -+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/fchmodat--secontext_full.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 - @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/fchown32.Po@am__quote@ # am--include-marker -+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/fchownat--secontext.Po@am__quote@ # am--include-marker -+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/fchownat--secontext_full.Po@am__quote@ # am--include-marker - @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/fchownat.Po@am__quote@ # am--include-marker - @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/fcntl--pidns-translation.Po@am__quote@ # am--include-marker - @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/fcntl.Po@am__quote@ # am--include-marker -@@ -10202,6 +10620,8 @@ - @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/fcntl64.Po@am__quote@ # am--include-marker - @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/fdatasync.Po@am__quote@ # am--include-marker - @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/fflush.Po@am__quote@ # am--include-marker -+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/file_handle--secontext.Po@am__quote@ # am--include-marker -+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/file_handle--secontext_full.Po@am__quote@ # am--include-marker - @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/file_handle.Po@am__quote@ # am--include-marker - @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/file_ioctl.Po@am__quote@ # am--include-marker - @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/filter-unavailable.Po@am__quote@ # am--include-marker -@@ -10431,6 +10851,7 @@ - @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libtests_a-printxval-Xabbrev.Po@am__quote@ # am--include-marker - @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libtests_a-printxval-Xraw.Po@am__quote@ # am--include-marker - @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libtests_a-printxval-Xverbose.Po@am__quote@ # am--include-marker -+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libtests_a-secontext.Po@am__quote@ # am--include-marker - @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libtests_a-signal2name.Po@am__quote@ # am--include-marker - @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libtests_a-skip_unavailable.Po@am__quote@ # am--include-marker - @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libtests_a-sprintrc.Po@am__quote@ # am--include-marker -@@ -10443,6 +10864,8 @@ - @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libtests_a-tprintf.Po@am__quote@ # am--include-marker - @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libtests_a-xmalloc_for_tests.Po@am__quote@ # am--include-marker - @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/link.Po@am__quote@ # am--include-marker -+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/linkat--secontext.Po@am__quote@ # am--include-marker -+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/linkat--secontext_full.Po@am__quote@ # am--include-marker - @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/linkat.Po@am__quote@ # am--include-marker - @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/list_sigaction_signum.Po@am__quote@ # am--include-marker - @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/llseek.Po@am__quote@ # am--include-marker -@@ -10601,9 +11024,13 @@ - @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/oldselect-efault.Po@am__quote@ # am--include-marker - @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/oldselect.Po@am__quote@ # am--include-marker - @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/oldstat.Po@am__quote@ # am--include-marker -+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/open--secontext.Po@am__quote@ # am--include-marker -+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/open--secontext_full.Po@am__quote@ # am--include-marker - @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/open.Po@am__quote@ # am--include-marker - @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/open_tree-P.Po@am__quote@ # am--include-marker - @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/open_tree.Po@am__quote@ # am--include-marker -+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/openat--secontext.Po@am__quote@ # am--include-marker -+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/openat--secontext_full.Po@am__quote@ # am--include-marker - @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/openat.Po@am__quote@ # am--include-marker - @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/openat2-Xabbrev.Po@am__quote@ # am--include-marker - @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/openat2-Xraw.Po@am__quote@ # am--include-marker -@@ -11300,6 +11727,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-printxval-Xverbose.obj `if test -f 'printxval-Xverbose.c'; then $(CYGPATH_W) 'printxval-Xverbose.c'; else $(CYGPATH_W) '$(srcdir)/printxval-Xverbose.c'; fi` - -+libtests_a-secontext.o: secontext.c -+@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libtests_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT libtests_a-secontext.o -MD -MP -MF $(DEPDIR)/libtests_a-secontext.Tpo -c -o libtests_a-secontext.o `test -f 'secontext.c' || echo '$(srcdir)/'`secontext.c -+@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libtests_a-secontext.Tpo $(DEPDIR)/libtests_a-secontext.Po -+@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='secontext.c' object='libtests_a-secontext.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-secontext.o `test -f 'secontext.c' || echo '$(srcdir)/'`secontext.c -+ -+libtests_a-secontext.obj: secontext.c -+@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libtests_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT libtests_a-secontext.obj -MD -MP -MF $(DEPDIR)/libtests_a-secontext.Tpo -c -o libtests_a-secontext.obj `if test -f 'secontext.c'; then $(CYGPATH_W) 'secontext.c'; else $(CYGPATH_W) '$(srcdir)/secontext.c'; fi` -+@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libtests_a-secontext.Tpo $(DEPDIR)/libtests_a-secontext.Po -+@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='secontext.c' object='libtests_a-secontext.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-secontext.obj `if test -f 'secontext.c'; then $(CYGPATH_W) 'secontext.c'; else $(CYGPATH_W) '$(srcdir)/secontext.c'; fi` -+ - libtests_a-signal2name.o: signal2name.c - @am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libtests_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT libtests_a-signal2name.o -MD -MP -MF $(DEPDIR)/libtests_a-signal2name.Tpo -c -o libtests_a-signal2name.o `test -f 'signal2name.c' || echo '$(srcdir)/'`signal2name.c - @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libtests_a-signal2name.Tpo $(DEPDIR)/libtests_a-signal2name.Po -@@ -13841,6 +14282,12 @@ - $(srcdir)/access.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in - $(AM_V_GEN) $^ $@ - -+$(srcdir)/access--secontext.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in -+ $(AM_V_GEN) $^ $@ -+ -+$(srcdir)/access--secontext_full.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in -+ $(AM_V_GEN) $^ $@ -+ - $(srcdir)/acct.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in - $(AM_V_GEN) $^ $@ - -@@ -13883,6 +14330,12 @@ - $(srcdir)/chmod.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in - $(AM_V_GEN) $^ $@ - -+$(srcdir)/chmod--secontext.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in -+ $(AM_V_GEN) $^ $@ -+ -+$(srcdir)/chmod--secontext_full.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in -+ $(AM_V_GEN) $^ $@ -+ - $(srcdir)/chown.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in - $(AM_V_GEN) $^ $@ - -@@ -14024,13 +14477,43 @@ - $(srcdir)/erestartsys.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in - $(AM_V_GEN) $^ $@ - -+$(srcdir)/execve--secontext.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in -+ $(AM_V_GEN) $^ $@ -+ -+$(srcdir)/execve--secontext_full.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in -+ $(AM_V_GEN) $^ $@ -+ - $(srcdir)/execveat.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in - $(AM_V_GEN) $^ $@ - -+$(srcdir)/execveat--secontext.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in -+ $(AM_V_GEN) $^ $@ -+ -+$(srcdir)/execveat--secontext_full.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in -+ $(AM_V_GEN) $^ $@ -+ - $(srcdir)/execveat-v.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in - $(AM_V_GEN) $^ $@ - --$(srcdir)/faccessat.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in -+$(srcdir)/faccessat--secontext.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in -+ $(AM_V_GEN) $^ $@ -+ -+$(srcdir)/faccessat--secontext_full.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in -+ $(AM_V_GEN) $^ $@ -+ -+$(srcdir)/faccessat-P.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in -+ $(AM_V_GEN) $^ $@ -+ -+$(srcdir)/faccessat-y.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in -+ $(AM_V_GEN) $^ $@ -+ -+$(srcdir)/faccessat-y--secontext.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in -+ $(AM_V_GEN) $^ $@ -+ -+$(srcdir)/faccessat-y--secontext_full.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in -+ $(AM_V_GEN) $^ $@ -+ -+$(srcdir)/faccessat-yy.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in - $(AM_V_GEN) $^ $@ - - $(srcdir)/fadvise64_64.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in -@@ -14045,6 +14528,12 @@ - $(srcdir)/fanotify_mark.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in - $(AM_V_GEN) $^ $@ - -+$(srcdir)/fanotify_mark--secontext.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in -+ $(AM_V_GEN) $^ $@ -+ -+$(srcdir)/fanotify_mark--secontext_full.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in -+ $(AM_V_GEN) $^ $@ -+ - $(srcdir)/fanotify_mark-Xabbrev.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in - $(AM_V_GEN) $^ $@ - -@@ -14060,12 +14549,30 @@ - $(srcdir)/fchmod.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in - $(AM_V_GEN) $^ $@ - -+$(srcdir)/fchmod--secontext.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in -+ $(AM_V_GEN) $^ $@ -+ -+$(srcdir)/fchmod--secontext_full.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)/fchmod-y--secontext.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in -+ $(AM_V_GEN) $^ $@ -+ -+$(srcdir)/fchmod-y--secontext_full.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) $^ $@ - -+$(srcdir)/fchmodat--secontext.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in -+ $(AM_V_GEN) $^ $@ -+ -+$(srcdir)/fchmodat--secontext_full.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in -+ $(AM_V_GEN) $^ $@ -+ - $(srcdir)/fchown.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in - $(AM_V_GEN) $^ $@ - -@@ -14075,6 +14582,12 @@ - $(srcdir)/fchownat.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in - $(AM_V_GEN) $^ $@ - -+$(srcdir)/fchownat--secontext.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in -+ $(AM_V_GEN) $^ $@ -+ -+$(srcdir)/fchownat--secontext_full.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in -+ $(AM_V_GEN) $^ $@ -+ - $(srcdir)/fcntl.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in - $(AM_V_GEN) $^ $@ - -@@ -14096,6 +14609,12 @@ - $(srcdir)/file_ioctl.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in - $(AM_V_GEN) $^ $@ - -+$(srcdir)/file_handle--secontext.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in -+ $(AM_V_GEN) $^ $@ -+ -+$(srcdir)/file_handle--secontext_full.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in -+ $(AM_V_GEN) $^ $@ -+ - $(srcdir)/filter_seccomp.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in - $(AM_V_GEN) $^ $@ - -@@ -14690,6 +15209,12 @@ - $(srcdir)/linkat.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in - $(AM_V_GEN) $^ $@ - -+$(srcdir)/linkat--secontext.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in -+ $(AM_V_GEN) $^ $@ -+ -+$(srcdir)/linkat--secontext_full.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in -+ $(AM_V_GEN) $^ $@ -+ - $(srcdir)/lookup_dcookie.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in - $(AM_V_GEN) $^ $@ - -@@ -15107,6 +15632,12 @@ - $(srcdir)/open.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in - $(AM_V_GEN) $^ $@ - -+$(srcdir)/open--secontext.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in -+ $(AM_V_GEN) $^ $@ -+ -+$(srcdir)/open--secontext_full.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in -+ $(AM_V_GEN) $^ $@ -+ - $(srcdir)/open_tree.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in - $(AM_V_GEN) $^ $@ - -@@ -15116,6 +15647,12 @@ - $(srcdir)/openat.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in - $(AM_V_GEN) $^ $@ - -+$(srcdir)/openat--secontext.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in -+ $(AM_V_GEN) $^ $@ -+ -+$(srcdir)/openat--secontext_full.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in -+ $(AM_V_GEN) $^ $@ -+ - $(srcdir)/openat2.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 21:08:35.467311943 +0200 -+++ strace-5.7/tests-m32/Makefile.in 2021-08-24 21:08:43.289245739 +0200 -@@ -22,6 +22,8 @@ - # - # SPDX-License-Identifier: GPL-2.0-or-later - -+# Generated by ./tests/gen_secontext.sh from ./tests/gen_tests.in; do not edit. -+ - # scno.h make rules for strace. - # - # Copyright (c) 2017-2019 Dmitry V. Levin -@@ -102,8 +104,8 @@ - POST_UNINSTALL = : - build_triplet = @build@ - host_triplet = @host@ --check_PROGRAMS = $(am__EXEEXT_1) _newselect-P$(EXEEXT) answer$(EXEEXT) \ -- attach-f-p$(EXEEXT) attach-f-p-cmd$(EXEEXT) \ -+check_PROGRAMS = $(am__EXEEXT_1) $(am__EXEEXT_2) _newselect-P$(EXEEXT) \ -+ answer$(EXEEXT) attach-f-p$(EXEEXT) attach-f-p-cmd$(EXEEXT) \ - attach-p-cmd-cmd$(EXEEXT) attach-p-cmd-p$(EXEEXT) \ - block_reset_raise_run$(EXEEXT) block_reset_run$(EXEEXT) \ - bpf-obj_get_info_by_fd$(EXEEXT) \ -@@ -221,7 +223,7 @@ - xetpriority--pidns-translation$(EXEEXT) \ - xet_robust_list--pidns-translation$(EXEEXT) zeroargc$(EXEEXT) - @ENABLE_STACKTRACE_TRUE@@USE_DEMANGLE_TRUE@am__append_1 = strace-k-demangle.test --TESTS = $(GEN_TESTS) $(DECODER_TESTS) $(MISC_TESTS) $(am__EXEEXT_2) -+TESTS = $(GEN_TESTS) $(DECODER_TESTS) $(MISC_TESTS) $(am__EXEEXT_3) - subdir = tests-m32 - ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 - am__aclocal_m4_deps = $(top_srcdir)/xlat/btrfs_compress_types.m4 \ -@@ -270,6 +272,7 @@ - $(top_srcdir)/m4/st_esyscmd_s.m4 $(top_srcdir)/m4/st_libdw.m4 \ - $(top_srcdir)/m4/st_libunwind.m4 \ - $(top_srcdir)/m4/st_save_restore_var.m4 \ -+ $(top_srcdir)/m4/st_selinux.m4 \ - $(top_srcdir)/m4/st_stacktrace.m4 \ - $(top_srcdir)/m4/st_warn_cflags.m4 \ - $(top_srcdir)/m4/warnings.m4 $(top_srcdir)/configure.ac -@@ -298,7 +301,8 @@ - epoll_create$(EXEEXT) epoll_create1$(EXEEXT) \ - epoll_ctl$(EXEEXT) epoll_pwait$(EXEEXT) epoll_wait$(EXEEXT) \ - erestartsys$(EXEEXT) eventfd$(EXEEXT) execve$(EXEEXT) \ -- execveat$(EXEEXT) faccessat$(EXEEXT) fadvise64$(EXEEXT) \ -+ execveat$(EXEEXT) faccessat$(EXEEXT) faccessat-P$(EXEEXT) \ -+ faccessat-y$(EXEEXT) faccessat-yy$(EXEEXT) fadvise64$(EXEEXT) \ - fadvise64_64$(EXEEXT) fallocate$(EXEEXT) \ - fanotify_init$(EXEEXT) fanotify_mark$(EXEEXT) \ - fanotify_mark-Xabbrev$(EXEEXT) fanotify_mark-Xraw$(EXEEXT) \ -@@ -543,6 +547,26 @@ - xattr-strings$(EXEEXT) xet_robust_list$(EXEEXT) \ - xet_thread_area_x86$(EXEEXT) xetitimer$(EXEEXT) \ - xetpgid$(EXEEXT) xetpriority$(EXEEXT) xettimeofday$(EXEEXT) -+am__EXEEXT_2 = access--secontext$(EXEEXT) \ -+ access--secontext_full$(EXEEXT) chmod--secontext$(EXEEXT) \ -+ chmod--secontext_full$(EXEEXT) execve--secontext$(EXEEXT) \ -+ execve--secontext_full$(EXEEXT) execveat--secontext$(EXEEXT) \ -+ execveat--secontext_full$(EXEEXT) \ -+ faccessat--secontext$(EXEEXT) \ -+ faccessat--secontext_full$(EXEEXT) \ -+ faccessat-y--secontext$(EXEEXT) \ -+ faccessat-y--secontext_full$(EXEEXT) \ -+ fanotify_mark--secontext$(EXEEXT) \ -+ fanotify_mark--secontext_full$(EXEEXT) \ -+ fchmod--secontext$(EXEEXT) fchmod--secontext_full$(EXEEXT) \ -+ fchmod-y--secontext$(EXEEXT) fchmod-y--secontext_full$(EXEEXT) \ -+ fchmodat--secontext$(EXEEXT) fchmodat--secontext_full$(EXEEXT) \ -+ fchownat--secontext$(EXEEXT) fchownat--secontext_full$(EXEEXT) \ -+ file_handle--secontext$(EXEEXT) \ -+ file_handle--secontext_full$(EXEEXT) \ -+ linkat--secontext$(EXEEXT) linkat--secontext_full$(EXEEXT) \ -+ open--secontext$(EXEEXT) open--secontext_full$(EXEEXT) \ -+ openat--secontext$(EXEEXT) openat--secontext_full$(EXEEXT) - ARFLAGS = cru - AM_V_AR = $(am__v_AR_@AM_V@) - am__v_AR_ = $(am__v_AR_@AM_DEFAULT_V@) -@@ -571,6 +595,7 @@ - libtests_a-printxval-Xabbrev.$(OBJEXT) \ - libtests_a-printxval-Xraw.$(OBJEXT) \ - libtests_a-printxval-Xverbose.$(OBJEXT) \ -+ libtests_a-secontext.$(OBJEXT) \ - libtests_a-signal2name.$(OBJEXT) \ - libtests_a-skip_unavailable.$(OBJEXT) \ - libtests_a-sprintrc.$(OBJEXT) libtests_a-status.$(OBJEXT) \ -@@ -600,6 +625,15 @@ - access_OBJECTS = access.$(OBJEXT) - access_LDADD = $(LDADD) - access_DEPENDENCIES = libtests.a -+access__secontext_SOURCES = access--secontext.c -+access__secontext_OBJECTS = access--secontext.$(OBJEXT) -+am__DEPENDENCIES_1 = -+@HAVE_M32_SELINUX_RUNTIME_TRUE@am__DEPENDENCIES_2 = \ -+@HAVE_M32_SELINUX_RUNTIME_TRUE@ $(am__DEPENDENCIES_1) -+access__secontext_DEPENDENCIES = $(LDADD) $(am__DEPENDENCIES_2) -+access__secontext_full_SOURCES = access--secontext_full.c -+access__secontext_full_OBJECTS = access--secontext_full.$(OBJEXT) -+access__secontext_full_DEPENDENCIES = $(LDADD) $(am__DEPENDENCIES_2) - acct_SOURCES = acct.c - acct_OBJECTS = acct.$(OBJEXT) - acct_LDADD = $(LDADD) -@@ -718,6 +752,12 @@ - chmod_OBJECTS = chmod.$(OBJEXT) - chmod_LDADD = $(LDADD) - chmod_DEPENDENCIES = libtests.a -+chmod__secontext_SOURCES = chmod--secontext.c -+chmod__secontext_OBJECTS = chmod--secontext.$(OBJEXT) -+chmod__secontext_DEPENDENCIES = $(LDADD) $(am__DEPENDENCIES_2) -+chmod__secontext_full_SOURCES = chmod--secontext_full.c -+chmod__secontext_full_OBJECTS = chmod--secontext_full.$(OBJEXT) -+chmod__secontext_full_DEPENDENCIES = $(LDADD) $(am__DEPENDENCIES_2) - chown_SOURCES = chown.c - chown_OBJECTS = chown.$(OBJEXT) - chown_LDADD = $(LDADD) -@@ -828,7 +868,6 @@ - creat_DEPENDENCIES = libtests.a - delay_SOURCES = delay.c - delay_OBJECTS = delay.$(OBJEXT) --am__DEPENDENCIES_1 = - delay_DEPENDENCIES = $(am__DEPENDENCIES_1) $(LDADD) - delete_module_SOURCES = delete_module.c - delete_module_OBJECTS = delete_module.$(OBJEXT) -@@ -930,6 +969,12 @@ - execve_OBJECTS = execve.$(OBJEXT) - execve_LDADD = $(LDADD) - execve_DEPENDENCIES = libtests.a -+execve__secontext_SOURCES = execve--secontext.c -+execve__secontext_OBJECTS = execve--secontext.$(OBJEXT) -+execve__secontext_DEPENDENCIES = $(LDADD) $(am__DEPENDENCIES_2) -+execve__secontext_full_SOURCES = execve--secontext_full.c -+execve__secontext_full_OBJECTS = execve--secontext_full.$(OBJEXT) -+execve__secontext_full_DEPENDENCIES = $(LDADD) $(am__DEPENDENCIES_2) - execve_v_SOURCES = execve-v.c - execve_v_OBJECTS = execve-v.$(OBJEXT) - execve_v_LDADD = $(LDADD) -@@ -938,6 +983,12 @@ - execveat_OBJECTS = execveat.$(OBJEXT) - execveat_LDADD = $(LDADD) - execveat_DEPENDENCIES = libtests.a -+execveat__secontext_SOURCES = execveat--secontext.c -+execveat__secontext_OBJECTS = execveat--secontext.$(OBJEXT) -+execveat__secontext_DEPENDENCIES = $(LDADD) $(am__DEPENDENCIES_2) -+execveat__secontext_full_SOURCES = execveat--secontext_full.c -+execveat__secontext_full_OBJECTS = execveat--secontext_full.$(OBJEXT) -+execveat__secontext_full_DEPENDENCIES = $(LDADD) $(am__DEPENDENCIES_2) - execveat_v_SOURCES = execveat-v.c - execveat_v_OBJECTS = execveat-v.$(OBJEXT) - execveat_v_LDADD = $(LDADD) -@@ -946,6 +997,34 @@ - faccessat_OBJECTS = faccessat.$(OBJEXT) - faccessat_LDADD = $(LDADD) - faccessat_DEPENDENCIES = libtests.a -+faccessat__secontext_SOURCES = faccessat--secontext.c -+faccessat__secontext_OBJECTS = faccessat--secontext.$(OBJEXT) -+faccessat__secontext_DEPENDENCIES = $(LDADD) $(am__DEPENDENCIES_2) -+faccessat__secontext_full_SOURCES = faccessat--secontext_full.c -+faccessat__secontext_full_OBJECTS = \ -+ faccessat--secontext_full.$(OBJEXT) -+faccessat__secontext_full_DEPENDENCIES = $(LDADD) \ -+ $(am__DEPENDENCIES_2) -+faccessat_P_SOURCES = faccessat-P.c -+faccessat_P_OBJECTS = faccessat-P.$(OBJEXT) -+faccessat_P_LDADD = $(LDADD) -+faccessat_P_DEPENDENCIES = libtests.a -+faccessat_y_SOURCES = faccessat-y.c -+faccessat_y_OBJECTS = faccessat-y.$(OBJEXT) -+faccessat_y_LDADD = $(LDADD) -+faccessat_y_DEPENDENCIES = libtests.a -+faccessat_y__secontext_SOURCES = faccessat-y--secontext.c -+faccessat_y__secontext_OBJECTS = faccessat-y--secontext.$(OBJEXT) -+faccessat_y__secontext_DEPENDENCIES = $(LDADD) $(am__DEPENDENCIES_2) -+faccessat_y__secontext_full_SOURCES = faccessat-y--secontext_full.c -+faccessat_y__secontext_full_OBJECTS = \ -+ faccessat-y--secontext_full.$(OBJEXT) -+faccessat_y__secontext_full_DEPENDENCIES = $(LDADD) \ -+ $(am__DEPENDENCIES_2) -+faccessat_yy_SOURCES = faccessat-yy.c -+faccessat_yy_OBJECTS = faccessat-yy.$(OBJEXT) -+faccessat_yy_LDADD = $(LDADD) -+faccessat_yy_DEPENDENCIES = libtests.a - fadvise64_SOURCES = fadvise64.c - fadvise64_OBJECTS = fadvise64.$(OBJEXT) - fadvise64_LDADD = $(LDADD) -@@ -966,6 +1045,15 @@ - fanotify_mark_OBJECTS = fanotify_mark.$(OBJEXT) - fanotify_mark_LDADD = $(LDADD) - fanotify_mark_DEPENDENCIES = libtests.a -+fanotify_mark__secontext_SOURCES = fanotify_mark--secontext.c -+fanotify_mark__secontext_OBJECTS = fanotify_mark--secontext.$(OBJEXT) -+fanotify_mark__secontext_DEPENDENCIES = $(LDADD) $(am__DEPENDENCIES_2) -+fanotify_mark__secontext_full_SOURCES = \ -+ fanotify_mark--secontext_full.c -+fanotify_mark__secontext_full_OBJECTS = \ -+ fanotify_mark--secontext_full.$(OBJEXT) -+fanotify_mark__secontext_full_DEPENDENCIES = $(LDADD) \ -+ $(am__DEPENDENCIES_2) - fanotify_mark_Xabbrev_SOURCES = fanotify_mark-Xabbrev.c - fanotify_mark_Xabbrev_OBJECTS = fanotify_mark-Xabbrev.$(OBJEXT) - fanotify_mark_Xabbrev_LDADD = $(LDADD) -@@ -986,14 +1074,32 @@ - fchmod_OBJECTS = fchmod.$(OBJEXT) - fchmod_LDADD = $(LDADD) - fchmod_DEPENDENCIES = libtests.a -+fchmod__secontext_SOURCES = fchmod--secontext.c -+fchmod__secontext_OBJECTS = fchmod--secontext.$(OBJEXT) -+fchmod__secontext_DEPENDENCIES = $(LDADD) $(am__DEPENDENCIES_2) -+fchmod__secontext_full_SOURCES = fchmod--secontext_full.c -+fchmod__secontext_full_OBJECTS = fchmod--secontext_full.$(OBJEXT) -+fchmod__secontext_full_DEPENDENCIES = $(LDADD) $(am__DEPENDENCIES_2) - fchmod_y_SOURCES = fchmod-y.c - fchmod_y_OBJECTS = fchmod-y.$(OBJEXT) - fchmod_y_LDADD = $(LDADD) - fchmod_y_DEPENDENCIES = libtests.a -+fchmod_y__secontext_SOURCES = fchmod-y--secontext.c -+fchmod_y__secontext_OBJECTS = fchmod-y--secontext.$(OBJEXT) -+fchmod_y__secontext_DEPENDENCIES = $(LDADD) $(am__DEPENDENCIES_2) -+fchmod_y__secontext_full_SOURCES = fchmod-y--secontext_full.c -+fchmod_y__secontext_full_OBJECTS = fchmod-y--secontext_full.$(OBJEXT) -+fchmod_y__secontext_full_DEPENDENCIES = $(LDADD) $(am__DEPENDENCIES_2) - fchmodat_SOURCES = fchmodat.c - fchmodat_OBJECTS = fchmodat.$(OBJEXT) - fchmodat_LDADD = $(LDADD) - fchmodat_DEPENDENCIES = libtests.a -+fchmodat__secontext_SOURCES = fchmodat--secontext.c -+fchmodat__secontext_OBJECTS = fchmodat--secontext.$(OBJEXT) -+fchmodat__secontext_DEPENDENCIES = $(LDADD) $(am__DEPENDENCIES_2) -+fchmodat__secontext_full_SOURCES = fchmodat--secontext_full.c -+fchmodat__secontext_full_OBJECTS = fchmodat--secontext_full.$(OBJEXT) -+fchmodat__secontext_full_DEPENDENCIES = $(LDADD) $(am__DEPENDENCIES_2) - fchown_SOURCES = fchown.c - fchown_OBJECTS = fchown.$(OBJEXT) - fchown_LDADD = $(LDADD) -@@ -1006,6 +1112,12 @@ - fchownat_OBJECTS = fchownat.$(OBJEXT) - fchownat_LDADD = $(LDADD) - fchownat_DEPENDENCIES = libtests.a -+fchownat__secontext_SOURCES = fchownat--secontext.c -+fchownat__secontext_OBJECTS = fchownat--secontext.$(OBJEXT) -+fchownat__secontext_DEPENDENCIES = $(LDADD) $(am__DEPENDENCIES_2) -+fchownat__secontext_full_SOURCES = fchownat--secontext_full.c -+fchownat__secontext_full_OBJECTS = fchownat--secontext_full.$(OBJEXT) -+fchownat__secontext_full_DEPENDENCIES = $(LDADD) $(am__DEPENDENCIES_2) - fcntl_SOURCES = fcntl.c - fcntl_OBJECTS = fcntl.$(OBJEXT) - fcntl_LDADD = $(LDADD) -@@ -1035,6 +1147,14 @@ - file_handle_OBJECTS = file_handle.$(OBJEXT) - file_handle_LDADD = $(LDADD) - file_handle_DEPENDENCIES = libtests.a -+file_handle__secontext_SOURCES = file_handle--secontext.c -+file_handle__secontext_OBJECTS = file_handle--secontext.$(OBJEXT) -+file_handle__secontext_DEPENDENCIES = $(LDADD) $(am__DEPENDENCIES_2) -+file_handle__secontext_full_SOURCES = file_handle--secontext_full.c -+file_handle__secontext_full_OBJECTS = \ -+ file_handle--secontext_full.$(OBJEXT) -+file_handle__secontext_full_DEPENDENCIES = $(LDADD) \ -+ $(am__DEPENDENCIES_2) - file_ioctl_SOURCES = file_ioctl.c - file_ioctl_OBJECTS = file_ioctl.$(OBJEXT) - file_ioctl_LDADD = $(LDADD) -@@ -1886,6 +2006,12 @@ - linkat_OBJECTS = linkat.$(OBJEXT) - linkat_LDADD = $(LDADD) - linkat_DEPENDENCIES = libtests.a -+linkat__secontext_SOURCES = linkat--secontext.c -+linkat__secontext_OBJECTS = linkat--secontext.$(OBJEXT) -+linkat__secontext_DEPENDENCIES = $(LDADD) $(am__DEPENDENCIES_2) -+linkat__secontext_full_SOURCES = linkat--secontext_full.c -+linkat__secontext_full_OBJECTS = linkat--secontext_full.$(OBJEXT) -+linkat__secontext_full_DEPENDENCIES = $(LDADD) $(am__DEPENDENCIES_2) - list_sigaction_signum_SOURCES = list_sigaction_signum.c - list_sigaction_signum_OBJECTS = list_sigaction_signum.$(OBJEXT) - list_sigaction_signum_LDADD = $(LDADD) -@@ -2530,6 +2656,12 @@ - open_OBJECTS = open.$(OBJEXT) - open_LDADD = $(LDADD) - open_DEPENDENCIES = libtests.a -+open__secontext_SOURCES = open--secontext.c -+open__secontext_OBJECTS = open--secontext.$(OBJEXT) -+open__secontext_DEPENDENCIES = $(LDADD) $(am__DEPENDENCIES_2) -+open__secontext_full_SOURCES = open--secontext_full.c -+open__secontext_full_OBJECTS = open--secontext_full.$(OBJEXT) -+open__secontext_full_DEPENDENCIES = $(LDADD) $(am__DEPENDENCIES_2) - open_tree_SOURCES = open_tree.c - open_tree_OBJECTS = open_tree.$(OBJEXT) - open_tree_LDADD = $(LDADD) -@@ -2542,6 +2674,12 @@ - openat_OBJECTS = openat.$(OBJEXT) - openat_LDADD = $(LDADD) - openat_DEPENDENCIES = libtests.a -+openat__secontext_SOURCES = openat--secontext.c -+openat__secontext_OBJECTS = openat--secontext.$(OBJEXT) -+openat__secontext_DEPENDENCIES = $(LDADD) $(am__DEPENDENCIES_2) -+openat__secontext_full_SOURCES = openat--secontext_full.c -+openat__secontext_full_OBJECTS = openat--secontext_full.$(OBJEXT) -+openat__secontext_full_DEPENDENCIES = $(LDADD) $(am__DEPENDENCIES_2) - openat2_SOURCES = openat2.c - openat2_OBJECTS = openat2.$(OBJEXT) - openat2_LDADD = $(LDADD) -@@ -4487,7 +4625,8 @@ - am__v_CCLD_0 = @echo " CCLD " $@; - am__v_CCLD_1 = - SOURCES = $(libtests_a_SOURCES) _newselect.c _newselect-P.c accept.c \ -- accept4.c access.c acct.c add_key.c adjtimex.c aio.c \ -+ accept4.c access.c access--secontext.c \ -+ access--secontext_full.c acct.c add_key.c adjtimex.c aio.c \ - aio_pgetevents.c alarm.c answer.c attach-f-p.c \ - attach-f-p-cmd.c attach-p-cmd-cmd.c attach-p-cmd-p.c \ - block_reset_raise_run.c block_reset_run.c bpf.c \ -@@ -4495,7 +4634,8 @@ - bpf-obj_get_info_by_fd-prog-v.c bpf-obj_get_info_by_fd-v.c \ - bpf-success.c bpf-success-long-y.c bpf-success-v.c bpf-v.c \ - brk.c btrfs.c caps.c caps-abbrev.c check_sigblock.c \ -- check_sigign.c chmod.c chown.c chown32.c chroot.c \ -+ check_sigign.c chmod.c chmod--secontext.c \ -+ chmod--secontext_full.c chown.c chown32.c chroot.c \ - clock_adjtime.c clock_nanosleep.c clock_xettime.c \ - clone-flags.c clone3.c clone3-Xabbrev.c clone3-Xraw.c \ - clone3-Xverbose.c clone3-success.c clone3-success-Xabbrev.c \ -@@ -4509,25 +4649,35 @@ - dup-yy.c dup2.c dup2-P.c dup2-y.c dup2-yy.c dup3.c dup3-P.c \ - dup3-y.c dup3-yy.c epoll_create.c epoll_create1.c epoll_ctl.c \ - epoll_pwait.c epoll_wait.c erestartsys.c eventfd.c execve.c \ -- 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 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 \ -- fsconfig-P.c fsmount.c fsopen.c fspick.c fspick-P.c fstat.c \ -- fstat-Xabbrev.c fstat-Xraw.c fstat-Xverbose.c fstat64.c \ -- fstat64-Xabbrev.c fstat64-Xraw.c fstat64-Xverbose.c \ -- fstatat64.c fstatfs.c fstatfs64.c fsync.c fsync-y.c \ -- ftruncate.c ftruncate64.c futex.c futimesat.c get_mempolicy.c \ -- get_process_reaper.c getcpu.c getcwd.c getdents.c getdents-v.c \ -- getdents64.c getdents64-v.c getegid.c getegid32.c geteuid.c \ -- geteuid32.c getgid.c getgid32.c getgroups.c getgroups32.c \ -- getpeername.c getpgrp.c getpgrp--pidns-translation.c getpid.c \ -+ execve--secontext.c execve--secontext_full.c execve-v.c \ -+ execveat.c execveat--secontext.c execveat--secontext_full.c \ -+ execveat-v.c faccessat.c faccessat--secontext.c \ -+ faccessat--secontext_full.c faccessat-P.c faccessat-y.c \ -+ faccessat-y--secontext.c faccessat-y--secontext_full.c \ -+ faccessat-yy.c fadvise64.c fadvise64_64.c fallocate.c \ -+ fanotify_init.c fanotify_mark.c fanotify_mark--secontext.c \ -+ fanotify_mark--secontext_full.c fanotify_mark-Xabbrev.c \ -+ fanotify_mark-Xraw.c fanotify_mark-Xverbose.c fchdir.c \ -+ fchmod.c fchmod--secontext.c fchmod--secontext_full.c \ -+ fchmod-y.c fchmod-y--secontext.c fchmod-y--secontext_full.c \ -+ fchmodat.c fchmodat--secontext.c fchmodat--secontext_full.c \ -+ fchown.c fchown32.c fchownat.c fchownat--secontext.c \ -+ fchownat--secontext_full.c fcntl.c fcntl--pidns-translation.c \ -+ fcntl64.c fcntl64--pidns-translation.c fdatasync.c fflush.c \ -+ file_handle.c file_handle--secontext.c \ -+ file_handle--secontext_full.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 fsconfig-P.c \ -+ fsmount.c fsopen.c fspick.c fspick-P.c fstat.c fstat-Xabbrev.c \ -+ fstat-Xraw.c fstat-Xverbose.c fstat64.c fstat64-Xabbrev.c \ -+ fstat64-Xraw.c fstat64-Xverbose.c fstatat64.c fstatfs.c \ -+ fstatfs64.c fsync.c fsync-y.c ftruncate.c ftruncate64.c \ -+ futex.c futimesat.c get_mempolicy.c get_process_reaper.c \ -+ getcpu.c getcwd.c getdents.c getdents-v.c getdents64.c \ -+ getdents64-v.c getegid.c getegid32.c geteuid.c geteuid32.c \ -+ getgid.c getgid32.c getgroups.c getgroups32.c getpeername.c \ -+ getpgrp.c getpgrp--pidns-translation.c getpid.c \ - getpid--pidns-translation.c getppid.c getrandom.c getresgid.c \ - getresgid32.c getresuid.c getresuid32.c getrlimit.c \ - getrusage.c getsid.c getsid--pidns-translation.c getsockname.c \ -@@ -4578,7 +4728,8 @@ - kexec_file_load.c kexec_load.c keyctl.c keyctl-Xabbrev.c \ - keyctl-Xraw.c keyctl-Xverbose.c kill.c \ - kill--pidns-translation.c kill_child.c ksysent.c lchown.c \ -- lchown32.c link.c linkat.c list_sigaction_signum.c llseek.c \ -+ lchown32.c link.c linkat.c linkat--secontext.c \ -+ linkat--secontext_full.c list_sigaction_signum.c llseek.c \ - localtime.c lookup_dcookie.c looping_threads.c lseek.c lstat.c \ - lstat64.c madvise.c maybe_switch_current_tcp.c \ - maybe_switch_current_tcp--quiet-thread-execve.c mbind.c \ -@@ -4629,23 +4780,25 @@ - old_mmap-Xabbrev.c old_mmap-Xraw.c old_mmap-Xverbose.c \ - old_mmap-v-none.c oldfstat.c oldlstat.c oldselect.c \ - oldselect-P.c oldselect-efault.c oldselect-efault-P.c \ -- oldstat.c open.c open_tree.c open_tree-P.c openat.c openat2.c \ -- openat2-Xabbrev.c openat2-Xraw.c openat2-Xverbose.c \ -- openat2-v.c openat2-v-y.c openat2-v-y-Xabbrev.c \ -- openat2-v-y-Xraw.c openat2-v-y-Xverbose.c openat2-y.c \ -- orphaned_process_group.c osf_utimes.c pause.c pc.c \ -- perf_event_open.c perf_event_open_nonverbose.c \ -- perf_event_open_unabbrev.c personality.c personality-Xabbrev.c \ -- personality-Xraw.c personality-Xverbose.c pidfd_getfd.c \ -- pidfd_getfd-y.c pidfd_getfd-yy.c pidfd_open.c \ -- pidfd_open--decode-fd-path.c pidfd_open--decode-fd-pidfd.c \ -- pidfd_open--decode-fd-socket.c pidfd_open--pidns-translation.c \ -- pidfd_open-P.c pidfd_open-y.c pidfd_open-yy.c \ -- pidfd_send_signal.c pidfd_send_signal--pidns-translation.c \ -- pidns-cache.c pipe.c pipe2.c pkey_alloc.c pkey_free.c \ -- pkey_mprotect.c poll.c poll-P.c ppoll.c ppoll-P.c ppoll-v.c \ -- prctl-arg2-intptr.c prctl-dumpable.c prctl-name.c \ -- prctl-no-args.c prctl-pdeathsig.c prctl-seccomp-filter-v.c \ -+ oldstat.c open.c open--secontext.c open--secontext_full.c \ -+ open_tree.c open_tree-P.c openat.c openat--secontext.c \ -+ openat--secontext_full.c openat2.c openat2-Xabbrev.c \ -+ openat2-Xraw.c openat2-Xverbose.c openat2-v.c openat2-v-y.c \ -+ openat2-v-y-Xabbrev.c openat2-v-y-Xraw.c \ -+ openat2-v-y-Xverbose.c openat2-y.c orphaned_process_group.c \ -+ osf_utimes.c pause.c pc.c perf_event_open.c \ -+ perf_event_open_nonverbose.c perf_event_open_unabbrev.c \ -+ personality.c personality-Xabbrev.c personality-Xraw.c \ -+ personality-Xverbose.c pidfd_getfd.c pidfd_getfd-y.c \ -+ pidfd_getfd-yy.c pidfd_open.c pidfd_open--decode-fd-path.c \ -+ pidfd_open--decode-fd-pidfd.c pidfd_open--decode-fd-socket.c \ -+ pidfd_open--pidns-translation.c pidfd_open-P.c pidfd_open-y.c \ -+ pidfd_open-yy.c pidfd_send_signal.c \ -+ pidfd_send_signal--pidns-translation.c pidns-cache.c pipe.c \ -+ pipe2.c pkey_alloc.c pkey_free.c pkey_mprotect.c poll.c \ -+ poll-P.c ppoll.c ppoll-P.c ppoll-v.c prctl-arg2-intptr.c \ -+ prctl-dumpable.c prctl-name.c prctl-no-args.c \ -+ prctl-pdeathsig.c prctl-seccomp-filter-v.c \ - prctl-seccomp-strict.c prctl-securebits.c prctl-spec-inject.c \ - prctl-tid_address.c prctl-tsc.c pread64-pwrite64.c preadv.c \ - preadv-pwritev.c preadv2-pwritev2.c print_maxfd.c \ -@@ -4735,7 +4888,8 @@ - xetpriority.c xetpriority--pidns-translation.c xettimeofday.c \ - zeroargc.c - DIST_SOURCES = $(libtests_a_SOURCES) _newselect.c _newselect-P.c \ -- accept.c accept4.c access.c acct.c add_key.c adjtimex.c aio.c \ -+ accept.c accept4.c access.c access--secontext.c \ -+ access--secontext_full.c acct.c add_key.c adjtimex.c aio.c \ - aio_pgetevents.c alarm.c answer.c attach-f-p.c \ - attach-f-p-cmd.c attach-p-cmd-cmd.c attach-p-cmd-p.c \ - block_reset_raise_run.c block_reset_run.c bpf.c \ -@@ -4743,7 +4897,8 @@ - bpf-obj_get_info_by_fd-prog-v.c bpf-obj_get_info_by_fd-v.c \ - bpf-success.c bpf-success-long-y.c bpf-success-v.c bpf-v.c \ - brk.c btrfs.c caps.c caps-abbrev.c check_sigblock.c \ -- check_sigign.c chmod.c chown.c chown32.c chroot.c \ -+ check_sigign.c chmod.c chmod--secontext.c \ -+ chmod--secontext_full.c chown.c chown32.c chroot.c \ - clock_adjtime.c clock_nanosleep.c clock_xettime.c \ - clone-flags.c clone3.c clone3-Xabbrev.c clone3-Xraw.c \ - clone3-Xverbose.c clone3-success.c clone3-success-Xabbrev.c \ -@@ -4757,25 +4912,35 @@ - dup-yy.c dup2.c dup2-P.c dup2-y.c dup2-yy.c dup3.c dup3-P.c \ - dup3-y.c dup3-yy.c epoll_create.c epoll_create1.c epoll_ctl.c \ - epoll_pwait.c epoll_wait.c erestartsys.c eventfd.c execve.c \ -- 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 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 \ -- fsconfig-P.c fsmount.c fsopen.c fspick.c fspick-P.c fstat.c \ -- fstat-Xabbrev.c fstat-Xraw.c fstat-Xverbose.c fstat64.c \ -- fstat64-Xabbrev.c fstat64-Xraw.c fstat64-Xverbose.c \ -- fstatat64.c fstatfs.c fstatfs64.c fsync.c fsync-y.c \ -- ftruncate.c ftruncate64.c futex.c futimesat.c get_mempolicy.c \ -- get_process_reaper.c getcpu.c getcwd.c getdents.c getdents-v.c \ -- getdents64.c getdents64-v.c getegid.c getegid32.c geteuid.c \ -- geteuid32.c getgid.c getgid32.c getgroups.c getgroups32.c \ -- getpeername.c getpgrp.c getpgrp--pidns-translation.c getpid.c \ -+ execve--secontext.c execve--secontext_full.c execve-v.c \ -+ execveat.c execveat--secontext.c execveat--secontext_full.c \ -+ execveat-v.c faccessat.c faccessat--secontext.c \ -+ faccessat--secontext_full.c faccessat-P.c faccessat-y.c \ -+ faccessat-y--secontext.c faccessat-y--secontext_full.c \ -+ faccessat-yy.c fadvise64.c fadvise64_64.c fallocate.c \ -+ fanotify_init.c fanotify_mark.c fanotify_mark--secontext.c \ -+ fanotify_mark--secontext_full.c fanotify_mark-Xabbrev.c \ -+ fanotify_mark-Xraw.c fanotify_mark-Xverbose.c fchdir.c \ -+ fchmod.c fchmod--secontext.c fchmod--secontext_full.c \ -+ fchmod-y.c fchmod-y--secontext.c fchmod-y--secontext_full.c \ -+ fchmodat.c fchmodat--secontext.c fchmodat--secontext_full.c \ -+ fchown.c fchown32.c fchownat.c fchownat--secontext.c \ -+ fchownat--secontext_full.c fcntl.c fcntl--pidns-translation.c \ -+ fcntl64.c fcntl64--pidns-translation.c fdatasync.c fflush.c \ -+ file_handle.c file_handle--secontext.c \ -+ file_handle--secontext_full.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 fsconfig-P.c \ -+ fsmount.c fsopen.c fspick.c fspick-P.c fstat.c fstat-Xabbrev.c \ -+ fstat-Xraw.c fstat-Xverbose.c fstat64.c fstat64-Xabbrev.c \ -+ fstat64-Xraw.c fstat64-Xverbose.c fstatat64.c fstatfs.c \ -+ fstatfs64.c fsync.c fsync-y.c ftruncate.c ftruncate64.c \ -+ futex.c futimesat.c get_mempolicy.c get_process_reaper.c \ -+ getcpu.c getcwd.c getdents.c getdents-v.c getdents64.c \ -+ getdents64-v.c getegid.c getegid32.c geteuid.c geteuid32.c \ -+ getgid.c getgid32.c getgroups.c getgroups32.c getpeername.c \ -+ getpgrp.c getpgrp--pidns-translation.c getpid.c \ - getpid--pidns-translation.c getppid.c getrandom.c getresgid.c \ - getresgid32.c getresuid.c getresuid32.c getrlimit.c \ - getrusage.c getsid.c getsid--pidns-translation.c getsockname.c \ -@@ -4826,7 +4991,8 @@ - kexec_file_load.c kexec_load.c keyctl.c keyctl-Xabbrev.c \ - keyctl-Xraw.c keyctl-Xverbose.c kill.c \ - kill--pidns-translation.c kill_child.c ksysent.c lchown.c \ -- lchown32.c link.c linkat.c list_sigaction_signum.c llseek.c \ -+ lchown32.c link.c linkat.c linkat--secontext.c \ -+ linkat--secontext_full.c list_sigaction_signum.c llseek.c \ - localtime.c lookup_dcookie.c looping_threads.c lseek.c lstat.c \ - lstat64.c madvise.c maybe_switch_current_tcp.c \ - maybe_switch_current_tcp--quiet-thread-execve.c mbind.c \ -@@ -4877,23 +5043,25 @@ - old_mmap-Xabbrev.c old_mmap-Xraw.c old_mmap-Xverbose.c \ - old_mmap-v-none.c oldfstat.c oldlstat.c oldselect.c \ - oldselect-P.c oldselect-efault.c oldselect-efault-P.c \ -- oldstat.c open.c open_tree.c open_tree-P.c openat.c openat2.c \ -- openat2-Xabbrev.c openat2-Xraw.c openat2-Xverbose.c \ -- openat2-v.c openat2-v-y.c openat2-v-y-Xabbrev.c \ -- openat2-v-y-Xraw.c openat2-v-y-Xverbose.c openat2-y.c \ -- orphaned_process_group.c osf_utimes.c pause.c pc.c \ -- perf_event_open.c perf_event_open_nonverbose.c \ -- perf_event_open_unabbrev.c personality.c personality-Xabbrev.c \ -- personality-Xraw.c personality-Xverbose.c pidfd_getfd.c \ -- pidfd_getfd-y.c pidfd_getfd-yy.c pidfd_open.c \ -- pidfd_open--decode-fd-path.c pidfd_open--decode-fd-pidfd.c \ -- pidfd_open--decode-fd-socket.c pidfd_open--pidns-translation.c \ -- pidfd_open-P.c pidfd_open-y.c pidfd_open-yy.c \ -- pidfd_send_signal.c pidfd_send_signal--pidns-translation.c \ -- pidns-cache.c pipe.c pipe2.c pkey_alloc.c pkey_free.c \ -- pkey_mprotect.c poll.c poll-P.c ppoll.c ppoll-P.c ppoll-v.c \ -- prctl-arg2-intptr.c prctl-dumpable.c prctl-name.c \ -- prctl-no-args.c prctl-pdeathsig.c prctl-seccomp-filter-v.c \ -+ oldstat.c open.c open--secontext.c open--secontext_full.c \ -+ open_tree.c open_tree-P.c openat.c openat--secontext.c \ -+ openat--secontext_full.c openat2.c openat2-Xabbrev.c \ -+ openat2-Xraw.c openat2-Xverbose.c openat2-v.c openat2-v-y.c \ -+ openat2-v-y-Xabbrev.c openat2-v-y-Xraw.c \ -+ openat2-v-y-Xverbose.c openat2-y.c orphaned_process_group.c \ -+ osf_utimes.c pause.c pc.c perf_event_open.c \ -+ perf_event_open_nonverbose.c perf_event_open_unabbrev.c \ -+ personality.c personality-Xabbrev.c personality-Xraw.c \ -+ personality-Xverbose.c pidfd_getfd.c pidfd_getfd-y.c \ -+ pidfd_getfd-yy.c pidfd_open.c pidfd_open--decode-fd-path.c \ -+ pidfd_open--decode-fd-pidfd.c pidfd_open--decode-fd-socket.c \ -+ pidfd_open--pidns-translation.c pidfd_open-P.c pidfd_open-y.c \ -+ pidfd_open-yy.c pidfd_send_signal.c \ -+ pidfd_send_signal--pidns-translation.c pidns-cache.c pipe.c \ -+ pipe2.c pkey_alloc.c pkey_free.c pkey_mprotect.c poll.c \ -+ poll-P.c ppoll.c ppoll-P.c ppoll-v.c prctl-arg2-intptr.c \ -+ prctl-dumpable.c prctl-name.c prctl-no-args.c \ -+ prctl-pdeathsig.c prctl-seccomp-filter-v.c \ - prctl-seccomp-strict.c prctl-securebits.c prctl-spec-inject.c \ - prctl-tid_address.c prctl-tsc.c pread64-pwrite64.c preadv.c \ - preadv-pwritev.c preadv2-pwritev2.c print_maxfd.c \ -@@ -5194,7 +5362,7 @@ - bases=`echo $$bases` - RECHECK_LOGS = $(TEST_LOGS) - AM_RECURSIVE_TARGETS = check recheck --@ENABLE_STACKTRACE_TRUE@am__EXEEXT_2 = strace-k.test strace-k-p.test \ -+@ENABLE_STACKTRACE_TRUE@am__EXEEXT_3 = strace-k.test strace-k-p.test \ - @ENABLE_STACKTRACE_TRUE@ $(am__append_1) - TEST_SUITE_LOG = test-suite.log - TEST_EXTENSIONS = @EXEEXT@ .test -@@ -5216,7 +5384,8 @@ - esac - am__DIST_COMMON = $(srcdir)/../scno.am $(srcdir)/Makefile.in \ - $(srcdir)/gen_tests.am $(srcdir)/pure_executables.am \ -- $(top_srcdir)/depcomp $(top_srcdir)/test-driver COPYING -+ $(srcdir)/secontext.am $(top_srcdir)/depcomp \ -+ $(top_srcdir)/test-driver COPYING - DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) - ACLOCAL = @ACLOCAL@ - AMTAR = @AMTAR@ -@@ -5357,6 +5526,9 @@ - libiberty_CPPFLAGS = @libiberty_CPPFLAGS@ - libiberty_LDFLAGS = @libiberty_LDFLAGS@ - libiberty_LIBS = @libiberty_LIBS@ -+libselinux_CPPFLAGS = @libselinux_CPPFLAGS@ -+libselinux_LDFLAGS = @libselinux_LDFLAGS@ -+libselinux_LIBS = @libselinux_LIBS@ - libunwind_CPPFLAGS = @libunwind_CPPFLAGS@ - libunwind_LDFLAGS = @libunwind_LDFLAGS@ - libunwind_LIBS = @libunwind_LIBS@ -@@ -5400,6 +5572,8 @@ - -DTESTS_SIZEOF_LONG=$(SIZEOF_LONG) - - AM_LDFLAGS = $(ARCH_MFLAGS) -+@HAVE_M32_SELINUX_RUNTIME_FALSE@libselinux_LDADD = -+@HAVE_M32_SELINUX_RUNTIME_TRUE@libselinux_LDADD = $(libselinux_LIBS) - libtests_a_SOURCES = \ - create_nl_socket.c \ - create_tmpfile.c \ -@@ -5426,6 +5600,8 @@ - printxval-Xabbrev.c \ - printxval-Xraw.c \ - printxval-Xverbose.c \ -+ secontext.c \ -+ secontext.h \ - signal2name.c \ - skip_unavailable.c \ - sprintrc.c \ -@@ -5505,6 +5681,9 @@ - execve \ - execveat \ - faccessat \ -+ faccessat-P \ -+ faccessat-y \ -+ faccessat-yy \ - fadvise64 \ - fadvise64_64 \ - fallocate \ -@@ -6077,6 +6256,69 @@ - xettimeofday \ - # - -+secontext_EXECUTABLES = \ -+ access--secontext \ -+ access--secontext_full \ -+ chmod--secontext \ -+ chmod--secontext_full \ -+ execve--secontext \ -+ execve--secontext_full \ -+ execveat--secontext \ -+ execveat--secontext_full \ -+ faccessat--secontext \ -+ faccessat--secontext_full \ -+ faccessat-y--secontext \ -+ faccessat-y--secontext_full \ -+ fanotify_mark--secontext \ -+ fanotify_mark--secontext_full \ -+ fchmod--secontext \ -+ fchmod--secontext_full \ -+ fchmod-y--secontext \ -+ fchmod-y--secontext_full \ -+ fchmodat--secontext \ -+ fchmodat--secontext_full \ -+ fchownat--secontext \ -+ fchownat--secontext_full \ -+ file_handle--secontext \ -+ file_handle--secontext_full \ -+ linkat--secontext \ -+ linkat--secontext_full \ -+ open--secontext \ -+ open--secontext_full \ -+ openat--secontext \ -+ openat--secontext_full \ -+ # -+ -+access__secontext_LDADD = $(LDADD) $(libselinux_LDADD) -+access__secontext_full_LDADD = $(LDADD) $(libselinux_LDADD) -+chmod__secontext_LDADD = $(LDADD) $(libselinux_LDADD) -+chmod__secontext_full_LDADD = $(LDADD) $(libselinux_LDADD) -+execve__secontext_LDADD = $(LDADD) $(libselinux_LDADD) -+execve__secontext_full_LDADD = $(LDADD) $(libselinux_LDADD) -+execveat__secontext_LDADD = $(LDADD) $(libselinux_LDADD) -+execveat__secontext_full_LDADD = $(LDADD) $(libselinux_LDADD) -+faccessat__secontext_LDADD = $(LDADD) $(libselinux_LDADD) -+faccessat__secontext_full_LDADD = $(LDADD) $(libselinux_LDADD) -+faccessat_y__secontext_LDADD = $(LDADD) $(libselinux_LDADD) -+faccessat_y__secontext_full_LDADD = $(LDADD) $(libselinux_LDADD) -+fanotify_mark__secontext_LDADD = $(LDADD) $(libselinux_LDADD) -+fanotify_mark__secontext_full_LDADD = $(LDADD) $(libselinux_LDADD) -+fchmod__secontext_LDADD = $(LDADD) $(libselinux_LDADD) -+fchmod__secontext_full_LDADD = $(LDADD) $(libselinux_LDADD) -+fchmod_y__secontext_LDADD = $(LDADD) $(libselinux_LDADD) -+fchmod_y__secontext_full_LDADD = $(LDADD) $(libselinux_LDADD) -+fchmodat__secontext_LDADD = $(LDADD) $(libselinux_LDADD) -+fchmodat__secontext_full_LDADD = $(LDADD) $(libselinux_LDADD) -+fchownat__secontext_LDADD = $(LDADD) $(libselinux_LDADD) -+fchownat__secontext_full_LDADD = $(LDADD) $(libselinux_LDADD) -+file_handle__secontext_LDADD = $(LDADD) $(libselinux_LDADD) -+file_handle__secontext_full_LDADD = $(LDADD) $(libselinux_LDADD) -+linkat__secontext_LDADD = $(LDADD) $(libselinux_LDADD) -+linkat__secontext_full_LDADD = $(LDADD) $(libselinux_LDADD) -+open__secontext_LDADD = $(LDADD) $(libselinux_LDADD) -+open__secontext_full_LDADD = $(LDADD) $(libselinux_LDADD) -+openat__secontext_LDADD = $(LDADD) $(libselinux_LDADD) -+openat__secontext_full_LDADD = $(LDADD) $(libselinux_LDADD) - attach_f_p_LDADD = -lpthread $(LDADD) - count_f_LDADD = -lpthread $(LDADD) - delay_LDADD = $(clock_LIBS) $(LDADD) -@@ -6129,14 +6371,15 @@ - - # Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in; do not edit. - GEN_TESTS = _newselect.gen.test _newselect-P.gen.test accept.gen.test \ -- accept4.gen.test access.gen.test acct.gen.test \ -- add_key.gen.test adjtimex.gen.test aio.gen.test \ -- aio_pgetevents.gen.test alarm.gen.test bpf.gen.test \ -- bpf-obj_get_info_by_fd.gen.test \ -+ accept4.gen.test access.gen.test access--secontext.gen.test \ -+ access--secontext_full.gen.test acct.gen.test add_key.gen.test \ -+ adjtimex.gen.test aio.gen.test aio_pgetevents.gen.test \ -+ alarm.gen.test bpf.gen.test bpf-obj_get_info_by_fd.gen.test \ - bpf-obj_get_info_by_fd-prog.gen.test \ - bpf-obj_get_info_by_fd-prog-v.gen.test \ - bpf-obj_get_info_by_fd-v.gen.test bpf-v.gen.test \ -- btrfs.gen.test chmod.gen.test chown.gen.test chown32.gen.test \ -+ btrfs.gen.test chmod.gen.test chmod--secontext.gen.test \ -+ chmod--secontext_full.gen.test chown.gen.test chown32.gen.test \ - chroot.gen.test clock.gen.test clock_adjtime.gen.test \ - clock_nanosleep.gen.test clock_xettime.gen.test \ - clone3.gen.test clone3-Xabbrev.gen.test clone3-Xraw.gen.test \ -@@ -6155,21 +6398,36 @@ - dup3-P.gen.test dup3-y.gen.test dup3-yy.gen.test \ - epoll_create.gen.test epoll_create1.gen.test \ - epoll_ctl.gen.test epoll_pwait.gen.test epoll_wait.gen.test \ -- erestartsys.gen.test execveat.gen.test execveat-v.gen.test \ -- faccessat.gen.test fadvise64_64.gen.test fallocate.gen.test \ -+ erestartsys.gen.test execve--secontext.gen.test \ -+ execve--secontext_full.gen.test execveat.gen.test \ -+ execveat--secontext.gen.test execveat--secontext_full.gen.test \ -+ execveat-v.gen.test faccessat--secontext.gen.test \ -+ faccessat--secontext_full.gen.test faccessat-P.gen.test \ -+ faccessat-y.gen.test faccessat-y--secontext.gen.test \ -+ faccessat-y--secontext_full.gen.test faccessat-yy.gen.test \ -+ fadvise64_64.gen.test fallocate.gen.test \ - fanotify_init.gen.test fanotify_mark.gen.test \ -+ fanotify_mark--secontext.gen.test \ -+ fanotify_mark--secontext_full.gen.test \ - fanotify_mark-Xabbrev.gen.test fanotify_mark-Xraw.gen.test \ - fanotify_mark-Xverbose.gen.test fchdir.gen.test \ -- fchmod.gen.test fchmod-y.gen.test fchmodat.gen.test \ -- fchown.gen.test fchown32.gen.test fchownat.gen.test \ -+ fchmod.gen.test fchmod--secontext.gen.test \ -+ fchmod--secontext_full.gen.test fchmod-y.gen.test \ -+ fchmod-y--secontext.gen.test fchmod-y--secontext_full.gen.test \ -+ fchmodat.gen.test fchmodat--secontext.gen.test \ -+ fchmodat--secontext_full.gen.test fchown.gen.test \ -+ fchown32.gen.test fchownat.gen.test \ -+ fchownat--secontext.gen.test fchownat--secontext_full.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 \ -- fsopen.gen.test fspick.gen.test fspick-P.gen.test \ -- fstat.gen.test fstat-Xabbrev.gen.test fstat-Xraw.gen.test \ -+ file_handle--secontext.gen.test \ -+ file_handle--secontext_full.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 fsopen.gen.test \ -+ fspick.gen.test fspick-P.gen.test fstat.gen.test \ -+ fstat-Xabbrev.gen.test fstat-Xraw.gen.test \ - fstat-Xverbose.gen.test fstat64.gen.test \ - fstat64-Xabbrev.gen.test fstat64-Xraw.gen.test \ - fstat64-Xverbose.gen.test fstatat64.gen.test fstatfs.gen.test \ -@@ -6259,8 +6517,9 @@ - keyctl-Xverbose.gen.test kill.gen.test \ - kill--pidns-translation.gen.test ksysent.gen.test \ - lchown.gen.test lchown32.gen.test link.gen.test \ -- linkat.gen.test lookup_dcookie.gen.test lstat.gen.test \ -- lstat64.gen.test madvise.gen.test \ -+ linkat.gen.test linkat--secontext.gen.test \ -+ linkat--secontext_full.gen.test lookup_dcookie.gen.test \ -+ lstat.gen.test lstat64.gen.test madvise.gen.test \ - maybe_switch_current_tcp.gen.test \ - maybe_switch_current_tcp--quiet-thread-execve.gen.test \ - mbind.gen.test mbind-Xabbrev.gen.test mbind-Xraw.gen.test \ -@@ -6328,14 +6587,17 @@ - old_mmap-v-none.gen.test oldfstat.gen.test oldlstat.gen.test \ - oldselect.gen.test oldselect-P.gen.test \ - oldselect-efault.gen.test oldselect-efault-P.gen.test \ -- oldstat.gen.test open.gen.test open_tree.gen.test \ -- open_tree-P.gen.test openat.gen.test openat2.gen.test \ -- openat2-Xabbrev.gen.test openat2-Xraw.gen.test \ -- openat2-Xverbose.gen.test openat2-v.gen.test \ -- openat2-v-y.gen.test openat2-v-y-Xabbrev.gen.test \ -- openat2-v-y-Xraw.gen.test openat2-v-y-Xverbose.gen.test \ -- openat2-y.gen.test orphaned_process_group.gen.test \ -- osf_utimes.gen.test pause.gen.test perf_event_open.gen.test \ -+ oldstat.gen.test open.gen.test open--secontext.gen.test \ -+ open--secontext_full.gen.test open_tree.gen.test \ -+ open_tree-P.gen.test openat.gen.test \ -+ openat--secontext.gen.test openat--secontext_full.gen.test \ -+ openat2.gen.test openat2-Xabbrev.gen.test \ -+ openat2-Xraw.gen.test openat2-Xverbose.gen.test \ -+ openat2-v.gen.test openat2-v-y.gen.test \ -+ openat2-v-y-Xabbrev.gen.test openat2-v-y-Xraw.gen.test \ -+ openat2-v-y-Xverbose.gen.test openat2-y.gen.test \ -+ orphaned_process_group.gen.test osf_utimes.gen.test \ -+ pause.gen.test perf_event_open.gen.test \ - perf_event_open_nonverbose.gen.test \ - perf_event_open_unabbrev.gen.test personality-Xabbrev.gen.test \ - personality-Xraw.gen.test personality-Xverbose.gen.test \ -@@ -6806,7 +7068,7 @@ - - .SUFFIXES: - .SUFFIXES: .c .log .o .obj .test .test$(EXEEXT) .trs --$(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(srcdir)/pure_executables.am $(srcdir)/gen_tests.am $(srcdir)/../scno.am $(am__configure_deps) -+$(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(srcdir)/pure_executables.am $(srcdir)/secontext.am $(srcdir)/gen_tests.am $(srcdir)/../scno.am $(am__configure_deps) - @for dep in $?; do \ - case '$(am__configure_deps)' in \ - *$$dep*) \ -@@ -6826,7 +7088,7 @@ - echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__maybe_remake_depfiles)'; \ - cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__maybe_remake_depfiles);; \ - esac; --$(srcdir)/pure_executables.am $(srcdir)/gen_tests.am $(srcdir)/../scno.am $(am__empty): -+$(srcdir)/pure_executables.am $(srcdir)/secontext.am $(srcdir)/gen_tests.am $(srcdir)/../scno.am $(am__empty): - - $(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) - cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh -@@ -6868,6 +7130,14 @@ - @rm -f access$(EXEEXT) - $(AM_V_CCLD)$(LINK) $(access_OBJECTS) $(access_LDADD) $(LIBS) - -+access--secontext$(EXEEXT): $(access__secontext_OBJECTS) $(access__secontext_DEPENDENCIES) $(EXTRA_access__secontext_DEPENDENCIES) -+ @rm -f access--secontext$(EXEEXT) -+ $(AM_V_CCLD)$(LINK) $(access__secontext_OBJECTS) $(access__secontext_LDADD) $(LIBS) -+ -+access--secontext_full$(EXEEXT): $(access__secontext_full_OBJECTS) $(access__secontext_full_DEPENDENCIES) $(EXTRA_access__secontext_full_DEPENDENCIES) -+ @rm -f access--secontext_full$(EXEEXT) -+ $(AM_V_CCLD)$(LINK) $(access__secontext_full_OBJECTS) $(access__secontext_full_LDADD) $(LIBS) -+ - acct$(EXEEXT): $(acct_OBJECTS) $(acct_DEPENDENCIES) $(EXTRA_acct_DEPENDENCIES) - @rm -f acct$(EXEEXT) - $(AM_V_CCLD)$(LINK) $(acct_OBJECTS) $(acct_LDADD) $(LIBS) -@@ -6984,6 +7254,14 @@ - @rm -f chmod$(EXEEXT) - $(AM_V_CCLD)$(LINK) $(chmod_OBJECTS) $(chmod_LDADD) $(LIBS) - -+chmod--secontext$(EXEEXT): $(chmod__secontext_OBJECTS) $(chmod__secontext_DEPENDENCIES) $(EXTRA_chmod__secontext_DEPENDENCIES) -+ @rm -f chmod--secontext$(EXEEXT) -+ $(AM_V_CCLD)$(LINK) $(chmod__secontext_OBJECTS) $(chmod__secontext_LDADD) $(LIBS) -+ -+chmod--secontext_full$(EXEEXT): $(chmod__secontext_full_OBJECTS) $(chmod__secontext_full_DEPENDENCIES) $(EXTRA_chmod__secontext_full_DEPENDENCIES) -+ @rm -f chmod--secontext_full$(EXEEXT) -+ $(AM_V_CCLD)$(LINK) $(chmod__secontext_full_OBJECTS) $(chmod__secontext_full_LDADD) $(LIBS) -+ - chown$(EXEEXT): $(chown_OBJECTS) $(chown_DEPENDENCIES) $(EXTRA_chown_DEPENDENCIES) - @rm -f chown$(EXEEXT) - $(AM_V_CCLD)$(LINK) $(chown_OBJECTS) $(chown_LDADD) $(LIBS) -@@ -7196,6 +7474,14 @@ - @rm -f execve$(EXEEXT) - $(AM_V_CCLD)$(LINK) $(execve_OBJECTS) $(execve_LDADD) $(LIBS) - -+execve--secontext$(EXEEXT): $(execve__secontext_OBJECTS) $(execve__secontext_DEPENDENCIES) $(EXTRA_execve__secontext_DEPENDENCIES) -+ @rm -f execve--secontext$(EXEEXT) -+ $(AM_V_CCLD)$(LINK) $(execve__secontext_OBJECTS) $(execve__secontext_LDADD) $(LIBS) -+ -+execve--secontext_full$(EXEEXT): $(execve__secontext_full_OBJECTS) $(execve__secontext_full_DEPENDENCIES) $(EXTRA_execve__secontext_full_DEPENDENCIES) -+ @rm -f execve--secontext_full$(EXEEXT) -+ $(AM_V_CCLD)$(LINK) $(execve__secontext_full_OBJECTS) $(execve__secontext_full_LDADD) $(LIBS) -+ - execve-v$(EXEEXT): $(execve_v_OBJECTS) $(execve_v_DEPENDENCIES) $(EXTRA_execve_v_DEPENDENCIES) - @rm -f execve-v$(EXEEXT) - $(AM_V_CCLD)$(LINK) $(execve_v_OBJECTS) $(execve_v_LDADD) $(LIBS) -@@ -7204,6 +7490,14 @@ - @rm -f execveat$(EXEEXT) - $(AM_V_CCLD)$(LINK) $(execveat_OBJECTS) $(execveat_LDADD) $(LIBS) - -+execveat--secontext$(EXEEXT): $(execveat__secontext_OBJECTS) $(execveat__secontext_DEPENDENCIES) $(EXTRA_execveat__secontext_DEPENDENCIES) -+ @rm -f execveat--secontext$(EXEEXT) -+ $(AM_V_CCLD)$(LINK) $(execveat__secontext_OBJECTS) $(execveat__secontext_LDADD) $(LIBS) -+ -+execveat--secontext_full$(EXEEXT): $(execveat__secontext_full_OBJECTS) $(execveat__secontext_full_DEPENDENCIES) $(EXTRA_execveat__secontext_full_DEPENDENCIES) -+ @rm -f execveat--secontext_full$(EXEEXT) -+ $(AM_V_CCLD)$(LINK) $(execveat__secontext_full_OBJECTS) $(execveat__secontext_full_LDADD) $(LIBS) -+ - execveat-v$(EXEEXT): $(execveat_v_OBJECTS) $(execveat_v_DEPENDENCIES) $(EXTRA_execveat_v_DEPENDENCIES) - @rm -f execveat-v$(EXEEXT) - $(AM_V_CCLD)$(LINK) $(execveat_v_OBJECTS) $(execveat_v_LDADD) $(LIBS) -@@ -7212,6 +7506,34 @@ - @rm -f faccessat$(EXEEXT) - $(AM_V_CCLD)$(LINK) $(faccessat_OBJECTS) $(faccessat_LDADD) $(LIBS) - -+faccessat--secontext$(EXEEXT): $(faccessat__secontext_OBJECTS) $(faccessat__secontext_DEPENDENCIES) $(EXTRA_faccessat__secontext_DEPENDENCIES) -+ @rm -f faccessat--secontext$(EXEEXT) -+ $(AM_V_CCLD)$(LINK) $(faccessat__secontext_OBJECTS) $(faccessat__secontext_LDADD) $(LIBS) -+ -+faccessat--secontext_full$(EXEEXT): $(faccessat__secontext_full_OBJECTS) $(faccessat__secontext_full_DEPENDENCIES) $(EXTRA_faccessat__secontext_full_DEPENDENCIES) -+ @rm -f faccessat--secontext_full$(EXEEXT) -+ $(AM_V_CCLD)$(LINK) $(faccessat__secontext_full_OBJECTS) $(faccessat__secontext_full_LDADD) $(LIBS) -+ -+faccessat-P$(EXEEXT): $(faccessat_P_OBJECTS) $(faccessat_P_DEPENDENCIES) $(EXTRA_faccessat_P_DEPENDENCIES) -+ @rm -f faccessat-P$(EXEEXT) -+ $(AM_V_CCLD)$(LINK) $(faccessat_P_OBJECTS) $(faccessat_P_LDADD) $(LIBS) -+ -+faccessat-y$(EXEEXT): $(faccessat_y_OBJECTS) $(faccessat_y_DEPENDENCIES) $(EXTRA_faccessat_y_DEPENDENCIES) -+ @rm -f faccessat-y$(EXEEXT) -+ $(AM_V_CCLD)$(LINK) $(faccessat_y_OBJECTS) $(faccessat_y_LDADD) $(LIBS) -+ -+faccessat-y--secontext$(EXEEXT): $(faccessat_y__secontext_OBJECTS) $(faccessat_y__secontext_DEPENDENCIES) $(EXTRA_faccessat_y__secontext_DEPENDENCIES) -+ @rm -f faccessat-y--secontext$(EXEEXT) -+ $(AM_V_CCLD)$(LINK) $(faccessat_y__secontext_OBJECTS) $(faccessat_y__secontext_LDADD) $(LIBS) -+ -+faccessat-y--secontext_full$(EXEEXT): $(faccessat_y__secontext_full_OBJECTS) $(faccessat_y__secontext_full_DEPENDENCIES) $(EXTRA_faccessat_y__secontext_full_DEPENDENCIES) -+ @rm -f faccessat-y--secontext_full$(EXEEXT) -+ $(AM_V_CCLD)$(LINK) $(faccessat_y__secontext_full_OBJECTS) $(faccessat_y__secontext_full_LDADD) $(LIBS) -+ -+faccessat-yy$(EXEEXT): $(faccessat_yy_OBJECTS) $(faccessat_yy_DEPENDENCIES) $(EXTRA_faccessat_yy_DEPENDENCIES) -+ @rm -f faccessat-yy$(EXEEXT) -+ $(AM_V_CCLD)$(LINK) $(faccessat_yy_OBJECTS) $(faccessat_yy_LDADD) $(LIBS) -+ - fadvise64$(EXEEXT): $(fadvise64_OBJECTS) $(fadvise64_DEPENDENCIES) $(EXTRA_fadvise64_DEPENDENCIES) - @rm -f fadvise64$(EXEEXT) - $(AM_V_CCLD)$(LINK) $(fadvise64_OBJECTS) $(fadvise64_LDADD) $(LIBS) -@@ -7232,6 +7554,14 @@ - @rm -f fanotify_mark$(EXEEXT) - $(AM_V_CCLD)$(LINK) $(fanotify_mark_OBJECTS) $(fanotify_mark_LDADD) $(LIBS) - -+fanotify_mark--secontext$(EXEEXT): $(fanotify_mark__secontext_OBJECTS) $(fanotify_mark__secontext_DEPENDENCIES) $(EXTRA_fanotify_mark__secontext_DEPENDENCIES) -+ @rm -f fanotify_mark--secontext$(EXEEXT) -+ $(AM_V_CCLD)$(LINK) $(fanotify_mark__secontext_OBJECTS) $(fanotify_mark__secontext_LDADD) $(LIBS) -+ -+fanotify_mark--secontext_full$(EXEEXT): $(fanotify_mark__secontext_full_OBJECTS) $(fanotify_mark__secontext_full_DEPENDENCIES) $(EXTRA_fanotify_mark__secontext_full_DEPENDENCIES) -+ @rm -f fanotify_mark--secontext_full$(EXEEXT) -+ $(AM_V_CCLD)$(LINK) $(fanotify_mark__secontext_full_OBJECTS) $(fanotify_mark__secontext_full_LDADD) $(LIBS) -+ - fanotify_mark-Xabbrev$(EXEEXT): $(fanotify_mark_Xabbrev_OBJECTS) $(fanotify_mark_Xabbrev_DEPENDENCIES) $(EXTRA_fanotify_mark_Xabbrev_DEPENDENCIES) - @rm -f fanotify_mark-Xabbrev$(EXEEXT) - $(AM_V_CCLD)$(LINK) $(fanotify_mark_Xabbrev_OBJECTS) $(fanotify_mark_Xabbrev_LDADD) $(LIBS) -@@ -7252,14 +7582,38 @@ - @rm -f fchmod$(EXEEXT) - $(AM_V_CCLD)$(LINK) $(fchmod_OBJECTS) $(fchmod_LDADD) $(LIBS) - -+fchmod--secontext$(EXEEXT): $(fchmod__secontext_OBJECTS) $(fchmod__secontext_DEPENDENCIES) $(EXTRA_fchmod__secontext_DEPENDENCIES) -+ @rm -f fchmod--secontext$(EXEEXT) -+ $(AM_V_CCLD)$(LINK) $(fchmod__secontext_OBJECTS) $(fchmod__secontext_LDADD) $(LIBS) -+ -+fchmod--secontext_full$(EXEEXT): $(fchmod__secontext_full_OBJECTS) $(fchmod__secontext_full_DEPENDENCIES) $(EXTRA_fchmod__secontext_full_DEPENDENCIES) -+ @rm -f fchmod--secontext_full$(EXEEXT) -+ $(AM_V_CCLD)$(LINK) $(fchmod__secontext_full_OBJECTS) $(fchmod__secontext_full_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) - -+fchmod-y--secontext$(EXEEXT): $(fchmod_y__secontext_OBJECTS) $(fchmod_y__secontext_DEPENDENCIES) $(EXTRA_fchmod_y__secontext_DEPENDENCIES) -+ @rm -f fchmod-y--secontext$(EXEEXT) -+ $(AM_V_CCLD)$(LINK) $(fchmod_y__secontext_OBJECTS) $(fchmod_y__secontext_LDADD) $(LIBS) -+ -+fchmod-y--secontext_full$(EXEEXT): $(fchmod_y__secontext_full_OBJECTS) $(fchmod_y__secontext_full_DEPENDENCIES) $(EXTRA_fchmod_y__secontext_full_DEPENDENCIES) -+ @rm -f fchmod-y--secontext_full$(EXEEXT) -+ $(AM_V_CCLD)$(LINK) $(fchmod_y__secontext_full_OBJECTS) $(fchmod_y__secontext_full_LDADD) $(LIBS) -+ - fchmodat$(EXEEXT): $(fchmodat_OBJECTS) $(fchmodat_DEPENDENCIES) $(EXTRA_fchmodat_DEPENDENCIES) - @rm -f fchmodat$(EXEEXT) - $(AM_V_CCLD)$(LINK) $(fchmodat_OBJECTS) $(fchmodat_LDADD) $(LIBS) - -+fchmodat--secontext$(EXEEXT): $(fchmodat__secontext_OBJECTS) $(fchmodat__secontext_DEPENDENCIES) $(EXTRA_fchmodat__secontext_DEPENDENCIES) -+ @rm -f fchmodat--secontext$(EXEEXT) -+ $(AM_V_CCLD)$(LINK) $(fchmodat__secontext_OBJECTS) $(fchmodat__secontext_LDADD) $(LIBS) -+ -+fchmodat--secontext_full$(EXEEXT): $(fchmodat__secontext_full_OBJECTS) $(fchmodat__secontext_full_DEPENDENCIES) $(EXTRA_fchmodat__secontext_full_DEPENDENCIES) -+ @rm -f fchmodat--secontext_full$(EXEEXT) -+ $(AM_V_CCLD)$(LINK) $(fchmodat__secontext_full_OBJECTS) $(fchmodat__secontext_full_LDADD) $(LIBS) -+ - fchown$(EXEEXT): $(fchown_OBJECTS) $(fchown_DEPENDENCIES) $(EXTRA_fchown_DEPENDENCIES) - @rm -f fchown$(EXEEXT) - $(AM_V_CCLD)$(LINK) $(fchown_OBJECTS) $(fchown_LDADD) $(LIBS) -@@ -7272,6 +7626,14 @@ - @rm -f fchownat$(EXEEXT) - $(AM_V_CCLD)$(LINK) $(fchownat_OBJECTS) $(fchownat_LDADD) $(LIBS) - -+fchownat--secontext$(EXEEXT): $(fchownat__secontext_OBJECTS) $(fchownat__secontext_DEPENDENCIES) $(EXTRA_fchownat__secontext_DEPENDENCIES) -+ @rm -f fchownat--secontext$(EXEEXT) -+ $(AM_V_CCLD)$(LINK) $(fchownat__secontext_OBJECTS) $(fchownat__secontext_LDADD) $(LIBS) -+ -+fchownat--secontext_full$(EXEEXT): $(fchownat__secontext_full_OBJECTS) $(fchownat__secontext_full_DEPENDENCIES) $(EXTRA_fchownat__secontext_full_DEPENDENCIES) -+ @rm -f fchownat--secontext_full$(EXEEXT) -+ $(AM_V_CCLD)$(LINK) $(fchownat__secontext_full_OBJECTS) $(fchownat__secontext_full_LDADD) $(LIBS) -+ - fcntl$(EXEEXT): $(fcntl_OBJECTS) $(fcntl_DEPENDENCIES) $(EXTRA_fcntl_DEPENDENCIES) - @rm -f fcntl$(EXEEXT) - $(AM_V_CCLD)$(LINK) $(fcntl_OBJECTS) $(fcntl_LDADD) $(LIBS) -@@ -7300,6 +7662,14 @@ - @rm -f file_handle$(EXEEXT) - $(AM_V_CCLD)$(LINK) $(file_handle_OBJECTS) $(file_handle_LDADD) $(LIBS) - -+file_handle--secontext$(EXEEXT): $(file_handle__secontext_OBJECTS) $(file_handle__secontext_DEPENDENCIES) $(EXTRA_file_handle__secontext_DEPENDENCIES) -+ @rm -f file_handle--secontext$(EXEEXT) -+ $(AM_V_CCLD)$(LINK) $(file_handle__secontext_OBJECTS) $(file_handle__secontext_LDADD) $(LIBS) -+ -+file_handle--secontext_full$(EXEEXT): $(file_handle__secontext_full_OBJECTS) $(file_handle__secontext_full_DEPENDENCIES) $(EXTRA_file_handle__secontext_full_DEPENDENCIES) -+ @rm -f file_handle--secontext_full$(EXEEXT) -+ $(AM_V_CCLD)$(LINK) $(file_handle__secontext_full_OBJECTS) $(file_handle__secontext_full_LDADD) $(LIBS) -+ - file_ioctl$(EXEEXT): $(file_ioctl_OBJECTS) $(file_ioctl_DEPENDENCIES) $(EXTRA_file_ioctl_DEPENDENCIES) - @rm -f file_ioctl$(EXEEXT) - $(AM_V_CCLD)$(LINK) $(file_ioctl_OBJECTS) $(file_ioctl_LDADD) $(LIBS) -@@ -8124,6 +8494,14 @@ - @rm -f linkat$(EXEEXT) - $(AM_V_CCLD)$(LINK) $(linkat_OBJECTS) $(linkat_LDADD) $(LIBS) - -+linkat--secontext$(EXEEXT): $(linkat__secontext_OBJECTS) $(linkat__secontext_DEPENDENCIES) $(EXTRA_linkat__secontext_DEPENDENCIES) -+ @rm -f linkat--secontext$(EXEEXT) -+ $(AM_V_CCLD)$(LINK) $(linkat__secontext_OBJECTS) $(linkat__secontext_LDADD) $(LIBS) -+ -+linkat--secontext_full$(EXEEXT): $(linkat__secontext_full_OBJECTS) $(linkat__secontext_full_DEPENDENCIES) $(EXTRA_linkat__secontext_full_DEPENDENCIES) -+ @rm -f linkat--secontext_full$(EXEEXT) -+ $(AM_V_CCLD)$(LINK) $(linkat__secontext_full_OBJECTS) $(linkat__secontext_full_LDADD) $(LIBS) -+ - list_sigaction_signum$(EXEEXT): $(list_sigaction_signum_OBJECTS) $(list_sigaction_signum_DEPENDENCIES) $(EXTRA_list_sigaction_signum_DEPENDENCIES) - @rm -f list_sigaction_signum$(EXEEXT) - $(AM_V_CCLD)$(LINK) $(list_sigaction_signum_OBJECTS) $(list_sigaction_signum_LDADD) $(LIBS) -@@ -8756,6 +9134,14 @@ - @rm -f open$(EXEEXT) - $(AM_V_CCLD)$(LINK) $(open_OBJECTS) $(open_LDADD) $(LIBS) - -+open--secontext$(EXEEXT): $(open__secontext_OBJECTS) $(open__secontext_DEPENDENCIES) $(EXTRA_open__secontext_DEPENDENCIES) -+ @rm -f open--secontext$(EXEEXT) -+ $(AM_V_CCLD)$(LINK) $(open__secontext_OBJECTS) $(open__secontext_LDADD) $(LIBS) -+ -+open--secontext_full$(EXEEXT): $(open__secontext_full_OBJECTS) $(open__secontext_full_DEPENDENCIES) $(EXTRA_open__secontext_full_DEPENDENCIES) -+ @rm -f open--secontext_full$(EXEEXT) -+ $(AM_V_CCLD)$(LINK) $(open__secontext_full_OBJECTS) $(open__secontext_full_LDADD) $(LIBS) -+ - open_tree$(EXEEXT): $(open_tree_OBJECTS) $(open_tree_DEPENDENCIES) $(EXTRA_open_tree_DEPENDENCIES) - @rm -f open_tree$(EXEEXT) - $(AM_V_CCLD)$(LINK) $(open_tree_OBJECTS) $(open_tree_LDADD) $(LIBS) -@@ -8768,6 +9154,14 @@ - @rm -f openat$(EXEEXT) - $(AM_V_CCLD)$(LINK) $(openat_OBJECTS) $(openat_LDADD) $(LIBS) - -+openat--secontext$(EXEEXT): $(openat__secontext_OBJECTS) $(openat__secontext_DEPENDENCIES) $(EXTRA_openat__secontext_DEPENDENCIES) -+ @rm -f openat--secontext$(EXEEXT) -+ $(AM_V_CCLD)$(LINK) $(openat__secontext_OBJECTS) $(openat__secontext_LDADD) $(LIBS) -+ -+openat--secontext_full$(EXEEXT): $(openat__secontext_full_OBJECTS) $(openat__secontext_full_DEPENDENCIES) $(EXTRA_openat__secontext_full_DEPENDENCIES) -+ @rm -f openat--secontext_full$(EXEEXT) -+ $(AM_V_CCLD)$(LINK) $(openat__secontext_full_OBJECTS) $(openat__secontext_full_LDADD) $(LIBS) -+ - openat2$(EXEEXT): $(openat2_OBJECTS) $(openat2_DEPENDENCIES) $(EXTRA_openat2_DEPENDENCIES) - @rm -f openat2$(EXEEXT) - $(AM_V_CCLD)$(LINK) $(openat2_OBJECTS) $(openat2_LDADD) $(LIBS) -@@ -10094,6 +10488,8 @@ - @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/_newselect.Po@am__quote@ # am--include-marker - @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/accept.Po@am__quote@ # am--include-marker - @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/accept4.Po@am__quote@ # am--include-marker -+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/access--secontext.Po@am__quote@ # am--include-marker -+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/access--secontext_full.Po@am__quote@ # am--include-marker - @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/access.Po@am__quote@ # am--include-marker - @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/acct.Po@am__quote@ # am--include-marker - @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/add_key.Po@am__quote@ # am--include-marker -@@ -10123,6 +10519,8 @@ - @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/caps.Po@am__quote@ # am--include-marker - @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/check_sigblock.Po@am__quote@ # am--include-marker - @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/check_sigign.Po@am__quote@ # am--include-marker -+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/chmod--secontext.Po@am__quote@ # am--include-marker -+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/chmod--secontext_full.Po@am__quote@ # am--include-marker - @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/chmod.Po@am__quote@ # am--include-marker - @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/chown.Po@am__quote@ # am--include-marker - @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/chown32.Po@am__quote@ # am--include-marker -@@ -10176,25 +10574,46 @@ - @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/epoll_wait.Po@am__quote@ # am--include-marker - @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/erestartsys.Po@am__quote@ # am--include-marker - @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/eventfd.Po@am__quote@ # am--include-marker -+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/execve--secontext.Po@am__quote@ # am--include-marker -+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/execve--secontext_full.Po@am__quote@ # am--include-marker - @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/execve-v.Po@am__quote@ # am--include-marker - @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/execve.Po@am__quote@ # am--include-marker -+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/execveat--secontext.Po@am__quote@ # am--include-marker -+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/execveat--secontext_full.Po@am__quote@ # am--include-marker - @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/execveat-v.Po@am__quote@ # am--include-marker - @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/execveat.Po@am__quote@ # am--include-marker -+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/faccessat--secontext.Po@am__quote@ # am--include-marker -+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/faccessat--secontext_full.Po@am__quote@ # am--include-marker -+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/faccessat-P.Po@am__quote@ # am--include-marker -+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/faccessat-y--secontext.Po@am__quote@ # am--include-marker -+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/faccessat-y--secontext_full.Po@am__quote@ # am--include-marker -+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/faccessat-y.Po@am__quote@ # am--include-marker -+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/faccessat-yy.Po@am__quote@ # am--include-marker - @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/faccessat.Po@am__quote@ # am--include-marker - @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/fadvise64.Po@am__quote@ # am--include-marker - @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/fadvise64_64.Po@am__quote@ # am--include-marker - @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/fallocate.Po@am__quote@ # am--include-marker - @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/fanotify_init.Po@am__quote@ # am--include-marker -+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/fanotify_mark--secontext.Po@am__quote@ # am--include-marker -+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/fanotify_mark--secontext_full.Po@am__quote@ # am--include-marker - @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/fanotify_mark-Xabbrev.Po@am__quote@ # am--include-marker - @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/fanotify_mark-Xraw.Po@am__quote@ # am--include-marker - @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--secontext.Po@am__quote@ # am--include-marker -+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/fchmod--secontext_full.Po@am__quote@ # am--include-marker -+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/fchmod-y--secontext.Po@am__quote@ # am--include-marker -+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/fchmod-y--secontext_full.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--secontext.Po@am__quote@ # am--include-marker -+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/fchmodat--secontext_full.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 - @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/fchown32.Po@am__quote@ # am--include-marker -+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/fchownat--secontext.Po@am__quote@ # am--include-marker -+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/fchownat--secontext_full.Po@am__quote@ # am--include-marker - @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/fchownat.Po@am__quote@ # am--include-marker - @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/fcntl--pidns-translation.Po@am__quote@ # am--include-marker - @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/fcntl.Po@am__quote@ # am--include-marker -@@ -10202,6 +10621,8 @@ - @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/fcntl64.Po@am__quote@ # am--include-marker - @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/fdatasync.Po@am__quote@ # am--include-marker - @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/fflush.Po@am__quote@ # am--include-marker -+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/file_handle--secontext.Po@am__quote@ # am--include-marker -+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/file_handle--secontext_full.Po@am__quote@ # am--include-marker - @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/file_handle.Po@am__quote@ # am--include-marker - @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/file_ioctl.Po@am__quote@ # am--include-marker - @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/filter-unavailable.Po@am__quote@ # am--include-marker -@@ -10431,6 +10852,7 @@ - @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libtests_a-printxval-Xabbrev.Po@am__quote@ # am--include-marker - @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libtests_a-printxval-Xraw.Po@am__quote@ # am--include-marker - @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libtests_a-printxval-Xverbose.Po@am__quote@ # am--include-marker -+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libtests_a-secontext.Po@am__quote@ # am--include-marker - @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libtests_a-signal2name.Po@am__quote@ # am--include-marker - @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libtests_a-skip_unavailable.Po@am__quote@ # am--include-marker - @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libtests_a-sprintrc.Po@am__quote@ # am--include-marker -@@ -10443,6 +10865,8 @@ - @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libtests_a-tprintf.Po@am__quote@ # am--include-marker - @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libtests_a-xmalloc_for_tests.Po@am__quote@ # am--include-marker - @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/link.Po@am__quote@ # am--include-marker -+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/linkat--secontext.Po@am__quote@ # am--include-marker -+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/linkat--secontext_full.Po@am__quote@ # am--include-marker - @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/linkat.Po@am__quote@ # am--include-marker - @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/list_sigaction_signum.Po@am__quote@ # am--include-marker - @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/llseek.Po@am__quote@ # am--include-marker -@@ -10601,9 +11025,13 @@ - @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/oldselect-efault.Po@am__quote@ # am--include-marker - @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/oldselect.Po@am__quote@ # am--include-marker - @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/oldstat.Po@am__quote@ # am--include-marker -+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/open--secontext.Po@am__quote@ # am--include-marker -+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/open--secontext_full.Po@am__quote@ # am--include-marker - @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/open.Po@am__quote@ # am--include-marker - @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/open_tree-P.Po@am__quote@ # am--include-marker - @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/open_tree.Po@am__quote@ # am--include-marker -+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/openat--secontext.Po@am__quote@ # am--include-marker -+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/openat--secontext_full.Po@am__quote@ # am--include-marker - @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/openat.Po@am__quote@ # am--include-marker - @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/openat2-Xabbrev.Po@am__quote@ # am--include-marker - @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/openat2-Xraw.Po@am__quote@ # am--include-marker -@@ -11300,6 +11728,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-printxval-Xverbose.obj `if test -f 'printxval-Xverbose.c'; then $(CYGPATH_W) 'printxval-Xverbose.c'; else $(CYGPATH_W) '$(srcdir)/printxval-Xverbose.c'; fi` - -+libtests_a-secontext.o: secontext.c -+@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libtests_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT libtests_a-secontext.o -MD -MP -MF $(DEPDIR)/libtests_a-secontext.Tpo -c -o libtests_a-secontext.o `test -f 'secontext.c' || echo '$(srcdir)/'`secontext.c -+@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libtests_a-secontext.Tpo $(DEPDIR)/libtests_a-secontext.Po -+@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='secontext.c' object='libtests_a-secontext.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-secontext.o `test -f 'secontext.c' || echo '$(srcdir)/'`secontext.c -+ -+libtests_a-secontext.obj: secontext.c -+@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libtests_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT libtests_a-secontext.obj -MD -MP -MF $(DEPDIR)/libtests_a-secontext.Tpo -c -o libtests_a-secontext.obj `if test -f 'secontext.c'; then $(CYGPATH_W) 'secontext.c'; else $(CYGPATH_W) '$(srcdir)/secontext.c'; fi` -+@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libtests_a-secontext.Tpo $(DEPDIR)/libtests_a-secontext.Po -+@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='secontext.c' object='libtests_a-secontext.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-secontext.obj `if test -f 'secontext.c'; then $(CYGPATH_W) 'secontext.c'; else $(CYGPATH_W) '$(srcdir)/secontext.c'; fi` -+ - libtests_a-signal2name.o: signal2name.c - @am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libtests_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT libtests_a-signal2name.o -MD -MP -MF $(DEPDIR)/libtests_a-signal2name.Tpo -c -o libtests_a-signal2name.o `test -f 'signal2name.c' || echo '$(srcdir)/'`signal2name.c - @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libtests_a-signal2name.Tpo $(DEPDIR)/libtests_a-signal2name.Po -@@ -13841,6 +14283,12 @@ - $(srcdir)/access.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in - $(AM_V_GEN) $^ $@ - -+$(srcdir)/access--secontext.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in -+ $(AM_V_GEN) $^ $@ -+ -+$(srcdir)/access--secontext_full.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in -+ $(AM_V_GEN) $^ $@ -+ - $(srcdir)/acct.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in - $(AM_V_GEN) $^ $@ - -@@ -13883,6 +14331,12 @@ - $(srcdir)/chmod.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in - $(AM_V_GEN) $^ $@ - -+$(srcdir)/chmod--secontext.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in -+ $(AM_V_GEN) $^ $@ -+ -+$(srcdir)/chmod--secontext_full.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in -+ $(AM_V_GEN) $^ $@ -+ - $(srcdir)/chown.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in - $(AM_V_GEN) $^ $@ - -@@ -14024,13 +14478,43 @@ - $(srcdir)/erestartsys.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in - $(AM_V_GEN) $^ $@ - -+$(srcdir)/execve--secontext.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in -+ $(AM_V_GEN) $^ $@ -+ -+$(srcdir)/execve--secontext_full.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in -+ $(AM_V_GEN) $^ $@ -+ - $(srcdir)/execveat.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in - $(AM_V_GEN) $^ $@ - -+$(srcdir)/execveat--secontext.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in -+ $(AM_V_GEN) $^ $@ -+ -+$(srcdir)/execveat--secontext_full.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in -+ $(AM_V_GEN) $^ $@ -+ - $(srcdir)/execveat-v.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in - $(AM_V_GEN) $^ $@ - --$(srcdir)/faccessat.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in -+$(srcdir)/faccessat--secontext.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in -+ $(AM_V_GEN) $^ $@ -+ -+$(srcdir)/faccessat--secontext_full.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in -+ $(AM_V_GEN) $^ $@ -+ -+$(srcdir)/faccessat-P.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in -+ $(AM_V_GEN) $^ $@ -+ -+$(srcdir)/faccessat-y.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in -+ $(AM_V_GEN) $^ $@ -+ -+$(srcdir)/faccessat-y--secontext.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in -+ $(AM_V_GEN) $^ $@ -+ -+$(srcdir)/faccessat-y--secontext_full.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in -+ $(AM_V_GEN) $^ $@ -+ -+$(srcdir)/faccessat-yy.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in - $(AM_V_GEN) $^ $@ - - $(srcdir)/fadvise64_64.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in -@@ -14045,6 +14529,12 @@ - $(srcdir)/fanotify_mark.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in - $(AM_V_GEN) $^ $@ - -+$(srcdir)/fanotify_mark--secontext.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in -+ $(AM_V_GEN) $^ $@ -+ -+$(srcdir)/fanotify_mark--secontext_full.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in -+ $(AM_V_GEN) $^ $@ -+ - $(srcdir)/fanotify_mark-Xabbrev.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in - $(AM_V_GEN) $^ $@ - -@@ -14060,12 +14550,30 @@ - $(srcdir)/fchmod.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in - $(AM_V_GEN) $^ $@ - -+$(srcdir)/fchmod--secontext.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in -+ $(AM_V_GEN) $^ $@ -+ -+$(srcdir)/fchmod--secontext_full.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)/fchmod-y--secontext.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in -+ $(AM_V_GEN) $^ $@ -+ -+$(srcdir)/fchmod-y--secontext_full.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) $^ $@ - -+$(srcdir)/fchmodat--secontext.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in -+ $(AM_V_GEN) $^ $@ -+ -+$(srcdir)/fchmodat--secontext_full.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in -+ $(AM_V_GEN) $^ $@ -+ - $(srcdir)/fchown.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in - $(AM_V_GEN) $^ $@ - -@@ -14075,6 +14583,12 @@ - $(srcdir)/fchownat.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in - $(AM_V_GEN) $^ $@ - -+$(srcdir)/fchownat--secontext.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in -+ $(AM_V_GEN) $^ $@ -+ -+$(srcdir)/fchownat--secontext_full.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in -+ $(AM_V_GEN) $^ $@ -+ - $(srcdir)/fcntl.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in - $(AM_V_GEN) $^ $@ - -@@ -14096,6 +14610,12 @@ - $(srcdir)/file_ioctl.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in - $(AM_V_GEN) $^ $@ - -+$(srcdir)/file_handle--secontext.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in -+ $(AM_V_GEN) $^ $@ -+ -+$(srcdir)/file_handle--secontext_full.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in -+ $(AM_V_GEN) $^ $@ -+ - $(srcdir)/filter_seccomp.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in - $(AM_V_GEN) $^ $@ - -@@ -14690,6 +15210,12 @@ - $(srcdir)/linkat.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in - $(AM_V_GEN) $^ $@ - -+$(srcdir)/linkat--secontext.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in -+ $(AM_V_GEN) $^ $@ -+ -+$(srcdir)/linkat--secontext_full.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in -+ $(AM_V_GEN) $^ $@ -+ - $(srcdir)/lookup_dcookie.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in - $(AM_V_GEN) $^ $@ - -@@ -15107,6 +15633,12 @@ - $(srcdir)/open.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in - $(AM_V_GEN) $^ $@ - -+$(srcdir)/open--secontext.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in -+ $(AM_V_GEN) $^ $@ -+ -+$(srcdir)/open--secontext_full.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in -+ $(AM_V_GEN) $^ $@ -+ - $(srcdir)/open_tree.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in - $(AM_V_GEN) $^ $@ - -@@ -15116,6 +15648,12 @@ - $(srcdir)/openat.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in - $(AM_V_GEN) $^ $@ - -+$(srcdir)/openat--secontext.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in -+ $(AM_V_GEN) $^ $@ -+ -+$(srcdir)/openat--secontext_full.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in -+ $(AM_V_GEN) $^ $@ -+ - $(srcdir)/openat2.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 21:08:35.498311681 +0200 -+++ strace-5.7/tests-mx32/Makefile.in 2021-08-24 21:08:43.292245714 +0200 -@@ -22,6 +22,8 @@ - # - # SPDX-License-Identifier: GPL-2.0-or-later - -+# Generated by ./tests/gen_secontext.sh from ./tests/gen_tests.in; do not edit. -+ - # scno.h make rules for strace. - # - # Copyright (c) 2017-2019 Dmitry V. Levin -@@ -102,8 +104,8 @@ - POST_UNINSTALL = : - build_triplet = @build@ - host_triplet = @host@ --check_PROGRAMS = $(am__EXEEXT_1) _newselect-P$(EXEEXT) answer$(EXEEXT) \ -- attach-f-p$(EXEEXT) attach-f-p-cmd$(EXEEXT) \ -+check_PROGRAMS = $(am__EXEEXT_1) $(am__EXEEXT_2) _newselect-P$(EXEEXT) \ -+ answer$(EXEEXT) attach-f-p$(EXEEXT) attach-f-p-cmd$(EXEEXT) \ - attach-p-cmd-cmd$(EXEEXT) attach-p-cmd-p$(EXEEXT) \ - block_reset_raise_run$(EXEEXT) block_reset_run$(EXEEXT) \ - bpf-obj_get_info_by_fd$(EXEEXT) \ -@@ -221,7 +223,7 @@ - xetpriority--pidns-translation$(EXEEXT) \ - xet_robust_list--pidns-translation$(EXEEXT) zeroargc$(EXEEXT) - @ENABLE_STACKTRACE_TRUE@@USE_DEMANGLE_TRUE@am__append_1 = strace-k-demangle.test --TESTS = $(GEN_TESTS) $(DECODER_TESTS) $(MISC_TESTS) $(am__EXEEXT_2) -+TESTS = $(GEN_TESTS) $(DECODER_TESTS) $(MISC_TESTS) $(am__EXEEXT_3) - subdir = tests-mx32 - ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 - am__aclocal_m4_deps = $(top_srcdir)/xlat/btrfs_compress_types.m4 \ -@@ -270,6 +272,7 @@ - $(top_srcdir)/m4/st_esyscmd_s.m4 $(top_srcdir)/m4/st_libdw.m4 \ - $(top_srcdir)/m4/st_libunwind.m4 \ - $(top_srcdir)/m4/st_save_restore_var.m4 \ -+ $(top_srcdir)/m4/st_selinux.m4 \ - $(top_srcdir)/m4/st_stacktrace.m4 \ - $(top_srcdir)/m4/st_warn_cflags.m4 \ - $(top_srcdir)/m4/warnings.m4 $(top_srcdir)/configure.ac -@@ -298,7 +301,8 @@ - epoll_create$(EXEEXT) epoll_create1$(EXEEXT) \ - epoll_ctl$(EXEEXT) epoll_pwait$(EXEEXT) epoll_wait$(EXEEXT) \ - erestartsys$(EXEEXT) eventfd$(EXEEXT) execve$(EXEEXT) \ -- execveat$(EXEEXT) faccessat$(EXEEXT) fadvise64$(EXEEXT) \ -+ execveat$(EXEEXT) faccessat$(EXEEXT) faccessat-P$(EXEEXT) \ -+ faccessat-y$(EXEEXT) faccessat-yy$(EXEEXT) fadvise64$(EXEEXT) \ - fadvise64_64$(EXEEXT) fallocate$(EXEEXT) \ - fanotify_init$(EXEEXT) fanotify_mark$(EXEEXT) \ - fanotify_mark-Xabbrev$(EXEEXT) fanotify_mark-Xraw$(EXEEXT) \ -@@ -543,6 +547,26 @@ - xattr-strings$(EXEEXT) xet_robust_list$(EXEEXT) \ - xet_thread_area_x86$(EXEEXT) xetitimer$(EXEEXT) \ - xetpgid$(EXEEXT) xetpriority$(EXEEXT) xettimeofday$(EXEEXT) -+am__EXEEXT_2 = access--secontext$(EXEEXT) \ -+ access--secontext_full$(EXEEXT) chmod--secontext$(EXEEXT) \ -+ chmod--secontext_full$(EXEEXT) execve--secontext$(EXEEXT) \ -+ execve--secontext_full$(EXEEXT) execveat--secontext$(EXEEXT) \ -+ execveat--secontext_full$(EXEEXT) \ -+ faccessat--secontext$(EXEEXT) \ -+ faccessat--secontext_full$(EXEEXT) \ -+ faccessat-y--secontext$(EXEEXT) \ -+ faccessat-y--secontext_full$(EXEEXT) \ -+ fanotify_mark--secontext$(EXEEXT) \ -+ fanotify_mark--secontext_full$(EXEEXT) \ -+ fchmod--secontext$(EXEEXT) fchmod--secontext_full$(EXEEXT) \ -+ fchmod-y--secontext$(EXEEXT) fchmod-y--secontext_full$(EXEEXT) \ -+ fchmodat--secontext$(EXEEXT) fchmodat--secontext_full$(EXEEXT) \ -+ fchownat--secontext$(EXEEXT) fchownat--secontext_full$(EXEEXT) \ -+ file_handle--secontext$(EXEEXT) \ -+ file_handle--secontext_full$(EXEEXT) \ -+ linkat--secontext$(EXEEXT) linkat--secontext_full$(EXEEXT) \ -+ open--secontext$(EXEEXT) open--secontext_full$(EXEEXT) \ -+ openat--secontext$(EXEEXT) openat--secontext_full$(EXEEXT) - ARFLAGS = cru - AM_V_AR = $(am__v_AR_@AM_V@) - am__v_AR_ = $(am__v_AR_@AM_DEFAULT_V@) -@@ -571,6 +595,7 @@ - libtests_a-printxval-Xabbrev.$(OBJEXT) \ - libtests_a-printxval-Xraw.$(OBJEXT) \ - libtests_a-printxval-Xverbose.$(OBJEXT) \ -+ libtests_a-secontext.$(OBJEXT) \ - libtests_a-signal2name.$(OBJEXT) \ - libtests_a-skip_unavailable.$(OBJEXT) \ - libtests_a-sprintrc.$(OBJEXT) libtests_a-status.$(OBJEXT) \ -@@ -600,6 +625,15 @@ - access_OBJECTS = access.$(OBJEXT) - access_LDADD = $(LDADD) - access_DEPENDENCIES = libtests.a -+access__secontext_SOURCES = access--secontext.c -+access__secontext_OBJECTS = access--secontext.$(OBJEXT) -+am__DEPENDENCIES_1 = -+@HAVE_MX32_SELINUX_RUNTIME_TRUE@am__DEPENDENCIES_2 = \ -+@HAVE_MX32_SELINUX_RUNTIME_TRUE@ $(am__DEPENDENCIES_1) -+access__secontext_DEPENDENCIES = $(LDADD) $(am__DEPENDENCIES_2) -+access__secontext_full_SOURCES = access--secontext_full.c -+access__secontext_full_OBJECTS = access--secontext_full.$(OBJEXT) -+access__secontext_full_DEPENDENCIES = $(LDADD) $(am__DEPENDENCIES_2) - acct_SOURCES = acct.c - acct_OBJECTS = acct.$(OBJEXT) - acct_LDADD = $(LDADD) -@@ -718,6 +752,12 @@ - chmod_OBJECTS = chmod.$(OBJEXT) - chmod_LDADD = $(LDADD) - chmod_DEPENDENCIES = libtests.a -+chmod__secontext_SOURCES = chmod--secontext.c -+chmod__secontext_OBJECTS = chmod--secontext.$(OBJEXT) -+chmod__secontext_DEPENDENCIES = $(LDADD) $(am__DEPENDENCIES_2) -+chmod__secontext_full_SOURCES = chmod--secontext_full.c -+chmod__secontext_full_OBJECTS = chmod--secontext_full.$(OBJEXT) -+chmod__secontext_full_DEPENDENCIES = $(LDADD) $(am__DEPENDENCIES_2) - chown_SOURCES = chown.c - chown_OBJECTS = chown.$(OBJEXT) - chown_LDADD = $(LDADD) -@@ -828,7 +868,6 @@ - creat_DEPENDENCIES = libtests.a - delay_SOURCES = delay.c - delay_OBJECTS = delay.$(OBJEXT) --am__DEPENDENCIES_1 = - delay_DEPENDENCIES = $(am__DEPENDENCIES_1) $(LDADD) - delete_module_SOURCES = delete_module.c - delete_module_OBJECTS = delete_module.$(OBJEXT) -@@ -930,6 +969,12 @@ - execve_OBJECTS = execve.$(OBJEXT) - execve_LDADD = $(LDADD) - execve_DEPENDENCIES = libtests.a -+execve__secontext_SOURCES = execve--secontext.c -+execve__secontext_OBJECTS = execve--secontext.$(OBJEXT) -+execve__secontext_DEPENDENCIES = $(LDADD) $(am__DEPENDENCIES_2) -+execve__secontext_full_SOURCES = execve--secontext_full.c -+execve__secontext_full_OBJECTS = execve--secontext_full.$(OBJEXT) -+execve__secontext_full_DEPENDENCIES = $(LDADD) $(am__DEPENDENCIES_2) - execve_v_SOURCES = execve-v.c - execve_v_OBJECTS = execve-v.$(OBJEXT) - execve_v_LDADD = $(LDADD) -@@ -938,6 +983,12 @@ - execveat_OBJECTS = execveat.$(OBJEXT) - execveat_LDADD = $(LDADD) - execveat_DEPENDENCIES = libtests.a -+execveat__secontext_SOURCES = execveat--secontext.c -+execveat__secontext_OBJECTS = execveat--secontext.$(OBJEXT) -+execveat__secontext_DEPENDENCIES = $(LDADD) $(am__DEPENDENCIES_2) -+execveat__secontext_full_SOURCES = execveat--secontext_full.c -+execveat__secontext_full_OBJECTS = execveat--secontext_full.$(OBJEXT) -+execveat__secontext_full_DEPENDENCIES = $(LDADD) $(am__DEPENDENCIES_2) - execveat_v_SOURCES = execveat-v.c - execveat_v_OBJECTS = execveat-v.$(OBJEXT) - execveat_v_LDADD = $(LDADD) -@@ -946,6 +997,34 @@ - faccessat_OBJECTS = faccessat.$(OBJEXT) - faccessat_LDADD = $(LDADD) - faccessat_DEPENDENCIES = libtests.a -+faccessat__secontext_SOURCES = faccessat--secontext.c -+faccessat__secontext_OBJECTS = faccessat--secontext.$(OBJEXT) -+faccessat__secontext_DEPENDENCIES = $(LDADD) $(am__DEPENDENCIES_2) -+faccessat__secontext_full_SOURCES = faccessat--secontext_full.c -+faccessat__secontext_full_OBJECTS = \ -+ faccessat--secontext_full.$(OBJEXT) -+faccessat__secontext_full_DEPENDENCIES = $(LDADD) \ -+ $(am__DEPENDENCIES_2) -+faccessat_P_SOURCES = faccessat-P.c -+faccessat_P_OBJECTS = faccessat-P.$(OBJEXT) -+faccessat_P_LDADD = $(LDADD) -+faccessat_P_DEPENDENCIES = libtests.a -+faccessat_y_SOURCES = faccessat-y.c -+faccessat_y_OBJECTS = faccessat-y.$(OBJEXT) -+faccessat_y_LDADD = $(LDADD) -+faccessat_y_DEPENDENCIES = libtests.a -+faccessat_y__secontext_SOURCES = faccessat-y--secontext.c -+faccessat_y__secontext_OBJECTS = faccessat-y--secontext.$(OBJEXT) -+faccessat_y__secontext_DEPENDENCIES = $(LDADD) $(am__DEPENDENCIES_2) -+faccessat_y__secontext_full_SOURCES = faccessat-y--secontext_full.c -+faccessat_y__secontext_full_OBJECTS = \ -+ faccessat-y--secontext_full.$(OBJEXT) -+faccessat_y__secontext_full_DEPENDENCIES = $(LDADD) \ -+ $(am__DEPENDENCIES_2) -+faccessat_yy_SOURCES = faccessat-yy.c -+faccessat_yy_OBJECTS = faccessat-yy.$(OBJEXT) -+faccessat_yy_LDADD = $(LDADD) -+faccessat_yy_DEPENDENCIES = libtests.a - fadvise64_SOURCES = fadvise64.c - fadvise64_OBJECTS = fadvise64.$(OBJEXT) - fadvise64_LDADD = $(LDADD) -@@ -966,6 +1045,15 @@ - fanotify_mark_OBJECTS = fanotify_mark.$(OBJEXT) - fanotify_mark_LDADD = $(LDADD) - fanotify_mark_DEPENDENCIES = libtests.a -+fanotify_mark__secontext_SOURCES = fanotify_mark--secontext.c -+fanotify_mark__secontext_OBJECTS = fanotify_mark--secontext.$(OBJEXT) -+fanotify_mark__secontext_DEPENDENCIES = $(LDADD) $(am__DEPENDENCIES_2) -+fanotify_mark__secontext_full_SOURCES = \ -+ fanotify_mark--secontext_full.c -+fanotify_mark__secontext_full_OBJECTS = \ -+ fanotify_mark--secontext_full.$(OBJEXT) -+fanotify_mark__secontext_full_DEPENDENCIES = $(LDADD) \ -+ $(am__DEPENDENCIES_2) - fanotify_mark_Xabbrev_SOURCES = fanotify_mark-Xabbrev.c - fanotify_mark_Xabbrev_OBJECTS = fanotify_mark-Xabbrev.$(OBJEXT) - fanotify_mark_Xabbrev_LDADD = $(LDADD) -@@ -986,14 +1074,32 @@ - fchmod_OBJECTS = fchmod.$(OBJEXT) - fchmod_LDADD = $(LDADD) - fchmod_DEPENDENCIES = libtests.a -+fchmod__secontext_SOURCES = fchmod--secontext.c -+fchmod__secontext_OBJECTS = fchmod--secontext.$(OBJEXT) -+fchmod__secontext_DEPENDENCIES = $(LDADD) $(am__DEPENDENCIES_2) -+fchmod__secontext_full_SOURCES = fchmod--secontext_full.c -+fchmod__secontext_full_OBJECTS = fchmod--secontext_full.$(OBJEXT) -+fchmod__secontext_full_DEPENDENCIES = $(LDADD) $(am__DEPENDENCIES_2) - fchmod_y_SOURCES = fchmod-y.c - fchmod_y_OBJECTS = fchmod-y.$(OBJEXT) - fchmod_y_LDADD = $(LDADD) - fchmod_y_DEPENDENCIES = libtests.a -+fchmod_y__secontext_SOURCES = fchmod-y--secontext.c -+fchmod_y__secontext_OBJECTS = fchmod-y--secontext.$(OBJEXT) -+fchmod_y__secontext_DEPENDENCIES = $(LDADD) $(am__DEPENDENCIES_2) -+fchmod_y__secontext_full_SOURCES = fchmod-y--secontext_full.c -+fchmod_y__secontext_full_OBJECTS = fchmod-y--secontext_full.$(OBJEXT) -+fchmod_y__secontext_full_DEPENDENCIES = $(LDADD) $(am__DEPENDENCIES_2) - fchmodat_SOURCES = fchmodat.c - fchmodat_OBJECTS = fchmodat.$(OBJEXT) - fchmodat_LDADD = $(LDADD) - fchmodat_DEPENDENCIES = libtests.a -+fchmodat__secontext_SOURCES = fchmodat--secontext.c -+fchmodat__secontext_OBJECTS = fchmodat--secontext.$(OBJEXT) -+fchmodat__secontext_DEPENDENCIES = $(LDADD) $(am__DEPENDENCIES_2) -+fchmodat__secontext_full_SOURCES = fchmodat--secontext_full.c -+fchmodat__secontext_full_OBJECTS = fchmodat--secontext_full.$(OBJEXT) -+fchmodat__secontext_full_DEPENDENCIES = $(LDADD) $(am__DEPENDENCIES_2) - fchown_SOURCES = fchown.c - fchown_OBJECTS = fchown.$(OBJEXT) - fchown_LDADD = $(LDADD) -@@ -1006,6 +1112,12 @@ - fchownat_OBJECTS = fchownat.$(OBJEXT) - fchownat_LDADD = $(LDADD) - fchownat_DEPENDENCIES = libtests.a -+fchownat__secontext_SOURCES = fchownat--secontext.c -+fchownat__secontext_OBJECTS = fchownat--secontext.$(OBJEXT) -+fchownat__secontext_DEPENDENCIES = $(LDADD) $(am__DEPENDENCIES_2) -+fchownat__secontext_full_SOURCES = fchownat--secontext_full.c -+fchownat__secontext_full_OBJECTS = fchownat--secontext_full.$(OBJEXT) -+fchownat__secontext_full_DEPENDENCIES = $(LDADD) $(am__DEPENDENCIES_2) - fcntl_SOURCES = fcntl.c - fcntl_OBJECTS = fcntl.$(OBJEXT) - fcntl_LDADD = $(LDADD) -@@ -1035,6 +1147,14 @@ - file_handle_OBJECTS = file_handle.$(OBJEXT) - file_handle_LDADD = $(LDADD) - file_handle_DEPENDENCIES = libtests.a -+file_handle__secontext_SOURCES = file_handle--secontext.c -+file_handle__secontext_OBJECTS = file_handle--secontext.$(OBJEXT) -+file_handle__secontext_DEPENDENCIES = $(LDADD) $(am__DEPENDENCIES_2) -+file_handle__secontext_full_SOURCES = file_handle--secontext_full.c -+file_handle__secontext_full_OBJECTS = \ -+ file_handle--secontext_full.$(OBJEXT) -+file_handle__secontext_full_DEPENDENCIES = $(LDADD) \ -+ $(am__DEPENDENCIES_2) - file_ioctl_SOURCES = file_ioctl.c - file_ioctl_OBJECTS = file_ioctl.$(OBJEXT) - file_ioctl_LDADD = $(LDADD) -@@ -1886,6 +2006,12 @@ - linkat_OBJECTS = linkat.$(OBJEXT) - linkat_LDADD = $(LDADD) - linkat_DEPENDENCIES = libtests.a -+linkat__secontext_SOURCES = linkat--secontext.c -+linkat__secontext_OBJECTS = linkat--secontext.$(OBJEXT) -+linkat__secontext_DEPENDENCIES = $(LDADD) $(am__DEPENDENCIES_2) -+linkat__secontext_full_SOURCES = linkat--secontext_full.c -+linkat__secontext_full_OBJECTS = linkat--secontext_full.$(OBJEXT) -+linkat__secontext_full_DEPENDENCIES = $(LDADD) $(am__DEPENDENCIES_2) - list_sigaction_signum_SOURCES = list_sigaction_signum.c - list_sigaction_signum_OBJECTS = list_sigaction_signum.$(OBJEXT) - list_sigaction_signum_LDADD = $(LDADD) -@@ -2530,6 +2656,12 @@ - open_OBJECTS = open.$(OBJEXT) - open_LDADD = $(LDADD) - open_DEPENDENCIES = libtests.a -+open__secontext_SOURCES = open--secontext.c -+open__secontext_OBJECTS = open--secontext.$(OBJEXT) -+open__secontext_DEPENDENCIES = $(LDADD) $(am__DEPENDENCIES_2) -+open__secontext_full_SOURCES = open--secontext_full.c -+open__secontext_full_OBJECTS = open--secontext_full.$(OBJEXT) -+open__secontext_full_DEPENDENCIES = $(LDADD) $(am__DEPENDENCIES_2) - open_tree_SOURCES = open_tree.c - open_tree_OBJECTS = open_tree.$(OBJEXT) - open_tree_LDADD = $(LDADD) -@@ -2542,6 +2674,12 @@ - openat_OBJECTS = openat.$(OBJEXT) - openat_LDADD = $(LDADD) - openat_DEPENDENCIES = libtests.a -+openat__secontext_SOURCES = openat--secontext.c -+openat__secontext_OBJECTS = openat--secontext.$(OBJEXT) -+openat__secontext_DEPENDENCIES = $(LDADD) $(am__DEPENDENCIES_2) -+openat__secontext_full_SOURCES = openat--secontext_full.c -+openat__secontext_full_OBJECTS = openat--secontext_full.$(OBJEXT) -+openat__secontext_full_DEPENDENCIES = $(LDADD) $(am__DEPENDENCIES_2) - openat2_SOURCES = openat2.c - openat2_OBJECTS = openat2.$(OBJEXT) - openat2_LDADD = $(LDADD) -@@ -4487,7 +4625,8 @@ - am__v_CCLD_0 = @echo " CCLD " $@; - am__v_CCLD_1 = - SOURCES = $(libtests_a_SOURCES) _newselect.c _newselect-P.c accept.c \ -- accept4.c access.c acct.c add_key.c adjtimex.c aio.c \ -+ accept4.c access.c access--secontext.c \ -+ access--secontext_full.c acct.c add_key.c adjtimex.c aio.c \ - aio_pgetevents.c alarm.c answer.c attach-f-p.c \ - attach-f-p-cmd.c attach-p-cmd-cmd.c attach-p-cmd-p.c \ - block_reset_raise_run.c block_reset_run.c bpf.c \ -@@ -4495,7 +4634,8 @@ - bpf-obj_get_info_by_fd-prog-v.c bpf-obj_get_info_by_fd-v.c \ - bpf-success.c bpf-success-long-y.c bpf-success-v.c bpf-v.c \ - brk.c btrfs.c caps.c caps-abbrev.c check_sigblock.c \ -- check_sigign.c chmod.c chown.c chown32.c chroot.c \ -+ check_sigign.c chmod.c chmod--secontext.c \ -+ chmod--secontext_full.c chown.c chown32.c chroot.c \ - clock_adjtime.c clock_nanosleep.c clock_xettime.c \ - clone-flags.c clone3.c clone3-Xabbrev.c clone3-Xraw.c \ - clone3-Xverbose.c clone3-success.c clone3-success-Xabbrev.c \ -@@ -4509,25 +4649,35 @@ - dup-yy.c dup2.c dup2-P.c dup2-y.c dup2-yy.c dup3.c dup3-P.c \ - dup3-y.c dup3-yy.c epoll_create.c epoll_create1.c epoll_ctl.c \ - epoll_pwait.c epoll_wait.c erestartsys.c eventfd.c execve.c \ -- 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 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 \ -- fsconfig-P.c fsmount.c fsopen.c fspick.c fspick-P.c fstat.c \ -- fstat-Xabbrev.c fstat-Xraw.c fstat-Xverbose.c fstat64.c \ -- fstat64-Xabbrev.c fstat64-Xraw.c fstat64-Xverbose.c \ -- fstatat64.c fstatfs.c fstatfs64.c fsync.c fsync-y.c \ -- ftruncate.c ftruncate64.c futex.c futimesat.c get_mempolicy.c \ -- get_process_reaper.c getcpu.c getcwd.c getdents.c getdents-v.c \ -- getdents64.c getdents64-v.c getegid.c getegid32.c geteuid.c \ -- geteuid32.c getgid.c getgid32.c getgroups.c getgroups32.c \ -- getpeername.c getpgrp.c getpgrp--pidns-translation.c getpid.c \ -+ execve--secontext.c execve--secontext_full.c execve-v.c \ -+ execveat.c execveat--secontext.c execveat--secontext_full.c \ -+ execveat-v.c faccessat.c faccessat--secontext.c \ -+ faccessat--secontext_full.c faccessat-P.c faccessat-y.c \ -+ faccessat-y--secontext.c faccessat-y--secontext_full.c \ -+ faccessat-yy.c fadvise64.c fadvise64_64.c fallocate.c \ -+ fanotify_init.c fanotify_mark.c fanotify_mark--secontext.c \ -+ fanotify_mark--secontext_full.c fanotify_mark-Xabbrev.c \ -+ fanotify_mark-Xraw.c fanotify_mark-Xverbose.c fchdir.c \ -+ fchmod.c fchmod--secontext.c fchmod--secontext_full.c \ -+ fchmod-y.c fchmod-y--secontext.c fchmod-y--secontext_full.c \ -+ fchmodat.c fchmodat--secontext.c fchmodat--secontext_full.c \ -+ fchown.c fchown32.c fchownat.c fchownat--secontext.c \ -+ fchownat--secontext_full.c fcntl.c fcntl--pidns-translation.c \ -+ fcntl64.c fcntl64--pidns-translation.c fdatasync.c fflush.c \ -+ file_handle.c file_handle--secontext.c \ -+ file_handle--secontext_full.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 fsconfig-P.c \ -+ fsmount.c fsopen.c fspick.c fspick-P.c fstat.c fstat-Xabbrev.c \ -+ fstat-Xraw.c fstat-Xverbose.c fstat64.c fstat64-Xabbrev.c \ -+ fstat64-Xraw.c fstat64-Xverbose.c fstatat64.c fstatfs.c \ -+ fstatfs64.c fsync.c fsync-y.c ftruncate.c ftruncate64.c \ -+ futex.c futimesat.c get_mempolicy.c get_process_reaper.c \ -+ getcpu.c getcwd.c getdents.c getdents-v.c getdents64.c \ -+ getdents64-v.c getegid.c getegid32.c geteuid.c geteuid32.c \ -+ getgid.c getgid32.c getgroups.c getgroups32.c getpeername.c \ -+ getpgrp.c getpgrp--pidns-translation.c getpid.c \ - getpid--pidns-translation.c getppid.c getrandom.c getresgid.c \ - getresgid32.c getresuid.c getresuid32.c getrlimit.c \ - getrusage.c getsid.c getsid--pidns-translation.c getsockname.c \ -@@ -4578,7 +4728,8 @@ - kexec_file_load.c kexec_load.c keyctl.c keyctl-Xabbrev.c \ - keyctl-Xraw.c keyctl-Xverbose.c kill.c \ - kill--pidns-translation.c kill_child.c ksysent.c lchown.c \ -- lchown32.c link.c linkat.c list_sigaction_signum.c llseek.c \ -+ lchown32.c link.c linkat.c linkat--secontext.c \ -+ linkat--secontext_full.c list_sigaction_signum.c llseek.c \ - localtime.c lookup_dcookie.c looping_threads.c lseek.c lstat.c \ - lstat64.c madvise.c maybe_switch_current_tcp.c \ - maybe_switch_current_tcp--quiet-thread-execve.c mbind.c \ -@@ -4629,23 +4780,25 @@ - old_mmap-Xabbrev.c old_mmap-Xraw.c old_mmap-Xverbose.c \ - old_mmap-v-none.c oldfstat.c oldlstat.c oldselect.c \ - oldselect-P.c oldselect-efault.c oldselect-efault-P.c \ -- oldstat.c open.c open_tree.c open_tree-P.c openat.c openat2.c \ -- openat2-Xabbrev.c openat2-Xraw.c openat2-Xverbose.c \ -- openat2-v.c openat2-v-y.c openat2-v-y-Xabbrev.c \ -- openat2-v-y-Xraw.c openat2-v-y-Xverbose.c openat2-y.c \ -- orphaned_process_group.c osf_utimes.c pause.c pc.c \ -- perf_event_open.c perf_event_open_nonverbose.c \ -- perf_event_open_unabbrev.c personality.c personality-Xabbrev.c \ -- personality-Xraw.c personality-Xverbose.c pidfd_getfd.c \ -- pidfd_getfd-y.c pidfd_getfd-yy.c pidfd_open.c \ -- pidfd_open--decode-fd-path.c pidfd_open--decode-fd-pidfd.c \ -- pidfd_open--decode-fd-socket.c pidfd_open--pidns-translation.c \ -- pidfd_open-P.c pidfd_open-y.c pidfd_open-yy.c \ -- pidfd_send_signal.c pidfd_send_signal--pidns-translation.c \ -- pidns-cache.c pipe.c pipe2.c pkey_alloc.c pkey_free.c \ -- pkey_mprotect.c poll.c poll-P.c ppoll.c ppoll-P.c ppoll-v.c \ -- prctl-arg2-intptr.c prctl-dumpable.c prctl-name.c \ -- prctl-no-args.c prctl-pdeathsig.c prctl-seccomp-filter-v.c \ -+ oldstat.c open.c open--secontext.c open--secontext_full.c \ -+ open_tree.c open_tree-P.c openat.c openat--secontext.c \ -+ openat--secontext_full.c openat2.c openat2-Xabbrev.c \ -+ openat2-Xraw.c openat2-Xverbose.c openat2-v.c openat2-v-y.c \ -+ openat2-v-y-Xabbrev.c openat2-v-y-Xraw.c \ -+ openat2-v-y-Xverbose.c openat2-y.c orphaned_process_group.c \ -+ osf_utimes.c pause.c pc.c perf_event_open.c \ -+ perf_event_open_nonverbose.c perf_event_open_unabbrev.c \ -+ personality.c personality-Xabbrev.c personality-Xraw.c \ -+ personality-Xverbose.c pidfd_getfd.c pidfd_getfd-y.c \ -+ pidfd_getfd-yy.c pidfd_open.c pidfd_open--decode-fd-path.c \ -+ pidfd_open--decode-fd-pidfd.c pidfd_open--decode-fd-socket.c \ -+ pidfd_open--pidns-translation.c pidfd_open-P.c pidfd_open-y.c \ -+ pidfd_open-yy.c pidfd_send_signal.c \ -+ pidfd_send_signal--pidns-translation.c pidns-cache.c pipe.c \ -+ pipe2.c pkey_alloc.c pkey_free.c pkey_mprotect.c poll.c \ -+ poll-P.c ppoll.c ppoll-P.c ppoll-v.c prctl-arg2-intptr.c \ -+ prctl-dumpable.c prctl-name.c prctl-no-args.c \ -+ prctl-pdeathsig.c prctl-seccomp-filter-v.c \ - prctl-seccomp-strict.c prctl-securebits.c prctl-spec-inject.c \ - prctl-tid_address.c prctl-tsc.c pread64-pwrite64.c preadv.c \ - preadv-pwritev.c preadv2-pwritev2.c print_maxfd.c \ -@@ -4735,7 +4888,8 @@ - xetpriority.c xetpriority--pidns-translation.c xettimeofday.c \ - zeroargc.c - DIST_SOURCES = $(libtests_a_SOURCES) _newselect.c _newselect-P.c \ -- accept.c accept4.c access.c acct.c add_key.c adjtimex.c aio.c \ -+ accept.c accept4.c access.c access--secontext.c \ -+ access--secontext_full.c acct.c add_key.c adjtimex.c aio.c \ - aio_pgetevents.c alarm.c answer.c attach-f-p.c \ - attach-f-p-cmd.c attach-p-cmd-cmd.c attach-p-cmd-p.c \ - block_reset_raise_run.c block_reset_run.c bpf.c \ -@@ -4743,7 +4897,8 @@ - bpf-obj_get_info_by_fd-prog-v.c bpf-obj_get_info_by_fd-v.c \ - bpf-success.c bpf-success-long-y.c bpf-success-v.c bpf-v.c \ - brk.c btrfs.c caps.c caps-abbrev.c check_sigblock.c \ -- check_sigign.c chmod.c chown.c chown32.c chroot.c \ -+ check_sigign.c chmod.c chmod--secontext.c \ -+ chmod--secontext_full.c chown.c chown32.c chroot.c \ - clock_adjtime.c clock_nanosleep.c clock_xettime.c \ - clone-flags.c clone3.c clone3-Xabbrev.c clone3-Xraw.c \ - clone3-Xverbose.c clone3-success.c clone3-success-Xabbrev.c \ -@@ -4757,25 +4912,35 @@ - dup-yy.c dup2.c dup2-P.c dup2-y.c dup2-yy.c dup3.c dup3-P.c \ - dup3-y.c dup3-yy.c epoll_create.c epoll_create1.c epoll_ctl.c \ - epoll_pwait.c epoll_wait.c erestartsys.c eventfd.c execve.c \ -- 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 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 \ -- fsconfig-P.c fsmount.c fsopen.c fspick.c fspick-P.c fstat.c \ -- fstat-Xabbrev.c fstat-Xraw.c fstat-Xverbose.c fstat64.c \ -- fstat64-Xabbrev.c fstat64-Xraw.c fstat64-Xverbose.c \ -- fstatat64.c fstatfs.c fstatfs64.c fsync.c fsync-y.c \ -- ftruncate.c ftruncate64.c futex.c futimesat.c get_mempolicy.c \ -- get_process_reaper.c getcpu.c getcwd.c getdents.c getdents-v.c \ -- getdents64.c getdents64-v.c getegid.c getegid32.c geteuid.c \ -- geteuid32.c getgid.c getgid32.c getgroups.c getgroups32.c \ -- getpeername.c getpgrp.c getpgrp--pidns-translation.c getpid.c \ -+ execve--secontext.c execve--secontext_full.c execve-v.c \ -+ execveat.c execveat--secontext.c execveat--secontext_full.c \ -+ execveat-v.c faccessat.c faccessat--secontext.c \ -+ faccessat--secontext_full.c faccessat-P.c faccessat-y.c \ -+ faccessat-y--secontext.c faccessat-y--secontext_full.c \ -+ faccessat-yy.c fadvise64.c fadvise64_64.c fallocate.c \ -+ fanotify_init.c fanotify_mark.c fanotify_mark--secontext.c \ -+ fanotify_mark--secontext_full.c fanotify_mark-Xabbrev.c \ -+ fanotify_mark-Xraw.c fanotify_mark-Xverbose.c fchdir.c \ -+ fchmod.c fchmod--secontext.c fchmod--secontext_full.c \ -+ fchmod-y.c fchmod-y--secontext.c fchmod-y--secontext_full.c \ -+ fchmodat.c fchmodat--secontext.c fchmodat--secontext_full.c \ -+ fchown.c fchown32.c fchownat.c fchownat--secontext.c \ -+ fchownat--secontext_full.c fcntl.c fcntl--pidns-translation.c \ -+ fcntl64.c fcntl64--pidns-translation.c fdatasync.c fflush.c \ -+ file_handle.c file_handle--secontext.c \ -+ file_handle--secontext_full.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 fsconfig-P.c \ -+ fsmount.c fsopen.c fspick.c fspick-P.c fstat.c fstat-Xabbrev.c \ -+ fstat-Xraw.c fstat-Xverbose.c fstat64.c fstat64-Xabbrev.c \ -+ fstat64-Xraw.c fstat64-Xverbose.c fstatat64.c fstatfs.c \ -+ fstatfs64.c fsync.c fsync-y.c ftruncate.c ftruncate64.c \ -+ futex.c futimesat.c get_mempolicy.c get_process_reaper.c \ -+ getcpu.c getcwd.c getdents.c getdents-v.c getdents64.c \ -+ getdents64-v.c getegid.c getegid32.c geteuid.c geteuid32.c \ -+ getgid.c getgid32.c getgroups.c getgroups32.c getpeername.c \ -+ getpgrp.c getpgrp--pidns-translation.c getpid.c \ - getpid--pidns-translation.c getppid.c getrandom.c getresgid.c \ - getresgid32.c getresuid.c getresuid32.c getrlimit.c \ - getrusage.c getsid.c getsid--pidns-translation.c getsockname.c \ -@@ -4826,7 +4991,8 @@ - kexec_file_load.c kexec_load.c keyctl.c keyctl-Xabbrev.c \ - keyctl-Xraw.c keyctl-Xverbose.c kill.c \ - kill--pidns-translation.c kill_child.c ksysent.c lchown.c \ -- lchown32.c link.c linkat.c list_sigaction_signum.c llseek.c \ -+ lchown32.c link.c linkat.c linkat--secontext.c \ -+ linkat--secontext_full.c list_sigaction_signum.c llseek.c \ - localtime.c lookup_dcookie.c looping_threads.c lseek.c lstat.c \ - lstat64.c madvise.c maybe_switch_current_tcp.c \ - maybe_switch_current_tcp--quiet-thread-execve.c mbind.c \ -@@ -4877,23 +5043,25 @@ - old_mmap-Xabbrev.c old_mmap-Xraw.c old_mmap-Xverbose.c \ - old_mmap-v-none.c oldfstat.c oldlstat.c oldselect.c \ - oldselect-P.c oldselect-efault.c oldselect-efault-P.c \ -- oldstat.c open.c open_tree.c open_tree-P.c openat.c openat2.c \ -- openat2-Xabbrev.c openat2-Xraw.c openat2-Xverbose.c \ -- openat2-v.c openat2-v-y.c openat2-v-y-Xabbrev.c \ -- openat2-v-y-Xraw.c openat2-v-y-Xverbose.c openat2-y.c \ -- orphaned_process_group.c osf_utimes.c pause.c pc.c \ -- perf_event_open.c perf_event_open_nonverbose.c \ -- perf_event_open_unabbrev.c personality.c personality-Xabbrev.c \ -- personality-Xraw.c personality-Xverbose.c pidfd_getfd.c \ -- pidfd_getfd-y.c pidfd_getfd-yy.c pidfd_open.c \ -- pidfd_open--decode-fd-path.c pidfd_open--decode-fd-pidfd.c \ -- pidfd_open--decode-fd-socket.c pidfd_open--pidns-translation.c \ -- pidfd_open-P.c pidfd_open-y.c pidfd_open-yy.c \ -- pidfd_send_signal.c pidfd_send_signal--pidns-translation.c \ -- pidns-cache.c pipe.c pipe2.c pkey_alloc.c pkey_free.c \ -- pkey_mprotect.c poll.c poll-P.c ppoll.c ppoll-P.c ppoll-v.c \ -- prctl-arg2-intptr.c prctl-dumpable.c prctl-name.c \ -- prctl-no-args.c prctl-pdeathsig.c prctl-seccomp-filter-v.c \ -+ oldstat.c open.c open--secontext.c open--secontext_full.c \ -+ open_tree.c open_tree-P.c openat.c openat--secontext.c \ -+ openat--secontext_full.c openat2.c openat2-Xabbrev.c \ -+ openat2-Xraw.c openat2-Xverbose.c openat2-v.c openat2-v-y.c \ -+ openat2-v-y-Xabbrev.c openat2-v-y-Xraw.c \ -+ openat2-v-y-Xverbose.c openat2-y.c orphaned_process_group.c \ -+ osf_utimes.c pause.c pc.c perf_event_open.c \ -+ perf_event_open_nonverbose.c perf_event_open_unabbrev.c \ -+ personality.c personality-Xabbrev.c personality-Xraw.c \ -+ personality-Xverbose.c pidfd_getfd.c pidfd_getfd-y.c \ -+ pidfd_getfd-yy.c pidfd_open.c pidfd_open--decode-fd-path.c \ -+ pidfd_open--decode-fd-pidfd.c pidfd_open--decode-fd-socket.c \ -+ pidfd_open--pidns-translation.c pidfd_open-P.c pidfd_open-y.c \ -+ pidfd_open-yy.c pidfd_send_signal.c \ -+ pidfd_send_signal--pidns-translation.c pidns-cache.c pipe.c \ -+ pipe2.c pkey_alloc.c pkey_free.c pkey_mprotect.c poll.c \ -+ poll-P.c ppoll.c ppoll-P.c ppoll-v.c prctl-arg2-intptr.c \ -+ prctl-dumpable.c prctl-name.c prctl-no-args.c \ -+ prctl-pdeathsig.c prctl-seccomp-filter-v.c \ - prctl-seccomp-strict.c prctl-securebits.c prctl-spec-inject.c \ - prctl-tid_address.c prctl-tsc.c pread64-pwrite64.c preadv.c \ - preadv-pwritev.c preadv2-pwritev2.c print_maxfd.c \ -@@ -5194,7 +5362,7 @@ - bases=`echo $$bases` - RECHECK_LOGS = $(TEST_LOGS) - AM_RECURSIVE_TARGETS = check recheck --@ENABLE_STACKTRACE_TRUE@am__EXEEXT_2 = strace-k.test strace-k-p.test \ -+@ENABLE_STACKTRACE_TRUE@am__EXEEXT_3 = strace-k.test strace-k-p.test \ - @ENABLE_STACKTRACE_TRUE@ $(am__append_1) - TEST_SUITE_LOG = test-suite.log - TEST_EXTENSIONS = @EXEEXT@ .test -@@ -5216,7 +5384,8 @@ - esac - am__DIST_COMMON = $(srcdir)/../scno.am $(srcdir)/Makefile.in \ - $(srcdir)/gen_tests.am $(srcdir)/pure_executables.am \ -- $(top_srcdir)/depcomp $(top_srcdir)/test-driver COPYING -+ $(srcdir)/secontext.am $(top_srcdir)/depcomp \ -+ $(top_srcdir)/test-driver COPYING - DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) - ACLOCAL = @ACLOCAL@ - AMTAR = @AMTAR@ -@@ -5357,6 +5526,9 @@ - libiberty_CPPFLAGS = @libiberty_CPPFLAGS@ - libiberty_LDFLAGS = @libiberty_LDFLAGS@ - libiberty_LIBS = @libiberty_LIBS@ -+libselinux_CPPFLAGS = @libselinux_CPPFLAGS@ -+libselinux_LDFLAGS = @libselinux_LDFLAGS@ -+libselinux_LIBS = @libselinux_LIBS@ - libunwind_CPPFLAGS = @libunwind_CPPFLAGS@ - libunwind_LDFLAGS = @libunwind_LDFLAGS@ - libunwind_LIBS = @libunwind_LIBS@ -@@ -5400,6 +5572,8 @@ - -DTESTS_SIZEOF_LONG=$(SIZEOF_LONG) - - AM_LDFLAGS = $(ARCH_MFLAGS) -+@HAVE_MX32_SELINUX_RUNTIME_FALSE@libselinux_LDADD = -+@HAVE_MX32_SELINUX_RUNTIME_TRUE@libselinux_LDADD = $(libselinux_LIBS) - libtests_a_SOURCES = \ - create_nl_socket.c \ - create_tmpfile.c \ -@@ -5426,6 +5600,8 @@ - printxval-Xabbrev.c \ - printxval-Xraw.c \ - printxval-Xverbose.c \ -+ secontext.c \ -+ secontext.h \ - signal2name.c \ - skip_unavailable.c \ - sprintrc.c \ -@@ -5505,6 +5681,9 @@ - execve \ - execveat \ - faccessat \ -+ faccessat-P \ -+ faccessat-y \ -+ faccessat-yy \ - fadvise64 \ - fadvise64_64 \ - fallocate \ -@@ -6077,6 +6256,69 @@ - xettimeofday \ - # - -+secontext_EXECUTABLES = \ -+ access--secontext \ -+ access--secontext_full \ -+ chmod--secontext \ -+ chmod--secontext_full \ -+ execve--secontext \ -+ execve--secontext_full \ -+ execveat--secontext \ -+ execveat--secontext_full \ -+ faccessat--secontext \ -+ faccessat--secontext_full \ -+ faccessat-y--secontext \ -+ faccessat-y--secontext_full \ -+ fanotify_mark--secontext \ -+ fanotify_mark--secontext_full \ -+ fchmod--secontext \ -+ fchmod--secontext_full \ -+ fchmod-y--secontext \ -+ fchmod-y--secontext_full \ -+ fchmodat--secontext \ -+ fchmodat--secontext_full \ -+ fchownat--secontext \ -+ fchownat--secontext_full \ -+ file_handle--secontext \ -+ file_handle--secontext_full \ -+ linkat--secontext \ -+ linkat--secontext_full \ -+ open--secontext \ -+ open--secontext_full \ -+ openat--secontext \ -+ openat--secontext_full \ -+ # -+ -+access__secontext_LDADD = $(LDADD) $(libselinux_LDADD) -+access__secontext_full_LDADD = $(LDADD) $(libselinux_LDADD) -+chmod__secontext_LDADD = $(LDADD) $(libselinux_LDADD) -+chmod__secontext_full_LDADD = $(LDADD) $(libselinux_LDADD) -+execve__secontext_LDADD = $(LDADD) $(libselinux_LDADD) -+execve__secontext_full_LDADD = $(LDADD) $(libselinux_LDADD) -+execveat__secontext_LDADD = $(LDADD) $(libselinux_LDADD) -+execveat__secontext_full_LDADD = $(LDADD) $(libselinux_LDADD) -+faccessat__secontext_LDADD = $(LDADD) $(libselinux_LDADD) -+faccessat__secontext_full_LDADD = $(LDADD) $(libselinux_LDADD) -+faccessat_y__secontext_LDADD = $(LDADD) $(libselinux_LDADD) -+faccessat_y__secontext_full_LDADD = $(LDADD) $(libselinux_LDADD) -+fanotify_mark__secontext_LDADD = $(LDADD) $(libselinux_LDADD) -+fanotify_mark__secontext_full_LDADD = $(LDADD) $(libselinux_LDADD) -+fchmod__secontext_LDADD = $(LDADD) $(libselinux_LDADD) -+fchmod__secontext_full_LDADD = $(LDADD) $(libselinux_LDADD) -+fchmod_y__secontext_LDADD = $(LDADD) $(libselinux_LDADD) -+fchmod_y__secontext_full_LDADD = $(LDADD) $(libselinux_LDADD) -+fchmodat__secontext_LDADD = $(LDADD) $(libselinux_LDADD) -+fchmodat__secontext_full_LDADD = $(LDADD) $(libselinux_LDADD) -+fchownat__secontext_LDADD = $(LDADD) $(libselinux_LDADD) -+fchownat__secontext_full_LDADD = $(LDADD) $(libselinux_LDADD) -+file_handle__secontext_LDADD = $(LDADD) $(libselinux_LDADD) -+file_handle__secontext_full_LDADD = $(LDADD) $(libselinux_LDADD) -+linkat__secontext_LDADD = $(LDADD) $(libselinux_LDADD) -+linkat__secontext_full_LDADD = $(LDADD) $(libselinux_LDADD) -+open__secontext_LDADD = $(LDADD) $(libselinux_LDADD) -+open__secontext_full_LDADD = $(LDADD) $(libselinux_LDADD) -+openat__secontext_LDADD = $(LDADD) $(libselinux_LDADD) -+openat__secontext_full_LDADD = $(LDADD) $(libselinux_LDADD) - attach_f_p_LDADD = -lpthread $(LDADD) - count_f_LDADD = -lpthread $(LDADD) - delay_LDADD = $(clock_LIBS) $(LDADD) -@@ -6129,14 +6371,15 @@ - - # Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in; do not edit. - GEN_TESTS = _newselect.gen.test _newselect-P.gen.test accept.gen.test \ -- accept4.gen.test access.gen.test acct.gen.test \ -- add_key.gen.test adjtimex.gen.test aio.gen.test \ -- aio_pgetevents.gen.test alarm.gen.test bpf.gen.test \ -- bpf-obj_get_info_by_fd.gen.test \ -+ accept4.gen.test access.gen.test access--secontext.gen.test \ -+ access--secontext_full.gen.test acct.gen.test add_key.gen.test \ -+ adjtimex.gen.test aio.gen.test aio_pgetevents.gen.test \ -+ alarm.gen.test bpf.gen.test bpf-obj_get_info_by_fd.gen.test \ - bpf-obj_get_info_by_fd-prog.gen.test \ - bpf-obj_get_info_by_fd-prog-v.gen.test \ - bpf-obj_get_info_by_fd-v.gen.test bpf-v.gen.test \ -- btrfs.gen.test chmod.gen.test chown.gen.test chown32.gen.test \ -+ btrfs.gen.test chmod.gen.test chmod--secontext.gen.test \ -+ chmod--secontext_full.gen.test chown.gen.test chown32.gen.test \ - chroot.gen.test clock.gen.test clock_adjtime.gen.test \ - clock_nanosleep.gen.test clock_xettime.gen.test \ - clone3.gen.test clone3-Xabbrev.gen.test clone3-Xraw.gen.test \ -@@ -6155,21 +6398,36 @@ - dup3-P.gen.test dup3-y.gen.test dup3-yy.gen.test \ - epoll_create.gen.test epoll_create1.gen.test \ - epoll_ctl.gen.test epoll_pwait.gen.test epoll_wait.gen.test \ -- erestartsys.gen.test execveat.gen.test execveat-v.gen.test \ -- faccessat.gen.test fadvise64_64.gen.test fallocate.gen.test \ -+ erestartsys.gen.test execve--secontext.gen.test \ -+ execve--secontext_full.gen.test execveat.gen.test \ -+ execveat--secontext.gen.test execveat--secontext_full.gen.test \ -+ execveat-v.gen.test faccessat--secontext.gen.test \ -+ faccessat--secontext_full.gen.test faccessat-P.gen.test \ -+ faccessat-y.gen.test faccessat-y--secontext.gen.test \ -+ faccessat-y--secontext_full.gen.test faccessat-yy.gen.test \ -+ fadvise64_64.gen.test fallocate.gen.test \ - fanotify_init.gen.test fanotify_mark.gen.test \ -+ fanotify_mark--secontext.gen.test \ -+ fanotify_mark--secontext_full.gen.test \ - fanotify_mark-Xabbrev.gen.test fanotify_mark-Xraw.gen.test \ - fanotify_mark-Xverbose.gen.test fchdir.gen.test \ -- fchmod.gen.test fchmod-y.gen.test fchmodat.gen.test \ -- fchown.gen.test fchown32.gen.test fchownat.gen.test \ -+ fchmod.gen.test fchmod--secontext.gen.test \ -+ fchmod--secontext_full.gen.test fchmod-y.gen.test \ -+ fchmod-y--secontext.gen.test fchmod-y--secontext_full.gen.test \ -+ fchmodat.gen.test fchmodat--secontext.gen.test \ -+ fchmodat--secontext_full.gen.test fchown.gen.test \ -+ fchown32.gen.test fchownat.gen.test \ -+ fchownat--secontext.gen.test fchownat--secontext_full.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 \ -- fsopen.gen.test fspick.gen.test fspick-P.gen.test \ -- fstat.gen.test fstat-Xabbrev.gen.test fstat-Xraw.gen.test \ -+ file_handle--secontext.gen.test \ -+ file_handle--secontext_full.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 fsopen.gen.test \ -+ fspick.gen.test fspick-P.gen.test fstat.gen.test \ -+ fstat-Xabbrev.gen.test fstat-Xraw.gen.test \ - fstat-Xverbose.gen.test fstat64.gen.test \ - fstat64-Xabbrev.gen.test fstat64-Xraw.gen.test \ - fstat64-Xverbose.gen.test fstatat64.gen.test fstatfs.gen.test \ -@@ -6259,8 +6517,9 @@ - keyctl-Xverbose.gen.test kill.gen.test \ - kill--pidns-translation.gen.test ksysent.gen.test \ - lchown.gen.test lchown32.gen.test link.gen.test \ -- linkat.gen.test lookup_dcookie.gen.test lstat.gen.test \ -- lstat64.gen.test madvise.gen.test \ -+ linkat.gen.test linkat--secontext.gen.test \ -+ linkat--secontext_full.gen.test lookup_dcookie.gen.test \ -+ lstat.gen.test lstat64.gen.test madvise.gen.test \ - maybe_switch_current_tcp.gen.test \ - maybe_switch_current_tcp--quiet-thread-execve.gen.test \ - mbind.gen.test mbind-Xabbrev.gen.test mbind-Xraw.gen.test \ -@@ -6328,14 +6587,17 @@ - old_mmap-v-none.gen.test oldfstat.gen.test oldlstat.gen.test \ - oldselect.gen.test oldselect-P.gen.test \ - oldselect-efault.gen.test oldselect-efault-P.gen.test \ -- oldstat.gen.test open.gen.test open_tree.gen.test \ -- open_tree-P.gen.test openat.gen.test openat2.gen.test \ -- openat2-Xabbrev.gen.test openat2-Xraw.gen.test \ -- openat2-Xverbose.gen.test openat2-v.gen.test \ -- openat2-v-y.gen.test openat2-v-y-Xabbrev.gen.test \ -- openat2-v-y-Xraw.gen.test openat2-v-y-Xverbose.gen.test \ -- openat2-y.gen.test orphaned_process_group.gen.test \ -- osf_utimes.gen.test pause.gen.test perf_event_open.gen.test \ -+ oldstat.gen.test open.gen.test open--secontext.gen.test \ -+ open--secontext_full.gen.test open_tree.gen.test \ -+ open_tree-P.gen.test openat.gen.test \ -+ openat--secontext.gen.test openat--secontext_full.gen.test \ -+ openat2.gen.test openat2-Xabbrev.gen.test \ -+ openat2-Xraw.gen.test openat2-Xverbose.gen.test \ -+ openat2-v.gen.test openat2-v-y.gen.test \ -+ openat2-v-y-Xabbrev.gen.test openat2-v-y-Xraw.gen.test \ -+ openat2-v-y-Xverbose.gen.test openat2-y.gen.test \ -+ orphaned_process_group.gen.test osf_utimes.gen.test \ -+ pause.gen.test perf_event_open.gen.test \ - perf_event_open_nonverbose.gen.test \ - perf_event_open_unabbrev.gen.test personality-Xabbrev.gen.test \ - personality-Xraw.gen.test personality-Xverbose.gen.test \ -@@ -6806,7 +7068,7 @@ - - .SUFFIXES: - .SUFFIXES: .c .log .o .obj .test .test$(EXEEXT) .trs --$(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(srcdir)/pure_executables.am $(srcdir)/gen_tests.am $(srcdir)/../scno.am $(am__configure_deps) -+$(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(srcdir)/pure_executables.am $(srcdir)/secontext.am $(srcdir)/gen_tests.am $(srcdir)/../scno.am $(am__configure_deps) - @for dep in $?; do \ - case '$(am__configure_deps)' in \ - *$$dep*) \ -@@ -6826,7 +7088,7 @@ - echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__maybe_remake_depfiles)'; \ - cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__maybe_remake_depfiles);; \ - esac; --$(srcdir)/pure_executables.am $(srcdir)/gen_tests.am $(srcdir)/../scno.am $(am__empty): -+$(srcdir)/pure_executables.am $(srcdir)/secontext.am $(srcdir)/gen_tests.am $(srcdir)/../scno.am $(am__empty): - - $(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) - cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh -@@ -6868,6 +7130,14 @@ - @rm -f access$(EXEEXT) - $(AM_V_CCLD)$(LINK) $(access_OBJECTS) $(access_LDADD) $(LIBS) - -+access--secontext$(EXEEXT): $(access__secontext_OBJECTS) $(access__secontext_DEPENDENCIES) $(EXTRA_access__secontext_DEPENDENCIES) -+ @rm -f access--secontext$(EXEEXT) -+ $(AM_V_CCLD)$(LINK) $(access__secontext_OBJECTS) $(access__secontext_LDADD) $(LIBS) -+ -+access--secontext_full$(EXEEXT): $(access__secontext_full_OBJECTS) $(access__secontext_full_DEPENDENCIES) $(EXTRA_access__secontext_full_DEPENDENCIES) -+ @rm -f access--secontext_full$(EXEEXT) -+ $(AM_V_CCLD)$(LINK) $(access__secontext_full_OBJECTS) $(access__secontext_full_LDADD) $(LIBS) -+ - acct$(EXEEXT): $(acct_OBJECTS) $(acct_DEPENDENCIES) $(EXTRA_acct_DEPENDENCIES) - @rm -f acct$(EXEEXT) - $(AM_V_CCLD)$(LINK) $(acct_OBJECTS) $(acct_LDADD) $(LIBS) -@@ -6984,6 +7254,14 @@ - @rm -f chmod$(EXEEXT) - $(AM_V_CCLD)$(LINK) $(chmod_OBJECTS) $(chmod_LDADD) $(LIBS) - -+chmod--secontext$(EXEEXT): $(chmod__secontext_OBJECTS) $(chmod__secontext_DEPENDENCIES) $(EXTRA_chmod__secontext_DEPENDENCIES) -+ @rm -f chmod--secontext$(EXEEXT) -+ $(AM_V_CCLD)$(LINK) $(chmod__secontext_OBJECTS) $(chmod__secontext_LDADD) $(LIBS) -+ -+chmod--secontext_full$(EXEEXT): $(chmod__secontext_full_OBJECTS) $(chmod__secontext_full_DEPENDENCIES) $(EXTRA_chmod__secontext_full_DEPENDENCIES) -+ @rm -f chmod--secontext_full$(EXEEXT) -+ $(AM_V_CCLD)$(LINK) $(chmod__secontext_full_OBJECTS) $(chmod__secontext_full_LDADD) $(LIBS) -+ - chown$(EXEEXT): $(chown_OBJECTS) $(chown_DEPENDENCIES) $(EXTRA_chown_DEPENDENCIES) - @rm -f chown$(EXEEXT) - $(AM_V_CCLD)$(LINK) $(chown_OBJECTS) $(chown_LDADD) $(LIBS) -@@ -7196,6 +7474,14 @@ - @rm -f execve$(EXEEXT) - $(AM_V_CCLD)$(LINK) $(execve_OBJECTS) $(execve_LDADD) $(LIBS) - -+execve--secontext$(EXEEXT): $(execve__secontext_OBJECTS) $(execve__secontext_DEPENDENCIES) $(EXTRA_execve__secontext_DEPENDENCIES) -+ @rm -f execve--secontext$(EXEEXT) -+ $(AM_V_CCLD)$(LINK) $(execve__secontext_OBJECTS) $(execve__secontext_LDADD) $(LIBS) -+ -+execve--secontext_full$(EXEEXT): $(execve__secontext_full_OBJECTS) $(execve__secontext_full_DEPENDENCIES) $(EXTRA_execve__secontext_full_DEPENDENCIES) -+ @rm -f execve--secontext_full$(EXEEXT) -+ $(AM_V_CCLD)$(LINK) $(execve__secontext_full_OBJECTS) $(execve__secontext_full_LDADD) $(LIBS) -+ - execve-v$(EXEEXT): $(execve_v_OBJECTS) $(execve_v_DEPENDENCIES) $(EXTRA_execve_v_DEPENDENCIES) - @rm -f execve-v$(EXEEXT) - $(AM_V_CCLD)$(LINK) $(execve_v_OBJECTS) $(execve_v_LDADD) $(LIBS) -@@ -7204,6 +7490,14 @@ - @rm -f execveat$(EXEEXT) - $(AM_V_CCLD)$(LINK) $(execveat_OBJECTS) $(execveat_LDADD) $(LIBS) - -+execveat--secontext$(EXEEXT): $(execveat__secontext_OBJECTS) $(execveat__secontext_DEPENDENCIES) $(EXTRA_execveat__secontext_DEPENDENCIES) -+ @rm -f execveat--secontext$(EXEEXT) -+ $(AM_V_CCLD)$(LINK) $(execveat__secontext_OBJECTS) $(execveat__secontext_LDADD) $(LIBS) -+ -+execveat--secontext_full$(EXEEXT): $(execveat__secontext_full_OBJECTS) $(execveat__secontext_full_DEPENDENCIES) $(EXTRA_execveat__secontext_full_DEPENDENCIES) -+ @rm -f execveat--secontext_full$(EXEEXT) -+ $(AM_V_CCLD)$(LINK) $(execveat__secontext_full_OBJECTS) $(execveat__secontext_full_LDADD) $(LIBS) -+ - execveat-v$(EXEEXT): $(execveat_v_OBJECTS) $(execveat_v_DEPENDENCIES) $(EXTRA_execveat_v_DEPENDENCIES) - @rm -f execveat-v$(EXEEXT) - $(AM_V_CCLD)$(LINK) $(execveat_v_OBJECTS) $(execveat_v_LDADD) $(LIBS) -@@ -7212,6 +7506,34 @@ - @rm -f faccessat$(EXEEXT) - $(AM_V_CCLD)$(LINK) $(faccessat_OBJECTS) $(faccessat_LDADD) $(LIBS) - -+faccessat--secontext$(EXEEXT): $(faccessat__secontext_OBJECTS) $(faccessat__secontext_DEPENDENCIES) $(EXTRA_faccessat__secontext_DEPENDENCIES) -+ @rm -f faccessat--secontext$(EXEEXT) -+ $(AM_V_CCLD)$(LINK) $(faccessat__secontext_OBJECTS) $(faccessat__secontext_LDADD) $(LIBS) -+ -+faccessat--secontext_full$(EXEEXT): $(faccessat__secontext_full_OBJECTS) $(faccessat__secontext_full_DEPENDENCIES) $(EXTRA_faccessat__secontext_full_DEPENDENCIES) -+ @rm -f faccessat--secontext_full$(EXEEXT) -+ $(AM_V_CCLD)$(LINK) $(faccessat__secontext_full_OBJECTS) $(faccessat__secontext_full_LDADD) $(LIBS) -+ -+faccessat-P$(EXEEXT): $(faccessat_P_OBJECTS) $(faccessat_P_DEPENDENCIES) $(EXTRA_faccessat_P_DEPENDENCIES) -+ @rm -f faccessat-P$(EXEEXT) -+ $(AM_V_CCLD)$(LINK) $(faccessat_P_OBJECTS) $(faccessat_P_LDADD) $(LIBS) -+ -+faccessat-y$(EXEEXT): $(faccessat_y_OBJECTS) $(faccessat_y_DEPENDENCIES) $(EXTRA_faccessat_y_DEPENDENCIES) -+ @rm -f faccessat-y$(EXEEXT) -+ $(AM_V_CCLD)$(LINK) $(faccessat_y_OBJECTS) $(faccessat_y_LDADD) $(LIBS) -+ -+faccessat-y--secontext$(EXEEXT): $(faccessat_y__secontext_OBJECTS) $(faccessat_y__secontext_DEPENDENCIES) $(EXTRA_faccessat_y__secontext_DEPENDENCIES) -+ @rm -f faccessat-y--secontext$(EXEEXT) -+ $(AM_V_CCLD)$(LINK) $(faccessat_y__secontext_OBJECTS) $(faccessat_y__secontext_LDADD) $(LIBS) -+ -+faccessat-y--secontext_full$(EXEEXT): $(faccessat_y__secontext_full_OBJECTS) $(faccessat_y__secontext_full_DEPENDENCIES) $(EXTRA_faccessat_y__secontext_full_DEPENDENCIES) -+ @rm -f faccessat-y--secontext_full$(EXEEXT) -+ $(AM_V_CCLD)$(LINK) $(faccessat_y__secontext_full_OBJECTS) $(faccessat_y__secontext_full_LDADD) $(LIBS) -+ -+faccessat-yy$(EXEEXT): $(faccessat_yy_OBJECTS) $(faccessat_yy_DEPENDENCIES) $(EXTRA_faccessat_yy_DEPENDENCIES) -+ @rm -f faccessat-yy$(EXEEXT) -+ $(AM_V_CCLD)$(LINK) $(faccessat_yy_OBJECTS) $(faccessat_yy_LDADD) $(LIBS) -+ - fadvise64$(EXEEXT): $(fadvise64_OBJECTS) $(fadvise64_DEPENDENCIES) $(EXTRA_fadvise64_DEPENDENCIES) - @rm -f fadvise64$(EXEEXT) - $(AM_V_CCLD)$(LINK) $(fadvise64_OBJECTS) $(fadvise64_LDADD) $(LIBS) -@@ -7232,6 +7554,14 @@ - @rm -f fanotify_mark$(EXEEXT) - $(AM_V_CCLD)$(LINK) $(fanotify_mark_OBJECTS) $(fanotify_mark_LDADD) $(LIBS) - -+fanotify_mark--secontext$(EXEEXT): $(fanotify_mark__secontext_OBJECTS) $(fanotify_mark__secontext_DEPENDENCIES) $(EXTRA_fanotify_mark__secontext_DEPENDENCIES) -+ @rm -f fanotify_mark--secontext$(EXEEXT) -+ $(AM_V_CCLD)$(LINK) $(fanotify_mark__secontext_OBJECTS) $(fanotify_mark__secontext_LDADD) $(LIBS) -+ -+fanotify_mark--secontext_full$(EXEEXT): $(fanotify_mark__secontext_full_OBJECTS) $(fanotify_mark__secontext_full_DEPENDENCIES) $(EXTRA_fanotify_mark__secontext_full_DEPENDENCIES) -+ @rm -f fanotify_mark--secontext_full$(EXEEXT) -+ $(AM_V_CCLD)$(LINK) $(fanotify_mark__secontext_full_OBJECTS) $(fanotify_mark__secontext_full_LDADD) $(LIBS) -+ - fanotify_mark-Xabbrev$(EXEEXT): $(fanotify_mark_Xabbrev_OBJECTS) $(fanotify_mark_Xabbrev_DEPENDENCIES) $(EXTRA_fanotify_mark_Xabbrev_DEPENDENCIES) - @rm -f fanotify_mark-Xabbrev$(EXEEXT) - $(AM_V_CCLD)$(LINK) $(fanotify_mark_Xabbrev_OBJECTS) $(fanotify_mark_Xabbrev_LDADD) $(LIBS) -@@ -7252,14 +7582,38 @@ - @rm -f fchmod$(EXEEXT) - $(AM_V_CCLD)$(LINK) $(fchmod_OBJECTS) $(fchmod_LDADD) $(LIBS) - -+fchmod--secontext$(EXEEXT): $(fchmod__secontext_OBJECTS) $(fchmod__secontext_DEPENDENCIES) $(EXTRA_fchmod__secontext_DEPENDENCIES) -+ @rm -f fchmod--secontext$(EXEEXT) -+ $(AM_V_CCLD)$(LINK) $(fchmod__secontext_OBJECTS) $(fchmod__secontext_LDADD) $(LIBS) -+ -+fchmod--secontext_full$(EXEEXT): $(fchmod__secontext_full_OBJECTS) $(fchmod__secontext_full_DEPENDENCIES) $(EXTRA_fchmod__secontext_full_DEPENDENCIES) -+ @rm -f fchmod--secontext_full$(EXEEXT) -+ $(AM_V_CCLD)$(LINK) $(fchmod__secontext_full_OBJECTS) $(fchmod__secontext_full_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) - -+fchmod-y--secontext$(EXEEXT): $(fchmod_y__secontext_OBJECTS) $(fchmod_y__secontext_DEPENDENCIES) $(EXTRA_fchmod_y__secontext_DEPENDENCIES) -+ @rm -f fchmod-y--secontext$(EXEEXT) -+ $(AM_V_CCLD)$(LINK) $(fchmod_y__secontext_OBJECTS) $(fchmod_y__secontext_LDADD) $(LIBS) -+ -+fchmod-y--secontext_full$(EXEEXT): $(fchmod_y__secontext_full_OBJECTS) $(fchmod_y__secontext_full_DEPENDENCIES) $(EXTRA_fchmod_y__secontext_full_DEPENDENCIES) -+ @rm -f fchmod-y--secontext_full$(EXEEXT) -+ $(AM_V_CCLD)$(LINK) $(fchmod_y__secontext_full_OBJECTS) $(fchmod_y__secontext_full_LDADD) $(LIBS) -+ - fchmodat$(EXEEXT): $(fchmodat_OBJECTS) $(fchmodat_DEPENDENCIES) $(EXTRA_fchmodat_DEPENDENCIES) - @rm -f fchmodat$(EXEEXT) - $(AM_V_CCLD)$(LINK) $(fchmodat_OBJECTS) $(fchmodat_LDADD) $(LIBS) - -+fchmodat--secontext$(EXEEXT): $(fchmodat__secontext_OBJECTS) $(fchmodat__secontext_DEPENDENCIES) $(EXTRA_fchmodat__secontext_DEPENDENCIES) -+ @rm -f fchmodat--secontext$(EXEEXT) -+ $(AM_V_CCLD)$(LINK) $(fchmodat__secontext_OBJECTS) $(fchmodat__secontext_LDADD) $(LIBS) -+ -+fchmodat--secontext_full$(EXEEXT): $(fchmodat__secontext_full_OBJECTS) $(fchmodat__secontext_full_DEPENDENCIES) $(EXTRA_fchmodat__secontext_full_DEPENDENCIES) -+ @rm -f fchmodat--secontext_full$(EXEEXT) -+ $(AM_V_CCLD)$(LINK) $(fchmodat__secontext_full_OBJECTS) $(fchmodat__secontext_full_LDADD) $(LIBS) -+ - fchown$(EXEEXT): $(fchown_OBJECTS) $(fchown_DEPENDENCIES) $(EXTRA_fchown_DEPENDENCIES) - @rm -f fchown$(EXEEXT) - $(AM_V_CCLD)$(LINK) $(fchown_OBJECTS) $(fchown_LDADD) $(LIBS) -@@ -7272,6 +7626,14 @@ - @rm -f fchownat$(EXEEXT) - $(AM_V_CCLD)$(LINK) $(fchownat_OBJECTS) $(fchownat_LDADD) $(LIBS) - -+fchownat--secontext$(EXEEXT): $(fchownat__secontext_OBJECTS) $(fchownat__secontext_DEPENDENCIES) $(EXTRA_fchownat__secontext_DEPENDENCIES) -+ @rm -f fchownat--secontext$(EXEEXT) -+ $(AM_V_CCLD)$(LINK) $(fchownat__secontext_OBJECTS) $(fchownat__secontext_LDADD) $(LIBS) -+ -+fchownat--secontext_full$(EXEEXT): $(fchownat__secontext_full_OBJECTS) $(fchownat__secontext_full_DEPENDENCIES) $(EXTRA_fchownat__secontext_full_DEPENDENCIES) -+ @rm -f fchownat--secontext_full$(EXEEXT) -+ $(AM_V_CCLD)$(LINK) $(fchownat__secontext_full_OBJECTS) $(fchownat__secontext_full_LDADD) $(LIBS) -+ - fcntl$(EXEEXT): $(fcntl_OBJECTS) $(fcntl_DEPENDENCIES) $(EXTRA_fcntl_DEPENDENCIES) - @rm -f fcntl$(EXEEXT) - $(AM_V_CCLD)$(LINK) $(fcntl_OBJECTS) $(fcntl_LDADD) $(LIBS) -@@ -7300,6 +7662,14 @@ - @rm -f file_handle$(EXEEXT) - $(AM_V_CCLD)$(LINK) $(file_handle_OBJECTS) $(file_handle_LDADD) $(LIBS) - -+file_handle--secontext$(EXEEXT): $(file_handle__secontext_OBJECTS) $(file_handle__secontext_DEPENDENCIES) $(EXTRA_file_handle__secontext_DEPENDENCIES) -+ @rm -f file_handle--secontext$(EXEEXT) -+ $(AM_V_CCLD)$(LINK) $(file_handle__secontext_OBJECTS) $(file_handle__secontext_LDADD) $(LIBS) -+ -+file_handle--secontext_full$(EXEEXT): $(file_handle__secontext_full_OBJECTS) $(file_handle__secontext_full_DEPENDENCIES) $(EXTRA_file_handle__secontext_full_DEPENDENCIES) -+ @rm -f file_handle--secontext_full$(EXEEXT) -+ $(AM_V_CCLD)$(LINK) $(file_handle__secontext_full_OBJECTS) $(file_handle__secontext_full_LDADD) $(LIBS) -+ - file_ioctl$(EXEEXT): $(file_ioctl_OBJECTS) $(file_ioctl_DEPENDENCIES) $(EXTRA_file_ioctl_DEPENDENCIES) - @rm -f file_ioctl$(EXEEXT) - $(AM_V_CCLD)$(LINK) $(file_ioctl_OBJECTS) $(file_ioctl_LDADD) $(LIBS) -@@ -8124,6 +8494,14 @@ - @rm -f linkat$(EXEEXT) - $(AM_V_CCLD)$(LINK) $(linkat_OBJECTS) $(linkat_LDADD) $(LIBS) - -+linkat--secontext$(EXEEXT): $(linkat__secontext_OBJECTS) $(linkat__secontext_DEPENDENCIES) $(EXTRA_linkat__secontext_DEPENDENCIES) -+ @rm -f linkat--secontext$(EXEEXT) -+ $(AM_V_CCLD)$(LINK) $(linkat__secontext_OBJECTS) $(linkat__secontext_LDADD) $(LIBS) -+ -+linkat--secontext_full$(EXEEXT): $(linkat__secontext_full_OBJECTS) $(linkat__secontext_full_DEPENDENCIES) $(EXTRA_linkat__secontext_full_DEPENDENCIES) -+ @rm -f linkat--secontext_full$(EXEEXT) -+ $(AM_V_CCLD)$(LINK) $(linkat__secontext_full_OBJECTS) $(linkat__secontext_full_LDADD) $(LIBS) -+ - list_sigaction_signum$(EXEEXT): $(list_sigaction_signum_OBJECTS) $(list_sigaction_signum_DEPENDENCIES) $(EXTRA_list_sigaction_signum_DEPENDENCIES) - @rm -f list_sigaction_signum$(EXEEXT) - $(AM_V_CCLD)$(LINK) $(list_sigaction_signum_OBJECTS) $(list_sigaction_signum_LDADD) $(LIBS) -@@ -8756,6 +9134,14 @@ - @rm -f open$(EXEEXT) - $(AM_V_CCLD)$(LINK) $(open_OBJECTS) $(open_LDADD) $(LIBS) - -+open--secontext$(EXEEXT): $(open__secontext_OBJECTS) $(open__secontext_DEPENDENCIES) $(EXTRA_open__secontext_DEPENDENCIES) -+ @rm -f open--secontext$(EXEEXT) -+ $(AM_V_CCLD)$(LINK) $(open__secontext_OBJECTS) $(open__secontext_LDADD) $(LIBS) -+ -+open--secontext_full$(EXEEXT): $(open__secontext_full_OBJECTS) $(open__secontext_full_DEPENDENCIES) $(EXTRA_open__secontext_full_DEPENDENCIES) -+ @rm -f open--secontext_full$(EXEEXT) -+ $(AM_V_CCLD)$(LINK) $(open__secontext_full_OBJECTS) $(open__secontext_full_LDADD) $(LIBS) -+ - open_tree$(EXEEXT): $(open_tree_OBJECTS) $(open_tree_DEPENDENCIES) $(EXTRA_open_tree_DEPENDENCIES) - @rm -f open_tree$(EXEEXT) - $(AM_V_CCLD)$(LINK) $(open_tree_OBJECTS) $(open_tree_LDADD) $(LIBS) -@@ -8768,6 +9154,14 @@ - @rm -f openat$(EXEEXT) - $(AM_V_CCLD)$(LINK) $(openat_OBJECTS) $(openat_LDADD) $(LIBS) - -+openat--secontext$(EXEEXT): $(openat__secontext_OBJECTS) $(openat__secontext_DEPENDENCIES) $(EXTRA_openat__secontext_DEPENDENCIES) -+ @rm -f openat--secontext$(EXEEXT) -+ $(AM_V_CCLD)$(LINK) $(openat__secontext_OBJECTS) $(openat__secontext_LDADD) $(LIBS) -+ -+openat--secontext_full$(EXEEXT): $(openat__secontext_full_OBJECTS) $(openat__secontext_full_DEPENDENCIES) $(EXTRA_openat__secontext_full_DEPENDENCIES) -+ @rm -f openat--secontext_full$(EXEEXT) -+ $(AM_V_CCLD)$(LINK) $(openat__secontext_full_OBJECTS) $(openat__secontext_full_LDADD) $(LIBS) -+ - openat2$(EXEEXT): $(openat2_OBJECTS) $(openat2_DEPENDENCIES) $(EXTRA_openat2_DEPENDENCIES) - @rm -f openat2$(EXEEXT) - $(AM_V_CCLD)$(LINK) $(openat2_OBJECTS) $(openat2_LDADD) $(LIBS) -@@ -10094,6 +10488,8 @@ - @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/_newselect.Po@am__quote@ # am--include-marker - @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/accept.Po@am__quote@ # am--include-marker - @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/accept4.Po@am__quote@ # am--include-marker -+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/access--secontext.Po@am__quote@ # am--include-marker -+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/access--secontext_full.Po@am__quote@ # am--include-marker - @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/access.Po@am__quote@ # am--include-marker - @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/acct.Po@am__quote@ # am--include-marker - @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/add_key.Po@am__quote@ # am--include-marker -@@ -10123,6 +10519,8 @@ - @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/caps.Po@am__quote@ # am--include-marker - @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/check_sigblock.Po@am__quote@ # am--include-marker - @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/check_sigign.Po@am__quote@ # am--include-marker -+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/chmod--secontext.Po@am__quote@ # am--include-marker -+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/chmod--secontext_full.Po@am__quote@ # am--include-marker - @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/chmod.Po@am__quote@ # am--include-marker - @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/chown.Po@am__quote@ # am--include-marker - @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/chown32.Po@am__quote@ # am--include-marker -@@ -10176,25 +10574,46 @@ - @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/epoll_wait.Po@am__quote@ # am--include-marker - @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/erestartsys.Po@am__quote@ # am--include-marker - @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/eventfd.Po@am__quote@ # am--include-marker -+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/execve--secontext.Po@am__quote@ # am--include-marker -+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/execve--secontext_full.Po@am__quote@ # am--include-marker - @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/execve-v.Po@am__quote@ # am--include-marker - @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/execve.Po@am__quote@ # am--include-marker -+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/execveat--secontext.Po@am__quote@ # am--include-marker -+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/execveat--secontext_full.Po@am__quote@ # am--include-marker - @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/execveat-v.Po@am__quote@ # am--include-marker - @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/execveat.Po@am__quote@ # am--include-marker -+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/faccessat--secontext.Po@am__quote@ # am--include-marker -+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/faccessat--secontext_full.Po@am__quote@ # am--include-marker -+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/faccessat-P.Po@am__quote@ # am--include-marker -+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/faccessat-y--secontext.Po@am__quote@ # am--include-marker -+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/faccessat-y--secontext_full.Po@am__quote@ # am--include-marker -+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/faccessat-y.Po@am__quote@ # am--include-marker -+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/faccessat-yy.Po@am__quote@ # am--include-marker - @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/faccessat.Po@am__quote@ # am--include-marker - @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/fadvise64.Po@am__quote@ # am--include-marker - @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/fadvise64_64.Po@am__quote@ # am--include-marker - @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/fallocate.Po@am__quote@ # am--include-marker - @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/fanotify_init.Po@am__quote@ # am--include-marker -+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/fanotify_mark--secontext.Po@am__quote@ # am--include-marker -+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/fanotify_mark--secontext_full.Po@am__quote@ # am--include-marker - @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/fanotify_mark-Xabbrev.Po@am__quote@ # am--include-marker - @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/fanotify_mark-Xraw.Po@am__quote@ # am--include-marker - @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--secontext.Po@am__quote@ # am--include-marker -+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/fchmod--secontext_full.Po@am__quote@ # am--include-marker -+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/fchmod-y--secontext.Po@am__quote@ # am--include-marker -+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/fchmod-y--secontext_full.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--secontext.Po@am__quote@ # am--include-marker -+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/fchmodat--secontext_full.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 - @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/fchown32.Po@am__quote@ # am--include-marker -+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/fchownat--secontext.Po@am__quote@ # am--include-marker -+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/fchownat--secontext_full.Po@am__quote@ # am--include-marker - @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/fchownat.Po@am__quote@ # am--include-marker - @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/fcntl--pidns-translation.Po@am__quote@ # am--include-marker - @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/fcntl.Po@am__quote@ # am--include-marker -@@ -10202,6 +10621,8 @@ - @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/fcntl64.Po@am__quote@ # am--include-marker - @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/fdatasync.Po@am__quote@ # am--include-marker - @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/fflush.Po@am__quote@ # am--include-marker -+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/file_handle--secontext.Po@am__quote@ # am--include-marker -+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/file_handle--secontext_full.Po@am__quote@ # am--include-marker - @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/file_handle.Po@am__quote@ # am--include-marker - @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/file_ioctl.Po@am__quote@ # am--include-marker - @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/filter-unavailable.Po@am__quote@ # am--include-marker -@@ -10431,6 +10852,7 @@ - @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libtests_a-printxval-Xabbrev.Po@am__quote@ # am--include-marker - @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libtests_a-printxval-Xraw.Po@am__quote@ # am--include-marker - @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libtests_a-printxval-Xverbose.Po@am__quote@ # am--include-marker -+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libtests_a-secontext.Po@am__quote@ # am--include-marker - @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libtests_a-signal2name.Po@am__quote@ # am--include-marker - @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libtests_a-skip_unavailable.Po@am__quote@ # am--include-marker - @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libtests_a-sprintrc.Po@am__quote@ # am--include-marker -@@ -10443,6 +10865,8 @@ - @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libtests_a-tprintf.Po@am__quote@ # am--include-marker - @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libtests_a-xmalloc_for_tests.Po@am__quote@ # am--include-marker - @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/link.Po@am__quote@ # am--include-marker -+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/linkat--secontext.Po@am__quote@ # am--include-marker -+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/linkat--secontext_full.Po@am__quote@ # am--include-marker - @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/linkat.Po@am__quote@ # am--include-marker - @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/list_sigaction_signum.Po@am__quote@ # am--include-marker - @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/llseek.Po@am__quote@ # am--include-marker -@@ -10601,9 +11025,13 @@ - @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/oldselect-efault.Po@am__quote@ # am--include-marker - @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/oldselect.Po@am__quote@ # am--include-marker - @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/oldstat.Po@am__quote@ # am--include-marker -+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/open--secontext.Po@am__quote@ # am--include-marker -+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/open--secontext_full.Po@am__quote@ # am--include-marker - @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/open.Po@am__quote@ # am--include-marker - @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/open_tree-P.Po@am__quote@ # am--include-marker - @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/open_tree.Po@am__quote@ # am--include-marker -+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/openat--secontext.Po@am__quote@ # am--include-marker -+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/openat--secontext_full.Po@am__quote@ # am--include-marker - @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/openat.Po@am__quote@ # am--include-marker - @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/openat2-Xabbrev.Po@am__quote@ # am--include-marker - @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/openat2-Xraw.Po@am__quote@ # am--include-marker -@@ -11300,6 +11728,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-printxval-Xverbose.obj `if test -f 'printxval-Xverbose.c'; then $(CYGPATH_W) 'printxval-Xverbose.c'; else $(CYGPATH_W) '$(srcdir)/printxval-Xverbose.c'; fi` - -+libtests_a-secontext.o: secontext.c -+@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libtests_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT libtests_a-secontext.o -MD -MP -MF $(DEPDIR)/libtests_a-secontext.Tpo -c -o libtests_a-secontext.o `test -f 'secontext.c' || echo '$(srcdir)/'`secontext.c -+@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libtests_a-secontext.Tpo $(DEPDIR)/libtests_a-secontext.Po -+@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='secontext.c' object='libtests_a-secontext.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-secontext.o `test -f 'secontext.c' || echo '$(srcdir)/'`secontext.c -+ -+libtests_a-secontext.obj: secontext.c -+@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libtests_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT libtests_a-secontext.obj -MD -MP -MF $(DEPDIR)/libtests_a-secontext.Tpo -c -o libtests_a-secontext.obj `if test -f 'secontext.c'; then $(CYGPATH_W) 'secontext.c'; else $(CYGPATH_W) '$(srcdir)/secontext.c'; fi` -+@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libtests_a-secontext.Tpo $(DEPDIR)/libtests_a-secontext.Po -+@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='secontext.c' object='libtests_a-secontext.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-secontext.obj `if test -f 'secontext.c'; then $(CYGPATH_W) 'secontext.c'; else $(CYGPATH_W) '$(srcdir)/secontext.c'; fi` -+ - libtests_a-signal2name.o: signal2name.c - @am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libtests_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT libtests_a-signal2name.o -MD -MP -MF $(DEPDIR)/libtests_a-signal2name.Tpo -c -o libtests_a-signal2name.o `test -f 'signal2name.c' || echo '$(srcdir)/'`signal2name.c - @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libtests_a-signal2name.Tpo $(DEPDIR)/libtests_a-signal2name.Po -@@ -13841,6 +14283,12 @@ - $(srcdir)/access.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in - $(AM_V_GEN) $^ $@ - -+$(srcdir)/access--secontext.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in -+ $(AM_V_GEN) $^ $@ -+ -+$(srcdir)/access--secontext_full.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in -+ $(AM_V_GEN) $^ $@ -+ - $(srcdir)/acct.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in - $(AM_V_GEN) $^ $@ - -@@ -13883,6 +14331,12 @@ - $(srcdir)/chmod.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in - $(AM_V_GEN) $^ $@ - -+$(srcdir)/chmod--secontext.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in -+ $(AM_V_GEN) $^ $@ -+ -+$(srcdir)/chmod--secontext_full.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in -+ $(AM_V_GEN) $^ $@ -+ - $(srcdir)/chown.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in - $(AM_V_GEN) $^ $@ - -@@ -14024,13 +14478,43 @@ - $(srcdir)/erestartsys.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in - $(AM_V_GEN) $^ $@ - -+$(srcdir)/execve--secontext.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in -+ $(AM_V_GEN) $^ $@ -+ -+$(srcdir)/execve--secontext_full.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in -+ $(AM_V_GEN) $^ $@ -+ - $(srcdir)/execveat.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in - $(AM_V_GEN) $^ $@ - -+$(srcdir)/execveat--secontext.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in -+ $(AM_V_GEN) $^ $@ -+ -+$(srcdir)/execveat--secontext_full.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in -+ $(AM_V_GEN) $^ $@ -+ - $(srcdir)/execveat-v.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in - $(AM_V_GEN) $^ $@ - --$(srcdir)/faccessat.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in -+$(srcdir)/faccessat--secontext.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in -+ $(AM_V_GEN) $^ $@ -+ -+$(srcdir)/faccessat--secontext_full.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in -+ $(AM_V_GEN) $^ $@ -+ -+$(srcdir)/faccessat-P.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in -+ $(AM_V_GEN) $^ $@ -+ -+$(srcdir)/faccessat-y.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in -+ $(AM_V_GEN) $^ $@ -+ -+$(srcdir)/faccessat-y--secontext.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in -+ $(AM_V_GEN) $^ $@ -+ -+$(srcdir)/faccessat-y--secontext_full.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in -+ $(AM_V_GEN) $^ $@ -+ -+$(srcdir)/faccessat-yy.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in - $(AM_V_GEN) $^ $@ - - $(srcdir)/fadvise64_64.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in -@@ -14045,6 +14529,12 @@ - $(srcdir)/fanotify_mark.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in - $(AM_V_GEN) $^ $@ - -+$(srcdir)/fanotify_mark--secontext.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in -+ $(AM_V_GEN) $^ $@ -+ -+$(srcdir)/fanotify_mark--secontext_full.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in -+ $(AM_V_GEN) $^ $@ -+ - $(srcdir)/fanotify_mark-Xabbrev.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in - $(AM_V_GEN) $^ $@ - -@@ -14060,12 +14550,30 @@ - $(srcdir)/fchmod.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in - $(AM_V_GEN) $^ $@ - -+$(srcdir)/fchmod--secontext.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in -+ $(AM_V_GEN) $^ $@ -+ -+$(srcdir)/fchmod--secontext_full.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)/fchmod-y--secontext.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in -+ $(AM_V_GEN) $^ $@ -+ -+$(srcdir)/fchmod-y--secontext_full.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) $^ $@ - -+$(srcdir)/fchmodat--secontext.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in -+ $(AM_V_GEN) $^ $@ -+ -+$(srcdir)/fchmodat--secontext_full.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in -+ $(AM_V_GEN) $^ $@ -+ - $(srcdir)/fchown.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in - $(AM_V_GEN) $^ $@ - -@@ -14075,6 +14583,12 @@ - $(srcdir)/fchownat.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in - $(AM_V_GEN) $^ $@ - -+$(srcdir)/fchownat--secontext.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in -+ $(AM_V_GEN) $^ $@ -+ -+$(srcdir)/fchownat--secontext_full.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in -+ $(AM_V_GEN) $^ $@ -+ - $(srcdir)/fcntl.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in - $(AM_V_GEN) $^ $@ - -@@ -14096,6 +14610,12 @@ - $(srcdir)/file_ioctl.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in - $(AM_V_GEN) $^ $@ - -+$(srcdir)/file_handle--secontext.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in -+ $(AM_V_GEN) $^ $@ -+ -+$(srcdir)/file_handle--secontext_full.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in -+ $(AM_V_GEN) $^ $@ -+ - $(srcdir)/filter_seccomp.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in - $(AM_V_GEN) $^ $@ - -@@ -14690,6 +15210,12 @@ - $(srcdir)/linkat.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in - $(AM_V_GEN) $^ $@ - -+$(srcdir)/linkat--secontext.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in -+ $(AM_V_GEN) $^ $@ -+ -+$(srcdir)/linkat--secontext_full.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in -+ $(AM_V_GEN) $^ $@ -+ - $(srcdir)/lookup_dcookie.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in - $(AM_V_GEN) $^ $@ - -@@ -15107,6 +15633,12 @@ - $(srcdir)/open.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in - $(AM_V_GEN) $^ $@ - -+$(srcdir)/open--secontext.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in -+ $(AM_V_GEN) $^ $@ -+ -+$(srcdir)/open--secontext_full.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in -+ $(AM_V_GEN) $^ $@ -+ - $(srcdir)/open_tree.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in - $(AM_V_GEN) $^ $@ - -@@ -15116,6 +15648,12 @@ - $(srcdir)/openat.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in - $(AM_V_GEN) $^ $@ - -+$(srcdir)/openat--secontext.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in -+ $(AM_V_GEN) $^ $@ -+ -+$(srcdir)/openat--secontext_full.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in -+ $(AM_V_GEN) $^ $@ -+ - $(srcdir)/openat2.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in - $(AM_V_GEN) $^ $@ - -Index: strace-5.7/tests-m32/access--secontext.c -=================================================================== ---- /dev/null 1970-01-01 00:00:00.000000000 +0000 -+++ strace-5.7/tests-m32/access--secontext.c 2021-08-24 21:08:43.293245705 +0200 -@@ -0,0 +1,19 @@ -+/* -+ * Copyright (c) 2021 The strace developers. -+ * All rights reserved. -+ * -+ * SPDX-License-Identifier: GPL-2.0-or-later -+ */ -+ -+#include "tests.h" -+ -+#ifdef HAVE_M32_SELINUX_RUNTIME -+ -+# define TEST_SECONTEXT -+# include "access.c" -+ -+#else -+ -+SKIP_MAIN_UNDEFINED("HAVE_M32_SELINUX_RUNTIME") -+ -+#endif -Index: strace-5.7/tests-m32/chmod--secontext.c -=================================================================== ---- /dev/null 1970-01-01 00:00:00.000000000 +0000 -+++ strace-5.7/tests-m32/chmod--secontext.c 2021-08-24 21:08:43.293245705 +0200 -@@ -0,0 +1,19 @@ -+/* -+ * Copyright (c) 2021 The strace developers. -+ * All rights reserved. -+ * -+ * SPDX-License-Identifier: GPL-2.0-or-later -+ */ -+ -+#include "tests.h" -+ -+#ifdef HAVE_M32_SELINUX_RUNTIME -+ -+# define TEST_SECONTEXT -+# include "chmod.c" -+ -+#else -+ -+SKIP_MAIN_UNDEFINED("HAVE_M32_SELINUX_RUNTIME") -+ -+#endif -Index: strace-5.7/tests-m32/execve--secontext.c -=================================================================== ---- /dev/null 1970-01-01 00:00:00.000000000 +0000 -+++ strace-5.7/tests-m32/execve--secontext.c 2021-08-24 21:08:43.293245705 +0200 -@@ -0,0 +1,19 @@ -+/* -+ * Copyright (c) 2021 The strace developers. -+ * All rights reserved. -+ * -+ * SPDX-License-Identifier: GPL-2.0-or-later -+ */ -+ -+#include "tests.h" -+ -+#ifdef HAVE_M32_SELINUX_RUNTIME -+ -+# define TEST_SECONTEXT -+# include "execve.c" -+ -+#else -+ -+SKIP_MAIN_UNDEFINED("HAVE_M32_SELINUX_RUNTIME") -+ -+#endif -Index: strace-5.7/tests-m32/execveat--secontext.c -=================================================================== ---- /dev/null 1970-01-01 00:00:00.000000000 +0000 -+++ strace-5.7/tests-m32/execveat--secontext.c 2021-08-24 21:08:43.293245705 +0200 -@@ -0,0 +1,19 @@ -+/* -+ * Copyright (c) 2021 The strace developers. -+ * All rights reserved. -+ * -+ * SPDX-License-Identifier: GPL-2.0-or-later -+ */ -+ -+#include "tests.h" -+ -+#ifdef HAVE_M32_SELINUX_RUNTIME -+ -+# define TEST_SECONTEXT -+# include "execveat.c" -+ -+#else -+ -+SKIP_MAIN_UNDEFINED("HAVE_M32_SELINUX_RUNTIME") -+ -+#endif -Index: strace-5.7/tests-m32/faccessat--secontext.c -=================================================================== ---- /dev/null 1970-01-01 00:00:00.000000000 +0000 -+++ strace-5.7/tests-m32/faccessat--secontext.c 2021-08-24 21:08:43.293245705 +0200 -@@ -0,0 +1,19 @@ -+/* -+ * Copyright (c) 2021 The strace developers. -+ * All rights reserved. -+ * -+ * SPDX-License-Identifier: GPL-2.0-or-later -+ */ -+ -+#include "tests.h" -+ -+#ifdef HAVE_M32_SELINUX_RUNTIME -+ -+# define TEST_SECONTEXT -+# include "faccessat.c" -+ -+#else -+ -+SKIP_MAIN_UNDEFINED("HAVE_M32_SELINUX_RUNTIME") -+ -+#endif -Index: strace-5.7/tests-m32/faccessat-y--secontext.c -=================================================================== ---- /dev/null 1970-01-01 00:00:00.000000000 +0000 -+++ strace-5.7/tests-m32/faccessat-y--secontext.c 2021-08-24 21:08:43.294245697 +0200 -@@ -0,0 +1,19 @@ -+/* -+ * Copyright (c) 2021 The strace developers. -+ * All rights reserved. -+ * -+ * SPDX-License-Identifier: GPL-2.0-or-later -+ */ -+ -+#include "tests.h" -+ -+#ifdef HAVE_M32_SELINUX_RUNTIME -+ -+# define TEST_SECONTEXT -+# include "faccessat-y.c" -+ -+#else -+ -+SKIP_MAIN_UNDEFINED("HAVE_M32_SELINUX_RUNTIME") -+ -+#endif -Index: strace-5.7/tests-m32/fanotify_mark--secontext.c -=================================================================== ---- /dev/null 1970-01-01 00:00:00.000000000 +0000 -+++ strace-5.7/tests-m32/fanotify_mark--secontext.c 2021-08-24 21:08:43.294245697 +0200 -@@ -0,0 +1,19 @@ -+/* -+ * Copyright (c) 2021 The strace developers. -+ * All rights reserved. -+ * -+ * SPDX-License-Identifier: GPL-2.0-or-later -+ */ -+ -+#include "tests.h" -+ -+#ifdef HAVE_M32_SELINUX_RUNTIME -+ -+# define TEST_SECONTEXT -+# include "fanotify_mark.c" -+ -+#else -+ -+SKIP_MAIN_UNDEFINED("HAVE_M32_SELINUX_RUNTIME") -+ -+#endif -Index: strace-5.7/tests-m32/fchmod--secontext.c -=================================================================== ---- /dev/null 1970-01-01 00:00:00.000000000 +0000 -+++ strace-5.7/tests-m32/fchmod--secontext.c 2021-08-24 21:08:43.294245697 +0200 -@@ -0,0 +1,19 @@ -+/* -+ * Copyright (c) 2021 The strace developers. -+ * All rights reserved. -+ * -+ * SPDX-License-Identifier: GPL-2.0-or-later -+ */ -+ -+#include "tests.h" -+ -+#ifdef HAVE_M32_SELINUX_RUNTIME -+ -+# define TEST_SECONTEXT -+# include "fchmod.c" -+ -+#else -+ -+SKIP_MAIN_UNDEFINED("HAVE_M32_SELINUX_RUNTIME") -+ -+#endif -Index: strace-5.7/tests-m32/fchmod-y--secontext.c -=================================================================== ---- /dev/null 1970-01-01 00:00:00.000000000 +0000 -+++ strace-5.7/tests-m32/fchmod-y--secontext.c 2021-08-24 21:08:43.294245697 +0200 -@@ -0,0 +1,19 @@ -+/* -+ * Copyright (c) 2021 The strace developers. -+ * All rights reserved. -+ * -+ * SPDX-License-Identifier: GPL-2.0-or-later -+ */ -+ -+#include "tests.h" -+ -+#ifdef HAVE_M32_SELINUX_RUNTIME -+ -+# define TEST_SECONTEXT -+# include "fchmod-y.c" -+ -+#else -+ -+SKIP_MAIN_UNDEFINED("HAVE_M32_SELINUX_RUNTIME") -+ -+#endif -Index: strace-5.7/tests-m32/fchmodat--secontext.c -=================================================================== ---- /dev/null 1970-01-01 00:00:00.000000000 +0000 -+++ strace-5.7/tests-m32/fchmodat--secontext.c 2021-08-24 21:08:43.294245697 +0200 -@@ -0,0 +1,19 @@ -+/* -+ * Copyright (c) 2021 The strace developers. -+ * All rights reserved. -+ * -+ * SPDX-License-Identifier: GPL-2.0-or-later -+ */ -+ -+#include "tests.h" -+ -+#ifdef HAVE_M32_SELINUX_RUNTIME -+ -+# define TEST_SECONTEXT -+# include "fchmodat.c" -+ -+#else -+ -+SKIP_MAIN_UNDEFINED("HAVE_M32_SELINUX_RUNTIME") -+ -+#endif -Index: strace-5.7/tests-m32/fchownat--secontext.c -=================================================================== ---- /dev/null 1970-01-01 00:00:00.000000000 +0000 -+++ strace-5.7/tests-m32/fchownat--secontext.c 2021-08-24 21:08:43.294245697 +0200 -@@ -0,0 +1,19 @@ -+/* -+ * Copyright (c) 2021 The strace developers. -+ * All rights reserved. -+ * -+ * SPDX-License-Identifier: GPL-2.0-or-later -+ */ -+ -+#include "tests.h" -+ -+#ifdef HAVE_M32_SELINUX_RUNTIME -+ -+# define TEST_SECONTEXT -+# include "fchownat.c" -+ -+#else -+ -+SKIP_MAIN_UNDEFINED("HAVE_M32_SELINUX_RUNTIME") -+ -+#endif -Index: strace-5.7/tests-m32/file_handle--secontext.c -=================================================================== ---- /dev/null 1970-01-01 00:00:00.000000000 +0000 -+++ strace-5.7/tests-m32/file_handle--secontext.c 2021-08-24 21:08:43.294245697 +0200 -@@ -0,0 +1,19 @@ -+/* -+ * Copyright (c) 2021 The strace developers. -+ * All rights reserved. -+ * -+ * SPDX-License-Identifier: GPL-2.0-or-later -+ */ -+ -+#include "tests.h" -+ -+#ifdef HAVE_M32_SELINUX_RUNTIME -+ -+# define TEST_SECONTEXT -+# include "file_handle.c" -+ -+#else -+ -+SKIP_MAIN_UNDEFINED("HAVE_M32_SELINUX_RUNTIME") -+ -+#endif -Index: strace-5.7/tests-m32/linkat--secontext.c -=================================================================== ---- /dev/null 1970-01-01 00:00:00.000000000 +0000 -+++ strace-5.7/tests-m32/linkat--secontext.c 2021-08-24 21:08:43.294245697 +0200 -@@ -0,0 +1,19 @@ -+/* -+ * Copyright (c) 2021 The strace developers. -+ * All rights reserved. -+ * -+ * SPDX-License-Identifier: GPL-2.0-or-later -+ */ -+ -+#include "tests.h" -+ -+#ifdef HAVE_M32_SELINUX_RUNTIME -+ -+# define TEST_SECONTEXT -+# include "linkat.c" -+ -+#else -+ -+SKIP_MAIN_UNDEFINED("HAVE_M32_SELINUX_RUNTIME") -+ -+#endif -Index: strace-5.7/tests-m32/open--secontext.c -=================================================================== ---- /dev/null 1970-01-01 00:00:00.000000000 +0000 -+++ strace-5.7/tests-m32/open--secontext.c 2021-08-24 21:08:43.294245697 +0200 -@@ -0,0 +1,19 @@ -+/* -+ * Copyright (c) 2021 The strace developers. -+ * All rights reserved. -+ * -+ * SPDX-License-Identifier: GPL-2.0-or-later -+ */ -+ -+#include "tests.h" -+ -+#ifdef HAVE_M32_SELINUX_RUNTIME -+ -+# define TEST_SECONTEXT -+# include "open.c" -+ -+#else -+ -+SKIP_MAIN_UNDEFINED("HAVE_M32_SELINUX_RUNTIME") -+ -+#endif -Index: strace-5.7/tests-m32/openat--secontext.c -=================================================================== ---- /dev/null 1970-01-01 00:00:00.000000000 +0000 -+++ strace-5.7/tests-m32/openat--secontext.c 2021-08-24 21:08:43.294245697 +0200 -@@ -0,0 +1,19 @@ -+/* -+ * Copyright (c) 2021 The strace developers. -+ * All rights reserved. -+ * -+ * SPDX-License-Identifier: GPL-2.0-or-later -+ */ -+ -+#include "tests.h" -+ -+#ifdef HAVE_M32_SELINUX_RUNTIME -+ -+# define TEST_SECONTEXT -+# include "openat.c" -+ -+#else -+ -+SKIP_MAIN_UNDEFINED("HAVE_M32_SELINUX_RUNTIME") -+ -+#endif -Index: strace-5.7/tests-mx32/access--secontext.c -=================================================================== ---- /dev/null 1970-01-01 00:00:00.000000000 +0000 -+++ strace-5.7/tests-mx32/access--secontext.c 2021-08-24 21:08:43.295245688 +0200 -@@ -0,0 +1,19 @@ -+/* -+ * Copyright (c) 2021 The strace developers. -+ * All rights reserved. -+ * -+ * SPDX-License-Identifier: GPL-2.0-or-later -+ */ -+ -+#include "tests.h" -+ -+#ifdef HAVE_MX32_SELINUX_RUNTIME -+ -+# define TEST_SECONTEXT -+# include "access.c" -+ -+#else -+ -+SKIP_MAIN_UNDEFINED("HAVE_MX32_SELINUX_RUNTIME") -+ -+#endif -Index: strace-5.7/tests-mx32/chmod--secontext.c -=================================================================== ---- /dev/null 1970-01-01 00:00:00.000000000 +0000 -+++ strace-5.7/tests-mx32/chmod--secontext.c 2021-08-24 21:08:43.295245688 +0200 -@@ -0,0 +1,19 @@ -+/* -+ * Copyright (c) 2021 The strace developers. -+ * All rights reserved. -+ * -+ * SPDX-License-Identifier: GPL-2.0-or-later -+ */ -+ -+#include "tests.h" -+ -+#ifdef HAVE_MX32_SELINUX_RUNTIME -+ -+# define TEST_SECONTEXT -+# include "chmod.c" -+ -+#else -+ -+SKIP_MAIN_UNDEFINED("HAVE_MX32_SELINUX_RUNTIME") -+ -+#endif -Index: strace-5.7/tests-mx32/execve--secontext.c -=================================================================== ---- /dev/null 1970-01-01 00:00:00.000000000 +0000 -+++ strace-5.7/tests-mx32/execve--secontext.c 2021-08-24 21:08:43.295245688 +0200 -@@ -0,0 +1,19 @@ -+/* -+ * Copyright (c) 2021 The strace developers. -+ * All rights reserved. -+ * -+ * SPDX-License-Identifier: GPL-2.0-or-later -+ */ -+ -+#include "tests.h" -+ -+#ifdef HAVE_MX32_SELINUX_RUNTIME -+ -+# define TEST_SECONTEXT -+# include "execve.c" -+ -+#else -+ -+SKIP_MAIN_UNDEFINED("HAVE_MX32_SELINUX_RUNTIME") -+ -+#endif -Index: strace-5.7/tests-mx32/execveat--secontext.c -=================================================================== ---- /dev/null 1970-01-01 00:00:00.000000000 +0000 -+++ strace-5.7/tests-mx32/execveat--secontext.c 2021-08-24 21:08:43.295245688 +0200 -@@ -0,0 +1,19 @@ -+/* -+ * Copyright (c) 2021 The strace developers. -+ * All rights reserved. -+ * -+ * SPDX-License-Identifier: GPL-2.0-or-later -+ */ -+ -+#include "tests.h" -+ -+#ifdef HAVE_MX32_SELINUX_RUNTIME -+ -+# define TEST_SECONTEXT -+# include "execveat.c" -+ -+#else -+ -+SKIP_MAIN_UNDEFINED("HAVE_MX32_SELINUX_RUNTIME") -+ -+#endif -Index: strace-5.7/tests-mx32/faccessat--secontext.c -=================================================================== ---- /dev/null 1970-01-01 00:00:00.000000000 +0000 -+++ strace-5.7/tests-mx32/faccessat--secontext.c 2021-08-24 21:08:43.295245688 +0200 -@@ -0,0 +1,19 @@ -+/* -+ * Copyright (c) 2021 The strace developers. -+ * All rights reserved. -+ * -+ * SPDX-License-Identifier: GPL-2.0-or-later -+ */ -+ -+#include "tests.h" -+ -+#ifdef HAVE_MX32_SELINUX_RUNTIME -+ -+# define TEST_SECONTEXT -+# include "faccessat.c" -+ -+#else -+ -+SKIP_MAIN_UNDEFINED("HAVE_MX32_SELINUX_RUNTIME") -+ -+#endif -Index: strace-5.7/tests-mx32/faccessat-y--secontext.c -=================================================================== ---- /dev/null 1970-01-01 00:00:00.000000000 +0000 -+++ strace-5.7/tests-mx32/faccessat-y--secontext.c 2021-08-24 21:08:43.295245688 +0200 -@@ -0,0 +1,19 @@ -+/* -+ * Copyright (c) 2021 The strace developers. -+ * All rights reserved. -+ * -+ * SPDX-License-Identifier: GPL-2.0-or-later -+ */ -+ -+#include "tests.h" -+ -+#ifdef HAVE_MX32_SELINUX_RUNTIME -+ -+# define TEST_SECONTEXT -+# include "faccessat-y.c" -+ -+#else -+ -+SKIP_MAIN_UNDEFINED("HAVE_MX32_SELINUX_RUNTIME") -+ -+#endif -Index: strace-5.7/tests-mx32/fanotify_mark--secontext.c -=================================================================== ---- /dev/null 1970-01-01 00:00:00.000000000 +0000 -+++ strace-5.7/tests-mx32/fanotify_mark--secontext.c 2021-08-24 21:08:43.295245688 +0200 -@@ -0,0 +1,19 @@ -+/* -+ * Copyright (c) 2021 The strace developers. -+ * All rights reserved. -+ * -+ * SPDX-License-Identifier: GPL-2.0-or-later -+ */ -+ -+#include "tests.h" -+ -+#ifdef HAVE_MX32_SELINUX_RUNTIME -+ -+# define TEST_SECONTEXT -+# include "fanotify_mark.c" -+ -+#else -+ -+SKIP_MAIN_UNDEFINED("HAVE_MX32_SELINUX_RUNTIME") -+ -+#endif -Index: strace-5.7/tests-mx32/fchmod--secontext.c -=================================================================== ---- /dev/null 1970-01-01 00:00:00.000000000 +0000 -+++ strace-5.7/tests-mx32/fchmod--secontext.c 2021-08-24 21:08:43.295245688 +0200 -@@ -0,0 +1,19 @@ -+/* -+ * Copyright (c) 2021 The strace developers. -+ * All rights reserved. -+ * -+ * SPDX-License-Identifier: GPL-2.0-or-later -+ */ -+ -+#include "tests.h" -+ -+#ifdef HAVE_MX32_SELINUX_RUNTIME -+ -+# define TEST_SECONTEXT -+# include "fchmod.c" -+ -+#else -+ -+SKIP_MAIN_UNDEFINED("HAVE_MX32_SELINUX_RUNTIME") -+ -+#endif -Index: strace-5.7/tests-mx32/fchmod-y--secontext.c -=================================================================== ---- /dev/null 1970-01-01 00:00:00.000000000 +0000 -+++ strace-5.7/tests-mx32/fchmod-y--secontext.c 2021-08-24 21:08:43.295245688 +0200 -@@ -0,0 +1,19 @@ -+/* -+ * Copyright (c) 2021 The strace developers. -+ * All rights reserved. -+ * -+ * SPDX-License-Identifier: GPL-2.0-or-later -+ */ -+ -+#include "tests.h" -+ -+#ifdef HAVE_MX32_SELINUX_RUNTIME -+ -+# define TEST_SECONTEXT -+# include "fchmod-y.c" -+ -+#else -+ -+SKIP_MAIN_UNDEFINED("HAVE_MX32_SELINUX_RUNTIME") -+ -+#endif -Index: strace-5.7/tests-mx32/fchmodat--secontext.c -=================================================================== ---- /dev/null 1970-01-01 00:00:00.000000000 +0000 -+++ strace-5.7/tests-mx32/fchmodat--secontext.c 2021-08-24 21:08:43.296245680 +0200 -@@ -0,0 +1,19 @@ -+/* -+ * Copyright (c) 2021 The strace developers. -+ * All rights reserved. -+ * -+ * SPDX-License-Identifier: GPL-2.0-or-later -+ */ -+ -+#include "tests.h" -+ -+#ifdef HAVE_MX32_SELINUX_RUNTIME -+ -+# define TEST_SECONTEXT -+# include "fchmodat.c" -+ -+#else -+ -+SKIP_MAIN_UNDEFINED("HAVE_MX32_SELINUX_RUNTIME") -+ -+#endif -Index: strace-5.7/tests-mx32/fchownat--secontext.c -=================================================================== ---- /dev/null 1970-01-01 00:00:00.000000000 +0000 -+++ strace-5.7/tests-mx32/fchownat--secontext.c 2021-08-24 21:08:43.296245680 +0200 -@@ -0,0 +1,19 @@ -+/* -+ * Copyright (c) 2021 The strace developers. -+ * All rights reserved. -+ * -+ * SPDX-License-Identifier: GPL-2.0-or-later -+ */ -+ -+#include "tests.h" -+ -+#ifdef HAVE_MX32_SELINUX_RUNTIME -+ -+# define TEST_SECONTEXT -+# include "fchownat.c" -+ -+#else -+ -+SKIP_MAIN_UNDEFINED("HAVE_MX32_SELINUX_RUNTIME") -+ -+#endif -Index: strace-5.7/tests-mx32/file_handle--secontext.c -=================================================================== ---- /dev/null 1970-01-01 00:00:00.000000000 +0000 -+++ strace-5.7/tests-mx32/file_handle--secontext.c 2021-08-24 21:08:43.296245680 +0200 -@@ -0,0 +1,19 @@ -+/* -+ * Copyright (c) 2021 The strace developers. -+ * All rights reserved. -+ * -+ * SPDX-License-Identifier: GPL-2.0-or-later -+ */ -+ -+#include "tests.h" -+ -+#ifdef HAVE_MX32_SELINUX_RUNTIME -+ -+# define TEST_SECONTEXT -+# include "file_handle.c" -+ -+#else -+ -+SKIP_MAIN_UNDEFINED("HAVE_MX32_SELINUX_RUNTIME") -+ -+#endif -Index: strace-5.7/tests-mx32/linkat--secontext.c -=================================================================== ---- /dev/null 1970-01-01 00:00:00.000000000 +0000 -+++ strace-5.7/tests-mx32/linkat--secontext.c 2021-08-24 21:08:43.296245680 +0200 -@@ -0,0 +1,19 @@ -+/* -+ * Copyright (c) 2021 The strace developers. -+ * All rights reserved. -+ * -+ * SPDX-License-Identifier: GPL-2.0-or-later -+ */ -+ -+#include "tests.h" -+ -+#ifdef HAVE_MX32_SELINUX_RUNTIME -+ -+# define TEST_SECONTEXT -+# include "linkat.c" -+ -+#else -+ -+SKIP_MAIN_UNDEFINED("HAVE_MX32_SELINUX_RUNTIME") -+ -+#endif -Index: strace-5.7/tests-mx32/open--secontext.c -=================================================================== ---- /dev/null 1970-01-01 00:00:00.000000000 +0000 -+++ strace-5.7/tests-mx32/open--secontext.c 2021-08-24 21:08:43.296245680 +0200 -@@ -0,0 +1,19 @@ -+/* -+ * Copyright (c) 2021 The strace developers. -+ * All rights reserved. -+ * -+ * SPDX-License-Identifier: GPL-2.0-or-later -+ */ -+ -+#include "tests.h" -+ -+#ifdef HAVE_MX32_SELINUX_RUNTIME -+ -+# define TEST_SECONTEXT -+# include "open.c" -+ -+#else -+ -+SKIP_MAIN_UNDEFINED("HAVE_MX32_SELINUX_RUNTIME") -+ -+#endif -Index: strace-5.7/tests-mx32/openat--secontext.c -=================================================================== ---- /dev/null 1970-01-01 00:00:00.000000000 +0000 -+++ strace-5.7/tests-mx32/openat--secontext.c 2021-08-24 21:08:43.296245680 +0200 -@@ -0,0 +1,19 @@ -+/* -+ * Copyright (c) 2021 The strace developers. -+ * All rights reserved. -+ * -+ * SPDX-License-Identifier: GPL-2.0-or-later -+ */ -+ -+#include "tests.h" -+ -+#ifdef HAVE_MX32_SELINUX_RUNTIME -+ -+# define TEST_SECONTEXT -+# include "openat.c" -+ -+#else -+ -+SKIP_MAIN_UNDEFINED("HAVE_MX32_SELINUX_RUNTIME") -+ -+#endif -Index: strace-5.7/tests/access--secontext.c -=================================================================== ---- /dev/null 1970-01-01 00:00:00.000000000 +0000 -+++ strace-5.7/tests/access--secontext.c 2021-08-24 21:08:43.296245680 +0200 -@@ -0,0 +1,19 @@ -+/* -+ * Copyright (c) 2021 The strace developers. -+ * All rights reserved. -+ * -+ * SPDX-License-Identifier: GPL-2.0-or-later -+ */ -+ -+#include "tests.h" -+ -+#ifdef HAVE_SELINUX_RUNTIME -+ -+# define TEST_SECONTEXT -+# include "access.c" -+ -+#else -+ -+SKIP_MAIN_UNDEFINED("HAVE_SELINUX_RUNTIME") -+ -+#endif -Index: strace-5.7/tests/chmod--secontext.c -=================================================================== ---- /dev/null 1970-01-01 00:00:00.000000000 +0000 -+++ strace-5.7/tests/chmod--secontext.c 2021-08-24 21:08:43.296245680 +0200 -@@ -0,0 +1,19 @@ -+/* -+ * Copyright (c) 2021 The strace developers. -+ * All rights reserved. -+ * -+ * SPDX-License-Identifier: GPL-2.0-or-later -+ */ -+ -+#include "tests.h" -+ -+#ifdef HAVE_SELINUX_RUNTIME -+ -+# define TEST_SECONTEXT -+# include "chmod.c" -+ -+#else -+ -+SKIP_MAIN_UNDEFINED("HAVE_SELINUX_RUNTIME") -+ -+#endif -Index: strace-5.7/tests/execve--secontext.c -=================================================================== ---- /dev/null 1970-01-01 00:00:00.000000000 +0000 -+++ strace-5.7/tests/execve--secontext.c 2021-08-24 21:08:43.296245680 +0200 -@@ -0,0 +1,19 @@ -+/* -+ * Copyright (c) 2021 The strace developers. -+ * All rights reserved. -+ * -+ * SPDX-License-Identifier: GPL-2.0-or-later -+ */ -+ -+#include "tests.h" -+ -+#ifdef HAVE_SELINUX_RUNTIME -+ -+# define TEST_SECONTEXT -+# include "execve.c" -+ -+#else -+ -+SKIP_MAIN_UNDEFINED("HAVE_SELINUX_RUNTIME") -+ -+#endif -Index: strace-5.7/tests/execveat--secontext.c -=================================================================== ---- /dev/null 1970-01-01 00:00:00.000000000 +0000 -+++ strace-5.7/tests/execveat--secontext.c 2021-08-24 21:08:43.297245671 +0200 -@@ -0,0 +1,19 @@ -+/* -+ * Copyright (c) 2021 The strace developers. -+ * All rights reserved. -+ * -+ * SPDX-License-Identifier: GPL-2.0-or-later -+ */ -+ -+#include "tests.h" -+ -+#ifdef HAVE_SELINUX_RUNTIME -+ -+# define TEST_SECONTEXT -+# include "execveat.c" -+ -+#else -+ -+SKIP_MAIN_UNDEFINED("HAVE_SELINUX_RUNTIME") -+ -+#endif -Index: strace-5.7/tests/faccessat--secontext.c -=================================================================== ---- /dev/null 1970-01-01 00:00:00.000000000 +0000 -+++ strace-5.7/tests/faccessat--secontext.c 2021-08-24 21:08:43.297245671 +0200 -@@ -0,0 +1,19 @@ -+/* -+ * Copyright (c) 2021 The strace developers. -+ * All rights reserved. -+ * -+ * SPDX-License-Identifier: GPL-2.0-or-later -+ */ -+ -+#include "tests.h" -+ -+#ifdef HAVE_SELINUX_RUNTIME -+ -+# define TEST_SECONTEXT -+# include "faccessat.c" -+ -+#else -+ -+SKIP_MAIN_UNDEFINED("HAVE_SELINUX_RUNTIME") -+ -+#endif -Index: strace-5.7/tests/faccessat-y--secontext.c -=================================================================== ---- /dev/null 1970-01-01 00:00:00.000000000 +0000 -+++ strace-5.7/tests/faccessat-y--secontext.c 2021-08-24 21:08:43.297245671 +0200 -@@ -0,0 +1,19 @@ -+/* -+ * Copyright (c) 2021 The strace developers. -+ * All rights reserved. -+ * -+ * SPDX-License-Identifier: GPL-2.0-or-later -+ */ -+ -+#include "tests.h" -+ -+#ifdef HAVE_SELINUX_RUNTIME -+ -+# define TEST_SECONTEXT -+# include "faccessat-y.c" -+ -+#else -+ -+SKIP_MAIN_UNDEFINED("HAVE_SELINUX_RUNTIME") -+ -+#endif -Index: strace-5.7/tests/fanotify_mark--secontext.c -=================================================================== ---- /dev/null 1970-01-01 00:00:00.000000000 +0000 -+++ strace-5.7/tests/fanotify_mark--secontext.c 2021-08-24 21:08:43.297245671 +0200 -@@ -0,0 +1,19 @@ -+/* -+ * Copyright (c) 2021 The strace developers. -+ * All rights reserved. -+ * -+ * SPDX-License-Identifier: GPL-2.0-or-later -+ */ -+ -+#include "tests.h" -+ -+#ifdef HAVE_SELINUX_RUNTIME -+ -+# define TEST_SECONTEXT -+# include "fanotify_mark.c" -+ -+#else -+ -+SKIP_MAIN_UNDEFINED("HAVE_SELINUX_RUNTIME") -+ -+#endif -Index: strace-5.7/tests/fchmod--secontext.c -=================================================================== ---- /dev/null 1970-01-01 00:00:00.000000000 +0000 -+++ strace-5.7/tests/fchmod--secontext.c 2021-08-24 21:08:43.297245671 +0200 -@@ -0,0 +1,19 @@ -+/* -+ * Copyright (c) 2021 The strace developers. -+ * All rights reserved. -+ * -+ * SPDX-License-Identifier: GPL-2.0-or-later -+ */ -+ -+#include "tests.h" -+ -+#ifdef HAVE_SELINUX_RUNTIME -+ -+# define TEST_SECONTEXT -+# include "fchmod.c" -+ -+#else -+ -+SKIP_MAIN_UNDEFINED("HAVE_SELINUX_RUNTIME") -+ -+#endif -Index: strace-5.7/tests/fchmod-y--secontext.c -=================================================================== ---- /dev/null 1970-01-01 00:00:00.000000000 +0000 -+++ strace-5.7/tests/fchmod-y--secontext.c 2021-08-24 21:08:43.297245671 +0200 -@@ -0,0 +1,19 @@ -+/* -+ * Copyright (c) 2021 The strace developers. -+ * All rights reserved. -+ * -+ * SPDX-License-Identifier: GPL-2.0-or-later -+ */ -+ -+#include "tests.h" -+ -+#ifdef HAVE_SELINUX_RUNTIME -+ -+# define TEST_SECONTEXT -+# include "fchmod-y.c" -+ -+#else -+ -+SKIP_MAIN_UNDEFINED("HAVE_SELINUX_RUNTIME") -+ -+#endif -Index: strace-5.7/tests/fchmodat--secontext.c -=================================================================== ---- /dev/null 1970-01-01 00:00:00.000000000 +0000 -+++ strace-5.7/tests/fchmodat--secontext.c 2021-08-24 21:08:43.297245671 +0200 -@@ -0,0 +1,19 @@ -+/* -+ * Copyright (c) 2021 The strace developers. -+ * All rights reserved. -+ * -+ * SPDX-License-Identifier: GPL-2.0-or-later -+ */ -+ -+#include "tests.h" -+ -+#ifdef HAVE_SELINUX_RUNTIME -+ -+# define TEST_SECONTEXT -+# include "fchmodat.c" -+ -+#else -+ -+SKIP_MAIN_UNDEFINED("HAVE_SELINUX_RUNTIME") -+ -+#endif -Index: strace-5.7/tests/fchownat--secontext.c -=================================================================== ---- /dev/null 1970-01-01 00:00:00.000000000 +0000 -+++ strace-5.7/tests/fchownat--secontext.c 2021-08-24 21:08:43.297245671 +0200 -@@ -0,0 +1,19 @@ -+/* -+ * Copyright (c) 2021 The strace developers. -+ * All rights reserved. -+ * -+ * SPDX-License-Identifier: GPL-2.0-or-later -+ */ -+ -+#include "tests.h" -+ -+#ifdef HAVE_SELINUX_RUNTIME -+ -+# define TEST_SECONTEXT -+# include "fchownat.c" -+ -+#else -+ -+SKIP_MAIN_UNDEFINED("HAVE_SELINUX_RUNTIME") -+ -+#endif -Index: strace-5.7/tests/file_handle--secontext.c -=================================================================== ---- /dev/null 1970-01-01 00:00:00.000000000 +0000 -+++ strace-5.7/tests/file_handle--secontext.c 2021-08-24 21:08:43.297245671 +0200 -@@ -0,0 +1,19 @@ -+/* -+ * Copyright (c) 2021 The strace developers. -+ * All rights reserved. -+ * -+ * SPDX-License-Identifier: GPL-2.0-or-later -+ */ -+ -+#include "tests.h" -+ -+#ifdef HAVE_SELINUX_RUNTIME -+ -+# define TEST_SECONTEXT -+# include "file_handle.c" -+ -+#else -+ -+SKIP_MAIN_UNDEFINED("HAVE_SELINUX_RUNTIME") -+ -+#endif -Index: strace-5.7/tests/linkat--secontext.c -=================================================================== ---- /dev/null 1970-01-01 00:00:00.000000000 +0000 -+++ strace-5.7/tests/linkat--secontext.c 2021-08-24 21:08:43.298245663 +0200 -@@ -0,0 +1,19 @@ -+/* -+ * Copyright (c) 2021 The strace developers. -+ * All rights reserved. -+ * -+ * SPDX-License-Identifier: GPL-2.0-or-later -+ */ -+ -+#include "tests.h" -+ -+#ifdef HAVE_SELINUX_RUNTIME -+ -+# define TEST_SECONTEXT -+# include "linkat.c" -+ -+#else -+ -+SKIP_MAIN_UNDEFINED("HAVE_SELINUX_RUNTIME") -+ -+#endif -Index: strace-5.7/tests/open--secontext.c -=================================================================== ---- /dev/null 1970-01-01 00:00:00.000000000 +0000 -+++ strace-5.7/tests/open--secontext.c 2021-08-24 21:08:43.298245663 +0200 -@@ -0,0 +1,19 @@ -+/* -+ * Copyright (c) 2021 The strace developers. -+ * All rights reserved. -+ * -+ * SPDX-License-Identifier: GPL-2.0-or-later -+ */ -+ -+#include "tests.h" -+ -+#ifdef HAVE_SELINUX_RUNTIME -+ -+# define TEST_SECONTEXT -+# include "open.c" -+ -+#else -+ -+SKIP_MAIN_UNDEFINED("HAVE_SELINUX_RUNTIME") -+ -+#endif -Index: strace-5.7/tests/openat--secontext.c -=================================================================== ---- /dev/null 1970-01-01 00:00:00.000000000 +0000 -+++ strace-5.7/tests/openat--secontext.c 2021-08-24 21:08:43.298245663 +0200 -@@ -0,0 +1,19 @@ -+/* -+ * Copyright (c) 2021 The strace developers. -+ * All rights reserved. -+ * -+ * SPDX-License-Identifier: GPL-2.0-or-later -+ */ -+ -+#include "tests.h" -+ -+#ifdef HAVE_SELINUX_RUNTIME -+ -+# define TEST_SECONTEXT -+# include "openat.c" -+ -+#else -+ -+SKIP_MAIN_UNDEFINED("HAVE_SELINUX_RUNTIME") -+ -+#endif -Index: strace-5.7/tests-m32/access--secontext_full.c -=================================================================== ---- /dev/null 1970-01-01 00:00:00.000000000 +0000 -+++ strace-5.7/tests-m32/access--secontext_full.c 2021-08-24 21:08:43.298245663 +0200 -@@ -0,0 +1,2 @@ -+#define PRINT_SECONTEXT_FULL -+#include "access--secontext.c" -Index: strace-5.7/tests-m32/chmod--secontext_full.c -=================================================================== ---- /dev/null 1970-01-01 00:00:00.000000000 +0000 -+++ strace-5.7/tests-m32/chmod--secontext_full.c 2021-08-24 21:08:43.298245663 +0200 -@@ -0,0 +1,2 @@ -+#define PRINT_SECONTEXT_FULL -+#include "chmod--secontext.c" -Index: strace-5.7/tests-m32/execve--secontext_full.c -=================================================================== ---- /dev/null 1970-01-01 00:00:00.000000000 +0000 -+++ strace-5.7/tests-m32/execve--secontext_full.c 2021-08-24 21:08:43.298245663 +0200 -@@ -0,0 +1,2 @@ -+#define PRINT_SECONTEXT_FULL -+#include "execve--secontext.c" -Index: strace-5.7/tests-m32/execveat--secontext_full.c -=================================================================== ---- /dev/null 1970-01-01 00:00:00.000000000 +0000 -+++ strace-5.7/tests-m32/execveat--secontext_full.c 2021-08-24 21:08:43.298245663 +0200 -@@ -0,0 +1,2 @@ -+#define PRINT_SECONTEXT_FULL -+#include "execveat--secontext.c" -Index: strace-5.7/tests-m32/faccessat--secontext_full.c -=================================================================== ---- /dev/null 1970-01-01 00:00:00.000000000 +0000 -+++ strace-5.7/tests-m32/faccessat--secontext_full.c 2021-08-24 21:08:43.298245663 +0200 -@@ -0,0 +1,2 @@ -+#define PRINT_SECONTEXT_FULL -+#include "faccessat--secontext.c" -Index: strace-5.7/tests-m32/faccessat-y--secontext_full.c -=================================================================== ---- /dev/null 1970-01-01 00:00:00.000000000 +0000 -+++ strace-5.7/tests-m32/faccessat-y--secontext_full.c 2021-08-24 21:08:43.298245663 +0200 -@@ -0,0 +1,2 @@ -+#define PRINT_SECONTEXT_FULL -+#include "faccessat-y--secontext.c" -Index: strace-5.7/tests-m32/fanotify_mark--secontext_full.c -=================================================================== ---- /dev/null 1970-01-01 00:00:00.000000000 +0000 -+++ strace-5.7/tests-m32/fanotify_mark--secontext_full.c 2021-08-24 21:08:43.298245663 +0200 -@@ -0,0 +1,2 @@ -+#define PRINT_SECONTEXT_FULL -+#include "fanotify_mark--secontext.c" -Index: strace-5.7/tests-m32/fchmod--secontext_full.c -=================================================================== ---- /dev/null 1970-01-01 00:00:00.000000000 +0000 -+++ strace-5.7/tests-m32/fchmod--secontext_full.c 2021-08-24 21:08:43.299245654 +0200 -@@ -0,0 +1,2 @@ -+#define PRINT_SECONTEXT_FULL -+#include "fchmod--secontext.c" -Index: strace-5.7/tests-m32/fchmod-y--secontext_full.c -=================================================================== ---- /dev/null 1970-01-01 00:00:00.000000000 +0000 -+++ strace-5.7/tests-m32/fchmod-y--secontext_full.c 2021-08-24 21:08:43.299245654 +0200 -@@ -0,0 +1,2 @@ -+#define PRINT_SECONTEXT_FULL -+#include "fchmod-y--secontext.c" -Index: strace-5.7/tests-m32/fchmodat--secontext_full.c -=================================================================== ---- /dev/null 1970-01-01 00:00:00.000000000 +0000 -+++ strace-5.7/tests-m32/fchmodat--secontext_full.c 2021-08-24 21:08:43.299245654 +0200 -@@ -0,0 +1,2 @@ -+#define PRINT_SECONTEXT_FULL -+#include "fchmodat--secontext.c" -Index: strace-5.7/tests-m32/fchownat--secontext_full.c -=================================================================== ---- /dev/null 1970-01-01 00:00:00.000000000 +0000 -+++ strace-5.7/tests-m32/fchownat--secontext_full.c 2021-08-24 21:08:43.299245654 +0200 -@@ -0,0 +1,2 @@ -+#define PRINT_SECONTEXT_FULL -+#include "fchownat--secontext.c" -Index: strace-5.7/tests-m32/file_handle--secontext_full.c -=================================================================== ---- /dev/null 1970-01-01 00:00:00.000000000 +0000 -+++ strace-5.7/tests-m32/file_handle--secontext_full.c 2021-08-24 21:08:43.299245654 +0200 -@@ -0,0 +1,2 @@ -+#define PRINT_SECONTEXT_FULL -+#include "file_handle--secontext.c" -Index: strace-5.7/tests-m32/linkat--secontext_full.c -=================================================================== ---- /dev/null 1970-01-01 00:00:00.000000000 +0000 -+++ strace-5.7/tests-m32/linkat--secontext_full.c 2021-08-24 21:08:43.299245654 +0200 -@@ -0,0 +1,2 @@ -+#define PRINT_SECONTEXT_FULL -+#include "linkat--secontext.c" -Index: strace-5.7/tests-m32/open--secontext_full.c -=================================================================== ---- /dev/null 1970-01-01 00:00:00.000000000 +0000 -+++ strace-5.7/tests-m32/open--secontext_full.c 2021-08-24 21:08:43.299245654 +0200 -@@ -0,0 +1,2 @@ -+#define PRINT_SECONTEXT_FULL -+#include "open--secontext.c" -Index: strace-5.7/tests-m32/openat--secontext_full.c -=================================================================== ---- /dev/null 1970-01-01 00:00:00.000000000 +0000 -+++ strace-5.7/tests-m32/openat--secontext_full.c 2021-08-24 21:08:43.299245654 +0200 -@@ -0,0 +1,2 @@ -+#define PRINT_SECONTEXT_FULL -+#include "openat--secontext.c" -Index: strace-5.7/tests-mx32/access--secontext_full.c -=================================================================== ---- /dev/null 1970-01-01 00:00:00.000000000 +0000 -+++ strace-5.7/tests-mx32/access--secontext_full.c 2021-08-24 21:08:43.299245654 +0200 -@@ -0,0 +1,2 @@ -+#define PRINT_SECONTEXT_FULL -+#include "access--secontext.c" -Index: strace-5.7/tests-mx32/chmod--secontext_full.c -=================================================================== ---- /dev/null 1970-01-01 00:00:00.000000000 +0000 -+++ strace-5.7/tests-mx32/chmod--secontext_full.c 2021-08-24 21:08:43.299245654 +0200 -@@ -0,0 +1,2 @@ -+#define PRINT_SECONTEXT_FULL -+#include "chmod--secontext.c" -Index: strace-5.7/tests-mx32/execve--secontext_full.c -=================================================================== ---- /dev/null 1970-01-01 00:00:00.000000000 +0000 -+++ strace-5.7/tests-mx32/execve--secontext_full.c 2021-08-24 21:08:43.300245646 +0200 -@@ -0,0 +1,2 @@ -+#define PRINT_SECONTEXT_FULL -+#include "execve--secontext.c" -Index: strace-5.7/tests-mx32/execveat--secontext_full.c -=================================================================== ---- /dev/null 1970-01-01 00:00:00.000000000 +0000 -+++ strace-5.7/tests-mx32/execveat--secontext_full.c 2021-08-24 21:08:43.300245646 +0200 -@@ -0,0 +1,2 @@ -+#define PRINT_SECONTEXT_FULL -+#include "execveat--secontext.c" -Index: strace-5.7/tests-mx32/faccessat--secontext_full.c -=================================================================== ---- /dev/null 1970-01-01 00:00:00.000000000 +0000 -+++ strace-5.7/tests-mx32/faccessat--secontext_full.c 2021-08-24 21:08:43.300245646 +0200 -@@ -0,0 +1,2 @@ -+#define PRINT_SECONTEXT_FULL -+#include "faccessat--secontext.c" -Index: strace-5.7/tests-mx32/faccessat-y--secontext_full.c -=================================================================== ---- /dev/null 1970-01-01 00:00:00.000000000 +0000 -+++ strace-5.7/tests-mx32/faccessat-y--secontext_full.c 2021-08-24 21:08:43.300245646 +0200 -@@ -0,0 +1,2 @@ -+#define PRINT_SECONTEXT_FULL -+#include "faccessat-y--secontext.c" -Index: strace-5.7/tests-mx32/fanotify_mark--secontext_full.c -=================================================================== ---- /dev/null 1970-01-01 00:00:00.000000000 +0000 -+++ strace-5.7/tests-mx32/fanotify_mark--secontext_full.c 2021-08-24 21:08:43.300245646 +0200 -@@ -0,0 +1,2 @@ -+#define PRINT_SECONTEXT_FULL -+#include "fanotify_mark--secontext.c" -Index: strace-5.7/tests-mx32/fchmod--secontext_full.c -=================================================================== ---- /dev/null 1970-01-01 00:00:00.000000000 +0000 -+++ strace-5.7/tests-mx32/fchmod--secontext_full.c 2021-08-24 21:08:43.300245646 +0200 -@@ -0,0 +1,2 @@ -+#define PRINT_SECONTEXT_FULL -+#include "fchmod--secontext.c" -Index: strace-5.7/tests-mx32/fchmod-y--secontext_full.c -=================================================================== ---- /dev/null 1970-01-01 00:00:00.000000000 +0000 -+++ strace-5.7/tests-mx32/fchmod-y--secontext_full.c 2021-08-24 21:08:43.300245646 +0200 -@@ -0,0 +1,2 @@ -+#define PRINT_SECONTEXT_FULL -+#include "fchmod-y--secontext.c" -Index: strace-5.7/tests-mx32/fchmodat--secontext_full.c -=================================================================== ---- /dev/null 1970-01-01 00:00:00.000000000 +0000 -+++ strace-5.7/tests-mx32/fchmodat--secontext_full.c 2021-08-24 21:08:43.301245637 +0200 -@@ -0,0 +1,2 @@ -+#define PRINT_SECONTEXT_FULL -+#include "fchmodat--secontext.c" -Index: strace-5.7/tests-mx32/fchownat--secontext_full.c -=================================================================== ---- /dev/null 1970-01-01 00:00:00.000000000 +0000 -+++ strace-5.7/tests-mx32/fchownat--secontext_full.c 2021-08-24 21:08:43.301245637 +0200 -@@ -0,0 +1,2 @@ -+#define PRINT_SECONTEXT_FULL -+#include "fchownat--secontext.c" -Index: strace-5.7/tests-mx32/file_handle--secontext_full.c -=================================================================== ---- /dev/null 1970-01-01 00:00:00.000000000 +0000 -+++ strace-5.7/tests-mx32/file_handle--secontext_full.c 2021-08-24 21:08:43.301245637 +0200 -@@ -0,0 +1,2 @@ -+#define PRINT_SECONTEXT_FULL -+#include "file_handle--secontext.c" -Index: strace-5.7/tests-mx32/linkat--secontext_full.c -=================================================================== ---- /dev/null 1970-01-01 00:00:00.000000000 +0000 -+++ strace-5.7/tests-mx32/linkat--secontext_full.c 2021-08-24 21:08:43.301245637 +0200 -@@ -0,0 +1,2 @@ -+#define PRINT_SECONTEXT_FULL -+#include "linkat--secontext.c" -Index: strace-5.7/tests-mx32/open--secontext_full.c -=================================================================== ---- /dev/null 1970-01-01 00:00:00.000000000 +0000 -+++ strace-5.7/tests-mx32/open--secontext_full.c 2021-08-24 21:08:43.301245637 +0200 -@@ -0,0 +1,2 @@ -+#define PRINT_SECONTEXT_FULL -+#include "open--secontext.c" -Index: strace-5.7/tests-mx32/openat--secontext_full.c -=================================================================== ---- /dev/null 1970-01-01 00:00:00.000000000 +0000 -+++ strace-5.7/tests-mx32/openat--secontext_full.c 2021-08-24 21:08:43.301245637 +0200 -@@ -0,0 +1,2 @@ -+#define PRINT_SECONTEXT_FULL -+#include "openat--secontext.c" -Index: strace-5.7/tests/access--secontext_full.c -=================================================================== ---- /dev/null 1970-01-01 00:00:00.000000000 +0000 -+++ strace-5.7/tests/access--secontext_full.c 2021-08-24 21:08:43.301245637 +0200 -@@ -0,0 +1,2 @@ -+#define PRINT_SECONTEXT_FULL -+#include "access--secontext.c" -Index: strace-5.7/tests/chmod--secontext_full.c -=================================================================== ---- /dev/null 1970-01-01 00:00:00.000000000 +0000 -+++ strace-5.7/tests/chmod--secontext_full.c 2021-08-24 21:08:43.302245629 +0200 -@@ -0,0 +1,2 @@ -+#define PRINT_SECONTEXT_FULL -+#include "chmod--secontext.c" -Index: strace-5.7/tests/execve--secontext_full.c -=================================================================== ---- /dev/null 1970-01-01 00:00:00.000000000 +0000 -+++ strace-5.7/tests/execve--secontext_full.c 2021-08-24 21:08:43.302245629 +0200 -@@ -0,0 +1,2 @@ -+#define PRINT_SECONTEXT_FULL -+#include "execve--secontext.c" -Index: strace-5.7/tests/execveat--secontext_full.c -=================================================================== ---- /dev/null 1970-01-01 00:00:00.000000000 +0000 -+++ strace-5.7/tests/execveat--secontext_full.c 2021-08-24 21:08:43.302245629 +0200 -@@ -0,0 +1,2 @@ -+#define PRINT_SECONTEXT_FULL -+#include "execveat--secontext.c" -Index: strace-5.7/tests/faccessat--secontext_full.c -=================================================================== ---- /dev/null 1970-01-01 00:00:00.000000000 +0000 -+++ strace-5.7/tests/faccessat--secontext_full.c 2021-08-24 21:08:43.302245629 +0200 -@@ -0,0 +1,2 @@ -+#define PRINT_SECONTEXT_FULL -+#include "faccessat--secontext.c" -Index: strace-5.7/tests/faccessat-y--secontext_full.c -=================================================================== ---- /dev/null 1970-01-01 00:00:00.000000000 +0000 -+++ strace-5.7/tests/faccessat-y--secontext_full.c 2021-08-24 21:08:43.302245629 +0200 -@@ -0,0 +1,2 @@ -+#define PRINT_SECONTEXT_FULL -+#include "faccessat-y--secontext.c" -Index: strace-5.7/tests/fanotify_mark--secontext_full.c -=================================================================== ---- /dev/null 1970-01-01 00:00:00.000000000 +0000 -+++ strace-5.7/tests/fanotify_mark--secontext_full.c 2021-08-24 21:08:43.302245629 +0200 -@@ -0,0 +1,2 @@ -+#define PRINT_SECONTEXT_FULL -+#include "fanotify_mark--secontext.c" -Index: strace-5.7/tests/fchmod--secontext_full.c -=================================================================== ---- /dev/null 1970-01-01 00:00:00.000000000 +0000 -+++ strace-5.7/tests/fchmod--secontext_full.c 2021-08-24 21:08:43.302245629 +0200 -@@ -0,0 +1,2 @@ -+#define PRINT_SECONTEXT_FULL -+#include "fchmod--secontext.c" -Index: strace-5.7/tests/fchmod-y--secontext_full.c -=================================================================== ---- /dev/null 1970-01-01 00:00:00.000000000 +0000 -+++ strace-5.7/tests/fchmod-y--secontext_full.c 2021-08-24 21:08:43.303245621 +0200 -@@ -0,0 +1,2 @@ -+#define PRINT_SECONTEXT_FULL -+#include "fchmod-y--secontext.c" -Index: strace-5.7/tests/fchmodat--secontext_full.c -=================================================================== ---- /dev/null 1970-01-01 00:00:00.000000000 +0000 -+++ strace-5.7/tests/fchmodat--secontext_full.c 2021-08-24 21:08:43.303245621 +0200 -@@ -0,0 +1,2 @@ -+#define PRINT_SECONTEXT_FULL -+#include "fchmodat--secontext.c" -Index: strace-5.7/tests/fchownat--secontext_full.c -=================================================================== ---- /dev/null 1970-01-01 00:00:00.000000000 +0000 -+++ strace-5.7/tests/fchownat--secontext_full.c 2021-08-24 21:08:43.303245621 +0200 -@@ -0,0 +1,2 @@ -+#define PRINT_SECONTEXT_FULL -+#include "fchownat--secontext.c" -Index: strace-5.7/tests/file_handle--secontext_full.c -=================================================================== ---- /dev/null 1970-01-01 00:00:00.000000000 +0000 -+++ strace-5.7/tests/file_handle--secontext_full.c 2021-08-24 21:08:43.303245621 +0200 -@@ -0,0 +1,2 @@ -+#define PRINT_SECONTEXT_FULL -+#include "file_handle--secontext.c" -Index: strace-5.7/tests/linkat--secontext_full.c -=================================================================== ---- /dev/null 1970-01-01 00:00:00.000000000 +0000 -+++ strace-5.7/tests/linkat--secontext_full.c 2021-08-24 21:08:43.303245621 +0200 -@@ -0,0 +1,2 @@ -+#define PRINT_SECONTEXT_FULL -+#include "linkat--secontext.c" -Index: strace-5.7/tests/open--secontext_full.c -=================================================================== ---- /dev/null 1970-01-01 00:00:00.000000000 +0000 -+++ strace-5.7/tests/open--secontext_full.c 2021-08-24 21:08:43.303245621 +0200 -@@ -0,0 +1,2 @@ -+#define PRINT_SECONTEXT_FULL -+#include "open--secontext.c" -Index: strace-5.7/tests/openat--secontext_full.c -=================================================================== ---- /dev/null 1970-01-01 00:00:00.000000000 +0000 -+++ strace-5.7/tests/openat--secontext_full.c 2021-08-24 21:08:43.303245621 +0200 -@@ -0,0 +1,2 @@ -+#define PRINT_SECONTEXT_FULL -+#include "openat--secontext.c" -Index: strace-5.7/config.h.in -=================================================================== ---- strace-5.7.orig/config.h.in 2021-08-24 21:08:35.510311579 +0200 -+++ strace-5.7/config.h.in 2021-08-24 21:08:43.304245612 +0200 -@@ -36,6 +36,9 @@ - /* Define to 1 if you want OABI support on ARM EABI. */ - #undef ENABLE_ARM_OABI - -+/* Define to enable SELinux security contexts support */ -+#undef ENABLE_SECONTEXT -+ - /* Define to enable stack tracing support */ - #undef ENABLE_STACKTRACE - -@@ -2253,6 +2256,12 @@ - /* Define to 1 if you have the header file. */ - #undef HAVE_SCSI_SG_H - -+/* Define to enable SELinux security contexts testing */ -+#undef HAVE_SELINUX_RUNTIME -+ -+/* Define to 1 if you have the header file. */ -+#undef HAVE_SELINUX_SELINUX_H -+ - /* Define to 1 if `si_overrun' is a member of `siginfo_t'. */ - #undef HAVE_SIGINFO_T_SI_OVERRUN - -Index: strace-5.7/configure -=================================================================== ---- strace-5.7.orig/configure 2021-08-24 17:01:46.714990240 +0200 -+++ strace-5.7/configure 2021-08-24 21:08:43.315245519 +0200 -@@ -641,10 +641,14 @@ - VALGRIND - HAVE_MX32_MPERS_FALSE - HAVE_MX32_MPERS_TRUE -+HAVE_MX32_SELINUX_RUNTIME_FALSE -+HAVE_MX32_SELINUX_RUNTIME_TRUE - HAVE_MX32_RUNTIME_FALSE - HAVE_MX32_RUNTIME_TRUE - HAVE_M32_MPERS_FALSE - HAVE_M32_MPERS_TRUE -+HAVE_M32_SELINUX_RUNTIME_FALSE -+HAVE_M32_SELINUX_RUNTIME_TRUE - HAVE_M32_RUNTIME_FALSE - HAVE_M32_RUNTIME_TRUE - CFLAGS_FOR_MX32 -@@ -655,6 +659,13 @@ - CPPFLAGS_FOR_M32 - CPP_FOR_M32 - CC_FOR_M32 -+HAVE_SELINUX_RUNTIME_FALSE -+HAVE_SELINUX_RUNTIME_TRUE -+ENABLE_SECONTEXT_FALSE -+ENABLE_SECONTEXT_TRUE -+libselinux_CPPFLAGS -+libselinux_LDFLAGS -+libselinux_LIBS - USE_DEMANGLE_FALSE - USE_DEMANGLE_TRUE - libiberty_CPPFLAGS -@@ -827,6 +838,7 @@ - with_libdw - with_libunwind - with_libiberty -+with_libselinux - enable_mpers - enable_valgrind - enable_valgrind_memcheck -@@ -1498,6 +1510,7 @@ - - --with-libunwind use libunwind to implement stack tracing support - --with-libiberty use libiberty to demangle symbols in stack trace -+ --with-libselinux use libselinux to collect security contexts - - Some influential environment variables: - CC C compiler command -@@ -22728,6 +22741,203 @@ - - - -+ -+libselinux_CPPFLAGS= -+libselinux_LDFLAGS= -+libselinux_LIBS= -+enable_secontext=no -+ -+ -+# Check whether --with-libselinux was given. -+if test "${with_libselinux+set}" = set; then : -+ withval=$with_libselinux; case "${withval}" in -+ yes|no|check) ;; -+ *) with_libselinux=yes -+ libselinux_CPPFLAGS="-I${withval}/include" -+ libselinux_LDFLAGS="-L${withval}/lib" ;; -+ esac -+else -+ with_libselinux=check -+ -+fi -+ -+ -+if test "x$with_libselinux" != xno; then : -+ saved_CPPFLAGS="$CPPFLAGS" -+ CPPFLAGS="$CPPFLAGS $libselinux_CPPFLAGS" -+ found_selinux_h=no -+ for ac_header in selinux/selinux.h -+do : -+ ac_fn_c_check_header_mongrel "$LINENO" "selinux/selinux.h" "ac_cv_header_selinux_selinux_h" "$ac_includes_default" -+if test "x$ac_cv_header_selinux_selinux_h" = xyes; then : -+ cat >>confdefs.h <<_ACEOF -+#define HAVE_SELINUX_SELINUX_H 1 -+_ACEOF -+ found_selinux_h=yes -+fi -+ -+done -+ -+ CPPFLAGS="$saved_CPPFLAGS" -+ if test "x$found_selinux_h" = xyes; then : -+ saved_LDFLAGS="$LDFLAGS" -+ LDFLAGS="$LDFLAGS $libselinux_LDFLAGS" -+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking for getpidcon in -lselinux" >&5 -+$as_echo_n "checking for getpidcon in -lselinux... " >&6; } -+if ${ac_cv_lib_selinux_getpidcon+:} false; then : -+ $as_echo_n "(cached) " >&6 -+else -+ ac_check_lib_save_LIBS=$LIBS -+LIBS="-lselinux $LIBS" -+cat confdefs.h - <<_ACEOF >conftest.$ac_ext -+/* end confdefs.h. */ -+ -+/* Override any GCC internal prototype to avoid an error. -+ Use char because int might match the return type of a GCC -+ builtin and then its argument prototype would still apply. */ -+#ifdef __cplusplus -+extern "C" -+#endif -+char getpidcon (); -+int -+main () -+{ -+return getpidcon (); -+ ; -+ return 0; -+} -+_ACEOF -+if ac_fn_c_try_link "$LINENO"; then : -+ ac_cv_lib_selinux_getpidcon=yes -+else -+ ac_cv_lib_selinux_getpidcon=no -+fi -+rm -f core conftest.err conftest.$ac_objext \ -+ conftest$ac_exeext conftest.$ac_ext -+LIBS=$ac_check_lib_save_LIBS -+fi -+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_selinux_getpidcon" >&5 -+$as_echo "$ac_cv_lib_selinux_getpidcon" >&6; } -+if test "x$ac_cv_lib_selinux_getpidcon" = xyes; then : -+ libselinux_LIBS="-lselinux" -+ enable_secontext=yes -+ -+else -+ if test "x$with_libselinux" != xcheck; then -+ { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 -+$as_echo "$as_me: error: in \`$ac_pwd':" >&2;} -+as_fn_error $? "failed to find getpidcon in libselinux -+See \`config.log' for more details" "$LINENO" 5; } -+ fi -+ -+ -+fi -+ -+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking for getfilecon in -lselinux" >&5 -+$as_echo_n "checking for getfilecon in -lselinux... " >&6; } -+if ${ac_cv_lib_selinux_getfilecon+:} false; then : -+ $as_echo_n "(cached) " >&6 -+else -+ ac_check_lib_save_LIBS=$LIBS -+LIBS="-lselinux $LIBS" -+cat confdefs.h - <<_ACEOF >conftest.$ac_ext -+/* end confdefs.h. */ -+ -+/* Override any GCC internal prototype to avoid an error. -+ Use char because int might match the return type of a GCC -+ builtin and then its argument prototype would still apply. */ -+#ifdef __cplusplus -+extern "C" -+#endif -+char getfilecon (); -+int -+main () -+{ -+return getfilecon (); -+ ; -+ return 0; -+} -+_ACEOF -+if ac_fn_c_try_link "$LINENO"; then : -+ ac_cv_lib_selinux_getfilecon=yes -+else -+ ac_cv_lib_selinux_getfilecon=no -+fi -+rm -f core conftest.err conftest.$ac_objext \ -+ conftest$ac_exeext conftest.$ac_ext -+LIBS=$ac_check_lib_save_LIBS -+fi -+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_selinux_getfilecon" >&5 -+$as_echo "$ac_cv_lib_selinux_getfilecon" >&6; } -+if test "x$ac_cv_lib_selinux_getfilecon" = xyes; then : -+ libselinux_LIBS="-lselinux" -+ enable_secontext=yes -+ -+else -+ if test "x$with_libselinux" != xcheck; then -+ { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 -+$as_echo "$as_me: error: in \`$ac_pwd':" >&2;} -+as_fn_error $? "failed to find getfilecon in libselinux -+See \`config.log' for more details" "$LINENO" 5; } -+ fi -+ -+ -+fi -+ -+ LDFLAGS="$saved_LDFLAGS" -+ -+else -+ if test "x$with_libselinux" != xcheck; then -+ { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 -+$as_echo "$as_me: error: in \`$ac_pwd':" >&2;} -+as_fn_error $? "failed to find selinux.h -+See \`config.log' for more details" "$LINENO" 5; } -+ fi -+ -+ -+fi -+ -+ -+fi -+ -+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether to enable security contexts support" >&5 -+$as_echo_n "checking whether to enable security contexts support... " >&6; } -+if test "x$enable_secontext" = xyes; then : -+ -+$as_echo "#define ENABLE_SECONTEXT 1" >>confdefs.h -+ -+ -+$as_echo "#define HAVE_SELINUX_RUNTIME 1" >>confdefs.h -+ -+ -+ -+ -+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 -+$as_echo "yes" >&6; } -+else -+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -+$as_echo "no" >&6; } -+fi -+ -+ if test "x$enable_secontext" = xyes; then -+ ENABLE_SECONTEXT_TRUE= -+ ENABLE_SECONTEXT_FALSE='#' -+else -+ ENABLE_SECONTEXT_TRUE='#' -+ ENABLE_SECONTEXT_FALSE= -+fi -+ -+ if test "x$enable_secontext" = xyes; then -+ HAVE_SELINUX_RUNTIME_TRUE= -+ HAVE_SELINUX_RUNTIME_FALSE='#' -+else -+ HAVE_SELINUX_RUNTIME_TRUE='#' -+ HAVE_SELINUX_RUNTIME_FALSE= -+fi -+ -+ -+ -+ - if test "$arch" = mips && test "$no_create" != yes; then - mkdir -p linux/mips - if $srcdir/linux/mips/genstub.sh \ -@@ -22839,6 +23049,8 @@ - - - -+ -+ - if test -n "${CC+set}"; then : - st_saved_CC="${CC}"; unset CC - fi -@@ -22964,6 +23176,47 @@ - fi - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $st_cv_m32_mpers" >&5 - $as_echo "$st_cv_m32_mpers" >&6; } -+ if test "x$enable_secontext$st_cv_m32_mpers$st_cv_m32_runtime" = xyesyesyes; then : -+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether selinux runtime works with m32 personality" >&5 -+$as_echo_n "checking whether selinux runtime works with m32 personality... " >&6; } -+if ${st_cv_m32_selinux_runtime+:} false; then : -+ $as_echo_n "(cached) " >&6 -+else -+ saved_CPPFLAGS="$CPPFLAGS" -+ saved_LDFLAGS="$LDFLAGS_FOR_M32" -+ saved_LIBS="$LIBS" -+ CPPFLAGS="$CPPFLAGS $libselinux_CPPFLAGS" -+ LDFLAGS_FOR_M32="$LDFLAGS_FOR_M32 $libselinux_LDFLAGS" -+ LIBS="$LIBS $libselinux_LIBS" -+ cat confdefs.h - <<_ACEOF >conftest.$ac_ext -+/* end confdefs.h. */ -+#include -+int -+main () -+{ -+return 0 -+ ; -+ return 0; -+} -+_ACEOF -+if ac_fn_c_try_link "$LINENO"; then : -+ st_cv_m32_selinux_runtime=yes -+else -+ st_cv_m32_selinux_runtime=no -+fi -+rm -f core conftest.err conftest.$ac_objext \ -+ conftest$ac_exeext conftest.$ac_ext -+ LIBS="$saved_LIBS" -+ LDFLAGS_FOR_M32="$saved_LDFLAGS" -+ CPPFLAGS="$saved_CPPFLAGS" -+ -+fi -+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $st_cv_m32_selinux_runtime" >&5 -+$as_echo "$st_cv_m32_selinux_runtime" >&6; } -+ -+else -+ st_cv_m32_selinux_runtime=no -+fi - if test $st_cv_m32_mpers = yes; then - - $as_echo "#define HAVE_M32_MPERS 1" >>confdefs.h -@@ -23387,6 +23640,7 @@ - *) # case "$enable_mpers" - st_cv_m32_runtime=no - st_cv_m32_mpers=no -+ st_cv_m32_selinux_runtime=no - ;; - esac - -@@ -23418,6 +23672,14 @@ - HAVE_M32_RUNTIME_FALSE= - fi - -+ if test "$st_cv_m32_mpers$st_cv_m32_selinux_runtime" = yesyes; then -+ HAVE_M32_SELINUX_RUNTIME_TRUE= -+ HAVE_M32_SELINUX_RUNTIME_FALSE='#' -+else -+ HAVE_M32_SELINUX_RUNTIME_TRUE='#' -+ HAVE_M32_SELINUX_RUNTIME_FALSE= -+fi -+ - if test "$st_cv_m32_mpers" = yes; then - HAVE_M32_MPERS_TRUE= - HAVE_M32_MPERS_FALSE='#' -@@ -23467,6 +23729,10 @@ - - - -+ -+ -+ -+ - if test -n "${CC+set}"; then : - st_saved_CC="${CC}"; unset CC - fi -@@ -23592,6 +23858,47 @@ - fi - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $st_cv_mx32_mpers" >&5 - $as_echo "$st_cv_mx32_mpers" >&6; } -+ if test "x$enable_secontext$st_cv_mx32_mpers$st_cv_mx32_runtime" = xyesyesyes; then : -+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether selinux runtime works with mx32 personality" >&5 -+$as_echo_n "checking whether selinux runtime works with mx32 personality... " >&6; } -+if ${st_cv_mx32_selinux_runtime+:} false; then : -+ $as_echo_n "(cached) " >&6 -+else -+ saved_CPPFLAGS="$CPPFLAGS" -+ saved_LDFLAGS="$LDFLAGS_FOR_MX32" -+ saved_LIBS="$LIBS" -+ CPPFLAGS="$CPPFLAGS $libselinux_CPPFLAGS" -+ LDFLAGS_FOR_MX32="$LDFLAGS_FOR_MX32 $libselinux_LDFLAGS" -+ LIBS="$LIBS $libselinux_LIBS" -+ cat confdefs.h - <<_ACEOF >conftest.$ac_ext -+/* end confdefs.h. */ -+#include -+int -+main () -+{ -+return 0 -+ ; -+ return 0; -+} -+_ACEOF -+if ac_fn_c_try_link "$LINENO"; then : -+ st_cv_mx32_selinux_runtime=yes -+else -+ st_cv_mx32_selinux_runtime=no -+fi -+rm -f core conftest.err conftest.$ac_objext \ -+ conftest$ac_exeext conftest.$ac_ext -+ LIBS="$saved_LIBS" -+ LDFLAGS_FOR_MX32="$saved_LDFLAGS" -+ CPPFLAGS="$saved_CPPFLAGS" -+ -+fi -+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $st_cv_mx32_selinux_runtime" >&5 -+$as_echo "$st_cv_mx32_selinux_runtime" >&6; } -+ -+else -+ st_cv_mx32_selinux_runtime=no -+fi - if test $st_cv_mx32_mpers = yes; then - - $as_echo "#define HAVE_MX32_MPERS 1" >>confdefs.h -@@ -24015,6 +24322,7 @@ - *) # case "$enable_mpers" - st_cv_mx32_runtime=no - st_cv_mx32_mpers=no -+ st_cv_mx32_selinux_runtime=no - ;; - esac - -@@ -24046,6 +24354,14 @@ - HAVE_MX32_RUNTIME_FALSE= - fi - -+ if test "$st_cv_mx32_mpers$st_cv_mx32_selinux_runtime" = yesyes; then -+ HAVE_MX32_SELINUX_RUNTIME_TRUE= -+ HAVE_MX32_SELINUX_RUNTIME_FALSE='#' -+else -+ HAVE_MX32_SELINUX_RUNTIME_TRUE='#' -+ HAVE_MX32_SELINUX_RUNTIME_FALSE= -+fi -+ - if test "$st_cv_mx32_mpers" = yes; then - HAVE_MX32_MPERS_TRUE= - HAVE_MX32_MPERS_FALSE='#' -@@ -24088,6 +24404,8 @@ - - - -+ -+ - # Check whether --enable-valgrind was given. - if test "${enable_valgrind+set}" = set; then : - enableval=$enable_valgrind; enable_valgrind=$enableval -@@ -24659,10 +24977,22 @@ - as_fn_error $? "conditional \"USE_DEMANGLE\" was never defined. - Usually this means the macro was only invoked conditionally." "$LINENO" 5 - fi -+if test -z "${ENABLE_SECONTEXT_TRUE}" && test -z "${ENABLE_SECONTEXT_FALSE}"; then -+ as_fn_error $? "conditional \"ENABLE_SECONTEXT\" was never defined. -+Usually this means the macro was only invoked conditionally." "$LINENO" 5 -+fi -+if test -z "${HAVE_SELINUX_RUNTIME_TRUE}" && test -z "${HAVE_SELINUX_RUNTIME_FALSE}"; then -+ as_fn_error $? "conditional \"HAVE_SELINUX_RUNTIME\" was never defined. -+Usually this means the macro was only invoked conditionally." "$LINENO" 5 -+fi - if test -z "${HAVE_M32_RUNTIME_TRUE}" && test -z "${HAVE_M32_RUNTIME_FALSE}"; then - as_fn_error $? "conditional \"HAVE_M32_RUNTIME\" was never defined. - Usually this means the macro was only invoked conditionally." "$LINENO" 5 - fi -+if test -z "${HAVE_M32_SELINUX_RUNTIME_TRUE}" && test -z "${HAVE_M32_SELINUX_RUNTIME_FALSE}"; then -+ as_fn_error $? "conditional \"HAVE_M32_SELINUX_RUNTIME\" was never defined. -+Usually this means the macro was only invoked conditionally." "$LINENO" 5 -+fi - if test -z "${HAVE_M32_MPERS_TRUE}" && test -z "${HAVE_M32_MPERS_FALSE}"; then - as_fn_error $? "conditional \"HAVE_M32_MPERS\" was never defined. - Usually this means the macro was only invoked conditionally." "$LINENO" 5 -@@ -24671,6 +25001,10 @@ - as_fn_error $? "conditional \"HAVE_MX32_RUNTIME\" was never defined. - Usually this means the macro was only invoked conditionally." "$LINENO" 5 - fi -+if test -z "${HAVE_MX32_SELINUX_RUNTIME_TRUE}" && test -z "${HAVE_MX32_SELINUX_RUNTIME_FALSE}"; then -+ as_fn_error $? "conditional \"HAVE_MX32_SELINUX_RUNTIME\" was never defined. -+Usually this means the macro was only invoked conditionally." "$LINENO" 5 -+fi - if test -z "${HAVE_MX32_MPERS_TRUE}" && test -z "${HAVE_MX32_MPERS_FALSE}"; then - as_fn_error $? "conditional \"HAVE_MX32_MPERS\" was never defined. - Usually this means the macro was only invoked conditionally." "$LINENO" 5 diff --git a/0155-m4-mpers.m4-generate-HAVE_-_SELINUX_RUNTIME-config-d.patch b/0155-m4-mpers.m4-generate-HAVE_-_SELINUX_RUNTIME-config-d.patch old mode 100755 new mode 100644 index 7eb61f1..d7f05d3 --- a/0155-m4-mpers.m4-generate-HAVE_-_SELINUX_RUNTIME-config-d.patch +++ b/0155-m4-mpers.m4-generate-HAVE_-_SELINUX_RUNTIME-config-d.patch @@ -32,10 +32,10 @@ Index: strace-5.7/m4/mpers.m4 fi CPPFLAGS="$saved_CPPFLAGS" CFLAGS="$saved_CFLAGS" -Index: strace-5.7/config.h.in +Index: strace-5.7/src/config.h.in =================================================================== ---- strace-5.7.orig/config.h.in 2021-08-24 21:08:43.304245612 +0200 -+++ strace-5.7/config.h.in 2021-08-24 21:26:07.437408141 +0200 +--- strace-5.7.orig/src/config.h.in 2021-08-24 21:08:43.304245612 +0200 ++++ strace-5.7/src/config.h.in 2021-08-24 21:26:07.437408141 +0200 @@ -2181,6 +2181,9 @@ /* Define to 1 if you have mpers_name mpers support */ #undef HAVE_M32_MPERS @@ -60,7 +60,7 @@ Index: strace-5.7/configure =================================================================== --- strace-5.7.orig/configure 2021-08-24 21:08:43.315245519 +0200 +++ strace-5.7/configure 2021-08-24 21:26:07.439408124 +0200 -@@ -23632,6 +23632,11 @@ +@@ -19317,6 +19217,11 @@ fi fi @@ -72,7 +72,7 @@ Index: strace-5.7/configure fi CPPFLAGS="$saved_CPPFLAGS" CFLAGS="$saved_CFLAGS" -@@ -24314,6 +24319,11 @@ +@@ -20001,6 +20006,11 @@ fi fi diff --git a/0156-Introduce-GLIBC_PREREQ_GE-and-GLIBC_PREREQ_LT-macros.patch b/0156-Introduce-GLIBC_PREREQ_GE-and-GLIBC_PREREQ_LT-macros.patch deleted file mode 100755 index 0ad0eef..0000000 --- a/0156-Introduce-GLIBC_PREREQ_GE-and-GLIBC_PREREQ_LT-macros.patch +++ /dev/null @@ -1,209 +0,0 @@ -From 21bbf3a53b8be9b3fe90bcdb66c7ded35bc3e344 Mon Sep 17 00:00:00 2001 -From: "Dmitry V. Levin" -Date: Sat, 12 Sep 2020 08:00:00 +0000 -Subject: [PATCH 156/162] Introduce GLIBC_PREREQ_GE and GLIBC_PREREQ_LT macros - -* gcc_compat.h (GLIBC_PREREQ_GE, GLIBC_PREREQ_LT): New macros. -* tests/ipc_msg.c: Use GLIBC_PREREQ_LT instead of manual checking -for __GLIBC__ and __GLIBC_MINOR__. -* tests/readahead.c: Likewise. ---- - gcc_compat.h | 15 +++++++++++++++ - tests/ipc_msg.c | 9 +++------ - tests/readahead.c | 16 ++++++---------- - 3 files changed, 24 insertions(+), 16 deletions(-) - -diff --git a/gcc_compat.h b/gcc_compat.h -index 0525b5e..4c23ebc 100644 ---- a/gcc_compat.h -+++ b/gcc_compat.h -@@ -23,6 +23,21 @@ - # define CLANG_PREREQ(maj, min) 0 - # endif - -+# ifdef __GLIBC__ -+# ifdef __GLIBC_MINOR__ -+# define GLIBC_PREREQ_GE(maj, min) \ -+ ((__GLIBC__ << 16) + __GLIBC_MINOR__ >= ((maj) << 16) + (min)) -+# define GLIBC_PREREQ_LT(maj, min) \ -+ ((__GLIBC__ << 16) + __GLIBC_MINOR__ < ((maj) << 16) + (min)) -+# else /* !__GLIBC_MINOR__ */ -+# define GLIBC_PREREQ_GE(maj, min) 0 -+# define GLIBC_PREREQ_LT(maj, min) 1 -+# endif -+# else /* !__GLIBC__ */ -+# define GLIBC_PREREQ_GE(maj, min) 0 -+# define GLIBC_PREREQ_LT(maj, min) 0 -+# endif -+ - # if !(GNUC_PREREQ(2, 0) || CLANG_PREREQ(1, 0)) - # define __attribute__(x) /* empty */ - # endif -diff --git a/tests/ipc_msg.c b/tests/ipc_msg.c -index 63bdd77..dd0f303 100644 ---- a/tests/ipc_msg.c -+++ b/tests/ipc_msg.c -@@ -26,12 +26,9 @@ - * which led to segmentation fault. - */ - #undef TEST_MSGCTL_BOGUS_ADDR --#if defined __GLIBC__ && (defined POWERPC64 || defined POWERPC64LE) --# if !(defined __GLIBC_MINOR__) \ -- || ((__GLIBC__ << 16) + __GLIBC_MINOR__ < (2 << 16) + 23) --# define TEST_MSGCTL_BOGUS_ADDR 0 --# endif --#endif /* __GLIBC__ && (POWERPC64 || POWERPC64LE) */ -+#if GLIBC_PREREQ_LT(2, 23) && (defined POWERPC64 || defined POWERPC64LE) -+# define TEST_MSGCTL_BOGUS_ADDR 0 -+#endif - - #ifndef TEST_MSGCTL_BOGUS_ADDR - # define TEST_MSGCTL_BOGUS_ADDR 1 -diff --git a/tests/readahead.c b/tests/readahead.c -index 86d09b0..6f4b81e 100644 ---- a/tests/readahead.c -+++ b/tests/readahead.c -@@ -11,24 +11,20 @@ - - #ifdef HAVE_READAHEAD - /* Check for glibc readahead argument passing bugs. */ --# ifdef __GLIBC__ - /* - * glibc < 2.8 had an incorrect order of higher and lower parts of offset, - * see https://sourceware.org/bugzilla/show_bug.cgi?id=5208 - */ --# if !(defined __GLIBC_MINOR__ && \ -- (__GLIBC__ << 16) + __GLIBC_MINOR__ >= (2 << 16) + 8) --# undef HAVE_READAHEAD --# endif /* glibc < 2.8 */ -+# if GLIBC_PREREQ_LT(2, 8) -+# undef HAVE_READAHEAD -+# endif /* glibc < 2.8 */ - /* - * glibc < 2.25 had an incorrect implementation on mips n64, - * see https://sourceware.org/bugzilla/show_bug.cgi?id=21026 - */ --# if defined LINUX_MIPSN64 && !(defined __GLIBC_MINOR__ && \ -- (__GLIBC__ << 16) + __GLIBC_MINOR__ >= (2 << 16) + 25) --# undef HAVE_READAHEAD --# endif /* LINUX_MIPSN64 && glibc < 2.25 */ --# endif /* __GLIBC__ */ -+# if GLIBC_PREREQ_LT(2, 25) && defined LINUX_MIPSN64 -+# undef HAVE_READAHEAD -+# endif /* LINUX_MIPSN64 && glibc < 2.25 */ - #endif /* HAVE_READAHEAD */ - - #ifdef HAVE_READAHEAD -diff --git a/tests-m32/ipc_msg.c b/tests-m32/ipc_msg.c -index 63bdd77..dd0f303 100644 ---- a/tests-m32/ipc_msg.c -+++ b/tests-m32/ipc_msg.c -@@ -26,12 +26,9 @@ - * which led to segmentation fault. - */ - #undef TEST_MSGCTL_BOGUS_ADDR --#if defined __GLIBC__ && (defined POWERPC64 || defined POWERPC64LE) --# if !(defined __GLIBC_MINOR__) \ -- || ((__GLIBC__ << 16) + __GLIBC_MINOR__ < (2 << 16) + 23) --# define TEST_MSGCTL_BOGUS_ADDR 0 --# endif --#endif /* __GLIBC__ && (POWERPC64 || POWERPC64LE) */ -+#if GLIBC_PREREQ_LT(2, 23) && (defined POWERPC64 || defined POWERPC64LE) -+# define TEST_MSGCTL_BOGUS_ADDR 0 -+#endif - - #ifndef TEST_MSGCTL_BOGUS_ADDR - # define TEST_MSGCTL_BOGUS_ADDR 1 -diff --git a/tests-m32/readahead.c b/tests-m32/readahead.c -index 86d09b0..6f4b81e 100644 ---- a/tests-m32/readahead.c -+++ b/tests-m32/readahead.c -@@ -11,24 +11,20 @@ - - #ifdef HAVE_READAHEAD - /* Check for glibc readahead argument passing bugs. */ --# ifdef __GLIBC__ - /* - * glibc < 2.8 had an incorrect order of higher and lower parts of offset, - * see https://sourceware.org/bugzilla/show_bug.cgi?id=5208 - */ --# if !(defined __GLIBC_MINOR__ && \ -- (__GLIBC__ << 16) + __GLIBC_MINOR__ >= (2 << 16) + 8) --# undef HAVE_READAHEAD --# endif /* glibc < 2.8 */ -+# if GLIBC_PREREQ_LT(2, 8) -+# undef HAVE_READAHEAD -+# endif /* glibc < 2.8 */ - /* - * glibc < 2.25 had an incorrect implementation on mips n64, - * see https://sourceware.org/bugzilla/show_bug.cgi?id=21026 - */ --# if defined LINUX_MIPSN64 && !(defined __GLIBC_MINOR__ && \ -- (__GLIBC__ << 16) + __GLIBC_MINOR__ >= (2 << 16) + 25) --# undef HAVE_READAHEAD --# endif /* LINUX_MIPSN64 && glibc < 2.25 */ --# endif /* __GLIBC__ */ -+# if GLIBC_PREREQ_LT(2, 25) && defined LINUX_MIPSN64 -+# undef HAVE_READAHEAD -+# endif /* LINUX_MIPSN64 && glibc < 2.25 */ - #endif /* HAVE_READAHEAD */ - - #ifdef HAVE_READAHEAD -diff --git a/tests-mx32/ipc_msg.c b/tests-mx32/ipc_msg.c -index 63bdd77..dd0f303 100644 ---- a/tests-mx32/ipc_msg.c -+++ b/tests-mx32/ipc_msg.c -@@ -26,12 +26,9 @@ - * which led to segmentation fault. - */ - #undef TEST_MSGCTL_BOGUS_ADDR --#if defined __GLIBC__ && (defined POWERPC64 || defined POWERPC64LE) --# if !(defined __GLIBC_MINOR__) \ -- || ((__GLIBC__ << 16) + __GLIBC_MINOR__ < (2 << 16) + 23) --# define TEST_MSGCTL_BOGUS_ADDR 0 --# endif --#endif /* __GLIBC__ && (POWERPC64 || POWERPC64LE) */ -+#if GLIBC_PREREQ_LT(2, 23) && (defined POWERPC64 || defined POWERPC64LE) -+# define TEST_MSGCTL_BOGUS_ADDR 0 -+#endif - - #ifndef TEST_MSGCTL_BOGUS_ADDR - # define TEST_MSGCTL_BOGUS_ADDR 1 -diff --git a/tests-mx32/readahead.c b/tests-mx32/readahead.c -index 86d09b0..6f4b81e 100644 ---- a/tests-mx32/readahead.c -+++ b/tests-mx32/readahead.c -@@ -11,24 +11,20 @@ - - #ifdef HAVE_READAHEAD - /* Check for glibc readahead argument passing bugs. */ --# ifdef __GLIBC__ - /* - * glibc < 2.8 had an incorrect order of higher and lower parts of offset, - * see https://sourceware.org/bugzilla/show_bug.cgi?id=5208 - */ --# if !(defined __GLIBC_MINOR__ && \ -- (__GLIBC__ << 16) + __GLIBC_MINOR__ >= (2 << 16) + 8) --# undef HAVE_READAHEAD --# endif /* glibc < 2.8 */ -+# if GLIBC_PREREQ_LT(2, 8) -+# undef HAVE_READAHEAD -+# endif /* glibc < 2.8 */ - /* - * glibc < 2.25 had an incorrect implementation on mips n64, - * see https://sourceware.org/bugzilla/show_bug.cgi?id=21026 - */ --# if defined LINUX_MIPSN64 && !(defined __GLIBC_MINOR__ && \ -- (__GLIBC__ << 16) + __GLIBC_MINOR__ >= (2 << 16) + 25) --# undef HAVE_READAHEAD --# endif /* LINUX_MIPSN64 && glibc < 2.25 */ --# endif /* __GLIBC__ */ -+# if GLIBC_PREREQ_LT(2, 25) && defined LINUX_MIPSN64 -+# undef HAVE_READAHEAD -+# endif /* LINUX_MIPSN64 && glibc < 2.25 */ - #endif /* HAVE_READAHEAD */ - - #ifdef HAVE_READAHEAD --- -2.1.4 - diff --git a/0157-tests-ipc_msg.c-disable-TEST_MSGCTL_BOGUS_ADDR-on-gl.patch b/0157-tests-ipc_msg.c-disable-TEST_MSGCTL_BOGUS_ADDR-on-gl.patch deleted file mode 100755 index 351693a..0000000 --- a/0157-tests-ipc_msg.c-disable-TEST_MSGCTL_BOGUS_ADDR-on-gl.patch +++ /dev/null @@ -1,103 +0,0 @@ -From af1e2888699afc985d7f354b875c517531dff4ea Mon Sep 17 00:00:00 2001 -From: "Dmitry V. Levin" -Date: Sat, 12 Sep 2020 08:00:00 +0000 -Subject: [PATCH 157/162] tests/ipc_msg.c: disable TEST_MSGCTL_BOGUS_ADDR on - glibc >= 2.32 - -Starting with commit glibc-2.32~83, on every 32-bit architecture where -32-bit time_t support is enabled, glibc tries to retrieve the data -provided in the third argument of msgctl call. This results to -segfaults inside glibc if TEST_MSGCTL_BOGUS_ADDR is enabled. - -* tests/ipc_msg.c [GLIBC_PREREQ_GE(2, 32) && __TIMESIZE != 64] -(TEST_MSGCTL_BOGUS_ADDR): Define to 0. - -Reported-by: Ruinland ChuanTzu Tsai ---- - tests/ipc_msg.c | 11 ++++++++++- - 1 file changed, 10 insertions(+), 1 deletion(-) - -diff --git a/tests/ipc_msg.c b/tests/ipc_msg.c -index dd0f303..3ab8b90 100644 ---- a/tests/ipc_msg.c -+++ b/tests/ipc_msg.c -@@ -20,12 +20,21 @@ - # define MSG_STAT_ANY 13 - #endif - -+#undef TEST_MSGCTL_BOGUS_ADDR -+ -+/* -+ * Starting with commit glibc-2.32~83, on every 32-bit architecture -+ * where 32-bit time_t support is enabled, glibc tries to retrieve -+ * the data provided in the third argument of msgctl call. -+ */ -+#if GLIBC_PREREQ_GE(2, 32) && defined __TIMESIZE && __TIMESIZE != 64 -+# define TEST_MSGCTL_BOGUS_ADDR 0 -+#endif - /* - * Before glibc-2.22-122-gbe48165, ppc64 code tried to retrieve data - * provided in third argument of msgctl call (in case of IPC_SET cmd) - * which led to segmentation fault. - */ --#undef TEST_MSGCTL_BOGUS_ADDR - #if GLIBC_PREREQ_LT(2, 23) && (defined POWERPC64 || defined POWERPC64LE) - # define TEST_MSGCTL_BOGUS_ADDR 0 - #endif -diff --git a/tests-m32/ipc_msg.c b/tests-m32/ipc_msg.c -index dd0f303..3ab8b90 100644 ---- a/tests-m32/ipc_msg.c -+++ b/tests-m32/ipc_msg.c -@@ -20,12 +20,21 @@ - # define MSG_STAT_ANY 13 - #endif - -+#undef TEST_MSGCTL_BOGUS_ADDR -+ -+/* -+ * Starting with commit glibc-2.32~83, on every 32-bit architecture -+ * where 32-bit time_t support is enabled, glibc tries to retrieve -+ * the data provided in the third argument of msgctl call. -+ */ -+#if GLIBC_PREREQ_GE(2, 32) && defined __TIMESIZE && __TIMESIZE != 64 -+# define TEST_MSGCTL_BOGUS_ADDR 0 -+#endif - /* - * Before glibc-2.22-122-gbe48165, ppc64 code tried to retrieve data - * provided in third argument of msgctl call (in case of IPC_SET cmd) - * which led to segmentation fault. - */ --#undef TEST_MSGCTL_BOGUS_ADDR - #if GLIBC_PREREQ_LT(2, 23) && (defined POWERPC64 || defined POWERPC64LE) - # define TEST_MSGCTL_BOGUS_ADDR 0 - #endif -diff --git a/tests-mx32/ipc_msg.c b/tests-mx32/ipc_msg.c -index dd0f303..3ab8b90 100644 ---- a/tests-mx32/ipc_msg.c -+++ b/tests-mx32/ipc_msg.c -@@ -20,12 +20,21 @@ - # define MSG_STAT_ANY 13 - #endif - -+#undef TEST_MSGCTL_BOGUS_ADDR -+ -+/* -+ * Starting with commit glibc-2.32~83, on every 32-bit architecture -+ * where 32-bit time_t support is enabled, glibc tries to retrieve -+ * the data provided in the third argument of msgctl call. -+ */ -+#if GLIBC_PREREQ_GE(2, 32) && defined __TIMESIZE && __TIMESIZE != 64 -+# define TEST_MSGCTL_BOGUS_ADDR 0 -+#endif - /* - * Before glibc-2.22-122-gbe48165, ppc64 code tried to retrieve data - * provided in third argument of msgctl call (in case of IPC_SET cmd) - * which led to segmentation fault. - */ --#undef TEST_MSGCTL_BOGUS_ADDR - #if GLIBC_PREREQ_LT(2, 23) && (defined POWERPC64 || defined POWERPC64LE) - # define TEST_MSGCTL_BOGUS_ADDR 0 - #endif --- -2.1.4 - diff --git a/0158-tests-disable-TEST_MSGCTL_BOGUS_ADDR-in-ipc_msg-test.patch b/0158-tests-disable-TEST_MSGCTL_BOGUS_ADDR-in-ipc_msg-test.patch deleted file mode 100755 index 1832a5f..0000000 --- a/0158-tests-disable-TEST_MSGCTL_BOGUS_ADDR-in-ipc_msg-test.patch +++ /dev/null @@ -1,89 +0,0 @@ -From b4623939316807928680913ece9a6cefc23a73b2 Mon Sep 17 00:00:00 2001 -From: "Dmitry V. Levin" -Date: Tue, 10 Nov 2020 08:00:00 +0000 -Subject: [PATCH 158/162] tests: disable TEST_MSGCTL_BOGUS_ADDR in ipc_msg test - on glibc >= 2.31 - -Starting with commit glibc-2.31~358, on every architecture where -__ASSUME_SYSVIPC_BROKEN_MODE_T is defined, glibc tries to modify the -data provided in the third argument of msgctl call. This results -to segfaults inside glibc if TEST_MSGCTL_BOGUS_ADDR is enabled. - -* tests/ipc_msg.c [GLIBC_PREREQ_GE(2, 31) && (__m68k__ || __s390__ || -(WORDS_BIGENDIAN && (__arm__ || __microblaze__ || __sh__)))] -(TEST_MSGCTL_BOGUS_ADDR): Define to 0. - -Reported-by: Sven Schnelle ---- - tests/ipc_msg.c | 11 +++++++++++ - 1 file changed, 11 insertions(+) - -diff --git a/tests/ipc_msg.c b/tests/ipc_msg.c -index 3ab8b90..f7c36cd 100644 ---- a/tests/ipc_msg.c -+++ b/tests/ipc_msg.c -@@ -31,6 +31,17 @@ - # define TEST_MSGCTL_BOGUS_ADDR 0 - #endif - /* -+ * Starting with commit glibc-2.31~358, on every architecture where -+ * __ASSUME_SYSVIPC_BROKEN_MODE_T is defined, glibc tries to modify -+ * the data provided in the third argument of msgctl call. -+ */ -+#if GLIBC_PREREQ_GE(2, 31) && \ -+ (defined __m68k__ || defined __s390__ || \ -+ (WORDS_BIGENDIAN && \ -+ (defined __arm__ || defined __microblaze__ || defined __sh__))) -+# define TEST_MSGCTL_BOGUS_ADDR 0 -+#endif -+/* - * Before glibc-2.22-122-gbe48165, ppc64 code tried to retrieve data - * provided in third argument of msgctl call (in case of IPC_SET cmd) - * which led to segmentation fault. -diff --git a/tests-m32/ipc_msg.c b/tests-m32/ipc_msg.c -index 3ab8b90..f7c36cd 100644 ---- a/tests-m32/ipc_msg.c -+++ b/tests-m32/ipc_msg.c -@@ -31,6 +31,17 @@ - # define TEST_MSGCTL_BOGUS_ADDR 0 - #endif - /* -+ * Starting with commit glibc-2.31~358, on every architecture where -+ * __ASSUME_SYSVIPC_BROKEN_MODE_T is defined, glibc tries to modify -+ * the data provided in the third argument of msgctl call. -+ */ -+#if GLIBC_PREREQ_GE(2, 31) && \ -+ (defined __m68k__ || defined __s390__ || \ -+ (WORDS_BIGENDIAN && \ -+ (defined __arm__ || defined __microblaze__ || defined __sh__))) -+# define TEST_MSGCTL_BOGUS_ADDR 0 -+#endif -+/* - * Before glibc-2.22-122-gbe48165, ppc64 code tried to retrieve data - * provided in third argument of msgctl call (in case of IPC_SET cmd) - * which led to segmentation fault. -diff --git a/tests-mx32/ipc_msg.c b/tests-mx32/ipc_msg.c -index 3ab8b90..f7c36cd 100644 ---- a/tests-mx32/ipc_msg.c -+++ b/tests-mx32/ipc_msg.c -@@ -31,6 +31,17 @@ - # define TEST_MSGCTL_BOGUS_ADDR 0 - #endif - /* -+ * Starting with commit glibc-2.31~358, on every architecture where -+ * __ASSUME_SYSVIPC_BROKEN_MODE_T is defined, glibc tries to modify -+ * the data provided in the third argument of msgctl call. -+ */ -+#if GLIBC_PREREQ_GE(2, 31) && \ -+ (defined __m68k__ || defined __s390__ || \ -+ (WORDS_BIGENDIAN && \ -+ (defined __arm__ || defined __microblaze__ || defined __sh__))) -+# define TEST_MSGCTL_BOGUS_ADDR 0 -+#endif -+/* - * Before glibc-2.22-122-gbe48165, ppc64 code tried to retrieve data - * provided in third argument of msgctl call (in case of IPC_SET cmd) - * which led to segmentation fault. --- -2.1.4 - diff --git a/0159-tests-disable-tests-for-invalid-msgctl-commands-on-g.patch b/0159-tests-disable-tests-for-invalid-msgctl-commands-on-g.patch deleted file mode 100755 index 94fe64e..0000000 --- a/0159-tests-disable-tests-for-invalid-msgctl-commands-on-g.patch +++ /dev/null @@ -1,214 +0,0 @@ -From b702ddfd448794f3ac5033c897a07da3de8f5fc7 Mon Sep 17 00:00:00 2001 -From: "Dmitry V. Levin" -Date: Sun, 6 Dec 2020 08:00:00 +0000 -Subject: [PATCH 159/162] tests: disable tests for invalid msgctl commands on - glibc >= 2.32 - -Starting with commit glibc-2.32.9000-149-gbe9b0b9a012780a403a2, -glibc skips msgctl syscall invocations and returns EINVAL -for invalid msgctl commands. - -* tests/ipc_msg.c [GLIBC_PREREQ_GE(2, 32)] (TEST_MSGCTL_BOGUS_CMD): -Define to 0. -[!TEST_MSGCTL_BOGUS_CMD] (TEST_MSGCTL_BOGUS_CMD): Define to 1. -(main) [!TEST_MSGCTL_BOGUS_CMD] (bogus_cmd): Do not define and do not -use. ---- - tests/ipc_msg.c | 21 ++++++++++++++++++++- - 1 file changed, 20 insertions(+), 1 deletion(-) - -diff --git a/tests/ipc_msg.c b/tests/ipc_msg.c -index f7c36cd..6a96a5f 100644 ---- a/tests/ipc_msg.c -+++ b/tests/ipc_msg.c -@@ -21,6 +21,7 @@ - #endif - - #undef TEST_MSGCTL_BOGUS_ADDR -+#undef TEST_MSGCTL_BOGUS_CMD - - /* - * Starting with commit glibc-2.32~83, on every 32-bit architecture -@@ -50,9 +51,21 @@ - # define TEST_MSGCTL_BOGUS_ADDR 0 - #endif - -+/* -+ * Starting with commit glibc-2.32.9000-149-gbe9b0b9a012780a403a2, -+ * glibc skips msgctl syscall invocations and returns EINVAL -+ * for invalid msgctl commands. -+ */ -+#if GLIBC_PREREQ_GE(2, 32) -+# define TEST_MSGCTL_BOGUS_CMD 0 -+#endif -+ - #ifndef TEST_MSGCTL_BOGUS_ADDR - # define TEST_MSGCTL_BOGUS_ADDR 1 - #endif -+#ifndef TEST_MSGCTL_BOGUS_CMD -+# define TEST_MSGCTL_BOGUS_CMD 1 -+#endif - - #if XLAT_RAW - # define str_ipc_excl_nowait "0xface1c00" -@@ -107,12 +120,16 @@ main(void) - static const key_t private_key = - (key_t) (0xffffffff00000000ULL | IPC_PRIVATE); - static const key_t bogus_key = (key_t) 0xeca86420fdb9f531ULL; -+ static const int bogus_flags = 0xface1e55 & ~IPC_CREAT; -+#if TEST_MSGCTL_BOGUS_CMD || TEST_MSGCTL_BOGUS_ADDR - static const int bogus_msgid = 0xfdb97531; -+#endif -+#if TEST_MSGCTL_BOGUS_CMD - static const int bogus_cmd = 0xdeadbeef; -+#endif - #if TEST_MSGCTL_BOGUS_ADDR - static void * const bogus_addr = (void *) -1L; - #endif -- static const int bogus_flags = 0xface1e55 & ~IPC_CREAT; - - int rc; - struct msqid_ds ds; -@@ -129,9 +146,11 @@ main(void) - printf("msgget\\(%s, 0600\\) = %d\n", str_ipc_private, id); - atexit(cleanup); - -+#if TEST_MSGCTL_BOGUS_CMD - rc = msgctl(bogus_msgid, bogus_cmd, NULL); - printf("msgctl\\(%d, (%s\\|)?%s, NULL\\) = %s\n", - bogus_msgid, str_ipc_64, str_bogus_cmd, sprintrc_grep(rc)); -+#endif - - #if TEST_MSGCTL_BOGUS_ADDR - rc = msgctl(bogus_msgid, IPC_SET, bogus_addr); -diff --git a/tests-m32/ipc_msg.c b/tests-m32/ipc_msg.c -index f7c36cd..6a96a5f 100644 ---- a/tests-m32/ipc_msg.c -+++ b/tests-m32/ipc_msg.c -@@ -21,6 +21,7 @@ - #endif - - #undef TEST_MSGCTL_BOGUS_ADDR -+#undef TEST_MSGCTL_BOGUS_CMD - - /* - * Starting with commit glibc-2.32~83, on every 32-bit architecture -@@ -50,9 +51,21 @@ - # define TEST_MSGCTL_BOGUS_ADDR 0 - #endif - -+/* -+ * Starting with commit glibc-2.32.9000-149-gbe9b0b9a012780a403a2, -+ * glibc skips msgctl syscall invocations and returns EINVAL -+ * for invalid msgctl commands. -+ */ -+#if GLIBC_PREREQ_GE(2, 32) -+# define TEST_MSGCTL_BOGUS_CMD 0 -+#endif -+ - #ifndef TEST_MSGCTL_BOGUS_ADDR - # define TEST_MSGCTL_BOGUS_ADDR 1 - #endif -+#ifndef TEST_MSGCTL_BOGUS_CMD -+# define TEST_MSGCTL_BOGUS_CMD 1 -+#endif - - #if XLAT_RAW - # define str_ipc_excl_nowait "0xface1c00" -@@ -107,12 +120,16 @@ main(void) - static const key_t private_key = - (key_t) (0xffffffff00000000ULL | IPC_PRIVATE); - static const key_t bogus_key = (key_t) 0xeca86420fdb9f531ULL; -+ static const int bogus_flags = 0xface1e55 & ~IPC_CREAT; -+#if TEST_MSGCTL_BOGUS_CMD || TEST_MSGCTL_BOGUS_ADDR - static const int bogus_msgid = 0xfdb97531; -+#endif -+#if TEST_MSGCTL_BOGUS_CMD - static const int bogus_cmd = 0xdeadbeef; -+#endif - #if TEST_MSGCTL_BOGUS_ADDR - static void * const bogus_addr = (void *) -1L; - #endif -- static const int bogus_flags = 0xface1e55 & ~IPC_CREAT; - - int rc; - struct msqid_ds ds; -@@ -129,9 +146,11 @@ main(void) - printf("msgget\\(%s, 0600\\) = %d\n", str_ipc_private, id); - atexit(cleanup); - -+#if TEST_MSGCTL_BOGUS_CMD - rc = msgctl(bogus_msgid, bogus_cmd, NULL); - printf("msgctl\\(%d, (%s\\|)?%s, NULL\\) = %s\n", - bogus_msgid, str_ipc_64, str_bogus_cmd, sprintrc_grep(rc)); -+#endif - - #if TEST_MSGCTL_BOGUS_ADDR - rc = msgctl(bogus_msgid, IPC_SET, bogus_addr); -diff --git a/tests-mx32/ipc_msg.c b/tests-mx32/ipc_msg.c -index f7c36cd..6a96a5f 100644 ---- a/tests-mx32/ipc_msg.c -+++ b/tests-mx32/ipc_msg.c -@@ -21,6 +21,7 @@ - #endif - - #undef TEST_MSGCTL_BOGUS_ADDR -+#undef TEST_MSGCTL_BOGUS_CMD - - /* - * Starting with commit glibc-2.32~83, on every 32-bit architecture -@@ -50,9 +51,21 @@ - # define TEST_MSGCTL_BOGUS_ADDR 0 - #endif - -+/* -+ * Starting with commit glibc-2.32.9000-149-gbe9b0b9a012780a403a2, -+ * glibc skips msgctl syscall invocations and returns EINVAL -+ * for invalid msgctl commands. -+ */ -+#if GLIBC_PREREQ_GE(2, 32) -+# define TEST_MSGCTL_BOGUS_CMD 0 -+#endif -+ - #ifndef TEST_MSGCTL_BOGUS_ADDR - # define TEST_MSGCTL_BOGUS_ADDR 1 - #endif -+#ifndef TEST_MSGCTL_BOGUS_CMD -+# define TEST_MSGCTL_BOGUS_CMD 1 -+#endif - - #if XLAT_RAW - # define str_ipc_excl_nowait "0xface1c00" -@@ -107,12 +120,16 @@ main(void) - static const key_t private_key = - (key_t) (0xffffffff00000000ULL | IPC_PRIVATE); - static const key_t bogus_key = (key_t) 0xeca86420fdb9f531ULL; -+ static const int bogus_flags = 0xface1e55 & ~IPC_CREAT; -+#if TEST_MSGCTL_BOGUS_CMD || TEST_MSGCTL_BOGUS_ADDR - static const int bogus_msgid = 0xfdb97531; -+#endif -+#if TEST_MSGCTL_BOGUS_CMD - static const int bogus_cmd = 0xdeadbeef; -+#endif - #if TEST_MSGCTL_BOGUS_ADDR - static void * const bogus_addr = (void *) -1L; - #endif -- static const int bogus_flags = 0xface1e55 & ~IPC_CREAT; - - int rc; - struct msqid_ds ds; -@@ -129,9 +146,11 @@ main(void) - printf("msgget\\(%s, 0600\\) = %d\n", str_ipc_private, id); - atexit(cleanup); - -+#if TEST_MSGCTL_BOGUS_CMD - rc = msgctl(bogus_msgid, bogus_cmd, NULL); - printf("msgctl\\(%d, (%s\\|)?%s, NULL\\) = %s\n", - bogus_msgid, str_ipc_64, str_bogus_cmd, sprintrc_grep(rc)); -+#endif - - #if TEST_MSGCTL_BOGUS_ADDR - rc = msgctl(bogus_msgid, IPC_SET, bogus_addr); --- -2.1.4 - diff --git a/0160-tests-disable-shmctl-IPC_STAT-test-with-a-bogus-addr.patch b/0160-tests-disable-shmctl-IPC_STAT-test-with-a-bogus-addr.patch deleted file mode 100755 index 480848f..0000000 --- a/0160-tests-disable-shmctl-IPC_STAT-test-with-a-bogus-addr.patch +++ /dev/null @@ -1,169 +0,0 @@ -From 8c1a84778bb05a3becc493698b215681bf7249b3 Mon Sep 17 00:00:00 2001 -From: "Dmitry V. Levin" -Date: Sat, 19 Sep 2020 08:00:00 +0000 -Subject: [PATCH 160/162] tests: disable shmctl IPC_STAT test with a bogus - address on glibc >= 2.32 - -Starting with commit glibc-2.32~80, on every 32-bit architecture where -32-bit time_t support is enabled, glibc tries to retrieve the data -provided in the third argument of shmctl call. This results to -segfaults inside glibc when shmctl is called with a bogus address. - -* tests/ipc_shm.c [GLIBC_PREREQ_GE(2, 32) && __TIMESIZE != 64] -(TEST_SHMCTL_BOGUS_ADDR): Define to 0. -(main): Conditionalize on TEST_SHMCTL_BOGUS_ADDR the shmctl IPC_STAT -invocation with a bogus address. ---- - tests/ipc_shm.c | 19 +++++++++++++++++++ - 1 file changed, 19 insertions(+) - -diff --git a/tests/ipc_shm.c b/tests/ipc_shm.c -index 5cd414e..695fd94 100644 ---- a/tests/ipc_shm.c -+++ b/tests/ipc_shm.c -@@ -73,6 +73,21 @@ - # define str_bogus_cmd "0xdefaced2 /\\* SHM_\\?\\?\\? \\*/" - #endif - -+#undef TEST_SHMCTL_BOGUS_ADDR -+ -+/* -+ * Starting with commit glibc-2.32~80, on every 32-bit architecture -+ * where 32-bit time_t support is enabled, glibc tries to retrieve -+ * the data provided in the third argument of shmctl call. -+ */ -+#if GLIBC_PREREQ_GE(2, 32) && defined __TIMESIZE && __TIMESIZE != 64 -+# define TEST_SHMCTL_BOGUS_ADDR 0 -+#endif -+ -+#ifndef TEST_SHMCTL_BOGUS_ADDR -+# define TEST_SHMCTL_BOGUS_ADDR 1 -+#endif -+ - static int id = -1; - - static void -@@ -92,7 +107,9 @@ main(void) - static const key_t bogus_key = (key_t) 0xeca86420fdb97531ULL; - static const int bogus_id = 0xdefaced1; - static const int bogus_cmd = 0xdefaced2; -+#if TEST_SHMCTL_BOGUS_ADDR - static void * const bogus_addr = (void *) -1L; -+#endif - static const size_t bogus_size = - /* - * musl sets size to SIZE_MAX if size argument is greater than -@@ -160,10 +177,12 @@ main(void) - printf("shmctl\\(%d, (%s\\|)?%s, NULL\\) = %s\n", - bogus_id, str_ipc_64, str_bogus_cmd, sprintrc_grep(rc)); - -+#if TEST_SHMCTL_BOGUS_ADDR - rc = shmctl(bogus_id, IPC_STAT, bogus_addr); - printf("shmctl\\(%d, (%s\\|)?%s, %p\\) = %s\n", - bogus_id, str_ipc_64, str_ipc_stat, bogus_addr, - sprintrc_grep(rc)); -+#endif - - if (shmctl(id, IPC_STAT, &ds)) - perror_msg_and_skip("shmctl IPC_STAT"); -diff --git a/tests-m32/ipc_shm.c b/tests-m32/ipc_shm.c -index 5cd414e..695fd94 100644 ---- a/tests-m32/ipc_shm.c -+++ b/tests-m32/ipc_shm.c -@@ -73,6 +73,21 @@ - # define str_bogus_cmd "0xdefaced2 /\\* SHM_\\?\\?\\? \\*/" - #endif - -+#undef TEST_SHMCTL_BOGUS_ADDR -+ -+/* -+ * Starting with commit glibc-2.32~80, on every 32-bit architecture -+ * where 32-bit time_t support is enabled, glibc tries to retrieve -+ * the data provided in the third argument of shmctl call. -+ */ -+#if GLIBC_PREREQ_GE(2, 32) && defined __TIMESIZE && __TIMESIZE != 64 -+# define TEST_SHMCTL_BOGUS_ADDR 0 -+#endif -+ -+#ifndef TEST_SHMCTL_BOGUS_ADDR -+# define TEST_SHMCTL_BOGUS_ADDR 1 -+#endif -+ - static int id = -1; - - static void -@@ -92,7 +107,9 @@ main(void) - static const key_t bogus_key = (key_t) 0xeca86420fdb97531ULL; - static const int bogus_id = 0xdefaced1; - static const int bogus_cmd = 0xdefaced2; -+#if TEST_SHMCTL_BOGUS_ADDR - static void * const bogus_addr = (void *) -1L; -+#endif - static const size_t bogus_size = - /* - * musl sets size to SIZE_MAX if size argument is greater than -@@ -160,10 +177,12 @@ main(void) - printf("shmctl\\(%d, (%s\\|)?%s, NULL\\) = %s\n", - bogus_id, str_ipc_64, str_bogus_cmd, sprintrc_grep(rc)); - -+#if TEST_SHMCTL_BOGUS_ADDR - rc = shmctl(bogus_id, IPC_STAT, bogus_addr); - printf("shmctl\\(%d, (%s\\|)?%s, %p\\) = %s\n", - bogus_id, str_ipc_64, str_ipc_stat, bogus_addr, - sprintrc_grep(rc)); -+#endif - - if (shmctl(id, IPC_STAT, &ds)) - perror_msg_and_skip("shmctl IPC_STAT"); -diff --git a/tests-mx32/ipc_shm.c b/tests-mx32/ipc_shm.c -index 5cd414e..695fd94 100644 ---- a/tests-mx32/ipc_shm.c -+++ b/tests-mx32/ipc_shm.c -@@ -73,6 +73,21 @@ - # define str_bogus_cmd "0xdefaced2 /\\* SHM_\\?\\?\\? \\*/" - #endif - -+#undef TEST_SHMCTL_BOGUS_ADDR -+ -+/* -+ * Starting with commit glibc-2.32~80, on every 32-bit architecture -+ * where 32-bit time_t support is enabled, glibc tries to retrieve -+ * the data provided in the third argument of shmctl call. -+ */ -+#if GLIBC_PREREQ_GE(2, 32) && defined __TIMESIZE && __TIMESIZE != 64 -+# define TEST_SHMCTL_BOGUS_ADDR 0 -+#endif -+ -+#ifndef TEST_SHMCTL_BOGUS_ADDR -+# define TEST_SHMCTL_BOGUS_ADDR 1 -+#endif -+ - static int id = -1; - - static void -@@ -92,7 +107,9 @@ main(void) - static const key_t bogus_key = (key_t) 0xeca86420fdb97531ULL; - static const int bogus_id = 0xdefaced1; - static const int bogus_cmd = 0xdefaced2; -+#if TEST_SHMCTL_BOGUS_ADDR - static void * const bogus_addr = (void *) -1L; -+#endif - static const size_t bogus_size = - /* - * musl sets size to SIZE_MAX if size argument is greater than -@@ -160,10 +177,12 @@ main(void) - printf("shmctl\\(%d, (%s\\|)?%s, NULL\\) = %s\n", - bogus_id, str_ipc_64, str_bogus_cmd, sprintrc_grep(rc)); - -+#if TEST_SHMCTL_BOGUS_ADDR - rc = shmctl(bogus_id, IPC_STAT, bogus_addr); - printf("shmctl\\(%d, (%s\\|)?%s, %p\\) = %s\n", - bogus_id, str_ipc_64, str_ipc_stat, bogus_addr, - sprintrc_grep(rc)); -+#endif - - if (shmctl(id, IPC_STAT, &ds)) - perror_msg_and_skip("shmctl IPC_STAT"); --- -2.1.4 - diff --git a/0161-tests-disable-tests-for-invalid-shmctl-commands-on-g.patch b/0161-tests-disable-tests-for-invalid-shmctl-commands-on-g.patch deleted file mode 100755 index 45d1112..0000000 --- a/0161-tests-disable-tests-for-invalid-shmctl-commands-on-g.patch +++ /dev/null @@ -1,280 +0,0 @@ -From 268b9341ef6397cc337f612563af88ccb5752ca7 Mon Sep 17 00:00:00 2001 -From: "Dmitry V. Levin" -Date: Sun, 6 Dec 2020 08:00:00 +0000 -Subject: [PATCH 161/162] tests: disable tests for invalid shmctl commands on - glibc >= 2.32 - -Starting with commit glibc-2.32.9000-207-g9ebaabeaac1a96b0d91f, -glibc skips shmctl syscall invocations and returns EINVAL -for invalid shmctl commands. - -* tests/ipc_shm.c [GLIBC_PREREQ_GE(2, 32)] (TEST_SHMCTL_BOGUS_CMD): -Define to 0. -[!TEST_SHMCTL_BOGUS_CMD] (TEST_SHMCTL_BOGUS_CMD): Define to 1. -(main) [!TEST_SHMCTL_BOGUS_CMD] (bogus_cmd): Do not define and do not -use. ---- - tests/ipc_shm.c | 49 ++++++++++++++++++++++++++++++++++--------------- - 1 file changed, 34 insertions(+), 15 deletions(-) - -diff --git a/tests/ipc_shm.c b/tests/ipc_shm.c -index 695fd94..350bde5 100644 ---- a/tests/ipc_shm.c -+++ b/tests/ipc_shm.c -@@ -29,6 +29,34 @@ - # define SHM_NORESERVE 010000 - #endif - -+#undef TEST_SHMCTL_BOGUS_ADDR -+#undef TEST_SHMCTL_BOGUS_CMD -+ -+/* -+ * Starting with commit glibc-2.32~80, on every 32-bit architecture -+ * where 32-bit time_t support is enabled, glibc tries to retrieve -+ * the data provided in the third argument of shmctl call. -+ */ -+#if GLIBC_PREREQ_GE(2, 32) && defined __TIMESIZE && __TIMESIZE != 64 -+# define TEST_SHMCTL_BOGUS_ADDR 0 -+#endif -+ -+/* -+ * Starting with commit glibc-2.32.9000-207-g9ebaabeaac1a96b0d91f, -+ * glibc skips shmctl syscall invocations and returns EINVAL -+ * for invalid shmctl commands. -+ */ -+#if GLIBC_PREREQ_GE(2, 32) -+# define TEST_SHMCTL_BOGUS_CMD 0 -+#endif -+ -+#ifndef TEST_SHMCTL_BOGUS_ADDR -+# define TEST_SHMCTL_BOGUS_ADDR 1 -+#endif -+#ifndef TEST_SHMCTL_BOGUS_CMD -+# define TEST_SHMCTL_BOGUS_CMD 1 -+#endif -+ - #include "xlat.h" - #include "xlat/shm_resource_flags.h" - -@@ -73,21 +101,6 @@ - # define str_bogus_cmd "0xdefaced2 /\\* SHM_\\?\\?\\? \\*/" - #endif - --#undef TEST_SHMCTL_BOGUS_ADDR -- --/* -- * Starting with commit glibc-2.32~80, on every 32-bit architecture -- * where 32-bit time_t support is enabled, glibc tries to retrieve -- * the data provided in the third argument of shmctl call. -- */ --#if GLIBC_PREREQ_GE(2, 32) && defined __TIMESIZE && __TIMESIZE != 64 --# define TEST_SHMCTL_BOGUS_ADDR 0 --#endif -- --#ifndef TEST_SHMCTL_BOGUS_ADDR --# define TEST_SHMCTL_BOGUS_ADDR 1 --#endif -- - static int id = -1; - - static void -@@ -105,8 +118,12 @@ main(void) - static const key_t private_key = - (key_t) (0xffffffff00000000ULL | IPC_PRIVATE); - static const key_t bogus_key = (key_t) 0xeca86420fdb97531ULL; -+#if TEST_SHMCTL_BOGUS_CMD || TEST_SHMCTL_BOGUS_ADDR - static const int bogus_id = 0xdefaced1; -+#endif -+#if TEST_SHMCTL_BOGUS_CMD - static const int bogus_cmd = 0xdefaced2; -+#endif - #if TEST_SHMCTL_BOGUS_ADDR - static void * const bogus_addr = (void *) -1L; - #endif -@@ -173,9 +190,11 @@ main(void) - printf("shmget\\(%s, 1, 0600\\) = %d\n", str_ipc_private, id); - atexit(cleanup); - -+#if TEST_SHMCTL_BOGUS_CMD - rc = shmctl(bogus_id, bogus_cmd, NULL); - printf("shmctl\\(%d, (%s\\|)?%s, NULL\\) = %s\n", - bogus_id, str_ipc_64, str_bogus_cmd, sprintrc_grep(rc)); -+#endif - - #if TEST_SHMCTL_BOGUS_ADDR - rc = shmctl(bogus_id, IPC_STAT, bogus_addr); -diff --git a/tests-m32/ipc_shm.c b/tests-m32/ipc_shm.c -index 695fd94..350bde5 100644 ---- a/tests-m32/ipc_shm.c -+++ b/tests-m32/ipc_shm.c -@@ -29,6 +29,34 @@ - # define SHM_NORESERVE 010000 - #endif - -+#undef TEST_SHMCTL_BOGUS_ADDR -+#undef TEST_SHMCTL_BOGUS_CMD -+ -+/* -+ * Starting with commit glibc-2.32~80, on every 32-bit architecture -+ * where 32-bit time_t support is enabled, glibc tries to retrieve -+ * the data provided in the third argument of shmctl call. -+ */ -+#if GLIBC_PREREQ_GE(2, 32) && defined __TIMESIZE && __TIMESIZE != 64 -+# define TEST_SHMCTL_BOGUS_ADDR 0 -+#endif -+ -+/* -+ * Starting with commit glibc-2.32.9000-207-g9ebaabeaac1a96b0d91f, -+ * glibc skips shmctl syscall invocations and returns EINVAL -+ * for invalid shmctl commands. -+ */ -+#if GLIBC_PREREQ_GE(2, 32) -+# define TEST_SHMCTL_BOGUS_CMD 0 -+#endif -+ -+#ifndef TEST_SHMCTL_BOGUS_ADDR -+# define TEST_SHMCTL_BOGUS_ADDR 1 -+#endif -+#ifndef TEST_SHMCTL_BOGUS_CMD -+# define TEST_SHMCTL_BOGUS_CMD 1 -+#endif -+ - #include "xlat.h" - #include "xlat/shm_resource_flags.h" - -@@ -73,21 +101,6 @@ - # define str_bogus_cmd "0xdefaced2 /\\* SHM_\\?\\?\\? \\*/" - #endif - --#undef TEST_SHMCTL_BOGUS_ADDR -- --/* -- * Starting with commit glibc-2.32~80, on every 32-bit architecture -- * where 32-bit time_t support is enabled, glibc tries to retrieve -- * the data provided in the third argument of shmctl call. -- */ --#if GLIBC_PREREQ_GE(2, 32) && defined __TIMESIZE && __TIMESIZE != 64 --# define TEST_SHMCTL_BOGUS_ADDR 0 --#endif -- --#ifndef TEST_SHMCTL_BOGUS_ADDR --# define TEST_SHMCTL_BOGUS_ADDR 1 --#endif -- - static int id = -1; - - static void -@@ -105,8 +118,12 @@ main(void) - static const key_t private_key = - (key_t) (0xffffffff00000000ULL | IPC_PRIVATE); - static const key_t bogus_key = (key_t) 0xeca86420fdb97531ULL; -+#if TEST_SHMCTL_BOGUS_CMD || TEST_SHMCTL_BOGUS_ADDR - static const int bogus_id = 0xdefaced1; -+#endif -+#if TEST_SHMCTL_BOGUS_CMD - static const int bogus_cmd = 0xdefaced2; -+#endif - #if TEST_SHMCTL_BOGUS_ADDR - static void * const bogus_addr = (void *) -1L; - #endif -@@ -173,9 +190,11 @@ main(void) - printf("shmget\\(%s, 1, 0600\\) = %d\n", str_ipc_private, id); - atexit(cleanup); - -+#if TEST_SHMCTL_BOGUS_CMD - rc = shmctl(bogus_id, bogus_cmd, NULL); - printf("shmctl\\(%d, (%s\\|)?%s, NULL\\) = %s\n", - bogus_id, str_ipc_64, str_bogus_cmd, sprintrc_grep(rc)); -+#endif - - #if TEST_SHMCTL_BOGUS_ADDR - rc = shmctl(bogus_id, IPC_STAT, bogus_addr); -diff --git a/tests-mx32/ipc_shm.c b/tests-mx32/ipc_shm.c -index 695fd94..350bde5 100644 ---- a/tests-mx32/ipc_shm.c -+++ b/tests-mx32/ipc_shm.c -@@ -29,6 +29,34 @@ - # define SHM_NORESERVE 010000 - #endif - -+#undef TEST_SHMCTL_BOGUS_ADDR -+#undef TEST_SHMCTL_BOGUS_CMD -+ -+/* -+ * Starting with commit glibc-2.32~80, on every 32-bit architecture -+ * where 32-bit time_t support is enabled, glibc tries to retrieve -+ * the data provided in the third argument of shmctl call. -+ */ -+#if GLIBC_PREREQ_GE(2, 32) && defined __TIMESIZE && __TIMESIZE != 64 -+# define TEST_SHMCTL_BOGUS_ADDR 0 -+#endif -+ -+/* -+ * Starting with commit glibc-2.32.9000-207-g9ebaabeaac1a96b0d91f, -+ * glibc skips shmctl syscall invocations and returns EINVAL -+ * for invalid shmctl commands. -+ */ -+#if GLIBC_PREREQ_GE(2, 32) -+# define TEST_SHMCTL_BOGUS_CMD 0 -+#endif -+ -+#ifndef TEST_SHMCTL_BOGUS_ADDR -+# define TEST_SHMCTL_BOGUS_ADDR 1 -+#endif -+#ifndef TEST_SHMCTL_BOGUS_CMD -+# define TEST_SHMCTL_BOGUS_CMD 1 -+#endif -+ - #include "xlat.h" - #include "xlat/shm_resource_flags.h" - -@@ -73,21 +101,6 @@ - # define str_bogus_cmd "0xdefaced2 /\\* SHM_\\?\\?\\? \\*/" - #endif - --#undef TEST_SHMCTL_BOGUS_ADDR -- --/* -- * Starting with commit glibc-2.32~80, on every 32-bit architecture -- * where 32-bit time_t support is enabled, glibc tries to retrieve -- * the data provided in the third argument of shmctl call. -- */ --#if GLIBC_PREREQ_GE(2, 32) && defined __TIMESIZE && __TIMESIZE != 64 --# define TEST_SHMCTL_BOGUS_ADDR 0 --#endif -- --#ifndef TEST_SHMCTL_BOGUS_ADDR --# define TEST_SHMCTL_BOGUS_ADDR 1 --#endif -- - static int id = -1; - - static void -@@ -105,8 +118,12 @@ main(void) - static const key_t private_key = - (key_t) (0xffffffff00000000ULL | IPC_PRIVATE); - static const key_t bogus_key = (key_t) 0xeca86420fdb97531ULL; -+#if TEST_SHMCTL_BOGUS_CMD || TEST_SHMCTL_BOGUS_ADDR - static const int bogus_id = 0xdefaced1; -+#endif -+#if TEST_SHMCTL_BOGUS_CMD - static const int bogus_cmd = 0xdefaced2; -+#endif - #if TEST_SHMCTL_BOGUS_ADDR - static void * const bogus_addr = (void *) -1L; - #endif -@@ -173,9 +190,11 @@ main(void) - printf("shmget\\(%s, 1, 0600\\) = %d\n", str_ipc_private, id); - atexit(cleanup); - -+#if TEST_SHMCTL_BOGUS_CMD - rc = shmctl(bogus_id, bogus_cmd, NULL); - printf("shmctl\\(%d, (%s\\|)?%s, NULL\\) = %s\n", - bogus_id, str_ipc_64, str_bogus_cmd, sprintrc_grep(rc)); -+#endif - - #if TEST_SHMCTL_BOGUS_ADDR - rc = shmctl(bogus_id, IPC_STAT, bogus_addr); --- -2.1.4 - diff --git a/0162-tests-disable-tests-for-invalid-semctl-commands-on-g.patch b/0162-tests-disable-tests-for-invalid-semctl-commands-on-g.patch deleted file mode 100755 index 61381bf..0000000 --- a/0162-tests-disable-tests-for-invalid-semctl-commands-on-g.patch +++ /dev/null @@ -1,199 +0,0 @@ -From dd8d558394b2b8cb7f743a2a4bf763974d6c2dd9 Mon Sep 17 00:00:00 2001 -From: "Dmitry V. Levin" -Date: Sun, 6 Dec 2020 08:00:00 +0000 -Subject: [PATCH 162/162] tests: disable tests for invalid semctl commands on - glibc >= 2.32 - -Starting with commit glibc-2.32.9000-147-ga16d2abd496bd974a882, -glibc skips semctl syscall invocations and returns EINVAL -for invalid semctl commands. - -* tests/ipc_sem.c [GLIBC_PREREQ_GE(2, 32)] (TEST_SEMCTL_BOGUS_CMD): -Define to 0. -[!TEST_SEMCTL_BOGUS_CMD] (TEST_SEMCTL_BOGUS_CMD): Define to 1. -(main) [!TEST_SEMCTL_BOGUS_CMD] (bogus_semid, bogus_semnum, bogus_cmd, -bogus_arg): Do not define and do not use. ---- - tests/ipc_sem.c | 25 ++++++++++++++++++++++--- - 1 file changed, 22 insertions(+), 3 deletions(-) - -diff --git a/tests/ipc_sem.c b/tests/ipc_sem.c -index 7341f72..0351e53 100644 ---- a/tests/ipc_sem.c -+++ b/tests/ipc_sem.c -@@ -20,6 +20,21 @@ - # define SEM_STAT_ANY 20 - #endif - -+#undef TEST_SEMCTL_BOGUS_CMD -+ -+/* -+ * Starting with commit glibc-2.32.9000-147-ga16d2abd496bd974a882, -+ * glibc skips semctl syscall invocations and returns EINVAL -+ * for invalid semctl commands. -+ */ -+#if GLIBC_PREREQ_GE(2, 32) -+# define TEST_SEMCTL_BOGUS_CMD 0 -+#endif -+ -+#ifndef TEST_SEMCTL_BOGUS_CMD -+# define TEST_SEMCTL_BOGUS_CMD 1 -+#endif -+ - #if XLAT_RAW - # define str_ipc_flags "0xface1e00" - # define str_ipc_private "0" -@@ -78,13 +93,15 @@ main(void) - static const key_t private_key = - (key_t) (0xffffffff00000000ULL | IPC_PRIVATE); - static const key_t bogus_key = (key_t) 0xeca86420fdb97531ULL; -- static const int bogus_semid = 0xfdb97531; -- static const int bogus_semnum = 0xeca86420; - static const int bogus_size = 0xdec0ded1; - static const int bogus_flags = 0xface1e55; -+#if TEST_SEMCTL_BOGUS_CMD -+ static const int bogus_semid = 0xfdb97531; -+ static const int bogus_semnum = 0xeca86420; - static const int bogus_cmd = 0xdeadbeef; - static const unsigned long bogus_arg = - (unsigned long) 0xbadc0dedfffffaceULL; -+#endif - - int rc; - union semun un; -@@ -102,11 +119,13 @@ main(void) - printf("semget\\(%s, 1, 0600\\) = %d\n", str_ipc_private, id); - atexit(cleanup); - -+#if TEST_SEMCTL_BOGUS_CMD - rc = semctl(bogus_semid, bogus_semnum, bogus_cmd, bogus_arg); --#define SEMCTL_BOGUS_ARG_FMT "(%#lx|\\[(%#lx|NULL)\\]|NULL)" -+# define SEMCTL_BOGUS_ARG_FMT "(%#lx|\\[(%#lx|NULL)\\]|NULL)" - printf("semctl\\(%d, %d, (%s\\|)?%s, " SEMCTL_BOGUS_ARG_FMT "\\) = %s\n", - bogus_semid, bogus_semnum, str_ipc_64, str_bogus_cmd, - bogus_arg, bogus_arg, sprintrc_grep(rc)); -+#endif - - un.buf = &ds; - if (semctl(id, 0, IPC_STAT, un)) -diff --git a/tests-m32/ipc_sem.c b/tests-m32/ipc_sem.c -index 7341f72..0351e53 100644 ---- a/tests-m32/ipc_sem.c -+++ b/tests-m32/ipc_sem.c -@@ -20,6 +20,21 @@ - # define SEM_STAT_ANY 20 - #endif - -+#undef TEST_SEMCTL_BOGUS_CMD -+ -+/* -+ * Starting with commit glibc-2.32.9000-147-ga16d2abd496bd974a882, -+ * glibc skips semctl syscall invocations and returns EINVAL -+ * for invalid semctl commands. -+ */ -+#if GLIBC_PREREQ_GE(2, 32) -+# define TEST_SEMCTL_BOGUS_CMD 0 -+#endif -+ -+#ifndef TEST_SEMCTL_BOGUS_CMD -+# define TEST_SEMCTL_BOGUS_CMD 1 -+#endif -+ - #if XLAT_RAW - # define str_ipc_flags "0xface1e00" - # define str_ipc_private "0" -@@ -78,13 +93,15 @@ main(void) - static const key_t private_key = - (key_t) (0xffffffff00000000ULL | IPC_PRIVATE); - static const key_t bogus_key = (key_t) 0xeca86420fdb97531ULL; -- static const int bogus_semid = 0xfdb97531; -- static const int bogus_semnum = 0xeca86420; - static const int bogus_size = 0xdec0ded1; - static const int bogus_flags = 0xface1e55; -+#if TEST_SEMCTL_BOGUS_CMD -+ static const int bogus_semid = 0xfdb97531; -+ static const int bogus_semnum = 0xeca86420; - static const int bogus_cmd = 0xdeadbeef; - static const unsigned long bogus_arg = - (unsigned long) 0xbadc0dedfffffaceULL; -+#endif - - int rc; - union semun un; -@@ -102,11 +119,13 @@ main(void) - printf("semget\\(%s, 1, 0600\\) = %d\n", str_ipc_private, id); - atexit(cleanup); - -+#if TEST_SEMCTL_BOGUS_CMD - rc = semctl(bogus_semid, bogus_semnum, bogus_cmd, bogus_arg); --#define SEMCTL_BOGUS_ARG_FMT "(%#lx|\\[(%#lx|NULL)\\]|NULL)" -+# define SEMCTL_BOGUS_ARG_FMT "(%#lx|\\[(%#lx|NULL)\\]|NULL)" - printf("semctl\\(%d, %d, (%s\\|)?%s, " SEMCTL_BOGUS_ARG_FMT "\\) = %s\n", - bogus_semid, bogus_semnum, str_ipc_64, str_bogus_cmd, - bogus_arg, bogus_arg, sprintrc_grep(rc)); -+#endif - - un.buf = &ds; - if (semctl(id, 0, IPC_STAT, un)) -diff --git a/tests-mx32/ipc_sem.c b/tests-mx32/ipc_sem.c -index 7341f72..0351e53 100644 ---- a/tests-mx32/ipc_sem.c -+++ b/tests-mx32/ipc_sem.c -@@ -20,6 +20,21 @@ - # define SEM_STAT_ANY 20 - #endif - -+#undef TEST_SEMCTL_BOGUS_CMD -+ -+/* -+ * Starting with commit glibc-2.32.9000-147-ga16d2abd496bd974a882, -+ * glibc skips semctl syscall invocations and returns EINVAL -+ * for invalid semctl commands. -+ */ -+#if GLIBC_PREREQ_GE(2, 32) -+# define TEST_SEMCTL_BOGUS_CMD 0 -+#endif -+ -+#ifndef TEST_SEMCTL_BOGUS_CMD -+# define TEST_SEMCTL_BOGUS_CMD 1 -+#endif -+ - #if XLAT_RAW - # define str_ipc_flags "0xface1e00" - # define str_ipc_private "0" -@@ -78,13 +93,15 @@ main(void) - static const key_t private_key = - (key_t) (0xffffffff00000000ULL | IPC_PRIVATE); - static const key_t bogus_key = (key_t) 0xeca86420fdb97531ULL; -- static const int bogus_semid = 0xfdb97531; -- static const int bogus_semnum = 0xeca86420; - static const int bogus_size = 0xdec0ded1; - static const int bogus_flags = 0xface1e55; -+#if TEST_SEMCTL_BOGUS_CMD -+ static const int bogus_semid = 0xfdb97531; -+ static const int bogus_semnum = 0xeca86420; - static const int bogus_cmd = 0xdeadbeef; - static const unsigned long bogus_arg = - (unsigned long) 0xbadc0dedfffffaceULL; -+#endif - - int rc; - union semun un; -@@ -102,11 +119,13 @@ main(void) - printf("semget\\(%s, 1, 0600\\) = %d\n", str_ipc_private, id); - atexit(cleanup); - -+#if TEST_SEMCTL_BOGUS_CMD - rc = semctl(bogus_semid, bogus_semnum, bogus_cmd, bogus_arg); --#define SEMCTL_BOGUS_ARG_FMT "(%#lx|\\[(%#lx|NULL)\\]|NULL)" -+# define SEMCTL_BOGUS_ARG_FMT "(%#lx|\\[(%#lx|NULL)\\]|NULL)" - printf("semctl\\(%d, %d, (%s\\|)?%s, " SEMCTL_BOGUS_ARG_FMT "\\) = %s\n", - bogus_semid, bogus_semnum, str_ipc_64, str_bogus_cmd, - bogus_arg, bogus_arg, sprintrc_grep(rc)); -+#endif - - un.buf = &ds; - if (semctl(id, 0, IPC_STAT, un)) --- -2.1.4 - diff --git a/0163-filter_qualify-free-allocated-data-on-the-error-path.patch b/0163-filter_qualify-free-allocated-data-on-the-error-path.patch new file mode 100644 index 0000000..7043b2f --- /dev/null +++ b/0163-filter_qualify-free-allocated-data-on-the-error-path.patch @@ -0,0 +1,77 @@ +From a034f8a50cbe15d250457ed2eefbf9db059f724f Mon Sep 17 00:00:00 2001 +From: Eugene Syromyatnikov +Date: Wed, 18 Aug 2021 21:48:38 +0200 +Subject: [PATCH 147/150] filter_qualify: free allocated data on the error path + exit of parse_poke_token + +While not terribly required due to the fact that issues with option +parsing lead to program termination, these changes avoid leaking data +allocated in the function's scope and not stored elsewhere, which might +come handy if it ever be used dynamically during the runtime. + +This also has been reported as resource leaks by covscan, and these +changes should calm it. + +* src/filter_qualify.c (parse_poke_token): Go to err label instead of +returning right away; free poke->data, poke, and str_tokenized before +returning false. + +References: https://bugzilla.redhat.com/show_bug.cgi?id=1995509 +--- + src/filter_qualify.c | 18 ++++++++++++------ + 1 file changed, 12 insertions(+), 6 deletions(-) + +diff --git a/src/filter_qualify.c b/src/filter_qualify.c +index df05496..a1a6471 100644 +--- a/src/filter_qualify.c ++++ b/src/filter_qualify.c +@@ -169,34 +169,40 @@ parse_poke_token(const char *input, struct inject_opts *fopts, bool isenter) + poke->is_enter = isenter; + + if ((val = STR_STRIP_PREFIX(token, "@arg")) == token) +- return false; ++ goto err; + if ((val[0] >= '1') && (val[0] <= '7')) { + poke->arg_no = val[0] - '0'; + } else { +- return false; ++ goto err; + } + if (val[1] != '=') +- return false; ++ goto err; + val += 2; + + data_len = strlen(val); + if ((data_len == 0) || (data_len % 2) || (data_len > 2048)) +- return false; ++ goto err; + data_len /= 2; + poke->data_len = data_len; + poke->data = xmalloc(data_len); + + for (size_t i = 0; i < data_len; i++) + if (sscanf(&val[2 * i], "%2hhx", &poke->data[i]) != 1) +- return false; ++ goto err; + + if (poke_add(fopts->data.poke_idx, poke)) +- return false; ++ goto err; + } + free(str_tokenized); + + fopts->data.flags |= flag; + return true; ++ ++err: ++ free(poke->data); ++ free(poke); ++ free(str_tokenized); ++ return false; + } + + static bool +-- +2.1.4 + diff --git a/0164-macros-expand-BIT-macros-add-MASK-macros-add-_SAFE-m.patch b/0164-macros-expand-BIT-macros-add-MASK-macros-add-_SAFE-m.patch new file mode 100644 index 0000000..6ee45fb --- /dev/null +++ b/0164-macros-expand-BIT-macros-add-MASK-macros-add-_SAFE-m.patch @@ -0,0 +1,70 @@ +From 3f3dd44f1964c54b55e8c84343579bd7c1924df5 Mon Sep 17 00:00:00 2001 +From: Eugene Syromyatnikov +Date: Wed, 18 Aug 2021 21:49:12 +0200 +Subject: [PATCH 148/150] macros: expand BIT macros, add MASK macros; add + *_SAFE macros + +These macros might make reading a code that often converts between powers +of 2 and values/masks a bit easier; moreover, the *_SAFE versions should +help in cases where the shift values are expected to be equal to the type +bit width (which lead to UB otherwise). + +Switching from BIT to BIT32 should also clarify bitness, which may be somewhat +murky at times (cf. printxval, printflags, and printxvals). + +* src/macros.h [!BIT] (BIT): Rename to... +[!BIT32] (BIT32): ...this. +[!BIT64] (BIT64): New macro. +[!MASK32] (MASK32): Likewise. +[!MASK64] (MASK64): Likewise. +(BIT32_SAFE, BIT64_SAFE, MASK32_SAFE, MASK64_SAFE): New macros. +(FLAG): Use BIT32. +--- + src/macros.h | 30 +++++++++++++++++++++++++++--- + 1 file changed, 27 insertions(+), 3 deletions(-) + +diff --git a/src/macros.h b/src/macros.h +index 467f5d0..2d7a83d 100644 +--- a/src/macros.h ++++ b/src/macros.h +@@ -78,10 +78,34 @@ is_filled(const char *ptr, char fill, size_t size) + # define IS_ARRAY_ZERO(arr_) \ + is_filled((const char *) (arr_), 0, sizeof(arr_) + MUST_BE_ARRAY(arr_)) + +-# ifndef BIT +-# define BIT(x_) (1U << (x_)) ++# ifndef BIT32 ++# define BIT32(x_) (1U << (x_)) + # endif + +-# define FLAG(name_) name_ = BIT(name_##_BIT) ++# ifndef BIT64 ++# define BIT64(x_) (1ULL << (x_)) ++# endif ++ ++# ifndef MASK32 ++# define MASK32(x_) (BIT32(x_) - 1U) ++# endif ++ ++# ifndef MASK64 ++# define MASK64(x_) (BIT64(x_) - 1ULL) ++# endif ++ ++/* ++ * "Safe" versions that avoid UB for values that are >= type bit size ++ * (the usually expected behaviour of the bit shift in that case is zero, ++ * but at least powerpc is notorious for returning the input value when shift ++ * by 64 bits is performed). ++ */ ++ ++# define BIT32_SAFE(x_) ((x_) < 32 ? BIT32(x_) : 0) ++# define BIT64_SAFE(x_) ((x_) < 64 ? BIT64(x_) : 0) ++# define MASK32_SAFE(x_) (BIT32_SAFE(x_) - 1U) ++# define MASK64_SAFE(x_) (BIT64_SAFE(x_) - 1ULL) ++ ++# define FLAG(name_) name_ = BIT32(name_##_BIT) + + #endif /* !STRACE_MACROS_H */ +-- +2.1.4 + diff --git a/0165-trie-use-BIT-and-MASK-macros.patch b/0165-trie-use-BIT-and-MASK-macros.patch new file mode 100644 index 0000000..91c6fe3 --- /dev/null +++ b/0165-trie-use-BIT-and-MASK-macros.patch @@ -0,0 +1,151 @@ +From 8ef5456338a947944cc03b95c22c837af5884ddc Mon Sep 17 00:00:00 2001 +From: Eugene Syromyatnikov +Date: Wed, 18 Aug 2021 21:51:22 +0200 +Subject: [PATCH 149/150] trie: use BIT* and MASK* macros + +This makes reading the code a bit easier. It also solves some issues +where there is a hypothertical possibility of having bit shifts of size +64, by virtue of using the *_SAFE macros (that should silence some +reported "left shifting by more than 63 bits has undefined behavior" +covscan issues). + +* src/trie.c (trie_create): Use BIT32, MASK64. +(trie_create_data_block): Use BIT32, change iterator variable type +to size_t. +(trie_get_node): Use BIT64, MASK64. +(trie_data_block_calc_pos): Use BIT32, MASK64, MASK64_SAFE. +(trie_iterate_keys_node): Use BIT64, MASK64, MASK64_SAFE. +(trie_free_node): Use BIT64. +--- + src/trie.c | 34 +++++++++++++++++----------------- + 1 file changed, 17 insertions(+), 17 deletions(-) + +diff --git a/src/trie.c b/src/trie.c +index 586ff25..0a231e4 100644 +--- a/src/trie.c ++++ b/src/trie.c +@@ -15,6 +15,7 @@ + #include + + #include "trie.h" ++#include "macros.h" + #include "xmalloc.h" + + static const uint8_t ptr_sz_lg = (sizeof(void *) == 8 ? 6 : 5); +@@ -87,7 +88,7 @@ trie_create(uint8_t key_size, uint8_t item_size_lg, uint8_t node_key_bits, + / t->node_key_bits; + + if (item_size_lg != 6) +- t->empty_value &= (((uint64_t) 1 << (1 << t->item_size_lg)) - 1); ++ t->empty_value &= MASK64(BIT32(t->item_size_lg)); + + return t; + } +@@ -96,8 +97,8 @@ static void * + trie_create_data_block(struct trie *t) + { + uint64_t fill_value = t->empty_value; +- for (int i = 1; i < 1 << (6 - t->item_size_lg); i++) { +- fill_value <<= (1 << t->item_size_lg); ++ for (size_t i = 1; i < BIT32(6 - t->item_size_lg); i++) { ++ fill_value <<= BIT32(t->item_size_lg); + fill_value |= t->empty_value; + } + +@@ -105,7 +106,7 @@ trie_create_data_block(struct trie *t) + if (sz < 6) + sz = 6; + +- size_t count = 1 << (sz - 6); ++ size_t count = BIT32(sz - 6); + uint64_t *data_block = xcalloc(count, 8); + + for (size_t i = 0; i < count; i++) +@@ -119,7 +120,7 @@ trie_get_node(struct trie *t, uint64_t key, bool auto_create) + { + void **cur_node = &(t->data); + +- if (t->key_size < 64 && key > (uint64_t) 1 << t->key_size) ++ if (t->key_size < 64 && key > MASK64(t->key_size)) + return NULL; + + for (uint8_t cur_depth = 0; cur_depth <= t->max_depth; cur_depth++) { +@@ -133,13 +134,13 @@ trie_get_node(struct trie *t, uint64_t key, bool auto_create) + if (cur_depth == t->max_depth) + *cur_node = trie_create_data_block(t); + else +- *cur_node = xcalloc(1 << sz, 1); ++ *cur_node = xcalloc(BIT64(sz), 1); + } + + if (cur_depth == t->max_depth) + break; + +- size_t pos = (key >> offs) & ((1 << (sz - ptr_sz_lg)) - 1); ++ size_t pos = (key >> offs) & MASK64(sz - ptr_sz_lg); + cur_node = (((void **) (*cur_node)) + pos); + } + +@@ -152,7 +153,7 @@ trie_data_block_calc_pos(struct trie *t, uint64_t key, + { + uint64_t key_mask; + +- key_mask = (1 << t->data_block_key_bits) - 1; ++ key_mask = MASK64(t->data_block_key_bits); + *pos = (key & key_mask) >> (6 - t->item_size_lg); + + if (t->item_size_lg == 6) { +@@ -161,10 +162,10 @@ trie_data_block_calc_pos(struct trie *t, uint64_t key, + return; + } + +- key_mask = (1 << (6 - t->item_size_lg)) - 1; +- *offs = (key & key_mask) * (1 << t->item_size_lg); ++ key_mask = MASK64(6 - t->item_size_lg); ++ *offs = (key & key_mask) << t->item_size_lg; + +- *mask = (((uint64_t) 1 << (1 << t->item_size_lg)) - 1) << *offs; ++ *mask = MASK64_SAFE(BIT32(t->item_size_lg)) << *offs; + } + + bool +@@ -211,7 +212,7 @@ trie_iterate_keys_node(struct trie *t, + return 0; + + if (t->key_size < 64) { +- uint64_t key_max = ((uint64_t) 1 << t->key_size) - 1; ++ uint64_t key_max = MASK64(t->key_size); + if (end > key_max) + end = key_max; + } +@@ -228,15 +229,14 @@ trie_iterate_keys_node(struct trie *t, + t->key_size : + trie_get_node_bit_offs(t, depth - 1); + +- uint64_t first_key_in_node = start & +- (uint64_t) -1 << parent_node_bit_off; ++ uint64_t first_key_in_node = start & ~MASK64_SAFE(parent_node_bit_off); + + uint8_t node_bit_off = trie_get_node_bit_offs(t, depth); + uint8_t node_key_bits = parent_node_bit_off - node_bit_off; +- uint64_t mask = ((uint64_t) 1 << (node_key_bits)) - 1; ++ uint64_t mask = MASK64_SAFE(node_key_bits); + uint64_t start_index = (start >> node_bit_off) & mask; + uint64_t end_index = (end >> node_bit_off) & mask; +- uint64_t child_key_count = (uint64_t) 1 << node_bit_off; ++ uint64_t child_key_count = BIT64(node_bit_off); + + uint64_t count = 0; + +@@ -274,7 +274,7 @@ trie_free_node(struct trie *t, void *node, uint8_t depth) + if (depth >= t->max_depth) + goto free_node; + +- size_t sz = 1 << (trie_get_node_size(t, depth) - ptr_sz_lg); ++ size_t sz = BIT64(trie_get_node_size(t, depth) - ptr_sz_lg); + for (size_t i = 0; i < sz; i++) + trie_free_node(t, ((void **) node)[i], depth + 1); + +-- +2.1.4 + diff --git a/0166-tee-rewrite-num_params-access-in-tee_fetch_buf_data.patch b/0166-tee-rewrite-num_params-access-in-tee_fetch_buf_data.patch new file mode 100644 index 0000000..56aa8a1 --- /dev/null +++ b/0166-tee-rewrite-num_params-access-in-tee_fetch_buf_data.patch @@ -0,0 +1,52 @@ +From 3a68f90c2a5a208b475cc2014f85ae04541ec5b6 Mon Sep 17 00:00:00 2001 +From: Eugene Syromyatnikov +Date: Fri, 20 Aug 2021 21:31:01 +0200 +Subject: [PATCH 150/150] tee: rewrite num_params access in tee_fetch_buf_data + +Pointer to num_params field of the fetched structure is passed in a +separate function argument which provokes covscan complaints about +uninitialised accesses and also tingles my aliasing rules senses. +Rewrite to access it via the arg_struct argument which is fetched +earlier in the function flow. + +* src/tee.c (TEE_FETCH_BUF_DATA): Change &arg_.num_params +to offsetof(typeof(arg_), num_params). +(tee_fetch_buf_data): Accept offset of the num_params field instead +of pointer to it; reconstruct the num_params pointer using it. +--- + src/tee.c | 5 +++-- + 1 file changed, 3 insertions(+), 2 deletions(-) + +diff --git a/src/tee.c b/src/tee.c +index f9eda52..d7e9b15 100644 +--- a/src/tee.c ++++ b/src/tee.c +@@ -33,7 +33,7 @@ struct tee_ioctl_shm_register_fd_data { + + #define TEE_FETCH_BUF_DATA(buf_, arg_, params_) \ + tee_fetch_buf_data(tcp, arg, &buf_, sizeof(arg_), \ +- &arg_, &arg_.num_params, \ ++ &arg_, offsetof(typeof(arg_), num_params), \ + params_) + + /* session id is printed as 0x%x in libteec */ +@@ -56,7 +56,7 @@ tee_fetch_buf_data(struct tcb *const tcp, + struct tee_ioctl_buf_data *buf, + size_t arg_size, + void *arg_struct, +- unsigned *num_params, ++ size_t num_params_offs, + uint64_t *params) + { + if (umove_or_printaddr(tcp, arg, buf)) +@@ -69,6 +69,7 @@ tee_fetch_buf_data(struct tcb *const tcp, + tee_print_buf(buf); + return RVAL_IOCTL_DECODED; + } ++ uint32_t *num_params = (uint32_t *) (arg_struct + num_params_offs); + if (entering(tcp) && + (arg_size + TEE_IOCTL_PARAM_SIZE(*num_params) != buf->buf_len)) { + /* +-- +2.1.4 + diff --git a/0167-print_ifindex-fix-IFNAME_QUOTED_SZ-definition.patch b/0167-print_ifindex-fix-IFNAME_QUOTED_SZ-definition.patch new file mode 100644 index 0000000..9f19614 --- /dev/null +++ b/0167-print_ifindex-fix-IFNAME_QUOTED_SZ-definition.patch @@ -0,0 +1,55 @@ +From e27b06773eaf5c0307bcc5637d7457be9be1e6ea Mon Sep 17 00:00:00 2001 +From: Eugene Syromyatnikov +Date: Wed, 1 Dec 2021 17:11:02 +0100 +Subject: [PATCH] print_ifindex: fix IFNAME_QUOTED_SZ definition + +sizeof(IFNAMSIZ) instead of IFNAMSIZ was mistakenly used +for IFNAME_QUOTED_SZ initial definition in commit v4.23~87 +"print_ifindex: respect xlat style settings". + +* src/print_ifindex.c (IFNAME_QUOTED_SZ): Use IFNAMSIZ +instead of sizeof(IFNAMSIZ). +* NEWS: Mention it. + +Reported-by: Paulo Andrade +Suggested-by: Paulo Andrade +Fixes: v4.23~87 "print_ifindex: respect xlat style settings" +References: https://bugzilla.redhat.com/show_bug.cgi?id=2028146 +--- + NEWS | 4 ++++ + src/print_ifindex.c | 2 +- + 2 files changed, 5 insertions(+), 1 deletion(-) + +diff --git a/NEWS b/NEWS +index 9bab673..a3036b8 100644 +--- a/NEWS ++++ b/NEWS +@@ -16,6 +16,12 @@ Noteworthy changes in release ?.?? (????-??-??) + PTRACE_*, RTM_*, RTPROT_*, TRAP_*, UFFD_*, UFFDIO_*, and V4L2_* constants. + * Updated lists of ioctl commands from Linux 5.13. + ++ * Bug fixes ++ * Fixed insufficient buffer size used for network interface name printing, ++ that previously led to assertions on attempts of printing interface names ++ that require quoting, for example, names longer than 4 characters in -xx ++ mode (addresses RHBZ bug #2028146). ++ + * Portability + * On powerpc and powerpc64, linux kernel >= 2.6.23 is required. + Older versions without a decent PTRACE_GETREGS support will not work. +diff --git a/src/print_ifindex.c b/src/print_ifindex.c +index ec48093..dc9d592 100644 +--- a/src/print_ifindex.c ++++ b/src/print_ifindex.c +@@ -13,7 +13,7 @@ + + # define INI_PFX "if_nametoindex(\"" + # define INI_SFX "\")" +-# define IFNAME_QUOTED_SZ (sizeof(IFNAMSIZ) * 4 + 3) ++# define IFNAME_QUOTED_SZ (IFNAMSIZ * 4 + 3) + + const char * + get_ifname(const unsigned int ifindex) +-- +2.1.4 + diff --git a/0168-m4-fix-st_SELINUX-check.patch b/0168-m4-fix-st_SELINUX-check.patch new file mode 100644 index 0000000..9c3203f --- /dev/null +++ b/0168-m4-fix-st_SELINUX-check.patch @@ -0,0 +1,208 @@ +From b8f375c2c8140e759122bca3e3469386d3ba5184 Mon Sep 17 00:00:00 2001 +From: "Dmitry V. Levin" +Date: Mon, 29 Nov 2021 08:00:00 +0000 +Subject: [PATCH 168/174] m4: fix st_SELINUX check + +* m4/st_selinux.m4: Make sure selinux support is enabled only if +all expected functions are provided by libselinux. + +Fixes: v5.12~49 "Implement --secontext[=full] option to display SELinux contexts" +--- + m4/st_selinux.m4 | 36 ++++++++++++++++-------------------- + 1 file changed, 16 insertions(+), 20 deletions(-) + +diff --git a/m4/st_selinux.m4 b/m4/st_selinux.m4 +index da72a48..7b24eba 100644 +--- a/m4/st_selinux.m4 ++++ b/m4/st_selinux.m4 +@@ -34,29 +34,25 @@ AS_IF([test "x$with_libselinux" != xno], + AS_IF([test "x$found_selinux_h" = xyes], + [saved_LDFLAGS="$LDFLAGS" + LDFLAGS="$LDFLAGS $libselinux_LDFLAGS" +- AC_CHECK_LIB([selinux],[getpidcon], +- [libselinux_LIBS="-lselinux" +- enable_secontext=yes +- ], +- [if test "x$with_libselinux" != xcheck; then +- AC_MSG_FAILURE([failed to find getpidcon in libselinux]) +- fi +- ] +- ) +- AC_CHECK_LIB([selinux],[getfilecon], +- [libselinux_LIBS="-lselinux" +- enable_secontext=yes +- ], +- [if test "x$with_libselinux" != xcheck; then +- AC_MSG_FAILURE([failed to find getfilecon in libselinux]) +- fi +- ] ++ missing= ++ for func in getpidcon getfilecon; do ++ AC_CHECK_LIB([selinux], [$func], [:], ++ [missing="$missing $func"]) ++ done ++ AS_IF([test "x$missing" = x], ++ [libselinux_LIBS="-lselinux" ++ enable_secontext=yes ++ ], ++ [AS_IF([test "x$with_libselinux" != xcheck], ++ [AC_MSG_FAILURE([failed to find in libselinux:$missing])] ++ ) ++ ] + ) + LDFLAGS="$saved_LDFLAGS" + ], +- [if test "x$with_libselinux" != xcheck; then +- AC_MSG_FAILURE([failed to find selinux.h]) +- fi ++ [AS_IF([test "x$with_libselinux" != xcheck], ++ [AC_MSG_FAILURE([failed to find selinux.h])] ++ ) + ] + ) + ] +--- old/configure 2022-02-07 20:17:58.364068436 +0100 ++++ new/configure 2022-02-07 20:19:17.092067347 +0100 +@@ -18437,9 +18437,12 @@ + if test "x$found_selinux_h" = xyes; then : + saved_LDFLAGS="$LDFLAGS" + LDFLAGS="$LDFLAGS $libselinux_LDFLAGS" +- { $as_echo "$as_me:${as_lineno-$LINENO}: checking for getpidcon in -lselinux" >&5 +-$as_echo_n "checking for getpidcon in -lselinux... " >&6; } +-if ${ac_cv_lib_selinux_getpidcon+:} false; then : ++ missing= ++ for func in getpidcon getfilecon; do ++ as_ac_Lib=`$as_echo "ac_cv_lib_selinux_$func" | $as_tr_sh` ++{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $func in -lselinux" >&5 ++$as_echo_n "checking for $func in -lselinux... " >&6; } ++if eval \${$as_ac_Lib+:} false; then : + $as_echo_n "(cached) " >&6 + else + ac_check_lib_save_LIBS=$LIBS +@@ -18453,101 +18456,59 @@ + #ifdef __cplusplus + extern "C" + #endif +-char getpidcon (); ++char $func (); + int + main () + { +-return getpidcon (); ++return $func (); + ; + return 0; + } + _ACEOF + if ac_fn_c_try_link "$LINENO"; then : +- ac_cv_lib_selinux_getpidcon=yes ++ eval "$as_ac_Lib=yes" + else +- ac_cv_lib_selinux_getpidcon=no ++ eval "$as_ac_Lib=no" + fi + rm -f core conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext + LIBS=$ac_check_lib_save_LIBS + fi +-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_selinux_getpidcon" >&5 +-$as_echo "$ac_cv_lib_selinux_getpidcon" >&6; } +-if test "x$ac_cv_lib_selinux_getpidcon" = xyes; then : +- libselinux_LIBS="-lselinux" +- enable_secontext=yes +- ++eval ac_res=\$$as_ac_Lib ++ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5 ++$as_echo "$ac_res" >&6; } ++if eval test \"x\$"$as_ac_Lib"\" = x"yes"; then : ++ : + else +- if test "x$with_libselinux" != xcheck; then +- { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 +-$as_echo "$as_me: error: in \`$ac_pwd':" >&2;} +-as_fn_error $? "failed to find getpidcon in libselinux +-See \`config.log' for more details" "$LINENO" 5; } +- fi +- +- ++ missing="$missing $func" + fi + +- { $as_echo "$as_me:${as_lineno-$LINENO}: checking for getfilecon in -lselinux" >&5 +-$as_echo_n "checking for getfilecon in -lselinux... " >&6; } +-if ${ac_cv_lib_selinux_getfilecon+:} false; then : +- $as_echo_n "(cached) " >&6 +-else +- ac_check_lib_save_LIBS=$LIBS +-LIBS="-lselinux $LIBS" +-cat confdefs.h - <<_ACEOF >conftest.$ac_ext +-/* end confdefs.h. */ +- +-/* Override any GCC internal prototype to avoid an error. +- Use char because int might match the return type of a GCC +- builtin and then its argument prototype would still apply. */ +-#ifdef __cplusplus +-extern "C" +-#endif +-char getfilecon (); +-int +-main () +-{ +-return getfilecon (); +- ; +- return 0; +-} +-_ACEOF +-if ac_fn_c_try_link "$LINENO"; then : +- ac_cv_lib_selinux_getfilecon=yes +-else +- ac_cv_lib_selinux_getfilecon=no +-fi +-rm -f core conftest.err conftest.$ac_objext \ +- conftest$ac_exeext conftest.$ac_ext +-LIBS=$ac_check_lib_save_LIBS +-fi +-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_selinux_getfilecon" >&5 +-$as_echo "$ac_cv_lib_selinux_getfilecon" >&6; } +-if test "x$ac_cv_lib_selinux_getfilecon" = xyes; then : ++ done ++ if test "x$missing" = x; then : + libselinux_LIBS="-lselinux" +- enable_secontext=yes ++ enable_secontext=yes + + else +- if test "x$with_libselinux" != xcheck; then +- { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 ++ if test "x$with_libselinux" != xcheck; then : ++ { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 + $as_echo "$as_me: error: in \`$ac_pwd':" >&2;} +-as_fn_error $? "failed to find getfilecon in libselinux ++as_fn_error $? "failed to find in libselinux:$missing + See \`config.log' for more details" "$LINENO" 5; } +- fi +- + + fi + ++ ++fi + LDFLAGS="$saved_LDFLAGS" + + else +- if test "x$with_libselinux" != xcheck; then +- { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 ++ if test "x$with_libselinux" != xcheck; then : ++ { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 + $as_echo "$as_me: error: in \`$ac_pwd':" >&2;} + as_fn_error $? "failed to find selinux.h + See \`config.log' for more details" "$LINENO" 5; } +- fi ++ ++fi + + + fi +-- +2.1.4 + diff --git a/0169-Implement-displaying-of-expected-context-upon-mismat.patch b/0169-Implement-displaying-of-expected-context-upon-mismat.patch new file mode 100644 index 0000000..c1e08db --- /dev/null +++ b/0169-Implement-displaying-of-expected-context-upon-mismat.patch @@ -0,0 +1,6958 @@ +From 8b07b18a44f7e0ebdb65b791d79d588dd90b70b6 Mon Sep 17 00:00:00 2001 +From: =?UTF-8?q?Renaud=20M=C3=A9trich?= +Date: Tue, 5 Oct 2021 08:36:22 +0200 +Subject: [PATCH 169/174] Implement displaying of expected context upon + mismatch + +New option to --secontext=... (also available as -e secontext=...) +- mismatch: print expected context on mismatch + +When using 'mismatch', an additional check is made on the context by +reading the context database and comparing the output after stripping +the unwanted part (e.g. stripping nothing in 'full' mode, keeping the +type only in default mode): +- if it differs, prints the expected context after printing '!!' +- if not, don't print anything + +Example with /home/rmetrich/GIT/strace/autom4te.cache/output.3 file: + +---- +$ matchpathcon /home/rmetrich/GIT/strace/autom4te.cache/output.3 +/home/rmetrich/GIT/strace/autom4te.cache/output.3 unconfined_u:object_r:user_home_t:s0 + +$ ls -Z /home/rmetrich/GIT/strace/autom4te.cache/output.3 +system_u:object_r:user_home_t:s0 /home/rmetrich/GIT/strace/autom4te.cache/output.3 +---- + +From above, we see the user part differs ('unconfined_u' vs 'system_u') + +Output in '!full' mode (no diff found on type): + +---- +$ strace --secontext=mismatch -e statx stat /home/rmetrich/GIT/strace/autom4te.cache/output.3 +... statx(AT_FDCWD, "/home/rmetrich/GIT/strace/autom4te.cache/output.3" [user_home_t], ... +---- + +Output in 'full' mode (diff found on user): + +---- +... statx(AT_FDCWD, "/home/rmetrich/GIT/strace/autom4te.cache/output.3" [system_u:object_r:user_home_t:s0!!unconfined_u:object_r:user_home_t:s0], ... +---- + +* NEWS: Mention this change. +* doc/strace.1.in: Document it. +* m4/st_selinux.m4 (st_SELINUX): Check for selabel_open +and selabel_lookup. +* src/filter_qualify.c [ENABLE_SECONTEXT]: Include "secontext.h". +[ENABLE_SECONTEXT] (secontext_set): New variable. +[ENABLE_SECONTEXT] (secontextstr_to_uint, qualify_secontext): New +functions. +(qual_options) [ENABLE_SECONTEXT]: Add "secontext". +* src/secontext.c: Include , , , +"largefile_wrappers.h", "number_set.h", and "xmalloc.h". +(selinux_context, selinux_context_full): Remove. +(getcontext): Use is_number_in_set instead of selinux_context_full. +(selinux_getpidcon): Use is_number_in_set instead of selinux_context. +(get_expected_filecontext): New function. +(selinux_getfdcon, selinux_getfilecon): Use it to print context mismatch +if SECONTEXT_MISMATCH is set in secontext_set. +* src/secontext.h (selinux_context, selinux_context_full): Remove. +(secontext_bits): New enum. +(secontext_set, qualify_secontext, selinux_set_format): New +declarations. +* src/strace.c (SECONTEXT_E_QUAL): New macro. +(usage): Use it, describe --secontext. +(init) [ENABLE_SECONTEXT]: Call qualify_secontext, rename +GETOPT_SECONTEXT to GETOPT_QUAL_SECONTEXT, use is_number_in_set +instead of selinux_context. +(init) [ENABLE_SECONTEXT] (secontext_qual): New variable. +(init) [ENABLE_SECONTEXT] : Use it. +* tests/.gitignore: Add *--secontext_full_mismatch, +*--secontext_full_mismatch.c, *--secontext_mismatch, and +*--secontext_mismatch.c. +* tests/gen_secontext.sh: Generate *--secontext_full_mismatch.c +and *--secontext_mismatch.c. +* tests/gen_tests.in (access--secontext_full_mismatch, +access--secontext_mismatch, chmod--secontext_full_mismatch, +chmod--secontext_mismatch, execve--secontext_full_mismatch, +execve--secontext_mismatch, execveat--secontext_full_mismatch, +execveat--secontext_mismatch, faccessat--secontext_full_mismatch, +faccessat--secontext_mismatch, faccessat-y--secontext_full_mismatch, +faccessat-y--secontext_mismatch, fanotify_mark--secontext_full_mismatch, +fanotify_mark--secontext_mismatch, fchmod--secontext_full_mismatch, +fchmod--secontext_mismatch, fchmod-y--secontext_full_mismatch, +fchmod-y--secontext_mismatch, fchmodat--secontext_full_mismatch, +fchmodat--secontext_mismatch, fchownat--secontext_full_mismatch, +fchownat--secontext_mismatch, file_handle--secontext_full_mismatch, +file_handle--secontext_mismatch, linkat--secontext_full_mismatch, +linkat--secontext_mismatch, open--secontext_full_mismatch, +open--secontext_mismatch, openat--secontext_full_mismatch, +openat--secontext_mismatch): New tests. +* tests/linkat.c: Include . +(main) [PRINT_SECONTEXT_MISMATCH]: Check context mismatch. +* tests/options-syntax.test: Check --secontext and -e secontext syntax. +* tests/secontext.h (secontext_field): New enum. +(secontext_full_file, secontext_short_file): Add "mismatch" argument. +(update_secontext_type): Rename to update_secontext_field, add "field" +argument. +(SECONTEXT_FILE): Conditionalize "mismatch" argument passed to +secontext_full_file and secontext_short_file on +PRINT_SECONTEXT_MISMATCH. +* tests/secontext.c: Include and . +(get_type_from_context, raw_expected_secontext_full_file, +raw_expected_secontext_short_file): New functions. +(raw_secontext_short_file, raw_secontext_short_pid): Use +get_type_from_context. +(secontext_full_file): Add "mismatch" argument, use +raw_expected_secontext_full_file if mismatch is enabled. +(secontext_short_file): Add "mismatch" argument, use +raw_expected_secontext_short_file if mismatch is enabled. +(update_secontext_type): Rename to update_secontext_field, add "field" +argument. + +Co-authored-by: Dmitry V. Levin + +Conflicts: + NEWS + doc/strace.1.in + src/filter_qualify.c + src/strace.c +--- + NEWS | 2 + + doc/strace.1.in | 33 +++++++-- + m4/st_selinux.m4 | 2 +- + src/filter_qualify.c | 29 ++++++++ + src/secontext.c | 114 ++++++++++++++++++++++++++---- + src/secontext.h | 15 +++- + src/strace.c | 49 ++++++++----- + tests/.gitignore | 4 ++ + tests/gen_secontext.sh | 12 +++- + tests/gen_tests.in | 34 ++++++++- + tests/linkat.c | 46 +++++++++++- + tests/options-syntax.test | 14 +++- + tests/secontext.c | 176 ++++++++++++++++++++++++++++++++-------------- + tests/secontext.h | 28 ++++++-- + 14 files changed, 453 insertions(+), 105 deletions(-) + +diff --git a/NEWS b/NEWS +index 969ed11..f7542ea 100644 +--- a/NEWS ++++ b/NEWS +@@ -2,6 +2,8 @@ Noteworthy changes in release 5.13 (2021-07-18) + =============================================== + + * Improvements ++ * Implemented --secontext=mismatch option to find mismatches in SELinux ++ contexts. + * Print netlink data in a more structured way. + * Implemented decoding of NT_PRSTATUS and NT_FPREGSET regsets + of PTRACE_GETREGSET and PTRACE_SETREGSET requests. +diff --git a/doc/strace.1.in b/doc/strace.1.in +index 003e9e5..439243b 100644 +--- a/doc/strace.1.in ++++ b/doc/strace.1.in +@@ -53,7 +53,7 @@ strace \- trace system calls and signals + .OM \-P path + .OM \-p pid + .OP \-\-seccomp\-bpf +-.if '@ENABLE_SECONTEXT_FALSE@'#' .OP \-\-secontext\fR[=full] ++.if '@ENABLE_SECONTEXT_FALSE@'#' .OP \-\-secontext\fR[=\fIformat\fR] + .BR "" { + .OR \-p pid + .BR "" | +@@ -259,6 +259,7 @@ is one of + .BR inject , + .BR status , + .BR quiet " (or " silent " or " silence " or " q ), ++.if '@ENABLE_SECONTEXT_FALSE@'#' .BR secontext , + .BR decode\-fds " (or " decode\-fd ), + or + .BR kvm , +@@ -1086,13 +1087,33 @@ and PIDs associated with pidfd file descriptors. + If strace and tracee are in different PID namespaces, print PIDs in + strace's namespace, too. + .if '@ENABLE_SECONTEXT_FALSE@'#' .TP +-.if '@ENABLE_SECONTEXT_FALSE@'#' .BR \-\-secontext "[=full]" ++.if '@ENABLE_SECONTEXT_FALSE@'#' .BR \-\-secontext\fR[=\fIformat\fR] ++.if '@ENABLE_SECONTEXT_FALSE@'#' .TQ ++.if '@ENABLE_SECONTEXT_FALSE@'#' .BR \-e\ secontext\fR=\fIformat\fR + .if '@ENABLE_SECONTEXT_FALSE@'#' When SELinux is available and is not disabled, + .if '@ENABLE_SECONTEXT_FALSE@'#' print in square brackets SELinux contexts of +-.if '@ENABLE_SECONTEXT_FALSE@'#' processes, files, and descriptors. When +-.if '@ENABLE_SECONTEXT_FALSE@'#' .B full +-.if '@ENABLE_SECONTEXT_FALSE@'#' is specified, print the complete context (user, +-.if '@ENABLE_SECONTEXT_FALSE@'#' role, type and category) instead of just the type. ++.if '@ENABLE_SECONTEXT_FALSE@'#' processes, files, and descriptors. The ++.if '@ENABLE_SECONTEXT_FALSE@'#' .I format ++.if '@ENABLE_SECONTEXT_FALSE@'#' argument is a comma-separated list of items ++.if '@ENABLE_SECONTEXT_FALSE@'#' being one of the following: ++.if '@ENABLE_SECONTEXT_FALSE@'#' .RS ++.if '@ENABLE_SECONTEXT_FALSE@'#' .TP 18 ++.if '@ENABLE_SECONTEXT_FALSE@'#' .BR full ++.if '@ENABLE_SECONTEXT_FALSE@'#' Print the full context (user, role, type level ++.if '@ENABLE_SECONTEXT_FALSE@'#' and category). ++.if '@ENABLE_SECONTEXT_FALSE@'#' .TQ ++.if '@ENABLE_SECONTEXT_FALSE@'#' .BR mismatch ++.if '@ENABLE_SECONTEXT_FALSE@'#' Also print the context recorded by the SELinux ++.if '@ENABLE_SECONTEXT_FALSE@'#' database in case the current context differs. ++.if '@ENABLE_SECONTEXT_FALSE@'#' The latter is printed after two exclamation marks (!!). ++.if '@ENABLE_SECONTEXT_FALSE@'#' .RE ++.if '@ENABLE_SECONTEXT_FALSE@'#' .IP ++.if '@ENABLE_SECONTEXT_FALSE@'#' The default value for ++.if '@ENABLE_SECONTEXT_FALSE@'#' .BR \-\-secontext ++.if '@ENABLE_SECONTEXT_FALSE@'#' is ++.if '@ENABLE_SECONTEXT_FALSE@'#' .BR !full,mismatch ++.if '@ENABLE_SECONTEXT_FALSE@'#' which prints only the type instead of full context ++.if '@ENABLE_SECONTEXT_FALSE@'#' and doesn't check for context mismatches. + .SS Statistics + .TP 12 + .B \-c +diff --git a/m4/st_selinux.m4 b/m4/st_selinux.m4 +index 7b24eba..60e23a9 100644 +--- a/m4/st_selinux.m4 ++++ b/m4/st_selinux.m4 +@@ -35,7 +35,7 @@ AS_IF([test "x$with_libselinux" != xno], + [saved_LDFLAGS="$LDFLAGS" + LDFLAGS="$LDFLAGS $libselinux_LDFLAGS" + missing= +- for func in getpidcon getfilecon; do ++ for func in getpidcon getfilecon selabel_open selabel_lookup; do + AC_CHECK_LIB([selinux], [$func], [:], + [missing="$missing $func"]) + done +diff --git a/src/filter_qualify.c b/src/filter_qualify.c +index df05496..a5b4fe7 100644 +--- a/src/filter_qualify.c ++++ b/src/filter_qualify.c +@@ -14,6 +14,9 @@ + #include "poke.h" + #include "retval.h" + #include "static_assert.h" ++#ifdef ENABLE_SECONTEXT ++# include "secontext.h" ++#endif + + struct number_set *read_set; + struct number_set *write_set; +@@ -591,6 +594,29 @@ qualify_kvm(const char *const str) + } + } + ++#ifdef ENABLE_SECONTEXT ++struct number_set *secontext_set; ++ ++static int ++secontextstr_to_uint(const char *s) ++{ ++ static const struct xlat_data secontext_strs[] = { ++ { SECONTEXT_FULL, "full" }, ++ { SECONTEXT_MISMATCH, "mismatch" }, ++ }; ++ ++ return (int) find_arg_val(s, secontext_strs, -1ULL, -1ULL); ++} ++ ++void ++qualify_secontext(const char *const str) ++{ ++ if (!secontext_set) ++ secontext_set = alloc_number_set_array(1); ++ qualify_tokens(str, secontext_set, secontextstr_to_uint, "secontext"); ++} ++#endif ++ + static const struct qual_options { + const char *name; + void (*qualify)(const char *); +@@ -622,6 +648,9 @@ static const struct qual_options { + { "kvm", qualify_kvm }, + { "decode-fd", qualify_decode_fd }, + { "decode-fds", qualify_decode_fd }, ++#ifdef ENABLE_SECONTEXT ++ { "secontext", qualify_secontext }, ++#endif + }; + + void +diff --git a/src/secontext.c b/src/secontext.c +index ccf9b34..9a91386 100644 +--- a/src/secontext.c ++++ b/src/secontext.c +@@ -10,14 +10,17 @@ + #include + #include + #include ++#include ++#include + #include ++#include + ++#include "largefile_wrappers.h" ++#include "number_set.h" + #include "secontext.h" ++#include "xmalloc.h" + #include "xstring.h" + +-bool selinux_context = false; +-bool selinux_context_full = false; +- + static int + getcontext(int rc, char **secontext, char **result) + { +@@ -25,7 +28,7 @@ getcontext(int rc, char **secontext, char **result) + return rc; + + *result = NULL; +- if (!selinux_context_full) { ++ if (!is_number_in_set(SECONTEXT_FULL, secontext_set)) { + char *saveptr = NULL; + char *secontext_copy = xstrdup(*secontext); + const char *token; +@@ -59,6 +62,36 @@ getcontext(int rc, char **secontext, char **result) + freecon(*secontext); + return 0; + } ++ ++static int ++get_expected_filecontext(const char *path, char **result) ++{ ++ static struct selabel_handle *hdl; ++ ++ if (!hdl) { ++ static bool disabled; ++ if (disabled) ++ return -1; ++ ++ hdl = selabel_open(SELABEL_CTX_FILE, NULL, 0); ++ if (!hdl) { ++ perror_msg("could not open SELinux database, disabling " ++ "context mismatch checking"); ++ disabled = true; ++ return -1; ++ } ++ } ++ ++ strace_stat_t stb; ++ if (stat_file(path, &stb) < 0) { ++ return -1; ++ } ++ ++ char *secontext; ++ return getcontext(selabel_lookup(hdl, &secontext, path, stb.st_mode), ++ &secontext, result); ++} ++ + /* + * Retrieves the SELinux context of the given PID (extracted from the tcb). + * Memory must be freed. +@@ -67,7 +100,7 @@ getcontext(int rc, char **secontext, char **result) + int + selinux_getpidcon(struct tcb *tcp, char **result) + { +- if (!selinux_context) ++ if (number_set_array_is_empty(secontext_set, 0)) + return -1; + + int proc_pid = 0; +@@ -87,7 +120,7 @@ selinux_getpidcon(struct tcb *tcp, char **result) + int + selinux_getfdcon(pid_t pid, int fd, char **result) + { +- if (!selinux_context || pid <= 0 || fd < 0) ++ if (number_set_array_is_empty(secontext_set, 0) || pid <= 0 || fd < 0) + return -1; + + int proc_pid = 0; +@@ -99,7 +132,33 @@ selinux_getfdcon(pid_t pid, int fd, char **result) + xsprintf(linkpath, "/proc/%u/fd/%u", proc_pid, fd); + + char *secontext; +- return getcontext(getfilecon(linkpath, &secontext), &secontext, result); ++ int rc = getcontext(getfilecon(linkpath, &secontext), &secontext, result); ++ if (rc < 0 || !is_number_in_set(SECONTEXT_MISMATCH, secontext_set)) ++ return rc; ++ ++ /* ++ * We need to resolve the path, because selabel_lookup() doesn't ++ * resolve anything. Using readlink() is sufficient here. ++ */ ++ ++ char buf[PATH_MAX]; ++ ssize_t n = readlink(linkpath, buf, sizeof(buf)); ++ if ((size_t) n >= sizeof(buf)) ++ return 0; ++ buf[n] = '\0'; ++ ++ char *expected; ++ if (get_expected_filecontext(buf, &expected) < 0) ++ return 0; ++ if (strcmp(expected, *result) == 0) { ++ free(expected); ++ return 0; ++ } ++ char *final_result = xasprintf("%s!!%s", *result, expected); ++ free(expected); ++ free(*result); ++ *result = final_result; ++ return 0; + } + + /* +@@ -110,7 +169,7 @@ selinux_getfdcon(pid_t pid, int fd, char **result) + int + selinux_getfilecon(struct tcb *tcp, const char *path, char **result) + { +- if (!selinux_context) ++ if (number_set_array_is_empty(secontext_set, 0)) + return -1; + + int proc_pid = 0; +@@ -118,22 +177,49 @@ selinux_getfilecon(struct tcb *tcp, const char *path, char **result) + if (!proc_pid) + return -1; + +- int ret = -1; ++ int rc = -1; + char fname[PATH_MAX]; + + if (path[0] == '/') +- ret = snprintf(fname, sizeof(fname), "/proc/%u/root%s", ++ rc = snprintf(fname, sizeof(fname), "/proc/%u/root%s", + proc_pid, path); + else if (tcp->last_dirfd == AT_FDCWD) +- ret = snprintf(fname, sizeof(fname), "/proc/%u/cwd/%s", ++ rc = snprintf(fname, sizeof(fname), "/proc/%u/cwd/%s", + proc_pid, path); + else if (tcp->last_dirfd >= 0 ) +- ret = snprintf(fname, sizeof(fname), "/proc/%u/fd/%u/%s", ++ rc = snprintf(fname, sizeof(fname), "/proc/%u/fd/%u/%s", + proc_pid, tcp->last_dirfd, path); + +- if ((unsigned int) ret >= sizeof(fname)) ++ if ((unsigned int) rc >= sizeof(fname)) + return -1; + + char *secontext; +- return getcontext(getfilecon(fname, &secontext), &secontext, result); ++ rc = getcontext(getfilecon(fname, &secontext), &secontext, result); ++ if (rc < 0 || !is_number_in_set(SECONTEXT_MISMATCH, secontext_set)) ++ return rc; ++ ++ /* ++ * We need to fully resolve the path, because selabel_lookup() doesn't ++ * resolve anything. Using realpath() is the only solution here to make ++ * sure the path is canonicalized. ++ */ ++ ++ char *resolved = realpath(fname, NULL); ++ if (!resolved) ++ return 0; ++ ++ char *expected; ++ rc = get_expected_filecontext(resolved, &expected); ++ free(resolved); ++ if (rc < 0) ++ return 0; ++ if (strcmp(expected, *result) == 0) { ++ free(expected); ++ return 0; ++ } ++ char *final_result = xasprintf("%s!!%s", *result, expected); ++ free(expected); ++ free(*result); ++ *result = final_result; ++ return 0; + } +diff --git a/src/secontext.h b/src/secontext.h +index 1ed88c7..39222d0 100644 +--- a/src/secontext.h ++++ b/src/secontext.h +@@ -11,11 +11,22 @@ + + # include "defs.h" + +-extern bool selinux_context; +-extern bool selinux_context_full; ++void qualify_secontext(const char *const str); ++ ++enum secontext_bits { ++ /* Display full context instead of type only */ ++ SECONTEXT_FULL, ++ /* Check for context mismatch */ ++ SECONTEXT_MISMATCH, ++ ++ NUMBER_OF_SECONTEXT_BITS ++}; ++ ++extern struct number_set *secontext_set; + + int selinux_getfdcon(pid_t pid, int fd, char **context); + int selinux_getfilecon(struct tcb *tcp, const char *path, char **context); + int selinux_getpidcon(struct tcb *tcp, char **context); ++void selinux_set_format(const char *optarg); + + #endif /* !STRACE_SECONTEXT_H */ +diff --git a/src/strace.c b/src/strace.c +index fb42fe9..0a18478 100644 +--- a/src/strace.c ++++ b/src/strace.c +@@ -264,9 +264,11 @@ usage(void) + # define K_OPT "" + #endif + #ifdef ENABLE_SECONTEXT +-# define SECONTEXT_OPT "[--secontext[=full]]\n" ++# define SECONTEXT_OPT " [--secontext[=FORMAT]]\n" ++# define SECONTEXT_E_QUAL ", secontext" + #else + # define SECONTEXT_OPT "" ++# define SECONTEXT_E_QUAL "" + #endif + + printf("\ +@@ -282,7 +284,7 @@ Usage: strace [-ACdffhi" K_OPT "qqrtttTvVwxxyyzZ] [-I N] [-b execve] [-e EXPR].. + General:\n\ + -e EXPR a qualifying expression: OPTION=[!]all or OPTION=[!]VAL1[,VAL2]...\n\ + options: trace, abbrev, verbose, raw, signal, read, write, fault,\n\ +- inject, status, quiet, kvm, decode-fds\n\ ++ inject, status, quiet, kvm, decode-fds" SECONTEXT_E_QUAL "\n\ + \n\ + Startup:\n\ + -E VAR=VAL, --env=VAR=VAL\n\ +@@ -358,6 +360,19 @@ Output format:\n\ + path (file path),\n\ + pidfd (associated PID for pidfds),\n\ + socket (protocol-specific information for socket descriptors)\n\ ++" ++#ifdef ENABLE_SECONTEXT ++"\ ++ -e secontext=FORMAT, --secontext[=FORMAT]\n\ ++ print SELinux contexts in square brackets\n\ ++ formats: comma-separated list of all, full, mismatch, none\n\ ++ all: equivalent to full,mismatch\n\ ++ full: print the full context instead of the type only\n\ ++ mismatch: print expected context when actual is not matching\n\ ++ none: equivalent to not specifying the option at all\n\ ++" ++#endif ++"\ + -i, --instruction-pointer\n\ + print instruction pointer at time of syscall\n\ + " +@@ -1991,6 +2006,9 @@ init(int argc, char *argv[]) + static const char tflag_str[] = "format:time"; + static const char ttflag_str[] = "precision:us,format:time"; + static const char tttflag_str[] = "format:unix,precision:us"; ++#ifdef ENABLE_SECONTEXT ++ static const char secontext_qual[] = "!full,mismatch"; ++#endif + + int c, i; + int optF = 0, zflags = 0; +@@ -2054,6 +2072,9 @@ init(int argc, char *argv[]) + qualify_quiet("none"); + qualify_decode_fd("none"); + qualify_signals("all"); ++#ifdef ENABLE_SECONTEXT ++ qualify_secontext("none"); ++#endif + + static const char optstring[] = + "+a:Ab:cCdDe:E:fFhiI:kno:O:p:P:qrs:S:tTu:U:vVwxX:yzZ"; +@@ -2066,9 +2087,6 @@ init(int argc, char *argv[]) + GETOPT_OUTPUT_SEPARATELY, + GETOPT_TS, + GETOPT_PIDNS_TRANSLATION, +-#ifdef ENABLE_SECONTEXT +- GETOPT_SECONTEXT, +-#endif + + GETOPT_QUAL_TRACE, + GETOPT_QUAL_ABBREV, +@@ -2083,6 +2101,9 @@ init(int argc, char *argv[]) + GETOPT_QUAL_KVM, + GETOPT_QUAL_QUIET, + GETOPT_QUAL_DECODE_FD, ++#ifdef ENABLE_SECONTEXT ++ GETOPT_QUAL_SECONTEXT, ++#endif + }; + static const struct option longopts[] = { + { "columns", required_argument, 0, 'a' }, +@@ -2125,9 +2146,6 @@ init(int argc, char *argv[]) + { "failed-only", no_argument, 0, 'Z' }, + { "failing-only", no_argument, 0, 'Z' }, + { "seccomp-bpf", no_argument, 0, GETOPT_SECCOMP }, +-#ifdef ENABLE_SECONTEXT +- { "secontext", optional_argument, 0, GETOPT_SECONTEXT }, +-#endif + + { "trace", required_argument, 0, GETOPT_QUAL_TRACE }, + { "abbrev", required_argument, 0, GETOPT_QUAL_ABBREV }, +@@ -2144,6 +2162,9 @@ init(int argc, char *argv[]) + { "silent", optional_argument, 0, GETOPT_QUAL_QUIET }, + { "silence", optional_argument, 0, GETOPT_QUAL_QUIET }, + { "decode-fds", optional_argument, 0, GETOPT_QUAL_DECODE_FD }, ++#ifdef ENABLE_SECONTEXT ++ { "secontext", optional_argument, 0, GETOPT_QUAL_SECONTEXT }, ++#endif + + { 0, 0, 0, 0 } + }; +@@ -2357,14 +2378,8 @@ init(int argc, char *argv[]) + seccomp_filtering = true; + break; + #ifdef ENABLE_SECONTEXT +- case GETOPT_SECONTEXT: +- selinux_context = true; +- if (optarg) { +- if (!strcmp(optarg, "full")) +- selinux_context_full = true; +- else +- error_opt_arg(c, lopt, optarg); +- } ++ case GETOPT_QUAL_SECONTEXT: ++ qualify_secontext(optarg ? optarg : secontext_qual); + break; + #endif + case GETOPT_QUAL_TRACE: +@@ -2550,7 +2565,7 @@ init(int argc, char *argv[]) + error_msg("-y/--decode-fds has no effect " + "with -c/--summary-only"); + #ifdef ENABLE_SECONTEXT +- if (selinux_context) ++ if (!number_set_array_is_empty(secontext_set, 0)) + error_msg("--secontext has no effect with " + "-c/--summary-only"); + #endif +diff --git a/tests/gen_tests.in b/tests/gen_tests.in +index 8b4e2e9..71e2f17 100644 +--- a/tests/gen_tests.in ++++ b/tests/gen_tests.in +@@ -12,6 +12,8 @@ accept4 -a37 + access -a30 --trace-path=access_sample + access--secontext -a30 --secontext --trace-path=access_sample -e trace=access + access--secontext_full -a30 --secontext=full --trace-path=access_sample -e trace=access ++access--secontext_full_mismatch -a30 --secontext=full,mismatch --trace-path=access_sample -e trace=access ++access--secontext_mismatch -a30 --secontext=mismatch --trace-path=access_sample -e trace=access + acct -a20 + add_key -a30 -s12 + adjtimex -a15 +@@ -27,8 +29,10 @@ bpf-v -a20 -v -e trace=bpf + btrfs +ioctl.test + chdir -a10 + chmod -a28 +-chmod--secontext -a28 --secontext -e trace=chmod +-chmod--secontext_full -a28 --secontext=full -e trace=chmod ++chmod--secontext -a28 -e secontext=!full,mismatch -e trace=chmod ++chmod--secontext_full -a28 -e secontext=full -e trace=chmod ++chmod--secontext_full_mismatch -a28 --secontext=mismatch,full -e trace=chmod ++chmod--secontext_mismatch -a28 --secontext=mismatch -e trace=chmod + chown -a28 + chown32 -a31 + chroot -a13 +@@ -84,16 +88,24 @@ epoll_wait -a26 + erestartsys -a34 -e signal=none -e trace=recvfrom + execve--secontext +execve.test --secontext + execve--secontext_full +execve.test --secontext=full ++execve--secontext_full_mismatch +execve.test --secontext=full,mismatch ++execve--secontext_mismatch +execve.test --secontext=mismatch + execveat + execveat--secontext --secontext --trace=execveat + execveat--secontext_full --secontext=full --trace=execveat ++execveat--secontext_full_mismatch --secontext=full,mismatch --trace=execveat ++execveat--secontext_mismatch --secontext=mismatch --trace=execveat + execveat-v -v -e trace=execveat + faccessat--secontext +faccessat.test -a24 --secontext + faccessat--secontext_full +faccessat.test -a24 --secontext=full ++faccessat--secontext_full_mismatch +faccessat.test -a24 --secontext=full,mismatch ++faccessat--secontext_mismatch +faccessat.test -a24 --secontext=mismatch + faccessat-P -a23 --trace=faccessat -P /dev/full + faccessat-y +faccessat.test -a24 -y + faccessat-y--secontext +faccessat.test -a24 -y --secontext + faccessat-y--secontext_full +faccessat.test -a24 -y --secontext=full ++faccessat-y--secontext_full_mismatch +faccessat.test -a24 -y --secontext=full,mismatch ++faccessat-y--secontext_mismatch +faccessat.test -a24 -y --secontext=mismatch + faccessat-yy +faccessat.test -a24 -yy + faccessat2-P -a27 --trace=faccessat2 -P /dev/full + faccessat2-y +faccessat2.test -a28 -y +@@ -104,6 +116,8 @@ fanotify_init + fanotify_mark -a32 + fanotify_mark--secontext -a32 --secontext -e trace=fanotify_mark + fanotify_mark--secontext_full -a32 --secontext=full -e trace=fanotify_mark ++fanotify_mark--secontext_full_mismatch -a32 --secontext=full,mismatch -e trace=fanotify_mark ++fanotify_mark--secontext_mismatch -a32 --secontext=mismatch -e trace=fanotify_mark + fanotify_mark-Xabbrev -a32 -Xabbrev -e trace=fanotify_mark + fanotify_mark-Xraw -a32 -Xraw -e trace=fanotify_mark + fanotify_mark-Xverbose -a32 -Xverbose -e trace=fanotify_mark +@@ -111,17 +125,25 @@ fchdir -a11 + fchmod -a15 + fchmod--secontext -a15 --secontext -e trace=fchmod + fchmod--secontext_full -a15 --secontext=full -e trace=fchmod ++fchmod--secontext_full_mismatch -a15 --secontext=full,mismatch -e trace=fchmod ++fchmod--secontext_mismatch -a15 --secontext=mismatch -e trace=fchmod + fchmod-y -y -e trace=fchmod + fchmod-y--secontext -a15 -y --secontext -e trace=fchmod + fchmod-y--secontext_full -a15 -y --secontext=full -e trace=fchmod ++fchmod-y--secontext_full_mismatch -a15 -y --secontext=full,mismatch -e trace=fchmod ++fchmod-y--secontext_mismatch -a15 -y --secontext=mismatch -e trace=fchmod + fchmodat + fchmodat--secontext --secontext -e trace=fchmodat + fchmodat--secontext_full --secontext=full -e trace=fchmodat ++fchmodat--secontext_full_mismatch --secontext=full,mismatch -e trace=fchmodat ++fchmodat--secontext_mismatch --secontext=mismatch -e trace=fchmodat + fchown -a16 + fchown32 -a18 + fchownat + fchownat--secontext --secontext -e trace=fchownat + fchownat--secontext_full --secontext=full -e trace=fchownat ++fchownat--secontext_full_mismatch -e secontext=full,mismatch -e trace=fchownat ++fchownat--secontext_mismatch -e secontext=mismatch -e trace=fchownat + fcntl -a8 + fcntl--pidns-translation test_pidns -a8 -e trace=fcntl + fcntl64 -a8 +@@ -130,6 +152,8 @@ fdatasync -a14 + file_handle -e trace=name_to_handle_at,open_by_handle_at + file_handle--secontext --secontext -e trace=name_to_handle_at,open_by_handle_at + file_handle--secontext_full --secontext=full -e trace=name_to_handle_at,open_by_handle_at ++file_handle--secontext_full_mismatch --secontext=full,mismatch -e trace=name_to_handle_at,open_by_handle_at ++file_handle--secontext_mismatch --secontext=mismatch -e trace=name_to_handle_at,open_by_handle_at + filter_seccomp . "${srcdir=.}/filter_seccomp.sh"; test_prog_set --seccomp-bpf -f + filter_seccomp-flag ../$NAME + finit_module -a25 +@@ -383,6 +407,8 @@ link + linkat + linkat--secontext --secontext -e trace=linkat + linkat--secontext_full --secontext=full -e trace=linkat ++linkat--secontext_full_mismatch --secontext=full,mismatch -e trace=linkat ++linkat--secontext_mismatch --secontext=mismatch -e trace=linkat + lookup_dcookie -a27 + lstat -a31 --no-abbrev --trace-path=stat.sample --trace-path=/dev/full + lstat64 -a32 --no-abbrev --trace-path=stat.sample --trace-path=/dev/full +@@ -526,11 +552,15 @@ oldstat -a32 -v -P stat.sample -P /dev/full + open -a30 -P $NAME.sample + open--secontext -a30 -P open.sample --secontext --trace=open + open--secontext_full -a30 -P open.sample --secontext=full --trace=open ++open--secontext_full_mismatch -a30 -P open.sample --secontext=full,mismatch --trace=open ++open--secontext_mismatch -a30 -P open.sample --secontext=mismatch --trace=open + open_tree -a30 -y + open_tree-P -a30 --decode-fds -P /dev/full -e trace=open_tree + openat -a36 -P $NAME.sample + openat--secontext -a36 -P openat.sample -P $PWD/openat.sample --secontext -e trace=openat + openat--secontext_full -a36 -P openat.sample -P $PWD/openat.sample --secontext=full -e trace=openat ++openat--secontext_full_mismatch -a36 -P openat.sample -P $PWD/openat.sample --secontext=full,mismatch -e trace=openat ++openat--secontext_mismatch -a36 -P openat.sample -P $PWD/openat.sample --secontext=mismatch -e trace=openat + openat2 -a35 + openat2-Xabbrev --trace=openat2 -a35 -Xabbrev + openat2-Xraw --trace=openat2 -a32 -Xraw +diff --git a/tests/linkat.c b/tests/linkat.c +index 1d41d3d..1a869e3 100644 +--- a/tests/linkat.c ++++ b/tests/linkat.c +@@ -15,6 +15,7 @@ + #include + #include + #include ++#include + + #include "secontext.h" + #include "xmalloc.h" +@@ -88,10 +89,42 @@ main(void) + perror_msg_and_fail("close"); + + free(sample_1_secontext); +- update_secontext_type(sample_1, "default_t"); ++ ++#ifdef PRINT_SECONTEXT_MISMATCH ++ update_secontext_field(sample_1, SECONTEXT_USER, "system_u"); ++ sample_1_secontext = SECONTEXT_FILE(sample_1); ++ ++# ifdef PRINT_SECONTEXT_FULL ++ /* The mismatch should be detected */ ++ if (*sample_1_secontext && strstr(sample_1_secontext, "!!") == NULL) ++ perror_msg_and_fail("Context mismatch not detected: %s", ++ sample_1_secontext); ++ if (*sample_1_secontext && strstr(sample_1_secontext, "system_u") == NULL) ++ perror_msg_and_fail("Context mismatch not detected: %s", ++ sample_1_secontext); ++# else ++ /* The mismatch cannot be detected since it's on user part */ ++ if (*sample_1_secontext && strstr(sample_1_secontext, "!!") != NULL) ++ perror_msg_and_fail("Context mismatch detected: %s", ++ sample_1_secontext); ++# endif ++ ++ free(sample_1_secontext); ++#endif ++ ++ update_secontext_field(sample_1, SECONTEXT_TYPE, "default_t"); + sample_1_secontext = SECONTEXT_FILE(sample_1); + sample_2_secontext = sample_1_secontext; + ++#ifdef PRINT_SECONTEXT_MISMATCH ++ if (*sample_1_secontext && strstr(sample_1_secontext, "!!") == NULL) ++ perror_msg_and_fail("Context mismatch not detected: %s", ++ sample_1_secontext); ++ if (*sample_1_secontext && strstr(sample_1_secontext, "default_t") == NULL) ++ perror_msg_and_fail("Context mismatch not detected: %s", ++ sample_1_secontext); ++#endif ++ + rc = syscall(__NR_linkat, -100, sample_1, -100, sample_2, 0); + printf("%s%s(AT_FDCWD, \"%s\"%s, AT_FDCWD, \"%s\"%s, 0) = %s\n", + my_secontext, "linkat", +@@ -108,8 +141,19 @@ main(void) + + int dfd_old = get_dir_fd("."); + char *cwd = get_fd_path(dfd_old); ++ ++ update_secontext_field(".", SECONTEXT_TYPE, "default_t"); + char *dfd_old_secontext = SECONTEXT_FILE("."); + ++#ifdef PRINT_SECONTEXT_MISMATCH ++ if (*dfd_old_secontext && strstr(dfd_old_secontext, "!!") == NULL) ++ perror_msg_and_fail("Context mismatch not detected: %s", ++ dfd_old_secontext); ++ if (*dfd_old_secontext && strstr(dfd_old_secontext, "default_t") == NULL) ++ perror_msg_and_fail("Context mismatch not detected: %s", ++ dfd_old_secontext); ++#endif ++ + rc = syscall(__NR_linkat, dfd_old, sample_1, -100, sample_2, 0); + /* no context printed for sample_2 since file doesn't exist yet */ + printf("%s%s(%d%s, \"%s\"%s, AT_FDCWD, \"%s\", 0) = %s\n", +diff --git a/tests/options-syntax.test b/tests/options-syntax.test +index 765b2f8..848d297 100755 +--- a/tests/options-syntax.test ++++ b/tests/options-syntax.test +@@ -48,8 +48,18 @@ check_e '-t and --absolute-timestamps cannot be provided simultaneously' -t --ti + check_e '-t and --absolute-timestamps cannot be provided simultaneously' --absolute-timestamps -ttt -p $$ + check_e '-t and --absolute-timestamps cannot be provided simultaneously' -t --timestamps=ns -t -p $$ + check_e '-t and --absolute-timestamps cannot be provided simultaneously' --timestamps=ns -t --absolute-timestamps=unix -p $$ +-[ -z "$compiled_with_secontext" ] || +- check_h "invalid --secontext argument: 'ss'" --secontext=ss ++if [ -n "$compiled_with_secontext" ]; then ++ for opt in '--secontext' '-e secontext'; do ++ check_e "invalid secontext ''" $opt= ++ check_e "invalid secontext 'ss'" $opt=ss ++ check_e "invalid secontext 'ss'" $opt=ss,full,mismatch ++ check_e "invalid secontext 'ss'" $opt=full,ss,mismatch ++ check_e "invalid secontext 'ss'" $opt=full,ss ++ check_e "invalid secontext 'ss'" $opt=full,mismatch,ss ++ check_e "invalid secontext 'ss'" $opt=!full,ss ++ check_e "invalid secontext 'ss'" $opt=!full,mismatch,ss ++ done ++fi + check_h 'PROG [ARGS] must be specified with -D/--daemonize' -D -p $$ + check_h 'PROG [ARGS] must be specified with -D/--daemonize' -DD -p $$ + check_h 'PROG [ARGS] must be specified with -D/--daemonize' -DDD -p $$ +diff --git a/tests/secontext.c b/tests/secontext.c +index 21c6370..848eea9 100644 +--- a/tests/secontext.c ++++ b/tests/secontext.c +@@ -13,8 +13,10 @@ + # include + # include + # include ++# include + # include + # include ++# include + + # include "xmalloc.h" + +@@ -55,6 +57,79 @@ strip_trailing_newlines(char *context) + } + + static char * ++get_type_from_context(const char *full_context) ++{ ++ int saved_errno = errno; ++ ++ if (!full_context) ++ return NULL; ++ ++ char *saveptr = NULL; ++ const char *token; ++ unsigned int i; ++ ++ char *ctx_copy = xstrdup(full_context); ++ char *context = NULL; ++ for (token = strtok_r(ctx_copy, ":", &saveptr), i = 0; ++ token; token = strtok_r(NULL, ":", &saveptr), i++) { ++ if (i == 2) { ++ context = xstrdup(token); ++ break; ++ } ++ } ++ if (!context) ++ context = xstrdup(full_context); ++ free(ctx_copy); ++ ++ errno = saved_errno; ++ return context; ++} ++ ++static char * ++raw_expected_secontext_full_file(const char *filename) ++{ ++ int saved_errno = errno; ++ char *secontext; ++ ++ static struct selabel_handle *hdl; ++ if (!hdl) { ++ hdl = selabel_open(SELABEL_CTX_FILE, NULL, 0); ++ if (!hdl) ++ perror_msg_and_skip("selabel_open"); ++ } ++ ++ char *resolved = realpath(filename, NULL); ++ if (!resolved) ++ perror_msg_and_fail("realpath: %s", filename); ++ ++ struct stat statbuf; ++ if (stat(resolved, &statbuf) < 0) ++ perror_msg_and_fail("stat: %s", resolved); ++ ++ if (selabel_lookup(hdl, &secontext, resolved, statbuf.st_mode) < 0) ++ perror_msg_and_skip("selabel_lookup: %s", resolved); ++ free(resolved); ++ ++ char *full_secontext = xstrdup(secontext); ++ freecon(secontext); ++ errno = saved_errno; ++ return full_secontext; ++} ++ ++static char * ++raw_expected_secontext_short_file(const char *filename) ++{ ++ int saved_errno = errno; ++ ++ char *ctx = raw_expected_secontext_full_file(filename); ++ char *type = get_type_from_context(ctx); ++ free(ctx); ++ ++ errno = saved_errno; ++ return type; ++} ++ ++static char * + raw_secontext_full_file(const char *filename) + { + int saved_errno = errno; +@@ -75,29 +150,11 @@ raw_secontext_short_file(const char *filename) + int saved_errno = errno; + + char *ctx = raw_secontext_full_file(filename); +- if (ctx == NULL) +- return ctx; +- +- char *saveptr = NULL; +- const char *token; +- unsigned int i; +- +- char *ctx_copy = xstrdup(ctx); +- char *context = NULL; +- for (token = strtok_r(ctx_copy, ":", &saveptr), i = 0; +- token; token = strtok_r(NULL, ":", &saveptr), i++) { +- if (i == 2) { +- context = xstrdup(token); +- break; +- } +- } +- if (context == NULL) +- context = xstrdup(ctx); +- free(ctx_copy); ++ char *type = get_type_from_context(ctx); + free(ctx); + + errno = saved_errno; +- return context; ++ return type; + } + + static char * +@@ -121,35 +178,30 @@ raw_secontext_short_pid(pid_t pid) + int saved_errno = errno; + + char *ctx = raw_secontext_full_pid(pid); +- if (ctx == NULL) +- return ctx; +- +- char *saveptr = NULL; +- const char *token; +- int i; +- +- char *ctx_copy = xstrdup(ctx); +- char *context = NULL; +- for (token = strtok_r(ctx_copy, ":", &saveptr), i = 0; +- token; token = strtok_r(NULL, ":", &saveptr), i++) { +- if (i == 2) { +- context = xstrdup(token); +- break; +- } +- } +- if (context == NULL) +- context = xstrdup(ctx); +- free(ctx_copy); ++ char *type = get_type_from_context(ctx); + free(ctx); + + errno = saved_errno; +- return context; ++ return type; + } + + char * +-secontext_full_file(const char *filename) ++secontext_full_file(const char *filename, bool mismatch) + { +- return FORMAT_SPACE_BEFORE(raw_secontext_full_file(filename)); ++ int saved_errno = errno; ++ char *context = raw_secontext_full_file(filename); ++ if (context && mismatch) { ++ char *expected = raw_expected_secontext_full_file(filename); ++ if (expected && strcmp(context, expected)) { ++ char *context_mismatch = ++ xasprintf("%s!!%s", context, expected); ++ free(context); ++ context = context_mismatch; ++ } ++ free(expected); ++ } ++ errno = saved_errno; ++ return FORMAT_SPACE_BEFORE(context); + } + + char * +@@ -159,9 +211,22 @@ secontext_full_pid(pid_t pid) + } + + char * +-secontext_short_file(const char *filename) ++secontext_short_file(const char *filename, bool mismatch) + { +- return FORMAT_SPACE_BEFORE(raw_secontext_short_file(filename)); ++ int saved_errno = errno; ++ char *context = raw_secontext_short_file(filename); ++ if (context && mismatch) { ++ char *expected = raw_expected_secontext_short_file(filename); ++ if (expected && strcmp(context, expected)) { ++ char *context_mismatch = ++ xasprintf("%s!!%s", context, expected); ++ free(context); ++ context = context_mismatch; ++ } ++ free(expected); ++ } ++ errno = saved_errno; ++ return FORMAT_SPACE_BEFORE(context); + } + + char * +@@ -171,31 +236,38 @@ secontext_short_pid(pid_t pid) + } + + void +-update_secontext_type(const char *file, const char *newtype) ++update_secontext_field(const char *file, enum secontext_field field, ++ const char *newvalue) + { ++ int saved_errno = errno; ++ assert(field >= SECONTEXT_USER && field <= SECONTEXT_TYPE); ++ + char *ctx = raw_secontext_full_file(file); + if (ctx == NULL) + return; + + char *saveptr = NULL; + char *token; +- int field; ++ int nfields; + char *split[4]; + +- for (token = strtok_r(ctx, ":", &saveptr), field = 0; +- token; token = strtok_r(NULL, ":", &saveptr), field++) { +- assert(field < 4); +- split[field] = token; ++ for (token = strtok_r(ctx, ":", &saveptr), nfields = 0; ++ token; token = strtok_r(NULL, ":", &saveptr), nfields++) { ++ assert(nfields < 4); ++ split[nfields] = token; + } +- assert(field == 4); ++ assert(nfields == 4); ++ ++ split[field] = (char *)newvalue; + + char *newcontext = xasprintf("%s:%s:%s:%s", split[0], split[1], +- newtype, split[3]); ++ split[2], split[3]); + + (void) setfilecon(file, newcontext); + + free(newcontext); + free(ctx); ++ errno = saved_errno; + } + + #endif /* HAVE_SELINUX_RUNTIME */ +diff --git a/tests/secontext.h b/tests/secontext.h +index c65f53a..1d0251a 100644 +--- a/tests/secontext.h ++++ b/tests/secontext.h +@@ -9,24 +9,39 @@ + #include "xmalloc.h" + #include + +-char *secontext_full_file(const char *) ATTRIBUTE_MALLOC; ++char *secontext_full_file(const char *, bool) ATTRIBUTE_MALLOC; + char *secontext_full_pid(pid_t) ATTRIBUTE_MALLOC; + +-char *secontext_short_file(const char *) ATTRIBUTE_MALLOC; ++char *secontext_short_file(const char *, bool) ATTRIBUTE_MALLOC; + char *secontext_short_pid(pid_t) ATTRIBUTE_MALLOC; + ++enum secontext_field { ++ SECONTEXT_USER, ++ SECONTEXT_ROLE, ++ SECONTEXT_TYPE ++}; ++ + #if defined TEST_SECONTEXT && defined HAVE_SELINUX_RUNTIME + +-void update_secontext_type(const char *file, const char *newtype); ++void update_secontext_field(const char *file, enum secontext_field field, ++ const char *newvalue); + + # ifdef PRINT_SECONTEXT_FULL + +-# define SECONTEXT_FILE(filename) secontext_full_file(filename) ++# ifdef PRINT_SECONTEXT_MISMATCH ++# define SECONTEXT_FILE(filename) secontext_full_file(filename, true) ++# else ++# define SECONTEXT_FILE(filename) secontext_full_file(filename, false) ++# endif + # define SECONTEXT_PID(pid) secontext_full_pid(pid) + + # else + +-# define SECONTEXT_FILE(filename) secontext_short_file(filename) ++# ifdef PRINT_SECONTEXT_MISMATCH ++# define SECONTEXT_FILE(filename) secontext_short_file(filename, true) ++# else ++# define SECONTEXT_FILE(filename) secontext_short_file(filename, false) ++# endif + # define SECONTEXT_PID(pid) secontext_short_pid(pid) + + # endif +@@ -34,7 +49,8 @@ void update_secontext_type(const char *file, const char *newtype); + #else + + static inline void +-update_secontext_type(const char *file, const char *newtype) ++update_secontext_field(const char *file, enum secontext_field field, ++ const char *newvalue) + { + } + +diff --git a/tests-m32/gen_tests.in b/tests-m32/gen_tests.in +index 8b4e2e9..71e2f17 100644 +--- a/tests-m32/gen_tests.in ++++ b/tests-m32/gen_tests.in +@@ -12,6 +12,8 @@ accept4 -a37 + access -a30 --trace-path=access_sample + access--secontext -a30 --secontext --trace-path=access_sample -e trace=access + access--secontext_full -a30 --secontext=full --trace-path=access_sample -e trace=access ++access--secontext_full_mismatch -a30 --secontext=full,mismatch --trace-path=access_sample -e trace=access ++access--secontext_mismatch -a30 --secontext=mismatch --trace-path=access_sample -e trace=access + acct -a20 + add_key -a30 -s12 + adjtimex -a15 +@@ -27,8 +29,10 @@ bpf-v -a20 -v -e trace=bpf + btrfs +ioctl.test + chdir -a10 + chmod -a28 +-chmod--secontext -a28 --secontext -e trace=chmod +-chmod--secontext_full -a28 --secontext=full -e trace=chmod ++chmod--secontext -a28 -e secontext=!full,mismatch -e trace=chmod ++chmod--secontext_full -a28 -e secontext=full -e trace=chmod ++chmod--secontext_full_mismatch -a28 --secontext=mismatch,full -e trace=chmod ++chmod--secontext_mismatch -a28 --secontext=mismatch -e trace=chmod + chown -a28 + chown32 -a31 + chroot -a13 +@@ -84,16 +88,24 @@ epoll_wait -a26 + erestartsys -a34 -e signal=none -e trace=recvfrom + execve--secontext +execve.test --secontext + execve--secontext_full +execve.test --secontext=full ++execve--secontext_full_mismatch +execve.test --secontext=full,mismatch ++execve--secontext_mismatch +execve.test --secontext=mismatch + execveat + execveat--secontext --secontext --trace=execveat + execveat--secontext_full --secontext=full --trace=execveat ++execveat--secontext_full_mismatch --secontext=full,mismatch --trace=execveat ++execveat--secontext_mismatch --secontext=mismatch --trace=execveat + execveat-v -v -e trace=execveat + faccessat--secontext +faccessat.test -a24 --secontext + faccessat--secontext_full +faccessat.test -a24 --secontext=full ++faccessat--secontext_full_mismatch +faccessat.test -a24 --secontext=full,mismatch ++faccessat--secontext_mismatch +faccessat.test -a24 --secontext=mismatch + faccessat-P -a23 --trace=faccessat -P /dev/full + faccessat-y +faccessat.test -a24 -y + faccessat-y--secontext +faccessat.test -a24 -y --secontext + faccessat-y--secontext_full +faccessat.test -a24 -y --secontext=full ++faccessat-y--secontext_full_mismatch +faccessat.test -a24 -y --secontext=full,mismatch ++faccessat-y--secontext_mismatch +faccessat.test -a24 -y --secontext=mismatch + faccessat-yy +faccessat.test -a24 -yy + faccessat2-P -a27 --trace=faccessat2 -P /dev/full + faccessat2-y +faccessat2.test -a28 -y +@@ -104,6 +116,8 @@ fanotify_init + fanotify_mark -a32 + fanotify_mark--secontext -a32 --secontext -e trace=fanotify_mark + fanotify_mark--secontext_full -a32 --secontext=full -e trace=fanotify_mark ++fanotify_mark--secontext_full_mismatch -a32 --secontext=full,mismatch -e trace=fanotify_mark ++fanotify_mark--secontext_mismatch -a32 --secontext=mismatch -e trace=fanotify_mark + fanotify_mark-Xabbrev -a32 -Xabbrev -e trace=fanotify_mark + fanotify_mark-Xraw -a32 -Xraw -e trace=fanotify_mark + fanotify_mark-Xverbose -a32 -Xverbose -e trace=fanotify_mark +@@ -111,17 +125,25 @@ fchdir -a11 + fchmod -a15 + fchmod--secontext -a15 --secontext -e trace=fchmod + fchmod--secontext_full -a15 --secontext=full -e trace=fchmod ++fchmod--secontext_full_mismatch -a15 --secontext=full,mismatch -e trace=fchmod ++fchmod--secontext_mismatch -a15 --secontext=mismatch -e trace=fchmod + fchmod-y -y -e trace=fchmod + fchmod-y--secontext -a15 -y --secontext -e trace=fchmod + fchmod-y--secontext_full -a15 -y --secontext=full -e trace=fchmod ++fchmod-y--secontext_full_mismatch -a15 -y --secontext=full,mismatch -e trace=fchmod ++fchmod-y--secontext_mismatch -a15 -y --secontext=mismatch -e trace=fchmod + fchmodat + fchmodat--secontext --secontext -e trace=fchmodat + fchmodat--secontext_full --secontext=full -e trace=fchmodat ++fchmodat--secontext_full_mismatch --secontext=full,mismatch -e trace=fchmodat ++fchmodat--secontext_mismatch --secontext=mismatch -e trace=fchmodat + fchown -a16 + fchown32 -a18 + fchownat + fchownat--secontext --secontext -e trace=fchownat + fchownat--secontext_full --secontext=full -e trace=fchownat ++fchownat--secontext_full_mismatch -e secontext=full,mismatch -e trace=fchownat ++fchownat--secontext_mismatch -e secontext=mismatch -e trace=fchownat + fcntl -a8 + fcntl--pidns-translation test_pidns -a8 -e trace=fcntl + fcntl64 -a8 +@@ -130,6 +152,8 @@ fdatasync -a14 + file_handle -e trace=name_to_handle_at,open_by_handle_at + file_handle--secontext --secontext -e trace=name_to_handle_at,open_by_handle_at + file_handle--secontext_full --secontext=full -e trace=name_to_handle_at,open_by_handle_at ++file_handle--secontext_full_mismatch --secontext=full,mismatch -e trace=name_to_handle_at,open_by_handle_at ++file_handle--secontext_mismatch --secontext=mismatch -e trace=name_to_handle_at,open_by_handle_at + filter_seccomp . "${srcdir=.}/filter_seccomp.sh"; test_prog_set --seccomp-bpf -f + filter_seccomp-flag ../$NAME + finit_module -a25 +@@ -383,6 +407,8 @@ link + linkat + linkat--secontext --secontext -e trace=linkat + linkat--secontext_full --secontext=full -e trace=linkat ++linkat--secontext_full_mismatch --secontext=full,mismatch -e trace=linkat ++linkat--secontext_mismatch --secontext=mismatch -e trace=linkat + lookup_dcookie -a27 + lstat -a31 --no-abbrev --trace-path=stat.sample --trace-path=/dev/full + lstat64 -a32 --no-abbrev --trace-path=stat.sample --trace-path=/dev/full +@@ -526,11 +552,15 @@ oldstat -a32 -v -P stat.sample -P /dev/full + open -a30 -P $NAME.sample + open--secontext -a30 -P open.sample --secontext --trace=open + open--secontext_full -a30 -P open.sample --secontext=full --trace=open ++open--secontext_full_mismatch -a30 -P open.sample --secontext=full,mismatch --trace=open ++open--secontext_mismatch -a30 -P open.sample --secontext=mismatch --trace=open + open_tree -a30 -y + open_tree-P -a30 --decode-fds -P /dev/full -e trace=open_tree + openat -a36 -P $NAME.sample + openat--secontext -a36 -P openat.sample -P $PWD/openat.sample --secontext -e trace=openat + openat--secontext_full -a36 -P openat.sample -P $PWD/openat.sample --secontext=full -e trace=openat ++openat--secontext_full_mismatch -a36 -P openat.sample -P $PWD/openat.sample --secontext=full,mismatch -e trace=openat ++openat--secontext_mismatch -a36 -P openat.sample -P $PWD/openat.sample --secontext=mismatch -e trace=openat + openat2 -a35 + openat2-Xabbrev --trace=openat2 -a35 -Xabbrev + openat2-Xraw --trace=openat2 -a32 -Xraw +diff --git a/tests-m32/linkat.c b/tests-m32/linkat.c +index 1d41d3d..1a869e3 100644 +--- a/tests-m32/linkat.c ++++ b/tests-m32/linkat.c +@@ -15,6 +15,7 @@ + #include + #include + #include ++#include + + #include "secontext.h" + #include "xmalloc.h" +@@ -88,10 +89,42 @@ main(void) + perror_msg_and_fail("close"); + + free(sample_1_secontext); +- update_secontext_type(sample_1, "default_t"); ++ ++#ifdef PRINT_SECONTEXT_MISMATCH ++ update_secontext_field(sample_1, SECONTEXT_USER, "system_u"); ++ sample_1_secontext = SECONTEXT_FILE(sample_1); ++ ++# ifdef PRINT_SECONTEXT_FULL ++ /* The mismatch should be detected */ ++ if (*sample_1_secontext && strstr(sample_1_secontext, "!!") == NULL) ++ perror_msg_and_fail("Context mismatch not detected: %s", ++ sample_1_secontext); ++ if (*sample_1_secontext && strstr(sample_1_secontext, "system_u") == NULL) ++ perror_msg_and_fail("Context mismatch not detected: %s", ++ sample_1_secontext); ++# else ++ /* The mismatch cannot be detected since it's on user part */ ++ if (*sample_1_secontext && strstr(sample_1_secontext, "!!") != NULL) ++ perror_msg_and_fail("Context mismatch detected: %s", ++ sample_1_secontext); ++# endif ++ ++ free(sample_1_secontext); ++#endif ++ ++ update_secontext_field(sample_1, SECONTEXT_TYPE, "default_t"); + sample_1_secontext = SECONTEXT_FILE(sample_1); + sample_2_secontext = sample_1_secontext; + ++#ifdef PRINT_SECONTEXT_MISMATCH ++ if (*sample_1_secontext && strstr(sample_1_secontext, "!!") == NULL) ++ perror_msg_and_fail("Context mismatch not detected: %s", ++ sample_1_secontext); ++ if (*sample_1_secontext && strstr(sample_1_secontext, "default_t") == NULL) ++ perror_msg_and_fail("Context mismatch not detected: %s", ++ sample_1_secontext); ++#endif ++ + rc = syscall(__NR_linkat, -100, sample_1, -100, sample_2, 0); + printf("%s%s(AT_FDCWD, \"%s\"%s, AT_FDCWD, \"%s\"%s, 0) = %s\n", + my_secontext, "linkat", +@@ -108,8 +141,19 @@ main(void) + + int dfd_old = get_dir_fd("."); + char *cwd = get_fd_path(dfd_old); ++ ++ update_secontext_field(".", SECONTEXT_TYPE, "default_t"); + char *dfd_old_secontext = SECONTEXT_FILE("."); + ++#ifdef PRINT_SECONTEXT_MISMATCH ++ if (*dfd_old_secontext && strstr(dfd_old_secontext, "!!") == NULL) ++ perror_msg_and_fail("Context mismatch not detected: %s", ++ dfd_old_secontext); ++ if (*dfd_old_secontext && strstr(dfd_old_secontext, "default_t") == NULL) ++ perror_msg_and_fail("Context mismatch not detected: %s", ++ dfd_old_secontext); ++#endif ++ + rc = syscall(__NR_linkat, dfd_old, sample_1, -100, sample_2, 0); + /* no context printed for sample_2 since file doesn't exist yet */ + printf("%s%s(%d%s, \"%s\"%s, AT_FDCWD, \"%s\", 0) = %s\n", +diff --git a/tests-m32/options-syntax.test b/tests-m32/options-syntax.test +index 765b2f8..848d297 100755 +--- a/tests-m32/options-syntax.test ++++ b/tests-m32/options-syntax.test +@@ -48,8 +48,18 @@ check_e '-t and --absolute-timestamps cannot be provided simultaneously' -t --ti + check_e '-t and --absolute-timestamps cannot be provided simultaneously' --absolute-timestamps -ttt -p $$ + check_e '-t and --absolute-timestamps cannot be provided simultaneously' -t --timestamps=ns -t -p $$ + check_e '-t and --absolute-timestamps cannot be provided simultaneously' --timestamps=ns -t --absolute-timestamps=unix -p $$ +-[ -z "$compiled_with_secontext" ] || +- check_h "invalid --secontext argument: 'ss'" --secontext=ss ++if [ -n "$compiled_with_secontext" ]; then ++ for opt in '--secontext' '-e secontext'; do ++ check_e "invalid secontext ''" $opt= ++ check_e "invalid secontext 'ss'" $opt=ss ++ check_e "invalid secontext 'ss'" $opt=ss,full,mismatch ++ check_e "invalid secontext 'ss'" $opt=full,ss,mismatch ++ check_e "invalid secontext 'ss'" $opt=full,ss ++ check_e "invalid secontext 'ss'" $opt=full,mismatch,ss ++ check_e "invalid secontext 'ss'" $opt=!full,ss ++ check_e "invalid secontext 'ss'" $opt=!full,mismatch,ss ++ done ++fi + check_h 'PROG [ARGS] must be specified with -D/--daemonize' -D -p $$ + check_h 'PROG [ARGS] must be specified with -D/--daemonize' -DD -p $$ + check_h 'PROG [ARGS] must be specified with -D/--daemonize' -DDD -p $$ +diff --git a/tests-m32/secontext.c b/tests-m32/secontext.c +index 21c6370..848eea9 100644 +--- a/tests-m32/secontext.c ++++ b/tests-m32/secontext.c +@@ -13,8 +13,10 @@ + # include + # include + # include ++# include + # include + # include ++# include + + # include "xmalloc.h" + +@@ -55,6 +57,79 @@ strip_trailing_newlines(char *context) + } + + static char * ++get_type_from_context(const char *full_context) ++{ ++ int saved_errno = errno; ++ ++ if (!full_context) ++ return NULL; ++ ++ char *saveptr = NULL; ++ const char *token; ++ unsigned int i; ++ ++ char *ctx_copy = xstrdup(full_context); ++ char *context = NULL; ++ for (token = strtok_r(ctx_copy, ":", &saveptr), i = 0; ++ token; token = strtok_r(NULL, ":", &saveptr), i++) { ++ if (i == 2) { ++ context = xstrdup(token); ++ break; ++ } ++ } ++ if (!context) ++ context = xstrdup(full_context); ++ free(ctx_copy); ++ ++ errno = saved_errno; ++ return context; ++} ++ ++static char * ++raw_expected_secontext_full_file(const char *filename) ++{ ++ int saved_errno = errno; ++ char *secontext; ++ ++ static struct selabel_handle *hdl; ++ if (!hdl) { ++ hdl = selabel_open(SELABEL_CTX_FILE, NULL, 0); ++ if (!hdl) ++ perror_msg_and_skip("selabel_open"); ++ } ++ ++ char *resolved = realpath(filename, NULL); ++ if (!resolved) ++ perror_msg_and_fail("realpath: %s", filename); ++ ++ struct stat statbuf; ++ if (stat(resolved, &statbuf) < 0) ++ perror_msg_and_fail("stat: %s", resolved); ++ ++ if (selabel_lookup(hdl, &secontext, resolved, statbuf.st_mode) < 0) ++ perror_msg_and_skip("selabel_lookup: %s", resolved); ++ free(resolved); ++ ++ char *full_secontext = xstrdup(secontext); ++ freecon(secontext); ++ errno = saved_errno; ++ return full_secontext; ++} ++ ++static char * ++raw_expected_secontext_short_file(const char *filename) ++{ ++ int saved_errno = errno; ++ ++ char *ctx = raw_expected_secontext_full_file(filename); ++ char *type = get_type_from_context(ctx); ++ free(ctx); ++ ++ errno = saved_errno; ++ return type; ++} ++ ++static char * + raw_secontext_full_file(const char *filename) + { + int saved_errno = errno; +@@ -75,29 +150,11 @@ raw_secontext_short_file(const char *filename) + int saved_errno = errno; + + char *ctx = raw_secontext_full_file(filename); +- if (ctx == NULL) +- return ctx; +- +- char *saveptr = NULL; +- const char *token; +- unsigned int i; +- +- char *ctx_copy = xstrdup(ctx); +- char *context = NULL; +- for (token = strtok_r(ctx_copy, ":", &saveptr), i = 0; +- token; token = strtok_r(NULL, ":", &saveptr), i++) { +- if (i == 2) { +- context = xstrdup(token); +- break; +- } +- } +- if (context == NULL) +- context = xstrdup(ctx); +- free(ctx_copy); ++ char *type = get_type_from_context(ctx); + free(ctx); + + errno = saved_errno; +- return context; ++ return type; + } + + static char * +@@ -121,35 +178,30 @@ raw_secontext_short_pid(pid_t pid) + int saved_errno = errno; + + char *ctx = raw_secontext_full_pid(pid); +- if (ctx == NULL) +- return ctx; +- +- char *saveptr = NULL; +- const char *token; +- int i; +- +- char *ctx_copy = xstrdup(ctx); +- char *context = NULL; +- for (token = strtok_r(ctx_copy, ":", &saveptr), i = 0; +- token; token = strtok_r(NULL, ":", &saveptr), i++) { +- if (i == 2) { +- context = xstrdup(token); +- break; +- } +- } +- if (context == NULL) +- context = xstrdup(ctx); +- free(ctx_copy); ++ char *type = get_type_from_context(ctx); + free(ctx); + + errno = saved_errno; +- return context; ++ return type; + } + + char * +-secontext_full_file(const char *filename) ++secontext_full_file(const char *filename, bool mismatch) + { +- return FORMAT_SPACE_BEFORE(raw_secontext_full_file(filename)); ++ int saved_errno = errno; ++ char *context = raw_secontext_full_file(filename); ++ if (context && mismatch) { ++ char *expected = raw_expected_secontext_full_file(filename); ++ if (expected && strcmp(context, expected)) { ++ char *context_mismatch = ++ xasprintf("%s!!%s", context, expected); ++ free(context); ++ context = context_mismatch; ++ } ++ free(expected); ++ } ++ errno = saved_errno; ++ return FORMAT_SPACE_BEFORE(context); + } + + char * +@@ -159,9 +211,22 @@ secontext_full_pid(pid_t pid) + } + + char * +-secontext_short_file(const char *filename) ++secontext_short_file(const char *filename, bool mismatch) + { +- return FORMAT_SPACE_BEFORE(raw_secontext_short_file(filename)); ++ int saved_errno = errno; ++ char *context = raw_secontext_short_file(filename); ++ if (context && mismatch) { ++ char *expected = raw_expected_secontext_short_file(filename); ++ if (expected && strcmp(context, expected)) { ++ char *context_mismatch = ++ xasprintf("%s!!%s", context, expected); ++ free(context); ++ context = context_mismatch; ++ } ++ free(expected); ++ } ++ errno = saved_errno; ++ return FORMAT_SPACE_BEFORE(context); + } + + char * +@@ -171,31 +236,38 @@ secontext_short_pid(pid_t pid) + } + + void +-update_secontext_type(const char *file, const char *newtype) ++update_secontext_field(const char *file, enum secontext_field field, ++ const char *newvalue) + { ++ int saved_errno = errno; ++ assert(field >= SECONTEXT_USER && field <= SECONTEXT_TYPE); ++ + char *ctx = raw_secontext_full_file(file); + if (ctx == NULL) + return; + + char *saveptr = NULL; + char *token; +- int field; ++ int nfields; + char *split[4]; + +- for (token = strtok_r(ctx, ":", &saveptr), field = 0; +- token; token = strtok_r(NULL, ":", &saveptr), field++) { +- assert(field < 4); +- split[field] = token; ++ for (token = strtok_r(ctx, ":", &saveptr), nfields = 0; ++ token; token = strtok_r(NULL, ":", &saveptr), nfields++) { ++ assert(nfields < 4); ++ split[nfields] = token; + } +- assert(field == 4); ++ assert(nfields == 4); ++ ++ split[field] = (char *)newvalue; + + char *newcontext = xasprintf("%s:%s:%s:%s", split[0], split[1], +- newtype, split[3]); ++ split[2], split[3]); + + (void) setfilecon(file, newcontext); + + free(newcontext); + free(ctx); ++ errno = saved_errno; + } + + #endif /* HAVE_SELINUX_RUNTIME */ +diff --git a/tests-m32/secontext.h b/tests-m32/secontext.h +index c65f53a..1d0251a 100644 +--- a/tests-m32/secontext.h ++++ b/tests-m32/secontext.h +@@ -9,24 +9,39 @@ + #include "xmalloc.h" + #include + +-char *secontext_full_file(const char *) ATTRIBUTE_MALLOC; ++char *secontext_full_file(const char *, bool) ATTRIBUTE_MALLOC; + char *secontext_full_pid(pid_t) ATTRIBUTE_MALLOC; + +-char *secontext_short_file(const char *) ATTRIBUTE_MALLOC; ++char *secontext_short_file(const char *, bool) ATTRIBUTE_MALLOC; + char *secontext_short_pid(pid_t) ATTRIBUTE_MALLOC; + ++enum secontext_field { ++ SECONTEXT_USER, ++ SECONTEXT_ROLE, ++ SECONTEXT_TYPE ++}; ++ + #if defined TEST_SECONTEXT && defined HAVE_SELINUX_RUNTIME + +-void update_secontext_type(const char *file, const char *newtype); ++void update_secontext_field(const char *file, enum secontext_field field, ++ const char *newvalue); + + # ifdef PRINT_SECONTEXT_FULL + +-# define SECONTEXT_FILE(filename) secontext_full_file(filename) ++# ifdef PRINT_SECONTEXT_MISMATCH ++# define SECONTEXT_FILE(filename) secontext_full_file(filename, true) ++# else ++# define SECONTEXT_FILE(filename) secontext_full_file(filename, false) ++# endif + # define SECONTEXT_PID(pid) secontext_full_pid(pid) + + # else + +-# define SECONTEXT_FILE(filename) secontext_short_file(filename) ++# ifdef PRINT_SECONTEXT_MISMATCH ++# define SECONTEXT_FILE(filename) secontext_short_file(filename, true) ++# else ++# define SECONTEXT_FILE(filename) secontext_short_file(filename, false) ++# endif + # define SECONTEXT_PID(pid) secontext_short_pid(pid) + + # endif +@@ -34,7 +49,8 @@ void update_secontext_type(const char *file, const char *newtype); + #else + + static inline void +-update_secontext_type(const char *file, const char *newtype) ++update_secontext_field(const char *file, enum secontext_field field, ++ const char *newvalue) + { + } + +diff --git a/tests-mx32/gen_tests.in b/tests-mx32/gen_tests.in +index 8b4e2e9..71e2f17 100644 +--- a/tests-mx32/gen_tests.in ++++ b/tests-mx32/gen_tests.in +@@ -12,6 +12,8 @@ accept4 -a37 + access -a30 --trace-path=access_sample + access--secontext -a30 --secontext --trace-path=access_sample -e trace=access + access--secontext_full -a30 --secontext=full --trace-path=access_sample -e trace=access ++access--secontext_full_mismatch -a30 --secontext=full,mismatch --trace-path=access_sample -e trace=access ++access--secontext_mismatch -a30 --secontext=mismatch --trace-path=access_sample -e trace=access + acct -a20 + add_key -a30 -s12 + adjtimex -a15 +@@ -27,8 +29,10 @@ bpf-v -a20 -v -e trace=bpf + btrfs +ioctl.test + chdir -a10 + chmod -a28 +-chmod--secontext -a28 --secontext -e trace=chmod +-chmod--secontext_full -a28 --secontext=full -e trace=chmod ++chmod--secontext -a28 -e secontext=!full,mismatch -e trace=chmod ++chmod--secontext_full -a28 -e secontext=full -e trace=chmod ++chmod--secontext_full_mismatch -a28 --secontext=mismatch,full -e trace=chmod ++chmod--secontext_mismatch -a28 --secontext=mismatch -e trace=chmod + chown -a28 + chown32 -a31 + chroot -a13 +@@ -84,16 +88,24 @@ epoll_wait -a26 + erestartsys -a34 -e signal=none -e trace=recvfrom + execve--secontext +execve.test --secontext + execve--secontext_full +execve.test --secontext=full ++execve--secontext_full_mismatch +execve.test --secontext=full,mismatch ++execve--secontext_mismatch +execve.test --secontext=mismatch + execveat + execveat--secontext --secontext --trace=execveat + execveat--secontext_full --secontext=full --trace=execveat ++execveat--secontext_full_mismatch --secontext=full,mismatch --trace=execveat ++execveat--secontext_mismatch --secontext=mismatch --trace=execveat + execveat-v -v -e trace=execveat + faccessat--secontext +faccessat.test -a24 --secontext + faccessat--secontext_full +faccessat.test -a24 --secontext=full ++faccessat--secontext_full_mismatch +faccessat.test -a24 --secontext=full,mismatch ++faccessat--secontext_mismatch +faccessat.test -a24 --secontext=mismatch + faccessat-P -a23 --trace=faccessat -P /dev/full + faccessat-y +faccessat.test -a24 -y + faccessat-y--secontext +faccessat.test -a24 -y --secontext + faccessat-y--secontext_full +faccessat.test -a24 -y --secontext=full ++faccessat-y--secontext_full_mismatch +faccessat.test -a24 -y --secontext=full,mismatch ++faccessat-y--secontext_mismatch +faccessat.test -a24 -y --secontext=mismatch + faccessat-yy +faccessat.test -a24 -yy + faccessat2-P -a27 --trace=faccessat2 -P /dev/full + faccessat2-y +faccessat2.test -a28 -y +@@ -104,6 +116,8 @@ fanotify_init + fanotify_mark -a32 + fanotify_mark--secontext -a32 --secontext -e trace=fanotify_mark + fanotify_mark--secontext_full -a32 --secontext=full -e trace=fanotify_mark ++fanotify_mark--secontext_full_mismatch -a32 --secontext=full,mismatch -e trace=fanotify_mark ++fanotify_mark--secontext_mismatch -a32 --secontext=mismatch -e trace=fanotify_mark + fanotify_mark-Xabbrev -a32 -Xabbrev -e trace=fanotify_mark + fanotify_mark-Xraw -a32 -Xraw -e trace=fanotify_mark + fanotify_mark-Xverbose -a32 -Xverbose -e trace=fanotify_mark +@@ -111,17 +125,25 @@ fchdir -a11 + fchmod -a15 + fchmod--secontext -a15 --secontext -e trace=fchmod + fchmod--secontext_full -a15 --secontext=full -e trace=fchmod ++fchmod--secontext_full_mismatch -a15 --secontext=full,mismatch -e trace=fchmod ++fchmod--secontext_mismatch -a15 --secontext=mismatch -e trace=fchmod + fchmod-y -y -e trace=fchmod + fchmod-y--secontext -a15 -y --secontext -e trace=fchmod + fchmod-y--secontext_full -a15 -y --secontext=full -e trace=fchmod ++fchmod-y--secontext_full_mismatch -a15 -y --secontext=full,mismatch -e trace=fchmod ++fchmod-y--secontext_mismatch -a15 -y --secontext=mismatch -e trace=fchmod + fchmodat + fchmodat--secontext --secontext -e trace=fchmodat + fchmodat--secontext_full --secontext=full -e trace=fchmodat ++fchmodat--secontext_full_mismatch --secontext=full,mismatch -e trace=fchmodat ++fchmodat--secontext_mismatch --secontext=mismatch -e trace=fchmodat + fchown -a16 + fchown32 -a18 + fchownat + fchownat--secontext --secontext -e trace=fchownat + fchownat--secontext_full --secontext=full -e trace=fchownat ++fchownat--secontext_full_mismatch -e secontext=full,mismatch -e trace=fchownat ++fchownat--secontext_mismatch -e secontext=mismatch -e trace=fchownat + fcntl -a8 + fcntl--pidns-translation test_pidns -a8 -e trace=fcntl + fcntl64 -a8 +@@ -130,6 +152,8 @@ fdatasync -a14 + file_handle -e trace=name_to_handle_at,open_by_handle_at + file_handle--secontext --secontext -e trace=name_to_handle_at,open_by_handle_at + file_handle--secontext_full --secontext=full -e trace=name_to_handle_at,open_by_handle_at ++file_handle--secontext_full_mismatch --secontext=full,mismatch -e trace=name_to_handle_at,open_by_handle_at ++file_handle--secontext_mismatch --secontext=mismatch -e trace=name_to_handle_at,open_by_handle_at + filter_seccomp . "${srcdir=.}/filter_seccomp.sh"; test_prog_set --seccomp-bpf -f + filter_seccomp-flag ../$NAME + finit_module -a25 +@@ -383,6 +407,8 @@ link + linkat + linkat--secontext --secontext -e trace=linkat + linkat--secontext_full --secontext=full -e trace=linkat ++linkat--secontext_full_mismatch --secontext=full,mismatch -e trace=linkat ++linkat--secontext_mismatch --secontext=mismatch -e trace=linkat + lookup_dcookie -a27 + lstat -a31 --no-abbrev --trace-path=stat.sample --trace-path=/dev/full + lstat64 -a32 --no-abbrev --trace-path=stat.sample --trace-path=/dev/full +@@ -526,11 +552,15 @@ oldstat -a32 -v -P stat.sample -P /dev/full + open -a30 -P $NAME.sample + open--secontext -a30 -P open.sample --secontext --trace=open + open--secontext_full -a30 -P open.sample --secontext=full --trace=open ++open--secontext_full_mismatch -a30 -P open.sample --secontext=full,mismatch --trace=open ++open--secontext_mismatch -a30 -P open.sample --secontext=mismatch --trace=open + open_tree -a30 -y + open_tree-P -a30 --decode-fds -P /dev/full -e trace=open_tree + openat -a36 -P $NAME.sample + openat--secontext -a36 -P openat.sample -P $PWD/openat.sample --secontext -e trace=openat + openat--secontext_full -a36 -P openat.sample -P $PWD/openat.sample --secontext=full -e trace=openat ++openat--secontext_full_mismatch -a36 -P openat.sample -P $PWD/openat.sample --secontext=full,mismatch -e trace=openat ++openat--secontext_mismatch -a36 -P openat.sample -P $PWD/openat.sample --secontext=mismatch -e trace=openat + openat2 -a35 + openat2-Xabbrev --trace=openat2 -a35 -Xabbrev + openat2-Xraw --trace=openat2 -a32 -Xraw +diff --git a/tests-mx32/linkat.c b/tests-mx32/linkat.c +index 1d41d3d..1a869e3 100644 +--- a/tests-mx32/linkat.c ++++ b/tests-mx32/linkat.c +@@ -15,6 +15,7 @@ + #include + #include + #include ++#include + + #include "secontext.h" + #include "xmalloc.h" +@@ -88,10 +89,42 @@ main(void) + perror_msg_and_fail("close"); + + free(sample_1_secontext); +- update_secontext_type(sample_1, "default_t"); ++ ++#ifdef PRINT_SECONTEXT_MISMATCH ++ update_secontext_field(sample_1, SECONTEXT_USER, "system_u"); ++ sample_1_secontext = SECONTEXT_FILE(sample_1); ++ ++# ifdef PRINT_SECONTEXT_FULL ++ /* The mismatch should be detected */ ++ if (*sample_1_secontext && strstr(sample_1_secontext, "!!") == NULL) ++ perror_msg_and_fail("Context mismatch not detected: %s", ++ sample_1_secontext); ++ if (*sample_1_secontext && strstr(sample_1_secontext, "system_u") == NULL) ++ perror_msg_and_fail("Context mismatch not detected: %s", ++ sample_1_secontext); ++# else ++ /* The mismatch cannot be detected since it's on user part */ ++ if (*sample_1_secontext && strstr(sample_1_secontext, "!!") != NULL) ++ perror_msg_and_fail("Context mismatch detected: %s", ++ sample_1_secontext); ++# endif ++ ++ free(sample_1_secontext); ++#endif ++ ++ update_secontext_field(sample_1, SECONTEXT_TYPE, "default_t"); + sample_1_secontext = SECONTEXT_FILE(sample_1); + sample_2_secontext = sample_1_secontext; + ++#ifdef PRINT_SECONTEXT_MISMATCH ++ if (*sample_1_secontext && strstr(sample_1_secontext, "!!") == NULL) ++ perror_msg_and_fail("Context mismatch not detected: %s", ++ sample_1_secontext); ++ if (*sample_1_secontext && strstr(sample_1_secontext, "default_t") == NULL) ++ perror_msg_and_fail("Context mismatch not detected: %s", ++ sample_1_secontext); ++#endif ++ + rc = syscall(__NR_linkat, -100, sample_1, -100, sample_2, 0); + printf("%s%s(AT_FDCWD, \"%s\"%s, AT_FDCWD, \"%s\"%s, 0) = %s\n", + my_secontext, "linkat", +@@ -108,8 +141,19 @@ main(void) + + int dfd_old = get_dir_fd("."); + char *cwd = get_fd_path(dfd_old); ++ ++ update_secontext_field(".", SECONTEXT_TYPE, "default_t"); + char *dfd_old_secontext = SECONTEXT_FILE("."); + ++#ifdef PRINT_SECONTEXT_MISMATCH ++ if (*dfd_old_secontext && strstr(dfd_old_secontext, "!!") == NULL) ++ perror_msg_and_fail("Context mismatch not detected: %s", ++ dfd_old_secontext); ++ if (*dfd_old_secontext && strstr(dfd_old_secontext, "default_t") == NULL) ++ perror_msg_and_fail("Context mismatch not detected: %s", ++ dfd_old_secontext); ++#endif ++ + rc = syscall(__NR_linkat, dfd_old, sample_1, -100, sample_2, 0); + /* no context printed for sample_2 since file doesn't exist yet */ + printf("%s%s(%d%s, \"%s\"%s, AT_FDCWD, \"%s\", 0) = %s\n", +diff --git a/tests-mx32/options-syntax.test b/tests-mx32/options-syntax.test +index 765b2f8..848d297 100755 +--- a/tests-mx32/options-syntax.test ++++ b/tests-mx32/options-syntax.test +@@ -48,8 +48,18 @@ check_e '-t and --absolute-timestamps cannot be provided simultaneously' -t --ti + check_e '-t and --absolute-timestamps cannot be provided simultaneously' --absolute-timestamps -ttt -p $$ + check_e '-t and --absolute-timestamps cannot be provided simultaneously' -t --timestamps=ns -t -p $$ + check_e '-t and --absolute-timestamps cannot be provided simultaneously' --timestamps=ns -t --absolute-timestamps=unix -p $$ +-[ -z "$compiled_with_secontext" ] || +- check_h "invalid --secontext argument: 'ss'" --secontext=ss ++if [ -n "$compiled_with_secontext" ]; then ++ for opt in '--secontext' '-e secontext'; do ++ check_e "invalid secontext ''" $opt= ++ check_e "invalid secontext 'ss'" $opt=ss ++ check_e "invalid secontext 'ss'" $opt=ss,full,mismatch ++ check_e "invalid secontext 'ss'" $opt=full,ss,mismatch ++ check_e "invalid secontext 'ss'" $opt=full,ss ++ check_e "invalid secontext 'ss'" $opt=full,mismatch,ss ++ check_e "invalid secontext 'ss'" $opt=!full,ss ++ check_e "invalid secontext 'ss'" $opt=!full,mismatch,ss ++ done ++fi + check_h 'PROG [ARGS] must be specified with -D/--daemonize' -D -p $$ + check_h 'PROG [ARGS] must be specified with -D/--daemonize' -DD -p $$ + check_h 'PROG [ARGS] must be specified with -D/--daemonize' -DDD -p $$ +diff --git a/tests-mx32/secontext.c b/tests-mx32/secontext.c +index 21c6370..848eea9 100644 +--- a/tests-mx32/secontext.c ++++ b/tests-mx32/secontext.c +@@ -13,8 +13,10 @@ + # include + # include + # include ++# include + # include + # include ++# include + + # include "xmalloc.h" + +@@ -55,6 +57,79 @@ strip_trailing_newlines(char *context) + } + + static char * ++get_type_from_context(const char *full_context) ++{ ++ int saved_errno = errno; ++ ++ if (!full_context) ++ return NULL; ++ ++ char *saveptr = NULL; ++ const char *token; ++ unsigned int i; ++ ++ char *ctx_copy = xstrdup(full_context); ++ char *context = NULL; ++ for (token = strtok_r(ctx_copy, ":", &saveptr), i = 0; ++ token; token = strtok_r(NULL, ":", &saveptr), i++) { ++ if (i == 2) { ++ context = xstrdup(token); ++ break; ++ } ++ } ++ if (!context) ++ context = xstrdup(full_context); ++ free(ctx_copy); ++ ++ errno = saved_errno; ++ return context; ++} ++ ++static char * ++raw_expected_secontext_full_file(const char *filename) ++{ ++ int saved_errno = errno; ++ char *secontext; ++ ++ static struct selabel_handle *hdl; ++ if (!hdl) { ++ hdl = selabel_open(SELABEL_CTX_FILE, NULL, 0); ++ if (!hdl) ++ perror_msg_and_skip("selabel_open"); ++ } ++ ++ char *resolved = realpath(filename, NULL); ++ if (!resolved) ++ perror_msg_and_fail("realpath: %s", filename); ++ ++ struct stat statbuf; ++ if (stat(resolved, &statbuf) < 0) ++ perror_msg_and_fail("stat: %s", resolved); ++ ++ if (selabel_lookup(hdl, &secontext, resolved, statbuf.st_mode) < 0) ++ perror_msg_and_skip("selabel_lookup: %s", resolved); ++ free(resolved); ++ ++ char *full_secontext = xstrdup(secontext); ++ freecon(secontext); ++ errno = saved_errno; ++ return full_secontext; ++} ++ ++static char * ++raw_expected_secontext_short_file(const char *filename) ++{ ++ int saved_errno = errno; ++ ++ char *ctx = raw_expected_secontext_full_file(filename); ++ char *type = get_type_from_context(ctx); ++ free(ctx); ++ ++ errno = saved_errno; ++ return type; ++} ++ ++static char * + raw_secontext_full_file(const char *filename) + { + int saved_errno = errno; +@@ -75,29 +150,11 @@ raw_secontext_short_file(const char *filename) + int saved_errno = errno; + + char *ctx = raw_secontext_full_file(filename); +- if (ctx == NULL) +- return ctx; +- +- char *saveptr = NULL; +- const char *token; +- unsigned int i; +- +- char *ctx_copy = xstrdup(ctx); +- char *context = NULL; +- for (token = strtok_r(ctx_copy, ":", &saveptr), i = 0; +- token; token = strtok_r(NULL, ":", &saveptr), i++) { +- if (i == 2) { +- context = xstrdup(token); +- break; +- } +- } +- if (context == NULL) +- context = xstrdup(ctx); +- free(ctx_copy); ++ char *type = get_type_from_context(ctx); + free(ctx); + + errno = saved_errno; +- return context; ++ return type; + } + + static char * +@@ -121,35 +178,30 @@ raw_secontext_short_pid(pid_t pid) + int saved_errno = errno; + + char *ctx = raw_secontext_full_pid(pid); +- if (ctx == NULL) +- return ctx; +- +- char *saveptr = NULL; +- const char *token; +- int i; +- +- char *ctx_copy = xstrdup(ctx); +- char *context = NULL; +- for (token = strtok_r(ctx_copy, ":", &saveptr), i = 0; +- token; token = strtok_r(NULL, ":", &saveptr), i++) { +- if (i == 2) { +- context = xstrdup(token); +- break; +- } +- } +- if (context == NULL) +- context = xstrdup(ctx); +- free(ctx_copy); ++ char *type = get_type_from_context(ctx); + free(ctx); + + errno = saved_errno; +- return context; ++ return type; + } + + char * +-secontext_full_file(const char *filename) ++secontext_full_file(const char *filename, bool mismatch) + { +- return FORMAT_SPACE_BEFORE(raw_secontext_full_file(filename)); ++ int saved_errno = errno; ++ char *context = raw_secontext_full_file(filename); ++ if (context && mismatch) { ++ char *expected = raw_expected_secontext_full_file(filename); ++ if (expected && strcmp(context, expected)) { ++ char *context_mismatch = ++ xasprintf("%s!!%s", context, expected); ++ free(context); ++ context = context_mismatch; ++ } ++ free(expected); ++ } ++ errno = saved_errno; ++ return FORMAT_SPACE_BEFORE(context); + } + + char * +@@ -159,9 +211,22 @@ secontext_full_pid(pid_t pid) + } + + char * +-secontext_short_file(const char *filename) ++secontext_short_file(const char *filename, bool mismatch) + { +- return FORMAT_SPACE_BEFORE(raw_secontext_short_file(filename)); ++ int saved_errno = errno; ++ char *context = raw_secontext_short_file(filename); ++ if (context && mismatch) { ++ char *expected = raw_expected_secontext_short_file(filename); ++ if (expected && strcmp(context, expected)) { ++ char *context_mismatch = ++ xasprintf("%s!!%s", context, expected); ++ free(context); ++ context = context_mismatch; ++ } ++ free(expected); ++ } ++ errno = saved_errno; ++ return FORMAT_SPACE_BEFORE(context); + } + + char * +@@ -171,31 +236,38 @@ secontext_short_pid(pid_t pid) + } + + void +-update_secontext_type(const char *file, const char *newtype) ++update_secontext_field(const char *file, enum secontext_field field, ++ const char *newvalue) + { ++ int saved_errno = errno; ++ assert(field >= SECONTEXT_USER && field <= SECONTEXT_TYPE); ++ + char *ctx = raw_secontext_full_file(file); + if (ctx == NULL) + return; + + char *saveptr = NULL; + char *token; +- int field; ++ int nfields; + char *split[4]; + +- for (token = strtok_r(ctx, ":", &saveptr), field = 0; +- token; token = strtok_r(NULL, ":", &saveptr), field++) { +- assert(field < 4); +- split[field] = token; ++ for (token = strtok_r(ctx, ":", &saveptr), nfields = 0; ++ token; token = strtok_r(NULL, ":", &saveptr), nfields++) { ++ assert(nfields < 4); ++ split[nfields] = token; + } +- assert(field == 4); ++ assert(nfields == 4); ++ ++ split[field] = (char *)newvalue; + + char *newcontext = xasprintf("%s:%s:%s:%s", split[0], split[1], +- newtype, split[3]); ++ split[2], split[3]); + + (void) setfilecon(file, newcontext); + + free(newcontext); + free(ctx); ++ errno = saved_errno; + } + + #endif /* HAVE_SELINUX_RUNTIME */ +diff --git a/tests-mx32/secontext.h b/tests-mx32/secontext.h +index c65f53a..1d0251a 100644 +--- a/tests-mx32/secontext.h ++++ b/tests-mx32/secontext.h +@@ -9,24 +9,39 @@ + #include "xmalloc.h" + #include + +-char *secontext_full_file(const char *) ATTRIBUTE_MALLOC; ++char *secontext_full_file(const char *, bool) ATTRIBUTE_MALLOC; + char *secontext_full_pid(pid_t) ATTRIBUTE_MALLOC; + +-char *secontext_short_file(const char *) ATTRIBUTE_MALLOC; ++char *secontext_short_file(const char *, bool) ATTRIBUTE_MALLOC; + char *secontext_short_pid(pid_t) ATTRIBUTE_MALLOC; + ++enum secontext_field { ++ SECONTEXT_USER, ++ SECONTEXT_ROLE, ++ SECONTEXT_TYPE ++}; ++ + #if defined TEST_SECONTEXT && defined HAVE_SELINUX_RUNTIME + +-void update_secontext_type(const char *file, const char *newtype); ++void update_secontext_field(const char *file, enum secontext_field field, ++ const char *newvalue); + + # ifdef PRINT_SECONTEXT_FULL + +-# define SECONTEXT_FILE(filename) secontext_full_file(filename) ++# ifdef PRINT_SECONTEXT_MISMATCH ++# define SECONTEXT_FILE(filename) secontext_full_file(filename, true) ++# else ++# define SECONTEXT_FILE(filename) secontext_full_file(filename, false) ++# endif + # define SECONTEXT_PID(pid) secontext_full_pid(pid) + + # else + +-# define SECONTEXT_FILE(filename) secontext_short_file(filename) ++# ifdef PRINT_SECONTEXT_MISMATCH ++# define SECONTEXT_FILE(filename) secontext_short_file(filename, true) ++# else ++# define SECONTEXT_FILE(filename) secontext_short_file(filename, false) ++# endif + # define SECONTEXT_PID(pid) secontext_short_pid(pid) + + # endif +@@ -34,7 +49,8 @@ void update_secontext_type(const char *file, const char *newtype); + #else + + static inline void +-update_secontext_type(const char *file, const char *newtype) ++update_secontext_field(const char *file, enum secontext_field field, ++ const char *newvalue) + { + } + +--- old/tests/Makefile.in 2022-02-07 20:23:38.724063729 +0100 ++++ new/tests/Makefile.in 2022-02-07 20:24:05.660063357 +0100 +@@ -614,25 +614,55 @@ + xet_thread_area_x86$(EXEEXT) xetitimer$(EXEEXT) \ + xetpgid$(EXEEXT) xetpriority$(EXEEXT) xettimeofday$(EXEEXT) + am__EXEEXT_2 = access--secontext$(EXEEXT) \ +- access--secontext_full$(EXEEXT) chmod--secontext$(EXEEXT) \ +- chmod--secontext_full$(EXEEXT) execve--secontext$(EXEEXT) \ +- execve--secontext_full$(EXEEXT) execveat--secontext$(EXEEXT) \ +- execveat--secontext_full$(EXEEXT) \ ++ access--secontext_full$(EXEEXT) \ ++ access--secontext_full_mismatch$(EXEEXT) \ ++ access--secontext_mismatch$(EXEEXT) chmod--secontext$(EXEEXT) \ ++ chmod--secontext_full$(EXEEXT) \ ++ chmod--secontext_full_mismatch$(EXEEXT) \ ++ chmod--secontext_mismatch$(EXEEXT) execve--secontext$(EXEEXT) \ ++ execve--secontext_full$(EXEEXT) \ ++ execve--secontext_full_mismatch$(EXEEXT) \ ++ execve--secontext_mismatch$(EXEEXT) \ ++ execveat--secontext$(EXEEXT) execveat--secontext_full$(EXEEXT) \ ++ execveat--secontext_full_mismatch$(EXEEXT) \ ++ execveat--secontext_mismatch$(EXEEXT) \ + faccessat--secontext$(EXEEXT) \ + faccessat--secontext_full$(EXEEXT) \ ++ faccessat--secontext_full_mismatch$(EXEEXT) \ ++ faccessat--secontext_mismatch$(EXEEXT) \ + faccessat-y--secontext$(EXEEXT) \ + faccessat-y--secontext_full$(EXEEXT) \ ++ faccessat-y--secontext_full_mismatch$(EXEEXT) \ ++ faccessat-y--secontext_mismatch$(EXEEXT) \ + fanotify_mark--secontext$(EXEEXT) \ + fanotify_mark--secontext_full$(EXEEXT) \ ++ fanotify_mark--secontext_full_mismatch$(EXEEXT) \ ++ fanotify_mark--secontext_mismatch$(EXEEXT) \ + fchmod--secontext$(EXEEXT) fchmod--secontext_full$(EXEEXT) \ ++ fchmod--secontext_full_mismatch$(EXEEXT) \ ++ fchmod--secontext_mismatch$(EXEEXT) \ + fchmod-y--secontext$(EXEEXT) fchmod-y--secontext_full$(EXEEXT) \ ++ fchmod-y--secontext_full_mismatch$(EXEEXT) \ ++ fchmod-y--secontext_mismatch$(EXEEXT) \ + fchmodat--secontext$(EXEEXT) fchmodat--secontext_full$(EXEEXT) \ ++ fchmodat--secontext_full_mismatch$(EXEEXT) \ ++ fchmodat--secontext_mismatch$(EXEEXT) \ + fchownat--secontext$(EXEEXT) fchownat--secontext_full$(EXEEXT) \ ++ fchownat--secontext_full_mismatch$(EXEEXT) \ ++ fchownat--secontext_mismatch$(EXEEXT) \ + file_handle--secontext$(EXEEXT) \ + file_handle--secontext_full$(EXEEXT) \ ++ file_handle--secontext_full_mismatch$(EXEEXT) \ ++ file_handle--secontext_mismatch$(EXEEXT) \ + linkat--secontext$(EXEEXT) linkat--secontext_full$(EXEEXT) \ +- open--secontext$(EXEEXT) open--secontext_full$(EXEEXT) \ +- openat--secontext$(EXEEXT) openat--secontext_full$(EXEEXT) ++ linkat--secontext_full_mismatch$(EXEEXT) \ ++ linkat--secontext_mismatch$(EXEEXT) open--secontext$(EXEEXT) \ ++ open--secontext_full$(EXEEXT) \ ++ open--secontext_full_mismatch$(EXEEXT) \ ++ open--secontext_mismatch$(EXEEXT) openat--secontext$(EXEEXT) \ ++ openat--secontext_full$(EXEEXT) \ ++ openat--secontext_full_mismatch$(EXEEXT) \ ++ openat--secontext_mismatch$(EXEEXT) + ARFLAGS = cru + AM_V_AR = $(am__v_AR_@AM_V@) + am__v_AR_ = $(am__v_AR_@AM_DEFAULT_V@) +@@ -661,6 +691,17 @@ + access__secontext_full_SOURCES = access--secontext_full.c + access__secontext_full_OBJECTS = access--secontext_full.$(OBJEXT) + access__secontext_full_DEPENDENCIES = $(LDADD) $(am__DEPENDENCIES_2) ++access__secontext_full_mismatch_SOURCES = \ ++ access--secontext_full_mismatch.c ++access__secontext_full_mismatch_OBJECTS = \ ++ access--secontext_full_mismatch.$(OBJEXT) ++access__secontext_full_mismatch_DEPENDENCIES = $(LDADD) \ ++ $(am__DEPENDENCIES_2) ++access__secontext_mismatch_SOURCES = access--secontext_mismatch.c ++access__secontext_mismatch_OBJECTS = \ ++ access--secontext_mismatch.$(OBJEXT) ++access__secontext_mismatch_DEPENDENCIES = $(LDADD) \ ++ $(am__DEPENDENCIES_2) + acct_SOURCES = acct.c + acct_OBJECTS = acct.$(OBJEXT) + acct_LDADD = $(LDADD) +@@ -789,6 +830,17 @@ + chmod__secontext_full_SOURCES = chmod--secontext_full.c + chmod__secontext_full_OBJECTS = chmod--secontext_full.$(OBJEXT) + chmod__secontext_full_DEPENDENCIES = $(LDADD) $(am__DEPENDENCIES_2) ++chmod__secontext_full_mismatch_SOURCES = \ ++ chmod--secontext_full_mismatch.c ++chmod__secontext_full_mismatch_OBJECTS = \ ++ chmod--secontext_full_mismatch.$(OBJEXT) ++chmod__secontext_full_mismatch_DEPENDENCIES = $(LDADD) \ ++ $(am__DEPENDENCIES_2) ++chmod__secontext_mismatch_SOURCES = chmod--secontext_mismatch.c ++chmod__secontext_mismatch_OBJECTS = \ ++ chmod--secontext_mismatch.$(OBJEXT) ++chmod__secontext_mismatch_DEPENDENCIES = $(LDADD) \ ++ $(am__DEPENDENCIES_2) + chown_SOURCES = chown.c + chown_OBJECTS = chown.$(OBJEXT) + chown_LDADD = $(LDADD) +@@ -1030,6 +1082,17 @@ + execve__secontext_full_SOURCES = execve--secontext_full.c + execve__secontext_full_OBJECTS = execve--secontext_full.$(OBJEXT) + execve__secontext_full_DEPENDENCIES = $(LDADD) $(am__DEPENDENCIES_2) ++execve__secontext_full_mismatch_SOURCES = \ ++ execve--secontext_full_mismatch.c ++execve__secontext_full_mismatch_OBJECTS = \ ++ execve--secontext_full_mismatch.$(OBJEXT) ++execve__secontext_full_mismatch_DEPENDENCIES = $(LDADD) \ ++ $(am__DEPENDENCIES_2) ++execve__secontext_mismatch_SOURCES = execve--secontext_mismatch.c ++execve__secontext_mismatch_OBJECTS = \ ++ execve--secontext_mismatch.$(OBJEXT) ++execve__secontext_mismatch_DEPENDENCIES = $(LDADD) \ ++ $(am__DEPENDENCIES_2) + execve_v_SOURCES = execve-v.c + execve_v_OBJECTS = execve-v.$(OBJEXT) + execve_v_LDADD = $(LDADD) +@@ -1044,6 +1107,17 @@ + execveat__secontext_full_SOURCES = execveat--secontext_full.c + execveat__secontext_full_OBJECTS = execveat--secontext_full.$(OBJEXT) + execveat__secontext_full_DEPENDENCIES = $(LDADD) $(am__DEPENDENCIES_2) ++execveat__secontext_full_mismatch_SOURCES = \ ++ execveat--secontext_full_mismatch.c ++execveat__secontext_full_mismatch_OBJECTS = \ ++ execveat--secontext_full_mismatch.$(OBJEXT) ++execveat__secontext_full_mismatch_DEPENDENCIES = $(LDADD) \ ++ $(am__DEPENDENCIES_2) ++execveat__secontext_mismatch_SOURCES = execveat--secontext_mismatch.c ++execveat__secontext_mismatch_OBJECTS = \ ++ execveat--secontext_mismatch.$(OBJEXT) ++execveat__secontext_mismatch_DEPENDENCIES = $(LDADD) \ ++ $(am__DEPENDENCIES_2) + execveat_v_SOURCES = execveat-v.c + execveat_v_OBJECTS = execveat-v.$(OBJEXT) + execveat_v_LDADD = $(LDADD) +@@ -1060,6 +1134,18 @@ + faccessat--secontext_full.$(OBJEXT) + faccessat__secontext_full_DEPENDENCIES = $(LDADD) \ + $(am__DEPENDENCIES_2) ++faccessat__secontext_full_mismatch_SOURCES = \ ++ faccessat--secontext_full_mismatch.c ++faccessat__secontext_full_mismatch_OBJECTS = \ ++ faccessat--secontext_full_mismatch.$(OBJEXT) ++faccessat__secontext_full_mismatch_DEPENDENCIES = $(LDADD) \ ++ $(am__DEPENDENCIES_2) ++faccessat__secontext_mismatch_SOURCES = \ ++ faccessat--secontext_mismatch.c ++faccessat__secontext_mismatch_OBJECTS = \ ++ faccessat--secontext_mismatch.$(OBJEXT) ++faccessat__secontext_mismatch_DEPENDENCIES = $(LDADD) \ ++ $(am__DEPENDENCIES_2) + faccessat_P_SOURCES = faccessat-P.c + faccessat_P_OBJECTS = faccessat-P.$(OBJEXT) + faccessat_P_LDADD = $(LDADD) +@@ -1076,6 +1162,18 @@ + faccessat-y--secontext_full.$(OBJEXT) + faccessat_y__secontext_full_DEPENDENCIES = $(LDADD) \ + $(am__DEPENDENCIES_2) ++faccessat_y__secontext_full_mismatch_SOURCES = \ ++ faccessat-y--secontext_full_mismatch.c ++faccessat_y__secontext_full_mismatch_OBJECTS = \ ++ faccessat-y--secontext_full_mismatch.$(OBJEXT) ++faccessat_y__secontext_full_mismatch_DEPENDENCIES = $(LDADD) \ ++ $(am__DEPENDENCIES_2) ++faccessat_y__secontext_mismatch_SOURCES = \ ++ faccessat-y--secontext_mismatch.c ++faccessat_y__secontext_mismatch_OBJECTS = \ ++ faccessat-y--secontext_mismatch.$(OBJEXT) ++faccessat_y__secontext_mismatch_DEPENDENCIES = $(LDADD) \ ++ $(am__DEPENDENCIES_2) + faccessat_yy_SOURCES = faccessat-yy.c + faccessat_yy_OBJECTS = faccessat-yy.$(OBJEXT) + faccessat_yy_LDADD = $(LDADD) +@@ -1125,6 +1223,18 @@ + fanotify_mark--secontext_full.$(OBJEXT) + fanotify_mark__secontext_full_DEPENDENCIES = $(LDADD) \ + $(am__DEPENDENCIES_2) ++fanotify_mark__secontext_full_mismatch_SOURCES = \ ++ fanotify_mark--secontext_full_mismatch.c ++fanotify_mark__secontext_full_mismatch_OBJECTS = \ ++ fanotify_mark--secontext_full_mismatch.$(OBJEXT) ++fanotify_mark__secontext_full_mismatch_DEPENDENCIES = $(LDADD) \ ++ $(am__DEPENDENCIES_2) ++fanotify_mark__secontext_mismatch_SOURCES = \ ++ fanotify_mark--secontext_mismatch.c ++fanotify_mark__secontext_mismatch_OBJECTS = \ ++ fanotify_mark--secontext_mismatch.$(OBJEXT) ++fanotify_mark__secontext_mismatch_DEPENDENCIES = $(LDADD) \ ++ $(am__DEPENDENCIES_2) + fanotify_mark_Xabbrev_SOURCES = fanotify_mark-Xabbrev.c + fanotify_mark_Xabbrev_OBJECTS = fanotify_mark-Xabbrev.$(OBJEXT) + fanotify_mark_Xabbrev_LDADD = $(LDADD) +@@ -1151,6 +1261,17 @@ + fchmod__secontext_full_SOURCES = fchmod--secontext_full.c + fchmod__secontext_full_OBJECTS = fchmod--secontext_full.$(OBJEXT) + fchmod__secontext_full_DEPENDENCIES = $(LDADD) $(am__DEPENDENCIES_2) ++fchmod__secontext_full_mismatch_SOURCES = \ ++ fchmod--secontext_full_mismatch.c ++fchmod__secontext_full_mismatch_OBJECTS = \ ++ fchmod--secontext_full_mismatch.$(OBJEXT) ++fchmod__secontext_full_mismatch_DEPENDENCIES = $(LDADD) \ ++ $(am__DEPENDENCIES_2) ++fchmod__secontext_mismatch_SOURCES = fchmod--secontext_mismatch.c ++fchmod__secontext_mismatch_OBJECTS = \ ++ fchmod--secontext_mismatch.$(OBJEXT) ++fchmod__secontext_mismatch_DEPENDENCIES = $(LDADD) \ ++ $(am__DEPENDENCIES_2) + fchmod_y_SOURCES = fchmod-y.c + fchmod_y_OBJECTS = fchmod-y.$(OBJEXT) + fchmod_y_LDADD = $(LDADD) +@@ -1161,6 +1282,17 @@ + fchmod_y__secontext_full_SOURCES = fchmod-y--secontext_full.c + fchmod_y__secontext_full_OBJECTS = fchmod-y--secontext_full.$(OBJEXT) + fchmod_y__secontext_full_DEPENDENCIES = $(LDADD) $(am__DEPENDENCIES_2) ++fchmod_y__secontext_full_mismatch_SOURCES = \ ++ fchmod-y--secontext_full_mismatch.c ++fchmod_y__secontext_full_mismatch_OBJECTS = \ ++ fchmod-y--secontext_full_mismatch.$(OBJEXT) ++fchmod_y__secontext_full_mismatch_DEPENDENCIES = $(LDADD) \ ++ $(am__DEPENDENCIES_2) ++fchmod_y__secontext_mismatch_SOURCES = fchmod-y--secontext_mismatch.c ++fchmod_y__secontext_mismatch_OBJECTS = \ ++ fchmod-y--secontext_mismatch.$(OBJEXT) ++fchmod_y__secontext_mismatch_DEPENDENCIES = $(LDADD) \ ++ $(am__DEPENDENCIES_2) + fchmodat_SOURCES = fchmodat.c + fchmodat_OBJECTS = fchmodat.$(OBJEXT) + fchmodat_LDADD = $(LDADD) +@@ -1171,6 +1303,17 @@ + fchmodat__secontext_full_SOURCES = fchmodat--secontext_full.c + fchmodat__secontext_full_OBJECTS = fchmodat--secontext_full.$(OBJEXT) + fchmodat__secontext_full_DEPENDENCIES = $(LDADD) $(am__DEPENDENCIES_2) ++fchmodat__secontext_full_mismatch_SOURCES = \ ++ fchmodat--secontext_full_mismatch.c ++fchmodat__secontext_full_mismatch_OBJECTS = \ ++ fchmodat--secontext_full_mismatch.$(OBJEXT) ++fchmodat__secontext_full_mismatch_DEPENDENCIES = $(LDADD) \ ++ $(am__DEPENDENCIES_2) ++fchmodat__secontext_mismatch_SOURCES = fchmodat--secontext_mismatch.c ++fchmodat__secontext_mismatch_OBJECTS = \ ++ fchmodat--secontext_mismatch.$(OBJEXT) ++fchmodat__secontext_mismatch_DEPENDENCIES = $(LDADD) \ ++ $(am__DEPENDENCIES_2) + fchown_SOURCES = fchown.c + fchown_OBJECTS = fchown.$(OBJEXT) + fchown_LDADD = $(LDADD) +@@ -1189,6 +1332,17 @@ + fchownat__secontext_full_SOURCES = fchownat--secontext_full.c + fchownat__secontext_full_OBJECTS = fchownat--secontext_full.$(OBJEXT) + fchownat__secontext_full_DEPENDENCIES = $(LDADD) $(am__DEPENDENCIES_2) ++fchownat__secontext_full_mismatch_SOURCES = \ ++ fchownat--secontext_full_mismatch.c ++fchownat__secontext_full_mismatch_OBJECTS = \ ++ fchownat--secontext_full_mismatch.$(OBJEXT) ++fchownat__secontext_full_mismatch_DEPENDENCIES = $(LDADD) \ ++ $(am__DEPENDENCIES_2) ++fchownat__secontext_mismatch_SOURCES = fchownat--secontext_mismatch.c ++fchownat__secontext_mismatch_OBJECTS = \ ++ fchownat--secontext_mismatch.$(OBJEXT) ++fchownat__secontext_mismatch_DEPENDENCIES = $(LDADD) \ ++ $(am__DEPENDENCIES_2) + fcntl_SOURCES = fcntl.c + fcntl_OBJECTS = fcntl.$(OBJEXT) + fcntl_LDADD = $(LDADD) +@@ -1226,6 +1380,18 @@ + file_handle--secontext_full.$(OBJEXT) + file_handle__secontext_full_DEPENDENCIES = $(LDADD) \ + $(am__DEPENDENCIES_2) ++file_handle__secontext_full_mismatch_SOURCES = \ ++ file_handle--secontext_full_mismatch.c ++file_handle__secontext_full_mismatch_OBJECTS = \ ++ file_handle--secontext_full_mismatch.$(OBJEXT) ++file_handle__secontext_full_mismatch_DEPENDENCIES = $(LDADD) \ ++ $(am__DEPENDENCIES_2) ++file_handle__secontext_mismatch_SOURCES = \ ++ file_handle--secontext_mismatch.c ++file_handle__secontext_mismatch_OBJECTS = \ ++ file_handle--secontext_mismatch.$(OBJEXT) ++file_handle__secontext_mismatch_DEPENDENCIES = $(LDADD) \ ++ $(am__DEPENDENCIES_2) + filter_unavailable_SOURCES = filter-unavailable.c + filter_unavailable_OBJECTS = filter-unavailable.$(OBJEXT) + filter_unavailable_DEPENDENCIES = $(LDADD) +@@ -2317,6 +2483,17 @@ + linkat__secontext_full_SOURCES = linkat--secontext_full.c + linkat__secontext_full_OBJECTS = linkat--secontext_full.$(OBJEXT) + linkat__secontext_full_DEPENDENCIES = $(LDADD) $(am__DEPENDENCIES_2) ++linkat__secontext_full_mismatch_SOURCES = \ ++ linkat--secontext_full_mismatch.c ++linkat__secontext_full_mismatch_OBJECTS = \ ++ linkat--secontext_full_mismatch.$(OBJEXT) ++linkat__secontext_full_mismatch_DEPENDENCIES = $(LDADD) \ ++ $(am__DEPENDENCIES_2) ++linkat__secontext_mismatch_SOURCES = linkat--secontext_mismatch.c ++linkat__secontext_mismatch_OBJECTS = \ ++ linkat--secontext_mismatch.$(OBJEXT) ++linkat__secontext_mismatch_DEPENDENCIES = $(LDADD) \ ++ $(am__DEPENDENCIES_2) + list_sigaction_signum_SOURCES = list_sigaction_signum.c + list_sigaction_signum_OBJECTS = list_sigaction_signum.$(OBJEXT) + list_sigaction_signum_LDADD = $(LDADD) +@@ -2975,6 +3152,15 @@ + open__secontext_full_SOURCES = open--secontext_full.c + open__secontext_full_OBJECTS = open--secontext_full.$(OBJEXT) + open__secontext_full_DEPENDENCIES = $(LDADD) $(am__DEPENDENCIES_2) ++open__secontext_full_mismatch_SOURCES = \ ++ open--secontext_full_mismatch.c ++open__secontext_full_mismatch_OBJECTS = \ ++ open--secontext_full_mismatch.$(OBJEXT) ++open__secontext_full_mismatch_DEPENDENCIES = $(LDADD) \ ++ $(am__DEPENDENCIES_2) ++open__secontext_mismatch_SOURCES = open--secontext_mismatch.c ++open__secontext_mismatch_OBJECTS = open--secontext_mismatch.$(OBJEXT) ++open__secontext_mismatch_DEPENDENCIES = $(LDADD) $(am__DEPENDENCIES_2) + open_tree_SOURCES = open_tree.c + open_tree_OBJECTS = open_tree.$(OBJEXT) + open_tree_LDADD = $(LDADD) +@@ -2993,6 +3179,17 @@ + openat__secontext_full_SOURCES = openat--secontext_full.c + openat__secontext_full_OBJECTS = openat--secontext_full.$(OBJEXT) + openat__secontext_full_DEPENDENCIES = $(LDADD) $(am__DEPENDENCIES_2) ++openat__secontext_full_mismatch_SOURCES = \ ++ openat--secontext_full_mismatch.c ++openat__secontext_full_mismatch_OBJECTS = \ ++ openat--secontext_full_mismatch.$(OBJEXT) ++openat__secontext_full_mismatch_DEPENDENCIES = $(LDADD) \ ++ $(am__DEPENDENCIES_2) ++openat__secontext_mismatch_SOURCES = openat--secontext_mismatch.c ++openat__secontext_mismatch_OBJECTS = \ ++ openat--secontext_mismatch.$(OBJEXT) ++openat__secontext_mismatch_DEPENDENCIES = $(LDADD) \ ++ $(am__DEPENDENCIES_2) + openat2_SOURCES = openat2.c + openat2_OBJECTS = openat2.$(OBJEXT) + openat2_LDADD = $(LDADD) +@@ -4449,6 +4646,8 @@ + ./$(DEPDIR)/_newselect.Po ./$(DEPDIR)/accept.Po \ + ./$(DEPDIR)/accept4.Po ./$(DEPDIR)/access--secontext.Po \ + ./$(DEPDIR)/access--secontext_full.Po ./$(DEPDIR)/access.Po \ ++ ./$(DEPDIR)/access--secontext_full_mismatch.Po \ ++ ./$(DEPDIR)/access--secontext_mismatch.Po \ + ./$(DEPDIR)/acct.Po ./$(DEPDIR)/add_key.Po \ + ./$(DEPDIR)/adjtimex.Po ./$(DEPDIR)/aio.Po \ + ./$(DEPDIR)/aio_pgetevents.Po ./$(DEPDIR)/alarm.Po \ +@@ -4468,6 +4667,8 @@ + ./$(DEPDIR)/chdir.Po ./$(DEPDIR)/check_sigblock.Po \ + ./$(DEPDIR)/check_sigign.Po ./$(DEPDIR)/chmod--secontext.Po \ + ./$(DEPDIR)/chmod--secontext_full.Po ./$(DEPDIR)/chmod.Po \ ++ ./$(DEPDIR)/chmod--secontext_full_mismatch.Po \ ++ ./$(DEPDIR)/chmod--secontext_mismatch.Po \ + ./$(DEPDIR)/chown.Po ./$(DEPDIR)/chown32.Po \ + ./$(DEPDIR)/chroot.Po ./$(DEPDIR)/clock_adjtime.Po \ + ./$(DEPDIR)/clock_adjtime64.Po ./$(DEPDIR)/clock_nanosleep.Po \ +@@ -4503,14 +4704,22 @@ + ./$(DEPDIR)/epoll_wait.Po ./$(DEPDIR)/erestartsys.Po \ + ./$(DEPDIR)/eventfd.Po ./$(DEPDIR)/execve--secontext.Po \ + ./$(DEPDIR)/execve--secontext_full.Po ./$(DEPDIR)/execve-v.Po \ ++ ./$(DEPDIR)/execve--secontext_full_mismatch.Po \ ++ ./$(DEPDIR)/execve--secontext_mismatch.Po \ + ./$(DEPDIR)/execve.Po ./$(DEPDIR)/execveat--secontext.Po \ + ./$(DEPDIR)/execveat--secontext_full.Po \ ++ ./$(DEPDIR)/execveat--secontext_full_mismatch.Po \ ++ ./$(DEPDIR)/execveat--secontext_mismatch.Po \ + ./$(DEPDIR)/execveat-v.Po ./$(DEPDIR)/execveat.Po \ + ./$(DEPDIR)/faccessat--secontext.Po \ + ./$(DEPDIR)/faccessat--secontext_full.Po \ ++ ./$(DEPDIR)/faccessat--secontext_full_mismatch.Po \ ++ ./$(DEPDIR)/faccessat--secontext_mismatch.Po \ + ./$(DEPDIR)/faccessat-P.Po \ + ./$(DEPDIR)/faccessat-y--secontext.Po \ + ./$(DEPDIR)/faccessat-y--secontext_full.Po \ ++ ./$(DEPDIR)/faccessat-y--secontext_full_mismatch.Po \ ++ ./$(DEPDIR)/faccessat-y--secontext_mismatch.Po \ + ./$(DEPDIR)/faccessat-y.Po ./$(DEPDIR)/faccessat-yy.Po \ + ./$(DEPDIR)/faccessat.Po ./$(DEPDIR)/faccessat2-P.Po \ + ./$(DEPDIR)/faccessat2-y.Po ./$(DEPDIR)/faccessat2-yy.Po \ +@@ -4519,26 +4728,38 @@ + ./$(DEPDIR)/fanotify_init.Po \ + ./$(DEPDIR)/fanotify_mark--secontext.Po \ + ./$(DEPDIR)/fanotify_mark--secontext_full.Po \ ++ ./$(DEPDIR)/fanotify_mark--secontext_full_mismatch.Po \ ++ ./$(DEPDIR)/fanotify_mark--secontext_mismatch.Po \ + ./$(DEPDIR)/fanotify_mark-Xabbrev.Po \ + ./$(DEPDIR)/fanotify_mark-Xraw.Po \ + ./$(DEPDIR)/fanotify_mark-Xverbose.Po \ + ./$(DEPDIR)/fanotify_mark.Po ./$(DEPDIR)/fchdir.Po \ + ./$(DEPDIR)/fchmod--secontext.Po \ + ./$(DEPDIR)/fchmod--secontext_full.Po \ ++ ./$(DEPDIR)/fchmod--secontext_full_mismatch.Po \ ++ ./$(DEPDIR)/fchmod--secontext_mismatch.Po \ + ./$(DEPDIR)/fchmod-y--secontext.Po \ + ./$(DEPDIR)/fchmod-y--secontext_full.Po \ ++ ./$(DEPDIR)/fchmod-y--secontext_full_mismatch.Po \ ++ ./$(DEPDIR)/fchmod-y--secontext_mismatch.Po \ + ./$(DEPDIR)/fchmod-y.Po ./$(DEPDIR)/fchmod.Po \ + ./$(DEPDIR)/fchmodat--secontext.Po \ + ./$(DEPDIR)/fchmodat--secontext_full.Po \ ++ ./$(DEPDIR)/fchmodat--secontext_full_mismatch.Po \ ++ ./$(DEPDIR)/fchmodat--secontext_mismatch.Po \ + ./$(DEPDIR)/fchmodat.Po ./$(DEPDIR)/fchown.Po \ + ./$(DEPDIR)/fchown32.Po ./$(DEPDIR)/fchownat--secontext.Po \ + ./$(DEPDIR)/fchownat--secontext_full.Po \ ++ ./$(DEPDIR)/fchownat--secontext_full_mismatch.Po \ ++ ./$(DEPDIR)/fchownat--secontext_mismatch.Po \ + ./$(DEPDIR)/fchownat.Po \ + ./$(DEPDIR)/fcntl--pidns-translation.Po ./$(DEPDIR)/fcntl.Po \ + ./$(DEPDIR)/fcntl64--pidns-translation.Po \ + ./$(DEPDIR)/fcntl64.Po ./$(DEPDIR)/fdatasync.Po \ + ./$(DEPDIR)/fflush.Po ./$(DEPDIR)/file_handle--secontext.Po \ + ./$(DEPDIR)/file_handle--secontext_full.Po \ ++ ./$(DEPDIR)/file_handle--secontext_full_mismatch.Po \ ++ ./$(DEPDIR)/file_handle--secontext_mismatch.Po \ + ./$(DEPDIR)/file_handle.Po ./$(DEPDIR)/filter-unavailable.Po \ + ./$(DEPDIR)/filter_seccomp-flag.Po \ + ./$(DEPDIR)/filter_seccomp-perf.Po ./$(DEPDIR)/finit_module.Po \ +@@ -4753,6 +4972,8 @@ + ./$(DEPDIR)/libtests_a-xmalloc_for_tests.Po \ + ./$(DEPDIR)/link.Po ./$(DEPDIR)/linkat--secontext.Po \ + ./$(DEPDIR)/linkat--secontext_full.Po ./$(DEPDIR)/linkat.Po \ ++ ./$(DEPDIR)/linkat--secontext_full_mismatch.Po \ ++ ./$(DEPDIR)/linkat--secontext_mismatch.Po \ + ./$(DEPDIR)/list_sigaction_signum.Po ./$(DEPDIR)/llseek.Po \ + ./$(DEPDIR)/localtime.Po ./$(DEPDIR)/lookup_dcookie.Po \ + ./$(DEPDIR)/looping_threads.Po ./$(DEPDIR)/lseek.Po \ +@@ -4867,9 +5088,13 @@ + ./$(DEPDIR)/oldselect-efault.Po ./$(DEPDIR)/oldselect.Po \ + ./$(DEPDIR)/oldstat.Po ./$(DEPDIR)/open--secontext.Po \ + ./$(DEPDIR)/open--secontext_full.Po ./$(DEPDIR)/open.Po \ ++ ./$(DEPDIR)/open--secontext_full_mismatch.Po \ ++ ./$(DEPDIR)/open--secontext_mismatch.Po \ + ./$(DEPDIR)/open_tree-P.Po ./$(DEPDIR)/open_tree.Po \ + ./$(DEPDIR)/openat--secontext.Po \ + ./$(DEPDIR)/openat--secontext_full.Po ./$(DEPDIR)/openat.Po \ ++ ./$(DEPDIR)/openat--secontext_full_mismatch.Po \ ++ ./$(DEPDIR)/openat--secontext_mismatch.Po \ + ./$(DEPDIR)/openat2-Xabbrev.Po ./$(DEPDIR)/openat2-Xraw.Po \ + ./$(DEPDIR)/openat2-Xverbose.Po \ + ./$(DEPDIR)/openat2-v-y-Xabbrev.Po \ +@@ -5118,7 +5343,8 @@ + am__v_CCLD_1 = + SOURCES = $(libtests_a_SOURCES) _newselect.c _newselect-P.c accept.c \ + accept4.c access.c access--secontext.c \ +- access--secontext_full.c acct.c add_key.c adjtimex.c aio.c \ ++ access--secontext_full.c access--secontext_full_mismatch.c \ ++ access--secontext_mismatch.c acct.c add_key.c adjtimex.c aio.c \ + aio_pgetevents.c alarm.c answer.c attach-f-p.c \ + attach-f-p-cmd.c attach-p-cmd-cmd.c attach-p-cmd-p.c \ + block_reset_raise_run.c block_reset_run.c bpf.c \ +@@ -4467,7 +4665,8 @@ + bpf-success.c bpf-success-long-y.c bpf-success-v.c bpf-v.c \ + brk.c btrfs.c caps.c caps-abbrev.c chdir.c check_sigblock.c \ + check_sigign.c chmod.c chmod--secontext.c \ +- chmod--secontext_full.c chown.c chown32.c chroot.c \ ++ chmod--secontext_full.c chmod--secontext_full_mismatch.c \ ++ chmod--secontext_mismatch.c chown.c chown32.c chroot.c \ + clock_adjtime.c clock_adjtime64.c clock_nanosleep.c \ + clock_xettime.c clock_xettime64.c clone-flags.c clone3.c \ + clone3-Xabbrev.c clone3-Xraw.c clone3-Xverbose.c \ +@@ -4483,24 +4682,40 @@ + dup3-y.c dup3-yy.c epoll_create.c epoll_create1.c epoll_ctl.c \ + epoll_pwait.c epoll_pwait2.c epoll_pwait2-P.c epoll_pwait2-y.c \ + epoll_wait.c erestartsys.c eventfd.c execve.c \ +- execve--secontext.c execve--secontext_full.c execve-v.c \ +- execveat.c execveat--secontext.c execveat--secontext_full.c \ +- execveat-v.c faccessat.c faccessat--secontext.c \ +- faccessat--secontext_full.c faccessat-P.c faccessat-y.c \ ++ execve--secontext.c execve--secontext_full.c \ ++ execve--secontext_full_mismatch.c execve--secontext_mismatch.c \ ++ execve-v.c execveat.c execveat--secontext.c \ ++ execveat--secontext_full.c execveat--secontext_full_mismatch.c \ ++ execveat--secontext_mismatch.c execveat-v.c faccessat.c \ ++ faccessat--secontext.c faccessat--secontext_full.c \ ++ faccessat--secontext_full_mismatch.c \ ++ faccessat--secontext_mismatch.c faccessat-P.c faccessat-y.c \ + faccessat-y--secontext.c faccessat-y--secontext_full.c \ +- faccessat-yy.c faccessat2.c faccessat2-P.c faccessat2-y.c \ +- faccessat2-yy.c fadvise64.c fadvise64_64.c fallocate.c \ +- fanotify_init.c fanotify_mark.c fanotify_mark--secontext.c \ +- fanotify_mark--secontext_full.c fanotify_mark-Xabbrev.c \ ++ faccessat-y--secontext_full_mismatch.c \ ++ faccessat-y--secontext_mismatch.c faccessat-yy.c faccessat2.c \ ++ faccessat2-P.c faccessat2-y.c faccessat2-yy.c fadvise64.c \ ++ fadvise64_64.c fallocate.c fanotify_init.c fanotify_mark.c \ ++ fanotify_mark--secontext.c fanotify_mark--secontext_full.c \ ++ fanotify_mark--secontext_full_mismatch.c \ ++ fanotify_mark--secontext_mismatch.c fanotify_mark-Xabbrev.c \ + fanotify_mark-Xraw.c fanotify_mark-Xverbose.c fchdir.c \ + fchmod.c fchmod--secontext.c fchmod--secontext_full.c \ ++ fchmod--secontext_full_mismatch.c fchmod--secontext_mismatch.c \ + fchmod-y.c fchmod-y--secontext.c fchmod-y--secontext_full.c \ +- fchmodat.c fchmodat--secontext.c fchmodat--secontext_full.c \ +- fchown.c fchown32.c fchownat.c fchownat--secontext.c \ +- fchownat--secontext_full.c fcntl.c fcntl--pidns-translation.c \ +- fcntl64.c fcntl64--pidns-translation.c fdatasync.c fflush.c \ ++ fchmod-y--secontext_full_mismatch.c \ ++ fchmod-y--secontext_mismatch.c fchmodat.c \ ++ fchmodat--secontext.c fchmodat--secontext_full.c \ ++ fchmodat--secontext_full_mismatch.c \ ++ fchmodat--secontext_mismatch.c fchown.c fchown32.c fchownat.c \ ++ fchownat--secontext.c fchownat--secontext_full.c \ ++ fchownat--secontext_full_mismatch.c \ ++ fchownat--secontext_mismatch.c fcntl.c \ ++ fcntl--pidns-translation.c fcntl64.c \ ++ fcntl64--pidns-translation.c fdatasync.c fflush.c \ + file_handle.c file_handle--secontext.c \ +- file_handle--secontext_full.c filter-unavailable.c \ ++ file_handle--secontext_full.c \ ++ file_handle--secontext_full_mismatch.c \ ++ file_handle--secontext_mismatch.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 \ + fsconfig-P.c fsmount.c fsopen.c fspick.c fspick-P.c fstat.c \ +@@ -4587,6 +4802,7 @@ + landlock_create_ruleset-y.c landlock_restrict_self.c \ + landlock_restrict_self-y.c lchown.c lchown32.c link.c linkat.c \ + linkat--secontext.c linkat--secontext_full.c \ ++ linkat--secontext_full_mismatch.c linkat--secontext_mismatch.c \ + list_sigaction_signum.c llseek.c localtime.c lookup_dcookie.c \ + looping_threads.c lseek.c lstat.c lstat64.c madvise.c \ + maybe_switch_current_tcp.c \ +@@ -4640,8 +4856,10 @@ + old_mmap-v-none.c oldfstat.c oldlstat.c oldselect.c \ + oldselect-P.c oldselect-efault.c oldselect-efault-P.c \ + oldstat.c open.c open--secontext.c open--secontext_full.c \ ++ open--secontext_full_mismatch.c open--secontext_mismatch.c \ + open_tree.c open_tree-P.c openat.c openat--secontext.c \ +- openat--secontext_full.c openat2.c openat2-Xabbrev.c \ ++ openat--secontext_full.c openat--secontext_full_mismatch.c \ ++ openat--secontext_mismatch.c openat2.c openat2-Xabbrev.c \ + openat2-Xraw.c openat2-Xverbose.c openat2-v.c openat2-v-y.c \ + openat2-v-y-Xabbrev.c openat2-v-y-Xraw.c \ + openat2-v-y-Xverbose.c openat2-y.c orphaned_process_group.c \ +@@ -4752,7 +4970,8 @@ + xetpriority--pidns-translation.c xettimeofday.c zeroargc.c + DIST_SOURCES = $(libtests_a_SOURCES) _newselect.c _newselect-P.c \ + accept.c accept4.c access.c access--secontext.c \ +- access--secontext_full.c acct.c add_key.c adjtimex.c aio.c \ ++ access--secontext_full.c access--secontext_full_mismatch.c \ ++ access--secontext_mismatch.c acct.c add_key.c adjtimex.c aio.c \ + aio_pgetevents.c alarm.c answer.c attach-f-p.c \ + attach-f-p-cmd.c attach-p-cmd-cmd.c attach-p-cmd-p.c \ + block_reset_raise_run.c block_reset_run.c bpf.c \ +@@ -4761,7 +4980,8 @@ + bpf-success.c bpf-success-long-y.c bpf-success-v.c bpf-v.c \ + brk.c btrfs.c caps.c caps-abbrev.c chdir.c check_sigblock.c \ + check_sigign.c chmod.c chmod--secontext.c \ +- chmod--secontext_full.c chown.c chown32.c chroot.c \ ++ chmod--secontext_full.c chmod--secontext_full_mismatch.c \ ++ chmod--secontext_mismatch.c chown.c chown32.c chroot.c \ + clock_adjtime.c clock_adjtime64.c clock_nanosleep.c \ + clock_xettime.c clock_xettime64.c clone-flags.c clone3.c \ + clone3-Xabbrev.c clone3-Xraw.c clone3-Xverbose.c \ +@@ -4777,24 +4997,40 @@ + dup3-y.c dup3-yy.c epoll_create.c epoll_create1.c epoll_ctl.c \ + epoll_pwait.c epoll_pwait2.c epoll_pwait2-P.c epoll_pwait2-y.c \ + epoll_wait.c erestartsys.c eventfd.c execve.c \ +- execve--secontext.c execve--secontext_full.c execve-v.c \ +- execveat.c execveat--secontext.c execveat--secontext_full.c \ +- execveat-v.c faccessat.c faccessat--secontext.c \ +- faccessat--secontext_full.c faccessat-P.c faccessat-y.c \ ++ execve--secontext.c execve--secontext_full.c \ ++ execve--secontext_full_mismatch.c execve--secontext_mismatch.c \ ++ execve-v.c execveat.c execveat--secontext.c \ ++ execveat--secontext_full.c execveat--secontext_full_mismatch.c \ ++ execveat--secontext_mismatch.c execveat-v.c faccessat.c \ ++ faccessat--secontext.c faccessat--secontext_full.c \ ++ faccessat--secontext_full_mismatch.c \ ++ faccessat--secontext_mismatch.c faccessat-P.c faccessat-y.c \ + faccessat-y--secontext.c faccessat-y--secontext_full.c \ +- faccessat-yy.c faccessat2.c faccessat2-P.c faccessat2-y.c \ +- faccessat2-yy.c fadvise64.c fadvise64_64.c fallocate.c \ +- fanotify_init.c fanotify_mark.c fanotify_mark--secontext.c \ +- fanotify_mark--secontext_full.c fanotify_mark-Xabbrev.c \ ++ faccessat-y--secontext_full_mismatch.c \ ++ faccessat-y--secontext_mismatch.c faccessat-yy.c faccessat2.c \ ++ faccessat2-P.c faccessat2-y.c faccessat2-yy.c fadvise64.c \ ++ fadvise64_64.c fallocate.c fanotify_init.c fanotify_mark.c \ ++ fanotify_mark--secontext.c fanotify_mark--secontext_full.c \ ++ fanotify_mark--secontext_full_mismatch.c \ ++ fanotify_mark--secontext_mismatch.c fanotify_mark-Xabbrev.c \ + fanotify_mark-Xraw.c fanotify_mark-Xverbose.c fchdir.c \ + fchmod.c fchmod--secontext.c fchmod--secontext_full.c \ ++ fchmod--secontext_full_mismatch.c fchmod--secontext_mismatch.c \ + fchmod-y.c fchmod-y--secontext.c fchmod-y--secontext_full.c \ +- fchmodat.c fchmodat--secontext.c fchmodat--secontext_full.c \ +- fchown.c fchown32.c fchownat.c fchownat--secontext.c \ +- fchownat--secontext_full.c fcntl.c fcntl--pidns-translation.c \ +- fcntl64.c fcntl64--pidns-translation.c fdatasync.c fflush.c \ ++ fchmod-y--secontext_full_mismatch.c \ ++ fchmod-y--secontext_mismatch.c fchmodat.c \ ++ fchmodat--secontext.c fchmodat--secontext_full.c \ ++ fchmodat--secontext_full_mismatch.c \ ++ fchmodat--secontext_mismatch.c fchown.c fchown32.c fchownat.c \ ++ fchownat--secontext.c fchownat--secontext_full.c \ ++ fchownat--secontext_full_mismatch.c \ ++ fchownat--secontext_mismatch.c fcntl.c \ ++ fcntl--pidns-translation.c fcntl64.c \ ++ fcntl64--pidns-translation.c fdatasync.c fflush.c \ + file_handle.c file_handle--secontext.c \ +- file_handle--secontext_full.c filter-unavailable.c \ ++ file_handle--secontext_full.c \ ++ file_handle--secontext_full_mismatch.c \ ++ file_handle--secontext_mismatch.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 \ + fsconfig-P.c fsmount.c fsopen.c fspick.c fspick-P.c fstat.c \ +@@ -4881,6 +5117,7 @@ + landlock_create_ruleset-y.c landlock_restrict_self.c \ + landlock_restrict_self-y.c lchown.c lchown32.c link.c linkat.c \ + linkat--secontext.c linkat--secontext_full.c \ ++ linkat--secontext_full_mismatch.c linkat--secontext_mismatch.c \ + list_sigaction_signum.c llseek.c localtime.c lookup_dcookie.c \ + looping_threads.c lseek.c lstat.c lstat64.c madvise.c \ + maybe_switch_current_tcp.c \ +@@ -4934,8 +5171,10 @@ + old_mmap-v-none.c oldfstat.c oldlstat.c oldselect.c \ + oldselect-P.c oldselect-efault.c oldselect-efault-P.c \ + oldstat.c open.c open--secontext.c open--secontext_full.c \ ++ open--secontext_full_mismatch.c open--secontext_mismatch.c \ + open_tree.c open_tree-P.c openat.c openat--secontext.c \ +- openat--secontext_full.c openat2.c openat2-Xabbrev.c \ ++ openat--secontext_full.c openat--secontext_full_mismatch.c \ ++ openat--secontext_mismatch.c openat2.c openat2-Xabbrev.c \ + openat2-Xraw.c openat2-Xverbose.c openat2-v.c openat2-v-y.c \ + openat2-v-y-Xabbrev.c openat2-v-y-Xraw.c \ + openat2-v-y-Xverbose.c openat2-y.c orphaned_process_group.c \ +@@ -6211,66 +6450,126 @@ + secontext_EXECUTABLES = \ + access--secontext \ + access--secontext_full \ ++ access--secontext_full_mismatch \ ++ access--secontext_mismatch \ + chmod--secontext \ + chmod--secontext_full \ ++ chmod--secontext_full_mismatch \ ++ chmod--secontext_mismatch \ + execve--secontext \ + execve--secontext_full \ ++ execve--secontext_full_mismatch \ ++ execve--secontext_mismatch \ + execveat--secontext \ + execveat--secontext_full \ ++ execveat--secontext_full_mismatch \ ++ execveat--secontext_mismatch \ + faccessat--secontext \ + faccessat--secontext_full \ ++ faccessat--secontext_full_mismatch \ ++ faccessat--secontext_mismatch \ + faccessat-y--secontext \ + faccessat-y--secontext_full \ ++ faccessat-y--secontext_full_mismatch \ ++ faccessat-y--secontext_mismatch \ + fanotify_mark--secontext \ + fanotify_mark--secontext_full \ ++ fanotify_mark--secontext_full_mismatch \ ++ fanotify_mark--secontext_mismatch \ + fchmod--secontext \ + fchmod--secontext_full \ ++ fchmod--secontext_full_mismatch \ ++ fchmod--secontext_mismatch \ + fchmod-y--secontext \ + fchmod-y--secontext_full \ ++ fchmod-y--secontext_full_mismatch \ ++ fchmod-y--secontext_mismatch \ + fchmodat--secontext \ + fchmodat--secontext_full \ ++ fchmodat--secontext_full_mismatch \ ++ fchmodat--secontext_mismatch \ + fchownat--secontext \ + fchownat--secontext_full \ ++ fchownat--secontext_full_mismatch \ ++ fchownat--secontext_mismatch \ + file_handle--secontext \ + file_handle--secontext_full \ ++ file_handle--secontext_full_mismatch \ ++ file_handle--secontext_mismatch \ + linkat--secontext \ + linkat--secontext_full \ ++ linkat--secontext_full_mismatch \ ++ linkat--secontext_mismatch \ + open--secontext \ + open--secontext_full \ ++ open--secontext_full_mismatch \ ++ open--secontext_mismatch \ + openat--secontext \ + openat--secontext_full \ ++ openat--secontext_full_mismatch \ ++ openat--secontext_mismatch \ + # + + access__secontext_LDADD = $(LDADD) $(libselinux_LDADD) + access__secontext_full_LDADD = $(LDADD) $(libselinux_LDADD) ++access__secontext_full_mismatch_LDADD = $(LDADD) $(libselinux_LDADD) ++access__secontext_mismatch_LDADD = $(LDADD) $(libselinux_LDADD) + chmod__secontext_LDADD = $(LDADD) $(libselinux_LDADD) + chmod__secontext_full_LDADD = $(LDADD) $(libselinux_LDADD) ++chmod__secontext_full_mismatch_LDADD = $(LDADD) $(libselinux_LDADD) ++chmod__secontext_mismatch_LDADD = $(LDADD) $(libselinux_LDADD) + execve__secontext_LDADD = $(LDADD) $(libselinux_LDADD) + execve__secontext_full_LDADD = $(LDADD) $(libselinux_LDADD) ++execve__secontext_full_mismatch_LDADD = $(LDADD) $(libselinux_LDADD) ++execve__secontext_mismatch_LDADD = $(LDADD) $(libselinux_LDADD) + execveat__secontext_LDADD = $(LDADD) $(libselinux_LDADD) + execveat__secontext_full_LDADD = $(LDADD) $(libselinux_LDADD) ++execveat__secontext_full_mismatch_LDADD = $(LDADD) $(libselinux_LDADD) ++execveat__secontext_mismatch_LDADD = $(LDADD) $(libselinux_LDADD) + faccessat__secontext_LDADD = $(LDADD) $(libselinux_LDADD) + faccessat__secontext_full_LDADD = $(LDADD) $(libselinux_LDADD) ++faccessat__secontext_full_mismatch_LDADD = $(LDADD) $(libselinux_LDADD) ++faccessat__secontext_mismatch_LDADD = $(LDADD) $(libselinux_LDADD) + faccessat_y__secontext_LDADD = $(LDADD) $(libselinux_LDADD) + faccessat_y__secontext_full_LDADD = $(LDADD) $(libselinux_LDADD) ++faccessat_y__secontext_full_mismatch_LDADD = $(LDADD) $(libselinux_LDADD) ++faccessat_y__secontext_mismatch_LDADD = $(LDADD) $(libselinux_LDADD) + fanotify_mark__secontext_LDADD = $(LDADD) $(libselinux_LDADD) + fanotify_mark__secontext_full_LDADD = $(LDADD) $(libselinux_LDADD) ++fanotify_mark__secontext_full_mismatch_LDADD = $(LDADD) $(libselinux_LDADD) ++fanotify_mark__secontext_mismatch_LDADD = $(LDADD) $(libselinux_LDADD) + fchmod__secontext_LDADD = $(LDADD) $(libselinux_LDADD) + fchmod__secontext_full_LDADD = $(LDADD) $(libselinux_LDADD) ++fchmod__secontext_full_mismatch_LDADD = $(LDADD) $(libselinux_LDADD) ++fchmod__secontext_mismatch_LDADD = $(LDADD) $(libselinux_LDADD) + fchmod_y__secontext_LDADD = $(LDADD) $(libselinux_LDADD) + fchmod_y__secontext_full_LDADD = $(LDADD) $(libselinux_LDADD) ++fchmod_y__secontext_full_mismatch_LDADD = $(LDADD) $(libselinux_LDADD) ++fchmod_y__secontext_mismatch_LDADD = $(LDADD) $(libselinux_LDADD) + fchmodat__secontext_LDADD = $(LDADD) $(libselinux_LDADD) + fchmodat__secontext_full_LDADD = $(LDADD) $(libselinux_LDADD) ++fchmodat__secontext_full_mismatch_LDADD = $(LDADD) $(libselinux_LDADD) ++fchmodat__secontext_mismatch_LDADD = $(LDADD) $(libselinux_LDADD) + fchownat__secontext_LDADD = $(LDADD) $(libselinux_LDADD) + fchownat__secontext_full_LDADD = $(LDADD) $(libselinux_LDADD) ++fchownat__secontext_full_mismatch_LDADD = $(LDADD) $(libselinux_LDADD) ++fchownat__secontext_mismatch_LDADD = $(LDADD) $(libselinux_LDADD) + file_handle__secontext_LDADD = $(LDADD) $(libselinux_LDADD) + file_handle__secontext_full_LDADD = $(LDADD) $(libselinux_LDADD) ++file_handle__secontext_full_mismatch_LDADD = $(LDADD) $(libselinux_LDADD) ++file_handle__secontext_mismatch_LDADD = $(LDADD) $(libselinux_LDADD) + linkat__secontext_LDADD = $(LDADD) $(libselinux_LDADD) + linkat__secontext_full_LDADD = $(LDADD) $(libselinux_LDADD) ++linkat__secontext_full_mismatch_LDADD = $(LDADD) $(libselinux_LDADD) ++linkat__secontext_mismatch_LDADD = $(LDADD) $(libselinux_LDADD) + open__secontext_LDADD = $(LDADD) $(libselinux_LDADD) + open__secontext_full_LDADD = $(LDADD) $(libselinux_LDADD) ++open__secontext_full_mismatch_LDADD = $(LDADD) $(libselinux_LDADD) ++open__secontext_mismatch_LDADD = $(LDADD) $(libselinux_LDADD) + openat__secontext_LDADD = $(LDADD) $(libselinux_LDADD) + openat__secontext_full_LDADD = $(LDADD) $(libselinux_LDADD) ++openat__secontext_full_mismatch_LDADD = $(LDADD) $(libselinux_LDADD) ++openat__secontext_mismatch_LDADD = $(LDADD) $(libselinux_LDADD) + attach_f_p_LDADD = -lpthread $(LDADD) + count_f_LDADD = -lpthread $(LDADD) + delay_LDADD = $(clock_LIBS) $(LDADD) +@@ -6324,15 +6623,20 @@ + # Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in; do not edit. + GEN_TESTS = _newselect.gen.test _newselect-P.gen.test accept.gen.test \ + accept4.gen.test access.gen.test access--secontext.gen.test \ +- access--secontext_full.gen.test acct.gen.test add_key.gen.test \ +- adjtimex.gen.test aio.gen.test aio_pgetevents.gen.test \ +- alarm.gen.test bpf.gen.test bpf-obj_get_info_by_fd.gen.test \ ++ access--secontext_full.gen.test \ ++ access--secontext_full_mismatch.gen.test \ ++ access--secontext_mismatch.gen.test acct.gen.test \ ++ add_key.gen.test adjtimex.gen.test aio.gen.test \ ++ aio_pgetevents.gen.test alarm.gen.test bpf.gen.test \ ++ bpf-obj_get_info_by_fd.gen.test \ + bpf-obj_get_info_by_fd-prog.gen.test \ + bpf-obj_get_info_by_fd-prog-v.gen.test \ + bpf-obj_get_info_by_fd-v.gen.test bpf-v.gen.test \ + btrfs.gen.test chdir.gen.test chmod.gen.test \ + chmod--secontext.gen.test chmod--secontext_full.gen.test \ +- chown.gen.test chown32.gen.test chroot.gen.test clock.gen.test \ ++ chmod--secontext_full_mismatch.gen.test \ ++ chmod--secontext_mismatch.gen.test chown.gen.test \ ++ chown32.gen.test chroot.gen.test clock.gen.test \ + clock_adjtime.gen.test clock_adjtime64.gen.test \ + clock_nanosleep.gen.test clock_xettime.gen.test \ + clock_xettime64.gen.test clone3.gen.test \ +@@ -6355,36 +6659,53 @@ + epoll_pwait2-P.gen.test epoll_pwait2-y.gen.test \ + epoll_wait.gen.test erestartsys.gen.test \ + execve--secontext.gen.test execve--secontext_full.gen.test \ +- execveat.gen.test execveat--secontext.gen.test \ +- execveat--secontext_full.gen.test execveat-v.gen.test \ ++ execve--secontext_full_mismatch.gen.test \ ++ execve--secontext_mismatch.gen.test execveat.gen.test \ ++ execveat--secontext.gen.test execveat--secontext_full.gen.test \ ++ execveat--secontext_full_mismatch.gen.test \ ++ execveat--secontext_mismatch.gen.test execveat-v.gen.test \ + faccessat--secontext.gen.test \ +- faccessat--secontext_full.gen.test faccessat-P.gen.test \ ++ faccessat--secontext_full.gen.test \ ++ faccessat--secontext_full_mismatch.gen.test \ ++ faccessat--secontext_mismatch.gen.test faccessat-P.gen.test \ + faccessat-y.gen.test faccessat-y--secontext.gen.test \ +- faccessat-y--secontext_full.gen.test faccessat-yy.gen.test \ ++ faccessat-y--secontext_full.gen.test \ ++ faccessat-y--secontext_full_mismatch.gen.test \ ++ faccessat-y--secontext_mismatch.gen.test faccessat-yy.gen.test \ + faccessat2-P.gen.test faccessat2-y.gen.test \ + faccessat2-yy.gen.test fadvise64_64.gen.test \ + fallocate.gen.test fanotify_init.gen.test \ + fanotify_mark.gen.test fanotify_mark--secontext.gen.test \ + fanotify_mark--secontext_full.gen.test \ ++ fanotify_mark--secontext_full_mismatch.gen.test \ ++ fanotify_mark--secontext_mismatch.gen.test \ + fanotify_mark-Xabbrev.gen.test fanotify_mark-Xraw.gen.test \ + fanotify_mark-Xverbose.gen.test fchdir.gen.test \ + fchmod.gen.test fchmod--secontext.gen.test \ +- fchmod--secontext_full.gen.test fchmod-y.gen.test \ ++ fchmod--secontext_full.gen.test \ ++ fchmod--secontext_full_mismatch.gen.test \ ++ fchmod--secontext_mismatch.gen.test fchmod-y.gen.test \ + fchmod-y--secontext.gen.test fchmod-y--secontext_full.gen.test \ +- fchmodat.gen.test fchmodat--secontext.gen.test \ +- fchmodat--secontext_full.gen.test fchown.gen.test \ ++ fchmod-y--secontext_full_mismatch.gen.test \ ++ fchmod-y--secontext_mismatch.gen.test fchmodat.gen.test \ ++ fchmodat--secontext.gen.test fchmodat--secontext_full.gen.test \ ++ fchmodat--secontext_full_mismatch.gen.test \ ++ fchmodat--secontext_mismatch.gen.test fchown.gen.test \ + fchown32.gen.test fchownat.gen.test \ + fchownat--secontext.gen.test fchownat--secontext_full.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_handle--secontext.gen.test \ +- file_handle--secontext_full.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 fsopen.gen.test \ +- fspick.gen.test fspick-P.gen.test fstat.gen.test \ +- fstat-Xabbrev.gen.test fstat-Xraw.gen.test \ ++ fchownat--secontext_full_mismatch.gen.test \ ++ fchownat--secontext_mismatch.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_handle--secontext.gen.test \ ++ file_handle--secontext_full.gen.test \ ++ file_handle--secontext_full_mismatch.gen.test \ ++ file_handle--secontext_mismatch.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 \ ++ fsopen.gen.test fspick.gen.test fspick-P.gen.test \ ++ fstat.gen.test fstat-Xabbrev.gen.test fstat-Xraw.gen.test \ + fstat-Xverbose.gen.test fstat64.gen.test \ + fstat64-Xabbrev.gen.test fstat64-Xraw.gen.test \ + fstat64-Xverbose.gen.test fstatat64.gen.test fstatfs.gen.test \ +@@ -6511,8 +6832,10 @@ + landlock_restrict_self-y.gen.test lchown.gen.test \ + lchown32.gen.test link.gen.test linkat.gen.test \ + linkat--secontext.gen.test linkat--secontext_full.gen.test \ +- lookup_dcookie.gen.test lstat.gen.test lstat64.gen.test \ +- madvise.gen.test maybe_switch_current_tcp.gen.test \ ++ linkat--secontext_full_mismatch.gen.test \ ++ linkat--secontext_mismatch.gen.test lookup_dcookie.gen.test \ ++ lstat.gen.test lstat64.gen.test madvise.gen.test \ ++ maybe_switch_current_tcp.gen.test \ + maybe_switch_current_tcp--quiet-thread-execve.gen.test \ + mbind.gen.test mbind-Xabbrev.gen.test mbind-Xraw.gen.test \ + mbind-Xverbose.gen.test membarrier.gen.test \ +@@ -6581,16 +6904,19 @@ + oldselect.gen.test oldselect-P.gen.test \ + oldselect-efault.gen.test oldselect-efault-P.gen.test \ + oldstat.gen.test open.gen.test open--secontext.gen.test \ +- open--secontext_full.gen.test open_tree.gen.test \ ++ open--secontext_full.gen.test \ ++ open--secontext_full_mismatch.gen.test \ ++ open--secontext_mismatch.gen.test open_tree.gen.test \ + open_tree-P.gen.test openat.gen.test \ + openat--secontext.gen.test openat--secontext_full.gen.test \ +- openat2.gen.test openat2-Xabbrev.gen.test \ +- openat2-Xraw.gen.test openat2-Xverbose.gen.test \ +- openat2-v.gen.test openat2-v-y.gen.test \ +- openat2-v-y-Xabbrev.gen.test openat2-v-y-Xraw.gen.test \ +- openat2-v-y-Xverbose.gen.test openat2-y.gen.test \ +- orphaned_process_group.gen.test osf_utimes.gen.test \ +- pause.gen.test perf_event_open.gen.test \ ++ openat--secontext_full_mismatch.gen.test \ ++ openat--secontext_mismatch.gen.test openat2.gen.test \ ++ openat2-Xabbrev.gen.test openat2-Xraw.gen.test \ ++ openat2-Xverbose.gen.test openat2-v.gen.test \ ++ openat2-v-y.gen.test openat2-v-y-Xabbrev.gen.test \ ++ openat2-v-y-Xraw.gen.test openat2-v-y-Xverbose.gen.test \ ++ openat2-y.gen.test orphaned_process_group.gen.test \ ++ osf_utimes.gen.test pause.gen.test perf_event_open.gen.test \ + perf_event_open_nonverbose.gen.test \ + perf_event_open_unabbrev.gen.test personality-Xabbrev.gen.test \ + personality-Xraw.gen.test personality-Xverbose.gen.test \ +@@ -7154,6 +7480,14 @@ + @rm -f access--secontext_full$(EXEEXT) + $(AM_V_CCLD)$(LINK) $(access__secontext_full_OBJECTS) $(access__secontext_full_LDADD) $(LIBS) + ++access--secontext_full_mismatch$(EXEEXT): $(access__secontext_full_mismatch_OBJECTS) $(access__secontext_full_mismatch_DEPENDENCIES) $(EXTRA_access__secontext_full_mismatch_DEPENDENCIES) ++ @rm -f access--secontext_full_mismatch$(EXEEXT) ++ $(AM_V_CCLD)$(LINK) $(access__secontext_full_mismatch_OBJECTS) $(access__secontext_full_mismatch_LDADD) $(LIBS) ++ ++access--secontext_mismatch$(EXEEXT): $(access__secontext_mismatch_OBJECTS) $(access__secontext_mismatch_DEPENDENCIES) $(EXTRA_access__secontext_mismatch_DEPENDENCIES) ++ @rm -f access--secontext_mismatch$(EXEEXT) ++ $(AM_V_CCLD)$(LINK) $(access__secontext_mismatch_OBJECTS) $(access__secontext_mismatch_LDADD) $(LIBS) ++ + acct$(EXEEXT): $(acct_OBJECTS) $(acct_DEPENDENCIES) $(EXTRA_acct_DEPENDENCIES) + @rm -f acct$(EXEEXT) + $(AM_V_CCLD)$(LINK) $(acct_OBJECTS) $(acct_LDADD) $(LIBS) +@@ -7282,6 +7616,14 @@ + @rm -f chmod--secontext_full$(EXEEXT) + $(AM_V_CCLD)$(LINK) $(chmod__secontext_full_OBJECTS) $(chmod__secontext_full_LDADD) $(LIBS) + ++chmod--secontext_full_mismatch$(EXEEXT): $(chmod__secontext_full_mismatch_OBJECTS) $(chmod__secontext_full_mismatch_DEPENDENCIES) $(EXTRA_chmod__secontext_full_mismatch_DEPENDENCIES) ++ @rm -f chmod--secontext_full_mismatch$(EXEEXT) ++ $(AM_V_CCLD)$(LINK) $(chmod__secontext_full_mismatch_OBJECTS) $(chmod__secontext_full_mismatch_LDADD) $(LIBS) ++ ++chmod--secontext_mismatch$(EXEEXT): $(chmod__secontext_mismatch_OBJECTS) $(chmod__secontext_mismatch_DEPENDENCIES) $(EXTRA_chmod__secontext_mismatch_DEPENDENCIES) ++ @rm -f chmod--secontext_mismatch$(EXEEXT) ++ $(AM_V_CCLD)$(LINK) $(chmod__secontext_mismatch_OBJECTS) $(chmod__secontext_mismatch_LDADD) $(LIBS) ++ + chown$(EXEEXT): $(chown_OBJECTS) $(chown_DEPENDENCIES) $(EXTRA_chown_DEPENDENCIES) + @rm -f chown$(EXEEXT) + $(AM_V_CCLD)$(LINK) $(chown_OBJECTS) $(chown_LDADD) $(LIBS) +@@ -7526,6 +7868,14 @@ + @rm -f execve--secontext_full$(EXEEXT) + $(AM_V_CCLD)$(LINK) $(execve__secontext_full_OBJECTS) $(execve__secontext_full_LDADD) $(LIBS) + ++execve--secontext_full_mismatch$(EXEEXT): $(execve__secontext_full_mismatch_OBJECTS) $(execve__secontext_full_mismatch_DEPENDENCIES) $(EXTRA_execve__secontext_full_mismatch_DEPENDENCIES) ++ @rm -f execve--secontext_full_mismatch$(EXEEXT) ++ $(AM_V_CCLD)$(LINK) $(execve__secontext_full_mismatch_OBJECTS) $(execve__secontext_full_mismatch_LDADD) $(LIBS) ++ ++execve--secontext_mismatch$(EXEEXT): $(execve__secontext_mismatch_OBJECTS) $(execve__secontext_mismatch_DEPENDENCIES) $(EXTRA_execve__secontext_mismatch_DEPENDENCIES) ++ @rm -f execve--secontext_mismatch$(EXEEXT) ++ $(AM_V_CCLD)$(LINK) $(execve__secontext_mismatch_OBJECTS) $(execve__secontext_mismatch_LDADD) $(LIBS) ++ + execve-v$(EXEEXT): $(execve_v_OBJECTS) $(execve_v_DEPENDENCIES) $(EXTRA_execve_v_DEPENDENCIES) + @rm -f execve-v$(EXEEXT) + $(AM_V_CCLD)$(LINK) $(execve_v_OBJECTS) $(execve_v_LDADD) $(LIBS) +@@ -7542,6 +7892,14 @@ + @rm -f execveat--secontext_full$(EXEEXT) + $(AM_V_CCLD)$(LINK) $(execveat__secontext_full_OBJECTS) $(execveat__secontext_full_LDADD) $(LIBS) + ++execveat--secontext_full_mismatch$(EXEEXT): $(execveat__secontext_full_mismatch_OBJECTS) $(execveat__secontext_full_mismatch_DEPENDENCIES) $(EXTRA_execveat__secontext_full_mismatch_DEPENDENCIES) ++ @rm -f execveat--secontext_full_mismatch$(EXEEXT) ++ $(AM_V_CCLD)$(LINK) $(execveat__secontext_full_mismatch_OBJECTS) $(execveat__secontext_full_mismatch_LDADD) $(LIBS) ++ ++execveat--secontext_mismatch$(EXEEXT): $(execveat__secontext_mismatch_OBJECTS) $(execveat__secontext_mismatch_DEPENDENCIES) $(EXTRA_execveat__secontext_mismatch_DEPENDENCIES) ++ @rm -f execveat--secontext_mismatch$(EXEEXT) ++ $(AM_V_CCLD)$(LINK) $(execveat__secontext_mismatch_OBJECTS) $(execveat__secontext_mismatch_LDADD) $(LIBS) ++ + execveat-v$(EXEEXT): $(execveat_v_OBJECTS) $(execveat_v_DEPENDENCIES) $(EXTRA_execveat_v_DEPENDENCIES) + @rm -f execveat-v$(EXEEXT) + $(AM_V_CCLD)$(LINK) $(execveat_v_OBJECTS) $(execveat_v_LDADD) $(LIBS) +@@ -7558,6 +7916,14 @@ + @rm -f faccessat--secontext_full$(EXEEXT) + $(AM_V_CCLD)$(LINK) $(faccessat__secontext_full_OBJECTS) $(faccessat__secontext_full_LDADD) $(LIBS) + ++faccessat--secontext_full_mismatch$(EXEEXT): $(faccessat__secontext_full_mismatch_OBJECTS) $(faccessat__secontext_full_mismatch_DEPENDENCIES) $(EXTRA_faccessat__secontext_full_mismatch_DEPENDENCIES) ++ @rm -f faccessat--secontext_full_mismatch$(EXEEXT) ++ $(AM_V_CCLD)$(LINK) $(faccessat__secontext_full_mismatch_OBJECTS) $(faccessat__secontext_full_mismatch_LDADD) $(LIBS) ++ ++faccessat--secontext_mismatch$(EXEEXT): $(faccessat__secontext_mismatch_OBJECTS) $(faccessat__secontext_mismatch_DEPENDENCIES) $(EXTRA_faccessat__secontext_mismatch_DEPENDENCIES) ++ @rm -f faccessat--secontext_mismatch$(EXEEXT) ++ $(AM_V_CCLD)$(LINK) $(faccessat__secontext_mismatch_OBJECTS) $(faccessat__secontext_mismatch_LDADD) $(LIBS) ++ + faccessat-P$(EXEEXT): $(faccessat_P_OBJECTS) $(faccessat_P_DEPENDENCIES) $(EXTRA_faccessat_P_DEPENDENCIES) + @rm -f faccessat-P$(EXEEXT) + $(AM_V_CCLD)$(LINK) $(faccessat_P_OBJECTS) $(faccessat_P_LDADD) $(LIBS) +@@ -7574,6 +7940,14 @@ + @rm -f faccessat-y--secontext_full$(EXEEXT) + $(AM_V_CCLD)$(LINK) $(faccessat_y__secontext_full_OBJECTS) $(faccessat_y__secontext_full_LDADD) $(LIBS) + ++faccessat-y--secontext_full_mismatch$(EXEEXT): $(faccessat_y__secontext_full_mismatch_OBJECTS) $(faccessat_y__secontext_full_mismatch_DEPENDENCIES) $(EXTRA_faccessat_y__secontext_full_mismatch_DEPENDENCIES) ++ @rm -f faccessat-y--secontext_full_mismatch$(EXEEXT) ++ $(AM_V_CCLD)$(LINK) $(faccessat_y__secontext_full_mismatch_OBJECTS) $(faccessat_y__secontext_full_mismatch_LDADD) $(LIBS) ++ ++faccessat-y--secontext_mismatch$(EXEEXT): $(faccessat_y__secontext_mismatch_OBJECTS) $(faccessat_y__secontext_mismatch_DEPENDENCIES) $(EXTRA_faccessat_y__secontext_mismatch_DEPENDENCIES) ++ @rm -f faccessat-y--secontext_mismatch$(EXEEXT) ++ $(AM_V_CCLD)$(LINK) $(faccessat_y__secontext_mismatch_OBJECTS) $(faccessat_y__secontext_mismatch_LDADD) $(LIBS) ++ + faccessat-yy$(EXEEXT): $(faccessat_yy_OBJECTS) $(faccessat_yy_DEPENDENCIES) $(EXTRA_faccessat_yy_DEPENDENCIES) + @rm -f faccessat-yy$(EXEEXT) + $(AM_V_CCLD)$(LINK) $(faccessat_yy_OBJECTS) $(faccessat_yy_LDADD) $(LIBS) +@@ -7622,6 +7996,14 @@ + @rm -f fanotify_mark--secontext_full$(EXEEXT) + $(AM_V_CCLD)$(LINK) $(fanotify_mark__secontext_full_OBJECTS) $(fanotify_mark__secontext_full_LDADD) $(LIBS) + ++fanotify_mark--secontext_full_mismatch$(EXEEXT): $(fanotify_mark__secontext_full_mismatch_OBJECTS) $(fanotify_mark__secontext_full_mismatch_DEPENDENCIES) $(EXTRA_fanotify_mark__secontext_full_mismatch_DEPENDENCIES) ++ @rm -f fanotify_mark--secontext_full_mismatch$(EXEEXT) ++ $(AM_V_CCLD)$(LINK) $(fanotify_mark__secontext_full_mismatch_OBJECTS) $(fanotify_mark__secontext_full_mismatch_LDADD) $(LIBS) ++ ++fanotify_mark--secontext_mismatch$(EXEEXT): $(fanotify_mark__secontext_mismatch_OBJECTS) $(fanotify_mark__secontext_mismatch_DEPENDENCIES) $(EXTRA_fanotify_mark__secontext_mismatch_DEPENDENCIES) ++ @rm -f fanotify_mark--secontext_mismatch$(EXEEXT) ++ $(AM_V_CCLD)$(LINK) $(fanotify_mark__secontext_mismatch_OBJECTS) $(fanotify_mark__secontext_mismatch_LDADD) $(LIBS) ++ + fanotify_mark-Xabbrev$(EXEEXT): $(fanotify_mark_Xabbrev_OBJECTS) $(fanotify_mark_Xabbrev_DEPENDENCIES) $(EXTRA_fanotify_mark_Xabbrev_DEPENDENCIES) + @rm -f fanotify_mark-Xabbrev$(EXEEXT) + $(AM_V_CCLD)$(LINK) $(fanotify_mark_Xabbrev_OBJECTS) $(fanotify_mark_Xabbrev_LDADD) $(LIBS) +@@ -7650,6 +8032,14 @@ + @rm -f fchmod--secontext_full$(EXEEXT) + $(AM_V_CCLD)$(LINK) $(fchmod__secontext_full_OBJECTS) $(fchmod__secontext_full_LDADD) $(LIBS) + ++fchmod--secontext_full_mismatch$(EXEEXT): $(fchmod__secontext_full_mismatch_OBJECTS) $(fchmod__secontext_full_mismatch_DEPENDENCIES) $(EXTRA_fchmod__secontext_full_mismatch_DEPENDENCIES) ++ @rm -f fchmod--secontext_full_mismatch$(EXEEXT) ++ $(AM_V_CCLD)$(LINK) $(fchmod__secontext_full_mismatch_OBJECTS) $(fchmod__secontext_full_mismatch_LDADD) $(LIBS) ++ ++fchmod--secontext_mismatch$(EXEEXT): $(fchmod__secontext_mismatch_OBJECTS) $(fchmod__secontext_mismatch_DEPENDENCIES) $(EXTRA_fchmod__secontext_mismatch_DEPENDENCIES) ++ @rm -f fchmod--secontext_mismatch$(EXEEXT) ++ $(AM_V_CCLD)$(LINK) $(fchmod__secontext_mismatch_OBJECTS) $(fchmod__secontext_mismatch_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) +@@ -7662,6 +8052,14 @@ + @rm -f fchmod-y--secontext_full$(EXEEXT) + $(AM_V_CCLD)$(LINK) $(fchmod_y__secontext_full_OBJECTS) $(fchmod_y__secontext_full_LDADD) $(LIBS) + ++fchmod-y--secontext_full_mismatch$(EXEEXT): $(fchmod_y__secontext_full_mismatch_OBJECTS) $(fchmod_y__secontext_full_mismatch_DEPENDENCIES) $(EXTRA_fchmod_y__secontext_full_mismatch_DEPENDENCIES) ++ @rm -f fchmod-y--secontext_full_mismatch$(EXEEXT) ++ $(AM_V_CCLD)$(LINK) $(fchmod_y__secontext_full_mismatch_OBJECTS) $(fchmod_y__secontext_full_mismatch_LDADD) $(LIBS) ++ ++fchmod-y--secontext_mismatch$(EXEEXT): $(fchmod_y__secontext_mismatch_OBJECTS) $(fchmod_y__secontext_mismatch_DEPENDENCIES) $(EXTRA_fchmod_y__secontext_mismatch_DEPENDENCIES) ++ @rm -f fchmod-y--secontext_mismatch$(EXEEXT) ++ $(AM_V_CCLD)$(LINK) $(fchmod_y__secontext_mismatch_OBJECTS) $(fchmod_y__secontext_mismatch_LDADD) $(LIBS) ++ + fchmodat$(EXEEXT): $(fchmodat_OBJECTS) $(fchmodat_DEPENDENCIES) $(EXTRA_fchmodat_DEPENDENCIES) + @rm -f fchmodat$(EXEEXT) + $(AM_V_CCLD)$(LINK) $(fchmodat_OBJECTS) $(fchmodat_LDADD) $(LIBS) +@@ -7674,6 +8072,14 @@ + @rm -f fchmodat--secontext_full$(EXEEXT) + $(AM_V_CCLD)$(LINK) $(fchmodat__secontext_full_OBJECTS) $(fchmodat__secontext_full_LDADD) $(LIBS) + ++fchmodat--secontext_full_mismatch$(EXEEXT): $(fchmodat__secontext_full_mismatch_OBJECTS) $(fchmodat__secontext_full_mismatch_DEPENDENCIES) $(EXTRA_fchmodat__secontext_full_mismatch_DEPENDENCIES) ++ @rm -f fchmodat--secontext_full_mismatch$(EXEEXT) ++ $(AM_V_CCLD)$(LINK) $(fchmodat__secontext_full_mismatch_OBJECTS) $(fchmodat__secontext_full_mismatch_LDADD) $(LIBS) ++ ++fchmodat--secontext_mismatch$(EXEEXT): $(fchmodat__secontext_mismatch_OBJECTS) $(fchmodat__secontext_mismatch_DEPENDENCIES) $(EXTRA_fchmodat__secontext_mismatch_DEPENDENCIES) ++ @rm -f fchmodat--secontext_mismatch$(EXEEXT) ++ $(AM_V_CCLD)$(LINK) $(fchmodat__secontext_mismatch_OBJECTS) $(fchmodat__secontext_mismatch_LDADD) $(LIBS) ++ + fchown$(EXEEXT): $(fchown_OBJECTS) $(fchown_DEPENDENCIES) $(EXTRA_fchown_DEPENDENCIES) + @rm -f fchown$(EXEEXT) + $(AM_V_CCLD)$(LINK) $(fchown_OBJECTS) $(fchown_LDADD) $(LIBS) +@@ -7694,6 +8100,14 @@ + @rm -f fchownat--secontext_full$(EXEEXT) + $(AM_V_CCLD)$(LINK) $(fchownat__secontext_full_OBJECTS) $(fchownat__secontext_full_LDADD) $(LIBS) + ++fchownat--secontext_full_mismatch$(EXEEXT): $(fchownat__secontext_full_mismatch_OBJECTS) $(fchownat__secontext_full_mismatch_DEPENDENCIES) $(EXTRA_fchownat__secontext_full_mismatch_DEPENDENCIES) ++ @rm -f fchownat--secontext_full_mismatch$(EXEEXT) ++ $(AM_V_CCLD)$(LINK) $(fchownat__secontext_full_mismatch_OBJECTS) $(fchownat__secontext_full_mismatch_LDADD) $(LIBS) ++ ++fchownat--secontext_mismatch$(EXEEXT): $(fchownat__secontext_mismatch_OBJECTS) $(fchownat__secontext_mismatch_DEPENDENCIES) $(EXTRA_fchownat__secontext_mismatch_DEPENDENCIES) ++ @rm -f fchownat--secontext_mismatch$(EXEEXT) ++ $(AM_V_CCLD)$(LINK) $(fchownat__secontext_mismatch_OBJECTS) $(fchownat__secontext_mismatch_LDADD) $(LIBS) ++ + fcntl$(EXEEXT): $(fcntl_OBJECTS) $(fcntl_DEPENDENCIES) $(EXTRA_fcntl_DEPENDENCIES) + @rm -f fcntl$(EXEEXT) + $(AM_V_CCLD)$(LINK) $(fcntl_OBJECTS) $(fcntl_LDADD) $(LIBS) +@@ -7730,6 +8144,14 @@ + @rm -f file_handle--secontext_full$(EXEEXT) + $(AM_V_CCLD)$(LINK) $(file_handle__secontext_full_OBJECTS) $(file_handle__secontext_full_LDADD) $(LIBS) + ++file_handle--secontext_full_mismatch$(EXEEXT): $(file_handle__secontext_full_mismatch_OBJECTS) $(file_handle__secontext_full_mismatch_DEPENDENCIES) $(EXTRA_file_handle__secontext_full_mismatch_DEPENDENCIES) ++ @rm -f file_handle--secontext_full_mismatch$(EXEEXT) ++ $(AM_V_CCLD)$(LINK) $(file_handle__secontext_full_mismatch_OBJECTS) $(file_handle__secontext_full_mismatch_LDADD) $(LIBS) ++ ++file_handle--secontext_mismatch$(EXEEXT): $(file_handle__secontext_mismatch_OBJECTS) $(file_handle__secontext_mismatch_DEPENDENCIES) $(EXTRA_file_handle__secontext_mismatch_DEPENDENCIES) ++ @rm -f file_handle--secontext_mismatch$(EXEEXT) ++ $(AM_V_CCLD)$(LINK) $(file_handle__secontext_mismatch_OBJECTS) $(file_handle__secontext_mismatch_LDADD) $(LIBS) ++ + filter-unavailable$(EXEEXT): $(filter_unavailable_OBJECTS) $(filter_unavailable_DEPENDENCIES) $(EXTRA_filter_unavailable_DEPENDENCIES) + @rm -f filter-unavailable$(EXEEXT) + $(AM_V_CCLD)$(LINK) $(filter_unavailable_OBJECTS) $(filter_unavailable_LDADD) $(LIBS) +@@ -8774,6 +9196,14 @@ + @rm -f linkat--secontext_full$(EXEEXT) + $(AM_V_CCLD)$(LINK) $(linkat__secontext_full_OBJECTS) $(linkat__secontext_full_LDADD) $(LIBS) + ++linkat--secontext_full_mismatch$(EXEEXT): $(linkat__secontext_full_mismatch_OBJECTS) $(linkat__secontext_full_mismatch_DEPENDENCIES) $(EXTRA_linkat__secontext_full_mismatch_DEPENDENCIES) ++ @rm -f linkat--secontext_full_mismatch$(EXEEXT) ++ $(AM_V_CCLD)$(LINK) $(linkat__secontext_full_mismatch_OBJECTS) $(linkat__secontext_full_mismatch_LDADD) $(LIBS) ++ ++linkat--secontext_mismatch$(EXEEXT): $(linkat__secontext_mismatch_OBJECTS) $(linkat__secontext_mismatch_DEPENDENCIES) $(EXTRA_linkat__secontext_mismatch_DEPENDENCIES) ++ @rm -f linkat--secontext_mismatch$(EXEEXT) ++ $(AM_V_CCLD)$(LINK) $(linkat__secontext_mismatch_OBJECTS) $(linkat__secontext_mismatch_LDADD) $(LIBS) ++ + list_sigaction_signum$(EXEEXT): $(list_sigaction_signum_OBJECTS) $(list_sigaction_signum_DEPENDENCIES) $(EXTRA_list_sigaction_signum_DEPENDENCIES) + @rm -f list_sigaction_signum$(EXEEXT) + $(AM_V_CCLD)$(LINK) $(list_sigaction_signum_OBJECTS) $(list_sigaction_signum_LDADD) $(LIBS) +@@ -9422,6 +9852,14 @@ + @rm -f open--secontext_full$(EXEEXT) + $(AM_V_CCLD)$(LINK) $(open__secontext_full_OBJECTS) $(open__secontext_full_LDADD) $(LIBS) + ++open--secontext_full_mismatch$(EXEEXT): $(open__secontext_full_mismatch_OBJECTS) $(open__secontext_full_mismatch_DEPENDENCIES) $(EXTRA_open__secontext_full_mismatch_DEPENDENCIES) ++ @rm -f open--secontext_full_mismatch$(EXEEXT) ++ $(AM_V_CCLD)$(LINK) $(open__secontext_full_mismatch_OBJECTS) $(open__secontext_full_mismatch_LDADD) $(LIBS) ++ ++open--secontext_mismatch$(EXEEXT): $(open__secontext_mismatch_OBJECTS) $(open__secontext_mismatch_DEPENDENCIES) $(EXTRA_open__secontext_mismatch_DEPENDENCIES) ++ @rm -f open--secontext_mismatch$(EXEEXT) ++ $(AM_V_CCLD)$(LINK) $(open__secontext_mismatch_OBJECTS) $(open__secontext_mismatch_LDADD) $(LIBS) ++ + open_tree$(EXEEXT): $(open_tree_OBJECTS) $(open_tree_DEPENDENCIES) $(EXTRA_open_tree_DEPENDENCIES) + @rm -f open_tree$(EXEEXT) + $(AM_V_CCLD)$(LINK) $(open_tree_OBJECTS) $(open_tree_LDADD) $(LIBS) +@@ -9442,6 +9880,14 @@ + @rm -f openat--secontext_full$(EXEEXT) + $(AM_V_CCLD)$(LINK) $(openat__secontext_full_OBJECTS) $(openat__secontext_full_LDADD) $(LIBS) + ++openat--secontext_full_mismatch$(EXEEXT): $(openat__secontext_full_mismatch_OBJECTS) $(openat__secontext_full_mismatch_DEPENDENCIES) $(EXTRA_openat__secontext_full_mismatch_DEPENDENCIES) ++ @rm -f openat--secontext_full_mismatch$(EXEEXT) ++ $(AM_V_CCLD)$(LINK) $(openat__secontext_full_mismatch_OBJECTS) $(openat__secontext_full_mismatch_LDADD) $(LIBS) ++ ++openat--secontext_mismatch$(EXEEXT): $(openat__secontext_mismatch_OBJECTS) $(openat__secontext_mismatch_DEPENDENCIES) $(EXTRA_openat__secontext_mismatch_DEPENDENCIES) ++ @rm -f openat--secontext_mismatch$(EXEEXT) ++ $(AM_V_CCLD)$(LINK) $(openat__secontext_mismatch_OBJECTS) $(openat__secontext_mismatch_LDADD) $(LIBS) ++ + openat2$(EXEEXT): $(openat2_OBJECTS) $(openat2_DEPENDENCIES) $(EXTRA_openat2_DEPENDENCIES) + @rm -f openat2$(EXEEXT) + $(AM_V_CCLD)$(LINK) $(openat2_OBJECTS) $(openat2_LDADD) $(LIBS) +@@ -10834,6 +11280,8 @@ + @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/accept4.Po@am__quote@ # am--include-marker + @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/access--secontext.Po@am__quote@ # am--include-marker + @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/access--secontext_full.Po@am__quote@ # am--include-marker ++@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/access--secontext_full_mismatch.Po@am__quote@ # am--include-marker ++@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/access--secontext_mismatch.Po@am__quote@ # am--include-marker + @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/access.Po@am__quote@ # am--include-marker + @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/acct.Po@am__quote@ # am--include-marker + @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/add_key.Po@am__quote@ # am--include-marker +@@ -10866,6 +11314,8 @@ + @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/check_sigign.Po@am__quote@ # am--include-marker + @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/chmod--secontext.Po@am__quote@ # am--include-marker + @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/chmod--secontext_full.Po@am__quote@ # am--include-marker ++@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/chmod--secontext_full_mismatch.Po@am__quote@ # am--include-marker ++@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/chmod--secontext_mismatch.Po@am__quote@ # am--include-marker + @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/chmod.Po@am__quote@ # am--include-marker + @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/chown.Po@am__quote@ # am--include-marker + @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/chown32.Po@am__quote@ # am--include-marker +@@ -10927,17 +11377,25 @@ + @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/eventfd.Po@am__quote@ # am--include-marker + @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/execve--secontext.Po@am__quote@ # am--include-marker + @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/execve--secontext_full.Po@am__quote@ # am--include-marker ++@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/execve--secontext_full_mismatch.Po@am__quote@ # am--include-marker ++@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/execve--secontext_mismatch.Po@am__quote@ # am--include-marker + @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/execve-v.Po@am__quote@ # am--include-marker + @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/execve.Po@am__quote@ # am--include-marker + @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/execveat--secontext.Po@am__quote@ # am--include-marker + @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/execveat--secontext_full.Po@am__quote@ # am--include-marker ++@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/execveat--secontext_full_mismatch.Po@am__quote@ # am--include-marker ++@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/execveat--secontext_mismatch.Po@am__quote@ # am--include-marker + @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/execveat-v.Po@am__quote@ # am--include-marker + @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/execveat.Po@am__quote@ # am--include-marker + @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/faccessat--secontext.Po@am__quote@ # am--include-marker + @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/faccessat--secontext_full.Po@am__quote@ # am--include-marker ++@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/faccessat--secontext_full_mismatch.Po@am__quote@ # am--include-marker ++@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/faccessat--secontext_mismatch.Po@am__quote@ # am--include-marker + @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/faccessat-P.Po@am__quote@ # am--include-marker + @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/faccessat-y--secontext.Po@am__quote@ # am--include-marker + @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/faccessat-y--secontext_full.Po@am__quote@ # am--include-marker ++@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/faccessat-y--secontext_full_mismatch.Po@am__quote@ # am--include-marker ++@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/faccessat-y--secontext_mismatch.Po@am__quote@ # am--include-marker + @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/faccessat-y.Po@am__quote@ # am--include-marker + @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/faccessat-yy.Po@am__quote@ # am--include-marker + @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/faccessat.Po@am__quote@ # am--include-marker +@@ -10951,6 +11409,8 @@ + @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/fanotify_init.Po@am__quote@ # am--include-marker + @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/fanotify_mark--secontext.Po@am__quote@ # am--include-marker + @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/fanotify_mark--secontext_full.Po@am__quote@ # am--include-marker ++@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/fanotify_mark--secontext_full_mismatch.Po@am__quote@ # am--include-marker ++@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/fanotify_mark--secontext_mismatch.Po@am__quote@ # am--include-marker + @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/fanotify_mark-Xabbrev.Po@am__quote@ # am--include-marker + @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/fanotify_mark-Xraw.Po@am__quote@ # am--include-marker + @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/fanotify_mark-Xverbose.Po@am__quote@ # am--include-marker +@@ -10958,17 +11418,25 @@ + @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/fchdir.Po@am__quote@ # am--include-marker + @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/fchmod--secontext.Po@am__quote@ # am--include-marker + @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/fchmod--secontext_full.Po@am__quote@ # am--include-marker ++@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/fchmod--secontext_full_mismatch.Po@am__quote@ # am--include-marker ++@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/fchmod--secontext_mismatch.Po@am__quote@ # am--include-marker + @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/fchmod-y--secontext.Po@am__quote@ # am--include-marker + @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/fchmod-y--secontext_full.Po@am__quote@ # am--include-marker ++@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/fchmod-y--secontext_full_mismatch.Po@am__quote@ # am--include-marker ++@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/fchmod-y--secontext_mismatch.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--secontext.Po@am__quote@ # am--include-marker + @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/fchmodat--secontext_full.Po@am__quote@ # am--include-marker ++@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/fchmodat--secontext_full_mismatch.Po@am__quote@ # am--include-marker ++@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/fchmodat--secontext_mismatch.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 + @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/fchown32.Po@am__quote@ # am--include-marker + @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/fchownat--secontext.Po@am__quote@ # am--include-marker + @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/fchownat--secontext_full.Po@am__quote@ # am--include-marker ++@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/fchownat--secontext_full_mismatch.Po@am__quote@ # am--include-marker ++@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/fchownat--secontext_mismatch.Po@am__quote@ # am--include-marker + @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/fchownat.Po@am__quote@ # am--include-marker + @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/fcntl--pidns-translation.Po@am__quote@ # am--include-marker + @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/fcntl.Po@am__quote@ # am--include-marker +@@ -10978,6 +11446,8 @@ + @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/fflush.Po@am__quote@ # am--include-marker + @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/file_handle--secontext.Po@am__quote@ # am--include-marker + @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/file_handle--secontext_full.Po@am__quote@ # am--include-marker ++@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/file_handle--secontext_full_mismatch.Po@am__quote@ # am--include-marker ++@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/file_handle--secontext_mismatch.Po@am__quote@ # am--include-marker + @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/file_handle.Po@am__quote@ # am--include-marker + @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/filter-unavailable.Po@am__quote@ # am--include-marker + @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/filter_seccomp-flag.Po@am__quote@ # am--include-marker +@@ -11275,6 +11745,8 @@ + @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/link.Po@am__quote@ # am--include-marker + @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/linkat--secontext.Po@am__quote@ # am--include-marker + @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/linkat--secontext_full.Po@am__quote@ # am--include-marker ++@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/linkat--secontext_full_mismatch.Po@am__quote@ # am--include-marker ++@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/linkat--secontext_mismatch.Po@am__quote@ # am--include-marker + @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/linkat.Po@am__quote@ # am--include-marker + @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/list_sigaction_signum.Po@am__quote@ # am--include-marker + @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/llseek.Po@am__quote@ # am--include-marker +@@ -11437,11 +11909,15 @@ + @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/oldstat.Po@am__quote@ # am--include-marker + @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/open--secontext.Po@am__quote@ # am--include-marker + @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/open--secontext_full.Po@am__quote@ # am--include-marker ++@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/open--secontext_full_mismatch.Po@am__quote@ # am--include-marker ++@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/open--secontext_mismatch.Po@am__quote@ # am--include-marker + @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/open.Po@am__quote@ # am--include-marker + @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/open_tree-P.Po@am__quote@ # am--include-marker + @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/open_tree.Po@am__quote@ # am--include-marker + @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/openat--secontext.Po@am__quote@ # am--include-marker + @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/openat--secontext_full.Po@am__quote@ # am--include-marker ++@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/openat--secontext_full_mismatch.Po@am__quote@ # am--include-marker ++@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/openat--secontext_mismatch.Po@am__quote@ # am--include-marker + @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/openat.Po@am__quote@ # am--include-marker + @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/openat2-Xabbrev.Po@am__quote@ # am--include-marker + @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/openat2-Xraw.Po@am__quote@ # am--include-marker +@@ -13003,6 +13479,12 @@ + $(srcdir)/access--secontext_full.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in + $(AM_V_GEN) $^ $@ + ++$(srcdir)/access--secontext_full_mismatch.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in ++ $(AM_V_GEN) $^ $@ ++ ++$(srcdir)/access--secontext_mismatch.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in ++ $(AM_V_GEN) $^ $@ ++ + $(srcdir)/acct.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in + $(AM_V_GEN) $^ $@ + +@@ -13054,6 +13536,12 @@ + $(srcdir)/chmod--secontext_full.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in + $(AM_V_GEN) $^ $@ + ++$(srcdir)/chmod--secontext_full_mismatch.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in ++ $(AM_V_GEN) $^ $@ ++ ++$(srcdir)/chmod--secontext_mismatch.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in ++ $(AM_V_GEN) $^ $@ ++ + $(srcdir)/chown.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in + $(AM_V_GEN) $^ $@ + +@@ -13219,6 +13707,12 @@ + $(srcdir)/execve--secontext_full.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in + $(AM_V_GEN) $^ $@ + ++$(srcdir)/execve--secontext_full_mismatch.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in ++ $(AM_V_GEN) $^ $@ ++ ++$(srcdir)/execve--secontext_mismatch.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in ++ $(AM_V_GEN) $^ $@ ++ + $(srcdir)/execveat.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in + $(AM_V_GEN) $^ $@ + +@@ -13228,6 +13722,12 @@ + $(srcdir)/execveat--secontext_full.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in + $(AM_V_GEN) $^ $@ + ++$(srcdir)/execveat--secontext_full_mismatch.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in ++ $(AM_V_GEN) $^ $@ ++ ++$(srcdir)/execveat--secontext_mismatch.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in ++ $(AM_V_GEN) $^ $@ ++ + $(srcdir)/execveat-v.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in + $(AM_V_GEN) $^ $@ + +@@ -13237,6 +13737,12 @@ + $(srcdir)/faccessat--secontext_full.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in + $(AM_V_GEN) $^ $@ + ++$(srcdir)/faccessat--secontext_full_mismatch.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in ++ $(AM_V_GEN) $^ $@ ++ ++$(srcdir)/faccessat--secontext_mismatch.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in ++ $(AM_V_GEN) $^ $@ ++ + $(srcdir)/faccessat-P.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in + $(AM_V_GEN) $^ $@ + +@@ -13249,6 +13755,12 @@ + $(srcdir)/faccessat-y--secontext_full.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in + $(AM_V_GEN) $^ $@ + ++$(srcdir)/faccessat-y--secontext_full_mismatch.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in ++ $(AM_V_GEN) $^ $@ ++ ++$(srcdir)/faccessat-y--secontext_mismatch.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in ++ $(AM_V_GEN) $^ $@ ++ + $(srcdir)/faccessat-yy.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in + $(AM_V_GEN) $^ $@ + +@@ -13279,6 +13791,12 @@ + $(srcdir)/fanotify_mark--secontext_full.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in + $(AM_V_GEN) $^ $@ + ++$(srcdir)/fanotify_mark--secontext_full_mismatch.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in ++ $(AM_V_GEN) $^ $@ ++ ++$(srcdir)/fanotify_mark--secontext_mismatch.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in ++ $(AM_V_GEN) $^ $@ ++ + $(srcdir)/fanotify_mark-Xabbrev.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in + $(AM_V_GEN) $^ $@ + +@@ -13300,6 +13818,12 @@ + $(srcdir)/fchmod--secontext_full.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in + $(AM_V_GEN) $^ $@ + ++$(srcdir)/fchmod--secontext_full_mismatch.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in ++ $(AM_V_GEN) $^ $@ ++ ++$(srcdir)/fchmod--secontext_mismatch.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) $^ $@ + +@@ -13309,6 +13833,12 @@ + $(srcdir)/fchmod-y--secontext_full.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in + $(AM_V_GEN) $^ $@ + ++$(srcdir)/fchmod-y--secontext_full_mismatch.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in ++ $(AM_V_GEN) $^ $@ ++ ++$(srcdir)/fchmod-y--secontext_mismatch.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) $^ $@ + +@@ -13318,6 +13848,12 @@ + $(srcdir)/fchmodat--secontext_full.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in + $(AM_V_GEN) $^ $@ + ++$(srcdir)/fchmodat--secontext_full_mismatch.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in ++ $(AM_V_GEN) $^ $@ ++ ++$(srcdir)/fchmodat--secontext_mismatch.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in ++ $(AM_V_GEN) $^ $@ ++ + $(srcdir)/fchown.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in + $(AM_V_GEN) $^ $@ + +@@ -13333,6 +13869,12 @@ + $(srcdir)/fchownat--secontext_full.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in + $(AM_V_GEN) $^ $@ + ++$(srcdir)/fchownat--secontext_full_mismatch.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in ++ $(AM_V_GEN) $^ $@ ++ ++$(srcdir)/fchownat--secontext_mismatch.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in ++ $(AM_V_GEN) $^ $@ ++ + $(srcdir)/fcntl.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in + $(AM_V_GEN) $^ $@ + +@@ -13357,6 +13899,12 @@ + $(srcdir)/file_handle--secontext_full.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in + $(AM_V_GEN) $^ $@ + ++$(srcdir)/file_handle--secontext_full_mismatch.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in ++ $(AM_V_GEN) $^ $@ ++ ++$(srcdir)/file_handle--secontext_mismatch.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in ++ $(AM_V_GEN) $^ $@ ++ + $(srcdir)/filter_seccomp.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in + $(AM_V_GEN) $^ $@ + +@@ -14116,6 +14664,12 @@ + $(srcdir)/linkat--secontext_full.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in + $(AM_V_GEN) $^ $@ + ++$(srcdir)/linkat--secontext_full_mismatch.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in ++ $(AM_V_GEN) $^ $@ ++ ++$(srcdir)/linkat--secontext_mismatch.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in ++ $(AM_V_GEN) $^ $@ ++ + $(srcdir)/lookup_dcookie.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in + $(AM_V_GEN) $^ $@ + +@@ -14545,6 +15099,12 @@ + $(srcdir)/open--secontext_full.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in + $(AM_V_GEN) $^ $@ + ++$(srcdir)/open--secontext_full_mismatch.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in ++ $(AM_V_GEN) $^ $@ ++ ++$(srcdir)/open--secontext_mismatch.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in ++ $(AM_V_GEN) $^ $@ ++ + $(srcdir)/open_tree.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in + $(AM_V_GEN) $^ $@ + +@@ -14560,6 +15120,12 @@ + $(srcdir)/openat--secontext_full.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in + $(AM_V_GEN) $^ $@ + ++$(srcdir)/openat--secontext_full_mismatch.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in ++ $(AM_V_GEN) $^ $@ ++ ++$(srcdir)/openat--secontext_mismatch.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in ++ $(AM_V_GEN) $^ $@ ++ + $(srcdir)/openat2.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in + $(AM_V_GEN) $^ $@ + +--- old/tests-m32/Makefile.in 2022-02-07 20:23:38.724063729 +0100 ++++ new/tests-m32/Makefile.in 2022-02-07 20:24:03.512063387 +0100 +@@ -614,25 +614,55 @@ + xet_thread_area_x86$(EXEEXT) xetitimer$(EXEEXT) \ + xetpgid$(EXEEXT) xetpriority$(EXEEXT) xettimeofday$(EXEEXT) + am__EXEEXT_2 = access--secontext$(EXEEXT) \ +- access--secontext_full$(EXEEXT) chmod--secontext$(EXEEXT) \ +- chmod--secontext_full$(EXEEXT) execve--secontext$(EXEEXT) \ +- execve--secontext_full$(EXEEXT) execveat--secontext$(EXEEXT) \ +- execveat--secontext_full$(EXEEXT) \ ++ access--secontext_full$(EXEEXT) \ ++ access--secontext_full_mismatch$(EXEEXT) \ ++ access--secontext_mismatch$(EXEEXT) chmod--secontext$(EXEEXT) \ ++ chmod--secontext_full$(EXEEXT) \ ++ chmod--secontext_full_mismatch$(EXEEXT) \ ++ chmod--secontext_mismatch$(EXEEXT) execve--secontext$(EXEEXT) \ ++ execve--secontext_full$(EXEEXT) \ ++ execve--secontext_full_mismatch$(EXEEXT) \ ++ execve--secontext_mismatch$(EXEEXT) \ ++ execveat--secontext$(EXEEXT) execveat--secontext_full$(EXEEXT) \ ++ execveat--secontext_full_mismatch$(EXEEXT) \ ++ execveat--secontext_mismatch$(EXEEXT) \ + faccessat--secontext$(EXEEXT) \ + faccessat--secontext_full$(EXEEXT) \ ++ faccessat--secontext_full_mismatch$(EXEEXT) \ ++ faccessat--secontext_mismatch$(EXEEXT) \ + faccessat-y--secontext$(EXEEXT) \ + faccessat-y--secontext_full$(EXEEXT) \ ++ faccessat-y--secontext_full_mismatch$(EXEEXT) \ ++ faccessat-y--secontext_mismatch$(EXEEXT) \ + fanotify_mark--secontext$(EXEEXT) \ + fanotify_mark--secontext_full$(EXEEXT) \ ++ fanotify_mark--secontext_full_mismatch$(EXEEXT) \ ++ fanotify_mark--secontext_mismatch$(EXEEXT) \ + fchmod--secontext$(EXEEXT) fchmod--secontext_full$(EXEEXT) \ ++ fchmod--secontext_full_mismatch$(EXEEXT) \ ++ fchmod--secontext_mismatch$(EXEEXT) \ + fchmod-y--secontext$(EXEEXT) fchmod-y--secontext_full$(EXEEXT) \ ++ fchmod-y--secontext_full_mismatch$(EXEEXT) \ ++ fchmod-y--secontext_mismatch$(EXEEXT) \ + fchmodat--secontext$(EXEEXT) fchmodat--secontext_full$(EXEEXT) \ ++ fchmodat--secontext_full_mismatch$(EXEEXT) \ ++ fchmodat--secontext_mismatch$(EXEEXT) \ + fchownat--secontext$(EXEEXT) fchownat--secontext_full$(EXEEXT) \ ++ fchownat--secontext_full_mismatch$(EXEEXT) \ ++ fchownat--secontext_mismatch$(EXEEXT) \ + file_handle--secontext$(EXEEXT) \ + file_handle--secontext_full$(EXEEXT) \ ++ file_handle--secontext_full_mismatch$(EXEEXT) \ ++ file_handle--secontext_mismatch$(EXEEXT) \ + linkat--secontext$(EXEEXT) linkat--secontext_full$(EXEEXT) \ +- open--secontext$(EXEEXT) open--secontext_full$(EXEEXT) \ +- openat--secontext$(EXEEXT) openat--secontext_full$(EXEEXT) ++ linkat--secontext_full_mismatch$(EXEEXT) \ ++ linkat--secontext_mismatch$(EXEEXT) open--secontext$(EXEEXT) \ ++ open--secontext_full$(EXEEXT) \ ++ open--secontext_full_mismatch$(EXEEXT) \ ++ open--secontext_mismatch$(EXEEXT) openat--secontext$(EXEEXT) \ ++ openat--secontext_full$(EXEEXT) \ ++ openat--secontext_full_mismatch$(EXEEXT) \ ++ openat--secontext_mismatch$(EXEEXT) + ARFLAGS = cru + AM_V_AR = $(am__v_AR_@AM_V@) + am__v_AR_ = $(am__v_AR_@AM_DEFAULT_V@) +@@ -662,6 +692,17 @@ + access__secontext_full_SOURCES = access--secontext_full.c + access__secontext_full_OBJECTS = access--secontext_full.$(OBJEXT) + access__secontext_full_DEPENDENCIES = $(LDADD) $(am__DEPENDENCIES_2) ++access__secontext_full_mismatch_SOURCES = \ ++ access--secontext_full_mismatch.c ++access__secontext_full_mismatch_OBJECTS = \ ++ access--secontext_full_mismatch.$(OBJEXT) ++access__secontext_full_mismatch_DEPENDENCIES = $(LDADD) \ ++ $(am__DEPENDENCIES_2) ++access__secontext_mismatch_SOURCES = access--secontext_mismatch.c ++access__secontext_mismatch_OBJECTS = \ ++ access--secontext_mismatch.$(OBJEXT) ++access__secontext_mismatch_DEPENDENCIES = $(LDADD) \ ++ $(am__DEPENDENCIES_2) + acct_SOURCES = acct.c + acct_OBJECTS = acct.$(OBJEXT) + acct_LDADD = $(LDADD) +@@ -790,6 +831,17 @@ + chmod__secontext_full_SOURCES = chmod--secontext_full.c + chmod__secontext_full_OBJECTS = chmod--secontext_full.$(OBJEXT) + chmod__secontext_full_DEPENDENCIES = $(LDADD) $(am__DEPENDENCIES_2) ++chmod__secontext_full_mismatch_SOURCES = \ ++ chmod--secontext_full_mismatch.c ++chmod__secontext_full_mismatch_OBJECTS = \ ++ chmod--secontext_full_mismatch.$(OBJEXT) ++chmod__secontext_full_mismatch_DEPENDENCIES = $(LDADD) \ ++ $(am__DEPENDENCIES_2) ++chmod__secontext_mismatch_SOURCES = chmod--secontext_mismatch.c ++chmod__secontext_mismatch_OBJECTS = \ ++ chmod--secontext_mismatch.$(OBJEXT) ++chmod__secontext_mismatch_DEPENDENCIES = $(LDADD) \ ++ $(am__DEPENDENCIES_2) + chown_SOURCES = chown.c + chown_OBJECTS = chown.$(OBJEXT) + chown_LDADD = $(LDADD) +@@ -1031,6 +1083,17 @@ + execve__secontext_full_SOURCES = execve--secontext_full.c + execve__secontext_full_OBJECTS = execve--secontext_full.$(OBJEXT) + execve__secontext_full_DEPENDENCIES = $(LDADD) $(am__DEPENDENCIES_2) ++execve__secontext_full_mismatch_SOURCES = \ ++ execve--secontext_full_mismatch.c ++execve__secontext_full_mismatch_OBJECTS = \ ++ execve--secontext_full_mismatch.$(OBJEXT) ++execve__secontext_full_mismatch_DEPENDENCIES = $(LDADD) \ ++ $(am__DEPENDENCIES_2) ++execve__secontext_mismatch_SOURCES = execve--secontext_mismatch.c ++execve__secontext_mismatch_OBJECTS = \ ++ execve--secontext_mismatch.$(OBJEXT) ++execve__secontext_mismatch_DEPENDENCIES = $(LDADD) \ ++ $(am__DEPENDENCIES_2) + execve_v_SOURCES = execve-v.c + execve_v_OBJECTS = execve-v.$(OBJEXT) + execve_v_LDADD = $(LDADD) +@@ -1045,6 +1108,17 @@ + execveat__secontext_full_SOURCES = execveat--secontext_full.c + execveat__secontext_full_OBJECTS = execveat--secontext_full.$(OBJEXT) + execveat__secontext_full_DEPENDENCIES = $(LDADD) $(am__DEPENDENCIES_2) ++execveat__secontext_full_mismatch_SOURCES = \ ++ execveat--secontext_full_mismatch.c ++execveat__secontext_full_mismatch_OBJECTS = \ ++ execveat--secontext_full_mismatch.$(OBJEXT) ++execveat__secontext_full_mismatch_DEPENDENCIES = $(LDADD) \ ++ $(am__DEPENDENCIES_2) ++execveat__secontext_mismatch_SOURCES = execveat--secontext_mismatch.c ++execveat__secontext_mismatch_OBJECTS = \ ++ execveat--secontext_mismatch.$(OBJEXT) ++execveat__secontext_mismatch_DEPENDENCIES = $(LDADD) \ ++ $(am__DEPENDENCIES_2) + execveat_v_SOURCES = execveat-v.c + execveat_v_OBJECTS = execveat-v.$(OBJEXT) + execveat_v_LDADD = $(LDADD) +@@ -1061,6 +1135,18 @@ + faccessat--secontext_full.$(OBJEXT) + faccessat__secontext_full_DEPENDENCIES = $(LDADD) \ + $(am__DEPENDENCIES_2) ++faccessat__secontext_full_mismatch_SOURCES = \ ++ faccessat--secontext_full_mismatch.c ++faccessat__secontext_full_mismatch_OBJECTS = \ ++ faccessat--secontext_full_mismatch.$(OBJEXT) ++faccessat__secontext_full_mismatch_DEPENDENCIES = $(LDADD) \ ++ $(am__DEPENDENCIES_2) ++faccessat__secontext_mismatch_SOURCES = \ ++ faccessat--secontext_mismatch.c ++faccessat__secontext_mismatch_OBJECTS = \ ++ faccessat--secontext_mismatch.$(OBJEXT) ++faccessat__secontext_mismatch_DEPENDENCIES = $(LDADD) \ ++ $(am__DEPENDENCIES_2) + faccessat_P_SOURCES = faccessat-P.c + faccessat_P_OBJECTS = faccessat-P.$(OBJEXT) + faccessat_P_LDADD = $(LDADD) +@@ -1077,6 +1163,18 @@ + faccessat-y--secontext_full.$(OBJEXT) + faccessat_y__secontext_full_DEPENDENCIES = $(LDADD) \ + $(am__DEPENDENCIES_2) ++faccessat_y__secontext_full_mismatch_SOURCES = \ ++ faccessat-y--secontext_full_mismatch.c ++faccessat_y__secontext_full_mismatch_OBJECTS = \ ++ faccessat-y--secontext_full_mismatch.$(OBJEXT) ++faccessat_y__secontext_full_mismatch_DEPENDENCIES = $(LDADD) \ ++ $(am__DEPENDENCIES_2) ++faccessat_y__secontext_mismatch_SOURCES = \ ++ faccessat-y--secontext_mismatch.c ++faccessat_y__secontext_mismatch_OBJECTS = \ ++ faccessat-y--secontext_mismatch.$(OBJEXT) ++faccessat_y__secontext_mismatch_DEPENDENCIES = $(LDADD) \ ++ $(am__DEPENDENCIES_2) + faccessat_yy_SOURCES = faccessat-yy.c + faccessat_yy_OBJECTS = faccessat-yy.$(OBJEXT) + faccessat_yy_LDADD = $(LDADD) +@@ -1126,6 +1224,18 @@ + fanotify_mark--secontext_full.$(OBJEXT) + fanotify_mark__secontext_full_DEPENDENCIES = $(LDADD) \ + $(am__DEPENDENCIES_2) ++fanotify_mark__secontext_full_mismatch_SOURCES = \ ++ fanotify_mark--secontext_full_mismatch.c ++fanotify_mark__secontext_full_mismatch_OBJECTS = \ ++ fanotify_mark--secontext_full_mismatch.$(OBJEXT) ++fanotify_mark__secontext_full_mismatch_DEPENDENCIES = $(LDADD) \ ++ $(am__DEPENDENCIES_2) ++fanotify_mark__secontext_mismatch_SOURCES = \ ++ fanotify_mark--secontext_mismatch.c ++fanotify_mark__secontext_mismatch_OBJECTS = \ ++ fanotify_mark--secontext_mismatch.$(OBJEXT) ++fanotify_mark__secontext_mismatch_DEPENDENCIES = $(LDADD) \ ++ $(am__DEPENDENCIES_2) + fanotify_mark_Xabbrev_SOURCES = fanotify_mark-Xabbrev.c + fanotify_mark_Xabbrev_OBJECTS = fanotify_mark-Xabbrev.$(OBJEXT) + fanotify_mark_Xabbrev_LDADD = $(LDADD) +@@ -1152,6 +1262,17 @@ + fchmod__secontext_full_SOURCES = fchmod--secontext_full.c + fchmod__secontext_full_OBJECTS = fchmod--secontext_full.$(OBJEXT) + fchmod__secontext_full_DEPENDENCIES = $(LDADD) $(am__DEPENDENCIES_2) ++fchmod__secontext_full_mismatch_SOURCES = \ ++ fchmod--secontext_full_mismatch.c ++fchmod__secontext_full_mismatch_OBJECTS = \ ++ fchmod--secontext_full_mismatch.$(OBJEXT) ++fchmod__secontext_full_mismatch_DEPENDENCIES = $(LDADD) \ ++ $(am__DEPENDENCIES_2) ++fchmod__secontext_mismatch_SOURCES = fchmod--secontext_mismatch.c ++fchmod__secontext_mismatch_OBJECTS = \ ++ fchmod--secontext_mismatch.$(OBJEXT) ++fchmod__secontext_mismatch_DEPENDENCIES = $(LDADD) \ ++ $(am__DEPENDENCIES_2) + fchmod_y_SOURCES = fchmod-y.c + fchmod_y_OBJECTS = fchmod-y.$(OBJEXT) + fchmod_y_LDADD = $(LDADD) +@@ -1162,6 +1283,17 @@ + fchmod_y__secontext_full_SOURCES = fchmod-y--secontext_full.c + fchmod_y__secontext_full_OBJECTS = fchmod-y--secontext_full.$(OBJEXT) + fchmod_y__secontext_full_DEPENDENCIES = $(LDADD) $(am__DEPENDENCIES_2) ++fchmod_y__secontext_full_mismatch_SOURCES = \ ++ fchmod-y--secontext_full_mismatch.c ++fchmod_y__secontext_full_mismatch_OBJECTS = \ ++ fchmod-y--secontext_full_mismatch.$(OBJEXT) ++fchmod_y__secontext_full_mismatch_DEPENDENCIES = $(LDADD) \ ++ $(am__DEPENDENCIES_2) ++fchmod_y__secontext_mismatch_SOURCES = fchmod-y--secontext_mismatch.c ++fchmod_y__secontext_mismatch_OBJECTS = \ ++ fchmod-y--secontext_mismatch.$(OBJEXT) ++fchmod_y__secontext_mismatch_DEPENDENCIES = $(LDADD) \ ++ $(am__DEPENDENCIES_2) + fchmodat_SOURCES = fchmodat.c + fchmodat_OBJECTS = fchmodat.$(OBJEXT) + fchmodat_LDADD = $(LDADD) +@@ -1172,6 +1304,17 @@ + fchmodat__secontext_full_SOURCES = fchmodat--secontext_full.c + fchmodat__secontext_full_OBJECTS = fchmodat--secontext_full.$(OBJEXT) + fchmodat__secontext_full_DEPENDENCIES = $(LDADD) $(am__DEPENDENCIES_2) ++fchmodat__secontext_full_mismatch_SOURCES = \ ++ fchmodat--secontext_full_mismatch.c ++fchmodat__secontext_full_mismatch_OBJECTS = \ ++ fchmodat--secontext_full_mismatch.$(OBJEXT) ++fchmodat__secontext_full_mismatch_DEPENDENCIES = $(LDADD) \ ++ $(am__DEPENDENCIES_2) ++fchmodat__secontext_mismatch_SOURCES = fchmodat--secontext_mismatch.c ++fchmodat__secontext_mismatch_OBJECTS = \ ++ fchmodat--secontext_mismatch.$(OBJEXT) ++fchmodat__secontext_mismatch_DEPENDENCIES = $(LDADD) \ ++ $(am__DEPENDENCIES_2) + fchown_SOURCES = fchown.c + fchown_OBJECTS = fchown.$(OBJEXT) + fchown_LDADD = $(LDADD) +@@ -1190,6 +1333,17 @@ + fchownat__secontext_full_SOURCES = fchownat--secontext_full.c + fchownat__secontext_full_OBJECTS = fchownat--secontext_full.$(OBJEXT) + fchownat__secontext_full_DEPENDENCIES = $(LDADD) $(am__DEPENDENCIES_2) ++fchownat__secontext_full_mismatch_SOURCES = \ ++ fchownat--secontext_full_mismatch.c ++fchownat__secontext_full_mismatch_OBJECTS = \ ++ fchownat--secontext_full_mismatch.$(OBJEXT) ++fchownat__secontext_full_mismatch_DEPENDENCIES = $(LDADD) \ ++ $(am__DEPENDENCIES_2) ++fchownat__secontext_mismatch_SOURCES = fchownat--secontext_mismatch.c ++fchownat__secontext_mismatch_OBJECTS = \ ++ fchownat--secontext_mismatch.$(OBJEXT) ++fchownat__secontext_mismatch_DEPENDENCIES = $(LDADD) \ ++ $(am__DEPENDENCIES_2) + fcntl_SOURCES = fcntl.c + fcntl_OBJECTS = fcntl.$(OBJEXT) + fcntl_LDADD = $(LDADD) +@@ -1227,6 +1381,18 @@ + file_handle--secontext_full.$(OBJEXT) + file_handle__secontext_full_DEPENDENCIES = $(LDADD) \ + $(am__DEPENDENCIES_2) ++file_handle__secontext_full_mismatch_SOURCES = \ ++ file_handle--secontext_full_mismatch.c ++file_handle__secontext_full_mismatch_OBJECTS = \ ++ file_handle--secontext_full_mismatch.$(OBJEXT) ++file_handle__secontext_full_mismatch_DEPENDENCIES = $(LDADD) \ ++ $(am__DEPENDENCIES_2) ++file_handle__secontext_mismatch_SOURCES = \ ++ file_handle--secontext_mismatch.c ++file_handle__secontext_mismatch_OBJECTS = \ ++ file_handle--secontext_mismatch.$(OBJEXT) ++file_handle__secontext_mismatch_DEPENDENCIES = $(LDADD) \ ++ $(am__DEPENDENCIES_2) + filter_unavailable_SOURCES = filter-unavailable.c + filter_unavailable_OBJECTS = filter-unavailable.$(OBJEXT) + filter_unavailable_DEPENDENCIES = $(LDADD) +@@ -2318,6 +2484,17 @@ + linkat__secontext_full_SOURCES = linkat--secontext_full.c + linkat__secontext_full_OBJECTS = linkat--secontext_full.$(OBJEXT) + linkat__secontext_full_DEPENDENCIES = $(LDADD) $(am__DEPENDENCIES_2) ++linkat__secontext_full_mismatch_SOURCES = \ ++ linkat--secontext_full_mismatch.c ++linkat__secontext_full_mismatch_OBJECTS = \ ++ linkat--secontext_full_mismatch.$(OBJEXT) ++linkat__secontext_full_mismatch_DEPENDENCIES = $(LDADD) \ ++ $(am__DEPENDENCIES_2) ++linkat__secontext_mismatch_SOURCES = linkat--secontext_mismatch.c ++linkat__secontext_mismatch_OBJECTS = \ ++ linkat--secontext_mismatch.$(OBJEXT) ++linkat__secontext_mismatch_DEPENDENCIES = $(LDADD) \ ++ $(am__DEPENDENCIES_2) + list_sigaction_signum_SOURCES = list_sigaction_signum.c + list_sigaction_signum_OBJECTS = list_sigaction_signum.$(OBJEXT) + list_sigaction_signum_LDADD = $(LDADD) +@@ -2976,6 +3153,15 @@ + open__secontext_full_SOURCES = open--secontext_full.c + open__secontext_full_OBJECTS = open--secontext_full.$(OBJEXT) + open__secontext_full_DEPENDENCIES = $(LDADD) $(am__DEPENDENCIES_2) ++open__secontext_full_mismatch_SOURCES = \ ++ open--secontext_full_mismatch.c ++open__secontext_full_mismatch_OBJECTS = \ ++ open--secontext_full_mismatch.$(OBJEXT) ++open__secontext_full_mismatch_DEPENDENCIES = $(LDADD) \ ++ $(am__DEPENDENCIES_2) ++open__secontext_mismatch_SOURCES = open--secontext_mismatch.c ++open__secontext_mismatch_OBJECTS = open--secontext_mismatch.$(OBJEXT) ++open__secontext_mismatch_DEPENDENCIES = $(LDADD) $(am__DEPENDENCIES_2) + open_tree_SOURCES = open_tree.c + open_tree_OBJECTS = open_tree.$(OBJEXT) + open_tree_LDADD = $(LDADD) +@@ -2994,6 +3180,17 @@ + openat__secontext_full_SOURCES = openat--secontext_full.c + openat__secontext_full_OBJECTS = openat--secontext_full.$(OBJEXT) + openat__secontext_full_DEPENDENCIES = $(LDADD) $(am__DEPENDENCIES_2) ++openat__secontext_full_mismatch_SOURCES = \ ++ openat--secontext_full_mismatch.c ++openat__secontext_full_mismatch_OBJECTS = \ ++ openat--secontext_full_mismatch.$(OBJEXT) ++openat__secontext_full_mismatch_DEPENDENCIES = $(LDADD) \ ++ $(am__DEPENDENCIES_2) ++openat__secontext_mismatch_SOURCES = openat--secontext_mismatch.c ++openat__secontext_mismatch_OBJECTS = \ ++ openat--secontext_mismatch.$(OBJEXT) ++openat__secontext_mismatch_DEPENDENCIES = $(LDADD) \ ++ $(am__DEPENDENCIES_2) + openat2_SOURCES = openat2.c + openat2_OBJECTS = openat2.$(OBJEXT) + openat2_LDADD = $(LDADD) +@@ -4449,6 +4646,8 @@ + ./$(DEPDIR)/_newselect.Po ./$(DEPDIR)/accept.Po \ + ./$(DEPDIR)/accept4.Po ./$(DEPDIR)/access--secontext.Po \ + ./$(DEPDIR)/access--secontext_full.Po ./$(DEPDIR)/access.Po \ ++ ./$(DEPDIR)/access--secontext_full_mismatch.Po \ ++ ./$(DEPDIR)/access--secontext_mismatch.Po \ + ./$(DEPDIR)/acct.Po ./$(DEPDIR)/add_key.Po \ + ./$(DEPDIR)/adjtimex.Po ./$(DEPDIR)/aio.Po \ + ./$(DEPDIR)/aio_pgetevents.Po ./$(DEPDIR)/alarm.Po \ +@@ -4468,6 +4667,8 @@ + ./$(DEPDIR)/chdir.Po ./$(DEPDIR)/check_sigblock.Po \ + ./$(DEPDIR)/check_sigign.Po ./$(DEPDIR)/chmod--secontext.Po \ + ./$(DEPDIR)/chmod--secontext_full.Po ./$(DEPDIR)/chmod.Po \ ++ ./$(DEPDIR)/chmod--secontext_full_mismatch.Po \ ++ ./$(DEPDIR)/chmod--secontext_mismatch.Po \ + ./$(DEPDIR)/chown.Po ./$(DEPDIR)/chown32.Po \ + ./$(DEPDIR)/chroot.Po ./$(DEPDIR)/clock_adjtime.Po \ + ./$(DEPDIR)/clock_adjtime64.Po ./$(DEPDIR)/clock_nanosleep.Po \ +@@ -4503,14 +4704,22 @@ + ./$(DEPDIR)/epoll_wait.Po ./$(DEPDIR)/erestartsys.Po \ + ./$(DEPDIR)/eventfd.Po ./$(DEPDIR)/execve--secontext.Po \ + ./$(DEPDIR)/execve--secontext_full.Po ./$(DEPDIR)/execve-v.Po \ ++ ./$(DEPDIR)/execve--secontext_full_mismatch.Po \ ++ ./$(DEPDIR)/execve--secontext_mismatch.Po \ + ./$(DEPDIR)/execve.Po ./$(DEPDIR)/execveat--secontext.Po \ + ./$(DEPDIR)/execveat--secontext_full.Po \ ++ ./$(DEPDIR)/execveat--secontext_full_mismatch.Po \ ++ ./$(DEPDIR)/execveat--secontext_mismatch.Po \ + ./$(DEPDIR)/execveat-v.Po ./$(DEPDIR)/execveat.Po \ + ./$(DEPDIR)/faccessat--secontext.Po \ + ./$(DEPDIR)/faccessat--secontext_full.Po \ ++ ./$(DEPDIR)/faccessat--secontext_full_mismatch.Po \ ++ ./$(DEPDIR)/faccessat--secontext_mismatch.Po \ + ./$(DEPDIR)/faccessat-P.Po \ + ./$(DEPDIR)/faccessat-y--secontext.Po \ + ./$(DEPDIR)/faccessat-y--secontext_full.Po \ ++ ./$(DEPDIR)/faccessat-y--secontext_full_mismatch.Po \ ++ ./$(DEPDIR)/faccessat-y--secontext_mismatch.Po \ + ./$(DEPDIR)/faccessat-y.Po ./$(DEPDIR)/faccessat-yy.Po \ + ./$(DEPDIR)/faccessat.Po ./$(DEPDIR)/faccessat2-P.Po \ + ./$(DEPDIR)/faccessat2-y.Po ./$(DEPDIR)/faccessat2-yy.Po \ +@@ -4519,26 +4728,38 @@ + ./$(DEPDIR)/fanotify_init.Po \ + ./$(DEPDIR)/fanotify_mark--secontext.Po \ + ./$(DEPDIR)/fanotify_mark--secontext_full.Po \ ++ ./$(DEPDIR)/fanotify_mark--secontext_full_mismatch.Po \ ++ ./$(DEPDIR)/fanotify_mark--secontext_mismatch.Po \ + ./$(DEPDIR)/fanotify_mark-Xabbrev.Po \ + ./$(DEPDIR)/fanotify_mark-Xraw.Po \ + ./$(DEPDIR)/fanotify_mark-Xverbose.Po \ + ./$(DEPDIR)/fanotify_mark.Po ./$(DEPDIR)/fchdir.Po \ + ./$(DEPDIR)/fchmod--secontext.Po \ + ./$(DEPDIR)/fchmod--secontext_full.Po \ ++ ./$(DEPDIR)/fchmod--secontext_full_mismatch.Po \ ++ ./$(DEPDIR)/fchmod--secontext_mismatch.Po \ + ./$(DEPDIR)/fchmod-y--secontext.Po \ + ./$(DEPDIR)/fchmod-y--secontext_full.Po \ ++ ./$(DEPDIR)/fchmod-y--secontext_full_mismatch.Po \ ++ ./$(DEPDIR)/fchmod-y--secontext_mismatch.Po \ + ./$(DEPDIR)/fchmod-y.Po ./$(DEPDIR)/fchmod.Po \ + ./$(DEPDIR)/fchmodat--secontext.Po \ + ./$(DEPDIR)/fchmodat--secontext_full.Po \ ++ ./$(DEPDIR)/fchmodat--secontext_full_mismatch.Po \ ++ ./$(DEPDIR)/fchmodat--secontext_mismatch.Po \ + ./$(DEPDIR)/fchmodat.Po ./$(DEPDIR)/fchown.Po \ + ./$(DEPDIR)/fchown32.Po ./$(DEPDIR)/fchownat--secontext.Po \ + ./$(DEPDIR)/fchownat--secontext_full.Po \ ++ ./$(DEPDIR)/fchownat--secontext_full_mismatch.Po \ ++ ./$(DEPDIR)/fchownat--secontext_mismatch.Po \ + ./$(DEPDIR)/fchownat.Po \ + ./$(DEPDIR)/fcntl--pidns-translation.Po ./$(DEPDIR)/fcntl.Po \ + ./$(DEPDIR)/fcntl64--pidns-translation.Po \ + ./$(DEPDIR)/fcntl64.Po ./$(DEPDIR)/fdatasync.Po \ + ./$(DEPDIR)/fflush.Po ./$(DEPDIR)/file_handle--secontext.Po \ + ./$(DEPDIR)/file_handle--secontext_full.Po \ ++ ./$(DEPDIR)/file_handle--secontext_full_mismatch.Po \ ++ ./$(DEPDIR)/file_handle--secontext_mismatch.Po \ + ./$(DEPDIR)/file_handle.Po ./$(DEPDIR)/filter-unavailable.Po \ + ./$(DEPDIR)/filter_seccomp-flag.Po \ + ./$(DEPDIR)/filter_seccomp-perf.Po ./$(DEPDIR)/finit_module.Po \ +@@ -4753,6 +4972,8 @@ + ./$(DEPDIR)/libtests_a-xmalloc_for_tests.Po \ + ./$(DEPDIR)/link.Po ./$(DEPDIR)/linkat--secontext.Po \ + ./$(DEPDIR)/linkat--secontext_full.Po ./$(DEPDIR)/linkat.Po \ ++ ./$(DEPDIR)/linkat--secontext_full_mismatch.Po \ ++ ./$(DEPDIR)/linkat--secontext_mismatch.Po \ + ./$(DEPDIR)/list_sigaction_signum.Po ./$(DEPDIR)/llseek.Po \ + ./$(DEPDIR)/localtime.Po ./$(DEPDIR)/lookup_dcookie.Po \ + ./$(DEPDIR)/looping_threads.Po ./$(DEPDIR)/lseek.Po \ +@@ -4867,9 +5088,13 @@ + ./$(DEPDIR)/oldselect-efault.Po ./$(DEPDIR)/oldselect.Po \ + ./$(DEPDIR)/oldstat.Po ./$(DEPDIR)/open--secontext.Po \ + ./$(DEPDIR)/open--secontext_full.Po ./$(DEPDIR)/open.Po \ ++ ./$(DEPDIR)/open--secontext_full_mismatch.Po \ ++ ./$(DEPDIR)/open--secontext_mismatch.Po \ + ./$(DEPDIR)/open_tree-P.Po ./$(DEPDIR)/open_tree.Po \ + ./$(DEPDIR)/openat--secontext.Po \ + ./$(DEPDIR)/openat--secontext_full.Po ./$(DEPDIR)/openat.Po \ ++ ./$(DEPDIR)/openat--secontext_full_mismatch.Po \ ++ ./$(DEPDIR)/openat--secontext_mismatch.Po \ + ./$(DEPDIR)/openat2-Xabbrev.Po ./$(DEPDIR)/openat2-Xraw.Po \ + ./$(DEPDIR)/openat2-Xverbose.Po \ + ./$(DEPDIR)/openat2-v-y-Xabbrev.Po \ +@@ -5119,7 +5316,8 @@ + am__v_CCLD_1 = + SOURCES = $(libtests_a_SOURCES) _newselect.c _newselect-P.c accept.c \ + accept4.c access.c access--secontext.c \ +- access--secontext_full.c acct.c add_key.c adjtimex.c aio.c \ ++ access--secontext_full.c access--secontext_full_mismatch.c \ ++ access--secontext_mismatch.c acct.c add_key.c adjtimex.c aio.c \ + aio_pgetevents.c alarm.c answer.c attach-f-p.c \ + attach-f-p-cmd.c attach-p-cmd-cmd.c attach-p-cmd-p.c \ + block_reset_raise_run.c block_reset_run.c bpf.c \ +@@ -4468,7 +4666,8 @@ + bpf-success.c bpf-success-long-y.c bpf-success-v.c bpf-v.c \ + brk.c btrfs.c caps.c caps-abbrev.c chdir.c check_sigblock.c \ + check_sigign.c chmod.c chmod--secontext.c \ +- chmod--secontext_full.c chown.c chown32.c chroot.c \ ++ chmod--secontext_full.c chmod--secontext_full_mismatch.c \ ++ chmod--secontext_mismatch.c chown.c chown32.c chroot.c \ + clock_adjtime.c clock_adjtime64.c clock_nanosleep.c \ + clock_xettime.c clock_xettime64.c clone-flags.c clone3.c \ + clone3-Xabbrev.c clone3-Xraw.c clone3-Xverbose.c \ +@@ -4484,24 +4683,40 @@ + dup3-y.c dup3-yy.c epoll_create.c epoll_create1.c epoll_ctl.c \ + epoll_pwait.c epoll_pwait2.c epoll_pwait2-P.c epoll_pwait2-y.c \ + epoll_wait.c erestartsys.c eventfd.c execve.c \ +- execve--secontext.c execve--secontext_full.c execve-v.c \ +- execveat.c execveat--secontext.c execveat--secontext_full.c \ +- execveat-v.c faccessat.c faccessat--secontext.c \ +- faccessat--secontext_full.c faccessat-P.c faccessat-y.c \ ++ execve--secontext.c execve--secontext_full.c \ ++ execve--secontext_full_mismatch.c execve--secontext_mismatch.c \ ++ execve-v.c execveat.c execveat--secontext.c \ ++ execveat--secontext_full.c execveat--secontext_full_mismatch.c \ ++ execveat--secontext_mismatch.c execveat-v.c faccessat.c \ ++ faccessat--secontext.c faccessat--secontext_full.c \ ++ faccessat--secontext_full_mismatch.c \ ++ faccessat--secontext_mismatch.c faccessat-P.c faccessat-y.c \ + faccessat-y--secontext.c faccessat-y--secontext_full.c \ +- faccessat-yy.c faccessat2.c faccessat2-P.c faccessat2-y.c \ +- faccessat2-yy.c fadvise64.c fadvise64_64.c fallocate.c \ +- fanotify_init.c fanotify_mark.c fanotify_mark--secontext.c \ +- fanotify_mark--secontext_full.c fanotify_mark-Xabbrev.c \ ++ faccessat-y--secontext_full_mismatch.c \ ++ faccessat-y--secontext_mismatch.c faccessat-yy.c faccessat2.c \ ++ faccessat2-P.c faccessat2-y.c faccessat2-yy.c fadvise64.c \ ++ fadvise64_64.c fallocate.c fanotify_init.c fanotify_mark.c \ ++ fanotify_mark--secontext.c fanotify_mark--secontext_full.c \ ++ fanotify_mark--secontext_full_mismatch.c \ ++ fanotify_mark--secontext_mismatch.c fanotify_mark-Xabbrev.c \ + fanotify_mark-Xraw.c fanotify_mark-Xverbose.c fchdir.c \ + fchmod.c fchmod--secontext.c fchmod--secontext_full.c \ ++ fchmod--secontext_full_mismatch.c fchmod--secontext_mismatch.c \ + fchmod-y.c fchmod-y--secontext.c fchmod-y--secontext_full.c \ +- fchmodat.c fchmodat--secontext.c fchmodat--secontext_full.c \ +- fchown.c fchown32.c fchownat.c fchownat--secontext.c \ +- fchownat--secontext_full.c fcntl.c fcntl--pidns-translation.c \ +- fcntl64.c fcntl64--pidns-translation.c fdatasync.c fflush.c \ ++ fchmod-y--secontext_full_mismatch.c \ ++ fchmod-y--secontext_mismatch.c fchmodat.c \ ++ fchmodat--secontext.c fchmodat--secontext_full.c \ ++ fchmodat--secontext_full_mismatch.c \ ++ fchmodat--secontext_mismatch.c fchown.c fchown32.c fchownat.c \ ++ fchownat--secontext.c fchownat--secontext_full.c \ ++ fchownat--secontext_full_mismatch.c \ ++ fchownat--secontext_mismatch.c fcntl.c \ ++ fcntl--pidns-translation.c fcntl64.c \ ++ fcntl64--pidns-translation.c fdatasync.c fflush.c \ + file_handle.c file_handle--secontext.c \ +- file_handle--secontext_full.c filter-unavailable.c \ ++ file_handle--secontext_full.c \ ++ file_handle--secontext_full_mismatch.c \ ++ file_handle--secontext_mismatch.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 \ + fsconfig-P.c fsmount.c fsopen.c fspick.c fspick-P.c fstat.c \ +@@ -4588,6 +4803,7 @@ + landlock_create_ruleset-y.c landlock_restrict_self.c \ + landlock_restrict_self-y.c lchown.c lchown32.c link.c linkat.c \ + linkat--secontext.c linkat--secontext_full.c \ ++ linkat--secontext_full_mismatch.c linkat--secontext_mismatch.c \ + list_sigaction_signum.c llseek.c localtime.c lookup_dcookie.c \ + looping_threads.c lseek.c lstat.c lstat64.c madvise.c \ + maybe_switch_current_tcp.c \ +@@ -4641,8 +4857,10 @@ + old_mmap-v-none.c oldfstat.c oldlstat.c oldselect.c \ + oldselect-P.c oldselect-efault.c oldselect-efault-P.c \ + oldstat.c open.c open--secontext.c open--secontext_full.c \ ++ open--secontext_full_mismatch.c open--secontext_mismatch.c \ + open_tree.c open_tree-P.c openat.c openat--secontext.c \ +- openat--secontext_full.c openat2.c openat2-Xabbrev.c \ ++ openat--secontext_full.c openat--secontext_full_mismatch.c \ ++ openat--secontext_mismatch.c openat2.c openat2-Xabbrev.c \ + openat2-Xraw.c openat2-Xverbose.c openat2-v.c openat2-v-y.c \ + openat2-v-y-Xabbrev.c openat2-v-y-Xraw.c \ + openat2-v-y-Xverbose.c openat2-y.c orphaned_process_group.c \ +@@ -4753,7 +4971,8 @@ + xetpriority--pidns-translation.c xettimeofday.c zeroargc.c + DIST_SOURCES = $(libtests_a_SOURCES) _newselect.c _newselect-P.c \ + accept.c accept4.c access.c access--secontext.c \ +- access--secontext_full.c acct.c add_key.c adjtimex.c aio.c \ ++ access--secontext_full.c access--secontext_full_mismatch.c \ ++ access--secontext_mismatch.c acct.c add_key.c adjtimex.c aio.c \ + aio_pgetevents.c alarm.c answer.c attach-f-p.c \ + attach-f-p-cmd.c attach-p-cmd-cmd.c attach-p-cmd-p.c \ + block_reset_raise_run.c block_reset_run.c bpf.c \ +@@ -4762,7 +4981,8 @@ + bpf-success.c bpf-success-long-y.c bpf-success-v.c bpf-v.c \ + brk.c btrfs.c caps.c caps-abbrev.c chdir.c check_sigblock.c \ + check_sigign.c chmod.c chmod--secontext.c \ +- chmod--secontext_full.c chown.c chown32.c chroot.c \ ++ chmod--secontext_full.c chmod--secontext_full_mismatch.c \ ++ chmod--secontext_mismatch.c chown.c chown32.c chroot.c \ + clock_adjtime.c clock_adjtime64.c clock_nanosleep.c \ + clock_xettime.c clock_xettime64.c clone-flags.c clone3.c \ + clone3-Xabbrev.c clone3-Xraw.c clone3-Xverbose.c \ +@@ -4778,24 +4998,40 @@ + dup3-y.c dup3-yy.c epoll_create.c epoll_create1.c epoll_ctl.c \ + epoll_pwait.c epoll_pwait2.c epoll_pwait2-P.c epoll_pwait2-y.c \ + epoll_wait.c erestartsys.c eventfd.c execve.c \ +- execve--secontext.c execve--secontext_full.c execve-v.c \ +- execveat.c execveat--secontext.c execveat--secontext_full.c \ +- execveat-v.c faccessat.c faccessat--secontext.c \ +- faccessat--secontext_full.c faccessat-P.c faccessat-y.c \ ++ execve--secontext.c execve--secontext_full.c \ ++ execve--secontext_full_mismatch.c execve--secontext_mismatch.c \ ++ execve-v.c execveat.c execveat--secontext.c \ ++ execveat--secontext_full.c execveat--secontext_full_mismatch.c \ ++ execveat--secontext_mismatch.c execveat-v.c faccessat.c \ ++ faccessat--secontext.c faccessat--secontext_full.c \ ++ faccessat--secontext_full_mismatch.c \ ++ faccessat--secontext_mismatch.c faccessat-P.c faccessat-y.c \ + faccessat-y--secontext.c faccessat-y--secontext_full.c \ +- faccessat-yy.c faccessat2.c faccessat2-P.c faccessat2-y.c \ +- faccessat2-yy.c fadvise64.c fadvise64_64.c fallocate.c \ +- fanotify_init.c fanotify_mark.c fanotify_mark--secontext.c \ +- fanotify_mark--secontext_full.c fanotify_mark-Xabbrev.c \ ++ faccessat-y--secontext_full_mismatch.c \ ++ faccessat-y--secontext_mismatch.c faccessat-yy.c faccessat2.c \ ++ faccessat2-P.c faccessat2-y.c faccessat2-yy.c fadvise64.c \ ++ fadvise64_64.c fallocate.c fanotify_init.c fanotify_mark.c \ ++ fanotify_mark--secontext.c fanotify_mark--secontext_full.c \ ++ fanotify_mark--secontext_full_mismatch.c \ ++ fanotify_mark--secontext_mismatch.c fanotify_mark-Xabbrev.c \ + fanotify_mark-Xraw.c fanotify_mark-Xverbose.c fchdir.c \ + fchmod.c fchmod--secontext.c fchmod--secontext_full.c \ ++ fchmod--secontext_full_mismatch.c fchmod--secontext_mismatch.c \ + fchmod-y.c fchmod-y--secontext.c fchmod-y--secontext_full.c \ +- fchmodat.c fchmodat--secontext.c fchmodat--secontext_full.c \ +- fchown.c fchown32.c fchownat.c fchownat--secontext.c \ +- fchownat--secontext_full.c fcntl.c fcntl--pidns-translation.c \ +- fcntl64.c fcntl64--pidns-translation.c fdatasync.c fflush.c \ ++ fchmod-y--secontext_full_mismatch.c \ ++ fchmod-y--secontext_mismatch.c fchmodat.c \ ++ fchmodat--secontext.c fchmodat--secontext_full.c \ ++ fchmodat--secontext_full_mismatch.c \ ++ fchmodat--secontext_mismatch.c fchown.c fchown32.c fchownat.c \ ++ fchownat--secontext.c fchownat--secontext_full.c \ ++ fchownat--secontext_full_mismatch.c \ ++ fchownat--secontext_mismatch.c fcntl.c \ ++ fcntl--pidns-translation.c fcntl64.c \ ++ fcntl64--pidns-translation.c fdatasync.c fflush.c \ + file_handle.c file_handle--secontext.c \ +- file_handle--secontext_full.c filter-unavailable.c \ ++ file_handle--secontext_full.c \ ++ file_handle--secontext_full_mismatch.c \ ++ file_handle--secontext_mismatch.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 \ + fsconfig-P.c fsmount.c fsopen.c fspick.c fspick-P.c fstat.c \ +@@ -4882,6 +5118,7 @@ + landlock_create_ruleset-y.c landlock_restrict_self.c \ + landlock_restrict_self-y.c lchown.c lchown32.c link.c linkat.c \ + linkat--secontext.c linkat--secontext_full.c \ ++ linkat--secontext_full_mismatch.c linkat--secontext_mismatch.c \ + list_sigaction_signum.c llseek.c localtime.c lookup_dcookie.c \ + looping_threads.c lseek.c lstat.c lstat64.c madvise.c \ + maybe_switch_current_tcp.c \ +@@ -4935,8 +5172,10 @@ + old_mmap-v-none.c oldfstat.c oldlstat.c oldselect.c \ + oldselect-P.c oldselect-efault.c oldselect-efault-P.c \ + oldstat.c open.c open--secontext.c open--secontext_full.c \ ++ open--secontext_full_mismatch.c open--secontext_mismatch.c \ + open_tree.c open_tree-P.c openat.c openat--secontext.c \ +- openat--secontext_full.c openat2.c openat2-Xabbrev.c \ ++ openat--secontext_full.c openat--secontext_full_mismatch.c \ ++ openat--secontext_mismatch.c openat2.c openat2-Xabbrev.c \ + openat2-Xraw.c openat2-Xverbose.c openat2-v.c openat2-v-y.c \ + openat2-v-y-Xabbrev.c openat2-v-y-Xraw.c \ + openat2-v-y-Xverbose.c openat2-y.c orphaned_process_group.c \ +@@ -6212,66 +6451,126 @@ + secontext_EXECUTABLES = \ + access--secontext \ + access--secontext_full \ ++ access--secontext_full_mismatch \ ++ access--secontext_mismatch \ + chmod--secontext \ + chmod--secontext_full \ ++ chmod--secontext_full_mismatch \ ++ chmod--secontext_mismatch \ + execve--secontext \ + execve--secontext_full \ ++ execve--secontext_full_mismatch \ ++ execve--secontext_mismatch \ + execveat--secontext \ + execveat--secontext_full \ ++ execveat--secontext_full_mismatch \ ++ execveat--secontext_mismatch \ + faccessat--secontext \ + faccessat--secontext_full \ ++ faccessat--secontext_full_mismatch \ ++ faccessat--secontext_mismatch \ + faccessat-y--secontext \ + faccessat-y--secontext_full \ ++ faccessat-y--secontext_full_mismatch \ ++ faccessat-y--secontext_mismatch \ + fanotify_mark--secontext \ + fanotify_mark--secontext_full \ ++ fanotify_mark--secontext_full_mismatch \ ++ fanotify_mark--secontext_mismatch \ + fchmod--secontext \ + fchmod--secontext_full \ ++ fchmod--secontext_full_mismatch \ ++ fchmod--secontext_mismatch \ + fchmod-y--secontext \ + fchmod-y--secontext_full \ ++ fchmod-y--secontext_full_mismatch \ ++ fchmod-y--secontext_mismatch \ + fchmodat--secontext \ + fchmodat--secontext_full \ ++ fchmodat--secontext_full_mismatch \ ++ fchmodat--secontext_mismatch \ + fchownat--secontext \ + fchownat--secontext_full \ ++ fchownat--secontext_full_mismatch \ ++ fchownat--secontext_mismatch \ + file_handle--secontext \ + file_handle--secontext_full \ ++ file_handle--secontext_full_mismatch \ ++ file_handle--secontext_mismatch \ + linkat--secontext \ + linkat--secontext_full \ ++ linkat--secontext_full_mismatch \ ++ linkat--secontext_mismatch \ + open--secontext \ + open--secontext_full \ ++ open--secontext_full_mismatch \ ++ open--secontext_mismatch \ + openat--secontext \ + openat--secontext_full \ ++ openat--secontext_full_mismatch \ ++ openat--secontext_mismatch \ + # + + access__secontext_LDADD = $(LDADD) $(libselinux_LDADD) + access__secontext_full_LDADD = $(LDADD) $(libselinux_LDADD) ++access__secontext_full_mismatch_LDADD = $(LDADD) $(libselinux_LDADD) ++access__secontext_mismatch_LDADD = $(LDADD) $(libselinux_LDADD) + chmod__secontext_LDADD = $(LDADD) $(libselinux_LDADD) + chmod__secontext_full_LDADD = $(LDADD) $(libselinux_LDADD) ++chmod__secontext_full_mismatch_LDADD = $(LDADD) $(libselinux_LDADD) ++chmod__secontext_mismatch_LDADD = $(LDADD) $(libselinux_LDADD) + execve__secontext_LDADD = $(LDADD) $(libselinux_LDADD) + execve__secontext_full_LDADD = $(LDADD) $(libselinux_LDADD) ++execve__secontext_full_mismatch_LDADD = $(LDADD) $(libselinux_LDADD) ++execve__secontext_mismatch_LDADD = $(LDADD) $(libselinux_LDADD) + execveat__secontext_LDADD = $(LDADD) $(libselinux_LDADD) + execveat__secontext_full_LDADD = $(LDADD) $(libselinux_LDADD) ++execveat__secontext_full_mismatch_LDADD = $(LDADD) $(libselinux_LDADD) ++execveat__secontext_mismatch_LDADD = $(LDADD) $(libselinux_LDADD) + faccessat__secontext_LDADD = $(LDADD) $(libselinux_LDADD) + faccessat__secontext_full_LDADD = $(LDADD) $(libselinux_LDADD) ++faccessat__secontext_full_mismatch_LDADD = $(LDADD) $(libselinux_LDADD) ++faccessat__secontext_mismatch_LDADD = $(LDADD) $(libselinux_LDADD) + faccessat_y__secontext_LDADD = $(LDADD) $(libselinux_LDADD) + faccessat_y__secontext_full_LDADD = $(LDADD) $(libselinux_LDADD) ++faccessat_y__secontext_full_mismatch_LDADD = $(LDADD) $(libselinux_LDADD) ++faccessat_y__secontext_mismatch_LDADD = $(LDADD) $(libselinux_LDADD) + fanotify_mark__secontext_LDADD = $(LDADD) $(libselinux_LDADD) + fanotify_mark__secontext_full_LDADD = $(LDADD) $(libselinux_LDADD) ++fanotify_mark__secontext_full_mismatch_LDADD = $(LDADD) $(libselinux_LDADD) ++fanotify_mark__secontext_mismatch_LDADD = $(LDADD) $(libselinux_LDADD) + fchmod__secontext_LDADD = $(LDADD) $(libselinux_LDADD) + fchmod__secontext_full_LDADD = $(LDADD) $(libselinux_LDADD) ++fchmod__secontext_full_mismatch_LDADD = $(LDADD) $(libselinux_LDADD) ++fchmod__secontext_mismatch_LDADD = $(LDADD) $(libselinux_LDADD) + fchmod_y__secontext_LDADD = $(LDADD) $(libselinux_LDADD) + fchmod_y__secontext_full_LDADD = $(LDADD) $(libselinux_LDADD) ++fchmod_y__secontext_full_mismatch_LDADD = $(LDADD) $(libselinux_LDADD) ++fchmod_y__secontext_mismatch_LDADD = $(LDADD) $(libselinux_LDADD) + fchmodat__secontext_LDADD = $(LDADD) $(libselinux_LDADD) + fchmodat__secontext_full_LDADD = $(LDADD) $(libselinux_LDADD) ++fchmodat__secontext_full_mismatch_LDADD = $(LDADD) $(libselinux_LDADD) ++fchmodat__secontext_mismatch_LDADD = $(LDADD) $(libselinux_LDADD) + fchownat__secontext_LDADD = $(LDADD) $(libselinux_LDADD) + fchownat__secontext_full_LDADD = $(LDADD) $(libselinux_LDADD) ++fchownat__secontext_full_mismatch_LDADD = $(LDADD) $(libselinux_LDADD) ++fchownat__secontext_mismatch_LDADD = $(LDADD) $(libselinux_LDADD) + file_handle__secontext_LDADD = $(LDADD) $(libselinux_LDADD) + file_handle__secontext_full_LDADD = $(LDADD) $(libselinux_LDADD) ++file_handle__secontext_full_mismatch_LDADD = $(LDADD) $(libselinux_LDADD) ++file_handle__secontext_mismatch_LDADD = $(LDADD) $(libselinux_LDADD) + linkat__secontext_LDADD = $(LDADD) $(libselinux_LDADD) + linkat__secontext_full_LDADD = $(LDADD) $(libselinux_LDADD) ++linkat__secontext_full_mismatch_LDADD = $(LDADD) $(libselinux_LDADD) ++linkat__secontext_mismatch_LDADD = $(LDADD) $(libselinux_LDADD) + open__secontext_LDADD = $(LDADD) $(libselinux_LDADD) + open__secontext_full_LDADD = $(LDADD) $(libselinux_LDADD) ++open__secontext_full_mismatch_LDADD = $(LDADD) $(libselinux_LDADD) ++open__secontext_mismatch_LDADD = $(LDADD) $(libselinux_LDADD) + openat__secontext_LDADD = $(LDADD) $(libselinux_LDADD) + openat__secontext_full_LDADD = $(LDADD) $(libselinux_LDADD) ++openat__secontext_full_mismatch_LDADD = $(LDADD) $(libselinux_LDADD) ++openat__secontext_mismatch_LDADD = $(LDADD) $(libselinux_LDADD) + attach_f_p_LDADD = -lpthread $(LDADD) + count_f_LDADD = -lpthread $(LDADD) + delay_LDADD = $(clock_LIBS) $(LDADD) +@@ -6325,15 +6624,20 @@ + # Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in; do not edit. + GEN_TESTS = _newselect.gen.test _newselect-P.gen.test accept.gen.test \ + accept4.gen.test access.gen.test access--secontext.gen.test \ +- access--secontext_full.gen.test acct.gen.test add_key.gen.test \ +- adjtimex.gen.test aio.gen.test aio_pgetevents.gen.test \ +- alarm.gen.test bpf.gen.test bpf-obj_get_info_by_fd.gen.test \ ++ access--secontext_full.gen.test \ ++ access--secontext_full_mismatch.gen.test \ ++ access--secontext_mismatch.gen.test acct.gen.test \ ++ add_key.gen.test adjtimex.gen.test aio.gen.test \ ++ aio_pgetevents.gen.test alarm.gen.test bpf.gen.test \ ++ bpf-obj_get_info_by_fd.gen.test \ + bpf-obj_get_info_by_fd-prog.gen.test \ + bpf-obj_get_info_by_fd-prog-v.gen.test \ + bpf-obj_get_info_by_fd-v.gen.test bpf-v.gen.test \ + btrfs.gen.test chdir.gen.test chmod.gen.test \ + chmod--secontext.gen.test chmod--secontext_full.gen.test \ +- chown.gen.test chown32.gen.test chroot.gen.test clock.gen.test \ ++ chmod--secontext_full_mismatch.gen.test \ ++ chmod--secontext_mismatch.gen.test chown.gen.test \ ++ chown32.gen.test chroot.gen.test clock.gen.test \ + clock_adjtime.gen.test clock_adjtime64.gen.test \ + clock_nanosleep.gen.test clock_xettime.gen.test \ + clock_xettime64.gen.test clone3.gen.test \ +@@ -6356,36 +6660,53 @@ + epoll_pwait2-P.gen.test epoll_pwait2-y.gen.test \ + epoll_wait.gen.test erestartsys.gen.test \ + execve--secontext.gen.test execve--secontext_full.gen.test \ +- execveat.gen.test execveat--secontext.gen.test \ +- execveat--secontext_full.gen.test execveat-v.gen.test \ ++ execve--secontext_full_mismatch.gen.test \ ++ execve--secontext_mismatch.gen.test execveat.gen.test \ ++ execveat--secontext.gen.test execveat--secontext_full.gen.test \ ++ execveat--secontext_full_mismatch.gen.test \ ++ execveat--secontext_mismatch.gen.test execveat-v.gen.test \ + faccessat--secontext.gen.test \ +- faccessat--secontext_full.gen.test faccessat-P.gen.test \ ++ faccessat--secontext_full.gen.test \ ++ faccessat--secontext_full_mismatch.gen.test \ ++ faccessat--secontext_mismatch.gen.test faccessat-P.gen.test \ + faccessat-y.gen.test faccessat-y--secontext.gen.test \ +- faccessat-y--secontext_full.gen.test faccessat-yy.gen.test \ ++ faccessat-y--secontext_full.gen.test \ ++ faccessat-y--secontext_full_mismatch.gen.test \ ++ faccessat-y--secontext_mismatch.gen.test faccessat-yy.gen.test \ + faccessat2-P.gen.test faccessat2-y.gen.test \ + faccessat2-yy.gen.test fadvise64_64.gen.test \ + fallocate.gen.test fanotify_init.gen.test \ + fanotify_mark.gen.test fanotify_mark--secontext.gen.test \ + fanotify_mark--secontext_full.gen.test \ ++ fanotify_mark--secontext_full_mismatch.gen.test \ ++ fanotify_mark--secontext_mismatch.gen.test \ + fanotify_mark-Xabbrev.gen.test fanotify_mark-Xraw.gen.test \ + fanotify_mark-Xverbose.gen.test fchdir.gen.test \ + fchmod.gen.test fchmod--secontext.gen.test \ +- fchmod--secontext_full.gen.test fchmod-y.gen.test \ ++ fchmod--secontext_full.gen.test \ ++ fchmod--secontext_full_mismatch.gen.test \ ++ fchmod--secontext_mismatch.gen.test fchmod-y.gen.test \ + fchmod-y--secontext.gen.test fchmod-y--secontext_full.gen.test \ +- fchmodat.gen.test fchmodat--secontext.gen.test \ +- fchmodat--secontext_full.gen.test fchown.gen.test \ ++ fchmod-y--secontext_full_mismatch.gen.test \ ++ fchmod-y--secontext_mismatch.gen.test fchmodat.gen.test \ ++ fchmodat--secontext.gen.test fchmodat--secontext_full.gen.test \ ++ fchmodat--secontext_full_mismatch.gen.test \ ++ fchmodat--secontext_mismatch.gen.test fchown.gen.test \ + fchown32.gen.test fchownat.gen.test \ + fchownat--secontext.gen.test fchownat--secontext_full.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_handle--secontext.gen.test \ +- file_handle--secontext_full.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 fsopen.gen.test \ +- fspick.gen.test fspick-P.gen.test fstat.gen.test \ +- fstat-Xabbrev.gen.test fstat-Xraw.gen.test \ ++ fchownat--secontext_full_mismatch.gen.test \ ++ fchownat--secontext_mismatch.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_handle--secontext.gen.test \ ++ file_handle--secontext_full.gen.test \ ++ file_handle--secontext_full_mismatch.gen.test \ ++ file_handle--secontext_mismatch.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 \ ++ fsopen.gen.test fspick.gen.test fspick-P.gen.test \ ++ fstat.gen.test fstat-Xabbrev.gen.test fstat-Xraw.gen.test \ + fstat-Xverbose.gen.test fstat64.gen.test \ + fstat64-Xabbrev.gen.test fstat64-Xraw.gen.test \ + fstat64-Xverbose.gen.test fstatat64.gen.test fstatfs.gen.test \ +@@ -6512,8 +6833,10 @@ + landlock_restrict_self-y.gen.test lchown.gen.test \ + lchown32.gen.test link.gen.test linkat.gen.test \ + linkat--secontext.gen.test linkat--secontext_full.gen.test \ +- lookup_dcookie.gen.test lstat.gen.test lstat64.gen.test \ +- madvise.gen.test maybe_switch_current_tcp.gen.test \ ++ linkat--secontext_full_mismatch.gen.test \ ++ linkat--secontext_mismatch.gen.test lookup_dcookie.gen.test \ ++ lstat.gen.test lstat64.gen.test madvise.gen.test \ ++ maybe_switch_current_tcp.gen.test \ + maybe_switch_current_tcp--quiet-thread-execve.gen.test \ + mbind.gen.test mbind-Xabbrev.gen.test mbind-Xraw.gen.test \ + mbind-Xverbose.gen.test membarrier.gen.test \ +@@ -6582,16 +6905,19 @@ + oldselect.gen.test oldselect-P.gen.test \ + oldselect-efault.gen.test oldselect-efault-P.gen.test \ + oldstat.gen.test open.gen.test open--secontext.gen.test \ +- open--secontext_full.gen.test open_tree.gen.test \ ++ open--secontext_full.gen.test \ ++ open--secontext_full_mismatch.gen.test \ ++ open--secontext_mismatch.gen.test open_tree.gen.test \ + open_tree-P.gen.test openat.gen.test \ + openat--secontext.gen.test openat--secontext_full.gen.test \ +- openat2.gen.test openat2-Xabbrev.gen.test \ +- openat2-Xraw.gen.test openat2-Xverbose.gen.test \ +- openat2-v.gen.test openat2-v-y.gen.test \ +- openat2-v-y-Xabbrev.gen.test openat2-v-y-Xraw.gen.test \ +- openat2-v-y-Xverbose.gen.test openat2-y.gen.test \ +- orphaned_process_group.gen.test osf_utimes.gen.test \ +- pause.gen.test perf_event_open.gen.test \ ++ openat--secontext_full_mismatch.gen.test \ ++ openat--secontext_mismatch.gen.test openat2.gen.test \ ++ openat2-Xabbrev.gen.test openat2-Xraw.gen.test \ ++ openat2-Xverbose.gen.test openat2-v.gen.test \ ++ openat2-v-y.gen.test openat2-v-y-Xabbrev.gen.test \ ++ openat2-v-y-Xraw.gen.test openat2-v-y-Xverbose.gen.test \ ++ openat2-y.gen.test orphaned_process_group.gen.test \ ++ osf_utimes.gen.test pause.gen.test perf_event_open.gen.test \ + perf_event_open_nonverbose.gen.test \ + perf_event_open_unabbrev.gen.test personality-Xabbrev.gen.test \ + personality-Xraw.gen.test personality-Xverbose.gen.test \ +@@ -7155,6 +7481,14 @@ + @rm -f access--secontext_full$(EXEEXT) + $(AM_V_CCLD)$(LINK) $(access__secontext_full_OBJECTS) $(access__secontext_full_LDADD) $(LIBS) + ++access--secontext_full_mismatch$(EXEEXT): $(access__secontext_full_mismatch_OBJECTS) $(access__secontext_full_mismatch_DEPENDENCIES) $(EXTRA_access__secontext_full_mismatch_DEPENDENCIES) ++ @rm -f access--secontext_full_mismatch$(EXEEXT) ++ $(AM_V_CCLD)$(LINK) $(access__secontext_full_mismatch_OBJECTS) $(access__secontext_full_mismatch_LDADD) $(LIBS) ++ ++access--secontext_mismatch$(EXEEXT): $(access__secontext_mismatch_OBJECTS) $(access__secontext_mismatch_DEPENDENCIES) $(EXTRA_access__secontext_mismatch_DEPENDENCIES) ++ @rm -f access--secontext_mismatch$(EXEEXT) ++ $(AM_V_CCLD)$(LINK) $(access__secontext_mismatch_OBJECTS) $(access__secontext_mismatch_LDADD) $(LIBS) ++ + acct$(EXEEXT): $(acct_OBJECTS) $(acct_DEPENDENCIES) $(EXTRA_acct_DEPENDENCIES) + @rm -f acct$(EXEEXT) + $(AM_V_CCLD)$(LINK) $(acct_OBJECTS) $(acct_LDADD) $(LIBS) +@@ -7283,6 +7617,14 @@ + @rm -f chmod--secontext_full$(EXEEXT) + $(AM_V_CCLD)$(LINK) $(chmod__secontext_full_OBJECTS) $(chmod__secontext_full_LDADD) $(LIBS) + ++chmod--secontext_full_mismatch$(EXEEXT): $(chmod__secontext_full_mismatch_OBJECTS) $(chmod__secontext_full_mismatch_DEPENDENCIES) $(EXTRA_chmod__secontext_full_mismatch_DEPENDENCIES) ++ @rm -f chmod--secontext_full_mismatch$(EXEEXT) ++ $(AM_V_CCLD)$(LINK) $(chmod__secontext_full_mismatch_OBJECTS) $(chmod__secontext_full_mismatch_LDADD) $(LIBS) ++ ++chmod--secontext_mismatch$(EXEEXT): $(chmod__secontext_mismatch_OBJECTS) $(chmod__secontext_mismatch_DEPENDENCIES) $(EXTRA_chmod__secontext_mismatch_DEPENDENCIES) ++ @rm -f chmod--secontext_mismatch$(EXEEXT) ++ $(AM_V_CCLD)$(LINK) $(chmod__secontext_mismatch_OBJECTS) $(chmod__secontext_mismatch_LDADD) $(LIBS) ++ + chown$(EXEEXT): $(chown_OBJECTS) $(chown_DEPENDENCIES) $(EXTRA_chown_DEPENDENCIES) + @rm -f chown$(EXEEXT) + $(AM_V_CCLD)$(LINK) $(chown_OBJECTS) $(chown_LDADD) $(LIBS) +@@ -7527,6 +7869,14 @@ + @rm -f execve--secontext_full$(EXEEXT) + $(AM_V_CCLD)$(LINK) $(execve__secontext_full_OBJECTS) $(execve__secontext_full_LDADD) $(LIBS) + ++execve--secontext_full_mismatch$(EXEEXT): $(execve__secontext_full_mismatch_OBJECTS) $(execve__secontext_full_mismatch_DEPENDENCIES) $(EXTRA_execve__secontext_full_mismatch_DEPENDENCIES) ++ @rm -f execve--secontext_full_mismatch$(EXEEXT) ++ $(AM_V_CCLD)$(LINK) $(execve__secontext_full_mismatch_OBJECTS) $(execve__secontext_full_mismatch_LDADD) $(LIBS) ++ ++execve--secontext_mismatch$(EXEEXT): $(execve__secontext_mismatch_OBJECTS) $(execve__secontext_mismatch_DEPENDENCIES) $(EXTRA_execve__secontext_mismatch_DEPENDENCIES) ++ @rm -f execve--secontext_mismatch$(EXEEXT) ++ $(AM_V_CCLD)$(LINK) $(execve__secontext_mismatch_OBJECTS) $(execve__secontext_mismatch_LDADD) $(LIBS) ++ + execve-v$(EXEEXT): $(execve_v_OBJECTS) $(execve_v_DEPENDENCIES) $(EXTRA_execve_v_DEPENDENCIES) + @rm -f execve-v$(EXEEXT) + $(AM_V_CCLD)$(LINK) $(execve_v_OBJECTS) $(execve_v_LDADD) $(LIBS) +@@ -7543,6 +7893,14 @@ + @rm -f execveat--secontext_full$(EXEEXT) + $(AM_V_CCLD)$(LINK) $(execveat__secontext_full_OBJECTS) $(execveat__secontext_full_LDADD) $(LIBS) + ++execveat--secontext_full_mismatch$(EXEEXT): $(execveat__secontext_full_mismatch_OBJECTS) $(execveat__secontext_full_mismatch_DEPENDENCIES) $(EXTRA_execveat__secontext_full_mismatch_DEPENDENCIES) ++ @rm -f execveat--secontext_full_mismatch$(EXEEXT) ++ $(AM_V_CCLD)$(LINK) $(execveat__secontext_full_mismatch_OBJECTS) $(execveat__secontext_full_mismatch_LDADD) $(LIBS) ++ ++execveat--secontext_mismatch$(EXEEXT): $(execveat__secontext_mismatch_OBJECTS) $(execveat__secontext_mismatch_DEPENDENCIES) $(EXTRA_execveat__secontext_mismatch_DEPENDENCIES) ++ @rm -f execveat--secontext_mismatch$(EXEEXT) ++ $(AM_V_CCLD)$(LINK) $(execveat__secontext_mismatch_OBJECTS) $(execveat__secontext_mismatch_LDADD) $(LIBS) ++ + execveat-v$(EXEEXT): $(execveat_v_OBJECTS) $(execveat_v_DEPENDENCIES) $(EXTRA_execveat_v_DEPENDENCIES) + @rm -f execveat-v$(EXEEXT) + $(AM_V_CCLD)$(LINK) $(execveat_v_OBJECTS) $(execveat_v_LDADD) $(LIBS) +@@ -7559,6 +7917,14 @@ + @rm -f faccessat--secontext_full$(EXEEXT) + $(AM_V_CCLD)$(LINK) $(faccessat__secontext_full_OBJECTS) $(faccessat__secontext_full_LDADD) $(LIBS) + ++faccessat--secontext_full_mismatch$(EXEEXT): $(faccessat__secontext_full_mismatch_OBJECTS) $(faccessat__secontext_full_mismatch_DEPENDENCIES) $(EXTRA_faccessat__secontext_full_mismatch_DEPENDENCIES) ++ @rm -f faccessat--secontext_full_mismatch$(EXEEXT) ++ $(AM_V_CCLD)$(LINK) $(faccessat__secontext_full_mismatch_OBJECTS) $(faccessat__secontext_full_mismatch_LDADD) $(LIBS) ++ ++faccessat--secontext_mismatch$(EXEEXT): $(faccessat__secontext_mismatch_OBJECTS) $(faccessat__secontext_mismatch_DEPENDENCIES) $(EXTRA_faccessat__secontext_mismatch_DEPENDENCIES) ++ @rm -f faccessat--secontext_mismatch$(EXEEXT) ++ $(AM_V_CCLD)$(LINK) $(faccessat__secontext_mismatch_OBJECTS) $(faccessat__secontext_mismatch_LDADD) $(LIBS) ++ + faccessat-P$(EXEEXT): $(faccessat_P_OBJECTS) $(faccessat_P_DEPENDENCIES) $(EXTRA_faccessat_P_DEPENDENCIES) + @rm -f faccessat-P$(EXEEXT) + $(AM_V_CCLD)$(LINK) $(faccessat_P_OBJECTS) $(faccessat_P_LDADD) $(LIBS) +@@ -7575,6 +7941,14 @@ + @rm -f faccessat-y--secontext_full$(EXEEXT) + $(AM_V_CCLD)$(LINK) $(faccessat_y__secontext_full_OBJECTS) $(faccessat_y__secontext_full_LDADD) $(LIBS) + ++faccessat-y--secontext_full_mismatch$(EXEEXT): $(faccessat_y__secontext_full_mismatch_OBJECTS) $(faccessat_y__secontext_full_mismatch_DEPENDENCIES) $(EXTRA_faccessat_y__secontext_full_mismatch_DEPENDENCIES) ++ @rm -f faccessat-y--secontext_full_mismatch$(EXEEXT) ++ $(AM_V_CCLD)$(LINK) $(faccessat_y__secontext_full_mismatch_OBJECTS) $(faccessat_y__secontext_full_mismatch_LDADD) $(LIBS) ++ ++faccessat-y--secontext_mismatch$(EXEEXT): $(faccessat_y__secontext_mismatch_OBJECTS) $(faccessat_y__secontext_mismatch_DEPENDENCIES) $(EXTRA_faccessat_y__secontext_mismatch_DEPENDENCIES) ++ @rm -f faccessat-y--secontext_mismatch$(EXEEXT) ++ $(AM_V_CCLD)$(LINK) $(faccessat_y__secontext_mismatch_OBJECTS) $(faccessat_y__secontext_mismatch_LDADD) $(LIBS) ++ + faccessat-yy$(EXEEXT): $(faccessat_yy_OBJECTS) $(faccessat_yy_DEPENDENCIES) $(EXTRA_faccessat_yy_DEPENDENCIES) + @rm -f faccessat-yy$(EXEEXT) + $(AM_V_CCLD)$(LINK) $(faccessat_yy_OBJECTS) $(faccessat_yy_LDADD) $(LIBS) +@@ -7623,6 +7997,14 @@ + @rm -f fanotify_mark--secontext_full$(EXEEXT) + $(AM_V_CCLD)$(LINK) $(fanotify_mark__secontext_full_OBJECTS) $(fanotify_mark__secontext_full_LDADD) $(LIBS) + ++fanotify_mark--secontext_full_mismatch$(EXEEXT): $(fanotify_mark__secontext_full_mismatch_OBJECTS) $(fanotify_mark__secontext_full_mismatch_DEPENDENCIES) $(EXTRA_fanotify_mark__secontext_full_mismatch_DEPENDENCIES) ++ @rm -f fanotify_mark--secontext_full_mismatch$(EXEEXT) ++ $(AM_V_CCLD)$(LINK) $(fanotify_mark__secontext_full_mismatch_OBJECTS) $(fanotify_mark__secontext_full_mismatch_LDADD) $(LIBS) ++ ++fanotify_mark--secontext_mismatch$(EXEEXT): $(fanotify_mark__secontext_mismatch_OBJECTS) $(fanotify_mark__secontext_mismatch_DEPENDENCIES) $(EXTRA_fanotify_mark__secontext_mismatch_DEPENDENCIES) ++ @rm -f fanotify_mark--secontext_mismatch$(EXEEXT) ++ $(AM_V_CCLD)$(LINK) $(fanotify_mark__secontext_mismatch_OBJECTS) $(fanotify_mark__secontext_mismatch_LDADD) $(LIBS) ++ + fanotify_mark-Xabbrev$(EXEEXT): $(fanotify_mark_Xabbrev_OBJECTS) $(fanotify_mark_Xabbrev_DEPENDENCIES) $(EXTRA_fanotify_mark_Xabbrev_DEPENDENCIES) + @rm -f fanotify_mark-Xabbrev$(EXEEXT) + $(AM_V_CCLD)$(LINK) $(fanotify_mark_Xabbrev_OBJECTS) $(fanotify_mark_Xabbrev_LDADD) $(LIBS) +@@ -7651,6 +8033,14 @@ + @rm -f fchmod--secontext_full$(EXEEXT) + $(AM_V_CCLD)$(LINK) $(fchmod__secontext_full_OBJECTS) $(fchmod__secontext_full_LDADD) $(LIBS) + ++fchmod--secontext_full_mismatch$(EXEEXT): $(fchmod__secontext_full_mismatch_OBJECTS) $(fchmod__secontext_full_mismatch_DEPENDENCIES) $(EXTRA_fchmod__secontext_full_mismatch_DEPENDENCIES) ++ @rm -f fchmod--secontext_full_mismatch$(EXEEXT) ++ $(AM_V_CCLD)$(LINK) $(fchmod__secontext_full_mismatch_OBJECTS) $(fchmod__secontext_full_mismatch_LDADD) $(LIBS) ++ ++fchmod--secontext_mismatch$(EXEEXT): $(fchmod__secontext_mismatch_OBJECTS) $(fchmod__secontext_mismatch_DEPENDENCIES) $(EXTRA_fchmod__secontext_mismatch_DEPENDENCIES) ++ @rm -f fchmod--secontext_mismatch$(EXEEXT) ++ $(AM_V_CCLD)$(LINK) $(fchmod__secontext_mismatch_OBJECTS) $(fchmod__secontext_mismatch_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) +@@ -7663,6 +8053,14 @@ + @rm -f fchmod-y--secontext_full$(EXEEXT) + $(AM_V_CCLD)$(LINK) $(fchmod_y__secontext_full_OBJECTS) $(fchmod_y__secontext_full_LDADD) $(LIBS) + ++fchmod-y--secontext_full_mismatch$(EXEEXT): $(fchmod_y__secontext_full_mismatch_OBJECTS) $(fchmod_y__secontext_full_mismatch_DEPENDENCIES) $(EXTRA_fchmod_y__secontext_full_mismatch_DEPENDENCIES) ++ @rm -f fchmod-y--secontext_full_mismatch$(EXEEXT) ++ $(AM_V_CCLD)$(LINK) $(fchmod_y__secontext_full_mismatch_OBJECTS) $(fchmod_y__secontext_full_mismatch_LDADD) $(LIBS) ++ ++fchmod-y--secontext_mismatch$(EXEEXT): $(fchmod_y__secontext_mismatch_OBJECTS) $(fchmod_y__secontext_mismatch_DEPENDENCIES) $(EXTRA_fchmod_y__secontext_mismatch_DEPENDENCIES) ++ @rm -f fchmod-y--secontext_mismatch$(EXEEXT) ++ $(AM_V_CCLD)$(LINK) $(fchmod_y__secontext_mismatch_OBJECTS) $(fchmod_y__secontext_mismatch_LDADD) $(LIBS) ++ + fchmodat$(EXEEXT): $(fchmodat_OBJECTS) $(fchmodat_DEPENDENCIES) $(EXTRA_fchmodat_DEPENDENCIES) + @rm -f fchmodat$(EXEEXT) + $(AM_V_CCLD)$(LINK) $(fchmodat_OBJECTS) $(fchmodat_LDADD) $(LIBS) +@@ -7675,6 +8073,14 @@ + @rm -f fchmodat--secontext_full$(EXEEXT) + $(AM_V_CCLD)$(LINK) $(fchmodat__secontext_full_OBJECTS) $(fchmodat__secontext_full_LDADD) $(LIBS) + ++fchmodat--secontext_full_mismatch$(EXEEXT): $(fchmodat__secontext_full_mismatch_OBJECTS) $(fchmodat__secontext_full_mismatch_DEPENDENCIES) $(EXTRA_fchmodat__secontext_full_mismatch_DEPENDENCIES) ++ @rm -f fchmodat--secontext_full_mismatch$(EXEEXT) ++ $(AM_V_CCLD)$(LINK) $(fchmodat__secontext_full_mismatch_OBJECTS) $(fchmodat__secontext_full_mismatch_LDADD) $(LIBS) ++ ++fchmodat--secontext_mismatch$(EXEEXT): $(fchmodat__secontext_mismatch_OBJECTS) $(fchmodat__secontext_mismatch_DEPENDENCIES) $(EXTRA_fchmodat__secontext_mismatch_DEPENDENCIES) ++ @rm -f fchmodat--secontext_mismatch$(EXEEXT) ++ $(AM_V_CCLD)$(LINK) $(fchmodat__secontext_mismatch_OBJECTS) $(fchmodat__secontext_mismatch_LDADD) $(LIBS) ++ + fchown$(EXEEXT): $(fchown_OBJECTS) $(fchown_DEPENDENCIES) $(EXTRA_fchown_DEPENDENCIES) + @rm -f fchown$(EXEEXT) + $(AM_V_CCLD)$(LINK) $(fchown_OBJECTS) $(fchown_LDADD) $(LIBS) +@@ -7695,6 +8101,14 @@ + @rm -f fchownat--secontext_full$(EXEEXT) + $(AM_V_CCLD)$(LINK) $(fchownat__secontext_full_OBJECTS) $(fchownat__secontext_full_LDADD) $(LIBS) + ++fchownat--secontext_full_mismatch$(EXEEXT): $(fchownat__secontext_full_mismatch_OBJECTS) $(fchownat__secontext_full_mismatch_DEPENDENCIES) $(EXTRA_fchownat__secontext_full_mismatch_DEPENDENCIES) ++ @rm -f fchownat--secontext_full_mismatch$(EXEEXT) ++ $(AM_V_CCLD)$(LINK) $(fchownat__secontext_full_mismatch_OBJECTS) $(fchownat__secontext_full_mismatch_LDADD) $(LIBS) ++ ++fchownat--secontext_mismatch$(EXEEXT): $(fchownat__secontext_mismatch_OBJECTS) $(fchownat__secontext_mismatch_DEPENDENCIES) $(EXTRA_fchownat__secontext_mismatch_DEPENDENCIES) ++ @rm -f fchownat--secontext_mismatch$(EXEEXT) ++ $(AM_V_CCLD)$(LINK) $(fchownat__secontext_mismatch_OBJECTS) $(fchownat__secontext_mismatch_LDADD) $(LIBS) ++ + fcntl$(EXEEXT): $(fcntl_OBJECTS) $(fcntl_DEPENDENCIES) $(EXTRA_fcntl_DEPENDENCIES) + @rm -f fcntl$(EXEEXT) + $(AM_V_CCLD)$(LINK) $(fcntl_OBJECTS) $(fcntl_LDADD) $(LIBS) +@@ -7731,6 +8145,14 @@ + @rm -f file_handle--secontext_full$(EXEEXT) + $(AM_V_CCLD)$(LINK) $(file_handle__secontext_full_OBJECTS) $(file_handle__secontext_full_LDADD) $(LIBS) + ++file_handle--secontext_full_mismatch$(EXEEXT): $(file_handle__secontext_full_mismatch_OBJECTS) $(file_handle__secontext_full_mismatch_DEPENDENCIES) $(EXTRA_file_handle__secontext_full_mismatch_DEPENDENCIES) ++ @rm -f file_handle--secontext_full_mismatch$(EXEEXT) ++ $(AM_V_CCLD)$(LINK) $(file_handle__secontext_full_mismatch_OBJECTS) $(file_handle__secontext_full_mismatch_LDADD) $(LIBS) ++ ++file_handle--secontext_mismatch$(EXEEXT): $(file_handle__secontext_mismatch_OBJECTS) $(file_handle__secontext_mismatch_DEPENDENCIES) $(EXTRA_file_handle__secontext_mismatch_DEPENDENCIES) ++ @rm -f file_handle--secontext_mismatch$(EXEEXT) ++ $(AM_V_CCLD)$(LINK) $(file_handle__secontext_mismatch_OBJECTS) $(file_handle__secontext_mismatch_LDADD) $(LIBS) ++ + filter-unavailable$(EXEEXT): $(filter_unavailable_OBJECTS) $(filter_unavailable_DEPENDENCIES) $(EXTRA_filter_unavailable_DEPENDENCIES) + @rm -f filter-unavailable$(EXEEXT) + $(AM_V_CCLD)$(LINK) $(filter_unavailable_OBJECTS) $(filter_unavailable_LDADD) $(LIBS) +@@ -8775,6 +9197,14 @@ + @rm -f linkat--secontext_full$(EXEEXT) + $(AM_V_CCLD)$(LINK) $(linkat__secontext_full_OBJECTS) $(linkat__secontext_full_LDADD) $(LIBS) + ++linkat--secontext_full_mismatch$(EXEEXT): $(linkat__secontext_full_mismatch_OBJECTS) $(linkat__secontext_full_mismatch_DEPENDENCIES) $(EXTRA_linkat__secontext_full_mismatch_DEPENDENCIES) ++ @rm -f linkat--secontext_full_mismatch$(EXEEXT) ++ $(AM_V_CCLD)$(LINK) $(linkat__secontext_full_mismatch_OBJECTS) $(linkat__secontext_full_mismatch_LDADD) $(LIBS) ++ ++linkat--secontext_mismatch$(EXEEXT): $(linkat__secontext_mismatch_OBJECTS) $(linkat__secontext_mismatch_DEPENDENCIES) $(EXTRA_linkat__secontext_mismatch_DEPENDENCIES) ++ @rm -f linkat--secontext_mismatch$(EXEEXT) ++ $(AM_V_CCLD)$(LINK) $(linkat__secontext_mismatch_OBJECTS) $(linkat__secontext_mismatch_LDADD) $(LIBS) ++ + list_sigaction_signum$(EXEEXT): $(list_sigaction_signum_OBJECTS) $(list_sigaction_signum_DEPENDENCIES) $(EXTRA_list_sigaction_signum_DEPENDENCIES) + @rm -f list_sigaction_signum$(EXEEXT) + $(AM_V_CCLD)$(LINK) $(list_sigaction_signum_OBJECTS) $(list_sigaction_signum_LDADD) $(LIBS) +@@ -9423,6 +9853,14 @@ + @rm -f open--secontext_full$(EXEEXT) + $(AM_V_CCLD)$(LINK) $(open__secontext_full_OBJECTS) $(open__secontext_full_LDADD) $(LIBS) + ++open--secontext_full_mismatch$(EXEEXT): $(open__secontext_full_mismatch_OBJECTS) $(open__secontext_full_mismatch_DEPENDENCIES) $(EXTRA_open__secontext_full_mismatch_DEPENDENCIES) ++ @rm -f open--secontext_full_mismatch$(EXEEXT) ++ $(AM_V_CCLD)$(LINK) $(open__secontext_full_mismatch_OBJECTS) $(open__secontext_full_mismatch_LDADD) $(LIBS) ++ ++open--secontext_mismatch$(EXEEXT): $(open__secontext_mismatch_OBJECTS) $(open__secontext_mismatch_DEPENDENCIES) $(EXTRA_open__secontext_mismatch_DEPENDENCIES) ++ @rm -f open--secontext_mismatch$(EXEEXT) ++ $(AM_V_CCLD)$(LINK) $(open__secontext_mismatch_OBJECTS) $(open__secontext_mismatch_LDADD) $(LIBS) ++ + open_tree$(EXEEXT): $(open_tree_OBJECTS) $(open_tree_DEPENDENCIES) $(EXTRA_open_tree_DEPENDENCIES) + @rm -f open_tree$(EXEEXT) + $(AM_V_CCLD)$(LINK) $(open_tree_OBJECTS) $(open_tree_LDADD) $(LIBS) +@@ -9443,6 +9881,14 @@ + @rm -f openat--secontext_full$(EXEEXT) + $(AM_V_CCLD)$(LINK) $(openat__secontext_full_OBJECTS) $(openat__secontext_full_LDADD) $(LIBS) + ++openat--secontext_full_mismatch$(EXEEXT): $(openat__secontext_full_mismatch_OBJECTS) $(openat__secontext_full_mismatch_DEPENDENCIES) $(EXTRA_openat__secontext_full_mismatch_DEPENDENCIES) ++ @rm -f openat--secontext_full_mismatch$(EXEEXT) ++ $(AM_V_CCLD)$(LINK) $(openat__secontext_full_mismatch_OBJECTS) $(openat__secontext_full_mismatch_LDADD) $(LIBS) ++ ++openat--secontext_mismatch$(EXEEXT): $(openat__secontext_mismatch_OBJECTS) $(openat__secontext_mismatch_DEPENDENCIES) $(EXTRA_openat__secontext_mismatch_DEPENDENCIES) ++ @rm -f openat--secontext_mismatch$(EXEEXT) ++ $(AM_V_CCLD)$(LINK) $(openat__secontext_mismatch_OBJECTS) $(openat__secontext_mismatch_LDADD) $(LIBS) ++ + openat2$(EXEEXT): $(openat2_OBJECTS) $(openat2_DEPENDENCIES) $(EXTRA_openat2_DEPENDENCIES) + @rm -f openat2$(EXEEXT) + $(AM_V_CCLD)$(LINK) $(openat2_OBJECTS) $(openat2_LDADD) $(LIBS) +@@ -10835,6 +11281,8 @@ + @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/accept4.Po@am__quote@ # am--include-marker + @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/access--secontext.Po@am__quote@ # am--include-marker + @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/access--secontext_full.Po@am__quote@ # am--include-marker ++@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/access--secontext_full_mismatch.Po@am__quote@ # am--include-marker ++@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/access--secontext_mismatch.Po@am__quote@ # am--include-marker + @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/access.Po@am__quote@ # am--include-marker + @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/acct.Po@am__quote@ # am--include-marker + @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/add_key.Po@am__quote@ # am--include-marker +@@ -10867,6 +11315,8 @@ + @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/check_sigign.Po@am__quote@ # am--include-marker + @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/chmod--secontext.Po@am__quote@ # am--include-marker + @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/chmod--secontext_full.Po@am__quote@ # am--include-marker ++@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/chmod--secontext_full_mismatch.Po@am__quote@ # am--include-marker ++@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/chmod--secontext_mismatch.Po@am__quote@ # am--include-marker + @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/chmod.Po@am__quote@ # am--include-marker + @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/chown.Po@am__quote@ # am--include-marker + @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/chown32.Po@am__quote@ # am--include-marker +@@ -10928,17 +11378,25 @@ + @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/eventfd.Po@am__quote@ # am--include-marker + @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/execve--secontext.Po@am__quote@ # am--include-marker + @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/execve--secontext_full.Po@am__quote@ # am--include-marker ++@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/execve--secontext_full_mismatch.Po@am__quote@ # am--include-marker ++@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/execve--secontext_mismatch.Po@am__quote@ # am--include-marker + @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/execve-v.Po@am__quote@ # am--include-marker + @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/execve.Po@am__quote@ # am--include-marker + @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/execveat--secontext.Po@am__quote@ # am--include-marker + @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/execveat--secontext_full.Po@am__quote@ # am--include-marker ++@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/execveat--secontext_full_mismatch.Po@am__quote@ # am--include-marker ++@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/execveat--secontext_mismatch.Po@am__quote@ # am--include-marker + @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/execveat-v.Po@am__quote@ # am--include-marker + @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/execveat.Po@am__quote@ # am--include-marker + @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/faccessat--secontext.Po@am__quote@ # am--include-marker + @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/faccessat--secontext_full.Po@am__quote@ # am--include-marker ++@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/faccessat--secontext_full_mismatch.Po@am__quote@ # am--include-marker ++@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/faccessat--secontext_mismatch.Po@am__quote@ # am--include-marker + @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/faccessat-P.Po@am__quote@ # am--include-marker + @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/faccessat-y--secontext.Po@am__quote@ # am--include-marker + @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/faccessat-y--secontext_full.Po@am__quote@ # am--include-marker ++@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/faccessat-y--secontext_full_mismatch.Po@am__quote@ # am--include-marker ++@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/faccessat-y--secontext_mismatch.Po@am__quote@ # am--include-marker + @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/faccessat-y.Po@am__quote@ # am--include-marker + @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/faccessat-yy.Po@am__quote@ # am--include-marker + @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/faccessat.Po@am__quote@ # am--include-marker +@@ -10952,6 +11410,8 @@ + @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/fanotify_init.Po@am__quote@ # am--include-marker + @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/fanotify_mark--secontext.Po@am__quote@ # am--include-marker + @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/fanotify_mark--secontext_full.Po@am__quote@ # am--include-marker ++@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/fanotify_mark--secontext_full_mismatch.Po@am__quote@ # am--include-marker ++@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/fanotify_mark--secontext_mismatch.Po@am__quote@ # am--include-marker + @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/fanotify_mark-Xabbrev.Po@am__quote@ # am--include-marker + @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/fanotify_mark-Xraw.Po@am__quote@ # am--include-marker + @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/fanotify_mark-Xverbose.Po@am__quote@ # am--include-marker +@@ -10959,17 +11419,25 @@ + @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/fchdir.Po@am__quote@ # am--include-marker + @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/fchmod--secontext.Po@am__quote@ # am--include-marker + @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/fchmod--secontext_full.Po@am__quote@ # am--include-marker ++@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/fchmod--secontext_full_mismatch.Po@am__quote@ # am--include-marker ++@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/fchmod--secontext_mismatch.Po@am__quote@ # am--include-marker + @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/fchmod-y--secontext.Po@am__quote@ # am--include-marker + @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/fchmod-y--secontext_full.Po@am__quote@ # am--include-marker ++@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/fchmod-y--secontext_full_mismatch.Po@am__quote@ # am--include-marker ++@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/fchmod-y--secontext_mismatch.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--secontext.Po@am__quote@ # am--include-marker + @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/fchmodat--secontext_full.Po@am__quote@ # am--include-marker ++@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/fchmodat--secontext_full_mismatch.Po@am__quote@ # am--include-marker ++@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/fchmodat--secontext_mismatch.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 + @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/fchown32.Po@am__quote@ # am--include-marker + @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/fchownat--secontext.Po@am__quote@ # am--include-marker + @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/fchownat--secontext_full.Po@am__quote@ # am--include-marker ++@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/fchownat--secontext_full_mismatch.Po@am__quote@ # am--include-marker ++@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/fchownat--secontext_mismatch.Po@am__quote@ # am--include-marker + @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/fchownat.Po@am__quote@ # am--include-marker + @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/fcntl--pidns-translation.Po@am__quote@ # am--include-marker + @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/fcntl.Po@am__quote@ # am--include-marker +@@ -10979,6 +11447,8 @@ + @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/fflush.Po@am__quote@ # am--include-marker + @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/file_handle--secontext.Po@am__quote@ # am--include-marker + @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/file_handle--secontext_full.Po@am__quote@ # am--include-marker ++@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/file_handle--secontext_full_mismatch.Po@am__quote@ # am--include-marker ++@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/file_handle--secontext_mismatch.Po@am__quote@ # am--include-marker + @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/file_handle.Po@am__quote@ # am--include-marker + @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/filter-unavailable.Po@am__quote@ # am--include-marker + @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/filter_seccomp-flag.Po@am__quote@ # am--include-marker +@@ -11276,6 +11746,8 @@ + @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/link.Po@am__quote@ # am--include-marker + @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/linkat--secontext.Po@am__quote@ # am--include-marker + @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/linkat--secontext_full.Po@am__quote@ # am--include-marker ++@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/linkat--secontext_full_mismatch.Po@am__quote@ # am--include-marker ++@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/linkat--secontext_mismatch.Po@am__quote@ # am--include-marker + @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/linkat.Po@am__quote@ # am--include-marker + @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/list_sigaction_signum.Po@am__quote@ # am--include-marker + @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/llseek.Po@am__quote@ # am--include-marker +@@ -11438,11 +11910,15 @@ + @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/oldstat.Po@am__quote@ # am--include-marker + @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/open--secontext.Po@am__quote@ # am--include-marker + @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/open--secontext_full.Po@am__quote@ # am--include-marker ++@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/open--secontext_full_mismatch.Po@am__quote@ # am--include-marker ++@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/open--secontext_mismatch.Po@am__quote@ # am--include-marker + @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/open.Po@am__quote@ # am--include-marker + @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/open_tree-P.Po@am__quote@ # am--include-marker + @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/open_tree.Po@am__quote@ # am--include-marker + @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/openat--secontext.Po@am__quote@ # am--include-marker + @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/openat--secontext_full.Po@am__quote@ # am--include-marker ++@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/openat--secontext_full_mismatch.Po@am__quote@ # am--include-marker ++@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/openat--secontext_mismatch.Po@am__quote@ # am--include-marker + @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/openat.Po@am__quote@ # am--include-marker + @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/openat2-Xabbrev.Po@am__quote@ # am--include-marker + @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/openat2-Xraw.Po@am__quote@ # am--include-marker +@@ -13004,6 +13480,12 @@ + $(srcdir)/access--secontext_full.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in + $(AM_V_GEN) $^ $@ + ++$(srcdir)/access--secontext_full_mismatch.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in ++ $(AM_V_GEN) $^ $@ ++ ++$(srcdir)/access--secontext_mismatch.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in ++ $(AM_V_GEN) $^ $@ ++ + $(srcdir)/acct.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in + $(AM_V_GEN) $^ $@ + +@@ -13055,6 +13537,12 @@ + $(srcdir)/chmod--secontext_full.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in + $(AM_V_GEN) $^ $@ + ++$(srcdir)/chmod--secontext_full_mismatch.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in ++ $(AM_V_GEN) $^ $@ ++ ++$(srcdir)/chmod--secontext_mismatch.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in ++ $(AM_V_GEN) $^ $@ ++ + $(srcdir)/chown.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in + $(AM_V_GEN) $^ $@ + +@@ -13220,6 +13708,12 @@ + $(srcdir)/execve--secontext_full.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in + $(AM_V_GEN) $^ $@ + ++$(srcdir)/execve--secontext_full_mismatch.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in ++ $(AM_V_GEN) $^ $@ ++ ++$(srcdir)/execve--secontext_mismatch.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in ++ $(AM_V_GEN) $^ $@ ++ + $(srcdir)/execveat.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in + $(AM_V_GEN) $^ $@ + +@@ -13229,6 +13723,12 @@ + $(srcdir)/execveat--secontext_full.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in + $(AM_V_GEN) $^ $@ + ++$(srcdir)/execveat--secontext_full_mismatch.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in ++ $(AM_V_GEN) $^ $@ ++ ++$(srcdir)/execveat--secontext_mismatch.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in ++ $(AM_V_GEN) $^ $@ ++ + $(srcdir)/execveat-v.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in + $(AM_V_GEN) $^ $@ + +@@ -13238,6 +13738,12 @@ + $(srcdir)/faccessat--secontext_full.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in + $(AM_V_GEN) $^ $@ + ++$(srcdir)/faccessat--secontext_full_mismatch.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in ++ $(AM_V_GEN) $^ $@ ++ ++$(srcdir)/faccessat--secontext_mismatch.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in ++ $(AM_V_GEN) $^ $@ ++ + $(srcdir)/faccessat-P.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in + $(AM_V_GEN) $^ $@ + +@@ -13250,6 +13756,12 @@ + $(srcdir)/faccessat-y--secontext_full.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in + $(AM_V_GEN) $^ $@ + ++$(srcdir)/faccessat-y--secontext_full_mismatch.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in ++ $(AM_V_GEN) $^ $@ ++ ++$(srcdir)/faccessat-y--secontext_mismatch.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in ++ $(AM_V_GEN) $^ $@ ++ + $(srcdir)/faccessat-yy.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in + $(AM_V_GEN) $^ $@ + +@@ -13280,6 +13792,12 @@ + $(srcdir)/fanotify_mark--secontext_full.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in + $(AM_V_GEN) $^ $@ + ++$(srcdir)/fanotify_mark--secontext_full_mismatch.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in ++ $(AM_V_GEN) $^ $@ ++ ++$(srcdir)/fanotify_mark--secontext_mismatch.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in ++ $(AM_V_GEN) $^ $@ ++ + $(srcdir)/fanotify_mark-Xabbrev.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in + $(AM_V_GEN) $^ $@ + +@@ -13301,6 +13819,12 @@ + $(srcdir)/fchmod--secontext_full.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in + $(AM_V_GEN) $^ $@ + ++$(srcdir)/fchmod--secontext_full_mismatch.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in ++ $(AM_V_GEN) $^ $@ ++ ++$(srcdir)/fchmod--secontext_mismatch.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) $^ $@ + +@@ -13310,6 +13834,12 @@ + $(srcdir)/fchmod-y--secontext_full.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in + $(AM_V_GEN) $^ $@ + ++$(srcdir)/fchmod-y--secontext_full_mismatch.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in ++ $(AM_V_GEN) $^ $@ ++ ++$(srcdir)/fchmod-y--secontext_mismatch.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) $^ $@ + +@@ -13319,6 +13849,12 @@ + $(srcdir)/fchmodat--secontext_full.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in + $(AM_V_GEN) $^ $@ + ++$(srcdir)/fchmodat--secontext_full_mismatch.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in ++ $(AM_V_GEN) $^ $@ ++ ++$(srcdir)/fchmodat--secontext_mismatch.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in ++ $(AM_V_GEN) $^ $@ ++ + $(srcdir)/fchown.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in + $(AM_V_GEN) $^ $@ + +@@ -13334,6 +13870,12 @@ + $(srcdir)/fchownat--secontext_full.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in + $(AM_V_GEN) $^ $@ + ++$(srcdir)/fchownat--secontext_full_mismatch.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in ++ $(AM_V_GEN) $^ $@ ++ ++$(srcdir)/fchownat--secontext_mismatch.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in ++ $(AM_V_GEN) $^ $@ ++ + $(srcdir)/fcntl.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in + $(AM_V_GEN) $^ $@ + +@@ -13358,6 +13900,12 @@ + $(srcdir)/file_handle--secontext_full.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in + $(AM_V_GEN) $^ $@ + ++$(srcdir)/file_handle--secontext_full_mismatch.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in ++ $(AM_V_GEN) $^ $@ ++ ++$(srcdir)/file_handle--secontext_mismatch.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in ++ $(AM_V_GEN) $^ $@ ++ + $(srcdir)/filter_seccomp.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in + $(AM_V_GEN) $^ $@ + +@@ -14117,6 +14665,12 @@ + $(srcdir)/linkat--secontext_full.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in + $(AM_V_GEN) $^ $@ + ++$(srcdir)/linkat--secontext_full_mismatch.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in ++ $(AM_V_GEN) $^ $@ ++ ++$(srcdir)/linkat--secontext_mismatch.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in ++ $(AM_V_GEN) $^ $@ ++ + $(srcdir)/lookup_dcookie.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in + $(AM_V_GEN) $^ $@ + +@@ -14546,6 +15100,12 @@ + $(srcdir)/open--secontext_full.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in + $(AM_V_GEN) $^ $@ + ++$(srcdir)/open--secontext_full_mismatch.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in ++ $(AM_V_GEN) $^ $@ ++ ++$(srcdir)/open--secontext_mismatch.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in ++ $(AM_V_GEN) $^ $@ ++ + $(srcdir)/open_tree.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in + $(AM_V_GEN) $^ $@ + +@@ -14561,6 +15121,12 @@ + $(srcdir)/openat--secontext_full.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in + $(AM_V_GEN) $^ $@ + ++$(srcdir)/openat--secontext_full_mismatch.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in ++ $(AM_V_GEN) $^ $@ ++ ++$(srcdir)/openat--secontext_mismatch.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in ++ $(AM_V_GEN) $^ $@ ++ + $(srcdir)/openat2.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in + $(AM_V_GEN) $^ $@ + +--- old/tests-mx32/Makefile.in 2022-02-07 20:23:38.728063729 +0100 ++++ new/tests-mx32/Makefile.in 2022-02-07 20:24:04.572063372 +0100 +@@ -614,25 +614,55 @@ + xet_thread_area_x86$(EXEEXT) xetitimer$(EXEEXT) \ + xetpgid$(EXEEXT) xetpriority$(EXEEXT) xettimeofday$(EXEEXT) + am__EXEEXT_2 = access--secontext$(EXEEXT) \ +- access--secontext_full$(EXEEXT) chmod--secontext$(EXEEXT) \ +- chmod--secontext_full$(EXEEXT) execve--secontext$(EXEEXT) \ +- execve--secontext_full$(EXEEXT) execveat--secontext$(EXEEXT) \ +- execveat--secontext_full$(EXEEXT) \ ++ access--secontext_full$(EXEEXT) \ ++ access--secontext_full_mismatch$(EXEEXT) \ ++ access--secontext_mismatch$(EXEEXT) chmod--secontext$(EXEEXT) \ ++ chmod--secontext_full$(EXEEXT) \ ++ chmod--secontext_full_mismatch$(EXEEXT) \ ++ chmod--secontext_mismatch$(EXEEXT) execve--secontext$(EXEEXT) \ ++ execve--secontext_full$(EXEEXT) \ ++ execve--secontext_full_mismatch$(EXEEXT) \ ++ execve--secontext_mismatch$(EXEEXT) \ ++ execveat--secontext$(EXEEXT) execveat--secontext_full$(EXEEXT) \ ++ execveat--secontext_full_mismatch$(EXEEXT) \ ++ execveat--secontext_mismatch$(EXEEXT) \ + faccessat--secontext$(EXEEXT) \ + faccessat--secontext_full$(EXEEXT) \ ++ faccessat--secontext_full_mismatch$(EXEEXT) \ ++ faccessat--secontext_mismatch$(EXEEXT) \ + faccessat-y--secontext$(EXEEXT) \ + faccessat-y--secontext_full$(EXEEXT) \ ++ faccessat-y--secontext_full_mismatch$(EXEEXT) \ ++ faccessat-y--secontext_mismatch$(EXEEXT) \ + fanotify_mark--secontext$(EXEEXT) \ + fanotify_mark--secontext_full$(EXEEXT) \ ++ fanotify_mark--secontext_full_mismatch$(EXEEXT) \ ++ fanotify_mark--secontext_mismatch$(EXEEXT) \ + fchmod--secontext$(EXEEXT) fchmod--secontext_full$(EXEEXT) \ ++ fchmod--secontext_full_mismatch$(EXEEXT) \ ++ fchmod--secontext_mismatch$(EXEEXT) \ + fchmod-y--secontext$(EXEEXT) fchmod-y--secontext_full$(EXEEXT) \ ++ fchmod-y--secontext_full_mismatch$(EXEEXT) \ ++ fchmod-y--secontext_mismatch$(EXEEXT) \ + fchmodat--secontext$(EXEEXT) fchmodat--secontext_full$(EXEEXT) \ ++ fchmodat--secontext_full_mismatch$(EXEEXT) \ ++ fchmodat--secontext_mismatch$(EXEEXT) \ + fchownat--secontext$(EXEEXT) fchownat--secontext_full$(EXEEXT) \ ++ fchownat--secontext_full_mismatch$(EXEEXT) \ ++ fchownat--secontext_mismatch$(EXEEXT) \ + file_handle--secontext$(EXEEXT) \ + file_handle--secontext_full$(EXEEXT) \ ++ file_handle--secontext_full_mismatch$(EXEEXT) \ ++ file_handle--secontext_mismatch$(EXEEXT) \ + linkat--secontext$(EXEEXT) linkat--secontext_full$(EXEEXT) \ +- open--secontext$(EXEEXT) open--secontext_full$(EXEEXT) \ +- openat--secontext$(EXEEXT) openat--secontext_full$(EXEEXT) ++ linkat--secontext_full_mismatch$(EXEEXT) \ ++ linkat--secontext_mismatch$(EXEEXT) open--secontext$(EXEEXT) \ ++ open--secontext_full$(EXEEXT) \ ++ open--secontext_full_mismatch$(EXEEXT) \ ++ open--secontext_mismatch$(EXEEXT) openat--secontext$(EXEEXT) \ ++ openat--secontext_full$(EXEEXT) \ ++ openat--secontext_full_mismatch$(EXEEXT) \ ++ openat--secontext_mismatch$(EXEEXT) + ARFLAGS = cru + AM_V_AR = $(am__v_AR_@AM_V@) + am__v_AR_ = $(am__v_AR_@AM_DEFAULT_V@) +@@ -662,6 +692,17 @@ + access__secontext_full_SOURCES = access--secontext_full.c + access__secontext_full_OBJECTS = access--secontext_full.$(OBJEXT) + access__secontext_full_DEPENDENCIES = $(LDADD) $(am__DEPENDENCIES_2) ++access__secontext_full_mismatch_SOURCES = \ ++ access--secontext_full_mismatch.c ++access__secontext_full_mismatch_OBJECTS = \ ++ access--secontext_full_mismatch.$(OBJEXT) ++access__secontext_full_mismatch_DEPENDENCIES = $(LDADD) \ ++ $(am__DEPENDENCIES_2) ++access__secontext_mismatch_SOURCES = access--secontext_mismatch.c ++access__secontext_mismatch_OBJECTS = \ ++ access--secontext_mismatch.$(OBJEXT) ++access__secontext_mismatch_DEPENDENCIES = $(LDADD) \ ++ $(am__DEPENDENCIES_2) + acct_SOURCES = acct.c + acct_OBJECTS = acct.$(OBJEXT) + acct_LDADD = $(LDADD) +@@ -790,6 +831,17 @@ + chmod__secontext_full_SOURCES = chmod--secontext_full.c + chmod__secontext_full_OBJECTS = chmod--secontext_full.$(OBJEXT) + chmod__secontext_full_DEPENDENCIES = $(LDADD) $(am__DEPENDENCIES_2) ++chmod__secontext_full_mismatch_SOURCES = \ ++ chmod--secontext_full_mismatch.c ++chmod__secontext_full_mismatch_OBJECTS = \ ++ chmod--secontext_full_mismatch.$(OBJEXT) ++chmod__secontext_full_mismatch_DEPENDENCIES = $(LDADD) \ ++ $(am__DEPENDENCIES_2) ++chmod__secontext_mismatch_SOURCES = chmod--secontext_mismatch.c ++chmod__secontext_mismatch_OBJECTS = \ ++ chmod--secontext_mismatch.$(OBJEXT) ++chmod__secontext_mismatch_DEPENDENCIES = $(LDADD) \ ++ $(am__DEPENDENCIES_2) + chown_SOURCES = chown.c + chown_OBJECTS = chown.$(OBJEXT) + chown_LDADD = $(LDADD) +@@ -1031,6 +1083,17 @@ + execve__secontext_full_SOURCES = execve--secontext_full.c + execve__secontext_full_OBJECTS = execve--secontext_full.$(OBJEXT) + execve__secontext_full_DEPENDENCIES = $(LDADD) $(am__DEPENDENCIES_2) ++execve__secontext_full_mismatch_SOURCES = \ ++ execve--secontext_full_mismatch.c ++execve__secontext_full_mismatch_OBJECTS = \ ++ execve--secontext_full_mismatch.$(OBJEXT) ++execve__secontext_full_mismatch_DEPENDENCIES = $(LDADD) \ ++ $(am__DEPENDENCIES_2) ++execve__secontext_mismatch_SOURCES = execve--secontext_mismatch.c ++execve__secontext_mismatch_OBJECTS = \ ++ execve--secontext_mismatch.$(OBJEXT) ++execve__secontext_mismatch_DEPENDENCIES = $(LDADD) \ ++ $(am__DEPENDENCIES_2) + execve_v_SOURCES = execve-v.c + execve_v_OBJECTS = execve-v.$(OBJEXT) + execve_v_LDADD = $(LDADD) +@@ -1045,6 +1108,17 @@ + execveat__secontext_full_SOURCES = execveat--secontext_full.c + execveat__secontext_full_OBJECTS = execveat--secontext_full.$(OBJEXT) + execveat__secontext_full_DEPENDENCIES = $(LDADD) $(am__DEPENDENCIES_2) ++execveat__secontext_full_mismatch_SOURCES = \ ++ execveat--secontext_full_mismatch.c ++execveat__secontext_full_mismatch_OBJECTS = \ ++ execveat--secontext_full_mismatch.$(OBJEXT) ++execveat__secontext_full_mismatch_DEPENDENCIES = $(LDADD) \ ++ $(am__DEPENDENCIES_2) ++execveat__secontext_mismatch_SOURCES = execveat--secontext_mismatch.c ++execveat__secontext_mismatch_OBJECTS = \ ++ execveat--secontext_mismatch.$(OBJEXT) ++execveat__secontext_mismatch_DEPENDENCIES = $(LDADD) \ ++ $(am__DEPENDENCIES_2) + execveat_v_SOURCES = execveat-v.c + execveat_v_OBJECTS = execveat-v.$(OBJEXT) + execveat_v_LDADD = $(LDADD) +@@ -1061,6 +1135,18 @@ + faccessat--secontext_full.$(OBJEXT) + faccessat__secontext_full_DEPENDENCIES = $(LDADD) \ + $(am__DEPENDENCIES_2) ++faccessat__secontext_full_mismatch_SOURCES = \ ++ faccessat--secontext_full_mismatch.c ++faccessat__secontext_full_mismatch_OBJECTS = \ ++ faccessat--secontext_full_mismatch.$(OBJEXT) ++faccessat__secontext_full_mismatch_DEPENDENCIES = $(LDADD) \ ++ $(am__DEPENDENCIES_2) ++faccessat__secontext_mismatch_SOURCES = \ ++ faccessat--secontext_mismatch.c ++faccessat__secontext_mismatch_OBJECTS = \ ++ faccessat--secontext_mismatch.$(OBJEXT) ++faccessat__secontext_mismatch_DEPENDENCIES = $(LDADD) \ ++ $(am__DEPENDENCIES_2) + faccessat_P_SOURCES = faccessat-P.c + faccessat_P_OBJECTS = faccessat-P.$(OBJEXT) + faccessat_P_LDADD = $(LDADD) +@@ -1077,6 +1163,18 @@ + faccessat-y--secontext_full.$(OBJEXT) + faccessat_y__secontext_full_DEPENDENCIES = $(LDADD) \ + $(am__DEPENDENCIES_2) ++faccessat_y__secontext_full_mismatch_SOURCES = \ ++ faccessat-y--secontext_full_mismatch.c ++faccessat_y__secontext_full_mismatch_OBJECTS = \ ++ faccessat-y--secontext_full_mismatch.$(OBJEXT) ++faccessat_y__secontext_full_mismatch_DEPENDENCIES = $(LDADD) \ ++ $(am__DEPENDENCIES_2) ++faccessat_y__secontext_mismatch_SOURCES = \ ++ faccessat-y--secontext_mismatch.c ++faccessat_y__secontext_mismatch_OBJECTS = \ ++ faccessat-y--secontext_mismatch.$(OBJEXT) ++faccessat_y__secontext_mismatch_DEPENDENCIES = $(LDADD) \ ++ $(am__DEPENDENCIES_2) + faccessat_yy_SOURCES = faccessat-yy.c + faccessat_yy_OBJECTS = faccessat-yy.$(OBJEXT) + faccessat_yy_LDADD = $(LDADD) +@@ -1126,6 +1224,18 @@ + fanotify_mark--secontext_full.$(OBJEXT) + fanotify_mark__secontext_full_DEPENDENCIES = $(LDADD) \ + $(am__DEPENDENCIES_2) ++fanotify_mark__secontext_full_mismatch_SOURCES = \ ++ fanotify_mark--secontext_full_mismatch.c ++fanotify_mark__secontext_full_mismatch_OBJECTS = \ ++ fanotify_mark--secontext_full_mismatch.$(OBJEXT) ++fanotify_mark__secontext_full_mismatch_DEPENDENCIES = $(LDADD) \ ++ $(am__DEPENDENCIES_2) ++fanotify_mark__secontext_mismatch_SOURCES = \ ++ fanotify_mark--secontext_mismatch.c ++fanotify_mark__secontext_mismatch_OBJECTS = \ ++ fanotify_mark--secontext_mismatch.$(OBJEXT) ++fanotify_mark__secontext_mismatch_DEPENDENCIES = $(LDADD) \ ++ $(am__DEPENDENCIES_2) + fanotify_mark_Xabbrev_SOURCES = fanotify_mark-Xabbrev.c + fanotify_mark_Xabbrev_OBJECTS = fanotify_mark-Xabbrev.$(OBJEXT) + fanotify_mark_Xabbrev_LDADD = $(LDADD) +@@ -1152,6 +1262,17 @@ + fchmod__secontext_full_SOURCES = fchmod--secontext_full.c + fchmod__secontext_full_OBJECTS = fchmod--secontext_full.$(OBJEXT) + fchmod__secontext_full_DEPENDENCIES = $(LDADD) $(am__DEPENDENCIES_2) ++fchmod__secontext_full_mismatch_SOURCES = \ ++ fchmod--secontext_full_mismatch.c ++fchmod__secontext_full_mismatch_OBJECTS = \ ++ fchmod--secontext_full_mismatch.$(OBJEXT) ++fchmod__secontext_full_mismatch_DEPENDENCIES = $(LDADD) \ ++ $(am__DEPENDENCIES_2) ++fchmod__secontext_mismatch_SOURCES = fchmod--secontext_mismatch.c ++fchmod__secontext_mismatch_OBJECTS = \ ++ fchmod--secontext_mismatch.$(OBJEXT) ++fchmod__secontext_mismatch_DEPENDENCIES = $(LDADD) \ ++ $(am__DEPENDENCIES_2) + fchmod_y_SOURCES = fchmod-y.c + fchmod_y_OBJECTS = fchmod-y.$(OBJEXT) + fchmod_y_LDADD = $(LDADD) +@@ -1162,6 +1283,17 @@ + fchmod_y__secontext_full_SOURCES = fchmod-y--secontext_full.c + fchmod_y__secontext_full_OBJECTS = fchmod-y--secontext_full.$(OBJEXT) + fchmod_y__secontext_full_DEPENDENCIES = $(LDADD) $(am__DEPENDENCIES_2) ++fchmod_y__secontext_full_mismatch_SOURCES = \ ++ fchmod-y--secontext_full_mismatch.c ++fchmod_y__secontext_full_mismatch_OBJECTS = \ ++ fchmod-y--secontext_full_mismatch.$(OBJEXT) ++fchmod_y__secontext_full_mismatch_DEPENDENCIES = $(LDADD) \ ++ $(am__DEPENDENCIES_2) ++fchmod_y__secontext_mismatch_SOURCES = fchmod-y--secontext_mismatch.c ++fchmod_y__secontext_mismatch_OBJECTS = \ ++ fchmod-y--secontext_mismatch.$(OBJEXT) ++fchmod_y__secontext_mismatch_DEPENDENCIES = $(LDADD) \ ++ $(am__DEPENDENCIES_2) + fchmodat_SOURCES = fchmodat.c + fchmodat_OBJECTS = fchmodat.$(OBJEXT) + fchmodat_LDADD = $(LDADD) +@@ -1172,6 +1304,17 @@ + fchmodat__secontext_full_SOURCES = fchmodat--secontext_full.c + fchmodat__secontext_full_OBJECTS = fchmodat--secontext_full.$(OBJEXT) + fchmodat__secontext_full_DEPENDENCIES = $(LDADD) $(am__DEPENDENCIES_2) ++fchmodat__secontext_full_mismatch_SOURCES = \ ++ fchmodat--secontext_full_mismatch.c ++fchmodat__secontext_full_mismatch_OBJECTS = \ ++ fchmodat--secontext_full_mismatch.$(OBJEXT) ++fchmodat__secontext_full_mismatch_DEPENDENCIES = $(LDADD) \ ++ $(am__DEPENDENCIES_2) ++fchmodat__secontext_mismatch_SOURCES = fchmodat--secontext_mismatch.c ++fchmodat__secontext_mismatch_OBJECTS = \ ++ fchmodat--secontext_mismatch.$(OBJEXT) ++fchmodat__secontext_mismatch_DEPENDENCIES = $(LDADD) \ ++ $(am__DEPENDENCIES_2) + fchown_SOURCES = fchown.c + fchown_OBJECTS = fchown.$(OBJEXT) + fchown_LDADD = $(LDADD) +@@ -1190,6 +1333,17 @@ + fchownat__secontext_full_SOURCES = fchownat--secontext_full.c + fchownat__secontext_full_OBJECTS = fchownat--secontext_full.$(OBJEXT) + fchownat__secontext_full_DEPENDENCIES = $(LDADD) $(am__DEPENDENCIES_2) ++fchownat__secontext_full_mismatch_SOURCES = \ ++ fchownat--secontext_full_mismatch.c ++fchownat__secontext_full_mismatch_OBJECTS = \ ++ fchownat--secontext_full_mismatch.$(OBJEXT) ++fchownat__secontext_full_mismatch_DEPENDENCIES = $(LDADD) \ ++ $(am__DEPENDENCIES_2) ++fchownat__secontext_mismatch_SOURCES = fchownat--secontext_mismatch.c ++fchownat__secontext_mismatch_OBJECTS = \ ++ fchownat--secontext_mismatch.$(OBJEXT) ++fchownat__secontext_mismatch_DEPENDENCIES = $(LDADD) \ ++ $(am__DEPENDENCIES_2) + fcntl_SOURCES = fcntl.c + fcntl_OBJECTS = fcntl.$(OBJEXT) + fcntl_LDADD = $(LDADD) +@@ -1227,6 +1381,18 @@ + file_handle--secontext_full.$(OBJEXT) + file_handle__secontext_full_DEPENDENCIES = $(LDADD) \ + $(am__DEPENDENCIES_2) ++file_handle__secontext_full_mismatch_SOURCES = \ ++ file_handle--secontext_full_mismatch.c ++file_handle__secontext_full_mismatch_OBJECTS = \ ++ file_handle--secontext_full_mismatch.$(OBJEXT) ++file_handle__secontext_full_mismatch_DEPENDENCIES = $(LDADD) \ ++ $(am__DEPENDENCIES_2) ++file_handle__secontext_mismatch_SOURCES = \ ++ file_handle--secontext_mismatch.c ++file_handle__secontext_mismatch_OBJECTS = \ ++ file_handle--secontext_mismatch.$(OBJEXT) ++file_handle__secontext_mismatch_DEPENDENCIES = $(LDADD) \ ++ $(am__DEPENDENCIES_2) + filter_unavailable_SOURCES = filter-unavailable.c + filter_unavailable_OBJECTS = filter-unavailable.$(OBJEXT) + filter_unavailable_DEPENDENCIES = $(LDADD) +@@ -2318,6 +2484,17 @@ + linkat__secontext_full_SOURCES = linkat--secontext_full.c + linkat__secontext_full_OBJECTS = linkat--secontext_full.$(OBJEXT) + linkat__secontext_full_DEPENDENCIES = $(LDADD) $(am__DEPENDENCIES_2) ++linkat__secontext_full_mismatch_SOURCES = \ ++ linkat--secontext_full_mismatch.c ++linkat__secontext_full_mismatch_OBJECTS = \ ++ linkat--secontext_full_mismatch.$(OBJEXT) ++linkat__secontext_full_mismatch_DEPENDENCIES = $(LDADD) \ ++ $(am__DEPENDENCIES_2) ++linkat__secontext_mismatch_SOURCES = linkat--secontext_mismatch.c ++linkat__secontext_mismatch_OBJECTS = \ ++ linkat--secontext_mismatch.$(OBJEXT) ++linkat__secontext_mismatch_DEPENDENCIES = $(LDADD) \ ++ $(am__DEPENDENCIES_2) + list_sigaction_signum_SOURCES = list_sigaction_signum.c + list_sigaction_signum_OBJECTS = list_sigaction_signum.$(OBJEXT) + list_sigaction_signum_LDADD = $(LDADD) +@@ -2976,6 +3153,15 @@ + open__secontext_full_SOURCES = open--secontext_full.c + open__secontext_full_OBJECTS = open--secontext_full.$(OBJEXT) + open__secontext_full_DEPENDENCIES = $(LDADD) $(am__DEPENDENCIES_2) ++open__secontext_full_mismatch_SOURCES = \ ++ open--secontext_full_mismatch.c ++open__secontext_full_mismatch_OBJECTS = \ ++ open--secontext_full_mismatch.$(OBJEXT) ++open__secontext_full_mismatch_DEPENDENCIES = $(LDADD) \ ++ $(am__DEPENDENCIES_2) ++open__secontext_mismatch_SOURCES = open--secontext_mismatch.c ++open__secontext_mismatch_OBJECTS = open--secontext_mismatch.$(OBJEXT) ++open__secontext_mismatch_DEPENDENCIES = $(LDADD) $(am__DEPENDENCIES_2) + open_tree_SOURCES = open_tree.c + open_tree_OBJECTS = open_tree.$(OBJEXT) + open_tree_LDADD = $(LDADD) +@@ -2994,6 +3180,17 @@ + openat__secontext_full_SOURCES = openat--secontext_full.c + openat__secontext_full_OBJECTS = openat--secontext_full.$(OBJEXT) + openat__secontext_full_DEPENDENCIES = $(LDADD) $(am__DEPENDENCIES_2) ++openat__secontext_full_mismatch_SOURCES = \ ++ openat--secontext_full_mismatch.c ++openat__secontext_full_mismatch_OBJECTS = \ ++ openat--secontext_full_mismatch.$(OBJEXT) ++openat__secontext_full_mismatch_DEPENDENCIES = $(LDADD) \ ++ $(am__DEPENDENCIES_2) ++openat__secontext_mismatch_SOURCES = openat--secontext_mismatch.c ++openat__secontext_mismatch_OBJECTS = \ ++ openat--secontext_mismatch.$(OBJEXT) ++openat__secontext_mismatch_DEPENDENCIES = $(LDADD) \ ++ $(am__DEPENDENCIES_2) + openat2_SOURCES = openat2.c + openat2_OBJECTS = openat2.$(OBJEXT) + openat2_LDADD = $(LDADD) +@@ -4449,6 +4646,8 @@ + ./$(DEPDIR)/_newselect.Po ./$(DEPDIR)/accept.Po \ + ./$(DEPDIR)/accept4.Po ./$(DEPDIR)/access--secontext.Po \ + ./$(DEPDIR)/access--secontext_full.Po ./$(DEPDIR)/access.Po \ ++ ./$(DEPDIR)/access--secontext_full_mismatch.Po \ ++ ./$(DEPDIR)/access--secontext_mismatch.Po \ + ./$(DEPDIR)/acct.Po ./$(DEPDIR)/add_key.Po \ + ./$(DEPDIR)/adjtimex.Po ./$(DEPDIR)/aio.Po \ + ./$(DEPDIR)/aio_pgetevents.Po ./$(DEPDIR)/alarm.Po \ +@@ -4468,6 +4667,8 @@ + ./$(DEPDIR)/chdir.Po ./$(DEPDIR)/check_sigblock.Po \ + ./$(DEPDIR)/check_sigign.Po ./$(DEPDIR)/chmod--secontext.Po \ + ./$(DEPDIR)/chmod--secontext_full.Po ./$(DEPDIR)/chmod.Po \ ++ ./$(DEPDIR)/chmod--secontext_full_mismatch.Po \ ++ ./$(DEPDIR)/chmod--secontext_mismatch.Po \ + ./$(DEPDIR)/chown.Po ./$(DEPDIR)/chown32.Po \ + ./$(DEPDIR)/chroot.Po ./$(DEPDIR)/clock_adjtime.Po \ + ./$(DEPDIR)/clock_adjtime64.Po ./$(DEPDIR)/clock_nanosleep.Po \ +@@ -4503,14 +4704,22 @@ + ./$(DEPDIR)/epoll_wait.Po ./$(DEPDIR)/erestartsys.Po \ + ./$(DEPDIR)/eventfd.Po ./$(DEPDIR)/execve--secontext.Po \ + ./$(DEPDIR)/execve--secontext_full.Po ./$(DEPDIR)/execve-v.Po \ ++ ./$(DEPDIR)/execve--secontext_full_mismatch.Po \ ++ ./$(DEPDIR)/execve--secontext_mismatch.Po \ + ./$(DEPDIR)/execve.Po ./$(DEPDIR)/execveat--secontext.Po \ + ./$(DEPDIR)/execveat--secontext_full.Po \ ++ ./$(DEPDIR)/execveat--secontext_full_mismatch.Po \ ++ ./$(DEPDIR)/execveat--secontext_mismatch.Po \ + ./$(DEPDIR)/execveat-v.Po ./$(DEPDIR)/execveat.Po \ + ./$(DEPDIR)/faccessat--secontext.Po \ + ./$(DEPDIR)/faccessat--secontext_full.Po \ ++ ./$(DEPDIR)/faccessat--secontext_full_mismatch.Po \ ++ ./$(DEPDIR)/faccessat--secontext_mismatch.Po \ + ./$(DEPDIR)/faccessat-P.Po \ + ./$(DEPDIR)/faccessat-y--secontext.Po \ + ./$(DEPDIR)/faccessat-y--secontext_full.Po \ ++ ./$(DEPDIR)/faccessat-y--secontext_full_mismatch.Po \ ++ ./$(DEPDIR)/faccessat-y--secontext_mismatch.Po \ + ./$(DEPDIR)/faccessat-y.Po ./$(DEPDIR)/faccessat-yy.Po \ + ./$(DEPDIR)/faccessat.Po ./$(DEPDIR)/faccessat2-P.Po \ + ./$(DEPDIR)/faccessat2-y.Po ./$(DEPDIR)/faccessat2-yy.Po \ +@@ -4519,26 +4728,38 @@ + ./$(DEPDIR)/fanotify_init.Po \ + ./$(DEPDIR)/fanotify_mark--secontext.Po \ + ./$(DEPDIR)/fanotify_mark--secontext_full.Po \ ++ ./$(DEPDIR)/fanotify_mark--secontext_full_mismatch.Po \ ++ ./$(DEPDIR)/fanotify_mark--secontext_mismatch.Po \ + ./$(DEPDIR)/fanotify_mark-Xabbrev.Po \ + ./$(DEPDIR)/fanotify_mark-Xraw.Po \ + ./$(DEPDIR)/fanotify_mark-Xverbose.Po \ + ./$(DEPDIR)/fanotify_mark.Po ./$(DEPDIR)/fchdir.Po \ + ./$(DEPDIR)/fchmod--secontext.Po \ + ./$(DEPDIR)/fchmod--secontext_full.Po \ ++ ./$(DEPDIR)/fchmod--secontext_full_mismatch.Po \ ++ ./$(DEPDIR)/fchmod--secontext_mismatch.Po \ + ./$(DEPDIR)/fchmod-y--secontext.Po \ + ./$(DEPDIR)/fchmod-y--secontext_full.Po \ ++ ./$(DEPDIR)/fchmod-y--secontext_full_mismatch.Po \ ++ ./$(DEPDIR)/fchmod-y--secontext_mismatch.Po \ + ./$(DEPDIR)/fchmod-y.Po ./$(DEPDIR)/fchmod.Po \ + ./$(DEPDIR)/fchmodat--secontext.Po \ + ./$(DEPDIR)/fchmodat--secontext_full.Po \ ++ ./$(DEPDIR)/fchmodat--secontext_full_mismatch.Po \ ++ ./$(DEPDIR)/fchmodat--secontext_mismatch.Po \ + ./$(DEPDIR)/fchmodat.Po ./$(DEPDIR)/fchown.Po \ + ./$(DEPDIR)/fchown32.Po ./$(DEPDIR)/fchownat--secontext.Po \ + ./$(DEPDIR)/fchownat--secontext_full.Po \ ++ ./$(DEPDIR)/fchownat--secontext_full_mismatch.Po \ ++ ./$(DEPDIR)/fchownat--secontext_mismatch.Po \ + ./$(DEPDIR)/fchownat.Po \ + ./$(DEPDIR)/fcntl--pidns-translation.Po ./$(DEPDIR)/fcntl.Po \ + ./$(DEPDIR)/fcntl64--pidns-translation.Po \ + ./$(DEPDIR)/fcntl64.Po ./$(DEPDIR)/fdatasync.Po \ + ./$(DEPDIR)/fflush.Po ./$(DEPDIR)/file_handle--secontext.Po \ + ./$(DEPDIR)/file_handle--secontext_full.Po \ ++ ./$(DEPDIR)/file_handle--secontext_full_mismatch.Po \ ++ ./$(DEPDIR)/file_handle--secontext_mismatch.Po \ + ./$(DEPDIR)/file_handle.Po ./$(DEPDIR)/filter-unavailable.Po \ + ./$(DEPDIR)/filter_seccomp-flag.Po \ + ./$(DEPDIR)/filter_seccomp-perf.Po ./$(DEPDIR)/finit_module.Po \ +@@ -4753,6 +4972,8 @@ + ./$(DEPDIR)/libtests_a-xmalloc_for_tests.Po \ + ./$(DEPDIR)/link.Po ./$(DEPDIR)/linkat--secontext.Po \ + ./$(DEPDIR)/linkat--secontext_full.Po ./$(DEPDIR)/linkat.Po \ ++ ./$(DEPDIR)/linkat--secontext_full_mismatch.Po \ ++ ./$(DEPDIR)/linkat--secontext_mismatch.Po \ + ./$(DEPDIR)/list_sigaction_signum.Po ./$(DEPDIR)/llseek.Po \ + ./$(DEPDIR)/localtime.Po ./$(DEPDIR)/lookup_dcookie.Po \ + ./$(DEPDIR)/looping_threads.Po ./$(DEPDIR)/lseek.Po \ +@@ -4867,9 +5088,13 @@ + ./$(DEPDIR)/oldselect-efault.Po ./$(DEPDIR)/oldselect.Po \ + ./$(DEPDIR)/oldstat.Po ./$(DEPDIR)/open--secontext.Po \ + ./$(DEPDIR)/open--secontext_full.Po ./$(DEPDIR)/open.Po \ ++ ./$(DEPDIR)/open--secontext_full_mismatch.Po \ ++ ./$(DEPDIR)/open--secontext_mismatch.Po \ + ./$(DEPDIR)/open_tree-P.Po ./$(DEPDIR)/open_tree.Po \ + ./$(DEPDIR)/openat--secontext.Po \ + ./$(DEPDIR)/openat--secontext_full.Po ./$(DEPDIR)/openat.Po \ ++ ./$(DEPDIR)/openat--secontext_full_mismatch.Po \ ++ ./$(DEPDIR)/openat--secontext_mismatch.Po \ + ./$(DEPDIR)/openat2-Xabbrev.Po ./$(DEPDIR)/openat2-Xraw.Po \ + ./$(DEPDIR)/openat2-Xverbose.Po \ + ./$(DEPDIR)/openat2-v-y-Xabbrev.Po \ +@@ -5119,7 +5316,8 @@ + am__v_CCLD_1 = + SOURCES = $(libtests_a_SOURCES) _newselect.c _newselect-P.c accept.c \ + accept4.c access.c access--secontext.c \ +- access--secontext_full.c acct.c add_key.c adjtimex.c aio.c \ ++ access--secontext_full.c access--secontext_full_mismatch.c \ ++ access--secontext_mismatch.c acct.c add_key.c adjtimex.c aio.c \ + aio_pgetevents.c alarm.c answer.c attach-f-p.c \ + attach-f-p-cmd.c attach-p-cmd-cmd.c attach-p-cmd-p.c \ + block_reset_raise_run.c block_reset_run.c bpf.c \ +@@ -4468,7 +4666,8 @@ + bpf-success.c bpf-success-long-y.c bpf-success-v.c bpf-v.c \ + brk.c btrfs.c caps.c caps-abbrev.c chdir.c check_sigblock.c \ + check_sigign.c chmod.c chmod--secontext.c \ +- chmod--secontext_full.c chown.c chown32.c chroot.c \ ++ chmod--secontext_full.c chmod--secontext_full_mismatch.c \ ++ chmod--secontext_mismatch.c chown.c chown32.c chroot.c \ + clock_adjtime.c clock_adjtime64.c clock_nanosleep.c \ + clock_xettime.c clock_xettime64.c clone-flags.c clone3.c \ + clone3-Xabbrev.c clone3-Xraw.c clone3-Xverbose.c \ +@@ -4484,24 +4683,40 @@ + dup3-y.c dup3-yy.c epoll_create.c epoll_create1.c epoll_ctl.c \ + epoll_pwait.c epoll_pwait2.c epoll_pwait2-P.c epoll_pwait2-y.c \ + epoll_wait.c erestartsys.c eventfd.c execve.c \ +- execve--secontext.c execve--secontext_full.c execve-v.c \ +- execveat.c execveat--secontext.c execveat--secontext_full.c \ +- execveat-v.c faccessat.c faccessat--secontext.c \ +- faccessat--secontext_full.c faccessat-P.c faccessat-y.c \ ++ execve--secontext.c execve--secontext_full.c \ ++ execve--secontext_full_mismatch.c execve--secontext_mismatch.c \ ++ execve-v.c execveat.c execveat--secontext.c \ ++ execveat--secontext_full.c execveat--secontext_full_mismatch.c \ ++ execveat--secontext_mismatch.c execveat-v.c faccessat.c \ ++ faccessat--secontext.c faccessat--secontext_full.c \ ++ faccessat--secontext_full_mismatch.c \ ++ faccessat--secontext_mismatch.c faccessat-P.c faccessat-y.c \ + faccessat-y--secontext.c faccessat-y--secontext_full.c \ +- faccessat-yy.c faccessat2.c faccessat2-P.c faccessat2-y.c \ +- faccessat2-yy.c fadvise64.c fadvise64_64.c fallocate.c \ +- fanotify_init.c fanotify_mark.c fanotify_mark--secontext.c \ +- fanotify_mark--secontext_full.c fanotify_mark-Xabbrev.c \ ++ faccessat-y--secontext_full_mismatch.c \ ++ faccessat-y--secontext_mismatch.c faccessat-yy.c faccessat2.c \ ++ faccessat2-P.c faccessat2-y.c faccessat2-yy.c fadvise64.c \ ++ fadvise64_64.c fallocate.c fanotify_init.c fanotify_mark.c \ ++ fanotify_mark--secontext.c fanotify_mark--secontext_full.c \ ++ fanotify_mark--secontext_full_mismatch.c \ ++ fanotify_mark--secontext_mismatch.c fanotify_mark-Xabbrev.c \ + fanotify_mark-Xraw.c fanotify_mark-Xverbose.c fchdir.c \ + fchmod.c fchmod--secontext.c fchmod--secontext_full.c \ ++ fchmod--secontext_full_mismatch.c fchmod--secontext_mismatch.c \ + fchmod-y.c fchmod-y--secontext.c fchmod-y--secontext_full.c \ +- fchmodat.c fchmodat--secontext.c fchmodat--secontext_full.c \ +- fchown.c fchown32.c fchownat.c fchownat--secontext.c \ +- fchownat--secontext_full.c fcntl.c fcntl--pidns-translation.c \ +- fcntl64.c fcntl64--pidns-translation.c fdatasync.c fflush.c \ ++ fchmod-y--secontext_full_mismatch.c \ ++ fchmod-y--secontext_mismatch.c fchmodat.c \ ++ fchmodat--secontext.c fchmodat--secontext_full.c \ ++ fchmodat--secontext_full_mismatch.c \ ++ fchmodat--secontext_mismatch.c fchown.c fchown32.c fchownat.c \ ++ fchownat--secontext.c fchownat--secontext_full.c \ ++ fchownat--secontext_full_mismatch.c \ ++ fchownat--secontext_mismatch.c fcntl.c \ ++ fcntl--pidns-translation.c fcntl64.c \ ++ fcntl64--pidns-translation.c fdatasync.c fflush.c \ + file_handle.c file_handle--secontext.c \ +- file_handle--secontext_full.c filter-unavailable.c \ ++ file_handle--secontext_full.c \ ++ file_handle--secontext_full_mismatch.c \ ++ file_handle--secontext_mismatch.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 \ + fsconfig-P.c fsmount.c fsopen.c fspick.c fspick-P.c fstat.c \ +@@ -4588,6 +4803,7 @@ + landlock_create_ruleset-y.c landlock_restrict_self.c \ + landlock_restrict_self-y.c lchown.c lchown32.c link.c linkat.c \ + linkat--secontext.c linkat--secontext_full.c \ ++ linkat--secontext_full_mismatch.c linkat--secontext_mismatch.c \ + list_sigaction_signum.c llseek.c localtime.c lookup_dcookie.c \ + looping_threads.c lseek.c lstat.c lstat64.c madvise.c \ + maybe_switch_current_tcp.c \ +@@ -4641,8 +4857,10 @@ + old_mmap-v-none.c oldfstat.c oldlstat.c oldselect.c \ + oldselect-P.c oldselect-efault.c oldselect-efault-P.c \ + oldstat.c open.c open--secontext.c open--secontext_full.c \ ++ open--secontext_full_mismatch.c open--secontext_mismatch.c \ + open_tree.c open_tree-P.c openat.c openat--secontext.c \ +- openat--secontext_full.c openat2.c openat2-Xabbrev.c \ ++ openat--secontext_full.c openat--secontext_full_mismatch.c \ ++ openat--secontext_mismatch.c openat2.c openat2-Xabbrev.c \ + openat2-Xraw.c openat2-Xverbose.c openat2-v.c openat2-v-y.c \ + openat2-v-y-Xabbrev.c openat2-v-y-Xraw.c \ + openat2-v-y-Xverbose.c openat2-y.c orphaned_process_group.c \ +@@ -4753,7 +4971,8 @@ + xetpriority--pidns-translation.c xettimeofday.c zeroargc.c + DIST_SOURCES = $(libtests_a_SOURCES) _newselect.c _newselect-P.c \ + accept.c accept4.c access.c access--secontext.c \ +- access--secontext_full.c acct.c add_key.c adjtimex.c aio.c \ ++ access--secontext_full.c access--secontext_full_mismatch.c \ ++ access--secontext_mismatch.c acct.c add_key.c adjtimex.c aio.c \ + aio_pgetevents.c alarm.c answer.c attach-f-p.c \ + attach-f-p-cmd.c attach-p-cmd-cmd.c attach-p-cmd-p.c \ + block_reset_raise_run.c block_reset_run.c bpf.c \ +@@ -4762,7 +4981,8 @@ + bpf-success.c bpf-success-long-y.c bpf-success-v.c bpf-v.c \ + brk.c btrfs.c caps.c caps-abbrev.c chdir.c check_sigblock.c \ + check_sigign.c chmod.c chmod--secontext.c \ +- chmod--secontext_full.c chown.c chown32.c chroot.c \ ++ chmod--secontext_full.c chmod--secontext_full_mismatch.c \ ++ chmod--secontext_mismatch.c chown.c chown32.c chroot.c \ + clock_adjtime.c clock_adjtime64.c clock_nanosleep.c \ + clock_xettime.c clock_xettime64.c clone-flags.c clone3.c \ + clone3-Xabbrev.c clone3-Xraw.c clone3-Xverbose.c \ +@@ -4778,24 +4998,40 @@ + dup3-y.c dup3-yy.c epoll_create.c epoll_create1.c epoll_ctl.c \ + epoll_pwait.c epoll_pwait2.c epoll_pwait2-P.c epoll_pwait2-y.c \ + epoll_wait.c erestartsys.c eventfd.c execve.c \ +- execve--secontext.c execve--secontext_full.c execve-v.c \ +- execveat.c execveat--secontext.c execveat--secontext_full.c \ +- execveat-v.c faccessat.c faccessat--secontext.c \ +- faccessat--secontext_full.c faccessat-P.c faccessat-y.c \ ++ execve--secontext.c execve--secontext_full.c \ ++ execve--secontext_full_mismatch.c execve--secontext_mismatch.c \ ++ execve-v.c execveat.c execveat--secontext.c \ ++ execveat--secontext_full.c execveat--secontext_full_mismatch.c \ ++ execveat--secontext_mismatch.c execveat-v.c faccessat.c \ ++ faccessat--secontext.c faccessat--secontext_full.c \ ++ faccessat--secontext_full_mismatch.c \ ++ faccessat--secontext_mismatch.c faccessat-P.c faccessat-y.c \ + faccessat-y--secontext.c faccessat-y--secontext_full.c \ +- faccessat-yy.c faccessat2.c faccessat2-P.c faccessat2-y.c \ +- faccessat2-yy.c fadvise64.c fadvise64_64.c fallocate.c \ +- fanotify_init.c fanotify_mark.c fanotify_mark--secontext.c \ +- fanotify_mark--secontext_full.c fanotify_mark-Xabbrev.c \ ++ faccessat-y--secontext_full_mismatch.c \ ++ faccessat-y--secontext_mismatch.c faccessat-yy.c faccessat2.c \ ++ faccessat2-P.c faccessat2-y.c faccessat2-yy.c fadvise64.c \ ++ fadvise64_64.c fallocate.c fanotify_init.c fanotify_mark.c \ ++ fanotify_mark--secontext.c fanotify_mark--secontext_full.c \ ++ fanotify_mark--secontext_full_mismatch.c \ ++ fanotify_mark--secontext_mismatch.c fanotify_mark-Xabbrev.c \ + fanotify_mark-Xraw.c fanotify_mark-Xverbose.c fchdir.c \ + fchmod.c fchmod--secontext.c fchmod--secontext_full.c \ ++ fchmod--secontext_full_mismatch.c fchmod--secontext_mismatch.c \ + fchmod-y.c fchmod-y--secontext.c fchmod-y--secontext_full.c \ +- fchmodat.c fchmodat--secontext.c fchmodat--secontext_full.c \ +- fchown.c fchown32.c fchownat.c fchownat--secontext.c \ +- fchownat--secontext_full.c fcntl.c fcntl--pidns-translation.c \ +- fcntl64.c fcntl64--pidns-translation.c fdatasync.c fflush.c \ ++ fchmod-y--secontext_full_mismatch.c \ ++ fchmod-y--secontext_mismatch.c fchmodat.c \ ++ fchmodat--secontext.c fchmodat--secontext_full.c \ ++ fchmodat--secontext_full_mismatch.c \ ++ fchmodat--secontext_mismatch.c fchown.c fchown32.c fchownat.c \ ++ fchownat--secontext.c fchownat--secontext_full.c \ ++ fchownat--secontext_full_mismatch.c \ ++ fchownat--secontext_mismatch.c fcntl.c \ ++ fcntl--pidns-translation.c fcntl64.c \ ++ fcntl64--pidns-translation.c fdatasync.c fflush.c \ + file_handle.c file_handle--secontext.c \ +- file_handle--secontext_full.c filter-unavailable.c \ ++ file_handle--secontext_full.c \ ++ file_handle--secontext_full_mismatch.c \ ++ file_handle--secontext_mismatch.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 \ + fsconfig-P.c fsmount.c fsopen.c fspick.c fspick-P.c fstat.c \ +@@ -4882,6 +5118,7 @@ + landlock_create_ruleset-y.c landlock_restrict_self.c \ + landlock_restrict_self-y.c lchown.c lchown32.c link.c linkat.c \ + linkat--secontext.c linkat--secontext_full.c \ ++ linkat--secontext_full_mismatch.c linkat--secontext_mismatch.c \ + list_sigaction_signum.c llseek.c localtime.c lookup_dcookie.c \ + looping_threads.c lseek.c lstat.c lstat64.c madvise.c \ + maybe_switch_current_tcp.c \ +@@ -4935,8 +5172,10 @@ + old_mmap-v-none.c oldfstat.c oldlstat.c oldselect.c \ + oldselect-P.c oldselect-efault.c oldselect-efault-P.c \ + oldstat.c open.c open--secontext.c open--secontext_full.c \ ++ open--secontext_full_mismatch.c open--secontext_mismatch.c \ + open_tree.c open_tree-P.c openat.c openat--secontext.c \ +- openat--secontext_full.c openat2.c openat2-Xabbrev.c \ ++ openat--secontext_full.c openat--secontext_full_mismatch.c \ ++ openat--secontext_mismatch.c openat2.c openat2-Xabbrev.c \ + openat2-Xraw.c openat2-Xverbose.c openat2-v.c openat2-v-y.c \ + openat2-v-y-Xabbrev.c openat2-v-y-Xraw.c \ + openat2-v-y-Xverbose.c openat2-y.c orphaned_process_group.c \ +@@ -6212,66 +6451,126 @@ + secontext_EXECUTABLES = \ + access--secontext \ + access--secontext_full \ ++ access--secontext_full_mismatch \ ++ access--secontext_mismatch \ + chmod--secontext \ + chmod--secontext_full \ ++ chmod--secontext_full_mismatch \ ++ chmod--secontext_mismatch \ + execve--secontext \ + execve--secontext_full \ ++ execve--secontext_full_mismatch \ ++ execve--secontext_mismatch \ + execveat--secontext \ + execveat--secontext_full \ ++ execveat--secontext_full_mismatch \ ++ execveat--secontext_mismatch \ + faccessat--secontext \ + faccessat--secontext_full \ ++ faccessat--secontext_full_mismatch \ ++ faccessat--secontext_mismatch \ + faccessat-y--secontext \ + faccessat-y--secontext_full \ ++ faccessat-y--secontext_full_mismatch \ ++ faccessat-y--secontext_mismatch \ + fanotify_mark--secontext \ + fanotify_mark--secontext_full \ ++ fanotify_mark--secontext_full_mismatch \ ++ fanotify_mark--secontext_mismatch \ + fchmod--secontext \ + fchmod--secontext_full \ ++ fchmod--secontext_full_mismatch \ ++ fchmod--secontext_mismatch \ + fchmod-y--secontext \ + fchmod-y--secontext_full \ ++ fchmod-y--secontext_full_mismatch \ ++ fchmod-y--secontext_mismatch \ + fchmodat--secontext \ + fchmodat--secontext_full \ ++ fchmodat--secontext_full_mismatch \ ++ fchmodat--secontext_mismatch \ + fchownat--secontext \ + fchownat--secontext_full \ ++ fchownat--secontext_full_mismatch \ ++ fchownat--secontext_mismatch \ + file_handle--secontext \ + file_handle--secontext_full \ ++ file_handle--secontext_full_mismatch \ ++ file_handle--secontext_mismatch \ + linkat--secontext \ + linkat--secontext_full \ ++ linkat--secontext_full_mismatch \ ++ linkat--secontext_mismatch \ + open--secontext \ + open--secontext_full \ ++ open--secontext_full_mismatch \ ++ open--secontext_mismatch \ + openat--secontext \ + openat--secontext_full \ ++ openat--secontext_full_mismatch \ ++ openat--secontext_mismatch \ + # + + access__secontext_LDADD = $(LDADD) $(libselinux_LDADD) + access__secontext_full_LDADD = $(LDADD) $(libselinux_LDADD) ++access__secontext_full_mismatch_LDADD = $(LDADD) $(libselinux_LDADD) ++access__secontext_mismatch_LDADD = $(LDADD) $(libselinux_LDADD) + chmod__secontext_LDADD = $(LDADD) $(libselinux_LDADD) + chmod__secontext_full_LDADD = $(LDADD) $(libselinux_LDADD) ++chmod__secontext_full_mismatch_LDADD = $(LDADD) $(libselinux_LDADD) ++chmod__secontext_mismatch_LDADD = $(LDADD) $(libselinux_LDADD) + execve__secontext_LDADD = $(LDADD) $(libselinux_LDADD) + execve__secontext_full_LDADD = $(LDADD) $(libselinux_LDADD) ++execve__secontext_full_mismatch_LDADD = $(LDADD) $(libselinux_LDADD) ++execve__secontext_mismatch_LDADD = $(LDADD) $(libselinux_LDADD) + execveat__secontext_LDADD = $(LDADD) $(libselinux_LDADD) + execveat__secontext_full_LDADD = $(LDADD) $(libselinux_LDADD) ++execveat__secontext_full_mismatch_LDADD = $(LDADD) $(libselinux_LDADD) ++execveat__secontext_mismatch_LDADD = $(LDADD) $(libselinux_LDADD) + faccessat__secontext_LDADD = $(LDADD) $(libselinux_LDADD) + faccessat__secontext_full_LDADD = $(LDADD) $(libselinux_LDADD) ++faccessat__secontext_full_mismatch_LDADD = $(LDADD) $(libselinux_LDADD) ++faccessat__secontext_mismatch_LDADD = $(LDADD) $(libselinux_LDADD) + faccessat_y__secontext_LDADD = $(LDADD) $(libselinux_LDADD) + faccessat_y__secontext_full_LDADD = $(LDADD) $(libselinux_LDADD) ++faccessat_y__secontext_full_mismatch_LDADD = $(LDADD) $(libselinux_LDADD) ++faccessat_y__secontext_mismatch_LDADD = $(LDADD) $(libselinux_LDADD) + fanotify_mark__secontext_LDADD = $(LDADD) $(libselinux_LDADD) + fanotify_mark__secontext_full_LDADD = $(LDADD) $(libselinux_LDADD) ++fanotify_mark__secontext_full_mismatch_LDADD = $(LDADD) $(libselinux_LDADD) ++fanotify_mark__secontext_mismatch_LDADD = $(LDADD) $(libselinux_LDADD) + fchmod__secontext_LDADD = $(LDADD) $(libselinux_LDADD) + fchmod__secontext_full_LDADD = $(LDADD) $(libselinux_LDADD) ++fchmod__secontext_full_mismatch_LDADD = $(LDADD) $(libselinux_LDADD) ++fchmod__secontext_mismatch_LDADD = $(LDADD) $(libselinux_LDADD) + fchmod_y__secontext_LDADD = $(LDADD) $(libselinux_LDADD) + fchmod_y__secontext_full_LDADD = $(LDADD) $(libselinux_LDADD) ++fchmod_y__secontext_full_mismatch_LDADD = $(LDADD) $(libselinux_LDADD) ++fchmod_y__secontext_mismatch_LDADD = $(LDADD) $(libselinux_LDADD) + fchmodat__secontext_LDADD = $(LDADD) $(libselinux_LDADD) + fchmodat__secontext_full_LDADD = $(LDADD) $(libselinux_LDADD) ++fchmodat__secontext_full_mismatch_LDADD = $(LDADD) $(libselinux_LDADD) ++fchmodat__secontext_mismatch_LDADD = $(LDADD) $(libselinux_LDADD) + fchownat__secontext_LDADD = $(LDADD) $(libselinux_LDADD) + fchownat__secontext_full_LDADD = $(LDADD) $(libselinux_LDADD) ++fchownat__secontext_full_mismatch_LDADD = $(LDADD) $(libselinux_LDADD) ++fchownat__secontext_mismatch_LDADD = $(LDADD) $(libselinux_LDADD) + file_handle__secontext_LDADD = $(LDADD) $(libselinux_LDADD) + file_handle__secontext_full_LDADD = $(LDADD) $(libselinux_LDADD) ++file_handle__secontext_full_mismatch_LDADD = $(LDADD) $(libselinux_LDADD) ++file_handle__secontext_mismatch_LDADD = $(LDADD) $(libselinux_LDADD) + linkat__secontext_LDADD = $(LDADD) $(libselinux_LDADD) + linkat__secontext_full_LDADD = $(LDADD) $(libselinux_LDADD) ++linkat__secontext_full_mismatch_LDADD = $(LDADD) $(libselinux_LDADD) ++linkat__secontext_mismatch_LDADD = $(LDADD) $(libselinux_LDADD) + open__secontext_LDADD = $(LDADD) $(libselinux_LDADD) + open__secontext_full_LDADD = $(LDADD) $(libselinux_LDADD) ++open__secontext_full_mismatch_LDADD = $(LDADD) $(libselinux_LDADD) ++open__secontext_mismatch_LDADD = $(LDADD) $(libselinux_LDADD) + openat__secontext_LDADD = $(LDADD) $(libselinux_LDADD) + openat__secontext_full_LDADD = $(LDADD) $(libselinux_LDADD) ++openat__secontext_full_mismatch_LDADD = $(LDADD) $(libselinux_LDADD) ++openat__secontext_mismatch_LDADD = $(LDADD) $(libselinux_LDADD) + attach_f_p_LDADD = -lpthread $(LDADD) + count_f_LDADD = -lpthread $(LDADD) + delay_LDADD = $(clock_LIBS) $(LDADD) +@@ -6325,15 +6624,20 @@ + # Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in; do not edit. + GEN_TESTS = _newselect.gen.test _newselect-P.gen.test accept.gen.test \ + accept4.gen.test access.gen.test access--secontext.gen.test \ +- access--secontext_full.gen.test acct.gen.test add_key.gen.test \ +- adjtimex.gen.test aio.gen.test aio_pgetevents.gen.test \ +- alarm.gen.test bpf.gen.test bpf-obj_get_info_by_fd.gen.test \ ++ access--secontext_full.gen.test \ ++ access--secontext_full_mismatch.gen.test \ ++ access--secontext_mismatch.gen.test acct.gen.test \ ++ add_key.gen.test adjtimex.gen.test aio.gen.test \ ++ aio_pgetevents.gen.test alarm.gen.test bpf.gen.test \ ++ bpf-obj_get_info_by_fd.gen.test \ + bpf-obj_get_info_by_fd-prog.gen.test \ + bpf-obj_get_info_by_fd-prog-v.gen.test \ + bpf-obj_get_info_by_fd-v.gen.test bpf-v.gen.test \ + btrfs.gen.test chdir.gen.test chmod.gen.test \ + chmod--secontext.gen.test chmod--secontext_full.gen.test \ +- chown.gen.test chown32.gen.test chroot.gen.test clock.gen.test \ ++ chmod--secontext_full_mismatch.gen.test \ ++ chmod--secontext_mismatch.gen.test chown.gen.test \ ++ chown32.gen.test chroot.gen.test clock.gen.test \ + clock_adjtime.gen.test clock_adjtime64.gen.test \ + clock_nanosleep.gen.test clock_xettime.gen.test \ + clock_xettime64.gen.test clone3.gen.test \ +@@ -6356,36 +6660,53 @@ + epoll_pwait2-P.gen.test epoll_pwait2-y.gen.test \ + epoll_wait.gen.test erestartsys.gen.test \ + execve--secontext.gen.test execve--secontext_full.gen.test \ +- execveat.gen.test execveat--secontext.gen.test \ +- execveat--secontext_full.gen.test execveat-v.gen.test \ ++ execve--secontext_full_mismatch.gen.test \ ++ execve--secontext_mismatch.gen.test execveat.gen.test \ ++ execveat--secontext.gen.test execveat--secontext_full.gen.test \ ++ execveat--secontext_full_mismatch.gen.test \ ++ execveat--secontext_mismatch.gen.test execveat-v.gen.test \ + faccessat--secontext.gen.test \ +- faccessat--secontext_full.gen.test faccessat-P.gen.test \ ++ faccessat--secontext_full.gen.test \ ++ faccessat--secontext_full_mismatch.gen.test \ ++ faccessat--secontext_mismatch.gen.test faccessat-P.gen.test \ + faccessat-y.gen.test faccessat-y--secontext.gen.test \ +- faccessat-y--secontext_full.gen.test faccessat-yy.gen.test \ ++ faccessat-y--secontext_full.gen.test \ ++ faccessat-y--secontext_full_mismatch.gen.test \ ++ faccessat-y--secontext_mismatch.gen.test faccessat-yy.gen.test \ + faccessat2-P.gen.test faccessat2-y.gen.test \ + faccessat2-yy.gen.test fadvise64_64.gen.test \ + fallocate.gen.test fanotify_init.gen.test \ + fanotify_mark.gen.test fanotify_mark--secontext.gen.test \ + fanotify_mark--secontext_full.gen.test \ ++ fanotify_mark--secontext_full_mismatch.gen.test \ ++ fanotify_mark--secontext_mismatch.gen.test \ + fanotify_mark-Xabbrev.gen.test fanotify_mark-Xraw.gen.test \ + fanotify_mark-Xverbose.gen.test fchdir.gen.test \ + fchmod.gen.test fchmod--secontext.gen.test \ +- fchmod--secontext_full.gen.test fchmod-y.gen.test \ ++ fchmod--secontext_full.gen.test \ ++ fchmod--secontext_full_mismatch.gen.test \ ++ fchmod--secontext_mismatch.gen.test fchmod-y.gen.test \ + fchmod-y--secontext.gen.test fchmod-y--secontext_full.gen.test \ +- fchmodat.gen.test fchmodat--secontext.gen.test \ +- fchmodat--secontext_full.gen.test fchown.gen.test \ ++ fchmod-y--secontext_full_mismatch.gen.test \ ++ fchmod-y--secontext_mismatch.gen.test fchmodat.gen.test \ ++ fchmodat--secontext.gen.test fchmodat--secontext_full.gen.test \ ++ fchmodat--secontext_full_mismatch.gen.test \ ++ fchmodat--secontext_mismatch.gen.test fchown.gen.test \ + fchown32.gen.test fchownat.gen.test \ + fchownat--secontext.gen.test fchownat--secontext_full.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_handle--secontext.gen.test \ +- file_handle--secontext_full.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 fsopen.gen.test \ +- fspick.gen.test fspick-P.gen.test fstat.gen.test \ +- fstat-Xabbrev.gen.test fstat-Xraw.gen.test \ ++ fchownat--secontext_full_mismatch.gen.test \ ++ fchownat--secontext_mismatch.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_handle--secontext.gen.test \ ++ file_handle--secontext_full.gen.test \ ++ file_handle--secontext_full_mismatch.gen.test \ ++ file_handle--secontext_mismatch.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 \ ++ fsopen.gen.test fspick.gen.test fspick-P.gen.test \ ++ fstat.gen.test fstat-Xabbrev.gen.test fstat-Xraw.gen.test \ + fstat-Xverbose.gen.test fstat64.gen.test \ + fstat64-Xabbrev.gen.test fstat64-Xraw.gen.test \ + fstat64-Xverbose.gen.test fstatat64.gen.test fstatfs.gen.test \ +@@ -6512,8 +6833,10 @@ + landlock_restrict_self-y.gen.test lchown.gen.test \ + lchown32.gen.test link.gen.test linkat.gen.test \ + linkat--secontext.gen.test linkat--secontext_full.gen.test \ +- lookup_dcookie.gen.test lstat.gen.test lstat64.gen.test \ +- madvise.gen.test maybe_switch_current_tcp.gen.test \ ++ linkat--secontext_full_mismatch.gen.test \ ++ linkat--secontext_mismatch.gen.test lookup_dcookie.gen.test \ ++ lstat.gen.test lstat64.gen.test madvise.gen.test \ ++ maybe_switch_current_tcp.gen.test \ + maybe_switch_current_tcp--quiet-thread-execve.gen.test \ + mbind.gen.test mbind-Xabbrev.gen.test mbind-Xraw.gen.test \ + mbind-Xverbose.gen.test membarrier.gen.test \ +@@ -6582,16 +6905,19 @@ + oldselect.gen.test oldselect-P.gen.test \ + oldselect-efault.gen.test oldselect-efault-P.gen.test \ + oldstat.gen.test open.gen.test open--secontext.gen.test \ +- open--secontext_full.gen.test open_tree.gen.test \ ++ open--secontext_full.gen.test \ ++ open--secontext_full_mismatch.gen.test \ ++ open--secontext_mismatch.gen.test open_tree.gen.test \ + open_tree-P.gen.test openat.gen.test \ + openat--secontext.gen.test openat--secontext_full.gen.test \ +- openat2.gen.test openat2-Xabbrev.gen.test \ +- openat2-Xraw.gen.test openat2-Xverbose.gen.test \ +- openat2-v.gen.test openat2-v-y.gen.test \ +- openat2-v-y-Xabbrev.gen.test openat2-v-y-Xraw.gen.test \ +- openat2-v-y-Xverbose.gen.test openat2-y.gen.test \ +- orphaned_process_group.gen.test osf_utimes.gen.test \ +- pause.gen.test perf_event_open.gen.test \ ++ openat--secontext_full_mismatch.gen.test \ ++ openat--secontext_mismatch.gen.test openat2.gen.test \ ++ openat2-Xabbrev.gen.test openat2-Xraw.gen.test \ ++ openat2-Xverbose.gen.test openat2-v.gen.test \ ++ openat2-v-y.gen.test openat2-v-y-Xabbrev.gen.test \ ++ openat2-v-y-Xraw.gen.test openat2-v-y-Xverbose.gen.test \ ++ openat2-y.gen.test orphaned_process_group.gen.test \ ++ osf_utimes.gen.test pause.gen.test perf_event_open.gen.test \ + perf_event_open_nonverbose.gen.test \ + perf_event_open_unabbrev.gen.test personality-Xabbrev.gen.test \ + personality-Xraw.gen.test personality-Xverbose.gen.test \ +@@ -7155,6 +7481,14 @@ + @rm -f access--secontext_full$(EXEEXT) + $(AM_V_CCLD)$(LINK) $(access__secontext_full_OBJECTS) $(access__secontext_full_LDADD) $(LIBS) + ++access--secontext_full_mismatch$(EXEEXT): $(access__secontext_full_mismatch_OBJECTS) $(access__secontext_full_mismatch_DEPENDENCIES) $(EXTRA_access__secontext_full_mismatch_DEPENDENCIES) ++ @rm -f access--secontext_full_mismatch$(EXEEXT) ++ $(AM_V_CCLD)$(LINK) $(access__secontext_full_mismatch_OBJECTS) $(access__secontext_full_mismatch_LDADD) $(LIBS) ++ ++access--secontext_mismatch$(EXEEXT): $(access__secontext_mismatch_OBJECTS) $(access__secontext_mismatch_DEPENDENCIES) $(EXTRA_access__secontext_mismatch_DEPENDENCIES) ++ @rm -f access--secontext_mismatch$(EXEEXT) ++ $(AM_V_CCLD)$(LINK) $(access__secontext_mismatch_OBJECTS) $(access__secontext_mismatch_LDADD) $(LIBS) ++ + acct$(EXEEXT): $(acct_OBJECTS) $(acct_DEPENDENCIES) $(EXTRA_acct_DEPENDENCIES) + @rm -f acct$(EXEEXT) + $(AM_V_CCLD)$(LINK) $(acct_OBJECTS) $(acct_LDADD) $(LIBS) +@@ -7283,6 +7617,14 @@ + @rm -f chmod--secontext_full$(EXEEXT) + $(AM_V_CCLD)$(LINK) $(chmod__secontext_full_OBJECTS) $(chmod__secontext_full_LDADD) $(LIBS) + ++chmod--secontext_full_mismatch$(EXEEXT): $(chmod__secontext_full_mismatch_OBJECTS) $(chmod__secontext_full_mismatch_DEPENDENCIES) $(EXTRA_chmod__secontext_full_mismatch_DEPENDENCIES) ++ @rm -f chmod--secontext_full_mismatch$(EXEEXT) ++ $(AM_V_CCLD)$(LINK) $(chmod__secontext_full_mismatch_OBJECTS) $(chmod__secontext_full_mismatch_LDADD) $(LIBS) ++ ++chmod--secontext_mismatch$(EXEEXT): $(chmod__secontext_mismatch_OBJECTS) $(chmod__secontext_mismatch_DEPENDENCIES) $(EXTRA_chmod__secontext_mismatch_DEPENDENCIES) ++ @rm -f chmod--secontext_mismatch$(EXEEXT) ++ $(AM_V_CCLD)$(LINK) $(chmod__secontext_mismatch_OBJECTS) $(chmod__secontext_mismatch_LDADD) $(LIBS) ++ + chown$(EXEEXT): $(chown_OBJECTS) $(chown_DEPENDENCIES) $(EXTRA_chown_DEPENDENCIES) + @rm -f chown$(EXEEXT) + $(AM_V_CCLD)$(LINK) $(chown_OBJECTS) $(chown_LDADD) $(LIBS) +@@ -7527,6 +7869,14 @@ + @rm -f execve--secontext_full$(EXEEXT) + $(AM_V_CCLD)$(LINK) $(execve__secontext_full_OBJECTS) $(execve__secontext_full_LDADD) $(LIBS) + ++execve--secontext_full_mismatch$(EXEEXT): $(execve__secontext_full_mismatch_OBJECTS) $(execve__secontext_full_mismatch_DEPENDENCIES) $(EXTRA_execve__secontext_full_mismatch_DEPENDENCIES) ++ @rm -f execve--secontext_full_mismatch$(EXEEXT) ++ $(AM_V_CCLD)$(LINK) $(execve__secontext_full_mismatch_OBJECTS) $(execve__secontext_full_mismatch_LDADD) $(LIBS) ++ ++execve--secontext_mismatch$(EXEEXT): $(execve__secontext_mismatch_OBJECTS) $(execve__secontext_mismatch_DEPENDENCIES) $(EXTRA_execve__secontext_mismatch_DEPENDENCIES) ++ @rm -f execve--secontext_mismatch$(EXEEXT) ++ $(AM_V_CCLD)$(LINK) $(execve__secontext_mismatch_OBJECTS) $(execve__secontext_mismatch_LDADD) $(LIBS) ++ + execve-v$(EXEEXT): $(execve_v_OBJECTS) $(execve_v_DEPENDENCIES) $(EXTRA_execve_v_DEPENDENCIES) + @rm -f execve-v$(EXEEXT) + $(AM_V_CCLD)$(LINK) $(execve_v_OBJECTS) $(execve_v_LDADD) $(LIBS) +@@ -7543,6 +7893,14 @@ + @rm -f execveat--secontext_full$(EXEEXT) + $(AM_V_CCLD)$(LINK) $(execveat__secontext_full_OBJECTS) $(execveat__secontext_full_LDADD) $(LIBS) + ++execveat--secontext_full_mismatch$(EXEEXT): $(execveat__secontext_full_mismatch_OBJECTS) $(execveat__secontext_full_mismatch_DEPENDENCIES) $(EXTRA_execveat__secontext_full_mismatch_DEPENDENCIES) ++ @rm -f execveat--secontext_full_mismatch$(EXEEXT) ++ $(AM_V_CCLD)$(LINK) $(execveat__secontext_full_mismatch_OBJECTS) $(execveat__secontext_full_mismatch_LDADD) $(LIBS) ++ ++execveat--secontext_mismatch$(EXEEXT): $(execveat__secontext_mismatch_OBJECTS) $(execveat__secontext_mismatch_DEPENDENCIES) $(EXTRA_execveat__secontext_mismatch_DEPENDENCIES) ++ @rm -f execveat--secontext_mismatch$(EXEEXT) ++ $(AM_V_CCLD)$(LINK) $(execveat__secontext_mismatch_OBJECTS) $(execveat__secontext_mismatch_LDADD) $(LIBS) ++ + execveat-v$(EXEEXT): $(execveat_v_OBJECTS) $(execveat_v_DEPENDENCIES) $(EXTRA_execveat_v_DEPENDENCIES) + @rm -f execveat-v$(EXEEXT) + $(AM_V_CCLD)$(LINK) $(execveat_v_OBJECTS) $(execveat_v_LDADD) $(LIBS) +@@ -7559,6 +7917,14 @@ + @rm -f faccessat--secontext_full$(EXEEXT) + $(AM_V_CCLD)$(LINK) $(faccessat__secontext_full_OBJECTS) $(faccessat__secontext_full_LDADD) $(LIBS) + ++faccessat--secontext_full_mismatch$(EXEEXT): $(faccessat__secontext_full_mismatch_OBJECTS) $(faccessat__secontext_full_mismatch_DEPENDENCIES) $(EXTRA_faccessat__secontext_full_mismatch_DEPENDENCIES) ++ @rm -f faccessat--secontext_full_mismatch$(EXEEXT) ++ $(AM_V_CCLD)$(LINK) $(faccessat__secontext_full_mismatch_OBJECTS) $(faccessat__secontext_full_mismatch_LDADD) $(LIBS) ++ ++faccessat--secontext_mismatch$(EXEEXT): $(faccessat__secontext_mismatch_OBJECTS) $(faccessat__secontext_mismatch_DEPENDENCIES) $(EXTRA_faccessat__secontext_mismatch_DEPENDENCIES) ++ @rm -f faccessat--secontext_mismatch$(EXEEXT) ++ $(AM_V_CCLD)$(LINK) $(faccessat__secontext_mismatch_OBJECTS) $(faccessat__secontext_mismatch_LDADD) $(LIBS) ++ + faccessat-P$(EXEEXT): $(faccessat_P_OBJECTS) $(faccessat_P_DEPENDENCIES) $(EXTRA_faccessat_P_DEPENDENCIES) + @rm -f faccessat-P$(EXEEXT) + $(AM_V_CCLD)$(LINK) $(faccessat_P_OBJECTS) $(faccessat_P_LDADD) $(LIBS) +@@ -7575,6 +7941,14 @@ + @rm -f faccessat-y--secontext_full$(EXEEXT) + $(AM_V_CCLD)$(LINK) $(faccessat_y__secontext_full_OBJECTS) $(faccessat_y__secontext_full_LDADD) $(LIBS) + ++faccessat-y--secontext_full_mismatch$(EXEEXT): $(faccessat_y__secontext_full_mismatch_OBJECTS) $(faccessat_y__secontext_full_mismatch_DEPENDENCIES) $(EXTRA_faccessat_y__secontext_full_mismatch_DEPENDENCIES) ++ @rm -f faccessat-y--secontext_full_mismatch$(EXEEXT) ++ $(AM_V_CCLD)$(LINK) $(faccessat_y__secontext_full_mismatch_OBJECTS) $(faccessat_y__secontext_full_mismatch_LDADD) $(LIBS) ++ ++faccessat-y--secontext_mismatch$(EXEEXT): $(faccessat_y__secontext_mismatch_OBJECTS) $(faccessat_y__secontext_mismatch_DEPENDENCIES) $(EXTRA_faccessat_y__secontext_mismatch_DEPENDENCIES) ++ @rm -f faccessat-y--secontext_mismatch$(EXEEXT) ++ $(AM_V_CCLD)$(LINK) $(faccessat_y__secontext_mismatch_OBJECTS) $(faccessat_y__secontext_mismatch_LDADD) $(LIBS) ++ + faccessat-yy$(EXEEXT): $(faccessat_yy_OBJECTS) $(faccessat_yy_DEPENDENCIES) $(EXTRA_faccessat_yy_DEPENDENCIES) + @rm -f faccessat-yy$(EXEEXT) + $(AM_V_CCLD)$(LINK) $(faccessat_yy_OBJECTS) $(faccessat_yy_LDADD) $(LIBS) +@@ -7623,6 +7997,14 @@ + @rm -f fanotify_mark--secontext_full$(EXEEXT) + $(AM_V_CCLD)$(LINK) $(fanotify_mark__secontext_full_OBJECTS) $(fanotify_mark__secontext_full_LDADD) $(LIBS) + ++fanotify_mark--secontext_full_mismatch$(EXEEXT): $(fanotify_mark__secontext_full_mismatch_OBJECTS) $(fanotify_mark__secontext_full_mismatch_DEPENDENCIES) $(EXTRA_fanotify_mark__secontext_full_mismatch_DEPENDENCIES) ++ @rm -f fanotify_mark--secontext_full_mismatch$(EXEEXT) ++ $(AM_V_CCLD)$(LINK) $(fanotify_mark__secontext_full_mismatch_OBJECTS) $(fanotify_mark__secontext_full_mismatch_LDADD) $(LIBS) ++ ++fanotify_mark--secontext_mismatch$(EXEEXT): $(fanotify_mark__secontext_mismatch_OBJECTS) $(fanotify_mark__secontext_mismatch_DEPENDENCIES) $(EXTRA_fanotify_mark__secontext_mismatch_DEPENDENCIES) ++ @rm -f fanotify_mark--secontext_mismatch$(EXEEXT) ++ $(AM_V_CCLD)$(LINK) $(fanotify_mark__secontext_mismatch_OBJECTS) $(fanotify_mark__secontext_mismatch_LDADD) $(LIBS) ++ + fanotify_mark-Xabbrev$(EXEEXT): $(fanotify_mark_Xabbrev_OBJECTS) $(fanotify_mark_Xabbrev_DEPENDENCIES) $(EXTRA_fanotify_mark_Xabbrev_DEPENDENCIES) + @rm -f fanotify_mark-Xabbrev$(EXEEXT) + $(AM_V_CCLD)$(LINK) $(fanotify_mark_Xabbrev_OBJECTS) $(fanotify_mark_Xabbrev_LDADD) $(LIBS) +@@ -7651,6 +8033,14 @@ + @rm -f fchmod--secontext_full$(EXEEXT) + $(AM_V_CCLD)$(LINK) $(fchmod__secontext_full_OBJECTS) $(fchmod__secontext_full_LDADD) $(LIBS) + ++fchmod--secontext_full_mismatch$(EXEEXT): $(fchmod__secontext_full_mismatch_OBJECTS) $(fchmod__secontext_full_mismatch_DEPENDENCIES) $(EXTRA_fchmod__secontext_full_mismatch_DEPENDENCIES) ++ @rm -f fchmod--secontext_full_mismatch$(EXEEXT) ++ $(AM_V_CCLD)$(LINK) $(fchmod__secontext_full_mismatch_OBJECTS) $(fchmod__secontext_full_mismatch_LDADD) $(LIBS) ++ ++fchmod--secontext_mismatch$(EXEEXT): $(fchmod__secontext_mismatch_OBJECTS) $(fchmod__secontext_mismatch_DEPENDENCIES) $(EXTRA_fchmod__secontext_mismatch_DEPENDENCIES) ++ @rm -f fchmod--secontext_mismatch$(EXEEXT) ++ $(AM_V_CCLD)$(LINK) $(fchmod__secontext_mismatch_OBJECTS) $(fchmod__secontext_mismatch_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) +@@ -7663,6 +8053,14 @@ + @rm -f fchmod-y--secontext_full$(EXEEXT) + $(AM_V_CCLD)$(LINK) $(fchmod_y__secontext_full_OBJECTS) $(fchmod_y__secontext_full_LDADD) $(LIBS) + ++fchmod-y--secontext_full_mismatch$(EXEEXT): $(fchmod_y__secontext_full_mismatch_OBJECTS) $(fchmod_y__secontext_full_mismatch_DEPENDENCIES) $(EXTRA_fchmod_y__secontext_full_mismatch_DEPENDENCIES) ++ @rm -f fchmod-y--secontext_full_mismatch$(EXEEXT) ++ $(AM_V_CCLD)$(LINK) $(fchmod_y__secontext_full_mismatch_OBJECTS) $(fchmod_y__secontext_full_mismatch_LDADD) $(LIBS) ++ ++fchmod-y--secontext_mismatch$(EXEEXT): $(fchmod_y__secontext_mismatch_OBJECTS) $(fchmod_y__secontext_mismatch_DEPENDENCIES) $(EXTRA_fchmod_y__secontext_mismatch_DEPENDENCIES) ++ @rm -f fchmod-y--secontext_mismatch$(EXEEXT) ++ $(AM_V_CCLD)$(LINK) $(fchmod_y__secontext_mismatch_OBJECTS) $(fchmod_y__secontext_mismatch_LDADD) $(LIBS) ++ + fchmodat$(EXEEXT): $(fchmodat_OBJECTS) $(fchmodat_DEPENDENCIES) $(EXTRA_fchmodat_DEPENDENCIES) + @rm -f fchmodat$(EXEEXT) + $(AM_V_CCLD)$(LINK) $(fchmodat_OBJECTS) $(fchmodat_LDADD) $(LIBS) +@@ -7675,6 +8073,14 @@ + @rm -f fchmodat--secontext_full$(EXEEXT) + $(AM_V_CCLD)$(LINK) $(fchmodat__secontext_full_OBJECTS) $(fchmodat__secontext_full_LDADD) $(LIBS) + ++fchmodat--secontext_full_mismatch$(EXEEXT): $(fchmodat__secontext_full_mismatch_OBJECTS) $(fchmodat__secontext_full_mismatch_DEPENDENCIES) $(EXTRA_fchmodat__secontext_full_mismatch_DEPENDENCIES) ++ @rm -f fchmodat--secontext_full_mismatch$(EXEEXT) ++ $(AM_V_CCLD)$(LINK) $(fchmodat__secontext_full_mismatch_OBJECTS) $(fchmodat__secontext_full_mismatch_LDADD) $(LIBS) ++ ++fchmodat--secontext_mismatch$(EXEEXT): $(fchmodat__secontext_mismatch_OBJECTS) $(fchmodat__secontext_mismatch_DEPENDENCIES) $(EXTRA_fchmodat__secontext_mismatch_DEPENDENCIES) ++ @rm -f fchmodat--secontext_mismatch$(EXEEXT) ++ $(AM_V_CCLD)$(LINK) $(fchmodat__secontext_mismatch_OBJECTS) $(fchmodat__secontext_mismatch_LDADD) $(LIBS) ++ + fchown$(EXEEXT): $(fchown_OBJECTS) $(fchown_DEPENDENCIES) $(EXTRA_fchown_DEPENDENCIES) + @rm -f fchown$(EXEEXT) + $(AM_V_CCLD)$(LINK) $(fchown_OBJECTS) $(fchown_LDADD) $(LIBS) +@@ -7695,6 +8101,14 @@ + @rm -f fchownat--secontext_full$(EXEEXT) + $(AM_V_CCLD)$(LINK) $(fchownat__secontext_full_OBJECTS) $(fchownat__secontext_full_LDADD) $(LIBS) + ++fchownat--secontext_full_mismatch$(EXEEXT): $(fchownat__secontext_full_mismatch_OBJECTS) $(fchownat__secontext_full_mismatch_DEPENDENCIES) $(EXTRA_fchownat__secontext_full_mismatch_DEPENDENCIES) ++ @rm -f fchownat--secontext_full_mismatch$(EXEEXT) ++ $(AM_V_CCLD)$(LINK) $(fchownat__secontext_full_mismatch_OBJECTS) $(fchownat__secontext_full_mismatch_LDADD) $(LIBS) ++ ++fchownat--secontext_mismatch$(EXEEXT): $(fchownat__secontext_mismatch_OBJECTS) $(fchownat__secontext_mismatch_DEPENDENCIES) $(EXTRA_fchownat__secontext_mismatch_DEPENDENCIES) ++ @rm -f fchownat--secontext_mismatch$(EXEEXT) ++ $(AM_V_CCLD)$(LINK) $(fchownat__secontext_mismatch_OBJECTS) $(fchownat__secontext_mismatch_LDADD) $(LIBS) ++ + fcntl$(EXEEXT): $(fcntl_OBJECTS) $(fcntl_DEPENDENCIES) $(EXTRA_fcntl_DEPENDENCIES) + @rm -f fcntl$(EXEEXT) + $(AM_V_CCLD)$(LINK) $(fcntl_OBJECTS) $(fcntl_LDADD) $(LIBS) +@@ -7731,6 +8145,14 @@ + @rm -f file_handle--secontext_full$(EXEEXT) + $(AM_V_CCLD)$(LINK) $(file_handle__secontext_full_OBJECTS) $(file_handle__secontext_full_LDADD) $(LIBS) + ++file_handle--secontext_full_mismatch$(EXEEXT): $(file_handle__secontext_full_mismatch_OBJECTS) $(file_handle__secontext_full_mismatch_DEPENDENCIES) $(EXTRA_file_handle__secontext_full_mismatch_DEPENDENCIES) ++ @rm -f file_handle--secontext_full_mismatch$(EXEEXT) ++ $(AM_V_CCLD)$(LINK) $(file_handle__secontext_full_mismatch_OBJECTS) $(file_handle__secontext_full_mismatch_LDADD) $(LIBS) ++ ++file_handle--secontext_mismatch$(EXEEXT): $(file_handle__secontext_mismatch_OBJECTS) $(file_handle__secontext_mismatch_DEPENDENCIES) $(EXTRA_file_handle__secontext_mismatch_DEPENDENCIES) ++ @rm -f file_handle--secontext_mismatch$(EXEEXT) ++ $(AM_V_CCLD)$(LINK) $(file_handle__secontext_mismatch_OBJECTS) $(file_handle__secontext_mismatch_LDADD) $(LIBS) ++ + filter-unavailable$(EXEEXT): $(filter_unavailable_OBJECTS) $(filter_unavailable_DEPENDENCIES) $(EXTRA_filter_unavailable_DEPENDENCIES) + @rm -f filter-unavailable$(EXEEXT) + $(AM_V_CCLD)$(LINK) $(filter_unavailable_OBJECTS) $(filter_unavailable_LDADD) $(LIBS) +@@ -8775,6 +9197,14 @@ + @rm -f linkat--secontext_full$(EXEEXT) + $(AM_V_CCLD)$(LINK) $(linkat__secontext_full_OBJECTS) $(linkat__secontext_full_LDADD) $(LIBS) + ++linkat--secontext_full_mismatch$(EXEEXT): $(linkat__secontext_full_mismatch_OBJECTS) $(linkat__secontext_full_mismatch_DEPENDENCIES) $(EXTRA_linkat__secontext_full_mismatch_DEPENDENCIES) ++ @rm -f linkat--secontext_full_mismatch$(EXEEXT) ++ $(AM_V_CCLD)$(LINK) $(linkat__secontext_full_mismatch_OBJECTS) $(linkat__secontext_full_mismatch_LDADD) $(LIBS) ++ ++linkat--secontext_mismatch$(EXEEXT): $(linkat__secontext_mismatch_OBJECTS) $(linkat__secontext_mismatch_DEPENDENCIES) $(EXTRA_linkat__secontext_mismatch_DEPENDENCIES) ++ @rm -f linkat--secontext_mismatch$(EXEEXT) ++ $(AM_V_CCLD)$(LINK) $(linkat__secontext_mismatch_OBJECTS) $(linkat__secontext_mismatch_LDADD) $(LIBS) ++ + list_sigaction_signum$(EXEEXT): $(list_sigaction_signum_OBJECTS) $(list_sigaction_signum_DEPENDENCIES) $(EXTRA_list_sigaction_signum_DEPENDENCIES) + @rm -f list_sigaction_signum$(EXEEXT) + $(AM_V_CCLD)$(LINK) $(list_sigaction_signum_OBJECTS) $(list_sigaction_signum_LDADD) $(LIBS) +@@ -9423,6 +9853,14 @@ + @rm -f open--secontext_full$(EXEEXT) + $(AM_V_CCLD)$(LINK) $(open__secontext_full_OBJECTS) $(open__secontext_full_LDADD) $(LIBS) + ++open--secontext_full_mismatch$(EXEEXT): $(open__secontext_full_mismatch_OBJECTS) $(open__secontext_full_mismatch_DEPENDENCIES) $(EXTRA_open__secontext_full_mismatch_DEPENDENCIES) ++ @rm -f open--secontext_full_mismatch$(EXEEXT) ++ $(AM_V_CCLD)$(LINK) $(open__secontext_full_mismatch_OBJECTS) $(open__secontext_full_mismatch_LDADD) $(LIBS) ++ ++open--secontext_mismatch$(EXEEXT): $(open__secontext_mismatch_OBJECTS) $(open__secontext_mismatch_DEPENDENCIES) $(EXTRA_open__secontext_mismatch_DEPENDENCIES) ++ @rm -f open--secontext_mismatch$(EXEEXT) ++ $(AM_V_CCLD)$(LINK) $(open__secontext_mismatch_OBJECTS) $(open__secontext_mismatch_LDADD) $(LIBS) ++ + open_tree$(EXEEXT): $(open_tree_OBJECTS) $(open_tree_DEPENDENCIES) $(EXTRA_open_tree_DEPENDENCIES) + @rm -f open_tree$(EXEEXT) + $(AM_V_CCLD)$(LINK) $(open_tree_OBJECTS) $(open_tree_LDADD) $(LIBS) +@@ -9443,6 +9881,14 @@ + @rm -f openat--secontext_full$(EXEEXT) + $(AM_V_CCLD)$(LINK) $(openat__secontext_full_OBJECTS) $(openat__secontext_full_LDADD) $(LIBS) + ++openat--secontext_full_mismatch$(EXEEXT): $(openat__secontext_full_mismatch_OBJECTS) $(openat__secontext_full_mismatch_DEPENDENCIES) $(EXTRA_openat__secontext_full_mismatch_DEPENDENCIES) ++ @rm -f openat--secontext_full_mismatch$(EXEEXT) ++ $(AM_V_CCLD)$(LINK) $(openat__secontext_full_mismatch_OBJECTS) $(openat__secontext_full_mismatch_LDADD) $(LIBS) ++ ++openat--secontext_mismatch$(EXEEXT): $(openat__secontext_mismatch_OBJECTS) $(openat__secontext_mismatch_DEPENDENCIES) $(EXTRA_openat__secontext_mismatch_DEPENDENCIES) ++ @rm -f openat--secontext_mismatch$(EXEEXT) ++ $(AM_V_CCLD)$(LINK) $(openat__secontext_mismatch_OBJECTS) $(openat__secontext_mismatch_LDADD) $(LIBS) ++ + openat2$(EXEEXT): $(openat2_OBJECTS) $(openat2_DEPENDENCIES) $(EXTRA_openat2_DEPENDENCIES) + @rm -f openat2$(EXEEXT) + $(AM_V_CCLD)$(LINK) $(openat2_OBJECTS) $(openat2_LDADD) $(LIBS) +@@ -10835,6 +11281,8 @@ + @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/accept4.Po@am__quote@ # am--include-marker + @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/access--secontext.Po@am__quote@ # am--include-marker + @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/access--secontext_full.Po@am__quote@ # am--include-marker ++@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/access--secontext_full_mismatch.Po@am__quote@ # am--include-marker ++@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/access--secontext_mismatch.Po@am__quote@ # am--include-marker + @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/access.Po@am__quote@ # am--include-marker + @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/acct.Po@am__quote@ # am--include-marker + @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/add_key.Po@am__quote@ # am--include-marker +@@ -10867,6 +11315,8 @@ + @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/check_sigign.Po@am__quote@ # am--include-marker + @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/chmod--secontext.Po@am__quote@ # am--include-marker + @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/chmod--secontext_full.Po@am__quote@ # am--include-marker ++@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/chmod--secontext_full_mismatch.Po@am__quote@ # am--include-marker ++@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/chmod--secontext_mismatch.Po@am__quote@ # am--include-marker + @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/chmod.Po@am__quote@ # am--include-marker + @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/chown.Po@am__quote@ # am--include-marker + @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/chown32.Po@am__quote@ # am--include-marker +@@ -10928,17 +11378,25 @@ + @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/eventfd.Po@am__quote@ # am--include-marker + @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/execve--secontext.Po@am__quote@ # am--include-marker + @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/execve--secontext_full.Po@am__quote@ # am--include-marker ++@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/execve--secontext_full_mismatch.Po@am__quote@ # am--include-marker ++@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/execve--secontext_mismatch.Po@am__quote@ # am--include-marker + @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/execve-v.Po@am__quote@ # am--include-marker + @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/execve.Po@am__quote@ # am--include-marker + @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/execveat--secontext.Po@am__quote@ # am--include-marker + @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/execveat--secontext_full.Po@am__quote@ # am--include-marker ++@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/execveat--secontext_full_mismatch.Po@am__quote@ # am--include-marker ++@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/execveat--secontext_mismatch.Po@am__quote@ # am--include-marker + @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/execveat-v.Po@am__quote@ # am--include-marker + @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/execveat.Po@am__quote@ # am--include-marker + @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/faccessat--secontext.Po@am__quote@ # am--include-marker + @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/faccessat--secontext_full.Po@am__quote@ # am--include-marker ++@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/faccessat--secontext_full_mismatch.Po@am__quote@ # am--include-marker ++@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/faccessat--secontext_mismatch.Po@am__quote@ # am--include-marker + @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/faccessat-P.Po@am__quote@ # am--include-marker + @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/faccessat-y--secontext.Po@am__quote@ # am--include-marker + @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/faccessat-y--secontext_full.Po@am__quote@ # am--include-marker ++@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/faccessat-y--secontext_full_mismatch.Po@am__quote@ # am--include-marker ++@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/faccessat-y--secontext_mismatch.Po@am__quote@ # am--include-marker + @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/faccessat-y.Po@am__quote@ # am--include-marker + @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/faccessat-yy.Po@am__quote@ # am--include-marker + @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/faccessat.Po@am__quote@ # am--include-marker +@@ -10952,6 +11410,8 @@ + @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/fanotify_init.Po@am__quote@ # am--include-marker + @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/fanotify_mark--secontext.Po@am__quote@ # am--include-marker + @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/fanotify_mark--secontext_full.Po@am__quote@ # am--include-marker ++@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/fanotify_mark--secontext_full_mismatch.Po@am__quote@ # am--include-marker ++@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/fanotify_mark--secontext_mismatch.Po@am__quote@ # am--include-marker + @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/fanotify_mark-Xabbrev.Po@am__quote@ # am--include-marker + @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/fanotify_mark-Xraw.Po@am__quote@ # am--include-marker + @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/fanotify_mark-Xverbose.Po@am__quote@ # am--include-marker +@@ -10959,17 +11419,25 @@ + @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/fchdir.Po@am__quote@ # am--include-marker + @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/fchmod--secontext.Po@am__quote@ # am--include-marker + @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/fchmod--secontext_full.Po@am__quote@ # am--include-marker ++@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/fchmod--secontext_full_mismatch.Po@am__quote@ # am--include-marker ++@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/fchmod--secontext_mismatch.Po@am__quote@ # am--include-marker + @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/fchmod-y--secontext.Po@am__quote@ # am--include-marker + @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/fchmod-y--secontext_full.Po@am__quote@ # am--include-marker ++@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/fchmod-y--secontext_full_mismatch.Po@am__quote@ # am--include-marker ++@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/fchmod-y--secontext_mismatch.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--secontext.Po@am__quote@ # am--include-marker + @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/fchmodat--secontext_full.Po@am__quote@ # am--include-marker ++@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/fchmodat--secontext_full_mismatch.Po@am__quote@ # am--include-marker ++@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/fchmodat--secontext_mismatch.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 + @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/fchown32.Po@am__quote@ # am--include-marker + @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/fchownat--secontext.Po@am__quote@ # am--include-marker + @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/fchownat--secontext_full.Po@am__quote@ # am--include-marker ++@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/fchownat--secontext_full_mismatch.Po@am__quote@ # am--include-marker ++@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/fchownat--secontext_mismatch.Po@am__quote@ # am--include-marker + @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/fchownat.Po@am__quote@ # am--include-marker + @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/fcntl--pidns-translation.Po@am__quote@ # am--include-marker + @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/fcntl.Po@am__quote@ # am--include-marker +@@ -10979,6 +11447,8 @@ + @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/fflush.Po@am__quote@ # am--include-marker + @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/file_handle--secontext.Po@am__quote@ # am--include-marker + @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/file_handle--secontext_full.Po@am__quote@ # am--include-marker ++@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/file_handle--secontext_full_mismatch.Po@am__quote@ # am--include-marker ++@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/file_handle--secontext_mismatch.Po@am__quote@ # am--include-marker + @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/file_handle.Po@am__quote@ # am--include-marker + @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/filter-unavailable.Po@am__quote@ # am--include-marker + @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/filter_seccomp-flag.Po@am__quote@ # am--include-marker +@@ -11276,6 +11746,8 @@ + @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/link.Po@am__quote@ # am--include-marker + @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/linkat--secontext.Po@am__quote@ # am--include-marker + @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/linkat--secontext_full.Po@am__quote@ # am--include-marker ++@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/linkat--secontext_full_mismatch.Po@am__quote@ # am--include-marker ++@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/linkat--secontext_mismatch.Po@am__quote@ # am--include-marker + @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/linkat.Po@am__quote@ # am--include-marker + @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/list_sigaction_signum.Po@am__quote@ # am--include-marker + @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/llseek.Po@am__quote@ # am--include-marker +@@ -11438,11 +11910,15 @@ + @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/oldstat.Po@am__quote@ # am--include-marker + @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/open--secontext.Po@am__quote@ # am--include-marker + @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/open--secontext_full.Po@am__quote@ # am--include-marker ++@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/open--secontext_full_mismatch.Po@am__quote@ # am--include-marker ++@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/open--secontext_mismatch.Po@am__quote@ # am--include-marker + @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/open.Po@am__quote@ # am--include-marker + @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/open_tree-P.Po@am__quote@ # am--include-marker + @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/open_tree.Po@am__quote@ # am--include-marker + @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/openat--secontext.Po@am__quote@ # am--include-marker + @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/openat--secontext_full.Po@am__quote@ # am--include-marker ++@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/openat--secontext_full_mismatch.Po@am__quote@ # am--include-marker ++@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/openat--secontext_mismatch.Po@am__quote@ # am--include-marker + @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/openat.Po@am__quote@ # am--include-marker + @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/openat2-Xabbrev.Po@am__quote@ # am--include-marker + @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/openat2-Xraw.Po@am__quote@ # am--include-marker +@@ -13004,6 +13480,12 @@ + $(srcdir)/access--secontext_full.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in + $(AM_V_GEN) $^ $@ + ++$(srcdir)/access--secontext_full_mismatch.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in ++ $(AM_V_GEN) $^ $@ ++ ++$(srcdir)/access--secontext_mismatch.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in ++ $(AM_V_GEN) $^ $@ ++ + $(srcdir)/acct.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in + $(AM_V_GEN) $^ $@ + +@@ -13055,6 +13537,12 @@ + $(srcdir)/chmod--secontext_full.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in + $(AM_V_GEN) $^ $@ + ++$(srcdir)/chmod--secontext_full_mismatch.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in ++ $(AM_V_GEN) $^ $@ ++ ++$(srcdir)/chmod--secontext_mismatch.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in ++ $(AM_V_GEN) $^ $@ ++ + $(srcdir)/chown.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in + $(AM_V_GEN) $^ $@ + +@@ -13220,6 +13708,12 @@ + $(srcdir)/execve--secontext_full.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in + $(AM_V_GEN) $^ $@ + ++$(srcdir)/execve--secontext_full_mismatch.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in ++ $(AM_V_GEN) $^ $@ ++ ++$(srcdir)/execve--secontext_mismatch.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in ++ $(AM_V_GEN) $^ $@ ++ + $(srcdir)/execveat.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in + $(AM_V_GEN) $^ $@ + +@@ -13229,6 +13723,12 @@ + $(srcdir)/execveat--secontext_full.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in + $(AM_V_GEN) $^ $@ + ++$(srcdir)/execveat--secontext_full_mismatch.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in ++ $(AM_V_GEN) $^ $@ ++ ++$(srcdir)/execveat--secontext_mismatch.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in ++ $(AM_V_GEN) $^ $@ ++ + $(srcdir)/execveat-v.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in + $(AM_V_GEN) $^ $@ + +@@ -13238,6 +13738,12 @@ + $(srcdir)/faccessat--secontext_full.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in + $(AM_V_GEN) $^ $@ + ++$(srcdir)/faccessat--secontext_full_mismatch.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in ++ $(AM_V_GEN) $^ $@ ++ ++$(srcdir)/faccessat--secontext_mismatch.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in ++ $(AM_V_GEN) $^ $@ ++ + $(srcdir)/faccessat-P.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in + $(AM_V_GEN) $^ $@ + +@@ -13250,6 +13756,12 @@ + $(srcdir)/faccessat-y--secontext_full.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in + $(AM_V_GEN) $^ $@ + ++$(srcdir)/faccessat-y--secontext_full_mismatch.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in ++ $(AM_V_GEN) $^ $@ ++ ++$(srcdir)/faccessat-y--secontext_mismatch.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in ++ $(AM_V_GEN) $^ $@ ++ + $(srcdir)/faccessat-yy.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in + $(AM_V_GEN) $^ $@ + +@@ -13280,6 +13792,12 @@ + $(srcdir)/fanotify_mark--secontext_full.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in + $(AM_V_GEN) $^ $@ + ++$(srcdir)/fanotify_mark--secontext_full_mismatch.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in ++ $(AM_V_GEN) $^ $@ ++ ++$(srcdir)/fanotify_mark--secontext_mismatch.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in ++ $(AM_V_GEN) $^ $@ ++ + $(srcdir)/fanotify_mark-Xabbrev.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in + $(AM_V_GEN) $^ $@ + +@@ -13301,6 +13819,12 @@ + $(srcdir)/fchmod--secontext_full.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in + $(AM_V_GEN) $^ $@ + ++$(srcdir)/fchmod--secontext_full_mismatch.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in ++ $(AM_V_GEN) $^ $@ ++ ++$(srcdir)/fchmod--secontext_mismatch.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) $^ $@ + +@@ -13310,6 +13834,12 @@ + $(srcdir)/fchmod-y--secontext_full.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in + $(AM_V_GEN) $^ $@ + ++$(srcdir)/fchmod-y--secontext_full_mismatch.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in ++ $(AM_V_GEN) $^ $@ ++ ++$(srcdir)/fchmod-y--secontext_mismatch.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) $^ $@ + +@@ -13319,6 +13849,12 @@ + $(srcdir)/fchmodat--secontext_full.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in + $(AM_V_GEN) $^ $@ + ++$(srcdir)/fchmodat--secontext_full_mismatch.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in ++ $(AM_V_GEN) $^ $@ ++ ++$(srcdir)/fchmodat--secontext_mismatch.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in ++ $(AM_V_GEN) $^ $@ ++ + $(srcdir)/fchown.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in + $(AM_V_GEN) $^ $@ + +@@ -13334,6 +13870,12 @@ + $(srcdir)/fchownat--secontext_full.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in + $(AM_V_GEN) $^ $@ + ++$(srcdir)/fchownat--secontext_full_mismatch.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in ++ $(AM_V_GEN) $^ $@ ++ ++$(srcdir)/fchownat--secontext_mismatch.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in ++ $(AM_V_GEN) $^ $@ ++ + $(srcdir)/fcntl.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in + $(AM_V_GEN) $^ $@ + +@@ -13358,6 +13900,12 @@ + $(srcdir)/file_handle--secontext_full.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in + $(AM_V_GEN) $^ $@ + ++$(srcdir)/file_handle--secontext_full_mismatch.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in ++ $(AM_V_GEN) $^ $@ ++ ++$(srcdir)/file_handle--secontext_mismatch.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in ++ $(AM_V_GEN) $^ $@ ++ + $(srcdir)/filter_seccomp.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in + $(AM_V_GEN) $^ $@ + +@@ -14117,6 +14665,12 @@ + $(srcdir)/linkat--secontext_full.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in + $(AM_V_GEN) $^ $@ + ++$(srcdir)/linkat--secontext_full_mismatch.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in ++ $(AM_V_GEN) $^ $@ ++ ++$(srcdir)/linkat--secontext_mismatch.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in ++ $(AM_V_GEN) $^ $@ ++ + $(srcdir)/lookup_dcookie.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in + $(AM_V_GEN) $^ $@ + +@@ -14546,6 +15100,12 @@ + $(srcdir)/open--secontext_full.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in + $(AM_V_GEN) $^ $@ + ++$(srcdir)/open--secontext_full_mismatch.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in ++ $(AM_V_GEN) $^ $@ ++ ++$(srcdir)/open--secontext_mismatch.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in ++ $(AM_V_GEN) $^ $@ ++ + $(srcdir)/open_tree.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in + $(AM_V_GEN) $^ $@ + +@@ -14561,6 +15121,12 @@ + $(srcdir)/openat--secontext_full.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in + $(AM_V_GEN) $^ $@ + ++$(srcdir)/openat--secontext_full_mismatch.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in ++ $(AM_V_GEN) $^ $@ ++ ++$(srcdir)/openat--secontext_mismatch.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in ++ $(AM_V_GEN) $^ $@ ++ + $(srcdir)/openat2.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in + $(AM_V_GEN) $^ $@ + +--- old/configure 2022-02-07 20:23:38.732063729 +0100 ++++ configure 2022-02-07 20:24:00.604063427 +0100 +@@ -18438,7 +18438,7 @@ + saved_LDFLAGS="$LDFLAGS" + LDFLAGS="$LDFLAGS $libselinux_LDFLAGS" + missing= +- for func in getpidcon getfilecon; do ++ for func in getpidcon getfilecon selabel_open selabel_lookup; do + as_ac_Lib=`$as_echo "ac_cv_lib_selinux_$func" | $as_tr_sh` + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $func in -lselinux" >&5 + $as_echo_n "checking for $func in -lselinux... " >&6; } +--- /dev/null 2022-02-02 22:09:50.443209891 +0100 ++++ new/tests/access--secontext_mismatch.c 2022-02-07 20:42:23.500048176 +0100 +@@ -0,0 +1,2 @@ ++#define PRINT_SECONTEXT_MISMATCH ++#include "access--secontext.c" +--- /dev/null 2022-02-02 22:09:50.443209891 +0100 ++++ new/tests/chmod--secontext_mismatch.c 2022-02-07 20:42:23.500048176 +0100 +@@ -0,0 +1,2 @@ ++#define PRINT_SECONTEXT_MISMATCH ++#include "chmod--secontext.c" +--- /dev/null 2022-02-02 22:09:50.443209891 +0100 ++++ new/tests/execveat--secontext_mismatch.c 2022-02-07 20:42:23.504048176 +0100 +@@ -0,0 +1,2 @@ ++#define PRINT_SECONTEXT_MISMATCH ++#include "execveat--secontext.c" +--- /dev/null 2022-02-02 22:09:50.443209891 +0100 ++++ new/tests/execve--secontext_mismatch.c 2022-02-07 20:42:23.504048176 +0100 +@@ -0,0 +1,2 @@ ++#define PRINT_SECONTEXT_MISMATCH ++#include "execve--secontext.c" +--- /dev/null 2022-02-02 22:09:50.443209891 +0100 ++++ new/tests/faccessat--secontext_mismatch.c 2022-02-07 20:42:23.504048176 +0100 +@@ -0,0 +1,2 @@ ++#define PRINT_SECONTEXT_MISMATCH ++#include "faccessat--secontext.c" +--- /dev/null 2022-02-02 22:09:50.443209891 +0100 ++++ new/tests/faccessat-y--secontext_mismatch.c 2022-02-07 20:42:23.508048176 +0100 +@@ -0,0 +1,2 @@ ++#define PRINT_SECONTEXT_MISMATCH ++#include "faccessat-y--secontext.c" +--- /dev/null 2022-02-02 22:09:50.443209891 +0100 ++++ new/tests/fanotify_mark--secontext_mismatch.c 2022-02-07 20:42:23.508048176 +0100 +@@ -0,0 +1,2 @@ ++#define PRINT_SECONTEXT_MISMATCH ++#include "fanotify_mark--secontext.c" +--- /dev/null 2022-02-02 22:09:50.443209891 +0100 ++++ new/tests/fchmodat--secontext_mismatch.c 2022-02-07 20:42:23.512048175 +0100 +@@ -0,0 +1,2 @@ ++#define PRINT_SECONTEXT_MISMATCH ++#include "fchmodat--secontext.c" +--- /dev/null 2022-02-02 22:09:50.443209891 +0100 ++++ new/tests/fchmod--secontext_mismatch.c 2022-02-07 20:42:23.512048175 +0100 +@@ -0,0 +1,2 @@ ++#define PRINT_SECONTEXT_MISMATCH ++#include "fchmod--secontext.c" +--- /dev/null 2022-02-02 22:09:50.443209891 +0100 ++++ new/tests/fchmod-y--secontext_mismatch.c 2022-02-07 20:42:23.512048175 +0100 +@@ -0,0 +1,2 @@ ++#define PRINT_SECONTEXT_MISMATCH ++#include "fchmod-y--secontext.c" +--- /dev/null 2022-02-02 22:09:50.443209891 +0100 ++++ new/tests/fchownat--secontext_mismatch.c 2022-02-07 20:42:23.516048175 +0100 +@@ -0,0 +1,2 @@ ++#define PRINT_SECONTEXT_MISMATCH ++#include "fchownat--secontext.c" +--- /dev/null 2022-02-02 22:09:50.443209891 +0100 ++++ new/tests/file_handle--secontext_mismatch.c 2022-02-07 20:42:23.516048175 +0100 +@@ -0,0 +1,2 @@ ++#define PRINT_SECONTEXT_MISMATCH ++#include "file_handle--secontext.c" +--- /dev/null 2022-02-02 22:09:50.443209891 +0100 ++++ new/tests/linkat--secontext_mismatch.c 2022-02-07 20:42:23.520048175 +0100 +@@ -0,0 +1,2 @@ ++#define PRINT_SECONTEXT_MISMATCH ++#include "linkat--secontext.c" +--- /dev/null 2022-02-02 22:09:50.443209891 +0100 ++++ new/tests-m32/access--secontext_mismatch.c 2022-02-07 20:42:23.500048176 +0100 +@@ -0,0 +1,2 @@ ++#define PRINT_SECONTEXT_MISMATCH ++#include "access--secontext.c" +--- /dev/null 2022-02-02 22:09:50.443209891 +0100 ++++ new/tests-m32/chmod--secontext_mismatch.c 2022-02-07 20:42:23.500048176 +0100 +@@ -0,0 +1,2 @@ ++#define PRINT_SECONTEXT_MISMATCH ++#include "chmod--secontext.c" +--- /dev/null 2022-02-02 22:09:50.443209891 +0100 ++++ new/tests-m32/execveat--secontext_mismatch.c 2022-02-07 20:42:23.504048176 +0100 +@@ -0,0 +1,2 @@ ++#define PRINT_SECONTEXT_MISMATCH ++#include "execveat--secontext.c" +--- /dev/null 2022-02-02 22:09:50.443209891 +0100 ++++ new/tests-m32/execve--secontext_mismatch.c 2022-02-07 20:42:23.504048176 +0100 +@@ -0,0 +1,2 @@ ++#define PRINT_SECONTEXT_MISMATCH ++#include "execve--secontext.c" +--- /dev/null 2022-02-02 22:09:50.443209891 +0100 ++++ new/tests-m32/faccessat--secontext_mismatch.c 2022-02-07 20:42:23.504048176 +0100 +@@ -0,0 +1,2 @@ ++#define PRINT_SECONTEXT_MISMATCH ++#include "faccessat--secontext.c" +--- /dev/null 2022-02-02 22:09:50.443209891 +0100 ++++ new/tests-m32/faccessat-y--secontext_mismatch.c 2022-02-07 20:42:23.508048176 +0100 +@@ -0,0 +1,2 @@ ++#define PRINT_SECONTEXT_MISMATCH ++#include "faccessat-y--secontext.c" +--- /dev/null 2022-02-02 22:09:50.443209891 +0100 ++++ new/tests-m32/fanotify_mark--secontext_mismatch.c 2022-02-07 20:42:23.508048176 +0100 +@@ -0,0 +1,2 @@ ++#define PRINT_SECONTEXT_MISMATCH ++#include "fanotify_mark--secontext.c" +--- /dev/null 2022-02-02 22:09:50.443209891 +0100 ++++ new/tests-m32/fchmodat--secontext_mismatch.c 2022-02-07 20:42:23.512048175 +0100 +@@ -0,0 +1,2 @@ ++#define PRINT_SECONTEXT_MISMATCH ++#include "fchmodat--secontext.c" +--- /dev/null 2022-02-02 22:09:50.443209891 +0100 ++++ new/tests-m32/fchmod--secontext_mismatch.c 2022-02-07 20:42:23.512048175 +0100 +@@ -0,0 +1,2 @@ ++#define PRINT_SECONTEXT_MISMATCH ++#include "fchmod--secontext.c" +--- /dev/null 2022-02-02 22:09:50.443209891 +0100 ++++ new/tests-m32/fchmod-y--secontext_mismatch.c 2022-02-07 20:42:23.512048175 +0100 +@@ -0,0 +1,2 @@ ++#define PRINT_SECONTEXT_MISMATCH ++#include "fchmod-y--secontext.c" +--- /dev/null 2022-02-02 22:09:50.443209891 +0100 ++++ new/tests-m32/fchownat--secontext_mismatch.c 2022-02-07 20:42:23.516048175 +0100 +@@ -0,0 +1,2 @@ ++#define PRINT_SECONTEXT_MISMATCH ++#include "fchownat--secontext.c" +--- /dev/null 2022-02-02 22:09:50.443209891 +0100 ++++ new/tests-m32/file_handle--secontext_mismatch.c 2022-02-07 20:42:23.516048175 +0100 +@@ -0,0 +1,2 @@ ++#define PRINT_SECONTEXT_MISMATCH ++#include "file_handle--secontext.c" +--- /dev/null 2022-02-02 22:09:50.443209891 +0100 ++++ new/tests-m32/linkat--secontext_mismatch.c 2022-02-07 20:42:23.520048175 +0100 +@@ -0,0 +1,2 @@ ++#define PRINT_SECONTEXT_MISMATCH ++#include "linkat--secontext.c" +--- /dev/null 2022-02-02 22:09:50.443209891 +0100 ++++ new/tests-m32/openat--secontext_mismatch.c 2022-02-07 20:42:23.520048175 +0100 +@@ -0,0 +1,2 @@ ++#define PRINT_SECONTEXT_MISMATCH ++#include "openat--secontext.c" +--- /dev/null 2022-02-02 22:09:50.443209891 +0100 ++++ new/tests-m32/open--secontext_mismatch.c 2022-02-07 20:42:23.520048175 +0100 +@@ -0,0 +1,2 @@ ++#define PRINT_SECONTEXT_MISMATCH ++#include "open--secontext.c" +--- /dev/null 2022-02-02 22:09:50.443209891 +0100 ++++ new/tests-mx32/access--secontext_mismatch.c 2022-02-07 20:42:23.500048176 +0100 +@@ -0,0 +1,2 @@ ++#define PRINT_SECONTEXT_MISMATCH ++#include "access--secontext.c" +--- /dev/null 2022-02-02 22:09:50.443209891 +0100 ++++ new/tests-mx32/chmod--secontext_mismatch.c 2022-02-07 20:42:23.500048176 +0100 +@@ -0,0 +1,2 @@ ++#define PRINT_SECONTEXT_MISMATCH ++#include "chmod--secontext.c" +--- /dev/null 2022-02-02 22:09:50.443209891 +0100 ++++ new/tests-mx32/execveat--secontext_mismatch.c 2022-02-07 20:42:23.504048176 +0100 +@@ -0,0 +1,2 @@ ++#define PRINT_SECONTEXT_MISMATCH ++#include "execveat--secontext.c" +--- /dev/null 2022-02-02 22:09:50.443209891 +0100 ++++ new/tests-mx32/execve--secontext_mismatch.c 2022-02-07 20:42:23.504048176 +0100 +@@ -0,0 +1,2 @@ ++#define PRINT_SECONTEXT_MISMATCH ++#include "execve--secontext.c" +--- /dev/null 2022-02-02 22:09:50.443209891 +0100 ++++ new/tests-mx32/faccessat--secontext_mismatch.c 2022-02-07 20:42:23.504048176 +0100 +@@ -0,0 +1,2 @@ ++#define PRINT_SECONTEXT_MISMATCH ++#include "faccessat--secontext.c" +--- /dev/null 2022-02-02 22:09:50.443209891 +0100 ++++ new/tests-mx32/faccessat-y--secontext_mismatch.c 2022-02-07 20:42:23.508048176 +0100 +@@ -0,0 +1,2 @@ ++#define PRINT_SECONTEXT_MISMATCH ++#include "faccessat-y--secontext.c" +--- /dev/null 2022-02-02 22:09:50.443209891 +0100 ++++ new/tests-mx32/fanotify_mark--secontext_mismatch.c 2022-02-07 20:42:23.508048176 +0100 +@@ -0,0 +1,2 @@ ++#define PRINT_SECONTEXT_MISMATCH ++#include "fanotify_mark--secontext.c" +--- /dev/null 2022-02-02 22:09:50.443209891 +0100 ++++ new/tests-mx32/fchmodat--secontext_mismatch.c 2022-02-07 20:42:23.512048175 +0100 +@@ -0,0 +1,2 @@ ++#define PRINT_SECONTEXT_MISMATCH ++#include "fchmodat--secontext.c" +--- /dev/null 2022-02-02 22:09:50.443209891 +0100 ++++ new/tests-mx32/fchmod--secontext_mismatch.c 2022-02-07 20:42:23.512048175 +0100 +@@ -0,0 +1,2 @@ ++#define PRINT_SECONTEXT_MISMATCH ++#include "fchmod--secontext.c" +--- /dev/null 2022-02-02 22:09:50.443209891 +0100 ++++ new/tests-mx32/fchmod-y--secontext_mismatch.c 2022-02-07 20:42:23.512048175 +0100 +@@ -0,0 +1,2 @@ ++#define PRINT_SECONTEXT_MISMATCH ++#include "fchmod-y--secontext.c" +--- /dev/null 2022-02-02 22:09:50.443209891 +0100 ++++ new/tests-mx32/fchownat--secontext_mismatch.c 2022-02-07 20:42:23.516048175 +0100 +@@ -0,0 +1,2 @@ ++#define PRINT_SECONTEXT_MISMATCH ++#include "fchownat--secontext.c" +--- /dev/null 2022-02-02 22:09:50.443209891 +0100 ++++ new/tests-mx32/file_handle--secontext_mismatch.c 2022-02-07 20:42:23.516048175 +0100 +@@ -0,0 +1,2 @@ ++#define PRINT_SECONTEXT_MISMATCH ++#include "file_handle--secontext.c" +--- /dev/null 2022-02-02 22:09:50.443209891 +0100 ++++ new/tests-mx32/linkat--secontext_mismatch.c 2022-02-07 20:42:23.520048175 +0100 +@@ -0,0 +1,2 @@ ++#define PRINT_SECONTEXT_MISMATCH ++#include "linkat--secontext.c" +--- /dev/null 2022-02-02 22:09:50.443209891 +0100 ++++ new/tests-mx32/openat--secontext_mismatch.c 2022-02-07 20:42:23.520048175 +0100 +@@ -0,0 +1,2 @@ ++#define PRINT_SECONTEXT_MISMATCH ++#include "openat--secontext.c" +--- /dev/null 2022-02-02 22:09:50.443209891 +0100 ++++ new/tests-mx32/open--secontext_mismatch.c 2022-02-07 20:42:23.520048175 +0100 +@@ -0,0 +1,2 @@ ++#define PRINT_SECONTEXT_MISMATCH ++#include "open--secontext.c" +--- /dev/null 2022-02-02 22:09:50.443209891 +0100 ++++ new/tests/openat--secontext_mismatch.c 2022-02-07 20:42:23.520048175 +0100 +@@ -0,0 +1,2 @@ ++#define PRINT_SECONTEXT_MISMATCH ++#include "openat--secontext.c" +--- /dev/null 2022-02-02 22:09:50.443209891 +0100 ++++ new/tests/open--secontext_mismatch.c 2022-02-07 20:42:23.520048175 +0100 +@@ -0,0 +1,2 @@ ++#define PRINT_SECONTEXT_MISMATCH ++#include "open--secontext.c" +--- /dev/null 2022-02-02 22:09:50.443209891 +0100 ++++ new/tests/access--secontext_full_mismatch.c 2022-02-07 20:42:23.500048176 +0100 +@@ -0,0 +1,2 @@ ++#define PRINT_SECONTEXT_MISMATCH ++#include "access--secontext_full.c" +--- /dev/null 2022-02-02 22:09:50.443209891 +0100 ++++ new/tests/chmod--secontext_full_mismatch.c 2022-02-07 20:42:23.500048176 +0100 +@@ -0,0 +1,2 @@ ++#define PRINT_SECONTEXT_MISMATCH ++#include "chmod--secontext_full.c" +--- /dev/null 2022-02-02 22:09:50.443209891 +0100 ++++ new/tests/execveat--secontext_full_mismatch.c 2022-02-07 20:42:23.504048176 +0100 +@@ -0,0 +1,2 @@ ++#define PRINT_SECONTEXT_MISMATCH ++#include "execveat--secontext_full.c" +--- /dev/null 2022-02-02 22:09:50.443209891 +0100 ++++ new/tests/execve--secontext_full_mismatch.c 2022-02-07 20:42:23.500048176 +0100 +@@ -0,0 +1,2 @@ ++#define PRINT_SECONTEXT_MISMATCH ++#include "execve--secontext_full.c" +--- /dev/null 2022-02-02 22:09:50.443209891 +0100 ++++ new/tests/faccessat--secontext_full_mismatch.c 2022-02-07 20:42:23.504048176 +0100 +@@ -0,0 +1,2 @@ ++#define PRINT_SECONTEXT_MISMATCH ++#include "faccessat--secontext_full.c" +--- /dev/null 2022-02-02 22:09:50.443209891 +0100 ++++ new/tests/faccessat-y--secontext_full_mismatch.c 2022-02-07 20:42:23.508048176 +0100 +@@ -0,0 +1,2 @@ ++#define PRINT_SECONTEXT_MISMATCH ++#include "faccessat-y--secontext_full.c" +--- /dev/null 2022-02-02 22:09:50.443209891 +0100 ++++ new/tests/fanotify_mark--secontext_full_mismatch.c 2022-02-07 20:42:23.508048176 +0100 +@@ -0,0 +1,2 @@ ++#define PRINT_SECONTEXT_MISMATCH ++#include "fanotify_mark--secontext_full.c" +--- /dev/null 2022-02-02 22:09:50.443209891 +0100 ++++ new/tests/fchmodat--secontext_full_mismatch.c 2022-02-07 20:42:23.512048175 +0100 +@@ -0,0 +1,2 @@ ++#define PRINT_SECONTEXT_MISMATCH ++#include "fchmodat--secontext_full.c" +--- /dev/null 2022-02-02 22:09:50.443209891 +0100 ++++ new/tests/fchmod--secontext_full_mismatch.c 2022-02-07 20:42:23.508048176 +0100 +@@ -0,0 +1,2 @@ ++#define PRINT_SECONTEXT_MISMATCH ++#include "fchmod--secontext_full.c" +--- /dev/null 2022-02-02 22:09:50.443209891 +0100 ++++ new/tests/fchmod-y--secontext_full_mismatch.c 2022-02-07 20:42:23.512048175 +0100 +@@ -0,0 +1,2 @@ ++#define PRINT_SECONTEXT_MISMATCH ++#include "fchmod-y--secontext_full.c" +--- /dev/null 2022-02-02 22:09:50.443209891 +0100 ++++ new/tests/fchownat--secontext_full_mismatch.c 2022-02-07 20:42:23.516048175 +0100 +@@ -0,0 +1,2 @@ ++#define PRINT_SECONTEXT_MISMATCH ++#include "fchownat--secontext_full.c" +--- /dev/null 2022-02-02 22:09:50.443209891 +0100 ++++ new/tests/file_handle--secontext_full_mismatch.c 2022-02-07 20:42:23.516048175 +0100 +@@ -0,0 +1,2 @@ ++#define PRINT_SECONTEXT_MISMATCH ++#include "file_handle--secontext_full.c" +--- /dev/null 2022-02-02 22:09:50.443209891 +0100 ++++ new/tests/linkat--secontext_full_mismatch.c 2022-02-07 20:42:23.516048175 +0100 +@@ -0,0 +1,2 @@ ++#define PRINT_SECONTEXT_MISMATCH ++#include "linkat--secontext_full.c" +--- /dev/null 2022-02-02 22:09:50.443209891 +0100 ++++ new/tests-m32/access--secontext_full_mismatch.c 2022-02-07 20:42:23.500048176 +0100 +@@ -0,0 +1,2 @@ ++#define PRINT_SECONTEXT_MISMATCH ++#include "access--secontext_full.c" +--- /dev/null 2022-02-02 22:09:50.443209891 +0100 ++++ new/tests-m32/chmod--secontext_full_mismatch.c 2022-02-07 20:42:23.500048176 +0100 +@@ -0,0 +1,2 @@ ++#define PRINT_SECONTEXT_MISMATCH ++#include "chmod--secontext_full.c" +--- /dev/null 2022-02-02 22:09:50.443209891 +0100 ++++ new/tests-m32/execveat--secontext_full_mismatch.c 2022-02-07 20:42:23.504048176 +0100 +@@ -0,0 +1,2 @@ ++#define PRINT_SECONTEXT_MISMATCH ++#include "execveat--secontext_full.c" +--- /dev/null 2022-02-02 22:09:50.443209891 +0100 ++++ new/tests-m32/execve--secontext_full_mismatch.c 2022-02-07 20:42:23.500048176 +0100 +@@ -0,0 +1,2 @@ ++#define PRINT_SECONTEXT_MISMATCH ++#include "execve--secontext_full.c" +--- /dev/null 2022-02-02 22:09:50.443209891 +0100 ++++ new/tests-m32/faccessat--secontext_full_mismatch.c 2022-02-07 20:42:23.504048176 +0100 +@@ -0,0 +1,2 @@ ++#define PRINT_SECONTEXT_MISMATCH ++#include "faccessat--secontext_full.c" +--- /dev/null 2022-02-02 22:09:50.443209891 +0100 ++++ new/tests-m32/faccessat-y--secontext_full_mismatch.c 2022-02-07 20:42:23.508048176 +0100 +@@ -0,0 +1,2 @@ ++#define PRINT_SECONTEXT_MISMATCH ++#include "faccessat-y--secontext_full.c" +--- /dev/null 2022-02-02 22:09:50.443209891 +0100 ++++ new/tests-m32/fanotify_mark--secontext_full_mismatch.c 2022-02-07 20:42:23.508048176 +0100 +@@ -0,0 +1,2 @@ ++#define PRINT_SECONTEXT_MISMATCH ++#include "fanotify_mark--secontext_full.c" +--- /dev/null 2022-02-02 22:09:50.443209891 +0100 ++++ new/tests-m32/fchmodat--secontext_full_mismatch.c 2022-02-07 20:42:23.512048175 +0100 +@@ -0,0 +1,2 @@ ++#define PRINT_SECONTEXT_MISMATCH ++#include "fchmodat--secontext_full.c" +--- /dev/null 2022-02-02 22:09:50.443209891 +0100 ++++ new/tests-m32/fchmod--secontext_full_mismatch.c 2022-02-07 20:42:23.508048176 +0100 +@@ -0,0 +1,2 @@ ++#define PRINT_SECONTEXT_MISMATCH ++#include "fchmod--secontext_full.c" +--- /dev/null 2022-02-02 22:09:50.443209891 +0100 ++++ new/tests-m32/fchmod-y--secontext_full_mismatch.c 2022-02-07 20:42:23.512048175 +0100 +@@ -0,0 +1,2 @@ ++#define PRINT_SECONTEXT_MISMATCH ++#include "fchmod-y--secontext_full.c" +--- /dev/null 2022-02-02 22:09:50.443209891 +0100 ++++ new/tests-m32/fchownat--secontext_full_mismatch.c 2022-02-07 20:42:23.516048175 +0100 +@@ -0,0 +1,2 @@ ++#define PRINT_SECONTEXT_MISMATCH ++#include "fchownat--secontext_full.c" +--- /dev/null 2022-02-02 22:09:50.443209891 +0100 ++++ new/tests-m32/file_handle--secontext_full_mismatch.c 2022-02-07 20:42:23.516048175 +0100 +@@ -0,0 +1,2 @@ ++#define PRINT_SECONTEXT_MISMATCH ++#include "file_handle--secontext_full.c" +--- /dev/null 2022-02-02 22:09:50.443209891 +0100 ++++ new/tests-m32/linkat--secontext_full_mismatch.c 2022-02-07 20:42:23.516048175 +0100 +@@ -0,0 +1,2 @@ ++#define PRINT_SECONTEXT_MISMATCH ++#include "linkat--secontext_full.c" +--- /dev/null 2022-02-02 22:09:50.443209891 +0100 ++++ new/tests-m32/openat--secontext_full_mismatch.c 2022-02-07 20:42:23.520048175 +0100 +@@ -0,0 +1,2 @@ ++#define PRINT_SECONTEXT_MISMATCH ++#include "openat--secontext_full.c" +--- /dev/null 2022-02-02 22:09:50.443209891 +0100 ++++ new/tests-m32/open--secontext_full_mismatch.c 2022-02-07 20:42:23.520048175 +0100 +@@ -0,0 +1,2 @@ ++#define PRINT_SECONTEXT_MISMATCH ++#include "open--secontext_full.c" +--- /dev/null 2022-02-02 22:09:50.443209891 +0100 ++++ new/tests-mx32/access--secontext_full_mismatch.c 2022-02-07 20:42:23.500048176 +0100 +@@ -0,0 +1,2 @@ ++#define PRINT_SECONTEXT_MISMATCH ++#include "access--secontext_full.c" +--- /dev/null 2022-02-02 22:09:50.443209891 +0100 ++++ new/tests-mx32/chmod--secontext_full_mismatch.c 2022-02-07 20:42:23.500048176 +0100 +@@ -0,0 +1,2 @@ ++#define PRINT_SECONTEXT_MISMATCH ++#include "chmod--secontext_full.c" +--- /dev/null 2022-02-02 22:09:50.443209891 +0100 ++++ new/tests-mx32/execveat--secontext_full_mismatch.c 2022-02-07 20:42:23.504048176 +0100 +@@ -0,0 +1,2 @@ ++#define PRINT_SECONTEXT_MISMATCH ++#include "execveat--secontext_full.c" +--- /dev/null 2022-02-02 22:09:50.443209891 +0100 ++++ new/tests-mx32/execve--secontext_full_mismatch.c 2022-02-07 20:42:23.500048176 +0100 +@@ -0,0 +1,2 @@ ++#define PRINT_SECONTEXT_MISMATCH ++#include "execve--secontext_full.c" +--- /dev/null 2022-02-02 22:09:50.443209891 +0100 ++++ new/tests-mx32/faccessat--secontext_full_mismatch.c 2022-02-07 20:42:23.504048176 +0100 +@@ -0,0 +1,2 @@ ++#define PRINT_SECONTEXT_MISMATCH ++#include "faccessat--secontext_full.c" +--- /dev/null 2022-02-02 22:09:50.443209891 +0100 ++++ new/tests-mx32/faccessat-y--secontext_full_mismatch.c 2022-02-07 20:42:23.508048176 +0100 +@@ -0,0 +1,2 @@ ++#define PRINT_SECONTEXT_MISMATCH ++#include "faccessat-y--secontext_full.c" +--- /dev/null 2022-02-02 22:09:50.443209891 +0100 ++++ new/tests-mx32/fanotify_mark--secontext_full_mismatch.c 2022-02-07 20:42:23.508048176 +0100 +@@ -0,0 +1,2 @@ ++#define PRINT_SECONTEXT_MISMATCH ++#include "fanotify_mark--secontext_full.c" +--- /dev/null 2022-02-02 22:09:50.443209891 +0100 ++++ new/tests-mx32/fchmodat--secontext_full_mismatch.c 2022-02-07 20:42:23.512048175 +0100 +@@ -0,0 +1,2 @@ ++#define PRINT_SECONTEXT_MISMATCH ++#include "fchmodat--secontext_full.c" +--- /dev/null 2022-02-02 22:09:50.443209891 +0100 ++++ new/tests-mx32/fchmod--secontext_full_mismatch.c 2022-02-07 20:42:23.508048176 +0100 +@@ -0,0 +1,2 @@ ++#define PRINT_SECONTEXT_MISMATCH ++#include "fchmod--secontext_full.c" +--- /dev/null 2022-02-02 22:09:50.443209891 +0100 ++++ new/tests-mx32/fchmod-y--secontext_full_mismatch.c 2022-02-07 20:42:23.512048175 +0100 +@@ -0,0 +1,2 @@ ++#define PRINT_SECONTEXT_MISMATCH ++#include "fchmod-y--secontext_full.c" +--- /dev/null 2022-02-02 22:09:50.443209891 +0100 ++++ new/tests-mx32/fchownat--secontext_full_mismatch.c 2022-02-07 20:42:23.516048175 +0100 +@@ -0,0 +1,2 @@ ++#define PRINT_SECONTEXT_MISMATCH ++#include "fchownat--secontext_full.c" +--- /dev/null 2022-02-02 22:09:50.443209891 +0100 ++++ new/tests-mx32/file_handle--secontext_full_mismatch.c 2022-02-07 20:42:23.516048175 +0100 +@@ -0,0 +1,2 @@ ++#define PRINT_SECONTEXT_MISMATCH ++#include "file_handle--secontext_full.c" +--- /dev/null 2022-02-02 22:09:50.443209891 +0100 ++++ new/tests-mx32/linkat--secontext_full_mismatch.c 2022-02-07 20:42:23.516048175 +0100 +@@ -0,0 +1,2 @@ ++#define PRINT_SECONTEXT_MISMATCH ++#include "linkat--secontext_full.c" +--- /dev/null 2022-02-02 22:09:50.443209891 +0100 ++++ new/tests-mx32/openat--secontext_full_mismatch.c 2022-02-07 20:42:23.520048175 +0100 +@@ -0,0 +1,2 @@ ++#define PRINT_SECONTEXT_MISMATCH ++#include "openat--secontext_full.c" +--- /dev/null 2022-02-02 22:09:50.443209891 +0100 ++++ new/tests-mx32/open--secontext_full_mismatch.c 2022-02-07 20:42:23.520048175 +0100 +@@ -0,0 +1,2 @@ ++#define PRINT_SECONTEXT_MISMATCH ++#include "open--secontext_full.c" +--- /dev/null 2022-02-02 22:09:50.443209891 +0100 ++++ new/tests/openat--secontext_full_mismatch.c 2022-02-07 20:42:23.520048175 +0100 +@@ -0,0 +1,2 @@ ++#define PRINT_SECONTEXT_MISMATCH ++#include "openat--secontext_full.c" +--- /dev/null 2022-02-02 22:09:50.443209891 +0100 ++++ new/tests/open--secontext_full_mismatch.c 2022-02-07 20:42:23.520048175 +0100 +@@ -0,0 +1,2 @@ ++#define PRINT_SECONTEXT_MISMATCH ++#include "open--secontext_full.c" +-- +2.1.4 + diff --git a/0170-tests-linkat-reset-errno-before-SELinux-context-mani.patch b/0170-tests-linkat-reset-errno-before-SELinux-context-mani.patch new file mode 100644 index 0000000..78f92d3 --- /dev/null +++ b/0170-tests-linkat-reset-errno-before-SELinux-context-mani.patch @@ -0,0 +1,122 @@ +From f5fd689e40322a7b08a97eb2d26f192610728230 Mon Sep 17 00:00:00 2001 +From: Eugene Syromyatnikov +Date: Tue, 18 Jan 2022 16:10:28 +0100 +Subject: [PATCH 170/174] tests/linkat: reset errno before SELinux context + manipulation + +To avoid printing a stale error information in case of mismatch check +failure. + +* tests/linkat.c: Include . +(main): Add "errno = 0" before update_secontext_field calls. +--- + tests/linkat.c | 4 ++++ + 1 file changed, 4 insertions(+) + +diff --git a/tests/linkat.c b/tests/linkat.c +index 1a869e3..c3e2ee4 100644 +--- a/tests/linkat.c ++++ b/tests/linkat.c +@@ -10,6 +10,7 @@ + #include "tests.h" + #include "scno.h" + ++#include + #include + #include + #include +@@ -91,6 +92,7 @@ main(void) + free(sample_1_secontext); + + #ifdef PRINT_SECONTEXT_MISMATCH ++ errno = 0; + update_secontext_field(sample_1, SECONTEXT_USER, "system_u"); + sample_1_secontext = SECONTEXT_FILE(sample_1); + +@@ -112,6 +114,7 @@ main(void) + free(sample_1_secontext); + #endif + ++ errno = 0; + update_secontext_field(sample_1, SECONTEXT_TYPE, "default_t"); + sample_1_secontext = SECONTEXT_FILE(sample_1); + sample_2_secontext = sample_1_secontext; +@@ -142,6 +145,7 @@ main(void) + int dfd_old = get_dir_fd("."); + char *cwd = get_fd_path(dfd_old); + ++ errno = 0; + update_secontext_field(".", SECONTEXT_TYPE, "default_t"); + char *dfd_old_secontext = SECONTEXT_FILE("."); + +--- a/tests-m32/linkat.c ++++ b/tests-m32/linkat.c +@@ -10,6 +10,7 @@ + #include "tests.h" + #include "scno.h" + ++#include + #include + #include + #include +@@ -91,6 +92,7 @@ main(void) + free(sample_1_secontext); + + #ifdef PRINT_SECONTEXT_MISMATCH ++ errno = 0; + update_secontext_field(sample_1, SECONTEXT_USER, "system_u"); + sample_1_secontext = SECONTEXT_FILE(sample_1); + +@@ -112,6 +114,7 @@ main(void) + free(sample_1_secontext); + #endif + ++ errno = 0; + update_secontext_field(sample_1, SECONTEXT_TYPE, "default_t"); + sample_1_secontext = SECONTEXT_FILE(sample_1); + sample_2_secontext = sample_1_secontext; +@@ -142,6 +145,7 @@ main(void) + int dfd_old = get_dir_fd("."); + char *cwd = get_fd_path(dfd_old); + ++ errno = 0; + update_secontext_field(".", SECONTEXT_TYPE, "default_t"); + char *dfd_old_secontext = SECONTEXT_FILE("."); + +--- a/tests-mx32/linkat.c ++++ b/tests-mx32/linkat.c +@@ -10,6 +10,7 @@ + #include "tests.h" + #include "scno.h" + ++#include + #include + #include + #include +@@ -91,6 +92,7 @@ main(void) + free(sample_1_secontext); + + #ifdef PRINT_SECONTEXT_MISMATCH ++ errno = 0; + update_secontext_field(sample_1, SECONTEXT_USER, "system_u"); + sample_1_secontext = SECONTEXT_FILE(sample_1); + +@@ -112,6 +114,7 @@ main(void) + free(sample_1_secontext); + #endif + ++ errno = 0; + update_secontext_field(sample_1, SECONTEXT_TYPE, "default_t"); + sample_1_secontext = SECONTEXT_FILE(sample_1); + sample_2_secontext = sample_1_secontext; +@@ -142,6 +145,7 @@ main(void) + int dfd_old = get_dir_fd("."); + char *cwd = get_fd_path(dfd_old); + ++ errno = 0; + update_secontext_field(".", SECONTEXT_TYPE, "default_t"); + char *dfd_old_secontext = SECONTEXT_FILE("."); + +-- +2.1.4 + diff --git a/0171-tests-secontext-add-secontext-field-getters.patch b/0171-tests-secontext-add-secontext-field-getters.patch new file mode 100644 index 0000000..fce5e5a --- /dev/null +++ b/0171-tests-secontext-add-secontext-field-getters.patch @@ -0,0 +1,356 @@ +From 4951286eb634c00c11883b851c91f3a21975eabd Mon Sep 17 00:00:00 2001 +From: Eugene Syromyatnikov +Date: Tue, 18 Jan 2022 18:03:57 +0100 +Subject: [PATCH 171/174] tests/secontext: add secontext field getters + +* tests/secontext.h (get_secontext_field, get_secontext_field_file): New +declarations. +* tests/secontext.c (get_type_from_context): Rename to... +(get_secontext_field): ...this; remove "static" qualifier; add "field" +argument, use it. +(raw_expected_secontext_short_file, raw_secontext_short_pid): Replace +get_type_from_context call with get_secontext_field. +(get_secontext_field_file): New function. +(raw_secontext_short_file): Replace body with get_secontext_field_file +call. +--- + tests/secontext.c | 27 +++++++++++++++------------ + tests/secontext.h | 20 ++++++++++++++++++++ + 2 files changed, 35 insertions(+), 12 deletions(-) + +diff --git a/tests/secontext.c b/tests/secontext.c +index 848eea9..52211ed 100644 +--- a/tests/secontext.c ++++ b/tests/secontext.c +@@ -56,8 +56,8 @@ strip_trailing_newlines(char *context) + return context; + } + +-static char * +-get_type_from_context(const char *full_context) ++char * ++get_secontext_field(const char *full_context, enum secontext_field field) + { + int saved_errno = errno; + +@@ -72,7 +72,7 @@ get_type_from_context(const char *full_context) + char *context = NULL; + for (token = strtok_r(ctx_copy, ":", &saveptr), i = 0; + token; token = strtok_r(NULL, ":", &saveptr), i++) { +- if (i == 2) { ++ if (i == field) { + context = xstrdup(token); + break; + } +@@ -122,7 +122,7 @@ raw_expected_secontext_short_file(const char *filename) + int saved_errno = errno; + + char *ctx = raw_expected_secontext_full_file(filename); +- char *type = get_type_from_context(ctx); ++ char *type = get_secontext_field(ctx, SECONTEXT_TYPE); + free(ctx); + + errno = saved_errno; +@@ -144,20 +144,23 @@ raw_secontext_full_file(const char *filename) + return full_secontext; + } + +-static char * +-raw_secontext_short_file(const char *filename) ++char * ++get_secontext_field_file(const char *file, enum secontext_field field) + { +- int saved_errno = errno; +- +- char *ctx = raw_secontext_full_file(filename); +- char *type = get_type_from_context(ctx); ++ char *ctx = raw_secontext_full_file(file); ++ char *type = get_secontext_field(ctx, field); + free(ctx); + +- errno = saved_errno; + return type; + } + + static char * ++raw_secontext_short_file(const char *filename) ++{ ++ return get_secontext_field_file(filename, SECONTEXT_TYPE); ++} ++ ++static char * + raw_secontext_full_pid(pid_t pid) + { + int saved_errno = errno; +@@ -178,7 +181,7 @@ raw_secontext_short_pid(pid_t pid) + int saved_errno = errno; + + char *ctx = raw_secontext_full_pid(pid); +- char *type = get_type_from_context(ctx); ++ char *type = get_secontext_field(ctx, SECONTEXT_TYPE); + free(ctx); + + errno = saved_errno; +diff --git a/tests/secontext.h b/tests/secontext.h +index 1d0251a..e5571d5 100644 +--- a/tests/secontext.h ++++ b/tests/secontext.h +@@ -23,6 +23,15 @@ enum secontext_field { + + #if defined TEST_SECONTEXT && defined HAVE_SELINUX_RUNTIME + ++/** ++ * Parse a SELinux context string and return a specified field, duplicated ++ * in a separate string. The caller is responsible for freeing the memory ++ * pointed by the returned value. ++ */ ++char *get_secontext_field(const char *full_context, enum secontext_field field); ++ ++char *get_secontext_field_file(const char *file, enum secontext_field field); ++ + void update_secontext_field(const char *file, enum secontext_field field, + const char *newvalue); + +@@ -48,6 +57,17 @@ void update_secontext_field(const char *file, enum secontext_field field, + + #else + ++static inline char * ++get_secontext_field(const char *ctx, enum secontext_field field) ++{ ++ return NULL; ++} ++static inline char * ++get_secontext_field_file(const char *file, enum secontext_field field) ++{ ++ return NULL; ++} ++ + static inline void + update_secontext_field(const char *file, enum secontext_field field, + const char *newvalue) +diff --git a/tests-m32/secontext.c b/tests-m32/secontext.c +index 848eea9..52211ed 100644 +--- a/tests-m32/secontext.c ++++ b/tests-m32/secontext.c +@@ -56,8 +56,8 @@ strip_trailing_newlines(char *context) + return context; + } + +-static char * +-get_type_from_context(const char *full_context) ++char * ++get_secontext_field(const char *full_context, enum secontext_field field) + { + int saved_errno = errno; + +@@ -72,7 +72,7 @@ get_type_from_context(const char *full_context) + char *context = NULL; + for (token = strtok_r(ctx_copy, ":", &saveptr), i = 0; + token; token = strtok_r(NULL, ":", &saveptr), i++) { +- if (i == 2) { ++ if (i == field) { + context = xstrdup(token); + break; + } +@@ -122,7 +122,7 @@ raw_expected_secontext_short_file(const char *filename) + int saved_errno = errno; + + char *ctx = raw_expected_secontext_full_file(filename); +- char *type = get_type_from_context(ctx); ++ char *type = get_secontext_field(ctx, SECONTEXT_TYPE); + free(ctx); + + errno = saved_errno; +@@ -144,20 +144,23 @@ raw_secontext_full_file(const char *filename) + return full_secontext; + } + +-static char * +-raw_secontext_short_file(const char *filename) ++char * ++get_secontext_field_file(const char *file, enum secontext_field field) + { +- int saved_errno = errno; +- +- char *ctx = raw_secontext_full_file(filename); +- char *type = get_type_from_context(ctx); ++ char *ctx = raw_secontext_full_file(file); ++ char *type = get_secontext_field(ctx, field); + free(ctx); + +- errno = saved_errno; + return type; + } + + static char * ++raw_secontext_short_file(const char *filename) ++{ ++ return get_secontext_field_file(filename, SECONTEXT_TYPE); ++} ++ ++static char * + raw_secontext_full_pid(pid_t pid) + { + int saved_errno = errno; +@@ -178,7 +181,7 @@ raw_secontext_short_pid(pid_t pid) + int saved_errno = errno; + + char *ctx = raw_secontext_full_pid(pid); +- char *type = get_type_from_context(ctx); ++ char *type = get_secontext_field(ctx, SECONTEXT_TYPE); + free(ctx); + + errno = saved_errno; +diff --git a/tests-m32/secontext.h b/tests-m32/secontext.h +index 1d0251a..e5571d5 100644 +--- a/tests-m32/secontext.h ++++ b/tests-m32/secontext.h +@@ -23,6 +23,15 @@ enum secontext_field { + + #if defined TEST_SECONTEXT && defined HAVE_SELINUX_RUNTIME + ++/** ++ * Parse a SELinux context string and return a specified field, duplicated ++ * in a separate string. The caller is responsible for freeing the memory ++ * pointed by the returned value. ++ */ ++char *get_secontext_field(const char *full_context, enum secontext_field field); ++ ++char *get_secontext_field_file(const char *file, enum secontext_field field); ++ + void update_secontext_field(const char *file, enum secontext_field field, + const char *newvalue); + +@@ -48,6 +57,17 @@ void update_secontext_field(const char *file, enum secontext_field field, + + #else + ++static inline char * ++get_secontext_field(const char *ctx, enum secontext_field field) ++{ ++ return NULL; ++} ++static inline char * ++get_secontext_field_file(const char *file, enum secontext_field field) ++{ ++ return NULL; ++} ++ + static inline void + update_secontext_field(const char *file, enum secontext_field field, + const char *newvalue) +diff --git a/tests-mx32/secontext.c b/tests-mx32/secontext.c +index 848eea9..52211ed 100644 +--- a/tests-mx32/secontext.c ++++ b/tests-mx32/secontext.c +@@ -56,8 +56,8 @@ strip_trailing_newlines(char *context) + return context; + } + +-static char * +-get_type_from_context(const char *full_context) ++char * ++get_secontext_field(const char *full_context, enum secontext_field field) + { + int saved_errno = errno; + +@@ -72,7 +72,7 @@ get_type_from_context(const char *full_context) + char *context = NULL; + for (token = strtok_r(ctx_copy, ":", &saveptr), i = 0; + token; token = strtok_r(NULL, ":", &saveptr), i++) { +- if (i == 2) { ++ if (i == field) { + context = xstrdup(token); + break; + } +@@ -122,7 +122,7 @@ raw_expected_secontext_short_file(const char *filename) + int saved_errno = errno; + + char *ctx = raw_expected_secontext_full_file(filename); +- char *type = get_type_from_context(ctx); ++ char *type = get_secontext_field(ctx, SECONTEXT_TYPE); + free(ctx); + + errno = saved_errno; +@@ -144,20 +144,23 @@ raw_secontext_full_file(const char *filename) + return full_secontext; + } + +-static char * +-raw_secontext_short_file(const char *filename) ++char * ++get_secontext_field_file(const char *file, enum secontext_field field) + { +- int saved_errno = errno; +- +- char *ctx = raw_secontext_full_file(filename); +- char *type = get_type_from_context(ctx); ++ char *ctx = raw_secontext_full_file(file); ++ char *type = get_secontext_field(ctx, field); + free(ctx); + +- errno = saved_errno; + return type; + } + + static char * ++raw_secontext_short_file(const char *filename) ++{ ++ return get_secontext_field_file(filename, SECONTEXT_TYPE); ++} ++ ++static char * + raw_secontext_full_pid(pid_t pid) + { + int saved_errno = errno; +@@ -178,7 +181,7 @@ raw_secontext_short_pid(pid_t pid) + int saved_errno = errno; + + char *ctx = raw_secontext_full_pid(pid); +- char *type = get_type_from_context(ctx); ++ char *type = get_secontext_field(ctx, SECONTEXT_TYPE); + free(ctx); + + errno = saved_errno; +diff --git a/tests-mx32/secontext.h b/tests-mx32/secontext.h +index 1d0251a..e5571d5 100644 +--- a/tests-mx32/secontext.h ++++ b/tests-mx32/secontext.h +@@ -23,6 +23,15 @@ enum secontext_field { + + #if defined TEST_SECONTEXT && defined HAVE_SELINUX_RUNTIME + ++/** ++ * Parse a SELinux context string and return a specified field, duplicated ++ * in a separate string. The caller is responsible for freeing the memory ++ * pointed by the returned value. ++ */ ++char *get_secontext_field(const char *full_context, enum secontext_field field); ++ ++char *get_secontext_field_file(const char *file, enum secontext_field field); ++ + void update_secontext_field(const char *file, enum secontext_field field, + const char *newvalue); + +@@ -48,6 +57,17 @@ void update_secontext_field(const char *file, enum secontext_field field, + + #else + ++static inline char * ++get_secontext_field(const char *ctx, enum secontext_field field) ++{ ++ return NULL; ++} ++static inline char * ++get_secontext_field_file(const char *file, enum secontext_field field) ++{ ++ return NULL; ++} ++ + static inline void + update_secontext_field(const char *file, enum secontext_field field, + const char *newvalue) +-- +2.1.4 + diff --git a/0172-tests-linkat-provide-fallback-values-for-secontext-f.patch b/0172-tests-linkat-provide-fallback-values-for-secontext-f.patch new file mode 100644 index 0000000..066c93a --- /dev/null +++ b/0172-tests-linkat-provide-fallback-values-for-secontext-f.patch @@ -0,0 +1,181 @@ +From 97e2742a7f1e6e113354911d04505ada3bfb5d70 Mon Sep 17 00:00:00 2001 +From: Eugene Syromyatnikov +Date: Tue, 18 Jan 2022 18:04:42 +0100 +Subject: [PATCH 172/174] tests/linkat: provide fallback values for secontext + fields changes + +* tests/linkat.c (mangle_secontext_field): New function. +(main): Replace calls to update_secontext_field +with mangle_secontext_field calls. +--- + tests/linkat.c | 23 ++++++++++++++++++++--- + 1 file changed, 20 insertions(+), 3 deletions(-) + +diff --git a/tests/linkat.c b/tests/linkat.c +index c3e2ee4..decb736 100644 +--- a/tests/linkat.c ++++ b/tests/linkat.c +@@ -21,6 +21,20 @@ + #include "secontext.h" + #include "xmalloc.h" + ++static void ++mangle_secontext_field(const char *path, enum secontext_field field, ++ const char *new_val, const char *fallback_val) ++{ ++ char *orig = get_secontext_field_file(path, field); ++ if (!orig) ++ return; ++ ++ update_secontext_field(path, field, ++ strcmp(new_val, orig) ? new_val : fallback_val); ++ ++ free(orig); ++} ++ + int + main(void) + { +@@ -93,7 +107,8 @@ main(void) + + #ifdef PRINT_SECONTEXT_MISMATCH + errno = 0; +- update_secontext_field(sample_1, SECONTEXT_USER, "system_u"); ++ mangle_secontext_field(sample_1, SECONTEXT_USER, "system_u", ++ "unconfined_u"); + sample_1_secontext = SECONTEXT_FILE(sample_1); + + # ifdef PRINT_SECONTEXT_FULL +@@ -115,7 +130,8 @@ main(void) + #endif + + errno = 0; +- update_secontext_field(sample_1, SECONTEXT_TYPE, "default_t"); ++ mangle_secontext_field(sample_1, SECONTEXT_TYPE, "default_t", ++ "unconfined_t"); + sample_1_secontext = SECONTEXT_FILE(sample_1); + sample_2_secontext = sample_1_secontext; + +@@ -146,7 +162,8 @@ main(void) + char *cwd = get_fd_path(dfd_old); + + errno = 0; +- update_secontext_field(".", SECONTEXT_TYPE, "default_t"); ++ mangle_secontext_field(".", SECONTEXT_TYPE, "default_t", ++ "unconfined_t"); + char *dfd_old_secontext = SECONTEXT_FILE("."); + + #ifdef PRINT_SECONTEXT_MISMATCH +diff --git a/tests-m32/linkat.c b/tests-m32/linkat.c +index c3e2ee4..decb736 100644 +--- a/tests-m32/linkat.c ++++ b/tests-m32/linkat.c +@@ -21,6 +21,20 @@ + #include "secontext.h" + #include "xmalloc.h" + ++static void ++mangle_secontext_field(const char *path, enum secontext_field field, ++ const char *new_val, const char *fallback_val) ++{ ++ char *orig = get_secontext_field_file(path, field); ++ if (!orig) ++ return; ++ ++ update_secontext_field(path, field, ++ strcmp(new_val, orig) ? new_val : fallback_val); ++ ++ free(orig); ++} ++ + int + main(void) + { +@@ -93,7 +107,8 @@ main(void) + + #ifdef PRINT_SECONTEXT_MISMATCH + errno = 0; +- update_secontext_field(sample_1, SECONTEXT_USER, "system_u"); ++ mangle_secontext_field(sample_1, SECONTEXT_USER, "system_u", ++ "unconfined_u"); + sample_1_secontext = SECONTEXT_FILE(sample_1); + + # ifdef PRINT_SECONTEXT_FULL +@@ -115,7 +130,8 @@ main(void) + #endif + + errno = 0; +- update_secontext_field(sample_1, SECONTEXT_TYPE, "default_t"); ++ mangle_secontext_field(sample_1, SECONTEXT_TYPE, "default_t", ++ "unconfined_t"); + sample_1_secontext = SECONTEXT_FILE(sample_1); + sample_2_secontext = sample_1_secontext; + +@@ -146,7 +162,8 @@ main(void) + char *cwd = get_fd_path(dfd_old); + + errno = 0; +- update_secontext_field(".", SECONTEXT_TYPE, "default_t"); ++ mangle_secontext_field(".", SECONTEXT_TYPE, "default_t", ++ "unconfined_t"); + char *dfd_old_secontext = SECONTEXT_FILE("."); + + #ifdef PRINT_SECONTEXT_MISMATCH +diff --git a/tests-mx32/linkat.c b/tests-mx32/linkat.c +index c3e2ee4..decb736 100644 +--- a/tests-mx32/linkat.c ++++ b/tests-mx32/linkat.c +@@ -21,6 +21,20 @@ + #include "secontext.h" + #include "xmalloc.h" + ++static void ++mangle_secontext_field(const char *path, enum secontext_field field, ++ const char *new_val, const char *fallback_val) ++{ ++ char *orig = get_secontext_field_file(path, field); ++ if (!orig) ++ return; ++ ++ update_secontext_field(path, field, ++ strcmp(new_val, orig) ? new_val : fallback_val); ++ ++ free(orig); ++} ++ + int + main(void) + { +@@ -93,7 +107,8 @@ main(void) + + #ifdef PRINT_SECONTEXT_MISMATCH + errno = 0; +- update_secontext_field(sample_1, SECONTEXT_USER, "system_u"); ++ mangle_secontext_field(sample_1, SECONTEXT_USER, "system_u", ++ "unconfined_u"); + sample_1_secontext = SECONTEXT_FILE(sample_1); + + # ifdef PRINT_SECONTEXT_FULL +@@ -115,7 +130,8 @@ main(void) + #endif + + errno = 0; +- update_secontext_field(sample_1, SECONTEXT_TYPE, "default_t"); ++ mangle_secontext_field(sample_1, SECONTEXT_TYPE, "default_t", ++ "unconfined_t"); + sample_1_secontext = SECONTEXT_FILE(sample_1); + sample_2_secontext = sample_1_secontext; + +@@ -146,7 +162,8 @@ main(void) + char *cwd = get_fd_path(dfd_old); + + errno = 0; +- update_secontext_field(".", SECONTEXT_TYPE, "default_t"); ++ mangle_secontext_field(".", SECONTEXT_TYPE, "default_t", ++ "unconfined_t"); + char *dfd_old_secontext = SECONTEXT_FILE("."); + + #ifdef PRINT_SECONTEXT_MISMATCH +-- +2.1.4 + diff --git a/0173-tests-secontext-eliminate-separate-secontext_format-.patch b/0173-tests-secontext-eliminate-separate-secontext_format-.patch new file mode 100644 index 0000000..c1eb4aa --- /dev/null +++ b/0173-tests-secontext-eliminate-separate-secontext_format-.patch @@ -0,0 +1,63 @@ +From 6e8aa3749cb7e11e9a59db996f79f036bf7ef263 Mon Sep 17 00:00:00 2001 +From: Eugene Syromyatnikov +Date: Tue, 18 Jan 2022 18:05:19 +0100 +Subject: [PATCH 173/174] tests/secontext: eliminate separate secontext_format + declaration + +* tests/secontext.c (secontext_format): Remove declaration, supply +the attributes to the definition. +--- + tests/secontext.c | 5 +---- + 1 file changed, 1 insertion(+), 4 deletions(-) + +diff --git a/tests/secontext.c b/tests/secontext.c +index 52211ed..ba271c8 100644 +--- a/tests/secontext.c ++++ b/tests/secontext.c +@@ -23,10 +23,7 @@ + # define TEST_SECONTEXT + # include "secontext.h" + +-static char * +-secontext_format(char *context, const char *fmt) +- ATTRIBUTE_FORMAT((printf, 2, 0)) ATTRIBUTE_MALLOC; +- ++ATTRIBUTE_FORMAT((printf, 2, 0)) ATTRIBUTE_MALLOC + static char * + secontext_format(char *context, const char *fmt) + { +diff --git a/tests-m32/secontext.c b/tests-m32/secontext.c +index 52211ed..ba271c8 100644 +--- a/tests-m32/secontext.c ++++ b/tests-m32/secontext.c +@@ -23,10 +23,7 @@ + # define TEST_SECONTEXT + # include "secontext.h" + +-static char * +-secontext_format(char *context, const char *fmt) +- ATTRIBUTE_FORMAT((printf, 2, 0)) ATTRIBUTE_MALLOC; +- ++ATTRIBUTE_FORMAT((printf, 2, 0)) ATTRIBUTE_MALLOC + static char * + secontext_format(char *context, const char *fmt) + { +diff --git a/tests-mx32/secontext.c b/tests-mx32/secontext.c +index 52211ed..ba271c8 100644 +--- a/tests-mx32/secontext.c ++++ b/tests-mx32/secontext.c +@@ -23,10 +23,7 @@ + # define TEST_SECONTEXT + # include "secontext.h" + +-static char * +-secontext_format(char *context, const char *fmt) +- ATTRIBUTE_FORMAT((printf, 2, 0)) ATTRIBUTE_MALLOC; +- ++ATTRIBUTE_FORMAT((printf, 2, 0)) ATTRIBUTE_MALLOC + static char * + secontext_format(char *context, const char *fmt) + { +-- +2.1.4 + diff --git a/0174-tests-linkat-reset-context-to-the-expected-one-if-a-.patch b/0174-tests-linkat-reset-context-to-the-expected-one-if-a-.patch new file mode 100644 index 0000000..9a34d01 --- /dev/null +++ b/0174-tests-linkat-reset-context-to-the-expected-one-if-a-.patch @@ -0,0 +1,190 @@ +From 78a81bcfb71ef3d9f6e8b1a32e123fbbc6112a60 Mon Sep 17 00:00:00 2001 +From: Eugene Syromyatnikov +Date: Tue, 18 Jan 2022 18:24:34 +0100 +Subject: [PATCH 174/174] tests/linkat: reset context to the expected one if a + mismatch has been detected + +* tests/secontext.h (reset_secontext_file): New declaration. +* tests/secontext.c (reset_secontext_file): New function. +* tests/linkat.c (main): Check that there is no initial mismatch +in the sample_1 context, reset it otherwise. +--- + tests/linkat.c | 3 +++ + tests/secontext.c | 7 +++++++ + tests/secontext.h | 7 +++++++ + 3 files changed, 17 insertions(+) + +diff --git a/tests/linkat.c b/tests/linkat.c +index decb736..781b85a 100644 +--- a/tests/linkat.c ++++ b/tests/linkat.c +@@ -103,6 +103,9 @@ main(void) + if (close(fd_sample_2)) + perror_msg_and_fail("close"); + ++ if (*sample_1_secontext && strstr(sample_1_secontext, "!!")) ++ reset_secontext_file(sample_1); ++ + free(sample_1_secontext); + + #ifdef PRINT_SECONTEXT_MISMATCH +diff --git a/tests/secontext.c b/tests/secontext.c +index ba271c8..94fadd4 100644 +--- a/tests/secontext.c ++++ b/tests/secontext.c +@@ -235,6 +235,13 @@ secontext_short_pid(pid_t pid) + return FORMAT_SPACE_AFTER(raw_secontext_short_pid(pid)); + } + ++void reset_secontext_file(const char *file) ++{ ++ char *proper_ctx = raw_expected_secontext_full_file(file); ++ (void) setfilecon(file, proper_ctx); ++ free(proper_ctx); ++} ++ + void + update_secontext_field(const char *file, enum secontext_field field, + const char *newvalue) +diff --git a/tests/secontext.h b/tests/secontext.h +index e5571d5..387263e 100644 +--- a/tests/secontext.h ++++ b/tests/secontext.h +@@ -32,6 +32,8 @@ char *get_secontext_field(const char *full_context, enum secontext_field field); + + char *get_secontext_field_file(const char *file, enum secontext_field field); + ++void reset_secontext_file(const char *file); ++ + void update_secontext_field(const char *file, enum secontext_field field, + const char *newvalue); + +@@ -69,6 +71,11 @@ get_secontext_field_file(const char *file, enum secontext_field field) + } + + static inline void ++reset_secontext_file(const char *file) ++{ ++} ++ ++static inline void + update_secontext_field(const char *file, enum secontext_field field, + const char *newvalue) + { +diff --git a/tests-m32/linkat.c b/tests-m32/linkat.c +index decb736..781b85a 100644 +--- a/tests-m32/linkat.c ++++ b/tests-m32/linkat.c +@@ -103,6 +103,9 @@ main(void) + if (close(fd_sample_2)) + perror_msg_and_fail("close"); + ++ if (*sample_1_secontext && strstr(sample_1_secontext, "!!")) ++ reset_secontext_file(sample_1); ++ + free(sample_1_secontext); + + #ifdef PRINT_SECONTEXT_MISMATCH +diff --git a/tests-m32/secontext.c b/tests-m32/secontext.c +index ba271c8..94fadd4 100644 +--- a/tests-m32/secontext.c ++++ b/tests-m32/secontext.c +@@ -235,6 +235,13 @@ secontext_short_pid(pid_t pid) + return FORMAT_SPACE_AFTER(raw_secontext_short_pid(pid)); + } + ++void reset_secontext_file(const char *file) ++{ ++ char *proper_ctx = raw_expected_secontext_full_file(file); ++ (void) setfilecon(file, proper_ctx); ++ free(proper_ctx); ++} ++ + void + update_secontext_field(const char *file, enum secontext_field field, + const char *newvalue) +diff --git a/tests-m32/secontext.h b/tests-m32/secontext.h +index e5571d5..387263e 100644 +--- a/tests-m32/secontext.h ++++ b/tests-m32/secontext.h +@@ -32,6 +32,8 @@ char *get_secontext_field(const char *full_context, enum secontext_field field); + + char *get_secontext_field_file(const char *file, enum secontext_field field); + ++void reset_secontext_file(const char *file); ++ + void update_secontext_field(const char *file, enum secontext_field field, + const char *newvalue); + +@@ -69,6 +71,11 @@ get_secontext_field_file(const char *file, enum secontext_field field) + } + + static inline void ++reset_secontext_file(const char *file) ++{ ++} ++ ++static inline void + update_secontext_field(const char *file, enum secontext_field field, + const char *newvalue) + { +diff --git a/tests-mx32/linkat.c b/tests-mx32/linkat.c +index decb736..781b85a 100644 +--- a/tests-mx32/linkat.c ++++ b/tests-mx32/linkat.c +@@ -103,6 +103,9 @@ main(void) + if (close(fd_sample_2)) + perror_msg_and_fail("close"); + ++ if (*sample_1_secontext && strstr(sample_1_secontext, "!!")) ++ reset_secontext_file(sample_1); ++ + free(sample_1_secontext); + + #ifdef PRINT_SECONTEXT_MISMATCH +diff --git a/tests-mx32/secontext.c b/tests-mx32/secontext.c +index ba271c8..94fadd4 100644 +--- a/tests-mx32/secontext.c ++++ b/tests-mx32/secontext.c +@@ -235,6 +235,13 @@ secontext_short_pid(pid_t pid) + return FORMAT_SPACE_AFTER(raw_secontext_short_pid(pid)); + } + ++void reset_secontext_file(const char *file) ++{ ++ char *proper_ctx = raw_expected_secontext_full_file(file); ++ (void) setfilecon(file, proper_ctx); ++ free(proper_ctx); ++} ++ + void + update_secontext_field(const char *file, enum secontext_field field, + const char *newvalue) +diff --git a/tests-mx32/secontext.h b/tests-mx32/secontext.h +index e5571d5..387263e 100644 +--- a/tests-mx32/secontext.h ++++ b/tests-mx32/secontext.h +@@ -32,6 +32,8 @@ char *get_secontext_field(const char *full_context, enum secontext_field field); + + char *get_secontext_field_file(const char *file, enum secontext_field field); + ++void reset_secontext_file(const char *file); ++ + void update_secontext_field(const char *file, enum secontext_field field, + const char *newvalue); + +@@ -69,6 +71,11 @@ get_secontext_field_file(const char *file, enum secontext_field field) + } + + static inline void ++reset_secontext_file(const char *file) ++{ ++} ++ ++static inline void + update_secontext_field(const char *file, enum secontext_field field, + const char *newvalue) + { +-- +2.1.4 + diff --git a/2001-limit-qual_fault-scope-on-aarch64.patch b/2001-limit-qual_fault-scope-on-aarch64.patch old mode 100755 new mode 100644 diff --git a/2003-undef-ARRAY_SIZE.patch b/2003-undef-ARRAY_SIZE.patch old mode 100755 new mode 100644 index e4e87bb..1ac46a4 --- a/2003-undef-ARRAY_SIZE.patch +++ b/2003-undef-ARRAY_SIZE.patch @@ -1,7 +1,7 @@ -Index: strace-5.7/unwind.c +Index: strace-5.12/src/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 +--- strace-5.12.orig/src/unwind.c 2018-12-10 01:00:00.000000000 +0100 ++++ strace-5.12/src/unwind.c 2020-06-02 11:13:42.777871147 +0200 @@ -9,6 +9,12 @@ #include "unwind.h" diff --git a/2004-glibc-msgctl-semctl-shmctl-backport-workaround.patch b/2004-glibc-msgctl-semctl-shmctl-backport-workaround.patch old mode 100755 new mode 100644 diff --git a/download b/download new file mode 100644 index 0000000..785a64d --- /dev/null +++ b/download @@ -0,0 +1 @@ +a64471e9e9df0f5b0d81461cb17926ea strace-5.13.tar.xz diff --git a/strace-5.7.tar.xz b/strace-5.7.tar.xz deleted file mode 100755 index bcc7cc3c54fcc712dc94bae4b7deaa163897398b..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1805044 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

pV@s9A+)Wq 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

GSE^7R-DD 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

9MMCB-;2F)6tQM`MoiKwfx z;>iv={NcFIa2m4#>5eejouFl@6GXS^Ny z$_k+0)Gw0JEKXpl39Y@I>+iDV0oY!n+*9X5OK8&UGCmR}VA<2{Y{^5e{%?)H$PCsl z?|I-%8A|^)9#x(kk~}!kCHX#>1j2&3$sF{M4s>K7&q^WV5#qS(%qD(ml*^v;RZrpD z257gmrwGv6t1mJ<6a_h=3q4?0;9{Q(r)T05FWsM7i7inLf~ zHHN=O&BR!yH1RafQ)ipuAZC4mUQ}vXKdNK0Q6gxbv*6H~f^nyRmzt5ky$8F!?RPiB z#EI*TLMy0V3s=!fu=rlOgUz2Xbb_M(+Y8Arz|u4UPhe`QDJ@dh`^7Ghmo1W!mT91_ z7yOkk#n@>g;O&l%vh6NoBxE8mcPMKHxrDvQMlB+}yJ4>Qx(a3_Yrb#+UXNj?REvy%7$y(mjEL~~dR)M9&g zc&&Nvo0t(|U1530n_r>Z$Q@4RmvFpqzQUK!%Kq0_k}2h3i^y}Db!ozcXqx`}&6IOS zUcE7SYPIVg7C)MyHU{6G)$QY8E_Il>?x!uL5#0Uv#;`t{U;z}Y1!jAL1iFLlyLR&^ z$-w-TY1FoJiyv6u3Txeyun_v>{;P~DhXpoy|0Q2Ljuie0O)M;eIxj*lb#@13H<6b> zDfVYTb#cmTI;z2OyGVDO8_}vwjGI1X1+Hdd1c3+sdfWrDsX_l{?gjF3e78QHzqKPt=9YJGLqDcT0~J9TX0=I%uWHT552o0%0qigmc2P&h(@`F zaJFihZaZY<#n;u7NCrcsFc-xspwG6xZNiI%-zUNwc%#4J<>R}&9iP;<=uJA9Q6XAt(;G=rElde@7$Nm1_>P`+`$ z{*`^@ql&fEOr^%kv-?8wRfpKQsnkUPR~6 zBJ4m=DhHzi700TRD?l^4V7eAQ=(#wx1vTeD5j$cp5lKVjhh+mwGMzi`>HPKHu-UFg zT?AylD;!OEL7_NTL77Aw8gh}S<>_X8-g5{}+@eJcu75u@N$qT_UB5uzc65DJ!mAdL zIl^;3;ioDlg-9ysboO9ykY>v7w1i`n)~$`)@KH6QcS`8>rz+%(rsByUJd>~y(9?t+ z8!KVgaC*?*ns7Jnuy>=njqIA5MkiqfKDskirKu#(5n+EP`sHebmt`6E)XjKyE#VAn=I!@^0I4>rF;1h@I zpmAVmkk~BtdboOP>)77m-MQJGqOQ)<6$eI;Ko(MnjM?JW%ICKKz9yVd(k--f{!f;r z6Ko<;dEGjX3|hjwM>|=gx+>JRdcr@XnR8&?|8jp(hg8W=tpvE5fyZHOJy%phSc+72 z>A=+rP5goI?Q3=fqQ6$*KP<44<_ld|8DCLeqZ2_~!We@+8Wm0@vCQF}#4w zDZd|e5yd2vsfI{2Aib9k!`j}pMzDbGD}{Bo-R7=4Qy(F6 z_uUCnevN!41y3`w+Z!#L$;trI3mR}Oy2{NMj)^iJcJv;zHPgMW`z_Hlj@jV1XZ%4> z%;9d7=@5~XfXQ;JNeamiN()qtVa4!1FGgyK0+jq2qLYC?s?wjGnEE2e)#a_RRfaWE?ZxdShOlizTf)(d1%Gr88#16JyYr>c|f;YnDl)k($%fz-PLVmU33t!&v&N+M#80Wat=V39|1Hm{oo z_P~T+cOQO9frBwY3BHQ^(eV-ufp#q*x>hPHV-A8wE_ceQ*L;;3=i_IM!IvZc4cUlUSj0LG!<8|wq`=O}t%6BsE><|S<@*sU`c1n{ z<&i@L)B!@6q{~EQG<_eD-v&x!Q5{KS{LA*KmVUlcriK7l5?~6!&C<+JWid~++l&T1 zm$nw<`uLOP2gpm_3>|D|SOlSpU%Q$r+Btem0J!BFo<+byY*Z!Vo$%S1$A=|IQ?K@V zLvm~Tqg!Kfo)k7XESGAy?6=xLfqm+g^LJv8Ey=n@F4x?pabVXi%2IH|;Z@{FTZF2m z$+;W|^BH@z6_rR!XqttQukf~s%0s{s8Hgi{n#z(!g=U)9yO?;EA9?3#?^vaW0?)}p zK#WlGy`vM0_@G6_yko>10Lq>q;w4P;#}3}3BG>}32N;?V1FJ(#Lf=XNvT0K9!CrDx zWFqj6EDFb%)kXaQX0;%T;;!}r19uEm@zM8YQk8|8UvC*)ZT`@|WNk9#{oYQw(59U@%sjKewHxD7P?F~_XsVVZM zR%}Y8+c4A7AIwMYDhvL^FVvCQE!r4zK;6v6eA}#_Tf5EBQV^$Au*7x5){7>XuHW2M zjeb%*EjBZi@=YCLqwSVWD@@dD|Ff!aT>hdIQLwALvfV- zxcdevqy9l-Wm0_}r?1BbUcyF@h*^hJ`s3218wK7tI)C=rmdHq~@hD;@OtLfRJk3t( zsF{b3HlqZsh=rf0!>y^mFy{cD$bOa{^*5r@OhsL#IYQ-Vg()C)3`8se=_b-gX>C7; za;Z)I*vVB;uq*G!L*#noE71Kc)zokdyIBjA^qO4_R^dXCftLEQ`@iznZJuK7=V>Wo zP_3r$Yc>EXrEoVMv&H)>Zgt};1)q~QM*A>acxeaoiE!(f-MK)7^62ava+Z*}TDzS~ z{*hgBQoYaUeO^3^!;DsQbnCYOpF9Pdn?`FAMXtcc{!5fC7ag8p7`=SO4VsgXq$QD# zVe-fo;7^dK(g+n=5KOSnFdBI*E-IFZ;&2soDV6urN6AKJj(=r5V*F9#UxsEwGFw<) zFtNJD%Hme>@=-J|8s5i=N`|6+^7 z%f@n}x)~v0Q8P@p^Ff*WSygypecasj`YaCZrGAc%t|h)7-IGk#8tIXbob9IYlmHJt zXf6Z1#}tiyXwl4syOP)_Mf686Y1{ZzDY$U{dbtFI?|_JX?o_Y#U1|9J?ErI0g`;?F z9r?|S`&=xt1R<0Z4oBkdT-h}^`U#=q<_-f%(tH~g(c&qbI`7s}dweo0^oJUDCbiwA z;;!2esHtnWf!b)g$S}+ZS$m5^FG!W@)jo7WajFus8_?Bvp^o~6n~yATNr}u^vDO$Y zQ|FKSHqXK)8NHRkt3E_>j126ca^-M92+e2oK3;)YN<0zgFU#TpdS>n81jJ1_^?!bo zSGAWcQG;-&I^69ZmkVk{?he&G(iUvZ7?g_tSAu=?vw5*{wuCE7_~-=tL-{6Cq1{6# zp!M`<*2hkz^9#aICiYo#gkuRIcPzI0apdt~kF30&eh_CeWfy~4+fZpW8#FZYiIcmZ zN6TP$`wyG#HOfT~wE4S?f+Tr6Bm(hJU>y3L5+13HX=nkGbz&W{ig(QZUfQ%-+FmD; znyBWe@>g@Ox&cV9PSg36Zis492YFY7KCeHQd2B z$-1&sfK8AQd?WUk)l1Gk)mL}Q&SXRH`JNs+dyN?Qe*TG4)d6gt0+XWbp$%Hz>mJ#= zd(*b?lNWHFYq=C}_`fq?M~$sSPK1jD9iiQ zopNUVkXWecU;)FNA(W0Y0F2HfxyEYnL_%%_SB~Q5gJ`T>L0>B!?T5X)`$4`y+KeiR z1HZb`8G{1|yhM|8+&8J@{JJ?ev4xv1t+I45$D5N9ue30J7e>CzdaGI?2OKIk5&s0H zigV?=FTOi|eC%}W)AyisN`mWT*jYZ32)WDkxrSiH2h*;m#xAl$d4+mU&H8s;f$`o+ z?;4w-JyRJT&r-)lcA(Ws0I2#5?Koj~MK$wX>Q&q40`1I$5<~D;$`cH|E{ISHswHcKPlGRj}@1)l~5W&MhHno6YhB5=eV&o#%~z%m%~~n zhzi8TwiHQ-d_jUnpn@^ zFbD3Ss1IS6x4o6#79d^~a}Gv^PI2qaMkkz$>Qm7Hs&Sae61tszeH?>BStU{@kY7WJ z`#9&4u#Hh_ODRUl#Hsid&P7^x@; zyam5LXV9d-vlh}&OLD!+jpz2@TK}%SJ=YH;_lHd~qp8V?Q~oKxcN6n?2Om?VO?tN( z61sNBV8mbeOt(!VS7lTYbDXrt^3!)yGQH99gVU1N0-;?oR;k$zNT!NTu$u44e5Nop z43alsr@#>FEAFs{*@CCH8dl-HRule%ggxOp z0Ya75dg)TFSEc6x#4Q&$t4B}AwLvDG`qIROar1R)sWw}iNlXhDiZViXuo|+M@K*?G z{oj3w|6L}IEOmMj`SVw<4!UYqWt9+Nd{OMeN6i~^jzXQ$6a zT+?UufL2$>U&`J0y2fv?wo?;Q#wU<~J}Eox(@KAXx^~O(e+Uk62Q(GEZ74)`e8gZd z2F^u1ybFS_f>E{J6H4;x8v4!TxB7yk3WDJXN-^lk;X%7IkH|`iCqdx`sj7hJP)0A) z)07YD?4L^@qNcipjex5ZVWM)Jwp3-)m)lV?QPlK3hf#P)f1K)GP^0Bz+S$vM&yW=S zQqDnKaoU!<>G}B7$2ZA|r9k$HPGQ6%9}MSX4O(5Ar@al@1mNIcsk4Fv-9&W+5ifH< z7A-e~QED z0`?9-Jgb*haTyV3L`H@YB)%+G9RUg$gDGdebaqCl92GQqINg}P2NI09_DF&{gDdB1 zdk{3z`sQg%DERJrbc^CV|tVo+NBpAsUr4oL+b!p zjZiEL4Xnx&VHHY|T^dzvD};M$Oe2lvKMpKwRw~_epJP69DFrA=Et!0r9s8{p2`V~G z!QtFZmjuR1+Itw~)H{kJB-V@y@S=i;7Xsa0K8(pRV7%^4RT%?IZUJ7Dx;zmLRs+Q_ z-KBygOx#G9K}h_sb#f;R`3-pD>z5Iwf9Yb&-{V>!ZduRUcF`pADMZU4t0yV?CX578 zg|ZQBT^H4nCA3(yQ(KR^RU$ZnMRr}h%!py|5*O$MjLtWx( zm(%{TgV1_=a*0$L4_4yMhxj#bW_n9Y-6(w$YXDdIHD&pCMILjI-5~kc_~}+H9Bohn zmbIhq>|rFpsjteU-ZwYgjk;xQ{>B6+@f&xURS_S(M4N+e&{_$RFGm?fE+}&)>DyW3 zJlHY*@_n=B0aJS3rC2*8HM5EYX`dMkjl5bMMWNze{muYT>==K_=CmO8z^s}h2;6|& z=18+8T8>m$tZ1H#k$v)-z51&)(YgoxQ*J3MbJSMK{8oCNpw46_r)GY|QglY$|0PYS z#T!|HF_*&)$~y|vNYA_3(L{elM}me zu2W+H8T!eX+u-d~WnY~!I#hkDD$J2dD$4-9x2!$K(u1L_vO2?91Jzk6m`yBSgv%e* zR$8P?{V3=-sgSlJKH(^}s0%w`Hl;WGE`IHO<5R2qX~=I~A@rH4n3^V6W@nsM{hY8mk_PK@leuENja;tD~yieV+ImE8Hqdut!cx2y@A66RQr@?@b zd*fgQ8*y;hN@^r=y`5?Zc`=Y%v__)q@UD!kKPO9N-SBlvOk>$N16Nh_ z66mBf@?*6sj_Dh1kUkNacZ2{QjWs=|b{tfIrbK&T4jvLvJa@)%GeV}}I0K$&FQS^% zuMM{w5)tio6Fr8Iril3h!$u+;XX{>Y6W(>V*t!W6 zmUCc3M&bID8}F}F9{Yc72r9gJ2Hpb`R^(P9pD0Veg#e^zgRwNE?Unujk}uzY86$0HQEW%4MixaFf1oT7hw^SYgGKZdCDM2mB^ zDmnGh(2k8Fd>*VHFOOGR3>L?B|Li4rNCCMA?p|sa*=3cw8|iH!`|^gx8tZs=>ZSf_LZ-S{R0{W_zpdsD8pKYh_P4Tb+2P-PWO25Z z{A7W9hHCzp2R5Y!6k5xU$5Wcmy@?9H$kT}(DRe=GBv3Hd(fGjJUCvOe%bC>5Q=L%o z#PkO4xkt>r-*p8h+nG7#`E*^B6j9TN0;?`)h3zmP;yu@LS19vD%<~2f!^1DM*}0Q3 zCgN^gI;3t{OT~|LWwG>g4l~j#Por?~w=+MS7xC*_-&MR^T}RC=7%LN()jjf=$&B>G zUzLy%OhnoBpa`T)#{Zr0h7$%O#-?-121Zvi!%ckY?M&VC=G|s|h*Gyc!dU;oxC);! z2odJCid?#V$kSUEn;h=rMwi}9J9jh$%R7)uom`5p(g(omI7@Zd1#%ZjF#-3x2)7dffn!x86- zfXB%Y+~Q2AK>S zq4FH6U1JXwu;^)mQMzAlc9 zw$X@CL>4}%Xs;p54m4w*MRn>cRgJ2SM%ya!bnzH{+PG#X%^@5W191l?BEw)hm8Ryn z*3{A2@5WhGjK2GI%7xLpO{Vt^>a#_hO1Wc-Uf}u@cgPuOlh|mPwZs@#+Q989vdrOJ z$%<1uu5b4HZ{J=-=DVYItGw%A1jQcY(MVo~-nE-nqHq0uW>cXiqiMp!+1X&fG?>`|R?!a#%s2qKPX+s}N%1J1X( z3E1tGN`vVCxxAm`3Wc^rxMdhRMUw2*r&`?`0Sr8c3I(g$9t?SJb^j9)_UMM<5s+y4 z>dEqlu%lxI{vt3a9}}YK2qFN#bcMF?8Ojpj=-y!%bxaMhN*&(T=)c_LbFmQ2G&flf z=Xbd|Ai$OAofPx8_zVL$?64a;GWYnW|bEc@lls2XF1c7m%n^bfRJQv4Q^HMEt zG01$DI)#BTn+D53%bhcEnYd0ZQ>uDkg~JBkZl?)=)0uf@1+vFPk3=EK3)#U$uAiYI|#z>A!Vc7GZ|}@{UO`w<^ov4 z&3G5VHx3RP%q-1Tj56CrU1vo>N9F8-?n{rG-3{Zsf$JQ&enS41aL=90rn)Yi!rV9@w zzCF{pfoZ||;~#FrlXY{zozzP#`{%C~p+1HkiNZq1II{PX{*4AWW0Z=e}K_&9yvYCO}M#dv9PL)^*CEsUp5k$evM*hMclvzP&n{k@`@gwbybzQNh0Acy!x? zHD0mcbdK!5CdT1gpQiLKs?}=<199G3Hx(Z(WscNn1`*6gl~&7#imE(0MeK!pf0s~E zkm_VPUrv-N40|V!9;$$W)dDNIKwZi=w5SFA#3#e6b-9oz-apd$Q!0$8eq8!PS|k+2 zp$s6?qru+@CG-mvvB&ac&#!xiW}b*4_JPX@DnN%_p|}MN5(w|%!ZWi|kajH%fU3CL zpnZqUC8Z{#E-?P!HHba0hmo-xn(?w}k8l`0nH}iKwri-0f{{`#Y5xQCX1>I@ZzG58 z`3|;8d*%c&$7#Ulg|xkcc{9tO0O*%wVO|HpFO7c1xVC7b-;uiFA!d8~H!E*jAD;!+ z(qs_j(e3*1h@3`bYH2}eH~g!7Il#dLNk!SKk&!C6btshNfV#? zL0;S4*O=J!g{2Im&oBoAs8-aIxS668UPWVjV3ELYOtxH5T+j;MptfQ=M z{lQwl;2IFcB&(>Y7#ET~0v(UqyLEHn31HQ;-Pz~*B3OUz%Ufk_GGUj5aiSZB`pt;; zkI*RrCdcn9g}EL#mtoR~NAnCgJ8EI?xRjhQnkGTW|EMOGFk!uP!R%UYnN32AGfXMM zo7_cI3I|!-RK|JwiGcL6F)sqaSdck_1nG2me|VlUhQY$m>>3*PY%a0mUZi-B+3uPb zWvppVr2mU$DjQ350#ZbJQ-Ld^`u)ue3kQtSyqjnXakoG!4 zyGmTvojY>`4ni>Zf{WcX6k;s#gNhufP-wQT!GLaj%*Urkby1Z*O?i&pU`S)Ric6;F7_=P~W3t7?M7#x!3w_3Hkn zP@q9jdMc+Ywk;d2BpR+D&k`N6UVLz(H(*FC+?Y4sXC9i9q zDILE4Na|2AVymfemEigtOBCA1#RcS&Eh)*GCe&A zKoabLQgxy7QN;YQU&$=d+1mn?K(c8ae042103T#m{-0!)SYLTl8J-NC9h%sT9g$=NXxfTF~=^FO8aw+>j(^#;*xDN>SdHX2$V&5 zK8N@MT256w_8odzhL!UHLAMd#QNwVY%t-^dx=yxNJe@W*jv6?<=`C!|cW)3SJ7bYB z!;)b*Nnb^_ez3e74<*C1_yj_>1=3Ahs8oW_^W=i4!<`5*!=e>?Qmij;(luFDf*dFr zGUMN;le+q8Q6oTefX)|Yryn$@=>+yuT!Tc0A{7}E*za|OR@_zP4~;;tt(~0kxCvt| z_nCi{u-6jMOT5_x-Cf*;$x94 z{G|k~HBC$|UGW%KDvtVgCzX^9f{{jO$|^wwh_#98*8Z#Vf|c@3TT-$vdePgZNmQ`s zsyG*$-{WreJ1qL3-G|wkbTQ^3R#IL1~;YsTzhS1*C6CF@! z+Op)!{~cYJ-!nHZuq8oSv?`MHs6(Q%y3aw2EUhL(0EleFh(WQ~wjZT5h2xWbc_YXw z(mRCtrZ6@al6}KsTfUxy4P`7qlQn+`MRLS2_Xie+{C6*g(#cml4BNpmnFv@GcGn0s z2JJD%Djsoe)-QU^JXkQ%F=BEsJ%2$&E3x;8KMQ@5bJ!5j><)}+m`H2Ug z=3=?s3iDv5a6^V$i_KguR5D}^X6uUj=k!L|`WK_0Hp2>J=;&plgp0gVq?I$PC6M`f z82sCnpf+2~{ZF!J@7`TG`YCqw18(gnmK`YsX}v)Y!e}j9_~)1$}QA;EAMLkLqwC zKXZ;&3wBqg;)zVb#t+O3Hnw*ClXRHfd3nJ?(_I@+&Sse`C&>ZEf)IbyA`+n5%@96~ z%SXjzJLL(I*jXz5j}n08WRA(vuKuY5`yl0)nY6Yv6rXl@(mcuc=3ilPl)|s`*NUQ0 z`filQhKwrB;qr<>n66D$NCe)GmY|Lt*ZY&1YO1C_7U}8t_)zqGGkTsO=S1QvfftO` z3?TkESSHrV*2xdwVPg*+3V>2~1Vtw+tAQZ~&m_Vd4$wb*Y5uENX+S>G&6av6=Ir z2PLlsooSfMmf7p_%!Zq#Eu7rL;ozoH%cyV#_`(^Bi#ZH70MT+{RzdLBY9J{^+4a{P z_c33bsA~5lX*?&S?ZjPZzaBRnmMX;pdH-9MS2XBpA#D}XVxMT=0!jF->=X$gg5Id3 zdBe)|I809uhIZR?o%XJGAgawfk3ct!QJEg_NM#=J%@6cGP++Mi-C5vfV%2mYmkjy& zHmzV1>6zK$&@7qB$Q766qQ*9;s%Ohq^PS)RmH_dqTr_Q#y`l7P&6V-h*Hl2niw$}0 z0(nTD{M-6C(sESgzb(Gw-OipqMQGTUj~GjI&|+RnmJk<<#@3%a@mRsi>YZ{aJw-C% z46+8MhhDI0+`=VX#QA-3Dy=51kH?|hH(yA?OORE$w26tWL?*ZVX$S_=ki%Vv=7W~l z_^4OvrMm}-FuS0hS&R~eoiB_V(%ve;GTREUmc=5U#wc++N9kzZf+KTpx{k2p;Gc|S ztiYZiUSo?H5BHIJc{pQ9c00$6N#$(sD5r`U$sf0k=G_^!l)FSEW-+J@7;9p_YOAA1 z7Me|4-dgw8Og&Hw?YsAvnmI0gzFxX&c!aqYG-QyC4Bhzrr6U{?_TR^yFT@d4FT#=M zK=Wd$LNaNXZ6UTxm9`Rcy^K5&#dJ9?eqtu98r>wxFxjAro@noZ6+D0X46D5pgu= zsuTeDo<*1%Ql7A&w@1i@e-ou=hEG{KP6r%bj6vy0kv-AG(q$dk`dCVe+@BuBx0acR zUeYT z&j-EUYZ~p>1pxym!{;2!5kP1ZqD7;1uH} zzTsi7jWni?7u9K3{mec@Vv@5Z4TIUgCLlgFU=uPl-5Uf4q9yxuwh37q_m>y=p52De zm#nAs&)1DE_wJ^bN~N{Bd`$$c+ixZI-RWMG0Xk4PW${gBt$ME7m)i!!MPi~Gm@?VF zRMfr!e5MhC?M^8_C0^|2~KpJZ)mZkmN-iBlYcxOD6NOH(`(aHR1u8q7rb!smjd1b#jc}3fon2#yiiUTLKv@fipWiL+ znX_S>z;i%lA>}rb42=2)x(t;?W^uW9zOv*EOjTP61L&#db7T3x-96G>(k{(HIFtszF{7&fp zsdq3`RwG@<7frqroR6B?CURJ?obRIFb%J7n4Yi({U{QuE$y|(m_#|l%JT^0y`GJ2>1(#c z`W-y@xGyeH?+#7s>zk|!ro%1_ z&FH$9d5ob2#r@5cAr=$2b5%`s)-r-$K>@H^-O7%k-xuQM2MAxDPSYGb!Irx*t9wtq-sZP-~AhL#`zWY)}3by-63^Ik~Y`JHbH zkmYm7fEkZiP|Zf#E0(yW6fP~n-Kt{=N%K$DdB?V9(nj&?h(6|7H^>m$%F;O6T6biI zq$|g|harJzh7?l4q`$$lwoKROWxVpP=L_rGB>p)M^-pA>IEM|mS*fn4YD0>VJs4J% zVge?KnhC0Dgji13t{s#Pz0h2;{BP(&G2X{@{aRD>r+ttN*<)bgy)@_(-bxyXF~`7< z00k`e)*sQ#n|J!IvqGX;Lh{a3m`ebpQY>M0Kn`Q|4nTmesZj(&0?LubloC0(#6ol!1XlAP31q|Yw z=EQf}qy?Q}C+;p?%Dyl_-V__aw+zaVxkZ;(8FpdK_Xs>7`TX>&)y2gjTI#F`5mLx| z8GJ)QWJ{$?y%WMZH64eNMidjPMyf{m1Fmo0M5M7}S1pY6-=K1!fg<+8ItiTjLe(nw zI(yn$bf!zvZe{#(&7C_!o|r?W#T)|Kf-!^D3=`*g!`s3!nsETbeCuS3V^1oT+$I@l zSbQ6vF1O72yJanbh67i>ts&a0)XMrjmczE!DLIDLuv4OE7ex5XMlt&6pX1P)>6;_T z+?(6nHhYiR=73W!<*MU$D5lZ4ULf@@?bkBLDG6YOy?W#gh~FO{N5F(8*kPb}$B9j! zPUPk=q9_7$kq=|}&Ayjw`4VMnBbVohdRm0RY zJ8b%bm3s=r+_0hrA2#}bDF2L!-$x17QC74B!!Tt<>`JXj`w|Iu1t`$uaw?_t=Hg9L z@qOvk^?z_HIvvb>(}JEptR#aI#9uU}e$KwO-qxoD?g+G~1ydleF$Pf(oB*K5TRLhP zzt000=VLfMQf$j;E|wELI(S}WlFYJa%48ua+HSaPwaII`74_ys9DJWD^lsjLV{SaU zG+h!G!T6R>E}a-$0&F+sRMINzr7f%!*%Bxt@*_zC34@A$@+-1csL76{#CCI9r)mNe zMD%;SdYtoFaOaKJG#^(?I}Mu5_qob}nI|GnkP(%Dk-M5*1A0WQ^~&s*hA%DaV;_fQ zIr>a7vjYH@Is_SGFf~NHO)|aImCU|$D@mU)T3@xJ)8}jRC(h)p1--a6PY_+TI=h~l zO#3b$u#{80m3y;dQ}Chgyoj6f+Bh%8e2o=BWqLbZMuOSYoXvan*^pr!g6xWGJ^6`- z%wogk;g^!J>k=|V<*7+-NCL(C;=`V=H3W&5W>`^A1fYKZ+k%^d%)Sw z;OYW@&05nUmZ8wVfIf|<-sMB>>@5;S6pgfnWQqdFkmro7I!e@jJaWn+PPZbBvVx~! z6q3B(R<8o*w*Hx>xI1*~8>;$OO7J=QapR^cPwGG1-RqW-7(e(MUcM%5JB$Q?Sp(TY zdc4ooZ=Q2!R;>x2bHWMnolfTiezCrU*@8jPFl5tNy@cpyN(axGEJOaWrLIzn=lfa#26JwzKh6iK&%C1ye z#FyH87as2~td7~B5Px41EAjU2!;*1Gd=8#lF;~KFSxNNfsQ&-*!G+o()mYjHCmWj< zRTiC=jIjT1G2y24vioFe)^@N|wlCsyuR?;u<7@ib)4dRw`B2}BMf(Wx)?oDF#gdLX zkn;_J0}~H|yZE`mxOCvVzNw_bTz|y@XVG&AllJDtxEUd}e9V3TaCCSoBV;>=P*yEP z+aAVEkCI>zlmsqeBeVR;j7tDP6c5Hl^3iRGv%)z$+L;aYXq$_uWWuJ=XCycGvfz}n z>iGnA{NO!Nzx4V&^RP!_uQ$vqNjlTDo}0&&8SqlM&921KLyh8Zb3V7V&mpS=jE)QC zgL33a$bPu(D*-Y>B~$1A5)~CC)7Hn5czw?46IH($VdBt^`W;;9IfQ;~j%=+` zEbpx(pIwN1Q;x$*;$%`9AxppO4PN-=AcvIyEmO;H<3^I`237ouhaerdrS#rc=puex zj+aI!g2a2knp=A?U{^BpPNt9odnxW{Iu?Vv4{=+nJ5rX z#Ezb7HN_Tw@~lltaH91v;eX+I17GIT775k&aU$Ln5jRznj6j~gw=h>V{4FHMr5Eb7 ztN`K2_7|p2(6ND*;G9~VS4udlX;M|k)~InCkCT{&7&b&))VGSgrM!88>72nV#2|lA zKhVnywvFZ49sGD!q)1bC6F3ba$NU!b$SEZX&>?8u2+0G%i4O~&&@1wZ^{rqufa~)+ zRU(ww5vfvf64l8;3bx#cOk$n18$yj6VjEJqEog@HP0%@cNls*l+!m#n2GDsKi=+Sa zX))Tb&Gyqy#tE27Bewzh)OpH2UCgmQMVwgoja-urtr6f~cp%ZG1S#W)0i|+lU<-#U z-tU%8N6q57ZBZnB6UxQ2IbPa#B2;xN6?~YxZYh|Eh0R#yJGyxthzc?FerSxU! z$%|0lVK0}TCA*S22J9Zwzd|ak7ceC~vTL#1Lg%)GW;^GzmZW;@Z(_Ewr&R@e$6lI`@A*_b-N(LTExmQSkbUC*kEi|x zg2 zU2Oj^GohT5N3GuV%`J4C=Iq*6%R!f^2C~Y3T@l+3vvcA6ut}gY9cQ;l8@fCpVWwpM zAaRe)0Ju;Vzs5W@stA69Q!o&Y&x2NqBsi5CoDQ&$1qk+V$>Bn{!O{r_L=0FDjH{E5 zRFbpr|4odyh*_qF3Y%-fygy*I0=H;Z3g&&2JTuxEt!nBerWagm%3XUSZILl)Anvp+ z35)dqOOTyw*Zn^8*G|jRUGm=w)tKp;cM>_YFfx+qQ-o8?NrkOh)QNd}<0I!ug4+ed}8k8_D`alM*(w5*PegVDm^p{w3 zc({A#vHz}H&LprsPvzXiiCVdMg+VgJqFFKC-xn7a@yyvd#wSa)T#oImi=ig1Dfc}v z3@#mrd6}6~aat0mIN{>3){Jldj1fWreZaUchFSr)47cl&`l4rX?Anb?270Tz`3#}N z6ptM2sfpKKMBKC!lBf|X_b!c_oI>sR0w?u2KNJ?C= zP@g9ipb~mR*yM!IeQtc>?D#dcj^DyFDiu@WA0^w86{nHaG34O>T;v9Hn`3!XFFIR3 zPVDRLzZr?3di9F6uwe{o3yP9tm%wg}clvH{tKUry9Jn`QP#S+9mdg4hH@8t(CoKb( zm~mhgetRf(@Y2!g882M!49n%Lq3XLeY|~a?yfo;aWL6VusdijEDWUhv1|K~c7lo&2 zQV{#(%iL_W!$V}o{W8jm44rd*3K&VPelXzEggQLMMG*pIXZK-?jJS;UlX7kT{2Z#& z`Y{6yxk+#8UuHi4`7pv(xG08RqX#YGz-TgR-0cw%cwGM@`CzvpTX#k_?_GsK`}Gst%Y>a9DK z-FW4>+kvY}IsDLaH8tUSzhz9K3}8Aj;R{8QbPy2x&3D4_nJPbGr5EsJ#<~3<*Z$z? zi|p~{5N^V^*rVkpkK`Qz(Y_ps4xy!(2I0A@UfeLWq$%Md(yWrTB8LrHG&h@tv}Oa` z{u!EXj)@gu&s7z+Lvs6aZ!57uY-LI)6HPQYd6&<4dq(id3wxxR`9JpGMNRvWzbWuH zj}hT+H|t<9Y8q;NY;NMYy_{N`L6o4?b0QKyxaBVYwTZ4Vjj$0z0 zlXGupO^KGpsvWz3M}ZBryBWb`^IcK`7)e*mm$GF2X1@eM=zxPb+Wo-|T5p2N?Q-$T z)*HK__zA~#HXm~{g3y;P7J{WX zYA4)Ezs^htx{6l?n0a1c#}{48ot88~d-7en1w5=Xs_OLeqZoPBlMC1B7Rd$@77xhz zv!r?Gm{w29l|WvG2)gfZ)wI265?1)s4jOOTpaRSf2hWNOZcKycC+*d~leM4k?DS3G z!j~|Lj`15te7-fyXTGu+5)yIXYCa&=l%bV2SIIO%u{|N{_>*kV-?Iwd!t-pJFtjWyRdLsA^7dkq7#jT2{H2AlZnU z{aj(8?PWluo)k8It)CWN^ipDPEcV_rBR@;D&5-43Hff9#7I0o}r`0Of-HGN-QQG`z zXHd|XYkl)}IkcnjNBR}I^Nj%iyWraE#eZwxd+l5ZWaL6yoCeNl+rb=MKdQ&gRX(wI zPzQ=FhS$(;4!{o9?9PkI?>pS{*2SQ9!ox1x>G>&Iuy0EwH8-xvue%~$41aWBev~2A zd~AAPnm;jhS)|U1InVaIzU!5Q5ZYb+F$)SLI#UQY za-LaMWy8$WA367)c-nF>M3@UpqJn)Tl6ZO3eXAyh3uHD8PqIVKusZdfPrf={gCuo# z#$WKyg8*A*ABsl$R+?p}cUQ|-Wm5*3XfRQYB=EDXSEXaJuA>7SvN6jd!w`e@Rbs$} zj@B9M9z8u{J4J`@g1i5+mFp^p`4MfmbVk%fE30=UOP(uxQj4ceTV6cyJ;;u~^iK%O zV<3JDd^)hhmv8h<7`M^45%3lZ=TKm!w|ae5i1H93Oq!qmLf}*@>;+pnM!{%+WUduE z*p>*iY^3fU|KJF^9ocy~QB^w88sH^DV~yqbsiCEGYqG*6Lt=MpuzXq+57`5_?H>i( zxqjlF$;-(Bv|waeP>zC8rVe~ui-kjDtf18%!dHyfGr~VmVt7GXEcN~;m-y~Uvw3a~ zyuHRyyq})Q0?!zkAJgh}a32%U^-BBUKDV9Q7H|^t19apbSWx1r(uZq8j$9!Gus=b7 z{^Gir1fSdnG~}wD)Au>eyeljJh!FI|;I2=?^U#_aUn2117=07k%;q$weiE`)mz_)w zi`SA3GUM>Sp4ASk!m8SKTCw_J+?R99u-s+YDMWy?67z+<*38&7D=%<7q{javm}x>4 z2`c-P%T-f!IkNQ(c!pX4$%4CJ{P6TBLPHE}EKV#U_%V{_XXpD$KQMN5{+#7B)j3{7 zuRM25qFB`>;^hNc&&iNb@#i~=W)pVSxLEjmTfxzpl<>elYst(dJuBMI2PzA!gPu8EoN8MkQ0k+1AX5hEC4!!h^TCGa7Oe;uCT8h0M1j^jSi>1EF zm5a!nwNDfWPVqsaqr|ERYrb6L-S*bVFAOjN0iE6yhmo1ij{JdLzVFyM(FvbvR^Cx! z&yo9xQ>W^`_w;fcXcdy)<)1ebskC1<1>ruSL}kh)6G=5JFm(xx&7Cr5_c3LGI_0<9 z-q)zwyE~!*_cyEL_DsP*mON<}Nvmvf37h1#Cj<+>we?h!&n~~7 zQBJMbcn|0}ri;f@!J8C`vyJe7mr4uySi@~wd&j2#Rm`pI2a3{LOFIxTf}JKi$Pv`B zwWg0yFF|~DJDEW_R8qQ|V`pt{r~T1Ittf7QIvADnO56iFeA-GZ^HmxkD7V*l0vCNMGl+C0C#jwo+rJ%-NruPaN z>AJ&wx%YdC=O4VHGjc+b!)_7E#o5jD;bHRx_k)&1{MD^vmb1(&ghhErYP?0^)S&U;u%?0HTu;x4$Wd+mV49H`wd16qzb3Ah|C-QEB-v6a zGE2y?K6e3JoKgIM#6%>+ajJ1%^{olCGW>}w!q>D?p5*L*|Af1~{T!wZOc%3Jepdi{rJi?YcCSq1T?G7)b6-lIb=cV}`5^bWn^j9yl~RXm9{j00ISx85}AdjSk( zKjY_`p(^&^+N+T&0J<*5rWe66YJf2%^tlJ^qZBI)51C8@WJ^BhG>_T-r}A-Ci)EV_ zfW}xn>Ho3>r+T*c>j%l^D93H5QUP`L_MKgO=lYOUk%@GJzp3UUYa-8gjp{0+RDG^1 zfj3$xIAP@$R|NoE^__Ce2cYt;V)C4?5gjrl_=yCXi0f{M5&=^7xn3x`@R!Fnc|w;J zC?z}*@?u4rG|v!;L|cSI_x%TL7e$`b`J-RZHDWNegvXewxwBaB$fDp&<>&YWJbBoa za1rFSQaKKz;E2aqYW^cWu3aWl-&Jg+gxvA8RO0KCeJx1>g3VGx&lo@}FeCehOzR}$ ztvI-N6+suhorU1n+ws`Wz|@Wp-Qj)WR|u+B(2C9m#F9|TNGA;f_+_pm4?UV|GzvEc z#71(HOX$7tXdIXcwZ$93Q>k>rC!_0_ulds3brEa$e5bBH zOz2z-T^kg-nNC=Ry%FLDp!Yux^_I+kfOqCe<_%aRqbAgrLGpGTeaclKSUuPD0%DF4_Qrw`dnsabdtBp5l0@>A7uM6iEu_3?V z@%vde{QNf2UXmYJM1l)qAF$4qbu^44qh7Y+s}-s72%vJDiQegVSJr8-iChY*t>i!6 zlw^|I69upFl)9!XrNlA7e$Mn=SCTaWp|hl;d2sW4GC~`DkF2ysc;X6-3q-gME`^b_ z19m2GuNGMOET2?IcXOA-dNiY6YunQr0l${>(a*d&;0czrjv3WzkN?WfguX`?!5@~_ zB95j7YkoQ$|Mcd>>lu61A+zX#UAdo@SqX6RfpiA0ureVML|IuWG&^d2Ilx(8WqF7^xOJ>eaWW$;OHddS9H$l2H6WbO!5h^ngXjgc#n8z{B?ZH-(VM z?spJyZ9&L;&JN1BFWs}!y00p;s;8!)mmZ;w8)QTnK5eoV9?Fl#tlqXPT{EOwY}4Q7 ze@53BUo+`D!RY=Yl`fP~D;$Lu&~SVd{8<}M_XF5QDxgluN4d?Z<&;!_E_dbrrn5!Y zKzy4Ps5$k)ZHLOc7C!rn#z0BJ*mW`Jb>&U3qNM;N-Ew@Tz)To*vrHfC={|6(9dids zXPL_07)srXOR4iQR4Wk6ync+8BDi0aX2tm7WWiHuYTjQY)vB%%&YKKlePs`O+C2dN z&w@Aa?Pg;)dB))4ugOIH{e_7A)R|-q5bGEJ3pH3k_Ia%-PS8wow42z);V(TB1ch-n z=a)Ar>MH|o4>x{0duQmktgO>3>K4n94Yp0qYs46BtG5SE^PMy5bs2m9l2@)WX$}s% zo7$iEESFMXnj9)C34oX%iI%gvl}#~)I|q624(ef5U{?I|uOAr?k)HgW2s2}yuPeg7jwxwB2tsz1KQ)&A?G zpIx(rDO}8hQ1@tC_H3xTTtIs?MpqiECZbrVMr7kAag^Ly+|yrQx+R}bc2-mf(0&t0 zH|!=K>ixI6VM%x(uCptD|L{$&&(+Mgyi;>eA@o$l1p#vv5({(a^lcw;N@%qSU@RZB z+HbZulnSCqnSbCv9B--j90t!%;$X`9b`ZWBSB(wIUTv$bwPPPR4Su$Q_{SSxTCB%Q zDj0HAH0L1G@1XVH5MEG9!7m{lJHT1bFfIfc-AH%JF{0L1#=?w(#YjpJ?2a33lj_L{S0#9qqu0D@**ao)PjB&Eo@1Sv<_%Cp?lw0aEA ztc4t3jvxWpd~)oBxE}%1+)EHf<#PC{GN%?eTZgZ3LgmZ!DlZ4 zFHb8naPYJZFOuGzi<3IBMDL?7FGh0Ta@;%^-lLP93G}piOU&Uk{UN`^9OE%^H#@@z5!s12h!Z zbw;pO3P)!xd#WtXIJx(SftWBi1@A*-WuFspzHK88DUFhIKmp2vC=M~-BfI&03HRrG|3)2mg>+at7_%%XUJ5-tm{p$ZITerW#K&q zQtH6zp|KPgr#DD}X1t z7`fYYg~CL=c5##C9HOuD$=z+F&@q;OW*t;fKhH|X?F&C6B}}0P5BVi!5oBZN&s3T- z5bwBMD!0@b__xB6;*kE$FSlhC+y4Kihq`PqzUr5ecKSr9lXp_kdzLh1)1Lp2tDQjG z9ldsp4*SLyf=A1>MB9q6L|ysSPSa7V^W{FEvy_QW%sZRB12p2P^JmwqGU|Vz2;n`u zv=_nNbIOKX%BSWeyGa2fmwwFBS&n7^n2UhZ304W=SkV*CLbFmhZqa= zFK*>ZiV$&ft1}$2X3XsKZ}6SAc1-X?mzAya=G;`AX)^+)9Vuqo1RQJD-&ZLmisFU% zqvKc7T|Zrewi;`>=|`>=BtthB(0xFZWP?<6p zacga(X@c&zM5ZpIds4f${QOe3Fb1)Bx z#xdALGwN@;Rr@$ldc`(Pw2AFXe7?cJ$KrIXvUM)kmG@G=(T?`(ulSDaXz88df$CDQ zVt1kuw8P-}i~{Y+m>Fb#UbUO-_kxo1q33vQVL;Q)LC|n4vekU*+VC}8QK!J zn2V|Bz}@bJh~XM9Ng|JrOMF0TWo3`;Y8z8)>#&%b+W&v58#-^c=pvsK96lH&vBIw! zsyavc5M8>TBFxdL$@jZ?B*>H;H}TgW#Km|z%3_-?3rSGizEiD;g$Q0`gSm`_Pm&UUTKbf1yqn_kSjc@ndd1bwJ~qZByomwrEso5|rr#iwu8&Z4UD zxH@kYm8sCpd~O^-L%Z_C8FdQ*U{N2JCm zZD{yQzJ$S8%~zq+VZ;a6 zTfPzDs+jmiS~rh;?9}H$IZB-I2-uCczO>a2haPyGdbi6(Vfp8hX7^+Q$hcTr#^ztB zZj^XC=+qLLl6fdW)7@c7DV6xh?kVz8cRFZ@CxuR3I_X`V_KQRS*bl zVztI0Z5k>=-a*ha7iHb8!*T%8z@L8B+6MsFx}?`JZW`gag#4PA4x{3;zXi@iu>M0i z-Sxrif$4z^F82EY$EoUrLRHs=bY4+hf=*Fz02>1HMh|a(SF8+5sLuIbI$A%y#%ELqcLXeOUwhiB-`dSL2$KdU>tb=XhKitn?7Fo_osTm-KTi~|m(*7my?06h*D*B4WQ3d4 zZM@1g+AH2aGsg0&bXu-0SmVrxw)J!JF~b7uZEu2%*~9PjHZuElzK2!g&iI1yMMmjU z_~)hUu%UMO8Py4qagQW#O3RHF{&-vtMXZ#|93kMVsles1!?)%_MuDAocDPnE+t!Ls zfP^()2)zhWac$*C@;0@NO0G3-Z*e{rP7OPk% zDj{MsrF)rokRh(US4Gc@sKTD9@;Yn=qMPal*>~5uN|&`}&IE*Oznv-gO1ooFxFoWZ z8iE7Q%nlUhcff&KvP_}ZBx2w+GtDCJU)uiFo-0?Z*5dXp%*kBCR36qx-kP(s>{*{( zr5vdk%)&5zGIh$BHb^UeXjeAFKry144-I7MWR`;*t`l_jrajZqS_5d?dJY(aGSUoz zEN(@g^I~N+`I6B)nm$VYVcl*pcArKxbBhfoc5qtcudF@V+NzGZLG5woN4`pPfzOC* z{v8F)(nU~%s@7TWDhGPJK$QER?(?$MBH-jwE~lLl-U{C}?-V;&o^e7*H{}wa6oQJD zG*m0*=Fofeg|`{*QqE)sbx;#aRRjs3QUvikzK5O$89Z6Bas3@(Hnsc(|EN#>M2HA| zBUX4f>M(6LsGN@=HYv0xp$K+{sUK3@efTT_EVaFfLXQFQVz=~UN)=k6(l9}+(+NxT z+NcuM@x~J(D^EdSbFuCI8|Y+H$RdYkZSM@B3;(?f8mDO`JUR!G|MlC3Nvq;zk*HIL z0lhYvDJ(h~TClp*G8IRIbBvb|nnNf1QBW=1g>}+EK@4+a9RU&qm;)+D5iKol7=WF*_V>LJO zW1w<;bPt+X{%t8G^6c=@_=*n!hZV3)u~dZsU;E%tFr%LTR_bC84(Ntn{;Y(e*SN&B zEkav{DDEtix|?Q2t1Wr{m+(fZkPGpMlQx(kOUbP(F-M!Dzw9 z%dFU!KtEK9Z zxF6xj?Qk@!rwQQCP#OqunklD)SNu6-CAM0KUc zi#J9OCnnM~_qz7z`YxZluO8FAUf`RBg^D=%#d9Wpbeldwm*a^bis|Hms&H!PF%%hV z%^3rm4Iq3u-~&ZE&WK@L)JZRE&x0E@U~?nndH<65+||zWRtg^F$iT$WRyFp^S9?fS zDOum4ss!_*fXE06SY;=D?1_4==GZtc={G}j~j)Try# zo#)!4WWKQLt=WI5wO`rha$3=^J6iXy`8Y>FYUu}OuT{58S3g)q$wBBL3qcLqZwD~U zTW&)rm^nPBbZlny&9KAkQt@>M=17>|@XcCbie1d9CsV3`h!NR{4Yq=1E~^k4(fPpb z+=U=gJ8M|2>QvUKs)(okqYw=dt^8PvIFhp;F1l}}8Y~uMB1c3LJmHBa4YUpt4Wd%W zZ3%?Gq1qgIpo_n2Z1;oFYQFO%yb(4K1I6G@2T-ov=YFO2ejNjb0}ik%Z;TXamN{V* z_bNlBd{h9#(+)|WIeVunNo>K4XLCxTl?!!9;UZn9cKZ*h(`2BToq#2Y`F8W`{U*j; z@K!rBOP8+UpDfS=Y+zxC$**Q)Xd~_~Nk?e*ilr!pJh}w4M{x#n0mH5{h{Kdw#L8^O zNXNM(kZO0XB68^1PTo*pgzcYfgK`G52OB0Kt|e}SBclR7eg0-uQ*$;UPr&01!mfL@ zM7(#tdl&zy>uHI0uVUc`e_(i$hn-U0{*kZy8j92Fi`V!sj90KR#c7}belL%~6o760 z97h>=D7V#AVEFM-K1ed>wRJL)56RKJa-cKZTocsWXzem0ItS-z9&;N_OqVaT^g3dQ z3ReZoL$NooZf=QpWuie@^|`Zjibl`WJ~9j{p#$B=_QgR`1*>j1Ts@3xOS5s1m<+~8-5Tj%Z{n8^Z4)P8N;xIc|8gg^`VK%UY;e!@Nw#_#Z7sM? zzA3DC6dFe(JZ4e%LUzDQHVs#4&kDFb)Rn|6RH{^%AF)QSB0QhHL{2U)9#Em=_cTIb zRrV%3(Vl+xSLU40g1CrJAKa*-iM&FBGrU#q`O~4DfOSeo_X+(7BFmPt{?ylQ%DD*v z1O@qb&j|NJ3QYCo+_ga2dJ1bxKjzboI&EwmPp<4nJ`hHVQ=iK$CfmVG9BnCq-OaEA zk({X~-!g_EtSya;f!Dz0$X?`Vs}Rl9Kf)eVivn|HgA!=h!Hy`JNX`g`$T@IR69TMP zZ3|sX!}^jIw4W?~Cl+G|(J7Oy?_0!SUA0us>GA4az~5PkM-e!lPRIn(%@#M4d2&zc z@T0{I<^;kCvdL!wi9DlNNY-X_Y!h!WQ3iZS^tIm7L_{2nTS1ZaRg)`?01hAb%EpgwI98^w{FDasLX*|H5B2 zFsBLPi3DKC7KyvT@pTh(x_uzqyx`a+pP35a7w~|o>-FLnh>|8{R&)neLtRE4JyHNj z+A;f$5qs#g&@^QiCmKyRIO_BA6A8zne|_NSFnw_WWrl=>0RGnGPSCMPSWNjhnCJwd zGkX*nvd=^*s;7FUe=`k^&C0=V@Om(CHf z;Aw6doiwPf;a2ShL0pow2RA$Qu0&HXwB&U9TOHsc8SLfEK_CLq&NX6-84O#XU(49U zwNAG0I$moE@3ypb->}E%rO)nMi(`r2k7~Qnd7Jds($4^EauKS781iWrt$2NP5UKPe zp!!OjE1x}6e;Hy`^e9l>uxdufFOB5`T9n06WHg5EZ-*^RECFG(xf#0?Bt8Zzqsf)M zsU_RG+~)le&A|8-FuphCo6jBmt zx?uJ%+`o?1+Lp(U&+gPWG9*!1Ok`#OOh=ZgC>z>XSvH%POxLVGlRfknKTFtKiY-CI z%4+<<tcStc3MXzxd2&XE=t z#R&@cd}dow2al+)y0D`ee$1?SyI^6+%Vqk(0Or@}_BRNvF@XF9=h~_~Cwy-Fyp&{%<7FT|P#FfjR zfWO2ruX*P>_1(d?gV^78E zShH*%ui4H*eL-NuFss^A)wO{WUskdt1UO~6C(PL$lrW&{jj3}={77h0p9a=X4Gg77 zUlchd$Y_wj;sKykkRiL&KdzWU%)(;3(_qi=W(Ayf=+vr6%BaO#jdjv;KOxd?hoH&6 zQh(L@O;mGm5S{&)Qb?NTHK26>gZ8}c?+g;tv8I1St4x^XLX!8@c?K~k{~ChnDhc_y z2ckH^w;CmGn&z7JQ;pwV3*CjoSCEXJ$`@pNAJYpWY|BnC;_HleUt)dzaBYY?J5h*G zpQ{POA{h<1bqZw^4qrUJ*6`$N8VKS8qcJk(|D_pjJq<~K*?HZfOcYD3M$;rlp3(CTw{!!7> z{j-YKt&H=SG0=pD8$xNtgc}I(MQrQQ`-iAA`SL#MRyja~GkjcjC?6HdcjrFm^F!}T zcQg}Xm-7}S)Xob9+b8`ckkE;Ewa0VEP?RJbRwB=2MEPX)pb>W5k%yTSH&7|P#My=} zOC3C)nAmr#YG?ezHj&A=o8Q6*3cRW{*u*wFQ*>X8|Hywk$ob^{+?})Bqq{oe?AB1r zUL!-312(-b(vY*bQu>Y-jAW1M za|vr0FBLAg6QY`2mtJ8B!&3cwWVNY@pvt0&#aok5=Q<)t4u^gO5 zGT{oVs2PWR5xPs8wOR2m@CIOSK{j|gNw?zA&IIey^tmfLO=VH88H3FSJXnu?-(>s4& zOdouf%C!lqZgbbGVg+3-Xfjjs8^~)o7~rHb4<>&WH*ak9Tbij|f2{0dG9H2KXiQ+J zjy0}{B&8&-kV2KpSRi^o@Kj>x81zgchvA)L}LP$B&9b*%goW-@nJws+53W z@u)4^TJ`xtNG7h*bUT-!5j4a`jan&2n zpCKRNJGNI;@TH3Y5*(ivDqbFV*z=#ISvkC>XkBe{uWBgO;ggpshpOE#6@JTms^h&@ zH-E@b=ocyEEfDFlSdh~0X3;E~v7a&m7~^3L6&uoTY?_mT32jRFzbo)3%654OzYFA{ z`Rdr?yTWR%#GMAnR^#O{oDp%Unh3IC=a<@N)q&7{Ek=dVu}vK(RmzsAX#$#Iv_EjPnX!C)ZG0KsZu_~h!poo|bVQGA z&4WB?!sFjbn6Eo+JB0JeaEkE=Vd(%k5<#CXm+v_xserp-xNflC*p|+yVmAnARMDwY zxiE@W(8}9*HksHd**!)Xo!NJ)rVzNJTx_r#e`+G^L0eZbK)yfVCxG4s%)x{Eg~$Lf zGegKINU8Zd`Mq%0O<2<(M1JK~OQ74i)8<8f({c+>QZ`5ru zHf$C^1hp-X030=7mTR^U?Rpv&zBwOl?AUoFq3^2T*b)A(Ta|5BOvXcXAca8s@VYhp zPA*$VX*&n1u~WIZ+)UVhD#pw#j!uf?#2*Il?>W>o?UnFE{hlL@Dd~TUqE_7+u)MP! zxgAi;ab#|51@kxNeniWY7mxh-kkB5!nBC_+LeF+~CD!rl?cjW@udW721Hm5-pN|aV z{H*O78+u%%v1JIHvaNeYd?xvHS;36CM z*Ti=SZL=OHiapGidG3{tsM_cnkyGDh1|9*T4F+_J1QsC1mSsu+3!&;x{4QCQE ztS5*@QHBJjl4iHOuJXkbM5m%?UrcyHESvWcv$(a%C#qI`z)0u>c}8cfU`-mLWZ ziL#(O*Wh{&gGA&Pd3vQMeMS^G@$YB})5DK8#!FC`P|)^Lzo7J#{s4>g|Uf4x(R%d5xI0QJsbXjk)!*O7qQ}mgo z)L|U@v%D6Gclfd5jHYc6UW`arZ3n@7%7|DsSftsVEc<9mGt47o1 z&U-PvAX~^$xuy5{PwD_YK*GQKB+_{eR{Pd#hoygIg^`E1VNsVJu%Irn`2~lY?G#ve znvKY1cPkZN#MY&@A&ZtW1aE5=#{-Q}*a74=@!d}BO|dX+4v9OQt|1^F7O&}>O|}lY zcj7%FvwC3Hv{&Ko%^+4UW0wexRBBU5fEp9b+fSpg`ND zOeqIw=|iToEM3x+iX!w81}V&B7$ODu5BWMw@R%nAFep1DU^l3;bLbw5W|~F)8VKth zwwUwx8KD*nb;1lr3}G$Y(-^`1MBy8*9*$q|`}2q%sBE%~_(eHGm_9Y*!i369osBF` zon?&uk@GYDyhMjOYpk7)9pL>AA@~cScm_hPx4*5Mwuwi(9BcW~dO^OVfOKg(&OAV< z$x*F96OSjDabWxhIjxKZrt{qK;c(0iYa9@!-B4u@pR2v2X*431Cx63yC`Gn1(ZZ}v zNQJ!4c6BVp{edSJ@BUTsa~Reeqn!r;$=vhDQ2VY-xDE=*;!?sEolG6jl1b2uO+mx& z$C4Jmj&ycGcPGZd2$sK?Q+u1K577*12Qtw;1$C0zQ^V*e+o^YV(2N7;p&)m6-YCr( zjEw_MkKdkk<}{11%qYDHHF!8~=+o!3<<6oz?chr+A!}TJ^0I^t_Jfx*F!{xNSyyWq z>S3o&j=i)vj0qfcl9uYi`*~27;(x(f$>?i?#-8BW9m)mgWb*gzLrGmzYZQ!7Hk7)% zn zWfsHshLHvG8#}_MVXJY4xt+hY8~3Vw7~Db-iy_qV-!`&IH>nzGw*?vPw7s&cD&fEP zkv_@%#!3mUK=17RAI0baP;d&*t5Id>l|c*d<~ayiy+&p**n95#nU-(!fqyZ8o_ZC|1AdDWqRQ{jgj3?v+n_`5`3H`6uXWU=F z7mlUq^B>MbPqREmKG8%O@n$PiB3zpa7ay!26p6hg_V(_V-&7}YF9BUU-ozJsU6sx7 z5!rvi<_TM{{Efh(H==V()~egNoM%$k<|6SNrKGN1DB3WPb`V;d543^q_r791pL{}Q zd0NVB09lOf3<`pw{>bUo#?a34+GSj1t zbhfqfplxB;7Cb-sTm0eYcPrVYGH!(HShNG(ZR=AT3WH}{*0VBh@}7eJqPJ86z)U%2 z$rjL+nv&+;90^(oI`!Bit-@9WPQzaec#EB8+lXkkvce*p41Z|%sh0>Ap`>ii50D{y zuI5W4&^Wu`St|^=`rr6WMUkVmkH?V(MB(<(@E8 zPc6*;Rnb=v#+1T?C?eSW#^>9+Iw0ltA*|&E8&=F-h5;5sx9AD(v3HEq-JJV+w^nt5 z(A4F4HJkW@qUFT2_TgEX@8C|2CoXK%3OmIkg>Tfck@-)&q=sGE4Z%nZ+`p%%e>*6M z=&w?i-qq=({>W$_u&o(hqBxgSyvr+Q*3b=Cei`_E`U2vXl9sTn)T?35I}DOeqxc0a zf}X^%0KtIrrTZ*i0XJp2twWr7I$XN~F)eGunE>gjXgh9$cL5c_5aLX*AW6P`N(e8t z*6@;;HK@1isC$PaUAk~BGBk_oWUJ@p`p1Lahe`T4nSo3byLO1y+x>dYlwm*zaF>m#$|=sOAeITZ>-`?uw$$PEKjd0(v^1w(TnHaARBbg?Ca9w7?f+#zGrb7b$>k79d#oA( z?-6goHTFXzZWMk>&E*7VtH(zNey(yAAl-PAI z9Qe3*C`vgJAQw<$^&CO+y`(7=SbZ0q;|QTC)`5e1r_$>{2r`tkS_fMCtB@ z0noVdy4*g#dI;Qn!iFYbdh0GG`yUQ|{OFIA@7_DrTwQsJEG`|JCZ$Kd#n< zRYz?gDnMgM^V}7D3>2hr;E)Vj(@y3gSpfJLCHJ|Q9l$lR1ebZ*xjd`&)A@-AGF>x1 z0jP|0D*ftpKY-_gkY$j{iS>t-FwUQ7$MM2&98xtlLw&lc2LpIAwA|6$%pIhJZhhf~{Fy6)GiHKBJ3R`jF z5{E7~{6@TkS3%EQ^fKhZmV@-q!gas@Rm&K;Et8178`w1628+Fq?Dq0WE97q|0>g{0?ZimEQ{YTS(I61+*9=W~?$tF&>gh;zu z)wg9h=~94c?b#0hoIL|-CQi^ET>?J=v7=chSBOK~oW7wJECmwhF}TJEJBy2?(Yk0x zsWEnnbjiPidtY*^dCLknYmA8dGcj~CQPf}BGj@YyRgz39EM!bUpdj$W_yo)SjCGg! z1YTlVoB=bNWkni`=0nfvT?PWrk^ufz0LheeJkFt)ffY(% z0Jyp+-<Zc{j1|&Ei-fn!n-@jVj~8O1Gb~%q360(w0Sex(QOgdFUqWjYBOYv^9RdKed70#(w9yU#K#r4MP9v5OHX&3X*;LB z-h3z5Zpl!GyE>f~kj0(5?8z@&>pE5u7RhCr(c>0ZkR*;FUAqoUR4edCKP)*mJ;-z# zNC<{mFfs2oCjU{`xu}=0{hM%zquqQfNBQ6)eI8K}>Ig+o^TwBSJ1;AC_e>T5)qhYn z=!x)BoJ`DPa7%Sgmayqk%_g={nm)sW-}gw&ZSw+QzW2e2UaV*u&QFz&e`41d@Rfr& zo!dn7saDB9e(RsVXncSrUluDqVT#-><9apF@IF|ivlz1Kpfk(g>|19EtHyrI1{?C* zy=G_Kp$jEI?WgbARJaIBg^QIZKS}a2j{-dC|7CgcO5dKE&u89i419;21aD6ZkY!K# zNI#;7_q0+s&4FKLq<=FU=$Qz}T#TKrj#fUBCy}F^AQaJf_SfgPz@E|W+lXS)zdeOd z4MG>Eg2=QO`PDZ422G(dX1J;p0}&bSAK{Tc5h>h7r5fU#_h{XGnWHS#P*y`~;-H2e zN3TF9R)txveXJE>&%&B2T|~QTscP1)&xG?FLh5xvfZs|tVtW;ow1sG2XJ}B5l!AmT zqV2z`5h&$+K{jKOCptQ!oEz^@C{`~&%}^PkCnL5`R4Z8{J}7s#Qed&k!?|LY20T5U zf99=>>grXL|Jm{dAjthY-tFg)hJRRf9=f`c5K-FCWQjyrHpt1t-5}7PEQV3C8#4YK zEa85FUUodgsw$z8>Ro58$+1h`B3!sI2=Cp;>Uh&BOM{7UztIoz$AdlW`D<(dsmdOY z!lzLKm?k}(4p&;*p^=MBOk83OGVay~=06owl^!LR-PP=D`P;5^7QT#yD6T%2EVU%P znniyKN$v{joLakv-hW!4q?#tEyN9UX4AeWN%5ciepuz&FpojLYvthXt_isHlyYO#c z@oRZNh=%N4=Q{tDp1xVF6KsxpiCWpn1u6V+4s?Vn?pgt;e`fqbMt4+1@OUigCP00t z@Se8ea)bX}UkZxg*nUXXKB!=Ri=k}D`8a;a&!l4*A0?e~hE+N&t5|4Aj4`bYQZ0wc zziqud5!@=bnW>@sXC!pu(j#o{BwxgB(~Tdicq@U)a5(Tzuk}=5u4t$E8OmYzf&`V2XN|VhKJMr~gw2Rm^&QIS)D=zbf+XH2 zmD88<={~umfwKKFU^D92`g*glAsj&u(D$2MC5=N<=eHJ3iWDsaQO|@V6*4z?;maEM z`2XB)nd7^f!`-q@^rj8I|ILSB8z@&py72qfjo|O$Dn0Ak>khdnZ1$?p8;JJ^qLFbBBsuTw~*D>dUcD9tk4fv<313 zspX9WLL4LSfCN4qi@A$&$=GUw$2s@;j~4qUZMQXLn3 z(4Cvn+ONdsx|(TxiHJq88B*=R!pRR=nq9H%rSqDn+z_260xwK3gHv&Kzcam-um8ql z^sBtz!o`~on?Nm>wZrW;!Pd9fR@pHAotrVQ#;dYWe9WHdfUnpN{?a7|iETUgagEss zPdu^(cbS5)O%d3o)1$l8bqg=t9uNg0&t1rAi3(M1#?U63qrBo2`RmiF%aYAnHhn zNJ$0=t!_U7!#;z`8R2FZ3QH}M3TSf)?V2KB3_vqu`5-`$92^b+7gYjiN1AaT@RZ0| zoE~GDP479IAjtDD+`hB8uqxe|ETR->d8Z=2mCDi#2cav?qnOLdmsvDAGg^1t0f;K^ zu8%W@>m<8)3h%QDQUe(|Omhu6bqCldgkT3W3gwws9NIwt?=XLb1LP9bD1z?7&c`lr zX-2cgsN4t;Bs226FunnPL`%w6%0jOVtVz^Ji!N^f;hTY-xq|Gr>!VJhzL9^(aSl+M z;3x++^YvY=P`#VHB9rZwp6_^z5o{=b{)RzZR zXc7GiBbOOWu_?i-fqDVu#2}sYo?G;dwuV??__C)XI&w=TA z6$GZH5}<}n+-7Yt)W<3T-iuClf)zeXikdhH-`2#)7aU;ZYG*-4s2b>$vYx*(R}lqb zN-aSj1WV{+rM$V4aToAcP_$W=^(y{;*Rd%VYer^_A+H$KLnouuak_92lqvjrr5Dj| zQNqtT1};Pq0;gXBhP8C9kv#>8ill{WNtLttPeelvngU5aXEc6x7XU$B27J@fk17(E zn$z&@Evhrc8n3G!@c%OVb!?_=k8iBQV9lqgJR0`F`OZKxzuD&y76CTTgXi6gR%{Oo z!qiI(KVg^StDO>;&XO@@zvmCSHeM#O3`~EQ1DTqTotZjQ)rBYHCrxcM^sr_j4>;7~BkG)XLqzk$K`x{=RimCk6JE^^k3^I_C3sFFymOJE%BIKF5rEu|4)@ig}o@I5nBGc+%;9eA;JG-6k_ zUFoJkPKCu!i)W!PD{kbH9rrG`MW3Ggy?Vu#h4eS)CV9#kBv`GOi;dK-0zDtsE=mUZ zafHSc&~23JI3vEt8Dgt|(C74OU+y)Z^Ex#e-t~=-?s;LDh-u8Myw+OlH~F?J?r>LM zirCDrP9O})p}B?n^4SOV7~tysUM0KfVvwKEvj+V%GEZP3qB#P7fxg?7jJ;kGfc@@t@asMc+XdyWT>iHlL7mhI7{31qP3^;dQ9VG7 zHRkL@r=>?{Ym9eD4k$mLOPieKk!5_FgW(1UdLhF&yha7%w6#?nTRwfNEKC5?@S_{j zatPC}es!Dsqg__tmwun|`-t2qx!=62p8EPzRUPobo0F`07j=#bu$+J0B5Vl$EuxKu1G?))!$) z$IQ@cuF41xA@0z~9n$(_YABv0s2Q0E*>Tfs)dJ>}g{*dg!VO^YFx%4GWSwu`YdSiU z&q(ABjx-`Cpy~qX?eupG$av;6;5N;F%?DB%-p-)kziKmK6I^YI(Y-= zPD*N#rqXav@+jih|DA}MJWKZtV+2SXR=tqe*;Af=QnF(2RG>~@&H`ZAaY~j1fz{0$ z91*a0Tr*4|Z_2Br_VbKm548){O!)4t_}w=&xeME001hQz>4nTsjmye`x6MoAFrfi9zEHy4iT5VJR zG>KBz+~8piqXeP=s|rt#9>CMe=xXoklCY$-ewOa(cG1fe4(9*pe!+%p>%I7gvlh?*g4uuu>W|(Mi7gOmwKoP7MX_t#*kPpXaJTq@qv)sptw8l(szrYO^ zc34(pQ7sjfqKSL@bdg9*kVQDribK)T!A=_duR|#PP;gJj@ItzXX;-@+WrycpmiNkn zT~pbkbRPWlTF=eVru}<0K@0%kh^x-~h{rne%m^xsRx0g!_Ez28zMz4@yt&R2?GSft zEg>0>vfsF~1En#5F>#)G_hFNc`WU+ly9V3YM2TS)z_ERd&97FXeRSXVuWL@os|8Vq zx3ha+VDJ9zK7~D%=;+A@r%$d!C6k(T_bn>6`oXG9<-x2Rnt$r{X&0~>Dn3OMAIU?| ziJc&xJ8wFygm_lbM#@+-IWIYlCMs(*fJ)_UekrG35VO_x=O<`5cs9GAfb9NLerfue z06~=MgZdUUIagseE#A;-Tg~b<%=zQeLJ~W#S{m{WY5MD$4uM%z#P=T61t7J)U!do6 z!UN1N5)yQ}E?n|<^95C>0w~IHE-~EzQFWuc<-Z%|Y@s_d&z%&4G!+pZ@?fob2%HLN zfXEf?;E3cNBB4565iw3)>*`cj*Y+{G_#&ZgDy5uIl~oQ@7}**jj!f*P|CpCkD=?3$-*vwEJ?BU-K)OhJGL@EroGydAVn-M2x*IR`cajwk9ci@=J>Sa8Qi%|PMirJ6 z=r4OW0wce^1EJc(d&3R#RfMO`Cu9iE^c#x+nxPbVoi{;PY9x2YfJF5)ktxqhl1nZmXI&+AkALvr?m z)0i-h=oEh^!P9tsa(ml}YX2la3!JFZGCHA|7??L1;9~k5H|j%$={GRZ*r>r?L-=m; zZFt34uD;5OC0UMr+8N=4M#Ty^753gzeNk+co+07z96gsxSe-dR#QCWv*7{0sAOOzg z7J@^uU&zWQ_xD`L(0eHW1^m_za6E#mnahCB$72$4u8k$um1uAIFm5cggi+rUj8*}*TS52tRipD8>SIE1>>&Sce;FMu(rh+5pu zpsM>7sX9JSA3v;*9r<~Px98>ZVTx-~gdk}v*2Q1MiBvrHXd#y-HHk+*=3W^uBjV_> zb!{ECa2P*^OT)BC%f^X38|iNAG5KDQLP6CRAuDseDrxkj(>k^P`#nti=+0N$5hwIy z&e{go>(z?a0{~WTUL3)H@uHZC#NG}5j`M*_0Wy?a3qcVC(hXSQ9^Rhm@ArD zj}^7YO~Mhm+}!uYX5|!UuonQWKH)4PQclrpH#9`@J3SA255&tqil#IU1oY2g@BxUs8aj zG?$MXDk#s<27D^Ph&B&o6rE?QC_44ymc$uc>;zIG)t zVCU@G*Ph2Qs8)?pI@6s*d|=AD?GM$7`F5hrrv;pxrdHPf(4L8@a^3Gi2A=@AkqtDzSB-JzX*KXeqpt_!5 z+ck<+rVeYUG;?O5-TnDKET;GblK@rEr@#2OD3gkRtS0p^K`rB27qNaG6>0r0eiNA! z^cXnH&q&=d?sYhU>T5;|ooo!?eia;w)&17$OI$Sg!HCQS zsa9X9hItOvEGc1X`lbeZBvBDs|C+dGjMiVs!v0jNzBo#8dF2bbkYKRSaVVaS8JSf)MvPk%b(bhUsBt~Gkm-#%i z_HT0jYd7C91Q#lU6IA&5`K9T;;io6)?^van_p!9M!d3JqbjZ9LF4HI?gmt=XEo1T+ z32ASDC#%X@V%YypYZd89)95%b;oII;!3DLwCTD*1>U$+o)FT?%oqj=P>wXBcRQWe! z?m#iUbpvdqGag4j2@#&zOScZn??JU1fgWTZapMyfKp?QgbIi!C#xyyyePq2KteTXx zpkf^t6uU}>-(QT(R7pkH*lEcy!HTg%#d}N0A71uh{NWAw?b{OsTx;sD!cyt?A*H8a z|2S##A>u6~ZUi*GrC^wa+bR|(lrxeV%2R~-4c!e~GdEofM)*x@7Z^6wpsM!4;YC6~ z^#LdkOi^CKDa~f@OI>ylJ{52*9?;Af_#Pp9&8C&u1RjOk4T095`lucpcd|>7J?dTS zh>b^VzXj-t9Raa3{#P1H!#+87-n*E~#D5(_9Up_(zM<-Toj#n~?4utc$E`5P5m29< zb^=D0l3Szy2XIF0Y|%dA>%7Jim^sXy$A}oiUy-IVV3880n}62GL1v<%i##=b@nY>C z25-pK{cxKQFsSP(@oO_F#3R*)Pa$50TW-NUu2Vm@N9tVZFj@J$sR8c)EhOlQ3Jkfu z6^3_B^8Uj@C095-2&?U!h8vu$ojrFW-bun}L}SnJ`Hoj1l4N7TH|-;{`#ajSm(YgqYYL|8L;iFMUk+QosGU0eTyU?wckZ2n{){lsRqT<50s`=1;P<4@^{+)ekD>~m7EnWPq<#xy*_I~9*2hpRX`Zd2Z? zBG#Qy1hfH5M%E*tbs0hJaTD)uMgbh;>;tHi^Eqd5n4B%E8LU5LQko^JLnh_Myz?j| zKBEAIsShNsZ_(=Gve_no)B-t4V=$h6w9QHsfBBvVFDDjm8i*A_-{@X>Hht_MRiO7} zz!CgFaA$`drfm%&@OHeAL>&bkA$$9qS*DLq2|bJidPfn=qKXUJkWlNxp}6vrof1-x z^Z(&%2#I$yzin^bEaqgqp8Hbj7qo_I-bLm^FkbFAO3a%%&x^ggEs+zor*>o;LSZt( zMe9r)-48uQ0cH|6Y$ZHLpMdvPIzFk`7^ij_@{z z&J~CiLAAD_v7;TNVRU|HYh-Qs>beN*Er&geDP{! zK~w?Hy-Nt4Vzq88G-7^x*l3vZmgmjcqtB@Y^jV><8CMtKb=dAD z!Pu$svM%8L<|bzo1^$>OCL*XhwAt--;3MxD!& z0A zQjA~$&0H~7`k_%7q$mTdA z82hdGIGD!-A(2{@ZYAjb+fBT?JPrFskkb~|k4tdy#cV|xQPbC<2EGqWq?R@9gTco? zwI&DH>DzZc?u+2PxLgVZ%9SySg~nbt{u_XSBJve|sl6ni&Y|b^i7Q+j48Dyb4H`f( z=KIz;Uw!LhVHL{Mq4FLISD^t!IWPn41cu<(p0x@oEytjx&<)$d@08_lFXkCEjE<=7 z=S&9_H2xTL;%U<7YC<^vK5&21Y20xV#oV{Bi(V-Z?AryYVq2gG!6GCf=qFVfU7Vz9 zD#+$0#{N(3)M3#fe)CpLu%|l)ejS#z1zp21%)W_u`@~EwVF+5pvk6`$uz$(?#na1O zM1@Q&1&3P9mVvx^Q5oo9hKV)vx=f%-k_f5P+|H{7k$Bx z!eLRgggK**2@mKr-(Hlmu9l^Q)HrkQpUT%q=LT%oKTraeHT?K%upkjgf%Wa0SE|+s|cl+7LndE$YyKMEWhCp}0#^0?x_a<6J731dv|ak_gGj z^Ouy-DKSX7)feFtSkk;_y~PXS#^LT&O{x44eT0kQ-M;RQkEc7k;L03Pl@?ZpJO^jN z*b+M>54e=K0Jfaf%akoN#*0#-2Hhsr6>YvZFaJ=N<2FO2VRs(2ct{R455f+ou93yc z+C8p{he;_zN#JRW2{vj*x)=Dt$4=u0acb9EUJUni7KvhlT3E&BW6?J+o#n93^jcg9>Ud>)KOIl~0@1wj>g^)?AJ^mbfFveE}9xKi6)+vOfG|dI;8NzZ0 z3o`M`bw(x{*qqm|*7A^)$V({&ng?}u=v|?2!<9#{2w)CN*}k9v$3zO!av*l$8NDm& z9_tO{Vif`{J6bpfL_tC_syqEhHcPw??;L+J!l9XOEBbGn+V>BP+c_Arsi3^+n#n1o zk!aN?LA@{XFGX!Cv4(Y?^R+jaLn9*5{oPmLg~&7(x2p5XiCv74ke&TIm!~d6-xnh? zlhJAe!4*TE?*Ra{SFZ^6%nXlN7X~EI+9aX!dJ3Q8({S=;nCWGb7#d3xefZ5D=*p~; z0Hsf^jr0a-cOCS<^y#S6r@=pm3TItT;XTHrNJazlf$-ZJ1(U_g4(2&kUqRI#A=mV&FBt<4b9Ex!c?zG=+veyZ9lYl2Idnfmmq%)fFDJnJ6d5jL=nZ zV<1iBW+d6Gh&})y3lntjWcme0TQP)xIt3FRv8XkHc>-(#CZtg2`itHvmr(*1!w7%U zgJfvL4Y~tQgrWhScBvZi)bV%Dlo9iAG%05&30mMOA^dDW=udka80VjB{29G&%A#n% zkO%{N#$U-;RmACU>C!Kd8$jjlAV(pH@Izsm?o{XMFgW$5>Sj!nUNSO4YO7pAjLzk! zjLtUL*qT_`-UnH7=OGLX;N$I*5aiJ9k8bh3x8NH~(8UfbOg0*?KE^iIRxI0uZpdvs_t*4+98f1C z@>*9ZV*NKCNg3pWQAADbW$XB?WWH*MabK(7Inp32T0KR@aQILOJOsK5?KgprK$SIfNKWb!SW<)y427t4#sgrgU06Crm8eXx zjg18wqHVnJuU@k;=1nb2l;7oTtu})=GX)kNjr%L=kz2~5m3FLFRLi(a~wuob-62>%0DY=Pb?L?aOq~W^{+`dW=SR~r%%_;wHm2ZrR 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 >=2geuHRq`r3)Xc{oN#7NAnfpG^Ua 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⩔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 z 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

cAT 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�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

g10uPfn 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 DPHMni diff --git a/strace.spec b/strace.spec old mode 100755 new mode 100644 index 80c2797..c93e46b --- a/strace.spec +++ b/strace.spec @@ -1,15 +1,14 @@ -%define anolis_release .0.1 Summary: Tracks and displays system calls associated with a running process Name: strace -Version: 5.7 -Release: 3%{anolis_release}%{?dist} +Version: 5.13 +Release: 4%{?dist} # The test suite is GPLv2+, all the rest is LGPLv2.1+. License: LGPL-2.1+ and GPL-2.0+ Group: Development/Debuggers URL: https://strace.io/ Source: https://strace.io/files/%{version}/%{name}-%{version}.tar.xz -BuildRequires: libacl-devel time gcc gzip +BuildRequires: libacl-devel time gcc gzip make BuildRequires: pkgconfig(bluez) BuildRequires: elfutils-devel binutils-devel BuildRequires: libselinux-devel @@ -145,97 +144,119 @@ BuildRequires: libselinux-devel #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.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 +## v5.8~59 "types: skip field lines that start with comments" +#Patch118: 0118-types-skip-field-lines-that-start-with-comments.patch ## PID namespace translation support ## https://bugzilla.redhat.com/1035434 ## https://bugzilla.redhat.com/1725113 https://bugzilla.redhat.com/1790836 ## https://bugzilla.redhat.com/1804334 https://bugzilla.redhat.com/1807458 # v5.8~62 "print_fields.h: add PRINT_FIELD_LEN macro" -Patch119: 0119-print_fields.h-add-PRINT_FIELD_LEN-macro.patch -# v5.8~61 "Move ilog* functions from util.c to defs.h" -Patch120: 0120-Move-ilog-functions-from-util.c-to-defs.h.patch +#Patch119: 0119-print_fields.h-add-PRINT_FIELD_LEN-macro.patch +## v5.8~61 "Move ilog* functions from util.c to defs.h" +#Patch120: 0120-Move-ilog-functions-from-util.c-to-defs.h.patch ## v5.8~59 "types: skip field lines that start with comments" #Patch121: 0121-types-skip-field-lines-that-start-with-comments.patch -# v5.8~54 "tests/inject-nf.test: replace getpid with geteuid" -Patch122: 0122-tests-inject-nf.test-replace-getpid-with-geteuid.patch -# v5.8~18 "fcntl: use print_fields.h macros" -Patch123: 0123-fcntl-use-print_fields.h-macros.patch -# v5.8~17 "kcmp: fix KCMP_FILE decoding" -Patch124: 0124-kcmp-fix-KCMP_FILE-decoding.patch -# v5.8~15 "printsiginfo: fix printing of siginfo_t.si_pid and siginfo_t.si_uid" -Patch125: 0125-printsiginfo-fix-printing-of-siginfo_t.si_pid-and-si.patch -# v5.8~14 "Use PRINT_FIELD_UID instead of printuid where appropriate" -Patch126: 0126-Use-PRINT_FIELD_UID-instead-of-printuid-where-approp.patch -# v5.8~10 "Consistently print process ids as signed integers" -Patch127: 0127-Consistently-print-process-ids-as-signed-integers.patch -# v5.8~9 "Remove tcb parameter of read_int_from_file" -Patch128: 0128-Remove-tcb-parameter-of-read_int_from_file.patch -# v5.8~6 "Add "struct tcb *" parameters to various functions" -Patch129: 0129-Add-struct-tcb-parameters-to-various-functions.patch -# v5.8~53 "Modify %process class: trace syscalls associated with process lifecycle" -Patch130: 0130-Modify-process-class-trace-syscalls-associated-with-.patch -# v5.8~5 "Introduce SYS_FUNC(tkill)" -Patch131: 0131-Introduce-SYS_FUNC-tkill.patch -# v5.8~4 "tests: check decoding of tkill syscall" -Patch132: 0132-tests-check-decoding-of-tkill-syscall.patch -# v5.8~3 "tests: check decoding of tgkill syscall" -Patch133: 0133-tests-check-decoding-of-tgkill-syscall.patch -# v5.8-5-gdea0284 "PID namespace translation support" -Patch134: 0134-PID-namespace-translation-support.patch -# v5.8-6-g173257d "Use printpid in decoders" -Patch135: 0135-Use-printpid-in-decoders.patch -# v5.8-7-g18c2208 "Use get_proc_pid for /proc paths" -Patch136: 0136-Use-get_proc_pid-for-proc-paths.patch -# v5.8-8-g7ecee07 "Implement testing framework for pidns" -Patch137: 0137-Implement-testing-framework-for-pidns.patch -# v5.8-9-gf350ce0 "Add tests for PID namespace translation" -Patch138: 0138-Add-tests-for-PID-namespace-translation.patch - -# v5.12~55 "tests: add fchmod-y test" -Patch142: 0142-tests-add-fchmod-y-test.patch -# v5.12~54 "tests: introduce create_and_enter_subdir and leave_and_remove_subdir" -Patch143: 0143-tests-introduce-create_and_enter_subdir-and-leave_an.patch -# v5.8~36 "tests: check decoding of faccessat syscall in -P, -y, and -yy modes" -Patch144: 0144-tests-check-decoding-of-faccessat-syscall-in-P-y-and.patch -# v5.12~97 "xmalloc: introduce xasprintf" -Patch145: 0145-xmalloc-introduce-xasprintf.patch -# v5.12~96 "tests: use xasprintf instead of asprintf" -Patch146: 0146-tests-use-xasprintf-instead-of-asprintf.patch -# v5.12~156 "file_handle: print f_handle as a hexadecimal string" -Patch147: 0147-file_handle-print-f_handle-as-a-hexadecimal-string.patch -# v5.10~47 "tests: fix execve test with fresh linux kernels" -Patch148: 0148-tests-fix-execve-test-with-fresh-linux-kernels.patch -# v5.12~49 "Implement --secontext[=full] option to display SELinux contexts" -Patch149: 0149-Implement-secontext-full-option-to-display-SELinux-c.patch +## v5.8~54 "tests/inject-nf.test: replace getpid with geteuid" +#Patch122: 0122-tests-inject-nf.test-replace-getpid-with-geteuid.patch +## v5.8~18 "fcntl: use print_fields.h macros" +#Patch123: 0123-fcntl-use-print_fields.h-macros.patch +## v5.8~17 "kcmp: fix KCMP_FILE decoding" +#Patch124: 0124-kcmp-fix-KCMP_FILE-decoding.patch +## v5.8~15 "printsiginfo: fix printing of siginfo_t.si_pid and siginfo_t.si_uid" +#Patch125: 0125-printsiginfo-fix-printing-of-siginfo_t.si_pid-and-si.patch +## v5.8~14 "Use PRINT_FIELD_UID instead of printuid where appropriate" +#Patch126: 0126-Use-PRINT_FIELD_UID-instead-of-printuid-where-approp.patch +## v5.8~10 "Consistently print process ids as signed integers" +#Patch127: 0127-Consistently-print-process-ids-as-signed-integers.patch +## v5.8~9 "Remove tcb parameter of read_int_from_file" +#Patch128: 0128-Remove-tcb-parameter-of-read_int_from_file.patch +## v5.8~6 "Add "struct tcb *" parameters to various functions" +#Patch129: 0129-Add-struct-tcb-parameters-to-various-functions.patch +## v5.8~53 "Modify %process class: trace syscalls associated with process lifecycle" +#Patch130: 0130-Modify-process-class-trace-syscalls-associated-with-.patch +## v5.8~5 "Introduce SYS_FUNC(tkill)" +#Patch131: 0131-Introduce-SYS_FUNC-tkill.patch +## v5.8~4 "tests: check decoding of tkill syscall" +#Patch132: 0132-tests-check-decoding-of-tkill-syscall.patch +## v5.8~3 "tests: check decoding of tgkill syscall" +#Patch133: 0133-tests-check-decoding-of-tgkill-syscall.patch +## v5.8-5-gdea0284 "PID namespace translation support" +#Patch134: 0134-PID-namespace-translation-support.patch +## v5.8-6-g173257d "Use printpid in decoders" +#Patch135: 0135-Use-printpid-in-decoders.patch +## v5.8-7-g18c2208 "Use get_proc_pid for /proc paths" +#Patch136: 0136-Use-get_proc_pid-for-proc-paths.patch +## v5.8-8-g7ecee07 "Implement testing framework for pidns" +#Patch137: 0137-Implement-testing-framework-for-pidns.patch +## v5.8-9-gf350ce0 "Add tests for PID namespace translation" +#Patch138: 0138-Add-tests-for-PID-namespace-translation.patch + +## v5.12~55 "tests: add fchmod-y test" +#Patch142: 0142-tests-add-fchmod-y-test.patch +## v5.12~54 "tests: introduce create_and_enter_subdir and leave_and_remove_subdir" +#Patch143: 0143-tests-introduce-create_and_enter_subdir-and-leave_an.patch +## v5.8~36 "tests: check decoding of faccessat syscall in -P, -y, and -yy modes" +#Patch144: 0144-tests-check-decoding-of-faccessat-syscall-in-P-y-and.patch +## v5.12~97 "xmalloc: introduce xasprintf" +#Patch145: 0145-xmalloc-introduce-xasprintf.patch +## v5.12~96 "tests: use xasprintf instead of asprintf" +#Patch146: 0146-tests-use-xasprintf-instead-of-asprintf.patch +## v5.12~156 "file_handle: print f_handle as a hexadecimal string" +#Patch147: 0147-file_handle-print-f_handle-as-a-hexadecimal-string.patch +## v5.10~47 "tests: fix execve test with fresh linux kernels" +#Patch148: 0148-tests-fix-execve-test-with-fresh-linux-kernels.patch +## v5.12~49 "Implement --secontext[=full] option to display SELinux contexts" +#Patch149: 0149-Implement-secontext-full-option-to-display-SELinux-c.patch # v5.13-14-g9623154 "m4/mpers.m4: generate HAVE_*_SELINUX_RUNTIME config defines" Patch155: 0155-m4-mpers.m4-generate-HAVE_-_SELINUX_RUNTIME-config-d.patch -# v5.9~28 "Introduce GLIBC_PREREQ_GE and GLIBC_PREREQ_LT macros" -Patch156: 0156-Introduce-GLIBC_PREREQ_GE-and-GLIBC_PREREQ_LT-macros.patch -# v5.9~27 "tests/ipc_msg.c: disable TEST_MSGCTL_BOGUS_ADDR on glibc >= 2.32" -Patch157: 0157-tests-ipc_msg.c-disable-TEST_MSGCTL_BOGUS_ADDR-on-gl.patch -# v5.10~46 "tests: disable TEST_MSGCTL_BOGUS_ADDR in ipc_msg test on glibc >= 2.31" -Patch158: 0158-tests-disable-TEST_MSGCTL_BOGUS_ADDR-in-ipc_msg-test.patch -# v5.10~22 "tests: disable tests for invalid msgctl commands on glibc >= 2.32" -Patch159: 0159-tests-disable-tests-for-invalid-msgctl-commands-on-g.patch -# v5.9~11 "tests: disable shmctl IPC_STAT test with a bogus address on glibc >= 2.32" -Patch160: 0160-tests-disable-shmctl-IPC_STAT-test-with-a-bogus-addr.patch -# v5.9~10 "tests: disable tests for invalid shmctl commands on glibc >= 2.32" -Patch161: 0161-tests-disable-tests-for-invalid-shmctl-commands-on-g.patch -# v5.9~12 "tests: disable tests for invalid semctl commands on glibc >= 2.32" -Patch162: 0162-tests-disable-tests-for-invalid-semctl-commands-on-g.patch +## v5.9~28 "Introduce GLIBC_PREREQ_GE and GLIBC_PREREQ_LT macros" +#Patch156: 0156-Introduce-GLIBC_PREREQ_GE-and-GLIBC_PREREQ_LT-macros.patch +## v5.9~27 "tests/ipc_msg.c: disable TEST_MSGCTL_BOGUS_ADDR on glibc >= 2.32" +#Patch157: 0157-tests-ipc_msg.c-disable-TEST_MSGCTL_BOGUS_ADDR-on-gl.patch +## v5.10~46 "tests: disable TEST_MSGCTL_BOGUS_ADDR in ipc_msg test on glibc >= 2.31" +#Patch158: 0158-tests-disable-TEST_MSGCTL_BOGUS_ADDR-in-ipc_msg-test.patch +## v5.10~22 "tests: disable tests for invalid msgctl commands on glibc >= 2.32" +#Patch159: 0159-tests-disable-tests-for-invalid-msgctl-commands-on-g.patch +## v5.9~11 "tests: disable shmctl IPC_STAT test with a bogus address on glibc >= 2.32" +#Patch160: 0160-tests-disable-shmctl-IPC_STAT-test-with-a-bogus-addr.patch +## v5.9~10 "tests: disable tests for invalid shmctl commands on glibc >= 2.32" +#Patch161: 0161-tests-disable-tests-for-invalid-shmctl-commands-on-g.patch +## v5.9~12 "tests: disable tests for invalid semctl commands on glibc >= 2.32" +#Patch162: 0162-tests-disable-tests-for-invalid-semctl-commands-on-g.patch + +# v5.13-55-g6b2191f "filter_qualify: free allocated data on the error path exit of parse_poke_token" +Patch163: 0163-filter_qualify-free-allocated-data-on-the-error-path.patch +# v5.13-56-g80dc60c "macros: expand BIT macros, add MASK macros; add *_SAFE macros" +Patch164: 0164-macros-expand-BIT-macros-add-MASK-macros-add-_SAFE-m.patch +# v5.13-58-g94ae5c2 "trie: use BIT* and MASK* macros" +Patch165: 0165-trie-use-BIT-and-MASK-macros.patch +# v5.13-65-g41b753e "tee: rewrite num_params access in tee_fetch_buf_data" +Patch166: 0166-tee-rewrite-num_params-access-in-tee_fetch_buf_data.patch + +# v5.15~1 "print_ifindex: fix IFNAME_QUOTED_SZ definition" +Patch167: 0167-print_ifindex-fix-IFNAME_QUOTED_SZ-definition.patch + +# v5.15~18 "m4: fix st_SELINUX check" +Patch168: 0168-m4-fix-st_SELINUX-check.patch +# v5.16~31 "Implement displaying of expected context upon mismatch" +Patch169: 0169-Implement-displaying-of-expected-context-upon-mismat.patch +Patch170: 0170-tests-linkat-reset-errno-before-SELinux-context-mani.patch +Patch171: 0171-tests-secontext-add-secontext-field-getters.patch +Patch172: 0172-tests-linkat-provide-fallback-values-for-secontext-f.patch +Patch173: 0173-tests-secontext-eliminate-separate-secontext_format-.patch +Patch174: 0174-tests-linkat-reset-context-to-the-expected-one-if-a-.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 @@ -259,10 +280,6 @@ Patch2003: 2003-undef-ARRAY_SIZE.patch Patch2004: 2004-glibc-msgctl-semctl-shmctl-backport-workaround.patch -# Add by Anolis -Patch1000: 0001-strace-anolis-fix-nsyscalls-check-error.patch -# End - # We no longer need to build a separate strace32 binary, but we don't want # to break existing strace32 users' workflows. %define strace32_arches ppc64 s390x @@ -275,6 +292,12 @@ Provides: strace32 = %{evr} Obsoletes: strace32 < 4.24 %endif +# Fallback definitions for make_build/make_install macros +%{?!__make: %global __make %_bindir/make} +%{?!__install: %global __install %_bindir/install} +%{?!make_build: %global make_build %__make %{?_smp_mflags}} +%{?!make_install: %global make_install %__make install DESTDIR="%{?buildroot}" INSTALL="%__install -p"} + %description The strace program intercepts and records the system calls called and received by a running process. Strace can print a record of each @@ -337,48 +360,60 @@ received by a process. #%patch110 -p1 #%patch111 -p1 #%patch112 -p1 -%patch113 -p1 -%patch114 -p1 -%patch115 -p1 +#%patch113 -p1 +#%patch114 -p1 +#%patch115 -p1 #%patch116 -p1 #%patch117 -p1 -%patch118 -p1 -%patch119 -p1 -%patch120 -p1 +#%patch118 -p1 +#%patch119 -p1 +#%patch120 -p1 #%patch121 -p1 -%patch122 -p1 -%patch123 -p1 -%patch124 -p1 -%patch125 -p1 -%patch126 -p1 -%patch127 -p1 -%patch128 -p1 -%patch129 -p1 -%patch130 -p1 -%patch131 -p1 -%patch132 -p1 -%patch133 -p1 -%patch134 -p1 -%patch135 -p1 -%patch136 -p1 -%patch137 -p1 -%patch138 -p1 -%patch142 -p1 -%patch143 -p1 -%patch144 -p1 -%patch145 -p1 -%patch146 -p1 -%patch147 -p1 -%patch148 -p1 -%patch149 -p1 +#%patch122 -p1 +#%patch123 -p1 +#%patch124 -p1 +#%patch125 -p1 +#%patch126 -p1 +#%patch127 -p1 +#%patch128 -p1 +#%patch129 -p1 +#%patch130 -p1 +#%patch131 -p1 +#%patch132 -p1 +#%patch133 -p1 +#%patch134 -p1 +#%patch135 -p1 +#%patch136 -p1 +#%patch137 -p1 +#%patch138 -p1 +#%patch142 -p1 +#%patch143 -p1 +#%patch144 -p1 +#%patch145 -p1 +#%patch146 -p1 +#%patch147 -p1 +#%patch148 -p1 +#%patch149 -p1 %patch155 -p1 -%patch156 -p1 -%patch157 -p1 -%patch158 -p1 -%patch159 -p1 -%patch160 -p1 -%patch161 -p1 -%patch162 -p1 +#%patch156 -p1 +#%patch157 -p1 +#%patch158 -p1 +#%patch159 -p1 +#%patch160 -p1 +#%patch161 -p1 +#%patch162 -p1 +%patch163 -p1 +%patch164 -p1 +%patch165 -p1 +%patch166 -p1 +%patch167 -p1 +%patch168 -p1 +%patch169 -p1 +%patch170 -p1 +%patch171 -p1 +%patch172 -p1 +%patch173 -p1 +%patch174 -p1 #%patch1000 -p1 #%patch1001 -p1 @@ -393,7 +428,7 @@ chmod a+x tests/*.test echo -n %version-%release > .tarball-version echo -n 2020 > .year -echo -n 2020-04-30 > .strace.1.in.date +echo -n 2021-10-21 > doc/.strace.1.in.date %build @@ -413,18 +448,18 @@ CFLAGS=" $RPM_OPT_FLAGS $LDFLAGS " [ "x${CFLAGS#* -m64 }" = "x${CFLAGS}" ] || CFLAGS=$(echo "$CFLAGS" | sed 's/ -m64 / /g') export CFLAGS -CPPFLAGS=" -I%{_includedir} %{optflags} " +CPPFLAGS=" -isystem %{_includedir} %{optflags} " # Removing explicit -m64 as it breaks mpers [ "x${CPPFLAGS#* -m64 }" = "x${CPPFLAGS}" ] || CPPFLAGS=$(echo "$CPPFLAGS" | sed 's/ -m64 / /g') export CPPFLAGS CFLAGS_FOR_BUILD="$RPM_OPT_FLAGS"; export CFLAGS_FOR_BUILD %configure --enable-mpers=check --with-libdw --with-libiberty -make %{?_smp_mflags} +%make_build %install -make DESTDIR=%{buildroot} install +%make_install %ifarch %{strace32_arches} ln -s ./strace %{buildroot}%{_bindir}/strace32 @@ -447,10 +482,9 @@ chmod u+x tests/*.test tests-m32/*.test tests-mx32/*.test # We have to limit concurrent execution of tests as some time-sensitive tests # start to fail if the reported time is way too off from the expected one. -make -j2 -k check VERBOSE=1 V=1 TIMEOUT_DURATION=5400 +%make_build -k check VERBOSE=1 V=1 echo 'BEGIN OF TEST SUITE INFORMATION' -tail -n 99999 -- tests*/test-suite.log -tail -n 99999 -- tests*/ksysent.log ||: +tail -n 99999 -- tests*/test-suite.log tests*/ksysent.gen.log find tests* -type f -name '*.log' -print0 | xargs -r0 grep -H '^KERNEL BUG:' -- ||: echo 'END OF TEST SUITE INFORMATION' @@ -466,10 +500,19 @@ echo 'END OF TEST SUITE INFORMATION' %{_mandir}/man1/* %changelog -* Thu Jan 13 2022 Mahailiang - 5.7-3.0.1 -- Fix nsyscalls check error -- Sync from https://github.com/strace/strace (version 5.10) -- Cherry-pick [c599b79] +* Mon Feb 07 2022 Eugene Syromiatnikov - 5.13-4 +- Update tests-m32 and tests-mx32 with --secontext=mismatch option support + changes (#2046259). + +* Wed Jan 19 2022 Eugene Syromiatnikov - 5.13-3 +- Add --secontext=mismatch option support (#2038810). + +* Wed Jan 05 2022 Eugene Syromiatnikov - 5.13-2 +- Fix incorrect ifname printing buffer size (#2028158). + +* Wed Oct 20 2021 Eugene Syromiatnikov - 5.13-1 +- Rebase to v5.13; drop upstream patches on top of 5.7 (#2015917). +- Address some issues reported by covscan. * Mon Aug 09 2021 Eugene Syromiatnikov - 5.7-3 - Add SELnux context decoding support (#1946500). -- Gitee

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

v{ASBVG>i+G+kl$O;@NgQ>n!xYfq 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[<7y-7#xJwO^u+Do1*2Ea%zbjzePFDyWIow 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℘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ⅇ3{3I7+*{< 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