]> granicus.if.org Git - strace/log
strace
7 years agoPrepare for 4.15 release
Dmitry V. Levin [Tue, 13 Dec 2016 20:21:22 +0000 (20:21 +0000)]
Prepare for 4.15 release

* NEWS: Update for 4.15 release.

7 years ago.mailmap: add addresses of Thomas De Schampheleire
Dmitry V. Levin [Tue, 13 Dec 2016 20:43:57 +0000 (20:43 +0000)]
.mailmap: add addresses of Thomas De Schampheleire

* .mailmap: Add both addresses of Thomas De Schampheleire here to avoid
duplications in CREDITS file.

7 years agoSync strace.spec and debian/ with packages
Dmitry V. Levin [Tue, 13 Dec 2016 20:40:48 +0000 (20:40 +0000)]
Sync strace.spec and debian/ with packages

* debian/control: Add Vcs-* metadata from 4.13-0.1.
* debian/watch: Sync with 4.13-0.1.
* strace.spec.in: Sync with 4.14.0.100.622a-1.

7 years agotests: workaround a bug in GNU grep
Dmitry V. Levin [Tue, 13 Dec 2016 19:59:47 +0000 (19:59 +0000)]
tests: workaround a bug in GNU grep

Workaround a bug introduced in GNU grep 2.27, for details see
https://lists.gnu.org/archive/html/bug-grep/2016-12/msg00011.html

* tests/init.sh (grep_pid_status): New function.
* tests/detach-running.test: Use it instead of grep to search
in /proc/$pid/status.
* tests/detach-sleeping.test: Likewise.
* tests/detach-stopped.test: Likewise.

7 years agotests: fix typo in comment inside prctl-tsc.c
Eugene Syromyatnikov [Sat, 10 Dec 2016 00:12:15 +0000 (03:12 +0300)]
tests: fix typo in comment inside prctl-tsc.c

7 years agoFix libunwind segfault when -p is passed before -k
Sean Stangl [Thu, 8 Dec 2016 19:54:24 +0000 (09:54 -1000)]
Fix libunwind segfault when -p is passed before -k

* strace.c (init) [USE_LIBUNWIND]: Call unwind_tcb_init after
unwind_init for all allocated tcb structures if stack trace is enabled.
* unwind.c (unwind_tcb_init): Skip if tcb is already initialized.

Co-authored-by: Dmitry V. Levin <ldv@altlinux.org>
7 years agoUpdate NEWS
Eugene Syromyatnikov [Tue, 6 Dec 2016 01:33:32 +0000 (04:33 +0300)]
Update NEWS

Co-authored-by: Dmitry V. Levin <ldv@altlinux.org>
7 years agotests: skip fault injection tests on unsupported platforms
Dmitry V. Levin [Wed, 7 Dec 2016 16:57:42 +0000 (16:57 +0000)]
tests: skip fault injection tests on unsupported platforms

* tests/fault_injection.sh: New file.
* tests/Makefile.am (EXTRA_DIST): Add it.
* tests/fault_injection-exit_group.test: Use it.
* tests/fault_injection.test: Likewise.

7 years agotests: introduce require_min_kernel_version_or_skip function
Dmitry V. Levin [Wed, 7 Dec 2016 18:05:28 +0000 (18:05 +0000)]
tests: introduce require_min_kernel_version_or_skip function

* tests/init.sh (kernel_version_code,
require_min_kernel_version_or_skip): New functions.
* tests/threads-execve.test: Use require_min_kernel_version_or_skip.

7 years agotests: add descriptions to prctl-pdeathsig and prctl-tsc tests
Eugene Syromyatnikov [Tue, 6 Dec 2016 19:12:35 +0000 (22:12 +0300)]
tests: add descriptions to prctl-pdeathsig and prctl-tsc tests

7 years agotests: robustify prctl-pdeathsig.test and prctl-tsc.test
Dmitry V. Levin [Wed, 7 Dec 2016 16:22:50 +0000 (16:22 +0000)]
tests: robustify prctl-pdeathsig.test and prctl-tsc.test

Rrobustify remaining prctl tests against unrelated prctl invocations

* tests/prctl-pdeathsig.test: Filter out unrelated PR_GET_* and PR_SET_*
prctl calls.
* tests/prctl-tsc.test: Likewise.

7 years agoMakefile.am: don't confuse CFLAGS and CFLAGS_FOR_BUILD
Thomas De Schampheleire [Tue, 18 Oct 2016 11:42:44 +0000 (13:42 +0200)]
Makefile.am: don't confuse CFLAGS and CFLAGS_FOR_BUILD

Commit dc427d50d96b15c9a64d7e78d97ce4d194622a63 enabled a number of extra
warning flags through configure.ac.  The configure script will determine
dynamically if CC supports these flags before adding them to WARN_CFLAGS.

ioctlsort is compiled with CC_FOR_BUILD, rather than CC.  Nevertheless,
the flags passed to this compilation also include WARN_CFLAGS (through
AM_CFLAGS).  This is incorrect: in a cross-compilation use case, CC
and CC_FOR_BUILD are not the same.  The former is the cross-compiler,
the latter is the host compiler.  Both may be of different versions
and support different warning flags.

In particular, this posed a problem when cross-compiling with a host
compiler gcc 4.1, which does not support all the new flags:

    /usr/bin/gcc -DHAVE_CONFIG_H   -I./linux/arm -I./linux/arm -I./linux
    -I./linux -I. -I. -I/host-sysroot/usr/include -Wall -Wempty-body
    -Wformat-security -Wignored-qualifiers -Winit-self -Wlogical-op
    -Wmissing-parameter-type -Wnested-externs -Wold-style-declaration
    -Wold-style-definition -Wsign-compare -Wtype-limits -Wwrite-strings -O2
    -I/host-sysroot/usr/include -DIOCTLSORT_INC=\"ioctls_all0.h\" -c -o
    ioctlsort0.o ./ioctlsort.c
    cc1: error: unrecognized command line option "-Wempty-body"
    cc1: error: unrecognized command line option "-Wignored-qualifiers"
    cc1: error: unrecognized command line option "-Wlogical-op"
    cc1: error: unrecognized command line option "-Wmissing-parameter-type"
    cc1: error: unrecognized command line option "-Wold-style-declaration"
    cc1: error: unrecognized command line option "-Wtype-limits"
    make[2]: *** [ioctlsort0.o] Error 1

* Makefile.am (AM_CFLAGS_FOR_BUILD, AM_CPPFLAGS_FOR_BUILD): New
variables.
(ioctlsort_CPPFLAGS): Use AM_CPPFLAGS_FOR_BUILD instead of AM_CPPFLAGS.
(ioctlsort_CFLAGS): Use AM_CFLAGS_FOR_BUILD instead of AM_CFLAGS.
(ioctlsort_LDFLAGS): Use AM_LDFLAGS_FOR_BUILD instead of AM_LDFLAGS.
* m4/ax_prog_cc_for_build.m4 (AX_PROG_CC_FOR_BUILD): Redirect
WARN_CFLAGS and gl_unknown_warnings_are_errors, call st_WARN_CFLAGS,
substitute WARN_CFLAGS_FOR_BUILD.

