]> granicus.if.org Git - strace/log
strace
7 years agonetlink: implement generic nlmsg_type decoding
Dmitry V. Levin [Sat, 3 Jun 2017 23:19:49 +0000 (23:19 +0000)]
netlink: implement generic nlmsg_type decoding

Implement a pluggable mechanism of nlmsg_type decoding.
Add decoding of NETLINK_SOCK_DIAG types.

* linux/sock_diag.h (SOCK_DESTROY): New macro.
* xlat/nl_sock_diag_types.in: New file.
* netlink.c: Include xlat/nl_sock_diag_types.h.
(get_fd_nl_family, decode_nlmsg_type): New functions.
(print_nlmsghdr): Use them for nlmsg_type decoding.

Co-authored-by: Fabien Siron <fabien.siron@epita.fr>
7 years agonetlink: add netlink family argument to printers and decoders
Dmitry V. Levin [Sat, 3 Jun 2017 22:56:32 +0000 (22:56 +0000)]
netlink: add netlink family argument to printers and decoders

* netlink.c (NL_FAMILY_ERROR, NL_FAMILY_DEFAULT): New constants.
(print_nlmsghdr): Add netlink family argument, change return type
to int, return family.
(decode_nlmsghdr_with_payload, decode_nlmsgerr, decode_payload): Add
netlink family argument.  All callers updated.

7 years agoAdd file descriptor argument to decode_netlink
Fabien Siron [Mon, 11 Jul 2016 12:54:59 +0000 (12:54 +0000)]
Add file descriptor argument to decode_netlink

* defs.h (decode_netlink): Add file descriptor argument.
* io.c (print_iovec): Specify file descriptor to decode_netlink.
* net.c (decode_sockbuf): Likewise.
* netlink.c (print_nlmsghdr, decode_nlmsghdr_with_payload,
decode_nlmsgerr, decode_payload, decode_nlmsghdr_with_payload,
decode_netlink): Likewise.
All callers updated.

Co-authored-by: Dmitry V. Levin <ldv@altlinux.org>
7 years agoIntroduce getfdinode to obtain inode from fd
Fabien Siron [Thu, 26 May 2016 10:59:07 +0000 (10:59 +0000)]
Introduce getfdinode to obtain inode from fd

* defs.h (getfdinode): New prototype.
* utils.c (getfdinode): New function.

Co-authored-by: Dmitry V. Levin <ldv@altlinux.org>
7 years agoIntroduce get_sockaddr_by_inode
Fabien Siron [Thu, 26 May 2016 10:46:28 +0000 (10:46 +0000)]
Introduce get_sockaddr_by_inode

Add a way to get socket information without printing it.

* defs.h (get_sockaddr_by_inode): New prototype.
* socketutils.c (get_sockaddr_by_inode): New function.

Co-authored-by: Dmitry V. Levin <ldv@altlinux.org>
7 years agosocketutils.c: introduce get_sockaddr_by_inode_uncached
Dmitry V. Levin [Fri, 2 Jun 2017 23:30:57 +0000 (23:30 +0000)]
socketutils.c: introduce get_sockaddr_by_inode_uncached

* socketutils.c (get_sockaddr_by_inode_uncached): New function.
(print_sockaddr_by_inode_uncached): Use it.

7 years agosocketutils.c: use get_sockaddr_by_inode_cached
Fabien Siron [Thu, 26 May 2016 10:46:28 +0000 (10:46 +0000)]
socketutils.c: use get_sockaddr_by_inode_cached

* socketutils.c (unix_print, inet_print, tcp_v4_print, tcp_v6_print,
udp_v4_print, udp_v6_print, netlink_print): Remove.
(unix_get, inet_get, tcp_v4_get, tcp_v6_get, udp_v4_get,
udp_v6_get, netlink_get): New functions.
(protocols): Update.

Co-authored-by: Dmitry V. Levin <ldv@altlinux.org>
7 years agosocketutils.c: move inet_print closer to its first use
Dmitry V. Levin [Fri, 2 Jun 2017 23:26:15 +0000 (23:26 +0000)]
socketutils.c: move inet_print closer to its first use

* socketutils.c (inet_print): Move right before tcp_v4_print.

7 years agosocketutils.c: introduce cache_inode_details
Fabien Siron [Wed, 22 Jun 2016 13:51:49 +0000 (13:51 +0000)]
socketutils.c: introduce cache_inode_details

cache_inode_details gives a way to obtain cache information without
printing it.

* socketutils.c (cache_and_print_inode_details): Rename
to cache_inode_details.  Do not print cached information.
(inet_parse_response, unix_parse_response, netlink_parse_response):
Use cache_inode_details instead of cache_and_print_inode_details.
(inet_print, unix_print, netlink_print): Call
print_sockaddr_by_inode_cached.

Co-authored-by: Dmitry V. Levin <ldv@altlinux.org>
7 years agostrace.c: move termination code to a separate function
Victor Krapivensky [Mon, 5 Jun 2017 11:46:34 +0000 (14:46 +0300)]
strace.c: move termination code to a separate function

This will be needed for the pull-style API.

* strace.c (terminate): New function.
(main): Use it.

7 years agotests: avoid hitting SO_SNDBUF limit in sendfile/sendfile64 tests
Dmitry V. Levin [Sun, 4 Jun 2017 21:17:15 +0000 (21:17 +0000)]
tests: avoid hitting SO_SNDBUF limit in sendfile/sendfile64 tests

Do not assume that an executable is small enough and SO_SNDBUF is large
enough so that the executable could be sendfile'ed into a socket pair.

* tests/sendfile.c (main): Create a regular file of the right size
to avoid hitting SO_SNDBUF limit.
* tests/sendfile64.c: Likewise.

Reported-by: Andreas Schwab <schwab@linux-m68k.org>
7 years agoMove netlink_protocols definition from net.c to netlink.c
Dmitry V. Levin [Sun, 4 Jun 2017 17:03:44 +0000 (17:03 +0000)]
Move netlink_protocols definition from net.c to netlink.c

The side effect of #include "xlat/netlink_protocols.h" is
NETLINK_* constants properly defined in that header file.
While net.c does not use these constants itself, netlink.c
is going to need them soon.

* net.c: Move inclusion of "xlat/netlink_protocols.h" ...
* netlink.c: ... here.

7 years agotravis: switch from gcc-6 to gcc-7
Dmitry V. Levin [Sun, 4 Jun 2017 14:20:16 +0000 (14:20 +0000)]
travis: switch from gcc-6 to gcc-7

* .travis.yml (matrix): Change gcc-6 to gcc-7.

7 years agotests: extend checking of NLMSG_DONE decoding
Dmitry V. Levin [Sun, 4 Jun 2017 13:40:17 +0000 (13:40 +0000)]
tests: extend checking of NLMSG_DONE decoding

* tests/netlink_protocol.c (test_nlmsg_done):  Use designated
initializers.  Check decoding of messages with non-integer payload.

7 years agonetlink: decode NLMSG_DONE messages
JingPiao Chen [Fri, 5 May 2017 10:21:17 +0000 (18:21 +0800)]
netlink: decode NLMSG_DONE messages

* netlink.c (decode_payload): Decode NLMSG_DONE messages.
* tests/netlink_protocol.c (test_nlmsg_done): New function
for checking decoding of NLMSG_DONE messages.
(main): Use it.

7 years agosocketutils.c: introduce get_sockaddr_by_inode_cached
Dmitry V. Levin [Sun, 4 Jun 2017 11:38:30 +0000 (11:38 +0000)]
socketutils.c: introduce get_sockaddr_by_inode_cached

* socketutils.c (get_sockaddr_by_inode_cached): New function.
(print_sockaddr_by_inode_cached): Use it.

7 years agoUnexport print_sockaddr_by_inode_cached
Dmitry V. Levin [Sat, 3 Jun 2017 17:52:24 +0000 (17:52 +0000)]
Unexport print_sockaddr_by_inode_cached

Change print_sockaddr_by_inode to be the only function exposed,
hide print_sockaddr_by_inode_cached as a part of implementation.

* defs.h (print_sockaddr_by_inode_cached): Remove prototype.
(print_sockaddr_by_inode): Add struct tcb * and descriptor arguments.
* socketutils.c (print_sockaddr_by_inode_cached): Make static.
(print_sockaddr_by_inode): Rename to print_sockaddr_by_inode_uncached,
make static.
(print_sockaddr_by_inode): New function.
* util.c (printfd): Update to use new print_sockaddr_by_inode.

7 years agoIntroduce str_strip_prefix_len function and STR_STRIP_PREFIX macro
Dmitry V. Levin [Sat, 3 Jun 2017 16:55:12 +0000 (16:55 +0000)]
Introduce str_strip_prefix_len function and STR_STRIP_PREFIX macro

