]> granicus.if.org Git - strace/log
strace
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.

7 years agoUpdate NEWS
Eugene Syromyatnikov [Wed, 8 Feb 2017 18:47:45 +0000 (19:47 +0100)]
Update NEWS

7 years agoUpdate NEWS
Dmitry V. Levin [Wed, 8 Feb 2017 17:22:02 +0000 (17:22 +0000)]
Update NEWS

7 years agostrace.spec.in: fix dist version checks
Dmitry V. Levin [Wed, 8 Feb 2017 16:36:57 +0000 (16:36 +0000)]
strace.spec.in: fix dist version checks

* strace.spec.in: Fix libunwind availability check.

Reported-by: Eugene Syromyatnikov <evgsyr@gmail.com>
7 years agotests: update ipc_sem.test for new glibc
Dmitry V. Levin [Wed, 8 Feb 2017 15:54:35 +0000 (15:54 +0000)]
tests: update ipc_sem.test for new glibc

Starting with commit glibc-2.24-553-g40c0a78, glibc may pass NULL
address to semctl like other libcs.

* tests/ipc_sem.c (main) [__GLIBC__]: Remove.

7 years agotests: fix typo in bpf.test
Dmitry V. Levin [Wed, 8 Feb 2017 15:12:40 +0000 (15:12 +0000)]
tests: fix typo in bpf.test

* tests/bpf.c (main): Add missing semicolon.

Fixes: ad427721 ("tests: rewrite bpf.test from match_grep to match_diff")
7 years agotests: check signal injection
Dmitry V. Levin [Wed, 8 Feb 2017 13:51:33 +0000 (13:51 +0000)]
tests: check signal injection

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

7 years agoImplement -e inject= option
Dmitry V. Levin [Wed, 8 Feb 2017 09:28:38 +0000 (09:28 +0000)]
Implement -e inject= option

Introduce -e inject= as a general injection option,
limit -e fault= option to syscall fault injection.

Change default return code of syscall fault injection to ENOSYS.

* qualify.c (parse_inject_token): Add fault_tokens_only argument,
do not accept retval= and signal= tokens when fault_tokens_only
is set to true.
(parse_inject_expression): Add fault_tokens_only argument,
forward it to parse_inject_token.
(qualify_inject_common): New function.
(qualify_fault): Use it.
(qualify_inject): New function.
(qual_options): New entry.
* strace.1: Describe -e inject= option.
* NEWS: Mention -e inject= option.
* tests/qual_fault-syntax.test: Test that -e fault= option does not
support retval=, signal=, and multiple error= tokens.
* tests/qual_fault.c (DEFAULT_ERRNO): Set to ENOSYS unconditionally.
* tests/qual_inject-retval.test: Replace -e fault= option
with -e inject= option.
* tests/qual_inject-syntax.test: New test.
* tests/Makefile.am (MISC_TESTS): Add it.

7 years agotests: prepare for introduction of -e inject= option
Dmitry V. Levin [Wed, 8 Feb 2017 09:28:30 +0000 (09:28 +0000)]
tests: prepare for introduction of -e inject= option

Rename files related to fault injection to avoid further confusion.

* tests/fault_injection-exit_group.expected: Rename
to tests/qual_fault-exit_group.expected.
* tests/fault_injection-exit_group.test: Rename
to tests/qual_fault-exit_group.test.
* tests/fault_syntax.test: Rename to tests/qual_fault-syntax.test.
* tests/fault_injection.c: Rename to tests/qual_fault.c.
* tests/fault_injection.test: Rename to tests/qual_fault.test.
* tests/fault_injection-retval.c: Rename to tests/qual_inject-retval.c.
* tests/fault_injection-retval.test: Rename
to tests/qual_inject-retval.test.
* tests/fault_injection.sh: Rename to tests/scno_tampering.sh.
* tests/.gitignore: Update.
* tests/Makefile.am (check_PROGRAMS, DECODER_TESTS, MISC_TESTS,
EXTRA_DIST): Update.