Signed-off-by: Thomas De Schampheleire <thomas.de_schampheleire@nokia.com>
7 years agom4: prepare gl_WARN_ADD for simultaneous use of multiple compilers
Dmitry V. Levin [Wed, 7 Dec 2016 01:08:44 +0000 (01:08 +0000)]
m4: prepare gl_WARN_ADD for simultaneous use of multiple compilers

* m4/warnings.m4 (gl_COMPILER_OPTION_IF): Change gl_Flags to use
_AC_LANG_PREFIX[]FLAGS in unquoted form.  Change gl_Warn to use gl_Flags
instead of _AC_LANG_ABBREV.  Change notification message to mention
the variable name of the compiler.
(gl_UNKNOWN_WARNINGS_ARE_ERRORS): Do nothing if
gl_unknown_warnings_are_errors is set.
(gl_WARN_ADD): Change the use of gl_UNKNOWN_WARNINGS_ARE_ERRORS from
AC_REQUIRE to a regular call.

7 years agoAX_PROG_CC_FOR_BUILD: redirect more variables related to C compiler
Dmitry V. Levin [Wed, 7 Dec 2016 00:59:12 +0000 (00:59 +0000)]
AX_PROG_CC_FOR_BUILD: redirect more variables related to C compiler

Some of these variables cannot be redirected using traditional
pushdef/popdef mechanism because of complex constructions like
[ac_cv_[]_AC_LANG_ABBREV[]_compiler_gnu] employed by autoconf macros.
Use st_SAVE_VAR/st_RESTORE_VAR to workaround this issue.

* m4/ax_prog_cc_for_build.m4: Redirect ac_cv_prog_cc_stdc,
ac_cv_prog_cc_c11, ac_cv_prog_cc_c99, ac_cv_prog_cc_c89,
am_cv_prog_cc_c_o, and am_cv_CC_dependencies_compiler_type using
pushdef/popdef.
Redirect ac_c_decl_warn_flag, ac_c_preproc_warn_flag, ac_c_werror_flag,
ac_compile, ac_compiler_gnu, ac_cpp, ac_cv_c_compiler_gnu,
ac_cv_c_decl_report, and ac_link using st_SAVE_VAR/st_RESTORE_VAR.

7 years agoMove all gl_WARN_ADD calls to a separate m4 macro
Dmitry V. Levin [Wed, 7 Dec 2016 00:47:50 +0000 (00:47 +0000)]
Move all gl_WARN_ADD calls to a separate m4 macro

This is going to be needed for the upcoming AX_PROG_CC_FOR_BUILD
change.

* configure.ac: Call st_WARN_CFLAGS before AX_PROG_CC_FOR_BUILD.
Move all gl_WARN_ADD calls ...
* m4/st_warn_cflags.m4: ... here.

7 years agom4: introduce st_SAVE_VAR and st_RESTORE_VAR macros
Dmitry V. Levin [Wed, 7 Dec 2016 10:58:24 +0000 (10:58 +0000)]
m4: introduce st_SAVE_VAR and st_RESTORE_VAR macros

These new macros are going to be needed for the upcoming
AX_PROG_CC_FOR_BUILD change.

* m4/st_save_restore_var.m4: New file.

7 years agotests: add valgrind support to "make check"
Dmitry V. Levin [Tue, 6 Dec 2016 02:31:31 +0000 (02:31 +0000)]
tests: add valgrind support to "make check"

* m4/ax_valgrind_check.m4: Import from the autoconf-archive package.
* configure.ac: Invoke AX_VALGRIND_CHECK.
* valgrind.supp: Move to tests/strace.supp.
* Makefile.am (EXTRA_DIST): Remove valgrind.supp.
* tests/Makefile.am: Add @VALGRIND_CHECK_RULES@.
(VALGRIND_FLAGS, VALGRIND_SUPPRESSIONS_FILES): New variables.
(EXTRA_DIST): Add strace.supp.
* tests/init.sh: Add valgrind command prefix to $STRACE when appropriate.

7 years agotests: robustify threads-execve.test against race conditions
Dmitry V. Levin [Tue, 6 Dec 2016 15:46:34 +0000 (15:46 +0000)]
tests: robustify threads-execve.test against race conditions

Due to probabilistic nature of the test, try it several times.

* tests/threads-execve.c (NUMBER_OF_ITERATIONS): Change to 1.
* tests/threads-execve.test: Iterate up to 10 times.

7 years agotests: fix expected output in strace-ttt.test
Dmitry V. Levin [Tue, 6 Dec 2016 08:55:41 +0000 (08:55 +0000)]
tests: fix expected output in strace-ttt.test

If strace -ttt is running too long, it might happen that time stamps
before and after its invocation differ for more than a second.
Adjust expected output to handle this rare but possible case.

* tests/strace-ttt.test: Allow any time stamp between start and finish
of strace invocation.

7 years agotests: fix expected output in strace-tt.test
Dmitry V. Levin [Tue, 6 Dec 2016 08:50:31 +0000 (08:50 +0000)]
tests: fix expected output in strace-tt.test

If strace -tt is running too long, it might happen that time stamps
before and after its invocation differ for more than a second.
Adjust expected output to handle this rare but possible case.

* tests/strace-tt.test: Allow any time stamp between start and finish
of strace invocation.

7 years agotests: robustify redirect.test against race conditions
Dmitry V. Levin [Tue, 6 Dec 2016 02:55:49 +0000 (02:55 +0000)]
tests: robustify redirect.test against race conditions

Introduce a synchronization mechanism between the tracee and its peer.

* tests/redirect.test: Change timeout file to $OUT.  Let the tracee
remove $LOG, wait for $LOG removal in its peer.

7 years agotests: robustify attach-f-p.test against race conditions
Dmitry V. Levin [Tue, 6 Dec 2016 01:54:13 +0000 (01:54 +0000)]
tests: robustify attach-f-p.test against race conditions

Introduce a synchronization mechanism between attach-f-p and strace.

* tests/attach-f-p-cmd.c: New file.
* tests/Makefile.am (check_PROGRAMS): Add attach-f-p-cmd.
* tests/attach-f-p.c: Include <sys/stat.h>.
(main): Write to stdout instead of descriptor 3.  Wait for the peer
writing to stdout.
* tests/attach-f-p.test: Assume that ./attach-f-p-cmd works.
Use $OUT for expected output.  Use attach-f-p-cmd for unlocking $OUT.

7 years agotests: robustify attach-p-cmd.test against race conditions
Dmitry V. Levin [Tue, 6 Dec 2016 00:32:06 +0000 (00:32 +0000)]
tests: robustify attach-p-cmd.test against race conditions

