5562 Commits

Author SHA1 Message Date
12f6562f2b tests: tabulate read-write.test
* tests/gen_tests.in (read-write): New entry.
* tests/read-write.c: (main): Skip the test if /proc/self/fd/
is not available.
* tests/read-write.test: Remove.
* tests/Makefile.am (DECODER_TESTS): Remove read-write.test.
2017-04-19 02:16:31 +00:00
9f93fd094f tests: add skip_if_unavailable function to libtests
* tests/skip_unavailable.c: New file.
* tests/tests.h (skip_if_unavailable): New prototype.
* tests/Makefile.am (libtests_a_SOURCES): Add skip_unavailable.c.
2017-04-19 02:16:31 +00:00
d681cf249a tests: tabulate netlink_protocol.test
* tests/gen_tests.in (netlink_protocol): New entry.
* tests/netlink_protocol.test: Remove.
* tests/Makefile.am (DECODER_TESTS): Remove netlink_protocol.test.
2017-04-19 00:55:21 +00:00
936b3824a0 tests: tabulate statfs.test
* tests/gen_tests.in (statfs): New entry.
(fstatfs, fstatfs64, statfs64): Update.
* tests/statfs.test: Remove.
* tests/Makefile.am (DECODER_TESTS): Remove statfs.test.
2017-04-19 00:02:56 +00:00
af65eec08e tests: skip statfs related tests if their sample files are not available
* tests/xstatfsx.c (print_statfs): Skip the test if open failed.
2017-04-18 23:56:09 +00:00
94d3a0c488 tests: extend gen_tests.sh to support arbitrary test_* rules
* tests/gen_tests.sh: Add support of arbitrary test_* rules.
2017-04-18 23:31:19 +00:00
d12d631016 tests: change gen_tests.sh to read its input as raw input
* tests/gen_tests.sh: Specify -r option to read.
* tests/gen_tests.in (shmxt): Update.
2017-04-18 23:25:04 +00:00
Eugene Syromyatnikov
3c2e2d4984 strace.1: s/regex expression/regular expression/ 2017-04-18 01:25:11 +00:00
11d1359f23 strace.1: enhance %statfs description
* strace.1 (.SS Filtering) <%statfs>: Fix the list of syscalls,
add an equivalent regex expression.
2017-04-17 20:14:07 +00:00
1be0e27b0b netlink: decode NLMSG_ERROR messages
* netlink.c (decode_nlmsgerr, decode_payload): New functions.
(decode_nlmsghdr_with_payload): Use decode_payload.
* tests/netlink_protocol.c (send_query): Check decoding
of NLMSG_ERROR messages.
* NEWS: Mention this change.
2017-04-17 04:37:41 +00:00
51929c017a netlink: avoid using unaligned sizeof(struct nlmsghdr) unnecessarily
* netlink.c (NLMSG_HDRLEN): Redefine.
(decode_nlmsghdr_with_payload, decode_netlink): Use it instead
of sizeof(struct nlmsghdr).
2017-04-17 04:37:29 +00:00
0653be4e01 Fix the length argument passed from print_iovec to decode_netlink
* io.c (print_iovec): Pass the actual length to decode_netlink
instead of the original length.
* NEWS: Mention this fix.
2017-04-17 04:37:11 +00:00
15d574a899 numa: fix printing of error values in move_pages status array
* numa.c (print_status): Do not lose a minus sign when printing
a symbolic error code.
* tests/move_pages.c (print_status_array): Update expected output.
2017-04-17 04:36:54 +00:00
25fa79bdb2 tests: generate pure_executables part of check_PROGRAMS automatically
* tests/gen_pure_executables.sh: New file.
* bootstrap: Invoke it.
* tests/Makefile.am: Include pure_executables.am.
(check_PROGRAMS): Add $(PURE_EXECUTABLES).  Remove everything listed
in pure_executables.list.
(EXTRA_DIST): Add gen_pure_executables.sh.
* tests/.gitignore: Add pure_executables.am.
2017-04-17 00:53:19 +00:00
8578ec6784 tests: make EXTRA_DIST sorted
* tests/Makefile.am (EXTRA_DIST): Sort.
2017-04-17 00:50:19 +00:00
cb8b94b7d5 tests: check decoding of alpha specific osf_utimes syscall
* tests/osf_utimes.c: New file.
* tests/gen_tests.in (osf_utimes): New entry.
* tests/Makefile.am (check_PROGRAMS): Add osf_utimes.
* tests/pure_executables.list: Likewise.
* tests/.gitignore: Likewise.
2017-04-17 00:29:58 +00:00
39fcedfd24 tests: parametrize utimes.c
* tests/xutimes.c: New file, based on utimes.c.
* tests/utimes.c [__NR_utimes] (TEST_SYSCALL_NR, TEST_SYSCALL_STR,
TEST_STRUCT): New macros.
[__NR_utimes]: Replace all the rest with include "xutimes.c".
* tests/Makefile.am (EXTRA_DIST): Add xutimes.c.
2017-04-17 00:17:00 +00:00
3d0939c56e alpha: fix tracing flags of osf_select and osf_utimes syscalls
* linux/alpha/syscallent.h (osf_select): Add TD flag.
(osf_utimes): Add TF flag.
* NEWS: Mention alpha specific fixes.
2017-04-16 23:37:13 +00:00
7ffc669fb5 alpha: rename print_timeval32_pair to print_timeval32_utimes
This follows the rename of print_timeval_item to print_timeval_utimes.