7 years agoPrepare for introduction of -e inject= option
Dmitry V. Levin [Wed, 8 Feb 2017 09:28:07 +0000 (09:28 +0000)]
Prepare for introduction of -e inject= option

As -e fault= injection syntax has been extended to configure various
kinds of injections besides fault injection, the original option name
bacame too narrow.

This change renames internal constants, types, and functions from
"fault" to more generic inject/tamper ones.

* defs.h (fault_opts): Rename to inject_opts.
(FAULT_OPTS_RVAL_DEFAULT): Rename to INJECT_OPTS_RVAL_DEFAULT.
(FAULT_OPTS_RVAL_DISABLE): Rename to INJECT_OPTS_RVAL_DISABLE.
(struct tcb): Rename fault_vec field to inject_vec.
(TCB_FAULT_INJ): Rename to TCB_TAMPERED.
(QUAL_FAULT): Rename to QUAL_INJECT.
(fault_vec): Rename to inject_vec.
All users changed.
* qualify.c (fault_set): Rename to inject_set.
(parse_fault_token): Rename to parse_inject_token.
(parse_fault_expression): Rename to parse_inject_expression.
All callers changed.
* syscall.c (fault_vec): Rename to inject_vec.
(tcb_fault_opts): Rename to tcb_inject_opts.
(inject_syscall_fault_entering): Rename to tamper_with_syscall_entering.
(update_syscall_fault_exiting): Rename to tamper_with_syscall_exiting.
(syscall_fault_injected): Rename to syscall_tampered.
All callers changed.

7 years agotests: make Makefile.am lists sorted in C locale
Dmitry V. Levin [Tue, 7 Feb 2017 16:11:05 +0000 (16:11 +0000)]
tests: make Makefile.am lists sorted in C locale

* tests/Makefile.am (check_PROGRAMS, DECODER_TESTS, MISC_TESTS,
EXTRA_DIST): Make sorted in C locale.

7 years agotests: use ARG_STR in msg_control.test
Dmitry V. Levin [Tue, 7 Feb 2017 15:25:41 +0000 (15:25 +0000)]
tests: use ARG_STR in msg_control.test

Drop local VAL_STR macro in favour of ARG_STR macro from tests/tests.h.

* tests/msg_control.c (VAL_STR): Remove.
(test_sol_socket, test_sol_ip): Replace VAL_STR with ARG_STR.

7 years agopowerpc, powerpc64: wire up new syscalls
Dmitry V. Levin [Tue, 7 Feb 2017 14:58:30 +0000 (14:58 +0000)]
powerpc, powerpc64: wire up new syscalls

* linux/powerpc/syscallent.h [382]: Add kexec_file_load entry.
* linux/powerpc64/syscallent.h [382]: Likewise.

7 years agomicroblaze: wire up new syscalls
Dmitry V. Levin [Tue, 7 Feb 2017 14:58:30 +0000 (14:58 +0000)]
microblaze: wire up new syscalls

* linux/microblaze/syscallent.h [392..397]: New entries.

7 years agoavr32: wire up new syscalls
Dmitry V. Levin [Tue, 7 Feb 2017 14:58:30 +0000 (14:58 +0000)]
avr32: wire up new syscalls

* linux/avr32/syscallent.h [328..330]: New entries.

7 years agoUpdate IPV6_* constants
Dmitry V. Levin [Mon, 6 Feb 2017 22:13:20 +0000 (22:13 +0000)]
Update IPV6_* constants

* xlat/sockipv6options.in: Add IPV6_RECVFRAGSIZE introduced
by linux kernel commit v4.10-rc1~202^2~340^2~1.

7 years agoUpdate IP_* constants
Dmitry V. Levin [Mon, 6 Feb 2017 22:13:20 +0000 (22:13 +0000)]
Update IP_* constants

* xlat/sockipoptions.in: Add IP_RECVFRAGSIZE introduced
by linux kernel commit v4.10-rc1~202^2~340^2~2.

