]> granicus.if.org Git - strace/log
strace
7 years agoUpdate V4L2_* constants
Edgar Kaziahmedov [Thu, 6 Apr 2017 01:35:00 +0000 (04:35 +0300)]
Update V4L2_* constants

* xlat/v4l2_buf_flags.in: Add V4L2_BUF_FLAG_PREPARED,
V4L2_BUF_FLAG_NO_CACHE_INVALIDATE, and V4L2_BUF_FLAG_NO_CACHE_CLEAN
introduced by linux kernel commit v3.2-rc1~63^2~55.
Add V4L2_BUF_FLAG_TIMESTAMP_MASK, V4L2_BUF_FLAG_TIMESTAMP_UNKNOWN,
and V4L2_BUF_FLAG_TIMESTAMP_MONOTONIC introduced by linux kernel commit
v3.9-rc1~93^2~536.
Add V4L2_BUF_FLAG_TIMESTAMP_COPY introduced by linux kernel commit
v3.10-rc1~136^2~560.
Add V4L2_BUF_FLAG_TSTAMP_SRC_MASK, V4L2_BUF_FLAG_TSTAMP_SRC_EOF,
and V4L2_BUF_FLAG_TSTAMP_SRC_SOE introduced by linux kernel commit
v3.15-rc1~85^2~186.
Add V4L2_BUF_FLAG_LAST introduced by linux kernel commit
v4.2-rc1~107^2~389.
* xlat/v4l2_buf_types.in: Add V4L2_BUF_TYPE_SDR_CAPTURE
and V4L2_BUF_TYPE_SDR_OUTPUT introduced by linux kernel commits
v3.15-rc1~85^2~213 and v4.4-rc1~118^2~14, respectively.
* xlat/xlat/v4l2_colorspaces.in: Add V4L2_COLORSPACE_ADOBERGB
and V4L2_COLORSPACE_BT2020 introduced by linux kernel commit
v3.19-rc1~29^2~72.
Add V4L2_COLORSPACE_RAW and V4L2_COLORSPACE_DCI_P3 introduced by linux
kernel commits v4.2-rc1~107^2~182 and v4.4-rc1~118^2~120, respectively.
* xlat/v4l2_device_capabilities_flags.in: Add V4L2_CAP_SDR_CAPTURE,
V4L2_CAP_EXT_PIX_FORMAT, and V4L2_CAP_SDR_OUTPUT introduced by linux
kernel commits v3.15-rc1~85^2~210, v3.17-rc1~112^2~327,
and v4.4-rc1~118^2~14, respectively.
* xlat/v4l2_memories.in: Add V4L2_MEMORY_OVERLAY introduced
in linux 2.5.46.  Add V4L2_MEMORY_DMABUF introduced by linux kernel
commit v3.8-rc1~115^2^2~52.

Signed-off-by: Edgar Kaziahmedov <edos@linux.com>
7 years agoImplement -e trace=%statfs option
Abhishek Tiwari [Wed, 29 Mar 2017 09:03:34 +0000 (14:33 +0530)]
Implement -e trace=%statfs option

linux/*/syscallent*.h part is modified automatically by:

sed -i 's/TF\(,[[:space:]]*SEN.*[_"]statv\?fs\)/TF|TSF\1/' \
linux/*/syscallent*.h

[ldv: rewritten trace_statfs.test using sched.test as a template]

* sysent.h (TRACE_STATFS): New macro.
* syscall.c: Alias TSF to TRACE_STATFS around syscallent.h inclusion.
* qualify.c (lookup_class): Add SCHED_STATFS for "%statfs".
* strace.1 (.SS Filtering): Add information about %statfs syscall class.
* NEWS: Mention this change.
* linux/64/syscallent.h (statfs): Add TSF flag.
* linux/aarch64/syscallent.h: Likewise.
* linux/x32/syscallent.h: Likewise.
* linux/x86_64/syscallent.h: Likewise.
* linux/mips/syscallent-n64.h: Likewise.
* linux/32/syscallent.h (statfs64): Likewise.
* linux/arm/syscallent.h (statfs, statfs64): Likewise.
* linux/avr32/syscallent.h: Likewise.
* linux/bfin/syscallent.h: Likewise.
* linux/crisv10/syscallent.h: Likewise.
* linux/hppa/syscallent.h: Likewise.
* linux/i386/syscallent.h: Likewise.
* linux/ia64/syscallent.h: Likewise.
* linux/m68k/syscallent.h: Likewise.
* linux/microblaze/syscallent.h: Likewise.
* linux/mips/syscallent-n32.h: Likewise.
* linux/mips/syscallent-o32.h: Likewise.
* linux/powerpc/syscallent.h: Likewise.
* linux/powerpc64/syscallent.h: Likewise.
* linux/s390/syscallent.h: Likewise.
* linux/s390x/syscallent.h: Likewise.
* linux/sh/syscallent.h: Likewise.
* linux/sh64/syscallent.h: Likewise.
* linux/sparc/syscallent.h: Likewise.
* linux/sparc64/syscallent.h: Likewise.
* linux/xtensa/syscallent.h: Likewise.
* linux/alpha/syscallent.h (osf_statfs, osf_statfs64, statfs): Likewise.
* linux/mips/syscallent-compat.h (*_statfs, *_statvfs): Likewise.
* tests/trace_statfs.test: New test.
* tests/Makefile.am (DECODER_TESTS): Add it.
* tests/ksysent.c (TSF): New macro, defined to 0.
* tests/nsyscalls.c: Likewise.

7 years agoImplement -e trace=%clock option
Rishi Bhatt [Mon, 27 Mar 2017 22:01:24 +0000 (03:31 +0530)]
Implement -e trace=%clock option

linux/*/syscallent.h part is modified automatically by
sed -i 's/0\(,[[:space:]]*SEN(clock_\)/TCL\1/' linux/*/syscallent*.h

[ldv: rewritten clock.test using sched.test as a template]

* sysent.h (TRACE_CLOCK): New macro.
* syscall.c: Alias TCL to TRACE_CLOCK around syscallent.h inclusion.
* qualify.c (lookup_class): Add TRACE_CLOCK for "%clock".
* strace.1 (.SS Filtering): Add information about %clock syscall class.
* NEWS: Mention this change.
* linux/32/syscallent.h: Add TCL flag for clock_* syscalls.
* linux/64/syscallent.h: Likewise.
* linux/alpha/syscallent.h: Likewise.
* linux/arm/syscallent.h: Likewise.
* linux/avr32/syscallent.h: Likewise.
* linux/bfin/syscallent.h: Likewise.
* linux/crisv10/syscallent.h: Likewise.
* linux/hppa/syscallent.h: Likewise.
* linux/i386/syscallent.h: Likewise.
* linux/ia64/syscallent.h: Likewise.
* linux/m68k/syscallent.h: Likewise.
* linux/microblaze/syscallent.h: Likewise.
* linux/mips/syscallent-n32.h: Likewise.
* linux/mips/syscallent-n64.h: Likewise.
* linux/mips/syscallent-o32.h: Likewise.
* linux/powerpc/syscallent.h: Likewise.
* linux/powerpc64/syscallent.h: Likewise.
* linux/s390/syscallent.h: Likewise.
* linux/s390x/syscallent.h: Likewise.
* linux/sh/syscallent.h: Likewise.
* linux/sh64/syscallent.h: Likewise.
* linux/sparc/syscallent.h: Likewise.
* linux/sparc64/syscallent.h: Likewise.
* linux/x32/syscallent.h: Likewise.
* linux/x86_64/syscallent.h: Likewise.
* linux/xtensa/syscallent.h: Likewise.
* tests/clock.test: New test.
* tests/Makefile.am (DECODER_TESTS): Add it.
* tests/ksysent.c (TCL): New macro, defined to 0.
* tests/nsyscalls.c: Likewise.

7 years agotests: tabulate xattr.test
Dmitry V. Levin [Thu, 6 Apr 2017 22:22:50 +0000 (22:22 +0000)]
tests: tabulate xattr.test

* tests/gen_tests.in (xattr): New entry.
* tests/xattr.test: Remove.
* tests/Makefile.am (DECODER_TESTS): Remove xattr.test.

7 years agotests: generalize scripts that check non-abbreviated decoding of ioctls
Dmitry V. Levin [Wed, 5 Apr 2017 00:44:30 +0000 (00:44 +0000)]
tests: generalize scripts that check non-abbreviated decoding of ioctls

* tests/ioctl-v.sh: New file.
* tests/Makefile.am (EXTRA_DIST): Add it.
(DECODER_TESTS): Remove ioctl_evdev-v.test, ioctl_loop-v.test,
and ioctl_rtc-v.test.
* tests/gen_tests.in (ioctl_evdev-v, ioctl_loop-v, ioctl_rtc-v):
New entries.
* tests/ioctl_evdev-v.test: Remove.
* tests/ioctl_loop-v.test: Ditto.
* tests/ioctl_rtc-v.test: Ditto.

7 years agotests: tabulate stereotypical test scripts
Dmitry V. Levin [Wed, 5 Apr 2017 00:37:54 +0000 (00:37 +0000)]
tests: tabulate stereotypical test scripts

Convert test scripts that follow simple testing patterns to a table.
Generate all these scripts from gen_tests.in file using gen_tests.sh
script at bootstrap time.

The largest set of test scripts has been converted using
the following command:

grep -l ^run_strace_match_diff *.test |while read f; do
n="${f%.test}"
grep '^[^#]' "$f" |
grep -Evq '^(\. "\${srcdir=\.}/init\.sh"|run_strace_match_diff)' ||
sed -n 's/^run_strace_match_diff\(.*\)/'$n'\1/p' "$f"
done

The second largest set of test scripts has been converted using
the following command:

grep -l srcdir= *.test |while read f; do
n="${f%.test}"
grep '^[^#]' "$f" |
grep -Fvq srcdir= ||
sed -n 's/^. "\${srcdir=.}\/\([^"]\+\)".*/'$n'\t+\1/p' "$f"
done