Address proliferation of string prefix check implementations.

* defs.h (str_strip_prefix_len): New inline function.
(STR_STRIP_PREFIX): New macro.
* qualify.c (strip_prefix): Remove.
(parse_inject_token): Use STR_STRIP_PREFIX instead of strip_prefix.
(qualify): Use str_strip_prefix_len.
* socketutils.c (netlink_parse_response): Likewise.
* util.c (printfd): Likewise.

7 years agonetlink: move NLMSG_ERROR payload length check to nlmsgerr decoder
Dmitry V. Levin [Fri, 2 Jun 2017 22:22:22 +0000 (22:22 +0000)]
netlink: move NLMSG_ERROR payload length check to nlmsgerr decoder

Move decoder specific check to the decoder.

* netlink.c (decode_payload): Move NLMSG_ERROR payload length check ...
(decode_nlmsgerr): ... here.

7 years agostrace.c: handle PTRACE_EVENT_EXEC like other events
Dmitry V. Levin [Fri, 2 Jun 2017 21:49:02 +0000 (21:49 +0000)]
strace.c: handle PTRACE_EVENT_EXEC like other events

There is nothing unusual about PTRACE_EVENT_EXEC that would require
a special treatment.

* strace.c (next_event): Move PTRACE_EVENT_EXEC handling to the main
switch statement.

7 years agostrace.c: remove dead code
Dmitry V. Levin [Fri, 2 Jun 2017 20:01:31 +0000 (20:01 +0000)]
strace.c: remove dead code

As strace does not use WCONTINUED flag, there is no need to handle
WIFCONTINUED status.

* strace.c (print_debug_info) [WIFCONTINUED]: Remove.
(next_event): Remove redundant !WIFSTOPPED check.

7 years agostrace.c: refactor trace into two functions
Victor Krapivensky [Fri, 2 Jun 2017 14:05:56 +0000 (17:05 +0300)]
strace.c: refactor trace into two functions

This change decouples waiting for next event from reacting to it.  This
makes the control flow easier to understand, and serves as a preparation
for implementing a pull-style API for LuaJIT.

* strace.c (enum trace_event): New enum.
(trace): Split into ...
(next_event, dispatch_event): ... new functions.
(main): Use them.

7 years agoscno.am: include config.h before syscallent.h
Dmitry V. Levin [Tue, 30 May 2017 22:44:47 +0000 (22:44 +0000)]
scno.am: include config.h before syscallent.h

This fixes generation of syscallent.i and subsequent scno.h files
on mips where syscallent.h checks macros defined in config.h.

* scno.am (syscallent.i): Add $(top_builddir)/config.h
to prerequisites, include it.
* NEWS: Mention this fix.

Reported-by: David Robins <dbrobins@i4031.net>
7 years agotests: check decoding of sigaction syscall
Dmitry V. Levin [Sun, 28 May 2017 17:13:29 +0000 (17:13 +0000)]
tests: check decoding of sigaction syscall

* tests/sigaction.c: New file.
* tests/gen_tests.in (sigaction): New entry.
* tests/pure_executables.list: Add sigaction.
* tests/.gitignore: Likewise.

7 years agotests: rename sigaction.test to rt_sigaction.test
Dmitry V. Levin [Sun, 28 May 2017 17:13:29 +0000 (17:13 +0000)]
tests: rename sigaction.test to rt_sigaction.test

* tests/sigaction.awk: Rename to rt_sigaction.awk.
* tests/sigaction.c: Rename to tests/rt_sigaction.c.
* tests/sigaction.test: Rename to tests/rt_sigaction.test.
* tests/.gitignore: Replace sigaction with rt_sigaction.
* tests/pure_executables.list: Likewise.
* tests/Makefile.am (DECODER_TESTS): Replace sigaction.test
with rt_sigaction.test.
(EXTRA_DIST): Replace sigaction.awk with rt_sigaction.awk.

7 years agosparc: enhance decoding of signal number argument of sigaction syscall
Dmitry V. Levin [Sun, 28 May 2017 17:13:29 +0000 (17:13 +0000)]
sparc: enhance decoding of signal number argument of sigaction syscall

On sparc, unlike all other architectures, old sigaction syscall takes
a negated signal number.

* signal.c (SYS_FUNC(sigaction)) [SPARC || SPARC64]: Enhance printing
of negative signal number argument.

7 years agosignal: enhance printing of old_sigaction.mask
Dmitry V. Levin [Sun, 28 May 2017 17:13:29 +0000 (17:13 +0000)]
signal: enhance printing of old_sigaction.mask

* signal.c (decode_old_sigaction): Print old_sigaction.mask
using tprint_old_sigmask_val.

7 years agosignal: limit scope of struct old_sigaction32 definition
Dmitry V. Levin [Sun, 28 May 2017 17:13:29 +0000 (17:13 +0000)]
signal: limit scope of struct old_sigaction32 definition

* signal.c (struct old_sigaction32): Define only if [!current_wordsize].

7 years agosignal: fix decoding of struct old_sigaction on some architectures
Dmitry V. Levin [Sun, 28 May 2017 17:13:29 +0000 (17:13 +0000)]
signal: fix decoding of struct old_sigaction on some architectures

On alpha, struct old_sigaction.sa_flags has a 32-bit type.

On mips, only first word of old_sigaction.sa_mask is read.

On all architectures except alpha and mips that have old sigaction
syscall, struct old_sigaction has sa_restorer field that has to be
decoded.

* signal.c (struct old_sigaction) [ALPHA]: Change sa_flags type
to unsigned int, add ATTRIBUTE_PACKED.
[MIPS]: Dhrink sa_mask array to 1 element.
[!ALPHA && !MIPS]: Define sa_restorer field unconditionally.
(struct old_sigaction32): Likewise.
(decode_old_sigaction) [!current_wordsize]: Initialize sa_restorer field
from old_sigaction32.sa_restorer unconditionally.
[!ALPHA && !MIPS]: Print old_sigaction.sa_restorer if SA_RESTORER flag
is set.
* NEWS: Mention this change.

7 years agoxlat: rename SA_STACK to SA_ONSTACK
Dmitry V. Levin [Sun, 28 May 2017 17:13:29 +0000 (17:13 +0000)]
xlat: rename SA_STACK to SA_ONSTACK

SA_ONSTACK is the standard name while its alias SA_STACK is not even
defined on many platforms.

* xlat/sigact_flags.in (SA_STACK): Rename to SA_ONSTACK.

7 years agotests: check decoding of sigpending syscall
Dmitry V. Levin [Sun, 28 May 2017 00:09:52 +0000 (00:09 +0000)]
tests: check decoding of sigpending syscall

* tests/sigpending.c: New file.
* tests/gen_tests.in (sigpending): New entry.
* tests/pure_executables.list: Add sigpending.
* tests/.gitignore: Likewise.

7 years agotests: check decoding of sigprocmask syscall
Dmitry V. Levin [Sun, 28 May 2017 00:09:45 +0000 (00:09 +0000)]
tests: check decoding of sigprocmask syscall

* tests/sigprocmask.c: New file.
* tests/gen_tests.in (sigprocmask): New entry.
* tests/pure_executables.list: Add sigprocmask.
* tests/.gitignore: Likewise.

7 years agoalpha: rename sys_sigprocmask to sys_osf_sigprocmask
Dmitry V. Levin [Sun, 28 May 2017 00:09:32 +0000 (00:09 +0000)]
alpha: rename sys_sigprocmask to sys_osf_sigprocmask

Parsers of sigprocmask and osf_sigprocmask syscalls are different
anyway, so rename the function to match the syscall name.

* signal.c [ALPHA] (SYS_FUNC(sigprocmask)): Rename
to SYS_FUNC(osf_sigprocmask).
* linux/alpha/syscallent.h: Update sys_func.

7 years agoEnable coverage when strace is self terminated by signal
Dmitry V. Levin [Sat, 27 May 2017 18:58:31 +0000 (18:58 +0000)]
Enable coverage when strace is self terminated by signal

The data collected by -fprofile-arcs during program run is saved
on program exit.  When program is terminated by signal, the data
is not saved.  However, libgcov provides an interface to dump
the data at runtime.

* m4/ax_code_coverage.m4 (AX_CODE_COVERAGE): Add -DENABLE_COVERAGE_GCOV
to CODE_COVERAGE_CPPFLAGS.
* strace.c [ENABLE_COVERAGE_GCOV] (__gcov_flush): New prototype.
(main) [ENABLE_COVERAGE_GCOV]: Call __gcov_flush() before raise()
and sigprocmask() calls that might cause program termination.

