diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..4048f0b --- /dev/null +++ b/.gitignore @@ -0,0 +1 @@ +SOURCES/strace-4.12.tar.gz diff --git a/.strace.metadata b/.strace.metadata new file mode 100644 index 0000000..9f0e96b --- /dev/null +++ b/.strace.metadata @@ -0,0 +1 @@ +3138a70950fb84ef5fd5c801e992404777f164ec SOURCES/strace-4.12.tar.gz diff --git a/README.md b/README.md deleted file mode 100644 index 0e7897f..0000000 --- a/README.md +++ /dev/null @@ -1,5 +0,0 @@ -The master branch has no content - -Look at the c7 branch if you are working with CentOS-7, or the c4/c5/c6 branch for CentOS-4, 5 or 6 - -If you find this file in a distro specific branch, it means that no content has been checked in yet diff --git a/SOURCES/strace-4.12-chown.patch b/SOURCES/strace-4.12-chown.patch new file mode 100644 index 0000000..35b94cd --- /dev/null +++ b/SOURCES/strace-4.12-chown.patch @@ -0,0 +1,30 @@ +commit 58d0ee2ea5499cf532a03bed39187b1934b06a07 +Author: Dmitry V. Levin +Date: Tue Jul 26 09:58:37 2016 +0000 + + tests: fix chown.test + + * tests/chown.test: Fix the value specified for strace -a parameter. + + Reported-by: Yun-Chih Chen + +diff --git a/tests/chown.test b/tests/chown.test +index 1a94c32..eb356ce 100755 +--- a/tests/chown.test ++++ b/tests/chown.test +@@ -3,4 +3,4 @@ + # Check chown syscall decoding. + + . "${srcdir=.}/init.sh" +-run_strace_match_diff -a29 ++run_strace_match_diff -a28 +diff --git a/tests/chown.test b/tests/chown.test +index 1a94c32..eb356ce 100755 +--- a/tests-m32/chown.test ++++ b/tests-m32/chown.test +@@ -3,4 +3,4 @@ + # Check chown syscall decoding. + + . "${srcdir=.}/init.sh" +-run_strace_match_diff -a29 ++run_strace_match_diff -a28 diff --git a/SOURCES/strace-4.12-vhangup.patch b/SOURCES/strace-4.12-vhangup.patch new file mode 100644 index 0000000..278e0d5 --- /dev/null +++ b/SOURCES/strace-4.12-vhangup.patch @@ -0,0 +1,59 @@ +commit cb44289ee3fd1482d3b8551d2e3b4568eb57e114 +Author: Dmitry V. Levin +Date: Tue Jul 26 10:20:24 2016 +0000 + + tests: fix vhangup.test + + * tests/vhangup.c (main): Fix expected output for the case when + the calling process has CAP_SYS_TTY_CONFIG capability. + + Reported-by: Yun-Chih Chen + +diff --git a/tests/vhangup.c b/tests/vhangup.c +index ba90319..468f334 100644 +--- a/tests/vhangup.c ++++ b/tests/vhangup.c +@@ -13,7 +13,18 @@ main(void) + perror_msg_and_skip("setsid"); + + long rc = syscall(__NR_vhangup); +- printf("vhangup() = %ld %s (%m)\n", rc, errno2name()); ++ ++ /* ++ * On setsid() success, the new session has no controlling terminal, ++ * therefore a subsequent vhangup() has nothing to hangup. ++ * ++ * The system call, however, returns 0 iff the calling process ++ * has CAP_SYS_TTY_CONFIG capability. ++ */ ++ if (rc) ++ printf("vhangup() = %ld %s (%m)\n", rc, errno2name()); ++ else ++ puts("vhangup() = 0"); + + puts("+++ exited with 0 +++"); + return 0; +diff --git a/tests/vhangup.c b/tests/vhangup.c +index ba90319..468f334 100644 +--- a/tests-m32/vhangup.c ++++ b/tests-m32/vhangup.c +@@ -13,7 +13,18 @@ main(void) + perror_msg_and_skip("setsid"); + + long rc = syscall(__NR_vhangup); +- printf("vhangup() = %ld %s (%m)\n", rc, errno2name()); ++ ++ /* ++ * On setsid() success, the new session has no controlling terminal, ++ * therefore a subsequent vhangup() has nothing to hangup. ++ * ++ * The system call, however, returns 0 iff the calling process ++ * has CAP_SYS_TTY_CONFIG capability. ++ */ ++ if (rc) ++ printf("vhangup() = %ld %s (%m)\n", rc, errno2name()); ++ else ++ puts("vhangup() = 0"); + + puts("+++ exited with 0 +++"); + return 0; diff --git a/SOURCES/strace-no-net-tests.patch b/SOURCES/strace-no-net-tests.patch new file mode 100644 index 0000000..8152249 --- /dev/null +++ b/SOURCES/strace-no-net-tests.patch @@ -0,0 +1,98 @@ +Only in b: count.c.orig +Only in b: count.c.rej +diff -rup a/tests/Makefile.am b/tests/Makefile.am +--- a/tests/Makefile.am 2016-05-28 15:31:50.000000000 -0400 ++++ b/tests/Makefile.am 2016-07-22 17:03:00.957064111 -0400 +@@ -492,12 +492,6 @@ DECODER_TESTS = \ + mq.test \ + munlockall.test \ + nanosleep.test \ +- net-icmp_filter.test \ +- net-y-unix.test \ +- net-yy-inet.test \ +- net-yy-netlink.test \ +- net-yy-unix.test \ +- net.test \ + newfstatat.test \ + nsyscalls.test \ + old_mmap.test \ +diff -rup a/tests/Makefile.in b/tests/Makefile.in +--- a/tests/Makefile.in 2016-05-31 07:35:59.000000000 -0400 ++++ b/tests/Makefile.in 2016-07-22 17:03:05.215079250 -0400 +@@ -2001,12 +2001,6 @@ DECODER_TESTS = \ + mq.test \ + munlockall.test \ + nanosleep.test \ +- net-icmp_filter.test \ +- net-y-unix.test \ +- net-yy-inet.test \ +- net-yy-netlink.test \ +- net-yy-unix.test \ +- net.test \ + newfstatat.test \ + nsyscalls.test \ + old_mmap.test \ +diff -rup a/tests-m32/Makefile.am b/tests-m32/Makefile.am +--- a/tests-m32/Makefile.am 2016-05-31 07:35:28.000000000 -0400 ++++ b/tests-m32/Makefile.am 2016-07-22 17:02:36.756977946 -0400 +@@ -492,12 +492,6 @@ DECODER_TESTS = \ + mq.test \ + munlockall.test \ + nanosleep.test \ +- net-icmp_filter.test \ +- net-y-unix.test \ +- net-yy-inet.test \ +- net-yy-netlink.test \ +- net-yy-unix.test \ +- net.test \ + newfstatat.test \ + nsyscalls.test \ + old_mmap.test \ +diff -rup a/tests-m32/Makefile.in b/tests-m32/Makefile.in +--- a/tests-m32/Makefile.in 2016-05-31 07:35:58.000000000 -0400 ++++ b/tests-m32/Makefile.in 2016-07-22 17:02:44.747006419 -0400 +@@ -2001,12 +2001,6 @@ DECODER_TESTS = \ + mq.test \ + munlockall.test \ + nanosleep.test \ +- net-icmp_filter.test \ +- net-y-unix.test \ +- net-yy-inet.test \ +- net-yy-netlink.test \ +- net-yy-unix.test \ +- net.test \ + newfstatat.test \ + nsyscalls.test \ + old_mmap.test \ +diff -rup a/tests-mx32/Makefile.am b/tests-mx32/Makefile.am +--- a/tests-mx32/Makefile.am 2016-05-31 07:35:29.000000000 -0400 ++++ b/tests-mx32/Makefile.am 2016-07-22 17:02:50.878028251 -0400 +@@ -492,12 +492,6 @@ DECODER_TESTS = \ + mq.test \ + munlockall.test \ + nanosleep.test \ +- net-icmp_filter.test \ +- net-y-unix.test \ +- net-yy-inet.test \ +- net-yy-netlink.test \ +- net-yy-unix.test \ +- net.test \ + newfstatat.test \ + nsyscalls.test \ + old_mmap.test \ +diff -rup a/tests-mx32/Makefile.in b/tests-mx32/Makefile.in +--- a/tests-mx32/Makefile.in 2016-05-31 07:35:58.000000000 -0400 ++++ b/tests-mx32/Makefile.in 2016-07-22 17:02:56.451048084 -0400 +@@ -2001,12 +2001,6 @@ DECODER_TESTS = \ + mq.test \ + munlockall.test \ + nanosleep.test \ +- net-icmp_filter.test \ +- net-y-unix.test \ +- net-yy-inet.test \ +- net-yy-netlink.test \ +- net-yy-unix.test \ +- net.test \ + newfstatat.test \ + nsyscalls.test \ + old_mmap.test \ diff --git a/SOURCES/strace-no-setgid-rhel6.patch b/SOURCES/strace-no-setgid-rhel6.patch new file mode 100644 index 0000000..d746ef2 --- /dev/null +++ b/SOURCES/strace-no-setgid-rhel6.patch @@ -0,0 +1,262 @@ +diff -rup a/tests/Makefile.am b/tests/Makefile.am +--- a/tests/Makefile.am 2017-02-16 20:50:25.000000000 -0500 ++++ b/tests/Makefile.am 2017-02-17 18:15:56.441584430 -0500 +@@ -239,7 +239,6 @@ check_PROGRAMS = \ + rt_sigqueueinfo \ + rt_sigsuspend \ + rt_sigtimedwait \ +- rt_tgsigqueueinfo \ + sched_get_priority_mxx \ + sched_rr_get_interval \ + sched_xetaffinity \ +@@ -267,7 +266,6 @@ check_PROGRAMS = \ + setgroups \ + setgroups32 \ + sethostname \ +- setregid \ + setregid32 \ + setresgid \ + setresgid32 \ +@@ -379,11 +377,9 @@ DECODER_TESTS = \ + btrfs-vw.test \ + caps.test \ + chmod.test \ +- chown.test \ + chown32.test \ + chroot.test \ + clock_adjtime.test \ +- clock_nanosleep.test \ + clock_xettime.test \ + copy_file_range.test \ + creat.test \ +@@ -405,7 +401,6 @@ DECODER_TESTS = \ + fchdir.test \ + fchmod.test \ + fchmodat.test \ +- fchown.test \ + fchown32.test \ + fchownat.test \ + fcntl.test \ +@@ -464,7 +459,6 @@ DECODER_TESTS = \ + ipc_sem.test \ + ipc_shm.test \ + kill.test \ +- lchown.test \ + lchown32.test \ + link.test \ + linkat.test \ +@@ -486,19 +480,16 @@ DECODER_TESTS = \ + mlockall.test \ + mmap.test \ + mmap64.test \ +- mmsg.test \ + mount.test \ + move_pages.test \ + mq.test \ + munlockall.test \ +- nanosleep.test \ + newfstatat.test \ + nsyscalls.test \ + old_mmap.test \ + oldselect.test \ + open.test \ + openat.test \ +- pause.test \ + personality.test \ + pipe.test \ + poll.test \ +@@ -509,7 +500,6 @@ DECODER_TESTS = \ + preadv-pwritev.test \ + preadv2-pwritev2.test \ + preadv.test \ +- pselect6.test \ + ptrace.test \ + pwritev.test \ + read-write.test \ +@@ -527,9 +517,7 @@ DECODER_TESTS = \ + rt_sigpending.test \ + rt_sigprocmask.test \ + rt_sigqueueinfo.test \ +- rt_sigsuspend.test \ + rt_sigtimedwait.test \ +- rt_tgsigqueueinfo.test \ + sched_get_priority_mxx.test \ + sched_rr_get_interval.test \ + sched_xetaffinity.test \ +@@ -543,28 +531,19 @@ DECODER_TESTS = \ + seccomp-strict.test \ + select.test \ + semop.test \ +- sendfile.test \ +- sendfile64.test \ + set_mempolicy.test \ + setdomainname.test \ + setfsgid.test \ + setfsgid32.test \ + setfsuid.test \ + setfsuid32.test \ +- setgid.test \ + setgid32.test \ +- setgroups.test \ + setgroups32.test \ + sethostname.test \ +- setregid.test \ + setregid32.test \ +- setresgid.test \ + setresgid32.test \ +- setresuid.test \ + setresuid32.test \ +- setreuid.test \ + setreuid32.test \ +- setuid.test \ + setuid32.test \ + shmxt.test \ + sigaction.test \ +@@ -580,7 +559,6 @@ DECODER_TESTS = \ + swap.test \ + symlink.test \ + symlinkat.test \ +- sync.test \ + sync_file_range.test \ + sync_file_range2.test \ + sysinfo.test \ +@@ -635,16 +613,11 @@ MISC_TESTS = \ + pc.test \ + qual_syscall.test \ + redirect.test \ +- restart_syscall.test \ + strace-S.test \ + strace-T.test \ + strace-V.test \ + strace-f.test \ + strace-ff.test \ +- strace-r.test \ +- strace-t.test \ +- strace-tt.test \ +- strace-ttt.test \ + vfork-f.test \ + # end of MISC_TESTS + +diff -rup a/tests/Makefile.in b/tests/Makefile.in +--- a/tests/Makefile.in 2017-02-16 20:50:25.000000000 -0500 ++++ b/tests/Makefile.in 2017-02-17 18:15:49.968555043 -0500 +@@ -1888,11 +1888,9 @@ DECODER_TESTS = \ + btrfs-vw.test \ + caps.test \ + chmod.test \ +- chown.test \ + chown32.test \ + chroot.test \ + clock_adjtime.test \ +- clock_nanosleep.test \ + clock_xettime.test \ + copy_file_range.test \ + creat.test \ +@@ -1914,7 +1912,6 @@ DECODER_TESTS = \ + fchdir.test \ + fchmod.test \ + fchmodat.test \ +- fchown.test \ + fchown32.test \ + fchownat.test \ + fcntl.test \ +@@ -1973,7 +1970,6 @@ DECODER_TESTS = \ + ipc_sem.test \ + ipc_shm.test \ + kill.test \ +- lchown.test \ + lchown32.test \ + link.test \ + linkat.test \ +@@ -1995,19 +1991,16 @@ DECODER_TESTS = \ + mlockall.test \ + mmap.test \ + mmap64.test \ +- mmsg.test \ + mount.test \ + move_pages.test \ + mq.test \ + munlockall.test \ +- nanosleep.test \ + newfstatat.test \ + nsyscalls.test \ + old_mmap.test \ + oldselect.test \ + open.test \ + openat.test \ +- pause.test \ + personality.test \ + pipe.test \ + poll.test \ +@@ -2018,7 +2011,6 @@ DECODER_TESTS = \ + preadv-pwritev.test \ + preadv2-pwritev2.test \ + preadv.test \ +- pselect6.test \ + ptrace.test \ + pwritev.test \ + read-write.test \ +@@ -2036,9 +2028,7 @@ DECODER_TESTS = \ + rt_sigpending.test \ + rt_sigprocmask.test \ + rt_sigqueueinfo.test \ +- rt_sigsuspend.test \ + rt_sigtimedwait.test \ +- rt_tgsigqueueinfo.test \ + sched_get_priority_mxx.test \ + sched_rr_get_interval.test \ + sched_xetaffinity.test \ +@@ -2052,28 +2042,19 @@ DECODER_TESTS = \ + seccomp-strict.test \ + select.test \ + semop.test \ +- sendfile.test \ +- sendfile64.test \ + set_mempolicy.test \ + setdomainname.test \ + setfsgid.test \ + setfsgid32.test \ + setfsuid.test \ + setfsuid32.test \ +- setgid.test \ + setgid32.test \ +- setgroups.test \ + setgroups32.test \ + sethostname.test \ +- setregid.test \ + setregid32.test \ +- setresgid.test \ + setresgid32.test \ +- setresuid.test \ + setresuid32.test \ +- setreuid.test \ + setreuid32.test \ +- setuid.test \ + setuid32.test \ + shmxt.test \ + sigaction.test \ +@@ -2089,7 +2070,6 @@ DECODER_TESTS = \ + swap.test \ + symlink.test \ + symlinkat.test \ +- sync.test \ + sync_file_range.test \ + sync_file_range2.test \ + sysinfo.test \ +@@ -2144,16 +2124,11 @@ MISC_TESTS = \ + pc.test \ + qual_syscall.test \ + redirect.test \ +- restart_syscall.test \ + strace-S.test \ + strace-T.test \ + strace-V.test \ + strace-f.test \ + strace-ff.test \ +- strace-r.test \ +- strace-t.test \ +- strace-tt.test \ +- strace-ttt.test \ + vfork-f.test \ + # end of MISC_TESTS + diff --git a/SOURCES/strace-no-uio-tests.patch b/SOURCES/strace-no-uio-tests.patch new file mode 100644 index 0000000..7d8963b --- /dev/null +++ b/SOURCES/strace-no-uio-tests.patch @@ -0,0 +1,66 @@ +diff -rup a/tests/Makefile.am b/tests/Makefile.am +--- a/tests/Makefile.am 2016-07-22 17:03:00.000000000 -0400 ++++ b/tests/Makefile.am 2016-07-22 17:12:48.577093495 -0400 +@@ -594,7 +594,6 @@ DECODER_TESTS = \ + times.test \ + truncate.test \ + truncate64.test \ +- uio.test \ + umask.test \ + umount.test \ + umount2.test \ +diff -rup a/tests/Makefile.in b/tests/Makefile.in +--- a/tests/Makefile.in 2016-07-22 17:03:05.000000000 -0400 ++++ b/tests/Makefile.in 2016-07-22 17:12:57.945124915 -0400 +@@ -2103,7 +2103,6 @@ DECODER_TESTS = \ + times.test \ + truncate.test \ + truncate64.test \ +- uio.test \ + umask.test \ + umount.test \ + umount2.test \ +diff -rup a/tests-m32/Makefile.am b/tests-m32/Makefile.am +--- a/tests-m32/Makefile.am 2016-07-22 17:02:36.000000000 -0400 ++++ b/tests-m32/Makefile.am 2016-07-22 17:12:09.252961282 -0400 +@@ -594,7 +594,6 @@ DECODER_TESTS = \ + times.test \ + truncate.test \ + truncate64.test \ +- uio.test \ + umask.test \ + umount.test \ + umount2.test \ +diff -rup a/tests-m32/Makefile.in b/tests-m32/Makefile.in +--- a/tests-m32/Makefile.in 2016-07-22 17:02:44.000000000 -0400 ++++ b/tests-m32/Makefile.in 2016-07-22 17:12:22.068004420 -0400 +@@ -2103,7 +2103,6 @@ DECODER_TESTS = \ + times.test \ + truncate.test \ + truncate64.test \ +- uio.test \ + umask.test \ + umount.test \ + umount2.test \ +diff -rup a/tests-mx32/Makefile.am b/tests-mx32/Makefile.am +--- a/tests-mx32/Makefile.am 2016-07-22 17:02:50.000000000 -0400 ++++ b/tests-mx32/Makefile.am 2016-07-22 17:12:31.110034827 -0400 +@@ -594,7 +594,6 @@ DECODER_TESTS = \ + times.test \ + truncate.test \ + truncate64.test \ +- uio.test \ + umask.test \ + umount.test \ + umount2.test \ +diff -rup a/tests-mx32/Makefile.in b/tests-mx32/Makefile.in +--- a/tests-mx32/Makefile.in 2016-07-22 17:02:56.000000000 -0400 ++++ b/tests-mx32/Makefile.in 2016-07-22 17:12:38.169058548 -0400 +@@ -2103,7 +2103,6 @@ DECODER_TESTS = \ + times.test \ + truncate.test \ + truncate64.test \ +- uio.test \ + umask.test \ + umount.test \ + umount2.test \ diff --git a/SOURCES/strace-rh1377847.patch b/SOURCES/strace-rh1377847.patch new file mode 100644 index 0000000..056e921 --- /dev/null +++ b/SOURCES/strace-rh1377847.patch @@ -0,0 +1,58 @@ +diff -rup a/open.c b/open.c +--- a/open.c 2017-03-27 13:09:44.077819446 -0400 ++++ b/open.c 2017-03-27 13:10:05.300586883 -0400 +@@ -36,6 +36,10 @@ + + #include + ++#ifndef O_TMPFILE ++#define O_TMPFILE 020000000 ++#endif ++ + #ifdef O_LARGEFILE + # if O_LARGEFILE == 0 /* biarch platforms in 64-bit mode */ + # undef O_LARGEFILE +@@ -115,6 +119,13 @@ tprint_open_modes(unsigned int flags) + tprints(sprint_open_modes(flags) + sizeof("flags")); + } + ++#ifdef O_TMPFILE ++/* The kernel & C libraries often inline O_DIRECTORY. */ ++# define STRACE_O_TMPFILE (O_TMPFILE & ~O_DIRECTORY) ++#else /* !O_TMPFILE */ ++# define STRACE_O_TMPFILE 0 ++#endif ++ + static int + decode_open(struct tcb *tcp, int offset) + { +@@ -122,7 +133,7 @@ decode_open(struct tcb *tcp, int offset) + tprints(", "); + /* flags */ + tprint_open_modes(tcp->u_arg[offset + 1]); +- if (tcp->u_arg[offset + 1] & O_CREAT) { ++ if (tcp->u_arg[offset + 1] & (O_CREAT | STRACE_O_TMPFILE)) { + /* mode */ + tprintf(", %#lo", tcp->u_arg[offset + 2]); + } +diff -rup a/tests/open.c b/tests/open.c +--- a/tests/open.c 2017-03-27 13:09:44.078819435 -0400 ++++ b/tests/open.c 2017-03-27 13:31:55.843649714 -0400 +@@ -59,6 +59,17 @@ main(void) + " = %d %s (%m)\n", sample, fd, errno2name()); + } + ++#ifdef O_TMPFILE ++# if O_TMPFILE == (O_TMPFILE & ~O_DIRECTORY) ++# define STR_O_TMPFILE "O_TMPFILE" ++# else ++# define STR_O_TMPFILE "O_DIRECTORY|O_TMPFILE" ++# endif ++ fd = syscall(__NR_open, sample, O_WRONLY|O_TMPFILE, 0600); ++ printf("open(\"%s\", O_WRONLY|%s, 0600) = %d %s (%m)\n", ++ sample, STR_O_TMPFILE, fd, errno2name()); ++#endif /* O_TMPFILE */ ++ + puts("+++ exited with 0 +++"); + return 0; + } diff --git a/SOURCES/strace-rh1449935.patch b/SOURCES/strace-rh1449935.patch new file mode 100644 index 0000000..904078e --- /dev/null +++ b/SOURCES/strace-rh1449935.patch @@ -0,0 +1,64 @@ +Only in b: autom4te.cache +diff -rup a/config.h.in b/config.h.in +--- a/config.h.in 2016-05-31 07:35:56.000000000 -0400 ++++ b/config.h.in 2017-05-12 17:32:49.134113672 -0400 +@@ -1782,9 +1782,13 @@ + /* Define to 1 if the system has the type `struct blk_user_trace_setup'. */ + #undef HAVE_STRUCT_BLK_USER_TRACE_SETUP + +-/* Define to 1 if `start struct btrfs_ioctl_search_args_v2.buf_size' is a +- member of `struct btrfs_ioctl_defrag_range_args'. */ +-#undef HAVE_STRUCT_BTRFS_IOCTL_DEFRAG_RANGE_ARGS_START_STRUCT_BTRFS_IOCTL_SEARCH_ARGS_V2_BUF_SIZE ++/* Define to 1 if `start' is a member of `struct ++ btrfs_ioctl_defrag_range_args'. */ ++#undef HAVE_STRUCT_BTRFS_IOCTL_DEFRAG_RANGE_ARGS_START ++ ++/* Define to 1 if `buf_size' is a member of `struct ++ btrfs_ioctl_search_args_v2'. */ ++#undef HAVE_STRUCT_BTRFS_IOCTL_SEARCH_ARGS_V2_BUF_SIZE + + /* Define to 1 if `compat_flags' is a member of `struct + btrfs_ioctl_feature_flags'. */ +diff -rup a/configure b/configure +--- a/configure 2017-05-12 16:59:22.000000000 -0400 ++++ b/configure 2017-05-12 17:15:19.843076820 -0400 +@@ -8454,13 +8454,24 @@ _ACEOF + + + fi +-ac_fn_c_check_member "$LINENO" "struct btrfs_ioctl_defrag_range_args" "start struct btrfs_ioctl_search_args_v2.buf_size" "ac_cv_member_struct_btrfs_ioctl_defrag_range_args_start_struct_btrfs_ioctl_search_args_v2_buf_size" " #include ++ac_fn_c_check_member "$LINENO" "struct btrfs_ioctl_defrag_range_args" "start" "ac_cv_member_struct_btrfs_ioctl_defrag_range_args_start" " #include + #include + " +-if test "x$ac_cv_member_struct_btrfs_ioctl_defrag_range_args_start_struct_btrfs_ioctl_search_args_v2_buf_size" = xyes; then : ++if test "x$ac_cv_member_struct_btrfs_ioctl_defrag_range_args_start" = xyes; then : + + cat >>confdefs.h <<_ACEOF +-#define HAVE_STRUCT_BTRFS_IOCTL_DEFRAG_RANGE_ARGS_START_STRUCT_BTRFS_IOCTL_SEARCH_ARGS_V2_BUF_SIZE 1 ++#define HAVE_STRUCT_BTRFS_IOCTL_DEFRAG_RANGE_ARGS_START 1 ++_ACEOF ++ ++ ++fi ++ac_fn_c_check_member "$LINENO" "struct btrfs_ioctl_search_args_v2" "buf_size" "ac_cv_member_struct_btrfs_ioctl_search_args_v2_buf_size" " #include ++#include ++" ++if test "x$ac_cv_member_struct_btrfs_ioctl_search_args_v2_buf_size" = xyes; then : ++ ++cat >>confdefs.h <<_ACEOF ++#define HAVE_STRUCT_BTRFS_IOCTL_SEARCH_ARGS_V2_BUF_SIZE 1 + _ACEOF + + +diff -rup a/configure.ac b/configure.ac +--- a/configure.ac 2017-05-12 16:59:22.000000000 -0400 ++++ b/configure.ac 2017-05-12 17:15:13.077083844 -0400 +@@ -464,7 +464,7 @@ AC_CHECK_HEADERS([linux/btrfs.h], [ + AC_CHECK_MEMBERS(m4_normalize([ + struct btrfs_ioctl_feature_flags.compat_flags, + struct btrfs_ioctl_fs_info_args.nodesize, +- struct btrfs_ioctl_defrag_range_args.start ++ struct btrfs_ioctl_defrag_range_args.start, + struct btrfs_ioctl_search_args_v2.buf_size + ]),,, [ #include + #include ]) diff --git a/SOURCES/strace-rh1466535.patch b/SOURCES/strace-rh1466535.patch new file mode 100644 index 0000000..b3964cd --- /dev/null +++ b/SOURCES/strace-rh1466535.patch @@ -0,0 +1,63 @@ +commit 1b93f4032a246e0aa43c2f424921e0aace57b994 +Author: Eugene Syromyatnikov +Date: Fri Aug 4 11:33:04 2017 +0200 + + Improve handling of unexpected tracees + + When receiving a ptrace stop of an unexpected child, handle it + in the most transparent way possible: + - detach it instead of PTRACE_CONT'ing; + - send it the signal with which it has been stopped. + This should hopefully help to deal with processes that have been created + with misused CLONE_PTRACE flag set. + + * strace.c (maybe_allocate_tcb) : + Calculate the signal similarly to the way next_event does, + forward it to the unexpected tracee, and detach the tracee. + +commit 7a35b711df127664e7430b2644ae92c75f3d5f67 +Author: Dmitry V. Levin +Date: Sun Aug 6 13:27:07 2017 +0000 + + Fix handling of unexpected tracees when PTRACE_SEIZE is not in use + + * strace.c (maybe_allocate_tcb) : + The expected ptrace stop signal in case of !use seize is not + syscall_trap_sig but SIGSTOP. An idea of using PTRACE_GETSIGINFO to + distinguish signal stops that should be re-injected from other kinds + of stops didn't work out due to kernel implementation peculiarities + of initial ptrace-stop. + +commit 330f4633d5103938982602b6f21f761570e3482c +Author: Dmitry V. Levin +Date: Sun Aug 6 15:10:56 2017 +0000 + + Simplify handling of unexpected tracees + + * strace.c (maybe_allocate_tcb) : + Remove the dance around possible re-injection of WSTOPSIG(status) + as the only observable stop here is the initial ptrace-stop. + +diff -rup a/strace.c b/strace.c +--- a/strace.c 2017-08-31 14:04:21.000000000 -0400 ++++ b/strace.c 2017-08-31 14:51:32.523134570 -0400 +@@ -1958,11 +1958,15 @@ maybe_allocate_tcb(const int pid, int st + error_msg("Process %d attached", pid); + return tcp; + } else { +- /* This can happen if a clone call used +- * CLONE_PTRACE itself. ++ /* ++ * This can happen if a clone call misused CLONE_PTRACE itself. ++ * ++ * There used to be a dance around possible re-injection of ++ * WSTOPSIG(status), but it was later removed as the only ++ * observable stop here is the initial ptrace-stop. + */ +- ptrace(PTRACE_CONT, pid, (char *) 0, 0); +- error_msg("Stop of unknown pid %u seen, PTRACE_CONTed it", pid); ++ ptrace(PTRACE_DETACH, pid, NULL, 0L); ++ error_msg("Detached unknown pid %d", pid); + return NULL; + } + } diff --git a/SOURCES/strace-rh1540954-1.patch b/SOURCES/strace-rh1540954-1.patch new file mode 100644 index 0000000..c90b29b --- /dev/null +++ b/SOURCES/strace-rh1540954-1.patch @@ -0,0 +1,51 @@ +commit 52231be034160c786735c6ae2f51ac7723c2e1fd +Author: Dmitry V. Levin +Date: Fri Sep 15 16:06:14 2017 +0000 + + Update MEMBARRIER_CMD_* constants + + * xlat/membarrier_cmds.in: Add MEMBARRIER_CMD_PRIVATE_EXPEDITED + introduced by kernel commit v4.14-rc1~174^2^2^4. + * NEWS: Mention this. + * tests/membarrier.c (main): Update expected output. + +diff -rup a/tests/membarrier.c b/tests/membarrier.c +--- a/tests/membarrier.c 2016-04-21 14:16:50.000000000 -0400 ++++ b/tests/membarrier.c 2018-02-05 19:24:07.016341127 -0500 +@@ -42,10 +42,23 @@ main(void) + printf("membarrier(0x3 /* MEMBARRIER_CMD_??? */, 255) = -1 %s (%m)\n", + errno2name()); + if (errno != ENOSYS) { +- /* the test needs to be updated? */ +- assert(syscall(__NR_membarrier, 0, 0) == 1); +- puts("membarrier(MEMBARRIER_CMD_QUERY, 0)" +- " = 0x1 (MEMBARRIER_CMD_SHARED)"); ++ const char *text; ++ int rc = syscall(__NR_membarrier, 0, 0); ++ ++ switch (rc) { ++ case 1: ++ text = "MEMBARRIER_CMD_SHARED"; ++ break; ++ case 1|8: ++ text = "MEMBARRIER_CMD_SHARED|" ++ "MEMBARRIER_CMD_PRIVATE_EXPEDITED"; ++ break; ++ default: ++ error_msg_and_fail("membarrier returned %#x, does" ++ " the test have to be updated?", rc); ++ } ++ printf("membarrier(MEMBARRIER_CMD_QUERY, 0) = %#x (%s)\n", ++ rc, text); + } + puts("+++ exited with 0 +++"); + return 0; +diff -rup a/xlat/membarrier_cmds.in b/xlat/membarrier_cmds.in +--- a/xlat/membarrier_cmds.in 2015-11-16 19:40:22.000000000 -0500 ++++ b/xlat/membarrier_cmds.in 2018-02-05 19:23:39.097820501 -0500 +@@ -1,2 +1,3 @@ +-MEMBARRIER_CMD_QUERY 0 +-MEMBARRIER_CMD_SHARED 1 ++MEMBARRIER_CMD_QUERY 0 ++MEMBARRIER_CMD_SHARED 1 ++MEMBARRIER_CMD_PRIVATE_EXPEDITED 8 diff --git a/SOURCES/strace-rh1540954-2.patch b/SOURCES/strace-rh1540954-2.patch new file mode 100644 index 0000000..d4ff3e2 --- /dev/null +++ b/SOURCES/strace-rh1540954-2.patch @@ -0,0 +1,60 @@ +commit 73354cff1aae409d6ef7d8a539a2a0a09c2480f9 +Author: Dmitry V. Levin +Date: Wed Nov 1 00:20:44 2017 +0000 + + Update MEMBARRIER_CMD_* constants + + * xlat/membarrier_cmds.in: Add MEMBARRIER_CMD_REGISTER_PRIVATE_EXPEDITED + introduced by kernel commit v4.14-rc6~26. + * tests/membarrier.c (main): Update expected output. + +diff --git a/tests/membarrier.c b/tests/membarrier.c +index 7d79724..75a8469 100644 +--- a/tests/membarrier.c ++++ b/tests/membarrier.c +@@ -55,6 +55,11 @@ main(void) + text = "MEMBARRIER_CMD_SHARED|" + "MEMBARRIER_CMD_PRIVATE_EXPEDITED"; + break; ++ case 1|8|16: ++ text = "MEMBARRIER_CMD_SHARED|" ++ "MEMBARRIER_CMD_PRIVATE_EXPEDITED|" ++ "MEMBARRIER_CMD_REGISTER_PRIVATE_EXPEDITED"; ++ break; + default: + error_msg_and_fail("membarrier returned %#x, does" + " the test have to be updated?", rc); +diff --git a/xlat/membarrier_cmds.in b/xlat/membarrier_cmds.in +index 3baef17..e4fe06a 100644 +--- a/xlat/membarrier_cmds.in ++++ b/xlat/membarrier_cmds.in +@@ -1,3 +1,4 @@ + MEMBARRIER_CMD_QUERY 0 + MEMBARRIER_CMD_SHARED 1 + MEMBARRIER_CMD_PRIVATE_EXPEDITED 8 ++MEMBARRIER_CMD_REGISTER_PRIVATE_EXPEDITED 16 +diff -rup a/xlat/membarrier_cmds.h b/xlat/membarrier_cmds.h +--- a/xlat/membarrier_cmds.h 2016-05-31 07:35:42.000000000 -0400 ++++ b/xlat/membarrier_cmds.h 2018-02-05 19:44:34.045234830 -0500 +@@ -5,6 +5,12 @@ + #if !(defined(MEMBARRIER_CMD_SHARED) || (defined(HAVE_DECL_MEMBARRIER_CMD_SHARED) && HAVE_DECL_MEMBARRIER_CMD_SHARED)) + # define MEMBARRIER_CMD_SHARED 1 + #endif ++#if !(defined(MEMBARRIER_CMD_PRIVATE_EXPEDITED) || (defined(HAVE_DECL_MEMBARRIER_CMD_PRIVATE_EXPEDITED) && HAVE_DECL_MEMBARRIER_CMD_PRIVATE_EXPEDITED)) ++# define MEMBARRIER_CMD_PRIVATE_EXPEDITED 8 ++#endif ++#if !(defined(MEMBARRIER_CMD_REGISTER_PRIVATE_EXPEDITED) || (defined(HAVE_DECL_MEMBARRIER_CMD_REGISTER_PRIVATE_EXPEDITED) && HAVE_DECL_MEMBARRIER_CMD_REGISTER_PRIVATE_EXPEDITED)) ++# define MEMBARRIER_CMD_REGISTER_PRIVATE_EXPEDITED 16 ++#endif + + #ifdef IN_MPERS + +@@ -16,6 +22,8 @@ static + const struct xlat membarrier_cmds[] = { + XLAT(MEMBARRIER_CMD_QUERY), + XLAT(MEMBARRIER_CMD_SHARED), ++ XLAT(MEMBARRIER_CMD_PRIVATE_EXPEDITED), ++ XLAT(MEMBARRIER_CMD_REGISTER_PRIVATE_EXPEDITED), + XLAT_END + }; + diff --git a/SOURCES/strace-rh851457.patch b/SOURCES/strace-rh851457.patch new file mode 100644 index 0000000..d5f49d0 --- /dev/null +++ b/SOURCES/strace-rh851457.patch @@ -0,0 +1,241 @@ +diff -Nrup a/defs.h b/defs.h +--- a/defs.h 2016-05-29 20:29:14.000000000 -0400 ++++ b/defs.h 2016-07-22 16:52:17.891092163 -0400 +@@ -294,6 +294,9 @@ struct tcb { + int pid; /* If 0, this tcb is free */ + int qual_flg; /* qual_flags[scno] or DEFAULT_QUAL_FLAGS + RAW */ + int u_error; /* Error code */ ++ int wait_status; /* Status from last wait() */ ++ struct tcb *next_need_service; ++ /* Linked list of tracees found by wait()s */ + long scno; /* System call number */ + long u_arg[MAX_ARGS]; /* System call arguments */ + #if defined(LINUX_MIPSN32) || defined(X32) +diff -Nrup a/strace.c b/strace.c +--- a/strace.c 2016-05-26 11:34:28.000000000 -0400 ++++ b/strace.c 2016-07-22 16:52:17.895092175 -0400 +@@ -2095,17 +2095,40 @@ startup_tcb(struct tcb *tcp) + } + } + ++static int remembered_pid; ++static int remembered_status; ++ + /* Returns true iff the main trace loop has to continue. */ + static bool + trace(void) + { + int pid; ++ struct tcb *tcp; ++ struct tcb *found_tcps; ++ struct tcb **nextp; ++ struct tcb *next; ++ int wnohang = 0; ++ ++ if (remembered_pid) { ++ pid = remembered_pid; ++ remembered_pid = 0; ++ if (debug_flag) ++ fprintf(stderr, " [remembered wait(%#x) = %u]\n", ++ remembered_status, pid); ++ tcp = pid2tcb(pid); /* can't be NULL */ ++ tcp->wait_status = remembered_status; ++ tcp->next_need_service = NULL; ++ found_tcps = tcp; ++ goto process_saved_tcbs; ++ } ++ ++ nextp = &found_tcps; ++ found_tcps = NULL; ++ ++ while (1) { /* RH 851457 - collect tcbs */ + int wait_errno; + int status; +- bool stopped; +- unsigned int sig; + unsigned int event; +- struct tcb *tcp; + struct rusage ru; + + if (interrupted) +@@ -2134,14 +2157,24 @@ trace(void) + + if (interactive) + sigprocmask(SIG_SETMASK, &empty_set, NULL); +- pid = wait4(-1, &status, __WALL, (cflag ? &ru : NULL)); ++ pid = wait4(-1, &status, __WALL | wnohang, (cflag ? &ru : NULL)); + wait_errno = errno; + if (interactive) + sigprocmask(SIG_BLOCK, &blocked_set, NULL); + ++ if (pid <= 0 && wnohang) { ++ /* We had at least one successful ++ * wait() before. We waited ++ * with WNOHANG second time. ++ * Stop collecting more tracees, ++ * process what we already have. ++ */ ++ break; /* out of collect tcbs */ ++ } ++ + if (pid < 0) { + if (wait_errno == EINTR) +- return true; ++ break; /* out of collect tcbs */ + if (nprocs == 0 && wait_errno == ECHILD) + return false; + /* +@@ -2155,7 +2188,7 @@ trace(void) + if (pid == popen_pid) { + if (!WIFSTOPPED(status)) + popen_pid = 0; +- return true; ++ break; /* out of collect tcbs */ + } + + if (debug_flag) +@@ -2167,14 +2200,9 @@ trace(void) + if (!tcp) { + tcp = maybe_allocate_tcb(pid, status); + if (!tcp) +- return true; ++ break; /* out of collect tcbs */ + } + +- if (WIFSTOPPED(status)) +- get_regs(pid); +- else +- clear_regs(); +- + event = (unsigned int) status >> 16; + + if (event == PTRACE_EVENT_EXEC) { +@@ -2198,29 +2226,86 @@ trace(void) + + if (detach_on_execve && !skip_one_b_execve) { + detach(tcp); /* do "-b execve" thingy */ +- return true; ++ break; /* out of collect tcbs */ + } + skip_one_b_execve = 0; + } + +- /* Set current output file */ +- current_tcp = tcp; +- + if (cflag) { + tv_sub(&tcp->dtime, &ru.ru_stime, &tcp->stime); + tcp->stime = ru.ru_stime; + } + ++ /* If we waited and got a stopped task notification, ++ * subsequent wait may return the same pid again, for example, ++ * with SIGKILL notification. SIGKILL kills even stopped tasks. ++ * We must not add it to the list ++ * (one task can't be inserted twice in the list). ++ */ ++ { ++ struct tcb *f = found_tcps; ++ while (f) { ++ if (f == tcp) { ++ remembered_pid = pid; ++ remembered_status = status; ++ goto process_saved_tcbs; ++ } ++ f = f->next_need_service; ++ } ++ } ++ /* It is important to not invert the order of tasks ++ * to process. For one, alloc_tcb() above picks newly forked ++ * threads in some order, processing of them and their parent ++ * should be in the same order, otherwise bad things happen ++ * (misinterpreted SIGSTOPs and such). ++ */ ++ tcp->wait_status = status; ++ *nextp = tcp; ++ nextp = &tcp->next_need_service; ++ *nextp = NULL; ++ wnohang = WNOHANG; ++ ++ } /* RH 851457 - collect tcbs */ ++ ++process_saved_tcbs: ++ ++ for (tcp = found_tcps; ++ tcp; ++ tcp = next) { /* RH 851457 - process tcbs */ ++ int status; ++ bool stopped; ++ unsigned int sig; ++ unsigned int event; ++ ++ /* If the child exits, the TCP will get dropped and ++ thus we can't use it to find the next TCP needing ++ service. So we save the next TCP needing service ++ and used the saved value when the loop iterates. */ ++ next = tcp->next_need_service; ++ ++ status = tcp->wait_status; ++ pid = tcp->pid; ++ ++ event = ((unsigned)status >> 16); ++ ++ if (WIFSTOPPED(status)) ++ get_regs(pid); ++ else ++ clear_regs(); ++ ++ /* Set current output file */ ++ current_tcp = tcp; ++ + if (WIFSIGNALED(status)) { + print_signalled(tcp, pid, status); + droptcb(tcp); +- return true; ++ continue; /* processing tcbs */ + } + + if (WIFEXITED(status)) { + print_exited(tcp, pid, status); + droptcb(tcp); +- return true; ++ continue; /* processing tcbs */ + } + + if (!WIFSTOPPED(status)) { +@@ -2230,7 +2315,7 @@ trace(void) + */ + error_msg("pid %u not stopped!", pid); + droptcb(tcp); +- return true; ++ continue; /* processing tcbs */ + } + + /* Is this the very first time we see this tracee stopped? */ +@@ -2308,7 +2393,7 @@ show_stopsig: + exit_code = 1; + return false; + } +- return true; ++ continue; /* processing tcbs */ + } + /* We don't have PTRACE_LISTEN support... */ + goto restart_tracee; +@@ -2334,7 +2419,7 @@ show_stopsig: + * we can let this process to report its death to us + * normally, via WIFEXITED or WIFSIGNALED wait status. + */ +- return true; ++ continue; /* processing tcbs */ + } + + restart_tracee_with_sig_0: +@@ -2347,6 +2432,8 @@ restart_tracee: + return false; + } + ++ } /* RH 851457 - process tcbs */ ++ + return true; + } + diff --git a/SOURCES/strace-rh948577.patch b/SOURCES/strace-rh948577.patch new file mode 100644 index 0000000..7b6268e --- /dev/null +++ b/SOURCES/strace-rh948577.patch @@ -0,0 +1,46 @@ +diff -Nrup a/Makefile.am b/Makefile.am +--- a/Makefile.am 2016-07-22 16:46:33.000000000 -0400 ++++ b/Makefile.am 2016-07-22 16:49:00.260462649 -0400 +@@ -37,7 +37,7 @@ endif + SUBDIRS = tests $(TESTS_M32) $(TESTS_MX32) + + bin_PROGRAMS = strace +-man_MANS = strace.1 ++man_MANS = strace.1 strace-log-merge.1 + bin_SCRIPTS = strace-graph strace-log-merge + + OS = linux +diff -Nrup a/Makefile.in b/Makefile.in +--- a/Makefile.in 2016-07-22 16:46:33.000000000 -0400 ++++ b/Makefile.in 2016-07-22 16:49:00.267462671 -0400 +@@ -610,7 +610,7 @@ top_srcdir = @top_srcdir@ + @HAVE_M32_RUNTIME_TRUE@TESTS_M32 = tests-m32 + @HAVE_MX32_RUNTIME_TRUE@TESTS_MX32 = tests-mx32 + SUBDIRS = tests $(TESTS_M32) $(TESTS_MX32) +-man_MANS = strace.1 ++man_MANS = strace.1 strace-log-merge.1 + bin_SCRIPTS = strace-graph strace-log-merge + OS = linux + # ARCH is `i386', `m68k', `sparc', etc. +diff -Nrup a/strace-log-merge.1 b/strace-log-merge.1 +--- a/strace-log-merge.1 1969-12-31 19:00:00.000000000 -0500 ++++ b/strace-log-merge.1 2016-07-22 16:49:00.268462674 -0400 +@@ -0,0 +1,18 @@ ++.TH strace-log-merge 1 "15 April 2013" ".1" "strace-log-merge" ++.SH NAME ++strace-log-merge ++.SH SYNOPSIS ++strace-log-merge STRACE_LOG ++.SH DESCRIPTION ++strace-log-merge finds all STRACE_LOG.PID files, adds PID prefix to every line, ++the combines and sorts them, and prints the result to standard output. ++ ++It is assumed that STRACE_LOGs were produced by strace with the -tt[t] ++option which prints timestamps (otherwise worting won't do any good). ++ ++.SH OPTIONS ++--help Show help ++ ++.SH SEE ALSO ++.SH BUGS ++ diff --git a/SOURCES/strace-rpmbuild-m64.patch b/SOURCES/strace-rpmbuild-m64.patch new file mode 100644 index 0000000..cfd6ee2 --- /dev/null +++ b/SOURCES/strace-rpmbuild-m64.patch @@ -0,0 +1,28 @@ +diff -rup a/configure b/configure +--- a/configure 2016-05-31 07:35:55.000000000 -0400 ++++ b/configure 2016-08-25 18:50:02.732609963 -0400 +@@ -2585,6 +2585,10 @@ ac_compiler_gnu=$ac_cv_c_compiler_gnu + + + ++CFLAGS=`echo "" "$CFLAGS" | sed 's/ -m64 / /g'` ++CXXFLAGS=`echo "" "$CXXFLAGS" | sed 's/ -m64 / /g'` ++ ++ + ac_aux_dir= + for ac_dir in . "$srcdir"/.; do + if test -f "$ac_dir/install-sh"; then +diff -rup a/configure.ac b/configure.ac +--- a/configure.ac 2016-05-26 10:44:13.000000000 -0400 ++++ b/configure.ac 2016-08-25 18:49:37.072638055 -0400 +@@ -33,6 +33,10 @@ AC_PREREQ(2.57) + AC_INIT([strace], + m4_esyscmd([./git-version-gen .tarball-version]), + [strace-devel@lists.sourceforge.net]) ++ ++CFLAGS=`echo "" "$CFLAGS" | sed 's/ -m64 / /g'` ++CXXFLAGS=`echo "" "$CXXFLAGS" | sed 's/ -m64 / /g'` ++ + AC_CONFIG_SRCDIR([strace.c]) + AC_CONFIG_AUX_DIR([.]) + AC_CONFIG_HEADERS([config.h]) diff --git a/SOURCES/strace-strict-aliasing.patch b/SOURCES/strace-strict-aliasing.patch new file mode 100644 index 0000000..ce1246b --- /dev/null +++ b/SOURCES/strace-strict-aliasing.patch @@ -0,0 +1,24 @@ +diff -rup a/Makefile.am b/Makefile.am +--- a/Makefile.am 2016-05-28 06:29:30.000000000 -0400 ++++ b/Makefile.am 2016-07-22 16:46:33.499983037 -0400 +@@ -45,7 +45,7 @@ OS = linux + ARCH = @arch@ + + ACLOCAL_AMFLAGS = -I m4 +-AM_CFLAGS = $(WARN_CFLAGS) ++AM_CFLAGS = $(WARN_CFLAGS) -fno-strict-aliasing + AM_CPPFLAGS = -I$(builddir)/$(OS)/$(ARCH) \ + -I$(srcdir)/$(OS)/$(ARCH) \ + -I$(builddir)/$(OS) \ +diff -rup a/Makefile.in b/Makefile.in +--- a/Makefile.in 2016-05-31 07:35:57.000000000 -0400 ++++ b/Makefile.in 2016-07-22 16:46:33.509983070 -0400 +@@ -616,7 +616,7 @@ OS = linux + # ARCH is `i386', `m68k', `sparc', etc. + ARCH = @arch@ + ACLOCAL_AMFLAGS = -I m4 +-AM_CFLAGS = $(WARN_CFLAGS) ++AM_CFLAGS = $(WARN_CFLAGS) -fno-strict-aliasing + AM_CPPFLAGS = -I$(builddir)/$(OS)/$(ARCH) \ + -I$(srcdir)/$(OS)/$(ARCH) \ + -I$(builddir)/$(OS) \ diff --git a/SPECS/strace.spec b/SPECS/strace.spec new file mode 100644 index 0000000..2c700c3 --- /dev/null +++ b/SPECS/strace.spec @@ -0,0 +1,600 @@ +Summary: Tracks and displays system calls associated with a running process +Name: strace +Version: 4.12 +Release: 6%{?dist} +License: BSD +Group: Development/Debuggers +URL: http://sourceforge.net/projects/strace/ +Source: http://downloads.sourceforge.net/strace/%{name}-%{version}.tar.gz +BuildRoot: %{_tmppath}/%{name}-%{version}-%{release}-root-%(%{__id_u} -n) + +BuildRequires: libacl-devel, time + +Patch1000: strace-strict-aliasing.patch +Patch1001: strace-rh948577.patch +Patch1002: strace-rh851457.patch +Patch1005: strace-no-net-tests.patch +Patch1007: strace-no-uio-tests.patch + +Patch2001: strace-4.12-vhangup.patch +Patch2002: strace-4.12-chown.patch +Patch2003: strace-rh1377847.patch + +Patch3001: strace-rpmbuild-m64.patch +Patch3002: strace-no-setgid-rhel6.patch +Patch3003: strace-rh1449935.patch +Patch3004: strace-rh1466535.patch +Patch3005: strace-rh1540954-1.patch +Patch3006: strace-rh1540954-2.patch + +# In the past we had a separate strace64 package, these days the +# stndard 64 bit build provides that functionality. For tracing +# 32 bit applications on ppc and s390 we still have strace32 +Obsoletes: strace64 + +%define strace32_arches ppc s390 + +%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. + +%ifarch %{strace32_arches} +%package -n strace32 +Summary: Tracks and displays system calls associated with a running process. +Group: Development/Debuggers + +%description -n strace32 +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. + +This package provides the `strace32' program to trace 32-bit processes on +64-bit IBM P and Z series platforms. +%endif + +%prep +%setup -q +%patch1000 -p1 +%patch1001 -p1 +%patch1002 -p1 +%patch1005 -p1 +%patch1007 -p1 + +%patch2001 -p1 +%patch2002 -p1 +%patch2003 -p1 + +%patch3001 -p1 +%patch3002 -p1 +%patch3003 -p1 +%patch3004 -p1 +%patch3005 -p1 +%patch3006 -p1 + +%build +%configure +make %{?_smp_mflags} + +%install +rm -rf %{buildroot} +make DESTDIR=%{buildroot} install + +# remove unpackaged files from the buildroot +rm -f %{buildroot}%{_bindir}/strace-graph + +%define copy64 ln +%if 0%{?rhel} +%if 0%{?rhel} < 6 +%endif +%define copy64 cp -p +%endif + +%ifarch %{strace32_arches} +%{copy64} %{buildroot}%{_bindir}/strace %{buildroot}%{_bindir}/strace32 +%endif + +%check +# Temporary until we dig deeper into the failures +%ifnarch s390 s390x ppc64 ppc64le +make -k check +%endif + +%clean +rm -rf %{buildroot} + +%files +%defattr(-,root,root) +%doc CREDITS ChangeLog ChangeLog-CVS COPYING NEWS README +%{_bindir}/strace +%{_bindir}/strace-log-merge +%{_mandir}/man1/* + +%ifarch %{strace32_arches} +%files -n strace32 +%defattr(-,root,root) +%{_bindir}/strace32 +%endif + +%changelog +* Wed Feb 7 2018 DJ Delorie - 4.12-6 +- Update membarrier constants. (#1540954) + +* Thu Sep 14 2017 DJ Delorie - 4.12-5 +- Handle unexpected CLONE_PTRACE events. (#1466535) +- Skip tests for s390/ppc64le as well as s390x/ppc64. + +* Fri May 12 2017 DJ Delorie - 4.12-4 +- Fix typo in btrfs detection logic. (#1449935) + +* Thu Apr 13 2017 DJ Delorie - 4.12-3 +- Remove unneeded debug stuff. (#1377847) + +* Mon Apr 10 2017 DJ Delorie - 4.12-2 +- Adjust O_TMPFILE patch to include support even if the + build-time headers don't have it. (#1377847) + +* Tue Feb 21 2017 DJ Delorie - 4.12-1 +- Rebase to strace 4.12, which fixes... + + Support BLKPG_RESIZE_PARTITION (#1329673) + + Support getrandom() (#1374268) + + Fix endless loop in io_submit (#1165548) +- Merge upstream patches for vhangup and chown +- Skip some tests on older kernels (RHEL 6) +- Remove -m64 that rpm macros adds +- Show mode with O_TMPFILE (#1377847) + +* Thu Jul 30 2015 Jeff Law 4.8-11 +- Fix race which caused follow-fork option to not always + work (#1235833) + +* Tue May 12 2015 Peter Robinson 4.8-10 +- rebuild + +* Fri Aug 15 2014 Jeff Law 4.8-9 +- Fix prototype for ptrace (#1129572) + +* Fri Aug 1 2014 Jeff Law 4.8-8 +- update for ppc64 -- Dan Horak's patch from Fedora (#1122390) + +* Fri Jan 24 2014 Daniel Mach - 4.8-7 +- Mass rebuild 2014-01-24 + +* Fri Dec 27 2013 Daniel Mach - 4.8-6 +- Mass rebuild 2013-12-27 + +* Wed Dec 18 2013 Jeff Law 4.8-5 +- Don't pass NULL pointers to strcmp when sorting by syscall + name (#1044044) + +* Thu Oct 3 2013 Jeff Law - 4.8-4 +- Build strace32 on ppc/s390 which can be installed alongside of strace + on ppc64/s390x (#980229) + +* Wed Jul 17 2013 Jeff Law - 4.8-3 +- Refetch registers in collect_stopped_tcbs (#971352) + +* Wed Jun 12 2013 Jeff Law - 4.8-2 +- Don't dereference dropped TCP (#971352). From + Jan Stancek. Merged into patch for 851457. +- Disable "net" test as it is highly timing dependent + Merge into patch 851457. +- Bring forward patches lost after resyncing with Fedora. + - Patch to avoid strict aliasing warnings + - Patch to add man page for strace-log-merge (#948577) + - Patch to improve scheduling fairness (#851457) + +* Mon Jun 03 2013 Dmitry V. Levin - 4.8-1 +- New upstream release: + + fixed ERESTARTNOINTR leaking to userspace on ancient kernels (#659382); + + fixed decoding of *xattr syscalls (#885233); + + fixed handling of files with 64-bit inode numbers by 32-bit strace (#912790); + + added aarch64 support (#969858). + +* Fri Feb 15 2013 Fedora Release Engineering - 4.7-3 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_19_Mass_Rebuild + +* Sat Jul 21 2012 Fedora Release Engineering - 4.7-2 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_18_Mass_Rebuild + +* Wed May 02 2012 Dmitry V. Levin 4.7-1 +- New upstream release. + + implemented proper handling of real SIGTRAPs (#162774). + +* Sat Jan 14 2012 Fedora Release Engineering - 4.6-2 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_17_Mass_Rebuild + +* Mon Mar 14 2011 Dmitry V. Levin - 4.6-1 +- New upstream release. + + fixed a corner case in waitpid handling (#663547). + +* Wed Feb 09 2011 Fedora Release Engineering - 4.5.20-2 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_15_Mass_Rebuild + +* Tue Apr 13 2010 Roland McGrath - 4.5.20-1 +- New upstream release, work mostly by Andreas Schwab and Dmitry V. Levin. + + fixed potential stack buffer overflow in select decoder (#556678); + + fixed FTBFS (#539044). + +* Wed Oct 21 2009 Roland McGrath - 4.5.19-1 +- New upstream release, work mostly by Dmitry V. Levin + + exit/kill strace with traced process exitcode/signal (#105371); + + fixed build on ARM EABI (#507576); + + fixed display of 32-bit argv array on 64-bit architectures (#519480); + + fixed display of 32-bit fcntl(F_SETLK) on 64-bit architectures (#471169); + + fixed several bugs in strings decoder, including potential heap + memory corruption (#470529, #478324, #511035). + +* Thu Aug 28 2008 Roland McGrath - 4.5.18-1 +- build fix for newer kernel headers (#457291) +- fix CLONE_VFORK handling (#455078) +- Support new Linux/PPC system call subpage_prot and PROT_SAO flag. +- In sigaction system call, display sa_flags value along with SIG_DFL/SIG_IGN. + +* Mon Jul 21 2008 Roland McGrath - 4.5.17-1 +- handle O_CLOEXEC, MSG_CMSG_CLOEXEC (#365781) +- fix biarch stat64 decoding (#222275) +- fix spurious "..." in printing of environment strings (#358241) +- improve prctl decoding (#364401) +- fix hang wait on exited child with exited child (#354261) +- fix biarch fork/vfork (-f) tracing (#447475) +- fix biarch printing of negative argument kill (#430585) +- fix biarch decoding of error return values (#447587) +- fix -f tracing of CLONE_VFORK (#455078) +- fix ia64 register clobberation in -f tracing (#453438) +- print SO_NODEFER, SA_RESETHAND instead of SA_NOMASK, SA_ONESHOT (#455821) +- fix futex argument decoding (#448628, #448629) + +* Fri Aug 3 2007 Roland McGrath - 4.5.16-1 +- fix multithread issues (#240962, #240961, #247907) +- fix spurious SIGSTOP on early interrupt (#240986) +- fix utime for biarch (#247185) +- fix -u error message (#247170) +- better futex syscall printing (##241467) +- fix argv/envp printing with small -s settings, and for biarch +- new syscalls: getcpu, eventfd, timerfd, signalfd, epoll_pwait, + move_pages, utimensat + +* Tue Jan 16 2007 Roland McGrath - 4.5.15-1 +- biarch fixes (#179740, #192193, #171626, #173050, #218433, #218043) +- fix -ff -o behavior (#204950, #218435, #193808, #219423) +- better quotactl printing (#118696) +- *at, inotify*, pselect6, ppoll and unshare syscalls (#178633, #191275) +- glibc-2.5 build fixes (#209856) +- memory corruption fixes (#200621 +- fix race in child setup under -f (#180293) +- show ipc key values in hex (#198179, #192182) +- disallow -c with -ff (#187847) +- Resolves: RHBZ #179740, RHBZ #192193, RHBZ #204950, RHBZ #218435 +- Resolves: RHBZ #193808, RHBZ #219423, RHBZ #171626, RHBZ #173050 +- Resolves: RHBZ #218433, RHBZ #218043, RHBZ #118696, RHBZ #178633 +- Resolves: RHBZ #191275, RHBZ #209856, RHBZ #200621, RHBZ #180293 +- Resolves: RHBZ #198179, RHBZ #198182, RHBZ #187847 + +* Mon Nov 20 2006 Jakub Jelinek - 4.5.14-4 +- Fix ia64 syscall decoding (#206768) +- Fix build with glibc-2.4.90-33 and up on all arches but ia64 +- Fix build against 2.6.18+ headers + +* Tue Aug 22 2006 Roland McGrath - 4.5.14-3 +- Fix bogus decoding of syscalls >= 300 (#201462, #202620). + +* Fri Jul 14 2006 Jesse Keating - 4.5.14-2 +- rebuild + +* Fri Feb 10 2006 Jesse Keating - 4.5.14-1.2 +- bump again for long double bug on ppc{,64} + +* Tue Feb 07 2006 Jesse Keating - 4.5.14-1.1 +- rebuilt for new gcc4.1 snapshot and glibc changes + +* Mon Jan 16 2006 Roland McGrath - 4.5.14-1 +- Fix biarch decoding of socket syscalls (#174354). +- Fix biarch -e support (#173986). +- Accept numeric syscalls in -e (#174798). +- Fix ipc syscall decoding (#164755). +- Improve msgrcv printing (#164757). +- Man page updates (#165375). +- Improve mount syscall printing (#165377). +- Correct printing of restarting syscalls (#165469). + +* Wed Aug 3 2005 Roland McGrath - 4.5.13-1 +- Fix setsockopt decoding on 64-bit (#162449). +- Fix typos in socket option name strings (#161578). +- Display more IPV6 socket options by name (#162450). +- Don't display inappropriate syscalls for -e trace=file (#159340). +- New selector type -e trace=desc for file-descriptor using calls (#159400). +- Fix 32-bit old_mmap syscall decoding on x86-64 (#162467, #164215). +- Fix errors detaching from multithreaded process on interrupt (#161919). +- Note 4.5.12 fix for crash handling bad signal numbers (#162739). + +* Wed Jun 8 2005 Roland McGrath - 4.5.12-1 +- Fix known syscall recognition for IA32 processes on x86-64 (#158934). +- Fix bad output for ptrace on x86-64 (#159787). +- Fix potential buffer overruns (#151570, #159196). +- Make some diagnostics more consistent (#159308). +- Update PowerPC system calls. +- Better printing for Linux aio system calls. +- Don't truncate statfs64 fields to 32 bits in output (#158243). +- Cosmetic code cleanups (#159688). + +* Tue Mar 22 2005 Roland McGrath - 4.5.11-1 +- Build tweaks. +- Note 4.5.10 select fix (#151570). + +* Mon Mar 14 2005 Roland McGrath - 4.5.10-1 +- Fix select handling on nonstandard fd_set sizes. +- Don't print errors for null file name pointers. +- Fix initial execve output with -i (#143365). + +* Fri Feb 4 2005 Roland McGrath - 4.5.9-2 +- update ia64 syscall list (#146245) +- fix x86_64 syscall argument extraction for 32-bit processes (#146093) +- fix -e signal=NAME parsing (#143362) +- fix x86_64 exit_group syscall handling +- improve socket ioctl printing (#138223) +- code cleanups (#143369, #143370) +- improve mount flags printing (#141932) +- support symbolic printing of x86_64 arch_prctl parameters (#142667) +- fix potential crash in getxattr printing + +* Tue Oct 19 2004 Roland McGrath - 4.5.8-1 +- fix multithreaded exit handling (#132150, #135254) +- fix ioctl name matching (#129808) +- print RTC_* ioctl structure contents (#58606) +- grok epoll_* syscalls (#134463) +- grok new RLIMIT_* values (#133594) +- print struct cmsghdr contents for sendmsg (#131689) +- fix clock_* and timer_* argument output (#131420) + +* Tue Aug 31 2004 Roland McGrath - 4.5.7-2 +- new upstream version, misc fixes and updates (#128091, #129166, #128391, #129378, #130965, #131177) + +* Mon Jul 12 2004 Roland McGrath 4.5.6-1 +- new upstream version, updates ioctl lists (#127398), fixes quotactl (#127393), more ioctl decoding (#126917) + +* Sun Jun 27 2004 Roland McGrath 4.5.5-1 +- new upstream version, fixes x86-64 biarch support (#126547) + +* Tue Jun 15 2004 Elliot Lee 4.5.4-2 +- rebuilt + +* Thu Jun 3 2004 Roland McGrath 4.5.4-0.FC1 +- rebuilt for FC1 update + +* Thu Jun 3 2004 Roland McGrath 4.5.4-1 +- new upstream version, more ioctls (#122257), minor fixes + +* Fri Apr 16 2004 Roland McGrath 4.5.3-1 +- new upstream version, mq_* calls (#120701), -p vs NPTL (#120462), more fixes (#118694, #120541, #118685) + +* Tue Mar 02 2004 Elliot Lee 4.5.2-1.1 +- rebuilt + +* Mon Mar 1 2004 Roland McGrath 4.5.2-1 +- new upstream version, sched_* calls (#116990), show core flag (#112117) + +* Fri Feb 13 2004 Elliot Lee +- rebuilt + +* Thu Nov 13 2003 Roland McGrath 4.5.1-1 +- new upstream version, more fixes (#108012, #105366, #105359, #105358) + +* Tue Sep 30 2003 Roland McGrath 4.5-3 +- revert bogus s390 fix + +* Thu Sep 25 2003 Roland McGrath 4.5-1.2.1AS +- rebuilt for 2.1AS erratum + +* Wed Sep 24 2003 Roland McGrath 4.5-2 +- rebuilt + +* Wed Sep 24 2003 Roland McGrath 4.5-1 +- new upstream version, more fixes (#101499, #104365) + +* Thu Jul 17 2003 Roland McGrath 4.4.99-2 +- rebuilt + +* Thu Jul 17 2003 Roland McGrath 4.4.99-1 +- new upstream version, groks more new system calls, PF_INET6 sockets + +* Tue Jun 10 2003 Roland McGrath 4.4.98-1 +- new upstream version, more fixes (#90754, #91085) + +* Wed Jun 04 2003 Elliot Lee +- rebuilt + +* Sun Mar 30 2003 Roland McGrath 4.4.96-1 +- new upstream version, handles yet more 2.5 syscalls, x86_64 & ia64 fixes + +* Mon Feb 24 2003 Elliot Lee 4.4.95-2 +- rebuilt + +* Mon Feb 24 2003 Roland McGrath 4.4.95-1 +- new upstream version, fixed getresuid/getresgid (#84959) + +* Wed Feb 19 2003 Roland McGrath 4.4.94-1 +- new upstream version, new option -E to set environment variables (#82392) + +* Wed Jan 22 2003 Tim Powers 4.4.93-2 +- rebuilt + +* Tue Jan 21 2003 Roland McGrath 4.4.93-1 +- new upstream version, fixes ppc and s390 bugs, adds missing ptrace requests + +* Fri Jan 10 2003 Roland McGrath 4.4.91-1 +- new upstream version, fixes -f on x86-64 + +* Fri Jan 10 2003 Roland McGrath 4.4.90-1 +- new upstream version, fixes all known bugs modulo ia64 and s390 issues + +* Fri Jan 03 2003 Florian La Roche 4.4-11 +- add further s390 patch from IBM + +* Wed Nov 27 2002 Tim Powers 4.4-10 +- remove unpackaged files from the buildroot + +* Mon Oct 07 2002 Phil Knirsch 4.4-9.1 +- Added latest s390(x) patch. + +* Fri Sep 06 2002 Karsten Hopp 4.4-9 +- preliminary x86_64 support with an ugly patch to help + debugging. Needs cleanup! + +* Mon Sep 2 2002 Jakub Jelinek 4.4-8 +- newer version of the clone fixing patch (Roland McGrath) +- aio syscalls for i386/ia64/ppc (Ben LaHaise) + +* Wed Aug 28 2002 Jakub Jelinek 4.4-7 +- fix strace -f (Roland McGrath, #68994) +- handle ?et_thread_area, SA_RESTORER (Ulrich Drepper) + +* Fri Jun 21 2002 Jakub Jelinek 4.4-6 +- handle futexes, *xattr, sendfile64, etc. (Ulrich Drepper) +- handle modify_ldt (#66894) + +* Thu May 23 2002 Tim Powers +- automated rebuild + +* Tue Apr 16 2002 Jakub Jelinek 4.4-4 +- fix for the last patch by Jeff Law (#62591) + +* Mon Mar 4 2002 Preston Brown 4.4-3 +- integrate patch from Jeff Law to eliminate hang tracing threads + +* Sat Feb 23 2002 Florian La Roche +- minor update from debian tar-ball + +* Wed Jan 02 2002 Florian La Roche +- update to 4.4 + +* Sun Jul 22 2001 Florian La Roche +- disable s390 patches, they are already included + +* Wed Jul 18 2001 Preston Brown 4.3-1 +- new upstream version. Seems to have integrated most new syscalls +- tracing threaded programs is now functional. + +* Mon Jun 11 2001 Than Ngo +- port s390 patches from IBM + +* Wed May 16 2001 Nalin Dahyabhai +- modify new syscall patch to allocate enough heap space in setgroups32() + +* Wed Feb 14 2001 Jakub Jelinek +- #include in addition to + +* Fri Jan 26 2001 Karsten Hopp +- clean up conflicting patches. This happened only + when building on S390 + +* Fri Jan 19 2001 Bill Nottingham +- update to CVS, reintegrate ia64 support + +* Fri Dec 8 2000 Bernhard Rosenkraenzer +- Get S/390 support into the normal package + +* Sat Nov 18 2000 Florian La Roche +- added S/390 patch from IBM, adapting it to not conflict with + IA64 patch + +* Sat Aug 19 2000 Jakub Jelinek +- doh, actually apply the 2.4 syscalls patch +- make it compile with 2.4.0-test7-pre4+ headers, add + getdents64 and fcntl64 + +* Thu Aug 3 2000 Jakub Jelinek +- add a bunch of new 2.4 syscalls (#14036) + +* Wed Jul 12 2000 Prospector +- automatic rebuild +- excludearch ia64 + +* Fri Jun 2 2000 Matt Wilson +- use buildinstall for FHS + +* Wed May 24 2000 Jakub Jelinek +- make things compile on sparc +- fix sigreturn on sparc + +* Fri Mar 31 2000 Bill Nottingham +- fix stat64 misdef (#10485) + +* Tue Mar 21 2000 Michael K. Johnson +- added ia64 patch + +* Thu Feb 03 2000 Cristian Gafton +- man pages are compressed +- version 4.2 (why are we keeping all these patches around?) + +* Sat Nov 27 1999 Jeff Johnson +- update to 4.1 (with sparc socketcall patch). + +* Fri Nov 12 1999 Jakub Jelinek +- fix socketcall on sparc. + +* Thu Sep 02 1999 Cristian Gafton +- fix KERN_SECURELVL compile problem + +* Tue Aug 31 1999 Cristian Gafton +- added alpha patch from HJLu to fix the osf_sigprocmask interpretation + +* Sat Jun 12 1999 Jeff Johnson +- update to 3.99.1. + +* Wed Jun 2 1999 Jeff Johnson +- add (the other :-) jj's sparc patch. + +* Wed May 26 1999 Jeff Johnson +- upgrade to 3.99 in order to +- add new 2.2.x open flags (#2955). +- add new 2.2.x syscalls (#2866). +- strace 3.1 patches carried along for now. + +* Sun May 16 1999 Jeff Johnson +- don't rely on (broken!) rpm %%patch (#2735) + +* Tue Apr 06 1999 Preston Brown +- strip binary + +* Sun Mar 21 1999 Cristian Gafton +- auto rebuild in the new build environment (release 16) + +* Tue Feb 9 1999 Jeff Johnson +- vfork est arrive! + +* Tue Feb 9 1999 Christopher Blizzard +- Add patch to follow clone() syscalls, too. + +* Sun Jan 17 1999 Jeff Johnson +- patch to build alpha/sparc with glibc 2.1. + +* Thu Dec 03 1998 Cristian Gafton +- patch to build on ARM + +* Wed Sep 30 1998 Jeff Johnson +- fix typo (printf, not tprintf). + +* Sat Sep 19 1998 Jeff Johnson +- fix compile problem on sparc. + +* Tue Aug 18 1998 Cristian Gafton +- buildroot + +* Mon Jul 20 1998 Cristian Gafton +- added the umoven patch from James Youngman +- fixed build problems on newer glibc releases + +* Mon Jun 08 1998 Prospector System +- translations modified for de, fr, tr +