7 years agoor1k: fix build
Jacob Goense [Mon, 6 Feb 2017 13:00:34 +0000 (14:00 +0100)]
or1k: fix build

This fixes a typo in the arch_set_success for the or1k architecture.

* linux/or1k/set_error.c (arch_setsuccess): Rename to arch_set_success.

Fixes: 41d647c ("Implement success injection")
Closes: https://github.com/strace/strace/pull/6
7 years agoUpdate ioctl entries from linux 4.10
Gleb Fotengauer-Malinovskiy [Thu, 2 Feb 2017 16:08:09 +0000 (19:08 +0300)]
Update ioctl entries from linux 4.10

* linux/32/ioctls_inc_align16.h: Update from linux v4.10 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.
* NEWS: Mention this.

7 years agomaint: update for linux 4.10
Gleb Fotengauer-Malinovskiy [Fri, 3 Feb 2017 08:23:10 +0000 (11:23 +0300)]
maint: update for linux 4.10

* maint/ioctls_sym.sh: Update workaround for linux/if_pppox.h file.

7 years agomaint: add workaround for m68k
Gleb Fotengauer-Malinovskiy [Thu, 2 Feb 2017 16:06:29 +0000 (19:06 +0300)]
maint: add workaround for m68k

* maint/ioctls_sym.sh: Skip asm/amigayle.h.

7 years agotests: check decoding of bpf corner cases
Dmitry V. Levin [Tue, 31 Jan 2017 19:38:45 +0000 (19:38 +0000)]
tests: check decoding of bpf corner cases

* tests/bpf.c (bogus_bpf): New function.
(BOGUS_BPF): New macro.
(main): Use them.
* tests/bpf.test: Add -a option.

7 years agotests: rewrite bpf.test from match_grep to match_diff
Dmitry V. Levin [Sun, 29 Jan 2017 23:12:07 +0000 (23:12 +0000)]
tests: rewrite bpf.test from match_grep to match_diff

* tests/bpf.c (errstr): New variable.
(sys_bpf): New function.
(map_create, map_any, prog_load, obj_manage, prog_cgroup): Use it.
(main): Update expected output.
* tests/bpf.test: Use run_strace_match_diff.

7 years agobpf: move common code to a separate function
Dmitry V. Levin [Sat, 28 Jan 2017 22:11:20 +0000 (22:11 +0000)]
bpf: move common code to a separate function

* bpf.c (bpf_prog_attach_detach): New function.
(bpf_prog_attach, bpf_prog_detach): Use it.

7 years agoUpdate bpf syscall decoding
Quentin Monnet [Thu, 26 Jan 2017 14:36:56 +0000 (15:36 +0100)]
Update bpf syscall decoding

Implement decoding of BPF_OBJ_PIN, BPF_OBJ_GET, BPF_PROG_ATTACH,
and BPF_PROG_DETACH commands.

* bpf.c: Include "xlat/bpf_attach_type.h".
(bpf_obj_manage, bpf_prog_attach, bpf_prog_detach): New functions.
(SYS_FUNC(bpf)): Use them.
* configure.ac: Check for union bpf_attr.bpf_fd and union
bpf_attr.attach_type.
* xlat/bpf_attach_type.in: New file.
* xlat/bpf_commands.in: Update list of BPF_* command constants.
* xlat/bpf_map_types.in: Update list of BPF_MAP_TYPE_* constants.
* xlat/bpf_prog_types.in: Update list of BPF_PROG_TYPE_* constants.
* tests/bpf.c [HAVE_UNION_BPF_ATTR_BPF_FD] (obj_manage): New function.
[HAVE_UNION_BPF_ATTR_ATTACH_TYPE] (prog_cgroup): Likewise.
(main): Use them.

7 years agotests: check success injection
Elvira Khabirova [Tue, 24 Jan 2017 23:59:33 +0000 (02:59 +0300)]
tests: check success injection