* tests/gen_tests.in: New file.
* tests/gen_tests.sh: New file.
* bootstrap: Invoke it.
* tests/.gitignore: Add *.gen.test and gen_tests.am.
* tests/_newselect.test: Remove.
* tests/accept.test: Ditto.
* tests/accept4.test: Ditto.
* tests/access.test: Ditto.
* tests/acct.test: Ditto.
* tests/add_key.test: Ditto.
* tests/adjtimex.test: Ditto.
* tests/aio.test: Ditto.
* tests/alarm.test: Ditto.
* tests/bpf.test: Ditto.
* tests/btrfs.test: Ditto.
* tests/chmod.test: Ditto.
* tests/chown.test: Ditto.
* tests/chown32.test: Ditto.
* tests/chroot.test: Ditto.
* tests/clock_adjtime.test: Ditto.
* tests/clock_nanosleep.test: Ditto.
* tests/clock_xettime.test: Ditto.
* tests/copy_file_range.test: Ditto.
* tests/creat.test: Ditto.
* tests/delete_module.test: Ditto.
* tests/dup.test: Ditto.
* tests/dup2.test: Ditto.
* tests/dup3.test: Ditto.
* tests/epoll_create.test: Ditto.
* tests/epoll_create1.test: Ditto.
* tests/epoll_ctl.test: Ditto.
* tests/epoll_pwait.test: Ditto.
* tests/epoll_wait.test: Ditto.
* tests/erestartsys.test: Ditto.
* tests/execveat-v.test: Ditto.
* tests/execveat.test: Ditto.
* tests/faccessat.test: Ditto.
* tests/fadvise64_64.test: Ditto.
* tests/fallocate.test: Ditto.
* tests/fanotify_init.test: Ditto.
* tests/fanotify_mark.test: Ditto.
* tests/fchdir.test: Ditto.
* tests/fchmod.test: Ditto.
* tests/fchmodat.test: Ditto.
* tests/fchown.test: Ditto.
* tests/fchown32.test: Ditto.
* tests/fchownat.test: Ditto.
* tests/fcntl.test: Ditto.
* tests/fcntl64.test: Ditto.
* tests/fdatasync.test: Ditto.
* tests/file_handle.test: Ditto.
* tests/file_ioctl.test: Ditto.
* tests/finit_module.test: Ditto.
* tests/flock.test: Ditto.
* tests/fork-f.test: Ditto.
* tests/fstat64.test: Ditto.
* tests/fstatat64.test: Ditto.
* tests/fstatfs.test: Ditto.
* tests/fstatfs64.test: Ditto.
* tests/fsync.test: Ditto.
* tests/ftruncate.test: Ditto.
* tests/ftruncate64.test: Ditto.
* tests/futimesat.test: Ditto.
* tests/get_mempolicy.test: Ditto.
* tests/getcpu.test: Ditto.
* tests/getcwd.test: Ditto.
* tests/getdents.test: Ditto.
* tests/getdents64.test: Ditto.
* tests/getegid.test: Ditto.
* tests/getegid32.test: Ditto.
* tests/geteuid.test: Ditto.
* tests/geteuid32.test: Ditto.
* tests/getgid.test: Ditto.
* tests/getgid32.test: Ditto.
* tests/getgroups.test: Ditto.
* tests/getgroups32.test: Ditto.
* tests/getpeername.test: Ditto.
* tests/getpgrp.test: Ditto.
* tests/getrandom.test: Ditto.
* tests/getresgid.test: Ditto.
* tests/getresgid32.test: Ditto.
* tests/getresuid.test: Ditto.
* tests/getresuid32.test: Ditto.
* tests/getrlimit.test: Ditto.
* tests/getrusage.test: Ditto.
* tests/getsid.test: Ditto.
* tests/getsockname.test: Ditto.
* tests/getuid32.test: Ditto.
* tests/getxxid.test: Ditto.
* tests/inet-cmsg.test: Ditto.
* tests/init_module.test: Ditto.
* tests/inotify.test: Ditto.
* tests/inotify_init1.test: Ditto.
* tests/int_0x80.test: Ditto.
* tests/ioctl_block.test: Ditto.
* tests/ioctl_evdev.test: Ditto.
* tests/ioctl_loop.test: Ditto.
* tests/ioctl_mtd.test: Ditto.
* tests/ioctl_rtc.test: Ditto.
* tests/ioctl_scsi.test: Ditto.
* tests/ioctl_sg_io_v3.test: Ditto.
* tests/ioctl_sg_io_v4.test: Ditto.
* tests/ioctl_uffdio.test: Ditto.
* tests/ioctl_v4l2.test: Ditto.
* tests/ioperm.test: Ditto.
* tests/iopl.test: Ditto.
* tests/ioprio.test: Ditto.
* tests/ip_mreq.test: Ditto.
* tests/ipc.test: Ditto.
* tests/ipc_msg.test: Ditto.
* tests/ipc_sem.test: Ditto.
* tests/ipc_shm.test: Ditto.
* tests/kcmp.test: Ditto.
* tests/kexec_file_load.test: Ditto.
* tests/kexec_load.test: Ditto.
* tests/keyctl.test: Ditto.
* tests/kill.test: Ditto.
* tests/lchown.test: Ditto.
* tests/lchown32.test: Ditto.
* tests/link.test: Ditto.
* tests/linkat.test: Ditto.
* tests/lookup_dcookie.test: Ditto.
* tests/lstat.test: Ditto.
* tests/lstat64.test: Ditto.
* tests/mbind.test: Ditto.
* tests/membarrier.test: Ditto.
* tests/memfd_create.test: Ditto.
* tests/migrate_pages.test: Ditto.
* tests/mincore.test: Ditto.
* tests/mkdir.test: Ditto.
* tests/mkdirat.test: Ditto.
* tests/mknod.test: Ditto.
* tests/mknodat.test: Ditto.
* tests/mlock.test: Ditto.
* tests/mlock2.test: Ditto.
* tests/mlockall.test: Ditto.
* tests/mmap64.test: Ditto.
* tests/mmsg-silent.test: Ditto.
* tests/mmsg.test: Ditto.
* tests/mmsg_name-v.test: Ditto.
* tests/mmsg_name.test: Ditto.
* tests/mount.test: Ditto.
* tests/move_pages.test: Ditto.
* tests/mq.test: Ditto.
* tests/mq_sendrecv-read.test: Ditto.
* tests/mq_sendrecv-write.test: Ditto.
* tests/mq_sendrecv.test: Ditto.
* tests/msg_control-v.test: Ditto.
* tests/msg_control.test: Ditto.
* tests/msg_name.test: Ditto.
* tests/munlockall.test: Ditto.
* tests/nanosleep.test: Ditto.
* tests/net-icmp_filter.test: Ditto.
* tests/net-sockaddr.test: Ditto.
* tests/newfstatat.test: Ditto.
* tests/old_mmap.test: Ditto.
* tests/oldfstat.test: Ditto.
* tests/oldlstat.test: Ditto.
* tests/oldstat.test: Ditto.
* tests/open.test: Ditto.
* tests/openat.test: Ditto.
* tests/pause.test: Ditto.
* tests/perf_event_open.test: Ditto.
* tests/perf_event_open_nonverbose.test: Ditto.
* tests/perf_event_open_unabbrev.test: Ditto.
* tests/pipe2.test: Ditto.
* tests/pkey_alloc.test: Ditto.
* tests/pkey_free.test: Ditto.
* tests/pkey_mprotect.test: Ditto.
* tests/ppoll-v.test: Ditto.
* tests/ppoll.test: Ditto.
* tests/preadv-pwritev.test: Ditto.
* tests/preadv.test: Ditto.
* tests/preadv2-pwritev2.test: Ditto.
* tests/printstr.test: Ditto.
* tests/prlimit64.test: Ditto.
* tests/process_vm_readv.test: Ditto.
* tests/process_vm_writev.test: Ditto.
* tests/pselect6.test: Ditto.
* tests/ptrace.test: Ditto.
* tests/pwritev.test: Ditto.
* tests/quotactl-v.test: Ditto.
* tests/quotactl-xfs-v.test: Ditto.
* tests/quotactl-xfs.test: Ditto.
* tests/quotactl.test: Ditto.
* tests/readahead.test: Ditto.
* tests/readdir.test: Ditto.
* tests/readlink.test: Ditto.
* tests/readlinkat.test: Ditto.
* tests/reboot.test: Ditto.
* tests/recvfrom.test: Ditto.
* tests/recvmmsg-timeout.test: Ditto.
* tests/recvmsg.test: Ditto.
* tests/remap_file_pages.test: Ditto.
* tests/rename.test: Ditto.
* tests/renameat.test: Ditto.
* tests/renameat2.test: Ditto.
* tests/request_key.test: Ditto.
* tests/rmdir.test: Ditto.
* tests/rt_sigpending.test: Ditto.
* tests/rt_sigprocmask.test: Ditto.
* tests/rt_sigqueueinfo.test: Ditto.
* tests/rt_sigreturn.test: Ditto.
* tests/rt_sigsuspend.test: Ditto.
* tests/rt_sigtimedwait.test: Ditto.
* tests/rt_tgsigqueueinfo.test: Ditto.
* tests/sched_get_priority_mxx.test: Ditto.
* tests/sched_rr_get_interval.test: Ditto.
* tests/sched_xetaffinity.test: Ditto.
* tests/sched_xetattr.test: Ditto.
* tests/sched_xetparam.test: Ditto.
* tests/sched_xetscheduler.test: Ditto.
* tests/sched_yield.test: Ditto.
* tests/seccomp-filter-v.test: Ditto.
* tests/seccomp-filter.test: Ditto.
* tests/select.test: Ditto.
* tests/semop.test: Ditto.
* tests/sendfile.test: Ditto.
* tests/sendfile64.test: Ditto.
* tests/set_mempolicy.test: Ditto.
* tests/setdomainname.test: Ditto.
* tests/setfsgid.test: Ditto.
* tests/setfsgid32.test: Ditto.
* tests/setfsuid.test: Ditto.
* tests/setfsuid32.test: Ditto.
* tests/setgid.test: Ditto.
* tests/setgid32.test: Ditto.
* tests/setgroups.test: Ditto.
* tests/setgroups32.test: Ditto.
* tests/sethostname.test: Ditto.
* tests/setns.test: Ditto.
* tests/setregid.test: Ditto.
* tests/setregid32.test: Ditto.
* tests/setresgid.test: Ditto.
* tests/setresgid32.test: Ditto.
* tests/setresuid.test: Ditto.
* tests/setresuid32.test: Ditto.
* tests/setreuid.test: Ditto.
* tests/setreuid32.test: Ditto.
* tests/setrlimit.test: Ditto.
* tests/setuid.test: Ditto.
* tests/setuid32.test: Ditto.
* tests/shutdown.test: Ditto.
* tests/siginfo.test: Ditto.
* tests/signal_receive.test: Ditto.
* tests/signalfd4.test: Ditto.
* tests/sigreturn.test: Ditto.
* tests/socketcall.test: Ditto.
* tests/splice.test: Ditto.
* tests/stat.test: Ditto.
* tests/stat64.test: Ditto.
* tests/statfs64.test: Ditto.
* tests/statx.sh: Ditto.
* tests/statx.test: Ditto.
* tests/swap.test: Ditto.
* tests/symlink.test: Ditto.
* tests/symlinkat.test: Ditto.
* tests/sync.test: Ditto.
* tests/sync_file_range.test: Ditto.
* tests/sync_file_range2.test: Ditto.
* tests/sysinfo.test: Ditto.
* tests/syslog.test: Ditto.
* tests/tee.test: Ditto.
* tests/time.test: Ditto.
* tests/timer_create.test: Ditto.
* tests/timer_xettime.test: Ditto.
* tests/timerfd_xettime.test: Ditto.
* tests/times-fail.test: Ditto.
* tests/times.test: Ditto.
* tests/truncate.test: Ditto.
* tests/truncate64.test: Ditto.
* tests/ugetrlimit.test: Ditto.
* tests/umask.test: Ditto.
* tests/umoven-illptr.test: Ditto.
* tests/umovestr-illptr.test: Ditto.
* tests/umovestr3.test: Ditto.
* tests/unlink.test: Ditto.
* tests/unlinkat.test: Ditto.
* tests/unshare.test: Ditto.
* tests/userfaultfd.test: Ditto.
* tests/ustat.test: Ditto.
* tests/utime.test: Ditto.
* tests/utimes.test: Ditto.
* tests/vfork-f.test: Ditto.
* tests/vhangup.test: Ditto.
* tests/vmsplice.test: Ditto.
* tests/wait4-v.test: Ditto.
* tests/wait4.test: Ditto.
* tests/waitid-v.test: Ditto.
* tests/waitid.test: Ditto.
* tests/waitpid.test: Ditto.
* tests/xattr-strings.test: Ditto.
* tests/xet_robust_list.test: Ditto.
* tests/xetitimer.test: Ditto.
* tests/xetpgid.test: Ditto.
* tests/xetpriority.test: Ditto.
* tests/xettimeofday.test: Ditto.
* tests/Makefile.am (DECODER_TESTS, MISC_TESTS): Remove them.
Include gen_tests.am.
(TESTS): Add $(GEN_TESTS).
(XFAIL_TESTS_x86_64, XFAIL_TESTS_x32): Rename int_0x80.test
to int_0x80.gen.test.
(EXTRA_DIST): Add gen_tests.in and gen_tests.sh, remove statx.sh.
(clean-local-check): Remove $(GEN_TESTS:.gen.test=.dir).