* defs.h [ALPHA] (print_timeval32_pair): Rename
to print_timeval32_utimes.
* print_timeval.c [ALPHA] (print_timeval32_pair): Likewise.
* utimes.c [ALPHA] (SYS_FUNC(osf_utimes)): Replace print_timeval32_pair
with print_timeval32_utimes.
2017-04-16 23:27:08 +00:00
5ba6c5a43a tests: do more rigorous testing of utimes syscall parser
* tests/utimes.c (errstr): New variable.
(print_ts, k_utimes): New functions.
(main): Use them to do more rigorous testing of utimes syscall parser.
* tests/gen_tests.in (utimes): Update -a option.
2017-04-16 18:47:29 +00:00
01fff8d56b tests: do more rigorous testing of futimesat syscall parser
* tests/futimesat.c (errstr): New variable.
(print_ts, k_futimesat): New functions.
(main): Use them to do more rigorous testing of futimesat syscall parser.
2017-04-16 18:47:29 +00:00
e5f236d341 Fix printing of inaccessible times argument of utimes and futimesat syscalls
When the whole pair of struct timeval structures cannot be fetched from
tracee's memory, print the address.  This behavior follows the kernel's
that uses copy_from_user for the whole pair, too.

* print_timeval.c (print_timeval_item): Remove.
(print_timeval_pair): Rename to print_timeval_utimes, all callers
updated.  Fetch the whole timeval_t array with a single
umove_or_printaddr call.
* tests/futimesat.c (main): Update expected output.
* tests/utimes.c (main): Likewise.
2017-04-16 18:13:27 +00:00
589cff6975 tests: rewrite utimensat.test without relying on libc utimensat wrapper
The new test also does more rigorous testing.

* tests/utimensat.c: Stop including <assert.h> and <errno.h>, include
<unistd.h> and <asm/unistd.h>, check __NR_utimensat instead
of HAVE_UTIMENSAT.
(errstr): New variable.
(k_utimensat): New function, a thin wrapper around
syscall(__NR_utimensat).
(main): Use them instead of utimensat.
* tests/gen_tests.in (utimensat): New entry.
* tests/utimensat.test: Remove.
* tests/Makefile.am (DECODER_TESTS): Remove it.
2017-04-16 17:28:00 +00:00
27638f632e tests: use fixed timestamps in utime related tests
* tests/clock.test: Remove futimesat, utime, utimensat, and utimes tests
from the list of exceptions.
* tests/utime.c (main): Do not use time(), use fixed timestamp instead.
* tests/futimesat.c (main): Do not use gettimeofday(), use fixed
timestamps instead.
* tests/utimensat.c (main): Likewise.
* tests/utimes.c (main): Likewise.
2017-04-16 17:28:00 +00:00
df60f9954d xtensa: wire up new syscalls
* linux/xtensa/syscallent.h [348..350]: New pkey_* entries.