* tests/fault_injection-retval.c: New file.
* tests/fault_injection-retval.test: New test.
* tests/.gitignore: Add fault_injection-retval.
* tests/Makefile.am (check_PROGRAMS): Likewise.
(MISC_TESTS): Add fault_injection-retval.test.

7 years agoImplement success injection
Elvira Khabirova [Tue, 24 Jan 2017 23:59:16 +0000 (02:59 +0300)]
Implement success injection

This extends fault injection syntax with :retval= option.
When :retval=VALUE is specified, the syscall number is replaced by -1
and a bogus success VALUE is returned to the callee.

* defs.h (fault_opts): Remove err field, add rval field.
(MAX_ERRNO_VALUE, FAULT_OPTS_RVAL_DEFAULT, FAULT_OPTS_RVAL_DISABLE):
New macros.
* qualify.c (parse_fault_token): Handle retval= token.
(qualify_fault): Update fault_opts initialization after the move
from struct fault_opts.err to struct fault_opts.rval.
* syscall.c (arch_set_success): New prototype.
(inject_syscall_fault_entering): Check opts->rval instead of opts->err.
(update_syscall_fault_exiting): Implement retval injection.
* strace.1: Update the section on fault injection.
* NEWS: Mention retval= option.
* linux/aarch64/set_error.c (arch_set_success): New function.
* linux/alpha/set_error.c: Likewise.
* linux/arc/set_error.c: Likewise.
* linux/arm/set_error.c: Likewise.
* linux/avr32/set_error.c: Likewise.
* linux/bfin/set_error.c: Likewise.
* linux/crisv10/set_error.c: Likewise.
* linux/hppa/set_error.c: Likewise.
* linux/i386/set_error.c: Likewise.
* linux/ia64/set_error.c: Likewise.
* linux/m68k/set_error.c: Likewise.
* linux/metag/set_error.c: Likewise.
* linux/microblaze/set_error.c: Likewise.
* linux/mips/set_error.c: Likewise.
* linux/nios2/set_error.c: Likewise.
* linux/or1k/set_error.c: Likewise.
* linux/powerpc/set_error.c: Likewise.
* linux/riscv/set_error.c: Likewise.
* linux/s390/set_error.c: Likewise.
* linux/sh/set_error.c: Likewise.
* linux/sh64/set_error.c: Likewise.
* linux/sparc/set_error.c: Likewise.
* linux/sparc64/set_error.c: Likewise.
* linux/tile/set_error.c: Likewise.
* linux/x86_64/set_error.c: Likewise.
* linux/xtensa/set_error.c: Likewise.

Closes: https://github.com/strace/strace/issues/3
7 years agomips: rewrite configure check without sgidefs.h
Dmitry V. Levin [Thu, 26 Jan 2017 23:57:17 +0000 (23:57 +0000)]
mips: rewrite configure check without sgidefs.h

Use builtin macros provided by gcc >= 3.4 instead of sgidefs.h macros.

* configure.ac <mips>: Do not include <asm/sgidefs.h>, use _ABIO32
instead of _MIPS_SIM_ABI32, _ABIN32 instead of _MIPS_SIM_NABI32,
and _ABI64 instead of _MIPS_SIM_ABI64.

7 years ago.gitignore: add missing files that should be ignored
Elvira Khabirova [Fri, 20 Jan 2017 18:21:02 +0000 (21:21 +0300)]
.gitignore: add missing files that should be ignored

* .gitignore: Add /ioctl_iocdef.[ih].

Fixes: 5679fad ("ioctlsort: get ioctl definitions from host, not build")
7 years agomips: use <asm/sgidefs.h>
Andre McCurdy [Fri, 5 Feb 2016 22:00:00 +0000 (14:00 -0800)]
mips: use <asm/sgidefs.h>

Build fix for MIPS with musl libc.

The MIPS specific header <sgidefs.h> is provided by glibc and uclibc
but not by musl. Regardless of the libc, the kernel headers provide
<asm/sgidefs.h> which provides the same definitions, so use that
instead.