7 years agotests: check termination signal forwarding
Dmitry V. Levin [Sat, 27 May 2017 17:59:44 +0000 (17:59 +0000)]
tests: check termination signal forwarding

* tests/run_expect_termsig.c: New file.
* tests/unblock_reset_raise.c: Likewise.
* tests/termsig.test: New test.
* tests/.gitignore: Add run_expect_termsig and unblock_reset_raise.
* tests/Makefile.am (check_PROGRAMS): Likewise.
(MISC_TESTS): Add termsig.test.

7 years agoFix termination signal forwarding
Dmitry V. Levin [Sat, 27 May 2017 17:59:44 +0000 (17:59 +0000)]
Fix termination signal forwarding

When traced command is terminated by a blocked signal, unblock
that signal to ensure strace termination with the same signal.

* strace.c (main): Unblock the signal raised for strace termination.
* NEWS: Mention this change.

7 years agoDo not reset SIGCHLD handler in tracees to SIG_DFL
Dmitry V. Levin [Sat, 27 May 2017 15:58:54 +0000 (15:58 +0000)]
Do not reset SIGCHLD handler in tracees to SIG_DFL

While strace resets SIGCHLD handler to the default action so that
waitpid definitely works without losing track of children, tracees
should not inherit this change.

* strace.c (struct exec_params): Add child_sa field.
(init): When setting SIGCHLD handler to SIG_DFL, save the old handler.
(exec_or_die): Restore SIGCHLD handler if it was different from SIG_DFL
at startup.
* NEWS: Mention this change.

7 years agoRefactor setting of signal handlers to reduce redundancy
Dmitry V. Levin [Sat, 27 May 2017 12:26:05 +0000 (12:26 +0000)]
Refactor setting of signal handlers to reduce redundancy

* strace.c (set_sigaction): New function.
(init): Use it instead of sigaction with sigaddset.

7 years agotests: check how signals are unblocked in interactive mode
Dmitry V. Levin [Sat, 27 May 2017 10:00:43 +0000 (10:00 +0000)]
tests: check how signals are unblocked in interactive mode

* tests/block_reset_raise_run.c: New file.
* tests/interactive_block.test: New test.
* tests/.gitignore: Add block_reset_raise_run.
* tests/Makefile.am (check_PROGRAMS): Likewise.
(MISC_TESTS): Add interactive_block.test.

7 years agoFix unblocking of signals in interactive mode
Dmitry V. Levin [Sat, 27 May 2017 10:00:43 +0000 (10:00 +0000)]
Fix unblocking of signals in interactive mode

In interactive mode (-I2), those signals that were blocked at startup
will remain blocked for the whole period of strace execution.

* strace.c (empty_set): Rename to start_set.  All users changed.
(init): Initialize start_set and blocked_set to the set of currently
blocked signals.
(startup_attach, trace): Use SIG_SETMASK instead of SIG_BLOCK.
* NEWS: Mention this change.

7 years agoCleanup interactive check
Dmitry V. Levin [Fri, 26 May 2017 23:16:57 +0000 (23:16 +0000)]
Cleanup interactive check

* strace.c (init): Check for INTR_WHILE_WAIT mode the same way
as in other places.

7 years agotests: check decoding of signal syscall
Dmitry V. Levin [Fri, 26 May 2017 20:42:13 +0000 (20:42 +0000)]
tests: check decoding of signal syscall

* tests/signal.c: New file.
* tests/gen_tests.in (signal): New entry.
* tests/pure_executables.list: Add signal.
* tests/.gitignore: Likewise.

7 years agoUnify capitalisation of (c) in copyright notices
Eugene Syromyatnikov [Wed, 24 May 2017 20:01:05 +0000 (22:01 +0200)]
Unify capitalisation of (c) in copyright notices

7 years agoPost-release administrivia
Dmitry V. Levin [Thu, 25 May 2017 19:42:20 +0000 (19:42 +0000)]
Post-release administrivia

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

7 years agoPrepare for 4.17 release v4.17
Dmitry V. Levin [Wed, 24 May 2017 16:17:18 +0000 (16:17 +0000)]
Prepare for 4.17 release

* NEWS: Update for 4.17 release.

7 years agopowerpc64, sparc, sparc64: wire up statx syscall
Dmitry V. Levin [Wed, 24 May 2017 16:17:18 +0000 (16:17 +0000)]
powerpc64, sparc, sparc64: wire up statx syscall

* linux/powerpc64/syscallent.h [383]: Add statx entry.
* linux/sparc/syscallent.h [360]: Likewise.
* linux/sparc64/syscallent.h [360]: Likewise.

7 years agoFix compat personality support for sgetmask syscall
Dmitry V. Levin [Tue, 23 May 2017 23:20:18 +0000 (23:20 +0000)]
Fix compat personality support for sgetmask syscall

* signal.c (SYS_FUNC(sgetmask)): Replace sprintsigmask_val
with sprint_old_sigmask_val.
* tests/sxetmask.c (main): Check decoding of signal mask containing
RT signals.

7 years agoFix decoding of sgetmask and ssetmask syscalls
Dmitry V. Levin [Mon, 22 May 2017 10:48:13 +0000 (10:48 +0000)]
Fix decoding of sgetmask and ssetmask syscalls

Old ssetmask syscall takes an argument and returns a value of type int.
Old sgetmask syscall may return an error.

* signal.c (SYS_FUNC(ssetmask)): Explicitly convert the argument
and return value to unsigned int, print it using sprint_old_sigmask_val.
(SYS_FUNC(sgetmask)): Do not print the mask in case of syserror.
* tests/sxetmask.c: New file.
* tests/gen_tests.in (sxetmask): New entry.
* tests/pure_executables.list: Add sxetmask.
* tests/.gitignore: Likewise.
* NEWS: Mention this fix.

7 years agoAdd copyright headers
Eugene Syromyatnikov [Mon, 22 May 2017 17:14:52 +0000 (19:14 +0200)]
Add copyright headers

7 years agoAdd scripts for automating copyright notices update
Eugene Syromyatnikov [Mon, 1 May 2017 17:10:15 +0000 (19:10 +0200)]
Add scripts for automating copyright notices update

* maint/update_copyright_years.awk: New file.
* maint/update_copyright_years.sh: Likewise.

Co-authored-by: Elvira Khabirova <lineprinter0@gmail.com>
7 years agoFix typos in copyright notices
Eugene Syromyatnikov [Mon, 22 May 2017 16:53:14 +0000 (18:53 +0200)]
Fix typos in copyright notices

7 years agounwind.c: remove non-ASCII character from comment
Eugene Syromyatnikov [Mon, 22 May 2017 17:08:47 +0000 (19:08 +0200)]
unwind.c: remove non-ASCII character from comment

7 years agoRename sys_sig[gs]etmask to sys_s[gs]etmask to match syscall names
Dmitry V. Levin [Sun, 21 May 2017 17:51:01 +0000 (17:51 +0000)]
Rename sys_sig[gs]etmask to sys_s[gs]etmask to match syscall names

* signal.c (SYS_FUNC(sigsetmask)): Rename to SYS_FUNC(ssetmask).
(SYS_FUNC(siggetmask)): Rename to SYS_FUNC(sgetmask).
* linux/arm/syscallent.h (sgetmask, ssetmask): Update sys_func.
* linux/bfin/syscallent.h: Likewise.
* linux/crisv10/syscallent.h: Likewise.
* linux/hppa/syscallent.h: Likewise.
* linux/i386/syscallent.h: Likewise.
* linux/m68k/syscallent.h: Likewise.
* linux/microblaze/syscallent.h: Likewise.
* linux/mips/syscallent-o32.h: Likewise.
* linux/powerpc/syscallent.h: Likewise.
* linux/powerpc64/syscallent.h: Likewise.
* linux/sh/syscallent.h: Likewise.
* linux/sh64/syscallent.h: Likewise.
* linux/sparc/syscallent.h: Likewise.
* linux/sparc64/syscallent.h: Likewise.

7 years agotests: enhance sigsuspend.test
Dmitry V. Levin [Sun, 21 May 2017 14:37:48 +0000 (14:37 +0000)]
tests: enhance sigsuspend.test

* tests/sigsuspend.c (sigtxt): New variable.
(main): Change signal masks to contain all signals except USR1 and USR2.

7 years agoFix compat personality support for old sigsuspend syscall
Dmitry V. Levin [Sat, 20 May 2017 20:17:59 +0000 (20:17 +0000)]
Fix compat personality support for old sigsuspend syscall

* signal.c (sprint_old_sigmask_val): New function.
(tprint_old_sigmask_val): New macro.
(SYS_FUNC(sigsuspend)): Use it.

