import gcc-toolset-10-strace-5.7-2.el8

c8 imports/c8/gcc-toolset-10-strace-5.7-2.el8
CentOS Sources 4 years ago committed by MSVSphere Packaging Team
commit 23a00aa96f

@ -0,0 +1 @@
95c9d5aa664982d53ce1e5ab058d8fb73e200f0c SOURCES/strace-5.7.tar.xz

1
.gitignore vendored

@ -0,0 +1 @@
SOURCES/strace-5.7.tar.xz

@ -0,0 +1,155 @@
From 8806a21b612d76c8732d0df2ebaf52b62166ce51 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?=C3=81kos=20Uzonyi?= <uzonyi.akos@gmail.com>
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

@ -0,0 +1,157 @@
From c9e41cd3485fa1a65dc6206c5b210b4be4c5597c Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?=C3=81kos=20Uzonyi?= <uzonyi.akos@gmail.com>
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

@ -0,0 +1,30 @@
From 05747ff8f8a3533e4db69eb359be9ed1ae920ebd Mon Sep 17 00:00:00 2001
From: "Dmitry V. Levin" <ldv@altlinux.org>
Date: Tue, 16 Jun 2020 08:00:00 +0000
Subject: [PATCH 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

@ -0,0 +1,235 @@
From c5be5bb949988c262012e7f4763b1d658c1769b9 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?=C3=81kos=20Uzonyi?= <uzonyi.akos@gmail.com>
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 <unistd.h>.
*/
-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 <unistd.h>.
*/
-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 <unistd.h>.
*/
-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"

@ -0,0 +1,60 @@
From eba856eb0246ce2a2ba99d68611da1af7814080e Mon Sep 17 00:00:00 2001
From: "Dmitry V. Levin" <ldv@altlinux.org>
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

@ -0,0 +1,28 @@
From 86923d3a0a01c520ea25d22587143ad6b8dab18b Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?=C3=81kos=20Uzonyi?= <uzonyi.akos@gmail.com>
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

@ -0,0 +1,518 @@
From 56a29d0e192b119c101146e2197246f51661b6b5 Mon Sep 17 00:00:00 2001
From: "Dmitry V. Levin" <ldv@altlinux.org>
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}",

@ -0,0 +1,105 @@
From 64d04198d3c64756ae8a51646b6eac3dff419cb6 Mon Sep 17 00:00:00 2001
From: "Dmitry V. Levin" <ldv@altlinux.org>
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

@ -0,0 +1,525 @@
From edf6f95bd19f5ce7ac0ef62f923cd17fb6052f51 Mon Sep 17 00:00:00 2001
From: "Dmitry V. Levin" <ldv@altlinux.org>
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,

@ -0,0 +1,56 @@
From 924f71a4296be54e109784dfdb487b732bfc9bbf Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?=C3=81kos=20Uzonyi?= <uzonyi.akos@gmail.com>
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

@ -0,0 +1,417 @@
From 09ca090db1a67eaf590372ae85a94ba8b41223c2 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?=C3=81kos=20Uzonyi?= <uzonyi.akos@gmail.com>
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

@ -0,0 +1,415 @@
From 98cb4de5002be3b81c45489200bcab0ae323123d Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?=C3=81kos=20Uzonyi?= <uzonyi.akos@gmail.com>
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