7 years agotests: handle test scripts with .gen.test suffix
Dmitry V. Levin [Tue, 4 Apr 2017 18:03:45 +0000 (18:03 +0000)]
tests: handle test scripts with .gen.test suffix

* tests/init.sh: If script name ends with .gen.test,
set NAME variable with .gen.test suffix stripped.

7 years agompers.awk: add support for multidimensional arrays
Eugene Syromyatnikov [Tue, 4 Apr 2017 03:08:20 +0000 (05:08 +0200)]
mpers.awk: add support for multidimensional arrays

* mpers.awk (update_upper_bound): New function, which maintains new "count"
property for storing total element count and updates "upper_bound"
property which now contains string with array dimensions.
(/^DW_AT_upper_bound/, /^DW_AT_count/): Use it.
(what_is) <case "array_type">: Use "count" property in order to calculate
returned_size, do not embody returned string in square brackets.
* mpers_test.sh: Add checks for multidimensional arrays.

7 years agompers.awk: prepare for adding support of multidimensional arrays
Dmitry V. Levin [Tue, 4 Apr 2017 01:39:56 +0000 (01:39 +0000)]
mpers.awk: prepare for adding support of multidimensional arrays

* mpers.awk (what_is) <case "structure_type", case "union_type">:
Move formatting of array upper_bound ...
<case "array_type">: ... here.

7 years agotests: cleanup temporary files removals
Dmitry V. Levin [Mon, 3 Apr 2017 16:24:28 +0000 (16:24 +0000)]
tests: cleanup temporary files removals

As every test now runs in its own subdirectory, there is no need
to remove leftover files manually by each test.

* tests/init.sh (run_strace_match_diff): Do not remove $EXP.
* tests/brk.test: Likewise.
* tests/options-syntax.test: Likewise.
* tests/qual_inject-retval.test (check_injection): Likewise.
* tests/qual_signal.test (test_one_sig): Likewise.
* tests/sched.test: Likewise.
* tests/seccomp-strict.test: Likewise.
* tests/strace-V.test: Likewise.
* tests/strace-tt.test: Likewise.
* tests/strace-ttt.test: Likewise.
* tests/threads-execve.test: Likewise.
* tests/attach-f-p.test: Use $EXP instead of $OUT, do not remove it.
* tests/personality.test: Likewise.
* tests/poll.test: Likewise.
* tests/fstat.test: Likewise.
* tests/ipc.sh: Likewise.
* tests/restart_syscall.test: Likewise.
* tests/utimensat.test: Likewise.
* tests/attach-p-cmd.test: Likewise.  Do not remove
attach-p-cmd.test-lock.
* tests/detach-running.test: Do not remove $LOG.
* tests/detach-sleeping.test: Likewise.
* tests/detach-stopped.test: Likewise.
* tests/redirect.test: Do not remove $OUT.
* tests/strace-S.test: Likewise.
* tests/getdents.test: Do not remove $LOG.dir.
* tests/getdents64.test: Likewise.
* tests/readdir.test: Likewise.
* tests/btrfs-v.test: Do not remove $EXP and $OUT.
* tests/btrfs-vw.test: Likewise.
* tests/btrfs-w.test: Likewise.
* tests/execve-v.test: Likewise.
* tests/execve.test: Likewise.
* tests/fadvise64.test: Likewise.
* tests/getuid.test: Likewise.
* tests/ioctl.test: Likewise.
* tests/ioctl_dm-v.test: Likewise.
* tests/ioctl_dm.test: Likewise.
* tests/ioctl_evdev-v.test: Likewise.
* tests/ioctl_loop-nv.test: Likewise.
* tests/ioctl_loop-v.test: Likewise.
* tests/ioctl_loop.test: Likewise.
* tests/ioctl_rtc-v.test: Likewise.
* tests/ioctl_sock_gifconf.test: Likewise.
* tests/llseek.test: Likewise.
* tests/lseek.test: Likewise.
* tests/mmap.test: Likewise.
* tests/net-y-unix.test: Likewise.
* tests/net-yy-inet.test: Likewise.
* tests/net-yy-netlink.test: Likewise.
* tests/net-yy-unix.test: Likewise.
* tests/opipe.test: Likewise.
* tests/prctl-arg2-intptr.test: Likewise.
* tests/prctl-dumpable.test: Likewise.
* tests/prctl-name.test: Likewise.
* tests/prctl-no-args.test: Likewise.
* tests/prctl-pdeathsig.test: Likewise.
* tests/prctl-seccomp-filter-v.test: Likewise.
* tests/prctl-seccomp-strict.test: Likewise.
* tests/prctl-securebits.test: Likewise.
* tests/prctl-tid_address.test: Likewise.
* tests/prctl-tsc.test: Likewise.
* tests/umovestr2.test: Likewise.
* tests/uname.test: Likewise.
* tests/pread64-pwrite64.test: Do nore remove pread64-pwrite64-tmpfile.
* tests/read-write.test: Do nore remove read-write-tmpfile.
* tests/qual_fault.test (check_fault_injection): Do not remove $EXP,
$outexp, and $outgot.
* tests/redirect-fds.test (check_fd): Reorder removal of work files.
* tests/pc.test: Use $EXP instead of $EXPECTED, do not remove it.
* tests/strace-t.test: Likewise.
* tests/scm_rights-fd.test: Likewise.  Use dir instead of $LOG.dir,
do not remove it.
* tests/strace-ff.test: Do not remove $OUT and $LOG.* files.

7 years agotests: enhance sched.test negative check
Dmitry V. Levin [Mon, 3 Apr 2017 01:06:11 +0000 (01:06 +0000)]
tests: enhance sched.test negative check

* tests/sched.test: Test that trace=%sched doesn't match
anything besides sched_* syscalls by checking it against all test
executables without side effects listed in pure_executables.list
except sched_* and times.

7 years agotests: add a list of executables without side effects
Dmitry V. Levin [Mon, 3 Apr 2017 01:06:11 +0000 (01:06 +0000)]
tests: add a list of executables without side effects

These are executables that could be used by several different tests
simultaneously.

* tests/pure_executables.list: New file.
* tests/Makefile.am (EXTRA_DIST): Add it.

7 years agotests: use fixed socket address in net-yy-unix.test
Dmitry V. Levin [Mon, 3 Apr 2017 00:56:54 +0000 (00:56 +0000)]
tests: use fixed socket address in net-yy-unix.test

This allows net-yy-unix invocation without arguments.

* tests/net-yy-unix.c (TEST_SOCKET): New macro.
(void): Use it instead of av[1].
* tests/net-yy-unix.test: Do not specify arguments for the test
executable.

7 years agotests: use fixed socket address in net-y-unix.test
Dmitry V. Levin [Mon, 3 Apr 2017 00:56:54 +0000 (00:56 +0000)]
tests: use fixed socket address in net-y-unix.test

This allows net-y-unix invocation without arguments.

* tests/net-y-unix.c (TEST_SOCKET): New macro.
(void): Use it instead of av[1].
* tests/net-y-unix.test: Do not specify arguments for the test
executable.

7 years agotests: run every test except ksysent.test in its own subdirectory
Dmitry V. Levin [Sun, 2 Apr 2017 01:03:24 +0000 (01:03 +0000)]
tests: run every test except ksysent.test in its own subdirectory

Many test executables create temporary files in the current work
directory for the duration of their execution.
This level of test isolation allows more test executables to be invoked
several times simultaneously.