7 years agoMove errnoent.sh, signalent.sh, and syscallent.sh to maint subdirectory
Dmitry V. Levin [Tue, 16 May 2017 02:11:35 +0000 (02:11 +0000)]
Move errnoent.sh, signalent.sh, and syscallent.sh to maint subdirectory

Also do not include them into release tarballs.  These files are
intended for developers who are expected to use a git repository.

* errnoent.sh: Move to maint subdirectory.
* signalent.sh: Likewise.
* syscallent.sh: Likewise.
* HACKING-scripts: Update.
* Makefile.am (EXTRA_DIST): Remove errnoent.sh, signalent.sh,
and syscallent.sh.

7 years agoDo not include maint subdirectory into release tarballs
Dmitry V. Levin [Tue, 16 May 2017 02:11:35 +0000 (02:11 +0000)]
Do not include maint subdirectory into release tarballs

These files are intended for developers who are expected to use
a git repository.

* Makefile.am (EXTRA_DIST): Remove maint/ioctls_gen.sh,
maint/ioctls_hex.sh, maint/ioctls_sym.sh, and maint/print_ioctlent.c.

7 years agolinux/ia64/syscallent.h: remove tabulation, add spaces in file comment
Eugene Syromyatnikov [Mon, 1 May 2017 16:40:01 +0000 (18:40 +0200)]
linux/ia64/syscallent.h: remove tabulation, add spaces in file comment

7 years agolinux/mtd-abi.h: remove non-ASCII character from file comment
Eugene Syromyatnikov [Mon, 1 May 2017 16:39:25 +0000 (18:39 +0200)]
linux/mtd-abi.h: remove non-ASCII character from file comment

7 years agoalpha, cris, mips, ppc, sh, sparc: fix decoding of sigsuspend syscall
Dmitry V. Levin [Sun, 30 Apr 2017 20:33:04 +0000 (20:33 +0000)]
alpha, cris, mips, ppc, sh, sparc: fix decoding of sigsuspend syscall

On some architectures old sigsuspend syscall takes the signal mask from
the 3rd argument, on some from the 1st.  And, if it wasn't peculiar
enough, the signal mask is passed by value on all architectures except
mips where it's passed by reference.

* signal.c (SYS_FUNC(sigsuspend)): Take the signal mask from the last
argument.
* linux/alpha/syscallent.h (sigsuspend): Set nargs to 1.
* linux/crisv10/syscallent.h: Likewise.
* linux/mips/syscallent-o32.h: Likewise.
* linux/powerpc/syscallent.h: Likewise.
* linux/powerpc64/syscallent.h: Likewise.
* linux/sh/syscallent.h: Likewise.
* linux/sh64/syscallent.h: Likewise.
* linux/sparc/syscallent.h: Likewise.
* linux/sparc64/syscallent.h: Likewise.
* tests/sigsuspend.c: New file.
* tests/gen_tests.in (sigsuspend): New entry.
* tests/pure_executables.list: Add sigsuspend.
* tests/.gitignore: Likewise.
* NEWS: Mention this fix.

7 years agotests: raise default timeout for individual tests
Dmitry V. Levin [Wed, 26 Apr 2017 23:41:15 +0000 (23:41 +0000)]
tests: raise default timeout for individual tests

Recently added tests based on pure_executables.list are quite slow
by their nature, the one minute default timeout is no longer enough
for some of not so fast architectures.

* tests/init.sh (TIMEOUT_DURATION): Raise from 60 to 120.

7 years agoUpdate NEWS
Eugene Syromyatnikov [Mon, 1 May 2017 12:48:25 +0000 (14:48 +0200)]
Update NEWS

7 years agoUpdate TCP_* constants
Dmitry V. Levin [Sat, 29 Apr 2017 00:37:07 +0000 (00:37 +0000)]
Update TCP_* constants

* xlat/socktcpoptions.in: Add TCP_FASTOPEN_CONNECT introduced
by linux kernel commit v4.11-rc1~124^2~321^2.

7 years agoUpdate AF_* constants
Dmitry V. Levin [Fri, 28 Apr 2017 23:34:56 +0000 (23:34 +0000)]
Update AF_* constants

* xlat/addrfams.in: Add AF_SMC introduced by linux kernel
commit v4.11-rc1~94^2~43^2~13.

7 years agotests: enhance madvise decoder check
Dmitry V. Levin [Thu, 27 Apr 2017 23:16:33 +0000 (23:16 +0000)]
tests: enhance madvise decoder check

* tests/mmap.c (main): Remove madvise check.
* tests/madvise.c: New file.
* tests/gen_tests.in (madvise): New entry.
* tests/.gitignore: Add madvise.
* tests/pure_executables.list: Likewise.

7 years agotests: add -etrace=?... test
Eugene Syromyatnikov [Tue, 25 Apr 2017 02:23:12 +0000 (04:23 +0200)]
tests: add -etrace=?... test

Check for some architecture-specific syscalls which are not present
on most architectures.

* gen_tests.in: Add trace_question test.
* tests/trace_question.in: New file.
* tests/Makefile.am (EXTRA_DIST): Add it.

7 years agotests: add more information to generated header comments
Eugene Syromyatnikov [Tue, 25 Apr 2017 02:21:56 +0000 (04:21 +0200)]
tests: add more information to generated header comments

* tests/gen_tests.sh: Update header comment with the source string
used for test generation.

7 years agotests: move generated common header comment into a variable
Eugene Syromyatnikov [Tue, 25 Apr 2017 02:20:50 +0000 (04:20 +0200)]
tests: move generated common header comment into a variable

* tests/gen_tests.sh: Move generated file header comment
into a variable, use it in all cases.

7 years agotests: use TAIL_ALLOC_OBJECT_CONST_PTR in v4l2 test
Dmitry V. Levin [Tue, 25 Apr 2017 14:35:47 +0000 (14:35 +0000)]
tests: use TAIL_ALLOC_OBJECT_CONST_PTR in v4l2 test

* tests/ioctl_v4l2.c (main): Use TAIL_ALLOC_OBJECT_CONST_PTR.

7 years agotests: Check decoding of VIDIOC_G/S_TUNER's arg
Edgar Kaziahmedov [Sun, 23 Apr 2017 01:53:48 +0000 (04:53 +0300)]
tests: Check decoding of VIDIOC_G/S_TUNER's arg

* tests/ioctl_v4l2.c (main): Add checks for VIDIOC_G/S_TUNER's arg.

Signed-off-by: Edgar Kaziahmedov <edos@linux.com>
7 years agov4l2: Add decoding for VIDIOC_G/S_TUNER's arg
Edgar Kaziahmedov [Sun, 23 Apr 2017 01:53:47 +0000 (04:53 +0300)]
v4l2: Add decoding for VIDIOC_G/S_TUNER's arg

* v4l2.c: Include "xlat/v4l2_tuner_types.h", "xlat/v4l2_tuner_capabilities.h",
"xlat/v4l2_tuner_rxsubchanses.h", and "xlat/v4l2_tuner_audmodes.h".
(print_v4l2_tuner): New function. Add decoding for VIDIOC_G/S_TUNER's arg.
(v4l2_ioctl): Add new cases for decoding VIDIOC_G/S_TUNER's arg.
* xlat/v4l2_tuner_types.in: Add V4L2_TUNER_RADIO and
V4L2_TUNER_ANALOG_TV introduced by linux kernel commit
2.5.46~39^2~23^2~4.
Add V4L2_TUNER_DIGITAL_TV introduced by linux kernel
commit v2.6.11-rc4~55^2~20.
Add V4L2_TUNER_ADC and V4L2_TUNER_RF introduced by linux kernel commit
v3.15-rc1~85^2~215.
Add V4L2_TUNER_SDR introduced by linux kernel commit v4.4-rc1~118^2~17
(as the replacement of V4L2_TUNER_ADC).
* xlat/v4l2_tuner_capabilities.in: Add V4L2_TUNER_CAP_LOW,
V4L2_TUNER_CAP_NORM, V4L2_TUNER_CAP_STEREO, V4L2_TUNER_CAP_LANG2,
V4L2_TUNER_CAP_SAP, and V4L2_TUNER_CAP_LANG1 introduced by linux kernel
commit 2.5.46~39^2~23^2~4.
Add V4L2_TUNER_CAP_HWSEEK_BOUNDED and V4L2_TUNER_CAP_HWSEEK_WRAP
introduced by linux kernel commit v3.6-rc1~28^2~306.
Add V4L2_TUNER_CAP_RDS introduced by linux commit v2.6.32-rc1~679^2~189.
Add V4L2_TUNER_CAP_RDS_BLOCK_IO and V4L2_TUNER_CAP_RDS_CONTROLS
introduced by linux kernel commit v2.6.37-rc1~64^2~110.
Add V4L2_TUNER_CAP_FREQ_BANDS introduced by linux kernel commit
v3.6-rc1~28^2~46.
Add V4L2_TUNER_CAP_HWSEEK_PROG_LIM introduced by linux kernel commit
v3.6-rc1~28^2~40.
Add V4L2_TUNER_CAP_1HZ introduced by linux kernel commit
v3.15-rc1~85^2~214.
* xlat/v4l2_tuner_audmodes.in: Add V4L2_TUNER_MODE_MONO,
V4L2_TUNER_MODE_STEREO, V4L2_TUNER_MODE_LANG2, V4L2_TUNER_MODE_SAP, and
V4L2_TUNER_MODE_LANG1 introduced by linux kernel commit
2.5.46~39^2~23^2~4.
Add V4L2_TUNER_MODE_LANG1_LANG2 introduced by linux kernel commit
v2.6.17-rc1~739^2~9.
* xlat/v4l2_tuner_rxsubchanses.in: Add V4L2_TUNER_SUB_MONO,
V4L2_TUNER_SUB_STEREO, V4L2_TUNER_SUB_LANG2, V4L2_TUNER_SUB_SAP, and
V4L2_TUNER_SUB_LANG1 introduced by linux kernel commit
2.5.46~39^2~23^2~4.
Add V4L2_TUNER_SUB_RDS introduced by linux kernel commit
v2.6.32-rc1~679^2~189.