Introduce a synchronization mechanism between attach-p-cmd-p
and attach-p-cmd-cmd processes.

* tests/attach-p-cmd-cmd.c: Include <errno.h> and <sys/stat.h>.
(main): Wait for the lock directory creation by attach-p-cmd-p.
* tests/attach-p-cmd-p.c: Include <errno.h> and <sys/stat.h>.
(main): Create a lock directory and wait for its removal
by attach-p-cmd-cmd.
* tests/attach-p-cmd.test: Assume that test programs work.

7 years agoRewrite remaining qual_* parsers using bit sets
Dmitry V. Levin [Sun, 4 Dec 2016 14:39:48 +0000 (14:39 +0000)]
Rewrite remaining qual_* parsers using bit sets

* defs.h (struct fault_opts): Replace forward declaration
with a definition.
(qualbits_t, qualify_read, qualify_write, qualify_signals): Remove.
(qual_flags): New function prototype.
(nsyscall_vec, sysent_vec, fault_vec): New variable prototypes.
* qualify.c (abbrev_set, fault_set, raw_set, trace_set, verbose_set):
New variables.
(qualify_read, qualify_write, qualify_signals): Add static qualifier.
(find_errno_by_name, lookup_class, parse_fault_expression,
parse_fault_token, qual_flags, qualify, qualify_abbrev, qualify_fault,
qualify_raw, qualify_syscall, qualify_syscall_class,
qualify_syscall_name, qualify_syscall_number, qualify_syscall_tokens,
qualify_trace, qualify_verbose, strip_prefix): New functions.
* syscall.c (nsyscall_vec, nsysent_vec): Remove static qualifier.
(MAX_NSYSCALLS1, MAX_NSYSCALLS2, MAX_NSYSCALLS, qual_vec, qual_flags,
qual_fault, qual_syscall, qual_options, fault_opts, qualify_one,
qualify_scno, lookup_class, qualify_syscall_class, qualify_syscall_name,
qual_syscall_ex, qual_syscall, strip_prefix, find_errno_by_name,
parse_fault_token, parse_fault_expression, qual_fault, qualify): Remove.
(decode_socket_subcall, decode_ipc_subcall, decode_mips_subcall,
get_scno): Update use of qual_flags.
(inject_syscall_fault_entering): Update per-personality allocation
of tcp->fault_vec.
* tests/fault_injection-exit_group.test: Check parsing of inversed
fault sets.
* tests/fault_injection.test: Check parsing of -efault=none.
* tests/options-syntax.test: Check parsing of invalid syscall numbers.

7 years agoChange qual_vec/qual_fault into static fixed size arrays
Dmitry V. Levin [Sat, 3 Dec 2016 22:39:19 +0000 (22:39 +0000)]
Change qual_vec/qual_fault into static fixed size arrays

* defs.h (qual_vec, num_quals): Remove.
(qual_flags): Move ...
* syscall.c: ... here.
(num_quals, num_faults, MIN_QUALS, reallocate_vec, reallocate_qual,
reallocate_fault): Remove.
(qual_vec, qual_fault): Change into static fixed size arrays.
(qualify_one): Remove reallocate_qual and reallocate_fault calls.
(qualify): Likewise.  Replace num_quals and num_faults with
MAX_NSYSCALLS.

7 years agoRewrite qual_signal using bit sets
Dmitry V. Levin [Sat, 3 Dec 2016 22:37:19 +0000 (22:37 +0000)]
Rewrite qual_signal using bit sets

* defs.h (signal_set): New variable prototypes.
(qualify_signals): New function prototypes.
(QUAL_SIGNAL): Change to a value greater than 0xff.
(QUAL_FAULT): Change to a lower value.
* qualify.c (signal_set): New variable.
(sigstr_to_uint, qualify_signals): New functions.
* syscall.c (qual_signal): Remove.
(qual_options): Replace qual_signal with NULL.
(qualify): Use qualify_signals.
* strace.c (print_signalled, print_stopped): Use is_number_in_set
with signal_set argument.

7 years agoRewrite qual_desc using bit sets
Dmitry V. Levin [Fri, 2 Dec 2016 22:16:40 +0000 (22:16 +0000)]
Rewrite qual_desc using bit sets

As a side effect, this also fixes support of negated sets
of descriptors.

* defs.h (struct number_set): New forward declaration.
(read_set, write_set): New variable prototypes.
(is_number_in_set, qualify_read, qualify_write): New function
prototypes.
(QUAL_READ, QUAL_WRITE): Change to values greater than 0xff.
* qualify.c: New file.
* Makefile.am (strace_SOURCES): Add it.
* syscall.c (qual_desc): Remove.
(qual_options): Replace qual_desc with NULL.
(qualify): Use qualify_read and qualify_write.
(dumpio): Use is_number_in_set.
* tests/options-syntax.test: Check invalid sets of descriptors.
* tests/readv.test: Check dumping of negated sets of descriptors.

7 years agotests: skip redirect-fds.test when strace is wrapped with valgrind
Dmitry V. Levin [Mon, 5 Dec 2016 10:34:33 +0000 (10:34 +0000)]
tests: skip redirect-fds.test when strace is wrapped with valgrind

valgrind is not as transparent as strace wrt standard descriptors,
so if strace is wrapped with valgrind, the test would check valgrind
transparency properties and fail imminently.

* tests/redirect-fds.test: Skip the test when $STRACE shows a presence
of valgrind.

7 years agoAdd valgrind.supp
Dmitry V. Levin [Mon, 5 Dec 2016 02:36:36 +0000 (02:36 +0000)]
Add valgrind.supp

As valgrind is not quite happy about the way how get_cpuset_size uses
sched_getaffinity, add a suppression file for this case.

* valgrind.supp: New file.
* Makefile.am (EXTRA_DIST): Add it.

7 years agoaffinity: pass 0 as a pid to sched_getaffinity
Dmitry V. Levin [Mon, 5 Dec 2016 02:34:56 +0000 (02:34 +0000)]
affinity: pass 0 as a pid to sched_getaffinity

* affinity.c (get_cpuset_size): Pass 0 instead of getpid()
to sched_getaffinity.

7 years agoaffinity: document the method of finding out the cpuset size
Dmitry V. Levin [Mon, 5 Dec 2016 02:31:52 +0000 (02:31 +0000)]
affinity: document the method of finding out the cpuset size

* affinity.c (get_cpuset_size): Add a comment about sched_getaffinity.

7 years agotests: make options-syntax.test tolerant of strace wrappers
Dmitry V. Levin [Mon, 5 Dec 2016 00:58:36 +0000 (00:58 +0000)]
tests: make options-syntax.test tolerant of strace wrappers

Change the test to allow wrappers like STRACE="valgrind ./strace".

* tests/options-syntax.test: Strip all words but last from $STRACE
variable in all contexts where the name of strace executable is expected
in its output.

