From 06a1b98de3699e8a54fb6bb25a659cca8f93d5f2 Mon Sep 17 00:00:00 2001 From: Eugene Syromiatnikov Date: Fri, 3 Jan 2025 16:27:59 +0100 Subject: [PATCH] Rebase to strace 6.12 - Remove 0183-syscall-do-not-use-uninitialized-parts-of-struct-ptr.patch (v6.12~35 "syscall: do not use uninitialized parts of struct ptrace_syscall_info") - Remove 0184-startup_tcb-add-a-comment.patch (v6.12~34 "startup_tcb: add a comment") - Remove 0185-tests-add-another-test-of-restart_syscall-decoding.patch (v6.12~33 "tests: add another test of restart_syscall decoding") - Remove 0186-tests-workaround-net-yy-inet-for-new-kernels.patch (v6.9~27 "tests: workaround net-yy-inet* for new kernels") - Remove 0187-tests-avoid-linkat-secontext_mismatch-failures-on-se.patch (v6.11~4 "tests: avoid linkat--secontext_mismatch failures on setfilecon errors") - Remove 0188-linux-s390-get_scno.c-use-NT_S390_SYSTEM_CALL-if-gpr.patch (v6.12~31 "linux/s390/get_scno.c: use NT_S390_SYSTEM_CALL if gprs[2] is clobbered") - Remove 0189-tests-move-k_setsockopt-definition-into-a-separate-f.patch (v6.12~30 "tests: move k_setsockopt definition into a separate") - Remove 0190-tests-sockopt-timestamp.c-use-k_getsockopt-and-k_set.patch (v6.12~29 "tests/sockopt-timestamp.c: use k_getsockopt and k_setsockopt") - Remove 0193-tests-do-not-rely-on-creat-syscall-failing-with-ETXT.patch (v6.12~36 "tests: do not rely on creat syscall failing with ETXTBSY") * .gitignore (/strace-6.7.tar.xz): Remove. (/strace-6.12.tar.xz): New record. * 0183-syscall-do-not-use-uninitialized-parts-of-struct-ptr.patch: Remove. * 0184-startup_tcb-add-a-comment.patch: Likewise. * 0185-tests-add-another-test-of-restart_syscall-decoding.patch: Likewise. * 0186-tests-workaround-net-yy-inet-for-new-kernels.patch: Likewise. * 0187-tests-avoid-linkat-secontext_mismatch-failures-on-se.patch: Likewise. * 0188-linux-s390-get_scno.c-use-NT_S390_SYSTEM_CALL-if-gpr.patch: Likewise. * 0189-tests-move-k_setsockopt-definition-into-a-separate-f.patch: Likewise. * 0190-tests-sockopt-timestamp.c-use-k_getsockopt-and-k_set.patch: Likewise. * 0193-tests-do-not-rely-on-creat-syscall-failing-with-ETXT.patch: Likewise. * sources (strace-6.7.tar.xz): Replace with... (strace-6.12.tar.xz): ...this version. * strace.spec (Version): Bump to 6.12. (Release): Reset to 1. (Patch183, Patch184, Patch185, Patch186, Patch187, Patch188, Patch189, Patch190, Patch193): Remove. (%prep): Do not apply them. (%changelog): New record about 6.12-1. Resolves: RHEL-62412 Signed-off-by: Eugene Syromiatnikov --- .gitignore | 2 +- ...se-uninitialized-parts-of-struct-ptr.patch | 102 --- 0184-startup_tcb-add-a-comment.patch | 37 - ...her-test-of-restart_syscall-decoding.patch | 129 ---- ...rkaround-net-yy-inet-for-new-kernels.patch | 108 --- ...at-secontext_mismatch-failures-on-se.patch | 530 ------------- ...cno.c-use-NT_S390_SYSTEM_CALL-if-gpr.patch | 76 -- ...sockopt-definition-into-a-separate-f.patch | 698 ------------------ ...mestamp.c-use-k_getsockopt-and-k_set.patch | 60 -- ...y-on-creat-syscall-failing-with-ETXT.patch | 178 ----- sources | 2 +- strace.spec | 49 +- 12 files changed, 7 insertions(+), 1964 deletions(-) delete mode 100644 0183-syscall-do-not-use-uninitialized-parts-of-struct-ptr.patch delete mode 100644 0184-startup_tcb-add-a-comment.patch delete mode 100644 0185-tests-add-another-test-of-restart_syscall-decoding.patch delete mode 100644 0186-tests-workaround-net-yy-inet-for-new-kernels.patch delete mode 100644 0187-tests-avoid-linkat-secontext_mismatch-failures-on-se.patch delete mode 100644 0188-linux-s390-get_scno.c-use-NT_S390_SYSTEM_CALL-if-gpr.patch delete mode 100644 0189-tests-move-k_setsockopt-definition-into-a-separate-f.patch delete mode 100644 0190-tests-sockopt-timestamp.c-use-k_getsockopt-and-k_set.patch delete mode 100644 0193-tests-do-not-rely-on-creat-syscall-failing-with-ETXT.patch diff --git a/.gitignore b/.gitignore index 75f990f..6a161c9 100644 --- a/.gitignore +++ b/.gitignore @@ -1 +1 @@ -/strace-6.7.tar.xz +/strace-6.12.tar.xz diff --git a/0183-syscall-do-not-use-uninitialized-parts-of-struct-ptr.patch b/0183-syscall-do-not-use-uninitialized-parts-of-struct-ptr.patch deleted file mode 100644 index d38d55a..0000000 --- a/0183-syscall-do-not-use-uninitialized-parts-of-struct-ptr.patch +++ /dev/null @@ -1,102 +0,0 @@ -From c7e0ea6d712eb214dafe7e9eae57661d9a427ea7 Mon Sep 17 00:00:00 2001 -From: "Dmitry V. Levin" -Date: Mon, 28 Oct 2024 08:00:00 +0000 -Subject: [PATCH 183/185] syscall: do not use uninitialized parts of struct - ptrace_syscall_info - -* src/syscall.c (ptrace_syscall_info_is_entry, -ptrace_syscall_info_is_exit): New functions. -(get_scno): Replace ptrace_syscall_info_is_valid() with -ptrace_syscall_info_is_entry(). -(get_error): Replace ptrace_syscall_info_is_valid() with -ptrace_syscall_info_is_exit(). -(get_syscall_regs): Fall back to get_regs() if strace_get_syscall_info() -succeeded but couldn't obtain the necessary data. - -Resolves: https://github.com/strace/strace/issues/322 ---- - src/syscall.c | 40 +++++++++++++++++++++++++++++++++++----- - 1 file changed, 35 insertions(+), 5 deletions(-) - -diff --git a/src/syscall.c b/src/syscall.c -index a6692721a..1f4d86dc1 100644 ---- a/src/syscall.c -+++ b/src/syscall.c -@@ -1082,6 +1082,21 @@ ptrace_syscall_info_is_valid(void) - ptrace_sci.op <= PTRACE_SYSCALL_INFO_SECCOMP; - } - -+static bool -+ptrace_syscall_info_is_entry(void) -+{ -+ return ptrace_get_syscall_info_supported && -+ (ptrace_sci.op == PTRACE_SYSCALL_INFO_ENTRY || -+ ptrace_sci.op == PTRACE_SYSCALL_INFO_SECCOMP); -+} -+ -+static bool -+ptrace_syscall_info_is_exit(void) -+{ -+ return ptrace_get_syscall_info_supported && -+ ptrace_sci.op == PTRACE_SYSCALL_INFO_EXIT; -+} -+ - #define XLAT_MACROS_ONLY - #include "xlat/nt_descriptor_types.h" - #undef XLAT_MACROS_ONLY -@@ -1376,8 +1391,23 @@ get_syscall_regs(struct tcb *tcp) - if (get_regs_error != -1) - return get_regs_error; - -- if (ptrace_get_syscall_info_supported) -- return strace_get_syscall_info(tcp) ? 0 : get_regs_error; -+ if (ptrace_get_syscall_info_supported) { -+ if (!strace_get_syscall_info(tcp)) -+ return get_regs_error; -+ -+ if ((entering(tcp) && ptrace_syscall_info_is_entry()) || -+ (exiting(tcp) && ptrace_syscall_info_is_exit())) -+ return 0; -+ -+ /* -+ * PTRACE_GET_SYSCALL_INFO succeeded but didn't help, -+ * falling back to get_regs(). -+ * -+ * This can happen when get_syscall_regs() is called -+ * from startup_tcb() via get_scno(). -+ */ -+ debug_func_msg("ptrace_sci.op = %d", ptrace_sci.op); -+ } - - return get_regs(tcp); - } -@@ -1408,7 +1438,7 @@ get_scno(struct tcb *tcp) - if (get_syscall_regs(tcp) < 0) - return -1; - -- if (ptrace_syscall_info_is_valid()) { -+ if (ptrace_syscall_info_is_entry()) { - /* Apply arch-specific workarounds. */ - int rc = arch_check_scno(tcp); - if (rc != 1) -@@ -1456,7 +1486,7 @@ get_scno(struct tcb *tcp) - static int - get_syscall_args(struct tcb *tcp) - { -- if (ptrace_syscall_info_is_valid()) { -+ if (ptrace_syscall_info_is_entry()) { - const unsigned int n = - MIN(ARRAY_SIZE(tcp->u_arg), - ARRAY_SIZE(ptrace_sci.entry.args)); -@@ -1507,7 +1537,7 @@ get_syscall_result(struct tcb *tcp) - static void - get_error(struct tcb *tcp, const bool check_errno) - { -- if (ptrace_syscall_info_is_valid()) { -+ if (ptrace_syscall_info_is_exit()) { - if (ptrace_sci.exit.is_error) { - tcp->u_rval = -1; - tcp->u_error = -ptrace_sci.exit.rval; --- -2.13.6 - diff --git a/0184-startup_tcb-add-a-comment.patch b/0184-startup_tcb-add-a-comment.patch deleted file mode 100644 index 39e7757..0000000 --- a/0184-startup_tcb-add-a-comment.patch +++ /dev/null @@ -1,37 +0,0 @@ -From 2048c136ba6edc4282dbc976c499e038d5b60c03 Mon Sep 17 00:00:00 2001 -From: "Dmitry V. Levin" -Date: Mon, 28 Oct 2024 08:00:00 +0000 -Subject: [PATCH 184/185] startup_tcb: add a comment - -* src/strace.c (startup_tcb): Add a comment explaining why it is safe -to call get_scno(). ---- - src/strace.c | 12 ++++++++++-- - 1 file changed, 10 insertions(+), 2 deletions(-) - -diff --git a/src/strace.c b/src/strace.c -index 45ab48c43..1a9d53bc8 100644 ---- a/src/strace.c -+++ b/src/strace.c -@@ -3549,8 +3549,16 @@ startup_tcb(struct tcb *tcp) - } - } - -- if ((tcp->flags & TCB_GRABBED) && (get_scno(tcp) == 1)) -- tcp->s_prev_ent = tcp->s_ent; -+ if (tcp->flags & TCB_GRABBED) { -+ /* -+ * There is no guarantee the state of the tracee is such that -+ * would allow get_scno() to obtain meaningful information. -+ * However, if the tracee is not in a syscall, then the garbage -+ * obtained by get_scno() is not going to be used. -+ */ -+ if (get_scno(tcp) == 1) -+ tcp->s_prev_ent = tcp->s_ent; -+ } - - if (cflag) { - tcp->atime = tcp->stime; --- -2.13.6 - diff --git a/0185-tests-add-another-test-of-restart_syscall-decoding.patch b/0185-tests-add-another-test-of-restart_syscall-decoding.patch deleted file mode 100644 index c6252ae..0000000 --- a/0185-tests-add-another-test-of-restart_syscall-decoding.patch +++ /dev/null @@ -1,129 +0,0 @@ -From 3bf08cbb388a89014252bdfe5143324bdaa4dc46 Mon Sep 17 00:00:00 2001 -From: "Dmitry V. Levin" -Date: Mon, 28 Oct 2024 08:00:00 +0000 -Subject: [PATCH 185/185] tests: add another test of restart_syscall decoding - -* tests/restart_syscall-p.test: New test. -* tests/restart_syscall-p.expected: New file. -* tests/Makefile.am (DECODER_TESTS): Add restart_syscall-p.test. -(check_DATA): Add restart_syscall-p.expected. ---- - tests/Makefile.am | 2 ++ - tests/restart_syscall-p.expected | 2 ++ - tests/restart_syscall-p.test | 20 ++++++++++++++++++++ - 3 files changed, 24 insertions(+) - create mode 100644 tests/restart_syscall-p.expected - create mode 100755 tests/restart_syscall-p.test - -Index: strace-6.7/tests/Makefile.am -=================================================================== ---- strace-6.7.orig/tests/Makefile.am 2024-10-29 13:05:29.486223478 +0100 -+++ strace-6.7/tests/Makefile.am 2024-10-29 13:58:46.485209167 +0100 -@@ -565,6 +565,7 @@ - prctl-seccomp-strict.test \ - qual_fault-exit_group.test \ - readv.test \ -+ restart_syscall-p.test \ - rt_sigaction.test \ - scm_rights-fd.test \ - seccomp-strict.test \ -@@ -736,6 +737,7 @@ - qual_inject-signal.expected \ - qualify_personality_empty.in \ - regex.in \ -+ restart_syscall-p.expected \ - rt_sigaction.awk \ - sched.in \ - sigaltstack.expected \ -Index: strace-6.7/tests/restart_syscall-p.expected -=================================================================== ---- /dev/null 1970-01-01 00:00:00.000000000 +0000 -+++ strace-6.7/tests/restart_syscall-p.expected 2024-10-29 13:58:46.485209167 +0100 -@@ -0,0 +1,2 @@ -+restart_syscall(<... resuming interrupted nanosleep ...>) = 0 -+exit_group(0) = ? -Index: strace-6.7/tests/restart_syscall-p.test -=================================================================== ---- /dev/null 1970-01-01 00:00:00.000000000 +0000 -+++ strace-6.7/tests/restart_syscall-p.test 2024-10-29 13:58:46.485209167 +0100 -@@ -0,0 +1,20 @@ -+#!/bin/sh -+# -+# Check restart_syscall decoding. -+# -+# Copyright (c) 2015-2024 The strace developers. -+# All rights reserved. -+# -+# SPDX-License-Identifier: GPL-2.0-or-later -+ -+. "${srcdir=.}/init.sh" -+ -+run_prog ../sleep 0 -+ -+../set_ptracer_any ../sleep 2 > /dev/null & -+tracee_pid=$! -+ -+../sleep 1 -+ -+run_strace -qq -a14 -p $tracee_pid -+match_diff -Index: strace-6.7/tests-m32/Makefile.in -=================================================================== ---- strace-6.7.orig/tests-m32/Makefile.in 2024-01-29 13:43:44.000000000 +0100 -+++ strace-6.7/tests-m32/Makefile.in 2024-10-29 13:59:34.146652355 +0100 -@@ -10531,6 +10531,7 @@ - prctl-seccomp-strict.test \ - qual_fault-exit_group.test \ - readv.test \ -+ restart_syscall-p.test \ - rt_sigaction.test \ - scm_rights-fd.test \ - seccomp-strict.test \ -@@ -10697,6 +10698,7 @@ - qual_inject-signal.expected \ - qualify_personality_empty.in \ - regex.in \ -+ restart_syscall-p.expected \ - rt_sigaction.awk \ - sched.in \ - sigaltstack.expected \ -Index: strace-6.7/tests-mx32/Makefile.in -=================================================================== ---- strace-6.7.orig/tests-mx32/Makefile.in 2024-01-29 13:43:45.000000000 +0100 -+++ strace-6.7/tests-mx32/Makefile.in 2024-10-29 13:59:43.762540016 +0100 -@@ -10531,6 +10531,7 @@ - prctl-seccomp-strict.test \ - qual_fault-exit_group.test \ - readv.test \ -+ restart_syscall-p.test \ - rt_sigaction.test \ - scm_rights-fd.test \ - seccomp-strict.test \ -@@ -10697,6 +10698,7 @@ - qual_inject-signal.expected \ - qualify_personality_empty.in \ - regex.in \ -+ restart_syscall-p.expected \ - rt_sigaction.awk \ - sched.in \ - sigaltstack.expected \ -Index: strace-6.7/tests/Makefile.in -=================================================================== ---- strace-6.7.orig/tests/Makefile.in 2024-01-29 13:43:45.000000000 +0100 -+++ strace-6.7/tests/Makefile.in 2024-10-29 13:59:15.712867710 +0100 -@@ -10530,6 +10530,7 @@ - prctl-seccomp-strict.test \ - qual_fault-exit_group.test \ - readv.test \ -+ restart_syscall-p.test \ - rt_sigaction.test \ - scm_rights-fd.test \ - seccomp-strict.test \ -@@ -10696,6 +10697,7 @@ - qual_inject-signal.expected \ - qualify_personality_empty.in \ - regex.in \ -+ restart_syscall-p.expected \ - rt_sigaction.awk \ - sched.in \ - sigaltstack.expected \ diff --git a/0186-tests-workaround-net-yy-inet-for-new-kernels.patch b/0186-tests-workaround-net-yy-inet-for-new-kernels.patch deleted file mode 100644 index e24b974..0000000 --- a/0186-tests-workaround-net-yy-inet-for-new-kernels.patch +++ /dev/null @@ -1,108 +0,0 @@ -From e9d784ecd3ef0c5af9f8c74a830e797d773d71cb Mon Sep 17 00:00:00 2001 -From: "Dmitry V. Levin" -Date: Sun, 21 Apr 2024 08:00:00 +0000 -Subject: [PATCH] tests: workaround net-yy-inet* for new kernels - -Starting with Linux kernel commit v6.8-rc1~131^2~223, NETLINK_INET_DIAG -works also for bound-only sockets. As there is no easy way to tell -whether the running kernel contains that commit, the test cannot easily -predict the kernel behavior in case of sockets in bound-only state. -Workaround this by skipping the corresponding part of the test. - -* tests/net-yy-inet.test: Filter out listen() calls. -* tests/net-yy-inet.c (main): Do not print expected output for listen() -syscall. - -Resolves: https://github.com/strace/strace/issues/299 ---- - tests/net-yy-inet.c | 2 -- - tests/net-yy-inet.test | 6 +++++- - 2 files changed, 5 insertions(+), 3 deletions(-) - -diff --git a/tests/net-yy-inet.c b/tests/net-yy-inet.c -index 1a83548bf..7f8e05783 100644 ---- a/tests/net-yy-inet.c -+++ b/tests/net-yy-inet.c -@@ -63,8 +63,6 @@ main(void) - - if (listen(listen_fd, 1)) - perror_msg_and_skip("listen"); -- printf("listen(%d<" TCP_STR ":[%lu]>, 1) = 0\n", -- listen_fd, listen_inode); - - memset(listen_sa, 0, sizeof(addr)); - *len = sizeof(addr); -diff --git a/tests/net-yy-inet.test b/tests/net-yy-inet.test -index 9a3f851bf..d45414bcb 100755 ---- a/tests/net-yy-inet.test -+++ b/tests/net-yy-inet.test -@@ -17,5 +17,9 @@ run_prog > /dev/null - run_strace -a22 -yy -eclose,network $args > "$EXP" - - # Filter out close() calls made by ld.so and libc. --sed -n '/socket/,$p' < "$LOG" > "$OUT" -+# -+# Filter out listen() call as we cannot easily predict the kernel -+# behaviour because there is no easy way to tell whether the Linux kernel -+# contains commit v6.8-rc1~131^2~223. -+sed -n '/^listen/d;/^socket/,$p' < "$LOG" > "$OUT" - match_diff "$OUT" "$EXP" -diff --git a/tests-m32/net-yy-inet.c b/tests-m32/net-yy-inet.c -index 1a83548bf..7f8e05783 100644 ---- a/tests-m32/net-yy-inet.c -+++ b/tests-m32/net-yy-inet.c -@@ -63,8 +63,6 @@ main(void) - - if (listen(listen_fd, 1)) - perror_msg_and_skip("listen"); -- printf("listen(%d<" TCP_STR ":[%lu]>, 1) = 0\n", -- listen_fd, listen_inode); - - memset(listen_sa, 0, sizeof(addr)); - *len = sizeof(addr); -diff --git a/tests-m32/net-yy-inet.test b/tests-m32/net-yy-inet.test -index 9a3f851bf..d45414bcb 100755 ---- a/tests-m32/net-yy-inet.test -+++ b/tests-m32/net-yy-inet.test -@@ -17,5 +17,9 @@ run_prog > /dev/null - run_strace -a22 -yy -eclose,network $args > "$EXP" - - # Filter out close() calls made by ld.so and libc. --sed -n '/socket/,$p' < "$LOG" > "$OUT" -+# -+# Filter out listen() call as we cannot easily predict the kernel -+# behaviour because there is no easy way to tell whether the Linux kernel -+# contains commit v6.8-rc1~131^2~223. -+sed -n '/^listen/d;/^socket/,$p' < "$LOG" > "$OUT" - match_diff "$OUT" "$EXP" -diff --git a/tests-mx32/net-yy-inet.c b/tests-mx32/net-yy-inet.c -index 1a83548bf..7f8e05783 100644 ---- a/tests-mx32/net-yy-inet.c -+++ b/tests-mx32/net-yy-inet.c -@@ -63,8 +63,6 @@ main(void) - - if (listen(listen_fd, 1)) - perror_msg_and_skip("listen"); -- printf("listen(%d<" TCP_STR ":[%lu]>, 1) = 0\n", -- listen_fd, listen_inode); - - memset(listen_sa, 0, sizeof(addr)); - *len = sizeof(addr); -diff --git a/tests-mx32/net-yy-inet.test b/tests-mx32/net-yy-inet.test -index 9a3f851bf..d45414bcb 100755 ---- a/tests-mx32/net-yy-inet.test -+++ b/tests-mx32/net-yy-inet.test -@@ -17,5 +17,9 @@ run_prog > /dev/null - run_strace -a22 -yy -eclose,network $args > "$EXP" - - # Filter out close() calls made by ld.so and libc. --sed -n '/socket/,$p' < "$LOG" > "$OUT" -+# -+# Filter out listen() call as we cannot easily predict the kernel -+# behaviour because there is no easy way to tell whether the Linux kernel -+# contains commit v6.8-rc1~131^2~223. -+sed -n '/^listen/d;/^socket/,$p' < "$LOG" > "$OUT" - match_diff "$OUT" "$EXP" --- -2.13.6 - diff --git a/0187-tests-avoid-linkat-secontext_mismatch-failures-on-se.patch b/0187-tests-avoid-linkat-secontext_mismatch-failures-on-se.patch deleted file mode 100644 index 715b3e8..0000000 --- a/0187-tests-avoid-linkat-secontext_mismatch-failures-on-se.patch +++ /dev/null @@ -1,530 +0,0 @@ -From 660186018897b386fb05d7951aec57a81211a1a4 Mon Sep 17 00:00:00 2001 -From: Eugene Syromyatnikov -Date: Wed, 21 Aug 2024 15:32:42 +0200 -Subject: [PATCH] tests: avoid linkat--secontext_mismatch failures on - setfilecon errors - -linkat--secontext_mismatch can fail if setfilecon cannot update SELinux -context (for example, that happens when the test is run under -an unprivileged user and tries to change the type to unconfined_t). -Avoid it by actually checking the return code and skipping the test -if there are errors reported by reset_secontext_file -or update_secontext_field calls. - -* tests/secontext.h: Include . -(reset_secontext_file, update_secontext_field): Change the return type -from void to int. -[!(TEST_SECONTEXT && HAVE_SELINUX_RUNTIME)] (reset_secontext_file, -update_secontext_field): Return -ENOSYS. -* tests/secontext.c: (reset_secontext_file): Change the return type -to int; save the setfilecon return value to ret and reset it to -errno -if the latter is non-zero; return ret. -(update_secontext_field): Change the return type to int; return -1 -if ctx is NULL; save the setfilecon return value to ret and reset -it to -errno if the latter is non-zero; return ret. -* tests/linkat.c: Include "xlat.h". -(secontext_types_data, secontext_types): New constants. -(mangle_secontext_field): Store the new field value in the new variable; -store the update_secontext_field return value to the ret variable, error -and skip if it is non-zero. -(main): Error and skip if reset_secontext_file returns non-zero. - -Reported-by: Edjunior Machado ---- - tests/linkat.c | 34 ++++++++++++++++++++++++++++++---- - tests/secontext.c | 19 ++++++++++++++----- - tests/secontext.h | 14 +++++++++----- - 3 files changed, 53 insertions(+), 14 deletions(-) - -diff --git a/tests/linkat.c b/tests/linkat.c -index 1d0ee3c9f..832392ca0 100644 ---- a/tests/linkat.c -+++ b/tests/linkat.c -@@ -19,8 +19,20 @@ - #include - - #include "secontext.h" -+#include "xlat.h" - #include "xmalloc.h" - -+struct xlat_data secontext_types_data[] = { -+ [SECONTEXT_USER] = XLAT_PAIR(SECONTEXT_USER, "user"), -+ [SECONTEXT_ROLE] = XLAT_PAIR(SECONTEXT_ROLE, "role"), -+ [SECONTEXT_TYPE] = XLAT_PAIR(SECONTEXT_TYPE, "type"), -+}; -+struct xlat secontext_types = { -+ .data = secontext_types_data, -+ .size = ARRAY_SIZE(secontext_types_data), -+ .type = XT_INDEXED, -+}; -+ - static void - mangle_secontext_field(const char *path, enum secontext_field field, - const char *new_val, const char *fallback_val) -@@ -29,10 +41,18 @@ mangle_secontext_field(const char *path, enum secontext_field field, - if (!orig) - return; - -- update_secontext_field(path, field, -- strcmp(new_val, orig) ? new_val : fallback_val); -+ const char *new = strcmp(new_val, orig) ? new_val : fallback_val; - - free(orig); -+ -+ int ret = update_secontext_field(path, field, new); -+ if (ret) { -+ error_msg_and_skip("Failed to mangle secontext %s for " -+ "'%s' to %s: %d", -+ sprintxval_abbrev(&secontext_types, field, -+ "SECONTEXT_???"), -+ path, new, ret); -+ } - } - - int -@@ -103,8 +123,14 @@ main(void) - if (close(fd_sample_2)) - perror_msg_and_fail("close"); - -- if (*sample_1_secontext && strstr(sample_1_secontext, "!!")) -- reset_secontext_file(sample_1); -+ if (*sample_1_secontext && strstr(sample_1_secontext, "!!")) { -+ int ret; -+ if ((ret = reset_secontext_file(sample_1))) { -+ errno = -ret; -+ perror_msg_and_skip("Reset secontext for '%s'", -+ sample_1); -+ } -+ } - - free(sample_1_secontext); - -diff --git a/tests/secontext.c b/tests/secontext.c -index 84c682869..a0463c467 100644 ---- a/tests/secontext.c -+++ b/tests/secontext.c -@@ -284,14 +284,19 @@ secontext_short_pid(pid_t pid) - return FORMAT_SPACE_AFTER(raw_secontext_short_pid(pid)); - } - --void reset_secontext_file(const char *file) -+int -+reset_secontext_file(const char *file) - { - char *proper_ctx = raw_expected_secontext_full_file(file); -- (void) setfilecon(file, proper_ctx); -+ int ret = setfilecon(file, proper_ctx); -+ if (ret && errno) -+ ret = -errno; - free(proper_ctx); -+ -+ return ret; - } - --void -+int - update_secontext_field(const char *file, enum secontext_field field, - const char *newvalue) - { -@@ -300,7 +305,7 @@ update_secontext_field(const char *file, enum secontext_field field, - - char *ctx = raw_secontext_full_file(file); - if (ctx == NULL) -- return; -+ return -1; - - char *saveptr = NULL; - char *token; -@@ -319,11 +324,15 @@ update_secontext_field(const char *file, enum secontext_field field, - char *newcontext = xasprintf("%s:%s:%s:%s", split[0], split[1], - split[2], split[3]); - -- (void) setfilecon(file, newcontext); -+ int ret = setfilecon(file, newcontext); -+ if (ret && errno) -+ ret = -errno; - - free(newcontext); - free(ctx); - errno = saved_errno; -+ -+ return ret; - } - - #endif /* HAVE_SELINUX_RUNTIME */ -diff --git a/tests/secontext.h b/tests/secontext.h -index b5bba2272..dab33e6a5 100644 ---- a/tests/secontext.h -+++ b/tests/secontext.h -@@ -7,6 +7,8 @@ - - #include "tests.h" - #include "xmalloc.h" -+ -+#include - #include - - char *secontext_full_fd(int) ATTRIBUTE_MALLOC; -@@ -35,10 +37,10 @@ char *get_secontext_field(const char *full_context, enum secontext_field field); - char *get_secontext_field_fd(int fd, enum secontext_field field); - char *get_secontext_field_file(const char *file, enum secontext_field field); - --void reset_secontext_file(const char *file); -+int reset_secontext_file(const char *file); - --void update_secontext_field(const char *file, enum secontext_field field, -- const char *newvalue); -+int update_secontext_field(const char *file, enum secontext_field field, -+ const char *newvalue); - - # ifdef PRINT_SECONTEXT_FULL - -@@ -81,15 +83,17 @@ get_secontext_field_file(const char *file, enum secontext_field field) - return NULL; - } - --static inline void -+static inline int - reset_secontext_file(const char *file) - { -+ return -ENOSYS; - } - --static inline void -+static inline int - update_secontext_field(const char *file, enum secontext_field field, - const char *newvalue) - { -+ return -ENOSYS; - } - - # define SECONTEXT_FD(fd) xstrdup("") -diff --git a/tests-m32/linkat.c b/tests-m32/linkat.c -index 1d0ee3c9f..832392ca0 100644 ---- a/tests-m32/linkat.c -+++ b/tests-m32/linkat.c -@@ -19,8 +19,20 @@ - #include - - #include "secontext.h" -+#include "xlat.h" - #include "xmalloc.h" - -+struct xlat_data secontext_types_data[] = { -+ [SECONTEXT_USER] = XLAT_PAIR(SECONTEXT_USER, "user"), -+ [SECONTEXT_ROLE] = XLAT_PAIR(SECONTEXT_ROLE, "role"), -+ [SECONTEXT_TYPE] = XLAT_PAIR(SECONTEXT_TYPE, "type"), -+}; -+struct xlat secontext_types = { -+ .data = secontext_types_data, -+ .size = ARRAY_SIZE(secontext_types_data), -+ .type = XT_INDEXED, -+}; -+ - static void - mangle_secontext_field(const char *path, enum secontext_field field, - const char *new_val, const char *fallback_val) -@@ -29,10 +41,18 @@ mangle_secontext_field(const char *path, enum secontext_field field, - if (!orig) - return; - -- update_secontext_field(path, field, -- strcmp(new_val, orig) ? new_val : fallback_val); -+ const char *new = strcmp(new_val, orig) ? new_val : fallback_val; - - free(orig); -+ -+ int ret = update_secontext_field(path, field, new); -+ if (ret) { -+ error_msg_and_skip("Failed to mangle secontext %s for " -+ "'%s' to %s: %d", -+ sprintxval_abbrev(&secontext_types, field, -+ "SECONTEXT_???"), -+ path, new, ret); -+ } - } - - int -@@ -103,8 +123,14 @@ main(void) - if (close(fd_sample_2)) - perror_msg_and_fail("close"); - -- if (*sample_1_secontext && strstr(sample_1_secontext, "!!")) -- reset_secontext_file(sample_1); -+ if (*sample_1_secontext && strstr(sample_1_secontext, "!!")) { -+ int ret; -+ if ((ret = reset_secontext_file(sample_1))) { -+ errno = -ret; -+ perror_msg_and_skip("Reset secontext for '%s'", -+ sample_1); -+ } -+ } - - free(sample_1_secontext); - -diff --git a/tests-m32/secontext.c b/tests-m32/secontext.c -index 84c682869..a0463c467 100644 ---- a/tests-m32/secontext.c -+++ b/tests-m32/secontext.c -@@ -284,14 +284,19 @@ secontext_short_pid(pid_t pid) - return FORMAT_SPACE_AFTER(raw_secontext_short_pid(pid)); - } - --void reset_secontext_file(const char *file) -+int -+reset_secontext_file(const char *file) - { - char *proper_ctx = raw_expected_secontext_full_file(file); -- (void) setfilecon(file, proper_ctx); -+ int ret = setfilecon(file, proper_ctx); -+ if (ret && errno) -+ ret = -errno; - free(proper_ctx); -+ -+ return ret; - } - --void -+int - update_secontext_field(const char *file, enum secontext_field field, - const char *newvalue) - { -@@ -300,7 +305,7 @@ update_secontext_field(const char *file, enum secontext_field field, - - char *ctx = raw_secontext_full_file(file); - if (ctx == NULL) -- return; -+ return -1; - - char *saveptr = NULL; - char *token; -@@ -319,11 +324,15 @@ update_secontext_field(const char *file, enum secontext_field field, - char *newcontext = xasprintf("%s:%s:%s:%s", split[0], split[1], - split[2], split[3]); - -- (void) setfilecon(file, newcontext); -+ int ret = setfilecon(file, newcontext); -+ if (ret && errno) -+ ret = -errno; - - free(newcontext); - free(ctx); - errno = saved_errno; -+ -+ return ret; - } - - #endif /* HAVE_SELINUX_RUNTIME */ -diff --git a/tests-m32/secontext.h b/tests-m32/secontext.h -index b5bba2272..dab33e6a5 100644 ---- a/tests-m32/secontext.h -+++ b/tests-m32/secontext.h -@@ -7,6 +7,8 @@ - - #include "tests.h" - #include "xmalloc.h" -+ -+#include - #include - - char *secontext_full_fd(int) ATTRIBUTE_MALLOC; -@@ -35,10 +37,10 @@ char *get_secontext_field(const char *full_context, enum secontext_field field); - char *get_secontext_field_fd(int fd, enum secontext_field field); - char *get_secontext_field_file(const char *file, enum secontext_field field); - --void reset_secontext_file(const char *file); -+int reset_secontext_file(const char *file); - --void update_secontext_field(const char *file, enum secontext_field field, -- const char *newvalue); -+int update_secontext_field(const char *file, enum secontext_field field, -+ const char *newvalue); - - # ifdef PRINT_SECONTEXT_FULL - -@@ -81,15 +83,17 @@ get_secontext_field_file(const char *file, enum secontext_field field) - return NULL; - } - --static inline void -+static inline int - reset_secontext_file(const char *file) - { -+ return -ENOSYS; - } - --static inline void -+static inline int - update_secontext_field(const char *file, enum secontext_field field, - const char *newvalue) - { -+ return -ENOSYS; - } - - # define SECONTEXT_FD(fd) xstrdup("") -diff --git a/tests-mx32/linkat.c b/tests-mx32/linkat.c -index 1d0ee3c9f..832392ca0 100644 ---- a/tests-mx32/linkat.c -+++ b/tests-mx32/linkat.c -@@ -19,8 +19,20 @@ - #include - - #include "secontext.h" -+#include "xlat.h" - #include "xmalloc.h" - -+struct xlat_data secontext_types_data[] = { -+ [SECONTEXT_USER] = XLAT_PAIR(SECONTEXT_USER, "user"), -+ [SECONTEXT_ROLE] = XLAT_PAIR(SECONTEXT_ROLE, "role"), -+ [SECONTEXT_TYPE] = XLAT_PAIR(SECONTEXT_TYPE, "type"), -+}; -+struct xlat secontext_types = { -+ .data = secontext_types_data, -+ .size = ARRAY_SIZE(secontext_types_data), -+ .type = XT_INDEXED, -+}; -+ - static void - mangle_secontext_field(const char *path, enum secontext_field field, - const char *new_val, const char *fallback_val) -@@ -29,10 +41,18 @@ mangle_secontext_field(const char *path, enum secontext_field field, - if (!orig) - return; - -- update_secontext_field(path, field, -- strcmp(new_val, orig) ? new_val : fallback_val); -+ const char *new = strcmp(new_val, orig) ? new_val : fallback_val; - - free(orig); -+ -+ int ret = update_secontext_field(path, field, new); -+ if (ret) { -+ error_msg_and_skip("Failed to mangle secontext %s for " -+ "'%s' to %s: %d", -+ sprintxval_abbrev(&secontext_types, field, -+ "SECONTEXT_???"), -+ path, new, ret); -+ } - } - - int -@@ -103,8 +123,14 @@ main(void) - if (close(fd_sample_2)) - perror_msg_and_fail("close"); - -- if (*sample_1_secontext && strstr(sample_1_secontext, "!!")) -- reset_secontext_file(sample_1); -+ if (*sample_1_secontext && strstr(sample_1_secontext, "!!")) { -+ int ret; -+ if ((ret = reset_secontext_file(sample_1))) { -+ errno = -ret; -+ perror_msg_and_skip("Reset secontext for '%s'", -+ sample_1); -+ } -+ } - - free(sample_1_secontext); - -diff --git a/tests-mx32/secontext.c b/tests-mx32/secontext.c -index 84c682869..a0463c467 100644 ---- a/tests-mx32/secontext.c -+++ b/tests-mx32/secontext.c -@@ -284,14 +284,19 @@ secontext_short_pid(pid_t pid) - return FORMAT_SPACE_AFTER(raw_secontext_short_pid(pid)); - } - --void reset_secontext_file(const char *file) -+int -+reset_secontext_file(const char *file) - { - char *proper_ctx = raw_expected_secontext_full_file(file); -- (void) setfilecon(file, proper_ctx); -+ int ret = setfilecon(file, proper_ctx); -+ if (ret && errno) -+ ret = -errno; - free(proper_ctx); -+ -+ return ret; - } - --void -+int - update_secontext_field(const char *file, enum secontext_field field, - const char *newvalue) - { -@@ -300,7 +305,7 @@ update_secontext_field(const char *file, enum secontext_field field, - - char *ctx = raw_secontext_full_file(file); - if (ctx == NULL) -- return; -+ return -1; - - char *saveptr = NULL; - char *token; -@@ -319,11 +324,15 @@ update_secontext_field(const char *file, enum secontext_field field, - char *newcontext = xasprintf("%s:%s:%s:%s", split[0], split[1], - split[2], split[3]); - -- (void) setfilecon(file, newcontext); -+ int ret = setfilecon(file, newcontext); -+ if (ret && errno) -+ ret = -errno; - - free(newcontext); - free(ctx); - errno = saved_errno; -+ -+ return ret; - } - - #endif /* HAVE_SELINUX_RUNTIME */ -diff --git a/tests-mx32/secontext.h b/tests-mx32/secontext.h -index b5bba2272..dab33e6a5 100644 ---- a/tests-mx32/secontext.h -+++ b/tests-mx32/secontext.h -@@ -7,6 +7,8 @@ - - #include "tests.h" - #include "xmalloc.h" -+ -+#include - #include - - char *secontext_full_fd(int) ATTRIBUTE_MALLOC; -@@ -35,10 +37,10 @@ char *get_secontext_field(const char *full_context, enum secontext_field field); - char *get_secontext_field_fd(int fd, enum secontext_field field); - char *get_secontext_field_file(const char *file, enum secontext_field field); - --void reset_secontext_file(const char *file); -+int reset_secontext_file(const char *file); - --void update_secontext_field(const char *file, enum secontext_field field, -- const char *newvalue); -+int update_secontext_field(const char *file, enum secontext_field field, -+ const char *newvalue); - - # ifdef PRINT_SECONTEXT_FULL - -@@ -81,15 +83,17 @@ get_secontext_field_file(const char *file, enum secontext_field field) - return NULL; - } - --static inline void -+static inline int - reset_secontext_file(const char *file) - { -+ return -ENOSYS; - } - --static inline void -+static inline int - update_secontext_field(const char *file, enum secontext_field field, - const char *newvalue) - { -+ return -ENOSYS; - } - - # define SECONTEXT_FD(fd) xstrdup("") --- -2.13.6 - diff --git a/0188-linux-s390-get_scno.c-use-NT_S390_SYSTEM_CALL-if-gpr.patch b/0188-linux-s390-get_scno.c-use-NT_S390_SYSTEM_CALL-if-gpr.patch deleted file mode 100644 index eb4220a..0000000 --- a/0188-linux-s390-get_scno.c-use-NT_S390_SYSTEM_CALL-if-gpr.patch +++ /dev/null @@ -1,76 +0,0 @@ -From d08dfdebb381427cbd8565994868926ba9bc4b40 Mon Sep 17 00:00:00 2001 -From: Eugene Syromyatnikov -Date: Wed, 30 Oct 2024 15:16:47 +0100 -Subject: [PATCH 188/190] linux/s390/get_scno.c: use NT_S390_SYSTEM_CALL if - gprs[2] is clobbered - -The way the syscall number is retrieved currently relies on the kernel -propagating it properly into gprs[2], which is not however always the case; -apart of the situation where scno > NR_syscalls, there is also an issue -of inspecting it during syscall restart (as it happens on attach, for -example), when it is already clobbered by a ERESTART* errno. Luckily -for strace, this issue has been already foreseen by the kernel -developers, and support for retrieving syscall number on s390 -via a separate ptrace regset has been added by the Linux commit -v3.2-rc1~109^2~34; 13 years later, it is time for it to fulfill -its purpose and finally get utilised. - -* src/linux/s390/get_scno.c (arch_get_scno): Try to retrieve the syscall -number by querying NT_S390_SYSTEM_CALL regset if gprs[2] contains an errno. - -Complements: v6.11-21-gc7e0ea6d712e "syscall: do not use uninitialized parts of struct ptrace_syscall_info" ---- - src/linux/s390/get_scno.c | 34 ++++++++++++++++++++++++++++++++-- - 1 file changed, 32 insertions(+), 2 deletions(-) - -diff --git a/src/linux/s390/get_scno.c b/src/linux/s390/get_scno.c -index f0863e26d701..fdc94d025280 100644 ---- a/src/linux/s390/get_scno.c -+++ b/src/linux/s390/get_scno.c -@@ -9,11 +9,41 @@ - # define ARCH_REGSET s390_regset - #endif - -+#ifndef NT_ARM_SYSTEM_CALL -+# define NT_S390_SYSTEM_CALL 0x307 -+#endif -+ - /* Return codes: 1 - ok, 0 - ignore, other - error. */ - static int - arch_get_scno(struct tcb *tcp) - { -- tcp->scno = ARCH_REGSET.gprs[2] ? -- ARCH_REGSET.gprs[2] : ARCH_REGSET.gprs[1]; -+ typeof(ARCH_REGSET.gprs[2]) gpr2 = ARCH_REGSET.gprs[2]; -+ -+ if (gpr2 > (typeof(gpr2)) (-4095ULL)) { -+ /* -+ * We are in restart_syscall and gprs[2] is clobbered -+ * by the errno, using pulling the syscall number -+ * via NT_S390_SYSTEM_CALL regset. -+ */ -+ unsigned int scno; -+ const struct iovec io = { -+ .iov_base = &scno, -+ .iov_len = sizeof(scno) -+ }; -+ int rc = ptrace(PTRACE_GETREGSET, tcp->pid, NT_S390_SYSTEM_CALL, -+ &io); -+ if (rc && errno != ESRCH) { -+ perror_func_msg("NT_S390_SYSTEM_CALL pid:%d", tcp->pid); -+ return -1; -+ } -+ /* -+ * The ptrace call returns thread.system_call, that stores raw -+ * int_code, and the syscall number part is the lowest 16 bits -+ * of it. -+ */ -+ tcp->scno = scno & 0xffff; -+ } else { -+ tcp->scno = gpr2 ?: ARCH_REGSET.gprs[1]; -+ } - return 1; - } --- -2.28.0 - diff --git a/0189-tests-move-k_setsockopt-definition-into-a-separate-f.patch b/0189-tests-move-k_setsockopt-definition-into-a-separate-f.patch deleted file mode 100644 index 7688ddb..0000000 --- a/0189-tests-move-k_setsockopt-definition-into-a-separate-f.patch +++ /dev/null @@ -1,698 +0,0 @@ -From e7f488a6d267001214636507c79210af57c2c6a7 Mon Sep 17 00:00:00 2001 -From: Eugene Syromyatnikov -Date: Thu, 31 Oct 2024 13:28:00 +0100 -Subject: [PATCH 189/190] tests: move k_setsockopt definition into a separate - file - -...and add k_getsockopt definition as well (for completeness's sake -and because it will be utilised in the next patch). - -* tests/k_sockopt.c: New file. -* tests/k_sockopt.h: Likewise. -* tests/Makefile.am (libtests_a_SOURCES): Add k_sockopt.c -and k_sockopt.h. -* tests/sockopt-timestamp.c: Include "k_sockopt.h". ---- - tests/Makefile.am | 2 ++ - tests/k_sockopt.c | 61 +++++++++++++++++++++++++++++++++++++++ - tests/k_sockopt.h | 24 +++++++++++++++ - tests/sockopt-timestamp.c | 25 +--------------- - 4 files changed, 88 insertions(+), 24 deletions(-) - create mode 100644 tests/k_sockopt.c - create mode 100644 tests/k_sockopt.h - -Index: strace-6.7/tests/Makefile.am -=================================================================== ---- strace-6.7.orig/tests/Makefile.am 2024-10-31 14:07:30.389665979 +0100 -+++ strace-6.7/tests/Makefile.am 2024-10-31 14:07:30.445665345 +0100 -@@ -61,6 +61,8 @@ - hexquote_strndup.c \ - ifindex.c \ - inode_of_sockfd.c \ -+ k_sockopt.c \ -+ k_sockopt.h \ - libmmsg.c \ - libsocketcall.c \ - lock_file.c \ -Index: strace-6.7/tests/k_sockopt.c -=================================================================== ---- /dev/null 1970-01-01 00:00:00.000000000 +0000 -+++ strace-6.7/tests/k_sockopt.c 2024-10-31 14:07:30.445665345 +0100 -@@ -0,0 +1,61 @@ -+/* -+ * [gs]etsockopt() wrappers that avoid glibc and perform syscalls directly. -+ * -+ * Copyright (c) 2019 Dmitry V. Levin -+ * Copyright (c) 2019-2024 The strace developers. -+ * All rights reserved. -+ * -+ * SPDX-License-Identifier: GPL-2.0-or-later -+ */ -+ -+#include "tests.h" -+#include "scno.h" -+ -+#include -+#include -+ -+#include "k_sockopt.h" -+ -+static const kernel_ulong_t fill = (kernel_ulong_t) 0xdefaced00000000ULL; -+ -+#if defined __NR_getsockopt || defined __NR_setsockopt -+static const kernel_ulong_t bad = (kernel_ulong_t) 0xbadc0dedbadc0dedULL; -+#endif -+ -+#define SC_getsockopt 15 -+long -+k_getsockopt(const unsigned int fd, const unsigned int level, -+ const unsigned int optname, const void *const optval, -+ const unsigned int *len) -+{ -+ return syscall( -+#ifdef __NR_getsockopt -+ __NR_getsockopt, -+#else /* socketcall */ -+ __NR_socketcall, SC_getsockopt, -+#endif -+ fill | fd , fill | level, fill | optname, optval, len -+#ifdef __NR_getsockopt -+ , bad -+#endif -+ ); -+} -+ -+# define SC_setsockopt 14 -+long -+k_setsockopt(const unsigned int fd, const unsigned int level, -+ const unsigned int optname, const void *const optval, -+ const unsigned int len) -+{ -+ return syscall( -+#ifdef __NR_setsockopt -+ __NR_setsockopt, -+#else /* socketcall */ -+ __NR_socketcall, SC_setsockopt, -+#endif -+ fill | fd , fill | level, fill | optname, optval, fill | len -+#ifdef __NR_setsockopt -+ , bad -+#endif -+ ); -+} -Index: strace-6.7/tests/k_sockopt.h -=================================================================== ---- /dev/null 1970-01-01 00:00:00.000000000 +0000 -+++ strace-6.7/tests/k_sockopt.h 2024-10-31 14:07:30.445665345 +0100 -@@ -0,0 +1,24 @@ -+/* -+ * [gs]etsockopt() wrappers that avoid glibc and perform syscalls directly. -+ * -+ * Copyright (c) 2019 Dmitry V. Levin -+ * Copyright (c) 2019-2024 The strace developers. -+ * All rights reserved. -+ * -+ * SPDX-License-Identifier: GPL-2.0-or-later -+ */ -+ -+#ifndef STRACE_K_SOCKOPT_H -+#define STRACE_K_SOCKOPT_H -+ -+extern long -+k_getsockopt(const unsigned int fd, const unsigned int level, -+ const unsigned int optname, const void *const optval, -+ const unsigned int *len); -+ -+extern long -+k_setsockopt(const unsigned int fd, const unsigned int level, -+ const unsigned int optname, const void *const optval, -+ const unsigned int len); -+ -+#endif /* STRACE_K_SOCKOPT_H */ -Index: strace-6.7/tests/sockopt-timestamp.c -=================================================================== ---- strace-6.7.orig/tests/sockopt-timestamp.c 2024-10-31 14:07:27.014704200 +0100 -+++ strace-6.7/tests/sockopt-timestamp.c 2024-10-31 14:07:30.446665333 +0100 -@@ -22,6 +22,7 @@ - # include "kernel_time_types.h" - # include "kernel_timeval.h" - # include "kernel_old_timespec.h" -+# include "k_sockopt.h" - - # define XLAT_MACROS_ONLY - # include "xlat/sock_options.h" -@@ -44,30 +45,6 @@ - return rc; - } - --# define SC_setsockopt 14 --static long --k_setsockopt(const unsigned int fd, const unsigned int level, -- const unsigned int optname, const void *const optval, -- const unsigned int len) --{ -- const kernel_ulong_t fill = (kernel_ulong_t) 0xdefaced00000000ULL; --# ifdef __NR_setsockopt -- const kernel_ulong_t bad = (kernel_ulong_t) 0xbadc0dedbadc0dedULL; --# endif -- -- return syscall( --# ifdef __NR_setsockopt -- __NR_setsockopt, --# else /* socketcall */ -- __NR_socketcall, SC_setsockopt, --# endif -- fill | fd , fill | level, fill | optname, optval, fill | len --# ifdef __NR_setsockopt -- , bad --# endif -- ); --} -- - static void - print_timestamp_old(const struct cmsghdr *c) - { -Index: strace-6.7/tests/Makefile.in -=================================================================== ---- strace-6.7.orig/tests/Makefile.in 2024-10-31 14:07:30.402665832 +0100 -+++ strace-6.7/tests/Makefile.in 2024-10-31 14:09:57.964994687 +0100 -@@ -850,6 +850,7 @@ - libtests_a-hexquote_strndup.$(OBJEXT) \ - libtests_a-ifindex.$(OBJEXT) \ - libtests_a-inode_of_sockfd.$(OBJEXT) \ -+ libtests_a-k_sockopt.$(OBJEXT) \ - libtests_a-libmmsg.$(OBJEXT) \ - libtests_a-libsocketcall.$(OBJEXT) \ - libtests_a-lock_file.$(OBJEXT) \ -@@ -6803,6 +6804,7 @@ - ./$(DEPDIR)/libtests_a-hexquote_strndup.Po \ - ./$(DEPDIR)/libtests_a-ifindex.Po \ - ./$(DEPDIR)/libtests_a-inode_of_sockfd.Po \ -+ ./$(DEPDIR)/libtests_a-k_sockopt.Po \ - ./$(DEPDIR)/libtests_a-libmmsg.Po \ - ./$(DEPDIR)/libtests_a-libsocketcall.Po \ - ./$(DEPDIR)/libtests_a-lock_file.Po \ -@@ -8709,6 +8711,8 @@ - hexquote_strndup.c \ - ifindex.c \ - inode_of_sockfd.c \ -+ k_sockopt.c \ -+ k_sockopt.h \ - libmmsg.c \ - libsocketcall.c \ - lock_file.c \ -@@ -16432,6 +16436,7 @@ - @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libtests_a-hexquote_strndup.Po@am__quote@ # am--include-marker - @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libtests_a-ifindex.Po@am__quote@ # am--include-marker - @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libtests_a-inode_of_sockfd.Po@am__quote@ # am--include-marker -+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libtests_a-k_sockopt.Po@am__quote@ # am--include-marker - @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libtests_a-libmmsg.Po@am__quote@ # am--include-marker - @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libtests_a-libsocketcall.Po@am__quote@ # am--include-marker - @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libtests_a-lock_file.Po@am__quote@ # am--include-marker -@@ -17367,6 +17372,20 @@ - @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ - @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libtests_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o libtests_a-inode_of_sockfd.obj `if test -f 'inode_of_sockfd.c'; then $(CYGPATH_W) 'inode_of_sockfd.c'; else $(CYGPATH_W) '$(srcdir)/inode_of_sockfd.c'; fi` - -+libtests_a-k_sockopt.o: k_sockopt.c -+@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libtests_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT libtests_a-k_sockopt.o -MD -MP -MF $(DEPDIR)/libtests_a-k_sockopt.Tpo -c -o libtests_a-k_sockopt.o `test -f 'k_sockopt.c' || echo '$(srcdir)/'`k_sockopt.c -+@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libtests_a-k_sockopt.Tpo $(DEPDIR)/libtests_a-k_sockopt.Po -+@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='k_sockopt.c' object='libtests_a-k_sockopt.o' libtool=no @AMDEPBACKSLASH@ -+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -+@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libtests_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o libtests_a-k_sockopt.o `test -f 'k_sockopt.c' || echo '$(srcdir)/'`k_sockopt.c -+ -+libtests_a-k_sockopt.obj: k_sockopt.c -+@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libtests_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT libtests_a-k_sockopt.obj -MD -MP -MF $(DEPDIR)/libtests_a-k_sockopt.Tpo -c -o libtests_a-k_sockopt.obj `if test -f 'k_sockopt.c'; then $(CYGPATH_W) 'k_sockopt.c'; else $(CYGPATH_W) '$(srcdir)/k_sockopt.c'; fi` -+@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libtests_a-k_sockopt.Tpo $(DEPDIR)/libtests_a-k_sockopt.Po -+@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='k_sockopt.c' object='libtests_a-k_sockopt.obj' libtool=no @AMDEPBACKSLASH@ -+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -+@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libtests_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o libtests_a-k_sockopt.obj `if test -f 'k_sockopt.c'; then $(CYGPATH_W) 'k_sockopt.c'; else $(CYGPATH_W) '$(srcdir)/k_sockopt.c'; fi` -+ - libtests_a-libmmsg.o: libmmsg.c - @am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libtests_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT libtests_a-libmmsg.o -MD -MP -MF $(DEPDIR)/libtests_a-libmmsg.Tpo -c -o libtests_a-libmmsg.o `test -f 'libmmsg.c' || echo '$(srcdir)/'`libmmsg.c - @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libtests_a-libmmsg.Tpo $(DEPDIR)/libtests_a-libmmsg.Po -@@ -19014,6 +19033,7 @@ - -rm -f ./$(DEPDIR)/libtests_a-hexquote_strndup.Po - -rm -f ./$(DEPDIR)/libtests_a-ifindex.Po - -rm -f ./$(DEPDIR)/libtests_a-inode_of_sockfd.Po -+ -rm -f ./$(DEPDIR)/libtests_a-k_sockopt.Po - -rm -f ./$(DEPDIR)/libtests_a-libmmsg.Po - -rm -f ./$(DEPDIR)/libtests_a-libsocketcall.Po - -rm -f ./$(DEPDIR)/libtests_a-lock_file.Po -@@ -20341,6 +20361,7 @@ - -rm -f ./$(DEPDIR)/libtests_a-hexquote_strndup.Po - -rm -f ./$(DEPDIR)/libtests_a-ifindex.Po - -rm -f ./$(DEPDIR)/libtests_a-inode_of_sockfd.Po -+ -rm -f ./$(DEPDIR)/libtests_a-k_sockopt.Po - -rm -f ./$(DEPDIR)/libtests_a-libmmsg.Po - -rm -f ./$(DEPDIR)/libtests_a-libsocketcall.Po - -rm -f ./$(DEPDIR)/libtests_a-lock_file.Po -Index: strace-6.7/tests-m32/Makefile.am -=================================================================== ---- strace-6.7.orig/tests-m32/Makefile.am 2024-10-31 14:07:27.014704200 +0100 -+++ strace-6.7/tests-m32/Makefile.am 2024-10-31 14:07:30.449665299 +0100 -@@ -61,6 +61,8 @@ - hexquote_strndup.c \ - ifindex.c \ - inode_of_sockfd.c \ -+ k_sockopt.c \ -+ k_sockopt.h \ - libmmsg.c \ - libsocketcall.c \ - lock_file.c \ -Index: strace-6.7/tests-m32/k_sockopt.c -=================================================================== ---- /dev/null 1970-01-01 00:00:00.000000000 +0000 -+++ strace-6.7/tests-m32/k_sockopt.c 2024-10-31 14:07:30.449665299 +0100 -@@ -0,0 +1,61 @@ -+/* -+ * [gs]etsockopt() wrappers that avoid glibc and perform syscalls directly. -+ * -+ * Copyright (c) 2019 Dmitry V. Levin -+ * Copyright (c) 2019-2024 The strace developers. -+ * All rights reserved. -+ * -+ * SPDX-License-Identifier: GPL-2.0-or-later -+ */ -+ -+#include "tests.h" -+#include "scno.h" -+ -+#include -+#include -+ -+#include "k_sockopt.h" -+ -+static const kernel_ulong_t fill = (kernel_ulong_t) 0xdefaced00000000ULL; -+ -+#if defined __NR_getsockopt || defined __NR_setsockopt -+static const kernel_ulong_t bad = (kernel_ulong_t) 0xbadc0dedbadc0dedULL; -+#endif -+ -+#define SC_getsockopt 15 -+long -+k_getsockopt(const unsigned int fd, const unsigned int level, -+ const unsigned int optname, const void *const optval, -+ const unsigned int *len) -+{ -+ return syscall( -+#ifdef __NR_getsockopt -+ __NR_getsockopt, -+#else /* socketcall */ -+ __NR_socketcall, SC_getsockopt, -+#endif -+ fill | fd , fill | level, fill | optname, optval, len -+#ifdef __NR_getsockopt -+ , bad -+#endif -+ ); -+} -+ -+# define SC_setsockopt 14 -+long -+k_setsockopt(const unsigned int fd, const unsigned int level, -+ const unsigned int optname, const void *const optval, -+ const unsigned int len) -+{ -+ return syscall( -+#ifdef __NR_setsockopt -+ __NR_setsockopt, -+#else /* socketcall */ -+ __NR_socketcall, SC_setsockopt, -+#endif -+ fill | fd , fill | level, fill | optname, optval, fill | len -+#ifdef __NR_setsockopt -+ , bad -+#endif -+ ); -+} -Index: strace-6.7/tests-m32/k_sockopt.h -=================================================================== ---- /dev/null 1970-01-01 00:00:00.000000000 +0000 -+++ strace-6.7/tests-m32/k_sockopt.h 2024-10-31 14:07:30.449665299 +0100 -@@ -0,0 +1,24 @@ -+/* -+ * [gs]etsockopt() wrappers that avoid glibc and perform syscalls directly. -+ * -+ * Copyright (c) 2019 Dmitry V. Levin -+ * Copyright (c) 2019-2024 The strace developers. -+ * All rights reserved. -+ * -+ * SPDX-License-Identifier: GPL-2.0-or-later -+ */ -+ -+#ifndef STRACE_K_SOCKOPT_H -+#define STRACE_K_SOCKOPT_H -+ -+extern long -+k_getsockopt(const unsigned int fd, const unsigned int level, -+ const unsigned int optname, const void *const optval, -+ const unsigned int *len); -+ -+extern long -+k_setsockopt(const unsigned int fd, const unsigned int level, -+ const unsigned int optname, const void *const optval, -+ const unsigned int len); -+ -+#endif /* STRACE_K_SOCKOPT_H */ -Index: strace-6.7/tests-m32/sockopt-timestamp.c -=================================================================== ---- strace-6.7.orig/tests-m32/sockopt-timestamp.c 2024-10-31 14:07:27.014704200 +0100 -+++ strace-6.7/tests-m32/sockopt-timestamp.c 2024-10-31 14:07:30.450665288 +0100 -@@ -22,6 +22,7 @@ - # include "kernel_time_types.h" - # include "kernel_timeval.h" - # include "kernel_old_timespec.h" -+# include "k_sockopt.h" - - # define XLAT_MACROS_ONLY - # include "xlat/sock_options.h" -@@ -44,30 +45,6 @@ - return rc; - } - --# define SC_setsockopt 14 --static long --k_setsockopt(const unsigned int fd, const unsigned int level, -- const unsigned int optname, const void *const optval, -- const unsigned int len) --{ -- const kernel_ulong_t fill = (kernel_ulong_t) 0xdefaced00000000ULL; --# ifdef __NR_setsockopt -- const kernel_ulong_t bad = (kernel_ulong_t) 0xbadc0dedbadc0dedULL; --# endif -- -- return syscall( --# ifdef __NR_setsockopt -- __NR_setsockopt, --# else /* socketcall */ -- __NR_socketcall, SC_setsockopt, --# endif -- fill | fd , fill | level, fill | optname, optval, fill | len --# ifdef __NR_setsockopt -- , bad --# endif -- ); --} -- - static void - print_timestamp_old(const struct cmsghdr *c) - { -Index: strace-6.7/tests-m32/Makefile.in -=================================================================== ---- strace-6.7.orig/tests-m32/Makefile.in 2024-10-31 14:07:30.394665922 +0100 -+++ strace-6.7/tests-m32/Makefile.in 2024-10-31 14:07:30.453665254 +0100 -@@ -850,6 +850,7 @@ - libtests_a-hexquote_strndup.$(OBJEXT) \ - libtests_a-ifindex.$(OBJEXT) \ - libtests_a-inode_of_sockfd.$(OBJEXT) \ -+ libtests_a-k_sockopt.$(OBJEXT) \ - libtests_a-libmmsg.$(OBJEXT) \ - libtests_a-libsocketcall.$(OBJEXT) \ - libtests_a-lock_file.$(OBJEXT) \ -@@ -6803,6 +6804,7 @@ - ./$(DEPDIR)/libtests_a-hexquote_strndup.Po \ - ./$(DEPDIR)/libtests_a-ifindex.Po \ - ./$(DEPDIR)/libtests_a-inode_of_sockfd.Po \ -+ ./$(DEPDIR)/libtests_a-k_sockopt.Po \ - ./$(DEPDIR)/libtests_a-libmmsg.Po \ - ./$(DEPDIR)/libtests_a-libsocketcall.Po \ - ./$(DEPDIR)/libtests_a-lock_file.Po \ -@@ -8709,6 +8711,8 @@ - hexquote_strndup.c \ - ifindex.c \ - inode_of_sockfd.c \ -+ k_sockopt.c \ -+ k_sockopt.h \ - libmmsg.c \ - libsocketcall.c \ - lock_file.c \ -@@ -16432,6 +16436,7 @@ - @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libtests_a-hexquote_strndup.Po@am__quote@ # am--include-marker - @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libtests_a-ifindex.Po@am__quote@ # am--include-marker - @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libtests_a-inode_of_sockfd.Po@am__quote@ # am--include-marker -+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libtests_a-k_sockopt.Po@am__quote@ # am--include-marker - @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libtests_a-libmmsg.Po@am__quote@ # am--include-marker - @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libtests_a-libsocketcall.Po@am__quote@ # am--include-marker - @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libtests_a-lock_file.Po@am__quote@ # am--include-marker -@@ -17367,6 +17372,20 @@ - @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ - @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libtests_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o libtests_a-inode_of_sockfd.obj `if test -f 'inode_of_sockfd.c'; then $(CYGPATH_W) 'inode_of_sockfd.c'; else $(CYGPATH_W) '$(srcdir)/inode_of_sockfd.c'; fi` - -+libtests_a-k_sockopt.o: k_sockopt.c -+@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libtests_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT libtests_a-k_sockopt.o -MD -MP -MF $(DEPDIR)/libtests_a-k_sockopt.Tpo -c -o libtests_a-k_sockopt.o `test -f 'k_sockopt.c' || echo '$(srcdir)/'`k_sockopt.c -+@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libtests_a-k_sockopt.Tpo $(DEPDIR)/libtests_a-k_sockopt.Po -+@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='k_sockopt.c' object='libtests_a-k_sockopt.o' libtool=no @AMDEPBACKSLASH@ -+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -+@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libtests_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o libtests_a-k_sockopt.o `test -f 'k_sockopt.c' || echo '$(srcdir)/'`k_sockopt.c -+ -+libtests_a-k_sockopt.obj: k_sockopt.c -+@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libtests_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT libtests_a-k_sockopt.obj -MD -MP -MF $(DEPDIR)/libtests_a-k_sockopt.Tpo -c -o libtests_a-k_sockopt.obj `if test -f 'k_sockopt.c'; then $(CYGPATH_W) 'k_sockopt.c'; else $(CYGPATH_W) '$(srcdir)/k_sockopt.c'; fi` -+@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libtests_a-k_sockopt.Tpo $(DEPDIR)/libtests_a-k_sockopt.Po -+@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='k_sockopt.c' object='libtests_a-k_sockopt.obj' libtool=no @AMDEPBACKSLASH@ -+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -+@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libtests_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o libtests_a-k_sockopt.obj `if test -f 'k_sockopt.c'; then $(CYGPATH_W) 'k_sockopt.c'; else $(CYGPATH_W) '$(srcdir)/k_sockopt.c'; fi` -+ - libtests_a-libmmsg.o: libmmsg.c - @am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libtests_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT libtests_a-libmmsg.o -MD -MP -MF $(DEPDIR)/libtests_a-libmmsg.Tpo -c -o libtests_a-libmmsg.o `test -f 'libmmsg.c' || echo '$(srcdir)/'`libmmsg.c - @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libtests_a-libmmsg.Tpo $(DEPDIR)/libtests_a-libmmsg.Po -@@ -19014,6 +19033,7 @@ - -rm -f ./$(DEPDIR)/libtests_a-hexquote_strndup.Po - -rm -f ./$(DEPDIR)/libtests_a-ifindex.Po - -rm -f ./$(DEPDIR)/libtests_a-inode_of_sockfd.Po -+ -rm -f ./$(DEPDIR)/libtests_a-k_sockopt.Po - -rm -f ./$(DEPDIR)/libtests_a-libmmsg.Po - -rm -f ./$(DEPDIR)/libtests_a-libsocketcall.Po - -rm -f ./$(DEPDIR)/libtests_a-lock_file.Po -@@ -20341,6 +20361,7 @@ - -rm -f ./$(DEPDIR)/libtests_a-hexquote_strndup.Po - -rm -f ./$(DEPDIR)/libtests_a-ifindex.Po - -rm -f ./$(DEPDIR)/libtests_a-inode_of_sockfd.Po -+ -rm -f ./$(DEPDIR)/libtests_a-k_sockopt.Po - -rm -f ./$(DEPDIR)/libtests_a-libmmsg.Po - -rm -f ./$(DEPDIR)/libtests_a-libsocketcall.Po - -rm -f ./$(DEPDIR)/libtests_a-lock_file.Po -Index: strace-6.7/tests-mx32/Makefile.am -=================================================================== ---- strace-6.7.orig/tests-mx32/Makefile.am 2024-10-31 14:07:27.014704200 +0100 -+++ strace-6.7/tests-mx32/Makefile.am 2024-10-31 14:07:30.453665254 +0100 -@@ -61,6 +61,8 @@ - hexquote_strndup.c \ - ifindex.c \ - inode_of_sockfd.c \ -+ k_sockopt.c \ -+ k_sockopt.h \ - libmmsg.c \ - libsocketcall.c \ - lock_file.c \ -Index: strace-6.7/tests-mx32/k_sockopt.c -=================================================================== ---- /dev/null 1970-01-01 00:00:00.000000000 +0000 -+++ strace-6.7/tests-mx32/k_sockopt.c 2024-10-31 14:07:30.453665254 +0100 -@@ -0,0 +1,61 @@ -+/* -+ * [gs]etsockopt() wrappers that avoid glibc and perform syscalls directly. -+ * -+ * Copyright (c) 2019 Dmitry V. Levin -+ * Copyright (c) 2019-2024 The strace developers. -+ * All rights reserved. -+ * -+ * SPDX-License-Identifier: GPL-2.0-or-later -+ */ -+ -+#include "tests.h" -+#include "scno.h" -+ -+#include -+#include -+ -+#include "k_sockopt.h" -+ -+static const kernel_ulong_t fill = (kernel_ulong_t) 0xdefaced00000000ULL; -+ -+#if defined __NR_getsockopt || defined __NR_setsockopt -+static const kernel_ulong_t bad = (kernel_ulong_t) 0xbadc0dedbadc0dedULL; -+#endif -+ -+#define SC_getsockopt 15 -+long -+k_getsockopt(const unsigned int fd, const unsigned int level, -+ const unsigned int optname, const void *const optval, -+ const unsigned int *len) -+{ -+ return syscall( -+#ifdef __NR_getsockopt -+ __NR_getsockopt, -+#else /* socketcall */ -+ __NR_socketcall, SC_getsockopt, -+#endif -+ fill | fd , fill | level, fill | optname, optval, len -+#ifdef __NR_getsockopt -+ , bad -+#endif -+ ); -+} -+ -+# define SC_setsockopt 14 -+long -+k_setsockopt(const unsigned int fd, const unsigned int level, -+ const unsigned int optname, const void *const optval, -+ const unsigned int len) -+{ -+ return syscall( -+#ifdef __NR_setsockopt -+ __NR_setsockopt, -+#else /* socketcall */ -+ __NR_socketcall, SC_setsockopt, -+#endif -+ fill | fd , fill | level, fill | optname, optval, fill | len -+#ifdef __NR_setsockopt -+ , bad -+#endif -+ ); -+} -Index: strace-6.7/tests-mx32/k_sockopt.h -=================================================================== ---- /dev/null 1970-01-01 00:00:00.000000000 +0000 -+++ strace-6.7/tests-mx32/k_sockopt.h 2024-10-31 14:07:30.453665254 +0100 -@@ -0,0 +1,24 @@ -+/* -+ * [gs]etsockopt() wrappers that avoid glibc and perform syscalls directly. -+ * -+ * Copyright (c) 2019 Dmitry V. Levin -+ * Copyright (c) 2019-2024 The strace developers. -+ * All rights reserved. -+ * -+ * SPDX-License-Identifier: GPL-2.0-or-later -+ */ -+ -+#ifndef STRACE_K_SOCKOPT_H -+#define STRACE_K_SOCKOPT_H -+ -+extern long -+k_getsockopt(const unsigned int fd, const unsigned int level, -+ const unsigned int optname, const void *const optval, -+ const unsigned int *len); -+ -+extern long -+k_setsockopt(const unsigned int fd, const unsigned int level, -+ const unsigned int optname, const void *const optval, -+ const unsigned int len); -+ -+#endif /* STRACE_K_SOCKOPT_H */ -Index: strace-6.7/tests-mx32/sockopt-timestamp.c -=================================================================== ---- strace-6.7.orig/tests-mx32/sockopt-timestamp.c 2024-10-31 14:07:27.014704200 +0100 -+++ strace-6.7/tests-mx32/sockopt-timestamp.c 2024-10-31 14:07:30.453665254 +0100 -@@ -22,6 +22,7 @@ - # include "kernel_time_types.h" - # include "kernel_timeval.h" - # include "kernel_old_timespec.h" -+# include "k_sockopt.h" - - # define XLAT_MACROS_ONLY - # include "xlat/sock_options.h" -@@ -44,30 +45,6 @@ - return rc; - } - --# define SC_setsockopt 14 --static long --k_setsockopt(const unsigned int fd, const unsigned int level, -- const unsigned int optname, const void *const optval, -- const unsigned int len) --{ -- const kernel_ulong_t fill = (kernel_ulong_t) 0xdefaced00000000ULL; --# ifdef __NR_setsockopt -- const kernel_ulong_t bad = (kernel_ulong_t) 0xbadc0dedbadc0dedULL; --# endif -- -- return syscall( --# ifdef __NR_setsockopt -- __NR_setsockopt, --# else /* socketcall */ -- __NR_socketcall, SC_setsockopt, --# endif -- fill | fd , fill | level, fill | optname, optval, fill | len --# ifdef __NR_setsockopt -- , bad --# endif -- ); --} -- - static void - print_timestamp_old(const struct cmsghdr *c) - { -Index: strace-6.7/tests-mx32/Makefile.in -=================================================================== ---- strace-6.7.orig/tests-mx32/Makefile.in 2024-10-31 14:07:30.398665877 +0100 -+++ strace-6.7/tests-mx32/Makefile.in 2024-10-31 14:07:30.456665220 +0100 -@@ -850,6 +850,7 @@ - libtests_a-hexquote_strndup.$(OBJEXT) \ - libtests_a-ifindex.$(OBJEXT) \ - libtests_a-inode_of_sockfd.$(OBJEXT) \ -+ libtests_a-k_sockopt.$(OBJEXT) \ - libtests_a-libmmsg.$(OBJEXT) \ - libtests_a-libsocketcall.$(OBJEXT) \ - libtests_a-lock_file.$(OBJEXT) \ -@@ -6803,6 +6804,7 @@ - ./$(DEPDIR)/libtests_a-hexquote_strndup.Po \ - ./$(DEPDIR)/libtests_a-ifindex.Po \ - ./$(DEPDIR)/libtests_a-inode_of_sockfd.Po \ -+ ./$(DEPDIR)/libtests_a-k_sockopt.Po \ - ./$(DEPDIR)/libtests_a-libmmsg.Po \ - ./$(DEPDIR)/libtests_a-libsocketcall.Po \ - ./$(DEPDIR)/libtests_a-lock_file.Po \ -@@ -8709,6 +8711,8 @@ - hexquote_strndup.c \ - ifindex.c \ - inode_of_sockfd.c \ -+ k_sockopt.c \ -+ k_sockopt.h \ - libmmsg.c \ - libsocketcall.c \ - lock_file.c \ -@@ -16432,6 +16436,7 @@ - @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libtests_a-hexquote_strndup.Po@am__quote@ # am--include-marker - @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libtests_a-ifindex.Po@am__quote@ # am--include-marker - @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libtests_a-inode_of_sockfd.Po@am__quote@ # am--include-marker -+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libtests_a-k_sockopt.Po@am__quote@ # am--include-marker - @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libtests_a-libmmsg.Po@am__quote@ # am--include-marker - @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libtests_a-libsocketcall.Po@am__quote@ # am--include-marker - @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libtests_a-lock_file.Po@am__quote@ # am--include-marker -@@ -17367,6 +17372,20 @@ - @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ - @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libtests_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o libtests_a-inode_of_sockfd.obj `if test -f 'inode_of_sockfd.c'; then $(CYGPATH_W) 'inode_of_sockfd.c'; else $(CYGPATH_W) '$(srcdir)/inode_of_sockfd.c'; fi` - -+libtests_a-k_sockopt.o: k_sockopt.c -+@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libtests_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT libtests_a-k_sockopt.o -MD -MP -MF $(DEPDIR)/libtests_a-k_sockopt.Tpo -c -o libtests_a-k_sockopt.o `test -f 'k_sockopt.c' || echo '$(srcdir)/'`k_sockopt.c -+@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libtests_a-k_sockopt.Tpo $(DEPDIR)/libtests_a-k_sockopt.Po -+@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='k_sockopt.c' object='libtests_a-k_sockopt.o' libtool=no @AMDEPBACKSLASH@ -+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -+@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libtests_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o libtests_a-k_sockopt.o `test -f 'k_sockopt.c' || echo '$(srcdir)/'`k_sockopt.c -+ -+libtests_a-k_sockopt.obj: k_sockopt.c -+@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libtests_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT libtests_a-k_sockopt.obj -MD -MP -MF $(DEPDIR)/libtests_a-k_sockopt.Tpo -c -o libtests_a-k_sockopt.obj `if test -f 'k_sockopt.c'; then $(CYGPATH_W) 'k_sockopt.c'; else $(CYGPATH_W) '$(srcdir)/k_sockopt.c'; fi` -+@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libtests_a-k_sockopt.Tpo $(DEPDIR)/libtests_a-k_sockopt.Po -+@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='k_sockopt.c' object='libtests_a-k_sockopt.obj' libtool=no @AMDEPBACKSLASH@ -+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -+@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libtests_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o libtests_a-k_sockopt.obj `if test -f 'k_sockopt.c'; then $(CYGPATH_W) 'k_sockopt.c'; else $(CYGPATH_W) '$(srcdir)/k_sockopt.c'; fi` -+ - libtests_a-libmmsg.o: libmmsg.c - @am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libtests_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT libtests_a-libmmsg.o -MD -MP -MF $(DEPDIR)/libtests_a-libmmsg.Tpo -c -o libtests_a-libmmsg.o `test -f 'libmmsg.c' || echo '$(srcdir)/'`libmmsg.c - @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libtests_a-libmmsg.Tpo $(DEPDIR)/libtests_a-libmmsg.Po -@@ -19014,6 +19033,7 @@ - -rm -f ./$(DEPDIR)/libtests_a-hexquote_strndup.Po - -rm -f ./$(DEPDIR)/libtests_a-ifindex.Po - -rm -f ./$(DEPDIR)/libtests_a-inode_of_sockfd.Po -+ -rm -f ./$(DEPDIR)/libtests_a-k_sockopt.Po - -rm -f ./$(DEPDIR)/libtests_a-libmmsg.Po - -rm -f ./$(DEPDIR)/libtests_a-libsocketcall.Po - -rm -f ./$(DEPDIR)/libtests_a-lock_file.Po -@@ -20341,6 +20361,7 @@ - -rm -f ./$(DEPDIR)/libtests_a-hexquote_strndup.Po - -rm -f ./$(DEPDIR)/libtests_a-ifindex.Po - -rm -f ./$(DEPDIR)/libtests_a-inode_of_sockfd.Po -+ -rm -f ./$(DEPDIR)/libtests_a-k_sockopt.Po - -rm -f ./$(DEPDIR)/libtests_a-libmmsg.Po - -rm -f ./$(DEPDIR)/libtests_a-libsocketcall.Po - -rm -f ./$(DEPDIR)/libtests_a-lock_file.Po diff --git a/0190-tests-sockopt-timestamp.c-use-k_getsockopt-and-k_set.patch b/0190-tests-sockopt-timestamp.c-use-k_getsockopt-and-k_set.patch deleted file mode 100644 index 07ba684..0000000 --- a/0190-tests-sockopt-timestamp.c-use-k_getsockopt-and-k_set.patch +++ /dev/null @@ -1,60 +0,0 @@ -From cbda4efac4d55f8b3bf6622cdb764d2375a2cf3a Mon Sep 17 00:00:00 2001 -From: Eugene Syromyatnikov -Date: Thu, 31 Oct 2024 13:31:14 +0100 -Subject: [PATCH 190/190] tests/sockopt-timestamp.c: use k_getsockopt and - k_setsockopt - -Avoid using glibc wrappers as these performs additional actions -that lead to the following issues: - - Test segfault on 32-bit compat when an attempt to use - SO_RCVTIMEO_NEW/SO_SNDTIMEO_NEW with opt pointing to unavailable - memory is made; - - Additional calls to SO_TIMESTAMP{,NS}_OLD when SO_TIMESTAMP{NS}_NEW - are called: - - -getsockopt(3, SOL_SOCKET, SO_TIMESTAMP_NEW, [0], [4]) = 0 - [...] - +getsockopt(3, SOL_SOCKET, SO_TIMESTAMP_NEW, 0xf7d3cffc, [4]) = -1 ENOPROTOOPT (Protocol not available) - +getsockopt(3, SOL_SOCKET, SO_TIMESTAMP_OLD, [0], [4]) = 0 - -* tests/sockopt-sol_socket.c: Include "k_sockopt.h". -{get_sockopt): Use k_getsockopt() instead of getsockopt(). -{set_sockopt): Use k_setsockopt() instead of setsockopt(). ---- - tests/sockopt-sol_socket.c | 6 ++++-- - 1 file changed, 4 insertions(+), 2 deletions(-) - -diff --git a/tests/sockopt-sol_socket.c b/tests/sockopt-sol_socket.c -index 833aee6e1904..ee7a866c4385 100644 ---- a/tests/sockopt-sol_socket.c -+++ b/tests/sockopt-sol_socket.c -@@ -13,6 +13,8 @@ - #include - #include - -+#include "k_sockopt.h" -+ - #define XLAT_MACROS_ONLY - # include "xlat/sock_options.h" - #undef XLAT_MACROS_ONLY -@@ -34,7 +36,7 @@ struct intstr { - static int - get_sockopt(int fd, int name, void *val, socklen_t *len) - { -- rc = getsockopt(fd, SOL_SOCKET, name, val, len); -+ rc = k_getsockopt(fd, SOL_SOCKET, name, val, len); - errstr = sprintrc(rc); - return rc; - } -@@ -42,7 +44,7 @@ get_sockopt(int fd, int name, void *val, socklen_t *len) - static int - set_sockopt(int fd, int name, void *val, socklen_t len) - { -- rc = setsockopt(fd, SOL_SOCKET, name, val, len); -+ rc = k_setsockopt(fd, SOL_SOCKET, name, val, len); - errstr = sprintrc(rc); - return rc; - } --- -2.28.0 - diff --git a/0193-tests-do-not-rely-on-creat-syscall-failing-with-ETXT.patch b/0193-tests-do-not-rely-on-creat-syscall-failing-with-ETXT.patch deleted file mode 100644 index b2324e0..0000000 --- a/0193-tests-do-not-rely-on-creat-syscall-failing-with-ETXT.patch +++ /dev/null @@ -1,178 +0,0 @@ -From 35eda7c44b7de347fe723f300ab8bcc8f520ee6f Mon Sep 17 00:00:00 2001 -From: "Dmitry V. Levin" -Date: Sat, 26 Oct 2024 08:00:00 +0000 -Subject: [PATCH] tests: do not rely on creat syscall failing with ETXTBSY - -For many years "creat" syscall used to fail with ETXTBSY when applied -to the running executable: - -$ strace -v tests/creat -execve("tests/creat", ["tests/creat"], []) = 0 -... -creat("tests/creat", 000) = -1 ETXTBSY (Text file busy) -... - -Apparently, something has changed in Fedora Rawhide: -$ strace -v tests/creat -execve("tests/creat", ["tests/creat"], []) = 0 -... -creat("tests/creat", 000) = 3 ---- SIGBUS {si_signo=SIGBUS, si_code=BUS_ADRERR, si_addr=0x401288} --- -+++ killed by SIGBUS (core dumped) +++ -$ stat -c %s tests/creat -0 - -* tests/umode_t.c (sample): Change to ".". -* tests/gen_tests.in (creat, mkdir, mkdirat): Update -a option argument. ---- - tests/gen_tests.in | 6 +++--- - tests/umode_t.c | 5 ++--- - 2 files changed, 5 insertions(+), 6 deletions(-) - -diff --git a/tests/gen_tests.in b/tests/gen_tests.in -index 89367890e992..7fda537d8d75 100644 ---- a/tests/gen_tests.in -+++ b/tests/gen_tests.in -@@ -75,7 +75,7 @@ clone_ptrace-q +clone_ptrace.test -q - clone_ptrace-qq +clone_ptrace.test -qq - close_range -a21 7>>/dev/full - copy_file_range --creat -a20 -+creat -a16 - delete_module -a23 - dev--decode-fds-all -a30 -e trace=openat,fsync -P "/dev/full" -P "/dev/zero" -P "/dev/sda" -e decode-fds=all - dev--decode-fds-dev -a30 -e trace=openat,fsync -P "/dev/full" -P "/dev/zero" -P "/dev/sda" -e decode-fds=dev -@@ -560,8 +560,8 @@ memfd_secret-success-y -einject=memfd_secret:retval=7 -a16 -etrace=memfd_secret - migrate_pages -a33 - migrate_pages--pidns-translation test_pidns -a33 -e trace=migrate_pages - mincore -a22 --mkdir -a20 --mkdirat -a28 -+mkdir -a16 -+mkdirat -a22 - mknod -a18 - mknodat -a35 - mlock -a20 -e trace=mlock,munlock -diff --git a/tests/umode_t.c b/tests/umode_t.c -index 7363883d7c56..0e4c0111d66d 100644 ---- a/tests/umode_t.c -+++ b/tests/umode_t.c -@@ -19,7 +19,7 @@ - # define TEST_SYSCALL_PREFIX_STR "" - #endif - --static const char *sample; -+static const char sample[] = "."; - - static void - test_syscall(unsigned short mode) -@@ -39,9 +39,8 @@ test_syscall(unsigned short mode) - } - - int --main(int ac, char **av) -+main(void) - { -- sample = av[0]; - test_syscall(0); - test_syscall(0xffff); - test_syscall(06); -diff --git a/tests-m32/gen_tests.in b/tests-m32/gen_tests.in -index 89367890e992..7fda537d8d75 100644 ---- a/tests-m32/gen_tests.in -+++ b/tests-m32/gen_tests.in -@@ -75,7 +75,7 @@ clone_ptrace-q +clone_ptrace.test -q - clone_ptrace-qq +clone_ptrace.test -qq - close_range -a21 7>>/dev/full - copy_file_range --creat -a20 -+creat -a16 - delete_module -a23 - dev--decode-fds-all -a30 -e trace=openat,fsync -P "/dev/full" -P "/dev/zero" -P "/dev/sda" -e decode-fds=all - dev--decode-fds-dev -a30 -e trace=openat,fsync -P "/dev/full" -P "/dev/zero" -P "/dev/sda" -e decode-fds=dev -@@ -560,8 +560,8 @@ memfd_secret-success-y -einject=memfd_secret:retval=7 -a16 -etrace=memfd_secret - migrate_pages -a33 - migrate_pages--pidns-translation test_pidns -a33 -e trace=migrate_pages - mincore -a22 --mkdir -a20 --mkdirat -a28 -+mkdir -a16 -+mkdirat -a22 - mknod -a18 - mknodat -a35 - mlock -a20 -e trace=mlock,munlock -diff --git a/tests-m32/umode_t.c b/tests-m32/umode_t.c -index 7363883d7c56..0e4c0111d66d 100644 ---- a/tests-m32/umode_t.c -+++ b/tests-m32/umode_t.c -@@ -19,7 +19,7 @@ - # define TEST_SYSCALL_PREFIX_STR "" - #endif - --static const char *sample; -+static const char sample[] = "."; - - static void - test_syscall(unsigned short mode) -@@ -39,9 +39,8 @@ test_syscall(unsigned short mode) - } - - int --main(int ac, char **av) -+main(void) - { -- sample = av[0]; - test_syscall(0); - test_syscall(0xffff); - test_syscall(06); -diff --git a/tests-mx32/gen_tests.in b/tests-mx32/gen_tests.in -index 89367890e992..7fda537d8d75 100644 ---- a/tests-mx32/gen_tests.in -+++ b/tests-mx32/gen_tests.in -@@ -75,7 +75,7 @@ clone_ptrace-q +clone_ptrace.test -q - clone_ptrace-qq +clone_ptrace.test -qq - close_range -a21 7>>/dev/full - copy_file_range --creat -a20 -+creat -a16 - delete_module -a23 - dev--decode-fds-all -a30 -e trace=openat,fsync -P "/dev/full" -P "/dev/zero" -P "/dev/sda" -e decode-fds=all - dev--decode-fds-dev -a30 -e trace=openat,fsync -P "/dev/full" -P "/dev/zero" -P "/dev/sda" -e decode-fds=dev -@@ -560,8 +560,8 @@ memfd_secret-success-y -einject=memfd_secret:retval=7 -a16 -etrace=memfd_secret - migrate_pages -a33 - migrate_pages--pidns-translation test_pidns -a33 -e trace=migrate_pages - mincore -a22 --mkdir -a20 --mkdirat -a28 -+mkdir -a16 -+mkdirat -a22 - mknod -a18 - mknodat -a35 - mlock -a20 -e trace=mlock,munlock -diff --git a/tests-mx32/umode_t.c b/tests-mx32/umode_t.c -index 7363883d7c56..0e4c0111d66d 100644 ---- a/tests-mx32/umode_t.c -+++ b/tests-mx32/umode_t.c -@@ -19,7 +19,7 @@ - # define TEST_SYSCALL_PREFIX_STR "" - #endif - --static const char *sample; -+static const char sample[] = "."; - - static void - test_syscall(unsigned short mode) -@@ -39,9 +39,8 @@ test_syscall(unsigned short mode) - } - - int --main(int ac, char **av) -+main(void) - { -- sample = av[0]; - test_syscall(0); - test_syscall(0xffff); - test_syscall(06); --- -2.28.0 - diff --git a/sources b/sources index eb34dd4..16f303e 100644 --- a/sources +++ b/sources @@ -1 +1 @@ -SHA512 (strace-6.7.tar.xz) = da28fd9fb987044782e6fd6f5e90e2cea2ab8e536cbd3893ef4c9b11c9b3185f073ca3d8ca0eade49e9a2af8efbda8c2b66b8988be7ebc463dc45e8f48ca1256 +SHA512 (strace-6.12.tar.xz) = ae28f0b6b6fdc980898f11d1903aacb5a31760a07d63bd7cbc8f9b5f337d9db6b40464d6b61a9b03ba6442b476edb78afc91348f539f7780cdd98b174c6a9a1d diff --git a/strace.spec b/strace.spec index 16ce213..e24b562 100644 --- a/strace.spec +++ b/strace.spec @@ -1,7 +1,7 @@ Summary: Tracks and displays system calls associated with a running process Name: strace -Version: 6.7 -Release: 6%{?dist} +Version: 6.12 +Release: 1%{?dist} # The test suite is GPLv2+, the bundled headers are GPLv2 with Linux syscall # exception, all the rest is LGPLv2.1+. %if 0%{?fedora} >= 35 || 0%{?centos} >= 9 || 0%{?rhel} >= 9 @@ -133,35 +133,6 @@ BuildRequires: pkgconfig(bluez) %{?!buildroot:BuildRoot: %_tmppath/buildroot-%name-%version-%release} %define maybe_use_defattr %{?suse_version:%%defattr(-,root,root)} -## https://issues.redhat.com/browse/RHEL-8570 -# v6.11-21-gc7e0ea6d7 "syscall: do not use uninitialized parts of struct ptrace_syscall_info" -Patch183: 0183-syscall-do-not-use-uninitialized-parts-of-struct-ptr.patch -# v6.11-22-g2048c136b "startup_tcb: add a comment" -Patch184: 0184-startup_tcb-add-a-comment.patch -# v6.11-23-g3bf08cbb3 "tests: add another test of restart_syscall decoding" -Patch185: 0185-tests-add-another-test-of-restart_syscall-decoding.patch - -## kernel-5.14.0-417.el9~9 (RHEL 9.4+) has v6.8-rc1~131^2~223 "tcp: Dump bound-only sockets in inet_diag." -# v6.9~27 "tests: workaround net-yy-inet* for new kernels" -Patch186: 0186-tests-workaround-net-yy-inet-for-new-kernels.patch -## Update linkat--secontext_mismatch test to fix the failures reported by QE -# v6.11~4 "tests: avoid linkat--secontext_mismatch failures on setfilecon errors" -Patch187: 0187-tests-avoid-linkat-secontext_mismatch-failures-on-se.patch -# "linux/s390/get_scno.c: use NT_S390_SYSTEM_CALL if gprs[2] is clobbered" -Patch188: 0188-linux-s390-get_scno.c-use-NT_S390_SYSTEM_CALL-if-gpr.patch -# "tests: move k_setsockopt definition into a separate" -Patch189: 0189-tests-move-k_setsockopt-definition-into-a-separate-f.patch -# "tests/sockopt-timestamp.c: use k_getsockopt and k_setsockopt" -Patch190: 0190-tests-sockopt-timestamp.c-use-k_getsockopt-and-k_set.patch -### Fix for prctl-sve.gen test failure on aarch64 -## v5.19~14 "prctl: improve PR_SVE_[SG]ET_VL decoding" -#Patch191: 0191-prctl-improve-PR_SVE_-SG-ET_VL-decoding.patch -## v6.3~32 "tests/prctl-sve: fix prctl(PR_SVE_GET_VL) return expected value printing" -#Patch192: 0192-tests-prctl-sve-fix-prctl-PR_SVE_GET_VL-return-expec.patch -## A fix for OSCI creat.gen.test failures -# v6.11-20-g35eda7c44b7d "tests: do not rely on creat syscall failing with ETXTBSY" -Patch193: 0193-tests-do-not-rely-on-creat-syscall-failing-with-ETXT.patch - # Fallback definitions for make_build/make_install macros %{?!__make: %global __make %_bindir/make} %{?!__install: %global __install %_bindir/install} @@ -181,19 +152,6 @@ received by a process. %prep %setup -q -%patch 183 -p1 -%patch 184 -p1 -%patch 185 -p1 - -%patch 186 -p1 -%patch 187 -p1 -%patch 188 -p1 -%patch 189 -p1 -%patch 190 -p1 -#%patch 191 -p1 -#%patch 192 -p1 -%patch 193 -p1 - chmod a+x tests/*.test echo -n %version-%release > .tarball-version @@ -251,6 +209,9 @@ fi %{_mandir}/man1/* %changelog +* Thu Jan 02 2025 Eugene Syromiatnikov - 6.12-1 +- Rebase to v6.12; drop upstream patches on top of 6.7 (RHEL-62412). + * Tue Nov 05 2024 Eugene Syromiatnikov - 6.7-6 - Avoid failures of creat.gen test on kernels that include commit v6.11-rc1~242^2~19 ("fs: don't block i_writecount during exec").