Signed-off-by: Edgar Kaziahmedov <edos@linux.com>
7 years agotests: check decoding of invalid tv_sec and tv_usec values
Dmitry V. Levin [Mon, 24 Apr 2017 00:08:51 +0000 (00:08 +0000)]
tests: check decoding of invalid tv_sec and tv_usec values

* tests/futimesat.c (main): Check decoding of invalid tv_sec and tv_usec
values.
* tests/xetitimer.c (main): Likewise.
* tests/xettimeofday.c (main): Likewise.
* tests/xselect.c (main): Likewise.
* tests/xutimes.c (main): Likewise.

7 years agotests: check decoding of invalid tv_sec and tv_nsec values
Dmitry V. Levin [Sun, 23 Apr 2017 23:10:57 +0000 (23:10 +0000)]
tests: check decoding of invalid tv_sec and tv_nsec values

* tests/aio.c (main): Check decoding of invalid tv_sec and tv_nsec
values.
* tests/clock_nanosleep.c (main): Likewise.
* tests/clock_xettime.c (main): Likewise.
* tests/futex.c (main): Likewise.
* tests/nanosleep.c (main): Likewise.
* tests/ppoll.c (main): Likewise.
* tests/pselect6.c (main): Likewise.
* tests/recvmmsg-timeout.c (main): Likewise.
* tests/rt_sigtimedwait.c (main): Likewise.
* tests/semop.c (main): Likewise.
* tests/timer_xettime.c (main): Likewise.
* tests/timerfd_xettime.c (main): Likewise.
* tests/utimensat.c (main): Likewise.

7 years agoPrint time in ISO 8601 format in time syscall decoder
Eugene Syromyatnikov [Sun, 23 Apr 2017 19:51:27 +0000 (21:51 +0200)]
Print time in ISO 8601 format in time syscall decoder

* print_time.c (SYS_FUNC(time)): Print timestamp stringification
(via sprinttime) for the value stored in the argument and return value
(return RVAL_STR in the latter case).
* tests/time.c (main): Update expected output.

7 years agoPrint string representation of timestamps in parsers of *utime* syscalls
Eugene Syromyatnikov [Sun, 23 Apr 2017 04:07:55 +0000 (06:07 +0200)]
Print string representation of timestamps in parsers of *utime* syscalls

* print_timespec.c (print_timespec_t_utime): Use sprinttime_nsec
to format a string representation of time, use tprints_comment
to print it as a comment.
* print_timeval.c (print_timeval_t_utime): New function.
(print_timeval_utimes): Use it instead of print_timeval_t.
[ALPHA] (print_timeval32_t_utime): New function.
[ALPHA] (print_timeval32_utimes): Use it instead of print_timeval32_t.
* tests/futimesat.c (print_tv): Update expected output.
* tests/utimensat.c (print_ts): Likewise.
* tests/xutimes.c (print_tv): Likewise.

Co-authored-by: Dmitry V. Levin <ldv@altlinux.org>
7 years agotests: add support for printing timestamp with microsecond precision
Eugene Syromyatnikov [Sun, 23 Apr 2017 04:04:44 +0000 (06:04 +0200)]
tests: add support for printing timestamp with microsecond precision

It will be needed later.

* tests/tests.h (print_time_t_usec): New prototype.
* tests/print_time.c (print_time_t_usec): New function, a thin wrapper
around print_time_t_ex.

7 years agoPrint microseconds/nanoseconds as non-negative
Eugene Syromyatnikov [Sun, 23 Apr 2017 03:57:03 +0000 (05:57 +0200)]
Print microseconds/nanoseconds as non-negative

Negative micro/nanoseconds values are treated as invalid by kernel
anyway, and in one case (timespec_valid in include/linux/time.h)
it is even checked by conversion to unsigned long.

* print_timespec.c (timespec_fmt): Change tv_sec format to %lld and
tv_nsec format to %llu.
(print_timespec_t): Cast tv_sec to long long and process tv_nsec with
zero_extend_signed_to_ull.
(sprint_timespec): Likewise.
* print_timeval.c (timeval_fmt): Change tv_sec format to %lld and
tv_usec format to %llu.
(print_timeval_t): Cast tv_sec to long long and process tv_nsec with
zero_extend_signed_to_ull.
(sprint_timeval, print_timeval32_t, sprint_timeval32): Likewise.
* defs.h (TIMESPEC_TEXT_BUFSIZE): Update.
* tests/adjtimex.c (main): Change tv_sec printing format to %lld, cast
it to long long; change tv_usec printing format to %llu, process it with
zero_extend_signed_to_ull.
* tests/clock_nanosleep.c (main): Change tv_sec printing format to %lld,
cast it to long long; change tv_nsec printing format to %llu, process it
with zero_extend_signed_to_ull.
* tests/clock_xettime.c (main): Likewise.
* tests/futex.c (main): Likewise.
* tests/futimesat.c (print_tv): Likewise.
* tests/getrusage.c (invoke_print): Likewise.
* tests/mq_sendrecv.c (do_send, do_recv, main): Likewise.
* tests/nanosleep.c (main): Likewise.
* tests/pselect6.c (main): Likewise.
* tests/restart_syscall.c (main): Likewise.
* tests/rt_sigtimedwait.c (iterate, main): Likewise.
* tests/sched_rr_get_interval.c (main): Likewise.
* tests/semop.c (main): Likewise.
* tests/timer_xettime.c (main): Likewise.
* tests/timerfd_xettime.c (main): Likewise.
* tests/waitid.c (main): Likewise.
* tests/xetitimer.c (main): Likewise.
* tests/xettimeofday.c (main): Likewise.
* tests/xselect.c (main): Likewise.
* tests/xutimes.c (print_tv): Likewise.
* tests/wait4.c (sprint_rusage): Likewise.
* tests/waitid.c (sprint_rusage): Likewise.
* tests/utimensat.c (print_ts): Likewise.
(main): Add check for higher bits of tv_sec/tv_nsec.

Co-authored-by: Dmitry V. Levin <ldv@altlinux.org>
7 years agoAlways print raw values of time data fields
Eugene Syromyatnikov [Fri, 21 Apr 2017 03:16:12 +0000 (05:16 +0200)]
Always print raw values of time data fields

Refactor sprinttime: implement sprinttime_nsec and sprinttime_usec
that handle nanoseconds and microseconds, respectively.
Always print raw values of time data fields, format string
representations of time as comments.