7 years agoDo not allocate memory for line buffered output
Dmitry V. Levin [Sun, 4 Dec 2016 18:36:31 +0000 (18:36 +0000)]
Do not allocate memory for line buffered output

libc is perfectly capable of allocating memory for its buffers,
so let it do its job.

* strace.c (init): Do not allocate memory for setvbuf invocation.

7 years agoUpdate NEWS
Eugene Syromyatnikov [Wed, 30 Nov 2016 21:31:25 +0000 (00:31 +0300)]
Update NEWS

7 years agotests: use kernel_ulong_t as argument type in setfsuid/setfsgid tests
Eugene Syromyatnikov [Mon, 28 Nov 2016 19:00:05 +0000 (22:00 +0300)]
tests: use kernel_ulong_t as argument type in setfsuid/setfsgid tests

* setfsugid.c: Include "kernel_types.h".
(main): Change type of entries of the "tests" array from long to
kernel_ulong_t.

7 years agouid: print size as signed in setgroups/getgroups
Eugene Syromyatnikov [Sun, 27 Nov 2016 23:51:04 +0000 (02:51 +0300)]
uid: print size as signed in setgroups/getgroups

As this is the type used in kernel.

* uid.c (SYS_FUNC(setgroups), SYS_FUNC(getgroups)): Print size parameter
as "%d".
* tests/getgroups.c: Update expected output.
* tests/setgroups.c: Likewise.

Co-authored-by: Elvira Khabirova <lineprinter0@gmail.com>
7 years agouid: use printuid for printing UID/GID value
Eugene Syromyatnikov [Sun, 27 Nov 2016 23:50:03 +0000 (02:50 +0300)]
uid: use printuid for printing UID/GID value

* uid.c (setfsuid, get_print_uid, print_gid): Use printuid.
* tests/setfsugid.c (printuid): New function.
(main): Use it to print UID/GID values.
* tests/setgroups.c: Likewise.
* tests/setugid.c (ugid2int): Remove.
(printuid): New function.
(main): Use it to print UID/GID values.

Co-authored-by: Elvira Khabirova <lineprinter0@gmail.com>
7 years agotests: additional check for PTRACE_SETSIGINFO ptrace command
Eugene Syromyatnikov [Wed, 30 Nov 2016 20:50:26 +0000 (23:50 +0300)]
tests: additional check for PTRACE_SETSIGINFO ptrace command

* tests/ptrace.c (main): Add an additional PTRACE_SETSIGINFO check.

7 years agosyscall_name: clear __X32_SYSCALL_BIT from syscall number on x32
Dmitry V. Levin [Thu, 1 Dec 2016 01:01:02 +0000 (01:01 +0000)]
syscall_name: clear __X32_SYSCALL_BIT from syscall number on x32

* linux/x86_64/get_scno.c (X32_PERSONALITY_NUMBER): New macro.
* syscall.c (syscall_name) [X32_PERSONALITY_NUMBER && __X32_SYSCALL_BIT]:
Clear __X32_SYSCALL_BIT from scno on x32 personality.

7 years agoPrint syscall names only for defined syscalls
Eugene Syromyatnikov [Wed, 30 Nov 2016 20:43:51 +0000 (23:43 +0300)]
Print syscall names only for defined syscalls

The string literal "__NR_syscall_4294967295" is semantically incorrect
as there is no such constant defined.

* syscall.c (syscall_name): Return NULL if there is no syscall
corresponding to the given number.
* defs.h (syscall_name): Document this behaviour.
* printsiginfo.c (print_si_info): Print syscall name with "__NR_" prefix
only if there is a syscall corresponding to si_syscall number; print
a plain syscall number otherwise.
* tests/ptrace.c (main): Update expected output.

7 years agoaffinity: print cpu set as an array
Eugene Syromyatnikov [Wed, 30 Nov 2016 10:42:13 +0000 (13:42 +0300)]
affinity: print cpu set as an array

* affinity.c: Add comma between elements of cpu set.
* tests/sched_xetaffinity.c (main): Update expected output.

7 years agostatfs: fix printing format of f_fsid field
Eugene Syromyatnikov [Wed, 30 Nov 2016 10:32:47 +0000 (13:32 +0300)]
statfs: fix printing format of f_fsid field

* print_statfs.c: Print f_fsid as a structure containing field "val"
which, in turn, is an array of two elements that used to be printed
as members of f_fsid structure.
* tests/statfs.expected: Update expected output.
* tests/xstatfsx.c (print_statfs): Likewise.

7 years agoswap: always print priority value
Eugene Syromyatnikov [Wed, 30 Nov 2016 07:20:50 +0000 (10:20 +0300)]
swap: always print priority value

* swapon.c (SYS_FUNC(swapon)): Do not check for non-zero the value
of the prio variable in order to print it.
* tests/swap.c (main): Update expected output.

7 years agotests: show pattern line number in match_grep
Elvira Khabirova [Fri, 19 Aug 2016 15:36:06 +0000 (18:36 +0300)]
tests: show pattern line number in match_grep

This makes debugging of failing test  a bit easier.

* tests/init.sh (match_grep): Add the cnt variable, increment it on every
pattern line read, print it as a prefix for non-matched pattern.

7 years agofutex: make output of the val3 argument of the FUTEX_WAKE_OP command more structured
Eugene Syromyatnikov [Sun, 27 Nov 2016 15:07:36 +0000 (18:07 +0300)]
futex: make output of the val3 argument of the FUTEX_WAKE_OP command more structured

It is a number which consists of several xlat values, not a structure.

* futex.c (SYS_FUNC(futex)): Modify output of the val3 argument
of the FUTEX_WAKE_OP futex syscall command.
* tests/futex.c (main): Update expected output.

Co-authored-by: Elvira Khabirova <lineprinter0@gmail.com>
7 years agotests: additional checks for prctl-* tests
Eugene Syromyatnikov [Fri, 18 Nov 2016 17:51:44 +0000 (20:51 +0300)]
tests: additional checks for prctl-* tests

* tests/prctl-pdeathsig.c (main): Additional checks.
* tests/prctl-tsc.c (main): Likewise.
* tests/prctl-pdeathsig.test: Update value of -a argument.
* tests/prctl-tsc.test: Likewise.

7 years agotests: add prctl-pdeathsig.test and prctl-tsc.test
JingPiao Chen [Thu, 17 Nov 2016 13:15:51 +0000 (21:15 +0800)]
tests: add prctl-pdeathsig.test and prctl-tsc.test

* tests/prctl-pdeathsig.c: New file.
* tests/prctl-tsc.c: Likewise.
* tests/prctl-pdeathsig.test: New test.
* tests/prctl-tsc.test: Likewise.
* tests/.gitignore: Add prctl-pdeathsig and prctl-tsc.
* tests/Makefile.am (check_PROGRAMS): Likewise.
(DECODER_TESTS): Add prctl-pdeathsig.test and prctl-tsc.test.