Reported-by: Victor Krapivensky <krapivenskiy.va@phystech.edu>
2017-04-15 13:28:23 +00:00
Victor Krapivensky
f67d2ba565 Update statx parser and syscall entries lists to the upstream
* linux/32/syscallent.h [291]: Add statx entry.
* linux/64/syscallent.h [291]: Likewise.
* linux/arm/syscallent.h [397]: Likewise.
* linux/m68k/syscallent.h [379]: Likewise.
* linux/mips/syscallent-n32.h [6330]: Likewise.
* linux/mips/syscallent-n64.h [5326]: Likewise.
* linux/mips/syscallent-o32.h [4366]: Likewise.
* linux/powerpc/syscallent.h [383]: Likewise.
* linux/s390/syscallent.h [379]: Likewise.
* linux/s390x/syscallent.h [379]: Likewise.
* linux/xtensa/syscallent.h [351]: Likewise.
* statx.h (struct_statx): Update.
* statx.c (SYS_FUNC(statx)): Print struct_statx.stx_attributes_mask.
* tests/xstatx.c (print_stat, main): Update to test decoding
of struct_statx.stx_attributes_mask.
2017-04-15 13:25:57 +00:00
87607b9afc tests: add more regex match checks
* tests/qual_syscall.test: Add regex match checks.
2017-04-14 17:47:21 +00:00
d99a74da9b tests: make mq_sendrecv* test executables reenterable
* tests/mq_sendrecv.c (MQ_NAME): Remove.
(mq_name): New static variable.
(cleanup): Use it instead of MQ_NAME.
(main): Initialize it dynamically using the pid of process.  Use it
instead of MQ_NAME.
2017-04-14 16:43:18 +00:00
e49d055b5d tests: make mq test executable reenterable
* tests/mq.c (NAME): Remove.
(main): Replace the fixed message queue name with a dynamically
made name containing the pid of process.
* tests/gen_tests.in (mq): Update -a option.
2017-04-14 16:25:05 +00:00
106f57d11e tests: make net-yy-netlink test executable reenterable
* tests/net-yy-netlink.c (main): Use getpid() instead of a fixed
magic number.
2017-04-14 16:25:05 +00:00
7989f61426 tests: tabulate shmxt.test
* tests/gen_tests.in (shmxt): New entry.
* tests/shmxt.test: Remove.
* tests/Makefile.am (DECODER_TESTS): Remove shmxt.test.
2017-04-14 15:35:21 +00:00
3330d4ad28 Revert "Implement -e trace=%sched option"
-e trace=%sched became redundant as -e trace=/sched does the same.

This reverts commit 811638e9c1805438a63c14f9704b8b00ac922623.

* syscall.c (TSC): Remove.
* sysent.h (TRACE_SCHED): Remove.
* qualify.c (lookup_class): Remove %sched.
* strace.1 (.SS Filtering): Likewise.
* NEWS: Likewise.
* linux/32/syscallent.h: Remove TSC flag from sched* 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/sched.test: Replace trace=%sched with trace=/sched.
* tests/ksysent.c (TSC): Remove.
* tests/nsyscalls.c: Likewise.
2017-04-14 15:06:42 +00:00
676d2460b9 Revert "Implement -e trace=%clock option"
-e trace=%clock became redundant as -e trace=/clock does the same.

This reverts commit 0a13d2391c413e3847b71ec0c1d38f56e353b1b5.