* defs.h (sprinttime): Change argument type from time_t to long long.
(sprinttime_nsec, sprinttime_usec): New prototypes.
* util.c (sprinttime_ex, sprinttime_nsec, sprinttime_usec): New
functions.
(sprinttime): Turn into a thin wrapper around sprinttime_ex.
* stat.h (struct strace_stat): Add has_nsec field.
* fetch_struct_stat.c (HAVE_NSEC): New macro.
(fetch_struct_stat): Initialize has_nsec field with HAVE_NSEC.
* fetch_struct_stat64.c (HAVE_NSEC): New macro.
(fetch_struct_stat64): Initialize has_nsec field with HAVE_NSEC.
* print_struct_stat.c (print_struct_stat) <PRINT_ST_TIME>:
Print raw values of time fields, use sprinttime_nsec to format a string
representation of time, use tprints_comment to print it as a comment.
* statx.c (SYS_FUNC(statx)) <PRINT_FIELD_TIME>: Likewise.
* utime.c (SYS_FUNC(utime)): Print raw values of struct utimbuf.actime
and struct utimbuf.modtime fields, use sprinttime to format a string
representation of time, use tprints_comment to print it as a comment.
* tests/tests.h (print_time_t_nsec): Add int argument.
* tests/print_time.c (print_time_t_ex): New function.
(print_time_t_nsec): Add int argument, turn into a thin wrapper around
print_time_t_ex.
* tests/utime.c (main): Update expected output.
* tests/xstatx.c [!IS_STATX] (HAVE_NSEC): New macro.
[!IS_STATX] (PRINT_ST_TIME), [IS_STATX] (PRINT_FIELD_TIME): Update
expected output.
* NEWS: Mention this timestamps representation improvement.

Co-authored-by: Dmitry V. Levin <ldv@altlinux.org>
7 years agoIntroduce tprintf_comment and tprints_comment functions
Dmitry V. Levin [Mon, 24 Apr 2017 19:31:54 +0000 (19:31 +0000)]
Introduce tprintf_comment and tprints_comment functions

* defs.h (tprintf_comment, tprints_comment): New prototypes.
* strace.c (tvprintf): New function.
(tprintf): Use it.
(tprintf_comment, tprints_comment): New functions.
* aio.c (tprint_lio_opcode): Use tprints_comment.
* dm.c (dm_decode_dm_target_spec, dm_decode_dm_target_deps,
dm_decode_dm_name_list, dm_decode_dm_target_versions,
dm_decode_dm_target_msg, dm_decode_string, dm_known_ioctl): Likewise.
* futex.c (SYS_FUNC(futex)): Likewise.
* perf.c (print_perf_event_attr): Likewise.
* seccomp.c (decode_bpf_code): Likewise.
* util.c (printxvals, printxval_searchn, printflags64): Likewise.
* btrfs.c (print_u64, btrfs_print_key_type, btrfs_print_objectid,
print_key_value_internal): Likewise.
(btrfs_ioctl): Use tprints_comment and tprintf_comment.
* dirent.c (SYS_FUNC(getdents)): Likewise.
* dirent64.c (SYS_FUNC(getdents64)): Likewise.
* execve.c (printargc): Use tprintf_comment.
* tests/btrfs.c (btrfs_test_get_dev_stats_ioctl,
btrfs_test_features_ioctls): Update expected output.

7 years agoMake output of execve/execveat syscall parsers more structured
Dmitry V. Levin [Mon, 24 Apr 2017 19:22:11 +0000 (19:22 +0000)]
Make output of execve/execveat syscall parsers more structured

* execve.c (printargc): Always print the address, format the number
of variables as a comment.
* tests/execve.c: Update expected output.
* tests/execveat.c: Likewise.
* tests/qual_syscall.test: Likewise.
* tests/strace-r.expected: Likewise.
* tests/strace-t.test: Likewise.
* tests/strace-tt.test: Likewise.
* tests/strace-ttt.test: Likewise.
* tests/threads-execve.c: Likewise.
* tests/threads-execve.test: Likewise.

7 years agodm: fix diagnostics about misplaced parts of struct dm_ioctl
Dmitry V. Levin [Mon, 24 Apr 2017 19:14:41 +0000 (19:14 +0000)]
dm: fix diagnostics about misplaced parts of struct dm_ioctl

* dm.c (dm_decode_dm_target_spec, dm_decode_dm_target_deps,
dm_decode_dm_name_list, dm_decode_dm_target_versions,
dm_decode_dm_target_msg, dm_decode_string, dm_known_ioctl): Fix
diagnostics about various misplaced parts of struct dm_ioctl.
* tests/ioctl_dm.c: Update expected output.

7 years agoprint_mq_attr: fix typo
Dmitry V. Levin [Mon, 24 Apr 2017 14:14:07 +0000 (14:14 +0000)]
print_mq_attr: fix typo

* print_mq_attr.c (printmqattr): Fix the last argument of printflags64.

7 years agotests: add faulty pointer check to time test
Eugene Syromyatnikov [Sun, 23 Apr 2017 19:50:29 +0000 (21:50 +0200)]
tests: add faulty pointer check to time test

* tests/time.c (main): Add check for an inaccessible pointer.

7 years agotests: fix print_time_t_nsec usage in xstatx.c
Dmitry V. Levin [Sat, 22 Apr 2017 00:15:41 +0000 (00:15 +0000)]
tests: fix print_time_t_nsec usage in xstatx.c

* tests/xstatx.c (print_stat): Pass tv_nsec field through
zero_extend_signed_to_ull before feeding it to print_time_t_nsec.

7 years agotests: fix netlink_protocol on sparc
Dmitry V. Levin [Fri, 21 Apr 2017 23:01:22 +0000 (23:01 +0000)]
tests: fix netlink_protocol on sparc

* tests/netlink_protocol.c (test_nlmsgerr): Do not access fields of an
unaligned structure, this makes architectures like sparc very unhappy.

7 years agoutil: return pointer to string literal directly in sprinttime
Eugene Syromyatnikov [Wed, 1 Mar 2017 01:25:20 +0000 (02:25 +0100)]
util: return pointer to string literal directly in sprinttime

There is no sense to copy it to static buffer first.

* util.c (sprinttime): Just return "0", do not copy it to internal
buffer first.

7 years agotests: remove stat.sample creation from gen_tests.in
Dmitry V. Levin [Fri, 21 Apr 2017 03:54:02 +0000 (03:54 +0000)]
tests: remove stat.sample creation from gen_tests.in

stat.sample is created by appropriate executables and never removed.

* tests/gen_tests.in (trace_fstat, trace_lstat, trace_stat,
trace_stat_like): Remove stat.sample creation.

7 years agotests: tabulate fstat.test
Dmitry V. Levin [Fri, 21 Apr 2017 03:49:07 +0000 (03:49 +0000)]
tests: tabulate fstat.test

* tests/gen_tests.in (fstat): New entry.
(fstat64, oldfstat): Update.
* tests/fstat.test: Remove.
* tests/Makefile.am (DECODER_TESTS): Remove fstat.test.

7 years agoImplement -e trace=%stat option
Eugene Syromyatnikov [Tue, 18 Apr 2017 01:14:52 +0000 (03:14 +0200)]
Implement -e trace=%stat option

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

    sed -i '/statx/! s/TF|TSTA,/TF|TST|TSTA,/' linux/*/syscallent*.h

* sysent.h (TRACE_STAT): New macro.
* syscall.c: Alias LST to TRACE_STAT around syscallent.h inclusion.
* qualify.c (lookup_class): Add TRACE_STAT for "%stat".
* strace.1 (.SS Filtering): Add information about %stat syscall class.
* NEWS: Mention this change.
* linux/aarch64/syscallent.h (stat): Add TST flag.
* linux/ia64/syscallent.h: Likewise.
* linux/mips/syscallent-n32.h: Likewise.
* linux/mips/syscallent-n64.h: Likewise.
* linux/s390x/syscallent.h: Likewise.
* linux/x32/syscallent.h: Likewise.
* linux/x86_64/syscallent.h: Likewise.
* linux/arm/syscallent.h (oldstat, stat, stat64): Likewise.
* linux/bfin/syscallent.h: Likewise.
* linux/crisv10/syscallent.h: Likewise.
* linux/i386/syscallent.h: Likewise.
* linux/m68k/syscallent.h: Likewise.
* linux/microblaze/syscallent.h: Likewise.
* linux/mips/syscallent-o32.h: Likewise.
* linux/powerpc/syscallent.h: Likewise.
* linux/sh64/syscallent.h: Likewise.
* linux/sh/syscallent.h: Likewise.
* linux/avr32/syscallent.h (stat, stat64): Likewise.
* linux/hppa/syscallent.h: Likewise.
* linux/s390/syscallent.h: Likewise.
* linux/sparc64/syscallent.h: Likewise.
* linux/sparc/syscallent.h: Likewise.
* linux/xtensa/syscallent.h: Likewise.
* linux/powerpc64/syscallent.h (oldstat, stat): Likewise.
* linux/alpha/syscallent.h (osf_old_stat, osf_stat, stat, stat64): Likewise.
* linux/mips/syscallent-compat.h (bsd43_oldstat, bsd43_stat, posix_stat,
svr4_stat, svr4_xstat, sysv_stat, sysv_xstat): Likewise.
* tests/gen_tests.in (trace_stat): New entry.
* tests/trace_stat.in: New file.
* tests/Makefile.am (EXTRA_DIST): Add it.
* tests/ksysent.c (TST): New macro, defined to 0.
* tests/nsyscalls.c: Likewise.

7 years agoImplement -e trace=%lstat option
Eugene Syromyatnikov [Tue, 18 Apr 2017 00:23:05 +0000 (02:23 +0200)]
Implement -e trace=%lstat option

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

    sed -i '/TSTA,.*lx\?stat/ s/TSTA,/TLST|&/' linux/*/syscallent*.h