* tests/.gitignore: Add *.dir, remove *.log.*, *.tmp, *.tmp-*,
and *.tmp.* patterns.
* tests/Makefile.am (clean-local, clean-local-check): New rules.
(.PHONY): Add clean-local-check.
(CLEANFILES): Remove all but ksysent.h.
* tests/init.sh: Strip test-specific prefix from LOG, OUT, and EXP
variables.  When invoked from a test, create a new test-specific
directory, chdir into it, and add more ../ prefix to STRACE variable.
(run_prog): Replace "./" with "../".
* tests/attach-f-p.test: Replace "./" with "../".
* tests/attach-p-cmd.test: Likewise.
* tests/bexecve.test: Likewise.
* tests/btrfs-v.test: Likewise.
* tests/btrfs-vw.test: Likewise.
* tests/btrfs-w.test: Likewise.
* tests/count.test: Likewise.
* tests/detach-running.test: Likewise.
* tests/detach-sleeping.test: Likewise.
* tests/detach-stopped.test: Likewise.
* tests/mmap.test: Likewise.
* tests/net-y-unix.test: Likewise.
* tests/net-yy-inet.test: Likewise.
* tests/net-yy-netlink.test: Likewise.
* tests/net-yy-unix.test: Likewise.
* tests/net.test: Likewise.
* tests/opipe.test: Likewise.
* tests/poll.test: Likewise.
* tests/prctl-seccomp-strict.test: Likewise.
* tests/qual_fault-exit_group.test: Likewise.
* tests/qual_fault.test: Likewise.
* tests/qual_inject-error-signal.test: Likewise.
* tests/qual_inject-retval.test: Likewise.
* tests/qual_inject-signal.test: Likewise.
* tests/qual_signal.test: Likewise.
* tests/qual_syscall.test: Likewise.
* tests/readv.test: Likewise.
* tests/redirect-fds.test: Likewise.
* tests/sched.test: Likewise.
* tests/scm_rights-fd.test: Likewise.
* tests/seccomp-strict.test: Likewise.
* tests/strace-C.test: Likewise.
* tests/strace-E.expected: Likewise.
* tests/strace-E.test: Likewise.
* tests/strace-S.test: Likewise.
* tests/strace-T.test: Likewise.
* tests/strace-V.test: Likewise.
* tests/strace-ff.test: Likewise.
* tests/strace-k.test: Likewise.
* tests/strace-r.expected: Likewise.
* tests/strace-r.test: Likewise.
* tests/strace-t.test: Likewise.
* tests/strace-tt.test: Likewise.
* tests/strace-ttt.test: Likewise.
* tests/sun_path.test: Likewise.
* tests/uname.test: Likewise.
* tests/unix-pair-send-recv.test: Likewise.
* tests/unix-pair-sendto-recvfrom.test: Likewise.

7 years agotests: make test executables invocable outside current work directory
Dmitry V. Levin [Sat, 1 Apr 2017 23:11:28 +0000 (23:11 +0000)]
tests: make test executables invocable outside current work directory

Most of test executables were ready for the upcoming change,
this change prepares all the rest.

* tests/getdents.c (main): Use fixed name for the sample directory.
* tests/getdents64.c (main): Likewise.
* tests/readdir.c (main): Likewise.
* tests/mknod.c (sample): Change to a pointer.
(main): Use av[0] as a sample.
* tests/symlink.c (main): Use av[0] as a linkpath.
* tests/umode_t.c (sample): Change to a pointer.
(test_syscall): Fix expected output.
(main): Use av[0] as a sample.

7 years agotests: cleanup access.test
Dmitry V. Levin [Fri, 31 Mar 2017 23:25:32 +0000 (23:25 +0000)]
tests: cleanup access.test

* tests/access.test: Use run_strace_match_diff.
* tests/access.c (main): Update expected output.

7 years agotests: cleanup oldfstat.test
Dmitry V. Levin [Thu, 30 Mar 2017 23:29:24 +0000 (23:29 +0000)]
tests: cleanup oldfstat.test

* tests/oldfstat.test: Use fstat.test.

7 years agoaarch64: workaround gcc+kernel bug
Dmitry V. Levin [Wed, 29 Mar 2017 17:55:35 +0000 (17:55 +0000)]
aarch64: workaround gcc+kernel bug

Due to a subtle gcc bug that leads to miscompiled aarch64 kernels,
the 3rd argument of sched_getattr syscall is not quite 32-bit
on aarch64 as on other architectures.  For more details see
https://sourceforge.net/p/strace/mailman/message/35721703/

* defs.h (print_abnormal_hi): New prototype.
* util.c (print_abnormal_hi): New function.
* sched.c (SYS_FUNC(sched_getattr)) [AARCH64]: Use it.
* tests/sched_xetattr.c (main) [__arm64__ || __aarch64__]: Test it.

7 years agoalpha, mips: fix missing flags in stat related compatibility syscalls
Abhishek Tiwari [Tue, 28 Mar 2017 03:50:07 +0000 (09:20 +0530)]
alpha, mips: fix missing flags in stat related compatibility syscalls

Following commands do the fix:

Add TF flag, fixed by:
git grep -Fl '_stat' linux/*/syscallent* | xargs sed -i \
   's/0\(,[[:space:]]*SEN(.*_l\?stat[^i]\)/TF\1/'

Add TD flag, fixed by:
git grep -Fl '_stat' linux/*/syscallent* | xargs sed -i \
  's/0\(,[[:space:]]*SEN(.*_fstat\)/TD\1/'

* linux/alpha/syscallent.h: Add TF and TD flags to stat related
compat syscall entries.
* linux/mips/syscallent-compat.h: Likewise.

7 years agoalpha: fix the number of arguments in alpha specific syscalls
Dmitry V. Levin [Fri, 24 Mar 2017 15:09:59 +0000 (15:09 +0000)]
alpha: fix the number of arguments in alpha specific syscalls

* linux/alpha/syscallent.h (getxgid, osf_stat, osf_lstat, osf_fstat,
osf_sysinfo, sethae): Set nargs according to arch/alpha/kernel/osf_sys.c
from linux v4.10.

7 years agoalpha: update comments about not implemented syscalls
Dmitry V. Levin [Fri, 24 Mar 2017 15:09:59 +0000 (15:09 +0000)]
alpha: update comments about not implemented syscalls

* linux/alpha/syscallent.h: Sync "not implemented" comments
with arch/alpha/kernel/systbls.S from linux v4.10.

7 years agoUpdate BPF_MAP_TYPE_* constants
Quentin Monnet [Thu, 23 Mar 2017 12:18:55 +0000 (13:18 +0100)]
Update BPF_MAP_TYPE_* constants

* xlat/bpf_map_types.in: Add BPF_MAP_TYPE_ARRAY_OF_MAPS
and BPF_MAP_TYPE_HASH_OF_MAPS constants.

7 years agoUpdate ioctl entries from linux v4.11-rc3
Gleb Fotengauer-Malinovskiy [Thu, 23 Mar 2017 16:24:00 +0000 (19:24 +0300)]
Update ioctl entries from linux v4.11-rc3

* linux/32/ioctls_inc_align16.h: Update from linux v4.11-rc3 using ioctls_gen.sh.
* linux/32/ioctls_inc_align32.h: Likewise.
* linux/32/ioctls_inc_align64.h: Likewise.
* linux/64/ioctls_inc.h: Likewise.
* linux/x32/ioctls_inc0.h: Likewise.
* linux/arm/ioctls_arch0.h: Likewise.
* linux/i386/ioctls_arch0.h: Likewise.
* linux/powerpc/ioctls_arch0.h: Likewise.
* linux/s390/ioctls_arch0.h: Likewise.
* linux/s390x/ioctls_arch0.h: Likewise.
* linux/x86_64/ioctls_arch0.h: Likewise.
* NEWS: Mention this.

7 years agomaint: update for linux 4.11
Gleb Fotengauer-Malinovskiy [Thu, 23 Mar 2017 13:26:47 +0000 (16:26 +0300)]
maint: update for linux 4.11

* maint/ioctls_sym.sh (ppc_list): Add KVM_PPC_GET_RMMU_INFO
and KVM_PPC_CONFIGURE_V3_MMU.

7 years agotest: rename README to README.md
Dmitry V. Levin [Sun, 19 Mar 2017 13:34:16 +0000 (13:34 +0000)]
test: rename README to README.md

* test/README: Rename to README.md, turn ../tests reference into an URL.

7 years agotest: update README
Dmitry V. Levin [Sun, 19 Mar 2017 13:34:16 +0000 (13:34 +0000)]
test: update README

* test/README: Tell the reader what this directory is actually for.

7 years agotest: rewrite skodic.c demo
Dmitry V. Levin [Sat, 18 Mar 2017 22:14:16 +0000 (22:14 +0000)]
test: rewrite skodic.c demo

* test/skodic.c: Rewrite this demo to simplify its use.

7 years agoImplement decoding of statx syscall
Victor Krapivensky [Sat, 18 Mar 2017 15:19:07 +0000 (18:19 +0300)]
Implement decoding of statx syscall

* linux/i386/syscallent.h [383]: Add statx entry.
* linux/x32/syscallent.h [332]: Likewise.
* linux/x86_64/syscallent.h [332]: Likewise.
* pathtrace.c (pathtrace_match): Handle SEN_statx.
* statx.c: New file.
* statx.h: Likewise.
* Makefile.am (strace_SOURCES): Add them.
* tests/.gitignore: Add statx.
* tests/Makefile.am (check_PROGRAMS): Likewise.
(DECODER_TESTS): Add statx.test.
* tests/statx.c: New file.
* tests/statx.test: Likewise.
* tests/xstatx.c: Modify to support statx.
* xlat/at_statx_sync_types.in: New file.
* xlat/statx_attrs.in: Likewise.
* xlat/statx_masks.in: Likewise.
* NEWS: Mention this change.

7 years agotests: check for out of bounds fetch in parsers of stat family syscalls
Dmitry V. Levin [Fri, 17 Mar 2017 20:15:20 +0000 (20:15 +0000)]
tests: check for out of bounds fetch in parsers of stat family syscalls

* tests/xstatx.c (main): Create STRUCT_STAT object using
TAIL_ALLOC_OBJECT_CONST_PTR.

7 years agotests: check unexpected syscall errors returned by stat family syscalls
Dmitry V. Levin [Fri, 17 Mar 2017 20:15:20 +0000 (20:15 +0000)]
tests: check unexpected syscall errors returned by stat family syscalls

* tests/xstatx.c (main) [!OLD_STAT]: Do not skip the test
in case of EOVERFLOW.
Treat errors other than ENOSYS and EOVERFLOW as fatal.

7 years agotests: move try_run_prog to init.sh
Eugene Syromyatnikov [Fri, 17 Mar 2017 20:04:03 +0000 (21:04 +0100)]
tests: move try_run_prog to init.sh

Looks like try_run_prog may be of general use by other syscall class
tests.

* tests/sched.test (try_run_prog): Move it...
* tests/init: ... here.

7 years agotests/sched.test: rc should be a local variable in try_run_prog
Eugene Syromyatnikov [Fri, 17 Mar 2017 19:49:59 +0000 (20:49 +0100)]
tests/sched.test: rc should be a local variable in try_run_prog

* tests/sched.test (try_run_prog): Add local rc.

7 years agotests: check decoding of int 0x80 on x86_64, x32, and x86
Dmitry V. Levin [Thu, 16 Mar 2017 20:38:48 +0000 (20:38 +0000)]
tests: check decoding of int 0x80 on x86_64, x32, and x86

* tests/int_0x80.c: New file.
* tests/int_0x80.test: New test.
* tests/.gitignore: Add int_0x80.
* tests/Makefile.am (check_PROGRAMS): Likewise.
(MISC_TESTS, XFAIL_TESTS_x86_64, XFAIL_TESTS_x32): Add int_0x80.test.
(XFAIL_TESTS): Add $(XFAIL_TESTS_$(ARCH)).
(CLEANFILES): Add $(TESTS:=.tmp.out) and $(TESTS:=.tmp.exp).