* configure.ac: Replace <sgidefs.h> with <asm/sgidefs.h>.

Signed-off-by: Andre McCurdy <armccurdy@gmail.com>
Signed-off-by: Dmitry V. Levin <ldv@altlinux.org>
7 years agoImplement decoding of ustat syscall
JingPiao Chen [Tue, 17 Jan 2017 07:55:58 +0000 (15:55 +0800)]
Implement decoding of ustat syscall

* configure.ac (AC_CHECK_HEADERS): Add ustat.h.
* ustat.c: New file.
* Makefile.am (strace_SOURCES): Add it.
* linux/dummy.h: Remove sys_ustat.
* tests/ustat.c: New file.
* tests/ustat.test: New test.
* tests/.gitignore: Add ustat.
* tests/Makefile.am (check_PROGRAMS): Likewise.
(DECODER_TESTS): Add ustat.test.

7 years agoMakefile.am: allow indented DEF_MPERS_TYPE includes
JingPiao Chen [Thu, 19 Jan 2017 06:59:51 +0000 (14:59 +0800)]
Makefile.am: allow indented DEF_MPERS_TYPE includes

* Makefile.am (m%_type_defs.h): Change sed regular expression to allow
arbitrary number of whitespace characters between "#" symbol
and "include" directive.

7 years agostrace.1: fix formatting
JingPiao Chen [Tue, 17 Jan 2017 07:55:59 +0000 (15:55 +0800)]
strace.1: fix formatting

* strace.1: Remove misplaced .TP macros.

7 years agotests: drop non-USE_ASM_STAT case support
Dmitry V. Levin [Fri, 13 Jan 2017 20:07:09 +0000 (20:07 +0000)]
tests: drop non-USE_ASM_STAT case support

With the switch of fstatat family tests to USE_ASM_STAT variant,
there are no non-USE_ASM_STAT users left.  Remove support of unused
non-USE_ASM_STAT case.

* configure.ac (AC_CHECK_MEMBERS): Remove struct stat.st_mtim.tv_nsec.
* tests/fstatat.c (USE_ASM_STAT): Remove.
* tests/fstatx.c: Likewise.
* tests/lstatx.c: Likewise.
* tests/xstatx.c: Assume USE_ASM_STAT.
[!USE_ASM_STAT]: Remove.

7 years agotests: call newfstatat and fstatat64 syscalls directly
Dmitry V. Levin [Fri, 13 Jan 2017 19:54:57 +0000 (19:54 +0000)]
tests: call newfstatat and fstatat64 syscalls directly

Do not use glibc wrappers to call newfstatat and fstatat64.
These wrappers have various problems, e.g. they segfault on sparc64
and mips64 if BOGUS_STRUCT_STAT is not disabled, and they do wrong
conversion of timestamps on mips64.

* tests/fstatat.c (TEST_SYSCALL_INVOKE): Invoke the relevant syscall
directly.
(USE_ASM_STAT): Define.
* tests/fstatat64.c (TEST_BOGUS_STRUCT_STAT): Remove.
(STRUCT_STAT, STRUCT_STAT_STR, STRUCT_STAT_IS_STAT64): Define.

Based on patch by James Cowgill <james410@cowgill.org.uk>.

7 years agotests: remove redundant SAMPLE_SIZE definitions
Dmitry V. Levin [Fri, 13 Jan 2017 19:39:18 +0000 (19:39 +0000)]
tests: remove redundant SAMPLE_SIZE definitions

Remove all definitions of SAMPLE_SIZE that are identical to the fallback
definition in tests/xstatx.c.

* tests/fstat64.c (SAMPLE_SIZE): Remove.
* tests/lstat64.c (SAMPLE_SIZE): Remove.
* tests/stat64.c (SAMPLE_SIZE): Remove.

