diff --git a/.devtoolset-10-strace.metadata b/.devtoolset-10-strace.metadata new file mode 100644 index 0000000..cce1af2 --- /dev/null +++ b/.devtoolset-10-strace.metadata @@ -0,0 +1 @@ +95c9d5aa664982d53ce1e5ab058d8fb73e200f0c SOURCES/strace-5.7.tar.xz diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..137831d --- /dev/null +++ b/.gitignore @@ -0,0 +1 @@ +SOURCES/strace-5.7.tar.xz diff --git a/SOURCES/0119-print_fields.h-add-PRINT_FIELD_LEN-macro.patch b/SOURCES/0119-print_fields.h-add-PRINT_FIELD_LEN-macro.patch new file mode 100644 index 0000000..c955bde --- /dev/null +++ b/SOURCES/0119-print_fields.h-add-PRINT_FIELD_LEN-macro.patch @@ -0,0 +1,155 @@ +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/SOURCES/0120-Move-ilog-functions-from-util.c-to-defs.h.patch b/SOURCES/0120-Move-ilog-functions-from-util.c-to-defs.h.patch new file mode 100644 index 0000000..8d70014 --- /dev/null +++ b/SOURCES/0120-Move-ilog-functions-from-util.c-to-defs.h.patch @@ -0,0 +1,157 @@ +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/SOURCES/0121-types-skip-field-lines-that-start-with-comments.patch b/SOURCES/0121-types-skip-field-lines-that-start-with-comments.patch new file mode 100644 index 0000000..38640c9 --- /dev/null +++ b/SOURCES/0121-types-skip-field-lines-that-start-with-comments.patch @@ -0,0 +1,30 @@ +From 05747ff8f8a3533e4db69eb359be9ed1ae920ebd Mon Sep 17 00:00:00 2001 +From: "Dmitry V. Levin" +Date: Tue, 16 Jun 2020 08:00:00 +0000 +Subject: [PATCH 121/138] 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(-) + +diff --git a/types/find_last_type_fields.awk b/types/find_last_type_fields.awk +index 4c0da0f..d0cae0d 100644 +--- a/types/find_last_type_fields.awk ++++ b/types/find_last_type_fields.awk +@@ -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 + } +-- +2.1.4 + diff --git a/SOURCES/0122-tests-inject-nf.test-replace-getpid-with-geteuid.patch b/SOURCES/0122-tests-inject-nf.test-replace-getpid-with-geteuid.patch new file mode 100644 index 0000000..1b15526 --- /dev/null +++ b/SOURCES/0122-tests-inject-nf.test-replace-getpid-with-geteuid.patch @@ -0,0 +1,235 @@ +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/SOURCES/0123-fcntl-use-print_fields.h-macros.patch b/SOURCES/0123-fcntl-use-print_fields.h-macros.patch new file mode 100644 index 0000000..9f4d96a --- /dev/null +++ b/SOURCES/0123-fcntl-use-print_fields.h-macros.patch @@ -0,0 +1,60 @@ +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/SOURCES/0124-kcmp-fix-KCMP_FILE-decoding.patch b/SOURCES/0124-kcmp-fix-KCMP_FILE-decoding.patch new file mode 100644 index 0000000..b15613f --- /dev/null +++ b/SOURCES/0124-kcmp-fix-KCMP_FILE-decoding.patch @@ -0,0 +1,28 @@ +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/SOURCES/0125-printsiginfo-fix-printing-of-siginfo_t.si_pid-and-si.patch b/SOURCES/0125-printsiginfo-fix-printing-of-siginfo_t.si_pid-and-si.patch new file mode 100644 index 0000000..6ec6f26 --- /dev/null +++ b/SOURCES/0125-printsiginfo-fix-printing-of-siginfo_t.si_pid-and-si.patch @@ -0,0 +1,518 @@ +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/SOURCES/0126-Use-PRINT_FIELD_UID-instead-of-printuid-where-approp.patch b/SOURCES/0126-Use-PRINT_FIELD_UID-instead-of-printuid-where-approp.patch new file mode 100644 index 0000000..16d23fd --- /dev/null +++ b/SOURCES/0126-Use-PRINT_FIELD_UID-instead-of-printuid-where-approp.patch @@ -0,0 +1,105 @@ +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/SOURCES/0127-Consistently-print-process-ids-as-signed-integers.patch b/SOURCES/0127-Consistently-print-process-ids-as-signed-integers.patch new file mode 100644 index 0000000..c93332f --- /dev/null +++ b/SOURCES/0127-Consistently-print-process-ids-as-signed-integers.patch @@ -0,0 +1,525 @@ +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/SOURCES/0128-Remove-tcb-parameter-of-read_int_from_file.patch b/SOURCES/0128-Remove-tcb-parameter-of-read_int_from_file.patch new file mode 100644 index 0000000..d2a21d3 --- /dev/null +++ b/SOURCES/0128-Remove-tcb-parameter-of-read_int_from_file.patch @@ -0,0 +1,56 @@ +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/SOURCES/0129-Add-struct-tcb-parameters-to-various-functions.patch b/SOURCES/0129-Add-struct-tcb-parameters-to-various-functions.patch new file mode 100644 index 0000000..64e70e3 --- /dev/null +++ b/SOURCES/0129-Add-struct-tcb-parameters-to-various-functions.patch @@ -0,0 +1,417 @@ +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/SOURCES/0130-Modify-process-class-trace-syscalls-associated-with-.patch b/SOURCES/0130-Modify-process-class-trace-syscalls-associated-with-.patch new file mode 100644 index 0000000..89f4358 --- /dev/null +++ b/SOURCES/0130-Modify-process-class-trace-syscalls-associated-with-.patch @@ -0,0 +1,1391 @@ +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/SOURCES/0131-Introduce-SYS_FUNC-tkill.patch b/SOURCES/0131-Introduce-SYS_FUNC-tkill.patch new file mode 100644 index 0000000..c62a050 --- /dev/null +++ b/SOURCES/0131-Introduce-SYS_FUNC-tkill.patch @@ -0,0 +1,415 @@ +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/SOURCES/0132-tests-check-decoding-of-tkill-syscall.patch b/SOURCES/0132-tests-check-decoding-of-tkill-syscall.patch new file mode 100644 index 0000000..0d9bb80 --- /dev/null +++ b/SOURCES/0132-tests-check-decoding-of-tkill-syscall.patch @@ -0,0 +1,683 @@ +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/SOURCES/0133-tests-check-decoding-of-tgkill-syscall.patch b/SOURCES/0133-tests-check-decoding-of-tgkill-syscall.patch new file mode 100644 index 0000000..70bae9e --- /dev/null +++ b/SOURCES/0133-tests-check-decoding-of-tgkill-syscall.patch @@ -0,0 +1,656 @@ +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/SOURCES/0134-PID-namespace-translation-support.patch b/SOURCES/0134-PID-namespace-translation-support.patch new file mode 100644 index 0000000..0938d16 --- /dev/null +++ b/SOURCES/0134-PID-namespace-translation-support.patch @@ -0,0 +1,1478 @@ +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/SOURCES/0135-Use-printpid-in-decoders.patch b/SOURCES/0135-Use-printpid-in-decoders.patch new file mode 100644 index 0000000..dd4291b --- /dev/null +++ b/SOURCES/0135-Use-printpid-in-decoders.patch @@ -0,0 +1,1212 @@ +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/SOURCES/0136-Use-get_proc_pid-for-proc-paths.patch b/SOURCES/0136-Use-get_proc_pid-for-proc-paths.patch new file mode 100644 index 0000000..de978f1 --- /dev/null +++ b/SOURCES/0136-Use-get_proc_pid-for-proc-paths.patch @@ -0,0 +1,93 @@ +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/SOURCES/0137-Implement-testing-framework-for-pidns.patch b/SOURCES/0137-Implement-testing-framework-for-pidns.patch new file mode 100644 index 0000000..b9b1317 --- /dev/null +++ b/SOURCES/0137-Implement-testing-framework-for-pidns.patch @@ -0,0 +1,1360 @@ +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/SOURCES/0138-Add-tests-for-PID-namespace-translation.patch b/SOURCES/0138-Add-tests-for-PID-namespace-translation.patch new file mode 100644 index 0000000..45ed9b0 --- /dev/null +++ b/SOURCES/0138-Add-tests-for-PID-namespace-translation.patch @@ -0,0 +1,20054 @@ +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/SOURCES/2000-strace-provide-O_TMPFILE-fallback-definition.patch b/SOURCES/2000-strace-provide-O_TMPFILE-fallback-definition.patch new file mode 100644 index 0000000..9be8803 --- /dev/null +++ b/SOURCES/2000-strace-provide-O_TMPFILE-fallback-definition.patch @@ -0,0 +1,19 @@ +Some buildroots provide version of kernel-headers package that do not yet +contains O_TMPFILE definition. Since (looks like) there were none discrepancies +in O_TMPFILE definition in RHEL, work that around by providing a fallback +definition of O_TMPFILE. +Index: strace-5.2/open.c +=================================================================== +--- strace-5.2.orig/open.c 2019-07-11 19:51:22.000000000 +0200 ++++ strace-5.2/open.c 2019-07-22 17:49:41.508766666 +0200 +@@ -32,6 +32,10 @@ + # endif + #endif + ++#ifndef O_TMPFILE ++# define O_TMPFILE (__O_TMPFILE | O_DIRECTORY) ++#endif ++ + #include "xlat/open_access_modes.h" + #include "xlat/open_mode_flags.h" + #include "xlat/open_resolve_flags.h" diff --git a/SOURCES/2001-limit-qual_fault-scope-on-aarch64.patch b/SOURCES/2001-limit-qual_fault-scope-on-aarch64.patch new file mode 100644 index 0000000..5538d20 --- /dev/null +++ b/SOURCES/2001-limit-qual_fault-scope-on-aarch64.patch @@ -0,0 +1,57 @@ +Index: strace-5.7/tests/qual_fault.test +=================================================================== +--- strace-5.7.orig/tests/qual_fault.test 2020-06-02 10:41:25.870177356 +0200 ++++ strace-5.7/tests/qual_fault.test 2020-06-02 10:48:33.284302800 +0200 +@@ -83,19 +83,34 @@ + done + } + +-for err in '' ENOSYS 22 einval; do ++case "$STRACE_ARCH" in ++ aarch64) ++ ERRS='EnoSys 22' ++ NUMBERS1='2' ++ NUMBERS2='3' ++ NUMBERS3='5' ++ ;; ++ *) ++ ERRS='ENOSYS 22 einval' ++ NUMBERS1='1 2 3 5 7 11' ++ NUMBERS2='1 2 3 5 7 11' ++ NUMBERS3='1 2 3 5 7 11' ++ ;; ++esac ++ ++for err in '' $(echo $ERRS); do + for fault in writev desc,51; do + check_fault_injection \ + writev $fault "$err" '' '' '' 1 -efault=chdir + check_fault_injection \ + writev $fault "$err" '' '' '' 1 -efault=chdir -efault=none +- for F in 1 2 3 5 7 11; do ++ for F in $(echo $NUMBERS1); do + check_fault_injection \ + writev $fault "$err" $F '' '' 1 + check_fault_injection \ + writev $fault "$err" $F '' + 1 + +- for L in 1 2 3 5 7 11; do ++ for L in $(echo $NUMBERS2); do + [ "$L" -ge "$F" ] || + continue + check_fault_injection \ +@@ -104,12 +119,12 @@ + writev $fault "$err" $F $L + 1 + done + +- for S in 1 2 3 5 7 11; do ++ for S in $(echo $NUMBERS2); do + check_fault_injection \ + writev $fault "$err" $F '' $S 1 + check_fault_injection \ + writev $fault "$err" $F '' $S 4 +- for L in 1 2 3 5 7 11; do ++ for L in $(echo $NUMBERS3); do + [ "$L" -ge "$F" ] || + continue + check_fault_injection \ diff --git a/SOURCES/2003-undef-ARRAY_SIZE.patch b/SOURCES/2003-undef-ARRAY_SIZE.patch new file mode 100644 index 0000000..e4e87bb --- /dev/null +++ b/SOURCES/2003-undef-ARRAY_SIZE.patch @@ -0,0 +1,17 @@ +Index: strace-5.7/unwind.c +=================================================================== +--- strace-5.7.orig/unwind.c 2018-12-10 01:00:00.000000000 +0100 ++++ strace-5.7/unwind.c 2020-06-02 11:13:42.777871147 +0200 +@@ -9,6 +9,12 @@ + #include "unwind.h" + + #ifdef USE_DEMANGLE ++/* ++ * demangle.h defines ARRAY_SIZE without proper guard, and its definition ++ * is "good enough" for us. ++ */ ++#undef ARRAY_SIZE ++ + # if defined HAVE_DEMANGLE_H + # include + # elif defined HAVE_LIBIBERTY_DEMANGLE_H diff --git a/SPECS/strace.spec b/SPECS/strace.spec new file mode 100644 index 0000000..d817412 --- /dev/null +++ b/SPECS/strace.spec @@ -0,0 +1,788 @@ +%{?scl:%{?scl_package:%scl_package strace}} + +Summary: Tracks and displays system calls associated with a running process +Name: %{?scl_prefix}strace +Version: 5.7 +Release: 3%{?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}/strace-%{version}.tar.xz + +%define alternatives_cmd %{!?scl:%{_sbindir}}%{?scl:%{_root_sbindir}}/alternatives +%define alternatives_cmdline %{alternatives_cmd}%{?scl: --altdir %{_sysconfdir}/alternatives --admindir %{_scl_root}/var/lib/alternatives} + +BuildRequires: libacl-devel, time +%{?scl:Requires:%scl_runtime} + +BuildRequires: gcc gzip + +# Install Bluetooth headers for AF_BLUETOOTH sockets decoding. +%if 0%{?fedora} >= 18 || 0%{?centos} >= 6 || 0%{?rhel} >= 6 || 0%{?suse_version} >= 1200 +BuildRequires: pkgconfig(bluez) +%endif + +BuildRequires: %{?scl_prefix}elfutils-devel, %{?scl_prefix}binutils-devel +# -ldw requires -lbz2 but devtoolset-10-elfutils-devel does not have +# such a Require +BuildRequires: bzip2-devel +%{?!buildroot:BuildRoot: %_tmppath/buildroot-%name-%version-%release} + +# OBS compatibility +%{?!buildroot:BuildRoot: %_tmppath/buildroot-%name-%version-%release} +%define maybe_use_defattr %{?suse_version:%%defattr(-,root,root)} + +## 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 +# 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 + +## RHEL7-only: headers on some builders do not provide O_TMPFILE +Patch2000: 2000-strace-provide-O_TMPFILE-fallback-definition.patch +## RHEL-only: aarch64 brew builders are extremely slow on qual_fault.test +Patch2001: 2001-limit-qual_fault-scope-on-aarch64.patch +## RHEL-only: avoid ARRAY_SIZE macro re-definition in libiberty.h +Patch2003: 2003-undef-ARRAY_SIZE.patch + + +%description +The strace program intercepts and records the system calls called and +received by a running process. Strace can print a record of each +system call, its arguments and its return value. Strace is useful for +diagnosing problems and debugging, as well as for instructional +purposes. + +Install strace if you need a tool to track the system calls made and +received by a process. + +%prep +%setup -q -n strace-%{version} + +%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 +%patch2000 -p1 +%patch2001 -p1 +%patch2003 -p1 + +echo -n %version-%release > .tarball-version +echo -n 2019 > .year +echo -n 2019-06-13 > .strace.1.in.date + +%build +echo 'BEGIN OF BUILD ENVIRONMENT INFORMATION' +uname -a |head -1 +libc="$(ldd /bin/sh |sed -n 's|^[^/]*\(/[^ ]*/libc\.so[^ ]*\).*|\1|p' |head -1)" +$libc |head -1 +file -L /bin/sh +gcc --version |head -1 +ld --version |head -1 +kver="$(printf '%%s\n%%s\n' '#include ' 'LINUX_VERSION_CODE' | gcc -E -P -)" +printf 'kernel-headers %%s.%%s.%%s\n' $(($kver/65536)) $(($kver/256%%256)) $(($kver%%256)) +echo 'END OF BUILD ENVIRONMENT INFORMATION' + +LDFLAGS="$RPM_LD_FLAGS -L%{_libdir} -L%{_libdir}/elfutils" +export LDLFAGS + +# -DHAVE_S390_COMPAT_REGS is needed due to lack of v3.10-rc1~201^2~11 +CFLAGS=" $RPM_OPT_FLAGS $LDFLAGS " +# Removing explicit -m64 as it breaks mpers +[ "x${CFLAGS#* -m64 }" = "x${CFLAGS}" ] || CFLAGS=$(echo "$CFLAGS" | sed 's/ -m64 / /g') +export CFLAGS + +CPPFLAGS=" -I%{_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 +# ac_cv_member_struct_perf_event_attr_context_switch=no is due to +# https://bugzilla.redhat.com/show_bug.cgi?id=1404539 +%configure --enable-mpers=check ac_cv_member_struct_perf_event_attr_context_switch=no +make %{?_smp_mflags} + +%install +make DESTDIR=%{buildroot} install + +# remove unpackaged files from the buildroot +rm -f %{buildroot}%{_bindir}/strace-graph + +# some say uncompressed changelog files are too big +for f in ChangeLog ChangeLog-CVS; do + gzip -9n < "$f" > "$f".gz & +done +wait + +%check +# This is needed since patch does not set x bit to the newly created files +chmod u+x tests/*.test tests-m32/*.test tests-mx32/*.test + +%{buildroot}%{_bindir}/strace -V + + +# Skip tests on s390x el6 kernel, test failures there are covered +# by the following issues: +# * https://bugzilla.redhat.com/show_bug.cgi?id=1220802#c6 +# * Absence of Linux commit v3.2-rc1~109^2~34 +uname_r="$(uname -r)" +if [ "x${uname_r#2.6.32}" != "x${uname_r}" ] && \ + [ "x${uname_r%s390x}" != "x${uname_r}" ] +then + echo "Skipping tests, kernel (${uname_r}) is too broken" +else + # 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 + echo 'BEGIN OF TEST SUITE INFORMATION' + 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' +fi + + +%files +%maybe_use_defattr +%doc CREDITS ChangeLog.gz ChangeLog-CVS.gz COPYING LGPL-2.1-or-later NEWS README +%{_bindir}/strace +%{_bindir}/strace-log-merge +%{_mandir}/man1/* + +%changelog +* Wed Sep 09 2020 Eugene Syromiatnikov - 5.7-3 +- Add PID namespace translation support (#1804334). + +* Wed Aug 26 2020 Eugene Syromiatnikov - 5.7-2 +- Explicitly add BuildRequires: bzip2-devel as -ldw needs -lbz2 (#1870580). + +* Tue Jul 28 2020 Eugene Syromiatnikov - 5.7-1 +- Rebase to v5.7; drop upstream patches on top of 5.1 (#1861328). + +* Mon Jan 27 2020 Eugene Syromiatnikov - 5.1-7 +- Do not depend on kernel headers for decoding (#1758201). + +* Mon Jan 27 2020 Eugene Syromiatnikov - 5.1-6 +- Fix expected alignment for IPC tests (#1795273): + 4377e3a1 "tests: fix expected output for some ipc tests", and + a75c7c4b "tests: fix -a argument in ipc_msgbuf-Xraw test". + +* Mon Jan 27 2020 Eugene Syromiatnikov - 5.1-5 +- Fix printing stack traces for early syscalls on process attach (#1790057): + 69b2c33a "unwind-libdw: fix initialization of libdwfl cache", + 35e080ae "syscall: do not capture stack trace while the tracee executes + strace code", and + 8e515c74 "tests: add strace-k-p test". +- Add commit v5.4~97 "xlat: use unsgined type for mount_flags fallback values" + +* Fri Aug 30 2019 Eugene Syromiatnikov - 5.1-4 +- Properly decode struct sockaddr_hci without hci_channel field. +- Include upstream patches that fix issues reported by covscan: + 91281fec "v4l2: avoid shifting left a signed number by 31 bit", + 522ad3a0 "syscall.c: avoid infinite loop in subcalls parsing", and + 9446038e "kvm: avoid bogus vcpu_info assignment in vcpu_register". + +* Thu Aug 29 2019 Eugene Syromiatnikov - 5.1-3 +- Build with Bluetooth headers. +- Resolves: #1746885 + +* Thu Aug 29 2019 Eugene Syromiatnikov - 5.1-2 +- Copy over changes in tests/ioctl_evdev-success.c (from cdd8206a + "tests: test evdev bitset decoding more thoroughly") + to tests-m32/ioctl_evdev-success.c and tests-mx32/ioctl_evdev-success.c +- Resolves: #1746478 + +* Mon Jul 22 2019 Eugene Syromiatnikov - 5.1-1 +- Rebase to v5.1; drop upstream patches on top of 4.24. +- Add upstream commits 7ada13f3 ("evdev: avoid bit vector decoding + on non-successful and 0 return codes"), 96194ed7 ("evdev: fix array size + calculation in decode_bitset_"), and cdd8206a ("tests: test evdev bitset + decoding more thoroughly") as separate patches. +- Resolves: #1666405. + +* Tue Jan 15 2019 Eugene Syromiatnikov - 4.24-5 +- Fix off-by-one errors in indexed xlat handling. +- Remove bogus indexed xlat warning. +- Resolves #1666405. + +* Wed Sep 12 2018 Eugene Syromiatnikov - 4.24-4 +- Add current version of the thread handling unfairness fix. +- Resolves #1610774. + +* Thu Aug 23 2018 Eugene Syromiatnikov - 4.24-3 +- Provide a fallback definition for the O_TMPFILE flag. +- Resolves #1609741. + +* Tue Aug 14 2018 Eugene Syromiatnikov - 4.24-2 +- Remove -DHAVE_S390_COMPAT_REGS=1 from CFLAGS. + +* Tue Aug 14 2018 Eugene Syromiatnikov - 4.24-1 +- Rebase to v4.24. + +* Mon Aug 06 2018 Eugene Syromiatnikov - 4.23-5 +- Provide open mode flags fallback definitions. +- Resolves #1609741. + +* Sun Aug 05 2018 Eugene Syromiatnikov - 4.23-4 +- Enable stack unwinding using DTS version of libelfutils. + +* Wed Jul 18 2018 Eugene Syromiatnikov - 4.23-3 +- Add SCL-specific modifications in order to build for DTS 8.0. +- Resolves #1602841. + +* Mon Jun 18 2018 Eugene Syromiatnikov - 4.23-2 +- Increase test timeout duration. + +* Thu Jun 14 2018 Dmitry V. Levin - 4.23-1 +- v4.22 -> v4.23. +- Enabled libdw backend for -k option (#1568647). + +* Thu Apr 05 2018 Dmitry V. Levin - 4.22-1 +- v4.21 -> v4.22. + +* Tue Feb 13 2018 Dmitry V. Levin - 4.21-1 +- v4.20 -> v4.21. + +* Mon Nov 13 2017 Dmitry V. Levin - 4.20-1 +- v4.19 -> v4.20. + +* Tue Sep 05 2017 Dmitry V. Levin - 4.19-1 +- v4.18 -> v4.19. + +* Wed Jul 05 2017 Dmitry V. Levin - 4.18-1 +- v4.17 -> v4.18. + +* Wed May 24 2017 Dmitry V. Levin - 4.17-1 +- v4.16 -> v4.17. + +* Tue Feb 14 2017 Dmitry V. Levin - 4.16-1 +- v4.15 -> v4.16. + +* Wed Dec 14 2016 Dmitry V. Levin - 4.15-1 +- v4.14-100-g622af42 -> v4.15. + +* Wed Nov 16 2016 Dmitry V. Levin - 4.14.0.100.622a-1 +- v4.14 -> v4.14-100-g622af42: + + implemented syscall fault injection. + +* Tue Oct 04 2016 Dmitry V. Levin - 4.14-1 +- v4.13 -> v4.14: + + added printing of the mode argument of open and openat syscalls + when O_TMPFILE flag is set (#1377846). + +* Tue Jul 26 2016 Dmitry V. Levin - 4.13-1 +- v4.12 -> v4.13. + +* Tue May 31 2016 Dmitry V. Levin - 4.12-1 +- v4.11-163-g972018f -> v4.12. + +* Fri Feb 05 2016 Fedora Release Engineering - 4.11.0.163.9720-2 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_24_Mass_Rebuild + +* Fri Jan 15 2016 Dmitry V. Levin - 4.11.0.163.9720-1 +- New upstream snapshot v4.11-163-g972018f: + + fixed decoding of syscalls unknown to the kernel on s390/s390x (#1298294). + +* Wed Dec 23 2015 Dmitry V. Levin - 4.11-2 +- Enabled experimental -k option on x86_64 (#1170296). + +* Mon Dec 21 2015 Dmitry V. Levin - 4.11-1 +- New upstream release: + + print nanoseconds along with seconds in stat family syscalls (#1251176). + +* Fri Jun 19 2015 Fedora Release Engineering - 4.10-3 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_23_Mass_Rebuild + +* Mon May 11 2015 Marcin Juszkiewicz - 4.10-2 +- Backport set of upstream patches to get it buildable on AArch64 + +* Fri Mar 06 2015 Dmitry V. Levin - 4.10-1 +- New upstream release: + + enhanced ioctl decoding (#902788). + +* Mon Nov 03 2014 Lubomir Rintel - 4.9-3 +- Regenerate ioctl entries with proper kernel headers + +* Mon Aug 18 2014 Fedora Release Engineering - 4.9-2 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_21_22_Mass_Rebuild + +* Fri Aug 15 2014 Dmitry V. Levin - 4.9-1 +- New upstream release: + + fixed build when and conflict (#993384); + + updated CLOCK_* constants (#1088455); + + enabled ppc64le support (#1122323); + + fixed attach to a process on ppc64le (#1129569). + +* Fri Jul 25 2014 Dan Horák - 4.8-5 +- update for ppc64 + +* Sun Jun 08 2014 Fedora Release Engineering - 4.8-4 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_21_Mass_Rebuild + +* Fri Dec 6 2013 Peter Robinson 4.8-3 +- Fix FTBFS + +* Sun Aug 04 2013 Fedora Release Engineering - 4.8-2 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_20_Mass_Rebuild + +* Mon Jun 03 2013 Dmitry V. Levin - 4.8-1 +- New upstream release: + + fixed ERESTARTNOINTR leaking to userspace on ancient kernels (#659382); + + fixed decoding of *xattr syscalls (#885233); + + fixed handling of files with 64-bit inode numbers by 32-bit strace (#912790); + + added aarch64 support (#969858). + +* Fri Feb 15 2013 Fedora Release Engineering - 4.7-3 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_19_Mass_Rebuild + +* Sat Jul 21 2012 Fedora Release Engineering - 4.7-2 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_18_Mass_Rebuild + +* Wed May 02 2012 Dmitry V. Levin 4.7-1 +- New upstream release. + + implemented proper handling of real SIGTRAPs (#162774). + +* Sat Jan 14 2012 Fedora Release Engineering - 4.6-2 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_17_Mass_Rebuild + +* Mon Mar 14 2011 Dmitry V. Levin - 4.6-1 +- New upstream release. + + fixed a corner case in waitpid handling (#663547). + +* Wed Feb 09 2011 Fedora Release Engineering - 4.5.20-2 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_15_Mass_Rebuild + +* Tue Apr 13 2010 Roland McGrath - 4.5.20-1 +- New upstream release, work mostly by Andreas Schwab and Dmitry V. Levin. + + fixed potential stack buffer overflow in select decoder (#556678); + + fixed FTBFS (#539044). + +* Wed Oct 21 2009 Roland McGrath - 4.5.19-1 +- New upstream release, work mostly by Dmitry V. Levin + + exit/kill strace with traced process exitcode/signal (#105371); + + fixed build on ARM EABI (#507576); + + fixed display of 32-bit argv array on 64-bit architectures (#519480); + + fixed display of 32-bit fcntl(F_SETLK) on 64-bit architectures (#471169); + + fixed several bugs in strings decoder, including potential heap + memory corruption (#470529, #478324, #511035). + +* Thu Aug 28 2008 Roland McGrath - 4.5.18-1 +- build fix for newer kernel headers (#457291) +- fix CLONE_VFORK handling (#455078) +- Support new Linux/PPC system call subpage_prot and PROT_SAO flag. +- In sigaction system call, display sa_flags value along with SIG_DFL/SIG_IGN. + +* Mon Jul 21 2008 Roland McGrath - 4.5.17-1 +- handle O_CLOEXEC, MSG_CMSG_CLOEXEC (#365781) +- fix biarch stat64 decoding (#222275) +- fix spurious "..." in printing of environment strings (#358241) +- improve prctl decoding (#364401) +- fix hang wait on exited child with exited child (#354261) +- fix biarch fork/vfork (-f) tracing (#447475) +- fix biarch printing of negative argument kill (#430585) +- fix biarch decoding of error return values (#447587) +- fix -f tracing of CLONE_VFORK (#455078) +- fix ia64 register clobberation in -f tracing (#453438) +- print SO_NODEFER, SA_RESETHAND instead of SA_NOMASK, SA_ONESHOT (#455821) +- fix futex argument decoding (#448628, #448629) + +* Fri Aug 3 2007 Roland McGrath - 4.5.16-1 +- fix multithread issues (#240962, #240961, #247907) +- fix spurious SIGSTOP on early interrupt (#240986) +- fix utime for biarch (#247185) +- fix -u error message (#247170) +- better futex syscall printing (##241467) +- fix argv/envp printing with small -s settings, and for biarch +- new syscalls: getcpu, eventfd, timerfd, signalfd, epoll_pwait, + move_pages, utimensat + +* Tue Jan 16 2007 Roland McGrath - 4.5.15-1 +- biarch fixes (#179740, #192193, #171626, #173050, #218433, #218043) +- fix -ff -o behavior (#204950, #218435, #193808, #219423) +- better quotactl printing (#118696) +- *at, inotify*, pselect6, ppoll and unshare syscalls (#178633, #191275) +- glibc-2.5 build fixes (#209856) +- memory corruption fixes (#200621 +- fix race in child setup under -f (#180293) +- show ipc key values in hex (#198179, #192182) +- disallow -c with -ff (#187847) +- Resolves: RHBZ #179740, RHBZ #192193, RHBZ #204950, RHBZ #218435 +- Resolves: RHBZ #193808, RHBZ #219423, RHBZ #171626, RHBZ #173050 +- Resolves: RHBZ #218433, RHBZ #218043, RHBZ #118696, RHBZ #178633 +- Resolves: RHBZ #191275, RHBZ #209856, RHBZ #200621, RHBZ #180293 +- Resolves: RHBZ #198179, RHBZ #198182, RHBZ #187847 + +* Mon Nov 20 2006 Jakub Jelinek - 4.5.14-4 +- Fix ia64 syscall decoding (#206768) +- Fix build with glibc-2.4.90-33 and up on all arches but ia64 +- Fix build against 2.6.18+ headers + +* Tue Aug 22 2006 Roland McGrath - 4.5.14-3 +- Fix bogus decoding of syscalls >= 300 (#201462, #202620). + +* Fri Jul 14 2006 Jesse Keating - 4.5.14-2 +- rebuild + +* Fri Feb 10 2006 Jesse Keating - 4.5.14-1.2 +- bump again for long double bug on ppc{,64} + +* Tue Feb 07 2006 Jesse Keating - 4.5.14-1.1 +- rebuilt for new gcc4.1 snapshot and glibc changes + +* Mon Jan 16 2006 Roland McGrath - 4.5.14-1 +- Fix biarch decoding of socket syscalls (#174354). +- Fix biarch -e support (#173986). +- Accept numeric syscalls in -e (#174798). +- Fix ipc syscall decoding (#164755). +- Improve msgrcv printing (#164757). +- Man page updates (#165375). +- Improve mount syscall printing (#165377). +- Correct printing of restarting syscalls (#165469). + +* Wed Aug 3 2005 Roland McGrath - 4.5.13-1 +- Fix setsockopt decoding on 64-bit (#162449). +- Fix typos in socket option name strings (#161578). +- Display more IPV6 socket options by name (#162450). +- Don't display inappropriate syscalls for -e trace=file (#159340). +- New selector type -e trace=desc for file-descriptor using calls (#159400). +- Fix 32-bit old_mmap syscall decoding on x86-64 (#162467, #164215). +- Fix errors detaching from multithreaded process on interrupt (#161919). +- Note 4.5.12 fix for crash handling bad signal numbers (#162739). + +* Wed Jun 8 2005 Roland McGrath - 4.5.12-1 +- Fix known syscall recognition for IA32 processes on x86-64 (#158934). +- Fix bad output for ptrace on x86-64 (#159787). +- Fix potential buffer overruns (#151570, #159196). +- Make some diagnostics more consistent (#159308). +- Update PowerPC system calls. +- Better printing for Linux aio system calls. +- Don't truncate statfs64 fields to 32 bits in output (#158243). +- Cosmetic code cleanups (#159688). + +* Tue Mar 22 2005 Roland McGrath - 4.5.11-1 +- Build tweaks. +- Note 4.5.10 select fix (#151570). + +* Mon Mar 14 2005 Roland McGrath - 4.5.10-1 +- Fix select handling on nonstandard fd_set sizes. +- Don't print errors for null file name pointers. +- Fix initial execve output with -i (#143365). + +* Fri Feb 4 2005 Roland McGrath - 4.5.9-2 +- update ia64 syscall list (#146245) +- fix x86_64 syscall argument extraction for 32-bit processes (#146093) +- fix -e signal=NAME parsing (#143362) +- fix x86_64 exit_group syscall handling +- improve socket ioctl printing (#138223) +- code cleanups (#143369, #143370) +- improve mount flags printing (#141932) +- support symbolic printing of x86_64 arch_prctl parameters (#142667) +- fix potential crash in getxattr printing + +* Tue Oct 19 2004 Roland McGrath - 4.5.8-1 +- fix multithreaded exit handling (#132150, #135254) +- fix ioctl name matching (#129808) +- print RTC_* ioctl structure contents (#58606) +- grok epoll_* syscalls (#134463) +- grok new RLIMIT_* values (#133594) +- print struct cmsghdr contents for sendmsg (#131689) +- fix clock_* and timer_* argument output (#131420) + +* Tue Aug 31 2004 Roland McGrath - 4.5.7-2 +- new upstream version, misc fixes and updates (#128091, #129166, #128391, #129378, #130965, #131177) + +* Mon Jul 12 2004 Roland McGrath 4.5.6-1 +- new upstream version, updates ioctl lists (#127398), fixes quotactl (#127393), more ioctl decoding (#126917) + +* Sun Jun 27 2004 Roland McGrath 4.5.5-1 +- new upstream version, fixes x86-64 biarch support (#126547) + +* Tue Jun 15 2004 Elliot Lee 4.5.4-2 +- rebuilt + +* Thu Jun 3 2004 Roland McGrath 4.5.4-0.FC1 +- rebuilt for FC1 update + +* Thu Jun 3 2004 Roland McGrath 4.5.4-1 +- new upstream version, more ioctls (#122257), minor fixes + +* Fri Apr 16 2004 Roland McGrath 4.5.3-1 +- new upstream version, mq_* calls (#120701), -p vs NPTL (#120462), more fixes (#118694, #120541, #118685) + +* Tue Mar 02 2004 Elliot Lee 4.5.2-1.1 +- rebuilt + +* Mon Mar 1 2004 Roland McGrath 4.5.2-1 +- new upstream version, sched_* calls (#116990), show core flag (#112117) + +* Fri Feb 13 2004 Elliot Lee +- rebuilt + +* Thu Nov 13 2003 Roland McGrath 4.5.1-1 +- new upstream version, more fixes (#108012, #105366, #105359, #105358) + +* Tue Sep 30 2003 Roland McGrath 4.5-3 +- revert bogus s390 fix + +* Thu Sep 25 2003 Roland McGrath 4.5-1.2.1AS +- rebuilt for 2.1AS erratum + +* Wed Sep 24 2003 Roland McGrath 4.5-2 +- rebuilt + +* Wed Sep 24 2003 Roland McGrath 4.5-1 +- new upstream version, more fixes (#101499, #104365) + +* Thu Jul 17 2003 Roland McGrath 4.4.99-2 +- rebuilt + +* Thu Jul 17 2003 Roland McGrath 4.4.99-1 +- new upstream version, groks more new system calls, PF_INET6 sockets + +* Tue Jun 10 2003 Roland McGrath 4.4.98-1 +- new upstream version, more fixes (#90754, #91085) + +* Wed Jun 04 2003 Elliot Lee +- rebuilt + +* Sun Mar 30 2003 Roland McGrath 4.4.96-1 +- new upstream version, handles yet more 2.5 syscalls, x86_64 & ia64 fixes + +* Mon Feb 24 2003 Elliot Lee 4.4.95-2 +- rebuilt + +* Mon Feb 24 2003 Roland McGrath 4.4.95-1 +- new upstream version, fixed getresuid/getresgid (#84959) + +* Wed Feb 19 2003 Roland McGrath 4.4.94-1 +- new upstream version, new option -E to set environment variables (#82392) + +* Wed Jan 22 2003 Tim Powers 4.4.93-2 +- rebuilt + +* Tue Jan 21 2003 Roland McGrath 4.4.93-1 +- new upstream version, fixes ppc and s390 bugs, adds missing ptrace requests + +* Fri Jan 10 2003 Roland McGrath 4.4.91-1 +- new upstream version, fixes -f on x86-64 + +* Fri Jan 10 2003 Roland McGrath 4.4.90-1 +- new upstream version, fixes all known bugs modulo ia64 and s390 issues + +* Fri Jan 03 2003 Florian La Roche 4.4-11 +- add further s390 patch from IBM + +* Wed Nov 27 2002 Tim Powers 4.4-10 +- remove unpackaged files from the buildroot + +* Mon Oct 07 2002 Phil Knirsch 4.4-9.1 +- Added latest s390(x) patch. + +* Fri Sep 06 2002 Karsten Hopp 4.4-9 +- preliminary x86_64 support with an ugly patch to help + debugging. Needs cleanup! + +* Mon Sep 2 2002 Jakub Jelinek 4.4-8 +- newer version of the clone fixing patch (Roland McGrath) +- aio syscalls for i386/ia64/ppc (Ben LaHaise) + +* Wed Aug 28 2002 Jakub Jelinek 4.4-7 +- fix strace -f (Roland McGrath, #68994) +- handle ?et_thread_area, SA_RESTORER (Ulrich Drepper) + +* Fri Jun 21 2002 Jakub Jelinek 4.4-6 +- handle futexes, *xattr, sendfile64, etc. (Ulrich Drepper) +- handle modify_ldt (#66894) + +* Thu May 23 2002 Tim Powers +- automated rebuild + +* Tue Apr 16 2002 Jakub Jelinek 4.4-4 +- fix for the last patch by Jeff Law (#62591) + +* Mon Mar 4 2002 Preston Brown 4.4-3 +- integrate patch from Jeff Law to eliminate hang tracing threads + +* Sat Feb 23 2002 Florian La Roche +- minor update from debian tar-ball + +* Wed Jan 02 2002 Florian La Roche +- update to 4.4 + +* Sun Jul 22 2001 Florian La Roche +- disable s390 patches, they are already included + +* Wed Jul 18 2001 Preston Brown 4.3-1 +- new upstream version. Seems to have integrated most new syscalls +- tracing threaded programs is now functional. + +* Mon Jun 11 2001 Than Ngo +- port s390 patches from IBM + +* Wed May 16 2001 Nalin Dahyabhai +- modify new syscall patch to allocate enough heap space in setgroups32() + +* Wed Feb 14 2001 Jakub Jelinek +- #include in addition to + +* Fri Jan 26 2001 Karsten Hopp +- clean up conflicting patches. This happened only + when building on S390 + +* Fri Jan 19 2001 Bill Nottingham +- update to CVS, reintegrate ia64 support + +* Fri Dec 8 2000 Bernhard Rosenkraenzer +- Get S/390 support into the normal package + +* Sat Nov 18 2000 Florian La Roche +- added S/390 patch from IBM, adapting it to not conflict with + IA64 patch + +* Sat Aug 19 2000 Jakub Jelinek +- doh, actually apply the 2.4 syscalls patch +- make it compile with 2.4.0-test7-pre4+ headers, add + getdents64 and fcntl64 + +* Thu Aug 3 2000 Jakub Jelinek +- add a bunch of new 2.4 syscalls (#14036) + +* Wed Jul 12 2000 Prospector +- automatic rebuild +- excludearch ia64 + +* Fri Jun 2 2000 Matt Wilson +- use buildinstall for FHS + +* Wed May 24 2000 Jakub Jelinek +- make things compile on sparc +- fix sigreturn on sparc + +* Fri Mar 31 2000 Bill Nottingham +- fix stat64 misdef (#10485) + +* Tue Mar 21 2000 Michael K. Johnson +- added ia64 patch + +* Thu Feb 03 2000 Cristian Gafton +- man pages are compressed +- version 4.2 (why are we keeping all these patches around?) + +* Sat Nov 27 1999 Jeff Johnson +- update to 4.1 (with sparc socketcall patch). + +* Fri Nov 12 1999 Jakub Jelinek +- fix socketcall on sparc. + +* Thu Sep 02 1999 Cristian Gafton +- fix KERN_SECURELVL compile problem + +* Tue Aug 31 1999 Cristian Gafton +- added alpha patch from HJLu to fix the osf_sigprocmask interpretation + +* Sat Jun 12 1999 Jeff Johnson +- update to 3.99.1. + +* Wed Jun 2 1999 Jeff Johnson +- add (the other :-) jj's sparc patch. + +* Wed May 26 1999 Jeff Johnson +- upgrade to 3.99 in order to +- add new 2.2.x open flags (#2955). +- add new 2.2.x syscalls (#2866). +- strace 3.1 patches carried along for now. + +* Sun May 16 1999 Jeff Johnson +- don't rely on (broken!) rpm %%patch (#2735) + +* Tue Apr 06 1999 Preston Brown +- strip binary + +* Sun Mar 21 1999 Cristian Gafton +- auto rebuild in the new build environment (release 16) + +* Tue Feb 9 1999 Jeff Johnson +- vfork est arrive! + +* Tue Feb 9 1999 Christopher Blizzard +- Add patch to follow clone() syscalls, too. + +* Sun Jan 17 1999 Jeff Johnson +- patch to build alpha/sparc with glibc 2.1. + +* Thu Dec 03 1998 Cristian Gafton +- patch to build on ARM + +* Wed Sep 30 1998 Jeff Johnson +- fix typo (printf, not tprintf). + +* Sat Sep 19 1998 Jeff Johnson +- fix compile problem on sparc. + +* Tue Aug 18 1998 Cristian Gafton +- buildroot + +* Mon Jul 20 1998 Cristian Gafton +- added the umoven patch from James Youngman +- fixed build problems on newer glibc releases + +* Mon Jun 08 1998 Prospector System +- translations modified for de, fr, tr