7 years agosyscall: Simplify strip_prefix
Dmitry V. Levin [Wed, 30 Nov 2016 16:50:56 +0000 (16:50 +0000)]
syscall: Simplify strip_prefix

* syscall.c (strip_prefix): Use strncmp instead of strlen+memcmp.

7 years agoutil: fix integer overflow check in string_to_uint_ex
Dmitry V. Levin [Wed, 30 Nov 2016 14:39:02 +0000 (14:39 +0000)]
util: fix integer overflow check in string_to_uint_ex

* util.c (string_to_uint_ex): Fix the check for integer overflow
on systems where LONG_MAX == INT_MAX.

7 years agoCheck dumping of io syscalls when descriptor arguments are sensibly large
Dmitry V. Levin [Wed, 30 Nov 2016 00:56:04 +0000 (00:56 +0000)]
Check dumping of io syscalls when descriptor arguments are sensibly large

* tests/tests.h (pipe_maxfd): New prototype.
* tests/pipe_maxfd.c: New file.
* tests/print_maxfd.c: Likewise.
* tests/.gitignore: Add print_maxfd.
* tests/Makefile.am (check_PROGRAMS): Likewise.
(libtests_a_SOURCES): Add pipe_maxfd.c.
* tests/readv.c (main): Use pipe_maxfd() instead of pipe(),
fds[0] instead of 0, fds[1] instead of 1.
* tests/readv.test: Use print_maxfd to specify dump descriptor numbers.

7 years agodumpio: remove useless check
Dmitry V. Levin [Wed, 30 Nov 2016 00:04:03 +0000 (00:04 +0000)]
dumpio: remove useless check

* syscall.c (dumpio): Remove SEN_printargs check.  Use tcp->s_ent->sen
directly.

7 years agoFix dumping of io syscalls when descriptor argument has unused bits set
Dmitry V. Levin [Tue, 29 Nov 2016 22:56:49 +0000 (22:56 +0000)]
Fix dumping of io syscalls when descriptor argument has unused bits set

* syscall.c (dumpio): Explicitly cast the first argument of syscall
to "int", the same way as the kernel does.
* tests/read-write.c: Include <asm/unistd.h> and "kernel_types.h".
(k_read, k_write): New functions.
(test_dump, main): Use them.

7 years agox32: fix preadv2-pwritev2.test
Dmitry V. Levin [Tue, 29 Nov 2016 19:51:15 +0000 (19:51 +0000)]
x32: fix preadv2-pwritev2.test

* tests/preadv2-pwritev2.c: Include "kernel_types.h".
(main): Use kernel_ulong_t instead of unsigned long as types
of arguments of preadv2 and pwritev2 syscalls.

7 years agox32: wire up preadv2 and pwritev2 syscalls
Dmitry V. Levin [Tue, 29 Nov 2016 09:39:39 +0000 (09:39 +0000)]
x32: wire up preadv2 and pwritev2 syscalls

* linux/x32/syscallent.h [546]: Add preadv2 entry.
[547]: Add pwritev2 entry.

7 years agosignal: fix omission of field names in sigaction printers
Eugene Syromyatnikov [Mon, 28 Nov 2016 19:02:52 +0000 (22:02 +0300)]
signal: fix omission of field names in sigaction printers

* signal.c (decode_old_sigaction, decode_new_sigaction): Add printing
of the field names.
* tests/sigaction.awk: Update expected output.

Co-authored-by: Elvira Khabirova <lineprinter0@gmail.com>
7 years agoMake date output format conform to ISO 8601
Elvira Khabirova [Sat, 13 Aug 2016 17:27:38 +0000 (20:27 +0300)]
Make date output format conform to ISO 8601

* util.c (sprinttime): Make date output conform to ISO 8601.
* tests/utime.c (print_tm): Update expected output.
* tests/xstatx.c (print_time): Likewise.

7 years agotests: rewrite utime.test without relying on libc utime wrapper
Dmitry V. Levin [Tue, 29 Nov 2016 04:08:47 +0000 (04:08 +0000)]
tests: rewrite utime.test without relying on libc utime wrapper

* tests/utime.c (k_utime): New function, a thin wrapper around
syscall(__NR_utime).
(main): Use it instead of utime.
* tests/utime.test: Update.

7 years agoFix meaning of negated sets in fault expressions
Dmitry V. Levin [Tue, 29 Nov 2016 02:11:48 +0000 (02:11 +0000)]
Fix meaning of negated sets in fault expressions

Change the parser of fault expression to follow the POLA:
-e fault=!SET
means that all syscalls except those from SET are subject to fault
injection;
-e fault=!SET1:error=ERRNO1, -e fault=!SET2:error=ERRNO2
means that all syscalls except those from SET2 are subject to fault
injection with error code ERRNO2, and all syscalls from SET2 that are
not in SET1 are subject to fault injection with error code ERRNO1.

* syscall.c (qualify_scno, qualify_syscall_class, qualify_syscall_name):
Handle negated QUAL_FAULT case differently.
* tests/fault_syntax.test: Add checks of negated sets.

7 years agoprint_sigevent: fix field names of sigev_value structure
Eugene Syromyatnikov [Mon, 28 Nov 2016 19:12:12 +0000 (22:12 +0300)]
print_sigevent: fix field names of sigev_value structure

* print_sigevent.c (print_sigevent): Change "int" to "sival_int", "ptr"
to "sival_ptr".
* tests/mq_sendrecv.c (main): Update expected output in accordance with
fixed field names.
* tests/timer_create.c (main): Likewise.

7 years agotests: add more utime checks
Eugene Syromyatnikov [Mon, 28 Nov 2016 09:44:54 +0000 (12:44 +0300)]
tests: add more utime checks

* tests/utime.c: Include <unistd.h> and <asm/unistd.h>.
(main): Add checks for invalid pointers.

7 years agoutime: fix omission of field names in utimbuf structure printing
Eugene Syromyatnikov [Mon, 28 Nov 2016 09:26:13 +0000 (12:26 +0300)]
utime: fix omission of field names in utimbuf structure printing

* utime.c (SYS_FUNC(utime)): Print struct utimbuf as a structure,
not as an array (use curly brackets instead of square ones).
Add field names to the output.
* tests/utime.c (main): Update expected output.

7 years agomem: print mincore output as an array
Eugene Syromyatnikov [Mon, 28 Nov 2016 01:28:53 +0000 (04:28 +0300)]
mem: print mincore output as an array

* mem.c (SYS_FUNC(minore)): Print commas between elements.
* tests/mincore.c (print_mincore): Update expected output in accordance
with syscall decoder formatting change.

7 years agoutil: provide information whether xlat value has been found
Eugene Syromyatnikov [Sun, 27 Nov 2016 15:04:58 +0000 (18:04 +0300)]
util: provide information whether xlat value has been found