7 years agotests: change SAMPLE_SIZE type to libc_off_t
Dmitry V. Levin [Fri, 13 Jan 2017 19:31:30 +0000 (19:31 +0000)]
tests: change SAMPLE_SIZE type to libc_off_t

As ftruncate libc function and our create_sample function that calls
ftruncate both take size argument of type libc_off_t, change the type
of SAMPLE_SIZE constant to libc_off_t.

* tests/fstat.c (SAMPLE_SIZE): Cast to libc_off_t.
* tests/lstat.c (SAMPLE_SIZE): Likewise.
* tests/oldfstat.c (SAMPLE_SIZE): Likewise.
* tests/oldlstat.c (SAMPLE_SIZE): Likewise.
* tests/oldstat.c (SAMPLE_SIZE): Likewise.
* tests/stat.c (SAMPLE_SIZE): Likewise.
* tests/xstatx.c (SAMPLE_SIZE): Likewise.

7 years agoioctlsort: get ioctl definitions from host, not build
Alexey Neyman [Thu, 12 Jan 2017 21:15:59 +0000 (13:15 -0800)]
ioctlsort: get ioctl definitions from host, not build

When cross-compiling, ioctlsort must obtain _IOC_* values from the
host, build's values may be incompatible.

* ioctl_iocdef.c: New file.
* Makefile.am (EXTRA_DIST): Add it.
(ioctl_iocdef.i, ioctl_iocdef.h): New rules.
(ioctlsort%.o): Depend on ioctl_iocdef.h.
(CLEANFILES): Add ioctl_iocdef.h and ioctl_iocdef.i.
* ioctlsort.c: Include "ioctl_iocdef.h" instead of <linux/ioctl.h>.

Signed-off-by: Alexey Neyman <stilor@att.net>
Signed-off-by: Dmitry V. Levin <ldv@altlinux.org>
7 years agotests: treat struct stat mismatch as an error
Dmitry V. Levin [Fri, 13 Jan 2017 01:14:51 +0000 (01:14 +0000)]
tests: treat struct stat mismatch as an error

If the test detects struct stat mismatch, this is likely an error
in definitions of a stat structure that might affect strace as well.
Fail the test instead of skipping it to attract more attention.

* tests/xstatx.c (main): Return 1 instead of 77
in case of struct stat mismatch.

7 years agotests: rewrite diagnostics about struct stat mismatch
Dmitry V. Levin [Thu, 12 Jan 2017 23:01:32 +0000 (23:01 +0000)]
tests: rewrite diagnostics about struct stat mismatch

* tests/xstatx.c (LOG_STAT_OFFSETOF_SIZEOF): New macro.
(main): Use it to print struct stat mismatch details.

7 years agotests: fix typo in tests/xstatx.c
Dmitry V. Levin [Thu, 12 Jan 2017 22:52:17 +0000 (22:52 +0000)]
tests: fix typo in tests/xstatx.c

* tests/xstatx.c [!IS_FSTAT]: Define IS_FSTAT instead of IS_STAT.

7 years agotests: fix typo in mlock.c
JingPiao Chen [Thu, 12 Jan 2017 13:56:07 +0000 (21:56 +0800)]
tests: fix typo in mlock.c

* tests/mlock.c [!(__NR_mlock && __NR_munlock)]: Fix spelling
of SKIP_MAIN_UNDEFINED.

7 years agostrace: move description of -k option to the appropriate place
JingPiao Chen [Fri, 6 Jan 2017 07:16:27 +0000 (15:16 +0800)]
strace: move description of -k option to the appropriate place

Follow the example of strace.1 and put the description of -k option
into the  output format group.

* strace.c (usage): Move description of -k option to the output
format group.

7 years agoRemove redundant commas at the end of structure initializers
Dmitry V. Levin [Wed, 11 Jan 2017 23:48:41 +0000 (23:48 +0000)]
Remove redundant commas at the end of structure initializers

Automatically remove redundant commas using the following
sed expression:

git grep -El ',[[:space:]]+}' |xargs sed -ri 's/,([[:space:]]+\})/\1/'