7 years agostrace-graph: handle pid looping
Damien Profeta [Thu, 16 Mar 2017 09:01:55 +0000 (10:01 +0100)]
strace-graph: handle pid looping

* strace-graph: On long running process or heavily forking one (like
compilation), it can happen that a parent get 2 different children with
the same pid.  By tracking the currently runnig pid and adding the start
timestamp to the pid, the graph can now handle that case.

Closes: https://github.com/strace/strace/pull/7
7 years agotests: use TAIL_ALLOC_OBJECT_CONST_PTR
Dmitry V. Levin [Thu, 16 Mar 2017 13:46:36 +0000 (13:46 +0000)]
tests: use TAIL_ALLOC_OBJECT_CONST_PTR

Automatically convert tests to use TAIL_ALLOC_OBJECT_CONST_PTR macro
with the following sed expression:

sed -ri \
's/^([[:space:]]*)(([^*]+[[:alnum:]_])( \*)?) *\*( *const )?([^ =]+) = tail_alloc\(sizeof\((\2|\*\6)\)\);/\1TAIL_ALLOC_OBJECT_CONST_PTR(\2, \6);/' \
tests/*.c

7 years agotests: use TAIL_ALLOC_OBJECT_VAR_PTR
Dmitry V. Levin [Thu, 16 Mar 2017 13:46:36 +0000 (13:46 +0000)]
tests: use TAIL_ALLOC_OBJECT_VAR_PTR

Automatically convert tests to use TAIL_ALLOC_OBJECT_VAR_PTR macro
with the following sed expression:

sed -ri \
's/^([[:space:]]*)(([^*]+[[:alnum:]_])( \*)?) *\*([^ =]+) = tail_alloc\(sizeof\((\2|\*\5)\)\);/\1TAIL_ALLOC_OBJECT_VAR_PTR(\2, \5);/' \
tests/{move_pages,net-sockaddr,sendfile}.c

7 years agotests: add TAIL_ALLOC_OBJECT_{CONST,VAR}_PTR to tests.h
Dmitry V. Levin [Thu, 16 Mar 2017 13:46:36 +0000 (13:46 +0000)]
tests: add TAIL_ALLOC_OBJECT_{CONST,VAR}_PTR to tests.h

Introduce a new macros for the most widespread use of tail_alloc.

* tests/tests.h (TAIL_ALLOC_OBJECT_CONST_PTR,
TAIL_ALLOC_OBJECT_VAR_PTR): New macros.

7 years agoDecode RUSAGE_THREAD
Victor Krapivensky [Thu, 16 Mar 2017 07:35:40 +0000 (10:35 +0300)]
Decode RUSAGE_THREAD

* xlat/usagewho.in: Add values for existing entities, add
RUSAGE_THREAD.
* tests/getrusage.c: Test decoding of RUSAGE_THREAD.

7 years agotests/sched.test: use heredoc in order to avoid spawning of subprocess
Eugene Syromyatnikov [Mon, 13 Mar 2017 16:52:41 +0000 (17:52 +0100)]
tests/sched.test: use heredoc in order to avoid spawning of subprocess

Pipelined commands executed in subprocesses (some shells have special
provision for last command in the pipeline, but it is not guaranteed
and not POSIX), so exit codes of these subprocesses can be lost.
In order to avoid creating subprocesses, input for read commands
is better to supply via heredoc and not pipe.

* tests/sched.test: Move test cases to heredoc.

7 years agotests: do not skip sched.test if one of its subtests skips
Dmitry V. Levin [Wed, 15 Mar 2017 01:05:45 +0000 (01:05 +0000)]
tests: do not skip sched.test if one of its subtests skips

* tests/sched.test (try_run_prog): New function.
Use it instead of run_prog.

7 years agotests: do not check decoding of setitimer syscall outside xetitimer.test
Dmitry V. Levin [Wed, 15 Mar 2017 00:00:29 +0000 (00:00 +0000)]
tests: do not check decoding of setitimer syscall outside xetitimer.test

xetitimer.test already implements a comprehensive test of setitimer
syscall parser, no need to duplicate its parts in other tests.

* tests/clock_nanosleep.c (main): Remove setitimer expected output.
* tests/nanosleep.c (main): Likewise.
* tests/clock_nanosleep.test: Remove setitimer from the trace set.
* tests/nanosleep.test: Likewise.

7 years agotests: check decoding of getitimer and setitimer corner cases
Dmitry V. Levin [Tue, 14 Mar 2017 22:35:13 +0000 (22:35 +0000)]
tests: check decoding of getitimer and setitimer corner cases

* tests/sched_xetattr.c: Include <unistd.h> and <asm/unistd.h>.
(main): Check that pointer and integer arguments of getitimer
and setitimer syscalls are decoded properly.
* tests/xetitimer.test: Add -a option.

7 years agotests: rewrite sigreturn syscall decoding check from match_grep to match_diff
Dmitry V. Levin [Mon, 13 Mar 2017 11:37:36 +0000 (11:37 +0000)]
tests: rewrite sigreturn syscall decoding check from match_grep to match_diff

Unlike the former test that was based on match_grep,
the new one uses match_diff and does more rigorous testing.

* tests/sigreturn.c: Rewrite.
* tests/sigreturn.test: Likewise.

7 years agoia64, mips, x86_64: remove no longer used parsers of sigreturn syscalls
Dmitry V. Levin [Mon, 13 Mar 2017 01:58:39 +0000 (01:58 +0000)]
ia64, mips, x86_64: remove no longer used parsers of sigreturn syscalls

As there is no sigreturn syscall on ia64, mips n32, mips n64, x32,
and x86_64, no longer used parsers could be safely removed.

* linux/ia64/arch_sigreturn.c: Remove.
* Makefile.am (EXTRA_DIST): Remove it.
* linux/mips/arch_sigreturn.c (arch_sigreturn): Remove [!LINUX_MIPSO32].
* linux/x86_64/arch_sigreturn.c (arch_sigreturn): Remove.

7 years agoMove sigreturn parser to libstrace
Dmitry V. Levin [Mon, 13 Mar 2017 01:58:33 +0000 (01:58 +0000)]
Move sigreturn parser to libstrace

All architectures have rt_sigreturn, but only old ones also have
sigreturn.  Since not all architectures need a parser of sigreturn
syscall, remove the warning and move the parser to libstrace.

* Makefile.am (strace_SOURCES): Move sigreturn.c ...
(libstrace_a_SOURCES): ... here.
* linux/arch_sigreturn.c: Remove warning.

7 years agotests: check decoding of rt_sigreturn syscall
Dmitry V. Levin [Sun, 12 Mar 2017 16:11:38 +0000 (16:11 +0000)]
tests: check decoding of rt_sigreturn syscall

* tests/rt_sigreturn.c: New file.
* tests/rt_sigreturn.test: New test.
* tests/.gitignore: Add rt_sigreturn.
* tests/Makefile.am (check_PROGRAMS): Likewise.
(DECODER_TESTS): Add rt_sigreturn.test.

7 years agoImplement proper decoding of rt_sigreturn syscall
Dmitry V. Levin [Sun, 12 Mar 2017 22:01:09 +0000 (22:01 +0000)]
Implement proper decoding of rt_sigreturn syscall

* rt_sigreturn.c: New file.
* Makefile.am (strace_SOURCES): Add it.
* linux/dummy.h (sys_rt_sigreturn): Remove.
* linux/64/syscallent.h (rt_sigreturn): Change sys_func to rt_sigreturn.
* linux/hppa/syscallent.h (rt_sigreturn): Likewise.
* linux/ia64/syscallent.h (rt_sigreturn): Likewise.
* linux/s390/syscallent.h (rt_sigreturn): Likewise.
* linux/s390x/syscallent.h (rt_sigreturn): Likewise.
* linux/x86_64/syscallent.h (rt_sigreturn): Likewise.
* linux/x32/syscallent.h (rt_sigreturn, 64:rt_sigreturn): Likewise.
* NEWS: Mention this change.

7 years agoIntroduce get_rt_sigframe_addr function
Dmitry V. Levin [Sat, 11 Mar 2017 21:49:06 +0000 (21:49 +0000)]
Introduce get_rt_sigframe_addr function

Add get_rt_sigframe_addr function for all supported architectures.
It is going to be used in a parser of rt_sigreturn syscall.

* defs.h (get_rt_sigframe_addr): New function prototype.
* rt_sigframe.c: New file.
* Makefile.am (strace_SOURCES): Add it.
* linux/aarch64/arch_rt_sigframe.c: New file.
* linux/alpha/arch_rt_sigframe.c: Likewise.
* linux/arc/arch_rt_sigframe.c: Likewise.
* linux/arm/arch_rt_sigframe.c: Likewise.
* linux/avr32/arch_rt_sigframe.c: Likewise.
* linux/bfin/arch_rt_sigframe.c: Likewise.
* linux/crisv10/arch_rt_sigframe.c: Likewise.
* linux/crisv32/arch_rt_sigframe.c: Likewise.
* linux/hppa/arch_rt_sigframe.c: Likewise.
* linux/i386/arch_rt_sigframe.c: Likewise.
* linux/ia64/arch_rt_sigframe.c: Likewise.
* linux/m68k/arch_rt_sigframe.c: Likewise.
* linux/metag/arch_rt_sigframe.c: Likewise.
* linux/microblaze/arch_rt_sigframe.c: Likewise.
* linux/mips/arch_rt_sigframe.c: Likewise.
* linux/nios2/arch_rt_sigframe.c: Likewise.
* linux/or1k/arch_rt_sigframe.c: Likewise.
* linux/powerpc/arch_rt_sigframe.c: Likewise.
* linux/powerpc64/arch_rt_sigframe.c: Likewise.
* linux/riscv/arch_rt_sigframe.c: Likewise.
* linux/s390/arch_rt_sigframe.c: Likewise.
* linux/s390x/arch_rt_sigframe.c: Likewise.
* linux/sh/arch_rt_sigframe.c: Likewise.
* linux/sh64/arch_rt_sigframe.c: Likewise.
* linux/sparc/arch_rt_sigframe.c: Likewise.
* linux/sparc64/arch_rt_sigframe.c: Likewise.
* linux/tile/arch_rt_sigframe.c: Likewise.
* linux/x32/arch_rt_sigframe.c: Likewise.
* linux/x86_64/arch_rt_sigframe.c: Likewise.
* linux/xtensa/arch_rt_sigframe.c: Likewise.
* Makefile.am (EXTRA_DIST): Add them.

7 years agoIntroduce struct_rt_sigframe type
Dmitry V. Levin [Sat, 11 Mar 2017 21:26:22 +0000 (21:26 +0000)]
Introduce struct_rt_sigframe type

Add rt_sigframe.h files with definitions of struct_rt_sigframe type
for all supported architectures.
These definitions are going to be used in a parser of rt_sigreturn
syscall.

* linux/rt_sigframe.h: New file.
* linux/bfin/rt_sigframe.h: Likewise.
* linux/crisv10/rt_sigframe.h: Likewise.
* linux/crisv32/rt_sigframe.h: Likewise.
* linux/hppa/rt_sigframe.h: Likewise.
* linux/i386/rt_sigframe.h: Likewise.
* linux/ia64/rt_sigframe.h: Likewise.
* linux/m68k/rt_sigframe.h: Likewise.
* linux/mips/rt_sigframe.h: Likewise.
* linux/powerpc64/rt_sigframe.h: Likewise.
* linux/s390/rt_sigframe.h: Likewise.
* linux/s390x/rt_sigframe.h: Likewise.
* linux/sh64/rt_sigframe.h: Likewise.
* linux/sparc/rt_sigframe.h: Likewise.
* linux/sparc64/rt_sigframe.h: Likewise.
* linux/tile/rt_sigframe.h: Likewise.
* linux/x32/rt_sigframe.h: Likewise.
* linux/x86_64/rt_sigframe.h: Likewise.
* Makefile.am (EXTRA_DIST): Add them.

7 years agounwind.c: fix a possible buffer overflow
Victor Krapivensky [Sat, 11 Mar 2017 11:27:33 +0000 (14:27 +0300)]
unwind.c: fix a possible buffer overflow

Linux does not prevent a user from creating a lot of nested directories
with length of the absolute path of the deepest one exceeding PATH_MAX,
then chdir'ing into it, creating a file there and mmap'ing it. Since the
length of the prefix preceding the pathname in /proc/[pid]/maps is not
necessary 80 (it's 73 on my machine), an overflow is possible.

* unwind.c (build_mmap_cache): Fix a possible buffer overflow.

7 years agoutil.c: remove a wrong comment
Victor Krapivensky [Fri, 10 Mar 2017 17:48:35 +0000 (20:48 +0300)]
util.c: remove a wrong comment

4924dbd6d750665cf383b20ab4fd67e48219ab91 modified the return type, but
not the comment.

7 years agoriscv: export riscv_sp_ptr
Dmitry V. Levin [Fri, 10 Mar 2017 20:06:58 +0000 (20:06 +0000)]
riscv: export riscv_sp_ptr

Export SP register for later use by get_rt_sigframe_addr.

* linux/riscv/arch_regs.h: New file.
* Makefile.am (EXTRA_DIST): Add it.
* linux/riscv/arch_regs.c (riscv_sp_ptr): New variable.

7 years agoor1k: export or1k_sp_ptr
Dmitry V. Levin [Fri, 10 Mar 2017 19:52:11 +0000 (19:52 +0000)]
or1k: export or1k_sp_ptr

Export SP register for later use by get_rt_sigframe_addr.

* linux/or1k/arch_regs.h: New file.
* Makefile.am (EXTRA_DIST): Add it.
* linux/or1k/arch_regs.c (or1k_sp_ptr): New variable.

7 years agonios2: export nios2_sp_ptr
Dmitry V. Levin [Fri, 10 Mar 2017 19:45:06 +0000 (19:45 +0000)]
nios2: export nios2_sp_ptr

Export SP register for later use by get_rt_sigframe_addr.

* linux/nios2/arch_regs.h: New file.
* Makefile.am (EXTRA_DIST): Add it.
* linux/nios2/arch_regs.c (nios2_sp_ptr): New variable.

7 years agometag: export metag_sp_ptr
Dmitry V. Levin [Fri, 10 Mar 2017 19:26:54 +0000 (19:26 +0000)]
metag: export metag_sp_ptr

Export SP register for later use by get_rt_sigframe_addr.

* linux/metag/arch_regs.h: New file.
* Makefile.am (EXTRA_DIST): Add it.
* linux/metag/arch_regs.c (metag_sp_ptr): New variable.

7 years agoavr32: export avr32_sp_ptr
Dmitry V. Levin [Fri, 10 Mar 2017 18:40:05 +0000 (18:40 +0000)]
avr32: export avr32_sp_ptr

Export SP register for later use by get_rt_sigframe_addr.

* linux/avr32/arch_regs.h: New file.
* Makefile.am (EXTRA_DIST): Add it.
* linux/avr32/arch_regs.c (avr32_sp_ptr): New variable.

7 years agoarc: export arc_sp_ptr
Dmitry V. Levin [Fri, 10 Mar 2017 18:34:46 +0000 (18:34 +0000)]
arc: export arc_sp_ptr

Export SP register for later use by get_rt_sigframe_addr.

* linux/arc/arch_regs.h: New file.
* Makefile.am (EXTRA_DIST): Add it.
* linux/arc/arch_regs.c (arc_sp_ptr): New variable.

7 years agoIntroduce print_sigset_addr function
Dmitry V. Levin [Thu, 9 Mar 2017 22:51:46 +0000 (22:51 +0000)]
Introduce print_sigset_addr function

As the definition of NSIG_BYTES is based on NSIG defined in <signal.h>,
NSIG_BYTES cannot be used in files that use kernel sigset_t.

Add another wrapper around print_sigset_addr_len_limit function that
takes one argument less than print_sigset_addr_len wrapper.  This new
wrapper is going to be used in cases when the length argument is equal
to NSIG_BYTES.

* defs.h (print_sigset_addr): New function prototype.
* signal.c (print_sigset_addr): New function.
* linux/alpha/arch_sigreturn.c (arch_sigreturn): Replace
print_sigset_addr_len with print_sigset_addr.
* linux/arm/arch_sigreturn.c (arch_sigreturn): Likewise.
* linux/crisv10/arch_sigreturn.c (arch_sigreturn): Likewise.
* linux/ia64/arch_sigreturn.c (arch_sigreturn): Likewise.
* linux/microblaze/arch_sigreturn.c (arch_sigreturn): Likewise.
* linux/mips/arch_sigreturn.c (arch_sigreturn): Likewise.
* linux/tile/arch_sigreturn.c (arch_sigreturn): Likewise.
* linux/x86_64/arch_sigreturn.c (arch_sigreturn): Likewise.

7 years agoREADME.md: rework guidelines about sending bug reports
Dmitry V. Levin [Wed, 8 Mar 2017 13:43:47 +0000 (13:43 +0000)]
README.md: rework guidelines about sending bug reports

7 years agoUpdate information on how to build strace from git repository
Abhishek Tiwari [Tue, 7 Mar 2017 03:19:30 +0000 (08:49 +0530)]
Update information on how to build strace from git repository

* INSTALL-git.md: Describe how to build strace from git repository.
* README.md: Add reference to INSTALL-git.md.
* README-hacking: Likewise.

7 years agoREADME.md: fix references to in-tree files
Dmitry V. Levin [Sun, 5 Mar 2017 16:02:32 +0000 (16:02 +0000)]
README.md: fix references to in-tree files

* README.md: Change references to COPYING and NEWS files from absolute
to relative.

7 years agoINSTALL: regenerate from install.texi
Dmitry V. Levin [Sun, 5 Mar 2017 16:29:41 +0000 (16:29 +0000)]
INSTALL: regenerate from install.texi

Regenerate INSTALL from install.texi using the following command:
makeinfo --plaintext install.texi > INSTALL

* INSTALL: Regenerate from install.texi.

7 years agoinstall.texi: remove irrelevant sections
Dmitry V. Levin [Sun, 5 Mar 2017 16:29:41 +0000 (16:29 +0000)]
install.texi: remove irrelevant sections

Remove "Multiple Architectures" and "Particular Systems" sections using
the following filter script:

awk '/^@node (Multiple Architectures|Particular Systems)/{skip=1;next}
/^@node/{skip=0} {if(!skip)print}'

* install.texi (Multiple Architectures, Particular Systems): Remove.

7 years agoinstall.texi: import from GNU Autoconf
Dmitry V. Levin [Sun, 5 Mar 2017 16:15:55 +0000 (16:15 +0000)]
install.texi: import from GNU Autoconf

install.texi from GNU Autoconf is the ultimate source of INSTALL file.
This edition of install.texi has been downloaded from
https://git.savannah.gnu.org/cgit/autoconf.git/plain/doc/install.texi?id=63f3c78cdb0ccc85751543e387ef2a7252d5f0a2

* install.texi: Import from GNU Autoconf.

7 years agoImplement -e trace=%sched option for tracing sched_* syscalls
Eugene Syromyatnikov [Sat, 4 Mar 2017 12:28:42 +0000 (13:28 +0100)]
Implement -e trace=%sched option for tracing sched_* syscalls

Based on the patch by Md Haris Iqbal
(https://sourceforge.net/p/strace/mailman/message/35111320/)

linux/*/syscallent.h part is modified automatically by:

    git grep -Fl 'SEN(sched_' linux/ | xargs sed -i \
        's/0\(,[[:space:]]*SEN(sched_\)/TSC\1/'