This is necessary for the upcoming change in the output format
of the val3 argument of the FUTEX_WAKE_OP futex command.

* defs.h (printxvals, printxval_searchn): Change return type to int.
(printxval64, printxval, printxval_long): Likewise.  Forward the value
returned by printxvals call.
* util.c (printxvals, printxval_searchn): Change return type to int,
return 1 if xlat value has been found, 0 otherwise.

7 years agoutil: check dflt argument for NULL in printxvals
Eugene Syromyatnikov [Sun, 27 Nov 2016 15:03:38 +0000 (18:03 +0300)]
util: check dflt argument for NULL in printxvals

This is necessary for the upcoming change in the output format
of the val3 argument of the FUTEX_WAKE_OP futex command.

* util.c (printxvals): Do not print dflt if it is NULL.

7 years agocapability: fix omission of capability structure field names
Eugene Syromyatnikov [Sun, 27 Nov 2016 00:35:02 +0000 (03:35 +0300)]
capability: fix omission of capability structure field names

* capability.c (print_cap_header, print_cap_data): Add field names
to the output.
* tests/caps.awk: Update test output.

7 years agotests: fix "comparison between signed and unsigned" compilation warnings
Dmitry V. Levin [Mon, 28 Nov 2016 20:55:10 +0000 (20:55 +0000)]
tests: fix "comparison between signed and unsigned" compilation warnings

* tests/readv.c (main): Cast r_len to int.
* tests/preadv2-pwritev2.c (dumpio): Likewise.

7 years agoaarch64, arm, sparc: add comments on fault injection support in kernel
Dmitry V. Levin [Mon, 28 Nov 2016 19:46:50 +0000 (19:46 +0000)]
aarch64, arm, sparc: add comments on fault injection support in kernel

* linux/aarch64/set_scno.c: Note the kernel commit that introduced
NT_ARM_SYSTEM_CALL support.
* linux/arm/set_scno.c: Note the kernel commit that introduced
PTRACE_SET_SYSCALL support.
* linux/sparc/set_scno.c: Note the kernel commit that introduced
reloading from the syscall number register.

7 years agotests: check -C option
Dmitry V. Levin [Mon, 28 Nov 2016 16:57:30 +0000 (16:57 +0000)]
tests: check -C option

* tests/strace-C.expected: New file.
* tests/strace-C.test: New test.
* tests/Makefile.am (MISC_TESTS): Add strace-C.test.
(EXTRA_DIST): Add strace-C.expected.

7 years agotests: check basic options syntax
Dmitry V. Levin [Mon, 28 Nov 2016 12:35:51 +0000 (12:35 +0000)]
tests: check basic options syntax

* tests/options-syntax.test: New file.
* tests/Makefile.am (MISC_TESTS): Add it.

7 years agoFix -r option syntax
Dmitry V. Levin [Mon, 28 Nov 2016 15:03:08 +0000 (15:03 +0000)]
Fix -r option syntax

While -r option implies -t, it should not literally have the effect
of -t option, e.g. -rr should not increment tflag twice.

* strace.c (init): In the getopt loop, do not increment tflag for each
occurrence of -r option.  After the getopt loop, if rflag is set, set
tflag to 1.  Issue a warning that -tt has no effect with -r.

7 years agoPrint timeval pair as an array of timeval entries
Eugene Syromyatnikov [Sun, 27 Nov 2016 20:24:12 +0000 (23:24 +0300)]
Print timeval pair as an array of timeval entries

* print_timeval.c (print_timeval_item): New function.
(print_timeval_pair): Use it as a print_function in print_array call.
* tests/futimesat.c (main): Update to test new behaviour.
* tests/utimes.c (main): Likewise.

7 years agotests: treat tv_sec/tv_usec as signed types in futimesat and utimes tests
Eugene Syromyatnikov [Sun, 27 Nov 2016 15:46:31 +0000 (18:46 +0300)]
tests: treat tv_sec/tv_usec as signed types in futimesat and utimes tests

* tests/futimesat.c: Print tv_sec and tv_usec fields as signed types.
* tests/utimes.c: Likewise.

7 years agoalpha: print struct timeval32 consistently
Dmitry V. Levin [Mon, 28 Nov 2016 04:21:11 +0000 (04:21 +0000)]
alpha: print struct timeval32 consistently

* defs.h [ALPHA] (timeval32_t): New type.
[ALPHA] (print_timeval32_t): New prototype.
* print_timeval.c [ALPHA] (timeval32_t): Remove.
[ALPHA] (print_timeval32_t): Remove static keyword.
* printrusage.c [ALPHA] (printrusage32): Use timeval32_t instead
of local definition of struct timeval32.  Use print_timeval32_t.

7 years agoPrint struct timeval consistently
Dmitry V. Levin [Mon, 28 Nov 2016 04:07:37 +0000 (04:07 +0000)]
Print struct timeval consistently

Use print_struct_timeval interface to print struct timeval.

* print_timeval.c (print_struct_timeval): New mpers printer.
* print_timex.c (print_timex): Use it.
* printrusage.c (printrusage): Likewise.
* v4l2.c (print_v4l2_buffer): Likewise.
* tests/getrusage.c (main): Print tv_sec and tv_usec fields as signed.
* tests/waitid.c (sprint_rusage): Likewise.

Suggested-by: Eugene Syromyatnikov <evgsyr@gmail.com>
7 years agoSplit print_time.c
Dmitry V. Levin [Mon, 28 Nov 2016 02:45:13 +0000 (02:45 +0000)]
Split print_time.c

After commit v4.14-136-g151d1d1 that removed the last object common
for timespec and timeval parsers there is no need to keep them all
in a single file.

* print_timespec.c: New file.
* print_timeval.c: Likewise.
* Makefile.am (strace_SOURCES): Add them.
* print_time.c: Move all timespec related code to print_timespec.c.
Move all timeval related code to print_timeval.c.

7 years agotests: check decoding of threads when a non-leader thread invokes execve
Dmitry V. Levin [Mon, 28 Nov 2016 00:31:59 +0000 (00:31 +0000)]
tests: check decoding of threads when a non-leader thread invokes execve

* tests/threads-execve.c: New file.
* tests/threads-execve.test: New test.
* tests/.gitignore: Add threads-execve.
* tests/Makefile.am (check_PROGRAMS): Likewise.
(threads_execve_LDADD): New variable.
(MISC_TESTS): Add threads-execve.test.

7 years agotests: check decoding of fault injected exit_group syscall
Dmitry V. Levin [Sun, 27 Nov 2016 00:02:18 +0000 (00:02 +0000)]
tests: check decoding of fault injected exit_group syscall

* tests/answer.c: New file.
* tests/fault_injection-exit_group.expected: Likewise.
* tests/fault_injection-exit_group.test: New test.
* tests/.gitignore: Add answer.
* tests/Makefile.am (check_PROGRAMS): Likewise.
(DECODER_TESTS): Add fault_injection-exit_group.test.
(EXTRA_DIST): Add fault_injection-exit_group.expected.