* syscall.c (TCL): Remove.
* sysent.h (TRACE_CLOCK): Remove.
* qualify.c (lookup_class): Remove %clock.
* strace.1 (.SS Filtering): Likewise.
* NEWS: Likewise.
* linux/32/syscallent.h: Remove TCL flag from 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: Replace trace=%clock with trace=/clock.
* tests/ksysent.c (TCL): Remove.
* tests/nsyscalls.c: Likewise.
2017-04-14 15:06:42 +00:00
969f4a066b tests: robustify regex.test
* tests/regex.test: Use trace_statfs.test as a template instead
of clock.test and sched.test, not because of more interesting
regular expressions but to fix build on platforms where
clock.test and sched.test are not reenterable.
2017-04-14 14:53:35 +00:00
JingPiao Chen
131c5c9c90 Implement -e trace=/regex option
* qualify.c: Include <regex.h>.
(qualify_syscall_regex): New function.
(qualify_syscall): Use it.
* strace.1: Document -e trace=/regex option.
* NEWS: Mention -e trace=/regex option.
* tests/regex.test: New test.
* tests/Makefile.am (DECODER_TESTS): Add it.
* tests/options-syntax.test: Add checks for invaild regexp
and for regexp that doesn't match a syscall.
2017-04-14 12:18:29 +00:00
05a9a86c23 tests: fix ioctl_nsfs.test on hppa
* tests/ioctl_nsfs.c (test_user_namespace): Specify an address
in the middle of a mapped page as child_stack address argument
of the clone call.
[IA64] (clone): Update.
2017-04-14 01:21:19 +00:00
d1a9966669 tests: fix ioctl_nsfs.test on ia64
glibc on ia64 provides no clone() function, but there is a __clone2
function instead.  It is documented but no prototype is provided by
glibc.

* tests/ioctl_nsfs.c [IA64] (__clone2): New prototype.
[IA64] (clone): New macro wrapper around __clone2.
2017-04-14 00:52:37 +00:00
Edgar Kaziahmedov
3860effe9a tests: check decoding of the remaining V4L2_BUF_TYPE_* types
* tests/ioctl_v4l2.c (init_v4l2_format, print_ioctl_v4l2): New functions
to avoid code duplication in VIDIOC_S_FMT and VIDIOC_TRY_FMT tests.
(main) <VIDIOC_G_FMT, VIDIOC_S_FMT, VIDIOC_TRY_FMT>: Use them.  Add
checks for remaining V4L2_BUF_TYPE_* types.

Signed-off-by: Edgar Kaziahmedov <edos@linux.com>
2017-04-13 23:47:43 +00:00
Edgar Kaziahmedov
a1c10a1e77 v4l2: Implement decoding of the remaining V4L2_BUF_TYPE_* types
* v4l2.c: Include "xlat/v4l2_vbi_flags.h" and "xlat/v4l2_sliced_flags.h".
(struct_v4l2_clip): New typedef.  Mpersify it.
(print_v4l2_clip): New function.
(print_v4l2_format_fmt): Use it.  Add struct tcb argument.  Implement
decoding of the remaining V4L2_BUF_TYPE_* types.
* xlat/v4l2_vbi_flags.in: Add V4L2_VBI_UNSYNC and V4L2_VBI_INTERLACED
introduced by linux kernel commit v2.5.46~39^2~23^2~4.
Add V4L2_VBI_ITU_525_F1_START, V4L2_VBI_ITU_525_F2_START,
V4L2_VBI_ITU_625_F1_START, and V4L2_VBI_ITU_625_F2_START introduced by
linux kernel commit v3.17-rc1~112^2~217.
* xlat/v4l2_sliced_flags.in: Add V4L2_SLICED_TELETEXT_B, V4L2_SLICED_VPS,
V4L2_SLICED_CAPTION_525, V4L2_SLICED_WSS_625, V4L2_SLICED_VBI_525, and
V4L2_SLICED_VBI_625 introduced by linux kernel commit v2.6.14-rc2~64.
* configure.ac (AC_CHECK_DECLS): Add V4L2_BUF_TYPE_SDR_CAPTURE and
V4L2_BUF_TYPE_SDR_OUTPUT.
(AC_CHECK_MEMBERS): Add struct v4l2_window.global_alpha and
struct v4l2_sdr_format.buffersize.
* NEWS: Mention this change.