* sysent.h (TRACE_SCHED): New definition.
* syscall.c: Alias TSC to TRACE_SCHED around syscallent.h inclusion.
* linux/32/syscallent.h: Add TSC flag for sched_* sycalls.
* linux/64/syscallent.h: Likewise.
* linux/alpha/syscallent.h: Likewise.
* linux/arm/syscallent.h: Likewise.
* linux/avr32/syscallent.h: Likewise.
* linux/bfin/syscallent.h: Likewise.
* linux/crisv10/syscallent.h: Likewise.
* linux/hppa/syscallent.h: Likewise.
* linux/i386/syscallent.h: Likewise.
* linux/ia64/syscallent.h: Likewise.
* linux/m68k/syscallent.h: Likewise.
* linux/microblaze/syscallent.h: Likewise.
* linux/mips/syscallent-n32.h: Likewise.
* linux/mips/syscallent-n64.h: Likewise.
* linux/mips/syscallent-o32.h: Likewise.
* linux/powerpc/syscallent.h: Likewise.
* linux/powerpc64/syscallent.h: Likewise.
* linux/s390/syscallent.h: Likewise.
* linux/s390x/syscallent.h: Likewise.
* linux/sh/syscallent.h: Likewise.
* linux/sh64/syscallent.h: Likewise.
* linux/sparc/syscallent.h: Likewise.
* linux/sparc64/syscallent.h: Likewise.
* linux/x32/syscallent.h: Likewise.
* linux/x86_64/syscallent.h: Likewise.
* linux/xtensa/syscallent.h: Likewise.
* qualify.c (lookup_class): Add TRACE_SCHED for "%sched".
* tests/ksysent.c: Define TSC to 0.
* tests/nsyscalls.c: Likewise.
* tests/sched.test: New test.
* tests/Makefile.am (DECODER_TESTS): Add sched.test.
* strace.1 (.SS Filtering): Add information about %sched syscall class.
* NEWS: Mention this change.