@ -0,0 +1,683 @@
From 24119509205a17c71de10e913cfc38dc52aa6563 Mon Sep 17 00:00:00 2001
From: "Dmitry V. Levin" <ldv@altlinux.org>
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 <ldv@altlinux.org>
+ * All rights reserved.
+ *
+ * SPDX-License-Identifier: GPL-2.0-or-later
+ */
+
+#include "tests.h"
+#include "scno.h"
+
+#ifdef __NR_tkill
+
+# include <signal.h>
+# include <stdio.h>
+# include <unistd.h>
+
+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 <ldv@altlinux.org>
+ * All rights reserved.
+ *
+ * SPDX-License-Identifier: GPL-2.0-or-later
+ */
+
+#include "tests.h"
+#include "scno.h"
+
+#ifdef __NR_tkill
+
+# include <signal.h>
+# include <stdio.h>
+# include <unistd.h>
+
+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 <ldv@altlinux.org>
+ * All rights reserved.
+ *
+ * SPDX-License-Identifier: GPL-2.0-or-later
+ */
+
+#include "tests.h"
+#include "scno.h"
+
+#ifdef __NR_tkill
+
+# include <signal.h>
+# include <stdio.h>
+# include <unistd.h>
+
+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) $^ $@

@ -0,0 +1,656 @@
From 9d4d64f6fdfcae908aec455888e92a69c9c81c64 Mon Sep 17 00:00:00 2001
From: "Dmitry V. Levin" <ldv@altlinux.org>
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 <ldv@altlinux.org>
+ * All rights reserved.
+ *
+ * SPDX-License-Identifier: GPL-2.0-or-later
+ */
+
+#include "tests.h"
+#include "scno.h"
+
+#ifdef __NR_tgkill
+
+# include <signal.h>
+# include <stdio.h>
+# include <unistd.h>
+
+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 <ldv@altlinux.org>
+ * All rights reserved.
+ *
+ * SPDX-License-Identifier: GPL-2.0-or-later
+ */
+
+#include "tests.h"
+#include "scno.h"
+
+#ifdef __NR_tgkill
+
+# include <signal.h>
+# include <stdio.h>
+# include <unistd.h>
+
+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 <ldv@altlinux.org>
+ * All rights reserved.
+ *
+ * SPDX-License-Identifier: GPL-2.0-or-later
+ */
+
+#include "tests.h"
+#include "scno.h"
+
+#ifdef __NR_tgkill
+
+# include <signal.h>
+# include <stdio.h>
+# include <unistd.h>
+
+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) $^ $@

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

@ -0,0 +1,93 @@
From bba566504901b2c07885ecf325829875a96381a7 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?=C3=81kos=20Uzonyi?= <uzonyi.akos@gmail.com>
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

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

@ -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'
+ NUMBERS2='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 \

@ -0,0 +1,17 @@
Index: strace-5.7/unwind.c
===================================================================
--- strace-5.7.orig/unwind.c 2018-12-10 01:00:00.000000000 +0100
+++ strace-5.7/unwind.c 2020-06-02 11:13:42.777871147 +0200
@@ -9,6 +9,12 @@
#include "unwind.h"
#ifdef USE_DEMANGLE
+/*
+ * demangle.h defines ARRAY_SIZE without proper guard, and its definition
+ * is "good enough" for us.
+ */
+#undef ARRAY_SIZE
+
# if defined HAVE_DEMANGLE_H
# include <demangle.h>
# elif defined HAVE_LIBIBERTY_DEMANGLE_H