7 years agoSet PTRACE_O_TRACEEXIT option and handle PTRACE_EVENT_EXIT events
Dmitry V. Levin [Sat, 26 Nov 2016 23:45:05 +0000 (23:45 +0000)]
Set PTRACE_O_TRACEEXIT option and handle PTRACE_EVENT_EXIT events

Do not assume that some syscalls do not generate syscall-exit-stops.
When syscalls fail for any reason they may generate syscall-exit-stops.

The solution is to wait for an actual exit reported by PTRACE_EVENT_EXIT
and print the end of unfinished exiting syscall properly.

* exit.c: Remove.
* Makefile.am (strace_SOURCES): Remove exit.c.
* linux/dummy.h (sys_exit): Alias to printargs_d.
* strace.c (ptrace_setoptions): Add PTRACE_O_TRACEEXIT bit.
(print_event_exit): New function.
(trace): Use it in case of PTRACE_EVENT_EXIT.
* syscall.c (trace_syscall_entering): Remove special handling
of SEN_exit.

7 years agoChange printargs to return RVAL_DECODED
Dmitry V. Levin [Sun, 27 Nov 2016 14:19:09 +0000 (14:19 +0000)]
Change printargs to return RVAL_DECODED

As printargs is invoked as a generic syscall decoder only and
it is not supposed to print anything on exiting, change printargs
to return RVAL_DECODED so it would not be called on exiting at all.

* util.c (printargs): Print args unconditionally, return RVAL_DECODED.

7 years agoEnhance error diagnostics of exit/exit_group decoder
Dmitry V. Levin [Sat, 26 Nov 2016 20:51:52 +0000 (20:51 +0000)]
Enhance error diagnostics of exit/exit_group decoder

* exit.c (SYS_FUNC(exit)): Print the name of syscall that has returned.

7 years agoRestrain from fault injection while the trace executes strace code
Dmitry V. Levin [Sat, 26 Nov 2016 18:30:26 +0000 (18:30 +0000)]
Restrain from fault injection while the trace executes strace code

There is little use in injections of faults into syscalls made by strace.

* syscall.c (trace_syscall_entering): Clear QUAL_FAULT bit from
tcp->qual_flg when tcp->flags has TCB_HIDE_LOG bit set.

7 years agoMove two global flags to tracee scope
Dmitry V. Levin [Sat, 26 Nov 2016 18:08:01 +0000 (18:08 +0000)]
Move two global flags to tracee scope

A simultaneous use of -p option and tracing of a command available
since commit v4.11-183-gfa8c286 introduces a race condition because
the flags whether the first exec has happened are global.

Fix the race by moving hide_log_until_execve and hide_log_until_execve
global variables to TCB_HIDE_LOG and TCB_SKIP_DETACH_ON_FIRST_EXEC bits
in struct tcb.flags, correspondingly.

* defs.h (TCB_HIDE_LOG, TCB_SKIP_DETACH_ON_FIRST_EXEC, hide_log):
New macros.
(hide_log_until_execve): Remove prototype.
* strace.c (skip_one_b_execve, hide_log_until_execve): Remove.
(startup_child): Set TCB_HIDE_LOG and TCB_SKIP_DETACH_ON_FIRST_EXEC bits
in the allocated tcb structure.
(init): Remove initialization of hide_log_until_execve and
skip_one_b_execve.
(print_stopped): Use hide_log() instead of hide_log_until_execve.
(trace): Check and clear TCB_SKIP_DETACH_ON_FIRST_EXEC flag instead
of skip_one_b_execve.
* syscall.c (trace_syscall_entering): Clear TCB_HIDE_LOG flag instead of
hide_log_until_execve.
(trace_syscall_entering, trace_syscall_exiting): Check hide_log()
instead of hide_log_until_execve.

7 years agoTreat execveat as an execve family syscall
Dmitry V. Levin [Sat, 26 Nov 2016 16:08:10 +0000 (16:08 +0000)]
Treat execveat as an execve family syscall

* syscall.c (trace_syscall_entering): Clear hide_log_until_execve flag
also when SEN_execveat is encountered.

7 years agoChange parser of fault expressions to conform the documentation
Dmitry V. Levin [Fri, 25 Nov 2016 23:47:32 +0000 (23:47 +0000)]
Change parser of fault expressions to conform the documentation

Make expressions like fault=SYSCALL1,SYSCALL2:error=EPERM work
as documented, i.e. fail both SYSCALL1 and SYSCALL2 with EPERM.

* syscall.c (parse_fault_expression): Remove const qualifier from
"name" and "token: variables, as well as from the return value.
(qual_fault): Remove const qualifier from "name" variables.
Split "name" into comma delimited tokens and pass each token
to individual qual_syscall_ex call.
(qualify): For QUAL_FAULT options, pass the whole option value
to their qualify methods without prior splitting into comma
delimited tokens.
* tests/fault_injection.test: Check it.
* tests/fault_syntax.test: Check empty syscall sets.

7 years agoSimplify parse_fault_expression
Dmitry V. Levin [Thu, 24 Nov 2016 21:35:05 +0000 (21:35 +0000)]
Simplify parse_fault_expression

* syscall.c (parse_fault_expression): Rewrite iterator over strtok_r
in a more concise way.

7 years agoFix omission of field names in printers of timeval structure
Eugene Syromyatnikov [Thu, 24 Nov 2016 21:48:00 +0000 (00:48 +0300)]
Fix omission of field names in printers of timeval structure

* print_time.c (time_fmt): Remove.
(timeval_fmt): New constant.
(print_timeval_t, sprint_timeval, print_timeval32_t, sprint_timeval32):
Use it instead of time_fmt.
* print_timex.c (print_timex): Print field names of the time field.
* printrusage.c (printrusage, printrusage32): Print field names
of ru_utime and ru_stime fields.
* tests/adjtimex.c (main): Add field names to expected output.
* tests/clock_nanosleep.c (main): Likewise.
* tests/futimesat.c (main): Likewise.
* tests/getrusage.c (main): Likewise.
* tests/nanosleep.c (main): Likewise.
* tests/oldselect.expected: Likewise.
* tests/utimes.c (main): Likewise.
* tests/wait4.c (sprint_rusage): Likewise.
* tests/waitid.c (sprint_rusage): Likewise.
* tests/xetitimer.c (main): Likewise.
* tests/xettimeofday.c (main): Likewise.
* tests/xselect.c (main): Likewise.

7 years agoFix omission of field names in printers of timespec structure
Eugene Syromyatnikov [Thu, 24 Nov 2016 21:48:00 +0000 (00:48 +0300)]
Fix omission of field names in printers of timespec structure