Co-authored-by: Md Haris Iqbal <haris.phnx@gmail.com>
7 years agoAdd "%" prefix for syscall classes in qualify
Eugene Syromyatnikov [Sat, 4 Mar 2017 03:22:06 +0000 (04:22 +0100)]
Add "%" prefix for syscall classes in qualify

(as suggested in
https://www.mail-archive.com/strace-devel@lists.sourceforge.net/msg05147.html )

In order to move them to a different namespace than syscall names. This is
already a problem in case of ipc class which shadows ipc syscall.

Old behaviour is retained in order to preserve backwards compatibility.

* qualify.c (lookup_class) <syscall_class>: Add %-prefixed class definitions.
* strace.1 (.SS Filtering): Add information regarding %-prefixed class
syntax, declare legacy class syntax deprecated.
* tests/net.test: Update to use %-prefixed syscall class name.
* tests/netlink_protocol.test: Likewise.
* tests/qual_fault-exit_group.test: Likewise.
* tests/qual_syscall.test: Likewise.
* tests/scm_rights-fd.test: Likewise.
* tests/sigreturn.test: Likewise.
* tests/uio.test: Likewise.
* NEWS: Mention this change.

7 years agotests: simplify print_time_t
Dmitry V. Levin [Tue, 28 Feb 2017 01:21:15 +0000 (01:21 +0000)]
tests: simplify print_time_t

* tests/print_time.c (print_time_t): Treat localtime errors as fatal.

7 years agoUpdate homepage URL
Dmitry V. Levin [Mon, 27 Feb 2017 23:11:07 +0000 (23:11 +0000)]
Update homepage URL

* README: Change homepage URL to https://strace.io
* debian/control: Likewise.
* strace.spec.in: Likewise.

7 years agotests: transform print_time_t into print_time_t_nsec
Dmitry V. Levin [Sun, 26 Feb 2017 23:23:31 +0000 (23:23 +0000)]
tests: transform print_time_t into print_time_t_nsec

* tests/print_time.c (print_time_t): Rename to print_time_t_nsec,
take second argument and print it.
* tests/tests.h (print_time_t): Rename to print_time_t_nsec,
add second argument.
* tests/utime.c (main): Use print_time_t_nsec instead of print_time_t.
* tests/xstatx.c (print_stat): Likewise.  Pass nanoseconds
to print_time_t_nsec instead of printing them.

7 years agotests: use print_time_t in utime.test
Dmitry V. Levin [Sun, 26 Feb 2017 22:57:37 +0000 (22:57 +0000)]
tests: use print_time_t in utime.test

* tests/utime.c (print_tm): Remove.
(main): Use print_time_t instead of print_tm.

7 years agotests: move print_time function to libtests
Dmitry V. Levin [Sun, 26 Feb 2017 20:35:37 +0000 (20:35 +0000)]
tests: move print_time function to libtests

Rename print_time function to print_time_t and move it to libtests.

* tests/print_time.c: New file.
* tests/Makefile.am (libtests_a_SOURCES): Add it.
* tests/tests.h (print_time_t): New prototype.
* tests/print_time.c (print_time): Remove.
(print_stat): Replace print_time with print_time_t.

7 years agotests: macroize printing of atime, mtime, and ctime fields in xstatx.c
Dmitry V. Levin [Sun, 26 Feb 2017 19:14:34 +0000 (19:14 +0000)]
tests: macroize printing of atime, mtime, and ctime fields in xstatx.c

Introduce a macro for printing similar time related fields.

* print_struct_stat.c (PRINT_ST_TIME): New macro.
(print_stat): Use it.

7 years agoprint_struct_stat.c: macroize printing of atime, mtime, and ctime fields
Dmitry V. Levin [Sun, 26 Feb 2017 19:14:34 +0000 (19:14 +0000)]
print_struct_stat.c: macroize printing of atime, mtime, and ctime fields

Introduce a macro for printing similar time related fields.

* print_struct_stat.c (PRINT_ST_TIME): New macro.
(print_struct_stat): Use it.

7 years agox32: fix decoding of flags argument of preadv2 and pwritev2 syscalls
Dmitry V. Levin [Sat, 25 Feb 2017 15:55:31 +0000 (15:55 +0000)]
x32: fix decoding of flags argument of preadv2 and pwritev2 syscalls

x32 is the only linux architecture where preadv2 and pwritev2 syscalls
take 5 arguments instead of 6.

* io.c (PREADV2_PWRITEV2_FLAGS_ARG_NO): New macro.
(SYS_FUNC(preadv2), SYS_FUNC(pwritev2)): Use it.
* linux/x32/syscallent.h (preadv2, pwritev2): Change nargs to 5.
* NEWS: Mention this fix.
* tests/preadv2-pwritev2.c (main): Fix invocation of preadv2
and pwritev2 syscalls on x32.

7 years agotests: rewrite ppoll syscall decoding check from match_grep to match_diff
Dmitry V. Levin [Tue, 21 Feb 2017 22:39:45 +0000 (22:39 +0000)]
tests: rewrite ppoll syscall decoding check from match_grep to match_diff

Unlike the former test that was based on match_grep,
the new one uses match_diff and does more rigorous testing.

* tests/ppoll-v.c: New file.
* tests/ppoll-v.test: New test.
* tests/ppoll.c: Rewrite.
* tests/ppoll.test: Likewise.
* tests/ppoll.expected: Remove.
* tests/ppoll-v.expected: Remove.
* tests/.gitignore: Add ppoll-v.
* tests/Makefile.am (check_PROGRAMS): Likewise.
(DECODER_TESTS): Add ppoll-v.test.
(EXTRA_DIST): Remove ppoll.expected and ppoll-v.expected.

7 years agotests: move get_sigset_size function to libtests
Dmitry V. Levin [Mon, 20 Feb 2017 00:10:35 +0000 (00:10 +0000)]
tests: move get_sigset_size function to libtests

* tests/get_sigset_size.c: New file.
* tests/Makefile.am (libtests_a_SOURCES): Add it.
* tests/tests.h (get_sigset_size): New prototype.
* tests/ptrace.c: Do not check for __NR_rt_sigprocmask.
(main): Use get_sigset_size.
* tests/signalfd4.c: Do not check for __NR_rt_sigprocmask.
(get_sigset_size): Remove.

7 years agosched: enhance decoding of sched_setattr syscall
Dmitry V. Levin [Sun, 19 Feb 2017 00:31:40 +0000 (00:31 +0000)]
sched: enhance decoding of sched_setattr syscall

Implement read/write semantics of struct sched_attr.size argument
of sched_setattr syscall.  Do not print members of struct sched_attr
besides sched_attr.size when the specified structure size is less than
the minimal size allowed by the kernel.

* sched.c (print_sched_attr): Fetch struct sched_attr.size and use it
as the structure size.  Print struct sched_attr.size only when the
structure size is less than SCHED_ATTR_MIN_SIZE.
(SYS_FUNC(sched_setattr)): Call print_sched_attr with zero size
argument.  Print struct sched_attr.size returned by the kernel
on exiting syscall in case of E2BIG. Print the last syscall argument
on exiting syscall.
(SYS_FUNC(sched_getattr)): Do not call print_sched_attr with zero size
argument.
* NEWS: Mention it.
* tests/sched_xetattr.c (main): Check it.

7 years agotests: check decoding of sched_[gs]etattr corner cases
Dmitry V. Levin [Sat, 18 Feb 2017 09:58:52 +0000 (09:58 +0000)]
tests: check decoding of sched_[gs]etattr corner cases

* tests/sched_xetattr.c (main): Check that integer arguments
of sched_getattr and sched_setattr syscalls are decoded properly
by adding a few cases with filled higher 32 bits.
Check that pointer argument is decoded properly
on F8ILL_KULONG_SUPPORTED architectures.

7 years agoMove definition of struct sched_attr to a separate header file
Dmitry V. Levin [Sat, 18 Feb 2017 09:58:52 +0000 (09:58 +0000)]
Move definition of struct sched_attr to a separate header file

Avoid multiple defintions of struct sched_attr by creating a separate
header file with its definition and using it in other places.

* sched_attr.h: New file.
* Makefile.am (strace_SOURCES): Add it.
* sched.c: Include it.
(print_sched_attr): Use it.
* tests/sched_xetattr.c: Include it.
(main): Use it.

7 years agotests: rewrite sched_xetattr.test from match_grep to match_diff
Dmitry V. Levin [Sat, 18 Feb 2017 09:58:52 +0000 (09:58 +0000)]
tests: rewrite sched_xetattr.test from match_grep to match_diff

Unlike the previous edition of the test that was based on match_grep,
the new one is match_diff based and does more rigorous testing.

* tests/adjtimex.c: Include "xlat.h" and "xlat/schedulers.h",
(sys_sched_getattr, sys_sched_setattr): New functions.
(main): Use them.  Update expected output.
* tests/adjtimex.test: Use run_strace_match_diff.

7 years agoUse tprints instead of tprintf in a few more places
Dmitry V. Levin [Sat, 18 Feb 2017 00:58:17 +0000 (00:58 +0000)]
Use tprints instead of tprintf in a few more places

* bpf.c (bpf_obj_manage, bpf_prog_attach_detach): Replace tprintf
with tprints for printing strings without format specifiers.
* dm.c (dm_decode_dm_target_spec): Likewise.
* mq.c (SYS_FUNC(mq_timedreceive)): Likewise.
* perf.c (print_perf_event_attr): Likewise.
* syscall.c (trace_syscall_exiting): Likewise.

7 years agobpf: update BPF_PROG_ATTACH decoding
Dmitry V. Levin [Fri, 17 Feb 2017 00:05:00 +0000 (00:05 +0000)]
bpf: update BPF_PROG_ATTACH decoding

Implement decoding of BPF_F_ALLOW_OVERRIDE flag of BPF_PROG_ATTACH
command introduced by linux kernel commit v4.10-rc7-174-g7f67763.

* configure.ac: Check for union bpf_attr.attach_flags
instead of union bpf_attr.attach_type.
* xlat/bpf_attach_flags.in: New file.
* bpf.c: Include "xlat/bpf_attach_flags.h".
(bpf_prog_attach_detach): Rename print_attach_bpf_fd argument
to print_attach.  Add attach_flags field to the structure,
print it in case of BPF_PROG_ATTACH.
* tests/bpf.c: Check for HAVE_UNION_BPF_ATTR_ATTACH_FLAGS
instead of HAVE_UNION_BPF_ATTR_ATTACH_TYPE.
(prog_cgroup): Initialize attach_flags field.
(main): Update expected output.

7 years agotests: rewrite adjtimex.test from match_grep to match_diff
Dmitry V. Levin [Thu, 16 Feb 2017 21:02:44 +0000 (21:02 +0000)]
tests: rewrite adjtimex.test from match_grep to match_diff

Unlike the previous edition of the test that was based on match_grep,
the new one is match_diff based and does more rigorous testing.

* tests/adjtimex.c: Include "xlat.h", "xlat/adjtimex_state.h",
and "xlat/adjtimex_status.h".
(main): Update expected output.
* tests/adjtimex.test: Use run_strace_match_diff.

7 years agotests: replace casts of 0xffffffff00000000ULL with F8ILL_KULONG_MASK
Dmitry V. Levin [Thu, 16 Feb 2017 16:36:14 +0000 (16:36 +0000)]
tests: replace casts of 0xffffffff00000000ULL with F8ILL_KULONG_MASK

* tests/init_delete_module.h (bogus_zero): Remove.
* tests/delete_module.c (main): Replace bogus_zero and
(kernel_ulong_t) 0xffffffff00000000ULL with F8ILL_KULONG_MASK.
* tests/finit_module.c (main): Replace bogus_zero
with F8ILL_KULONG_MASK.
* tests/init_module.c (main): Likewise.
* tests/pipe2.c (main): Likewise.
* tests/epoll_ctl.c (invoke_syscall): Replace
(unsigned long) 0xffffffff00000000ULL with F8ILL_KULONG_MASK.
* tests/rt_tgsigqueueinfo.c (k_tgsigqueueinfo): Likewise.
* tests/fanotify_init.c (main): Likewise.
* tests/xetpgid.c (main): Likewise.
* tests/xetpriority.c (main): Likewise.
(kernel_ulong_t) 0xffffffff00000000ULL with F8ILL_KULONG_MASK.
* tests/fanotify_mark.c (main): Likewise.
* tests/file_handle.c (main): Likewise.
* tests/kexec_load.c (main): Likewise.
* tests/setfsugid.c (main): Likewise.
* tests/getgroups.c (main): Replace (long) 0xffffffff00000000ULL
with F8ILL_KULONG_MASK.
* tests/setgroups.c (main): Replace (long) 0xffffffff00000000ULL
and (unsigned long) 0xffffffff00000000ULL with F8ILL_KULONG_MASK.

7 years agotests: fill higher bits of integer arguments of fcntl* syscalls
Dmitry V. Levin [Thu, 16 Feb 2017 12:51:00 +0000 (12:51 +0000)]
tests: fill higher bits of integer arguments of fcntl* syscalls

Check that integer arguments of fcntl and fcntl64 syscalls are decoded
properly by casting them to kernel_ulong_t and filling higher bits.

* tests/struct_flock.c (invoke_test_syscall): Cast "fd" and "cmd"
syscall arguments to kernel_ulong_t, fill their higher 32 bits.

7 years agotests: use sprintrc in tests of fcntl and fcntl64 syscalls
Dmitry V. Levin [Thu, 16 Feb 2017 12:51:00 +0000 (12:51 +0000)]
tests: use sprintrc in tests of fcntl and fcntl64 syscalls

* tests/struct_flock.c (EINVAL_STR): Remove.
(test_flock_einval, test_flock): Use sprintrc instead of EINVAL_STR.
* tests/fcntl.c (test_flock64_einval): Likewise.
* tests/fcntl64.c (test_flock64_einval, test_flock64): Likewise.

7 years agoPost-release administrivia
Dmitry V. Levin [Wed, 15 Feb 2017 22:59:59 +0000 (22:59 +0000)]
Post-release administrivia

* NEWS: Add a header line for the next release.
* debian/changelog.in: Add a changelog entry for 4.16-1.
* strace.spec.in: Likewise.

7 years agoPrepare for 4.16 release v4.16
Dmitry V. Levin [Tue, 14 Feb 2017 10:11:12 +0000 (10:11 +0000)]
Prepare for 4.16 release

* NEWS: Update for 4.16 release.

7 years ago.mailmap: add addresses of JingPiao Chen
Dmitry V. Levin [Mon, 13 Feb 2017 21:08:41 +0000 (21:08 +0000)]
.mailmap: add addresses of JingPiao Chen

* .mailmap: Add both addresses of JingPiao Chen here to avoid
duplications in CREDITS file.

7 years agotests: skip scno tampering tests on compat mips abi
Dmitry V. Levin [Mon, 13 Feb 2017 17:30:00 +0000 (17:30 +0000)]
tests: skip scno tampering tests on compat mips abi

* tests/scno_tampering.sh: In case of mips abi, skip the test
unless it is the native abi.

7 years agoFix -Werror=duplicate-decl-specifier compilation issues
Dmitry V. Levin [Sun, 12 Feb 2017 19:14:15 +0000 (19:14 +0000)]
Fix -Werror=duplicate-decl-specifier compilation issues

capability.c:82:28: error: duplicate "const" declaration specifier
capability.c:110:33: error: duplicate "const" declaration specifier
rt_tgsigqueueinfo.c:42:61: error: duplicate "const" declaration specifier
utime.c:66:23: error: duplicate "const" declaration specifier
waitid.c:147:20: error: duplicate "const" declaration specifier

* capability.c (cap_user_header_t, cap_user_data_t): Remove.
(get_cap_header): Change return type
to "const struct user_cap_header_struct *".
(print_cap_header, print_cap_data): Change the type of last argument
to "const struct user_cap_header_struct * const".
(SYS_FUNC(capget)): Change type of "h" variable
to "const struct user_cap_header_struct *".
(SYS_FUNC(capset)): Change type of "h" variable
to "const struct user_cap_header_struct * const".
* tests/rt_tgsigqueueinfo.c (k_tgsigqueueinfo): Change the type of last
argument to "const void *const".
* tests/utime.c (main): Change the type of "tail_u" variable
to "const struct utimbuf *const".
* tests/waitid.c (do_waitid): Change the type of 3rd argument
to "const siginfo_t *const".

7 years agotests: rewrite pipe syscall decoding check from match_grep to match_diff
Dmitry V. Levin [Sun, 12 Feb 2017 14:12:41 +0000 (14:12 +0000)]
tests: rewrite pipe syscall decoding check from match_grep to match_diff

* configure.ac (AC_CHECK_FUNCS): Remove pipe2.
* tests/pipe.c: Include <asm/unistd.h>, skip the test if [!__NR_pipe]
instead of [!HAVE_PIPE2].
(main): Do not call pipe2.
* tests/pipe.test: Skip the test if libc pipe wrapper does not use
pipe syscall, rewrite from match_grep to match_diff.
* tests/pipe.expected: Update expected output.

7 years agotests: rewrite pipe2 syscall decoding check from match_grep to match_diff
Dmitry V. Levin [Sat, 11 Feb 2017 13:40:42 +0000 (13:40 +0000)]
tests: rewrite pipe2 syscall decoding check from match_grep to match_diff

Unlike pipe.test that is based on match_grep, the new test
is based on match_diff and does more rigorous testing.

* tests/pipe2.c: New file.
* tests/pipe2.test: New test.
* tests/.gitignore: Add pipe2.
* tests/Makefile.am (check_PROGRAMS): Likewise.
(DECODER_TESTS): Add pipe2.test.

7 years agotests: rewrite mq.test from match_grep to match_diff
Dmitry V. Levin [Fri, 10 Feb 2017 00:14:45 +0000 (00:14 +0000)]
tests: rewrite mq.test from match_grep to match_diff

Unlike the previous edition of the test that was based on match_grep,
the new one is match_diff based and does more rigorous testing.

* tests/mq.c: Include <stdio.h>.
(NAME): New macro.
(main): Use it.  Print expected output.
* tests/mq.expected: Remove.
* tests/Makefile.am (EXTRA_DIST): Remove mq.expected.
* tests/mq.test: Use run_strace_match_diff.

7 years agoSimplify struct inject_opts.rval semantics
Dmitry V. Levin [Thu, 9 Feb 2017 22:26:14 +0000 (22:26 +0000)]
Simplify struct inject_opts.rval semantics

Drop use of INJECT_OPTS_RVAL_DISABLE special inject_opts.rval value,
INJECT_OPTS_RVAL_DEFAULT is enough.

* defs.h (INJECT_OPTS_RVAL_DISABLE): Remove.
* qualify.c (qualify_inject_common): Do not replace
INJECT_OPTS_RVAL_DEFAULT with INJECT_OPTS_RVAL_DISABLE
in inject_opts.rval.
* syscall.c (tamper_with_syscall_entering): Check
for INJECT_OPTS_RVAL_DEFAULT instead of INJECT_OPTS_RVAL_DISABLE.

7 years agotests: check signal injection along with fault injection
Dmitry V. Levin [Thu, 9 Feb 2017 22:26:14 +0000 (22:26 +0000)]
tests: check signal injection along with fault injection

* tests/qual_inject-error-signal.c: New file.
* tests/qual_inject-error-signal.expected: Likewise.
* tests/qual_inject-error-signal.test: New test.
* tests/.gitignore: Add qual_inject-error-signal.
* tests/Makefile.am (check_PROGRAMS): Likewise.
(MISC_TESTS): Add qual_inject-error-signal.test.
(EXTRA_DIST): Add qual_inject-error-signal.expected.

7 years agotests: simplify qual_inject-signal.test
Dmitry V. Levin [Thu, 9 Feb 2017 22:26:14 +0000 (22:26 +0000)]
tests: simplify qual_inject-signal.test

* tests/qual_inject-signal.test: Use $NAME instead of qual_inject-signal.

7 years agoMake symbolic errno values match case-insensitive
Dmitry V. Levin [Thu, 9 Feb 2017 14:38:08 +0000 (14:38 +0000)]
Make symbolic errno values match case-insensitive

Follow the example of case-insensitive symbolic signal values in signal
and inject expressions and make symbolic errno values in inject
expressions case-insensitive.

* qualify.c (find_errno_by_name): Use strcasecmp instead of strcmp
to match symbolic errno values.
* tests/qual_fault.c (main): Likewise.
* tests/qual_fault.test: Test case-insensitive symbolic errno match.

7 years agotests: check case-insensitive symbolic signal match
Dmitry V. Levin [Thu, 9 Feb 2017 14:38:08 +0000 (14:38 +0000)]
tests: check case-insensitive symbolic signal match

* tests/qual_signal.test: Test case-insensitive symbolic signal match.