@ -0,0 +1,731 @@
%define __python /opt/rh/gcc-toolset-9/root/usr/bin/python3
%{?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: 2%{?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} >= 8 || 0%{?rhel} >= 8 || 0%{?suse_version} >= 1200
BuildRequires: pkgconfig(bluez)
%endif
BuildRequires: %{?scl_prefix}elfutils-devel, %{?scl_prefix}binutils-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
## 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
%patch2001 -p1
%patch2003 -p1
chmod a+x tests/*.test
echo -n %version-%release > .tarball-version
echo -n 2020 > .year
echo -n 2020-06-02 > .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.h>' '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
%configure --enable-mpers=check --with-libdw
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
%{buildroot}%{_bindir}/strace -V
make -j2 -k check VERBOSE=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'
%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
* Mon Nov 09 2020 Eugene Syromiatnikov <esyr@redhat.com> - 5.7-2
- Add PID namespace translation support (#1790836).
* Tue Jun 02 2020 Eugene Syromiatnikov <esyr@redhat.com> - 5.7-1
- Rebase to v5.7; drop upstream patches on top of 5.1 (#1817210).
* Mon Jan 27 2020 Eugene Syromiatnikov <esyr@redhat.com> - 5.1-6
- Fix expected alignment for IPC tests (#1794490):
4377e3a1 "tests: fix expected output for some ipc tests", and
a75c7c4b "tests: fix -a argument in ipc_msgbuf-Xraw test".
* Thu Jan 23 2020 Eugene Syromiatnikov <esyr@redhat.com> - 5.1-5
- Fix printing stack traces for early syscalls on process attach (#1790054):
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".
- Properly decode struct sockaddr_hci without hci_channel field.
* Fri Jan 03 2020 Eugene Syromiatnikov <esyr@redhat.com> - 5.1-4
- Pull upstream fix for ioctl evdev bitset decoding, fix the tests (#1747213).
- Include upstream patches that fix issues reported by covscan (#1747530):
91281fec "v4l2: avoid shifting left a signed number by 31 bit",
522ad3a0 "syscall.c: avoid infinite loop in subcalls parsing",
9446038e "kvm: avoid bogus vcpu_info assignment in vcpu_register", and
2b64854e "xlat: use unsgined type for mount_flags fallback values".
* Fri Jun 14 2019 Eugene Syromiatnikov <esyr@redhat.com> - 5.1-3
- Use SPDX abbreviations for licenses.
- Add library directories to existing LDFLAGS and not override them.
* Thu Jun 13 2019 Eugene Syromiatnikov <esyr@redhat.com> - 5.1-2
- Add SCL macros (#1685491).
* Wed May 22 2019 Dmitry V. Levin <ldv@altlinux.org> - 5.1-1
- v5.0 -> v5.1.
* Tue Mar 19 2019 Dmitry V. Levin <ldv@altlinux.org> - 5.0-1
- v4.26 -> v5.0 (resolves: #478419, #526740, #851457, #1609318,
#1610774, #1662936, #1676045).
* Wed Dec 26 2018 Dmitry V. Levin <ldv@altlinux.org> - 4.26-1
- v4.25 -> v4.26.
* Tue Oct 30 2018 Dmitry V. Levin <ldv@altlinux.org> - 4.25-1
- v4.24 -> v4.25.
* Tue Aug 14 2018 Dmitry V. Levin <ldv@altlinux.org> - 4.24-1
- v4.23 -> v4.24.
* Thu Jun 14 2018 Dmitry V. Levin <ldv@altlinux.org> - 4.23-1
- v4.22 -> v4.23.
- Enabled libdw backend for -k option (#1568647).
* Thu Apr 05 2018 Dmitry V. Levin <ldv@altlinux.org> - 4.22-1
- v4.21 -> v4.22.
* Tue Feb 13 2018 Dmitry V. Levin <ldv@altlinux.org> - 4.21-1
- v4.20 -> v4.21.
* Mon Nov 13 2017 Dmitry V. Levin <ldv@altlinux.org> - 4.20-1
- v4.19 -> v4.20.
* Tue Sep 05 2017 Dmitry V. Levin <ldv@altlinux.org> - 4.19-1
- v4.18 -> v4.19.
* Wed Jul 05 2017 Dmitry V. Levin <ldv@altlinux.org> - 4.18-1
- v4.17 -> v4.18.
* Wed May 24 2017 Dmitry V. Levin <ldv@altlinux.org> - 4.17-1
- v4.16 -> v4.17.
* Tue Feb 14 2017 Dmitry V. Levin <ldv@altlinux.org> - 4.16-1
- v4.15 -> v4.16.
* Wed Dec 14 2016 Dmitry V. Levin <ldv@altlinux.org> - 4.15-1
- v4.14-100-g622af42 -> v4.15.
* Wed Nov 16 2016 Dmitry V. Levin <ldv@altlinux.org> - 4.14.0.100.622a-1
- v4.14 -> v4.14-100-g622af42:
+ implemented syscall fault injection.
* Tue Oct 04 2016 Dmitry V. Levin <ldv@altlinux.org> - 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 <ldv@altlinux.org> - 4.13-1
- v4.12 -> v4.13.
* Tue May 31 2016 Dmitry V. Levin <ldv@altlinux.org> - 4.12-1
- v4.11-163-g972018f -> v4.12.
* Fri Feb 05 2016 Fedora Release Engineering <releng@fedoraproject.org> - 4.11.0.163.9720-2
- Rebuilt for https://fedoraproject.org/wiki/Fedora_24_Mass_Rebuild
* Fri Jan 15 2016 Dmitry V. Levin <ldv@altlinux.org> - 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 <ldv@altlinux.org> - 4.11-2
- Enabled experimental -k option on x86_64 (#1170296).
* Mon Dec 21 2015 Dmitry V. Levin <ldv@altlinux.org> - 4.11-1
- New upstream release:
+ print nanoseconds along with seconds in stat family syscalls (#1251176).
* Fri Jun 19 2015 Fedora Release Engineering <rel-eng@lists.fedoraproject.org> - 4.10-3
- Rebuilt for https://fedoraproject.org/wiki/Fedora_23_Mass_Rebuild
* Mon May 11 2015 Marcin Juszkiewicz <mjuszkiewicz@redhat.com> - 4.10-2
- Backport set of upstream patches to get it buildable on AArch64
* Fri Mar 06 2015 Dmitry V. Levin <ldv@altlinux.org> - 4.10-1
- New upstream release:
+ enhanced ioctl decoding (#902788).
* Mon Nov 03 2014 Lubomir Rintel <lkundrak@v3.sk> - 4.9-3
- Regenerate ioctl entries with proper kernel headers
* Mon Aug 18 2014 Fedora Release Engineering <rel-eng@lists.fedoraproject.org> - 4.9-2
- Rebuilt for https://fedoraproject.org/wiki/Fedora_21_22_Mass_Rebuild
* Fri Aug 15 2014 Dmitry V. Levin <ldv@altlinux.org> - 4.9-1
- New upstream release:
+ fixed build when <sys/ptrace.h> and <linux/ptrace.h> 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 <dan[at]danny.cz> - 4.8-5
- update for ppc64
* Sun Jun 08 2014 Fedora Release Engineering <rel-eng@lists.fedoraproject.org> - 4.8-4
- Rebuilt for https://fedoraproject.org/wiki/Fedora_21_Mass_Rebuild
* Fri Dec 6 2013 Peter Robinson <pbrobinson@fedoraproject.org> 4.8-3
- Fix FTBFS
* Sun Aug 04 2013 Fedora Release Engineering <rel-eng@lists.fedoraproject.org> - 4.8-2
- Rebuilt for https://fedoraproject.org/wiki/Fedora_20_Mass_Rebuild
* Mon Jun 03 2013 Dmitry V. Levin <ldv@altlinux.org> - 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 <rel-eng@lists.fedoraproject.org> - 4.7-3
- Rebuilt for https://fedoraproject.org/wiki/Fedora_19_Mass_Rebuild
* Sat Jul 21 2012 Fedora Release Engineering <rel-eng@lists.fedoraproject.org> - 4.7-2
- Rebuilt for https://fedoraproject.org/wiki/Fedora_18_Mass_Rebuild
* Wed May 02 2012 Dmitry V. Levin <ldv@altlinux.org> 4.7-1
- New upstream release.
+ implemented proper handling of real SIGTRAPs (#162774).
* Sat Jan 14 2012 Fedora Release Engineering <rel-eng@lists.fedoraproject.org> - 4.6-2
- Rebuilt for https://fedoraproject.org/wiki/Fedora_17_Mass_Rebuild
* Mon Mar 14 2011 Dmitry V. Levin <ldv@altlinux.org> - 4.6-1
- New upstream release.
+ fixed a corner case in waitpid handling (#663547).
* Wed Feb 09 2011 Fedora Release Engineering <rel-eng@lists.fedoraproject.org> - 4.5.20-2
- Rebuilt for https://fedoraproject.org/wiki/Fedora_15_Mass_Rebuild
* Tue Apr 13 2010 Roland McGrath <roland@redhat.com> - 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 <roland@redhat.com> - 4.5.19-1
- New upstream release, work mostly by Dmitry V. Levin <ldv@altlinux.org>
+ 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 <roland@redhat.com> - 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 <roland@redhat.com> - 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 <roland@redhat.com> - 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 <roland@redhat.com> - 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 <jakub@redhat.com> - 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 <roland@redhat.com> - 4.5.14-3
- Fix bogus decoding of syscalls >= 300 (#201462, #202620).
* Fri Jul 14 2006 Jesse Keating <jkeating@redhat.com> - 4.5.14-2
- rebuild
* Fri Feb 10 2006 Jesse Keating <jkeating@redhat.com> - 4.5.14-1.2
- bump again for long double bug on ppc{,64}
* Tue Feb 07 2006 Jesse Keating <jkeating@redhat.com> - 4.5.14-1.1
- rebuilt for new gcc4.1 snapshot and glibc changes
* Mon Jan 16 2006 Roland McGrath <roland@redhat.com> - 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 <roland@redhat.com> - 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 <roland@redhat.com> - 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 <roland@redhat.com> - 4.5.11-1
- Build tweaks.
- Note 4.5.10 select fix (#151570).
* Mon Mar 14 2005 Roland McGrath <roland@redhat.com> - 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 <roland@redhat.com> - 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 <roland@redhat.com> - 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 <roland@redhat.com> - 4.5.7-2
- new upstream version, misc fixes and updates (#128091, #129166, #128391, #129378, #130965, #131177)
* Mon Jul 12 2004 Roland McGrath <roland@redhat.com> 4.5.6-1
- new upstream version, updates ioctl lists (#127398), fixes quotactl (#127393), more ioctl decoding (#126917)
* Sun Jun 27 2004 Roland McGrath <roland@redhat.com> 4.5.5-1
- new upstream version, fixes x86-64 biarch support (#126547)
* Tue Jun 15 2004 Elliot Lee <sopwith@redhat.com> 4.5.4-2
- rebuilt
* Thu Jun 3 2004 Roland McGrath <roland@redhat.com> 4.5.4-0.FC1
- rebuilt for FC1 update
* Thu Jun 3 2004 Roland McGrath <roland@redhat.com> 4.5.4-1
- new upstream version, more ioctls (#122257), minor fixes
* Fri Apr 16 2004 Roland McGrath <roland@redhat.com> 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 <sopwith@redhat.com> 4.5.2-1.1
- rebuilt
* Mon Mar 1 2004 Roland McGrath <roland@redhat.com> 4.5.2-1
- new upstream version, sched_* calls (#116990), show core flag (#112117)
* Fri Feb 13 2004 Elliot Lee <sopwith@redhat.com>
- rebuilt
* Thu Nov 13 2003 Roland McGrath <roland@redhat.com> 4.5.1-1
- new upstream version, more fixes (#108012, #105366, #105359, #105358)
* Tue Sep 30 2003 Roland McGrath <roland@redhat.com> 4.5-3
- revert bogus s390 fix
* Thu Sep 25 2003 Roland McGrath <roland@redhat.com> 4.5-1.2.1AS
- rebuilt for 2.1AS erratum
* Wed Sep 24 2003 Roland McGrath <roland@redhat.com> 4.5-2
- rebuilt
* Wed Sep 24 2003 Roland McGrath <roland@redhat.com> 4.5-1
- new upstream version, more fixes (#101499, #104365)
* Thu Jul 17 2003 Roland McGrath <roland@redhat.com> 4.4.99-2
- rebuilt
* Thu Jul 17 2003 Roland McGrath <roland@redhat.com> 4.4.99-1
- new upstream version, groks more new system calls, PF_INET6 sockets
* Tue Jun 10 2003 Roland McGrath <roland@redhat.com> 4.4.98-1
- new upstream version, more fixes (#90754, #91085)
* Wed Jun 04 2003 Elliot Lee <sopwith@redhat.com>
- rebuilt
* Sun Mar 30 2003 Roland McGrath <roland@redhat.com> 4.4.96-1
- new upstream version, handles yet more 2.5 syscalls, x86_64 & ia64 fixes
* Mon Feb 24 2003 Elliot Lee <sopwith@redhat.com> 4.4.95-2
- rebuilt
* Mon Feb 24 2003 Roland McGrath <roland@redhat.com> 4.4.95-1
- new upstream version, fixed getresuid/getresgid (#84959)
* Wed Feb 19 2003 Roland McGrath <roland@redhat.com> 4.4.94-1
- new upstream version, new option -E to set environment variables (#82392)
* Wed Jan 22 2003 Tim Powers <timp@redhat.com> 4.4.93-2
- rebuilt
* Tue Jan 21 2003 Roland McGrath <roland@redhat.com> 4.4.93-1
- new upstream version, fixes ppc and s390 bugs, adds missing ptrace requests
* Fri Jan 10 2003 Roland McGrath <roland@redhat.com> 4.4.91-1
- new upstream version, fixes -f on x86-64
* Fri Jan 10 2003 Roland McGrath <roland@redhat.com> 4.4.90-1
- new upstream version, fixes all known bugs modulo ia64 and s390 issues
* Fri Jan 03 2003 Florian La Roche <Florian.LaRoche@redhat.de> 4.4-11
- add further s390 patch from IBM
* Wed Nov 27 2002 Tim Powers <timp@redhat.com> 4.4-10
- remove unpackaged files from the buildroot
* Mon Oct 07 2002 Phil Knirsch <pknirsch@redhat.com> 4.4-9.1
- Added latest s390(x) patch.
* Fri Sep 06 2002 Karsten Hopp <karsten@redhat.de> 4.4-9
- preliminary x86_64 support with an ugly patch to help
debugging. Needs cleanup!
* Mon Sep 2 2002 Jakub Jelinek <jakub@redhat.com> 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 <jakub@redhat.com> 4.4-7
- fix strace -f (Roland McGrath, #68994)
- handle ?et_thread_area, SA_RESTORER (Ulrich Drepper)
* Fri Jun 21 2002 Jakub Jelinek <jakub@redhat.com> 4.4-6
- handle futexes, *xattr, sendfile64, etc. (Ulrich Drepper)
- handle modify_ldt (#66894)
* Thu May 23 2002 Tim Powers <timp@redhat.com>
- automated rebuild
* Tue Apr 16 2002 Jakub Jelinek <jakub@redhat.com> 4.4-4
- fix for the last patch by Jeff Law (#62591)
* Mon Mar 4 2002 Preston Brown <pbrown@redhat.com> 4.4-3
- integrate patch from Jeff Law to eliminate hang tracing threads
* Sat Feb 23 2002 Florian La Roche <Florian.LaRoche@redhat.de>
- minor update from debian tar-ball
* Wed Jan 02 2002 Florian La Roche <Florian.LaRoche@redhat.de>
- update to 4.4
* Sun Jul 22 2001 Florian La Roche <Florian.LaRoche@redhat.de>
- disable s390 patches, they are already included
* Wed Jul 18 2001 Preston Brown <pbrown@redhat.com> 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 <than@redhat.com>
- port s390 patches from IBM
* Wed May 16 2001 Nalin Dahyabhai <nalin@redhat.com>
- modify new syscall patch to allocate enough heap space in setgroups32()
* Wed Feb 14 2001 Jakub Jelinek <jakub@redhat.com>
- #include <time.h> in addition to <sys/time.h>
* Fri Jan 26 2001 Karsten Hopp <karsten@redhat.com>
- clean up conflicting patches. This happened only
when building on S390
* Fri Jan 19 2001 Bill Nottingham <notting@redhat.com>
- update to CVS, reintegrate ia64 support
* Fri Dec 8 2000 Bernhard Rosenkraenzer <bero@redhat.com>
- Get S/390 support into the normal package
* Sat Nov 18 2000 Florian La Roche <Florian.LaRoche@redhat.de>
- added S/390 patch from IBM, adapting it to not conflict with
IA64 patch
* Sat Aug 19 2000 Jakub Jelinek <jakub@redhat.com>
- 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 <jakub@redhat.com>
- add a bunch of new 2.4 syscalls (#14036)
* Wed Jul 12 2000 Prospector <bugzilla@redhat.com>
- automatic rebuild
- excludearch ia64
* Fri Jun 2 2000 Matt Wilson <msw@redhat.com>
- use buildinstall for FHS
* Wed May 24 2000 Jakub Jelinek <jakub@redhat.com>
- make things compile on sparc
- fix sigreturn on sparc
* Fri Mar 31 2000 Bill Nottingham <notting@redhat.com>
- fix stat64 misdef (#10485)
* Tue Mar 21 2000 Michael K. Johnson <johnsonm@redhat.com>
- added ia64 patch
* Thu Feb 03 2000 Cristian Gafton <gafton@redhat.com>
- man pages are compressed
- version 4.2 (why are we keeping all these patches around?)
* Sat Nov 27 1999 Jeff Johnson <jbj@redhat.com>
- update to 4.1 (with sparc socketcall patch).
* Fri Nov 12 1999 Jakub Jelinek <jakub@redhat.com>
- fix socketcall on sparc.
* Thu Sep 02 1999 Cristian Gafton <gafton@redhat.com>
- fix KERN_SECURELVL compile problem
* Tue Aug 31 1999 Cristian Gafton <gafton@redhat.com>
- added alpha patch from HJLu to fix the osf_sigprocmask interpretation
* Sat Jun 12 1999 Jeff Johnson <jbj@redhat.com>
- update to 3.99.1.
* Wed Jun 2 1999 Jeff Johnson <jbj@redhat.com>
- add (the other :-) jj's sparc patch.
* Wed May 26 1999 Jeff Johnson <jbj@redhat.com>
- 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 <jbj@redhat.com>
- don't rely on (broken!) rpm %%patch (#2735)
* Tue Apr 06 1999 Preston Brown <pbrown@redhat.com>
- strip binary
* Sun Mar 21 1999 Cristian Gafton <gafton@redhat.com>
- auto rebuild in the new build environment (release 16)
* Tue Feb 9 1999 Jeff Johnson <jbj@redhat.com>
- vfork est arrive!
* Tue Feb 9 1999 Christopher Blizzard <blizzard@redhat.com>
- Add patch to follow clone() syscalls, too.
* Sun Jan 17 1999 Jeff Johnson <jbj@redhat.com>
- patch to build alpha/sparc with glibc 2.1.
* Thu Dec 03 1998 Cristian Gafton <gafton@redhat.com>
- patch to build on ARM
* Wed Sep 30 1998 Jeff Johnson <jbj@redhat.com>
- fix typo (printf, not tprintf).
* Sat Sep 19 1998 Jeff Johnson <jbj@redhat.com>
- fix compile problem on sparc.
* Tue Aug 18 1998 Cristian Gafton <gafton@redhat.com>
- buildroot
* Mon Jul 20 1998 Cristian Gafton <gafton@redhat.com>
- added the umoven patch from James Youngman <jay@gnu.org>
- fixed build problems on newer glibc releases
* Mon Jun 08 1998 Prospector System <bugs@redhat.com>
- translations modified for de, fr, tr
Loading…
Cancel
Save