* sysent.h (TRACE_LSTAT): New macro.
* syscall.c: Alias TLST to TRACE_LSTAT around syscallent.h inclusion.
* qualify.c (lookup_class): Add TRACE_LSTAT for "%lstat".
* strace.1 (.SS Filtering): Add information about %lstat syscall class.
* NEWS: Mention this change.
* linux/aarch64/syscallent.h (lstat): Likewise.
* linux/ia64/syscallent.h: Likewise.
* linux/mips/syscallent-n32.h: Likewise.
* linux/mips/syscallent-n64.h: Likewise.
* linux/s390x/syscallent.h: Likewise.
* linux/x32/syscallent.h: Likewise.
* linux/x86_64/syscallent.h: Likewise.
* linux/arm/syscallent.h (lstat, lstat64, oldlstat): Likewise.
* linux/bfin/syscallent.h: Likewise.
* linux/crisv10/syscallent.h: Likewise.
* linux/i386/syscallent.h: Likewise.
* linux/m68k/syscallent.h: Likewise.
* linux/microblaze/syscallent.h: Likewise.
* linux/mips/syscallent-o32.h: Likewise.
* linux/powerpc/syscallent.h: Likewise.
* linux/sh64/syscallent.h: Likewise.
* linux/sh/syscallent.h: Likewise.
* linux/sparc64/syscallent.h: Likewise.
* linux/sparc/syscallent.h: Likewise.
* linux/avr32/syscallent.h (lstat, lstat64): Likewise.
* linux/hppa/syscallent.h: Likewise.
* linux/powerpc64/syscallent.h: Likewise.
* linux/s390/syscallent.h: Likewise.
* linux/xtensa/syscallent.h: Likewise.
* linux/alpha/syscallent.h (lstat, lstat64, osf_lstat, osf_old_lstat): Likewise.
* linux/mips/syscallent-compat.h (bsd43_lstat, posix_lstat, svr4_lstat,
sysv_lstat): Likewise.
* tests/gen_tests.in (trace_lstat): New entry.
* tests/trace_lstat.in: New file.
* tests/Makefile.am (EXTRA_DIST): Add it.
* tests/ksysent.c (TLST): New macro, defined to 0.
* tests/nsyscalls.c: Likewise.

7 years agoImplement -e trace=%fstat option
Eugene Syromyatnikov [Mon, 17 Apr 2017 23:52:58 +0000 (01:52 +0200)]
Implement -e trace=%fstat option

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

    sed -i -e '/TSTA.*fx\?stat/ s/TSTA,/TFST|&/' \
           -e 's/\(TD|TF|TFST|TSTA,\)[[:space:]]/\1/' linux/*/syscallent*.h

* sysent.h (TRACE_FSTAT): New macro.
* syscall.c: Alias TFST to TRACE_FSTAT around syscallent.h inclusion.
* qualify.c (lookup_class): Add TRACE_FSTAT for "%fstat".
* strace.1 (.SS Filtering): Add information about %fstat syscall class.
* NEWS: Mention this change.
* linux/32/syscallent.h (fstat64, fstatat64): Add TFST flag.
* linux/64/syscallent.h (fstat, newfstatat): Likewise.
* linux/aarch64/syscallent.h: Likewise.
* linux/ia64/syscallent.h: Likewise.
* linux/mips/syscallent-n32.h: Likewise.
* linux/mips/syscallent-n64.h: Likewise.
* linux/s390x/syscallent.h: Likewise.
* linux/x32/syscallent.h: Likewise.
* linux/x86_64/syscallent.h: Likewise.
* linux/arm/syscallent.h (fstat, fstat64, fstatat64, oldfstat): Likewise.
* linux/bfin/syscallent.h: Likewise.
* linux/crisv10/syscallent.h: Likewise.
* linux/i386/syscallent.h: Likewise.
* linux/m68k/syscallent.h: Likewise.
* linux/microblaze/syscallent.h: Likewise.
* linux/mips/syscallent-o32.h: Likewise.
* linux/powerpc/syscallent.h: Likewise.
* linux/sh64/syscallent.h: Likewise.
* linux/sh/syscallent.h: Likewise.
* linux/avr32/syscallent.h (fstat, fstat64, fstatat64): Likewise.
* linux/hppa/syscallent.h: Likewise.
* linux/s390/syscallent.h: Likewise.
* linux/sparc64/syscallent.h: Likewise.
* linux/sparc/syscallent.h: Likewise.
* linux/xtensa/syscallent.h: Likewise.
* linux/alpha/syscallent.h (fstat, fstat64, fstatat64, osf_fstat,
osf_old_fstat): Likewise.
* linux/powerpc64/syscallent.h (fstat, newfstatat, oldfstat): Likewise.
* linux/mips/syscallent-compat.h (bsd43_fstat, bsd43_oldfstat, posix_fstat,
svr4_fstat, sysv_fstat): Likewise.
* tests/gen_tests.in (trace_fstat): New entry.
* tests/trace_fstat.in: New file.
* tests/Makefile.am (EXTRA_DIST): Add it.
* tests/ksysent.c (TFST): New macro, defined to 0.
* tests/nsyscalls.c: Likewise.

7 years agoImplement -e trace=%%stat option
Eugene Syromyatnikov [Mon, 17 Apr 2017 23:14:58 +0000 (01:14 +0200)]
Implement -e trace=%%stat option

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

    sed -i '/TSFA\|stat[iu]s/! s/,[[:space:]]\?\([[:space:]]*SEN(.*stat\)/|TSTA,\1/' \
        linux/*/syscallent*.h

* sysent.h (TRACE_STAT_LIKE): New macro.
* syscall.c: Alias TSTA to TRACE_STAT_LIKE around syscallent.h inclusion.
* qualify.c (lookup_class): Add TRACE_STAT_LIKE for "%%stat".
* strace.1 (.SS Filtering): Add information about %%stat syscall class.
* NEWS: Mention this change.
* linux/32/syscallent.h (fstat64, fstatat64, statx): Add TSTA flag.
* linux/64/syscallent.h (fstat, newfstatat, statx): Likewise.
* linux/aarch64/syscallent.h (fstat, lstat, newfstatat, stat): Likewise.
* linux/alpha/syscallent.h (fstat, fstat64, fstatat64, lstat, lstat64,
osf_fstat, osf_lstat, osf_old_fstat, osf_old_lstat, osf_old_stat, osf_stat,
stat, stat64): Likewise.
* linux/arm/syscallent.h (fstat, fstat64, fstatat64, lstat, lstat64, oldfstat,
oldlstat, oldstat, stat, stat64, statx): Likewise.
* linux/avr32/syscallent.h (fstat, fstat64, fstatat64, lstat, lstat64, stat,
stat64): Likewise.
* linux/bfin/syscallent.h (fstat, fstat64, fstatat64, lstat, lstat64,
oldfstat, oldlstat, oldstat, stat, stat64): Likewise.
* linux/crisv10/syscallent.h (fstat, fstat64, fstatat64, lstat, lstat64,
oldfstat, oldlstat, oldstat, stat, stat64): Likewise.
* linux/hppa/syscallent.h (fstat, fstat64, fstatat64, lstat, lstat64, stat,
stat64): Likewise.
* linux/i386/syscallent.h (fstat, fstat64, fstatat64, lstat, lstat64, oldfstat,
oldlstat, oldstat, stat, stat64, statx): Likewise.
* linux/ia64/syscallent.h (fstat, lstat, newfstatat, stat): Likewise.
* linux/m68k/syscallent.h (fstat, fstat64, fstatat64, lstat, lstat64, oldfstat,
oldlstat, oldstat, stat, stat64, statx): Likewise.
* linux/microblaze/syscallent.h (fstat, fstat64, fstatat64, lstat, lstat64,
oldfstat, oldlstat, oldstat, stat, stat64): Likewise.
* linux/mips/syscallent-compat.h (bsd43_fstat, bsd43_lstat, bsd43_oldfstat,
bsd43_oldstat, bsd43_stat, posix_fstat, posix_lstat, posix_stat, svr4_fstat,
svr4_fxstat, svr4_lstat, svr4_lxstat, svr4_stat, svr4_xstat, sysv_fstat,
sysv_fxstat, sysv_lstat, sysv_lxstat, sysv_stat, sysv_xstat): Likewise.
* linux/mips/syscallent-n32.h (fstat, lstat, newfstatat, stat, statx): Likewise.
* linux/mips/syscallent-n64.h (fstat, lstat, newfstatat, stat, statx): Likewise.
* linux/mips/syscallent-o32.h (fstat, fstat64, fstatat64, lstat, lstat64,
oldfstat, oldlstat, oldstat, stat, stat64, statx): Likewise.
* linux/powerpc64/syscallent.h (fstat, lstat, newfstatat, oldfstat, oldlstat,
oldstat, stat): Likewise.
* linux/powerpc/syscallent.h (fstat, fstat64, fstatat64, lstat, lstat64,
oldfstat, oldlstat, oldstat, stat, stat64, statx): Likewise.
* linux/s390/syscallent.h (fstat, fstat64, fstatat64, lstat, lstat64, stat,
stat64, statx): Likewise.
* linux/s390x/syscallent.h (fstat, lstat, newfstatat, stat, statx): Likewise.
* linux/sh64/syscallent.h (fstat, fstat64, fstatat64, lstat, lstat64, oldfstat,
oldlstat, oldstat, stat, stat64): Likewise.
* linux/sh/syscallent.h (fstat, fstat64, fstatat64, lstat, lstat64, oldfstat,
oldlstat, oldstat, stat, stat64): Likewise.
* linux/sparc64/syscallent.h (fstat, fstat64, fstatat64, lstat, lstat64,
oldlstat, stat, stat64): Likewise.
* linux/sparc/syscallent.h (fstat, fstat64, fstatat64, lstat, lstat64,
oldlstat, stat, stat64): Likewise.
* linux/x32/syscallent.h (fstat, lstat, newfstatat, stat, statx): Likewise.
* linux/x86_64/syscallent.h (fstat, lstat, newfstatat, stat, statx): Likewise.
* linux/xtensa/syscallent.h (fstat, fstat64, fstatat64, lstat, lstat64, stat,
stat64, statx): Likewise.
* tests/gen_tests.in (trace_stat_like): New entry.
* tests/trace_stat_like.in: New file.
* tests/Makefile.am (EXTRA_DIST): Add it.
* tests/ksysent.c (TSTA): New macro, defined to 0.
* tests/nsyscalls.c: Likewise.

