]>
granicus.if.org Git - strace/log
Fei Jie [Fri, 25 Mar 2016 09:47:15 +0000 (17:47 +0800)]
tests: add faccessat.test
* tests/faccessat.c: New file.
* tests/faccessat.test: New test.
* tests/.gitignore: Add faccessat.
* tests/Makefile.am (check_PROGRAMS): Likewise.
(DECODER_TESTS): Add faccessat.test.
Fei Jie [Fri, 25 Mar 2016 09:47:14 +0000 (17:47 +0800)]
tests: add creat.test
* tests/creat.c: New file.
* tests/creat.test: New test.
* tests/.gitignore: Add creat.
* tests/Makefile.am (check_PROGRAMS): Likewise.
(DECODER_TESTS): Add creat.test.
Fei Jie [Fri, 25 Mar 2016 09:47:13 +0000 (17:47 +0800)]
tests: add mknod.test
* tests/mknod.c: New file.
* tests/mknod.test: New test.
* tests/.gitignore: Add mknod.
* tests/Makefile.am (check_PROGRAMS): Likewise.
(DECODER_TESTS): Add mknod.test.
Fei Jie [Fri, 25 Mar 2016 09:46:19 +0000 (17:46 +0800)]
tests: add syslog.test
* tests/syslog.c: New file.
* tests/syslog.test: New test.
* tests/.gitignore: Add syslog.
* tests/Makefile.am (check_PROGRAMS): Likewise.
(DECODER_TESTS): Add syslog.test.
JayRJoshi [Wed, 23 Mar 2016 19:13:13 +0000 (00:43 +0530)]
tests/scm_rights-fd.test: fix pathname regex
Pathname containing >, }, or non-printable characters was resulting
in failing of the test.
* tests/scm_rights-fd.test: Fix pathname regex and simplify things.
Dmitry V. Levin [Thu, 24 Mar 2016 01:27:03 +0000 (01:27 +0000)]
tests: add strace-r.test
* tests/strace-r.expected: New file.
* tests/strace-r.test: New test.
* tests/Makefile.am (MISC_TESTS): Add it.
(EXTRA_DIST): Add strace-r.expected.
Dmitry V. Levin [Thu, 24 Mar 2016 01:10:02 +0000 (01:10 +0000)]
tests: add strace-ttt.test
* tests/strace-ttt.test: New test.
* tests/Makefile.am (MISC_TESTS): Add it.
Dmitry V. Levin [Thu, 24 Mar 2016 01:03:31 +0000 (01:03 +0000)]
tests: add strace-tt.test
* tests/strace-tt.test: New test.
* tests/Makefile.am (MISC_TESTS): Add it.
Dmitry V. Levin [Thu, 24 Mar 2016 00:59:32 +0000 (00:59 +0000)]
tests: add strace-t.test
* tests/strace-t.test: New test.
* tests/Makefile.am (MISC_TESTS): Add it.
Dmitry V. Levin [Thu, 24 Mar 2016 00:31:23 +0000 (00:31 +0000)]
tests: add strace-T.test
* tests/strace-T.expected: New file.
* tests/strace-T.test: New test.
* tests/Makefile.am (MISC_TESTS): Add it.
(EXTRA_DIST): Add strace-T.expected.
Dmitry V. Levin [Wed, 23 Mar 2016 23:07:02 +0000 (23:07 +0000)]
tests: split out tests of specific decoders
Split TESTS into three groups: tests of specific decoders, libunwind
tests, and all other tests.
* tests/Makefile.am (TESTS): Move attach-f-p.test, attach-p-cmd.test,
bexecve.test, count-f.test, count.test, detach-running.test,
detach-sleeping.test, detach-stopped.test, dumpio.test,
filter-unavailable.test, fork-f.test, ksysent.test, opipe.test,
pc.test, qual_syscall.test, redirect.test, restart_syscall.test,
strace-f.test, and vfork-f.test to MISC_TESTS.
Move remaining tests except $(LIBUNWIND_TESTS) to DECODER_TESTS.
Add $(DECODER_TESTS) and $(MISC_TESTS).
JayRJoshi [Wed, 23 Mar 2016 13:38:35 +0000 (19:08 +0530)]
tests: add getcwd.test
* tests/getcwd.c: New file.
* tests/getcwd.test: New test.
* tests/.gitignore: Add getcwd.
* tests/Makefile.am (check_PROGRAMS): Likewise.
(TESTS): Add getcwd.test.
JayRJoshi [Wed, 23 Mar 2016 13:34:15 +0000 (19:04 +0530)]
tests: add print_quoted_string function to libtests
* tests/tests.h (print_quoted_string): New prototype.
* tests/print_quoted_string.c: New file.
* tests/Makefile.am (libtests_a_SOURCES): Add it.
Fei Jie [Thu, 17 Mar 2016 09:30:45 +0000 (17:30 +0800)]
tests: add xetpriority.test
* resource.c (SYS_FUNC(getpriority), SYS_FUNC(setpriority)): Print
the second syscall argument using %d format.
* tests/xetpriority.c: New file.
* tests/xetpriority.test: New test.
* tests/.gitignore: Add xetpriority.
* tests/Makefile.am (check_PROGRAMS): Likewise.
(TESTS): Add xetpriority.test.
Fei Jie [Tue, 15 Mar 2016 08:38:34 +0000 (16:38 +0800)]
tests: add flock.test
* tests/flock.c: New file.
* tests/flock.test: New test.
* tests/.gitignore: Add flock.
* tests/Makefile.am (check_PROGRAMS): Likewise.
(TESTS): Add flock.test.
Fei Jie [Tue, 15 Mar 2016 08:38:17 +0000 (16:38 +0800)]
tests: add sched_xetscheduler.test
* tests/sched_xetscheduler.c: New file.
* tests/sched_xetscheduler.test: New test.
* tests/.gitignore: Add sched_xetscheduler.
* tests/Makefile.am (check_PROGRAMS): Likewise.
(TESTS): Add sched_xetscheduler.test.
Dmitry V. Levin [Wed, 24 Feb 2016 02:51:09 +0000 (02:51 +0000)]
alpha: fix SOCK_DIAG_BY_FAMILY tests
This complements commit
v4.9-368-g301c65c .
* tests/netlink_inet_diag.c (check_responses): Align "buf"
on sizeof(long) boundary.
* tests/netlink_unix_diag.c (check_responses): Likewise.
Dmitry V. Levin [Tue, 23 Feb 2016 19:27:25 +0000 (19:27 +0000)]
Update EPOLL* constants
* xlat/epollevents.in: Add EPOLLWAKEUP and EPOLLEXCLUSIVE.
Dmitry V. Levin [Mon, 22 Feb 2016 23:42:23 +0000 (23:42 +0000)]
tests: add count-f.test
* tests/count-f.c: New file.
* tests/count-f.expected: Likewise.
* tests/count-f.test: New test.
* tests/.gitignore: Add count-f.
* tests/Makefile.am (check_PROGRAMS): Likewise.
(count_f_LDADD): New variable.
(EXTRA_DIST): Add count-f.expected.
(TESTS): Add count-f.test.
Dmitry V. Levin [Sun, 21 Feb 2016 01:53:31 +0000 (01:53 +0000)]
hppa: wire up copy_file_range syscall
* linux/hppa/syscallent.h [346]: Add copy_file_range entry.
Fei Jie [Fri, 11 Mar 2016 02:43:02 +0000 (10:43 +0800)]
tests: filter strace output in uname test
* tests/uname.test: Use uniq to filter strace output.
Fei Jie [Thu, 10 Mar 2016 09:12:24 +0000 (17:12 +0800)]
tests: add sched_xetparam.test
* tests/sched_xetparam.c: New file.
* tests/sched_xetparam.test: New test.
* tests/.gitignore: Add sched_xetparam.
* tests/Makefile.am (check_PROGRAMS): Likewise.
(TESTS): Add sched_xetparam.test.
Fei Jie [Thu, 10 Mar 2016 09:12:23 +0000 (17:12 +0800)]
tests: add sched_get_priority_mxx.test
* tests/sched_get_priority_mxx.c: New file.
* tests/sched_get_priority_mxx.test: New test.
* tests/.gitignore: Add sched_get_priority_mxx.
* tests/Makefile.am (check_PROGRAMS): Likewise.
(TESTS): Add sched_get_priority_mxx.test.
Fei Jie [Thu, 10 Mar 2016 02:41:31 +0000 (10:41 +0800)]
tests: add dup.test, dup2.test, and dup3.test
* tests/dup.c: New file.
* tests/dup.test: New test.
* tests/dup2.c: New file.
* tests/dup2.test: New test.
* tests/dup3.c: New file.
* tests/dup3.test: New test.
* tests/.gitignore: Add dup, dup2, and dup3.
* tests/Makefile.am (check_PROGRAMS): Likewise.
(TESTS): Add dup.test, dup2.test, and dup3.test.
Fabien Siron [Thu, 10 Mar 2016 10:29:32 +0000 (10:29 +0000)]
tests: add fchmod.test
* tests/fchmod.c: New file.
* tests/fchmod.test: New test.
* tests/.gitignore: Add fchmod.
* tests/Makefile.am (check_PROGRAMS): Likewise.
(TESTS): Add fchmod.test.
Fei Jie [Wed, 9 Mar 2016 06:07:06 +0000 (14:07 +0800)]
tests: add acct.test
* tests/acct.c: New file.
* tests/acct.test: New test.
* tests/.gitignore: Add acct.
* tests/Makefile.am (check_PROGRAMS): Likewise.
(TESTS): Add acct.test.
Anchit Jain [Mon, 7 Mar 2016 10:57:43 +0000 (16:27 +0530)]
tests: add chmod.test
* tests/chmod.c: New file.
* tests/chmod.test: New test.
* tests/.gitignore: Add chmod.
* tests/Makefile.am (check_PROGRAMS): Likewise.
(TESTS): Add chmod.test.
Nahim El Atmani [Sat, 5 Mar 2016 12:35:57 +0000 (13:35 +0100)]
Reduce memory usage while managing tcbs allocation.
* strace.c (init): Remove initial memory allocation for tcbtab.
(expand_tcbtab): Do initial memory allocation when tcbtabsize == 0.
Signed-off-by: Nahim El Atmani <nahim+dev@naam.me>
Reviewed-By: Gabriel Laskar <gabriel@lse.epita.fr>
Reported-by: haris iqbal <haris.phnx@gmail.com>
Signed-off-by: Dmitry V. Levin <ldv@altlinux.org>
Fei Jie [Tue, 1 Mar 2016 08:55:37 +0000 (16:55 +0800)]
tests: add umask.test
* tests/umask.c: New file.
* tests/umask.test: New test.
* tests/.gitignore: Add umask.
* tests/Makefile.am (check_PROGRAMS): Likewise.
(TESTS): Add umask.test.
Fei Jie [Tue, 1 Mar 2016 08:55:36 +0000 (16:55 +0800)]
tests: add rename.test
* tests/rename.c: New file.
* tests/rename.test: New test.
* tests/.gitignore: Add rename.
* tests/Makefile.am (check_PROGRAMS): Likewise.
(TESTS): Add rename.test.
Fei Jie [Tue, 1 Mar 2016 08:55:35 +0000 (16:55 +0800)]
tests: add uname.test
* tests/uname.c: New file.
* tests/uname.test: New test.
* tests/.gitignore: Add uname.
* tests/Makefile.am (check_PROGRAMS): Likewise.
(TESTS): Add uname.test.
Dmitry V. Levin [Sat, 20 Feb 2016 00:37:01 +0000 (00:37 +0000)]
mips: wire up copy_file_range syscall
* linux/mips/syscallent-n32.h [6324]: Add copy_file_range entry.
* linux/mips/syscallent-n64.h [5320]: Likewise.
* linux/mips/syscallent-o32.h [4360]: Likewise.
Dmitry V. Levin [Fri, 19 Feb 2016 16:07:43 +0000 (16:07 +0000)]
tests: add rt_sigsuspend.test
* tests/rt_sigsuspend.c: New file.
* tests/rt_sigsuspend.test: New test.
* tests/.gitignore: Add rt_sigsuspend.
* tests/Makefile.am (check_PROGRAMS): Likewise.
(TESTS): Add rt_sigsuspend.test.
Dmitry V. Levin [Wed, 17 Feb 2016 05:24:43 +0000 (05:24 +0000)]
Print pid_t arguments of rt_sigqueueinfo and rt_tgsigqueueinfo as int
* signal.c (SYS_FUNC(rt_sigqueueinfo)): Print first syscall argument
using %d format.
(SYS_FUNC(rt_tgsigqueueinfo)): Print first and second syscall arguments
using %d format.
* tests/rt_tgsigqueueinfo.c: New file.
* tests/rt_tgsigqueueinfo.test: New test.
* tests/.gitignore: Add rt_tgsigqueueinfo.
* tests/Makefile.am (check_PROGRAMS): Likewise.
(TESTS): Add rt_tgsigqueueinfo.test.
Dmitry V. Levin [Fri, 19 Feb 2016 03:33:49 +0000 (03:33 +0000)]
getrusage.test: fix build on x32
* tests/getrusage.c: Include <stdint.h>
(main): Print members of struct timeval using %ju format.
Dmitry V. Levin [Fri, 19 Feb 2016 02:08:13 +0000 (02:08 +0000)]
getrusage.test: check that getrusage parser does not access extra memory
Place struct rusage at the end of an allocated memory page followed by
an inaccessible page.
* tests/getrusage.c (main): Use tail_alloc.
Fei Jie [Fri, 19 Feb 2016 01:57:33 +0000 (09:57 +0800)]
tests: add getrusage.test
* tests/getrusage.c: New file.
* tests/getrusage.test: New test.
* tests/.gitignore: Add getrusage.
* tests/Makefile.am (check_PROGRAMS): Likewise.
(TESTS): Add getrusage.test.
Dmitry V. Levin [Fri, 19 Feb 2016 03:27:09 +0000 (03:27 +0000)]
Print rt_sigtimedwait return value as a signal name
* signal.c (SYS_FUNC(rt_sigtimedwait)): Decode return value.
* tests/rt_sigtimedwait.c: New file.
* tests/rt_sigtimedwait.test: New test.
* tests/.gitignore: Add rt_sigtimedwait.
* tests/Makefile.am (check_PROGRAMS): Likewise.
(TESTS): Add rt_sigtimedwait.test.
Dmitry V. Levin [Thu, 18 Feb 2016 03:21:30 +0000 (03:21 +0000)]
tests: add rt_sigprocmask.test
* tests/rt_sigprocmask.c: New file.
* tests/rt_sigprocmask.test: New test.
* tests/.gitignore: Add rt_sigprocmask.
* tests/Makefile.am (check_PROGRAMS): Likewise.
(TESTS): Add rt_sigprocmask.test.
Dmitry V. Levin [Thu, 18 Feb 2016 00:08:30 +0000 (00:08 +0000)]
Fix corner cases of rt_sigpending syscall decoder
* signal (print_sigset_addr_len_limit): New function, cloned from
print_sigset_addr_len with added minimal length argument.
Treat length less than minimal length or greater than NSIG/8 as invalid.
Do not align length to 4-byte boundary. Align destination buffer
to 4-byte boundary and initialize it with zeroes so that subsequent
call to sprintsigmask_n will not access uninitialized data.
(print_sigset_addr_len): Turn into a wrapper around
print_sigset_addr_len_limit with current_wordsize
as a minimal length argument.
(SYS_FUNC(rt_sigpending)): Call print_sigset_addr_len_limit
instead of print_sigset_addr_len with 1 as a minimal length argument.
* tests/rt_sigpending.c: New file.
* tests/rt_sigpending.test: New test.
* tests/.gitignore: Add rt_sigpending.
* tests/Makefile.am (check_PROGRAMS): Likewise.
(TESTS): Add rt_sigpending.test.
Dmitry V. Levin [Fri, 19 Feb 2016 01:30:34 +0000 (01:30 +0000)]
Change unix_diag requests back to use full dump instead of exact match
Unfortunately, 64-bit linux kernel has a bug in matching inode numbers
greater than INT_MAX, so unix_diag exact match is not reliable.
This partially reverts commit
69bfc89770152033d4aa0bc5673fc46e65d89838 .
* socketutils.c (unix_send_query): Add NLM_F_DUMP to nlmsg_flags,
remove initialization of udiag_cookie.
* tests/netlink_unix_diag.c (send_query): Remove "inode" argument,
add NLM_F_DUMP to nlmsg_flags, remove initialization of udiag_ino
and udiag_cookie.
(check_responses): Remove "inode" argument and its use.
(main): Remove invocation of inode_of_sockfd and passing of listening
socket inode to send_query and check_responses.
Michael Shigorin [Wed, 17 Feb 2016 15:55:28 +0000 (18:55 +0300)]
tests: avoid using cpp -dD
-dD is less portable across some peculiar preprocessors.
tests/Makefile.am (ksysent.h): Use cpp -dM instead of cpp -dD.
Dmitry V. Levin [Tue, 16 Feb 2016 00:52:43 +0000 (00:52 +0000)]
tests: add poll.test
* tests/poll.c: New file.
* tests/poll.test: New test.
* tests/.gitignore: Add poll.
* tests/Makefile.am (check_PROGRAMS): Likewise.
(TESTS): Add poll.test.
Dmitry V. Levin [Tue, 16 Feb 2016 00:44:16 +0000 (00:44 +0000)]
Fix abbreviated output of poll and ppoll decoders
* poll.c (decode_poll_entering, decode_poll_exiting): Fix corner cases
of abbreviated output.
* tests/ppoll-v.expected: Update.
* tests/ppoll.expected: Update.
* tests/ppoll.test: Update.
Dmitry V. Levin [Tue, 16 Feb 2016 00:04:37 +0000 (00:04 +0000)]
Print unfetchable address in poll and ppoll decoders
* poll.c (decode_poll_entering): Replace umove call with
umove_or_printaddr.
(decode_poll_exiting): Print unfetchable address when umove call fails.
Dmitry V. Levin [Mon, 15 Feb 2016 18:30:02 +0000 (18:30 +0000)]
Print offsets in lseek and _llseek syscalls as signed integers
* lseek.c (SYS_FUNC(lseek)): Print offset using %lld format.
(SYS_FUNC(llseek)): Likewise. Treat high and low components of offset
as unsigned long integers.
* tests/llseek.c (main): Check that negative offset is printed properly.
* tests/lseek.c (main): Likewise.
Dmitry V. Levin [Sun, 14 Feb 2016 17:14:15 +0000 (17:14 +0000)]
tests: add xetpgid.test
* tests/xetpgid.c: New file.
* tests/xetpgid.test: New test.
* tests/.gitignore: Add xetpgid.
* tests/Makefile.am (check_PROGRAMS): Likewise.
(TESTS): Add xetpgid.test.
Dmitry V. Levin [Sun, 14 Feb 2016 16:56:58 +0000 (16:56 +0000)]
tests: add alarm.test
* tests/alarm.c: New file.
* tests/alarm.test: New test.
* tests/.gitignore: Add alarm.
* tests/Makefile.am (check_PROGRAMS): Likewise.
(TESTS): Add alarm.test.
Dmitry V. Levin [Sun, 14 Feb 2016 16:26:37 +0000 (16:26 +0000)]
Replace printargs_lu and printargs_ld with printargs_u and printargs_d
* defs.h (printargs_lu): Rename to printargs_u.
(printargs_ld): Rename to printargs_d.
* syscall.c (printargs_lu): Rename to printargs_u. Replace %lu with %u.
(printargs_ld): Rename to printargs_d. Replace %ld with %d.
* linux/dummy.h (sys_getpgrp): Change to printargs.
(sys_alarm): Change to printargs_u.
(sys_getpgid, sys_getsid, sys_nice, sys_setpgid, sys_setpgrp,
sys_timer_delete, sys_timer_getoverrun): Change to printargs_d.
Dmitry V. Levin [Sun, 14 Feb 2016 15:53:05 +0000 (15:53 +0000)]
Change printargs_lu and printargs_ld to return RVAL_DECODED
* syscall.c (printargs_lu, printargs_ld): Return RVAL_DECODED.
Dmitry V. Levin [Sun, 14 Feb 2016 00:54:32 +0000 (00:54 +0000)]
redirect.test: fix the way how strace output is discarded
* tests/redirect.test: Disable tracing of syscalls, signals,
and exit status instead of redirecting strace output to /dev/null.
Dmitry V. Levin [Sun, 14 Feb 2016 00:04:20 +0000 (00:04 +0000)]
tests: extend coverage of struct iovec arrays
* tests/readv.c (main): Check decoding of empty, inaccessible,
and partially inaccessible iovec arrays.
* tests/readv.test: Update.
Dmitry V. Levin [Sat, 13 Feb 2016 23:18:15 +0000 (23:18 +0000)]
Implement dumping of vmsplice syscall
* syscall.c (dumpio): Add SEN_vmsplice.
* NEWS: Mention this.
* tests/vmsplice.c: New file.
* tests/vmsplice.test: New test.
* tests/.gitignore: Add vmsplice.
* tests/Makefile.am (check_PROGRAMS): Likewise.
(TESTS): Add vmsplice.test.
Dmitry V. Levin [Sat, 13 Feb 2016 22:42:52 +0000 (22:42 +0000)]
tests: add tee.test
* tests/tee.c: New file.
* tests/tee.test: New test.
* tests/.gitignore: Add tee.
* tests/Makefile.am (check_PROGRAMS): Likewise.
(TESTS): Add tee.test.
Dmitry V. Levin [Sat, 13 Feb 2016 22:31:30 +0000 (22:31 +0000)]
Fix printing of negative offsets in splice syscall
* io.c (SYS_FUNC(splice)): Use PRId64 instead of PRIu64 for printing
offsets.
* tests/splice.c: New file.
* tests/splice.test: New test.
* tests/.gitignore: Add splice.
* tests/Makefile.am (check_PROGRAMS): Likewise.
(TESTS): Add splice.test.
Dmitry V. Levin [Sat, 13 Feb 2016 03:45:32 +0000 (03:45 +0000)]
Implement copy_file_range syscall decoding
* copy_file_range.c: New file.
* Makefile.am (strace_SOURCES): Add it.
* linux/32/syscallent.h (copy_file_range): New entry.
* linux/64/syscallent.h: Likewise.
* linux/arm/syscallent.h: Likewise.
* linux/i386/syscallent.h: Likewise.
* linux/ia64/syscallent.h: Likewise.
* linux/m68k/syscallent.h: Likewise.
* linux/powerpc/syscallent.h: Likewise.
* linux/powerpc64/syscallent.h: Likewise.
* linux/s390/syscallent.h: Likewise.
* linux/s390x/syscallent.h: Likewise.
* linux/sparc/syscallent.h: Likewise.
* linux/sparc64/syscallent.h: Likewise.
* linux/x32/syscallent.h: Likewise.
* linux/x86_64/syscallent.h: Likewise.
* pathtrace.c (pathtrace_match): Add SEN_copy_file_range.
* NEWS: Mention new syscall parser.
* tests/copy_file_range.c: New file.
* tests/copy_file_range.test: New test.
* tests/.gitignore: Add copy_file_range.
* tests/Makefile.am (check_PROGRAMS): Likewise.
(TESTS): Add copy_file_range.test.
Dmitry V. Levin [Sat, 13 Feb 2016 03:20:13 +0000 (03:20 +0000)]
Update fs *_MAGIC constants
* xlat/fsmagic.in: Add CGROUP2_SUPER_MAGIC and OVERLAYFS_SUPER_MAGIC.
Dmitry V. Levin [Sat, 13 Feb 2016 03:17:13 +0000 (03:17 +0000)]
Update IPV6_* constants
* xlat/sockipv6options.in: Add IPV6_HDRINCL.
Dmitry V. Levin [Sat, 13 Feb 2016 03:10:08 +0000 (03:10 +0000)]
Update SO_* constants
* xlat/sockoptions.in: Add SO_ATTACH_REUSEPORT_CBPF
and SO_ATTACH_REUSEPORT_EBPF.
Dmitry V. Levin [Sat, 13 Feb 2016 03:08:36 +0000 (03:08 +0000)]
Update MADV_* constants
* xlat/madvise_cmds.in: Add MAD_FREE.
Dmitry V. Levin [Sat, 13 Feb 2016 01:23:26 +0000 (01:23 +0000)]
tests: robustify execve and execveat tests
* tests/execve.c (main): Use one page gap between two mapped regions
for an address that is more likely to be not yet mapped.
* tests/execveat.c (main): Likewise.
Dmitry V. Levin [Sat, 13 Feb 2016 01:20:39 +0000 (01:20 +0000)]
tests: simplify execve test
* tests/execve.c (main): Simplify the test assuming that execve syscall
never returns ENOSYS.
Dmitry V. Levin [Fri, 12 Feb 2016 19:50:38 +0000 (19:50 +0000)]
Fix numbers of syscall arguments in syscall tables
This semi-automatic change brings syscall tables in sync with kernel's
include/linux/syscalls.h file.
* linux/aarch64/syscallent.h (recv): Fix nargs.
* linux/alpha/syscallent.h (sigaltstack, init_module,
sched_getscheduler, settimeofday): Likewise.
* linux/arm/syscallent.h (signal, pciconfig_iobase, msgrcv, msgctl,
shmat, shmdt, shmctl, semtimedop, get_mempolicy, set_mempolicy,
timerfd_create): Likewise.
* linux/bfin/syscallent.h (signal, delete_module): Likewise.
* linux/hppa/syscallent.h (init_module, munlockall, sched_getscheduler,
io_cancel, set_tid_address, listxattr, llistxattr, flistxattr,
removexattr, lremovexattr, fremovexattr): Likewise.
* linux/i386/syscallent.h (signal, mmap): Likewise.
* linux/ia64/syscallent.h (init_module, readv, writev,
sched_getscheduler): Likewise.
* linux/m68k/syscallent.h (signal, request_key): Likewise.
* linux/microblaze/syscallent.h (signal, clone, fstatfs64, vmsplice):
Likewise.
* linux/mips/syscallent-n32.h (getpgid, statfs, fstatfs, init_module,
delete_module): Likewise.
* linux/mips/syscallent-n64.h (getpgid, statfs, fstatfs, init_module,
delete_module): Likewise.
* linux/mips/syscallent-o32.h (signal, statfs, fstatfs, ioperm,
fstatfs64): Likewise.
* linux/powerpc/syscallent.h (signal, spu_run, spu_create): Likewise.
* linux/powerpc64/syscallent.h (signal, pread64, pwrite64, readahead,
fadvise64, lookup_dcookie, spu_run, spu_create, sync_file_range2,
fallocate, preadv, pwritev, fanotify_mark): Likewise.
* linux/s390/syscallent.h (signal, mmap, lookup_dcookie, ipc): Likewise.
* linux/s390x/syscallent.h (signal, ipc): Likewise.
* linux/sh/syscallent.h (signal, ipc, munlockall, fstatfs64, vmsplice):
Likewise.
* linux/sh64/syscallent.h (signal, ipc, msgrcv, msgctl, shmat, shmdt,
shmctl, fstatfs64, vmsplice): Likewise.
* linux/sparc/syscallent.h (ptrace, dup, signal, ipc): Likewise.
* linux/sparc64/syscallent.h (ptrace, dup, signal, pread64, pwrite64,
readahead, lookup_dcookie, fadvise64, fadvise64_64, ipc,
sync_file_range, fallocate, preadv, pwritev, fanotify_mark): Likewise.
* linux/x32/syscallent.h (64:recvmsg): Likewise.
* linux/xtensa/syscallent.h (mremap, futex, reboot, init_module,
delete_module, request_key, getcpu, ioprio_set, ioprio_get, utimensat,
futimesat, fchmodat, faccessat): Likewise.
* NEWS: Mention this fix.
Dmitry V. Levin [Fri, 12 Feb 2016 19:28:34 +0000 (19:28 +0000)]
s390: decode fadvise64 and fadvise64_64
* linux/s390/syscallent.h (fadvise64): Set sys_func.
(fadvise64_64): Set nargs and sys_func.
Dmitry V. Levin [Fri, 12 Feb 2016 19:24:50 +0000 (19:24 +0000)]
mips n64: use the most optimal parser for fadvise64 syscall
* linux/mips/syscallent-n64.h (fadvise64): Replace SEN(fadvise64_64)
with SEN(fadvise64).
Dmitry V. Levin [Fri, 12 Feb 2016 19:21:42 +0000 (19:21 +0000)]
ia64: decode fstatfs64 and statfs64
* linux/ia64/syscallent.h (fstatfs64, statfs64): Set nargs and sys_func.
Dmitry V. Levin [Fri, 12 Feb 2016 19:44:29 +0000 (19:44 +0000)]
alpha, ia64, mips, sh, sh64: fix the number of pipe syscall arguments
On alpha, ia64, mips, sh, sh64, sparc, and sparc64 architectures
pipe syscall does not take arguments.
* linux/alpha/syscallent.h (pipe): Change nargs to 0.
* linux/ia64/syscallent.h (pipe): Likewise.
* linux/mips/syscallent-n32.h (pipe): Likewise.
* linux/mips/syscallent-n64.h (pipe): Likewise.
* linux/mips/syscallent-o32.h (pipe): Likewise.
* linux/sh/syscallent.h (pipe): Likewise.
* linux/sh64/syscallent.h (pipe): Likewise.
Dmitry V. Levin [Fri, 12 Feb 2016 16:37:31 +0000 (16:37 +0000)]
alpha, ia64, mips, sh*, sparc*: fix error path decoding of pipe syscall
* net.c (do_pipe) [HAVE_GETRVAL2]: Remove.
Always call decode_pair_fd on exiting.
(SYS_FUNC(pipe)) [HAVE_GETRVAL2]: Call printpair_fd instead of do_pipe.
Dmitry V. Levin [Fri, 12 Feb 2016 16:15:23 +0000 (16:15 +0000)]
Fix pathtrace match for pipe2 syscall
* pathtrace.c (pathtrace_match): As pipe2 syscall has no descriptors
or paths to test, move SEN_pipe2 to the appropriate category.
Dmitry V. Levin [Fri, 12 Feb 2016 15:00:29 +0000 (15:00 +0000)]
avr32: wire up missing syscalls
* linux/avr32/syscallent.h [322..324]: Add userfaultfd, membarrier,
and mlock2 entries.
Dmitry V. Levin [Fri, 12 Feb 2016 01:56:10 +0000 (01:56 +0000)]
tests: check decoding of madvise, mlockall, mremap, and msync syscalls
* tests/mmap.c (main): Change output format from regexp to verbatim.
Add tests for madvise, mlockall, mremap, and msync syscalls.
* tests/mmap.test: Convert from match_grep to match_diff.
Add madvise, mlockall, mremap, and msync syscalls to syscall filter.
Dmitry V. Levin [Thu, 11 Feb 2016 02:39:04 +0000 (02:39 +0000)]
Simplify decoding of waitpid and wait4 syscalls
* wait.c (printwaitn): Replace "n" and "bitness" integer arguments
with a single print_rusage function pointer. All callers updated.
Dmitry V. Levin [Thu, 11 Feb 2016 02:42:36 +0000 (02:42 +0000)]
waitid: print pid argument as int
* wait.c (SYS_FUNC(waitid)): As the type of second syscall argument
in the kernel is pid_t, print it as int.
Dmitry V. Levin [Thu, 11 Feb 2016 02:20:18 +0000 (02:20 +0000)]
waitid: always print 5th argument
* wait.c (SYS_FUNC(waitid)): Do not check for tcp->s_ent->nargs
as waitid syscall has 5 arguments.
Dmitry V. Levin [Wed, 10 Feb 2016 17:43:09 +0000 (17:43 +0000)]
socketutils: add const qualifier to variables
* socketutils.c (cache_and_print_inode_details): Make "details"
parameter const.
(print_sockaddr_by_inode_cached): Make "e" variable const.
(inet_send_query): Make struct nlmsghdr and struct inet_diag_req_v2
members const. Make "msg" variable const.
(inet_parse_response): Make "data" parameter and diag_msg variable const.
(receive_responses): Make "h" and "rc" variables const.
(unix_send_query): Make struct nlmsghdr and struct unix_diag_req
members const. Make "msg" variable const.
(unix_print): Make all parameters const.
(print_sockaddr_by_inode): Make proto_name parameter const.
Dmitry V. Levin [Wed, 10 Feb 2016 17:39:57 +0000 (17:39 +0000)]
print_sockaddr_by_inode: cleanup protocol lookup
* socketutils.c (tcp_v4_print, udp_v4_print, tcp_v6_print,
udp_v6_print): New functions.
(print_sockaddr_by_inode): Make "protocols" array static, replace
"family" and "protocol" members with "print" in its underlying
structure. Iterate through protocols array when the protocol name
is specified.
Dmitry V. Levin [Tue, 9 Feb 2016 04:16:41 +0000 (04:16 +0000)]
tests: check that -f -p attaches to threads properly
Check that -f -p attaches and follows all threads of the given pid.
* tests/attach-f-p.c: New file.
* tests/attach-f-p.test: New test.
* tests/.gitignore: Add attach-f-p.
* tests/Makefile.am (check_PROGRAMS): Likewise.
(attach_f_p_LDADD): New variable.
(TESTS): Add attach-f-p.test.
Dmitry V. Levin [Thu, 4 Feb 2016 02:49:01 +0000 (02:49 +0000)]
Introduce libstrace.a for potentially conditional compilation units
Some files are used conditionally depending on architecture and
configuration. Create a library for the purpose of keeping such
compilation units.
* Makefile.am (strace_LDADD, noinst_LIBRARIES): Add libstrace.a.
(libstrace_a_CPPFLAGS): New variable, set to $(strace_CPPFLAGS).
(libstrace_a_CFLAGS): New variable, set to $(strace_CFLAGS).
(libstrace_a_SOURCES): New variable, set to upeek.c.
* util.c (upeek): Move ...
* upeek.c: ... here.
Dmitry V. Levin [Sun, 7 Feb 2016 22:47:40 +0000 (22:47 +0000)]
travis-ci: pass more gcov arguments to codecov
Dmitry V. Levin [Mon, 8 Feb 2016 00:13:00 +0000 (00:13 +0000)]
tests: extend coverage of struct itimerspec
* tests/timer_xettime.c (main): Check decoding of NULL struct itimerspec
pointer.
Dmitry V. Levin [Mon, 8 Feb 2016 00:01:57 +0000 (00:01 +0000)]
tests: extend coverage of utimensat syscall
* tests/utimensat.c (main): Check decoding of NULL struct timespec
pointer.
Dmitry V. Levin [Sun, 7 Feb 2016 23:46:33 +0000 (23:46 +0000)]
tests: extend coverage of time syscall
* tests/time.c (main): Check decoding of NULL time_t pointer.
Dmitry V. Levin [Sun, 7 Feb 2016 23:28:18 +0000 (23:28 +0000)]
tests: extend coverage of struct sigevent
* tests/timer_create.c (main): Check decoding of NULL struct sigevent
pointer. Check decoding of invalid sigev_notify value.
Dmitry V. Levin [Sun, 7 Feb 2016 14:37:53 +0000 (14:37 +0000)]
tests: extend coverage of execve and execveat syscalls
Check decoding of inaccessible or partially inaccessible arrays.
* tests/execve-v.c: New file.
* tests/execveat-v.c: Likewise.
* tests/execve-v.test: New test.
* tests/execveat-v.test: Likewise.
* tests/execve.c: Rewrite.
* tests/execveat.c: Likewise.
* tests/execve.test: Likewise.
* tests/execveat.test: Likewise.
* tests/execve.expected: Remove.
* tests/execve-v.expected: Likewise.
* tests/execveat.expected: Likewise.
* tests/execveat-v.expected: Likewise.
* tests/.gitignore: Add execve-v and execveat-v.
* tests/Makefile.am (check_PROGRAMS): Likewise.
(TESTS): Add execve-v.test and execveat-v.test.
(EXTRA_DIST): Remove execve.expected, execve-v.expected,
execveat.expected, and execveat-v.expected.
Dmitry V. Levin [Sun, 7 Feb 2016 14:38:45 +0000 (14:38 +0000)]
Fix decoding of execve and execveat syscalls with invalid input
* execve.c (printargv): Fix decoding of inaccessible or partially
inaccessible array.
(printargc): Diagnose inaccessible or partially inaccessible array.
(decode_execve, SYS_FUNC(execv)): Update printargv and printargc callers.
Dmitry V. Levin [Sat, 6 Feb 2016 01:40:09 +0000 (01:40 +0000)]
tests: extend coverage of capget syscall
* tests/caps.c (main): Check decoding of inaccessible cap_user_header_t
and/or cap_user_data_t.
* tests/caps.awk: Update match patterns.
* tests/caps.test: Update.
Dmitry V. Levin [Sat, 6 Feb 2016 01:12:22 +0000 (01:12 +0000)]
tests: extend coverage of sched_getaffinity syscall
* tests/sched_xetaffinity.c (main): Check decoding of pointer
to inaccessible cpu_set_t.
Dmitry V. Levin [Sat, 6 Feb 2016 00:56:55 +0000 (00:56 +0000)]
tests: extend coverage of utime syscall
* tests/utime.c (main): Check decoding of NULL struct utimbuf pointer.
Check decoding of struct utimbuf located at the end of page boundary.
* tests/utime.test: Update.
Dmitry V. Levin [Sat, 6 Feb 2016 00:56:34 +0000 (00:56 +0000)]
tests: extend coverage of sysinfo syscall
* tests/sysinfo.c (main): Check decoding of NULL struct sysinfo pointer.
Check decoding of struct sysinfo located at the end of page boundary.
* tests/sysinfo.test: Update.
Dmitry V. Levin [Sat, 6 Feb 2016 00:56:15 +0000 (00:56 +0000)]
tests: extend coverage of adjtimex syscall
* tests/adjtimex.c (main): Check decoding of NULL struct timex pointer.
Check decoding of struct timex located at the end of page boundary.
* tests/adjtimex.test: Update.
Dmitry V. Levin [Mon, 8 Feb 2016 16:47:40 +0000 (16:47 +0000)]
tests: check that strace does not retain stdin and stdout descriptors
* tests/redirect.test: New test.
* tests/Makefile.am (TESTS): Add it.
Dmitry V. Levin [Mon, 8 Feb 2016 17:46:58 +0000 (17:46 +0000)]
Create a dummy pipe descriptor instead of opening /dev/null
* strace.c (open_dev_null): Rename to open_dummy_desc. All callers
changed. Create a pipe and return its first descriptor instead of
opening /dev/null.
Denys Vlasenko [Mon, 8 Feb 2016 17:08:46 +0000 (18:08 +0100)]
If stdin/stdout aren't open on startup, open them to /dev/null
Otherwise, -oLOGFILE may end up using one of them. This conflicts
with the previous change, which closes stdin/out in strace.
* strace.c (init): If fcntl(F_GETFD) fails on stdin or stdout,
sanitize them: open /dev/null and dup it until fds 0,1,2
are all used up.
Signed-off-by: Denys Vlasenko <dvlasenk@redhat.com>
Denys Vlasenko [Mon, 8 Feb 2016 13:52:32 +0000 (14:52 +0100)]
Close stdin/out after child is forked
Testcase:
{ sleep 1; yes | head -n99999; } | strace -o/dev/null sh -c 'exec <&-; sleep 9'
The writer (head) will be able to perform writes to write end of the pipe.
With strace call removed, head will immediately get SIGPIPE.
This change fixes this: now writer immediately gets SIGPIPE with strace too.
* strace.c (startup_child): Close stdin/out and reopen them to /dev/null.
Signed-off-by: Denys Vlasenko <dvlasenk@redhat.com>
Dmitry V. Levin [Fri, 5 Feb 2016 01:19:37 +0000 (01:19 +0000)]
tests: add opipe.test
Check that -o |pipe_command works. In particular, check that
strace waits for completion of piped command.
* tests/opipe.test: New test.
* tests/Makefile.am (TESTS): Add it.
Keith Owens [Mon, 18 Jan 2016 02:15:36 +0000 (13:15 +1100)]
strace-graph: print the pid in the graph
* strace-graph: Prefix each command with its pid.
Keith Owens [Mon, 18 Jan 2016 02:12:26 +0000 (13:12 +1100)]
strace-graph: cope with clone immediately followed by exit
* strace-graph: A clone() followed by exit() with no intervening fork
or execve resulted in the new pid having no seq key. That breaks when
trying to use seq as an array reference. Ensure that clone populates
the new pid with an empty seq entry.
Keith Owens [Mon, 18 Jan 2016 02:09:59 +0000 (13:09 +1100)]
strace-graph: handle recent strace output
* strace-graph: Fix regex for --SIG. Ignore '+++ exited with <n> +++'
lines. Handle exit_group syscall as well as _exit.
Keith Owens [Mon, 18 Jan 2016 02:03:41 +0000 (13:03 +1100)]
strace-graph: handle strace -T
* strace-graph: Ignore extra ' <time.spent>' field added by strace -T.
Keith Owens [Mon, 18 Jan 2016 01:57:41 +0000 (12:57 +1100)]
strace-graph: use "strict" and "warnings" pragmas
* strace-graph: Set "use strict" and "use warnings" options. Fix errors
detected by strict/warnings. $result is really a string, it can be "-1"
followed by an error text.