* linux/32/syscallent.h: Remove redundant commas at the end of structure
initializers.
* 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/microblaze/userent.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/kexec_file_load.c: Likewise.

Reported-by: Eugene Syromyatnikov <evgsyr@gmail.com>
7 years agotests: check decoding of scsi ioctl commands
Dmitry V. Levin [Tue, 10 Jan 2017 00:05:17 +0000 (00:05 +0000)]
tests: check decoding of scsi ioctl commands

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

7 years agoscsi: implement decoding of all SG_* ioctl commands
Dmitry V. Levin [Mon, 9 Jan 2017 16:01:08 +0000 (16:01 +0000)]
scsi: implement decoding of all SG_* ioctl commands

* print_sg_req_info.c: New file.
* Makefile.am (strace_SOURCES): Add it.
* xlat/sg_scsi_reset.in: New file.
* scsi.c: Include "xlat/sg_scsi_reset.h".
(scsi_ioctl): Implement decoding of all SG_* ioctl commands.

7 years agoscsi: prepare for decoding of other SG_* ioctl commands
Dmitry V. Levin [Mon, 9 Jan 2017 13:53:27 +0000 (13:53 +0000)]
scsi: prepare for decoding of other SG_* ioctl commands

* scsi.c (scsi_ioctl): Introduce a switch statement.

7 years agotests: check decoding of ioctl SG_IO v3 commands
Dmitry V. Levin [Mon, 9 Jan 2017 00:22:42 +0000 (00:22 +0000)]
tests: check decoding of ioctl SG_IO v3 commands

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

7 years agotests: check decoding of ioctl SG_IO v4 commands
Dmitry V. Levin [Mon, 9 Jan 2017 00:22:42 +0000 (00:22 +0000)]
tests: check decoding of ioctl SG_IO v4 commands

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

7 years agoscsi: add fallback definitions for SG_* ioctl command constants
Dmitry V. Levin [Mon, 9 Jan 2017 02:40:08 +0000 (02:40 +0000)]
scsi: add fallback definitions for SG_* ioctl command constants

Unfortunately, <scsi/sg.h> from libc does not provide all constants
recognized by the kernel.

* xlat/scsi_sg_commands.in: New file.
* scsi.c: Include "xlat/scsi_sg_commands.h" instead of providing
a fallback definition of SG_IO.

7 years agoxlat: provide fallback definitions for BSG_FLAG_* constants
Dmitry V. Levin [Mon, 9 Jan 2017 00:13:58 +0000 (00:13 +0000)]
xlat: provide fallback definitions for BSG_FLAG_* constants

BSG_FLAG_* constants were introduced later than the header file where
they are defined.

* xlat/bsg_flags.in: Add default values for constants.

7 years agoxlat: provide fallback definitions for SG_FLAG_* constants
Dmitry V. Levin [Mon, 9 Jan 2017 00:13:58 +0000 (00:13 +0000)]
xlat: provide fallback definitions for SG_FLAG_* constants

Unfortunately, <scsi/sg.h> from libc does not provide all constants
recognized by the kernel.

* xlat/sg_io_flags.in: Add default values for constants.

7 years agosg_io_v4: print din_resid and dout_resid fields as signed integers
Dmitry V. Levin [Sun, 8 Jan 2017 21:43:41 +0000 (21:43 +0000)]
sg_io_v4: print din_resid and dout_resid fields as signed integers

* sg_io_v4.c (decode_response): Print din_resid and dout_resid fields
using %d format.

7 years agosg_io: cleanup printing of sg_io buffers
Dmitry V. Levin [Sun, 8 Jan 2017 18:31:51 +0000 (18:31 +0000)]
sg_io: cleanup printing of sg_io buffers

Turn print_sg_io_buffer into a universal sg_io buffer printer.