7 years agoqualify: add syntax for optional non-matching syscall qualification
Eugene Syromyatnikov [Mon, 17 Apr 2017 23:02:09 +0000 (01:02 +0200)]
qualify: add syntax for optional non-matching syscall qualification

It may be useful in case syscall is not present on the target
architecture.

* qualify.c (qualify_syscall): Add ignore_fail flag, set it to true
in case syscall qualification is led by a question mark(s).
* strace.1 (.SS Filtering): Document ability to use question marks
in syscall qualification.

7 years agolinux/alpha/syscallent.h: add TSFA flag to osf_getfsstat
Eugene Syromyatnikov [Mon, 17 Apr 2017 19:01:05 +0000 (21:01 +0200)]
linux/alpha/syscallent.h: add TSFA flag to osf_getfsstat

In accordance with [1].

[1] https://www.freebsd.org/cgi/man.cgi?query=getfsstat&sektion=2

* linux/alpha/syscallent.h (osf_getfsstat): Add TSFA flag.
* strace.1 (.SS Filtering) <%%statfs>: Update equivalent regexp.

7 years agolinux/mips/syscallent-compat.h: add some TD/TF flags for *stat* variants
Eugene Syromyatnikov [Mon, 17 Apr 2017 18:55:51 +0000 (20:55 +0200)]
linux/mips/syscallent-compat.h: add some TD/TF flags for *stat* variants

*xstat syscalls are, according to [1], like their *stat counterparts,
but with additional argument with fixed value.

[1] http://math-atlas.sourceforge.net/devel/assembly/mipsabi32.pdf

* linux/mips/syscallent-compat.h (*_xstat, *_lxstat, bsd43_oldstat):
Add TF flag.
(*_fxstat, bsd43_oldfstat): Add TD flag.

7 years agoImplement -e trace=%%statfs option
Eugene Syromyatnikov [Sun, 16 Apr 2017 13:30:29 +0000 (15:30 +0200)]
Implement -e trace=%%statfs option

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

    sed -i 's/\(TSF\),[[:space:]]\?/\1|TSFA,/' linux/*/syscallent*.h
    sed -i 's/\(TFSF\),/\1|TSFA,/' linux/*/syscallent*.h
    sed -i 's/0\(,.*ustat\)/TSFA\1/' linux/*/syscallent*.h

* sysent.h (TRACE_STATFS_LIKE): New macro.
* syscall.c: Alias TSFA to TRACE_STATFS_LIKE around syscallent.h inclusion.
* qualify.c (lookup_class): Add SCHED_STATFS_LIKE for "%%statfs".
* strace.1 (.SS Filtering): Add information about %%statfs syscall class.
* NEWS: Mention this change.
* linux/32/syscallent.h (statfs64, fstatfs64): Add TSFA flag.
* linux/64/syscallent.h (statfs, fstatfs): Likewise.
* linux/aarch64/syscallent.h (statfs, fstatfs, ustat): Likewise.
* linux/mips/syscallent-n64.h: Likewise.
* linux/x32/syscallent.h: Likewise.
* linux/x86_64/syscallent.h: Likewise.
* linux/arm/syscallent.h (statfs, statfs64, fstatfs, fstatfs64, ustat):
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,
ofs_fstatfs, osf_fstatfs64, ustat): Likewise.
* linux/mips/syscallent-compat.h (*_statfs, *_statvfs, *_fstatfs): Likewise.
* tests/gen_tests.in (trace_statfs_like): New entry.
* tests/trace_statfs_like.in: New file.
* tests/Makefile.am (EXTRA_DIST): Add it.
* tests/ksysent.c (TSFA): New macro, defined to 0.
* tests/nsyscalls.c: Likewise.

7 years agoImplement -e trace=%fstatfs option
Eugene Syromyatnikov [Mon, 17 Apr 2017 18:29:44 +0000 (20:29 +0200)]
Implement -e trace=%fstatfs option

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

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

* sysent.h (TRACE_FSTATFS): New macro.
* syscall.c: Alias TFSF to TRACE_FSTATFS around syscallent.h inclusion.
* qualify.c (lookup_class): Add SCHED_FSTATFS for "%fstatfs".
* strace.1 (.SS Filtering): Add information about %fstatfs syscall class.
* NEWS: Mention this change.
* linux/32/syscallent.h (fstatfs64): Add TFSF flag.
* linux/64/syscallent.h (fstatfs): Likewise.
* linux/aarch64/syscallent.h: Likewise.
* linux/mips/syscallent-n64.h: Likewise.
* linux/x32/syscallent.h: Likewise.
* linux/x86_64/syscallent.h: Likewise.
* linux/arm/syscallent.h (fstatfs, fstatfs64):
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 (ofs_fstatfs, osf_fstatfs64): Likewise.
* linux/mips/syscallent-compat.h (*_fstatfs, *_fstatvfs): Likewise.
* tests/gen_tests.in (trace_fstatfs): New entry.
* tests/trace_fstatfs.in: New file.
* tests/Makefile.am (EXTRA_DIST): Add it.
* tests/ksysent.c (TFSF): New macro, defined to 0.
* tests/nsyscalls.c: Likewise.

7 years agosysent.h: format syscall flag macros
Eugene Syromyatnikov [Sun, 16 Apr 2017 13:24:00 +0000 (15:24 +0200)]
sysent.h: format syscall flag macros

Add some tabulation and leading zeroes to the values.

7 years agotests: tabulate sched.test
Dmitry V. Levin [Fri, 21 Apr 2017 01:29:29 +0000 (01:29 +0000)]
tests: tabulate sched.test

Rewrite sched.test using test_trace_expr().

* tests/gen_tests.in (sched): New entry.
* tests/sched.in: New file, derived from a set of tests in sched.test.
* tests/sched.test: Remove.
* tests/Makefile.am (DECODER_TESTS): Remove sched.test.
(EXTRA_DIST): Add sched.in.

7 years agotests: tabulate regex.test
Dmitry V. Levin [Fri, 21 Apr 2017 01:29:29 +0000 (01:29 +0000)]
tests: tabulate regex.test

Rewrite regex.test using test_trace_expr().

* tests/gen_tests.in (regex): New entry.
* tests/regex.in: New file, derived from a set of tests in regex.test.
* tests/regex.test: Remove.
* tests/Makefile.am (DECODER_TESTS): Remove regex.test.
(EXTRA_DIST): Add regex.in.