Signed-off-by: Edgar Kaziahmedov <edos@linux.com>
2017-04-13 23:47:43 +00:00
ce39a627f8 travis: use mainline kernel uapi headers for coverage
* .travis.yml (matrix) <CHECK=coverage>: Add KHEADERS=torvalds/linux.
* travis-build.sh: Handle $KHEADERS.
* travis-install.sh: Likewise.
2017-04-13 18:24:09 +00:00
8ecb171951 travis: switch from clang-3.6 to clang-3.8
* .travis.yml (matrix): Change clang-3.6 to clang-3.8.
2017-04-13 18:24:09 +00:00
Nikolay Marchuk
2afd57decb Implement decoding of NS_* ioctl commands
* configure.ac (AC_CHECK_HEADERS): Add linux/nsfs.h.
* defs.h (DECL_IOCTL(nsfs)): New prototype.
(setns_types): Make global.
* ioctl.c (ioctl_decode): Call nsfs_ioctl for 0xb7 code.
* nsfs.c: New file.
* nsfs.h: Likewise.
* Makefile.am (strace_SOURCES): Add them.
* tests/ioctl_nsfs.c: New file.
* tests/ioctl_nsfs.test: Likewise.
* tests/.gitignore: Add ioctl_nsfs.
* tests/Makefile.am (check_PROGRAMS): Likewise.
(DECODER_TESTS): Add ioctl_nsfs.test.
* NEWS: Mention this change.
2017-04-13 15:46:49 +00:00
0a3bb911c7 travis: copy coverage test suite log to the travis log
* travis-build.sh (coverage): Print tests*/test-suite.log
and tests*/ksysent.log.
2017-04-13 04:43:46 +00:00
ffe3df1a4d travis: add gcc-6
* .travis.yml (matrix): Add gcc-6 entries.
* travis-build.sh: Handle gcc*.
* travis-install.sh: Handle gcc-*.
2017-04-12 03:06:32 +00:00
a5c73d296d tests: robustify gen_tests.sh against in-tree builds
* tests/gen_tests.sh: Use abs_srcdir instead of srcdir to construct
a path to gen_tests.sh in implicit make rules.
2017-04-11 06:55:51 +00:00
7df7bc1889 trace_syscall_exiting: do not call get_regs for filtered syscalls
This saves up to 25% of ptrace syscalls in case of trace filtering.

* syscall.c (trace_syscall_exiting): Do not call gettimeofday
and get_regs for filtered syscalls.
* NEWS: Mention this change.
* tests/get_regs.test: New test.
* tests/Makefile.am (MISC_TESTS): Add it.
2017-04-11 04:04:37 +00:00
cb46fea4d5 Delay get_regs invocation
strace used to call get_regs on every stop of a tracee, including cases
when the result is going to be discarded.  Prepare to change this lavish
practice by delaying get_regs invocation until its result is actually
needed.

* defs.h (get_regs): Remove.
* strace.c (trace): Do not call get_regs.
* syscall.c (get_regs): Add static qualifier.
(trace_syscall_exiting, print_pc, get_scno): Call get_regs.
2017-04-11 04:04:37 +00:00
8e3361d39c startup_tcb: move get_scno invocation to a more convenient place
* strace.c (trace): Move get_scno invocation ...
(startup_tcb): ... here.  This is a no-op change that slightly improves
readability.
2017-04-11 04:04:37 +00:00
13ffa22088 get_regs: guard against subsequent invocations
At this moment there is only one call to get_regs,
but there is going to be more of them, so a guard is needed.

This change also adds a clear_regs call before get_regs,
which essentially reverts commit v4.9-288-ge9bfff6.

* strace.c (trace): Call clear_regs before get_regs.
* syscall.c (get_regs): Skip if get_regs_error != -1.
2017-04-11 04:04:37 +00:00
83265998b8 syscall: move definitions of automatic variables closer to their use
* syscall.c (trace_syscall_entering, trace_syscall_exiting): Move
definitions of automatic variables closer to their first use.  This
change slightly improves readability.
2017-04-11 04:04:37 +00:00