* sg_io_v3.c (print_sg_io_buffer): Add iovec_count argument.
Call tprint_iov_upto when iovec_count is non-zero.
(decode_request, decode_response): Do not call tprint_iov_upto directly,
use print_sg_io_buffer instead.
* sg_io_v4.c: Likewise.

7 years agosg_io: decode structures on exiting syscall in case of syserror
Dmitry V. Levin [Sun, 8 Jan 2017 17:43:21 +0000 (17:43 +0000)]
sg_io: decode structures on exiting syscall in case of syserror

The SCSI driver, starting with kernel commit v2.6.25-rc1~1230^2~78,
translates its "struct request.errors" to ioctl errors after
filling in all the output members of the SG_IO header structure.

As there is no easy way to tell SCSI layer errors from other syscall
errors, decode the structure on exiting syscall in case of syserror,
too.

* scsi.c (scsi_ioctl): Do not call set_tcb_priv_ulong, use
get_tcb_priv_data instead of get_tcb_priv_ulong, call decode_sg_io
unconditionally.
* sg_io_v3.c (decode_request): Save a copy of struct_sg_io_hdr using
set_tcb_priv_data.
(decode_response): Restore it using get_tcb_priv_data.  Print its i/o
fields when umove call fails.  Pass IOV_DECODE_STR to tprint_iov_upto
unconditionally.
* sg_io_v4.c (decode_request): Save a copy of struct sg_io_v4 using
set_tcb_priv_data.
(decode_response): Restore it using get_tcb_priv_data.  Print its i/o
fields when umove call fails.  Pass IOV_DECODE_STR to tprint_iov_upto
unconditionally.

7 years agosg_io: reorder printing of fields to follow structure order
Dmitry V. Levin [Sun, 8 Jan 2017 16:55:48 +0000 (16:55 +0000)]
sg_io: reorder printing of fields to follow structure order

* sg_io_v4.c (decode_request): Print timeout, flags, and usr_ptr fields
after dout_xferp field.

7 years agosg_io_v3: print sg_io_hdr.duration field as unsigned integer
Dmitry V. Levin [Sun, 8 Jan 2017 16:53:53 +0000 (19:53 +0300)]
sg_io_v3: print sg_io_hdr.duration field as unsigned integer

* sg_io_v3.c (decode_response): Print duration field using %u format.

7 years agosg_io_v3: print msg_status field
Dmitry V. Levin [Sun, 8 Jan 2017 16:52:05 +0000 (19:52 +0300)]
sg_io_v3: print msg_status field

* sg_io_v3.c (decode_response): Print msg_status field.

7 years agosg_io: print names of array fields and corresponding length fields
Dmitry V. Levin [Sun, 8 Jan 2017 16:00:01 +0000 (16:00 +0000)]
sg_io: print names of array fields and corresponding length fields

* sg_io_v3.c (decode_request): Print names of cmd_len, cmdp,
and dxferp fields.
(decode_response): Print names of dxferp, sb_len_wr, and sbp fields.
* sg_io_v4.c (decode_request): Print names of request_len, request,
dout_xfer_len, and dout_xferp fields.
(decode_response): Print names of response_len, response,
and din_xferp fields.

7 years agosg_io_v3: print status fields using %#x format specifier
Dmitry V. Levin [Sun, 8 Jan 2017 15:43:40 +0000 (15:43 +0000)]
sg_io_v3: print status fields using %#x format specifier

The formerly used format string %02x led to misleading output as there
was no clear indication sometimes whether the printed integer was
decimal or hexadecimal.

* sg_io_v3.c (decode_response): Print status and masked_status fields
using %#x format specifier instead of %02x.

7 years agosg_io_v4: print status fields in a hexadecimal form
Dmitry V. Levin [Sun, 8 Jan 2017 15:41:06 +0000 (15:41 +0000)]
sg_io_v4: print status fields in a hexadecimal form

The tradition is to print scsi status codes in a hexadecimal form.

* sg_io_v4.c (decode_response): Print driver_status, transport_status,
and device_status fields using %#x format specifier instead of %u.