* print_time.c (timespec_fmt): New constant.
(print_timespec_t, sprint_timespec): Use it instead of time_fmt.
* tests/aio.c: Add field names to expected output.
* tests/clock_nanosleep.c (main): Likewise.
* tests/clock_xettime.c (main): Likewise.
* tests/futex.c (main): Likewise.
* tests/mq_sendrecv.c (do_send, do_recv): Likewise.
* tests/nanosleep.c (main): Likewise.
* tests/ppoll-v.expected: Likewise.
* tests/ppoll.expected: Likewise.
* tests/pselect6.c (main): Likewise.
* tests/recvmmsg-timeout.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/strace-T.expected: Likewise.
* tests/timer_xettime.c (main): Likewise.
* tests/timerfd_xettime.c (main): Likewise.
* tests/utimensat.c (print_ts): Likewise.

7 years agotests: robustify prctl-name.test against unrelated prctl invocations
Dmitry V. Levin [Wed, 23 Nov 2016 00:38:03 +0000 (00:38 +0000)]
tests: robustify prctl-name.test against unrelated prctl invocations

* tests/prctl-name.test: Filter out unrelated PR_GET_* prctl calls.

7 years agotests: cleanup prctl-name.c
Dmitry V. Levin [Tue, 22 Nov 2016 01:46:07 +0000 (01:46 +0000)]
tests: cleanup prctl-name.c

* tests/prctl-name.c (main): Remove "len" variable, rename "len1"
to "len".  Remove "name1" variable, use "name" instead.

7 years agoMove KVM_* ioctl entries from ioctls_inc*.h to ioctls_arch*.h
Dmitry V. Levin [Mon, 21 Nov 2016 19:44:14 +0000 (19:44 +0000)]
Move KVM_* ioctl entries from ioctls_inc*.h to ioctls_arch*.h

* linux/32/ioctls_inc_align32.h: Regenerate.
* linux/32/ioctls_inc_align64.h: Likewise.
* linux/64/ioctls_inc.h: Likewise.
* linux/arm/ioctls_arch0.h: Likewise.
* linux/i386/ioctls_arch0.h: Likewise.
* linux/powerpc/ioctls_arch0.h: Likewise.
* linux/s390/ioctls_arch0.h: Likewise.
* linux/s390x/ioctls_arch0.h: Likewise.
* linux/x32/ioctls_inc0.h: Likewise.
* linux/x86_64/ioctls_arch0.h: Likewise.

7 years agomaint: add more workarounds for alpha and powerpc
Dmitry V. Levin [Tue, 22 Nov 2016 00:20:49 +0000 (00:20 +0000)]
maint: add more workarounds for alpha and powerpc

* maint/ioctls_sym.sh: Skip asm/core_*.h.  Filter out from
asm-generic/ioctls.h those macros that are defined using unavailable
struct termios2 on alpha and powerpc.

7 years agoAdd ioctl definitions for 16-bit alignment
Andreas Schwab [Sat, 12 Nov 2016 14:58:26 +0000 (15:58 +0100)]
Add ioctl definitions for 16-bit alignment

* Makefile.am (EXTRA_DIST): Add linux/32/ioctls_inc_align16.h.
* linux/32/ioctls_inc_align16.h: New file.
* linux/32/ioctls_inc.h [M68K]: Include it.

7 years agomaint: move KVM_* constants from ioctls_inc.h to ioctls_arch.h
Dmitry V. Levin [Mon, 21 Nov 2016 16:23:14 +0000 (16:23 +0000)]
maint: move KVM_* constants from ioctls_inc.h to ioctls_arch.h

* maint/ioctls_gen.sh: Place constants defined in linux/kvm.h
into ioctls_arch.h instead of ioctls_inc.h.

7 years agomaint: harmonize use of ioctls_sym.sh
Dmitry V. Levin [Mon, 21 Nov 2016 16:14:03 +0000 (16:14 +0000)]
maint: harmonize use of ioctls_sym.sh

* maint/ioctls_gen.sh: Consistently specify INCLUDES for all
ioctls_sym.sh invocations.  Use $mydir to specify ioctls_sym.sh
location.

7 years agomaint: rework workarounds for linux/kvm.h
Dmitry V. Levin [Mon, 21 Nov 2016 16:08:08 +0000 (16:08 +0000)]
maint: rework workarounds for linux/kvm.h

* maint/ioctls_sym.sh: Remove pre-include linux/kvm.h workarounds.
Skip linux/kvm.h on those architectures that have no asm/kvm.h file.
Introduce post-process workarounds, add post-process workarounds
for linux/kvm.h.

7 years agoRestructure strace.1
Elvira Khabirova [Sun, 20 Nov 2016 00:17:10 +0000 (03:17 +0300)]
Restructure strace.1

* strace.1 (OPTIONS): Add subsections.
(PROBLEMS): Rename to REPORTING BUGS.
(SEE ALSO): Move to the bottom.

7 years agoprctl: implement decoding of PR_SET_FP_MODE and PR_GET_FP_MODE options
Eugene Syromyatnikov [Sat, 19 Nov 2016 20:10:01 +0000 (23:10 +0300)]
prctl: implement decoding of PR_SET_FP_MODE and PR_GET_FP_MODE options

* xlat/pr_fp_mode.in: New file.
* prctl.c: Include "xlat/pr_fp_mode.h".
(SYS_FUNC(prctl)): Add handling for PR_SET_FP_MODE and PR_GET_FP_MODE
options.

7 years agoprctl: add braces for conditional blocks with else/else-if blocks having braces
Eugene Syromyatnikov [Fri, 18 Nov 2016 18:00:02 +0000 (21:00 +0300)]
prctl: add braces for conditional blocks with else/else-if blocks having braces

7 years agoprctl: cast arg2 to int in PR_SET_PTRACER handler
Eugene Syromyatnikov [Fri, 18 Nov 2016 17:36:21 +0000 (20:36 +0300)]
prctl: cast arg2 to int in PR_SET_PTRACER handler

Kernel code does this when compares it with -1 (apart from comparing it with
PR_SET_PTRACER_ANY, which is also -1) in security/yama/yama_lsm.c.

* prctl.c (SYS_FUNC(prctl)) <PR_SET_PTRACER>: Cast arg2 to int before
comparing it with -1.

7 years agoprctl: use getarg_ull for option value retrieval
Eugene Syromyatnikov [Fri, 18 Nov 2016 17:25:13 +0000 (20:25 +0300)]
prctl: use getarg_ull for option value retrieval

The prctl syscall does not use compat on x32/n32, so argument types
are in fact kernel_ulong_t.

* prctl.c (print_prctl_args): Use getarg_ull, print as "%#llx" instead
of "%#lx".
(SYS_FUNC(prctl)): Use getarg_ull to store call arguments in arg2, arg3,
arg4, arg5 variables of type unsigned long long.  Use them in printing
routines.
(SYS_FUNC(arch_prctl)): Use getarg_ull to store call argument in addr
variable of type unsigned long long.  Print it as "%#llx" instead of
"%#lx".