| 2017-02-14 Dmitry V. Levin <ldv@altlinux.org> |
| |
| Prepare for 4.16 release. |
| * NEWS: Update for 4.16 release. |
| |
| 2017-02-13 Dmitry V. Levin <ldv@altlinux.org> |
| |
| .mailmap: add addresses of JingPiao Chen. |
| * .mailmap: Add both addresses of JingPiao Chen here to avoid |
| duplications in CREDITS file. |
| |
| 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. |
| |
| 2017-02-12 Dmitry V. Levin <ldv@altlinux.org> |
| |
| 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". |
| |
| 2017-02-12 Dmitry V. Levin <ldv@altlinux.org> |
| |
| 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. |
| |
| 2017-02-11 Dmitry V. Levin <ldv@altlinux.org> |
| |
| 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. |
| |
| 2017-02-10 Dmitry V. Levin <ldv@altlinux.org> |
| |
| 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. |
| |
| 2017-02-09 Dmitry V. Levin <ldv@altlinux.org> |
| |
| 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. |
| |
| 2017-02-09 Dmitry V. Levin <ldv@altlinux.org> |
| |
| 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. |
| |
| tests: simplify qual_inject-signal.test. |
| * tests/qual_inject-signal.test: Use $NAME instead of qual_inject-signal. |
| |
| 2017-02-09 Dmitry V. Levin <ldv@altlinux.org> |
| |
| 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. |
| |
| 2017-02-09 Dmitry V. Levin <ldv@altlinux.org> |
| |
| tests: check case-insensitive symbolic signal match. |
| * tests/qual_signal.test: Test case-insensitive symbolic signal match. |
| |
| 2017-02-09 Eugene Syromyatnikov <evgsyr@gmail.com> |
| |
| Update NEWS. |
| |
| 2017-02-08 Dmitry V. Levin <ldv@altlinux.org> |
| |
| Update NEWS. |
| |
| 2017-02-08 Dmitry V. Levin <ldv@altlinux.org> |
| |
| strace.spec.in: fix dist version checks. |
| * strace.spec.in: Fix libunwind availability check. |
| |
| Reported-by: Eugene Syromyatnikov <evgsyr@gmail.com> |
| |
| 2017-02-08 Dmitry V. Levin <ldv@altlinux.org> |
| |
| 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. |
| |
| 2017-02-08 Dmitry V. Levin <ldv@altlinux.org> |
| |
| 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") |
| |
| 2017-02-08 Dmitry V. Levin <ldv@altlinux.org> |
| |
| 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. |
| |
| 2017-02-08 Dmitry V. Levin <ldv@altlinux.org> |
| |
| 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. |
| |
| 2017-02-08 Dmitry V. Levin <ldv@altlinux.org> |
| |
| 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. |
| |
| 2017-02-08 Dmitry V. Levin <ldv@altlinux.org> |
| |
| 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. |
| |
| 2017-02-07 Dmitry V. Levin <ldv@altlinux.org> |
| |
| 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. |
| |
| 2017-02-07 Dmitry V. Levin <ldv@altlinux.org> |
| |
| 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. |
| |
| 2017-02-07 Dmitry V. Levin <ldv@altlinux.org> |
| |
| powerpc, powerpc64: wire up new syscalls. |
| * linux/powerpc/syscallent.h [382]: Add kexec_file_load entry. |
| * linux/powerpc64/syscallent.h [382]: Likewise. |
| |
| microblaze: wire up new syscalls. |
| * linux/microblaze/syscallent.h [392..397]: New entries. |
| |
| avr32: wire up new syscalls. |
| * linux/avr32/syscallent.h [328..330]: New entries. |
| |
| 2017-02-06 Dmitry V. Levin <ldv@altlinux.org> |
| |
| Update IPV6_* constants. |
| * xlat/sockipv6options.in: Add IPV6_RECVFRAGSIZE introduced |
| by linux kernel commit v4.10-rc1~202^2~340^2~1. |
| |
| Update IP_* constants. |
| * xlat/sockipoptions.in: Add IP_RECVFRAGSIZE introduced |
| by linux kernel commit v4.10-rc1~202^2~340^2~2. |
| |
| 2017-02-06 Jacob Goense <dugo@xs4all.nl> |
| |
| 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 |
| |
| 2017-02-04 Gleb Fotengauer-Malinovskiy <glebfm@altlinux.org> |
| |
| 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. |
| |
| maint: update for linux 4.10. |
| * maint/ioctls_sym.sh: Update workaround for linux/if_pppox.h file. |
| |
| maint: add workaround for m68k. |
| * maint/ioctls_sym.sh: Skip asm/amigayle.h. |
| |
| 2017-01-31 Dmitry V. Levin <ldv@altlinux.org> |
| |
| 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. |
| |
| 2017-01-29 Dmitry V. Levin <ldv@altlinux.org> |
| |
| 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. |
| |
| bpf: move common code to a separate function. |
| * bpf.c (bpf_prog_attach_detach): New function. |
| (bpf_prog_attach, bpf_prog_detach): Use it. |
| |
| 2017-01-29 Quentin Monnet <quentin.monnet@6wind.com> |
| |
| 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. |
| |
| 2017-01-28 Elvira Khabirova <lineprinter0@gmail.com> |
| |
| 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. |
| |
| 2017-01-28 Elvira Khabirova <lineprinter0@gmail.com> |
| |
| 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 |
| |
| 2017-01-26 Dmitry V. Levin <ldv@altlinux.org> |
| |
| 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. |
| |
| 2017-01-20 Elvira Khabirova <lineprinter0@gmail.com> |
| |
| .gitignore: add missing files that should be ignored. |
| * .gitignore: Add /ioctl_iocdef.[ih]. |
| |
| Fixes: 5679fad ("ioctlsort: get ioctl definitions from host, not build") |
| |
| 2017-01-20 Andre McCurdy <armccurdy@gmail.com> |
| |
| 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>. |
| |
| 2017-01-20 JingPiao Chen <chenjingpiao@gmail.com> |
| |
| 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. |
| |
| 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. |
| |
| strace.1: fix formatting. |
| * strace.1: Remove misplaced .TP macros. |
| |
| 2017-01-13 Dmitry V. Levin <ldv@altlinux.org> |
| |
| 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. |
| |
| 2017-01-13 Dmitry V. Levin <ldv@altlinux.org> |
| |
| 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>. |
| |
| 2017-01-13 Dmitry V. Levin <ldv@altlinux.org> |
| |
| 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. |
| |
| 2017-01-13 Dmitry V. Levin <ldv@altlinux.org> |
| |
| 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. |
| |
| 2017-01-13 Alexey Neyman <stilor@att.net> |
| |
| 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>. |
| |
| 2017-01-13 Dmitry V. Levin <ldv@altlinux.org> |
| |
| 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. |
| |
| 2017-01-12 Dmitry V. Levin <ldv@altlinux.org> |
| |
| 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. |
| |
| tests: fix typo in tests/xstatx.c. |
| * tests/xstatx.c [!IS_FSTAT]: Define IS_FSTAT instead of IS_STAT. |
| |
| 2017-01-12 JingPiao Chen <chenjingpiao@gmail.com> |
| |
| tests: fix typo in mlock.c. |
| * tests/mlock.c [!(__NR_mlock && __NR_munlock)]: Fix spelling |
| of SKIP_MAIN_UNDEFINED. |
| |
| 2017-01-12 JingPiao Chen <chenjingpiao@gmail.com> |
| |
| 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. |
| |
| 2017-01-11 Dmitry V. Levin <ldv@altlinux.org> |
| |
| 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> |
| |
| 2017-01-10 Dmitry V. Levin <ldv@altlinux.org> |
| |
| 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. |
| |
| 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. |
| |
| scsi: prepare for decoding of other SG_* ioctl commands. |
| * scsi.c (scsi_ioctl): Introduce a switch statement. |
| |
| 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. |
| |
| 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. |
| |
| 2017-01-10 Dmitry V. Levin <ldv@altlinux.org> |
| |
| 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. |
| |
| 2017-01-10 Dmitry V. Levin <ldv@altlinux.org> |
| |
| 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. |
| |
| 2017-01-10 Dmitry V. Levin <ldv@altlinux.org> |
| |
| 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. |
| |
| 2017-01-10 Dmitry V. Levin <ldv@altlinux.org> |
| |
| 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. |
| |
| 2017-01-10 Dmitry V. Levin <ldv@altlinux.org> |
| |
| 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. |
| |
| 2017-01-10 Dmitry V. Levin <ldv@altlinux.org> |
| |
| 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. |
| |
| 2017-01-08 Dmitry V. Levin <ldv@altlinux.org> |
| |
| 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. |
| |
| sg_io_v3: print sg_io_hdr.duration field as unsigned integer. |
| * sg_io_v3.c (decode_response): Print duration field using %u format. |
| |
| sg_io_v3: print msg_status field. |
| * sg_io_v3.c (decode_response): Print msg_status field. |
| |
| 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. |
| |
| 2017-01-08 Dmitry V. Levin <ldv@altlinux.org> |
| |
| 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. |
| |
| 2017-01-08 Dmitry V. Levin <ldv@altlinux.org> |
| |
| 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. |
| |
| 2017-01-08 Dmitry V. Levin <ldv@altlinux.org> |
| |
| sg_io_v4: print request_tag and generated_tag fields in hex. |
| The tradition is to print scsi tags in a hexadecimal form. |
| |
| * sg_io_v4.c (decode_request): Print request_tag field |
| using ("%#" PRI__x64) format string. |
| (decode_response): Print generated_tag field using ("%#" PRI__x64) |
| format string. |
| |
| 2017-01-08 Dmitry V. Levin <ldv@altlinux.org> |
| |
| sg_io_v4: print usr_ptr field in a hexadecimal form. |
| As the nature of this field is pointer-like, print it |
| in a hexadecimal form. |
| |
| * sg_io_v4.c (decode_request): Print usr_ptr field |
| using ("%#" PRI__x64) format string. |
| |
| 2017-01-08 Dmitry V. Levin <ldv@altlinux.org> |
| |
| sg_io_v4: do not print spare_in and spare_out fields. |
| As the kernel does not touch these fields, there is no use |
| to print them. |
| |
| * sg_io_v4.c (decode_request): Do not print spare_in field. |
| (decode_response): Do not print spare_out field. |
| |
| 2017-01-08 Dmitry V. Levin <ldv@altlinux.org> |
| |
| sg_io: decode struct sg_io_hdr.info and struct sg_io_v4.info. |
| Print struct sg_io_hdr.info and struct sg_io_v4.info using printflags. |
| |
| * xlat/sg_io_info.in: New file. |
| * defs.h (sg_io_info): New xlat prototype. |
| * sg_io_v3.c: Include "xlat/sg_io_info.h". |
| (decode_response): Print struct_sg_io_hdr.info using printflags. |
| * sg_io_v4.c: (decode_response): Print struct sg_io_v4.info |
| using printflags. |
| |
| 2017-01-08 Dmitry V. Levin <ldv@altlinux.org> |
| |
| sg_io: decode struct sg_io_hdr.flags and struct sg_io_v4.flags. |
| Print struct sg_io_hdr.flags and struct sg_io_v4.flags using printflags. |
| |
| * xlat/sg_io_flags.in: New file. |
| * sg_io_v3.c: Include "xlat/sg_io_flags.h". |
| (decode_request): Print struct_sg_io_hdr.flags using printflags. |
| * xlat/bsg_flags.in: New file. |
| * sg_io_v4.c: Include "xlat/bsg_flags.h". |
| (decode_request): Print struct sg_io_v4.flags using printflags. |
| |
| 2017-01-08 Dmitry V. Levin <ldv@altlinux.org> |
| |
| Mpersify struct sg_io_hdr. |
| struct sg_io_hdr contains pointers and therefore has to be mpersified. |
| |
| * defs.h (decode_sg_io_v3): Remove prototype. |
| * sg_io_v3.c (struct_sg_io_hdr): Typedef to struct sg_io_hdr. |
| Mpersify it. |
| (decode_sg_io_v3): Wrap into MPERS_PRINTER_DECL. |
| |
| 2017-01-08 Dmitry V. Levin <ldv@altlinux.org> |
| |
| Split scsi.c. |
| Move decoders of SG_IO v3 and v4 APIs into separate files, |
| compile generic SG_IO decoder unconditionally. |
| |
| * sg_io_v3.c: New file. |
| * sg_io_v4.c: Likewise. |
| * Makefile.am (strace_SOURCES): Add them. |
| * defs.h (decode_sg_io_v3, decode_sg_io_v4): New prototypes. |
| * ioctl.c (ioctl_decode): Remove [HAVE_SCSI_SG_H] condition. |
| * scsi.c: (print_sg_io_res): Remove. |
| (print_sg_io_req): Rename to decode_sg_io, replace print_sg_io_v3_req |
| with decode_sg_io_v3, replace print_sg_io_v4_req with decode_sg_io_v4, |
| compile uncoditionally. |
| (scsi_ioctl): Replace print_sg_io_req and print_sg_io_res |
| with decode_sg_io, compile uncoditionally. |
| Move [HAVE_SCSI_SG_H] code to sg_io_v3.c. |
| Move [HAVE_LINUX_BSG_H] code to sg_io_v4.c. |
| |
| 2017-01-07 Dmitry V. Levin <ldv@altlinux.org> |
| |
| scsi: detect and print changes of interface id. |
| * scsi.c (print_sg_io_v3_res): Detect and print changes |
| of struct sg_io_hdr.interface_id field between entering and exiting |
| syscall. |
| (print_sg_io_v4_res): Detect and print changes of struct sg_io_v4.guard |
| field between entering and exiting syscall. |
| |
| scsi: print field names of all fields being printed. |
| * scsi.c (print_sg_io_v3_req): Always print the name |
| of struct sg_io_hdr.interface_id field. |
| (print_sg_io_v4_req): Always print the name of struct sg_io_v4.guard |
| field. |
| (print_sg_io_req): Print unknown interface id as an integer. |
| (scsi_ioctl): Save interface id on entering syscall and use it |
| on exiting syscall. |
| |
| scsi: print struct sg_io_hdr.dxfer_direction field name. |
| * scsi.c (print_sg_io_v3_req): Print struct sg_io_hdr.dxfer_direction |
| field name. |
| |
| scsi: print "protocol" and "subprotocol" field names of struct sg_io_v4. |
| * scsi.c (print_sg_io_v4_req): Print field names |
| of struct sg_io_v4.protocol and struct sg_io_v4.subprotocol. |
| |
| 2017-01-07 Dmitry V. Levin <ldv@altlinux.org> |
| |
| Print hexadecimal integer in error diagnostics using %#x. |
| The formerly used format string %x led to misleading output as there was |
| no clear indication sometimes whether the printed integer was decimal or |
| hexadecimal. |
| |
| * aio.c (startup_child, test_ptrace_seize): Print status |
| using %#x format specifier instead of %x. |
| |
| 2017-01-07 Dmitry V. Levin <ldv@altlinux.org> |
| |
| aio: print hexadecimal integer using %#x. |
| The formerly used format string %x led to misleading output as there was |
| no clear indication sometimes whether the printed integer was decimal or |
| hexadecimal. |
| |
| * aio.c (print_common_flags): Print struct iocb.aio_flags using %#x |
| format specifier instead of %x. |
| * tests/aio.c (main): Likewise. |
| |
| 2017-01-06 Dmitry V. Levin <ldv@altlinux.org> |
| |
| scsi: rewrite print_sg_io_buffer using printstr_ex(QUOTE_FORCE_HEX) |
| As printstr_ex has got QUOTE_FORCE_HEX flag support, there is no need |
| to implement it manually any longer. |
| |
| * scsi.c (print_uchar): Remove. |
| (print_sg_io_buffer): Rewrite using printstr_ex(QUOTE_FORCE_HEX). |
| |
| 2017-01-06 Eugene Syromyatnikov <evgsyr@gmail.com> |
| |
| getrandom: print string as hex-escaped. |
| Since there is no reason to interpret the value returned by getrandom as |
| ASCII string, it makes sense to always print it as a hex-escaped string. |
| |
| * getrandom.c (SYS_FUNC(getrandom)): Use printstr_ex instead |
| of printstrn, set QUOTE_FORCE_HEX in user_style parameter in order |
| to force hex-escaped string formatting. |
| * tests/getrandom.test: Remove no longer needed -xx flag as the string |
| is always printed in hexadecimal format now. |
| |
| Suggested-by: JingPiao Chen <chenjingpiao@gmail.com> |
| |
| 2017-01-06 Eugene Syromyatnikov <evgsyr@gmail.com> |
| |
| util: add support for forcing printing string as hex-escaped. |
| This could be useful in cases when some binary data should not be |
| interpreted as an ASCII string, but rather as an array of byte values. |
| |
| * defs.h (QUOTE_FORCE_HEX): New macro constant. |
| * util.c (quote_string): Enable use_hex when QUOTE_FORCE_HEX is set |
| in user_style parameter. |
| |
| 2017-01-06 Eugene Syromyatnikov <evgsyr@gmail.com> |
| |
| term: do not abort decoding in case of non-verbose output. |
| The case of unset verbose is handled by umoven_or_printaddr, moreover, |
| exiting at this point is plain wrong and leads to last argument not |
| being printed while it should be. |
| |
| * term.c (decode_termios, decode_termio, decode_winsize, decode_ttysize, |
| decode_modem_flags): Do not check verbose flags explicitly and do not |
| exit early if it is not set. |
| |
| 2017-01-05 Dmitry V. Levin <ldv@altlinux.org> |
| |
| tests: skip fault injection tests on hppa if the kernel is too old. |
| * tests/fault_injection.sh: Add the minimal kernel version for hppa. |
| |
| 2017-01-05 Dmitry V. Levin <ldv@altlinux.org> |
| |
| tests: skip readahead.test on MIPS n64 when built with glibc < 2.25. |
| Due to a bug in glibc readahead syscall wrapper on MIPS n64, |
| this wrapper cannot be used in readahead.test. |
| |
| * tests/readahead.c [HAVE_READAHEAD && LINUX_MIPSN64 && glibc < 2.25]: |
| Undefine HAVE_READAHEAD. |
| |
| Reported-by: James Cowgill <james410@cowgill.org.uk> |
| |
| 2017-01-05 Dmitry V. Levin <ldv@altlinux.org> |
| |
| tests: replace init_magic with fill_memory. |
| Use the same fill_memory/fill_memory_ex interface in all affected tests. |
| |
| * tests/ioctl_block.c (init_magic): Remove. |
| (main): Replace init_magic with fill_memory. |
| * tests/ioctl_evdev.c: Likewise. |
| * tests/ioctl_v4l2.c: Likewise. |
| * tests/ioctl_mtd.c (magic, init_magic): Remove. |
| (main): Replace init_magic with fill_memory. |
| * tests/ioctl_rtc.c: Likewise. |
| |
| 2017-01-05 Dmitry V. Levin <ldv@altlinux.org> |
| |
| tests: rewrite ioctl_v4l2 test without reliance on init_magic. |
| * tests/ioctl_v4l2.c (cc0, cc1, cc2, cc3, fourcc): New macros. |
| (main): Use them. Rewrite expected output without assumptions |
| on any particular magic data. |
| |
| 2017-01-04 Dmitry V. Levin <ldv@altlinux.org> |
| |
| tests: remove redundant casts in fill_memory{,_ex} invocations. |
| * tests/ioctl_loop.c (main): Remove redundant casts of fill_memory |
| first argument. |
| * tests/kexec_load.c (main): Likewise. |
| * tests/perf_event_open.c (main): Likewise. |
| * tests/quotactl.c (main): Likewise. |
| * tests/mq_sendrecv.c (main): Remove redundant casts of fill_memory_ex |
| first argument. |
| * tests/quotactl-xfs.c (main): Likewise. |
| |
| 2017-01-04 Dmitry V. Levin <ldv@altlinux.org> |
| |
| tests: change the type of fill_memory{,_ex} first argument to void * |
| As these functions behave like memset, it's more convenient to have |
| the first argument of type void * like memset. |
| |
| * tests/fill_memory.c (fill_memory, fill_memory_ex): Change the type |
| of first argument from "char *" to "void *". |
| * tests/tests.h (fill_memory, fill_memory_ex): Likewise. |
| |
| 2017-01-04 Eugene Syromyatnikov <evgsyr@gmail.com> |
| |
| tests: check non-verbose decoding of LOOP_* ioctls. |
| * tests/ioctl_loop-nv.c: New file. |
| * tests/ioctl_loop-nv.test: New test. |
| * tests/ioctl_loop.c [!ABBREV] (ABBREV): Define to 0. |
| (print_loop_info, print_loop_info64): Handle [ABBREV != 0] case. |
| * tests/.gitignore: Add ioctl_loop-nv. |
| * tests/Makefile.am (check_PROGRAMS): Likewise. |
| |
| tests: add more checks of LOOP_* ioctls decoding. |
| * tests/ioctl_loop.c: Include <linux/ioctl.h>. |
| (magic, lmagic): Move static constants ... |
| (main): ... here. Change types of magic constants to kernel_ulong_t. |
| Add more checks. |
| |
| 2017-01-04 JingPiao Chen <chenjingpiao@gmail.com> |
| Eugene Syromyatnikov <evgsyr@gmail.com> |
| |
| tests: check decoding of LOOP_* ioctls. |
| * tests/ioctl_loop.c: New file. |
| * tests/ioctl_loop-v.c: Likewise. |
| * tests/ioctl_loop.test: New test. |
| * tests/ioctl_loop-v.test: Likewise. |
| * tests/.gitignore: Add ioctl_loop and ioctl_loop-v. |
| * tests/Makefile.am (check_PROGRAMS): Likewise. |
| (DECODER_TESTS): Add ioctl_loop.test and ioctl_loop-v.test. |
| |
| 2017-01-04 Dmitry V. Levin <ldv@altlinux.org> |
| |
| Drop vsprintf.c. |
| Drop custom vfprintf implementation that was disabled by default. |
| Apparently nobody tests strace with this vfprintf enabled, otherwise |
| multiple uses of format specifiers not supported by this custom vfprintf |
| would not left unnoticed. |
| |
| The GNU C library is not the only libc available, so those who want |
| faster implementations of libc functions are encouraged to try building |
| strace with other libc implementations. |
| |
| * vsprintf.c: Remove. |
| * Makefile.am (strace_SOURCES): Remove vsprintf.c. |
| * defs.h (USE_CUSTOM_PRINTF, strace_vfprintf): Remove. |
| * strace.c (tprintf): Replace strace_vfprintf with vfprintf. |
| |
| 2017-01-04 Eugene Syromyatnikov <evgsyr@gmail.com> |
| |
| loop: remove unnecessary verbose check. |
| The verbose flag is responsible for dereferencing of addresses, and it |
| is perfectly handled by umove_or_printaddr; moreover, this early exit |
| leads to incorrect formatting of last argument. |
| |
| * loop.c (loop_ioctl): Do not check verbose flag explicitly and do not |
| exit early if it is not set. |
| |
| 2017-01-04 Eugene Syromyatnikov <evgsyr@gmail.com> |
| |
| loop: fix lo_encrypt_key field output. |
| lo_encrypt_key is a sized string with its size specified by |
| lo_encrypt_key_size field, so take lo_encrypt_key_size into account. |
| |
| * loop.c (decode_loop_info, decode_loop_info64): Use minimum of |
| LO_KEY_SIZE and lo_encrypt_key_size field value as lo_encrypt_key size. |
| |
| 2017-01-04 Eugene Syromyatnikov <evgsyr@gmail.com> |
| |
| loop: print lo_encrypt_key_size field of struct loop_info as unsigned. |
| It is converted to an unsigned value in kernel (see loop_info64_from_old |
| in drivers/block/loop.c), so let's print it that way despite its type. |
| |
| * loop.c (decode_loop_info): Print lo_encrypt_key_size as an uint32_t |
| value. |
| |
| 2017-01-04 Eugene Syromyatnikov <evgsyr@gmail.com> |
| |
| tests: add more checks of unknown ioctl command formatting. |
| * tests/ioctl.c (main): Additional check for unknown ioctl command |
| decoding. |
| * tests/ioctl_evdev.c (main): Likewise. |
| * tests/ioctl_dm.c: Include <linux/ioctl.h> for _IOC_SIZE and _IOC_NR. |
| (main) <dummy_dm_ioctl1, dummy_dm_ioctl2, dummy_dm_arg>: New constants. |
| Add more checks for unknown command formatting. |
| |
| 2017-01-04 Eugene Syromyatnikov <evgsyr@gmail.com> |
| |
| ioctl: do not print explicit 0x prefix and do not specify minimum width. |
| Specifying output width for size argument is rather misleading - it can |
| be up to 14 bits in size. The use of explicit "0x" prefix is |
| discouraged because 0x0 looks ugly. Usage of width specification along |
| with alternate form flag leads to inconsistent output for 0. |
| Let's use just plain %#x qualifiers instead. |
| |
| * ioctl.c (ioctl_print_code): Change printf qualifiers for ioctl command |
| type, number and size to "%#x". |
| * tests/ioctl.c (main): Update expected test output. |
| * tests/ioctl_dm.c (main): Likewise. |
| * tests/ioctl_evdev.c (main): Likewise. |
| |
| 2017-01-04 Eugene Syromyatnikov <evgsyr@gmail.com> |
| |
| loop: fix printing of the reserved field array items. |
| They are of char type, so "hh" length modifier should be used (otherwise |
| they are printed incorrectly as they are sign extended implicitly when |
| passed as printf arguments in case char is a signed type which is true |
| for most compilers). |
| |
| * loop.c (decode_loop_info): Change "%#x" printf qualifier to "%#hhx" |
| in printing routine for array elements of the "reserved" field of |
| loop_info structure. |
| |
| 2017-01-04 Eugene Syromyatnikov <evgsyr@gmail.com> |
| |
| tests: check ioctl(SIOCGIFCONF) decoding. |
| * tests/ioctl_sock_gifconf.c: New file. |
| * tests/ioctl_sock_gifconf.test: New test. |
| * tests/.gitignore: Add ioctl_sock_gifconf. |
| * tests/Makefile.am (check_PROGRAMS): Likewise. |
| (DECODER_TESTS): Add ioctl_sock_gifconf.test. |
| |
| dm.c: add copyright notice. |
| |
| 2017-01-04 Dmitry V. Levin <ldv@altlinux.org> |
| |
| Add scno.h and syscallent.i to .gitignore files. |
| * .gitignore: Add /scno.h and /syscallent.i. |
| * tests/.gitignore: Add scno.h and syscallent.i. |
| |
| 2017-01-04 JingPiao Chen <chenjingpiao@gmail.com> |
| |
| tests/.gitignore: add generated files that should be ignored. |
| * tests/.gitignore: Replace addkey with add_key, add attach-f-p-cmd. |
| |
| 2017-01-03 Dmitry V. Levin <ldv@altlinux.org> |
| |
| Remove checks of __NR_* availability from strace source code. |
| * strace.c: Remove __NR_tkill checks, assume it is always defined. |
| * util.c: Remove __NR_process_vm_readv checks and fallback definitions, |
| assume it is always defined. |
| |
| Include "scno.h" in files that check __NR_* constants. |
| * strace.c: Include "scno.h". |
| * util.c: Likewise. |
| |
| Generate scno.h for use during the build of strace itself. |
| * Makefile.am: Include scno.am. |
| ($(strace_OBJECTS)): New rule. |
| |
| 2017-01-01 Dmitry V. Levin <ldv@altlinux.org> |
| |
| Generate scno.h without invoking a generated executable helper. |
| Generate scno.h using only those tools that are available for cross |
| build. This allows to use scno.h during the build of strace itself. |
| |
| * scno.am: New file. |
| * scno.head: New file. |
| * Makefile.am (EXTRA_DIST): Add it. |
| * tests/generate_scno.c: Remove. |
| * tests/.gitignore: Remove generate_scno. |
| * tests/Makefile.am (check_PROGRAMS): Likewise. |
| (CLEANFILES): Remove scno.h. |
| (scno.h, $(scno_dependants)): Remove rules. |
| (scno_dependants): Remove. |
| ($(objects)): New rule. |
| Include ../scno.am. |
| |
| 2017-01-01 Dmitry V. Levin <ldv@altlinux.org> |
| |
| Update all publicly shown copyright year number ranges. |
| * COPYING: Update copyright year number range. |
| * configure.ac: Likewise. |
| * strace.c: Likewise. |
| * tests/strace-V.test: Use the current year for the check. |
| |
| 2016-12-31 Dmitry V. Levin <ldv@altlinux.org> |
| |
| defs.h: stop including <asm/unistd.h> |
| Limit the number of files where <asm/unistd.h> is included |
| to only those few that need it. |
| |
| * defs.h: Do not include <asm/unistd.h>. |
| * clone.c: Include <asm/unistd.h>. |
| * strace.c: Likewise. |
| * syscall.c: Likewise. |
| * util.c: Likewise. |
| |
| 2016-12-30 Dmitry V. Levin <ldv@altlinux.org> |
| |
| tests: do not use BUILT_SOURCES. |
| * tests/Makefile.am (ksysent.$(OBJEXT)): New rule. |
| (BUILT_SOURCES): Remove. |
| |
| 2016-12-30 Dmitry V. Levin <ldv@altlinux.org> |
| |
| Fix cross build. |
| This fixes cross build regression introduced by commit |
| v4.15-39-g605a705a63d533dceb3c2d489468fcd3aed3963c. |
| |
| * tests/Makefile.am (BUILT_SOURCES): Remove scno.h |
| (objects, scno_dependants): New variables. |
| ($(scno_dependants)): New rule. |
| |
| Reported-by: Joakim Bech <joakim.bech@linaro.org> |
| |
| 2016-12-30 Dmitry V. Levin <ldv@altlinux.org> |
| |
| tests: do not use defs.h and syscall.h. |
| * tests/generate_scno.c: Include "tests.h", "sysent.h", <stdio.h>, |
| <string.h>, and <asm/unistd.h> instead of "defs.h" and "syscall.h". |
| * tests/ksysent.c: Likewise. |
| * tests/nsyscalls.c: Include "tests.h", "sysent.h", <errno.h>, |
| <stdio.h>, and <unistd.h> instead of "defs.h" and "syscall.h". |
| |
| Move definition of struct sysent and trace flags to a separate file. |
| * sysent.h: New file. |
| * Makefile.am (strace_SOURCES): Add it. |
| * defs.h: Include it. |
| (struct sysent, TRACE_FILE, TRACE_IPC, TRACE_NETWORK, TRACE_PROCESS, |
| TRACE_SIGNAL, TRACE_DESC, TRACE_MEMORY, SYSCALL_NEVER_FAILS, |
| STACKTRACE_INVALIDATE_CACHE, STACKTRACE_CAPTURE_ON_ENTER, |
| TRACE_INDIRECT_SUBCALL, COMPAT_SYSCALL_TYPES): Remove. |
| |
| 2016-12-29 Eugene Syromyatnikov <evgsyr@gmail.com> |
| |
| Mpersify SIOC* ioctls. |
| struct ifreq and struct ifconf are ABI-dependent and should have been |
| mpersified. |
| |
| * defs.h (sock_ioctl): Remove prototype. |
| * sock.c (struct_ifconf, struct_ifreq): New typedefs. |
| (DEF_MPERS_TYPE(struct_ifconf), DEF_MPERS_TYPE(struct_ifreq), |
| MPERS_DEFS): New includes. |
| (print_ifreq, print_ifc_len, print_ifconf_ifreq): Replace struct ifreq |
| with struct_ifreq. |
| (decode_ifconf): Replace struct ifconf with struct_ifconf, struct ifreq |
| with struct_fireq. |
| (sock_ioctl): Wrap into MPERS_PRINTER_DECL. |
| |
| 2016-12-29 Eugene Syromyatnikov <evgsyr@gmail.com> |
| Dmitry V. Levin <ldv@altlinux.org> |
| |
| sock: rewrite decode_ifconf. |
| * sock.c (decode_ifconf): Rewrite. |
| |
| 2016-12-29 Eugene Syromyatnikov <evgsyr@gmail.com> |
| |
| xlat: update LOOP_* ioctl flags constants. |
| * configure.ac (AC_CHECK_DECLS): Add LO_FLAGS_USE_AOPS |
| and LO_FLAGS_DIRECT_IO. |
| * xlat/loop_flags_options.in: Likewise. Add default values |
| for constants. |
| |
| 2016-12-29 Eugene Syromyatnikov <evgsyr@gmail.com> |
| |
| loop: add fallback definitions for LOOP_* ioctl command constants. |
| Since these are architecture-independent and have been added over the |
| kernel's lifetime, it makes sense to have these definitions in strace |
| itself. |
| |
| * xlat/loop_cmds.in: New file. |
| * loop.c: Include "xlat/loop_cmds.h". |
| (loop_ioctl): Eliminate conditional compilation based on availability |
| of LOOP_* constant definitions. |
| |
| 2016-12-29 Dmitry V. Levin <ldv@altlinux.org> |
| |
| xlat: extend syntax. |
| * xlat/gen.sh: Implement #stop directive that stops preprocessor |
| at the line it has been encountered during the first pass. This could |
| be used, for example, to provide fallback definitions for constants |
| without defining xlat tables. |
| |
| 2016-12-29 Eugene Syromyatnikov <evgsyr@gmail.com> |
| Dmitry V. Levin <ldv@altlinux.org> |
| |
| loop: mpersify struct loop_info and loop_ioctl function. |
| struct loop_info contains fields of type long, so it definitely should |
| have been mpersified. |
| |
| * defs.h (loop_ioctl): Remove prototype. |
| * loop.c (struct_loop_info): New typedef. |
| Include DEF_MPERS_TYPE(struct_loop_info) and MPERS_DEFS. |
| (decode_loop_info): Replace struct loop_info with struct_loop_info. |
| Cast lo_inode, lo_init[0], and lo_init[1] to kernel_ulong_t and print |
| them using appropriate format specifiers. |
| (loop_ioctl): Wrap into MPERS_PRINTER_DECL. |
| |
| 2016-12-29 Eugene Syromyatnikov <evgsyr@gmail.com> |
| |
| loop: print lo_device and lo_rdevice fields using print_dev_t. |
| * loop.c (decode_loop_info, decode_loop_info64): Use print_dev_t |
| for printing lo_device and lo_rdevice fields. |
| |
| 2016-12-29 Eugene Syromyatnikov <evgsyr@gmail.com> |
| Dmitry V. Levin <ldv@altlinux.org> |
| |
| Move device number printing code into a separate routine. |
| * print_dev_t.c: New file. |
| * Makefile.am (strace_SOURCES): Add it. |
| * defs.h (print_dev_t): New prototype. |
| * dm.c: Do not include <sys/sysmacros.h>. |
| (dm_decode_device, dm_print_dev, dm_decode_dm_name_list): Use |
| print_dev_t function for printing device numbers. |
| * mknod.c: Do not include <sys/sysmacros.h>. |
| (decode_mknod): Use print_dev_t function for printing device number. |
| * print_struct_stat.c: Do not include <sys/sysmacros.h>. |
| (print_struct_stat): Use print_dev_t function for printing device |
| numbers. |
| |
| 2016-12-28 Dmitry V. Levin <ldv@altlinux.org> |
| |
| tests: enhance invalid address decoding check in seccomp-strict.test. |
| * tests/seccomp-strict.c (main): Change the type of addr variable |
| containg the invalid address from unsigned long to kernel_ulong_t, |
| print it using %#llx format. |
| |
| 2016-12-28 Eugene Syromyatnikov <evgsyr@gmail.com> |
| |
| tests: check decoding of prctl PR_GET_TID_ADDRESS operation. |
| * tests/prctl-tid_address.c: New file. |
| * tests/prctl-tid_address.test: New test. |
| * tests/.gitignore: Add prctl-tid_address. |
| * tests/Makefile.am (check_PROGRAMS): Likewise. |
| (DECODER_TESTS): Add prctl-tid_address.test. |
| |
| 2016-12-28 Dmitry V. Levin <ldv@altlinux.org> |
| |
| Update the publicly shown copyright information. |
| Set the publicly shown copyright holder to "The strace developers.". |
| |
| * COPYING: Update copyright information. |
| * configure.ac: Add AC_COPYRIGHT. |
| * strace.c (print_version): New function. |
| (init): Use it. |
| * tests/strace-V.test: Update expected output. |
| |
| 2016-12-28 Dmitry V. Levin <ldv@altlinux.org> |
| |
| configure: specify project URL. |
| * configure.ac (AC_INIT): Add URL. |
| |
| 2016-12-28 Seraphime Kirkovski <kirkseraph@gmail.com> |
| |
| Document signal injection. |
| * strace.1: Describe :signal=SIG option of the fault injection syntax. |
| * NEWS: Mention signal injection. |
| |
| 2016-12-28 Seraphime Kirkovski <kirkseraph@gmail.com> |
| |
| Implement signal injection. |
| This extends the fault injection capability with :signal=SIG option |
| which injects a signal on entering each syscall from the specified set. |
| |
| :signal and :error options are complementary, if they are both specified |
| the syscall will be fault injected as usual and the specified signal |
| will be delivered to the tracee. |
| |
| * defs.h (struct fault_opts): Change the type of err field to int16_t, |
| add signo field. |
| (trace_syscall): Add a pointer argument. |
| * qualify.c: Include "nsig.h". |
| (parse_fault_token): Handle signal= option. |
| (qualify_fault): Update default fault_opts. |
| * strace.c (trace): Forward signal number from trace_syscall |
| to ptrace_restart(PTRACE_SYSCALL). |
| * syscall.c (inject_syscall_fault_entering): Add pointer argument, |
| save there the signal number specified by fault options. Do not inject |
| a syscall fault unless instructed by fault options. |
| (update_syscall_fault_exiting): Update the error code injection check. |
| (trace_syscall_entering): Add pointer argument, forward it to |
| inject_syscall_fault_entering. |
| (trace_syscall): Add pointer argument, forward it to |
| trace_syscall_entering. |
| |
| 2016-12-28 Dmitry V. Levin <ldv@altlinux.org> |
| |
| Update README.md. |
| * README.md: Update homepage URL, mention command-line interface |
| and tampering capabilities in the description. |
| |
| 2016-12-28 Dmitry V. Levin <ldv@altlinux.org> |
| |
| tests: robustify prctl-arg2-intptr.test. |
| Robustify prctl-arg2-intptr.test against unrelated prctl invocations. |
| |
| * tests/prctl-arg2-intptr.test: Filter out unrelated PR_GET_* |
| and PR_SET_* prctl calls. |
| |
| 2016-12-27 Dmitry V. Levin <ldv@altlinux.org> |
| |
| signal: remove redundant checks around NSIG. |
| * signal.c (struct old_sigaction, struct new_sigaction, |
| struct new_sigaction32): Remove safety checks for NSIG >= sizeof(long). |
| |
| Introduce NSIG_BYTES. |
| * nsig.h (NSIG_BYTES): New macro. |
| * desc.c: Use it in comments instead of NSIG. |
| * epoll.c: Likewise. |
| * poll.c: Likewise. |
| * signalfd.c: Likewise. |
| * signal.c: Likewise. |
| (sprintsigmask_n, print_sigset_addr_len_limit): Use it instead of NSIG. |
| * linux/alpha/arch_sigreturn.c (arch_sigreturn): Likewise. |
| * linux/arm/arch_sigreturn.c (arch_sigreturn): Likewise. |
| * linux/crisv10/arch_sigreturn.c (arch_sigreturn): Likewise. |
| * linux/ia64/arch_sigreturn.c (arch_sigreturn): Likewise. |
| * linux/m68k/arch_sigreturn.c (arch_sigreturn): Likewise. |
| * linux/microblaze/arch_sigreturn.c (arch_sigreturn): Likewise. |
| * linux/mips/arch_sigreturn.c (arch_sigreturn): Likewise. |
| * linux/powerpc/arch_sigreturn.c (arch_sigreturn): Likewise. |
| * linux/s390/arch_sigreturn.c (arch_sigreturn): Likewise. |
| * linux/sparc/arch_sigreturn.c (arch_sigreturn): Likewise. |
| * linux/tile/arch_sigreturn.c (arch_sigreturn): Likewise. |
| * linux/x86_64/arch_sigreturn.c (arch_sigreturn): Likewise. |
| * tests/pselect6.c (main): Likewise. |
| |
| Move NSIG ifdefery to a separate header file. |
| * nsig.h: New file. |
| * Makefile.am (strace_SOURCES): Add it. |
| * signal.c: Include "nsig.h" instead of <signal.h>, remove |
| NSIG workarounds. |
| * sigreturn.c: Likewise. |
| * syscall.c: Likewise. |
| * tests/pselect6.c: Likewise. |
| |
| Introduce ANY_WORDSIZE_LESS_THAN_KERNEL_LONG macro. |
| * defs.h (ANY_WORDSIZE_LESS_THAN_KERNEL_LONG): New macro. |
| (truncate_klong_to_current_wordsize, |
| truncate_kulong_to_current_wordsize): Use it. |
| * mem.c (SYS_FUNC(old_mmap)): Likewise. |
| * util.c (umoven, umovestr, dumpiov_upto): Likewise. |
| * syscall.c (trace_syscall_exiting): Likewise. |
| |
| Simplify personality checks in msghdr.c and signal.c. |
| * msghdr.c: Check for [!current_wordsize] instead |
| of [SUPPORTED_PERSONALITIES > 1 && SIZEOF_LONG > 4]. |
| * signal.c: Likewise. |
| |
| 2016-12-26 Dmitry V. Levin <ldv@altlinux.org> |
| |
| Replace widen_to_long with truncate_klong_to_current_wordsize. |
| * defs.h (widen_to_long): Remove. |
| (truncate_klong_to_current_wordsize): New static inline function. |
| * aio.c (SYS_FUNC(io_submit), SYS_FUNC(io_getevents): Use it |
| instead of widen_to_long. |
| * linux/sparc64/get_syscall_args.c (get_syscall_args): Update comment. |
| * linux/x86_64/get_syscall_args.c (get_syscall_args): Likewise. |
| |
| Replace widen_to_ulong with truncate_kulong_to_current_wordsize. |
| * defs.h (widen_to_ulong): Remove. |
| (truncate_kulong_to_current_wordsize): New static inline function. |
| * io.c (do_preadv, do_pwritev): Use it instead of widen_to_ulong. |
| |
| 2016-12-26 Dmitry V. Levin <ldv@altlinux.org> |
| |
| Simplify print_lld_from_low_high_val ifdefery. |
| The demise of HAVE_STRUCT_TCB_EXT_ARG opens the way for a simpler |
| implementation. |
| |
| * io.c (print_lld_from_low_high_val): Merge [SIZEOF_LONG > 4 |
| && SIZEOF_LONG == SIZEOF_LONG_LONG] |
| and [SIZEOF_KERNEL_LONG_T > SIZEOF_LONG] cases |
| into a single [SIZEOF_KERNEL_LONG_T > 4] case. |
| [SIZEOF_KERNEL_LONG_T == 4]: Use direct casts to long long |
| instead of zero_extend_signed_to_ull. |
| |
| 2016-12-26 Dmitry V. Levin <ldv@altlinux.org> |
| |
| Simplify getllval ifdefery. |
| The demise of HAVE_STRUCT_TCB_EXT_ARG opens the way for a simpler |
| implementation. |
| |
| * util.c (getllval): Merge [SIZEOF_LONG > 4 |
| && SIZEOF_LONG == SIZEOF_LONG_LONG] |
| and [SIZEOF_KERNEL_LONG_T > SIZEOF_LONG] cases |
| into a single [SIZEOF_KERNEL_LONG_T > 4] case. |
| |
| 2016-12-26 Eugene Syromyatnikov <evgsyr@gmail.com> |
| |
| prctl: print pointer returned by PR_GET_TID_ADDRESS as kernel long. |
| Since there is no compat handler for x32/n32, kernel returns kernel's |
| long as a result of the call. |
| |
| Interesting, does any callee out there actually care to have enough room |
| allocated for kernel long? |
| |
| * prctl.c (SYS_FUNC(prctl)): Use printnum_kptr instead of printnum_ptr |
| to print the value stored at address pointed by addr2 argument |
| of PR_GET_TID_ADDRESS operation. |
| |
| 2016-12-26 Eugene Syromyatnikov <evgsyr@gmail.com> |
| |
| Add functions for printing pointers of kernel_ulong_t size. |
| In cases where no compat for x32/n32 is implemented, pointer is of |
| kernel's long size, so it should be printed appropriately. |
| |
| * defs.h [!current_klongsize] (printnum_addr_klong_int): New prototype. |
| (printnum_kptr): New macro. |
| * util.c [!current_klongsize] (printnum_addr_klong_int): New function. |
| |
| 2016-12-26 Eugene Syromyatnikov <evgsyr@gmail.com> |
| Dmitry V. Levin <ldv@altlinux.org> |
| |
| Print indirect pointers as pointers. |
| Originally, printnum_long_int was used, but it prints NULL incorrectly. |
| |
| * defs.h (DECL_PRINTNUM_ADDR): New macro. |
| (DECL_PRINTNUM_ADDR(int), DECL_PRINTNUM_ADDR(int64)): New prototypes. |
| [!current_wordsize] (printnum_addr_long_int): New prototype. |
| [!current_wordsize] (printnum_ptr): Use it. |
| [current_wordsize > 4] (printnum_ptr): Use printnum_addr_int64. |
| [current_wordsize == 4] (printnum_ptr) Use printnum_addr_int. |
| * util.c (DEF_PRINTNUM_ADDR): New macro. |
| (DEF_PRINTNUM_ADDR(int, unsigned int), |
| DEF_PRINTNUM_ADDR(int64, uint64_t)): New macro instantiations that |
| provide printnum_addr_int and printnum_addr_int64, accordingly. |
| [!current_wordsize] (printnum_addr_long_int): New function. |
| * xet_robust_list.c (sprintaddr): New function. |
| (main): Use it, update expected output. |
| * tests/ipc_sem.c (main): Update expected output. |
| |
| 2016-12-26 Eugene Syromyatnikov <evgsyr@gmail.com> |
| |
| ipc_sem: print 4th argument of semctl syscall as an address. |
| * ipc_sem.c (SYS_FUNC(semctl)): Print 4th argument using printaddr. |
| * tests/ipc_sem.c (cleanup): Update expected output. |
| |
| 2016-12-26 Dmitry V. Levin <ldv@altlinux.org> |
| |
| Do not define printnum_long_int on systems with constant current_wordsize |
| * defs.h: Check [!current_wordsize] instead |
| of [SUPPORTED_PERSONALITIES > 1 && SIZEOF_LONG > 4] to select |
| definitions of printnum_slong, printnum_ulong, and printnum_ptr. |
| * util.c: Check [!current_wordsize] instead |
| of [SUPPORTED_PERSONALITIES > 1 && SIZEOF_LONG > 4] to decide |
| whether to compile printnum_long_int. |
| |
| 2016-12-26 Dmitry V. Levin <ldv@altlinux.org> |
| |
| umoven: detect invalid addresses. |
| Do not silently truncate tracee addresses to current_wordsize. |
| After transition from long to kernel_ulong_t there should be no sign |
| extension issues with tracee addresses, and invalid addresses should |
| be printed properly. |
| |
| * util.c (umoven): Check [SIZEOF_KERNEL_LONG_T > 4] instead |
| of [SIZEOF_LONG > 4], reject addresses that do not fit into |
| current_wordsize. |
| * tests/umoven-illptr.c: New file. |
| * tests/umoven-illptr.test: New test. |
| * tests/.gitignore: Add umoven-illptr. |
| * tests/Makefile.am (check_PROGRAMS): Likewise. |
| (DECODER_TESTS): Add umoven-illptr.test. |
| |
| 2016-12-26 Dmitry V. Levin <ldv@altlinux.org> |
| |
| umovestr: detect invalid addresses. |
| Do not silently truncate tracee addresses to current_wordsize. |
| After transition from long to kernel_ulong_t there should be no sign |
| extension issues with tracee addresses, and invalid addresses should |
| be printed properly. |
| |
| * util.c (umovestr): Check [SIZEOF_KERNEL_LONG_T > 4] instead |
| of [SIZEOF_LONG > 4], reject addresses that do not fit into |
| current_wordsize. |
| * tests/umovestr-illptr.c: New file. |
| * tests/umovestr-illptr.test: New test. |
| * tests/.gitignore: Add umovestr-illptr. |
| * tests/Makefile.am (check_PROGRAMS): Likewise. |
| (DECODER_TESTS): Add umovestr-illptr.test. |
| |
| 2016-12-26 Dmitry V. Levin <ldv@altlinux.org> |
| |
| lseek: simplify _llseek syscall decoder. |
| After transition from long to kernel_ulong_t the implementation |
| could be made a bit simpler. |
| |
| * lseek.c (SYS_FUNC(llseek)): Use direct cast to long long instead |
| of zero_extend_signed_to_ull. |
| |
| 2016-12-26 Dmitry V. Levin <ldv@altlinux.org> |
| |
| lseek: merge two different implementations of lseek syscall decoder. |
| After transition from long to kernel_ulong_t there are no mo |
| complications that required to keep a separate implementation |
| for x32 and mips n32. |
| |
| * lseek.c (SYS_FUNC(lseek)): Merge two different implementations |
| into a single one. |
| |
| 2016-12-26 Dmitry V. Levin <ldv@altlinux.org> |
| |
| Remove HAVE_STRUCT_TCB_EXT_ARG, ext_arg, and u_lrval. |
| After transition from long to kernel_ulong_t these fields |
| are no longer needed. |
| |
| * defs.h (HAVE_STRUCT_TCB_EXT_ARG): Remove. |
| (struct tcb) [HAVE_STRUCT_TCB_EXT_ARG]: Remove. |
| [HAVE_STRUCT_TCB_EXT_ARG]: Remove. |
| (RVAL_MASK): Update. |
| * io.c (print_lld_from_low_high_val): Check |
| [SIZEOF_KERNEL_LONG_T > SIZEOF_LONG] |
| instead of [HAVE_STRUCT_TCB_EXT_ARG]. |
| Use u_arg instead of ext_arg. |
| * linux/mips/get_error.c (get_error) [LINUX_MIPSN32]: Remove. |
| * linux/mips/get_syscall_args.c (get_syscall_args) [LINUX_MIPSN32]: |
| Remove. |
| [LINUX_MIPSN64]: Extend to [LINUX_MIPSN32]. |
| * linux/x86_64/get_error.c (get_error) [X32]: Remove. |
| * linux/x86_64/get_syscall_args.c (get_syscall_args) [X32]: Remove. |
| * lseek.c: Check [SIZEOF_KERNEL_LONG_T > SIZEOF_LONG] |
| instead of [HAVE_STRUCT_TCB_EXT_ARG]. |
| [SIZEOF_KERNEL_LONG_T > SIZEOF_LONG] (SYS_FUNC(lseek)): Use u_arg |
| instead of ext_arg. Use RVAL_UDECIMAL instead of RVAL_LUDECIMAL. |
| * mem.c (SYS_FUNC(mmap)): Pass offset syscall argument directly |
| to print_mmap. |
| * syscall.c (trace_syscall_exiting) [HAVE_STRUCT_TCB_EXT_ARG]: Remove. |
| * times.c (SYS_FUNC(times)): Use RVAL_UDECIMAL instead |
| of RVAL_LUDECIMAL. |
| * util.c (getllval): Check [SIZEOF_KERNEL_LONG_T > SIZEOF_LONG] |
| instead of [HAVE_STRUCT_TCB_EXT_ARG]. Use u_arg instead of ext_arg. |
| |
| 2016-12-26 Dmitry V. Levin <ldv@altlinux.org> |
| |
| Remove getarg_klu. |
| After transition from long to kernel_ulong_t we no longer need |
| tcp->ext_arg, and therefore a function to access it is also no longer |
| needed. |
| |
| * defs.h (getarg_klu): Remove prototype. |
| * util.c (getarg_klu): Remove. |
| (printargs): Access tcp->u_arg directly |
| * bjm.c (SYS_FUNC(init_module)): Likewise. |
| * clone.c (SYS_FUNC(unshare)): Likewise. |
| * fadvise.c (SYS_FUNC(fadvise64)): Likewise. |
| * kcmp.c (SYS_FUNC(kcmp)): Likewise. |
| * kexec.c (SYS_FUNC(kexec_file_load)): Likewise. |
| * keyctl.c (SYS_FUNC(keyctl)): Likewise. |
| * lookup_dcookie.c (SYS_FUNC(lookup_dcookie)): Likewise. |
| * mem.c (do_mprotect): Likewise. |
| * mq.c (SYS_FUNC(mq_timedsend), SYS_FUNC(mq_timedreceive)): Likewise. |
| * pkeys.c (SYS_FUNC(pkey_alloc)): Likewise. |
| * prctl.c (print_prctl_args, SYS_FUNC(prctl), SYS_FUNC(arch_prctl)): |
| Likewise. |
| |
| 2016-12-26 Dmitry V. Levin <ldv@altlinux.org> |
| |
| Remove printaddr_klu. |
| After transition from long to kernel_ulong_t we no longer need |
| two versions of printaddr function. |
| |
| * defs.h (printaddr): Remove. |
| (printaddr_klu): Rename to printaddr. |
| * util.c (printaddr_klu): Likewise. |
| * bjm.c (SYS_FUNC(init_module)): Replace printaddr_klu with printaddr. |
| * mem.c (do_mprotect): Likewise. |
| |
| 2016-12-26 Eugene Syromyatnikov <evgsyr@gmail.com> |
| |
| tests: check decoding of a subset of prctl operations. |
| Check decoding of prctl operations that take the second syscall argument |
| as a pointer to an integer. |
| |
| * tests/prctl-arg2-intptr.c: New file. |
| * tests/prctl-arg2-intptr.test: New test. |
| * tests/.gitignore: Add prctl-arg2-intptr. |
| * tests/Makefile.am (check_PROGRAMS): Likewise. |
| (DECODER_TESTS): Add prctl-arg2-intptr.test. |
| |
| 2016-12-26 Dmitry V. Levin <ldv@altlinux.org> |
| |
| Automatically replace PRI_kr[dux] with PRI_kl[dux] |
| Remove temporary macros created for transition from long |
| to kernel_ulong_t. |
| |
| Automatically replace PRI_kr[dux] with PRI_kl[dux] using |
| $ git grep -l 'PRI_kr[dux]' | xargs sed -ri 's/PRI_kr([dux])/PRI_kl\1/g' |
| |
| * defs.h (PRI_krd, PRI_kru, PRI_krx): Remove. All users updated. |
| |
| 2016-12-26 Dmitry V. Levin <ldv@altlinux.org> |
| |
| Automatically replace kernel_(scno|ureg)_t with kernel_ulong_t. |
| Remove temporary types created for transition from long |
| to kernel_ulong_t. |
| |
| Automatically replace kernel_scno_t and kernel_ureg_t with |
| kernel_ulong_t using |
| $ git grep -El 'kernel_(scno|ureg)_t' | |
| xargs sed -ri 's/kernel_(scno|ureg)_t/kernel_ulong_t/g' |
| |
| * kernel_types.h (kernel_scno_t, kernel_ureg_t): Remove. |
| All users updated. |
| |
| 2016-12-26 Dmitry V. Levin <ldv@altlinux.org> |
| |
| Redirect kernel_ureg_t and kernel_scno_t from unsigned long to kernel_ulong_t |
| * defs.h (struct tcb): Change u_rval type from long to kernel_long_t. |
| (PRI_krd, PRI_kru, PRI_krx): Redirect to PRI_kld, PRI_klu, and PRI_klx. |
| * kernel_types.h (kernel_scno_t, kernel_ureg_t): Redirect |
| to kernel_ulong_t. |
| |
| 2016-12-26 Dmitry V. Levin <ldv@altlinux.org> |
| |
| Print kernel_ureg_t and kernel_scno_t using dedicated format strings. |
| Prepare for the change of kernel_ureg_t and kernel_scno_t from |
| unsigned long to kernel_ulong_t. |
| |
| * defs.h (PRI_krd, PRI_kru, PRI_krx): New temporary macros. |
| All users updated. |
| |
| 2016-12-26 Dmitry V. Levin <ldv@altlinux.org> |
| |
| vm_read_mem: detect address truncation. |
| When sizeof(kernel_ureg_t) > sizeof(long), the tracee address passed |
| to vm_read_mem could be silently truncated. Detect this situation |
| and return EIO when the tracee address does not fit into unsigned long. |
| |
| * util.c (vm_read_mem): Save raddr argument into a temporary variable |
| truncated_raddr of type unsigned long. Set errno to EIO and return -1 |
| when truncated_raddr does not equal to raddr. |
| |
| 2016-12-26 Dmitry V. Levin <ldv@altlinux.org> |
| |
| trace_syscall_exiting: prepare personality check for u_rval type change. |
| * syscall.c (trace_syscall_exiting): Check for sizeof(tcp->u_rval) |
| instead of sizeof(long) when deciding how to print tcp->u_rval. |
| |
| 2016-12-26 Dmitry V. Levin <ldv@altlinux.org> |
| |
| Use ptr_to_kulong instead of explicit casts of pointers to kernel_ureg_t |
| Direct casts to kernel_ureg_t will not work after the change |
| of kernel_ureg_t from unsigned long to kernel_ulong_t. |
| |
| * defs.h (ptr_to_kulong): New macro. |
| * block.c (print_blkpg_req): Use it instead of explicit casts |
| to kernel_ureg_t. |
| * btrfs.c (btrfs_ioctl): Likewise. |
| * evdev.c (ff_effect_ioctl): Likewise. |
| * mmsghdr.c (dumpiov_in_mmsghdr): Likewise. |
| * msghdr.c (print_struct_msghdr, dumpiov_in_msghdr): Likewise. |
| * mtd.c (decode_mtd_oob_buf): Likewise. |
| * printsiginfo.c (printsigval, print_si_info): Likewise. |
| * scsi.c (print_sg_io_v3_req, print_sg_io_v3_res): Likewise. |
| * sigaltstack.c (print_stack_t): Likewise. |
| * sock.c (decode_ifconf): Likewise. |
| * sysctl.c (SYS_FUNC(sysctl)): Likewise. |
| * util.c (dumpiov_upto): Likewise. |
| * v4l2.c (print_v4l2_framebuffer, print_v4l2_ext_control, |
| print_v4l2_ext_controls): Likewise. |
| |
| 2016-12-26 Dmitry V. Levin <ldv@altlinux.org> |
| |
| umove*: remove redundant casts. |
| * util.c (umoven, umovestr): Remove casts from unsigned long to pointer. |
| |
| upoke: remove redundant casts. |
| * upoke.c (upoke): Remove casts from unsigned long to pointer. |
| |
| 2016-12-25 Dmitry V. Levin <ldv@altlinux.org> |
| |
| signal: cleanup decoding of sa_handler and sa_restorer. |
| Change type of sa_handler and sa_restorer fields from function pointers |
| to unsigned long. This saves the code from a lot of casts between |
| pointers and integers. |
| |
| Rename __sa_handler to sa_handler__ as names starting with underscore |
| symbol are reserved and should not be used. |
| |
| * signal.c (old_sigaction): Rename __sa_handler to sa_handler__, |
| all users updated. Change the type of sa_handler__ and sa_restorer |
| from pointer to unsigned long. |
| (old_sigaction32): Rename __sa_handler to sa_handler__, all users |
| updated. |
| (decode_old_sigaction): Remove now redundant casts from |
| old_sigaction32.sa_handler__ to old_sigaction.sa_handler__, |
| from old_sigaction32.sa_restorer to old_sigaction.sa_restorer, |
| and from old_sigaction.sa_handler__ to unsigned long. Print |
| old_sigaction.sa_restorer using printaddr. |
| * signal.c (new_sigaction): Rename __sa_handler to sa_handler__, |
| all users updated. Change the type of sa_handler__ and sa_restorer |
| from pointer to unsigned long. |
| (new_sigaction32): Rename __sa_handler to sa_handler__, all users |
| updated. |
| (decode_new_sigaction): Remove now redundant casts from |
| new_sigaction32.sa_handler__ to new_sigaction.sa_handler__, |
| from new_sigaction32.sa_restorer to new_sigaction.sa_restorer, |
| and from new_sigaction.sa_handler__ to unsigned long. Print |
| new_sigaction.sa_restorer using printaddr. |
| |
| 2016-12-25 Dmitry V. Levin <ldv@altlinux.org> |
| |
| signal: change signal handler address type from unsigned long to kernel_ureg_t |
| * signal.c (get_sa_handler_str, print_sa_handler): Change handler type |
| from unsigned long to kernel_ureg_t. |
| |
| quota: change address argument type from unsigned long to kernel_ureg_t. |
| * quota.c (decode_cmd_data): Change the type of data argument |
| from unsigned long to kernel_ureg_t. |
| |
| execve: prepare for handling big pointers. |
| * execve.c (printargv): Change cp.p64 type from unsigned long |
| to kernel_ulong_t so it could handle wordsize > sizeof(long) properly. |
| |
| 2016-12-25 Dmitry V. Levin <ldv@altlinux.org> |
| |
| clone: print clone flags without truncation. |
| The flags argument is defined in kernel as unsigned long, |
| so change its decoding to avoid truncation. |
| |
| * clone.c (SYS_FUNC(clone)): Change flags type from unsigned long |
| to kernel_ureg_t, print it using printflags64 instead of printflags. |
| |
| 2016-12-25 Dmitry V. Levin <ldv@altlinux.org> |
| |
| Use printxval64 instead of printxval_long. |
| After the change of tcb.u_arg type from long to kernel_ureg_t it is safe |
| to stop using printxval_long proxy and pass syscall arguments directly |
| to printxval64. |
| |
| * defs.h (printxval_long): Remove. |
| * fcntl.c (print_fcntl): Replace printxval_long with printxval64. |
| * mtd.c (mtd_ioctl): Likewise. |
| * numa.c (SYS_FUNC(mbind)): Likewise. |
| * or1k_atomic.c [OR1K] (SYS_FUNC(or1k_atomic)): Likewise. |
| * sysmips.c [MIPS] (SYS_FUNC(sysmips)): Likewise. |
| * term.c (term_ioctl): Likewise. |
| |
| 2016-12-25 Dmitry V. Levin <ldv@altlinux.org> |
| |
| Use printflags64 instead of printflags_long. |
| After the change of tcb.u_arg type from long to kernel_ureg_t it is safe |
| to stop using printflags_long proxy and pass syscall arguments directly |
| to printflags64. |
| |
| * defs.h (printflags_long): Remove. |
| * fcntl.c (print_fcntl): Replace printflags_long with printflags64. |
| * numa.c (SYS_FUNC(get_mempolicy)): Likewise. |
| * perf.c (SYS_FUNC(perf_event_open)): Likewise. |
| * sram_alloc.c [BFIN] (SYS_FUNC(sram_alloc)): Likewise. |
| |
| 2016-12-25 Dmitry V. Levin <ldv@altlinux.org> |
| |
| upeek, upoke: change argument types from long to unsigned long. |
| * defs.h (upeek, upoke): Change offset argument type from long |
| to unsigned long. Change res argument type from long to kernel_ureg_t. |
| * upeek.c (upeek): Likewise. |
| * upoke.c (upoke.c): Likewise. |
| * syscall.c (print_pc) [ARCH_PC_PEEK_ADDR]: Change pc type from long |
| to kernel_ureg_t. |
| * linux/aarch64/arch_regs.c (arm_sp_ptr): Remove redundant cast. |
| * linux/metag/get_syscall_args.c (get_syscall_args): Likewise. |
| * linux/sh/get_syscall_result.c (get_syscall_result_regs): Likewise. |
| * linux/sh64/get_syscall_result.c (get_syscall_result_regs): Likewise. |
| * linux/powerpc/getregs_old.c (getregs_old): Remove redundant casts. |
| * linux/alpha/arch_getrval2.c (getrval2): Change r20 type from long |
| to unsigned long. |
| * linux/alpha/arch_regs.c (alpha_r0, alpha_a3): Change type from long |
| to unsigned long. |
| * linux/bfin/arch_regs.c (bfin_r0): Likewise. |
| * linux/crisv10/arch_regs.c (cris_r10): Likewise. |
| * linux/hppa/arch_regs.c (hppa_r28): Likewise. |
| * linux/ia64/arch_regs.c (IA64_PSR_IS): Likewise. |
| * linux/microblaze/arch_regs.c (microblaze_r3): Likewise. |
| * linux/sh/arch_regs.c (sh_r0): Likewise. |
| * linux/sh64/arch_regs.c (sh64_r9): Likewise. |
| * linux/xtensa/arch_regs.c (xtensa_a2): Likewise. |
| * linux/alpha/arch_sigreturn.c (arch_sigreturn): Change addr type |
| from long to unsigned long. |
| * linux/microblaze/arch_sigreturn.c (arch_sigreturn): Likewise. |
| * linux/alpha/get_scno.c (arch_get_scno): Update for the change |
| of signedness. |
| * linux/arc/get_syscall_args.c (get_syscall_args): Change arc_args type |
| from pointer to long to pointer to unsigned long. |
| * linux/arm/arch_regs.c (arm_sp_ptr): Change type from pointer to long |
| to pointer to unsigned long. |
| * linux/arm/arch_regs.h (arm_sp_ptr): Likewise. |
| * linux/i386/arch_regs.c (i386_esp_ptr): Likewise. |
| * linux/i386/arch_regs.h (i386_esp_ptr): Likewise. |
| * linux/m68k/arch_regs.c (m68k_usp_ptr): Likewise. |
| * linux/m68k/arch_regs.h (m68k_usp_ptr): Likewise. |
| * linux/ia64/get_syscall_args.c (get_syscall_args): Use umove |
| instead of umoven. |
| * linux/sh/arch_getrval2.c (getrval2): Change val type from long |
| to unsigned long. |
| |
| arch_sigreturn: change tracee address type from long to unsigned long. |
| * linux/arm/arch_sigreturn.c (arch_sigreturn): Change addr variable |
| type from long to unsigned long. |
| * linux/ia64/arch_sigreturn.c (arch_sigreturn): Likewise. |
| * linux/m68k/arch_sigreturn.c (arch_sigreturn): Likewise. |
| * linux/powerpc/arch_sigreturn.c (arch_sigreturn): Likewise. |
| * linux/s390/arch_sigreturn.c (arch_sigreturn): Likewise. |
| * linux/sparc/arch_sigreturn.c (arch_sigreturn): Likewise. |
| * linux/tile/arch_sigreturn.c (arch_sigreturn): Likewise. |
| * linux/crisv10/arch_sigreturn.c (arch_sigreturn): Change the type |
| of addr and regs variables from long to unsigned long. |
| * linux/mips/arch_sigreturn.c (arch_sigreturn): Change addr variable |
| type from long to kernel_ureg_t. |
| * linux/x86_64/arch_sigreturn.c (arch_sigreturn): Change the type |
| of offset and addr variables from long to kernel_ureg_t. |
| |
| kexec: change flags type from unsigned long to kernel_ureg_t. |
| * kexec.c (SYS_FUNC(kexec_load)): Change n variable type |
| from unsigned long to kernel_ureg_t. Use printxval64 instead |
| of printxval_long. Use printflags64 instead of printflags_long. |
| |
| kexec: change types of pointers and sizes to kernel_ureg_t. |
| * kexec.c (print_seg): Change the type of *seg and seg_buf variables |
| from unsigned long to kernel_ureg_t. |
| (print_kexec_segments): Change len argument type from unsigned long |
| to kernel_ureg_t. Change seg variable type from unsigned long |
| to kernel_ureg_t. |
| |
| printsiginfo: change len argument type from unsigned long to kernel_ureg_t |
| * printsiginfo.c (print_siginfo_array): Change len argument type |
| from unsigned long to kernel_ureg_t. |
| |
| signal: change address argument type from unsigned long to kernel_ureg_t |
| * signal.c (print_sigqueueinfo): Change address argument type |
| from unsigned long to kernel_ureg_t. |
| |
| statfs64: change size argument type from unsigned long to kernel_ureg_t. |
| * defs.h (print_struct_statfs64): Change size argument type |
| from unsigned long to kernel_ureg_t. |
| * print_statfs.c (print_struct_statfs64): Likewise. |
| * fetch_struct_statfs.c (fetch_struct_statfs64): Likewise. |
| * fstatfs64.c (SYS_FUNC(fstatfs64)): Pass size argument directly |
| to print_struct_statfs64. |
| * statfs64.c (SYS_FUNC(statfs64)): Likewise. |
| |
| Cast tcp->u_rval to kernel_ureg_t instead of unsigned long. |
| * fcntl.c (print_fcntl): Cast tcp->u_rval to kernel_ureg_t instead |
| of unsigned long. |
| * membarrier.c (SYS_FUNC(membarrier)): Likewise. |
| * prctl.c (SYS_FUNC(prctl)): Likewise. |
| * sched.c (SYS_FUNC(sched_getscheduler)): Likewise. |
| * time.c (do_adjtimex): Likewise. |
| |
| decode_sockbuf: change addrlen argument type from long to kernel_ureg_t. |
| * net.c (decode_sockbuf): Change addrlen argument type from long |
| to kernel_ureg_t. |
| |
| netlink: change size types from unsigned long to kernel_ureg_t. |
| * defs.h (decode_netlink): Change len argument type from unsigned long |
| to kernel_ureg_t. |
| * netlink.c (fetch_nlmsghdr): Likewise. |
| (decode_nlmsghdr_with_payload): Likewise. Change nlmsg_len variable |
| type from unsigned long to unsigned int. |
| (decode_netlink): Change the type of len argument and next_len variable |
| from unsigned long to kernel_ureg_t. Change nlmsg_len variable type |
| from unsigned long to unsigned int. |
| |
| ipc_msg: change size types from unsigned long to kernel_ureg_t. |
| * ipc_msg.c (tprint_msgsnd): Change count argument type |
| from unsigned long to kernel_ureg_t. Change flags argument type |
| from unsigned long to unsigned int. |
| (tprint_msgrcv): Change the type of count and msgtyp arguments |
| from unsigned long to kernel_ureg_t. |
| (fetch_msgrcv_args): Change *pair type from unsigned long |
| to kernel_ureg_t. |
| (SYS_FUNC(msgrcv)): Change pair type from unsigned long |
| to kernel_ureg_t. |
| * print_msgbuf.c (tprint_msgbuf): Change count argument type |
| from unsigned long to kernel_ureg_t. |
| |
| dumpiov_upto: change size types from unsigned long to kernel_ureg_t. |
| * defs.h (dumpiov_upto): Change data_size argument type |
| from unsigned long to kernel_ureg_t. |
| * util.c (dumpiov_upto): Change the type of data_size argument |
| and iov_len variable from unsigned long to kernel_ureg_t. |
| |
| 2016-12-25 Dmitry V. Levin <ldv@altlinux.org> |
| |
| msghdr: change cmsghdr size types from size_t to unsigned int. |
| As the kernel does not accept control messages longer than the value |
| of int sysctl_optmem_max kernel variable exported as |
| /proc/sys/net/core/optmem_max, we do not print them either. |
| |
| Since unsigned int has enough room to contain any valid control message |
| size, change all internal cmsghdr size types from size_t |
| to unsigned int. |
| |
| * msghdr.c (print_scm_rights, print_scm_creds, print_scm_security, |
| print_cmsg_ip_pktinfo, print_cmsg_uint, print_cmsg_uint8_t, |
| print_cmsg_ip_opts, print_cmsg_ip_recverr, print_cmsg_ip_origdstaddr, |
| cmsg_printer, print_cmsg_type_data): Change data_len argument type |
| from size_t to unsigned int. |
| (cmsg_socket_printers): Change min_len type from size_t to unsigned int. |
| (decode_msg_control): Change the type of in_control_len argument, |
| cmsg_len, and len variables from size_t to kernel_ureg_t. |
| Change the type of cmsg_size, control_len, and buf_len variables |
| from size_t to unsigned int. |
| |
| 2016-12-25 Dmitry V. Levin <ldv@altlinux.org> |
| |
| msghdr: change register based size types from unsigned long to kernel_ureg_t |
| * defs.h (dumpiov_in_msghdr): Change data_size argument type |
| from unsigned long to kernel_ureg_t. |
| * msghdr.h (print_struct_msghdr): Likewise. |
| * msghdr.c (print_struct_msghdr): Likewise. Cast msghdr.msg_iovlen |
| and msghdr.msg_controllen to kernel_ureg_t instead of unsigned long. |
| (decode_msghdr, dumpiov_in_msghdr): Change data_size argument type |
| from unsigned long to kernel_ureg_t. |
| (SYS_FUNC(sendmsg)): Pass -1 instead of -1UL as data_size argument |
| to decode_msghdr. |
| * mmsghdr.c (print_struct_mmsghdr): Pass (kernel_ureg_t) -1 instead |
| of -1UL as data_size argument to print_struct_msghdr. |
| (dumpiov_in_mmsghdr): Cast msghdr.msg_iovlen to kernel_ureg_t instead |
| of unsigned long. |
| * syscall.c (dumpio): Pass -1 instead of -1UL as data_size argument |
| to dumpiov_in_msghdr |
| |
| mq: remove redundant u_rval check. |
| * mq.c (SYS_FUNC(mq_timedreceive)): Do not check for tcp->u_rval < 0, |
| syserror(tcp) is enough, and printstrn can handle len < 0 anyway. |
| |
| io: change size types from unsigned long to kernel_ureg_t. |
| * defs.h (tprint_iov_upto): Change the type of len and data_size |
| arguments from unsigned long to kernel_ureg_t. |
| (tprint_iov): Change the type of len argument from unsigned long |
| to kernel_ureg_t. |
| * io.c (print_iovec_config): Change data_size type from unsigned long |
| to kernel_ureg_t. |
| (print_iovec): Change the type of *iov, iov_buf, and len variables |
| from unsigned long to kernel_ureg_t. |
| (tprint_iov_upto): Change the type of len and data_size arguments, and |
| the type of iov variable from unsigned long to kernel_ureg_t. |
| |
| mount: change flags type from unsigned long to kernel_ureg_t. |
| * mount.c (SYS_FUNC(mount)): Change the type of flags from unsigned long |
| to kernel_ureg_t, use printflags64 instead of printflags_long |
| to print it. |
| |
| mem: change mmap arguments type from unsigned long to kernel_ureg_t. |
| * mem.c (print_mmap): Change the type of len, prot, and flags |
| from unsigned long to kernel_ureg_t. Use printflags64 instead |
| of printflags_long. Use printxval64 instead of printxval_long. |
| (SYS_FUNC(old_mmap)): Check for current_klongsize instead |
| of [AARCH64 || X86_64] to take X32 into account. |
| (SYS_FUNC(mremap)): Use printflags64 instead of printflags_long. |
| (SYS_FUNC(remap_file_pages)): Change the type of size, prot, pgoff, and |
| flags from unsigned long to kernel_ureg_t. Use printflags64 instead |
| of printflags_long. Use printxval64 instead of printxval_long. |
| [POWERPC] (SYS_FUNC(subpage_prot)): Change the type of len and nmemb |
| from unsigned long to kernel_ureg_t. |
| |
| numa: change size arguments type from unsigned long to kernel_ureg_t. |
| * numa.c (print_node, print_addr): Add kernel_ureg_t support. |
| (print_nodemask): Change type of maxnodes argument from unsigned long |
| to kernel_ureg_t. |
| (SYS_FUNC(move_pages)): Change npages type from unsigned long |
| to kernel_ureg_t. Change buf type from long to kernel_ureg_t. |
| |
| print_sigset_addr_len: change len argument type from long to kernel_ureg_t |
| * defs.h (print_sigset_addr_len): Change len argument type from long |
| to kernel_ureg_t. |
| * signal.c (print_sigset_addr_len_limit, print_sigset_addr_len): Likewise. |
| |
| process_vm: change size arguments type from unsigned long to kernel_ureg_t |
| * process_vm.c (SYS_FUNC(process_vm_readv), |
| SYS_FUNC(process_vm_writev)): Change the type of local_iovcnt, |
| remote_iovcnt, and flags from unsigned long to kernel_ureg_t. |
| |
| printstr*: change len argument type from long to kernel_ureg_t. |
| * defs.h (printstr_ex, printstrn): Change len argument type from long |
| to kernel_ureg_t. |
| * util.c (printstr_ex): Likewise. |
| |
| xattr: change size arguments type from unsigned long to kernel_ureg_t. |
| * xattr.c (print_xattr_val): Change type of insize and size arguments |
| from unsigned long to kernel_ureg_t. |
| (print_xattr_list): Change type of size argument from unsigned long |
| to kernel_ureg_t. |
| |
| 2016-12-25 Dmitry V. Levin <ldv@altlinux.org> |
| |
| printstr_ex: fix decoding of non-NUL-terminated strings when len == -1. |
| Do not treat len == -1 in any special way. All users who need the |
| string to be handled as a NUL-terminated string set QUOTE_0_TERMINATED |
| bit in user_style flags already. |
| |
| * util.c (printstr_ex): Remove (len == -1) check. |
| * tests/printstr.c: New file. |
| * tests/printstr.test: New test. |
| * tests/.gitignore: Add printstr. |
| * tests/Makefile.am (check_PROGRAMS): Likewise. |
| (DECODER_TESTS): Add printstr.test. |
| |
| 2016-12-25 Dmitry V. Levin <ldv@altlinux.org> |
| |
| Fix decoding of sethostname syscall. |
| The second argument of sethostname syscall is not an unsigned long but |
| unsigned int. The kernel does not look at the string argument when |
| the length argument is too long. |
| |
| * hostname.c [HAVE_LINUX_UTSNAME_H]: Include <linux/utsname.h>. |
| [!__NEW_UTS_LEN] (__NEW_UTS_LEN): Define. |
| (SYS_FUNC(sethostname)): Treat the second argument as unsigned int. |
| Print the first argument as a pointer when the second argument exceeds |
| __NEW_UTS_LEN. |
| * tests/sethostname.c [HAVE_LINUX_UTSNAME_H]: Include <linux/utsname.h>. |
| [!__NEW_UTS_LEN] (__NEW_UTS_LEN): Define. |
| (main): Use it. Check that the second argument of sethostname |
| is handled as unsigned int. Check that the first argument is printed |
| as a pointer when the second argument exceeds __NEW_UTS_LEN. |
| |
| 2016-12-25 Dmitry V. Levin <ldv@altlinux.org> |
| |
| tests: add F8ILL_KULONG_* and f8ill_ptr_to_kulong to tests.h. |
| * tests/tests.h (F8ILL_KULONG_SUPPORTED, F8ILL_KULONG_MASK): New macros. |
| (f8ill_ptr_to_kulong): New static inline function. |
| |
| 2016-12-25 Dmitry V. Levin <ldv@altlinux.org> |
| |
| printstr: rename to printstrn, add printstr as a thin wrapper. |
| As about half of all printstr uses cases are invocations with the last |
| argument set to -1, create a dedicated function for this use case. |
| |
| * defs.h (printstr): Rename to printstrn. All callers updated. |
| (printstr): New static inline function. All callers updated. |
| |
| 2016-12-25 Dmitry V. Levin <ldv@altlinux.org> |
| |
| process: change ptrace arguments type from unsigned long to kernel_ureg_t |
| (SYS_FUNC(ptrace)): Change type of request and data arguments |
| from unsigned long to kernel_ureg_t. |
| |
| process: change tracee address type from unsigned long to kernel_ureg_t. |
| * process.c (print_user_offset_addr): Change address argument type |
| from unsigned long to kernel_ureg_t. |
| (SYS_FUNC(ptrace)): Change addr variable type from unsigned long |
| to kernel_ureg_t. |
| |
| net: change address argument type from long to kernel_ureg_t. |
| * net.c (decode_sockbuf, decode_pair_fd, print_linger, print_ucred, |
| print_tpacket_stats, print_icmp_filter, print_getsockopt, print_mreq, |
| print_mreq6, print_group_req, print_tpacket_req, print_packet_mreq, |
| print_setsockopt): Change address argument type from long |
| to kernel_ureg_t. |
| |
| print_mq_attr: change address argument type from long to kernel_ureg_t. |
| * print_mq_attr.c (printmqattr): Change address argument type from long |
| to kernel_ureg_t. |
| |
| ipc_*: change address argument type from long to kernel_ureg_t. |
| * ipc_msg.c (tprint_msgsnd, tprint_msgrcv, fetch_msgrcv_args): Change |
| address argument type from long to kernel_ureg_t. |
| * ipc_msgctl.c (print_msqid_ds): Likewise. |
| * ipc_sem.c (tprint_sembuf_array): Likewise. |
| * ipc_shmctl.c (print_shmid_ds): Likewise. |
| |
| print_msgbuf: change address argument type from long to kernel_ureg_t. |
| * print_msgbuf.c (tprint_msgbuf): Change address argument type |
| from long to kernel_ureg_t. |
| |
| desc: change tracee address type from long to kernel_ureg_t. |
| * desc.c (decode_select): Rename arg to addr, change its type |
| from long to kernel_ureg_t. |
| |
| uid: change address argument type from long to kernel_ureg_t. |
| * uid.c (get_print_uid): Change address argument type |
| from long to kernel_ureg_t. |
| |
| time: change address argument type from long to kernel_ureg_t. |
| * time.c (print_timezone, do_adjtimex): Change address argument type |
| from long to kernel_ureg_t. |
| |
| sched: change address argument type from long to kernel_ureg_t. |
| * sched.c (print_sched_attr): Change address argument type |
| from long to kernel_ureg_t. |
| |
| printsiginfo: change address argument type from long to kernel_ureg_t. |
| * printsiginfo.c (printsiginfo_at): Change address argument type |
| from long to kernel_ureg_t. |
| |
| print_timex: change address argument type from long to kernel_ureg_t. |
| * print_timex.c (print_timex): Change address argument type |
| from long to kernel_ureg_t. |
| |
| print_sigevent: change address argument type from long to kernel_ureg_t. |
| * print_sigevent.c (print_sigevent): Change address argument type |
| from long to kernel_ureg_t. |
| |
| poll: change address argument type from long to kernel_ureg_t. |
| * poll.c (decode_poll_exiting): Change tracee address argument type |
| from long to kernel_ureg_t. |
| |
| printrusage*: change tracee address argument type from long to kernel_ureg_t |
| * defs.h [ALPHA] (printrusage32): Change address argument type |
| from long to kernel_ureg_t. |
| * printrusage.c (printrusage): Likewise. |
| [ALPHA] (printrusage32): Likewise. |
| * wait.c (printwaitn): Change the type of tracee address argument |
| of print_rusage from long to kernel_ureg_t. |
| |
| print_time*: change tracee address argument type from long to kernel_ureg_t |
| * defs.h [ALPHA] (sprint_timeval32, print_timeval32, |
| print_timeval32_pair, print_itimerval32): Change address argument type |
| from long to kernel_ureg_t. |
| * desc.c (decode_select): Change the type of tracee address argument |
| of print_tv_ts and sprint_tv_ts from long to kernel_ureg_t. |
| * print_timespec.c (print_timespec, sprint_timespec, |
| print_timespec_utime_pair, print_itimerspec): Change address argument |
| type from long to kernel_ureg_t. |
| * print_timeval.c (print_timeval, print_timeval_pair, sprint_timeval, |
| print_itimerval, print_timeval32, print_timeval32_pair, |
| print_itimerval32, sprint_timeval32): Likewise. |
| |
| rtc: change type of ioctl 3rd argument from long to kernel_ureg_t. |
| * rtc.c (decode_rtc_time, decode_rtc_wkalrm, decode_rtc_pll_info): |
| Change addr type from long to kernel_ureg_t. |
| (rtc_ioctl): Change arg type from long to kernel_ureg_t. |
| |
| mtd: change type of ioctl 3rd argument from long to kernel_ureg_t. |
| * mtd.c (decode_erase_info_user, decode_erase_info_user64, |
| decode_mtd_oob_buf, decode_mtd_oob_buf64, decode_otp_info, |
| decode_otp_select, decode_mtd_write_req, decode_mtd_info_user, |
| decode_nand_oobinfo, decode_nand_ecclayout_user, decode_mtd_ecc_stats): |
| Change addr type from long to kernel_ureg_t. |
| (mtd_ioctl): Change arg type from long to kernel_ureg_t. |
| |
| hdio: change type of ioctl 3rd argument from long to kernel_ureg_t. |
| * hdio.c (hdio_ioctl): Change arg type from long to kernel_ureg_t. |
| |
| v4l2: change type of ioctl 3rd argument from long to kernel_ureg_t. |
| * v4l2.c (print_v4l2_capability, print_v4l2_fmtdesc, print_v4l2_format, |
| print_v4l2_requestbuffers, print_v4l2_buffer, print_v4l2_framebuffer, |
| print_v4l2_buf_type, print_v4l2_streamparm, print_v4l2_standard, |
| print_v4l2_input, print_v4l2_control, print_v4l2_queryctrl, |
| print_v4l2_cropcap, print_v4l2_crop, print_v4l2_ext_controls, |
| print_v4l2_frmsizeenum, print_v4l2_frmivalenum, |
| print_v4l2_create_buffers, v4l2_ioctl): Change arg type from long |
| to kernel_ureg_t. |
| |
| evdev: change type of ioctl 3rd argument from long to kernel_ureg_t. |
| * evdev.c (ff_effect_ioctl, abs_ioctl, keycode_ioctl, keycode_V2_ioctl, |
| getid_ioctl, decode_bitset, mtslots_ioctl, repeat_ioctl, bit_ioctl, |
| evdev_read_ioctl, evdev_write_ioctl, evdev_ioctl): Change arg type |
| from long to kernel_ureg_t. |
| |
| btrfs: change type of ioctl 3rd argument from long to kernel_ureg_t. |
| * btrfs.c (btrfs_print_balance, btrfs_ioctl): Change arg type from long |
| to kernel_ureg_t. |
| |
| block: change type of ioctl 3rd argument from long to kernel_ureg_t. |
| * block.c (block_ioctl): Change arg type from long to kernel_ureg_t. |
| |
| Change type of ioctl 3rd argument from long to kernel_ureg_t. |
| * defs.h (DECL_IOCTL): Change arg type from long to kernel_ureg_t. |
| * dm.c (dm_known_ioctl, dm_ioctl): Likewise. |
| * file_ioctl.c (file_ioctl): Likewise. |
| * fs_x_ioctl.c (fs_x_ioctl): Likewise. |
| * ioctl.c (ioctl_decode): Likewise. |
| * loop.c (decode_loop_info, decode_loop_info64): Change addr type |
| from long to kernel_ureg_t. |
| (loop_ioctl): Change arg type from long to kernel_ureg_t. |
| * ptp.c (ptp_ioctl): Likewise. |
| * scsi.c (print_sg_io_v3_req, print_sg_io_v3_res, print_sg_io_v4_req, |
| print_sg_io_v4_res, scsi_ioctl): Likewise. |
| * sock.c (print_ifreq, sock_ioctl): Likewise. |
| (decode_ifconf): Change addr type from long to kernel_ureg_t. |
| * term.c (decode_termios, decode_termio, decode_winsize, decode_ttysize, |
| decode_modem_flags): Likewise. |
| (term_ioctl): Change arg type from long to kernel_ureg_t. |
| * ubi.c (ubi_ioctl): Likewise. |
| * userfaultfd.c (uffdio_ioctl): Likewise. |
| |
| ldt: change address argument type from long to kernel_ureg_t. |
| * defs.h [HAVE_STRUCT_USER_DESC] (print_user_desc): Change address |
| argument type from long to kernel_ureg_t. |
| * ldt.c [HAVE_STRUCT_USER_DESC] (print_user_desc): Likewise. |
| |
| fcntl: change address argument type from long to kernel_ureg_t. |
| * fcntl.c (printflock64, printflock, print_f_owner_ex): Change |
| address argument type from long to kernel_ureg_t. |
| |
| execve: change address argument type from long to kernel_ureg_t. |
| * execve.c (printargv, printargc): Change address argument type |
| from long to kernel_ureg_t. |
| |
| dirent: change address argument type from long to kernel_ureg_t. |
| * dirent.c (print_old_dirent): Change address argument type from long |
| to kernel_ureg_t. |
| |
| bpf: change address argument type from long to kernel_ureg_t. |
| * bpf.c (bpf_map_create, bpf_map_update_elem, bpf_map_delete_elem, |
| bpf_map_io, bpf_prog_load, SYS_FUNC(bpf)): Change address argument |
| type from long to kernel_ureg_t. |
| |
| dump*: change address argument type from long to kernel_ureg_t. |
| * defs.h (dumpiov_in_msghdr, dumpiov_in_mmsghdr, dumpiov_upto, dumpstr): |
| Change address argument type from long to kernel_ureg_t. |
| * mmsghdr.c (dumpiov_in_mmsghdr): Likewise. |
| * msghdr.c (fetch_msghdr_namelen, decode_msghdr, dumpiov_in_msghdr): |
| Likewise. |
| * util.c (dumpiov_upto, dumpstr): Likewise. |
| |
| print_sigset_addr_len: change address argument type from long to kernel_ureg_t |
| * defs.h (print_sigset_addr_len) Change address argument type from long |
| to kernel_ureg_t. |
| * signal.c (print_sigset_addr_len_limit, print_sigset_addr_len, |
| decode_old_sigaction, decode_new_sigaction): Likewise. |
| |
| decode_sockaddr: change address argument type from long to kernel_ureg_t |
| * defs.h (decode_sockaddr) Change tracee address argument type from long |
| to kernel_ureg_t. |
| * sockaddr.c (decode_sockaddr): Likewise. |
| |
| print_struct_statfs*: change address argument type from long to kernel_ureg_t |
| * defs.h (print_struct_statfs, print_struct_statfs64): Change address |
| argument type from long to kernel_ureg_t. |
| * print_statfs.c (print_struct_statfs, print_struct_statfs64): Likewise. |
| * fetch_struct_statfs.c (fetch_struct_statfs, fetch_struct_statfs64): |
| Likewise. |
| |
| fetch_struct_flock: change address argument type from long to kernel_ureg_t |
| * fetch_struct_flock.c (fetch_struct_flock, fetch_struct_flock64): |
| Change address argument type from long to kernel_ureg_t. |
| |
| fetch_seccomp_fprog: change address argument type from long to kernel_ureg_t |
| * fetch_seccomp_fprog.c (fetch_seccomp_fprog): Change address argument |
| type from long to kernel_ureg_t. |
| |
| printnum_*, printpair_*: change address argument type from long to kernel_ureg_t |
| * defs.h (DECL_PRINTNUM, DECL_PRINTPAIR, printnum_long_int): Change |
| address argument type from long to kernel_ureg_t. |
| * util.c (DEF_PRINTNUM, DEF_PRINTPAIR, printnum_long_int): Likewise. |
| |
| printpath*: change address argument type from long to kernel_ureg_t. |
| * defs.h (printpath, printpathn): Change address argument type |
| from long to kernel_ureg_t. |
| * util.c (printpath, printpathn): Likewise. |
| |
| printstr*: change address argument type from long to kernel_ureg_t. |
| * defs.h (printstr_ex, printstr_ex): Change address argument type |
| from long to kernel_ureg_t. |
| * util.c (printstr_ex): Likewise. |
| |
| umove*: change tracee address argument type from long to kernel_ureg_t. |
| * defs.h (umovestr, umoven, umoven_or_printaddr, |
| umoven_or_printaddr_ignore_syserror): Change tracee address argument |
| type from long to kernel_ureg_t. |
| (print_array): Change the type of tracee address argument of umoven_func |
| from long to kernel_ureg_t. |
| * util.c (vm_read_mem, umovestr, umoven, umoven_or_printaddr, |
| umoven_or_printaddr_ignore_syserror): Change tracee address argument |
| type from long to kernel_ureg_t. |
| (print_array): Change the type of tracee address argument of umoven_func |
| from long to kernel_ureg_t. |
| * desc.c (umove_kulong_array_or_printaddr): Change tracee address |
| argument type from long to kernel_ureg_t. |
| * mmsghdr.c (fetch_struct_mmsghdr_or_printaddr): Likewise. |
| |
| futex: change address type from long to kernel_ureg_t. |
| * futex.c (SYS_FUNC(futex)): Change address type from long |
| to kernel_ureg_t. |
| |
| file_handle: change address type from long to kernel_ureg_t. |
| * file_handle.c (SYS_FUNC(name_to_handle_at), |
| SYS_FUNC(open_by_handle_at)): Change address type from long |
| to kernel_ureg_t. |
| |
| printsiginfo: cast pointers to kernel_ureg_t instead of unsigned long. |
| * printsiginfo.c (printsigval): Cast siginfo.si_ptr pointer |
| to kernel_ureg_t instead of unsigned long. |
| (print_si_info): Cast siginfo.si_addr and siginfo.si_call_addr pointers |
| to kernel_ureg_t instead of unsigned long. |
| |
| sigaltstack: cast pointers and sizes to kernel_ureg_t instead of unsigned long |
| * sigaltstack.c (print_stack_t): Cast sigaltstack.ss_sp pointer |
| and sigaltstack.ss_size to kernel_ureg_t instead of unsigned long. |
| |
| v4l2: cast pointers to kernel_ureg_t instead of long. |
| * v4l2.c (print_v4l2_ext_control): Cast v4l2_ext_control.string pointer |
| to kernel_ureg_t instead of long. |
| |
| v4l2: cast pointers to kernel_ureg_t instead of unsigned long. |
| * v4l2.c (print_v4l2_buffer): Remove redundant cast. |
| (print_v4l2_framebuffer): Cast v4l2_framebuffer.base pointer |
| to kernel_ureg_t instead of unsigned long. |
| (print_v4l2_ext_controls): Cast v4l2_ext_controls.controls pointer |
| to kernel_ureg_t instead of unsigned long. |
| |
| 2016-12-24 Dmitry V. Levin <ldv@altlinux.org> |
| |
| sysctl: cast pointers to kernel_ureg_t instead of size_t. |
| * sysctl.c (SYS_FUNC(sysctl)): Cast __sysctl_args.oldval and |
| __sysctl_args.newval pointers to kernel_ureg_t instead of size_t. |
| |
| sysctl: cast pointers to kernel_ureg_t instead of long. |
| * sysctl.c (SYS_FUNC(sysctl)): Cast __sysctl_args.oldlenp pointer |
| to kernel_ureg_t instead of long. |
| |
| block: cast pointers to kernel_ureg_t instead of long. |
| * block.c (print_blkpg_req): Cast blkpg_ioctl_arg.data pointer |
| to kernel_ureg_t instead of long. |
| |
| dumpiov_upto: cast pointers to kernel_ureg_t instead of long. |
| * util.c (dumpiov_upto): Cast iovec.iov_base pointer to kernel_ureg_t |
| instead of long. |
| |
| msghdr: cast pointers to kernel_ureg_t instead of long. |
| * msghdr.c (print_struct_msghdr): Cast msghdr.msg_name pointer |
| to kernel_ureg_t instead of long. |
| (dumpiov_in_msghdr): Cast msghdr.msg_iov pointer to kernel_ureg_t |
| instead of long. |
| |
| mmsghdr: cast pointers to kernel_ureg_t instead of long. |
| * mmsghdr.c (dumpiov_in_mmsghdr): Cast msghdr.msg_iov pointer |
| to kernel_ureg_t instead of long. |
| |
| Remove redundant casts of ptrace arguments. |
| * strace.c (maybe_switch_tcbs, trace): Do not cast ptrace 4th argument |
| from pointer to long type. |
| |
| ptrace_restart: cleanup. |
| * strace.c (ptrace_restart): Replace the sequence of "if" statements |
| with a "switch" statement. |
| |
| ptrace_restart: change types of integer arguments to unsigned. |
| * strace.c (ptrace_restart): Change types of "op" and "sig" |
| from int to unsigned int. |
| |
| process: remove redundant syserror checks. |
| * process.c (SYS_FUNC(ptrace)): Remove syserror checks as both |
| print_siginfo_array and print_seccomp_fprog do the right thing |
| by using umoven_or_printaddr. |
| |
| sparc64: remove redundant casts. |
| * linux/sparc64/get_syscall_args.c (get_syscall_args): Remove |
| redundant casts from uint32_t to long. |
| |
| 2016-12-23 Dmitry V. Levin <ldv@altlinux.org> |
| |
| numa: change address argument type from unsigned long to kernel_ureg_t. |
| * numa.c (print_nodemask): Change address argument type from |
| unsigned long to kernel_ureg_t. |
| |
| net: change address argument type from unsigned long to kernel_ureg_t. |
| * net.c (fetch_socklen): Change address argument type from |
| unsigned long to kernel_ureg_t. |
| |
| mem: change tracee address type from unsigned long to kernel_ureg_t. |
| * mem.c (print_mmap, SYS_FUNC(remap_file_pages), |
| SYS_FUNC(subpage_prot)): Change the type of variables containing tracee |
| addresses from unsigned long to kernel_ureg_t. |
| |
| kexec: change address argument type from unsigned long to kernel_ureg_t. |
| * kexec.c (print_kexec_segments): Change address argument type |
| from unsigned long to kernel_ureg_t. |
| |
| poll: change counter type from unsigned long to unsigned int. |
| * poll.c (decode_poll_exiting): Change the type of printed and |
| max_printed counters from unsigned long to unsigned int. |
| |
| xattr: change address argument type from unsigned long to kernel_ureg_t. |
| * xattr.c (print_xattr_val, print_xattr_list): Change address |
| argument type from unsigned long to kernel_ureg_t. |
| |
| uid: change address argument type from unsigned long to kernel_ureg_t. |
| * uid.c (print_groups): Change address argument type |
| from unsigned long to kernel_ureg_t. |
| |
| stat64: change address argument type from unsigned long to kernel_ureg_t |
| * stat64.c (decode_struct_stat64): Change address argument type |
| from unsigned long to kernel_ureg_t. |
| |
| stat: change address argument type from unsigned long to kernel_ureg_t. |
| * stat.c (decode_struct_stat): Change address argument type |
| from unsigned long to kernel_ureg_t. |
| |
| sigaltstack: change address argument type from unsigned long to kernel_ureg_t |
| * sigaltstack.c (print_stack_t): Change address argument type |
| from unsigned long to kernel_ureg_t. |
| |
| resource: change address argument type from unsigned long to kernel_ureg_t |
| * resource.c (print_rlimit64, print_rlimit32, decode_rlimit): Change |
| address argument type from unsigned long to kernel_ureg_t. |
| |
| printsiginfo: change address argument type from unsigned long to kernel_ureg_t |
| * printsiginfo.c (print_siginfo_array): Change address argument type |
| from unsigned long to kernel_ureg_t. |
| |
| poll: change tracee address type from unsigned long to kernel_ureg_t. |
| * poll.c (decode_poll_entering, decode_poll_exiting): Change the type |
| all tracee address variables from unsigned long to kernel_ureg_t. |
| |
| perf: change address argument type from unsigned long to kernel_ureg_t. |
| * perf.c (fetch_perf_event_attr, print_perf_event_attr): Change |
| address argument type from unsigned long to kernel_ureg_t. |
| |
| pathtrace: change tracee address type from unsigned long to kernel_ureg_t |
| * pathtrace.c (upathmatch): Change address argument type |
| from unsigned long to kernel_ureg_t. |
| (pathtrace_match): Change the type of all tracee address variables |
| from unsigned long to kernel_ureg_t. |
| |
| scsi: change address argument type from unsigned long to kernel_ureg_t. |
| * scsi.c (print_sg_io_buffer): Change address argument type |
| from unsigned long to kernel_ureg_t. |
| |
| dm: change address argument type from unsigned long to kernel_ureg_t. |
| * dm.c (dm_decode_dm_target_spec, dm_decode_dm_target_deps, |
| dm_decode_dm_name_list, dm_decode_dm_target_versions, |
| dm_decode_dm_target_msg, dm_decode_string): Change address argument type |
| from unsigned long to kernel_ureg_t. |
| |
| oldstat: change address argument type from unsigned long to kernel_ureg_t |
| * oldstat.c (print_old_kernel_stat): Change address argument type |
| from unsigned long to kernel_ureg_t. |
| |
| capability: change address argument type from unsigned long to kernel_ureg_t |
| * capability.c (get_cap_header, print_cap_header, print_cap_data): |
| Change address argument type from unsigned long to kernel_ureg_t. |
| |
| btrfs: change address argument type from unsigned long to kernel_ureg_t. |
| * btrfs.c (btrfs_print_qgroup_inherit): Change address argument type |
| from unsigned long to kernel_ureg_t. |
| |
| affinity: change address argument type from unsigned long to kernel_ureg_t |
| * affinity.c (print_affinitylist): Change address argument type from |
| unsigned long to kernel_ureg_t. |
| |
| aio: change address type from unsigned long to kernel_ureg_t. |
| * aio.c (print_iocb): Remove casts to unsigned long. |
| (print_iocbp, SYS_FUNC(io_submit)): Change address type |
| from unsigned long to kernel_ureg_t. |
| |
| mmsghdr: change address argument type from unsigned long to kernel_ureg_t |
| * mmsghdr.c (save_mmsgvec_namelen, decode_mmsgvec): Change |
| address argument type from unsigned long to kernel_ureg_t. |
| |
| msghdr: change address argument type from unsigned long to kernel_ureg_t |
| * msghdr.c (decode_msg_control): Change address argument type |
| from unsigned long to kernel_ureg_t. |
| |
| fetch_struct_stat64: change address argument type from unsigned long to kernel_ureg_t |
| * fetch_struct_stat64.c (fetch_struct_stat64): Change address argument |
| type from unsigned long to kernel_ureg_t. |
| |
| fetch_struct_stat: change address argument type from unsigned long to kernel_ureg_t |
| * fetch_struct_stat.c (fetch_struct_stat): Change address argument |
| type from unsigned long to kernel_ureg_t. |
| |
| fetch_struct_msghdr: change address argument type from unsigned long to kernel_ureg_t |
| * fetch_struct_msghdr.c (fetch_struct_msghdr): Change |
| address argument type from unsigned long to kernel_ureg_t. |
| |
| fetch_struct_mmsghdr: change address argument type from unsigned long to kernel_ureg_t |
| * fetch_struct_mmsghdr.c (fetch_struct_mmsghdr): Change |
| address argument type from unsigned long to kernel_ureg_t. |
| |
| decode_netlink: change address argument type from unsigned long to kernel_ureg_t |
| * defs.h (decode_netlink) Change address argument type |
| from unsigned long to kernel_ureg_t. |
| * netlink.c (fetch_nlmsghdr, decode_nlmsghdr_with_payload, |
| decode_netlink): Likewise. |
| |
| print_seccomp_*: change address argument type from unsigned long to kernel_ureg_t |
| * defs.h (print_seccomp_filter, print_seccomp_fprog): Change |
| address argument type from unsigned long to kernel_ureg_t. |
| * seccomp.c (print_seccomp_filter, print_seccomp_fprog, |
| decode_seccomp_set_mode_strict): Likewise. |
| |
| tprint_iov*: change address argument type from unsigned long to kernel_ureg_t |
| * defs.h (tprint_iov, tprint_iov_upto): Change address argument type |
| from unsigned long to kernel_ureg_t. |
| * io.c (tprint_iov, tprint_iov_upto): Likewise. |
| |
| print_array: change tracee address type from unsigned long to kernel_ureg_t |
| * defs.h (print_array): Change start_addr type from unsigned long |
| to kernel_ureg_t. |
| * util.c (print_array): Likewise. Change the type of all tracee |
| address variables from unsigned long to kernel_ureg_t. |
| |
| 2016-12-23 Dmitry V. Levin <ldv@altlinux.org> |
| |
| Rename LONG_LONG to ULONG_LONG and change it to return unsigned long long |
| In all places where LONG_LONG is used the destination already has type |
| unsigned long long, so it is quite natural to change LONG_LONG as well. |
| |
| * defs.h (LONG_LONG): Rename to ULONG_LONG, change return type |
| from long long to unsigned long long. All callers updated. |
| |
| 2016-12-23 Dmitry V. Levin <ldv@altlinux.org> |
| |
| mem: remove redundant casts. |
| * mem.c (SYS_FUNC(old_mmap)): Remove redundant cast |
| from kernel_ureg_t to unsigned long. |
| [S390] (SYS_FUNC(old_mmap_pgoff)): Remove redundant cast |
| from unsigned int to unsigned long. |
| |
| desc: remove redundant casts. |
| * desc.c (umove_kulong_array_or_printaddr): Remove redundant cast |
| from uint32_t to kernel_ulong_t. |
| (SYS_FUNC(pselect6)): Remove redundant casts from kernel_ulong_t |
| to unsigned long. |
| |
| 2016-12-22 Dmitry V. Levin <ldv@altlinux.org> |
| |
| print_sigevent: remove redundant cast. |
| * print_sigevent.c (print_sigevent): Remove redundant cast from |
| struct_sigevent.sigev_value.sival_ptr to unsigned long as the former |
| is not a pointer but an unsigned integer. |
| |
| tests: fix xattr.test for the case when listxattr returns a long list. |
| * tests/xattr.c (DEFAULT_STRLEN): New macro. |
| (main): Use it to limit the length passed to print_quoted_memory. |
| Print ellipsis when the list returned by listxattr is too long. |
| |
| 2016-12-22 Gabriel Laskar <gabriel@lse.epita.fr> |
| |
| tests: test for correct ellipsis with -s in xattr. |
| * tests/xattr-strings.c: New file. |
| * tests/xattr-strings.test: New test. |
| * tests/.gitignore: Add xattr-string. |
| * tests/Makefile.am (check_PROGRAMS): Likewise. |
| (DECODER_TESTS): Add xattr-string.test. |
| |
| 2016-12-22 Gabriel Laskar <gabriel@lse.epita.fr> |
| |
| xattr: use printstr_ex instead of print_quoted_string. |
| This fixes the display when using `-s` to limit the string size |
| of the values displayed by {get,set}xattr. |
| |
| * xattr.c (print_xattr_val): Remove static buffer. Use printstr_ex |
| instead of print_quoted_string. |
| |
| Reported-by: Марк Коренберг <socketpair@gmail.com> |
| |
| 2016-12-22 Eugene Syromyatnikov <evgsyr@gmail.com> |
| |
| tests: use scno.h in finit_module, kcmp, renameat2 tests. |
| * tests/finit_module.c: Include "scno.h". |
| * tests/kcmp.c: Likewise. |
| * tests/renameat2.c: Likewise. |
| |
| 2016-12-21 Dmitry V. Levin <ldv@altlinux.org> |
| |
| sock: cast pointers to kernel_ureg_t instead of unsigned long. |
| * sock.c (decode_ifconf): Cast ifconf.ifc_buf pointer to kernel_ureg_t |
| instead of unsigned long. |
| |
| scsi: cast pointers to kernel_ureg_t instead of unsigned long. |
| * scsi.c (print_sg_io_v3_req, print_sg_io_v3_res): Cast sg_io_hdr.cmdp, |
| sg_io_hdr.dxferp, and sg_io_hdr.sbp pointers to kernel_ureg_t instead |
| of unsigned long. |
| |
| mtd: cast pointers to kernel_ureg_t instead of unsigned long. |
| * mtd.c (decode_mtd_oob_buf): Cast mtd_oob_buf.ptr pointer |
| to kernel_ureg_t instead of unsigned long. |
| |
| msghdr: cast pointers to kernel_ureg_t instead of unsigned long. |
| * msghdr.c (print_struct_msghdr): Cast msghdr.msg_iov and |
| msghdr.msg_control pointers to kernel_ureg_t instead of unsigned long. |
| |
| evdev: cast tcp->u_rval to kernel_ureg_t instead of unsigned long. |
| * evdev.c (decode_bitset): Cast tcp->u_rval to kernel_ureg_t |
| instead of unsigned long. |
| |
| evdev: cast pointers to kernel_ureg_t instead of unsigned long. |
| * evdev.c (ff_effect_ioctl): Cast ff_periodic_effect.custom_data |
| pointer to kernel_ureg_t instead of unsigned long. |
| |
| btrfs: cast pointers to kernel_ureg_t instead of unsigned long. |
| * btrfs.c (btrfs_ioctl): Cast btrfs_ioctl_send_args.clone_sources |
| and btrfs_ioctl_vol_args_v2.qgroup_inherit pointers to kernel_ureg_t |
| instead of unsigned long. |
| |
| Rework ifdefery around print_user_desc. |
| * configure.ac (AC_CHECK_TYPES): Check for struct user_desc |
| in <asm/ldt.h>. |
| * clone.c (print_tls_arg): New function. |
| (SYS_FUNC(clone)): Use it. |
| (print_user_desc): Move prototype ... |
| * defs.h [HAVE_STRUCT_USER_DESC]: ... here. |
| * ldt.c: Check for HAVE_STRUCT_USER_DESC instead of architectures. |
| * linux/dummy.h: Likewise. |
| |
| Introduce DECL_IOCTL macro to declare *_ioctl functions. |
| * defs.h (DECL_IOCTL): New macro. |
| (dm_ioctl, file_ioctl, fs_x_ioctl, loop_ioctl, ptp_ioctl, scsi_ioctl, |
| sock_ioctl, term_ioctl, ubi_ioctl, uffdio_ioctl): Rewrite prototypes |
| using DECL_IOCTL. |
| |
| Introduce DECL_PRINT* macros to declare printnum_* and printpair_* |
| * defs.h (DECL_PRINTNUM, DECL_PRINTPAIR): New macros. |
| (printnum_short, printnum_int, printnum_int64): Rewrite prototypes |
| using DECL_PRINTNUM. |
| (printpair_int, printpair_int64): Rewrite prototypes |
| using DECL_PRINTPAIR. |
| |
| ioctl: use uintptr_t for casts between 32-bit integers and pointers. |
| * ioctl.c (compare): Cast pointer to uintptr_t before assigning |
| it to an integer. |
| (ioctl_lookup): Cast integer to uintptr_t before passing it |
| as a pointer. |
| |
| scsi: use umove_or_printaddr. |
| * scsi.c (scsi_ioctl): Use umove_or_printaddr. |
| |
| Remove dumpiov wrapper. |
| * defs.h (dumpiov): Remove. |
| * syscall.c (dumpio): Use dumpiov_upto instead of dumpiov. |
| |
| travis: fix enabling of gcc -Werror builds. |
| * travis-build.sh: Use DISTCHECK_CONFIGURE_FLAGS instead |
| of CHECK_CONFIGURE_FLAGS and ENABLE_GCC_WERROR. |
| [$CC == gcc]: Add --enable-gcc-Werror to DISTCHECK_CONFIGURE_FLAGS |
| instead of ENABLE_GCC_WERROR. |
| [$CHECK == coverage]: Add --enable-code-coverage |
| to DISTCHECK_CONFIGURE_FLAGS instead of CHECK_CONFIGURE_FLAGS. |
| |
| printaddr: change argument type to kernel_ureg_t. |
| * defs.h (printaddr): Change argument type from unsigned long |
| to kernel_ureg_t. |
| |
| tests: check decoding of unreadable ip_mreq and ipv6_mreq structures. |
| * tests/ip_mreq.c (main): Check short read. |
| |
| tests: rewrite ip_mreq.c using arrays and iterators. |
| * tests/ip_mreq.c (main): Create arrays of setsockopt arguments to test. |
| Iterate over these arrays invoking setsockopt and printing expected |
| output. |
| |
| tests: rewrite ip_mreq.c using tail_alloc. |
| * tests/ip_mreq.c (main): Allocate objects of struct ip_mreq |
| and struct ipv6_mreq using tail_alloc instead of using stack. |
| |
| tests: rewrite ip_mreq.c without asserts. |
| * tests/ip_mreq.c: Do not include <assert.h>. |
| (main): Do not use assert. Use sprintrc instead of errno2name. |
| |
| 2016-12-20 Dmitry V. Levin <ldv@altlinux.org> |
| |
| Remove NEED_PTRACE_PROTOTYPE_WORKAROUND. |
| Remove the workaround for broken ptrace prototypes |
| that seems to be unneeded for quite a long time. |
| |
| * defs.h [NEED_PTRACE_PROTOTYPE_WORKAROUND]: Remove. |
| |
| 2016-12-20 Dmitry V. Levin <ldv@altlinux.org> |
| |
| tests: use scno.h in tests of relatively new syscalls. |
| * tests/add_key.c: Include "scno.h" after <asm/unistd.h>. |
| * tests/copy_file_range.c: Likewise. |
| * tests/execveat.c: Likewise. |
| * tests/kexec_file_load.c: Likewise. |
| * tests/membarrier.c: Likewise. |
| * tests/memfd_create.c: Likewise. |
| * tests/mlock2.c: Likewise. |
| * tests/pkey_alloc.c: Likewise. |
| * tests/pkey_free.c: Likewise. |
| * tests/pkey_mprotect.c: Likewise. |
| * tests/preadv2-pwritev2.c: Likewise. |
| * tests/userfaultfd.c: Likewise. |
| |
| 2016-12-20 Dmitry V. Levin <ldv@altlinux.org> |
| |
| tests: generate scno.h from syscallent.h for use by other tests. |
| Provide scno.h with fallback definitions of all __NR_* constants known |
| to strace for the personbality being tested. |
| |
| Some tests need just __NR_* constants without any kernel support. |
| Such tests can include "scno.h" after <asm/unistd.h> to get definitions |
| of these constants when system headers are too old. |
| |
| * tests/generate_scno.c: New file. |
| * tests/.gitignore: Add generate_scno. |
| * tests/Makefile.am (check_PROGRAMS): Likewise. |
| (scno.h): New rule. |
| (BUILT_SOURCES, CLEANFILES): Add scno.h. |
| |
| 2016-12-20 Dmitry V. Levin <ldv@altlinux.org> |
| |
| tests: fix potential errno clobbering in membarrier test. |
| * tests/membarrier.c (main): Save errno. |
| |
| 2016-12-20 Dmitry V. Levin <ldv@altlinux.org> |
| |
| Do not use widen_to_ulong in kexec.c and process_vm.c. |
| Automatic argument truncation makes use of this function redundant. |
| |
| * kexec.c (SYS_FUNC(kexec_load)): Do not invoke widen_to_ulong. |
| * process_vm.c (SYS_FUNC(process_vm_readv), |
| SYS_FUNC(process_vm_writev)): Likewise. |
| |
| 2016-12-20 Dmitry V. Levin <ldv@altlinux.org> |
| |
| x32: implement automatic argument truncation for compat syscalls. |
| x32 syscalls starting with number 512 are compat syscalls that operate |
| on compat types. Set COMPAT_SYSCALL_TYPES flag to these syscall entries |
| and make get_syscall_args truncate arguments of syscalls that have this |
| flag set, to avoid unpleasant alternative of adding multiple |
| widen_to_ulong invocations to individual syscall parsers. |
| |
| preadv, pwritev, preadv2, and pwritev2 are exceptions: while these |
| syscalls operate on compat types, the offset argument has a regular |
| 64-bit type, so the automatic argument truncation cannot be applied. |
| |
| * defs.h (COMPAT_SYSCALL_TYPES): New macro. |
| * syscall.c (CST): New macro, defined to COMPAT_SYSCALL_TYPES. |
| * linux/ia64/syscallent.h: Do not include "../i386/syscallent.h" |
| unless [CST > 0]. |
| * linux/x32/syscallent.h [512..533, 536..545]: Add CST flag. |
| * linux/x86_64/get_syscall_args.c (get_syscall_args): Truncate arguments |
| of compat syscalls to 32-bit values. |
| * tests/ksysent.c (CST): New macro, defined to 0. |
| * tests/nsyscalls.c (CST): Likewise. |
| |
| 2016-12-20 Dmitry V. Levin <ldv@altlinux.org> |
| |
| x32: fix decoding of mprotect and pkey_mprotect syscall arguments. |
| As there are no compat versions of mprotect or pkey_mprotect syscalls |
| in x32 personality, "addr", "len", and "prot" syscall arguments have |
| kernel_ulong_t type and should be printed accordingly. |
| |
| * mem.c (do_mprotect): Retrieve 1st, 2nd and 3rd arguments using |
| getarg_klu, print them using printaddr_klu, PRI_klu format, |
| and printflags64, correspondingly. |
| |
| 2016-12-20 Dmitry V. Levin <ldv@altlinux.org> |
| |
| Make tprint_iov function a static inline wrapper. |
| * io.c (tprint_iov): Move ... |
| * defs.h: ... here, add static inline keywords. |
| |
| 2016-12-20 Eugene Syromyatnikov <evgsyr@gmail.com> |
| |
| x32: fix decoding of 3rd argument of preadv* and pwritev* syscalls. |
| In x32 personality these syscalls use compat type for the 3rd argument, |
| therefore it has to be truncated there. |
| |
| * io.c (do_preadv, do_pwritev): Truncate tcp->u_arg[2] using |
| widen_to_ulong. |
| |
| 2016-12-19 Eugene Syromyatnikov <evgsyr@gmail.com> |
| |
| tests: fix preadv2-pwritev2 test on x32. |
| On x32 p(read|write)v(|2) syscalls are implemented via compat, which |
| truncates len argument to unsigned int. |
| |
| * tests/preadv2-pwritev2.c (main): Print vlen argument as unsigned long. |
| |
| 2016-12-19 Eugene Syromyatnikov <evgsyr@gmail.com> |
| |
| kexec: fix for the x32 ABI. |
| There is no compat (and no 32-bit version, ever) for x32 ABI, so |
| kernel's long type should be used for arguments' values. |
| |
| The only remaining thing is a pointer to cmdline string, but it is |
| currently broken on x32 anyway. |
| |
| * kexec.c (SYS_FUNC(kexec_file_load)): Print the cmdline_len argument |
| as kernel long, retrieve it via getarg_klu; use printflags64 for |
| printing the flags argument, retrieve it via getarg_klu. |
| |
| 2016-12-19 Dmitry V. Levin <ldv@altlinux.org> |
| |
| Check for current_klongsize instead of current_personality where appropriate |
| current_klongsize checks are more universal, therefore they are usually |
| shorter and easier to comprehend. |
| |
| * desc.c (umove_kulong_array_or_printaddr): Check for current_klongsize |
| instead of current_personality and current_wordsize. |
| * io.c (print_lld_from_low_high_val): Likewise. |
| * lseek.c (SYS_FUNC(lseek)): Likewise. |
| * resource.c (decode_rlimit): Likewise. |
| * syscall.c (is_negated_errno): Likewise. |
| * util.c (getllval, getarg_klu): Likewise. |
| |
| 2016-12-19 Dmitry V. Levin <ldv@altlinux.org> |
| |
| Use kernel_ulong_t instead of unsigned long long where appropriate. |
| * defs.h (printaddr_ull): Rename to printaddr_klu, change argument |
| type from unsigned long long to kernel_ulong_t. All callers updated. |
| (getarg_ull): Rename to getarg_klu, change return value type |
| from unsigned long long to kernel_ulong_t. All callers updated. |
| (PRI_kl, PRI_kld, PRI_klu, PRI_klx): New macros. |
| * bjm.c (SYS_FUNC(init_module)): Print kernel_ulong_t type using |
| PRI_klu format. |
| * desc.c (SYS_FUNC(pselect6)): Likewise. |
| * fadvise.c (SYS_FUNC(fadvise64)): Likewise. |
| * lookup_dcookie.c (SYS_FUNC(lookup_dcookie)): Likewise. |
| * mq.c (SYS_FUNC(mq_timedsend), SYS_FUNC(mq_timedreceive)): Likewise. |
| * kcmp.c (SYS_FUNC(kcmp)): Print kernel_ulong_t type using |
| PRI_klx format. |
| * keyctl.c (SYS_FUNC(keyctl)): Likewise. |
| * pkeys.c (SYS_FUNC(pkey_alloc)): Likewise. |
| * prctl.c (print_prctl_args, SYS_FUNC(prctl), SYS_FUNC(arch_prctl)): |
| Print kernel_ulong_t type using PRI_kld, PRI_klu, or PRI_klx format. |
| * util.c (printaddr_ull): Rename to printaddr_klu, change argument |
| type from unsigned long long to kernel_ulong_t, print it using |
| PRI_klx format. |
| (getarg_ull): Rename to getarg_klu, change return value type |
| from unsigned long long to kernel_ulong_t, print it using |
| PRI_klx format. |
| |
| fcntl.c: print 64-bit fields of struct_kernel_flock64 using PRId64 format |
| * fcntl.c (print_struct_flock64): Print l_start and l_len fields |
| of struct_kernel_flock64 using PRId64 format. |
| |
| v4l2.c: print v4l2_ext_control.value64 using PRId64 format. |
| * v4l2.c (print_v4l2_ext_control): Print value64 field |
| of struct_v4l2_ext_control using PRId64 format. |
| |
| perf.c: print perf_event_attr.__reserved_1 using PRIx64 format. |
| * perf.c (print_perf_event_attr): Print __reserved_1 field |
| of perf_event_attr using PRIx64 format. |
| |
| btrfs.c: print 64-bit fields of btrfs_ioctl_vol_args_v2 using PRIu64 format |
| * block.c (btrfs_ioctl): Print size and transid fields |
| of struct_btrfs_ioctl_vol_args_v2 using PRIu64 format. |
| |
| block.c: change type of long long fileds to int64_t. |
| * block.c (struct_blkpg_partition): Change type of start and length |
| fields from long long to int64_t. |
| (print_blkpg_req): Print them using PRId64 format. |
| |
| 2016-12-19 Eugene Syromyatnikov <evgsyr@gmail.com> |
| |
| Introduce current_klongsize in addition to current_wordsize. |
| Subsequent commits are going to use current_klongsize |
| as the tracee's size of kernel_ulong_t type. |
| |
| * defs.h (PERSONALITY0_KLONGSIZE): New macro. |
| [X86_64] (PERSONALITY2_KLONGSIZE): Likewise. |
| [SUPPORTED_PERSONALITIES > 1] (PERSONALITY1_KLONGSIZE): Likewise. |
| [SUPPORTED_PERSONALITIES == 1] (current_klongsize): Likewise. |
| [SUPPORTED_PERSONALITIES == 2 && PERSONALITY0_KLONGSIZE == |
| PERSONALITY1_KLONGSIZE] (current_klongsize): Likewise. |
| [SUPPORTED_PERSONALITIES != 1 && (SUPPORTED_PERSONALITIES != 2 || |
| PERSONALITY0_KLONGSIZE != PERSONALITY1_KLONGSIZE)] (current_klongsize): |
| New variable prototype. |
| * syscall.c [!current_klongsize] (current_klongsize): New variable. |
| [!current_klongsize] (personality_klongsize): New array. |
| (set_personality) [!current_klongsize]: Update current_klongsize |
| with the appropriate value from personality_klongsize. |
| |
| 2016-12-19 Dmitry V. Levin <ldv@altlinux.org> |
| |
| configure: define SIZEOF_KERNEL_LONG_T macro. |
| Provide SIZEOF_KERNEL_LONG_T macro in addition to SIZEOF_LONG and |
| SIZEOF_LONG_LONG for checking of kernel_long_t and kernel_ulong_t |
| types at the time of preprocessing. |
| |
| * configure.ac (AC_CHECK_SIZEOF): Add kernel_long_t. |
| |
| 2016-12-19 Dmitry V. Levin <ldv@altlinux.org> |
| |
| Remove getarg_ll. |
| This function has never been used in the code, and in perspective |
| the whole ext_arg thing will go away. |
| |
| * defs.h (getarg_ll): Remove prototype. |
| * util.c (getarg_ll): Remove. |
| |
| 2016-12-19 Dmitry V. Levin <ldv@altlinux.org> |
| |
| struct tcb: make types of syscall arguments unsigned. |
| This is the first step in the direction of revisiting current practice |
| of indiscriminate use of signed types for syscall arguments and memory |
| addresses. |
| |
| * kernel_types.h (kernel_ureg_t): New type, typedef to unsigned long. |
| * defs.h (struct tcb): Change type of u_arg from long to kernel_ureg_t. |
| [HAVE_STRUCT_TCB_EXT_ARG]: Change type of ext_arg from long long |
| to unsigned long long. |
| * desc.c (decode_select): Change type of syscall arguments from long |
| to kernel_ureg_t. |
| (SYS_FUNC(oldselect)): Change type of select_args from long |
| to kernel_ureg_t. |
| * io.c (print_lld_from_low_high_val): Remove no longer needed cast |
| of syscall arguments to unsigned long. |
| * lseek.c (SYS_FUNC(lseek)): Cast syscall argument from unsigned long |
| to long. |
| * mem.c (print_mmap): Change type of syscall arguments from long |
| to kernel_ureg_t. |
| (SYS_FUNC(old_mmap), SYS_FUNC(old_mmap_pgoff)): Change type of u_arg |
| from long to kernel_ureg_t. |
| (SYS_FUNC(mmap), SYS_FUNC(mmap_pgoff), SYS_FUNC(mmap_pgoff)): Remove |
| no longer needed cast of syscall arguments to unsigned long. |
| * pathtrace.c (pathtrace_match): Change type of args and select_args |
| from long to kernel_ureg_t. |
| * util.c (getarg_ull): Remove no longer needed casts of syscall |
| arguments to unsigned types. |
| |
| 2016-12-19 Dmitry V. Levin <ldv@altlinux.org> |
| |
| s390: fix decoding of mmap2 syscall when arguments are not available. |
| * mem.c [S390] (SYS_FUNC(old_mmap_pgoff)): Use umove_or_printaddr |
| instead of umoven to fetch mmap arguments, fix return value when this |
| fetch fails. |
| |
| Fix pathmatch of oldselect syscall on 64-bit architectures. |
| * pathtrace.c (pathtrace_match): Fix fetching of 32-bit oldselect |
| arguments on 64-bit architectures. |
| |
| Cleanup oldselect. |
| * desc.c (SYS_FUNC(oldselect)): Rewrite without use of macros. |
| |
| 2016-12-18 Dmitry V. Levin <ldv@altlinux.org> |
| |
| Change scno type from long to unsigned long. |
| Use an unsigned type for syscall numbers as they are not intended |
| for signed arithmetics. Introduce kernel_scno_t as a typedef |
| to unsigned long, that could be changed later to kernel_ulong_t. |
| |
| * kernel_types.h (kernel_scno_t): New type, typedef to unsigned long. |
| * defs.h (struct tcb): Change type of scno field from long |
| to kernel_scno_t. |
| (syscall_name): Change argument type from long to kernel_scno_t. |
| (scno_in_range, scno_is_valid): Change argument type from unsigned long |
| to kernel_scno_t. |
| * linux/aarch64/set_scno.c (arch_set_scno): Change scno argument type |
| from long to kernel_scno_t. |
| * linux/alpha/set_scno.c (arch_set_scno): Likewise. |
| * linux/arc/set_scno.c (arch_set_scno): Likewise. |
| * linux/arm/set_scno.c (arch_set_scno): Likewise. |
| * linux/avr32/set_scno.c (arch_set_scno): Likewise. |
| * linux/bfin/set_scno.c (arch_set_scno): Likewise. |
| * linux/crisv10/set_scno.c (arch_set_scno): Likewise. |
| * linux/hppa/set_scno.c (arch_set_scno): Likewise. |
| * linux/i386/set_scno.c (arch_set_scno): Likewise. |
| * linux/ia64/set_scno.c (arch_set_scno): Likewise. |
| * linux/m68k/set_scno.c (arch_set_scno): Likewise. |
| * linux/metag/set_scno.c (arch_set_scno): Likewise. |
| * linux/microblaze/set_scno.c (arch_set_scno): Likewise. |
| * linux/mips/set_scno.c (arch_set_scno): Likewise. |
| * linux/nios2/set_scno.c (arch_set_scno): Likewise. |
| * linux/or1k/set_scno.c (arch_set_scno): Likewise. |
| * linux/powerpc/set_scno.c (arch_set_scno): Likewise. |
| * linux/riscv/set_scno.c (arch_set_scno): Likewise. |
| * linux/s390/set_scno.c (arch_set_scno): Likewise. |
| * linux/sh/set_scno.c (arch_set_scno): Likewise. |
| * linux/sh64/set_scno.c (arch_set_scno): Likewise. |
| * linux/sparc/set_scno.c (arch_set_scno): Likewise. |
| * linux/tile/set_scno.c (arch_set_scno): Likewise. |
| * linux/x86_64/set_scno.c (arch_set_scno): Likewise. |
| * linux/xtensa/set_scno.c (arch_set_scno): Likewise. |
| * linux/aarch64/get_scno.c (arch_get_scno): Change scno variable type |
| from long to kernel_scno_t. |
| * linux/alpha/get_scno.c (arch_get_scno): Likewise. |
| * linux/arm/get_scno.c (arch_get_scno): Likewise. |
| * linux/sh/get_scno.c (arch_get_scno): Likewise. |
| * linux/x86_64/get_scno.c (arch_get_scno): Likewise. |
| * syscall.c (arch_set_scno): Likewise. |
| (shuffle_scno): Change return type from long to kernel_scno_t. |
| (syscall_name): Change argument type from long to kernel_scno_t. |
| |
| 2016-12-18 Dmitry V. Levin <ldv@altlinux.org> |
| |
| Lowercase SCNO_IN_RANGE and SCNO_IS_VALID. |
| * defs.h (SCNO_IN_RANGE): Rename to scno_in_range. All callers updated. |
| (SCNO_IS_VALID): Rename to scno_is_valid. All callers updated. |
| |
| Turn SCNO_IN_RANGE and SCNO_IS_VALID into static inline functions. |
| * defs.h (SCNO_IN_RANGE, SCNO_IS_VALID): Transform into static inline |
| functions. |
| |
| count.c: use syserror instead of direct u_error access. |
| * count.c (count_syscall): Use syserror instead of u_error. |
| |
| Replace "(unsigned long) -1L" with -1UL. |
| * defs.h (dumpiov): Replace "(unsigned long) -1L" with -1UL. |
| * io.c (print_iovec, tprint_iov): Likewise. |
| * msghdr.c (SYS_FUNC(sendmsg)): Likewise. |
| * syscall.c (dumpio): Likewise. |
| * poll.c (decode_poll_exiting): Replace "(unsigned int) -1" with -1U. |
| |
| Add toplevel recursive check-valgrind rule. |
| * Makefile.am (.PHONY): Add check-valgrind-local. |
| (check-valgrind): New rule. |
| * configure.ac (AM_EXTRA_RECURSIVE_TARGETS): Add it. |
| |
| m4: fix check-valgrind-* rules generated by AX_VALGRIND_CHECK. |
| * m4/ax_valgrind_check.m4 (check-valgrind-$(1)): Depend |
| on $(BUILT_SOURCES), honor $(AM_MAKEFLAGS), build check-am |
| instead of check-TESTS. |
| |
| travis: do coverage using a dedicated build. |
| * .travis.yml (after_success): Remove. |
| (matrix): Create an entry for the regular x86_64 target. |
| * travis-success.sh: Merge into ... |
| * travis-build.sh: ... this file. Disable optimization |
| for coverage builds. |
| * travis-install.sh: Rename COVERAGE=true to CHECK=coverage. |
| |
| 2016-12-17 Dmitry V. Levin <ldv@altlinux.org> |
| |
| mips n32: provide fallback definitions of kernel_long_t/kernel_ulong_t. |
| * kernel_types.h [!(HAVE___KERNEL_LONG_T && HAVE___KERNEL_ULONG_T) && |
| LINUX_MIPSN32] (kernel_long_t, kernel_ulong_t): Define to long long types. |
| |
| 2016-12-17 Eugene Syromyatnikov <evgsyr@gmail.com> |
| |
| util: simplify definitions of bit mask constants in umovestr. |
| * util.c (umovestr): Do not check for SIZEOF_LONG in definitions |
| of bit mask constants. |
| |
| tests: check decoding of prctl operations without arguments. |
| * tests/prctl-no-args.c: New file. |
| * tests/prctl-no-args.test: New test. |
| * tests/.gitignore: Add prctl-no-args. |
| * tests/Makefile.am (check_PROGRAMS): Likewise. |
| (DECODER_TESTS): Add prctl-no-args.test. |
| |
| tests: check decoding of prctl PR_[GS]ET_SECUREBITS operations. |
| * tests/prctl-securebits.c: New file. |
| * tests/prctl-securebits.test: New test. |
| * tests/.gitignore: Add prctl-securebits. |
| * tests/Makefile.am (check_PROGRAMS): Likewise. |
| (DECODER_TESTS): Add prctl-securebits.test. |
| |
| tests: check decoding of prctl PR_[GS]ET_DUMPABLE operations. |
| * tests/prctl-dumpable.c: New file. |
| * tests/prctl-dumpable.test: New test. |
| * tests/.gitignore: Add prctl-dumpable. |
| * tests/Makefile.am (check_PROGRAMS): Likewise. |
| (DECODER_TESTS): Add prctl-dumpable.test. |
| |
| prctl: implement decoding of SUID_DUMP_* constants in PR_[GS]ET_DUMPABLE |
| * xlat/pr_dumpable.in: New file. |
| * prctl.c: Include "xlat/pr_dumpable.h". |
| (SYS_FUNC(prctl)): Decode returned value of PR_GET_DUMPABLE operation |
| and the second syscall argument of PR_SET_DUMPABLE operation |
| as SUID_DUMP_* constants. |
| |
| 2016-12-16 Dmitry V. Levin <ldv@altlinux.org> |
| |
| Include "kernel_types.h" in defs.h and tests/tests.h. |
| As kernel_ulong_t type is going to be used in the definition |
| of struct tcb and in many function prototypes, make it readily |
| available for every source file by including "kernel_types.h" |
| in defs.h and tests/tests.h files. |
| |
| * defs.h: Include "kernel_types.h". |
| * tests/tests.h: Likewise. |
| * desc.c: Do not include "kernel_types.h". |
| * dirent.c: Likewise. |
| * keyctl.c: Likewise. |
| * syscall.c: Likewise. |
| * linux/asm_stat.h: Likewise. |
| * tests/answer.c: Likewise. |
| * tests/epoll_pwait.c: Likewise. |
| * tests/fanotify_init.c: Likewise. |
| * tests/fanotify_mark.c: Likewise. |
| * tests/file_handle.c: Likewise. |
| * tests/ftruncate.c: Likewise. |
| * tests/getdents.c: Likewise. |
| * tests/init_delete_module.h: Likewise. |
| * tests/inotify.c: Likewise. |
| * tests/inotify_init1.c: Likewise. |
| * tests/ioprio.c: Likewise. |
| * tests/ipc_msgbuf.c: Likewise. |
| * tests/kcmp.c: Likewise. |
| * tests/kexec_file_load.c: Likewise. |
| * tests/kexec_load.c: Likewise. |
| * tests/keyctl.c: Likewise. |
| * tests/lookup_dcookie.c: Likewise. |
| * tests/lseek.c: Likewise. |
| * tests/mq_sendrecv.c: Likewise. |
| * tests/nsyscalls.c: Likewise. |
| * tests/pkey_alloc.c: Likewise. |
| * tests/pkey_free.c: Likewise. |
| * tests/pkey_mprotect.c: Likewise. |
| * tests/prctl-pdeathsig.c: Likewise. |
| * tests/prctl-tsc.c: Likewise. |
| * tests/preadv2-pwritev2.c: Likewise. |
| * tests/process_vm_readv_writev.c: Likewise. |
| * tests/read-write.c: Likewise. |
| * tests/setfsugid.c: Likewise. |
| * tests/setns.c: Likewise. |
| * tests/truncate.c: Likewise. |
| * tests/unshare.c: Likewise. |
| * tests/xgetrlimit.c: Likewise. |
| |
| 2016-12-15 Dmitry V. Levin <ldv@altlinux.org> |
| |
| Post-release administrivia. |
| * NEWS: Add a header line for the next release. |
| * debian/changelog.in: Add a changelog entry for 4.15-1. |
| * strace.spec.in: Likewise. |
| |
| 2016-12-14 Dmitry V. Levin <ldv@altlinux.org> |
| |
| xlat: provide fallback definitions for NETLINK_* constants. |
| As new constants have been added gradually over kernel releases, define |
| all constant values to make newer constants decoded properly when strace |
| is built with older kernel headers. |
| |
| * xlat/netlink_protocols.in: Add default values for constants. |
| * net.c [!NETLINK_SOCK_DIAG && NETLINK_INET_DIAG]: Remove. |
| * socketutils.c: Likewise. |
| |
| 2016-12-14 Dmitry V. Levin <ldv@altlinux.org> |
| |
| tests: relax getaffinity return value check in tests/sched_xetaffinity.c |
| * tests/sched_xetaffinity.c (errstr): New variable. |
| (getaffinity, setaffinity): Initialize it. |
| (main): Use it. Allow getaffinity return value to be less than |
| its cpusetsize argument. |
| |
| tests: fix threads-execve.test for large pids. |
| * tests/threads-execve.c (main): Fix expected output for large pids. |
| |
| 2016-12-13 Dmitry V. Levin <ldv@altlinux.org> |
| |
| Prepare for 4.15 release. |
| * NEWS: Update for 4.15 release. |
| |
| .mailmap: add addresses of Thomas De Schampheleire. |
| * .mailmap: Add both addresses of Thomas De Schampheleire here to avoid |
| duplications in CREDITS file. |
| |
| 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. |
| |
| 2016-12-13 Dmitry V. Levin <ldv@altlinux.org> |
| |
| 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. |
| |
| 2016-12-13 Eugene Syromyatnikov <evgsyr@gmail.com> |
| |
| tests: fix typo in comment inside prctl-tsc.c. |
| |
| 2016-12-13 Sean Stangl <sstangl@mozilla.com> |
| Dmitry V. Levin <ldv@altlinux.org> |
| |
| 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. |
| |
| 2016-12-13 Eugene Syromyatnikov <evgsyr@gmail.com> |
| Dmitry V. Levin <ldv@altlinux.org> |
| |
| Update NEWS. |
| |
| 2016-12-07 Dmitry V. Levin <ldv@altlinux.org> |
| |
| 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. |
| |
| 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. |
| |
| 2016-12-07 Eugene Syromyatnikov <evgsyr@gmail.com> |
| |
| tests: add descriptions to prctl-pdeathsig and prctl-tsc tests. |
| |
| 2016-12-07 Dmitry V. Levin <ldv@altlinux.org> |
| |
| 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. |
| |
| 2016-12-07 Thomas De Schampheleire <thomas.de_schampheleire@nokia.com> |
| |
| 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. |
| |
| 2016-12-07 Dmitry V. Levin <ldv@altlinux.org> |
| |
| 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. |
| |
| 2016-12-07 Dmitry V. Levin <ldv@altlinux.org> |
| |
| 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. |
| |
| 2016-12-07 Dmitry V. Levin <ldv@altlinux.org> |
| |
| 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. |
| |
| 2016-12-07 Dmitry V. Levin <ldv@altlinux.org> |
| |
| 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. |
| |
| 2016-12-06 Dmitry V. Levin <ldv@altlinux.org> |
| |
| 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. |
| |
| 2016-12-06 Dmitry V. Levin <ldv@altlinux.org> |
| |
| 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. |
| |
| 2016-12-06 Dmitry V. Levin <ldv@altlinux.org> |
| |
| 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. |
| |
| 2016-12-06 Dmitry V. Levin <ldv@altlinux.org> |
| |
| 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. |
| |
| 2016-12-06 Dmitry V. Levin <ldv@altlinux.org> |
| |
| 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. |
| |
| 2016-12-06 Dmitry V. Levin <ldv@altlinux.org> |
| |
| 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. |
| |
| 2016-12-06 Dmitry V. Levin <ldv@altlinux.org> |
| |
| 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. |
| |
| 2016-12-05 Dmitry V. Levin <ldv@altlinux.org> |
| |
| 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. |
| |
| 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. |
| |
| 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. |
| |
| 2016-12-05 Dmitry V. Levin <ldv@altlinux.org> |
| |
| 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. |
| |
| 2016-12-05 Dmitry V. Levin <ldv@altlinux.org> |
| |
| 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. |
| |
| 2016-12-05 Dmitry V. Levin <ldv@altlinux.org> |
| |
| 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. |
| |
| 2016-12-05 Dmitry V. Levin <ldv@altlinux.org> |
| |
| affinity: pass 0 as a pid to sched_getaffinity. |
| * affinity.c (get_cpuset_size): Pass 0 instead of getpid() |
| to sched_getaffinity. |
| |
| affinity: document the method of finding out the cpuset size. |
| * affinity.c (get_cpuset_size): Add a comment about sched_getaffinity. |
| |
| 2016-12-05 Dmitry V. Levin <ldv@altlinux.org> |
| |
| 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. |
| |
| 2016-12-04 Dmitry V. Levin <ldv@altlinux.org> |
| |
| 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. |
| |
| 2016-12-04 Eugene Syromyatnikov <evgsyr@gmail.com> |
| |
| Update NEWS. |
| |
| 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. |
| |
| 2016-12-04 Eugene Syromyatnikov <evgsyr@gmail.com> |
| Elvira Khabirova <lineprinter0@gmail.com> |
| |
| 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. |
| |
| 2016-12-04 Eugene Syromyatnikov <evgsyr@gmail.com> |
| Elvira Khabirova <lineprinter0@gmail.com> |
| |
| 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. |
| |
| 2016-12-01 Eugene Syromyatnikov <evgsyr@gmail.com> |
| |
| tests: additional check for PTRACE_SETSIGINFO ptrace command. |
| * tests/ptrace.c (main): Add an additional PTRACE_SETSIGINFO check. |
| |
| 2016-12-01 Dmitry V. Levin <ldv@altlinux.org> |
| |
| 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. |
| |
| 2016-12-01 Eugene Syromyatnikov <evgsyr@gmail.com> |
| |
| 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. |
| |
| 2016-12-01 Eugene Syromyatnikov <evgsyr@gmail.com> |
| |
| affinity: print cpu set as an array. |
| * affinity.c: Add comma between elements of cpu set. |
| * tests/sched_xetaffinity.c (main): Update expected output. |
| |
| 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. |
| |
| 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. |
| |
| 2016-12-01 Elvira Khabirova <lineprinter0@gmail.com> |
| |
| 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. |
| |
| 2016-11-30 Eugene Syromyatnikov <evgsyr@gmail.com> |
| Elvira Khabirova <lineprinter0@gmail.com> |
| |
| 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. |
| |
| 2016-11-30 Eugene Syromyatnikov <evgsyr@gmail.com> |
| |
| 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. |
| |
| 2016-11-30 JingPiao Chen <chenjingpiao@foxmail.com> |
| |
| 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. |
| |
| 2016-11-30 Dmitry V. Levin <ldv@altlinux.org> |
| |
| syscall: Simplify strip_prefix. |
| * syscall.c (strip_prefix): Use strncmp instead of strlen+memcmp. |
| |
| 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. |
| |
| 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. |
| |
| dumpio: remove useless check. |
| * syscall.c (dumpio): Remove SEN_printargs check. Use tcp->s_ent->sen |
| directly. |
| |
| 2016-11-29 Dmitry V. Levin <ldv@altlinux.org> |
| |
| 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. |
| |
| 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. |
| |
| x32: wire up preadv2 and pwritev2 syscalls. |
| * linux/x32/syscallent.h [546]: Add preadv2 entry. |
| [547]: Add pwritev2 entry. |
| |
| 2016-11-29 Eugene Syromyatnikov <evgsyr@gmail.com> |
| Elvira Khabirova <lineprinter0@gmail.com> |
| |
| 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. |
| |
| 2016-11-29 Elvira Khabirova <lineprinter0@gmail.com> |
| |
| 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. |
| |
| 2016-11-29 Dmitry V. Levin <ldv@altlinux.org> |
| |
| 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. |
| |
| 2016-11-29 Dmitry V. Levin <ldv@altlinux.org> |
| |
| 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. |
| |
| 2016-11-29 Eugene Syromyatnikov <evgsyr@gmail.com> |
| |
| 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. |
| |
| tests: add more utime checks. |
| * tests/utime.c: Include <unistd.h> and <asm/unistd.h>. |
| (main): Add checks for invalid pointers. |
| |
| 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. |
| |
| 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. |
| |
| 2016-11-29 Eugene Syromyatnikov <evgsyr@gmail.com> |
| |
| 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. |
| |
| 2016-11-29 Eugene Syromyatnikov <evgsyr@gmail.com> |
| |
| 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. |
| |
| 2016-11-29 Eugene Syromyatnikov <evgsyr@gmail.com> |
| |
| 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. |
| |
| 2016-11-28 Dmitry V. Levin <ldv@altlinux.org> |
| |
| tests: fix "comparison between signed and unsigned" compilation warnings |
| * tests/readv.c (main): Cast r_len to int. |
| * tests/preadv2-pwritev2.c (dumpio): Likewise. |
| |
| 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. |
| |
| 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. |
| |
| tests: check basic options syntax. |
| * tests/options-syntax.test: New file. |
| * tests/Makefile.am (MISC_TESTS): Add it. |
| |
| 2016-11-28 Dmitry V. Levin <ldv@altlinux.org> |
| |
| 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. |
| |
| 2016-11-28 Eugene Syromyatnikov <evgsyr@gmail.com> |
| |
| 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. |
| |
| 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. |
| |
| 2016-11-28 Dmitry V. Levin <ldv@altlinux.org> |
| |
| 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. |
| |
| 2016-11-28 Dmitry V. Levin <ldv@altlinux.org> |
| |
| 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> |
| |
| 2016-11-28 Dmitry V. Levin <ldv@altlinux.org> |
| |
| 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. |
| |
| 2016-11-28 Dmitry V. Levin <ldv@altlinux.org> |
| |
| 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. |
| |
| 2016-11-27 Dmitry V. Levin <ldv@altlinux.org> |
| |
| 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. |
| |
| 2016-11-27 Dmitry V. Levin <ldv@altlinux.org> |
| |
| 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. |
| |
| 2016-11-27 Dmitry V. Levin <ldv@altlinux.org> |
| |
| 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. |
| |
| 2016-11-26 Dmitry V. Levin <ldv@altlinux.org> |
| |
| Enhance error diagnostics of exit/exit_group decoder. |
| * exit.c (SYS_FUNC(exit)): Print the name of syscall that has returned. |
| |
| 2016-11-26 Dmitry V. Levin <ldv@altlinux.org> |
| |
| 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. |
| |
| 2016-11-26 Dmitry V. Levin <ldv@altlinux.org> |
| |
| 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. |
| |
| 2016-11-26 Dmitry V. Levin <ldv@altlinux.org> |
| |
| Treat execveat as an execve family syscall. |
| * syscall.c (trace_syscall_entering): Clear hide_log_until_execve flag |
| also when SEN_execveat is encountered. |
| |
| 2016-11-25 Dmitry V. Levin <ldv@altlinux.org> |
| |
| 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. |
| |
| 2016-11-24 Dmitry V. Levin <ldv@altlinux.org> |
| |
| Simplify parse_fault_expression. |
| * syscall.c (parse_fault_expression): Rewrite iterator over strtok_r |
| in a more concise way. |
| |
| 2016-11-26 Eugene Syromyatnikov <evgsyr@gmail.com> |
| |
| 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. |
| |
| 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. |
| |
| 2016-11-26 Dmitry V. Levin <ldv@altlinux.org> |
| |
| tests: robustify prctl-name.test against unrelated prctl invocations. |
| * tests/prctl-name.test: Filter out unrelated PR_GET_* prctl calls. |
| |
| 2016-11-22 Dmitry V. Levin <ldv@altlinux.org> |
| |
| tests: cleanup prctl-name.c. |
| * tests/prctl-name.c (main): Remove "len" variable, rename "len1" |
| to "len". Remove "name1" variable, use "name" instead. |
| |
| 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. |
| |
| 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. |
| |
| 2016-11-22 Andreas Schwab <schwab@linux-m68k.org> |
| |
| 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. |
| |
| 2016-11-22 Dmitry V. Levin <ldv@altlinux.org> |
| |
| 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. |
| |
| 2016-11-21 Dmitry V. Levin <ldv@altlinux.org> |
| |
| 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. |
| |
| 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. |
| |
| 2016-11-20 Elvira Khabirova <lineprinter0@gmail.com> |
| |
| Restructure strace.1. |
| * strace.1 (OPTIONS): Add subsections. |
| (PROBLEMS): Rename to REPORTING BUGS. |
| (SEE ALSO): Move to the bottom. |
| |
| 2016-11-20 Eugene Syromyatnikov <evgsyr@gmail.com> |
| |
| 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. |
| |
| prctl: add braces for conditional blocks with else/else-if blocks having braces |
| |
| 2016-11-20 Eugene Syromyatnikov <evgsyr@gmail.com> |
| |
| 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. |
| |
| 2016-11-20 Eugene Syromyatnikov <evgsyr@gmail.com> |
| |
| 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". |
| |
| 2016-11-20 Eugene Syromyatnikov <evgsyr@gmail.com> |
| |
| block: add some definitions from <linux/blkpg.h> |
| This is done in order to fix build error on old distributions where |
| struct blkpg_ioctl_arg declaration is broken: |
| |
| In file included from block.c:35: |
| /usr/include/linux/blkpg.h:36: error: expected ':', ',', ';', '}' or '__attribute__' before '*' token |
| block.c: In function 'print_blkpg_req': |
| block.c:113: error: 'struct_blkpg_ioctl_arg' has no member named 'data' |
| |
| (from SLE10) |
| |
| * block.c: Include <linux/ioctl.h> instead of <linux/blkpg.h>. |
| (BLKPG, BLKPG_DEVNAMELTH, BLKPG_VOLNAMELTH): New macros. |
| (struct_blkpg_ioctl_arg, struct_blkpg_partition): New definitions, |
| copied from blkpg_ioctl_arg and blkpg_partition structures defined |
| in <linux/blkpg.h>. |
| |
| 2016-11-20 Eugene Syromyatnikov <evgsyr@gmail.com> |
| |
| xlat: add values to new ARCH_* constants. |
| Since UAPI header declares them under CONFIG_CHECKPOINT_RESTORE |
| and they would never be defined in user space. |
| |
| * xlat/archvals.in: Add numeric values to ARCH_MAP_VDSO_* constants. |
| |
| 2016-11-20 Dmitry V. Levin <ldv@altlinux.org> |
| |
| prctl: include <linux/prctl.h> instead of <sys/prctl.h> |
| There are no users of prctl function in prctl.c, and all the rest |
| is provided by <linux/prctl.h> anyway. |
| |
| * prctl.c: Include <linux/prctl.h> instead of <sys/prctl.h>. |
| |
| 2016-11-20 Dmitry V. Levin <ldv@altlinux.org> |
| |
| tests: check decoding of prctl PR_GET_NAME/PR_SET_NAME operations. |
| * tests/prctl-name.c: New file. |
| * tests/prctl-name.test: New test. |
| * tests/.gitignore: Add prctl-name. |
| * tests/Makefile.am (check_PROGRAMS): Likewise. |
| (DECODER_TESTS): Add prctl-name.test. |
| |
| prctl: fix printing of PR_SET_NAME's argument. |
| * prctl.c (SYS_FUNC(prctl)): Use printstr_ex with QUOTE_0_TERMINATED |
| instead of printstr to print the argument of PR_SET_NAME and PR_GET_NAME |
| operations. |
| |
| printstr_ex: fix handling of last byte when QUOTE_0_TERMINATED bit set. |
| * util.c (printstr_ex): Simplify handling of size == 0 case. |
| Do not artificially decrement size when QUOTE_0_TERMINATED bit is set. |
| Ensure that str[size] byte is non-zero if it hasn't been fetched. |
| |
| 2016-11-19 Dmitry V. Levin <ldv@altlinux.org> |
| |
| printstr_ex: handle QUOTE_0_TERMINATED bit consistently. |
| When user_style has QUOTE_0_TERMINATED bit set, printstr_ex prints |
| the fetched string as a NUL-terminated. |
| After this change, the string is being fetched as a NUL-terminated, too. |
| |
| * util.c (printstr_ex): Use umovestr instead of umoven |
| if QUOTE_0_TERMINATED bit is set. |
| |
| 2016-11-19 Dmitry V. Levin <ldv@altlinux.org> |
| |
| Cleanup fetch part of printstr_ex. |
| * util.c (printstr_ex): Initialize "style" early, unify error handling. |
| |
| 2016-11-18 Dmitry V. Levin <ldv@altlinux.org> |
| |
| Update prctl ARCH_* constants. |
| * xlat/archvals.in: Add ARCH_MAP_VDSO_X32, ARCH_MAP_VDSO_32, and |
| ARCH_MAP_VDSO_64 introduced by linux kernel commit v4.9-rc1~155^2~6. |
| |
| Update V4L2_* constants. |
| * xlat/v4l2_device_capabilities_flags.in: Add V4L2_CAP_TOUCH introduced |
| by linux kernel commit v4.9-rc4~7^2~422. |
| * xlat/v4l2_input_types.in: Add V4L2_CAP_TOUCH introduced |
| by linux kernel commit v4.9-rc4~7^2~422. |
| |
| Update fs *_MAGIC constants. |
| * xlat/fsmagic.in: Add DAXFS_MAGIC introduced by linux kernel commit |
| v4.9-rc1~45^2^2~5. |
| |
| Update MS_* constants. |
| * xlat/mount_flags.in: Add MS_NOREMOTELOCK introduced |
| by linux kernel commit v4.9-rc1~57^2~1^2~7. |
| |
| Update FALLOC_* constants. |
| * xlat/falloc_flags.in: Add FALLOC_FL_UNSHARE_RANGE introduced |
| by linux kernel commit v4.9-rc1~31^2~69. |
| |
| Update BTRFS_* constants. |
| * xlat/btrfs_features_compat_ro.in: Add |
| BTRFS_FEATURE_COMPAT_RO_FREE_SPACE_TREE_VALID introduced |
| by linux kernel commit v4.9-rc1~7^2^2~4. |
| |
| Update BPF_* constants. |
| * xlat/bpf_prog_types.in: Add BPF_PROG_TYPE_PERF_EVENT introduced |
| by linux kernel commit v4.9-rc1~127^2~302^2~4. |
| |
| 2016-11-18 Eugene Syromyatnikov <evgsyr@gmail.com> |
| |
| make-dist: use HEAD for making distribution package. |
| * make-dist: Use HEAD commit instead of master branch by default. |
| |
| 2016-11-18 Dmitry V. Levin <ldv@altlinux.org> |
| |
| tests: fix btrfs build error on some old systems. |
| Fix the following build error on SLE 11 SP4: |
| |
| btrfs.c: In function 'btrfs_test_dev_replace_ioctl': |
| btrfs.c:1570: error: unknown field 'start' specified in initializer |
| |
| * tests/btrfs.c (btrfs_test_dev_replace_ioctl): Move initialization |
| of struct btrfs_ioctl_dev_replace_args.start.srcdevid out of the |
| designated initializer. |
| |
| 2016-11-18 Dmitry V. Levin <ldv@altlinux.org> |
| |
| tests: check decoding of ERESTARTSYS error code. |
| * tests/erestartsys.c: New file. |
| * tests/erestartsys.test: New test. |
| * tests/.gitignore: Add erestartsys. |
| * tests/Makefile.am (check_PROGRAMS): Likewise. |
| (DECODER_TESTS): Add erestartsys.test. |
| |
| 2016-11-18 Dmitry V. Levin <ldv@altlinux.org> |
| |
| Fix signame usage in qual_signal. |
| Do not assume that the string returned by signame starts with "SIG" |
| prefix, this is not always the case. |
| |
| * syscall.c (qual_signal): Skip signame return value |
| when it does not have "SIG" prefix. |
| |
| 2016-11-18 Dmitry V. Levin <ldv@altlinux.org> |
| |
| tests: check -e signal=set syntax. |
| * tests/qual_signal.c: New file. |
| * tests/qual_signal.test: New test. |
| * tests/.gitignore: Add qual_signal. |
| * tests/Makefile.am (check_PROGRAMS): Likewise. |
| (MISC_TESTS): Add qual_signal.test. |
| |
| 2016-11-17 Dmitry V. Levin <ldv@altlinux.org> |
| |
| Make -e fault= expressions cumulative. |
| Change the way how subsequent -e fault= expressions are interpreted |
| to implement a cumulative behavior. For example, |
| -e fault=file:when=3+ -e fault=chdir |
| now specifies that all chdir syscalls and 3+ file related syscalls |
| except chdir are subject for fault injection. |
| |
| * syscall.c (qualify): Do not reset qual_vec for QUAL_FAULT. |
| * tests/fault_injection.test: Check it. |
| |
| 2016-11-16 Dmitry V. Levin <ldv@altlinux.org> |
| |
| tests: check syscall fault injection. |
| * tests/fault_injection.c: New file. |
| * tests/fault_injection.test: New test. |
| * tests/fault_syntax.test: Likewise. |
| * tests/.gitignore: Add fault_injection. |
| * tests/Makefile.am (check_PROGRAMS): Likewise. |
| (MISC_TESTS): Add fault_injection.test and fault_syntax.test. |
| |
| 2016-11-16 Dmitry V. Levin <ldv@altlinux.org> |
| |
| Implement syscall fault injection. |
| Introduce new -e fault=EXPR syntax that can be used to specify a subset |
| of syscalls that are subject of syscall fault injection, an error code |
| that has to be injected, and a frequency of injection. |
| |
| The expression specifying syscall fault injection has the following |
| format: SET[:error=ERRNO][:when=FIRST[+[STEP]]] |
| where only SET is a required part and all the rest is optional. |
| |
| The method used to implement syscall fault injection is the following: |
| on entering syscall the syscall number is substituted by an invalid |
| syscall number -1, and on exiting syscall the error code returned by |
| the kernel is substituted with the error code specified in the fault |
| expression. |
| |
| This implementaion is based on the prototype developed |
| by Nahim El Atmani as a part of his GSoC 2016 strace project. |
| |
| * defs.h (struct fault_opts): New forward declaration. |
| (struct tcb): Add fault_vec field. |
| (TCB_FAULT_INJ, QUAL_FAULT): New macros. |
| * strace.1: Document -e fault expression syntax. |
| * strace.c (usage): Mention -e fault expression. |
| (droptcb): Deallocate fault_vec member. |
| * syscall.c (qual_fault, arch_set_scno, arch_set_error): New prototypes. |
| (qual_options): Add "fault" option. |
| (struct fault_opts): New structure. |
| (num_faults): New variable. |
| (fault_vec): New array. |
| (syscall_fault_injected, tcb_fault_opts, reallocate_fault, |
| find_errno_by_name, qual_syscall_ex, strip_prefix, parse_fault_token, |
| parse_fault_expression, qual_fault, inject_syscall_fault_entering, |
| update_syscall_fault_exiting): New functions. |
| (qual_syscall): Use qual_syscall_ex. |
| (qualify_one): Add argument: a pointer to struct fault_opts, all callers |
| changed. Copy struct fault_opts from the pointer to fault_vec. |
| Use reallocate_fault. |
| (qualify_scno, qualify_syscall_class, qualify_syscall_name): Add |
| argument: a pointer to struct fault_opts. |
| (qualify): Use reallocate_fault. Do not check "all" class for |
| QUAL_FAULT qualifier. |
| (lookup_class): Check for "all" class. |
| (trace_syscall_entering): Use inject_syscall_fault_entering. |
| (trace_syscall_exiting): Use update_syscall_fault_exiting. Clear |
| TCB_FAULT_INJ flag along with TCB_INSYSCALL. Print " (INJECTED)" suffix |
| when the syscall has been injected successfully. |
| [ARCH_REGS_FOR_GETREGSET && !HAVE_GETREGS_OLD] |
| (ptrace_setregset): New function. |
| (ptrace_setregset_or_setregs): Define to ptrace_setregset. |
| [ARCH_REGS_FOR_GETREGS && !HAVE_GETREGS_OLD] |
| (ptrace_setregs): New function. |
| (ptrace_setregset_or_setregs): Define to ptrace_setregs. |
| [ptrace_setregset_or_setregs] (set_regs): New function. |
| Include "set_scno.c" and "set_error.c" |
| * NEWS: Mention this enhancement. |
| |
| 2016-11-16 Dmitry V. Levin <ldv@altlinux.org> |
| |
| Implement arch specific methods of changing syscall number and error code |
| This introduces arch_set_error and arch_set_scno functions for each |
| supported architecture, needed to implement syscall fault injection. |
| |
| * linux/aarch64/set_error.c: New file. |
| * linux/aarch64/set_scno.c: Likewise. |
| * linux/alpha/set_error.c: Likewise. |
| * linux/alpha/set_scno.c: Likewise. |
| * linux/arc/set_error.c: Likewise. |
| * linux/arc/set_scno.c: Likewise. |
| * linux/arm/set_error.c: Likewise. |
| * linux/arm/set_scno.c: Likewise. |
| * linux/avr32/set_error.c: Likewise. |
| * linux/avr32/set_scno.c: Likewise. |
| * linux/bfin/set_error.c: Likewise. |
| * linux/bfin/set_scno.c: Likewise. |
| * linux/crisv10/set_error.c: Likewise. |
| * linux/crisv10/set_scno.c: Likewise. |
| * linux/crisv32/set_error.c: Likewise. |
| * linux/crisv32/set_scno.c: Likewise. |
| * linux/hppa/set_error.c: Likewise. |
| * linux/hppa/set_scno.c: Likewise. |
| * linux/i386/set_error.c: Likewise. |
| * linux/i386/set_scno.c: Likewise. |
| * linux/ia64/set_error.c: Likewise. |
| * linux/ia64/set_scno.c: Likewise. |
| * linux/m68k/set_error.c: Likewise. |
| * linux/m68k/set_scno.c: Likewise. |
| * linux/metag/set_error.c: Likewise. |
| * linux/metag/set_scno.c: Likewise. |
| * linux/microblaze/set_error.c: Likewise. |
| * linux/microblaze/set_scno.c: Likewise. |
| * linux/mips/set_error.c: Likewise. |
| * linux/mips/set_scno.c: Likewise. |
| * linux/nios2/set_error.c: Likewise. |
| * linux/nios2/set_scno.c: Likewise. |
| * linux/or1k/set_error.c: Likewise. |
| * linux/or1k/set_scno.c: Likewise. |
| * linux/powerpc/set_error.c: Likewise. |
| * linux/powerpc/set_scno.c: Likewise. |
| * linux/powerpc64/set_error.c: Likewise. |
| * linux/powerpc64/set_scno.c: Likewise. |
| * linux/riscv/set_error.c: Likewise. |
| * linux/riscv/set_scno.c: Likewise. |
| * linux/s390/set_error.c: Likewise. |
| * linux/s390/set_scno.c: Likewise. |
| * linux/s390x/set_error.c: Likewise. |
| * linux/s390x/set_scno.c: Likewise. |
| * linux/sh/set_error.c: Likewise. |
| * linux/sh/set_scno.c: Likewise. |
| * linux/sh64/set_error.c: Likewise. |
| * linux/sh64/set_scno.c: Likewise. |
| * linux/sparc/set_error.c: Likewise. |
| * linux/sparc/set_scno.c: Likewise. |
| * linux/sparc64/set_error.c: Likewise. |
| * linux/sparc64/set_scno.c: Likewise. |
| * linux/tile/set_error.c: Likewise. |
| * linux/tile/set_scno.c: Likewise. |
| * linux/x32/set_error.c: Likewise. |
| * linux/x32/set_scno.c: Likewise. |
| * linux/x86_64/set_error.c: Likewise. |
| * linux/x86_64/set_scno.c: Likewise. |
| * linux/xtensa/set_error.c: Likewise. |
| * linux/xtensa/set_scno.c: Likewise. |
| * Makefile.am (EXTRA_DIST): Add them. |
| |
| 2016-11-16 Dmitry V. Levin <ldv@altlinux.org> |
| |
| cris: add syscall tables. |
| The incomplete CRIS support introduced by commit v4.5.18-77-gea0e6e8 |
| should not have been merged because it lacks essential parts, e.g. |
| syscall tables. |
| |
| This change adds missing syscall tables for crisv10 and crisv32. |
| |
| * linux/crisv10/syscallent.h: New file. |
| * linux/crisv32/syscallent.h: Likewise. |
| * Makefile.am (EXTRA_DIST): Add them. |
| |
| 2016-11-16 Dmitry V. Levin <ldv@altlinux.org> |
| |
| Introduce string_to_uint_ex and string_to_uint_upto functions. |
| * defs.h (string_to_uint_ex): New prototype. |
| (string_to_uint_upto): New function, a thin wrapper around |
| string_to_uint_ex. |
| * util.c (string_to_uint_ex): New function. |
| (string_to_uint): Change into a thin wrapper around string_to_uint_upto. |
| * strace.c (init): Use string_to_uint_upto. |
| * syscall.c (qualify_scno, qual_signal, qual_desc): Use |
| string_to_uint_upto instead of string_to_uint. |
| |
| 2016-11-16 Dmitry V. Levin <ldv@altlinux.org> |
| |
| Split qual_syscall into separate functions. |
| Split qual_syscall into qualify_scno, qualify_syscall_class, |
| and qualify_syscall_name. |
| This might be needed later to implement syscall fault injection. |
| |
| * syscall.c (qualify_scno, qualify_syscall_class, qualify_syscall_name): |
| New functions. |
| (qual_syscall): Use them. |
| |
| 2016-11-15 Dmitry V. Levin <ldv@altlinux.org> |
| |
| xtensa: wire up new syscalls. |
| * linux/xtensa/syscallent.h [342..347]: New entries. |
| |
| 2016-11-14 Dmitry V. Levin <ldv@altlinux.org> |
| |
| arc: wire up new syscalls. |
| * linux/arc/syscallent.h [247, 248]: New entries. |
| |
| 2016-11-13 Dmitry V. Levin <ldv@altlinux.org> |
| |
| tests: fix potential compilation warning in ioctl_block.c. |
| ioctl_block.c:48: warning: 'init_magic' defined but not used |
| |
| * tests/ioctl_block.c (init_magic): Define only for |
| [BLKTRACESETUP && HAVE_STRUCT_BLK_USER_TRACE_SETUP]. |
| |
| 2016-11-13 Eugene Syromyatnikov <evgsyr@gmail.com> |
| |
| Add support for pkey_mprotect, pkey_alloc, pkey_free syscalls. |
| * linux/32/syscallent.h: Add syscall entries for pkey_* calls. |
| * linux/64/syscallent.h: Likewise. |
| * linux/arm/syscallent.h: Likewise. |
| * linux/i386/syscallent.h: Likewise. |
| * linux/mips/syscallent-n32.h: Likewise. |
| * linux/mips/syscallent-n64.h: Likewise. |
| * linux/mips/syscallent-o32.h: Likewise. |
| * linux/x32/syscallent.h: Likewise. |
| * linux/x86_64/syscallent.h: Likewise. |
| * mem.c (do_mprotect): New function, common handler for mprotect and |
| pkey_mprotect. |
| (SYS_FUNC(mprotect)): Convert to wrapper around do_mprotect. |
| (SYS_FUNC(pkey_mprotect)): New function. |
| * xlat/pkey_access.in: New file. |
| * pkeys.c: New file containing implementation of pkey_alloc and |
| pkey_free. |
| * Makefile.am: Add it. |
| * NEWS: Mention this enhancement. |
| * tests/.gitignore: Add pkey_alloc, pkey_free, and pkey_mprotect. |
| * tests/Makefile.am (check_PROGRAMS): Likewise. |
| (DECODER_TESTS): Add pkey_alloc.test, pkey_free.test, and |
| pkey_mprotect.test. |
| * tests/pkey_alloc.c: New file. |
| * tests/pkey_free.c: Likewise. |
| * tests/pkey_mprotect.c: Likewise. |
| * tests/pkey_alloc.test: New test. |
| * tests/pkey_free.test: Likewise. |
| * tests/pkey_mprotect.test: Likewise. |
| |
| 2016-11-13 Eugene Syromyatnikov <evgsyr@gmail.com> |
| |
| tests: fix "constant is too large" compilation warnings. |
| alarm.c: In function 'main': |
| alarm.c:41: warning: integer constant is too large for 'long' type |
| aio.c: In function 'main': |
| aio.c:162: warning: integer constant is too large for 'long' type |
| btrfs.c: In function 'btrfs_test_sync_ioctls': |
| btrfs.c:202: warning: integer constant is too large for 'long' type |
| btrfs.c: In function 'btrfs_test_subvol_ioctls': |
| btrfs.c:289: warning: integer constant is too large for 'long' type |
| btrfs.c:290: warning: integer constant is too large for 'long' type |
| dup2.c: In function 'main': |
| dup2.c:12: warning: integer constant is too large for 'long' type |
| dup2.c:13: warning: integer constant is too large for 'long' type |
| dup3.c: In function 'main': |
| dup3.c:13: warning: integer constant is too large for 'long' type |
| dup3.c:14: warning: integer constant is too large for 'long' type |
| epoll_create.c: In function 'main': |
| epoll_create.c:12: warning: integer constant is too large for 'long' type |
| epoll_ctl.c: In function 'invoke_syscall': |
| epoll_ctl.c:14: warning: integer constant is too large for 'long' type |
| faccessat.c: In function 'main': |
| faccessat.c:13: warning: integer constant is too large for 'long' type |
| fchdir.c: In function 'main': |
| fchdir.c:12: warning: integer constant is too large for 'long' type |
| struct_flock.c: In function 'invoke_test_syscall': |
| struct_flock.c:48: warning: integer constant is too large for 'long' type |
| struct_flock.c: In function 'test_flock_einval': |
| struct_flock.c:58: warning: integer constant is too large for 'long' type |
| struct_flock.c:59: warning: integer constant is too large for 'long' type |
| fcntl64.c: In function 'test_flock64_einval': |
| fcntl64.c:44: warning: integer constant is too large for 'long' type |
| fcntl64.c:45: warning: integer constant is too large for 'long' type |
| fcntl.c: In function 'test_flock64_einval': |
| fcntl.c:44: warning: integer constant is too large for 'long' type |
| fcntl.c:45: warning: integer constant is too large for 'long' type |
| fdatasync.c: In function 'main': |
| fdatasync.c:12: warning: integer constant is too large for 'long' type |
| flock.c: In function 'main': |
| flock.c:13: warning: integer constant is too large for 'long' type |
| xstatx.c: In function 'main': |
| xstatx.c:255: warning: integer constant is too large for 'long' type |
| xstatx.c:290: warning: integer constant is too large for 'long' type |
| xstatx.c:290: warning: integer constant is too large for 'long' type |
| xstatx.c:290: warning: integer constant is too large for 'long' type |
| xstatx.c:290: warning: integer constant is too large for 'long' type |
| xstatx.c:290: warning: integer constant is too large for 'long' type |
| xstatx.c:290: warning: integer constant is too large for 'long' type |
| xstatx.c:290: warning: integer constant is too large for 'long' type |
| xstatx.c:290: warning: integer constant is too large for 'long' type |
| xstatx.c:290: warning: integer constant is too large for 'long' type |
| xstatx.c:294: warning: integer constant is too large for 'long' type |
| xstatx.c:294: warning: integer constant is too large for 'long' type |
| xstatx.c:294: warning: integer constant is too large for 'long' type |
| xstatx.c:294: warning: integer constant is too large for 'long' type |
| xstatx.c:294: warning: integer constant is too large for 'long' type |
| xstatx.c:294: warning: integer constant is too large for 'long' type |
| xstatx.c:294: warning: integer constant is too large for 'long' type |
| xstatx.c:294: warning: integer constant is too large for 'long' type |
| xstatx.c:294: warning: integer constant is too large for 'long' type |
| xstatfsx.c: In function 'main': |
| xstatfsx.c:113: warning: integer constant is too large for 'long' type |
| fsync.c: In function 'main': |
| fsync.c:12: warning: integer constant is too large for 'long' type |
| ftruncate64.c: In function 'main': |
| ftruncate64.c:39: warning: integer constant is too large for 'long' type |
| futimesat.c: In function 'main': |
| futimesat.c:52: warning: integer constant is too large for 'long' type |
| futimesat.c:59: warning: integer constant is too large for 'long' type |
| get_mempolicy.c: In function 'main': |
| get_mempolicy.c:83: warning: integer constant is too large for 'long' type |
| get_mempolicy.c:84: warning: integer constant is too large for 'long' type |
| get_mempolicy.c:85: warning: integer constant is too large for 'long' type |
| get_mempolicy.c:86: warning: integer constant is too large for 'long' type |
| getdents.c: In function 'main': |
| getdents.c:109: warning: integer constant is too large for 'long' type |
| getdents.c:110: warning: integer constant is too large for 'long' type |
| getdents.c:114: warning: integer constant is too large for 'long' type |
| getdents64.c: In function 'main': |
| getdents64.c:114: warning: integer constant is too large for 'long' type |
| getdents64.c:115: warning: integer constant is too large for 'long' type |
| getdents64.c:119: warning: integer constant is too large for 'long' type |
| xgetrlimit.c: In function 'main': |
| xgetrlimit.c:71: warning: integer constant is too large for 'long' type |
| ioctl_block.c:44: warning: integer constant is too large for 'long' type |
| ioctl_block.c: In function 'main': |
| ioctl_block.c:136: warning: integer constant is too large for 'long' type |
| ioctl_block.c:137: warning: integer constant is too large for 'long' type |
| ioctl_block.c:161: warning: integer constant is too large for 'long' type |
| ioctl_block.c:170: warning: integer constant is too large for 'long' type |
| ioctl_block.c:171: warning: integer constant is too large for 'long' type |
| ioctl_evdev.c:42: warning: integer constant is too large for 'long' type |
| ioctl_mtd.c:46: warning: integer constant is too large for 'long' type |
| ioctl_rtc.c:40: warning: integer constant is too large for 'long' type |
| ioperm.c: In function 'main': |
| ioperm.c:12: warning: integer constant is too large for 'long' type |
| ioctl_v4l2.c: In function 'main': |
| ioctl_v4l2.c:409: warning: integer constant is too large for 'long' type |
| ipc.c: In function 'ipc_call': |
| ipc.c:52: warning: integer constant is too large for 'long' type |
| kill.c: In function 'main': |
| kill.c:59: warning: integer constant is too large for 'long' type |
| kill.c:62: warning: integer constant is too large for 'long' type |
| kill.c:63: warning: integer constant is too large for 'long' type |
| kill.c:68: warning: integer constant is too large for 'long' type |
| linkat.c: In function 'main': |
| linkat.c:14: warning: integer constant is too large for 'long' type |
| linkat.c:15: warning: integer constant is too large for 'long' type |
| mbind.c: In function 'main': |
| mbind.c:41: warning: integer constant is too large for 'long' type |
| mbind.c:43: warning: integer constant is too large for 'long' type |
| mbind.c:44: warning: integer constant is too large for 'long' type |
| migrate_pages.c: In function 'main': |
| migrate_pages.c:41: warning: integer constant is too large for 'long' type |
| In file included from mkdirat.c:10: |
| umode_t.c: In function 'test_syscall': |
| umode_t.c:47: warning: integer constant is too large for 'long' type |
| mknod.c: In function 'call_mknod': |
| mknod.c:16: warning: integer constant is too large for 'long' type |
| mknod.c: In function 'main': |
| mknod.c:23: warning: integer constant is too large for 'long' type |
| mknod.c:49: warning: integer constant is too large for 'long' type |
| mknod.c:56: warning: integer constant is too large for 'long' type |
| mknodat.c:12: warning: integer constant is too large for 'long' type |
| mknodat.c: In function 'call_mknodat': |
| mknodat.c:17: warning: integer constant is too large for 'long' type |
| mknodat.c: In function 'main': |
| mknodat.c:24: warning: integer constant is too large for 'long' type |
| mknodat.c:50: warning: integer constant is too large for 'long' type |
| mknodat.c:57: warning: integer constant is too large for 'long' type |
| mmap.c: In function 'main': |
| mmap.c:51: warning: integer constant is too large for 'long' type |
| move_pages.c: In function 'print_stat_pages': |
| move_pages.c:139: warning: integer constant is too large for 'long' type |
| move_pages.c: In function 'print_move_pages': |
| move_pages.c:166: warning: integer constant is too large for 'long' type |
| move_pages.c: In function 'main': |
| move_pages.c:188: warning: integer constant is too large for 'long' type |
| mq_sendrecv.c: In function 'main': |
| mq_sendrecv.c:238: warning: integer constant is too large for 'long' type |
| mq_sendrecv.c:401: warning: integer constant is too large for 'long' type |
| mq_sendrecv.c:403: warning: integer constant is too large for 'long' type |
| nsyscalls.c: In function 'test_syscall': |
| nsyscalls.c:64: warning: integer constant is too large for 'long' type |
| nsyscalls.c:65: warning: integer constant is too large for 'long' type |
| nsyscalls.c:66: warning: integer constant is too large for 'long' type |
| nsyscalls.c:67: warning: integer constant is too large for 'long' type |
| nsyscalls.c:68: warning: integer constant is too large for 'long' type |
| nsyscalls.c:69: warning: integer constant is too large for 'long' type |
| preadv-pwritev.c: In function 'main': |
| preadv-pwritev.c:162: warning: comparison between signed and unsigned |
| prlimit64.c: In function 'main': |
| prlimit64.c:65: warning: integer constant is too large for 'long' type |
| prlimit64.c:70: warning: integer constant is too large for 'long' type |
| remap_file_pages.c: In function 'main': |
| remap_file_pages.c:42: warning: integer constant is too large for 'long' type |
| remap_file_pages.c:43: warning: integer constant is too large for 'long' type |
| remap_file_pages.c:45: warning: integer constant is too large for 'long' type |
| renameat.c: In function 'main': |
| renameat.c:15: warning: integer constant is too large for 'long' type |
| renameat.c:16: warning: integer constant is too large for 'long' type |
| rt_sigqueueinfo.c: In function 'main': |
| rt_sigqueueinfo.c:41: warning: integer constant is too large for 'long' type |
| rt_tgsigqueueinfo.c: In function 'k_tgsigqueueinfo': |
| rt_tgsigqueueinfo.c:45: warning: integer constant is too large for 'long' type |
| rt_tgsigqueueinfo.c:46: warning: integer constant is too large for 'long' type |
| rt_tgsigqueueinfo.c:47: warning: integer constant is too large for 'long' type |
| rt_tgsigqueueinfo.c: In function 'main': |
| rt_tgsigqueueinfo.c:67: warning: integer constant is too large for 'long' type |
| sendfile.c: In function 'main': |
| sendfile.c:110: warning: integer constant is too large for 'long' type |
| sendfile64.c: In function 'main': |
| sendfile64.c:100: warning: integer constant is too large for 'long' type |
| set_mempolicy.c: In function 'main': |
| set_mempolicy.c:129: warning: integer constant is too large for 'long' type |
| set_mempolicy.c:130: warning: integer constant is too large for 'long' type |
| setrlimit.c: In function 'main': |
| setrlimit.c:44: warning: integer constant is too large for 'long' type |
| socketcall.c: In function 'test_socketcall': |
| socketcall.c:58: warning: integer constant is too large for 'long' type |
| splice.c: In function 'main': |
| splice.c:41: warning: integer constant is too large for 'long' type |
| splice.c:42: warning: integer constant is too large for 'long' type |
| splice.c:45: warning: integer constant is too large for 'long' type |
| splice.c:46: warning: integer constant is too large for 'long' type |
| symlinkat.c: In function 'main': |
| symlinkat.c:12: warning: integer constant is too large for 'long' type |
| sync_file_range.c: In function 'main': |
| sync_file_range.c:42: warning: integer constant is too large for 'long' type |
| sync_file_range.c:43: warning: integer constant is too large for 'long' type |
| syslog.c: In function 'main': |
| syslog.c:14: warning: integer constant is too large for 'long' type |
| tee.c: In function 'main': |
| tee.c:41: warning: integer constant is too large for 'long' type |
| tee.c:42: warning: integer constant is too large for 'long' type |
| timer_create.c: In function 'main': |
| timer_create.c:52: warning: integer constant is too large for 'long' type |
| timer_create.c:84: warning: integer constant is too large for 'long' type |
| timer_create.c:85: warning: integer constant is too large for 'long' type |
| truncate64.c: In function 'main': |
| truncate64.c:41: warning: integer constant is too large for 'long' type |
| xgetrlimit.c: In function 'main': |
| xgetrlimit.c:71: warning: integer constant is too large for 'long' type |
| umode_t.c: In function 'test_syscall': |
| umode_t.c:46: warning: integer constant is too large for 'long' type |
| unlinkat.c: In function 'main': |
| unlinkat.c:13: warning: integer constant is too large for 'long' type |
| waitpid.c: In function 'main': |
| waitpid.c:43: warning: integer constant is too large for 'long' type |
| waitid.c: In function 'poison': |
| waitid.c:141: warning: integer constant is too large for 'long' type |
| xetpriority.c: In function 'main': |
| xetpriority.c:15: warning: integer constant is too large for 'long' type |
| xetpriority.c:19: warning: integer constant is too large for 'long' type |
| xetpriority.c:20: warning: integer constant is too large for 'long' type |
| xetpgid.c: In function 'main': |
| xetpgid.c:43: warning: integer constant is too large for 'long' type |
| xetpgid.c:47: warning: integer constant is too large for 'long' type |
| xetpgid.c:48: warning: integer constant is too large for 'long' type |
| |
| (SLES 11SP4, i386) |
| |
| * tests/alarm.c (main): Add proper suffix to integer constant. |
| * tests/aio.c (main): Likewise. |
| * tests/btrfs.c (btrfs_test_sync_ioctls, btrfs_test_subvol_ioctls): Likewise. |
| * tests/dup2.c (main): Likewise. |
| * tests/dup3.c (main): Likewise. |
| * tests/epoll_create.c (main): Likewise. |
| * tests/epoll_ctl.c (invoke_syscall): Likewise. |
| * tests/faccessat.c (main): Likewise. |
| * tests/fchdir.c (main): Likewise. |
| * tests/fcntl.c (test_flock64_einval): Likewise. |
| * tests/fcntl64.c (test_flock64_einval): Likewise. |
| * tests/fdatasync.c (main): Likewise. |
| * tests/flock.c (main): Likewise. |
| * tests/fstat64.c (SAMPLE_SIZE): Likewise. |
| * tests/fstat.c (SAMPLE_SIZE): Likewise. |
| * tests/fsync.c (main): Likewise. |
| * tests/ftruncate64.c (main): Likewise. |
| * tests/futimesat.c (main): Likewise. |
| * tests/get_mempolicy.c (main): Likewise. |
| * tests/getdents.c (main): Likewise. |
| * tests/getdents64.c (main): Likewise. |
| * tests/ioctl_block.c (lmagic, main): Likewise. |
| * tests/ioctl_evdev.c (lmagic): Likewise. |
| * tests/ioctl_mtd.c (lmagic): Likewise. |
| * tests/ioctl_rtc.c (lmagic): Likewise. |
| * tests/ioctl_v4l2.c (main): Likewise. |
| * tests/ioperm.c (main): Likewise. |
| * tests/ipc.c (ipc_call): Likewise. |
| * tests/kill.c (main): Likewise. |
| * tests/linkat.c (main): Likewise. |
| * tests/lstat64.c (SAMPLE_SIZE): Likewise. |
| * tests/lstat.c (SAMPLE_SIZE): Likewise. |
| * tests/mbind.c (main): Likewise. |
| * tests/migrate_pages.c (main): Likewise. |
| * tests/mkdirat.c (TEST_SYSCALL_PREFIX_ARGS): Likewise. |
| * tests/mknod.c (call_mknod, main): Likewise. |
| * tests/mknodat.c (fd, call_mknodat, main): Likewise. |
| * tests/mmap.c (main): Likewise. |
| * tests/move_pages.c (print_stat_pages, print_move_pages): Likewise. |
| * tests/mq_sendrecv.c (main): Likewise. |
| * tests/nsyscalls.c (test_syscall): Likewise. |
| * tests/prlimit64.c (main): Likewise. |
| * tests/remap_file_pages.c (main): Likewise. |
| * tests/renameat.c (main): Likewise. |
| * tests/rt_sigqueueinfo.c (main): Likewise. |
| * tests/rt_tgsigqueueinfo.c (k_tgsigqueueinfo, main): Likewise. |
| * tests/sendfile.c (main): Likewise. |
| * tests/sendfile64.c (main): Likewise. |
| * tests/set_mempolicy.c (main): Likewise. |
| * tests/setrlimit.c (main): Likewise. |
| * tests/socketcall.c (test_socketcall): Likewise. |
| * tests/splice.c (main): Likewise. |
| * tests/stat64.c (SAMPLE_SIZE): Likewise. |
| * tests/stat.c (SAMPLE_SIZE): Likewise. |
| * tests/struct_flock.c (invoke_test_syscall, test_flock_einval): Likewise. |
| * tests/symlinkat.c (main): Likewise. |
| * tests/sync_file_range.c (main): Likewise. |
| * tests/syslog.c (main): Likewise. |
| * tests/tee.c (main): Likewise. |
| * tests/timer_create.c (main): Likewise. |
| * tests/truncate64.c (main): Likewise. |
| * tests/umode_t.c (test_syscall): Likewise. |
| * tests/unlinkat.c (main): Likewise. |
| * tests/waitid.c (main): Likewise. |
| * tests/waitpid.c (main): Likewise. |
| * tests/xetpgid.c (main): Likewise. |
| * tests/xetpriority.c (main): Likewise. |
| * tests/xgetrlimit.c (main): Likewise. |
| * tests/xstatfsx.c (main) [CHECK_ODD_SIZE]: Likewise. |
| * tests/xstatx.c (main): Likewise. |
| |
| 2016-11-13 Eugene Syromyatnikov <evgsyr@gmail.com> |
| |
| tests: fix "comparison between signed and unsigned" compilation warnings |
| preadv-pwritev.c: In function 'main': |
| preadv-pwritev.c:162: warning: comparison between signed and unsigned |
| readv.c: In function 'main': |
| readv.c:148: warning: comparison between signed and unsigned |
| recvmsg.c: In function 'main': |
| recvmsg.c:148: warning: comparison between signed and unsigned |
| |
| * tests/preadv-pwritev.c (main): Cast r_len to int. |
| * tests/readv.c (main): Likewise. |
| * tests/recvmsg.c (main): Likewise. |
| |
| 2016-11-13 Dmitry V. Levin <ldv@altlinux.org> |
| |
| syscall.c: refactor getregs_old fallback in get_regs. |
| This change moves remaining arch specific getregs_old code into |
| appropriate arch subdirectories and removes unnecessary code |
| duplication. |
| |
| * linux/getregs_old.h: New file. |
| * linux/powerpc/getregs_old.h: Likewise. |
| * linux/powerpc64/getregs_old.h: Likewise. |
| * linux/x86_64/getregs_old.h: Likewise. |
| * Makefile.am (EXTRA_DIST): Add them. |
| * syscall.c: Include "getregs_old.h". |
| [X86_64 || POWERPC]: Remove. |
| [ARCH_REGS_FOR_GETREGSET] (ptrace_getregset_or_getregs): Define |
| to ptrace_getregset. |
| [ARCH_REGS_FOR_GETREGS] (ptrace_getregset_or_getregs): Define |
| to ptrace_getregs. |
| (get_regs): Check for ptrace_getregset_or_getregs instead |
| of ARCH_REGS_FOR_GETREGSET and ARCH_REGS_FOR_GETREGS. Use |
| ptrace_getregset_or_getregs instead of ptrace_getregset and |
| ptrace_getregs. Check for HAVE_GETREGS_OLD instead of X86_64 |
| and POWERPC. Use use_getregs_old instead of getregset_support |
| and old_kernel. |
| |
| 2016-11-13 Eugene Syromyatnikov <evgsyr@gmail.com> |
| |
| Rename BUILD_BUG_ON_ZERO macro. |
| In order to avoid name clash on distributions which decide to include |
| kernel headers instead of UAPI ones. For example, on SLES 11SP4: |
| |
| gcc -DHAVE_CONFIG_H -I./linux/x86_64 -I./linux -I. -Wall -O2 -c net.c |
| In file included from /usr/include/linux/sysctl.h:25:0, |
| from /usr/include/linux/netfilter.h:6, |
| from /usr/include/linux/netfilter_arp.h:8, |
| from /usr/include/linux/netfilter_arp/arp_tables.h:14, |
| from net.c:60: |
| net.c: In function 'print_packet_mreq': |
| gcc_compat.h:59:27: error: negative width in bit-field '<anonymous>' |
| # define MUST_BE_ARRAY(a) BUILD_BUG_ON_ZERO(!SAME_TYPE((a), &(a)[0])) |
| ^ |
| defs.h:76:53: note: in expansion of macro 'MUST_BE_ARRAY' |
| #define ARRAY_SIZE(a) (sizeof(a) / sizeof((a)[0]) + MUST_BE_ARRAY(a)) |
| ^ |
| net.c:747:22: note: in expansion of macro 'ARRAY_SIZE' |
| if (mreq.mr_alen > ARRAY_SIZE(mreq.mr_address)) |
| ^ |
| due to the fact BUILD_BUG_ON_ZERO is already defined in <linux/kernel.h>. |
| |
| * gcc_compat.h (BUILD_BUG_ON_ZERO): Rename to FAIL_BUILD_ON_ZERO. |
| (MUST_BE_ARRAY): Update usage. |
| |
| 2016-11-12 Dmitry V. Levin <ldv@altlinux.org> |
| |
| syscall.c: factor out ptrace_getregs from get_regs. |
| Move the code that calls ptrace(PTRACE_GETREGS) to a separate function. |
| |
| * syscall.c (ptrace_getregs): New function. |
| (get_regs): Use it. |
| |
| 2016-11-12 Dmitry V. Levin <ldv@altlinux.org> |
| |
| syscall.c: rename get_regset to ptrace_getregset. |
| * syscall.c (get_regset): Rename to ptrace_getregset. |
| (get_regs): Rename get_regset to ptrace_getregset. |
| |
| 2016-11-12 Andreas Schwab <schwab@linux-m68k.org> |
| |
| m68k: switch to PTRACE_GETREGS. |
| * Makefile.am (EXTRA_DIST): Add linux/m68k/arch_regs.h, remove |
| linux/m68k/get_syscall_result.c. |
| * linux/m68k/arch_regs.c (m68k_d0, ARCH_PC_PEEK_ADDR): Don't |
| define. |
| (m68k_regs, m68k_usp_ptr, ARCH_PC_REG, ARCH_REGS_FOR_GETREGS): |
| Define. |
| * linux/m68k/arch_regs.h: New file. |
| * linux/m68k/arch_sigreturn.c (arch_sigreturn): Use m68k_usp_ptr. |
| * linux/m68k/get_error.c (get_error): Use m68k_regs.d0. |
| * linux/m68k/get_scno.c (arch_get_scno): Use m68k_regs.orig_d0. |
| * linux/m68k/get_syscall_args.c (get_syscall_args): Use m68k_regs. |
| * linux/m68k/get_syscall_result.c: Remove. |
| |
| tests: do not run old_mmap test on m68k. |
| * tests/old_mmap.c: Skip test on m68k. |
| |
| 2016-11-12 Dmitry V. Levin <ldv@altlinux.org> |
| |
| syscall.c: introduce reallocate_vec function. |
| This might be needed later to implement syscall fault injection. |
| |
| * syscall.c (reallocate_vec): New function. |
| (reallocate_qual): Use it. |
| |
| 2016-11-12 Dmitry V. Levin <ldv@altlinux.org> |
| |
| Fix prototypes of qual_desc, qual_signal, and qual_syscall functions. |
| * syscall.c (qual_desc, qual_signal, qual_syscall): Fix prototypes. |
| (struct qual_options): Fix type of "qualify" member. |
| |
| 2016-11-12 Eugene Syromyatnikov <evgsyr@gmail.com> |
| |
| linux/x32/syscallent.h: fix syscallent array initialisation on x32. |
| Why gcc didn't complain about it? It is definitely an index clash. |
| |
| * linux/x32/syscallent.h: Change initializer indices for empty records from |
| [327 ... 511] to [329 ... 511]. |
| |
| 2016-11-11 Dmitry V. Levin <ldv@altlinux.org> |
| |
| Introduce upoke function. |
| This will be needed to implement fault injection on those architectures |
| that lack PTRACE_SETREGSET/PTRACE_SETREGS support. |
| |
| * defs.h (upoke): New prototype. |
| * upoke.c: New file. |
| * Makefile.am (libstrace_a_SOURCES): Add it. |
| |
| 2016-11-11 Gleb Fotengauer-Malinovskiy <glebfm@altlinux.org> |
| |
| Update ioctl entries from linux 4.9. |
| * linux/32/ioctls_inc_align32.h: Update from linux v4.9 using ioctls_gen.sh. |
| * linux/32/ioctls_inc_align64.h: Likewise. |
| * linux/64/ioctls_inc.h: Likewise. |
| * linux/x32/ioctls_inc0.h: Likewise. |
| * NEWS: Mention this. |
| |
| 2016-11-10 Eugene Syromyatnikov <evgsyr@gmail.com> |
| |
| Update NEWS. |
| |
| 2016-11-10 Mikulas Patocka <mpatocka@redhat.com> |
| Eugene Syromyatnikov <evgsyr@gmail.com> |
| |
| Add support for decoding of DM_* ioctl commands. |
| * dm.c: New file. |
| * xlat/dm_flags.in: Likewise. |
| * Makefile.am (strace_SOURCES): Add dm.c. |
| * configure.ac (AC_CHECK_HEADERS): Add linux/dm-ioctl.h. |
| * defs.h (dm_ioctl): New prototype. |
| * ioctl.c (ioctl_decode) [HAVE_LINUX_DM_IOCTL_H]: Call dm_ioctl |
| for 0xfd ioctl type. |
| * tests/ioctl_dm.c: New file. |
| * tests/ioctl_dm-v.c: Likewise. |
| * tests/ioctl_dm.test: New test. |
| * tests/ioctl_dm-v.test: Likewise. |
| * tests/.gitignore: Add ioctl_dm and ioctl_dm-v. |
| * tests/Makefile.am (check_PROGRAMS): Likewise. |
| (DECODER_TESTS): Add ioctl_dm.test and ioctl_dm-v.test. |
| |
| 2016-11-10 Dmitry V. Levin <ldv@altlinux.org> |
| |
| Introduce ALIGNOF macro. |
| * gcc_compat.h (ALIGNOF): New macro. |
| |
| 2016-11-10 Eugene Syromyatnikov <evgsyr@gmail.com> |
| |
| util: add support for QUOTE_0_TERMINATED in user_style to ptrintstr_ex. |
| This enables printing size-limited (expectedly) ASCIZ strings. |
| |
| This is done by increasing umoven size limit for sized strings by one |
| byte above max_strlen (enabling copying possible NUL byte in case len is |
| greater than max_strlen) and decreasing size after copying by one byte |
| in case QUOTE_0_TERMINATED is set (due to user_style or usage of len of |
| -1). As a result, there is one excess byte for string_quote in case |
| QUOTE_0_TERMINATED is set so string_quote can check for NUL termination |
| of strings up to size bytes in size (which is len or max_strlen, whatever |
| is greater). |
| |
| The catch here is that when string is not properly NUL-terminated and |
| QUOTE_0_TERMINATED is provided in user_style and len is less than |
| max_strlen then last non-NUL byte is not printed. But ellipsis is |
| printed instead, being indication that string is not terminated |
| properly. QUOTE_OMIT_TRAILING_0 should be used instead in case this |
| behaviour is not intended. |
| |
| * util.c (printstr_ex): Copy one excess byte in case of non-negative len |
| provided and it is more than max_strlen; handle case of max_strlen of 0 |
| in case QUOTE_0_TERMINATED is set separately; check for need of printing |
| ellipsis by checking resulting style against QUOTE_0_TERMINATED. |
| |
| 2016-11-09 Eugene Syromyatnikov <evgsyr@gmail.com> |
| |
| tests: check decoding of mq_{notify,open,timedreceive,timedsend,unlink} |
| * tests/mq_sendrecv.c: New file. |
| * tests/mq_sendrecv-read.c: Likewise. |
| * tests/mq_sendrecv-write.c: Likewise. |
| * tests/mq_sendrecv.test: New test. |
| * tests/mq_sendrecv-read.test: Likewise. |
| * tests/mq_sendrecv-write.test: Likewise. |
| * tests/.gitignore: Add mq_sendrecv, mq_sendrecv-read, |
| and mq_sendrecv-write. |
| * tests/Makefile.am (check_PROGRAMS): Likewise. |
| (mq_sendrecv_LDADD, mq_sendrecv_read_LDADD, mq_sendrecv_write_LDADD): |
| New variables. |
| (DECODER_TESTS): Add mq_sendrecv.test, mq_sendrecv-read.test, |
| and mq_sendrecv-write.test. |
| |
| 2016-11-08 Dmitry V. Levin <ldv@altlinux.org> |
| |
| tests: skip times.test if CLOCK_PROCESS_CPUTIME_ID does not work. |
| * tests/times.c (main): Skip if clock_gettime consistenly returns zero |
| for CLOCK_PROCESS_CPUTIME_ID timer. |
| |
| 2016-10-31 Eugene Syromyatnikov <evgsyr@gmail.com> |
| |
| tests: add tests for perf_event_attr structure decoding in perf_event_open |
| * configure.ac: Add checks for presence of various fields of struct |
| perf_event_attr defined in kernel headers. |
| * tests/perf_event_open.c: New file. |
| * tests/perf_event_open_unabbrev.c: Likewise. |
| * tests/perf_event_open.test: New test. |
| * tests/perf_event_open_unabbrev.test: Likewise. |
| * tests/.gitignore: Add perf_event_open, perf_event_open_unabbrev. |
| * tests/Makefile.am (check_PROGRAMS): Likewise. |
| (DECODER_TESTS): Add perf_event_open.test, perf_event_open_unabbrev.test. |
| |
| Implement decoding of perf_event_attr structure in perf_event_open syscall |
| * linux/perf_event_struct.h: New file, definition of struct perf_event_attr |
| from Linux 4.8 |
| * Makefile.am (strace_SOURCES): Add it. |
| * xlat/hw_breakpoint_len.in: New file. |
| * xlat/hw_breakpoint_type.in: Likewise. |
| * xlat/perf_attr_size.in: Likewise. |
| * xlat/perf_branch_sample_type.in: Likewise. |
| * xlat/perf_event_read_format.in: Likewise. |
| * xlat/perf_event_sample_format.in: Likewise. |
| * xlat/perf_hw_cache_id.in: Likewise. |
| * xlat/perf_hw_cache_op_id.in: Likewise. |
| * xlat/perf_hw_cache_op_result_id.in: Likewise. |
| * xlat/perf_hw_id.in: Likewise. |
| * xlat/perf_sw_ids.in: Likewise. |
| * xlat/perf_type_id.in: Likewise. |
| * perf.c [HAVE_LINUX_PERF_EVENT_H]: Remove inclusion of |
| <linux/perf_event.h>. |
| (PRINT_XLAT): New macro for simplifying printing values from |
| sorted xlat. |
| (printxlat_search): New function, wrapper for xlat_search with behaviour |
| similar to printval. |
| (print_perf_event_attr): New print_event_attr structure fetching and |
| printing function. |
| (SYS_FUNC(perf_event_open)): Use print_perf_event_attr for displaying |
| attr argument contents. |
| * tests/perf_event_open.c: Renamed to |
| tests/perf_event_open_nonverbose.c. |
| * tests/perf_event_open.test: add -e verbose=none in order to preserve |
| output format being checked (in case verbose output is enabled, |
| contents of attr arguments are shown now); rename to |
| tests/perf_event_open_nonverbose.test; add -e trace=perf_event_open. |
| |
| tests: fix name spelling. |
| |
| 2016-10-30 Eugene Syromyatnikov <evgsyr@gmail.com> |
| |
| tests: fix name spelling. |
| |
| Update NEWS. |
| |
| Fix typo in comment in tests/quotactl.h. |
| |
| tests: fix invalid pointer checks in quotactl test. |
| * tests/quotactl.h (bogus_special, bogus_addr): Move it... |
| * tests/quotactl.c (main): ... here; remove static and const qualifiers, |
| use memory after tail_alloc instead of magic numbers. |
| * tests/quotactl-xfs.c (main): Likewise. |
| |
| tests: fix invalid pointer checks in getcpu test. |
| * test/getcpu.c (main): Replace magic numbers deemed invalid pointers |
| with addresses after memory returned by tail_alloc. |
| |
| tests: fix invalid pointer checks in request_key test. |
| * test/request_key.c (main): Replace magic numbers deemed invalid pointers |
| with addresses after memory returned by tail_alloc. |
| |
| tests: fix invalid pointer checks in add_key test. |
| * test/add_key.c (main): Replace magic numbers deemed invalid pointers |
| with addresses after memory returned by tail_alloc. |
| |
| statfs: use printxval_search. |
| * print_statfs.c (print_statfs_type): Use printxval_search for printing |
| FS magic xlat value. |
| |
| util: add printing helper for sorted xlat arrays. |
| * util.c (printxval_searchn): New function. |
| * defs.h (printxval_searchn): New prototype. |
| (printxval_search): New helper macro useful in conjunction with static |
| xlat arrays. |
| |
| defs: add check for argument being array to ARRAY_SIZE macro. |
| * gcc_compat.h [GNUC_PREREQ(3, 0)] (BUILD_BUG_ON_ZERO): New macro. |
| (SAME_TYPE, MUST_BE_ARRAY): Likewise. |
| * defs.h (ARRAY_SIZE): Add MUST_BE_ARRAY for build-time type check. |
| |
| tests: check decoding of oldfstat, oldlstat, and oldstat syscalls. |
| * tests/oldfstat.c: New file. |
| * tests/oldlstat.c: Likewise. |
| * tests/oldstat.c: Likewise. |
| * tests/oldfstat.test: New test. |
| * tests/oldlstat.test: Likewise. |
| * tests/oldstat.test: Likewise. |
| * tests/xstatx.c [!OLD_STAT]: define OLD_STAT to 0. |
| (print_stat) [OLD_STAT]: Print predefined values for |
| st_blksize/st_blocks. |
| (print_stat): Check for !OLD_STAT in nanosecond precision checks. |
| (main) [OLD_STAT]: Ignore EOVERFLOW. |
| (main): Test for successful rc in returned size value check; |
| print address only on non-successful rc. |
| * tests/.gitignore: Add oldfstat, oldlstat, and oldstat. |
| * tests/Makefile.am (check_PROGRAMS): Likewise. |
| (DECODER_TESTS): Add oldfstat.test, oldlstat.test, and oldstat.test. |
| |
| tests: additional tests of stat decoders. |
| * tests/fstatx.c (IS_FSTAT): Define to 1. |
| * tests/fstatat64.c [__GLIBC__ && __sparc64__] (TEST_BOGUS_STRUCT_STAT): |
| Define to 0. |
| * tests/xstatx.c [!IS_STAT] (IS_STAT): Define to 0. |
| [!TEST_BOGUS_STRUCT_STAT] (TEST_BOGUS_STRUCT_STAT): Define to 1. |
| (main): Add a check for non-available pointer and a check |
| for block device file. |
| * tests/statx.sh: Add tracing of /dev/full file, specify alignment. |
| * tests/fstat.test: Specify alignment. |
| |
| 2016-10-30 Eugene Syromyatnikov <evgsyr@gmail.com> |
| |
| tests: prepare for additional tests of stat decoders. |
| PRINT_SYSCALL_HEADER/PRINT_SYSCALL_FOOTER now contain open/close brace |
| pair in order to save errno. PRINT_SYSCALL_FOOTER now uses sprintrc for |
| printing rc/errno. |
| |
| * tests/xstatx.c: Include <errno.h>. |
| (main): Update PRINT_SYSCALL_FOOTER call convention. |
| * tests/fstatat.c (PRINT_SYSCALL_HEADER): Add errno saving. |
| (PRINT_SYSCALL_FOOTER): Restore errno. |
| * tests/fstatx.c: Likewise. |
| * tests/lstatx.c: Likewise. |
| |
| 2016-10-28 Dmitry V. Levin <ldv@altlinux.org> |
| |
| Provide a safe definition of O_ACCMODE. |
| Some libcs e.g. musl are guilty of messing up with O_ACCMODE. |
| |
| * open.c (O_ACCMODE): Redefine to 03. |
| |
| 2016-10-28 Eugene Syromyatnikov <evgsyr@gmail.com> |
| |
| Implement dumping of mq_timedsend and mq_timedreceive syscalls. |
| * syscall.c (dumpio): Add SEN_mq_timedreceive and SEN_mq_timedsend. |
| |
| mq: print msg_prio as a pointer, not as an immediate value. |
| * mq.c (SYS_FUNC(mq_timedreceive)): Use printnum_int for printing |
| msg_prio argument. |
| |
| 2016-10-28 Eugene Syromyatnikov <evgsyr@gmail.com> |
| |
| mq: print msg payload only in case of successful mq_timedreceive call. |
| Also, use u_rval for determining message size. |
| |
| * mq.c (SYS_FUNC(mq_timedreceive)): Check for syserror and non-negative |
| u_rval before calling printstr on msg_ptr argument, or use printaddr otherwise; |
| provide u_rval as string size. |
| |
| 2016-10-28 Eugene Syromyatnikov <evgsyr@gmail.com> |
| |
| mq: Print msg_prio parameter as unsigned int in mq_timedsend. |
| * mq.c (SYS_FUNC(mq_timedsend)): Change conversion specifier from "%ld" |
| to "%u", cast argument value to unsigned int. |
| |
| 2016-10-28 Eugene Syromyatnikov <evgsyr@gmail.com> |
| |
| mq: Properly print mq_flags field. |
| mq_flags field of struct mq_attr can contain only O_NONBLOCK flag (other |
| flags are treated as invalid by mq_getsetattr). Moreover, this field is |
| ignored by mq_open at all (O_NONBLOCK is set via oflag, not via attr |
| attribute). |
| |
| * xlat/mq_attr_flags.in: New file. |
| * print_mq_attr.c: Include xlat/mq_attr_flags.h. |
| (printmqattr): New parameter, bool decode_flags; cast members of struct |
| mq_attr to long long type; use mq_attr_flags xlat for printing mq_flags; |
| print mq_flags as flags only in case decode_flags parameter is set |
| to true. |
| * mq.c (SYS_FUNC(mq_open)): Specify value of false for decode_flags |
| parameter of printmqattr call. |
| (SYS_FUNC(mq_getsetattr)): Specify value of true for decode_flags |
| parameter of printmqattr call. |
| * tests/mq.expected: Update expected output. |
| |
| 2016-10-28 Eugene Syromyatnikov <evgsyr@gmail.com> |
| |
| mq: Print msg_len parameter as kernel_ulong_t. |
| * mq.c (SYS_FUNC(mq_timedsend)): Change conversion specifier from "%lu" |
| to "%llu", use getarg_ull for obtaining msg_len parameter. |
| (SYS_FUNC(mq_timedreceive)): Likewise. |
| |
| print_mq_attr: fix typo. |
| * print_mq_attr.c (printmqattr): Print field name "mq_curmsgs" |
| instead of "mq_curmsg". |
| * tests/mq.expected: Update expected output. |
| |
| 2016-10-28 Eugene Syromyatnikov <evgsyr@gmail.com> |
| |
| mq: print mqdes parameter as int. |
| It is defined as int in <linux/posix_types.h>. |
| |
| * mq.c (SYS_FUNC(mq_timedsend)): Use "%d" conversion specifier instead |
| of "%ld" for printing mqdes (0th parameter), cast parameter value to |
| int. |
| (SYS_FUNC(mq_timedreceive)): Likewise. |
| (SYS_FUNC(mq_notify)): Likewise. |
| (SYS_FUNC(mq_getsetattr)): Likewise. |
| |
| 2016-10-28 Eugene Syromyatnikov <evgsyr@gmail.com> |
| |
| mq: curly brackets usage fix. |
| Use curly brackets for denoting blocks in both of if branches if they |
| are already used in at least one branch. |
| |
| tests: additional name_to_handle_at/open_by_handle_at checks. |
| * tests/file_handle.c: Additional name_to_handle_at/open_by_handle_at |
| checks. |
| |
| tests: require only presence of __NR_* macros for file_handle test. |
| * tests/file_handle.c: replace fcntl.h include with asm/unistd.h. |
| [MAX_HANDLE_SZ]: change to defined __NR_name_to_handle_at |
| && defined __NR_open_by_handle_at, add fcntl.h include |
| [!MAX_HANDLE_SZ]: Add definition of MAX_HANDLE_SZ and struct |
| file_handle. |
| (main): Change name_to_handle_at and open_by_handle_at calls to syscall. |
| |
| tests: proper type conversion in keyctl test. |
| * tests/keyctl.c (printarg): Add intermediate conversion of arg to uintptr_t |
| since kernel_ulong_t may be of different size. |
| |
| 2016-10-28 Eugene Syromyatnikov <evgsyr@gmail.com> |
| |
| file_handle: use separate xlat for name_ta_handle_at flags. |
| Since the only two flags supported are AT_SYMLINK_FOLLOW and |
| AT_EMPTY_PATH. |
| |
| * xlat/name_to_handle_at_flags.in: New file. |
| * file_handle.c (SYS_FUNC(name_to_handle_at)): Use name_to_handle_at_flags |
| for printing flags parameter. |
| |
| 2016-10-28 Eugene Syromyatnikov <evgsyr@gmail.com> |
| |
| tests: check decoding of kexec_file_load and kexec_load syscalls. |
| * tests/kexec_file_load.c: New file. |
| * tests/kexec_load.c: Likewise. |
| * tests/kexec_file_load.test: New test. |
| * tests/kexec_load.test: Likewise. |
| * tests/.gitignore: Add kexec_file_load and kexec_load. |
| * tests/Makefile.am (check_PROGRAMS): Likewise. |
| (DECODER_TESTS): Add kexec_file_load.test and kexec_load.test. |
| |
| 2016-10-28 Eugene Syromyatnikov <evgsyr@gmail.com> |
| |
| kexec: use widen_to_ulong since kexec_load has compat on x32/n32. |
| Curiously, kexec_load uses compat on x32/n32, so its parameters should |
| be 4 bytes in size on these ABIs. |
| |
| * kexec.c (SYS_FUNC(kexec_load)): Use widen_to_ulong for casting |
| parameters to proper size on x32/n32. |
| |
| 2016-10-28 Eugene Syromyatnikov <evgsyr@gmail.com> |
| |
| kexec: fix zeroing of higher bits of flags parameter in kexec_load. |
| * kexec.c (SYS_FUNC(kexec_load)): Perform type conversion before |
| negation in order to properly negate higher bits of KEXEC_ARCH_MASK. |
| |
| kexec: add printing of struct kexec_segment field names. |
| * kexec.c (print_seg): Print field names of the kexec_segment structure. |
| |
| tests: check decoding of unshare syscall. |
| * tests/unshare.c: New file. |
| * tests/unshare.test: New test. |
| * tests/.gitignore: Add unshare. |
| * tests/Makefile.am (check_PROGRAMS): Likewise. |
| (DECODER_TESTS): Add unshare.test. |
| |
| 2016-10-28 Eugene Syromyatnikov <evgsyr@gmail.com> |
| |
| clone: use kernel_ulong_t as type of flags parameter of unshare call. |
| Kernel declares flags parameter as long and looks like x32 and n32 |
| implement no compat for this call. |
| |
| * clone.c (SYS_FUNC(unshare)): Use getarg_ull and printflags64 for |
| obtaining and parsing flags parameter. |
| |
| 2016-10-28 Eugene Syromyatnikov <evgsyr@gmail.com> |
| |
| clone: use separate flag list for unshare. |
| Not all clone flags could be passed to unshare (see check_unshare_flags |
| function in kernel/fork.c). |
| |
| * xlat/unshare_flags.in: New file. |
| * clone.c (SYS_FUNC(unshare)): Use unshare_flags for printing flags |
| parameter. |
| |
| 2016-10-28 Eugene Syromyatnikov <evgsyr@gmail.com> |
| |
| tests: check decoding of setns syscall. |
| * tests/setns.c: New file. |
| * tests/setns.test: New test. |
| * tests/.gitignore: Add setns. |
| * tests/Makefile.am (check_PROGRAMS): Likewise. |
| (DECODER_TESTS): Add setns.test. |
| |
| 2016-10-28 Eugene Syromyatnikov <evgsyr@gmail.com> |
| |
| clone: use separate xlat for nstype parameter of setns syscall. |
| nstype is not flag set but specific type value against which it is |
| compared in kernel (see kernel/nsproxy.c, SYSCALL_DEFINE2(setns, ...)). |
| |
| * xlat/setns_types.in: New file. |
| * clone.c: Use printxval and setns_types for nstype parameter. |
| |
| 2016-10-28 Eugene Syromyatnikov <evgsyr@gmail.com> |
| |
| tests: check non-verbose capget/capset output. |
| * tests/caps-abbrev.awk: New file. |
| * tests/caps-abbrev.c: Likewise. |
| * tests/caps-abbrev.test: New test. |
| * tests/.gitignore: Add caps-abbrev. |
| * tests/Makefile.am (check_PROGRAMS): Likewise. |
| (DECODER_TESTS): Add caps-abbrev.test. |
| (EXTRA_DIST): Add caps-abbrev.awk. |
| |
| tests: additional capset decoder checks. |
| * tests/caps.awk: Add patterns for additional checks. |
| * tests/caps.c: Implement additional checks. |
| |
| tests: check decoding of fanotify_init syscall. |
| * tests/fanotify_init.c: New file. |
| * tests/fanotify_init.test: New test. |
| * tests/.gitignore: Add fanotify_init. |
| * tests/Makefile.am (check_PROGRAMS): Likewise. |
| (DECODER_TESTS): Add fanotify_init.test. |
| |
| tests: some additional checks for fanotify_mark. |
| * tests/fanotify_mark.c (do_call): New function. |
| (main): Use it. |
| |
| tests: use sprintrc in tests/fanotify_mark.c. |
| * tests/fanotify.c (main): Use sprintrc. |
| |
| tests: check decoding of {init,finit,delete}_module syscalls. |
| * tests/delete_module.c: New file. |
| * tests/finit_module.c: Likewise. |
| * tests/init_delete_module.h: Likewise. |
| * tests/init_module.c: Likewise. |
| * tests/delete_module.test: New test. |
| * tests/finit_module.test: Likewise. |
| * tests/init_module.test: Likewise. |
| * tests/.gitignore: Add delete_nodule, finit_module, and init_module. |
| * tests/Makefile.am (check_PROGRAMS): Likewise. |
| (DECODER_TESTS): Add delete_module.test, finit_module.test, |
| and init_module.test. |
| (EXTRA_DIST): Add init_delete_module.h. |
| |
| 2016-10-28 Eugene Syromyatnikov <evgsyr@gmail.com> |
| |
| bjm: use getarg_ull for retrieving first two parameters of init_module syscall |
| As init_module has no compat wrapper, its first parameter is a pointer |
| and the second is length, they both have the same size as kernel_ulong_t |
| type. |
| |
| * bjm.c (SYS_FUNC(init_module)): Obtain first two parameters using |
| getarg_ull, print address argument using printaddr_ull, print length |
| argument using "%llu" conversion specifier. |
| |
| 2016-10-28 Dmitry V. Levin <ldv@altlinux.org> |
| |
| Add printaddr_ull, change printaddr into a thin wrapper around it. |
| * defs.h (printaddr_ull): New prototype. |
| (printaddr): Change to a static inline wrapper around printaddr_ull. |
| * util.c (printaddr): Rename to printaddr_ull, change argument type |
| to unsigned long long, change print format to %#llx. |
| |
| 2016-10-28 Eugene Syromyatnikov <evgsyr@gmail.com> |
| |
| xlat: add values for MODULE_INIT_* constants. |
| * bjm.c (MODULE_INIT_IGNORE_MODVERSIONS, MODULE_INIT_IGNORE_VERMAGIC): |
| Remove. |
| * xlat/module_init_flags.in: Add values for |
| MODULE_INIT_IGNORE_MODVERSIONS and MODULE_INIT_IGNORE_VERMAGIC records. |
| |
| 2016-10-28 Eugene Syromyatnikov <evgsyr@gmail.com> |
| |
| Remove parser of create_module syscall. |
| Since create_module syscall is present only in kernels before Linux 2.6 |
| and strace does not support those kernels, there is no use to keep this |
| parser any longer. |
| |
| * bjm.c (SYS_FUNC(create_module)): Remove. |
| * linux/dummy.h (sys_create_module): Add stub alias. |
| |
| 2016-10-28 Eugene Syromyatnikov <evgsyr@gmail.com> |
| |
| tests: check decoding of process_vm_readv and process_vm_writev syscalls |
| * tests/process_vm_readv.c: New file. |
| * tests/process_vm_readv_writev.c: Likewise. |
| * tests/process_vm_writev.c: Likewise. |
| * tests/process_vm_readv.test: New test. |
| * tests/process_vm_writev.test: Likewise. |
| * tests/.gitignore: Add process_vm_readv and process_vm_writev. |
| * tests/Makefile.am (check_PROGRAMS): Likewise. |
| (DECODER_TESTS): Add process_vm_readv.test and process_vm_writev.test. |
| (EXTRA_DIST): Add process_vm_readv_writev.c. |
| |
| process_vm: use widen_to_ulong for local_iovcnt, renote_iovcnt, and flags |
| * process_vm.c (SYS_FUNC(process_vm_readv), |
| SYS_FUNC(process_vm_writev)): Use widen_to_ulong for local_iovcnt, |
| renote_iovcnt, and flags parameters. |
| |
| 2016-10-28 Eugene Syromyatnikov <evgsyr@gmail.com> |
| |
| defs: add widen_to_ulong macro. |
| This is similar to widen_to_long, but for unsigned values. |
| |
| * defs.h (widen_to_ulong): New macro. |
| |
| 2016-10-28 Eugene Syromyatnikov <evgsyr@gmail.com> |
| |
| process_vm: print pid argument as int. |
| * process_vm.c (SYS_FUNC(process_vm_readv), |
| SYS_FUNC(process_vm_writev)): Change conversion specifier for pid |
| argument from "%ld" to "%d". |
| |
| 2016-10-28 Eugene Syromyatnikov <evgsyr@gmail.com> |
| |
| process_vm: remove syserror check for iovec printing. |
| This check had been done by print_array inside tprint_iov anyway. |
| |
| * process_vm.c (SYS_FUNC(process_vm_readv)): Use tprint_iov_upto for |
| printing local_iov; do not check for syserror, provide decode_iov |
| parameter to tprint_iov{,_upto} based on its value instead. |
| |
| 2016-10-28 Eugene Syromyatnikov <evgsyr@gmail.com> |
| |
| io: use umoven_or_printaddr_ignore_syserror as umove function in tprint_iov_upto |
| This enables printing of iovec arrays even in case of failed syscall |
| (failed syscall doesn't mean that iovec itself is inaccessible and |
| useless). One caveat here is that we should explicitly provide proper |
| IOV_DECODE_* value based on syserror value in case printing is performed |
| on exiting; we can't simply override it to IOV_DECODE_ADDR on exiting |
| when syserror is up, since this may be called by code which tries to |
| print iovec containing local data, which should be perfectly accessible |
| (on the other hand, there are no cases of such behaviour at the moment). |
| |
| Since iovecs themselves are printed even if syscall has failed now, |
| preadv test is updated to reflect this. It is notable, though, that this |
| is the only place where this case is checked. |
| |
| * io.c (tprint_iov_upto): Specify umoven_or_printaddr_ignore_syserror |
| instead of umoven_or_printaddr as umoven_func parameter. |
| (SYS_FUNC(readv), do_preadv): Specify decode_iov parameter value |
| based on syserror(tcp) value. |
| * scsi.c: (print_sg_io_v3_res, print_sg_io_v4_res): Likewise. |
| * tests/preadv.c: Update expected output for the case when preadv |
| with singe-item iovec failed. |
| |
| 2016-10-28 Eugene Syromyatnikov <evgsyr@gmail.com> |
| |
| Move umoven_or_printaddr_ignore_syserror to util.c. |
| * defs.h (umoven_or_printaddr_ignore_syserror): New prototype. |
| * v4l2.c (umoven_or_printaddr_ignore_syserror): Move ... |
| * util.c: ... here. |
| |
| 2016-10-28 Eugene Syromyatnikov <evgsyr@gmail.com> |
| |
| v4l2: check for verbose flag in umoven_or_printaddr_ignore_syserror. |
| This change makes behaviour of umoven_or_printaddr_ignore_syserror in |
| line with umoven_or_printaddr when verbose flag is disabled. |
| |
| * v4l2.c (umoven_or_printaddr_ignore_syserror): Simply call printaddr |
| when verbose flag is unset. |
| |
| 2016-10-28 Eugene Syromyatnikov <evgsyr@gmail.com> |
| |
| tests: check decoding of kcmp syscall. |
| * tests/kcmp.c: New file. |
| * tests/kcmp.test: New test. |
| * tests/.gitignore: Add kcmp. |
| * tests/Makefile.am (check_PROGRAMS): Likewise. |
| (DECODER_TESTS): Add kcmp.test. |
| |
| 2016-10-28 Dmitry V. Levin <ldv@altlinux.org> |
| |
| kcmp: print index parameters of unknown commands as kernel_ulong_t. |
| * lookup_dcookie.c (SYS_FUNC(kcmp)): Use getarg_ull to retrieve idx1 |
| and idx2, print them using %#llx format in case of unknown command. |
| |
| 2016-10-27 Eugene Syromyatnikov <evgsyr@gmail.com> |
| |
| tests: check decoding of inotify family syscalls. |
| * tests/inotify.c: New file. |
| * tests/inotify_init1.c: Likewise. |
| * tests/inotify.test: New test. |
| * tests/inotify_init1.test: Likewise. |
| * tests/.gitignore: Add inotify and inotify_init1. |
| * tests/Makefile.am (check_PROGRAMS): Likewise. |
| (DECODER_TESTS): Add inotify.test and inotify_init1.test. |
| |
| xlat: use IN_* prefix for inotify_init1 flag constants. |
| * xlat/inotify_init_flags.in: Replace O_* prefix with IN_* prefix for |
| O_NONBLOCK and O_CLOEXEC constants, provide fallback definitions. |
| |
| tests: check decoding of lookup_dcookie syscall. |
| * tests/lookup_dcookie.c: New file. |
| * tests/lookup_dcookie.test: New test. |
| * tests/.gitignore: Add lookup_dcookie. |
| * tests/Makefile.am (check_PROGRAMS): Likewise. |
| (DECODER_TESTS): Add lookup_dcookie.test. |
| |
| 2016-10-27 Eugene Syromyatnikov <evgsyr@gmail.com> |
| |
| lookup_dcookie: print len parameter as kernel_ulong_t. |
| It is size_t and without compat on x32/n32. |
| |
| * lookup_dcookie.c (SYS_FUNC(lookup_dcookie)): Change conversion |
| specifier from "%lu" to "%llu", use getarg_ull for len argument |
| retrieval. |
| |
| 2016-10-26 Eugene Syromyatnikov <evgsyr@gmail.com> |
| |
| defs.h: add offsetofend macro. |
| Analogous to offsetof but returns structure offset after the specified |
| field. Useful for checking whether specific field is present in obtained |
| data or specifying amount of data to copy based on the (last) field needed. |
| |
| * defs.h (offsetofend): New macro. |
| |
| 2016-10-26 Eugene Syromyatnikov <evgsyr@gmail.com> |
| |
| tests: move ARG_STR and similar macros to tests.h. |
| * tests/add_key.c (_STR, ARG_STR): Move ... |
| * tests/tests.h: ... here. |
| (ARG_ULL_STR): New macro. |
| * tests/keyctl.c (ARG_STR): Remove. |
| * tests/quotactl.h (ARG_STR): Likewise. |
| * tests/request_key.c (ARG_STR): Likewise. |
| |
| tests: move LL_PAIR and LL_VAL_TO_PAIR macros to tests.h. |
| * tests/fadvise.h (LL_PAIR, LL_VAL_TO_PAIR): Move ... |
| * tests/tests.h: ... here. |
| |
| tests: check decoding of ioprio_get and ioprio_set syscalls. |
| * tests/ioprio.c: New file. |
| * tests/ioprio.test: New test. |
| * tests/.gitignore: Add ioprio. |
| * tests/Makefile.am (check_PROGRAMS): Likewise. |
| (DECODER_TESTS): Add ioprio.test. |
| |
| 2016-10-26 Eugene Syromyatnikov <evgsyr@gmail.com> |
| |
| xlat: provide fallback definitions for CLOCK_* constants. |
| Since new values have been added gradually over various kernel versions, |
| it's better to define them explicitly in order to avoid situations when |
| strace built with older kernel headers cannot decode some recently |
| defined values. |
| |
| * xlat/clocknames.in: Add values for constants. |
| |
| 2016-10-26 Eugene Syromyatnikov <evgsyr@gmail.com> |
| |
| tests: move fill_memory and fill_memory_ex into a separate file. |
| * tests/fill_memory.c: New file. |
| * tests/Makefile.am (libtests_a_SOURCES): Add it. |
| * tests/quotactl.h (fill_memory, fill_memory_ex): Move to fill_memory.c. |
| * tests/tests.h (fill_memory, fill_memory_ex): New prototypes. |
| |
| tests: add period parameter to fill_memory_ex. |
| * tests/quotactl.h (fill_memory_ex): Add period parameter, |
| use it as a divisor in non-constant part of value. |
| (fill_memory): Specify period of 0x80 to fill_memory_ex call. |
| * tests/quotactl-xfs.c (main): Likewise. |
| |
| 2016-10-05 Dmitry V. Levin <ldv@altlinux.org> |
| |
| Post-release administrivia. |
| * NEWS: Add a header line for the next release. |
| * debian/changelog.in: Add a changelog entry for 4.14-1. |
| * strace.spec.in: Likewise. |
| |
| 2016-10-04 Dmitry V. Levin <ldv@altlinux.org> |
| |
| Prepare for 4.14 release. |
| * NEWS: Update for 4.14 release. |
| |
| Generate SEN numbers in a locale independent order. |
| * generate_sen.sh: Sort SEN numbers using C collation rules. |
| |
| 2016-10-04 Dmitry V. Levin <ldv@altlinux.org> |
| |
| Assume that offsetof is provided by stddef.h. |
| According to C89, <stddef.h> shall define offsetof macro. |
| |
| * defs.h: Include <stddef.h> unconditionally. |
| [!offsetof]: Remove. |
| |
| 2016-10-03 Eugene Syromyatnikov <evgsyr@gmail.com> |
| |
| tests: check decoding of add_key, keyctl, and request_key syscalls. |
| * tests/add_key.c: New file. |
| * tests/keyctl.c: Likewise. |
| * tests/request_key.c: Likewise. |
| * tests/add_key.test: New test. |
| * tests/keyctl.test: Likewise. |
| * tests/request_key.test: Likewise. |
| * tests/.gitignore: Add add_key, keyctl, and request_key. |
| * tests/Makefile.am (check_PROGRAMS): Likewise. |
| (DECODER_TESTS): Add add_key.test, keyctl.test, and request_key.test. |
| |
| 2016-10-03 Eugene Syromyatnikov <evgsyr@gmail.com> |
| |
| keyctl: use kernel_ulong_t and getarg_ull instead of long. |
| This potentially fixes keyctl decoder for x32 personality. |
| |
| * keyctl.c (keyctl_update_key, keyctl_read_key, keyctl_instantiate_key, |
| keyctl_instantiate_key_iov, keyctl_dh_compute): Change addr and len |
| arguments to kernel_ulong_t. Print len using %llu format. |
| (keyctl_keyring_search): Change addr1 and addr2 arguments |
| to kernel_ulong_t. |
| (print_dh_params): Change addr argument to kernel_ulong_t. |
| (SYS_FUNC(keyctl)): Retrieve arguments via getarg_ull, pass them |
| to the appropriate handlers. |
| |
| 2016-10-03 Eugene Syromyatnikov <evgsyr@gmail.com> |
| |
| keyctl: fix parameter signedness. |
| * keyctl.c (keyctl_update_key): Change addr and len arguments |
| to unsigned. |
| (keyctl_read_key): Likewise. |
| (keyctl_instantiate_key): Likewise. |
| (keyctl_instantiate_key_iov): Likewise. |
| (keyctl_dh_compute): Likewise. |
| (keyctl_keyring_search): Change addr1 and addr2 arguments to unsigned. |
| (keyctl_chown_key): Change user and group arguments to unsigned. |
| (keyctl_get_persistent): Change uid argument to unsigned. |
| |
| 2016-10-03 Eugene Syromyatnikov <evgsyr@gmail.com> |
| |
| keyctl: use printstr_ex for printing out buffer. |
| keyctl_read_key had subtle bug by treating out buffer in KEYCTL_READ |
| as NUL-terminated, which is not true. We fix it by adding parameter to |
| keyctl_read_key signalising whether buffer is NUL-terminated and using |
| printstr_ex for printing (expectedly) NUL-terminated strings. |
| |
| * keyctl.c (keyctl_read_key): Add has_nul parameter. Do not use -1 as |
| string len. Use printstr_ex for buffer output with user style depending |
| on has_nul value. |
| (SYS_FUNC(keyctl)): Specify has_nul parameter to keyctl_read_key |
| by comparing cmd value with KEYCTL_READ. |
| |
| 2016-10-03 Eugene Syromyatnikov <evgsyr@gmail.com> |
| |
| Add printstr_ex which allows for providing user quotation style. |
| This is useful for providing QUOTE_OMIT_TRAILING_0 and maybe other |
| flags. |
| |
| * defs.h (printstr_ex): New prototype. |
| (printstr): Change to a wrapper around printstr_ex with zero user style. |
| * util.c (printstr): Rename to ... |
| (printstr_ex) ... new function, add user_style argument which is or'ed |
| with computed style. |
| |
| 2016-10-03 Eugene Syromyatnikov <evgsyr@gmail.com> |
| |
| util: add quote_string flag signalising that string is NUL-terminated. |
| It is useful in cases strings with size provided are expected to be |
| NUL-terminated but are not trustworthy enough to call just plain |
| printstr(str, -1). |
| |
| * defs.h (QUOTE_OMIT_TRAILING_0): New constant definition. |
| * util.c (string_quote): Swallow terminating NUL if |
| QUOTE_OMIT_TRAILING_0 is set. |
| |
| 2016-10-03 Eugene Syromyatnikov <evgsyr@gmail.com> |
| |
| keyctl: add support for KEYCTL_DH_COMPUTE. |
| * keyctl.c (struct keyctl_dh_params): New structure. |
| (print_dh_params, keyctl_dh_compute): New functions. |
| (SYS_FUNC(keyctl)): Add support for KEYCTL_DH_COMPUTE cmd value. |
| |
| 2016-10-03 Dmitry V. Levin <ldv@altlinux.org> |
| |
| x86_64: fix is_negated_errno for x32 personality. |
| * syscall.c (is_negated_errno) [X86_64]: Do not truncate kernel_ulong_t |
| to uint32_t for x32 personality. |
| |
| tests: fix another regression in qual_syscall.test. |
| * tests/qual_syscall.test: Fix pattern_nonabbrev_verbose pattern. |
| (check_output_mismatch): Print the pattern that triggered match failure. |
| |
| Use err_name, print unrecognized errno values as numbers. |
| * syscall.c (trace_syscall_exiting): Use err_name() instead |
| of open-coding it. Print unrecognized errno values using %lu format |
| instead of ERRNO_%lu as the latter prodices an invalid constant. |
| |
| 2016-10-03 Eugene Syromyatnikov <evgsyr@gmail.com> |
| |
| keyctl: print errno name in KEYCTL_REJECT in case it is available. |
| * keyctl.c (keyctl_reject_key): Get errno string via err_name |
| and print it if it is not NULL. |
| |
| Add function for getting errno string. |
| * defs.h (err_name): New prototype. |
| * syscall.c (err_name): New function. |
| |
| 2016-10-03 Dmitry V. Levin <ldv@altlinux.org> |
| |
| struct tcb: change the type of u_error field from int to unsigned long. |
| This is the type actually used for the error code on architectures |
| that use a dedicated register. |
| |
| * defs.h (struct tcb): Change the type of u_error to unsigned long. |
| * syscall.c (trace_syscall_exiting): Change the type of u_error variable |
| to unsigned long, print it using %lu format, drop no longer needed |
| explicit cast to unsigned long. |
| (saved_u_error): Change type to unsigned long. |
| |
| 2016-10-02 Dmitry V. Levin <ldv@altlinux.org> |
| |
| Use tprints instead of tprintf in a few more places. |
| * btrfs.c (btrfs_print_qgroup_inherit, btrfs_print_tree_search, |
| btrfs_ioctl): Replace tprintf with tprints for printing strings without |
| format specifiers. |
| * net.c (print_group_req): Likewise. |
| * scsi.c (scsi_ioctl): Likewise. |
| * term.c (decode_termios, decode_termio): Likewise. |
| * userfaultfd.c (uffdio_ioctl): Likewise. |
| |
| 2016-10-02 Eugene Syromyatnikov <evgsyr@gmail.com> |
| |
| keyctl: do not print comma for KEYCTL_SESSION_TO_PARENT command. |
| Since this command doesn't have any additional arguments, the comma does |
| not needed. Since this is the only command which lacks additional |
| arguments, it's better to add special case for it rather than add |
| printing of comma to all other commands. |
| |
| * keyctl.c (SYS_FUNC(keyctl)): Add check for command not being |
| KEYCTL_SESSION_TO_PARENT when printing comma dividing cmd argument |
| from the rest. |
| |
| 2016-10-02 Eugene Syromyatnikov <evgsyr@gmail.com> |
| |
| keyctl: use getarg_ull for printing generic arguments. |
| Otherwise it is erroneous on x32, for example. |
| |
| * keyctl.c (SYS_FUNC(keyctl)): Use "%#llx" conversion specifier |
| and getarg_ull for fallback argument printing. |
| |
| 2016-10-02 Eugene Syromyatnikov <evgsyr@gmail.com> |
| |
| keyctl: use printuid for printing UID/GID. |
| UID/GID are unsigned except special -1 value (which is also special in |
| context of specific keyctl commands), so special printing function |
| should be used. |
| |
| * keyctl.c (keyctl_chown_key, keyctl_get_persistent): Use printuid |
| instead of printf with "%d" conversion for printing UID/GID. |
| |
| 2016-10-02 Eugene Syromyatnikov <evgsyr@gmail.com> |
| |
| io: handle data_size of -1 as unlimited data in print_iovec. |
| Otherwise it can be depleted and print_iovec starts printing empty |
| strings. |
| |
| * io.c (print_iovec): Interpret c->data_size of -1 as unlimited data |
| and do not decrease it in this case. |
| |
| 2016-10-01 Dmitry V. Levin <ldv@altlinux.org> |
| |
| tests: fix typo in qual_syscall.test. |
| Fix test regression introduced by commit v4.13-225-g55334ef. |
| |
| * tests/qual_syscall.test: Fix typo. |
| |
| 2016-09-30 Dmitry V. Levin <ldv@altlinux.org> |
| |
| Enhance -e abbrev=set, -e raw=set, and -e verbose=set. |
| Enhance abbrev=, raw=, and verbose= to accept the same syntax as trace=. |
| For example, this allows such syntax as -e verbose=file. |
| |
| * syscall.c (lookup_class): Define before qual_syscall. |
| (qualify): Move the loop based on lookup_class ... |
| (qual_syscall): ... here. |
| * tests/qual_syscall.test: Check it. |
| |
| 2016-09-30 Dmitry V. Levin <ldv@altlinux.org> |
| |
| tests/qual_syscall.test: rewrite without ls. |
| * tests/qual_syscall.test: Invoke ./umovestr instead of ls. |
| Update expected output. |
| |
| 2016-09-28 Eugene Syromyatnikov <evgsyr@gmail.com> |
| |
| tests: check decoding of fadvise64 and fadvise64_64 syscalls. |
| * tests/fadvise.h: New file. |
| * tests/fadvise64.c: Likewise. |
| * tests/fadvise64_64.c: Likewise. |
| * tests/fadvise64.test: New test. |
| * tests/fadvise64_64.test: Likewise. |
| * tests/.gitignore: Add fadvise64 and fadvise64_64. |
| * tests/Makefile.am (check_PROGRAMS): Likewise. |
| (DECODER_TESTS): Add fadvise64.test, fadvise64_64.test. |
| (EXTRA_DIST): Add fadvise.h. |
| |
| 2016-09-28 Dmitry V. Levin <ldv@altlinux.org> |
| |
| mips o32: implement fetching the 7th subcall argument. |
| * syscall.c [LINUX_MIPSO32] (decode_mips_subcall): Fetch the last |
| argument of 7-arg syscalls. |
| |
| 2016-09-28 Eugene Syromyatnikov <evgsyr@gmail.com> |
| |
| x32: use proper decoder for fadvise64 syscall. |
| fadvise_64_64 decoder used before this change prints different sign |
| of the "len" argument (loff_t vs size_t). |
| |
| * linux/x32/syscallent.h (fadvise64): Replace SEN(fadvise64_64) |
| with SEN(fadvise64). |
| |
| 2016-09-28 Eugene Syromyatnikov <evgsyr@gmail.com> |
| |
| fadvise: use getarg_ull for obtaining len argument of fadvise64 syscall. |
| Since its type is size_t, it is 64-bit wide on x32 and special care |
| should be taken in order to obtain it. |
| |
| * fadvise.c (SYS_FUNC(fadvise64)): Use getarg_ull for obtaining value |
| of "len" syscall argument. |
| |
| 2016-09-28 Eugene Syromyatnikov <evgsyr@gmail.com> |
| |
| util: add getarg_ll and getarg_ull functions. |
| These allow retrieving specific argument in full taking into account |
| peculiarities of runtimes which employ tcp->ext_arg (e.g. x32). |
| |
| * defs.h (getarg_ll, getarg_ull): New prototypes. |
| * util.c (getarg_ll, getarg_ull): New functions. |
| (printargs): Use getarg_ull. |
| |
| 2016-09-28 Eugene Syromyatnikov <evgsyr@gmail.com> |
| |
| fadvise: change printing of len argument to unsigned in fadvise64 syscall |
| The kernel declares fadvise64 as |
| long sys_fadvise64(int fd, loff_t offset, size_t len, int advice); |
| |
| * fadvise.c (SYS_FUNC(fadvise64)): Change conversion specifier from |
| "%ld" to "%lu" for printing len argument since kernel expects argument |
| of type size_t. |
| |
| 2016-09-28 Dmitry V. Levin <ldv@altlinux.org> |
| |
| sh64, sparc64: use proper decoder for fadvise64_64 syscall. |
| This change is no-op yet, but things will change when decoder |
| of fadvise64 syscall get fixed. |
| |
| * linux/sh64/syscallent.h (fadvise64_64): Replace SEN(fadvise64) |
| with SEN(fadvise64_64). |
| * linux/sparc64/syscallent.h (fadvise64_64): Likewise. |
| |
| 2016-09-28 Eugene Syromyatnikov <evgsyr@gmail.com> |
| |
| tests: check decoding of fallocate syscall. |
| * configure.ac (AC_CHECK_FUNCS): Add fallocate. |
| * tests/fallocate.c: New file. |
| * tests/fallocate.test: New test. |
| * tests/.gitignore: Add fallocate. |
| * tests/Makefile.am (check_PROGRAMS): Likewise. |
| (DECODER_TESTS): Add fallocate.test. |
| |
| 2016-09-27 Eugene Syromyatnikov <evgsyr@gmail.com> |
| |
| fallocate: change print format of offset and len arguments to signed. |
| Since types of these arguments are off_t and kernel actually expects |
| signed values in order to fail when negative values are provided, |
| lets display these values as signed. |
| |
| * fallocate.c (SYS_FUNC(fallocate)): Change conversion specifier for |
| printing "offset" and "len" syscall arguments from %llu to %lld. |
| |
| 2016-09-27 Eugene Syromyatnikov <evgsyr@gmail.com> |
| |
| xlat: add default values for falloc_flags constants. |
| In order to avoid dependence of declared constants to headers available |
| on build system. |
| |
| * xlat/falloc_flags.in: Add default values for constants. |
| |
| 2016-09-27 Eugene Syromyatnikov <evgsyr@gmail.com> |
| |
| tests: check decoding of getcpu syscall. |
| * tests/getcpu.c: New file. |
| * tests/getcpu.test: New test. |
| * tests/.gitignore: Add getcpu. |
| * tests/Makefile.am (check_PROGRAMS): Likewise. |
| (DECODER_TESTS): Add getcpu.test. |
| |
| tests: make magic values in ioctl_block test distinctive. |
| * tests/ioctl.block (init_magic): Add iterator value to magic value |
| in order to enable detection of potential 4-byte aligned shifts. |
| |
| tests: additional getcwd decoding checks. |
| * tests/getcwd.c (main): Add more checks for getcwd arguments decoding. |
| |
| tests: check decoding of quotactl syscall. |
| * configure.ac (AC_CHECK_HEADERS): Add linux/dqblk_xfs.h, linux/quota.h, |
| and sys/quota.h. |
| * tests/.gitignore: Add quotactl, quotactl-v, quotactl-xfs, |
| and quotactl-xfs-v. |
| * tests/Makefile.am (check_PROGRAMS): Likewise. |
| (DECODER_TESTS): Add quotactl.test, quotactl-v.test, |
| quotactl-xfs.test, and quotactl-xfs-v.test. |
| (EXTRA_DIST): Add quotactl.h |
| * quotactl.h: New file. |
| * quotactl.c: Likewise. |
| * quotactl-v.c: Likewise. |
| * quotactl-xfs.c: Likewise. |
| * quotactl-xfs-v.c: Likewise. |
| * quotactl.test: New test. |
| * quotactl-v.test: Likewise. |
| * quotactl-xfs.test: Likewise. |
| * quotactl-xfs-v.test: Likewise. |
| |
| 2016-09-27 Dmitry V. Levin <ldv@altlinux.org> |
| |
| quota: ensure that names of structure fields are printed properly. |
| * quota.c (PRINT_FIELD_D, PRINT_FIELD_U, PRINT_FIELD_X): New macros. |
| (decode_cmd_data): Use them to print structure fields. |
| |
| Enhance zero_extend_signed_to_ull and sign_extend_unsigned_to_ll macros. |
| * defs.h (zero_extend_signed_to_ull, sign_extend_unsigned_to_ll): |
| Add support of char types. |
| * tests/tests.h (zero_extend_signed_to_ull, sign_extend_unsigned_to_ll): |
| Likewise. |
| |
| quota: move Q_QUOTAON handling to subcommand switch statement. |
| * quota.c (SYS_FUNC(quotactl)): Move handling of Q_QUOTAON subcommand ... |
| (decode_cmd_data): ... here. |
| |
| 2016-09-27 Eugene Syromyatnikov <evgsyr@gmail.com> |
| |
| quota: remove legacy subcommand decoding support code. |
| Support for these quota subcommands by linux kernels has been dropped |
| long time ago (between 2.5.16 and 2.5.17), so lets drop it in order |
| to minimize amount of code which should be subjected to testing and |
| structured conversion. |
| |
| * quota.c (struct v1_dqblk, struct v2_dqblk, struct v2_dqinfo, |
| struct v1_dqstats, struct v2_dqstats): Remove. |
| (decode_cmd_data): Remove handling of Q_V1_GETQUOTA, Q_V1_SETQUOTA, |
| Q_V2_GETQUOTA, Q_V2_SETQUOTA, Q_V2_GETINFO, Q_V2_SETINFO, Q_V1_GETSTATS, |
| and Q_V2_GETSTATS subcommands. |
| (SYS_FUNC(quotactl)): Remove handling of Q_V1_QUOTAON subcommand. |
| |
| 2016-09-27 Eugene Syromyatnikov <evgsyr@gmail.com> |
| |
| quota: add realtime block limits fields to XFS disk quota printing code. |
| * quota.c (decode_cmd_data): Add printing of d_rtb_hardlimit |
| and d_rtb_softlimit fields to struct xfs_dqblk printing code. |
| |
| 2016-09-27 Eugene Syromyatnikov <evgsyr@gmail.com> |
| |
| quota: add packed attribute to struct if_dqblk definition. |
| Since the only difference between 32-bit and 64-bit environments |
| regarding this structure is its padding, lets just add packed attribute |
| to its definition instead of going full mpers. |
| |
| * quota.c (struct if_dqblk): Add ATTRIBUTE_PACKED. |
| |
| 2016-09-27 Eugene Syromyatnikov <evgsyr@gmail.com> |
| |
| quota: Add decoding for Q_XQUOTARM subcommand. |
| * quota.c (decode_cmd_data): Add Q_XQUOTARM handling to subcommand |
| switch. |
| |
| 2016-09-27 Eugene Syromyatnikov <evgsyr@gmail.com> |
| |
| quota: add dispatch of SYNC subcommands. |
| Q_XQUOTASYNC is no-op, but it does not require id/addr arguments anyway. |
| |
| * quota.c (decode_cmd_data): Add Q_SYNC and Q_XQUOTASYNC to subcommand |
| dispatch switch since id/addr arguments for these subcommands are known |
| to be ignored. |
| |
| 2016-09-27 Eugene Syromyatnikov <evgsyr@gmail.com> |
| |
| quota: add missing prefixes to struct field names. |
| * quota.c (decode_cmd_data): Print field names in accordance with |
| their definition. |
| |
| quota: fix indentation inside subcommand dispatching switch statement. |
| |
| 2016-09-27 Eugene Syromyatnikov <evgsyr@gmail.com> |
| |
| quota: avoid printing id argument for those commands that ignore it. |
| As id argument is not used for Q_QUOTAOFF, Q_GETFMT, Q_V2_GETINFO, |
| Q_GETINFO, Q_V2_SEETINFO, Q_SETINFO, Q_SYNC, Q_XQUOTAON, Q_XQUOTAOFF, |
| Q_XQUOTARM, Q_XGETQSTAT, Q_XGETQSTATV, Q_XQUOTASYNC, Q_V1_GETSTATS, and |
| Q_V2_GETSTATS subcommands, do not print it for these subcommands. |
| |
| * quota.c (decode_cmd_data): Add id argument parameter, add printing |
| of id argument for Q_GETQUOTA, Q_SETQUOTA, Q_GETNEXTQUOTA, |
| Q_V1_GETQUOTA, Q_V1_SETQUOTA, Q_V2_GETQUOTA, Q_V2_SETQUOTA, |
| Q_XGETQUOTA, Q_XGETNEXTQUOTA, Q_XSETQLIM, and unknown subcommands. |
| (SYS_FUNC(quotactl)): Remove printing of id argument, pass it |
| to decode_cmd_data. |
| |
| 2016-09-27 Eugene Syromyatnikov <evgsyr@gmail.com> |
| |
| quota: use printuid for id parameter printing. |
| * quota.c (SYS_FUNC(quotactl)): Since id call argument is used for |
| user/group/project ID which all have special semantics for -1, |
| print it the same way as UIDs are printed. |
| |
| quota: display quota subcommand as a macro. |
| * quota.c (SYS_FUNC(quotactl)): Replace disjunction of two xlat values |
| (which also lacks shift of the left part) with QCMD macro call. |
| |
| 2016-09-26 Dmitry V. Levin <ldv@altlinux.org> |
| |
| tests: use VERBOSE macro in waitid and waitid-v tests. |
| * tests/waitid-v.c (VERBOSE_RUSAGE): Remove. |
| (VERBOSE): Define to 1. |
| * tests/waitid.c (sprint_rusage): Check VERBOSE instead |
| of VERBOSE_RUSAGE. |
| |
| tests: use VERBOSE macro in wait4 and wait4-v tests. |
| * tests/wait4-v.c (VERBOSE_RUSAGE): Remove. |
| (VERBOSE): Define to 1. |
| * tests/wait4.c (sprint_rusage): Check VERBOSE instead |
| of VERBOSE_RUSAGE. |
| |
| tests: use VERBOSE macro in msg_control and msg_control-v tests. |
| * tests/msg_control-v.c (VERBOSE_MSGHDR): Remove. |
| (VERBOSE): Define to 1. |
| * tests/msg_control.c (print_fds, print_ip_opts): Check VERBOSE instead |
| of VERBOSE_MSGHDR. |
| |
| tests: use VERBOSE macro in mmsg_name and mmsg_name-v tests. |
| * tests/mmsg_name-v.c (VERBOSE_MMSGHDR): Remove. |
| (VERBOSE): Define to 1. |
| * tests/mmsg_name.c (test_mmsg_name): Check VERBOSE instead |
| of VERBOSE_MMSGHDR. |
| |
| tests: use VERBOSE macro in ioctl_rtc and ioctl_rtc-v tests. |
| * tests/ioctl_rtc-v.c (VERBOSE_IOCTL): Remove. |
| (VERBOSE): Define to 1. |
| * tests/ioctl_rtc.c (print_rtc_time): Check VERBOSE instead |
| of VERBOSE_IOCTL. |
| |
| tests: use VERBOSE macro in ioctl_evdev and ioctl_evdev-v tests. |
| * tests/ioctl_evdev-v.c (VERBOSE_IOCTL): Remove. |
| (VERBOSE): Define to 1. |
| * tests/ioctl_evdev.c: Check VERBOSE instead of VERBOSE_IOCTL. |
| |
| tests: use VERBOSE macro in execveat and execveat-v tests. |
| * tests/execveat-v.c (VERBOSE_EXECVEAT): Remove. |
| (VERBOSE): Define to 1. |
| * tests/execveat.c (main): Check VERBOSE instead of VERBOSE_EXECVEAT. |
| |
| tests: use VERBOSE macro in execve and execve-v tests. |
| * tests/execve-v.c (VERBOSE_EXECVE): Remove. |
| (VERBOSE): Define to 1. |
| * tests/execve.c (main): Check VERBOSE instead of VERBOSE_EXECVE. |
| |
| 2016-09-26 Dmitry V. Levin <ldv@altlinux.org> |
| |
| tests: add VERBOSE macro. |
| Introduce VERBOSE macro (defaults to 0) that is expected to be defined |
| to 1 by code testing "strace -v" output. |
| |
| * tests/tests.h [!VERBOSE] (VERBOSE): New macro. |
| |
| 2016-09-20 Dmitry V. Levin <ldv@altlinux.org> |
| |
| decode_open: print the mode argument when O_TMPFILE flag is set. |
| O_TMPFILE reqires the mode argument (just like O_CREAT), so print it. |
| |
| * open.c (STRACE_O_TMPFILE): New macro. |
| (decode_open): Print the mode argument when O_TMPFILE flag is set. |
| * tests/open.c (main): Check it. |
| Fixes RH#1377846. |
| |
| 2016-09-20 Dmitry V. Levin <ldv@altlinux.org> |
| |
| tests: use sprintrc in tests/ptrace.c. |
| * tests/ptrace.c (errstr): New static variable. |
| (do_ptrace): Initialize it using sprintrc. |
| (test_peeksiginfo, main): Use errstr. |
| |
| tests: use sprintrc in tests/netlink_protocol.c. |
| * tests/netlink_protocol.c (main): Use sprintrc. |
| |
| tests: use sprintrc in tests/fchownat.c. |
| * tests/fchownat.c (main): Use sprintrc. |
| |
| tests: use sprintrc in tests/fchmodat.c. |
| * tests/fchmodat.c (main): Use sprintrc. Add more fchmodat decoding tests. |
| |
| tests: use sprintrc in tests/fchmod.c. |
| * tests/fchmod.c (main): Use sprintrc. Add more fchmod decoding tests. |
| * tests/fchmod.test: Update the value specified for strace -a parameter. |
| |
| tests: use sprintrc in tests/getgroups.c. |
| * tests/getgroups.c (main): Use sprintrc. |
| |
| tests: use sprintrc in tests/setgroups.c. |
| * tests/setgroups.c (main): Use sprintrc. |
| |
| 2016-09-19 Dmitry V. Levin <ldv@altlinux.org> |
| |
| tests/utime.c: rewrite without assert. |
| * tests/utime.c: Do not include <assert.h>. |
| (main): Use sprintrc instead of assert. |
| |
| tests/xattr.c: rewrite without assert. |
| * tests/xattr.c: Do not include <assert.h>. |
| (main): Use sprintrc instead of assert. |
| |
| tests: use sprintrc in tests/xchownx.c. |
| * tests/xchownx.c (main): Do not include <errno.h>. Use sprintrc. |
| |
| tests/xstatfsx.c: fix potential errno clobbering. |
| * tests/xstatfsx.c (main): Use sprintrc. |
| |
| 2016-09-19 Dmitry V. Levin <ldv@altlinux.org> |
| |
| Add more fs magic constants. |
| Add *_MAGIC constants defined for some relatively widespread |
| non-mainline filesystems. |
| |
| * xlat/fsmagic.in: Add AUFS_SUPER_MAGIC, GPFS_SUPER_MAGIC, |
| VZFS_SUPER_MAGIC, and ZFS_SUPER_MAGIC constants. |
| |
| 2016-09-15 Eugene Syromyatnikov <evgsyr@gmail.com> |
| |
| tests: fix whitespace for explicit type casts in futex test. |
| |
| 2016-09-14 Dmitry V. Levin <ldv@altlinux.org> |
| |
| Add more fs magic constants. |
| Add *_MAGIC constants defined inside linux fs but not explicitly |
| exported via linux uapi. |
| |
| * xlat/fsmagic.in: Add HFS_SUPER_MAGIC, HFSPLUS_SUPER_MAGIC, |
| EXOFS_SUPER_MAGIC, CEPH_SUPER_MAGIC, UBIFS_SUPER_MAGIC, JFS_SUPER_MAGIC, |
| BEFS_SUPER_MAGIC, NTFS_SB_MAGIC, XFS_SB_MAGIC, CONFIGFS_MAGIC, |
| FUSE_CTL_SUPER_MAGIC, FUSE_SUPER_MAGIC, AFS_FS_MAGIC, OCFS2_SUPER_MAGIC, |
| VXFS_SUPER_MAGIC, LOGFS_MAGIC, SMB2_MAGIC_NUMBER, and CIFS_MAGIC_NUMBER |
| constants. |
| |
| 2016-09-14 Dmitry V. Levin <ldv@altlinux.org> |
| |
| Update fs *_MAGIC constants. |
| Add fs *_MAGIC constants exported by linux uapi. |
| |
| * xlat/fsmagic.in: Add BFS_MAGIC, GFS2_MAGIC, and ROMFS_MAGIC constants |
| defined in linux/bfs_fs.h, linux/gfs2_ondisk.h, and linux/romfs_fs.h, |
| respectively. |
| |
| 2016-09-13 Dmitry V. Levin <ldv@altlinux.org> |
| |
| tests: workaround limited semctl implementation in musl. |
| musl libc forwards semctl command argument for 8 known commands only, |
| for all the rest it passes 0 instead. |
| |
| * tests/ipc_sem.c (main): Update semctl expected output. |
| |
| 2016-09-13 Eugene Syromyatnikov <evgsyr@gmail.com> |
| |
| tests: add more IPC decoding checks. |
| * tests/ipc_msg.c: Additional msgget (parameter format) and msgctl |
| (parameter format, decoding of struct msqid_ds in IPC_SET/IPC_STAT |
| commands) checks. |
| * tests/ipc_sem.c: Additional semget and semctl checks. |
| * tests/ipc_shm.c: Additional shmget and shmctl checks. |
| * tests/semop.c: Additional semop checks. Add checks for semtimedop. |
| * tests/semop.test: Add explicit -e parameter in order to trace both |
| semop and semtimedop. |
| * tests/shmxt.c: Additional shmat and shmdt checks. |
| |
| 2016-09-12 Dmitry V. Levin <ldv@altlinux.org> |
| |
| .mailmap: add addresses of Dr. David Alan Gilbert. |
| * .mailmap: Add both addresses of Dr. David Alan Gilbert here to avoid |
| duplications in CREDITS file. |
| |
| 2016-09-12 Eugene Syromyatnikov <evgsyr@gmail.com> |
| |
| .mailmap: add canonical name for Eugene Syromyatnikov. |
| This is needed due to apparent deviation in spelling of commit author |
| name in several commits. |
| |
| * .mailmap: Add canonical name for Eugene Syromyatnikov. |
| |
| 2016-09-12 Dmitry V. Levin <ldv@altlinux.org> |
| |
| Update generic ioctl entries from linux 4.8. |
| * linux/64/ioctls_inc.h: Update from linux v4.8 using ioctls_gen.sh. |
| * linux/32/ioctls_inc_align32.h: Likewise. |
| * linux/32/ioctls_inc_align64.h: Likewise. |
| |
| 2016-09-12 Gleb Fotengauer-Malinovskiy <glebfm@altlinux.org> |
| |
| x32: update ioctl entries from linux 4.8. |
| * linux/x32/ioctls_inc0.h: Update from linux v4.8 using ioctls_gen.sh. |
| |
| maint: update for linux 4.8. |
| * maint/ioctls_sym.sh: Add workarounds for linux/atm_zatm.h and |
| xen/evtchn.h files. |
| |
| 2016-09-12 Dmitry V. Levin <ldv@altlinux.org> |
| |
| tests: use sprintrc_grep in tests/ipc_shm.c. |
| * tests/ipc_shm.c (main): Use sprintrc_grep. |
| |
| tests: use sprintrc_grep in tests/ipc_sem.c. |
| * tests/ipc_sem.c (main): Use sprintrc_grep. |
| |
| 2016-09-11 Dmitry V. Levin <ldv@altlinux.org> |
| |
| tests: use sprintrc_grep in tests/ipc_msg.c. |
| * tests/ipc_msg.c (main): Use sprintrc_grep. |
| |
| 2016-09-10 Dmitry V. Levin <ldv@altlinux.org> |
| |
| tests: use sprintrc in tests/chmod.c. |
| * tests/chmod.c (main): Use sprintrc. Add more chmod decoding tests. |
| |
| 2016-09-09 Dmitry V. Levin <ldv@altlinux.org> |
| |
| ipc: fix printing of nsops argument of semop and semtimedop syscalls. |
| According to POSIX, nsops argument of semop syscall has type size_t, |
| but the kernel treats nsops argument of semop and semtimedop syscalls |
| as unsigned int. |
| |
| * ipc_sem.c (tprint_sembuf_array): Change type of "count" argument |
| from unsigned long to unsigned int, print it using %u format. |
| |
| 2016-09-09 Eugene Syromyatnikov <evgsyr@gmail.com> |
| |
| tests/aio.c: bring indentation in conformance with the rest of the file. |
| |
| 2016-09-09 Eugene Syromyatnikov <evgsyr@gmail.com> |
| |
| tests: use predefined constant in aio_context_t checks in aio test. |
| Also fix io_cancel and io_destroy checks which did not check correct |
| printing of context argument properly. |
| |
| * tests/aio.c (main): Update syscall checks in order to use newly |
| defined bogus_ctx constant. |
| |
| 2016-09-09 Dmitry V. Levin <ldv@altlinux.org> |
| |
| Mark io_setup and io_destroy as memory mapping related syscalls. |
| As io_setup syscall allocates some memory using do_mmap_pgoff, and |
| io_destroy deallocates this memory using vm_munmap, set TRACE_MEMORY |
| flag for all sysentries of io_setup and io_destroy using the following |
| oneliner: |
| sed -ri '/io_setup|io_destroy/ s/0,/TM,/' linux/*/syscallent*.h |
| |
| * linux/*/syscallent*.h (io_setup, io_destroy): Change sys_flags to TM. |
| |
| 2016-09-08 Dmitry V. Levin <ldv@altlinux.org> |
| |
| travis: add x86 musl. |
| * .travis.yml (matric): Add musl-gcc/x86. |
| * travis-build.sh [TARGET == x86]: Specify --target along with --build |
| to configure. |
| * travis-install.sh [CC == musl-gcc && TARGET == x32]: Add -mx32 to $CC. |
| [CC == musl-gcc && TARGET == x86]: Add -m32 to $CC. Specify --build |
| and --target to musl configure invocation. |
| |
| 2016-09-08 Eugene Syromyatnikov <evgsyr@gmail.com> |
| |
| tests: use PRI__*64 macros in aio test. |
| It was incorrectly assumed that __*64 types are long long on all |
| platforms, despite strace having specially crafted macros in order |
| to handle precisely this architecture discrepancy. |
| The commit fixes this oversight. |
| |
| * tests/aio.c (main): Use PRI__*64 macros for correct format conversion |
| specifiers for __*64-typed values. |
| |
| 2016-09-08 Eugene Syromyatnikov <evgsyr@gmail.com> |
| |
| ipc: fix printing of integer arguments. |
| * ipc_msgctl.c (SYS_FUNC(msgctl)): As msqid argument is treated as int |
| by the kernel, cast it to int and print it using %d format. |
| * ipc_sem.c (SYS_FUNC(semop), SYS_FUNC(semtimedop)): Likewise, |
| for semid argument. |
| (SYS_FUNC(semget)): Likewise, for nsems argument. |
| (SYS_FUNC(semctl)): Likewise, for semid and semnum arguments. |
| * ipc_shm.c (SYS_FUNC(shmat)): Likewise, for shmid argument. |
| * ipc_shmctl.c (SYS_FUNC(shmctl)): Likewise. |
| |
| 2016-09-08 Dmitry V. Levin <ldv@altlinux.org> |
| |
| ipc: fix printing key_t arguments of msgget, semget, and shmget syscalls |
| * ipc_msg.c (SYS_FUNC(msgget)): As key_t type in the kernel |
| is __kernel_key_t (i.e. int), cast key_t argument to int |
| and print it using %#x format. |
| * ipc_sem.c (SYS_FUNC(semget)): Likewise. |
| * ipc_shm.c (SYS_FUNC(shmget)): Likewise. |
| * tests/ipc_msg.c (main): Test it. |
| * tests/ipc_sem.c (main): Likewise. |
| * tests/ipc_shm.c (main): Likewise. |
| |
| 2016-09-08 Eugene Syromyatnikov <evgsyr@gmail.com> |
| |
| tests: add more sched_getattr and sched_setattr decoding checks. |
| * tests/sched_xetattr.c (main): Add more sched_getattr and sched_setattr |
| decoding checks. |
| |
| 2016-09-08 Eugene Syromyatnikov <evgsyr@gmail.com> |
| |
| tests: change type of sched_nice field to signed in sched_xetattr test. |
| Kernel headers declare this field as s32, and strace prints it with %d |
| specifier. |
| |
| * tests/sched_xetattr.c (main): Change type of sched_nice field of struct |
| sched_attr to int32_t, update format specifiers accordingly. |
| |
| 2016-09-08 Eugene Syromyatnikov <evgsyr@gmail.com> |
| |
| tests: add sprintrc_grep function to libtests. |
| New sprintrc_grep function is sprintrc function equivalent suitable for |
| tests where grep-base pattern matching is employed. |
| |
| * tests/tests.h (sprintrc_grep): New prototype. |
| * tests/sprintrc.c (enum sprintrc_fmt): New sprintrc format enumeration. |
| (sprintrc_ex): New function, renamed from sprintrc and updated to |
| support different formats. |
| (sprintrc): Change to use sprintrc_ex with SPRINTRC_FMT_RAW. |
| (sprintrc_grep): New function, calls sprintrc_ex with SPRINTRC_FMT_GREP. |
| |
| 2016-09-08 Eugene Syromyatnikov <evgsyr@gmail.com> |
| |
| tests: perform more strict structure allocation in sched_xetattr test. |
| Use tail_alloc with precise size of the structure. |
| |
| * tests/sched_xetattr.c (main): Eliminate usage of anonymous union type. |
| Rename sched to sched_attr. Change type of sched_attr to struct |
| pointer. Use tail_alloc for sched_attr allocation, update printf |
| statements accrodingly. |
| |
| 2016-09-08 Eugene Syromyatnikov <evgsyr@gmail.com> |
| |
| tests: split long lines in sched_xetattr test. |
| * tests/sched_xetattr.c (main): Split long lines. |
| |
| 2016-09-07 Dmitry V. Levin <ldv@altlinux.org> |
| |
| tests/aio.c: fix for x32 personality. |
| * tests/aio.c (main): Do not pass 64-bit aio_context_t to io_submit |
| and io_getevents until strace learns how to print 64-bit pointers on x32 |
| and on x86_64 for x32 personality. |
| |
| 2016-09-07 Dmitry V. Levin <ldv@altlinux.org> |
| |
| aio: print aio_context_t as a pointer type. |
| As aio_context_t is treated by the kernel as a pointer, |
| print it using printaddr. |
| |
| * aio.c (SYS_FUNC(io_setup)): Print the pointer to aio_context_t |
| argument using printnum_ptr. |
| (SYS_FUNC(io_destroy), SYS_FUNC(io_submit), SYS_FUNC(io_cancel), |
| SYS_FUNC(io_getevents)): Print aio_context_t argument using printaddr. |
| * tests/aio.c (sprint_aio_context_t): Remove. |
| (main): Update expected output. |
| |
| 2016-09-07 Dmitry V. Levin <ldv@altlinux.org> |
| |
| tests/aio.c: rewrite without assert. |
| * tests/aio.c: Do not include <assert.h>. |
| (main): Use sprintrc instead of assert. |
| |
| 2016-09-06 Eugene Syromyatnikov <evgsyr@gmail.com> |
| |
| tests: add more aio decoding checks. |
| * tests/aio.c (sprint_aio_context_t): New function. |
| (main): Use it; add more checks. |
| |
| 2016-09-06 Eugene Syromyatnikov <evgsyr@gmail.com> |
| |
| tests: add suffix and cast to 64-bit constants in aio test. |
| This helps to avoid warnings like |
| "integer constant is too large for ‘long’ type" |
| reported by some versions of gcc on 32-bit platforms. |
| |
| * tests/aio.c (main): Add ULL suffix to 64-bit constants |
| and cast them to unsigned long. |
| |
| 2016-09-05 Eugene Syromyatnikov <evgsyr@gmail.com> |
| |
| tests: check decoding of perf_event_open syscall. |
| * tests/perf_event_open.c: New file. |
| * tests/perf_event_open.test: New test. |
| * tests/.gitignore: Add perf_event_open. |
| * tests/Makefile.am (check_PROGRAMS): Likewise. |
| (DECODER_TESTS): Add perf_event_open.test. |
| |
| Makefile.am: use pwd instead of realpath. |
| * Makefile.am (CODE_COVERAGE_GENHTML_OPTIONS): Use standard pwd(1) |
| instead of less widespread realpath(1) utility from GNU coreutils. |
| |
| 2016-09-05 Dmitry V. Levin <ldv@altlinux.org> |
| |
| tests: use sprintrc in tests/xetpriority.c. |
| * tests/xetpriority.c (main): Use sprintrc. |
| |
| tests: use sprintrc in vhangup.test. |
| * tests/vhangup.c (main): Use sprintrc. |
| |
| tests: use sprintrc in tests/sockname.c. |
| * tests/sockname.c (test_sockname_syscall): Use sprintrc. |
| |
| tests: use sprintrc in signalfd4.test. |
| * tests/signalfd4.c (main): Use sprintrc. |
| |
| tests: use sprintrc in setrlimit.test. |
| * tests/setrlimit.c (main): Use sprintrc. |
| |
| tests: use sprintrc in set_mempolicy.test. |
| * tests/set_mempolicy.c (main, print_nodes): Use sprintrc. |
| |
| tests: use sprintrc in openat.test. |
| * tests/openat.c (main): Use sprintrc. |
| |
| tests: use sprintrc in open.test. |
| * tests/open.c (main): Use sprintrc. |
| |
| tests: use sprintrc in move_pages.test. |
| * tests/move_pages.c (print_stat_pages, print_move_pages): Use sprintrc. |
| |
| tests: use sprintrc in mlockall.test. |
| * tests/mlockall.c (main): Use sprintrc. |
| |
| tests: use sprintrc in mlock.test. |
| * tests/mlock.c (main): Use sprintrc. |
| |
| tests: use sprintrc in epoll_create1.test. |
| * tests/epoll_create1.c (main): Use sprintrc. |
| |
| 2016-09-05 Eugene Syromyatnikov <evgsyr@gmail.com> |
| |
| tests: fix printing of min_nr and nr arguments of io_getevents syscall. |
| * tests/aio.c (main): Change output format for min_nr and nr arguments |
| in io_getevents check to %ld, cast these arguments to long. |
| |
| tests: use sprintrc for return code output in aio test. |
| * tests/aio.c (main): Use sprintrc for return code output. |
| |
| tests: add more tests for ched_rr_get_interval decoding. |
| * tests/sched_rr_get_interval.c (main): Check decoding of invalid |
| timespec pointer and successful syscall invocation. |
| |
| tests: use sprintrc for return code output in sched_rr_get_interval test |
| * tests/sched_rr_get_interval.c (main): Use sprintrc for return code |
| output. |
| |
| tests: add more tests for sched_getscheduler and sched_xetscheduler. |
| * tests/sched_xetscheduler.c (main): Check for decoding of invalid PID |
| in sched_getscheduler and sched_setscheduler, invalid address |
| of sched_param structure, and invalid policy value. |
| |
| tests: use sprintrc for return code output in sched_xetscheduler test. |
| * tests/sched_xetscheduler.c (main): Use sprintrc for return code output. |
| |
| 2016-09-05 Eugene Syromyatnikov <evgsyr@gmail.com> |
| |
| aio: use printfd for fd printing. |
| struct iocb contains two fields with fd semantics: aio_fildes and |
| aio_resfd. It is quite reasonable to use the appropriate function for |
| printing them (apart from just "%d"). |
| |
| * aio.c (print_common_flags): Add struct tcb pointer to parameter list; |
| use printfd for printing aio_resfd field. |
| (print_iocb_header): Add struct tcb pointer to parameter list; |
| use printfd for printing aio_fildes field. |
| (print_iocb): Provide tcp argument to print_iocb_header |
| and print_common_flags. |
| (SYS_FUNC(io_cancel)): Likewise. |
| |
| 2016-09-05 Dmitry V. Levin <ldv@altlinux.org> |
| |
| sh64: wire up new syscalls. |
| * linux/sh64/syscallent.h [380..393]: New entries. |
| |
| 2016-09-02 Dmitry V. Levin <ldv@altlinux.org> |
| |
| sh: wire up new syscalls. |
| * linux/sh/syscallent.h [369..382]: New entries. |
| |
| 2016-09-05 Dmitry V. Levin <ldv@altlinux.org> |
| |
| avr32: wire up preadv2 and pwritev2 syscalls. |
| * linux/avr32/syscallent.h [326]: Add preadv2 entry. |
| [327]: Add pwritev2 entry. |
| |
| 2016-09-05 Eugene Syromyatnikov <evgsyr@gmail.com> |
| |
| tests: check decoding of readahead syscall. |
| * configure.ac (AC_CHECK_FUNCS): Add readahead. |
| * tests/readahead.c: New file. |
| * tests/readahead.test: New test. |
| * tests/.gitignore: Add readahead. |
| * tests/Makefile.am (check_PROGRAMS): Likewise. |
| (DECODER_TESTS): Add readahead.test. |
| |
| 2016-09-02 Eugene Syromyatnikov <evgsyr@gmail.com> |
| |
| tests: move sprintrc function to libtests. |
| * tests/tests.h (sprintrc): New prototype. |
| * tests/futex.c (sprintrc): Move to ... |
| * tests/sprintrc.c: ... new file. |
| * tests/Makefile.am (libtests_a_SOURCES): Add sprintrc.c. |
| |
| tests/futex: add support to sprintrc for return codes other than 0 and -1 |
| * tests/futex.c (sprintrc): Print the actual return code provided, |
| not just "0". Check snprintf return code. |
| |
| tests/futex: increase sprintrc static buffer size. |
| * tests/futex.c (sprintrc): Increase buffer size from 256 to 4096. |
| |
| tests/futex: rename retstr to sprintrc. |
| * tests/futex.c (retstr): Rename to sprintrc. |
| (main): Convert all retstr calls to sprintrc. |
| |
| 2016-09-01 Eugene Syromyatnikov <evgsyr@gmail.com> |
| |
| readahead: fix print format for the "count" argument. |
| According to documentation and kernel's syscalls.h, its type is size_t, |
| so "%lu" format should be used instead of "%ld". |
| |
| * readahead.c (SYS_FUNC(readahead)): Fix conversion specifier |
| for the "count" argument. |
| |
| 2016-08-31 Dmitry V. Levin <ldv@altlinux.org> |
| |
| tests/xstatx.c: use zero_extend_signed_to_ull/sign_extend_unsigned_to_ll |
| Use zero_extend_signed_to_ull and sign_extend_unsigned_to_ll macros |
| instead of explicit casts with unpredictable sign extension semantics. |
| |
| * tests/xstatx.c (print_time, main): Use zero_extend_signed_to_ull |
| instead of explicit cast. |
| (print_stat): Use zero_extend_signed_to_ull and |
| sign_extend_unsigned_to_ll instead of explicit casts. |
| |
| 2016-08-31 Dmitry V. Levin <ldv@altlinux.org> |
| |
| tests: add sign_extend_unsigned_to_ll macro. |
| * tests/tests.h (sign_extend_unsigned_to_ll): New macro from defs.h. |
| |
| 2016-08-31 Eugene Syromiatnikov <evgsyr@gmail.com> |
| |
| Refactor common sa_handler printing code. |
| * xlat/sa_handler_values.in: New file. |
| * signal.c: Include "xlat/sa_handler_values.h". |
| (get_sa_handler_str, print_sa_handler): New functions. |
| (SYS_FUNC(sigsetmask), SYS_FUNC(signal), decode_new_sigaction): Use them. |
| |
| 2016-08-31 Dmitry V. Levin <ldv@altlinux.org> |
| |
| Update TCP* constants. |
| * xlat/socktcpoptions.in: Add TCP_REPAIR_WINDOW introduced by linux |
| kernel commit v4.8-rc1~140^2~226. |
| |
| 2016-08-30 Dmitry V. Levin <ldv@altlinux.org> |
| |
| Update SCTP_* constants. |
| * xlat/socksctpoptions.in: Add SCTP_PR_SUPPORTED, SCTP_DEFAULT_PRINFO, |
| and SCTP_PR_ASSOC_STATUS introduced by linux kernel commits |
| v4.8-rc1~140^2~148^2~5, v4.8-rc1~140^2~148^2~4, and |
| v4.8-rc1~140^2~148^2~3, respectively. |
| |
| Update fs *_MAGIC constants. |
| * xlat/fsmagic.in: Add BALLOON_KVM_MAGIC and ZSMALLOC_MAGIC introduced |
| by linux kernel commits v4.8-rc1~147^2~82 and v4.8-rc1~147^2~74, |
| respectively. |
| |
| Update KEXEC_ARCH_* constants. |
| * xlat/kexec_arch_values.in: Add KEXEC_ARCH_AARCH64 introduced by linux |
| kernel commit v4.8-rc1~16^2~41. |
| |
| Update ETH_P_* constants. |
| * xlat/ethernet_protocols.in: Add ETH_P_NCSI introduced by linux kernel |
| commit v4.8-rc1~140^2~65^2~8. |
| |
| Update BPF_* constants. |
| * xlat/bpf_map_types.in: Add BPF_MAP_TYPE_CGROUP_ARRAY introduced |
| by linux kernel commit v4.8-rc1~140^2~212^2~2. |
| * xlat/bpf_prog_types.in: Add BPF_PROG_TYPE_XDP introduced |
| by linux kernel commit v4.8-rc1~140^2~64^2~10. |
| |
| 2016-08-30 Dmitry V. Levin <ldv@altlinux.org> |
| |
| Remove HAVE_SIGACTION checks. |
| The syscall parsers guarded by HAVE_SIGACTION check have to be compiled |
| regardless of libc sigaction function availability. |
| |
| * configure.ac (AC_CHECK_FUNCS): Remove sigaction. |
| * signal.c: Remove HAVE_SIGACTION checks. |
| |
| 2016-08-30 Dmitry V. Levin <ldv@altlinux.org> |
| |
| Remove obsolescent autoconf macro AC_TYPE_SIGNAL. |
| All supported systems are expected to have C89 conforming sematics. |
| |
| * configure.ac (AC_TYPE_SIGNAL): Remove. |
| |
| 2016-08-30 Dmitry V. Levin <ldv@altlinux.org> |
| |
| Remove obsolescent autoconf macro AC_C_CONST. |
| All supported systems are expected to have the 'const' keyword. |
| |
| * configure.ac (AC_C_CONST): Remove. |
| |
| 2016-08-30 Eugene Syromiatnikov <evgsyr@gmail.com> |
| |
| tests: check decoding of futex syscall. |
| * tests/futex.c: New file. |
| * tests/futex.test: New test. |
| * tests/.gitignore: Add futex. |
| * tests/Makefile.am (check_PROGRAMS): Likewise. |
| (DECODER_TESTS): Add futex.test. |
| |
| 2016-08-30 Eugene Syromyatnikov <evgsyr@gmail.com> |
| |
| futex: do not pretend <linux/futex.h> is included. |
| As configure.ac does not check for linux/futex.h, HAVE_LINUX_FUTEX_H is |
| never defined and therefore the inclusion of <linux/futex.h> guarded by |
| HAVE_LINUX_FUTEX_H makes no sense. |
| |
| Moreover, <linux/futex.h> used to have an incorrect definition |
| of FUTEX_WAIT_BITSET_PRIVATE and FUTEX_WAKE_BITSET_PRIVATE: |
| since kernel commit v2.6.24-6320-gcd68998 where these definitions |
| were initially introduced and up to v2.6.31-7082-gf8d1e54 where they |
| were finally fixed these macros had been incorrectly defined via |
| FUTEX_WAIT_BITS and FUTEX_WAKE_BITS instead of FUTEX_WAIT_BITSET |
| and FUTEX_WAKE_BITSET, and these incorrect definitions made their way |
| into some distributions still in use. |
| |
| * futex.c [HAVE_LINUX_FUTEX_H]: Remove. |
| |
| 2016-08-30 Eugene Syromyatnikov <evgsyr@gmail.com> |
| |
| futex: avoid printing val when it is not used by the futex command. |
| This is analogous to timeout argument omitting in FUTEX_WAKE_BITSET |
| command. |
| |
| * futex.c (SYS_FUNC(futex)): Remove common printing of val argument. |
| Add printing of val argument for all futex commands except |
| FUTEX_LOCK_PI, FUTEX_UNLOCK_PI, and FUTEX_TRYLOCK_PI. |
| |
| 2016-08-30 Eugene Syromyatnikov <evgsyr@gmail.com> |
| |
| xlat: add FUTEX_WAIT* commands with FUTEX_CLOCK_REALTIME bit set. |
| * xlat/futexops.in: Add FUTEX_WAIT|FUTEX_CLOCK_REALTIME and |
| FUTEX_WAIT_PRIVATE|FUTEX_CLOCK_REALTIME values supported by linux kernel |
| since commit v4.5-rc1~172^2. |
| |
| 2016-08-30 Eugene Syromyatnikov <evgsyr@gmail.com> |
| |
| futex: fix formatting of unknown command argument. |
| Use alternate form for printing hexadecimal numbers to avoid confusion. |
| Use printaddr to print uaddr as the latter is interpreted as a pointer |
| in all currently supported futex operations. |
| |
| * futex.c (SYS_FUNC(futex)): Fix formatting of unknown command |
| argument. |
| |
| 2016-08-30 Eugene Syromyatnikov <evgsyr@gmail.com> |
| |
| futex: add handling of FUTEX_FD command. |
| Since obsolete FUTEX_FD command is known and used to have some expected |
| argument format, print FUTEX_FD using that format. |
| |
| * futex.c (SYS_FUNC(futex)): Handle FUTEX_FD command. |
| |
| 2016-08-30 Eugene Syromyatnikov <evgsyr@gmail.com> |
| |
| futex: fix formatting of val3 hexadecimal argument. |
| * futex.c (SYS_FUNC(futex)): In FUTEX_WAIT_BITSET and FUTEX_WAKE_BITSET, |
| print hexadecimal val3 argument in alternate form to avoid confusion. |
| |
| 2016-08-30 Eugene Syromyatnikov <evgsyr@gmail.com> |
| |
| futex: fix FUTEX_WAKE_OP compare function mask. |
| According to the initial and current (v4.7) kernel implementations, |
| in FUTEX_WAKE_OP case the compare function does not have |
| FUTEX_OP_OPARG_SHIFT flag and occupies 4 bits starting with bit 24. |
| |
| * futex.c (SYS_FUNC(futex)): Do not print FUTEX_OP_OPARG_SHIFT |
| for 27th bit of val3 in FUTEX_WAKE_OP case. |
| |
| 2016-08-30 Dmitry V. Levin <ldv@altlinux.org> |
| |
| tests: use correct m32/mx32 st_mtime_nsec checks in tests/xstatx.c. |
| * bootstrap: Add -DMPERS_IS_$(MPERS_NAME) to ARCH_MFLAGS. |
| * tests/xstatx.c [USE_ASM_STAT && STRUCT_STAT_IS_STAT64 && MPERS_IS_m32]: |
| Redefine HAVE_STRUCT_STAT_ST_MTIME_NSEC |
| to HAVE_M32_STRUCT_STAT64_ST_MTIME_NSEC. |
| [USE_ASM_STAT && STRUCT_STAT_IS_STAT64 && MPERS_IS_mx32]: |
| Redefine HAVE_STRUCT_STAT_ST_MTIME_NSEC |
| to HAVE_MX32_STRUCT_STAT64_ST_MTIME_NSEC. |
| [USE_ASM_STAT && !STRUCT_STAT_IS_STAT64 && MPERS_IS_m32]: |
| Redefine HAVE_STRUCT_STAT_ST_MTIME_NSEC |
| to HAVE_M32_STRUCT_STAT_ST_MTIME_NSEC. |
| [USE_ASM_STAT && !STRUCT_STAT_IS_STAT64 && MPERS_IS_mx32]: |
| Redefine HAVE_STRUCT_STAT_ST_MTIME_NSEC |
| to HAVE_MX32_STRUCT_STAT_ST_MTIME_NSEC. |
| |
| Based on patch by James Clarke <jrtc27@jrtc27.com>. |
| |
| 2016-08-30 Dmitry V. Levin <ldv@altlinux.org> |
| |
| Remove redundant check for PTRACE_LISTEN availability. |
| As ptrace.h already ensures that PTRACE_LISTEN is defined, |
| there is no need to check this fact in other places. |
| |
| * strace.c (ptrace_restart): Do not check that PTRACE_LISTEN is defined. |
| |
| 2016-08-30 Dmitry V. Levin <ldv@altlinux.org> |
| |
| Remove unused autoconf macro AC_TYPE_GETGROUPS. |
| strace code does not use GETGROUPS_T. |
| |
| * configure.ac (AC_TYPE_GETGROUPS): Remove. |
| |
| 2016-08-30 Dmitry V. Levin <ldv@altlinux.org> |
| |
| Remove unused autoconf macro AC_TYPE_MODE_T. |
| strace code already redefines mode_t. |
| |
| * configure.ac (AC_TYPE_MODE_T): Remove. |
| |
| 2016-08-30 James Clarke <jrtc27@jrtc27.com> |
| |
| Use PTRACE_SUNDETACH everywhere on SPARC and SPARC64. |
| SPARC has a different PTRACE_DETACH value correctly defined in |
| sys/ptrace.h, but linux/ptrace.h clobbers it with the standard one. |
| PTRACE_SUNDETACH is also defined to the correct value by sys/ptrace.h, |
| so use that instead. |
| |
| * strace.c (detach) [SPARC]: Move redefinition of PTRACE_DETACH |
| to PTRACE_SUNDETACH ... |
| * ptrace.h [SPARC || SPARC64]: ... here. |
| |
| 2016-08-29 Dmitry V. Levin <ldv@altlinux.org> |
| |
| Remove obsolescent autoconf macro AC_HEADER_STDC. |
| All systems supported by strace are expected to have C89 conforming |
| header files. |
| |
| * configure.ac (AC_HEADER_STDC): Remove. |
| |
| 2016-08-29 Dmitry V. Levin <ldv@altlinux.org> |
| |
| Remove unneeded autoconf macro AC_HEADER_DIRENT. |
| strace code already includes <dirent.h> unconditionally. |
| |
| * configure.ac (AC_HEADER_DIRENT): Remove. |
| |
| 2016-08-28 Dmitry V. Levin <ldv@altlinux.org> |
| |
| Remove unneeded autoconf macro AC_HEADER_STDBOOL. |
| strace code assumes C99. |
| |
| * configure.ac (AC_HEADER_STDBOOL): Remove. |
| * defs.h: Include <stdbool.h> unconditionally. |
| |
| 2016-08-27 Dmitry V. Levin <ldv@altlinux.org> |
| |
| Remove obsolescent autoconf macro AC_HEADER_STAT. |
| No systems supported by strace are expected to have the bug workarounded |
| by AC_HEADER_STAT macro. |
| |
| * configure.ac (AC_HEADER_STAT): Remove. |
| |
| 2016-08-29 Dmitry V. Levin <ldv@altlinux.org> |
| |
| Do not use AC_HEADER_MAJOR, include <sys/sysmacros.h> unconditionally. |
| glibc, starting with commit glibc-2.24-28-gdbab657, has deprecated |
| inclusion of <sys/sysmacros.h> by <sys/types.h>. The method used |
| for deprecation breaks AC_HEADER_MAJOR: this autoconf macro no longer |
| defines MAJOR_IN_SYSMACROS, which consequently breaks build. |
| |
| Let's assume that all systems supported by strace provide major, minor, |
| and makedev macros via <sys/sysmacros.h>. |
| |
| * configure.ac (AC_HEADER_MAJOR): Remove. |
| * mknod.c [MAJOR_IN_SYSMACROS, MAJOR_IN_MKDEV]: Remove. |
| Include <sys/sysmacros.h> unconditionally. |
| * print_struct_stat.c: Likewise. |
| * tests/mknod.c: Likewise. |
| * tests/mknodat.c: Likewise. |
| * tests/xstatx.c: Likewise. |
| |
| 2016-08-29 Dmitry V. Levin <ldv@altlinux.org> |
| |
| btrfs: mpersify struct btrfs_ioctl_vol_args_v2. |
| This complements commit v4.11-719-gfb0c609. |
| |
| * btrfs.c (struct_btrfs_ioctl_vol_args_v2): New type. Mpersify it. |
| (btrfs_print_qgroup_inherit): Change qgi_addr type to unsigned long. |
| (btrfs_ioctl): Replace struct btrfs_ioctl_vol_args_v2 with |
| struct_btrfs_ioctl_vol_args_v2. |
| |
| 2016-08-29 Elvira Khabirova <lineprinter0@gmail.com> |
| |
| mpers.awk: relax union member name absence check. |
| This fixes mpersing of unions containing nameless members, |
| e.g. struct btrfs_ioctl_vol_args_v2. |
| |
| * mpers.awk (what_is): Print names of union_type members as is. |
| |
| 2016-08-24 Dmitry V. Levin <ldv@altlinux.org> |
| |
| Revert "tests/xstatx.c: fix stat syscall tests on mips64" |
| Previous commit effectively changed types of st_atime, st_ctime, and |
| st_mtime members of struct stat and struct stat64 to signed integers, |
| making the mips64 workaround obsolete. |
| |
| This reverts commit 3fb84bfc79949c145197c61fbf04ce18464e9112. |
| |
| * tests/xstatx.c (create_sample) [__mips64]: Remove. |
| |
| 2016-08-24 Dmitry V. Levin <ldv@altlinux.org> |
| |
| Mpersify parsers of struct stat and struct stat64. |
| On many architectures that support multiple personalities, |
| struct stat differ between personalities. While old code could handle |
| these differences, there are some architectures, e.g. sparc64, that also |
| have different struct stat64. Rewrite parsers using mpers functionality |
| to fix these issues. |
| |
| * fetch_struct_stat.c: New file. |
| * fetch_struct_stat64.c: Likewise. |
| * print_struct_stat.c: Likewise. |
| * oldstat.c: Likewise. |
| * stat.c: Likewise. |
| * stat.h: Likewise. |
| * stat64.c: Likewise. |
| * file.c: Remove. |
| * printstat.h: Likewise. |
| * linux/aarch64/stat32.h: Likewise. |
| * linux/powerpc64/stat32.h: Likewise. |
| * linux/riscv/stat32.h: Likewise. |
| * linux/sparc64/stat32.h: Likewise. |
| * linux/tile/stat32.h: Likewise. |
| * linux/x32/stat32.h: Likewise. |
| * linux/x86_64/stat32.h: Likewise. |
| * Makefile.am (strace_SOURCES): Add fetch_struct_stat.c, |
| fetch_struct_stat64.c, print_struct_stat.c, oldstat.c, stat.c, stat.h, |
| and stat64.c. Remove file.c, printstat.h, linux/aarch64/stat32.h, |
| linux/powerpc64/stat32.h, linux/riscv/stat32.h, linux/sparc64/stat32.h, |
| linux/tile/stat32.h, linux/x32/stat32.h, and linux/x86_64/stat32.h. |
| * configure.ac (AC_CHECK_MEMBERS): Add struct stat64.st_mtime_nsec. |
| * defs.h (struct strace_stat): New declaration. |
| (print_struct_stat): New prototype. |
| * linux/dummy.h (sys_fstatat64): Remove. |
| |
| 2016-08-24 Dmitry V. Levin <ldv@altlinux.org> |
| |
| mpers.m4: check for struct stat64, struct stat, and their members. |
| * m4/mpers.m4 (st_MPERS_STRUCT_STAT): New macro. |
| (st_MPERS): Use it. |
| |
| 2016-08-24 Dmitry V. Levin <ldv@altlinux.org> |
| |
| mpers: add MPERS_IS_* to CFLAGS passed to mpers.sh. |
| This allows testing of MPERS_IS_* macros in pre-MPERS_DEFS parts |
| of source code. |
| |
| * Makefile.am (mpers-m%.stamp): Add -DMPERS_IS_$(mpers_NAME) to CFLAGS |
| passed to mpers.sh. |
| * mpers_test.sh: Likewise. |
| |
| 2016-08-24 Dmitry V. Levin <ldv@altlinux.org> |
| |
| Move redefinition of stat types to asm_stat.h. |
| * file.c: Move redefinition of types that might be used |
| to define struct stat ... |
| * linux/asm_stat.h: ... here. |
| * tests/xstatx.c: Remove redefinition of stat types. |
| |
| 2016-08-24 Dmitry V. Levin <ldv@altlinux.org> |
| |
| x86_64: provide a replacement of <asm/stat.h> for x32 personality. |
| For the reason described in commit v4.10-517-gcfde1e3, a correct |
| definition of struct stat for x32 personality is necessary to enable |
| "asm_stat.h" with -mx32 on x86_64. |
| |
| * linux/x32/asm_stat.h: Rename to ... |
| * linux/x86_64/asm_stat.h: ... new file. |
| * Makefile.am (strace_SOURCES): Add it. |
| * linux/x32/asm_stat.h: New file, include "x86_64/asm_stat.h". |
| |
| 2016-08-24 Dmitry V. Levin <ldv@altlinux.org> |
| |
| x32/asm_stat.h: provide definitions for i386 personality. |
| This enables x32/asm_stat.h with -m32. |
| |
| * linux/x32/asm_stat.h [__x86_64__ && __ILP32__]: Redirect stat. |
| Include "linux/asm_stat.h". |
| (struct stat): Define for [__x86_64__ && __ILP32__] only. |
| (struct __old_kernel_stat): Remove. |
| |
| 2016-08-23 Dmitry V. Levin <ldv@altlinux.org> |
| |
| Introduce a separate SEN entry for fstatat64 syscall. |
| * linux/dummy.h (sys_fstatat64): Redirect to sys_newfstatat. |
| * linux/32/syscallent.h: Replace SEN(newfstatat) with SEN(fstatat64). |
| * linux/alpha/syscallent.h: Likewise. |
| * linux/arm/syscallent.h: Likewise. |
| * linux/avr32/syscallent.h: Likewise. |
| * linux/bfin/syscallent.h: Likewise. |
| * linux/hppa/syscallent.h: Likewise. |
| * linux/i386/syscallent.h: Likewise. |
| * linux/m68k/syscallent.h: Likewise. |
| * linux/microblaze/syscallent.h: Likewise. |
| * linux/mips/syscallent-o32.h: Likewise. |
| * linux/powerpc/syscallent.h: Likewise. |
| * linux/s390/syscallent.h: Likewise. |
| * linux/sh/syscallent.h: Likewise. |
| * linux/sh64/syscallent.h: Likewise. |
| * linux/sparc/syscallent.h: Likewise. |
| * linux/sparc64/syscallent.h: Likewise. |
| * linux/xtensa/syscallent.h: Likewise. |
| * pathtrace.c (pathtrace_match): Handle SEN_fstatat64. |
| |
| 2016-08-23 Dmitry V. Levin <ldv@altlinux.org> |
| |
| Do not check for struct stat.st_{a,c}time_nsec. |
| Assume that the check for struct stat.st_mtime_nsec is enough. |
| Likewise, do not check for struct stat.st_{a,c}tim.tv_nsec. |
| |
| * configure.ac (AC_CHECK_MEMBERS): Remove struct stat.st_atime_nsec, |
| struct stat.st_ctime_nsec, struct stat.st_atim.tv_nsec, |
| and struct stat.st_ctim.tv_nsec. |
| * file.c (HAVE_STRUCT_STAT_ST_ATIME_NSEC, |
| HAVE_STRUCT_STAT_ST_CTIME_NSEC): Remove. |
| * printstat.h (HAVE_STRUCT_STAT_ST_ATIME_NSEC, |
| HAVE_STRUCT_STAT_ST_CTIME_NSEC): Replace with |
| HAVE_STRUCT_STAT_ST_MTIME_NSEC. |
| * tests/xstatx.c: Likewise. |
| |
| 2016-08-23 Dmitry V. Levin <ldv@altlinux.org> |
| |
| Add sign_extend_unsigned_to_ll macro. |
| * defs.h (sign_extend_unsigned_to_ll): New macro, mirrors |
| zero_extend_signed_to_ull. |
| |
| zero_extend_signed_to_ull: add short int support. |
| * defs.h (zero_extend_signed_to_ull): Add short int support. |
| * tests/tests.h: Likewise. |
| |
| Rename widen_to_ull to zero_extend_signed_to_ull. |
| * defs.h (widen_to_ull): Rename to zero_extend_signed_to_ull. |
| All callers changed. |
| * tests/tests.h: Likewise. |
| |
| 2016-08-23 Dmitry V. Levin <ldv@altlinux.org> |
| |
| sparc, sparc64: remove obsolete code. |
| Remove remains of solaris personality support. |
| This complements commit v4.10-45-gdf4dd8b. |
| |
| * file.c [SPARC || SPARC64] (SYS_FUNC(xstat), SYS_FUNC(fxstat)): Remove. |
| |
| 2016-08-22 Dmitry V. Levin <ldv@altlinux.org> |
| |
| sparc64: fix decoding of struct stat64 related syscalls. |
| For some reason, struct stat and struct stat64 are different on sparc64. |
| This change fixes decoding of struct stat64 related syscalls for sparc64 |
| personality, sparc32 personality on sparc64 needs more work. |
| |
| * file.c (printstat64) [SPARC64]: Do not use printstat. |
| (SYS_FUNC(newfstatat)): Likewise. |
| |
| 2016-08-22 Eugene Syromyatnikov <evgsyr@gmail.com> |
| |
| tests: fill old_value argument in timer{,fd}_xettime tests. |
| This is needed in order to differentiate it from the value returned |
| by the call. As a consequence, it enables revealing possible bugs |
| in syscall parsers, for example, when the value read on syscall |
| entering and not on syscall exiting, as it was the case with |
| timerfd_settime parser. |
| |
| * tests/timer_xettime.c (main): Fill old.its field with value different |
| from the expected one upon call return. |
| * tests/timerfd_xettime.c: Likewise. |
| |
| 2016-08-22 Eugene Syromyatnikov <evgsyr@gmail.com> |
| |
| Fix old_value argument retrieval in timerfd_settime parser. |
| This is done similar to timer_settime syscall parser. |
| |
| * time.c (SYS_FUNC(timerfd_settime)): Retrieve old_value argument |
| on exiting and not on entering. Return 0 instead of RVAL_DECODED |
| since the call hasn't been decoded in full on entering. |
| |
| 2016-08-21 Richard W.M. Jones <rjones@redhat.com> |
| |
| Add RISC-V architecture support. |
| The original port of strace was done by Palmer Dabbelt |
| (eecs.berkeley.edu), based on strace 4.9. |
| |
| * configure.ac: Define RISCV for riscv*. |
| * clone.c [RISCV]: Define ARG_* macros as for OR1K. |
| * defs.h [RISCV] (SUPPORTED_PERSONALITIES): Define to 2. |
| [RISCV] (NEED_UID16_PARSERS): Define to 1. |
| * linux/riscv/arch_regs.c: New file. |
| * linux/riscv/errnoent1.h: Likewise. |
| * linux/riscv/get_error.c: Likewise. |
| * linux/riscv/get_scno.c: Likewise. |
| * linux/riscv/get_syscall_args.c: Likewise. |
| * linux/riscv/ioctls_arch0.h: Likewise. |
| * linux/riscv/ioctls_arch1.h: Likewise. |
| * linux/riscv/ioctls_inc0.h: Likewise. |
| * linux/riscv/ioctls_inc1.h: Likewise. |
| * linux/riscv/signalent1.h: Likewise. |
| * linux/riscv/stat32.h: Likewise. |
| * linux/riscv/syscallent.h: Likewise. |
| * linux/riscv/syscallent1.h: Likewise. |
| * Makefile.am (EXTRA_DIST): Add them. |
| |
| 2016-08-21 Eugene Syromyatnikov <evgsyr@gmail.com> |
| |
| Move SH-specific argument number calculation to getllval. |
| This change prevents scattering of ll-related hacks and simplifies |
| pread/pwrite syscalls parsers' logic a bit. |
| |
| * util.c (getllval): Add fixup for arg_no for SuperH when argument |
| number is equal to 3. |
| * io.c (PREAD_OFFSET_ARG): Remove. |
| (SYS_FUNC(pread)): Always use argument number 3 for "count" argument |
| printing. |
| (SYS_FUNC(pwrite)): Likewise. |
| |
| 2016-08-21 Dmitry V. Levin <ldv@altlinux.org> |
| |
| sparc64: fix sigreturn decoding for sparc personality. |
| * linux/sparc/arch_sigreturn.c (arch_sigreturn): Parametrize |
| member types of struct signal_frame. |
| * linux/sparc64/arch_sigreturn.c (sparc64_arch_sigreturn, |
| sparc32_arch_sigreturn): New functions. |
| (arch_sigreturn): Use them. |
| |
| 2016-08-20 Dmitry V. Levin <ldv@altlinux.org> |
| |
| Fix compat decoding of struct sigaction.sa_mask on big endian architectures |
| * signal.c (decode_new_sigaction) [SUPPORTED_PERSONALITIES > 1 && |
| SIZEOF_LONG > 4]: Use LONG_LONG to convert sa_mask from 32-bit |
| struct sigaction to 64-bit struct sigaction. |
| |
| 2016-08-19 Dmitry V. Levin <ldv@altlinux.org> |
| |
| Fix decoding of indirect shmat's return code for non-native personalities |
| * ipc_shm.c (SYS_FUNC(shmat)): Fetch current_wordsize bytes of data |
| to obtain return code of indirect shmat subcall. |
| |
| 2016-08-18 Dmitry V. Levin <ldv@altlinux.org> |
| |
| sparc64: fix sparc personality decoding of mmap64's offset argument. |
| * linux/sparc64/syscallent1.h: Remove redirection of sys_mmap_4koff. |
| |
| 2016-08-19 Dmitry V. Levin <ldv@altlinux.org> |
| |
| sparc64: fix decoding of the forth argument of semctl syscall. |
| On sparc64, unlike all other architectures where semctl is an indirect |
| ipc subcall, the forth argument is passed directly. |
| |
| * ipc_sem.c (SYS_FUNC(semctl)) [SPARC64]: Print 4th argument without |
| indirection in case of native personality. |
| |
| 2016-08-16 Dmitry V. Levin <ldv@altlinux.org> |
| |
| Add sparc64 specific ptrace constants. |
| * xlat/ptrace_cmds.in: Add PTRACE_GETREGS64, PTRACE_SETREGS64, |
| PTRACE_GETFPREGS64, and PTRACE_SETFPREGS64. |
| |
| sparc64: fix sign extension bug of syscall args for sparc personality. |
| * linux/sparc64/get_syscall_args.c (get_syscall_args): Zero-extend |
| syscall args from 32 bit for sparc personality. |
| |
| 2016-08-16 Dmitry V. Levin <ldv@altlinux.org> |
| |
| sparc64: fix tty ioctl numbers. |
| The structures defined in asm/termbits.h have the same size |
| on sparc and sparc64. |
| |
| * linux/sparc64/ioctls_arch0.h (TCGETS, TCGETS2, TCSETS, TCSETS2, |
| TCSETSF, TCSETSF2, TCSETSW, TCSETSW2): Sync with |
| linux/sparc/ioctls_arch0.h |
| |
| 2016-08-15 Dmitry V. Levin <ldv@altlinux.org> |
| |
| evdev.c: fix typo in comment. |
| |
| 2016-08-15 Dmitry V. Levin <ldv@altlinux.org> |
| |
| Drop support of dummy members of struct stat. |
| As st_flags, st_fstype, and st_gen members of struct stat are not filled |
| by the kernel, there is no use supporting them. |
| |
| * configure.ac (AC_CHECK_MEMBERS): Remove struct stat.st_flags, |
| struct stat.st_fstype, and struct stat.st_gen. |
| * file.c [STAT32_PERSONALITY, HAVE_STRUCT_STAT64]: Do not undefine |
| HAVE_STRUCT_STAT_ST_FLAGS, HAVE_STRUCT_STAT_ST_FSTYPE, |
| and HAVE_STRUCT_STAT_ST_GEN. |
| * printstat.h (DO_PRINTSTAT): Do not check for |
| HAVE_STRUCT_STAT_ST_FLAGS, HAVE_STRUCT_STAT_ST_FSTYPE, |
| and HAVE_STRUCT_STAT_ST_GEN. |
| |
| 2016-08-15 Dmitry V. Levin <ldv@altlinux.org> |
| |
| Assume that struct stat contains st_blksize, st_blocks, and st_rdev. |
| Our test suite already assumes that struct stat contains st_blksize, |
| st_blocks, and st_rdev members, and there haven't been any complaints. |
| |
| * configure.ac (AC_CHECK_MEMBERS): Remove struct stat.st_blksize, |
| struct stat.st_blocks, and struct stat.st_rdev. |
| * printstat.h (DO_PRINTSTAT): Do not check for |
| HAVE_STRUCT_STAT_ST_BLKSIZE, HAVE_STRUCT_STAT_ST_BLOCKS, |
| and HAVE_STRUCT_STAT_ST_RDEV. |
| |
| 2016-08-15 Dmitry V. Levin <ldv@altlinux.org> |
| |
| tests: fix pause.test when pause syscall is not available. |
| * tests/pause.c (main): Fix expected output when pause syscall |
| is not available. |
| |
| 2016-08-14 Dmitry V. Levin <ldv@altlinux.org> |
| |
| powerpc64, sparc64: fix redefinitions of ARCH_PC_REG. |
| This fixes compilation warning that ARCH_PC_REG is redefined. |
| |
| * linux/powerpc64/arch_regs.c (ARCH_PC_REG): Undefine before |
| the new definition. |
| * linux/sparc64/arch_regs.c (ARCH_PC_REG): Likewise. |
| |
| 2016-08-14 Dmitry V. Levin <ldv@altlinux.org> |
| |
| s390x, x32: remove redundant definitions of ARCH_PC_REG. |
| * linux/s390x/arch_regs.c (ARCH_PC_REG): Remove, it is already defined |
| in just included linux/s390/arch_regs.c. |
| * linux/x32/arch_regs.c (ARCH_PC_REG): Remove, it is already defined |
| in just included linux/x86_64/arch_regs.c. |
| |
| 2016-08-13 Dmitry V. Levin <ldv@altlinux.org> |
| |
| tests: check for leaks of placeholder descriptors. |
| * tests/redirect-fds.c: New file. |
| * tests/redirect-fds.test: New test. |
| * tests/.gitignore: Add redirect-fds. |
| * tests/Makefile.am (check_PROGRAMS): Likewise. |
| (MISC_TESTS): Add redirect-fds.test. |
| |
| tests/init.sh: print exit code of failed commands. |
| * init.sh (run_prog, run_prog_skip_if_failed): When the program fails, |
| add its exit code to the diagnostic message. |
| (run_strace): When strace fails, add its exit code to the diagnostic |
| message. |
| (run_strace_merge): When strace-log-merge fails, add its exit code |
| to the diagnostic message. |
| |
| 2016-08-13 Dmitry V. Levin <ldv@altlinux.org> |
| |
| Fix leakage of placeholder descriptors to tracees. |
| As a side effect of commit v4.11-211-g0736d4e, strace used to leak |
| placeholders for standard descriptors to tracees thus affecting their |
| behaviour. Fix this by setting close-on-exec flag on placeholder |
| descriptors. |
| |
| * strace.c (open_dummy_desc): Set close-on-exec flag on the descriptor |
| that is going to be returned to the caller. |
| (fd_is_placeholder): New array. |
| (ensure_standard_fds_opened, redirect_standard_fds): New functions. |
| (startup_child): Use redirect_standard_fds. |
| (init): Use ensure_standard_fds_opened. |
| |
| 2016-08-12 Dmitry V. Levin <ldv@altlinux.org> |
| |
| sparc64: fix decoding of uid and gid-related syscalls. |
| sparc64 has no native 16-bit uid/gid syscalls. |
| |
| * linux/sparc64/syscallent.h (chown, lchown, setuid, getuid, setgid, |
| getgid, geteuid, getegid, getgroups, setgroups, fchown, setreuid, |
| setregid, setfsuid, setfsgid): Change handlers from 16-bit to 32-bit. |
| |
| 2016-08-12 Dmitry V. Levin <ldv@altlinux.org> |
| |
| tests: fix *stat64 tests on alpha. |
| On some architectures including alpha, <asm/stat.h> provides a |
| definition of struct stat that has no st_atime_nsec, st_mtime_nsec, and |
| st_ctime_nsec fields. At the same time, struct stat64 always has these |
| fields. Fix tests to take this difference into account. |
| |
| * tests/fstat64.c (STRUCT_STAT_IS_STAT64): New macro, defined to 1. |
| * tests/lstat64.c (STRUCT_STAT_IS_STAT64): Likewise. |
| * tests/stat64.c (STRUCT_STAT_IS_STAT64): Likewise. |
| * tests/xstatx.c [!STRUCT_STAT] (STRUCT_STAT_IS_STAT64): New macro, |
| defined to 0. |
| [USE_ASM_STAT && STRUCT_STAT_IS_STAT64]: |
| (HAVE_STRUCT_STAT_ST_ATIME_NSEC, HAVE_STRUCT_STAT_ST_CTIME_NSEC, |
| HAVE_STRUCT_STAT_ST_MTIME_NSEC): Redefine to 1. |
| |
| 2016-08-11 Dmitry V. Levin <ldv@altlinux.org> |
| |
| tests: skip rt_tgsigqueueinfo.test when the syscall is not available. |
| * tests/rt_tgsigqueueinfo.c (main): Skip the test when the syscall |
| is not available. |
| |
| 2016-08-11 James Cowgill <james410@cowgill.org.uk> |
| |
| tests/fcntl.c: fix fcntl test on mips64. |
| On mips64 the F_GETLK and F_SETLKW64 constants have identical values which |
| causes the "wrong" constant to be printed by strace. |
| |
| tests/fcntl.c (test_flock64): Do not test F_SETLKW64 on mips64. |
| |
| 2016-08-11 James Cowgill <james410@cowgill.org.uk> |
| |
| tests/nsyscalls.test: only trace the "syscall" syscall on mips o32. |
| The "syscall" syscall only exists on o32 and causes strace to error out on |
| 64-bit mips ABIs. Pass MIPS_ABI from the configure script through to |
| nsyscalls.test so the MIPS ABI can be checked. |
| |
| * configure.ac (MIPS_ABI): Substitute into output files. |
| * tests/Makefile.am (MIPS_ABI): Export via AM_TEST_LOG_FLAGS. |
| * tests/nsyscalls.test: Restrict special mips handling to mips o32. |
| |
| 2016-08-11 James Cowgill <james410@cowgill.org.uk> |
| |
| tests/xstatx.c: fix stat syscall tests on mips64. |
| For historical reasons the kernel struct stat represents times as unsigned |
| 32-bit integers on mips64. Therefore, while it's possible to give a file a |
| timestamp before 1970 with futimens, reading the same timestamp through |
| struct stat will give a positive time (around 2106). |
| Workaround by using positive timestamps for testing on mips64. |
| |
| * tests/xstatx.c (create_sample): Use positive timestamps on mips64. |
| |
| 2016-08-11 Dmitry V. Levin <ldv@altlinux.org> |
| |
| tests/mlock2.c: fix test failure on mips64. |
| * tests/mlock2.c (main): Pass unsigned long arguments to mlock2 syscall |
| explicitly, to avoid unwanted sign extension issues. |
| |
| Based on patch by James Cowgill <james410@cowgill.org.uk> |
| |
| 2016-08-09 Dmitry V. Levin <ldv@altlinux.org> |
| |
| Use <asm/unistd.h> instead of <sys/syscall.h> |
| There are no users of SYS_* macros provided by <sys/syscall.h>, |
| and definitions of __NR_* macros could be obtained directly |
| from <asm/unistd.h>. |
| |
| * defs.h: Include <asm/unistd.h> instead of <sys/syscall.h>. |
| * test/seccomp.c: Likewise. |
| * test/threaded_execve.c: Likewise. |
| * test/x32_lseek.c: Likewise. |
| * test/x32_mmap.c: Likewise. |
| * tests/_newselect.c: Likewise. |
| * tests/access.c: Likewise. |
| * tests/acct.c: Likewise. |
| * tests/aio.c: Likewise. |
| * tests/alarm.c: Likewise. |
| * tests/attach-f-p.c: Likewise. |
| * tests/bpf.c: Likewise. |
| * tests/brk.c: Likewise. |
| * tests/chmod.c: Likewise. |
| * tests/chown.c: Likewise. |
| * tests/chown32.c: Likewise. |
| * tests/chroot.c: Likewise. |
| * tests/clock_adjtime.c: Likewise. |
| * tests/clock_nanosleep.c: Likewise. |
| * tests/clock_xettime.c: Likewise. |
| * tests/copy_file_range.c: Likewise. |
| * tests/creat.c: Likewise. |
| * tests/dup2.c: Likewise. |
| * tests/dup3.c: Likewise. |
| * tests/epoll_create.c: Likewise. |
| * tests/epoll_create1.c: Likewise. |
| * tests/epoll_ctl.c: Likewise. |
| * tests/epoll_pwait.c: Likewise. |
| * tests/epoll_wait.c: Likewise. |
| * tests/eventfd.c: Likewise. |
| * tests/execveat.c: Likewise. |
| * tests/faccessat.c: Likewise. |
| * tests/fchdir.c: Likewise. |
| * tests/fchmod.c: Likewise. |
| * tests/fchmodat.c: Likewise. |
| * tests/fchown.c: Likewise. |
| * tests/fchown32.c: Likewise. |
| * tests/fchownat.c: Likewise. |
| * tests/fcntl.c: Likewise. |
| * tests/fcntl64.c: Likewise. |
| * tests/fdatasync.c: Likewise. |
| * tests/flock.c: Likewise. |
| * tests/fstat.c: Likewise. |
| * tests/fstat64.c: Likewise. |
| * tests/fstatat64.c: Likewise. |
| * tests/fstatfs.c: Likewise. |
| * tests/fstatfs64.c: Likewise. |
| * tests/fsync.c: Likewise. |
| * tests/ftruncate.c: Likewise. |
| * tests/ftruncate64.c: Likewise. |
| * tests/futimesat.c: Likewise. |
| * tests/get_mempolicy.c: Likewise. |
| * tests/getcwd.c: Likewise. |
| * tests/getdents.c: Likewise. |
| * tests/getdents64.c: Likewise. |
| * tests/getegid.c: Likewise. |
| * tests/getegid32.c: Likewise. |
| * tests/geteuid.c: Likewise. |
| * tests/geteuid32.c: Likewise. |
| * tests/getgid.c: Likewise. |
| * tests/getgid32.c: Likewise. |
| * tests/getgroups.c: Likewise. |
| * tests/getgroups32.c: Likewise. |
| * tests/getpgrp.c: Likewise. |
| * tests/getrandom.c: Likewise. |
| * tests/getresgid.c: Likewise. |
| * tests/getresgid32.c: Likewise. |
| * tests/getresuid.c: Likewise. |
| * tests/getresuid32.c: Likewise. |
| * tests/getrlimit.c: Likewise. |
| * tests/getrusage.c: Likewise. |
| * tests/getuid.c: Likewise. |
| * tests/getuid32.c: Likewise. |
| * tests/getxxid.c: Likewise. |
| * tests/ioctl_uffdio.c: Likewise. |
| * tests/ioperm.c: Likewise. |
| * tests/iopl.c: Likewise. |
| * tests/ipc.c: Likewise. |
| * tests/kill.c: Likewise. |
| * tests/lchown.c: Likewise. |
| * tests/lchown32.c: Likewise. |
| * tests/libmmsg.c: Likewise. |
| * tests/libsocketcall.c: Likewise. |
| * tests/link.c: Likewise. |
| * tests/linkat.c: Likewise. |
| * tests/llseek.c: Likewise. |
| * tests/lseek.c: Likewise. |
| * tests/lstat.c: Likewise. |
| * tests/lstat64.c: Likewise. |
| * tests/mbind.c: Likewise. |
| * tests/membarrier.c: Likewise. |
| * tests/memfd_create.c: Likewise. |
| * tests/migrate_pages.c: Likewise. |
| * tests/mkdir.c: Likewise. |
| * tests/mkdirat.c: Likewise. |
| * tests/mknod.c: Likewise. |
| * tests/mknodat.c: Likewise. |
| * tests/mlock.c: Likewise. |
| * tests/mlock2.c: Likewise. |
| * tests/move_pages.c: Likewise. |
| * tests/newfstatat.c: Likewise. |
| * tests/nsyscalls.c: Likewise. |
| * tests/old_mmap.c: Likewise. |
| * tests/oldselect.c: Likewise. |
| * tests/open.c: Likewise. |
| * tests/openat.c: Likewise. |
| * tests/pause.c: Likewise. |
| * tests/poll.c: Likewise. |
| * tests/prctl-seccomp-filter-v.c: Likewise. |
| * tests/prctl-seccomp-strict.c: Likewise. |
| * tests/preadv2-pwritev2.c: Likewise. |
| * tests/prlimit64.c: Likewise. |
| * tests/pselect6.c: Likewise. |
| * tests/ptrace.c: Likewise. |
| * tests/readdir.c: Likewise. |
| * tests/readlink.c: Likewise. |
| * tests/readlinkat.c: Likewise. |
| * tests/reboot.c: Likewise. |
| * tests/remap_file_pages.c: Likewise. |
| * tests/rename.c: Likewise. |
| * tests/renameat.c: Likewise. |
| * tests/renameat2.c: Likewise. |
| * tests/rmdir.c: Likewise. |
| * tests/rt_sigpending.c: Likewise. |
| * tests/rt_sigprocmask.c: Likewise. |
| * tests/rt_sigsuspend.c: Likewise. |
| * tests/rt_sigtimedwait.c: Likewise. |
| * tests/rt_tgsigqueueinfo.c: Likewise. |
| * tests/sched_get_priority_mxx.c: Likewise. |
| * tests/sched_rr_get_interval.c: Likewise. |
| * tests/sched_xetaffinity.c: Likewise. |
| * tests/sched_xetattr.c: Likewise. |
| * tests/sched_xetparam.c: Likewise. |
| * tests/sched_xetscheduler.c: Likewise. |
| * tests/sched_yield.c: Likewise. |
| * tests/seccomp-filter-v.c: Likewise. |
| * tests/seccomp-filter.c: Likewise. |
| * tests/seccomp-strict.c: Likewise. |
| * tests/select.c: Likewise. |
| * tests/sendfile.c: Likewise. |
| * tests/sendfile64.c: Likewise. |
| * tests/set_mempolicy.c: Likewise. |
| * tests/setdomainname.c: Likewise. |
| * tests/setfsgid.c: Likewise. |
| * tests/setfsgid32.c: Likewise. |
| * tests/setfsuid.c: Likewise. |
| * tests/setfsuid32.c: Likewise. |
| * tests/setgid.c: Likewise. |
| * tests/setgid32.c: Likewise. |
| * tests/setgroups.c: Likewise. |
| * tests/setgroups32.c: Likewise. |
| * tests/sethostname.c: Likewise. |
| * tests/setregid.c: Likewise. |
| * tests/setregid32.c: Likewise. |
| * tests/setresgid.c: Likewise. |
| * tests/setresgid32.c: Likewise. |
| * tests/setresuid.c: Likewise. |
| * tests/setresuid32.c: Likewise. |
| * tests/setreuid.c: Likewise. |
| * tests/setreuid32.c: Likewise. |
| * tests/setrlimit.c: Likewise. |
| * tests/setuid.c: Likewise. |
| * tests/setuid32.c: Likewise. |
| * tests/signalfd4.c: Likewise. |
| * tests/socketcall.c: Likewise. |
| * tests/splice.c: Likewise. |
| * tests/stat.c: Likewise. |
| * tests/stat64.c: Likewise. |
| * tests/statfs.c: Likewise. |
| * tests/statfs64.c: Likewise. |
| * tests/swap.c: Likewise. |
| * tests/symlink.c: Likewise. |
| * tests/symlinkat.c: Likewise. |
| * tests/sync.c: Likewise. |
| * tests/sync_file_range.c: Likewise. |
| * tests/sync_file_range2.c: Likewise. |
| * tests/syslog.c: Likewise. |
| * tests/tee.c: Likewise. |
| * tests/time.c: Likewise. |
| * tests/timer_create.c: Likewise. |
| * tests/timer_xettime.c: Likewise. |
| * tests/timerfd_xettime.c: Likewise. |
| * tests/times-fail.c: Likewise. |
| * tests/times.c: Likewise. |
| * tests/truncate.c: Likewise. |
| * tests/truncate64.c: Likewise. |
| * tests/ugetrlimit.c: Likewise. |
| * tests/umount.c: Likewise. |
| * tests/umount2.c: Likewise. |
| * tests/uname.c: Likewise. |
| * tests/unix-pair-send-recv.c: Likewise. |
| * tests/unlink.c: Likewise. |
| * tests/unlinkat.c: Likewise. |
| * tests/userfaultfd.c: Likewise. |
| * tests/utimes.c: Likewise. |
| * tests/vhangup.c: Likewise. |
| * tests/vmsplice.c: Likewise. |
| * tests/waitid.c: Likewise. |
| * tests/waitpid.c: Likewise. |
| * tests/xet_robust_list.c: Likewise. |
| * tests/xetpgid.c: Likewise. |
| * tests/xetpriority.c: Likewise. |
| * tests/xettimeofday.c: Likewise. |
| |
| 2016-08-09 Dmitry V. Levin <ldv@altlinux.org> |
| |
| ia64: replace SYS_clone2 with __NR_clone2. |
| Migrate to __NR_* the last user of SYS_* macros provided |
| by <sys/syscall.h>. |
| |
| * clone.c [IA64] (ARG_STACKSIZE, ARG_PTID, ARG_CTID, ARG_TLS): Replace |
| SYS_clone2 with __NR_clone2. |
| |
| 2016-08-09 Dmitry V. Levin <ldv@altlinux.org> |
| |
| Make sure that tcp->s_ent and tcp->s_prev_ent do not point to freed memory |
| This complements commit v4.13-33-g60d7ec8. |
| |
| * syscall.c (sysent_buf): New structure. |
| (free_sysent_buf): New function. |
| (get_scno): Use them. |
| |
| 2016-08-09 Dmitry V. Levin <ldv@altlinux.org> |
| |
| file.c: move definitions of struct stat32 to separate files. |
| * linux/aarch64/stat32.h: New file. |
| * linux/powerpc64/stat32.h: Likewise. |
| * linux/sparc64/stat32.h: Likewise. |
| * linux/tile/stat32.h: Likewise. |
| * linux/x32/stat32.h: Likewise. |
| * linux/x86_64/stat32.h: Likewise. |
| * Makefile.am (EXTRA_DIST): Add them. |
| * file.c [SUPPORTED_PERSONALITIES > 1]: Remove arch specific definitions |
| of struct stat32, include "stat32.h" instead. |
| |
| 2016-08-09 Dmitry V. Levin <ldv@altlinux.org> |
| |
| sparc, sparc64: remove obsolete code. |
| Remove remains of solaris personality support. |
| This complements commit v4.10-45-gdf4dd8b. |
| |
| * file.c [SPARC || SPARC64]: Remove the code related to struct solstat. |
| (printstat, printoldstat) [SPARC || SPARC64]: Remove. |
| |
| 2016-08-09 Dmitry V. Levin <ldv@altlinux.org> |
| |
| sparc64: fix decoding of stat family syscalls. |
| This complements commit v4.13-28-gaebfe83. |
| |
| * file.c [SPARC64]: Change STAT32_PERSONALITY to 1. |
| |
| 2016-08-09 Dmitry V. Levin <ldv@altlinux.org> |
| |
| Fix decoding of invalid syscalls mapped to indirect subcalls. |
| When the syscall number returned by arch_get_scno is a mapped indirect |
| subcall (i.e. mapped subcall of socketcall or ipc syscall), do not |
| mistakenly treat it as a valid indirect subcall. |
| |
| * defs.h (SCNO_IS_VALID): Treat scno with TRACE_INDIRECT_SUBCALL flag |
| as invalid. |
| * syscall.c (syscall_name): Do no shuffle scno. |
| (trace_syscall_entering, trace_syscall_exiting): Use |
| tcp->s_ent->sys_name instead of syscall_name. |
| (get_scno): In case of invalid syscall, allocate a dynamic struct sysent |
| containing an appropriate .sys_name. |
| * tests/nsyscalls.c (main) [SYS_socket_subcall]: Check decoding |
| of direct syscall number SYS_socket_subcall+1. |
| (main) [SYS_ipc_subcall]: Check decoding of direct syscall number |
| SYS_ipc_subcall+1. |
| |
| 2016-08-08 Dmitry V. Levin <ldv@altlinux.org> |
| |
| linux/subcall.h: remove redundant definitions. |
| * linux/subcall.h: Remove definitions of non-existent socket |
| and ipc subcalls. |
| |
| defs.h: simplify SUPPORTED_PERSONALITIES definition. |
| * defs.h: Group definition of SUPPORTED_PERSONALITIES by value. |
| |
| 2016-08-08 Dmitry V. Levin <ldv@altlinux.org> |
| |
| defs.h: simplify PERSONALITY1_WORDSIZE definition. |
| Move definition of PERSONALITY1_WORDSIZE macro outside arch specific |
| ifdefs. |
| |
| * defs.h [SPARC64 || X86_64 || X32 || AARCH64 || POWERPC64 || TILE] |
| (PERSONALITY1_WORDSIZE): Remove. |
| [SUPPORTED_PERSONALITIES > 1] (PERSONALITY1_WORDSIZE): Define to 4 |
| unconditionally. |
| |
| 2016-08-08 Dmitry V. Levin <ldv@altlinux.org> |
| |
| defs.h: simplify PERSONALITY0_WORDSIZE definition. |
| Move definition of PERSONALITY0_WORDSIZE macro outside arch specific |
| ifdefs. |
| |
| * defs.h (PERSONALITY0_WORDSIZE): Define to SIZEOF_LONG unconditionally. |
| |
| 2016-08-08 Dmitry V. Levin <ldv@altlinux.org> |
| |
| sparc64: swap personality numbers. |
| Fix inconsistency between syscall and ioctl entries on sparc64. |
| Make layout of personalities on sparc64 the same as on other |
| architectures that support two personalities. |
| |
| * defs.h [SPARC64] (PERSONALITY0_WORDSIZE): Change to 8. |
| [SPARC64] (PERSONALITY1_WORDSIZE): Change to 4. |
| * linux/sparc64/get_scno.c (arch_get_scno): Swap personality numbers. |
| * linux/sparc64/ioctls_arch1.h: Rename to ioctls_arch0.h. |
| * linux/sparc64/ioctls_arch0.h: Rename to ioctls_arch1.h. |
| * linux/sparc64/ioctls_inc0.h: Rename to ioctls_inc1.h. |
| * linux/sparc64/ioctls_inc1.h: Rename to ioctls_inc0.h. |
| |
| 2016-08-08 Dmitry V. Levin <ldv@altlinux.org> |
| |
| defs.h: cleanup personality specific macro definitions. |
| Move the code that defines PERSONALITY[12]_INCLUDE_FUNCS, |
| PERSONALITY[12]_INCLUDE_PRINTERS_DECLS, |
| PERSONALITY[12]_INCLUDE_PRINTERS_DEFS, and MPERS_{m,mx}32_IOCTL_MACROS |
| macros outside arch specific ifdefs. |
| |
| * defs.h [SPARC] (PERSONALITY0_WORDSIZE): Remove. |
| [SPARC64 && HAVE_M32_MPERS]: Remove. |
| [X86_64 && HAVE_M32_MPERS]: Remove. |
| [X86_64 && HAVE_MX32_MPERS]: Remove. |
| [X32 && HAVE_M32_MPERS]: Remove. |
| [AARCH64 && HAVE_M32_MPERS]: Remove. |
| [POWERPC64 && HAVE_M32_MPERS]: Remove. |
| [TILE && HAVE_M32_MPERS]: Remove. |
| (PERSONALITY0_INCLUDE_PRINTERS_DECLS, |
| PERSONALITY0_INCLUDE_PRINTERS_DEFS): Define unconditionally. |
| [SUPPORTED_PERSONALITIES > 1 && HAVE_M32_MPERS] |
| (PERSONALITY1_INCLUDE_PRINTERS_DECLS, |
| PERSONALITY1_INCLUDE_PRINTERS_DEFS, PERSONALITY1_INCLUDE_FUNCS, |
| MPERS_m32_IOCTL_MACROS): Define for |
| [SUPPORTED_PERSONALITIES > 1 && HAVE_M32_MPERS] case. |
| (PERSONALITY2_INCLUDE_PRINTERS_DECLS, |
| PERSONALITY2_INCLUDE_PRINTERS_DEFS, PERSONALITY2_INCLUDE_FUNCS, |
| MPERS_mx32_IOCTL_MACROS): Define for |
| [SUPPORTED_PERSONALITIES > 2 && HAVE_MX32_MPERS] case. |
| |
| 2016-08-07 Dmitry V. Levin <ldv@altlinux.org> |
| |
| Change #include guard trailing part comments. |
| * defs.h: Change comment of the trailing part of #include guard. |
| * flock.h: Likewise. |
| * gcc_compat.h: Likewise. |
| * ipc_defs.h: Likewise. |
| * kernel_types.h: Likewise. |
| * mpers_type.h: Likewise. |
| * msghdr.h: Likewise. |
| * printsiginfo.h: Likewise. |
| * ptrace.h: Likewise. |
| * regs.h: Likewise. |
| * seccomp_fprog.h: Likewise. |
| * sigevent.h: Likewise. |
| * statfs.h: Likewise. |
| * xlat.h: Likewise. |
| |
| 2016-08-08 Eugene Syromyatnikov <evgsyr@gmail.com> |
| |
| Unify usage of #include guards. |
| This commit is an attempt to unify usage of include guards (in top-level |
| headers, at least). As a side note, different files with *.h extension |
| have different semantics: for example, printargs.h is included multiple |
| times in order to generate slightly varying code depending on values of |
| macro definitions - maybe it's better to change extension of such files |
| to something like *.inc. |
| |
| * defs.h: Add #include guard. |
| * flock.h: Likewise. |
| * ipc_defs.h: Likewise. |
| * mpers_type.h: Likewise. |
| * printsiginfo.h: Likewise. |
| * ptrace.h: Likewise. |
| * regs.h: Likewise. |
| * seccomp_fprog.h: Likewise. |
| * gcc_compat.h: Rename the macro used for #include guard. |
| * msghdr.h: Likewise. |
| * sigevent.h: Likewise. |
| * kernel_types.h: Comment the trailing part of #include guard. |
| * xlat.h: Add missing macro definition for #include guard. |
| |
| 2016-08-06 Dmitry V. Levin <ldv@altlinux.org> |
| |
| tests: add #include guards. |
| * tests/tests.h: Add #include guard. |
| |
| 2016-08-05 Dmitry V. Levin <ldv@altlinux.org> |
| |
| linux: add #include guards. |
| * linux/dummy.h: Add #include guard. |
| * linux/inet_diag.h: Likewise. |
| * linux/netlink_diag.h: Likewise. |
| * linux/sock_diag.h: Likewise. |
| * linux/syscall.h: Likewise. |
| * linux/unix_diag.h: Likewise. |
| |
| 2016-08-04 Dmitry V. Levin <ldv@altlinux.org> |
| |
| tests/umode_t.c: guard against libc printf format errors. |
| * tests/umode_t.c (test_syscall): Use different printf format specifiers |
| to detect libc printf format errors. |
| |
| 2016-08-04 Dmitry V. Levin <ldv@altlinux.org> |
| |
| travis: use a suitable musl revision. |
| There seems to be no readily available binary packages of musl that are |
| sufficiently up to date to be used to build and test strace, so prepare |
| a suitable musl from source. |
| |
| * travis-install.sh (musl-gcc): Do not add an extra repository, |
| do not install musl-tools and linux-musl-dev packages. |
| Download, build, and install a suitable musl revision instead. |
| |
| 2016-08-03 Dmitry V. Levin <ldv@altlinux.org> |
| |
| Fix printing of mode_t, umode_t, and umask types. |
| Print numeric umode_t type using %#03ho format. |
| Print return value of umask syscall using %#03lo format. |
| When printing symbolic mode_t type, always print lower 9 bits, |
| and print the numeric part using %#03o format. |
| |
| * defs.h (sprintmode): Remove. |
| (print_symbolic_mode_t, print_numeric_umode_t, |
| print_numeric_long_umask): New prototypes. |
| * printmode.c (sprintmode): Remove. |
| (print_symbolic_mode_t, print_numeric_umode_t, |
| print_numeric_long_umask): New functions. |
| * chmod.c (decode_chmod): Use print_numeric_umode_t. |
| * ipc_msg.c (SYS_FUNC(msgget)): Likewise. |
| * ipc_msgctl.c (print_msqid_ds): Likewise. |
| * ipc_sem.c (SYS_FUNC(semget)): Likewise. |
| * ipc_shm.c (SYS_FUNC(shmget)): Likewise. |
| * ipc_shmctl.c (print_shmid_ds): Likewise. |
| * mq.c (SYS_FUNC(mq_open)): Likewise. |
| * open.c (decode_open, SYS_FUNC(creat)): Likewise. |
| * umask.c (SYS_FUNC(umask)): Likewise. |
| * mknod.c (decode_mknod): Use print_symbolic_mode_t. |
| * printstat.h (DO_PRINTSTAT): Likewise. |
| * syscall.c (trace_syscall_exiting): Use print_numeric_long_umask. |
| * tests/umode_t.c: New file. |
| * tests/Makefile.am (EXTRA_DIST): Add it. |
| * tests/creat.c: Rewrite as a thin wrapper around umode_t.c |
| * tests/mkdir.c: Likewise. |
| * tests/mkdirat.c: Likewise. |
| * tests/mknod.c: Extend test coverage of mknod syscall. |
| * tests/mknodat.c: Extend test coverage of mknodat syscall. |
| * tests/umask.c: Extend test coverage of umask syscall. |
| * tests/creat.test: Update the value specified for strace -a parameter. |
| * tests/mkdir.test: Likewise. |
| * tests/mkdirat.test: Likewise. |
| * tests/mknodat.test: Likewise. |
| |
| 2016-08-02 Dmitry V. Levin <ldv@altlinux.org> |
| |
| tests: simplify attach-f-p.test. |
| * tests/attach-f-p.c Simplify communications between threads |
| by replacing per-thread timers with pipes. |
| * tests/attach-f-p.test: Do not ignore signals. |
| |
| tests: cleanup attach-p-cmd.test. |
| * tests/attach-p-cmd-cmd.c (main): Cleanup expected output. |
| * tests/attach-p-cmd-p.c (main): Print expected output. |
| * tests/attach-p-cmd.test: Do not print expected output. |
| |
| ip_mreq.test: rewrite from match_grep to match_diff. |
| * tests/ip_mreq.c (main): Print expected output. |
| * tests/ip_mreq.test: Use run_strace_match_diff. |
| * tests/ip_mreq.expected: Remove. |
| * tests/Makefile.am (EXTRA_DIST): Remove it. |
| |
| fanotify_mark.test: rewrite from match_grep to match_diff. |
| * tests/fanotify_mark.c (main): Print expected output. |
| * tests/fanotify_mark.test: Use run_strace_match_diff. |
| * tests/fanotify_mark.expected: Remove. |
| * tests/Makefile.am (EXTRA_DIST): Remove it. |
| |
| signalfd4.test: rewrite from match_grep to match_diff. |
| * tests/signalfd4.c (get_sigset_size): New function. |
| (main): Use it. Print expected output. |
| * tests/signalfd4.test: Use run_strace_match_diff. |
| * tests/signalfd4.expected: Remove. |
| * tests/Makefile.am (EXTRA_DIST): Remove it. |
| |
| 2016-07-31 Dmitry V. Levin <ldv@altlinux.org> |
| |
| tests: rename signalfd.test to signalfd4.test. |
| * tests/signalfd.c: Rename to signalfd4.c. |
| * tests/signalfd.test: Rename to signalfd4.test. |
| * tests/signalfd.expected: Rename to signalfd4.expected. |
| * tests/.gitignore: Replace signalfd with signalfd4. |
| * tests/Makefile.am (check_PROGRAMS): Likewise. |
| (DECODER_TESTS): Replace signalfd.test with signalfd4.test. |
| (EXTRA_DIST): Replace signalfd.expected with signalfd4.expected. |
| |
| 2016-07-30 Dmitry V. Levin <ldv@altlinux.org> |
| |
| memfd_create.test: rewrite from match_grep to match_diff. |
| * tests/memfd_create.c (main): Print expected output. |
| * tests/memfd_create.test: Use run_strace_match_diff. |
| * tests/memfd_create.expected: Remove. |
| * tests/Makefile.am (EXTRA_DIST): Remove it. |
| |
| 2016-07-29 Dmitry V. Levin <ldv@altlinux.org> |
| |
| Set exit status to 1 if strace has not traced any processes. |
| * strace.c (main): Initialize exit_code with 1 when no processes |
| has been attached. |
| * strace.1: Document it. |
| * NEWS: Mention this change. |
| |
| Attach to the target process before attempting to attach to its siblings |
| * strace.c (attach_tcb): Attach to tcp->pid first. |
| |
| Report the name of ptrace command when ptrace_attach_or_seize fails. |
| * strace.c (ptrace_attach_cmd): New variable. |
| (ptrace_attach_or_seize): Save last ptrace command's name |
| to ptrace_attach_cmd. |
| (attach_tcb, startup_child): Use it in error diagnostics. |
| |
| strace.c: refactor startup_attach. |
| * strace.c (startup_attach): Move the inner part of the big loop |
| over tcbtab elements ... |
| (attach_tcb): ... to this new function. |
| |
| startup_attach: do not use atoi. |
| * strace.c (startup_attach): Replace atoi with string_to_uint. |
| |
| 2016-07-28 Dmitry V. Levin <ldv@altlinux.org> |
| |
| Do not enable mpers runtime checks if mpers is not enabled. |
| * m4/mpers.m4 (HAVE_RUNTIME): Enable iff both mpers and runtime |
| work properly. |
| |
| 2016-07-28 Dmitry V. Levin <ldv@altlinux.org> |
| |
| linux/dummy_check.sh: remove obsolete script. |
| Starting with commit v4.10-62-ga0bd374, function prototypes |
| of syscall parsers are generated at build time. |
| |
| * linux/dummy_check.sh: Remove. |
| |
| 2016-07-28 Dmitry V. Levin <ldv@altlinux.org> |
| |
| generate_xlat_in.sh: remove obsolete script. |
| This script has been created by commit v4.8-180-g0ed617b |
| for the one-shot job of automatic convertion of xlat structures |
| from *.c files to xlat/*.in files. |
| |
| * generate_xlat_in.sh: Remove. |
| |
| 2016-07-28 Dmitry V. Levin <ldv@altlinux.org> |
| |
| tests: use terse notation in designated initializers where appropriate. |
| * tests/btrfs.c (btrfs_test_dev_replace_ioctl): Initialize |
| struct btrfs_ioctl_dev_replace_args using terse notation. |
| * tests/clock_nanosleep.c (main): Initialize struct timespec |
| using terse notation. |
| * tests/nanosleep.c (main): Likewise. |
| |
| 2016-07-28 Dmitry V. Levin <ldv@altlinux.org> |
| |
| Consistently use extended regular expressions where appropriate. |
| When grep or sed is used with basic regular expressions containing |
| '(', ')', '{', '}', '|', '?', and '+' special characters, convert them |
| to extended regular expressions for better portability and readability. |
| |
| * generate_mpers_am.sh: Convert grep and sed BREs to EREs. |
| * Makefile.am (ioctl_redefs%.h, m%_type_defs.h, m%_funcs.h, |
| mpers_printer_decl_pattern, printers.h, %_printer_decls.h, |
| %_printer_defs.h): Convert sed BREs to EREs. |
| * generate_sen.sh: Likewise. |
| * linux/mips/genstub.sh: Likewise. |
| * make-dsc: Likewise. |
| * mpers.sh: Likewise. |
| * xlat/gen.sh: Likewise. |
| * tests/Makefile.am (ksysent.h): Likewise. |
| * tests/ksysent.sed: Likewise. |
| * tests/pc.test: Likewise. |
| * tests/strace-S.test: Likewise. |
| * tests/strace-V.test: Likewise. |
| * tests/strace-k.test: Likewise. |
| |
| 2016-07-28 Dmitry V. Levin <ldv@altlinux.org> |
| |
| tests: fix extended regexps. |
| * tests/adjtimex.c (main): Consistently quote curly braces |
| in expected output. |
| * tests/uio.expected: Likewise. |
| |
| 2016-07-27 Dmitry V. Levin <ldv@altlinux.org> |
| |
| Post-release administrivia. |
| * NEWS: Add header line for the next release. |
| * debian/changelog.in: Add a changelog entry for 4.13-1. |
| * strace.spec.in: Likewise. |
| |
| 2016-07-26 Dmitry V. Levin <ldv@altlinux.org> |
| |
| Prepare for 4.13 release. |
| * NEWS: Update for 4.13 release. |
| |
| Fix one more code pattern that might break gcc strict aliasing rules. |
| * btrfs.c (btrfs_ioctl): Add one more expicit cast to "void *", |
| to avoid breaking strict-aliasing rules reported by some gcc compilers. |
| * syscall.c (decode_socket_subcall): Likewise. |
| * util.c (next_set_bit): Likewise. |
| * tests/btrfs.c (btrfs_test_send_ioctl): Likewise. |
| |
| Fix casts of ptrace's third argument. |
| * strace.c (maybe_allocate_tcb): Replace "(char *) 0" with NULL |
| as ptrace's third argument. |
| * linux/sparc64/get_scno.c (arch_get_scno): Cast third argument |
| of ptrace to "void *'. |
| * syscall.c (get_regs): Likewise. |
| * upeek.c (upeek): Likewise. |
| * util.c (umoven): Likewise. |
| |
| tests/btrfs.c: do not include the same header file twice. |
| * tests/btrfs.c: Do not include <sys/fcntl.h>, <fcntl.h> is enough. |
| |
| tests: fix accept4.test on systems that lack SOCK_CLOEXEC definition. |
| * tests/accept4.c: Check that O_CLOEXEC is defined. Use O_CLOEXEC |
| instead of SOCK_CLOEXEC. |
| |
| 2016-07-26 Dmitry V. Levin <ldv@altlinux.org> |
| |
| tests: fix vhangup.test. |
| * tests/vhangup.c (main): Fix expected output for the case when |
| the calling process has CAP_SYS_TTY_CONFIG capability. |
| |
| Reported-by: Yun-Chih Chen <b03902074@ntu.edu.tw> |
| |
| 2016-07-26 Dmitry V. Levin <ldv@altlinux.org> |
| |
| tests: fix chown.test. |
| * tests/chown.test: Fix the value specified for strace -a parameter. |
| |
| Reported-by: Yun-Chih Chen <b03902074@ntu.edu.tw> |
| |
| 2016-07-25 Dmitry V. Levin <ldv@altlinux.org> |
| |
| x32: fix syscall entries for x86_64 variants of io_setup and io_submit. |
| * linux/x32/syscallent.h (64:io_setup, 64:io_submit): Change handler |
| to printargs. |
| |
| tests/ipc.c: fix typo. |
| |
| 2016-07-24 Dmitry V. Levin <ldv@altlinux.org> |
| |
| NEWS: Prepare for 4.13 release. |
| |
| 2016-07-23 Dmitry V. Levin <ldv@altlinux.org> |
| |
| debian: add gcc-multilib to Build-Depends for relevant architectures. |
| * debian/control (Build-Depends) [amd64, ppc64, sparc64, x32]: |
| Add gcc-multilib to enable multiple personalities support. |
| |
| 2016-07-22 Dmitry V. Levin <ldv@altlinux.org> |
| |
| tests: check decoding of ipc syscall. |
| * tests/ipc.c: New file. |
| * tests/ipc.test: New test. |
| * tests/.gitignore: Add ipc. |
| * tests/Makefile.am (check_PROGRAMS): Likewise. |
| (DECODER_TESTS): Add ipc.test. |
| |
| Fix corner cases of ipc syscall decoding. |
| * xlat/ipccalls.in: New file. |
| * ipc.c: New file. |
| * Makefile.am (libstrace_a_SOURCES): Add it. |
| * linux/dummy.h (sys_ipc): Remove stub alias. |
| * syscall.c (decode_ipc_subcall): Treat 1st argument of ipc syscall |
| as "unsigned int". |
| [S390 || S390X]: Skip ipc cubcalls that have non-zero version. |
| [SPARC64]: Likewise, for the native personality. |
| Save ipc cubcall version for later use by specific ipc parsers. |
| * ipc_msg.c (SYS_FUNC(msgrcv)): Handle non-zero ipc subcall version. |
| [SPARC64]: Handle non-ipc_kludge case for the native personality. |
| * linux/subcall.h (msgrcv): Change nargs from 4 to 5. |
| * linux/s390/syscallent.h (ipc): Change nargs from 6 to 5. |
| * linux/s390x/syscallent.h (ipc): Likewise. |
| |
| 2016-07-21 Dmitry V. Levin <ldv@altlinux.org> |
| |
| tests: skip netlink_protocol.test on old systems. |
| * tests/netlink_protocol.c: Check that HAVE_SYS_XATTR_H is defined. |
| Include <stdlib.h> and <sys/xattr.h>. |
| (main): Check that system.sockprotoname attribute is supported. |
| |
| Do not print too many arguments of socketcall syscall. |
| * socketcall.c (SYS_FUNC(socketcall)): Print just "call" and "args" |
| syscall arguments. |
| * tests/socketcall.c (test_socketcall): Update expected output. |
| * tests/socketcall.test: Likewise. |
| |
| 2016-07-20 Dmitry V. Levin <ldv@altlinux.org> |
| |
| tests/nsyscalls.c: change the type of syscall arguments to kernel_ulong_t |
| As most syscalls on x32 and mips n32 are actually 64-bit, |
| check that 64-bit syscall arguments are decoded properly. |
| |
| This also workarounds x32 gcc sign extension bug |
| reported by Eugene Syromyatnikov at |
| https://sourceforge.net/p/strace/mailman/message/35150860/ |
| |
| * tests/nsyscalls.c: Include "kernel_types.h". |
| (main): Change the type of syscall arguments to kernel_ulong_t. |
| |
| 2016-07-20 Dmitry V. Levin <ldv@altlinux.org> |
| |
| x32, mips n32: make printargs print full 64-bit syscall arguments. |
| As most of x32 syscalls are regular x86_64 syscalls, they should be |
| printed by default as 64-bit syscalls, and syscall parsers at their |
| discretion might print syscalls differently. This is already |
| implemented in 64-bit strace tracing x32 personality processes, |
| and now x32 strace will also behave this way. |
| |
| Similar reasoning applies to mips n32. |
| |
| * util.c (printargs) [HAVE_STRUCT_TCB_EXT_ARG]: Print syscall arguments |
| from ext_arg array using %llx format. |
| |
| 2016-07-20 Dmitry V. Levin <ldv@altlinux.org> |
| |
| tests: check decoding of socketcall syscall. |
| * tests/socketcall.c: New file. |
| * tests/socketcall.test: New test. |
| * tests/.gitignore: Add socketcall. |
| * tests/Makefile.am (check_PROGRAMS): Likewise. |
| (DECODER_TESTS): Add socketcall.test. |
| |
| Fix corner cases of socketcall syscall. |
| * xlat/socketcalls.in: New file. |
| * socketcall.c: New file. |
| * Makefile.am (libstrace_a_SOURCES): Add it. |
| * linux/dummy.h (sys_socketcall): Remove stub alias. |
| * syscall.c (decode_socket_subcall): Treat 1st argument of socketcall |
| as "int". Do not substitute syscall until all socketcall arguments |
| have been fetched successfully. |
| |
| 2016-07-19 Dmitry V. Levin <ldv@altlinux.org> |
| |
| tests: check decoding and dumping of send and recv syscalls. |
| * tests/unix-pair-send-recv.c: New file. |
| * tests/unix-pair-send-recv.expected: Likewise. |
| * tests/unix-pair-send-recv.test: New test. |
| * tests/.gitignore: Add unix-pair-send-recv. |
| * tests/Makefile.am (check_PROGRAMS): Likewise. |
| (DECODER_TESTS): Add unix-pair-send-recv.test. |
| (EXTRA_DIST): Add unix-pair-send-recv.expected. |
| |
| tests: rename unix-pair-send-recv to unix-pair-sendto-recvfrom. |
| * dumpio.expected: Rename to unix-pair-sendto-recvfrom.expected. |
| * dumpio.test: Rename to unix-pair-sendto-recvfrom.test. |
| * unix-pair-send-recv.c: Rename to unix-pair-sendto-recvfrom.c |
| * .gitignore: Rename unix-pair-send-recv to unix-pair-sendto-recvfrom. |
| * Makefile.am (check_PROGRAMS): Likewise. |
| (DECODER_TESTS): Add unix-pair-sendto-recvfrom.test. |
| (MISC_TESTS): Remove dumpio.test. |
| (EXTRA_DIST): Rename dumpio.expected |
| to unix-pair-sendto-recvfrom.expected. |
| |
| tests: check decoding of shutdown syscall. |
| * tests/shutdown.c: New file. |
| * tests/shutdown.test: New test. |
| * tests/.gitignore: Add shutdown. |
| * tests/Makefile.am (check_PROGRAMS): Likewise. |
| (DECODER_TESTS): Add shutdown.test. |
| |
| xlat/shutdown_modes.in: convert to modern syntax. |
| * xlat/shutdown_modes.in: Replace open-coded xlat table with a list |
| of constants. |
| |
| tests: check silent decoding of sendmmsg and recvmmsg syscalls. |
| * tests/mmsg-silent.c: New file. |
| * tests/mmsg-silent.test: New test. |
| * tests/.gitignore: Add mmsg-silent. |
| * tests/Makefile.am (check_PROGRAMS): Likewise. |
| (DECODER_TESTS): Add mmsg-silent.test. |
| |
| Print unsent messages of failed sendmmsg syscall. |
| * mmsghdr.c (decode_mmsgvec): Clear syserror for the time of printing |
| struct mmsghdr array in !use_msg_len case. |
| (SYS_FUNC(sendmmsg)): As failed sendmmsg syscall does not |
| set msg_len fields, tell this to decode_mmsgvec. |
| * tests/mmsg_name.c (test_mmsg_name): Check it. |
| |
| Print unsent messages of sendmmsg syscall. |
| * defs.h (decode_mmsgvec): Add int argument. |
| * mmsghdr.c (print_struct_mmsghdr_config): Add msg_len_vlen field. |
| (print_struct_mmsghdr): Print struct mmsghdr.msg_len only for |
| msg_len_vlen first elements of struct mmsghdr array. |
| (decode_mmsgvec): Add msg_len_vlen argument. |
| (SYS_FUNC(sendmmsg), SYS_FUNC(recvmmsg)): Pass to decode_mmsgvec |
| the number of elements of struct mmsghdr array that contain meaningful |
| struct mmsghdr.msg_len. |
| * tests/mmsg_name.c (test_mmsg_name): Check it. |
| |
| tests: check verbose decoding of msg_name* fields of struct mmsghdr array |
| * tests/mmsg_name-v.c: New file. |
| * tests/mmsg_name-v.test: New test. |
| * tests/.gitignore: Add mmsg_name-v. |
| * tests/Makefile.am (check_PROGRAMS): Likewise. |
| (DECODER_TESTS): Add mmsg_name-v.test. |
| |
| tests: check decoding of msg_name* fields of struct mmsghdr array. |
| * tests/mmsg_name.c: New file. |
| * tests/mmsg_name.test: New test. |
| * tests/.gitignore: Add mmsg_name. |
| * tests/Makefile.am (check_PROGRAMS): Likewise. |
| (DECODER_TESTS): Add mmsg_name.test. |
| |
| 2016-07-19 Dmitry V. Levin <ldv@altlinux.org> |
| |
| Fix decoding of msg_name* fields of recvmmsg syscall's msghdr array argument |
| As msg_namelen fields of recvmmsg syscall's struct msghdr array have |
| the same read-write semantics as struct msghdr argument of recvmsg |
| syscall, parser of recvmmsg syscall needs a similar fix. |
| |
| * mmsghdr.c (print_struct_mmsghdr): Increment p_user_msg_namelen field. |
| (mmsgvec_data): New structure. |
| (free_mmsgvec_data, save_mmsgvec_namelen): New functions. |
| (decode_mmsgvec): Take into account the data saved |
| by save_mmsgvec_namelen function. |
| (SYS_FUNC(recvmmsg)): Use save_mmsgvec_namelen. |
| |
| 2016-07-19 Dmitry V. Levin <ldv@altlinux.org> |
| |
| mmsghdr.c: rewrite decode_mmsgvec using print_array. |
| * fetch_struct_mmsghdr.c (sizeof_struct_mmsghdr): New mpers printer. |
| * mmsghdr.c: Include <limits.h>. |
| (print_struct_mmsghdr_config): New structure. |
| (fetch_struct_mmsghdr_or_printaddr, print_struct_mmsghdr): New functions. |
| (decode_mmsgvec): Rewrite using them and print_array. |
| |
| tests: check decoding of timeout argument of recvmmsg syscall. |
| * tests/recvmmsg-timeout.c: New file. |
| * tests/recvmmsg-timeout.test: New test. |
| * tests/.gitignore: Add recvmmsg-timeout. |
| * tests/Makefile.am (check_PROGRAMS): Likewise. |
| (DECODER_TESTS): Add recvmmsg-timeout.test. |
| |
| Fix printing of remaining timeout of recvmmsg syscall. |
| * mmsghdr.c (SYS_FUNC(recvmmsg)): Do not print remaining timeout |
| when the 5th syscall argument is NULL. |
| * tests/mmsg.c (main): Update expected output. |
| |
| Remove configure checks for recvmmsg and sendmmsg. |
| * configure.ac (AC_CHECK_FUNCS): Remove recvmmsg and sendmmsg. |
| |
| tests: add recv_mmsg and send_mmsg functions to libtests. |
| * tests/tests.h (recv_mmsg, send_mmsg): New prototype. |
| * tests/libmmsg.c: New file. |
| * tests/Makefile.am (libtests_a_SOURCES): Add it. |
| * tests/mmsg.c Do not check for __NR_sendmmsg, __NR_recvmmsg, |
| HAVE_SENDMMSG, and HAVE_RECVMMSG. Do not include unused headers. |
| (recv_mmsg, send_mmsg): Remove. |
| |
| tests: add socketcall function to libtests. |
| * tests/tests.h (socketcall): New prototype. |
| * tests/libsocketcall.c: New file. |
| * tests/Makefile.am (libtests_a_SOURCES): Add it. |
| |
| 2016-07-18 Dmitry V. Levin <ldv@altlinux.org> |
| |
| Use IOV_MAX instead of UIO_MAXIOV. |
| IOV_MAX appears to be more portable than UIO_MAXIOV. |
| |
| * msghdr.c: Include <limits.h>. Remove fallback defintion of UIO_MAXIOV. |
| (get_optmem_max): Replace UIO_MAXIOV with IOV_MAX. |
| * tests/msg_control.c: Likewise. |
| |
| 2016-07-18 Dmitry V. Levin <ldv@altlinux.org> |
| |
| Unabuse struct tcb.auxstr. |
| As we've got a proper mechanism that parsers can use for storing private |
| data between entering and exiting stages, all cases of struct tcb.auxstr |
| abuse should go. |
| |
| * btrfs.c (btrfs_ioctl): Use set_tcb_priv_ulong and get_tcb_priv_ulong |
| instead of abusing tcp->auxstr. |
| * file_handle.c (SYS_FUNC(name_to_handle_at)): Likewise. |
| * msghdr.c (SYS_FUNC(recvmsg)): Likewise. |
| * net.c (decode_sockname, SYS_FUNC(recvfrom)): Likewise. |
| * v4l2.c (print_v4l2_queryctrl): Likewise. |
| |
| 2016-07-18 Dmitry V. Levin <ldv@altlinux.org> |
| |
| Fix race condition in decoding timeout argument of recvmmsg syscall. |
| As the value returned by sprint_timespec points to a static area and may |
| be overwritten by subsequent calls to sprint_timespec, it is not safe to |
| save this value on entering syscall and use it later on exiting. |
| |
| * mmsghdr.c (SYS_FUNC(recvmmsg)): On entering syscall, copy the value |
| returned by sprint_timespec to a dynamically allocated memory, and save |
| the pointer using set_tcb_priv_data. On exiting, restore it using |
| get_tcb_priv_data. |
| |
| 2016-07-18 Dmitry V. Levin <ldv@altlinux.org> |
| |
| Fix race condition in decoding rt_sigtimedwait's timeout argument. |
| As the value returned by sprint_timespec points to a static area and may |
| be overwritten by subsequent calls to sprint_timespec, it is not safe to |
| save this value on entering syscall and use it later on exiting. |
| |
| * signal.c (SYS_FUNC(rt_sigtimedwait)): On entering syscall, copy the |
| value returned by sprint_timespec to a dynamically allocated memory, |
| and save the pointer using set_tcb_priv_data. On exiting, restore it |
| using get_tcb_priv_data. |
| |
| 2016-07-18 Patrik Jakobsson <patrik.jakobsson@linux.intel.com> |
| |
| Add private data field to struct tcb. |
| We need to be able to store private data in the struct tcb across it's |
| lifetime. To ensure proper deallocation of this stored data a callback |
| must be provided along with the data. The callback is executed |
| automatically on exiting syscall, and when the life of the tcb ends. |
| |
| * defs.h (struct tcb): Add _priv_data and _free_priv_data fields. |
| (get_tcb_priv_data, set_tcb_priv_data, free_tcb_priv_data): |
| New prototypes. |
| (get_tcb_priv_ulong, set_tcb_priv_ulong): New static inline functions. |
| * strace.c (get_tcb_priv_data, set_tcb_priv_data, free_tcb_priv_data): |
| New functions. |
| (droptcb): Call free_tcb_priv_data. |
| * syscall.c (trace_syscall_exiting): Call free_tcb_priv_data |
| when clearing TCB_INSYSCALL flag. |
| |
| 2016-07-18 Dmitry V. Levin <ldv@altlinux.org> |
| |
| net.c: move parsers of sendmsg and recvmsg syscalls to msghdr.c. |
| * defs.h (fetch_msghdr_namelen, decode_msghdr): Remove. |
| * net.c (SYS_FUNC(sendmsg), SYS_FUNC(recvmsg)): Move ... |
| * msghdr.c: ... here. |
| (fetch_msghdr_namelen, decode_msghdr): Add static qualifier. |
| |
| net.c: move parsers of sendmmsg and recvmmsg syscalls to mmsghdr.c. |
| * defs.h (decode_mmsgvec): Remove. |
| * net.c: Do not include "msghdr.h". |
| (SYS_FUNC(sendmmsg), SYS_FUNC(recvmmsg)): Move ... |
| * mmsghdr.c: ... here. |
| (decode_mmsgvec): Add static qualifier. |
| |
| msghdr.c: move all mmsghdr parsers to a separate file. |
| * msghdr.h (print_struct_msghdr): New prototype. |
| * msghdr.c (print_msghdr): Rename to print_struct_msghdr, remove |
| static qualifier, all callers changed. |
| (decode_mmsghdr, decode_mmsgvec, dumpiov_in_mmsghdr): Move to ... |
| * mmsghdr.c: ... new file. |
| * Makefile.am (strace_SOURCES): Add it. |
| |
| 2016-07-14 Dmitry V. Levin <ldv@altlinux.org> |
| |
| tests: disable part of msg_name test on non-glibc systems. |
| Sadly, musl recvmsg wrapper blindly dereferences 2nd argument, |
| so limit the affected part of the test to glibc that doesn't. |
| |
| * tests/msg_name.c (test_msg_name) [!__GLIBC__]: Do not test |
| with inaccessible 2nd argument. |
| |
| 2016-07-13 Dmitry V. Levin <ldv@altlinux.org> |
| |
| Print struct iovec as a regular structure. |
| * io.c (print_iovec): Print names of iov_base and iov_len fields. |
| * tests/aio.c (main): Update expected output. |
| * tests/inet-cmsg.c (main): Likewise. |
| * tests/mmsg.c (main): Likewise. |
| * tests/msg_name.c (test_msg_name): Likewise. |
| * tests/preadv-pwritev.c (main): Likewise. |
| * tests/preadv2-pwritev2.c (main): Likewise. |
| * tests/preadv.c (main): Likewise. |
| * tests/pwritev.c (main): Likewise. |
| * tests/readv.c (main): Likewise. |
| * tests/recvmsg.c (main): Likewise. |
| * tests/vmsplice.c (main): Likewise. |
| * tests/scm_rights-fd.test: Likewise. |
| * tests/uio.expected: Likewise. |
| |
| tests: check decoding of msghdr.msg_name* arguments of recvmsg syscall. |
| * tests/msg_name.c: New file. |
| * tests/msg_name.test: New test. |
| * tests/.gitignore: Add msg_name. |
| * tests/Makefile.am (check_PROGRAMS): Likewise. |
| (DECODER_TESTS): Add msg_name.test. |
| |
| 2016-07-13 Dmitry V. Levin <ldv@altlinux.org> |
| |
| Fix decoding of struct msghdr.msg_name* arguments of recvmsg syscall. |
| As the msghdr.msg_namelen argument of recvmsg syscall has the same |
| read-write semantics as the address length argument of recvfrom syscall, |
| parser of recvmsg syscall needs a similar fix. |
| |
| * defs.h (fetch_msghdr_namelen): New prototype. |
| (decode_msghdr): Add "int *" argument. |
| * msghdr.c (print_msghdr): Likewise. Treat it as a pointer to struct |
| msghdr.msg_namelen passed to the kernel. Pass to decode_sockaddr |
| the size of socket address actually returned by the kernel. |
| Print both user and kernel address lengths when the value changes. |
| (decode_msghdr, decode_mmsghdr): Add "int *" argument, |
| forward it to print_msghdr. |
| (decode_mmsgvec): Update decode_mmsghdr invocation. |
| (fetch_msghdr_namelen): New function. |
| * net.c (SYS_FUNC(sendmsg)): Update decode_msghdr invocation. |
| (SYS_FUNC(recvmsg)): Use fetch_msghdr_namelen on entering to save |
| struct msghdr.msg_namelen. On exiting, pass the saved value |
| to decode_msghdr. |
| |
| 2016-07-12 Dmitry V. Levin <ldv@altlinux.org> |
| |
| Update generic ioctl entries from linux 4.7. |
| * linux/64/ioctls_inc.h: Update from linux v4.7 using ioctls_gen.sh. |
| * linux/32/ioctls_inc_align32.h: Likewise. |
| * linux/32/ioctls_inc_align64.h: Likewise. |
| |
| 2016-07-12 Gleb Fotengauer-Malinovskiy <glebfm@altlinux.org> |
| |
| x32: update ioctl entries from linux 4.7. |
| * linux/x32/ioctls_inc0.h: Update from linux v4.7 using ioctls_gen.sh. |
| |
| maint: update for linux 4.7. |
| * maint/ioctls_sym.sh: Drop obsolete workarounds for linux/btrfs.h. |
| |
| 2016-07-12 Dmitry V. Levin <ldv@altlinux.org> |
| |
| block.c: remove BLKDAXGET support. |
| BLKDAXGET was removed by linux kernel commit v4.7-rc1~78^2^2~4. |
| |
| * block.c: Do not define BLKDAXGET. |
| (block_ioctl): Remove BLKDAXGET support. |
| * tests/ioctl_block.c (main): Remove BLKDAXGET test. |
| |
| 2016-07-12 Dmitry V. Levin <ldv@altlinux.org> |
| |
| Fix printing of socklen argument of bind and sendto syscalls. |
| * net.c (SYS_FUNC(bind)): Print 3rd syscall argument using %d format. |
| (SYS_FUNC(sendto)): Print 6th syscall argument using %d format. |
| |
| tests: check decoding of sockaddr related arguments of recvfrom syscall. |
| * configure.ac (AC_CHECK_FUNCS): Add recvfrom. |
| * tests/recvfrom.c: New file. |
| * tests/recvfrom.test: New test. |
| * tests/.gitignore: Add recvfrom. |
| * tests/Makefile.am (check_PROGRAMS): Likewise. |
| (DECODER_TESTS): Add recvfrom.test. |
| |
| Fix decoding of sockaddr related arguments of recvfrom syscall. |
| * net.c (SYS_FUNC(recvfrom)): Use fetch_socklen. Save the address |
| length passed to the kernel and print it on error. Do not print more |
| bytes of the socket address than actually returned by the kernel. |
| Print both user and kernel address lengths when the returned address |
| is truncated. |
| |
| tests: check decoding of accept4 syscall. |
| * configure.ac (AC_CHECK_FUNCS): Add accept4. |
| * tests/accept4.c: New file. |
| * tests/accept4.test: New test. |
| * tests/.gitignore: Add accept4. |
| * tests/Makefile.am (check_PROGRAMS): Likewise. |
| (DECODER_TESTS): Add accept4.test. |
| |
| tests: check decoding of accept syscall. |
| * tests/accept.c: New file. |
| * tests/accept.test: New test. |
| * tests/.gitignore: Add accept. |
| * tests/Makefile.am (check_PROGRAMS): Likewise. |
| (DECODER_TESTS): Add accept.test. |
| |
| tests: check decoding of getpeername syscall. |
| * tests/getpeername.c: New file. |
| * tests/getpeername.test: New test. |
| * tests/.gitignore: Add getpeername. |
| * tests/Makefile.am (check_PROGRAMS): Likewise. |
| (DECODER_TESTS): Add getpeername.test. |
| |
| tests: check decoding of getsockname syscall. |
| * tests/getsockname.c: New file. |
| * tests/getsockname.test: New test. |
| * tests/sockname.c: New file. |
| * tests/.gitignore: Add getsockname. |
| * tests/Makefile.am (check_PROGRAMS): Likewise. |
| (DECODER_TESTS): Add getsockname.test. |
| (EXTRA_DIST): Add sockname.c. |
| |
| Print both values of changing address length in sockname family syscalls |
| * net.c (decode_sockname): Print both user and kernel address lengths |
| when the value changes. |
| * tests/net-y-unix.c (main): Update expected output. |
| * tests/net-yy-unix.c (main): Likewise. |
| * tests/net.expected: Likewise. |
| |
| Enhance diagnostics of address truncation in sockname family syscalls. |
| * net.c (decode_sockname): Print both user and kernel address lengths |
| when the returned address is truncated. |
| * tests/sun_path.expected: Update expected output. |
| |
| Fix decoding of getsockname, getpeername, accept, and accept4 syscalls. |
| * net.c (fetch_socklen): New function. |
| (decode_sockname): Use it. On entering syscall, decode early |
| and return RVAL_DECODED when possible. On error, print the address |
| length passed to the kernel. Do not print more bytes of the socket |
| address than actually returned by the kernel. |
| |
| 2016-07-11 Dmitry V. Levin <ldv@altlinux.org> |
| |
| Prepare parsers of sockname family syscalls for the upcoming fix. |
| * net.c (do_sockname): Rename to decode_sockname, drop second argument, |
| do not print sock_type_flags, return RVAL_DECODED on exiting. |
| (SYS_FUNC(accept), SYS_FUNC(getsockname)): Use decode_sockname instead |
| of do_sockname, take its return code into account. |
| (SYS_FUNC(accept4)): Likewise. Print sock_type_flags when |
| decode_sockname returns RVAL_DECODED. |
| |
| 2016-07-08 Dmitry V. Levin <ldv@altlinux.org> |
| |
| netlink: handle multipart netlink messages. |
| Handle multipart netlink messages made of multiple struct nlmsghdr |
| headers with associated payload in one byte stream. |
| |
| * netlink.c (fetch_nlmsghdr, print_nlmsghdr, |
| decode_nlmsghdr_with_payload): New functions. |
| (decode_netlink): Use them. |
| * tests/netlink_parsing.c (send_query): Check them. |
| |
| 2016-07-07 Dmitry V. Levin <ldv@altlinux.org> |
| |
| tests: extend netlink protocol check. |
| * tests/netlink_protocol.c (send_query): Check that no part |
| of netlink message is fetched beyond the end of message. |
| Check decoding of zero address and zero length messages. |
| Check decoding of messages with nlmsg_len exceeding message length. |
| |
| 2016-07-07 Fabien Siron <fabien.siron@epita.fr> |
| |
| tests: check decoding of netlink protocol. |
| * tests/netlink_protocol.test: New test. |
| * tests/netlink_protocol.c: New file. |
| * tests/.gitignore: Add netlink_protocol. |
| * tests/Makefile.am (check_PROGRAMS): Likewise. |
| (DECODER_TESTS): Add netlink_protocol.test. |
| |
| 2016-07-07 Fabien Siron <fabien.siron@epita.fr> |
| |
| Add a general netlink socket parser. |
| Introduce a general socket netlink parser which prints the header and |
| a string for the remaining part of the buffer. It doesn't handle all |
| the netlink flags and types yet because the parser needs more |
| information, this will be implemented later. |
| |
| * net.c (decode_sockbuf): New function. |
| (SYS_FUNC(send), SYS_FUNC(sendto), SYS_FUNC(recv), SYS_FUNC(recvfrom)): |
| Use it instead of printstr. |
| * msghdr.c (print_msghdr): Pass IOV_DECODE_NETLINK to tprint_iov_upto() |
| for netlink sockets. |
| * netlink.c: New file. |
| * Makefile.am (strace_SOURCES): Add it. |
| * defs.h (decode_netlink, getfdproto): New prototypes. |
| (iov_decode): Add IOV_DECODER_NETLINK. |
| * io.c (print_iovec): Use decode_netlink(). |
| * util.c (getfdproto): Remove static keyword. |
| * xlat/netlink_flags.in: New file. |
| * xlat/netlink_types.in: New file. |
| |
| 2016-07-07 Dmitry V. Levin <ldv@altlinux.org> |
| |
| Update sigaltstack SS_* constants. |
| * xlat/sigaltstack_flags.in: Add SS_AUTODISARM introduced |
| by linux kernel commit v4.7-rc1~195^2. |
| |
| Update fs *_MAGIC constants. |
| * xlat/fsmagic.in: Add NSFS_MAGIC, TRACEFS_MAGIC, BPF_FS_MAGIC, |
| and UDF_SUPER_MAGIC introduced by linux kernel commits |
| v3.19-rc1~53^2~7^2~1, v4.1-rc1~147^2~4, v4.4-rc1~141^2~17^2~1, |
| and v4.7-rc1~161^2, respectively. |
| |
| 2016-07-05 Dmitry V. Levin <ldv@altlinux.org> |
| |
| Update KEYCTL_* constants. |
| * xlat/keyctl_commands.in: Add KEYCTL_DH_COMPUTE introduced |
| by linux kernel commit v4.7-rc1~124^2~2^2~2^2. |
| |
| Update input event constants. |
| * xlat/evdev_keycode.in: Add KEY_* constants introduced |
| by linux kernel commit v4.7-rc6~32^2~6^2. |
| |
| 2016-07-04 Dmitry V. Levin <ldv@altlinux.org> |
| |
| Update RWF_* constants. |
| * xlat/rwf_flags.in: Add RWF_DSYNC and RWF_SYNC introduced |
| by linux kernel commit v4.7-rc1~158^2~1. |
| |
| 2016-07-07 Dmitry V. Levin <ldv@altlinux.org> |
| |
| Update BPF_MAP_TYPE_* constants. |
| * xlat/bpf_prog_types.in: Add BPF_PROG_TYPE_TRACEPOINT introduced |
| by linux kernel commit v4.7-rc1~154^2~332^2~6. |
| |
| 2016-07-03 Dmitry V. Levin <ldv@altlinux.org> |
| |
| msghdr.c: limit output when printing excessively large messages. |
| Limit output of struct msghdr.msg_control when |
| struct msghdr.msg_controllen is greater than the maximum ancillary |
| buffer size specified in /proc/sys/net/core/optmem_max file. |
| |
| * configure.ac (AC_CHECK_FUNCS): Add open64. |
| * defs.h (read_int_from_file): New prototype. |
| * util.c (read_int_from_file): New function. |
| * msghdr.c (get_optmem_max): New function based on read_int_from_file. |
| (decode_msg_control): Use it to check control_len argument. |
| * tests/msg_control.c (test_big_len): New function. |
| (main): Use it to test printing of excessively large messages. |
| |
| 2016-07-03 Dmitry V. Levin <ldv@altlinux.org> |
| |
| tests: add read_int_from_file function to libtests. |
| * tests/overflowuid.c (read_int_from_file): New function. |
| (check_overflow_id): Use it. |
| * tests/tests.h (read_int_from_file): New prototype. |
| |
| 2016-07-02 Dmitry V. Levin <ldv@altlinux.org> |
| |
| msghdr.c: limit IP_RECVOPTS/IP_RETOPTS output in abbrev mode. |
| * msghdr.c (print_cmsg_ip_opts): Do not print more than max_strlen |
| bytes of ip options in abbrev mode. |
| * tests/msg_control.c (print_ip_opts): Use DEFAULT_STRLEN. |
| (test_sol_ip): Test IP_RETOPTS output in abbrev mode. |
| |
| msghdr.c: limit SCM_RIGHTS output in abbrev mode. |
| * msghdr.c (print_scm_rights): Do not print more than max_strlen |
| descriptors in abbrev mode. |
| * tests/msg_control.c (DEFAULT_STRLEN): New macro. |
| (print_fds): Use it. |
| (test_scm_rights3): New function. |
| (main): Use it to test SCM_RIGHTS output in abbrev mode. |
| * tests/msg_control-v.c: New file. |
| * tests/msg_control-v.test: New test. |
| * tests/.gitignore: Add msg_control-v. |
| * tests/Makefile.am (check_PROGRAMS): Likewise. |
| (DECODER_TESTS): Add msg_control-v.test. |
| |
| 2016-07-01 Dmitry V. Levin <ldv@altlinux.org> |
| |
| tests: check decoding of struct msghdr ancillary data. |
| * tests/msg_control.c: New file. |
| * tests/msg_control.test: New test. |
| * tests/.gitignore: Add msg_control. |
| * tests/Makefile.am (check_PROGRAMS): Likewise. |
| (DECODER_TESTS): Add msg_control.test. |
| |
| 2016-06-30 Dmitry V. Levin <ldv@altlinux.org> |
| |
| msghdr.c: reorganize struct cmsghdr handler. |
| * msghdr.c (sock_ee): New structure. |
| (print_scm_rights, print_scm_creds, print_scm_security, |
| print_cmsg_ip_pktinfo, print_cmsg_uint, print_cmsg_ip_opts, |
| print_cmsg_ip_recverr, print_cmsg_ip_origdstaddr): Remove data_len |
| argument validity check, don't print ", cmsg_data=" prefix here. |
| (print_cmsg_ip_tos): Likewise. Rename to print_cmsg_uint8_t. |
| (cmsg_printer): New type. |
| (cmsg_socket_printers, cmsg_ip_printers): New arrays. |
| (print_cmsg_type_data): Use them to handle struct cmsghdr |
| and its cmsg_data. |
| |
| msghdr.c: merge print_cmsg_ip_ttl and print_cmsg_ip_checksum. |
| * msghdr.c (print_cmsg_ip_ttl): Rename to print_cmsg_uint. |
| (print_cmsg_ip_checksum): Remove. |
| (print_cmsg_type_data): Replace print_cmsg_ip_ttl |
| and print_cmsg_ip_checksum with print_cmsg_uint. |
| |
| msghdr.c: enhance representation of unprintable part of msg_control array |
| * msghdr.c (decode_msg_control): When msg_control array has an |
| unprintable part, print its address. |
| |
| msghdr.c: apply a sane limit to the length of IP_ORIGDSTADDR address. |
| * msghdr.c (print_cmsg_ip_origdstaddr): Limit address length to the size |
| of struct sockaddr_storage. |
| |
| msghdr.c: fix printing SCM_RIGHTS array. |
| * msghdr.c (print_scm_rights): Do not print array elements outside |
| bounds defined by struct cmsghdr.cmsg_len. |
| |
| msghdr.c: print unrecognized struct cmsghdr.cmsg_type in hex. |
| * msghdr.c (print_cmsg_type_data): Use %#x format when printing |
| struct cmsghdr.cmsg_type as an integer. |
| |
| msghdr.c: fix printing of struct in_pktinfo. |
| * msghdr.c (print_cmsg_ip_pktinfo): Fix printing |
| of struct in_pktinfo.ipi_addr. |
| |
| msghdr.c: fix representation of struct cmsghdr.cmsg_data integer arrays. |
| * msghdr.c (print_cmsg_ip_opts): Print struct cmsghdr.cmsg_data |
| as an array of hexadecimal integers. |
| * tests/inet-cmsg.c (print_opts): Update expected output. |
| |
| msghdr.c: fix representation of integer struct cmsghdr.cmsg_data values. |
| * msghdr.c (print_cmsg_ip_ttl, print_cmsg_ip_tos, |
| print_cmsg_ip_checksum): Print struct cmsghdr.cmsg_data value as an |
| array element. |
| * tests/inet-cmsg.c (print_ttl, print_tos): Update expected output. |
| |
| msghdr.c: when printing struct struct cmsghdr.cmsg_data, also print its name |
| * msghdr.c (print_scm_rights, print_scm_creds, print_scm_security, |
| print_cmsg_ip_pktinfo, print_cmsg_ip_ttl, print_cmsg_ip_tos, |
| print_cmsg_ip_checksum, print_cmsg_ip_opts, print_cmsg_ip_recverr, |
| print_cmsg_ip_origdstaddr): Print "cmsg_data=" before its contents. |
| * tests/inet-cmsg.c (print_pktinfo, print_ttl, print_tos, print_opts, |
| print_origdstaddr): Update expected output. |
| * tests/scm_rights-fd.test: Likewise. |
| |
| 2016-06-27 Dmitry V. Levin <ldv@altlinux.org> |
| |
| msghdr.c: print struct mmsghdr as a regular structure. |
| * msghdr.c (decode_mmsghdr): Print names of msg_hdr and msg_len fields. |
| * tests/mmsg.c (main): Update expected output. |
| |
| net.c: move all msghdr and mmsghdr parsers to a separate file. |
| * defs.h (msg_flags, socketlayers, decode_msghdr, decode_mmsg): |
| New prototypes. |
| * msghdr.c: New file. |
| * Makefile.am (strace_SOURCES): Add it. |
| * net.c: Move all msghdr and mmsghdr parsers to msghdr.c. |
| |
| Mpersify fetchers of struct msghdr and struct mmsghdr. |
| * fetch_struct_msghdr.c: New file. |
| * fetch_struct_mmsghdr.c: Likewise. |
| * Makefile.am (strace_SOURCES): Add them. |
| * net.c (struct msghdr32, struct mmsghdr32, copy_from_msghdr32, |
| fetch_msghdr, fetch_mmsghdr): Remove. |
| (decode_msghdr, dumpiov_in_msghdr): Use fetch_struct_msghdr instead |
| of fetch_msghdr. |
| (decode_mmsghdr): Change msg_len argument to use_msg_len. |
| Use fetch_struct_mmsghdr instead of fetch_mmsghdr. |
| Return fetch_struct_mmsghdr's return code. |
| (decode_mmsg): Rename to decode_mmsgvec. Take addr and len arguments. |
| Do not print vlen and flags. Check decode_mmsghdr's return code. |
| Print mmsghdr array using square brackets. |
| (dumpiov_in_mmsghdr): Use fetch_struct_mmsghdr instead of fetch_mmsghdr. |
| (SYS_FUNC(sendmmsg), SYS_FUNC(recvmmsg)): Use decode_mmsgvec instead |
| of decode_mmsg. Print vlen and flags. |
| * tests/mmsg.c (main): Update expected output. |
| |
| net.c: move fallback definition of struct mmsghdr to a separate file. |
| * msghdr.h: New file. |
| * Makefile.am (strace_SOURCES): Add it. |
| * net.c: Include it. Move fallback definition of struct mmsghdr there. |
| * tests/mmsg.c: Include "msghdr.h". Remove fallback definition |
| of struct mmsghdr. |
| |
| 2016-06-26 Dmitry V. Levin <ldv@altlinux.org> |
| |
| net.c: print struct msghdr as a regular structure. |
| * net.c (print_msghdr): Print msg_name, msg_namelen, msg_iov, |
| and msg_iovlen fields like other regular fields. |
| * tests/inet-cmsg.c (main): Update expected output. |
| * tests/mmsg.c (main): Likewise. |
| * tests/recvmsg.c (main): Likewise. |
| * tests/scm_rights-fd.test: Likewise. |
| |
| net.c: rename some internal functions for consistency and readability. |
| * net.c (printcmsghdr): Rename to decode_msg_control. |
| (do_msghdr): Rename to print_msghdr. |
| (extractmsghdr): Rename to fetch_msghdr. |
| (extractmmsghdr): Rename to fetch_mmsghdr. |
| (printmsghdr): Rename to decode_msghdr. |
| (printmmsghdr): Rename to decode_mmsghdr. |
| All callers updated. |
| |
| net.c: when printing struct msghdr.msg_control, also print its name. |
| * net.c (printcmsghdr): Skip control messages of zero length. |
| Always print "msg_control=" before the control message. |
| (do_msghdr): Print control message before its length, not after. |
| * tests/inet-cmsg.c (main): Update expected output. |
| * tests/scm_rights-fd.test: Likewise. |
| |
| Assume that libc provides struct msghdr.msg_control. |
| * configure.ac (AC_CHECK_MEMBERS): Remove struct msghdr.msg_control. |
| * net.c (do_msghdr): Remove HAVE_STRUCT_MSGHDR_MSG_CONTROL check. |
| |
| 2016-06-25 Dmitry V. Levin <ldv@altlinux.org> |
| |
| net.c: move all sockaddr parsers to a separate file. |
| * sockaddr_ll.c: Rename to sockaddr.c |
| (print_sockaddr_data_ll): Add static keyword. |
| * Makefile.am (strace_SOURCES): Likewise. |
| * defs.h (print_sockaddr_data_ll): Remove. |
| (addrfams): New prototype. |
| * net.c: Move all sockaddr parsers to sockaddr.c. |
| |
| net.c: rename printsock to decode_sockaddr. |
| * defs.h (printsock): Rename to decode_sockaddr. |
| * net.c (printsock): Likewise. |
| (do_msghdr, SYS_FUNC(bind), do_sockname, SYS_FUNC(sendto), |
| SYS_FUNC(recvfrom)): Replace printsock with decode_sockaddr. |
| |
| defs.h: remove unused prototype. |
| * defs.h (print_sock_optmgmt): Remove. |
| |
| tests: check decoding of sockaddr structures. |
| * tests/net-sockaddr.c: New file. |
| * tests/net-sockaddr.test: New test. |
| * tests/.gitignore: Add net-sockaddr. |
| * tests/Makefile.am (check_PROGRAMS): Likewise. |
| (DECODER_TESTS): Add net-sockaddr.test. |
| |
| 2016-06-24 Dmitry V. Levin <ldv@altlinux.org> |
| |
| net.c: fix printing AF_PACKET socket addresses. |
| * defs.h (print_ifindex, print_sockaddr_data_ll): New prototypes. |
| * net.c: Stop including "xlat/af_packet_types.h". |
| (print_ifindex): Remove static keyword. |
| (print_sockaddr_data_l): Remove. |
| * sockaddr_ll.c: New file. |
| * Makefile.am (strace_SOURCES): Add it. |
| * xlat/arp_hardware_types.in: New file. |
| * xlat/ethernet_protocols.in: Likewise. |
| |
| net.c: skip details of too short socket addresses, part 2. |
| * net.c (sa_printers): Add minimal address length for each socket family. |
| (print_sockaddr): Call socket family specific sockaddr printer |
| only when socket address length is greater or equal |
| the minimal address length for the socket family. |
| |
| net.c: fix printing AF_BLUETOOTH socket addresses. |
| * xlat/hci_channels.in: New file. |
| * net.c (print_sockaddr_data_raw): New function. |
| (print_sockaddr): Use it. |
| [HAVE_BLUETOOTH_BLUETOOTH_H]: Include "xlat/hci_channels.h". |
| [HAVE_BLUETOOTH_BLUETOOTH_H] (print_sockaddr_data_bt): Fix printing |
| sockaddr_hci, sockaddr_sco, sockaddr_rc, and sockaddr_l2 structures. |
| |
| net.c: fix printing AF_IPX sockets addresses, part 2. |
| * net.c (print_sockaddr_data_ipx): Print sockaddr_ipx.sipx_network |
| using %#08x format. Print elements of sockaddr_ipx.sipx_node array |
| and sockaddr_ipx.sipx_type using %#02x format. |
| |
| 2016-06-24 Dmitry V. Levin <ldv@altlinux.org> |
| |
| net.c: fix printing AF_UNIX abstract socket addresses. |
| AF_UNIX abstract socket address specified by sockaddr_un.sun_path |
| is not a NUL-terminated string. |
| |
| * net.c (SIZEOF_SA_FAMILY): New macro. |
| (print_sockaddr_data_un): Use it. Specify actual address length |
| in print_quoted_string calls. Do not set QUOTE_0_TERMINATED flag |
| when printing an abstract socket address. |
| |
| 2016-06-24 Dmitry V. Levin <ldv@altlinux.org> |
| |
| net.c: fix printing field names of struct sockaddr_nl. |
| * net.c (print_sockaddr_data_nl): Change "pid" to "nl_pid", "groups" |
| to "nl_groups". Print sockaddr_nl.nl_groups using %#08x format. |
| * tests/net-yy-netlink.c (main): Update. |
| |
| net.c: fix printing struct sockaddr_in6.sin6_flowinfo. |
| * net.c (print_sockaddr_data_in6): Convert sockaddr_in6.sin6_flowinfo |
| from network order to host order before printing. |
| |
| 2016-06-23 Dmitry V. Levin <ldv@altlinux.org> |
| |
| net.c: do not print sockaddr_in6.sin6_scope_id unnecessarily. |
| Prior to RFC2553, struct sockaddr_in6 had no sin6_scope_id field. |
| As the kernel still accepts RFC2133 editions of struct sockaddr_in6, |
| print sockaddr_in6.sin6_scope_id only when it is specified. |
| |
| * net.c (SIN6_MIN_LEN): New macro. |
| (print_sockaddr_data_in6): Print sockaddr_in6.sin6_scope_id only when |
| socket address length exceeds SIN6_MIN_LEN. |
| |
| 2016-06-23 Dmitry V. Levin <ldv@altlinux.org> |
| |
| net.c: fix printing raw data of socket addresses. |
| * net.c (print_sockaddr): When printing socket address raw data, read |
| exactly the number of data bytes specified for the socket addess. |
| |
| net.c: skip details of too short socket addresses. |
| * net.c (print_sockaddr): Print socket address details only when |
| the address size is greater than sizeof(struct sockaddr.sa_family). |
| (print_sockaddr_data_un): Remove handling of addrlen == 2. |
| * tests/net-y-unix.c (main): Update expected pattern. |
| * tests/net-yy-unix.c (main): Likewise. |
| * tests/net.expected: Likewise. |
| |
| 2016-06-22 Dmitry V. Levin <ldv@altlinux.org> |
| |
| Assume that libc provides struct sockaddr_in6.sin6_scope_id. |
| * configure.ac (AC_CHECK_MEMBERS): Remove |
| struct sockaddr_in6.sin6_scope_id. |
| * net.c (print_sockaddr_data_in6): Remove |
| HAVE_STRUCT_SOCKADDR_IN6_SIN6_SCOPE_ID check. |
| |
| Split print_sockaddr. |
| * net.c (sockaddr_buf_t): Remove. |
| (sockaddr_printer): New type. |
| (sa_printers): New array of sockaddr_printer. |
| (print_sockaddr): Use it. Move printers of family specific |
| sockaddr data to separate funcions. |
| |
| 2016-06-22 Fabien Siron <fabien.siron@epita.fr> |
| |
| Add a enum for decoding to tprint_iov() and tprint_iov_upto() |
| Introduce a new type iov_decode which will be used instead of the integer |
| "decode" as a parameter. |
| |
| * defs.h (iov_decode): New enum. |
| (tprint_iov, tprint_iov_upto): Change type of "decode_iov" to enum iov_decode. |
| * aio.c (print_iocb): Change type of "decode_iov" to enum iov_decode in |
| tprint_iov() call. |
| * keyctl.c (keyctl_instantiate_key_iov): Likewise. |
| * process.c (ptrace): Likewise. |
| * process_vm.c (process_vm_readv, process_vm_writev): Likewise. |
| * io.c (writev, do_pwritev, vmsplice): Likewise. |
| (print_iovec): Replace the condition with a switch. |
| (tprint_iov_upto): Change type of "decode_iov" to enum iov_decode. |
| (readv, do_preadv): Change type of "decode_iov" to enum iov_decode in |
| tprint_iov_upto() call. |
| * scsi.c (print_sg_io_v3_req, print_sg_io_v3_res, print_sg_io_v4_req, |
| print_sg_io_v4_res): Likewise. |
| * net.c (do_msghdr): Adapt call of tprint_iov_upto(). |
| |
| 2016-06-22 Dmitry V. Levin <ldv@altlinux.org> |
| |
| printsock: fix zero padding of sockaddr buffer. |
| Before this change printsock used to erroneously clear the last byte |
| of sockaddr buffer. |
| |
| * net.c (printsock): Use struct sockaddr_storage as a sockaddr buffer. |
| Reserve additional byte after the sockaddr buffer for zero padding. |
| Do not clear memory that is going to be overwritten by umoven. |
| Clear the tail of sockaddr buffer that was not overwritten by umoven. |
| |
| 2016-06-21 Fabien Siron <fabien.siron@epita.fr> |
| |
| Change printsock to return socket family. |
| * defs.h (printsock): Change return type to int. |
| * net.c (printsock): Likewise. Return socket family on success |
| and -1 in case of an error. |
| |
| 2016-06-21 Dmitry V. Levin <ldv@altlinux.org> |
| |
| Unexport addrfams. |
| * defs.h (addrfams): Remove. |
| |
| sock.c: use print_sockaddr. |
| * sock.c (print_ifreq_addr): Remove. |
| (PRINT_IFREQ_ADDR): New macro. |
| (print_ifreq, decode_ifconf): Use it instead of print_ifreq_addr. |
| |
| Export print_sockaddr function. |
| * defs.h (print_sockaddr): New prototype. |
| * net.c (print_sockaddr): Remove static keyword. |
| Change type of address pointer to "const void *". |
| (print_cmsg_ip_recverr, print_group_req): Remove redundant casts |
| in print_sockaddr invocations. |
| |
| xlat/addrfams.in: provide fallback definitions. |
| * xlat/addrfams.in: add fallback definitions for constants. |
| |
| Update AF_* constants. |
| * xlat/addrfams.in: Add AF_QIPCRTR. |
| |
| Assume that libc provides inet_ntop and inet_pton. |
| * configure.ac (AC_CHECK_FUNCS): Remove inet_ntop and inet_pton. |
| * net.c (sockaddr_buf_t, print_sockaddr, print_mreq6): Remove |
| HAVE_INET_NTOP checks. |
| * tests/ip_mreq.c: Remove HAVE_INET_PTON check. |
| |
| net.c: use SO_LINGER unconditionally. |
| * net.c (print_linger, print_getsockopt, print_setsockopt): Do not check |
| for SO_LINGER availability. |
| |
| net.c: use AF_BLUETOOTH unconditionally. |
| * net.c (print_sockaddr, SYS_FUNC(socket)): Do not check |
| for AF_BLUETOOTH availability. |
| |
| 2016-06-20 Dmitry V. Levin <ldv@altlinux.org> |
| |
| Consistently use AF_UNIX over AF_LOCAL. |
| As these constants have the same value 1, let's use and print only one |
| of them, e.g. AF_UNIX. |
| |
| * xlat/addrfams.in (AF_LOCAL): Remove. |
| * tests/net-accept-connect.c (main): Replace AF_LOCAL with AF_UNIX. |
| * tests/net-y-unix.c: Likewise. |
| * tests/net-yy-unix.c: Likewise. |
| * tests/netlink_unix_diag.c: Likewise. |
| |
| 2016-06-19 Dmitry V. Levin <ldv@altlinux.org> |
| |
| net.c: fix printing AF_IPX sockets. |
| * net.c (print_sockaddr): Print sockaddr_ipx as a regular structure. |
| (SYS_FUNC(socket)): Remove special handling of AF_IPX. |
| |
| net.c: use AF_IPX unconditionally. |
| * net.c (sockaddr_buf_t, print_sockaddr, SYS_FUNC(socket)): Do not check |
| for AF_IPX availability. |
| |
| Cleanup netipx/ipx.h availability check. |
| * configure.ac (AC_CHECK_HEADERS): Add netipx/ipx.h. |
| * net.c: Check for HAVE_NETIPX_IPX_H instead of __GLIBC__. |
| |
| 2016-06-19 Fabien Siron <fabien.siron@epita.fr> |
| |
| Make getfdproto return enum instead of string. |
| Introduce a new enum type sock_proto and use it instead of strings for socket |
| protocols identification. |
| |
| * defs.h (sock_proto): New enum. |
| (get_proto_by_name): New function. |
| * socketutils.c (protocols): New static table. |
| (print_sockaddr_by_inode): Use it. Change type of "proto" argument |
| to sock_proto. |
| (get_proto_by_name): New function. |
| * util.c (getfdproto): Use it. Change return type to sock_proto. |
| (printfd): Update. |
| |
| 2016-06-18 Dmitry V. Levin <ldv@altlinux.org> |
| |
| Split travis-ci.sh. |
| * travis-ci.sh: Split into travis-build.sh, travis-install.sh, |
| and travis-success.sh files. |
| * .travis.yml (before_install, after_success, git): New mappings. |
| (script): Change to travis-build.sh. |
| (addons, install): Remove. |
| (env): Remove matrix. |
| (matrix): Replace exclude list with include list. |
| |
| 2016-06-17 Dmitry V. Levin <ldv@altlinux.org> |
| |
| Introduce HAVE_STRUCT_TCB_EXT_ARG macro. |
| Check for "if HAVE_STRUCT_TCB_EXT_ARG" instead of |
| "if defined LINUX_MIPSN32 || defined X32". |
| |
| * defs.h (HAVE_STRUCT_TCB_EXT_ARG): Define for LINUX_MIPSN32 || X32. |
| (struct tcb): Check it instead of LINUX_MIPSN32 || X32. |
| (RVAL_LUDECIMAL): Likewise. |
| * io.c (print_lld_from_low_high_val): Likewise. |
| * lseek.c (SYS_FUNC(lseek)): Likewise. |
| * mem.c (SYS_FUNC(mmap)): Likewise. |
| * syscall.c (trace_syscall_exiting): Likewise. |
| * util.c (getllval): Likewise. |
| |
| 2016-06-17 Dmitry V. Levin <ldv@altlinux.org> |
| |
| btrfs: fix build with fresh linux/btrfs.h. |
| Fix build with fresh <linux/btrfs.h> that provides a slightly different |
| definition of struct btrfs_ioctl_defrag_range_args. |
| |
| * btrfs.c (btrfs_ioctl): Cast "len" member of |
| struct btrfs_ioctl_defrag_range_args to uint64_t. |
| * tests/btrfs.c (btrfs_print_defrag_range_args): Cast "start" and "len" |
| members of struct btrfs_ioctl_defrag_range_args to uint64_t. |
| |
| 2016-06-17 Dmitry V. Levin <ldv@altlinux.org> |
| |
| btrfs: provide fallback definitions for BTRFS_IOC_QUOTA_RESCAN* |
| <linux/btrfs.h> was introduced in linux v3.9-rc1 while some |
| of btrfs ioctls were added later, e.g. BTRFS_IOC_QUOTA_RESCAN |
| and BTRFS_IOC_QUOTA_RESCAN_STATUS in v3.10-rc2, |
| or BTRFS_IOC_QUOTA_RESCAN_WAIT in v3.11-rc1. |
| |
| * btrfs.c [!BTRFS_IOC_QUOTA_RESCAN] |
| (struct btrfs_ioctl_quota_rescan_args): New structure. |
| (BTRFS_IOC_QUOTA_RESCAN, BTRFS_IOC_QUOTA_RESCAN_STATUS): New macros. |
| [!BTRFS_IOC_QUOTA_RESCAN_WAIT] (BTRFS_IOC_QUOTA_RESCAN_WAIT): New macro. |
| * tests/btrfs.c: Likewise. |
| |
| Reported-by: Li Er <phoooyb@gmail.com> |
| |
| 2016-06-17 Dmitry V. Levin <ldv@altlinux.org> |
| |
| configure.ac: fix checks for btrfs specific structures. |
| * configure.ac (AC_CHECK_MEMBERS): Fix typo in the check for |
| struct btrfs_ioctl_defrag_range_args.start and |
| struct btrfs_ioctl_search_args_v2.buf_size. |
| |
| 2016-06-16 Elvira Khabirova <lineprinter0@gmail.com> |
| |
| README: add system requirements and beautify the file. |
| |
| 2016-06-16 Fei Jie <feij.fnst@cn.fujitsu.com> |
| |
| tests: add signal_receive.test. |
| * tests/signal_receive.c: New file. |
| * tests/signal_receive.test: New test. |
| * tests/.gitignore: Add signal_receive. |
| * tests/Makefile.am (check_PROGRAMS): Likewise. |
| (MISC_TESTS): Add signal_receive.test. |
| |
| tests: add signal2name function to libtests. |
| * tests/tests.h (signal2name): New prototype. |
| * tests/signal2name.c: New file. |
| * tests/Makefile.am (libtests_a_SOURCES): Add it. |
| |
| 2016-06-16 Dmitry V. Levin <ldv@altlinux.org> |
| |
| net.c: use AF_INET6 unconditionally. |
| * net.c (SYS_FUNC(socket)): Do not check for AF_INET6 availability. |
| |
| 2016-06-16 Dmitry V. Levin <ldv@altlinux.org> |
| |
| configure.ac: do not check for linux/in6.h. |
| The last user of <linux/in6.h> was removed by commit v4.9-252-gf362a33. |
| |
| * configure.ac (AC_CHECK_HEADERS): Remove linux/in6.h. |
| |
| 2016-06-16 Dmitry V. Levin <ldv@altlinux.org> |
| |
| net.c: use AF_PACKET unconditionally. |
| * net.c: Do not check for AF_PACKET availability. |
| |
| net.c: include <linux/if_packet.h> unconditionally. |
| * configure.ac (AC_CHECK_HEADERS): Remove linux/if_packet.h. |
| * net.c: Include <linux/if_packet.h> unconditionally. |
| |
| net.c: use ICMP_FILTER unconditionally. |
| * net.c: Do not check for ICMP_FILTER availability. |
| |
| net.c: include <linux/icmp.h> unconditionally. |
| * configure.ac (AC_CHECK_HEADERS): Remove linux/icmp.h. |
| * net.c: Follow the example of tests/net-icmp_filter.c and include |
| <linux/icmp.h> unconditionally. |
| |
| 2016-06-14 Dmitry V. Levin <ldv@altlinux.org> |
| |
| net.c: use AF_NETLINK unconditionally. |
| * net.c: Do not check for AF_NETLINK availability. |
| |
| net.c: include <linux/netlink.h> unconditionally. |
| * configure.ac (AC_CHECK_HEADERS): Remove linux/netlink.h. |
| * net.c: Follow the example of socketutils.c and include |
| <linux/netlink.h> unconditionally. |
| |
| 2016-06-14 Elvira Khabirova <lineprinter0@gmail.com> |
| |
| Remove UNDEFINED_SCNO. |
| Since UNDEFINED_SCNO is set if and only if !SCNO_IS_VALID |
| and since tcp->s_ent can only be set to &sysent[tcp->scno] |
| (or to &unknown, but only when !SCNO_IS_VALID), there is no need |
| to check for UNDEFINED_SCNO before calling syscall_name(tcp->scno). |
| |
| * defs.h (UNDEFINED_SCNO): Remove. |
| * syscall.c (get_scno, trace_syscall_entering, trace_syscall_exiting): |
| Remove checks for UNDEFINED_SCNO. |
| |
| 2016-06-14 Dmitry V. Levin <ldv@altlinux.org> |
| |
| tests/attach-f-p.c: fix typo in comment. |
| |
| 2016-06-14 Elvira Khabirova <lineprinter0@gmail.com> |
| |
| strace.c: fix style in function definition. |
| * strace.c (kill_save_errno): Move the type of return value |
| to another line. |
| |
| Turn on more compiler warnings. |
| * configure.ac (gl_WARN_ADD): Add -Wempty-body, -Wformat-security, |
| -Wignored-qualifiers, -Winit-self, -Wlogical-op, |
| -Wmissing-parameter-type, -Wnested-externs, -Wold-style-declaration, |
| -Wold-style-definition, -Wtype-limits. |
| |
| strace.c: fix a warning reported by -Wold-style-definition. |
| * strace.c (usage): Add void to the list of function argments. |
| |
| 2016-06-14 Dmitry V. Levin <ldv@altlinux.org> |
| |
| tests/ioctl_evdev.c: fix typo in comment. |
| |
| 2016-06-14 Elvira Khabirova <lineprinter0@gmail.com> |
| |
| Move printargs* functions to util.c. |
| * syscall.c (printargs, printargs_u, printargs_d): Move ... |
| * util.c: ... here. |
| |
| tests/xgetrlimit.c: fix a warning reported by -Wtype-limits. |
| * tests/xgetrlimit.c (sprint_rlim): Explicitly cast constants |
| to the type of argument. |
| |
| 2016-06-11 Dmitry V. Levin <ldv@altlinux.org> |
| |
| Consistently use printaddr for printing addresses. |
| * bjm.c (SYS_FUNC(init_module)): Use printaddr. |
| * clone.c (SYS_FUNC(clone)): Likewise. |
| * evdev.c (ff_effect_ioctl): Likewise. |
| * mtd.c (decode_mtd_oob_buf): Likewise. |
| * net.c (SYS_FUNC(sendmmsg), SYS_FUNC(recvmmsg), SYS_FUNC(getsockopt)): |
| Likewise. |
| * print_sigevent.c (print_sigevent): Likewise. |
| * printsiginfo.c (printsigval, print_si_info): Likewise. |
| * signal.c (decode_new_sigaction): Likewise. |
| * sysmips.c (SYS_FUNC(sysmips)): Likewise. |
| * util.c (printpathn, printstr, umoven_or_printaddr): Likewise. |
| * v4l2.c (print_v4l2_buffer, print_v4l2_framebuffer, |
| umoven_or_printaddr_ignore_syserror): Likewise. |
| * tests/net-icmp_filter.c (main): Update. |
| |
| Based on patch by Eugene Syromyatnikov <evgsyr@gmail.com>. |
| |
| 2016-06-10 Dmitry V. Levin <ldv@altlinux.org> |
| |
| tests/attach-p-cmd-p.c: cleanup. |
| * attach-p-cmd-p.c (handler): Move code ... |
| (main): ... here. Unblock SIGALRM only. |
| Use alarm() instead of setitimer(). |
| Replace endless loop with a pause() call. |
| Check that chdir() returns ENOENT. |
| |
| tests: enhance test coverage of SIGCHLD siginfo_t. |
| * tests/siginfo.c: New file. |
| * tests/siginfo.test: New test. |
| * tests/wait.c: Remove. |
| * tests/wait.expected: Remove. |
| * tests/wait.test: Remove. |
| * tests/.gitignore: Add siginfo, remove wait. |
| * tests/Makefile.am (check_PROGRAMS): Likewise. |
| (DECODER_TESTS): Add siginfo.test, remove wait.test. |
| (EXTRA_DIST): Remove wait.expected. |
| |
| tests: extend test coverage of waitid syscall. |
| * tests/waitid.c: New file. |
| * tests/waitid-v.c: Likewise. |
| * tests/waitid.test: New test. |
| * tests/waitid-v.test: Likewise. |
| * tests/.gitignore: Add waitid and waitid-v. |
| * tests/Makefile.am (check_PROGRAMS): Likewise. |
| (DECODER_TESTS): Add waitid.test and waitid-v.test. |
| |
| tests: extend test coverage of wait4 syscall. |
| * tests/wait4.c: New file. |
| * tests/wait4-v.c: Likewise. |
| * tests/wait4.test: New test. |
| * tests/wait4-v.test: Likewise. |
| * tests/.gitignore: Add wait4 and wait4-v. |
| * tests/Makefile.am (check_PROGRAMS): Likewise. |
| (DECODER_TESTS): Add wait4.test and wait4-v.test. |
| |
| tests: add widen_to_ull macro to tests.h. |
| * tests.h (widen_to_ull): New macro, copied from defs.h |
| |
| Fix sign extension issues in the parser of struct rusage. |
| * printrusage.c (printrusage): Do not cast members of struct rusage |
| to type long, use widen_to_ull instead. |
| |
| 2016-06-09 Dmitry V. Levin <ldv@altlinux.org> |
| |
| tests: check decoding of waitpid syscall. |
| * tests/waitpid.c: New file. |
| * tests/waitpid.test: New test. |
| * tests/.gitignore: Add waitpid. |
| * tests/Makefile.am (check_PROGRAMS): Likewise. |
| (DECODER_TESTS): Add waitpid.test. |
| |
| 2016-06-09 Fei Jie <feij.fnst@cn.fujitsu.com> |
| |
| tests: add strace-E.test. |
| * tests/strace-E.expected: New file. |
| * tests/strace-E.test: New test. |
| * tests/Makefile.am (MISC_TESTS): Add it. |
| (EXTRA_DIST): Add strace-E.expected. |
| |
| 2016-06-08 Dmitry V. Levin <ldv@altlinux.org> |
| |
| strace.spec.in: enable libunwind on more platforms. |
| * strace.spec.in: Add libunwind-devel to BuildRequires for RHEL8 family. |
| |
| 2016-06-08 Dmitry V. Levin <ldv@altlinux.org> |
| |
| make-dist: generate strace-*.tar.gz, strace.dsc, and strace.spec. |
| Change make-dist to generate strace-*.tar.gz, strace.dsc, |
| and strace.spec in addition to strace-*.tar.xz. |
| |
| * configure.ac (AM_INIT_AUTOMAKE): Remove no-dist-gzip. |
| * make-dsc: New file. |
| * make-dist: Use it. |
| * .gitignore: Add strace-*.tar.gz, strace.dsc, and strace.spec. |
| |
| 2016-06-08 Dmitry V. Levin <ldv@altlinux.org> |
| |
| Parametrize debian/changelog. |
| * configure.ac (CHANGELOGTIME): Rename to RPM_CHANGELOGTIME. |
| (DEB_CHANGELOGTIME): New variable. |
| (AC_CONFIG_FILES): Add debian/changelog. |
| * strace.spec.in: Rename CHANGELOGTIME to RPM_CHANGELOGTIME. |
| * debian/changelog: Rename to ... |
| * debian/changelog.in: ... this file. Add parametrized entry. |
| * debian/.gitignore: New file. |
| |
| git-version-gen: replace '-' with '.' in generated version. |
| * git-version-gen: Replace '-' with '.' so version conforms to policies |
| * configure.ac (SPEC_VERSION): Remove. |
| * strace.spec.in: Replace SPEC_VERSION with PACKAGE_VERSION. |
| Remove %srcname. |
| |
| 2016-06-07 Dmitry V. Levin <ldv@altlinux.org> |
| |
| Parametrize strace.spec. |
| * configure.ac (SPEC_VERSION, CHANGELOGTIME): Define. |
| (AC_CONFIG_FILES): Add strace.spec. |
| * strace.spec: Rename to ... |
| * strace.spec.in: ... this file. Parametrize Version, srcname, |
| and the last %changelog entry. Initialize .tarball-version file. |
| |
| strace.spec: adopt for OBS. |
| * strace.spec: Parametrize libunwind-devel BRs, BuildRoot, and %defattr. |
| |
| 2016-06-07 Dmitry V. Levin <ldv@altlinux.org> |
| |
| tests: remove obsolete strace-f.test. |
| strace-f.test is too inexact while fork-f.test does the right thing. |
| |
| * tests/strace-f.test: Remove. |
| * tests/Makefile.am (MISC_TESTS): Remove it. |
| * strace.spec (BuildRequires): Remove time. |
| |
| 2016-06-07 Dmitry V. Levin <ldv@altlinux.org> |
| |
| tests: always distribute strace-k.test. |
| Fix distribution of tests/strace-k.test file when configured |
| without libunwind. |
| |
| * tests/Makefile.am (EXTRA_DIST): Add strace-k.test. |
| |
| 2016-06-07 Dmitry V. Levin <ldv@altlinux.org> |
| |
| make-dist: skip news-check for non-releases. |
| * make-dist: Run news-check only when the commit being built |
| matches a release tag. |
| |
| 2016-06-06 Dmitry V. Levin <ldv@altlinux.org> |
| |
| tests: check decoding of setrlimit, getrlimit, and ugetrlimit syscalls. |
| * tests/getrlimit.c: New file. |
| * tests/setrlimit.c: Likewise. |
| * tests/ugetrlimit.c: Likewise. |
| * tests/xgetrlimit.c: Likewise. |
| * tests/getrlimit.test: New test. |
| * tests/setrlimit.test: Likewise. |
| * tests/ugetrlimit.test: Likewise. |
| * tests/.gitignore: Add getrlimit, setrlimit, and ugetrlimit. |
| * tests/Makefile.am (check_PROGRAMS): Likewise. |
| (DECODER_TESTS): Add getrlimit.test, setrlimit.test, |
| and ugetrlimit.test. |
| (EXTRA_DIST): Add xgetrlimit.c. |
| |
| tests: check decoding of prlimit64 syscall. |
| * tests/prlimit64.c: New file. |
| * tests/prlimit64.test: New test. |
| * tests/.gitignore: Add prlimit64. |
| * tests/Makefile.am (check_PROGRAMS): Likewise. |
| (DECODER_TESTS): Add prlimit64.test. |
| |
| Fix decoding of pid_t argument of prlimit64 syscall. |
| * resource.c (SYS_FUNC(prlimit64)): Print pid_t syscall |
| argument using %d format. |
| |
| 2016-06-06 Dmitry V. Levin <ldv@altlinux.org> |
| |
| Do not check for old sysctl enums. |
| Assume that sysctl enums defined since linux v2.6 are always defined, |
| with a signle exception: check for CTL_PROC which definition was removed |
| in v2.6.18 and restored later in v2.6.23. |
| |
| * configure.ac (AC_CHECK_DECLS): Remove old constants. |
| * xlat/sysctl_kern.in: Mark constants older than KERN_PRINTK_RATELIMIT |
| as unconditional. |
| * xlat/sysctl_net.in: Mark constants older than NET_LLC |
| as unconditional. |
| * xlat/sysctl_net_core.in: Mark constants older than NET_CORE_BUDGET |
| as unconditional. |
| * xlat/sysctl_net_ipv4.in: Mark constants older than |
| NET_IPV4_IGMP_MAX_MSF as unconditional. |
| * xlat/sysctl_net_ipv4_conf.in: Mark constants older than |
| NET_IPV4_CONF_FORCE_IGMP_VERSION as unconditional. |
| * xlat/sysctl_net_ipv4_route.in: Mark constants older than |
| NET_IPV4_ROUTE_GC_MIN_INTERVAL_MS as unconditional. |
| * xlat/sysctl_net_ipv6.in: Mark constants older than |
| NET_IPV6_MLD_MAX_MSF as unconditional. |
| * xlat/sysctl_net_ipv6_route.in: Mark constants older than |
| NET_IPV6_ROUTE_GC_MIN_INTERVAL_MS as unconditional. |
| * xlat/sysctl_net_unix.in: Mark all constants as unconditional. |
| * xlat/sysctl_root.in: Mark constants older than CTL_ARLAN |
| as unconditional. |
| * xlat/sysctl_vm.in: Mark constants older than VM_MAX_MAP_COUNT |
| as unconditional. |
| |
| 2016-06-06 Dmitry V. Levin <ldv@altlinux.org> |
| |
| xlat: extend syntax. |
| * xlat/gen.sh: Implement #conditional directive that turns on |
| preprocessor checks turned off earlier by #unconditional directive. |
| |
| 2016-06-06 Elvira Khabirova <lineprinter0@gmail.com> |
| |
| mpers.awk: remove unnecessary type attribute retrieval. |
| * mpers.awk (what_is): Do not retrieve "type" attribute |
| for "enumeration_type". |
| |
| tests/ptrace.c: fix fork() return value check. |
| * tests/ptrace.c (test_peeksiginfo): Explicitly cast fork() return value |
| to pid_t. |
| |
| .gitignore: add missing files that should be ignored. |
| * .gitignore: Add ioctl_redefs[12].h and libstrace.a. |
| |
| 2016-06-06 Dmitry V. Levin <ldv@altlinux.org> |
| |
| debian: sync with the package. |
| * debian/control (Build-Depends) [amd64]: Remove libunwind-dev. |
| * debian/changelog: Sync with 4.12-3. |
| * debian/rules: Likewise. |
| |
| 2016-06-06 Dmitry V. Levin <ldv@altlinux.org> |
| |
| tests/strace-S.test: fix testing 64-bit strace using a 32-bit userspace. |
| * tests/strace-S.test: Measure wall clock time instead of system time. |
| Use local "./readv" instead of system "date" as a sample executable. |
| |
| Reported-by: Steve McIntyre <steve@einval.com> |
| |
| 2016-06-06 Dmitry V. Levin <ldv@altlinux.org> |
| |
| tests/strace-S.test: enhance error diagnostics. |
| * tests/strace-S.test: If strace output does not meet expectations, |
| print the output. |
| |
| 2016-06-02 Dmitry V. Levin <ldv@altlinux.org> |
| |
| .gitignore: sort the list of ignored patterns. |
| * .gitignore: Sort. |
| |
| 2016-06-01 Dmitry V. Levin <ldv@altlinux.org> |
| |
| maint: post-release administrivia. |
| * NEWS: Add header line for the next release. |
| |
| 2016-05-31 Dmitry V. Levin <ldv@altlinux.org> |
| |
| Prepare for 4.12 release. |
| * NEWS: Update for 4.12 release. |
| * debian/changelog: 4.12-1. |
| * strace.spec: 4.12-1. |
| |
| Sync strace.spec and debian/changelog with packages. |
| * debian/changelog: Sync with 4.11-1. |
| * strace.spec: Sync with 4.11.0.163.9720-2. |
| |
| 2016-05-30 Dmitry V. Levin <ldv@altlinux.org> |
| |
| Mpersify hdio.c. |
| * defs.h (hdio_ioctl): Remove. |
| * hdio.c: Mpersify struct hd_geometry. |
| (hdio_ioctl): Mpersify. |
| |
| 2016-05-29 Dmitry V. Levin <ldv@altlinux.org> |
| |
| loop.c: decode LOOP_SET_DIRECT_IO. |
| * loop.c (loop_ioctl) [LOOP_SET_DIRECT_IO] : Handle LOOP_SET_DIRECT_IO. |
| |
| loop.c: fix printing of arrays. |
| * loop.c (decode_loop_info): Use square brackets to print |
| struct loop_info.lo_init and struct loop_info.reserved arrays. |
| (decode_loop_info64): Use square brackets to print |
| struct loop_info64.lo_init array. |
| |
| loop.c: fix printing of structure members' names. |
| * loop.c (decode_loop_info, decode_loop_info64): Do not strip "lo_" |
| prefix from printed names. |
| |
| loop.c: optimize decoding of paired ioctls. |
| * loop.c (loop_ioctl): Optimize decoding of LOOP_[GS]ET_STATUS |
| and LOOP_[GS]ET_STATUS64 ioctl pairs. |
| |
| 2016-05-28 Dmitry V. Levin <ldv@altlinux.org> |
| |
| tests/ioctl_evdev.c: check EVIOCGUNIQ decoding. |
| * tests/ioctl_evdev.c (main): Check EVIOCGUNIQ(0) decoding. |
| |
| tests/ioctl_mtd.c: fix build with musl. |
| * tests/ioctl_mtd.c: Include <linux/ioctl.h>. |
| |
| tests: check decoding of 'M' type ioctls. |
| * tests/ioctl_mtd.c: New file. |
| * tests/ioctl_mtd.test: New test. |
| * tests/.gitignore: Add ioctl_mtd. |
| * tests/Makefile.am (check_PROGRAMS): Likewise. |
| (DECODER_TESTS): Add ioctl_mtd.test. |
| |
| Mpersify mtd.c. |
| * defs.h (mtd_ioctl): Remove. |
| * mtd.c: Mpersify struct mtd_oob_buf and ioctl numbers. |
| (mtd_ioctl): Mpersify. |
| |
| mtd.c: refactor. |
| * mtd.c (mtd_ioctl): Move parsers of structures to separate functions. |
| |
| Move parser of UBI_* ioctls to a separate file. |
| * mtd.c (ubi_ioctl): Move to ... |
| * ubi.c: ... new file. |
| * Makefile.am (strace_SOURCES): Add it. |
| |
| tests: check decoding of EVIOC* ioctls. |
| * tests/ioctl_evdev.c: New file. |
| * tests/ioctl_evdev-v.c: Likewise. |
| * tests/ioctl_evdev.test: New test. |
| * tests/ioctl_evdev-v.test: Likewise. |
| * tests/.gitignore: Add ioctl_evdev and ioctl_evdev-v. |
| * tests/Makefile.am (check_PROGRAMS): Likewise. |
| (DECODER_TESTS): Add ioctl_evdev.test and ioctl_evdev-v.test. |
| |
| Mpersify EVIOC* ioctl parser. |
| * defs.h (evdev_abs): New xlat prototype. |
| (evdev_ioctl): Remove. |
| * evdev.c: Do not include "xlat/evdev_abs.h". |
| Mpersify struct ff_effect and ioctl numbers. |
| (evdev_ioctl): Mpersify. |
| * NEWS: Mention this enhancement. |
| |
| evdev.c: fix printing of unrecognized event type passed to EVIOCGBIT. |
| * evdev.c (bit_ioctl): If event type is not unrecognized, |
| print the argument as an address. |
| |
| evdev.c: fix printing of EV_PWR's argument. |
| * evdev.c (bit_ioctl): Fix printing of comma before EV_PWR's argument. |
| |
| evdev.c: fix indentation. |
| * evdev.c: Fix indentation of print formats. |
| |
| evdev.c: fix decoding of EVIOCGNAME, EVIOCGPHYS, and EVIOCGUNIQ. |
| * evdev.c (evdev_read_ioctl): Fix printing of the string returned |
| in response to EVIOCGNAME, EVIOCGPHYS, and EVIOCGUNIQ requests. |
| |
| evdev.c: fix EVIOCGVERSION decoding. |
| * evdev.c (evdev_read_ioctl): Print EVIOCGVERSION's argument |
| using #x format. |
| |
| evdev.c: fix EVIOCGMTSLOTS decoding. |
| * evdev.c (mtslots_ioctl): Use umove_or_printaddr. |
| |
| evdev.c: fix bitset decoding. |
| * evdev.c (decode_bitset): Use umove_or_printaddr. |
| |
| evdev.c: fix decoding of struct input_id. |
| * evdev.c (getid_ioctl): Use umove_or_printaddr. |
| |
| evdev.c: fix decoding of struct input_keymap_entry. |
| * evdev.c (keycode_V2_ioctl): Use umove_or_printaddr. |
| |
| evdev.c: fix decoding of EVIOCGKEYCODE/EVIOCSKEYCODE. |
| * evdev.c (keycode_ioctl): Use umove_or_printaddr. |
| |
| evdev.c: fix decoding of struct input_absinfo. |
| * evdev.c (abs_ioctl): Use umove_or_printaddr. |
| |
| evdev.c: fix decoding of struct ff_effect. |
| * evdev.c (ff_effect_ioctl): Use umove_or_printaddr. |
| Fix printing of struct ff_effect.u member names. |
| |
| evdev.c: fix printing of struct ff_envelope.fade_level. |
| * evdev.c (decode_envelope): Print struct ff_envelope.fade_level |
| using #x format. |
| |
| evdev.c: fix decoding of EVIOCGRAB and EVIOCREVOKE. |
| * evdev.c (evdev_write_ioctl): Print argument of EVIOCGRAB |
| and EVIOCREVOKE as unsigned long. |
| |
| evdev.c: fix EVIOCRMFF decoding. |
| * evdev.c (evdev_write_ioctl): Print EVIOCRMFF's argument as int. |
| |
| evdev.c: move handling of EVIOCGBIT to a separate function. |
| * evdev.c (evdev_read_ioctl): Move EVIOCGBIT handling to ... |
| (bit_ioctl): ... new function. |
| |
| 2016-05-28 Dmitry V. Levin <ldv@altlinux.org> |
| |
| evdev.c: reorder ioctl command checks. |
| Change the order of ioctl command cheks to match the kernel: |
| 1st, check for fixed-number fixed-length commands, |
| 2nd, check for fixed-number variable-length commands, |
| 3rd, check for multi-number fixed-length commands, |
| 4thm check for multi-number variable-length commands. |
| |
| * evdev.c (evdev_read_ioctl, evdev_write_ioctl): Reorder |
| ioctl command checks. |
| |
| 2016-05-28 Dmitry V. Levin <ldv@altlinux.org> |
| |
| evdev.c: decode all directions except _IOC_READ on entering syscall. |
| * evdev.c (evdev_write_ioctl): Remove exiting check. |
| (evdev_read_ioctl): Move entering check ... |
| (evdev_ioctl): ... here. Add RVAL_DECODED to return code in _IOC_WRITE |
| and default cases. |
| |
| evdev.c: fix indentation of preprocessor directives. |
| * evdev.c: Fix indentation of preprocessor directives. |
| Move inclusion of <linux/ioctl.h> into [HAVE_LINUX_INPUT_H]. |
| |
| 2016-05-28 Jeff Mahoney <jeffm@suse.com> |
| |
| file_ioctl.c: print first two extents for FIDEDUPERANGE in abbrev mode. |
| * file_ioctl.c (file_ioctl, print_file_dedupe_range_info): Print first |
| two elements of info array in abbrev mode. |
| * tests/btrfs.c (btrfs_test_extent_same_ioctl): Handle newly |
| printed elements. |
| |
| 2016-05-27 Dmitry V. Levin <ldv@altlinux.org> |
| |
| ioctl.c: fix typo in decoding of EVIOCSABS's parameter. |
| * ioctl.c (evdev_decode_number): Fix typo in printxval default value. |
| |
| 2016-05-27 Jeff Mahoney <jeffm@suse.com> |
| |
| tests: check decoding of btrfs RDWR ioctls returned data. |
| * tests/btrfs-vw.test: New file. |
| * tests/btrfs-w.test: New file. |
| * tests/Makefile.am (DECODER_TESTS): Add them. |
| |
| tests/btrfs.c: fix live btrfs_test_search_ioctls output. |
| * tests/btrfs.c (btrfs_test_search_ioctls): Use print_tree_search_buf |
| for BTRFS_IOC_TREE_SEARCH and fix missing whitespace. |
| |
| btrfs.c: don't use print_array in btrfs_print_tree_search. |
| * btrfs.c (btrfs_print_tree_search): Don't use print_array. The buffer |
| represents a series of variable sized records, not an array. |
| |
| btrfs.c: fix print_array usage in btrfs_print_logical_ino_container. |
| * btrfs.c: (btrfs_print_logical_ino_container) Fix the element count |
| to reflect the number of records rather than the number of items. |
| |
| 2016-05-26 Jeff Mahoney <jeffm@suse.com> |
| |
| tests/btrfs.c: fix btrfs-v for BTRFS_IOC_TREE_SEARCH. |
| * tests/btrfs.c (btrfs_test_send_ioctl): Assign key_reference |
| to search_args for BTRFS_IOC_TREE_SEARCH ioctl tests. |
| |
| 2016-05-26 Fabien Siron <fabien.siron@epita.fr> |
| |
| Fix -yy documentation. |
| * strace.c (usage): Fix description of -yy option. |
| * strace.1: Likewise. |
| |
| 2016-05-26 Dmitry V. Levin <ldv@altlinux.org> |
| |
| tests/ioctl_block.c: tweak magic constants to make the test more reliable |
| * tests/ioctl_block.c (main): Change bad pointer to make |
| its lower 32-bit part closer to -1U. |
| |
| tests/btrfs.c: check basic decoding of read-only ioctls. |
| * tests/btrfs.c (btrfs_test_read_ioctls): New function. |
| (main): Use it. |
| |
| tests: check decoding of BLK* ioctls. |
| * configure.ac (AC_CHECK_TYPES): Add struct blk_user_trace_setup. |
| * tests/ioctl_block.c: New file. |
| * tests/ioctl_block.test: New test. |
| * tests/.gitignore: Add ioctl_block. |
| * tests/Makefile.am (check_PROGRAMS): Likewise. |
| (DECODER_TESTS): Add ioctl_block.test. |
| |
| Mpersify BLK* ioctl parser. |
| * defs.h (block_ioctl): Remove. |
| * block.c: Mpersify struct blk_user_trace_setup, |
| struct blkpg_ioctl_arg, struct blkpg_partition, and ioctl numbers. |
| (block_ioctl): Mpersify. |
| * NEWS: Mention this enhancement. |
| |
| block.c: optimize decoding of paired ioctls. |
| * block.c (block_ioctl): Optimize decoding of commands that return |
| a signed int. |
| |
| block.c: fix printing of uint64_t pairs. |
| * block.c (block_ioctl): Print uint64_t values using PRIu64 format. |
| |
| block.c: fix printing of struct blk_user_trace_setup. |
| * block.c (block_ioctl): Fix printing of comma before |
| struct blk_user_trace_setup.name on exiting syscall. |
| |
| Move parser of 'X' type ioctls to a separate file. |
| * fs_x_ioctl.c: New file. |
| * Makefile.am (strace_SOURCES): Add it. |
| * block.c: (block_ioctl): Move parser of FITRIM, FIFREEZE, and FITHAW |
| to fs_x_ioctl.c. |
| * defs.h (fs_x_ioctl): New prototype. |
| * ioctl.c (ioctl_decode): Call fs_x_ioctl for ioctl type 'X'. |
| |
| Move parser of HDIO_* ioctls to a separate file. |
| * hdio.c: New file. |
| * Makefile.am (strace_SOURCES): Add it. |
| * block.c: Do not include <linux/hdreg.h>. |
| (block_ioctl): Move parser of HDIO_GETGEO to hdio.c. |
| * defs.h (hdio_ioctl): New prototype. |
| * ioctl.c (ioctl_decode): Call hdio_ioctl for ioctl type 0x03. |
| |
| Fix explicit casts of signed integer types to unsigned long long. |
| * defs.h (widen_to_ull): New macro. |
| * dirent.c (print_old_dirent, SYS_FUNC(getdents)): Use it in place |
| of explicit casts to unsigned long long. |
| * io.c (print_lld_from_low_high_val): Likewise. |
| * lseek.c (SYS_FUNC(llseek)): Likewise. |
| * printsiginfo.c (print_si_info): Likewise. |
| * printstat.h (DO_PRINTSTAT): Likewise. |
| * sysinfo.c (SYS_FUNC(sysinfo)): Likewise. |
| * times.c (SYS_FUNC(times)): Likewise. |
| * fetch_struct_statfs.c (ASSIGN_NUMBER): Remove. |
| (fetch_struct_statfs, fetch_struct_statfs64): Replace ASSIGN_NUMBER |
| with widen_to_ull. |
| |
| scsi.c: print __u64 types using PRI__u64 format. |
| * scsi.c (print_sg_io_v4_req, print_sg_io_v4_res): Remove explicit casts |
| to unsigned long long, print fields of type __u64 using PRI__u64 format. |
| |
| 2016-05-25 Dmitry V. Levin <ldv@altlinux.org> |
| |
| tests: check decoding of RTC_* ioctls. |
| * configure.ac (AC_CHECK_FUNCS): Add ioctl_rtc. |
| * tests/ioctl_rtc.c: New file. |
| * tests/ioctl_rtc-v.c: Likewise. |
| * tests/ioctl_rtc.test: New test. |
| * tests/ioctl_rtc-v.test: Likewise. |
| * tests/.gitignore: Add ioctl_rtc and ioctl_rtc-v. |
| * tests/Makefile.am (check_PROGRAMS): Likewise. |
| (DECODER_TESTS): Add ioctl_rtc.test and ioctl_rtc-v.test. |
| |
| Mpersify RTC_* ioctl parser. |
| * defs.h (rtc_ioctl): Remove. |
| * rtc.c: Mpersify struct rtc_pll_info and ioctl numbers. |
| (rtc_ioctl): Mpersify. |
| * NEWS: Mention this enhancement. |
| |
| rtc.c: fix decoding of struct rtc_wkalrm. |
| * rtc.c (decode_rtc_wkalrm): Print field name of struct rtc_wkalrm.time. |
| |
| file_ioctl.c: print file descriptors using printfd. |
| * file_ioctl.c (print_file_dedupe_range_info): Print |
| struct file_dedupe_range_info.dest_fd using printfd. |
| (file_ioctl): Print struct file_clone_range.src_fd using printfd. |
| |
| rtc.c: do not print argument of ioctls that have no arguments. |
| * rtc.c (rtc_ioctl): Do not print argument of RTC_{A,U,P,W}IE_{ON,OFF} |
| and RTC_VL_CLR ioctls. |
| |
| rtc.c: decode RTC_PLL_GET and RTC_PLL_SET. |
| * rtc.c (rtc_ioctl): Decode RTC_PLL_GET and RTC_PLL_SET |
| |
| rtc.c: optimize decoding of paired ioctls. |
| * rtc.c (rtc_ioctl): Optimize decoding of RTC_ALM_READ/RTC_ALM_SET, |
| RTC_RD_TIME/RTC_SET_TIME, and RTC_WKALM_RD/RTC_WKALM_SET ioctl pairs. |
| |
| block.c: handle BLKDAXGET. |
| * block.c [!BLKDAXGET] (BLKDAXGET): Define. |
| (block_ioctl): Handle it. |
| |
| tests: check decoding of mount syscall. |
| * tests/mount.c: New file. |
| * tests/mount.test: New test. |
| * tests/.gitignore: Add mount. |
| * tests/Makefile.am (check_PROGRAMS): Likewise. |
| (DECODER_TESTS): Add mount. |
| |
| 2016-05-24 Dmitry V. Levin <ldv@altlinux.org> |
| |
| tests/vhangup.c: diassociate from the controlling terminal first. |
| * tests/vhangup.c (main): Call setsid before vhangup. |
| |
| 2016-05-24 Fei Jie <feij.fnst@cn.fujitsu.com> |
| |
| tests: add vhangup.test. |
| * tests/vhangup.c: New file. |
| * tests/vhangup.test: New test. |
| * tests/.gitignore: Add vhangup. |
| * tests/Makefile.am (check_PROGRAMS): Likewise. |
| (DECODER_TESTS): Add vhangup.test. |
| |
| 2016-05-24 Dmitry V. Levin <ldv@altlinux.org> |
| |
| NEWS: Prepare for 4.12 release. |
| |
| 2016-05-24 Gleb Fotengauer-Malinovskiy <glebfm@altlinux.org> |
| |
| tests/btrfs.c: fix build on x32. |
| * tests/btrfs.c (btrfs_test_ino_path_ioctls): Fix printing of st_ino. |
| |
| 2016-05-24 Dmitry V. Levin <ldv@altlinux.org> |
| |
| tests/btrfs.c: fix build with u64 based BTRFS_IOC_DEFAULT_SUBVOL. |
| * tests/btrfs.c: Fix build on systems where BTRFS_IOC_DEFAULT_SUBVOL |
| is defined using unexported type "u64". |
| |
| btrfs.c: fix build on systems without BTRFS_IOC_FILE_EXTENT_SAME. |
| * btrfs.c (btrfs_ioctl): Skip BTRFS_IOC_FILE_EXTENT_SAME case |
| if this constant is not defined. |
| * tests/btrfs.c (btrfs_test_extent_same_ioctl): Skip this part |
| of the test if BTRFS_IOC_FILE_EXTENT_SAME is not defined. |
| |
| tests/btrfs.c: fix printing struct btrfs_ioctl_clone_range_args. |
| * tests/btrfs.c (btrfs_test_clone_ioctls): Print __u64 members |
| of struct btrfs_ioctl_clone_range_args using PRI__u64 format. |
| |
| tests/btrfs.c: tweak magic constants to make the test more reliable. |
| * tests/btrfs.c (btrfs_test_sync_ioctls): Change u64val |
| to 0xdeadbeefbadc0ded. |
| (btrfs_test_subvol_ioctls): Likewise. Change bad_pointer |
| to make their lower 32-bit parts closer to -1U. |
| |
| btrfs.c: print file descriptors using printfd. |
| * btrfs.c (btrfs_ioctl): Print struct btrfs_ioctl_send_args.send_fd, |
| struct btrfs_ioctl_vol_args.fd, and struct btrfs_ioctl_vol_args_v2.fd |
| using printfd. |
| * tests/btrfs.c (btrfs_print_vol_args_v2, btrfs_test_subvol_ioctls, |
| btrfs_test_device_ioctls, btrfs_test_clone_ioctls, |
| btrfs_test_send_ioctl): Update. |
| |
| tests/btrfs.c: do not print errno in case of fs type mismatch. |
| * tests/btrfs.c (main): Use error_msg_and_fail instead of |
| perror_msg_and_fail when the fs type of the given directory |
| is not BTRFS_SUPER_MAGIC. |
| |
| tests/btrfs.c: fix indentation. |
| * tests/btrfs.c: Fix indentation of preprocessor directives |
| and function prototypes. |
| |
| tests/btrfs.c: sort included headers. |
| * tests/btrfs.c: Sort included headers. |
| |
| tests/btrfs.c: do not use alloca. |
| * tests/btrfs.c: Don't include <alloca.h>. |
| (btrfs_test_subvol_ioctls): Allocate |
| struct btrfs_ioctl_vol_args_v2.qgroup_inherit using tail_alloc. |
| |
| tests/btrfs.c: fix build on systems without <linux/btrfs.h> or <linux/fiemap.h> |
| * tests/btrfs.c: Include "tests.h" first. |
| Skip the test if [!HAVE_LINUX_BTRFS_H]. Skip parts of the test |
| that use struct fiemap if [!HAVE_LINUX_FIEMAP_H]. |
| |
| 2016-05-24 Jeff Mahoney <jeffm@suse.com> |
| |
| tests: add testing for btrfs ioctls. |
| * tests/btrfs.c: New file. |
| * tests/btrfs.test: New test. |
| * tests/btrfs-v.test: Likewise. |
| * tests/.gitignore: Add btrfs. |
| * tests/Makefile.am (check_PROGRAMS): Likewise. |
| (DECODER_TESTS): Add btrfs.test and btrfs-v.test. |
| |
| 2016-05-24 Dmitry V. Levin <ldv@altlinux.org> |
| |
| tests/file_ioctl.c: use tail_alloc. |
| * tests/file_ioctl.c (main): Allocate struct fiemap using tail_alloc. |
| |
| tests/file_ioctl.c: fix build on systems without <linux/fiemap.h> |
| * tests/file_ioctl.c: Include "tests.h" first. |
| Skip the test if [!HAVE_LINUX_FIEMAP_H]. |
| |
| 2016-05-24 Jeff Mahoney <jeffm@suse.com> |
| |
| tests: add testing for FS_IOC_FIEMAP. |
| This is limited to FIEMAP. FICLONE* and FIDEDUPERANGE originated in |
| btrfs and will be tested there. |
| |
| * tests/file_ioctl.c: New file. |
| * tests/file_ioctl.test: New test. |
| * tests/.gitignore: Add file_ioctl. |
| * tests/Makefile.am (check_PROGRAMS): Likewise. |
| (DECODER_TESTS): Add file_ioctl.test. |
| |
| 2016-05-24 Dmitry V. Levin <ldv@altlinux.org> |
| |
| Mpersify btrfs.c. |
| * btrfs.c: Mpersify 3 arch-specific structures |
| and corresponding ioctl numbers. |
| (btrfs_ioctl): Mpersify. |
| * defs.h (btrfs_ioctl): Remove. |
| |
| btrfs.c: use print_array. |
| * btrfs.c (print_btrfs_data_container_logical_ino, |
| print_btrfs_data_container_ino_path, print_uint64, |
| print_btrfs_ioctl_search_header, print_objectid_callback, |
| print_btrfs_ioctl_space_info): New functions. |
| (btrfs_print_logical_ino_container, btrfs_print_ino_path_container): |
| Rewrite printers of struct btrfs_data_container.val array |
| using print_array. |
| (btrfs_print_qgroup_inherit): Rewrite printer of |
| struct btrfs_qgroup_inherit.qgroups array using print_array. |
| (btrfs_print_tree_search): Rewrite printer of |
| struct btrfs_ioctl_search_header array using print_array. |
| (btrfs_ioctl): Rewrite printer of |
| struct btrfs_ioctl_send_args.clone_sources and |
| struct btrfs_ioctl_space_args.spaces using print_array. |
| |
| btrfs.c: simplify BTRFS_IOC_GET_FSLABEL parser. |
| * btrfs.c (btrfs_ioctl): Share code of parser of BTRFS_IOC_SET_FSLABEL |
| with parser of BTRFS_IOC_GET_FSLABEL only on BTRFS_IOC_GET_FSLABEL's |
| entering. |
| |
| btrfs.c: fix BTRFS_IOC_TREE_SEARCH_V2 output. |
| * btrfs.c (btrfs_ioctl): Fix BTRFS_IOC_TREE_SEARCH_V2 output |
| in case of EOVERFLOW and failed umove. |
| |
| btrfs.c: cleanup use of tcp->auxstr. |
| * btrfs.c (btrfs_ioctl): Reset tcp->auxstr only if it is set. |
| |
| btrfs.c: cleanup struct btrfs_ioctl_get_dev_stats.nr_items check. |
| * btrfs.c (btrfs_ioctl): Cleanup check of iterator of |
| btrfs_ioctl_get_dev_stats.values array. |
| |
| btrfs.c: do not use BTRFS_SUBVOL_NAME_MAX. |
| * btrfs.c [BTRFS_SUBVOL_NAME_MAX]: Remove. |
| (btrfs_ioctl): Use sizeof(struct btrfs_ioctl_vol_args_v2.name) |
| instead of BTRFS_SUBVOL_NAME_MAX + 1. |
| |
| btrfs.c: mark some function arguments as const. |
| * btrfs.c (btrfs_print_balance_args, btrfs_print_features, |
| btrfs_print_qgroup_limit, btrfs_print_data_container_header, |
| btrfs_print_logical_ino_container, btrfs_print_ino_path_container, |
| btrfs_print_qgroup_inherit): Mark some function arguments as const. |
| |
| btrfs.c: use umove instead of umoven. |
| * btrfs.c: Use umove instead of umoven and umove_or_printaddr |
| instead of umoven_or_printaddr. |
| |
| btrfs.c: remove unused variable. |
| * btrfs.c (btrfs_ioctl): Remove "ret" variable. |
| |
| btrfs.c: use printxval/printxval64 instead of printxvals. |
| * btrfs.c (btrfs_ioctl): Do not call printxvals directly, |
| use printxval/printxval64 wrappers that do the right thing. |
| |
| btrfs.c: fix indentation. |
| * btrfs.c: Fix indentation of preprocessor directives and print formats. |
| |
| xlat/btrfs_dev_stats_values.in: cleanup. |
| * xlat/btrfs_dev_stats_values.in: Remove HAVE_DECL_* defines, |
| use #unconditional instead. |
| |
| file_ioctl.c: use print_array. |
| * file_ioctl.c (file_ioctl): Rewrite printers of |
| struct file_dedupe_range_info and struct fiemap_extent arrays |
| using print_array. |
| |
| file_ioctl.c: fix indentation. |
| * file_ioctl.c: Fix indentation of preprocessor directives |
| and print formats. |
| |
| 2016-05-24 Dmitry V. Levin <ldv@altlinux.org> |
| |
| file_ioctl.c: include <linux/ioctl.h> instead of <sys/ioctl.h> |
| Being a wrapper around <linux/ioctl.h>, <sys/ioctl.h> brings |
| no benefits for this parser. |
| |
| * file_ioctl.c: Include <linux/ioctl.h> instead of <sys/ioctl.h>. |
| |
| 2016-05-24 Dmitry V. Levin <ldv@altlinux.org> |
| |
| file_ioctl.c: fix build on systems without <linux/fiemap.h> |
| * configure.ac (AC_CHECK_HEADERS): Add linux/fiemap.h. |
| * file_ioctl.c: Do not include <linux/fiemap.h> and xlat/fiemap_*.h |
| if [!HAVE_LINUX_FIEMAP_H]. |
| (file_ioctl): Do not parse FS_IOC_FIEMAP if [!HAVE_LINUX_FIEMAP_H]. |
| |
| ioctl.c: fix build. |
| * ioctl.c (ioctl_decode): Move definition of "ret" variable |
| to [ALPHA || POWERPC] case. |
| [ALPHA || POWERPC]: Fix syntax error. |
| |
| 2016-05-24 Jeff Mahoney <jeffm@suse.com> |
| |
| ioctl: add decoding for FS_IOC_FIEMAP. |
| * file_ioctl.c: Include <linux/fiemap.h>, "xlat/fiemap_flags.h", |
| and "xlat/fiemap_extent_flags.h". |
| (file_ioctl): Handle FS_IOC_FIEMAP. |
| * ioctl.c (ioctl_decode): Use file_ioctl for decoding 'f' code ioctls. |
| |
| 2016-05-24 Dmitry V. Levin <ldv@altlinux.org> |
| |
| Add xlat/fiemap_flags.in and xlat/fiemap_extent_flags.in. |
| * xlat/fiemap_flags.in: New file. |
| * xlat/fiemap_extent_flags.in: Likewise. |
| |
| 2016-05-24 Jeff Mahoney <jeffm@suse.com> |
| |
| ioctl: add decoding support for btrfs ioctls. |
| * btrfs.c: New file. |
| * file_ioctl.c: Likewise. |
| * Makefile.am (strace_SOURCES): Add them. |
| * configure.ac (AC_CHECK_HEADERS): Add linux/btrfs.h. |
| (AC_CHECK_MEMBERS): Add struct btrfs_ioctl_feature_flags.compat_flags, |
| struct btrfs_ioctl_fs_info_args.nodesize, |
| struct btrfs_ioctl_defrag_range_args.start, |
| and struct btrfs_ioctl_search_args_v2.buf_size. |
| (AC_CHECK_DECLS): Add BTRFS_COMPRESS_* enums. |
| * defs.h (btrfs_ioctl, file_ioctl): New prototypes. |
| * ioctl.c (ioctl_decode) [HAVE_LINUX_BTRFS_H]: Use btrfs_ioctl. |
| * xlat/btrfs_balance_args.in: New file. |
| * xlat/btrfs_balance_ctl_cmds.in: Likewise. |
| * xlat/btrfs_balance_flags.in: Likewise. |
| * xlat/btrfs_balance_state.in: Likewise. |
| * xlat/btrfs_compress_types.in: Likewise. |
| * xlat/btrfs_defrag_flags.in: Likewise. |
| * xlat/btrfs_dev_replace_cmds.in: Likewise. |
| * xlat/btrfs_dev_replace_results.in: Likewise. |
| * xlat/btrfs_dev_replace_state.in: Likewise. |
| * xlat/btrfs_dev_stats_flags.in: Likewise. |
| * xlat/btrfs_dev_stats_values.in: Likewise. |
| * xlat/btrfs_features_compat.in: Likewise. |
| * xlat/btrfs_features_compat_ro.in: Likewise. |
| * xlat/btrfs_features_incompat.in: Likewise. |
| * xlat/btrfs_key_types.in: Likewise. |
| * xlat/btrfs_qgroup_ctl_cmds.in: Likewise. |
| * xlat/btrfs_qgroup_inherit_flags.in: Likewise. |
| * xlat/btrfs_qgroup_limit_flags.in: Likewise. |
| * xlat/btrfs_qgroup_status_flags.in: Likewise. |
| * xlat/btrfs_scrub_flags.in: Likewise. |
| * xlat/btrfs_send_flags.in: Likewise. |
| * xlat/btrfs_snap_flags_v2.in: Likewise. |
| * xlat/btrfs_space_info_flags.in: Likewise. |
| * xlat/btrfs_tree_objectids.in: Likewise. |
| |
| 2016-05-24 Gleb Fotengauer-Malinovskiy <glebfm@altlinux.org> |
| |
| x32: update ioctl entries from linux 4.6. |
| * linux/x32/ioctls_inc0.h: Update from linux v4.6 using ioctls_gen.sh. |
| |
| 2016-05-24 Dmitry V. Levin <ldv@altlinux.org> |
| |
| tests/attach-f-p.c: sleep a bit more to let the tracer catch up. |
| On noticeably lagging systems, the parent process may invoke its chdir |
| call before the tracer gets notified about completion of its last child |
| process. Add extra sleep in the parent process to win the race. |
| |
| * tests/attach-f-p.c (main): Change timerid into a static array. |
| Arm a timer in the parent process and wait for it. |
| |
| 2016-05-23 Dmitry V. Levin <ldv@altlinux.org> |
| |
| tests/attach-p-cmd-cmd.c: fix potential errno clobbering. |
| * tests/attach-p-cmd-cmd.c (main): Call getpid before chdir. |
| |
| tests/net-yy-netlink.c: robustify against libc specific issues. |
| * tests/net-yy-netlink.c (main): Use getsockname instead of recvmsg |
| as the latter has notible implementation differences that make |
| the test unreliable. |
| |
| tests/net-yy-netlink.c: robustify against os specific issues. |
| * tests/net-yy-netlink.c (main): Pass a pointer to a real struct msghdr |
| as NULL doesn't work well on some systems. |
| |
| tests/net-yy-{inet,netlink}.test: cleanup. |
| * tests/net-yy-inet.test: Do not pass arguments to net-yy-inet |
| as the latter does not accept them. |
| * tests/net-yy-netlink.test: Do not pass arguments to net-yy-netlink |
| as the latter does not accept them. |
| |
| 2016-05-22 Jeff Mahoney <jeffm@suse.com> |
| |
| tests: define PRI__[dux]64 macros to print __s64 and __u64 values. |
| Rather than cast every __u64 or __s64 before printing, |
| define printing helpers for those types directly. |
| |
| This complements commit 1f3482bedad505a41caf1d61b3a4e7e09a2f4330. |
| |
| * tests/tests.h (PRI__d64, PRI__u64, PRI__x64): New macros. |
| |
| 2016-05-22 Dmitry V. Levin <ldv@altlinux.org> |
| |
| tests: remove manual creation of memory mapping holes. |
| We used to call tail_alloc(1) to create memory mapping holes around |
| regular tail_alloc allocations. This is no longer needed since regular |
| tail_alloc allocations create additional memory mapping holes. |
| |
| * tests/clock_adjtime.c (main): Remove creation of memory mapping holes |
| using tail_alloc(1). |
| * tests/futimesat.c (main): Likewise. |
| * tests/get_mempolicy.c (print_nodes, main): Likewise. |
| * tests/getgroups.c (main): Likewise. |
| * tests/getresugid.c (main): Likewise. |
| * tests/ioctl_uffdio.c (main): Likewise. |
| * tests/ioctl_v4l2.c (main): Likewise. |
| * tests/move_pages.c (main): Likewise. |
| * tests/net-icmp_filter.c (main): Likewise. |
| * tests/ptrace.c (test_peeksiginfo, main): Likewise. |
| * tests/pwritev.c (main): Likewise. |
| * tests/set_mempolicy.c (print_nodes): Likewise. |
| * tests/setgroups.c (main): Likewise. |
| * tests/umovestr3.c (main): Likewise. |
| * tests/utimes.c (main): Likewise. |
| * tests/xattr.c (main): Likewise. |
| |
| 2016-05-22 Dmitry V. Levin <ldv@altlinux.org> |
| |
| tests: make tail_alloc create additional memory mapping holes. |
| * tests/tail_alloc.c (tail_alloc): Create additional memory mapping |
| holes before and after the allocated memory. |
| |
| 2016-05-21 Dmitry V. Levin <ldv@altlinux.org> |
| |
| mpers: add support of conditionally compiled printers. |
| We used to declare and define all printers marked with |
| MPERS_PRINTER_DECL, including ifdef'ed ones. That approach left us |
| no way to conditionally compile mpersified printers, which was not |
| a problem until btrfs ioctls appeared on the horizon. |
| |
| With this change, those mpersified printers that are not going |
| to be compiled are also won't be declared and won't be added to |
| struct_printers. |
| |
| This is implemented by filtering all source files containing |
| MPERS_PRINTER_DECL markers through CPP. As a nice side effect, this |
| also lifts an ugly requirement of writing all MPERS_PRINTER_DECL |
| declarations in a single line. |
| |
| * README-mpers: Update description of MPERS_PRINTER_DECL syntax. |
| * defs.h [IN_MPERS_BOOTSTRAP] (MPERS_PRINTER_DECL): Turn into |
| a recursive variadic macro. |
| [!IN_MPERS_BOOTSTRAP] (MPERS_PRINTER_DECL): Turn into a variadic macro. |
| All callers changed. |
| * Makefile.am (mpers_preproc_files, mpers_printer_decl_pattern): |
| New variables. |
| (CLEANFILES): Add $(mpers_preproc_files). |
| (%.c.mpers.i): New rule. |
| (printers.h, %_printer_decls.h, %_printer_defs.h): Use |
| mpers_preproc_files instead of srcdir_mpers_source_files, |
| use mpers_printer_decl_pattern. |
| * .gitignore: Add /*.mpers.i. |
| |
| 2016-05-20 Dmitry V. Levin <ldv@altlinux.org> |
| |
| Remove redundant declaration of v4l2_ioctl. |
| There is no need to declare mpers printers in defs.h because |
| they are already declared in printers.h or native_printer_decls.h. |
| |
| This complements commit 1e56814f77594a22a74ddee629639eb0bb7edf3a. |
| |
| * defs.h (v4l2_ioctl): Remove. |
| |
| 2016-05-21 Dmitry V. Levin <ldv@altlinux.org> |
| |
| Fix one more code pattern that might break gcc strict aliasing rules. |
| * socketutils.c (receive_responses): Turn static buffer into a union |
| to avoid breaking of gcc strict aliasing rules. |
| * tests/netlink_inet_diag.c (check_responses): Likewise. |
| * tests/netlink_netlink_diag.c (check_responses): Likewise. |
| * tests/netlink_unix_diag.c (check_responses): Likewise. |
| |
| 2016-05-21 Fabien Siron <fabien.siron@epita.fr> |
| |
| tests: add check for netlink protocol decoding with -yy option. |
| * tests/netlink_netlink_diag.c: New file. |
| * tests/net-yy-netlink.c: New file. |
| * tests/net-yy-netlink.test: New test. |
| * tests/.gitignore: Add net-yy-netlink and netlink_netlink_diag |
| * tests/Makefile.am (check_PROGRAMS): Likewise. |
| (TESTS): Add net-yy-netlink.test. |
| |
| 2016-05-18 Fabien Siron <fabien.siron@epita.fr> |
| |
| Add netlink domain sockets support to socketutils. |
| * linux/netlink_diag.h: New file. |
| * Makefile.am (EXTRA_DIST): Add it. |
| * socketutils.c: Include it and "xlat/netlink_protocols.h". |
| (netlink_send_query, netlink_parse_response, netlink_print): New |
| functions. |
| (print_sockaddr_by_inode): Hook up netlink_print. |
| |
| 2016-05-18 Dmitry V. Levin <ldv@altlinux.org> |
| |
| tests/pread64-pwrite64.c: robustify against os specific issues. |
| Do not assume that pwrite64 syscall fails when only part of the |
| specified memory buffer is accessible. With some kernels, one |
| accessible byte at the end of page is enough for pwrite64 syscall |
| to return 1. |
| |
| * tests/pread64-pwrite64.c (main): Tweak the test that can lead |
| to a partial write. |
| |
| 2016-05-18 Dmitry V. Levin <ldv@altlinux.org> |
| |
| tests/read-write.c: robustify against os specific issues. |
| Do not assume that write syscall fails when only part of the specified |
| memory buffer is accessible. With some kernels, one accessible byte |
| at the end of page is enough for write syscall to return 1. |
| |
| * tests/read-write.c (main): Tweak the test that can lead to a partial |
| write. |
| |
| 2016-05-18 Dmitry V. Levin <ldv@altlinux.org> |
| |
| umovestr3.test: extend test coverage. |
| * tests/umovestr3.c: Include <sys/param.h>. |
| (main): Test with each number between PATH_MAX-1 and 0. |
| |
| tests/timer_create.c: robustify against os specific issues. |
| * tests/timer_create.c (main): Do not assume any specific error code |
| returned by timer_create, print whatever it is. |
| |
| Fix some compilation warnings on older systems. |
| * print_statfs.c (print_statfs_flags): Define only |
| for [HAVE_STRUCT_STATFS_F_FLAGS || HAVE_STRUCT_STATFS64_F_FLAGS]. |
| * tests/inet-cmsg.c (print_origdstaddr): Define only |
| for [IP_ORIGDSTADDR]. |
| |
| Update generic ioctl entries from linux 4.6. |
| * linux/64/ioctls_inc.h: Update from linux v4.6 using ioctls_gen.sh. |
| * linux/32/ioctls_inc_align32.h: Likewise. |
| * linux/32/ioctls_inc_align64.h: Likewise. |
| * NEWS: Mention this. |
| |
| maint: update for linux 4.6. |
| * maint/ioctls_sym.sh: Update workarounds for linux/kvm.h. |
| |
| Update SOL_* constants. |
| * xlat/socketlayers.in: Add SOL_KCM. |
| |
| Update MSG_* constants. |
| * xlat/msg_flags.in: Add MSG_BATCH. |
| |
| Update AF_* constants. |
| * xlat/addrfams.in: Add AF_KCM. |
| |
| 2016-05-17 Fei Jie <feij.fnst@cn.fujitsu.com> |
| |
| tests: add brk.test. |
| * tests/brk.c: New file. |
| * tests/brk.test: New test. |
| * tests/.gitignore: Add brk. |
| * tests/Makefile.am (check_PROGRAMS): Likewise. |
| (DECODER_TESTS): Add brk.test. |
| |
| 2016-05-17 Dmitry V. Levin <ldv@altlinux.org> |
| |
| Fix printing of invalid arguments of term ioctls. |
| * term.c (term_ioctl): Print arguments of TCXONC and TCFLSH ioctls |
| using printxval_long. |
| |
| mips: fix printing of invalid operations argument of sysmips syscall. |
| * sysmips.c (SYS_FUNC(sysmips)): Print 1st argument of syscall using |
| printxval_long. |
| |
| bfin: fix printing of invalid flags argument of sram_alloc syscall. |
| * sram_alloc.c (SYS_FUNC(sram_alloc)): Print 2nd argument using |
| printflags_long. |
| |
| 2016-05-16 Dmitry V. Levin <ldv@altlinux.org> |
| |
| Fix printing of invalid arguments of prctl syscall. |
| * prctl.c (SYS_FUNC(prctl)): Print 2nd syscall argument |
| of PR_CAPBSET_DROP, PR_CAPBSET_READ, PR_CAP_AMBIENT, PR_MCE_KILL, |
| and PR_SET_SECCOMP using printxval_long. |
| Print 2nd syscall argument of PR_SET_SECUREBITS using printflags_long. |
| Print 3rd syscall argument of PR_CAP_AMBIENT and PR_MCE_KILL using |
| printxval_long. |
| * tests/prctl-seccomp-strict.c (main): Update. |
| |
| Fix printing of invalid flags argument of perf_event_open syscall. |
| * numa.c (SYS_FUNC(perf_event_open)): Print 5th argument of syscall |
| using printflags_long. |
| |
| or1k: fix printing of invalid 1st argument of or1k_atomic syscall. |
| * or1k_atomic.c (SYS_FUNC(or1k_atomic)): Print 1st argument using |
| printxval_long. |
| |
| Fix printing of invalid flags argument of get_mempolicy syscall. |
| * numa.c (SYS_FUNC(get_mempolicy)): Print 5th argument of syscall |
| using printxval_long. |
| |
| Fix printing of invalid mode argument of mbind syscall. |
| * numa.c (SYS_FUNC(mbind)): Print 3rd argument of syscall |
| using printxval_long. |
| * tests/mbind.c (main): Update. |
| |
| Fix printing of invalid argument of MTDFILEMODE ioctl. |
| * mtd.c (mtd_ioctl): Print 3rd argument of MTDFILEMODE ioctl |
| using printflags_long. |
| |
| Fix printing of invalid flags argument of mount syscall. |
| * mount.c (SYS_FUNC(mount)): Print 1st argument using printflags_long. |
| |
| Fix printing of invalid arguments of memory mapping related syscalls. |
| * mem.c (print_mmap): Print 3rd and 4th arguments of syscall |
| using printflags_long. |
| (SYS_FUNC(mprotect)): Print 3rd argument of syscall using |
| printflags_long. |
| (SYS_FUNC(mremap)): Print 4th argument of syscall using printflags_long. |
| (SYS_FUNC(remap_file_pages)): Print 3rd and 4th arguments of syscall |
| using printflags_long. |
| * tests/remap_file_pages.c (main): Update. |
| |
| Fix printing of invalid flags argument of kexec_load and kexec_file_load |
| * kexec.c (SYS_FUNC(kexec_load), SYS_FUNC(kexec_file_load)): Print |
| flags argument using printflags_long. |
| |
| Fix printing of invalid 3rd argument of fcntl/fcntl64 syscall. |
| * fcntl.c (print_fcntl): Print 3rd argument of F_NOTIFY, F_SETLEASE, and |
| F_ADD_SEALS operations using printflags_long. |
| |
| Fix printing of invalid flags argument of unshare syscall. |
| * clone.c (SYS_FUNC(unshare)): Print 1st argument using printflags_long. |
| |
| Introduce printflags_long and printxval_long. |
| * defs.h (printflags_long, printxval_long): New static inline functions. |
| |
| Fix printing of invalid struct xfs_dqblk.d_flags. |
| * quota.c (decode_cmd_data): Explicitly cast struct xfs_dqblk.d_flags |
| to uint8_t to avoid potential sign-extension bug when printing |
| invalid struct xfs_dqblk.d_flags. |
| |
| Fix printing of invalid struct ubi_mkvol_req.vol_type. |
| * mtd.c (ubi_ioctl): Explicitly cast struct ubi_mkvol_req.vol_type |
| to unsigned short to avoid potential sign-extension bug when printing |
| invalid struct ubi_mkvol_req.vol_type. |
| |
| 2016-05-16 Dmitry V. Levin <ldv@altlinux.org> |
| |
| Fix decoding of prctl/arch_prctl operation argument. |
| Consistently treat operation argument of prctl/arch_prctl syscalls |
| as int to match the kernel behaviour. |
| |
| * prctl.c (SYS_FUNC(prctl), SYS_FUNC(arch_prctl)): Assign 1st argument |
| of syscalls to a variable of type unsigned int and use it in all |
| subsequent checks and lookups. |
| |
| 2016-05-16 Dmitry V. Levin <ldv@altlinux.org> |
| |
| Fix printing of struct sched_attr.sched_flags. |
| * sched.c (print_sched_attr): Print sched_flags using printflags64. |
| |
| Fix printing of struct statfs.f_flags. |
| * print_statfs.c (print_statfs_flags): Print flags using printflags64. |
| |
| Fix printing of invalid struct ifreq.ifr_flags. |
| * sock.c (print_ifreq): Explicitly cast struct ifreq.ifr_flags |
| to unsigned short to avoid potential sign-extension bug when printing |
| invalid struct ifreq.ifr_flags. |
| |
| Fix printing of invalid struct pollfd.events. |
| * poll.c (print_pollfd): Explicitly cast struct pollfd.events |
| to unsigned short to avoid potential sign-extension bug when printing |
| invalid struct pollfd.events. |
| |
| Fix printing of invalid struct sembuf.sem_flg. |
| * ipc_sem.c (print_sembuf): Explicitly cast struct sembuf.sem_flg |
| to unsigned short to avoid potential sign-extension bug when printing |
| invalid struct sembuf.sem_flg. |
| |
| Fix printing of invalid l_type and l_whence in fcntl/fcntl64 syscalls. |
| * fcntl.c (print_struct_flock64): Explicitly cast l_type and l_whence |
| fields to unsigned short to avoid potential sign-extension bug when |
| printing invalid l_type or l_whence fields. |
| |
| Fix printing of fanotify_mark mask argument. |
| * fanotify.c (SYS_FUNC(fanotify_mark)): Print mask using printflags64. |
| |
| 2016-05-16 Dmitry V. Levin <ldv@altlinux.org> |
| |
| Fix decoding of epoll_ctl operation argument. |
| Consistently treat operation argument of epoll_ctl syscall as int |
| to match the kernel behaviour. |
| |
| * epoll.c (SYS_FUNC(epoll_ctl)): Assign 2nd argument of syscall |
| to a variable of type unsigned int and use it in all subsequent |
| checks and lookups. |
| * tests/epoll_ctl.c (invoke_syscall): New function. |
| (main): Use it. |
| |
| 2016-05-16 Dmitry V. Levin <ldv@altlinux.org> |
| |
| Fix printing of invalid d_type in getdents syscall. |
| * dirent.c (SYS_FUNC(getdents)): Treat d_type as unsigned char to avoid |
| potential sign-extension bug when printing invalid d_type. |
| |
| bfin: fix decoding of cacheflush syscall. |
| * cacheflush.c (SYS_FUNC(cacheflush)): Print 2nd argument |
| using %lu format. Print 3rd argument as flags. |
| |
| Fix decoding of BPF_MAP_UPDATE_ELEM flags. |
| * bpf.c (bpf_map_update_elem): Print attr.flags using printxval64. |
| |
| 2016-05-16 Dmitry V. Levin <ldv@altlinux.org> |
| |
| Fix decoding of fcntl/fcntl64 operation argument. |
| Consistently treat operation argument of fcntl/fcntl64 syscalls as int |
| to match the kernel behaviour. |
| |
| * fcntl.c (print_fcntl, SYS_FUNC(fcntl), SYS_FUNC(fcntl64)): Assign |
| 2nd argument of syscall to a variable of type unsigned int |
| and use it in all subsequent checks and lookups. |
| * tests/struct_flock.c (invoke_test_syscall): New function. |
| (test_flock_einval, test_flock): Use it. |
| * tests/fcntl.c (test_flock64_einval): Use it. |
| * tests/fcntl64.c (test_flock64_einval, test_flock64): Use it. |
| |
| 2016-05-15 Dmitry V. Levin <ldv@altlinux.org> |
| |
| Rename sprintflags64 to sprintflags. |
| * defs.h (sprintflags): Remove. |
| (sprintflags64): Rename to sprintflags. |
| * util.c (sprintflags64): Rename to sprintflags. |
| |
| Prepare for transition from sprintflags64 to sprintflags. |
| * fcntl.c (print_fcntl): Cast 3rd argument of sprintflags |
| to unsigned long. |
| * membarrier.c (SYS_FUNC(membarrier)): Likewise. |
| * prctl.c (SYS_FUNC(prctl)): Likewise. |
| * poll.c (decode_poll_exiting): Cast 3rd argument of sprintflags |
| to unsigned short. |
| |
| 2016-05-14 Dmitry V. Levin <ldv@altlinux.org> |
| |
| Rename xlookup64 to xlookup. |
| * defs.h (xlookup): Remove. |
| (xlookup64): Rename to xlookup. |
| * util.c (xlookup64): Rename to xlookup. |
| |
| Prepare for transition from xlookup64 to xlookup. |
| * fcntl.c (print_fcntl, SYS_FUNC(fcntl), SYS_FUNC(fcntl64)): |
| Cast 2nd argument of xlookup to unsigned long. |
| * prctl.c (SYS_FUNC(prctl)): Likewise. |
| * sched.c (SYS_FUNC(sched_getscheduler)): Likewise. |
| * time.c (do_adjtimex): Likewise. |
| * ioprio.c (sprint_ioprio): Change type of the argument |
| and local variables from int to unsigned int. |
| * keyctl.c (print_keyring_serial_number): Cast 2nd argument |
| of xlookup to unsigned int. |
| * net.c (tprint_sock_type): Change type of the argument to unsigned int. |
| * printmode.c (sprintmode): Likewise. |
| * printsiginfo.c (printsigval): Change type of si_code argument |
| to unsigned int. |
| |
| 2016-05-14 Dmitry V. Levin <ldv@altlinux.org> |
| |
| v4l2: fix build with old kernel headers. |
| Prior to v2.6.25-rc3, <linux/videodev2.h> didn't include all |
| required headers, resulting to omission of V4L2_* constants. |
| |
| This issue doesn't arise in v4l2.c and tests/ioctl_v4l2.c files |
| because they already include all necessary headers themselves. |
| |
| * configure.ac (AC_CHECK_DECLS): Include <sys/time.h>, <linux/ioctl.h>, |
| and <linux/types.h> before <linux/videodev2.h>. |
| |
| 2016-05-13 Dmitry V. Levin <ldv@altlinux.org> |
| |
| configure.ac: do not check for sys/ioctl.h and ioctls.h. |
| Since sys/ioctl.h is included unconditionally when needed |
| and ioctls.h doesn't exist, these checks are redundant. |
| |
| * configure.ac (AC_CHECK_HEADERS): Remove ioctls.h and sys/ioctl.h. |
| |
| 2016-05-13 Dmitry V. Levin <ldv@altlinux.org> |
| |
| sock.c: include <linux/ioctl.h> instead of <sys/ioctl.h> or <ioctls.h> |
| Include <linux/ioctl.h> for <linux/sockios.h> on alpha, sh, and sh64 |
| architectures because their <asm/sockios.h> use _IOR and _IOW macros |
| but don't include anything that would define these macros. |
| |
| Being a wrapper around <linux/ioctl.h>, <sys/ioctl.h> brings |
| no benefits in this case. <ioctls.h> simply doesn't exist. |
| |
| * sock.c [ALPHA || SH || SH64]: Include <linux/ioctl.h> |
| instead of <sys/ioctl.h> or <ioctls.h>. |
| |
| 2016-05-13 Dmitry V. Levin <ldv@altlinux.org> |
| |
| v4l2: include <linux/ioctl.h> instead of <sys/ioctl.h> |
| Being a wrapper around <linux/ioctl.h>, <sys/ioctl.h> brings |
| no benefits for parser of VIDIOC_* ioctls. |
| |
| * v4l2.c: Include <linux/ioctl.h> instead of <sys/ioctl.h>. |
| |
| 2016-05-13 Dmitry V. Levin <ldv@altlinux.org> |
| |
| printsiginfo: remove "verbose" argument. |
| Remove erroneous use of verbose(tcp) as a printing limit |
| for already fetched members of siginfo_t structure. |
| |
| * printsiginfo.h (printsiginfo): Remove boolean argument. |
| * printsiginfo.c (printsigval): Remove boolean argument, print |
| si_int and si_ptr members unconditionally. All callers changed. |
| (print_si_info): Remove boolean argument, print si_utime and si_stime |
| members unconditionally. All callers changed. |
| (printsiginfo): Remove boolean argument. All callers changed. |
| |
| 2016-05-13 Dmitry V. Levin <ldv@altlinux.org> |
| |
| tests/ptrace.c: tweak magic constants to make the test more reliable. |
| * tests/ptrace.c (main): Change bad_request and bad_data to make they |
| lower 32-bit parts closer to -1U. |
| |
| 2016-05-13 Dmitry V. Levin <ldv@altlinux.org> |
| |
| tests/ioctl_v4l2.c: fix build on older systems. |
| Fix build on systems without HAVE_DECL_V4L2_CTRL_TYPE_STRING or |
| V4L2_CTRL_CLASS_CAMERA. |
| |
| * tests/ioctl_v4l2.c (main) [VIDIOC_S_EXT_CTRLS]: Disable part of the |
| test if [!HAVE_DECL_V4L2_CTRL_TYPE_STRING]. |
| Replace V4L2_CTRL_CLASS_CAMERA with V4L2_CTRL_CLASS_USER. |
| |
| 2016-05-13 Dmitry V. Levin <ldv@altlinux.org> |
| |
| Do not use htole32 function. |
| htole32 function is not portable enough. |
| |
| * v4l2.c (print_pixelformat): Rewrite initialization of pixel format |
| union without using of htole32. |
| * tests/ioctl_v4l2.c (main): Likewise. |
| |
| 2016-05-13 Dmitry V. Levin <ldv@altlinux.org> |
| |
| tests/ioctl_v4l2.c: fix typo. |
| * tests/ioctl_v4l2.c (main) |
| [!HAVE_DECL_V4L2_BUF_TYPE_VIDEO_CAPTURE_MPLANE]: Fix typo in expected |
| output string. |
| |
| tests: check decoding of ptrace syscall. |
| * tests/ptrace.c: New file. |
| * tests/ptrace.test: New test. |
| * tests/.gitignore: Add ptrace. |
| * tests/Makefile.am (check_PROGRAMS): Likewise. |
| (DECODER_TESTS): Add ptrace. |
| |
| 2016-05-13 Dmitry V. Levin <ldv@altlinux.org> |
| |
| ptrace: decode data argument of PTRACE_PEEKSIGINFO request. |
| The data argument of PTRACE_PEEKSIGINFO request is a pointer |
| to siginfo_t array. |
| |
| * printsiginfo.c (print_siginfo_t): New function. |
| (print_siginfo_array): New mpers printer. |
| * process.c (SYS_FUNC(ptrace)): Print data argument of |
| PTRACE_PEEKSIGINFO request using print_siginfo_array. |
| |
| 2016-05-13 Dmitry V. Levin <ldv@altlinux.org> |
| |
| ptrace: decode data argument of PTRACE_SECCOMP_GET_FILTER request. |
| * process.c (SYS_FUNC(ptrace)): Print data argument of |
| PTRACE_SECCOMP_GET_FILTER request on exiting using print_seccomp_fprog. |
| |
| ptrace: decode argument of PTRACE_GETEVENTMSG request. |
| * process.c (SYS_FUNC(ptrace)): Print data argument of |
| PTRACE_GETEVENTMSG request on exiting using printnum_ulong. |
| |
| ptrace: decode arguments of PTRACE_[GS]ETSIGMASK requests. |
| * process.c (SYS_FUNC(ptrace)): Print arguments of PTRACE_GETSIGMASK |
| and PTRACE_SETSIGMASK requests using print_sigset_addr_len. |
| |
| ptrace: return RVAL_DECODED for requests decoded on entering. |
| * process.c (SYS_FUNC(ptrace)): Return RVAL_DECODED on entering for all |
| ptrace requests except those that are partially decoded in exiting, |
| |
| 2016-05-12 Dmitry V. Levin <ldv@altlinux.org> |
| |
| ptrace: print PTRACE_O_* flags using printflags64. |
| As flags argument has a long integer type, print it using printflags64 |
| because printflags takes unsigned int argument. |
| |
| * process.c (SYS_FUNC(ptrace)): Print PTRACE_O_* flags |
| using printflags64. |
| |
| 2016-05-12 Dmitry V. Levin <ldv@altlinux.org> |
| |
| ptrace: print data argument of PTRACE_SEIZE et al requests as flags. |
| * process.c (SYS_FUNC(ptrace)): Print data argument of |
| PTRACE_SEIZE and PTRACE_OLDSETOPTIONS as PTRACE_O_* flags. |
| |
| ptrace: print data argument of PTRACE_SINGLEBLOCK et al requests as signo |
| * process.c (SYS_FUNC(ptrace)): Print data argument of |
| PTRACE_SINGLEBLOCK, PTRACE_SYSEMU, and PTRACE_SYSEMU_SINGLESTEP requests |
| as a signal number. |
| |
| 2016-05-12 Dmitry V. Levin <ldv@altlinux.org> |
| |
| ptrace: decode addr argument of PTRACE_PEEKSIGINFO request. |
| The addr argument of PTRACE_PEEKSIGINFO request is a pointer to |
| a struct ptrace_peeksiginfo_args. |
| |
| * process.c: Include "xlat/ptrace_peeksiginfo_flags.h". |
| (SYS_FUNC(ptrace)): Print addr argument of PTRACE_PEEKSIGINFO request |
| as a struct ptrace_peeksiginfo_args. |
| * xlat/ptrace_peeksiginfo_flags.in: New file. |
| |
| 2016-05-12 Dmitry V. Levin <ldv@altlinux.org> |
| |
| ptrace: fix printing addr argument of PTRACE_GETSIGMASK et al requests. |
| For PTRACE_GETSIGMASK and PTRACE_SETSIGMASK requests, addr argument |
| contains the size of the buffer pointed to by data argument. |
| For PTRACE_SECCOMP_GET_FILTER request, addr argument contains |
| an offset counter. |
| |
| * process.c (SYS_FUNC(ptrace)): Print addr argument of |
| PTRACE_GETSIGMASK, PTRACE_SETSIGMASK, and PTRACE_SECCOMP_GET_FILTER |
| requests using %lu format. |
| |
| 2016-05-12 Dmitry V. Levin <ldv@altlinux.org> |
| |
| ptrace: do not print data argument of some requests on sparc. |
| On sparc, kernel ignores data argument of PTRACE_GETREGS, |
| PTRACE_SETREGS, PTRACE_GETFPREGS, and PTRACE_SETFPREGS requests. |
| |
| * process.c (SYS_FUNC(ptrace)) [SPARC || SPARC64]: Return RVAL_DECODED |
| right after printing addr argument if request is one of PTRACE_GETREGS, |
| PTRACE_SETREGS, PTRACE_GETFPREGS, or PTRACE_SETFPREGS. |
| |
| 2016-05-12 Dmitry V. Levin <ldv@altlinux.org> |
| |
| ptrace: do not print addr and data arguments of PTRACE_ATTACH-like requests |
| As kernel ignores addr and data arguments of PTRACE_ATTACH, |
| PTRACE_INTERRUPT, PTRACE_KILL, and PTRACE_LISTEN request, |
| we do not print them either. |
| |
| * process.c (SYS_FUNC(ptrace)): After printing pid argument, return |
| RVAL_DECODED if request is one of PTRACE_ATTACH, PTRACE_INTERRUPT, |
| PTRACE_KILL, or PTRACE_LISTEN. |
| |
| 2016-05-12 Dmitry V. Levin <ldv@altlinux.org> |
| |
| ptrace: do not print arguments of PTRACE_TRACEME request. |
| As kernel ignores arguments of PTRACE_TRACEME request, |
| we do not print them either. |
| |
| * process.c (SYS_FUNC(ptrace)): If request is PTRACE_TRACEME, |
| return early with RVAL_DECODED. |
| |
| 2016-05-12 Dmitry V. Levin <ldv@altlinux.org> |
| |
| ptrace: print request using printxval64. |
| As first argument of ptrace syscall has a long integer type, print |
| it using printxval64 because printxval takes unsigned int argument. |
| |
| * process.c (SYS_FUNC(ptrace)): Change type of "request" variable |
| from "long" to "unsigned long", print it using printxval64 instead |
| of printxval. |
| |
| 2016-05-12 Dmitry V. Levin <ldv@altlinux.org> |
| |
| Do not sign-extend siginfo_t.si_syscall. |
| * printsiginfo.c (print_si_info): Explicitly cast si_syscall member |
| of siginfo_t that has type "int" to "unsigned int", to avoid sign |
| extension when passed to syscall_name function. |
| |
| Export print_seccomp_fprog for further use in parser of ptrace syscall. |
| * defs.h (print_seccomp_fprog): New prototype. |
| * seccomp.c (print_seccomp_fprog): Remove "static" keyword. |
| Move printing of struct seccomp_fprog fields ... |
| (print_seccomp_filter): ... here. |
| |
| 2016-05-11 Fei Jie <feij.fnst@cn.fujitsu.com> |
| |
| tests: add munlockall.test. |
| * tests/munlockall.c: New file. |
| * tests/munlockall.test: New test. |
| * tests/.gitignore: Add munlockall. |
| * tests/Makefile.am (check_PROGRAMS): Likewise. |
| (DECODER_TESTS): Add munlockall.test. |
| |
| tests: add link.test. |
| * tests/link.c: New file. |
| * tests/link.test: New test. |
| * tests/.gitignore: Add link. |
| * tests/Makefile.am (check_PROGRAMS): Likewise. |
| (DECODER_TESTS): Add link.test. |
| |
| 2016-05-11 Dmitry V. Levin <ldv@altlinux.org> |
| |
| tests: check decoding and dumping of preadv2 and pwritev2 syscalls. |
| * tests/preadv2-pwritev2.c: New file. |
| * tests/preadv2-pwritev2.test: New test. |
| * tests/.gitignore: Add preadv2-pwritev2. |
| * tests/Makefile.am (check_PROGRAMS): Likewise. |
| (DECODER_TESTS): Add preadv2-pwritev2. |
| |
| Implement decoding of preadv2 and pwritev2 syscalls. |
| * io.c: Include "xlat/rwf_flags.h". |
| (do_preadv, do_pwritev, SYS_FUNC(preadv2), SYS_FUNC(pwritev2)): |
| New functions. |
| (SYS_FUNC(preadv)): Use do_preadv. |
| (SYS_FUNC(pwritev)): Use do_pwritev. |
| * linux/32/syscallent.h (preadv2, pwritev2): New entries. |
| * linux/64/syscallent.h: Likewise. |
| * linux/arm/syscallent.h: Likewise. |
| * linux/hppa/syscallent.h: Likewise. |
| * linux/i386/syscallent.h: Likewise. |
| * linux/ia64/syscallent.h: Likewise. |
| * linux/m68k/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/sparc/syscallent.h: Likewise. |
| * linux/sparc64/syscallent.h: Likewise. |
| * linux/x32/syscallent.h: Likewise. |
| * linux/x86_64/syscallent.h: Likewise. |
| * syscall.c (dumpio): Handle SEN_preadv2 and SEN_pwritev2. |
| * xlat/rwf_flags.in: New file. |
| * NEWS: Mention parsers of new syscalls. |
| |
| 2016-05-10 Dmitry V. Levin <ldv@altlinux.org> |
| |
| tests: extend test coverage of xattr family syscalls. |
| * tests/xattr.c: Check decoding of all xattr family syscalls. |
| * tests/xattr.test: Use run_strace_match_diff. |
| * tests/xattr.expected: Remove. |
| * tests/Makefile.am (EXTRA_DIST): Remove it. |
| |
| tests: add print_quoted_memory function to libtests. |
| * tests/print_quoted_string.c (print_quoted_memory): New function. |
| (print_quoted_string): Use it. |
| * tests/tests.h (print_quoted_memory): New prototype. |
| |
| Fix corner cases of xattr family syscalls decoding. |
| * xattr.c (print_xattr_val): Do not take insize into account, print it |
| as unsigned long. |
| Do not decode xattr values of size larger than XATTR_SIZE_MAX. |
| Use static buffer for fetching xattr values. |
| (print_xattr_list): Do not decode string when size is zero. |
| |
| 2016-05-10 Dr. David Alan Gilbert <dgilbert@redhat.com> |
| |
| userfaultfd: Add ioctl tests. |
| * tests/ioctl_uffdio.c: New file. |
| * tests/ioctl_uffdio.test: New test. |
| * tests/.gitignore: Add ioctl_uffdio. |
| * tests/Makefile.am (check_PROGRAMS): Likewise. |
| (DECODER_TESTS): Add ioctl_uffdio.test. |
| |
| 2016-05-10 Dr. David Alan Gilbert <dgilbert@redhat.com> |
| |
| Decode UFFDIO_* ioctls. |
| Decode the ioctls associated with the userfaultfd fd. |
| Note that they tend to read from and also return result in it's data |
| structure. |
| |
| * configure.ac (AC_CHECK_HEADERS): Add linux/userfaultfd.h. |
| * userfaultfd.c [HAVE_LINUX_USERFAULTFD_H]: Add ioctl decoder. |
| * defs.h (uffdio_ioctl): New prototype. |
| * ioctl.c (ioctl_decode) [HAVE_LINUX_USERFAULTFD_H]: Wire in |
| uffdio_ioctl. |
| * xlat/uffd_*.in: Create flag xlat for all the IOCTLs. |
| |
| 2016-05-10 Dmitry V. Levin <ldv@altlinux.org> |
| |
| Update AX_CODE_COVERAGE. |
| * m4/ax_code_coverage.m4: Update to serial 16. |
| * Makefile.am (CODE_COVERAGE_LCOV_OPTIONS): Remove. |
| (CODE_COVERAGE_GENHTML_OPTIONS): Update, add prefix. |
| (CODE_COVERAGE_BRANCH_COVERAGE): Set to 1. |
| |
| strace-ff.test: fix race condition. |
| * tests/strace-ff.test: Wait for completion of PR_SET_PTRACER command. |
| |
| tests/epoll_pwait.c: fix for x32. |
| * tests/epoll_pwait.c (main): Explicitly cast last syscall argument |
| to kernel_ulong_t. |
| |
| strace-S.test: check "-S name" |
| * tests/strace-S.test: Add a check for "-c -S name" output. |
| |
| Fix NULL dereference in "-S name" when syscall table has holes. |
| * count.c (syscall_cmp): Do not pass NULL to strcmp. |
| |
| strace-S.test: cleanup. |
| * tests/strace-S.test: Rewrite using sed. |
| |
| 2016-05-09 Fei Jie <feij.fnst@cn.fujitsu.com> |
| |
| tests: add strace-S.test. |
| * tests/strace-S.test: New test. |
| * tests/Makefile.am (MISC_TESTS): Add it. |
| |
| 2016-05-09 Dmitry V. Levin <ldv@altlinux.org> |
| |
| strace-ff.test: check that -ff does not create unexpected output files. |
| * tests/strace-ff.expected: New file. |
| * tests/Makefile.am (EXTRA_DIST): Add it. |
| * tests/strace-ff.test: Use it. Check that no other output files |
| have been created. |
| |
| 2016-05-09 Fei Jie <feij.fnst@cn.fujitsu.com> |
| |
| tests: add strace-ff.test. |
| * tests/strace-ff.test: New test. |
| * tests/Makefile.am (MISC_TESTS): Add it. |
| |
| 2016-05-09 Dmitry V. Levin <ldv@altlinux.org> |
| |
| strace-V.test: cleanup. |
| * tests/strace-V.test: Move config.h parser to a function. |
| Rename $OUT to $EXP, swap arguments passed to match_diff. |
| |
| 2016-05-09 Fei Jie <feij.fnst@cn.fujitsu.com> |
| |
| tests: add strace-V.test. |
| * tests/strace-V.test: New test. |
| * tests/Makefile.am (MISC_TESTS): Add it. |
| |
| 2016-05-09 Dmitry V. Levin <ldv@altlinux.org> |
| |
| tests: check decoding of epoll_pwait syscall. |
| * tests/epoll_pwait.c: New file. |
| * tests/epoll_pwait.test: New test. |
| * tests/.gitignore: Add epoll_pwait. |
| * tests/Makefile.am (check_PROGRAMS): Likewise. |
| (DECODER_TESTS): Add epoll_pwait.test. |
| |
| 2016-05-09 Dmitry V. Levin <ldv@altlinux.org> |
| |
| Assume that sys/epoll.h exists. |
| This header file was added in glibc-2.3.2, |
| so it's safe to assume its availability. |
| |
| * configure.ac (AC_CHECK_HEADERS): Remove sys/epoll.h. |
| * epoll.c: Include <sys/epoll.h> unconditionally. |
| Compile [HAVE_SYS_EPOLL_H] code unconditionally. |
| * tests/epoll_ctl.c: Do not check for HAVE_SYS_EPOLL_H. |
| * tests/epoll_wait.c: Likewise. |
| |
| 2016-05-08 Fabien Siron <fabien.siron@epita.fr> |
| |
| Factorize send_query functions. |
| * socketutils.c (send_query): New function. |
| (inet_send_query, unix_send_query): Use it. |
| |
| 2016-05-08 Dmitry V. Levin <ldv@altlinux.org> |
| |
| tests: relax timings. |
| Allow nanosleep(2) to spend 10% more time to make the test suite |
| more reliable on slow systems. |
| |
| * tests/count.test: Treat 1.1 seconds as valid output. |
| * tests/strace-T.expected: Likewise. |
| * tests/strace-r.expected: Likewise. |
| |
| 2016-05-07 Dmitry V. Levin <ldv@altlinux.org> |
| |
| tests/attach-f-p.c: increase timeouts. |
| Increase timeouts to make the test more reliable on slow systems. |
| |
| * tests/attach-f-p.c (its): Increase timeouts to 1, 2, and 3 seconds, |
| respectively. |
| |
| 2016-05-07 Dmitry V. Levin <ldv@altlinux.org> |
| |
| Remove unused functions. |
| * defs.h (umove_ulong_or_printaddr, umove_ulong_array_or_printaddr): |
| Remove. |
| * util.c (umove_ulong_or_printaddr, umove_ulong_array_or_printaddr): |
| Likewise. |
| |
| v4l2.c: use print_array function. |
| * v4l2.c (print_v4l2_ext_control, umoven_or_printaddr_ignore_syserror): |
| New functions. |
| (print_v4l2_ext_controls): Use them via print_array. |
| |
| uid.c: use print_array function. |
| * uid.c (print_gid): New function. |
| (print_groups): Use it via print_array. |
| |
| seccomp.c: use print_array function. |
| * seccomp.c (decode_filter, decode_seccomp_fprog): Remove. |
| (print_bpf_filter): New function. |
| (print_seccomp_fprog): Use it via print_array. |
| * tests/seccomp-filter-v.c (main): Update. |
| |
| scsi.c: use print_array function. |
| * scsi.c (print_uchar): New function. |
| (print_sg_io_buffer): Use it via print_array. |
| |
| poll.c: use print_array function. |
| * poll.c (print_pollfd): Change for use as print_array callback. |
| (decode_poll_entering): Use print_array. |
| * tests/poll.c: Update. |
| * tests/poll.test: Update. |
| |
| numa.c: use print_array function. |
| * numa.c (print_node): New function. |
| (print_nodemask): Use it via print_array. |
| (print_page_array, print_int_array): Remove. |
| (print_addr): New function. |
| (print_status, print_int): Change for use as print_array callback. |
| (SYS_FUNC(move_pages)): Use print_addr, print_int, and print_status |
| via print_array. |
| * tests/move_pages.c: Update. |
| * tests/set_mempolicy.c: Likewise. |
| * tests/set_mempolicy.test: Likewise. |
| |
| mem.c: use print_array function. |
| * mem.c [POWERPC] (print_protmap_entry): New function. |
| [POWERPC] (SYS_FUNC(subpage_prot)): Use it via print_array. |
| |
| kexec.c: use print_array function. |
| * kexec.c (print_seg): Change for use as print_array callback. |
| (print_kexec_segments): Use print_array. |
| |
| ipc_sem.c: use print_array function. |
| * ipc_sem.c (tprint_sembuf): Rename to print_sembuf, change signature |
| for use as print_array callback. |
| (tprint_sembuf_array): Use print_array. |
| |
| io.c: use print_array function. |
| * io.c (print_iovec_config): New structure. |
| (print_iovec): New function. |
| (tprint_iov_upto): Use print_array. |
| * tests/preadv.c (main): Update. |
| * tests/pwritev.c (print_iovec, main): Likewise. |
| |
| epoll.c: use print_array function. |
| * epoll.c (print_epoll_event): Change signature for use as print_array |
| callback, all users updated. |
| (print_epoll_event_array): Remove. |
| (epoll_wait_common): Change to use print_array instead |
| of print_epoll_event_array. |
| |
| aio.c: use print_array function. |
| * aio.c (print_iocbp): New function. |
| (SYS_FUNC(io_submit)): Use it via print_array. Use widen_to_long |
| to process long int argument. |
| (print_io_event): Change to print struct io_event fetched elsewhere. |
| (SYS_FUNC(io_cancel)): Update use of print_io_event. |
| (SYS_FUNC(io_getevents)): Use print_io_event via print_array. |
| Use widen_to_long to print long int arguments. |
| * tests/aio.c (main): Check decoding of io_submit with negative "nr". |
| |
| Introduce print_array function for consistent decoding of arrays. |
| * defs.h (print_array): New prototype. |
| * util.c (print_array): New function. |
| |
| 2016-05-06 Dmitry V. Levin <ldv@altlinux.org> |
| |
| Fix corner cases of ICMP_FILTER decoding. |
| * net.c (print_icmp_filter): Print icmp_filter for any positive length. |
| * tests/net-icmp_filter.c: New file. |
| * tests/net-icmp_filter.test: New test. |
| * tests/.gitignore: Add net-icmp_filter. |
| * tests/Makefile.am (check_PROGRAMS): Likewise. |
| (DECODER_TESTS): Add net-icmp_filter.test. |
| |
| 2016-05-05 Dmitry V. Levin <ldv@altlinux.org> |
| |
| xlat: do not strip "1<<" prefix from xlat strings. |
| * xlat/gen.sh (cond_xlat, gen_header): Do not strip "1<<" prefix |
| from xlat strings to fix incorrect output. |
| * tests/caps.awk: Update. |
| |
| Reported-by: Dr. David Alan Gilbert <dgilbert@redhat.com> |
| |
| 2016-05-05 Dmitry V. Levin <ldv@altlinux.org> |
| |
| tests/xstatfsx.c: fix mips o32 support. |
| mips o32 differs from all other 32-bit architectures by defining |
| __kernel_fsid_t structure as an array of long ints. |
| |
| * tests/xstatfsx.c (print_statfs): Explicitly cast elements |
| of PRINT_F_FSID array to unsigned int. |
| |
| 2016-05-05 Dmitry V. Levin <ldv@altlinux.org> |
| |
| Mpersify VIDIOC_* ioctl parser. |
| * v4l2.c: Mpersify arch-specific structures. |
| (v4l2_ioctl): Mpersify. |
| * tests/ioctl_v4l2.c: New file. |
| * tests/ioctl_v4l2.test: New test. |
| * tests/.gitignore: Add ioctl_v4l2. |
| * tests/Makefile.am (check_PROGRAMS): Likewise. |
| (DECODER_TESTS): Add ioctl_v4l2.test. |
| |
| 2016-05-05 Dmitry V. Levin <ldv@altlinux.org> |
| |
| Mpersify ioctl macros. |
| As values of some ioctl macros differ between personalities, these |
| personality specific ioctl macros should be properly defined for |
| mpersified code. Implement this by redefining personality specific |
| ioctl macros from ioctlent*.h for each file that includes MPERS_DEFS. |
| |
| * Makefile.am (ioctl_macros_h): New variable. |
| (ioctl_macros%.h): New rule. |
| (BUILT_SOURCES, CLEANFILES): Add $(ioctl_macros_h). |
| (m%_type_defs.h): #include MPERS_$(mpers_PREFIX)IOCTL_MACROS. |
| * defs.h [HAVE_M32_MPERS] (MPERS_m32_IOCTL_MACROS): New macro. |
| [HAVE_MX32_MPERS] (MPERS_mx32_IOCTL_MACROS): Likewise. |
| |
| Acked-by: Elvira Khabirova <lineprinter0@gmail.com> |
| |
| 2016-05-05 Dmitry V. Levin <ldv@altlinux.org> |
| |
| Fix decoding of VIDIOC_* ioctls. |
| * v4l2.c: Fix numerous bugs in decoding of VIDIOC_* ioctls. |
| * tests/ioctl.c (main): Update. |
| |
| 2016-05-05 Dmitry V. Levin <ldv@altlinux.org> |
| |
| nsyscalls.test: add mips o32 support. |
| Out-of-range syscalls looks differently on mips o32. |
| |
| * tests/nsyscalls.c (main): Handle LINUX_MIPSO32. |
| * tests/nsyscalls.test: Trace syscall called "syscall" on mips. |
| |
| 2016-04-29 Dmitry V. Levin <ldv@altlinux.org> |
| |
| Remove initialization of big holes in syscallent.h files. |
| There is no need to explicitly initialize big holes after conversion |
| of syscallent.h files to use designated initializers. For architectures |
| that have some data at the end of syscallent.h this initialization of |
| big holes is no-op, for others it just inflates the table unnecessarily. |
| |
| * linux/arc/syscallent.h: Remove initialization of arch specific block |
| at the end of table. |
| * linux/metag/syscallent.h: Likewise. |
| * linux/nios2/syscallent.h: Likewise. |
| * linux/or1k/syscallent.h: Likewise. |
| * linux/tile/syscallent.h: Likewise. |
| * linux/tile/syscallent1.h: Likewise. |
| * linux/arm/syscallent.h: Remove explicit initialization of a big hole |
| before socket subcalls. |
| * linux/i386/syscallent.h: Likewise. |
| * linux/m68k/syscallent.h: Likewise. |
| * linux/mips/syscallent-n32.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/mips/syscallent-compat.h: Remove explicit initialization |
| of big holes between different mips ABIs. |
| * linux/mips/syscallent-n64.h: Remove explicit initialization |
| of big holes before socket subcalls and between different mips ABIs. |
| * linux/mips/syscallent-o32.h: Likewise. |
| |
| 2016-04-29 Dmitry V. Levin <ldv@altlinux.org> |
| |
| xlat: make "1<<val" syntax work with 64-bit values. |
| * xlat/gen.sh(cond_xlat, gen_header): Generate 1UUL<<val |
| for 1<<val syntax. |
| |
| Reported-by: Dr. David Alan Gilbert <dgilbert@redhat.com> |
| |
| 2016-04-29 Dmitry V. Levin <ldv@altlinux.org> |
| |
| Fix typo in XLAT_TYPE_PAIR. |
| * xlat.h (XLAT_TYPE_PAIR): Take "type" parameter. |
| |
| Reported-by: Dr. David Alan Gilbert <dgilbert@redhat.com> |
| |
| 2016-04-29 Dmitry V. Levin <ldv@altlinux.org> |
| |
| Fix decoding of move_pages syscall. |
| * numa.c (print_page_array, print_status, print_int, print_int_array): |
| New functions. |
| (SYS_FUNC(move_pages)): Rewrite using these functions. |
| * tests/move_pages.c: New file. |
| * tests/move_pages.test: New test. |
| * tests/.gitignore: Add move_pages. |
| * tests/Makefile.am (check_PROGRAMS): Likewise. |
| (DECODER_TESTS): Add move_pages.test. |
| |
| tests: check decoding of mbind syscall. |
| * tests/mbind.c: New file. |
| * tests/mbind.test: New test. |
| * tests/.gitignore: Add mbind. |
| * tests/Makefile.am (check_PROGRAMS): Likewise. |
| (DECODER_TESTS): Add mbind.test. |
| |
| 2016-04-29 Jeff Mahoney <jeffm@suse.com> |
| |
| Change type of struct xlat.val to uint64_t. |
| Some ioctls have flags fields that are 64-bit. A 32-bit val means |
| these flags will never be matched or printed. |
| |
| * xlat.h: Include <stdint.h>. |
| (struct xlat): Change type of val to uint64_t. |
| |
| 2016-04-29 Dmitry V. Levin <ldv@altlinux.org> |
| |
| xlat: extend syntax with #val_type directive. |
| When #val_type directive is encountered, gen.sh starts using |
| XLAT_TYPE/XLAT_TYPE_PAIR macros instead of XLAT/XLAT_PAIR, |
| with #val_type's argument as a type. |
| |
| For example, "#val_type uint64_t" means values of type uint64_t. |
| |
| * xlat/gen.sh (gen_header, print_xlat, print_xlat_pair): |
| Add val_type support. |
| |
| 2016-04-29 Dmitry V. Levin <ldv@altlinux.org> |
| |
| xlat/gen.sh: prepare for adding #val_type directive support. |
| This is essentially a no-op change that makes the following change |
| easier to read. |
| |
| * xlat/gen.sh (print_xlat, print_xlat_pair): New functions. |
| (cond_xlat, gen_header): Use them. |
| |
| 2016-04-29 Dmitry V. Levin <ldv@altlinux.org> |
| |
| Introduce XLAT_TYPE and XLAT_TYPE_PAIR macros. |
| * xlat.h (XLAT_TYPE): New macro, similar to XLAT but casts |
| to the specified type instead of unsigned int. |
| (XLAT_TYPE_PAIR): New macro, similar to XLAT_PAIR but casts |
| to the specified type instead of unsigned int. |
| |
| 2016-04-29 Dmitry V. Levin <ldv@altlinux.org> |
| |
| xlat: generate xlat pairs using new XLAT_PAIR macro. |
| Before this change there were two forms of xlat entries: those that use XLAT |
| or XLAT_END macros, and others verbatim entries. This change converts |
| the latter to use new XLAT_PAIR macro. |
| |
| This is necessary for the upcoming change of xlat.val type. |
| |
| * xlat.h (XLAT_PAIR): New macro. |
| * xlat/gen.sh (cond_xlat, gen_header): Use it. |
| |
| 2016-04-29 Dmitry V. Levin <ldv@altlinux.org> |
| |
| Explicitly cast argument of XLAT macro to unsigned int. |
| This is necessary for the upcoming change of xlat.val type. |
| |
| * xlat.h (XLAT): Cast the argument to unsigned int. |
| |
| 2016-04-29 Dmitry V. Levin <ldv@altlinux.org> |
| |
| Change type of {s,t}print_open_modes's argument to unsigned. |
| As "flags" argument of sprint_open_modes and tprint_open_modes is |
| involved only in bit operations, change its type to unsigned. |
| |
| * defs.h.c (sprint_open_modes, tprint_open_modes): Change type |
| to unsigned int. |
| * open.c (sprint_open_modes, tprint_open_modes): Likewise. |
| |
| 2016-04-28 Dmitry V. Levin <ldv@altlinux.org> |
| |
| tests/remap_file_pages.c: fix for the upcoming change of xlat.val type. |
| The "flags" argument of remap_file_page syscall has type "unsigned |
| long", so it is not correct to load most significant bits with garbage |
| ans assume they are going to be ignored. |
| |
| * tests/remap_file_pages.c (main): Remove artificial garbage from flags. |
| |
| 2016-04-28 Dmitry V. Levin <ldv@altlinux.org> |
| |
| Introduce printflags64 function. |
| This is necessary for the upcoming change of xlat.val type. |
| |
| * defs.h (printflags): Rename to printflags64, change type of integer |
| argument to uint64_t. |
| (printflags): New static inline function. |
| * util.c (printflags): Rename to printflags64, change type of integer |
| argument to uint64_t. Print it using PRIx64 format. |
| Based on patch by Jeff Mahoney <jeffm@suse.com>. |
| |
| 2016-04-28 Dmitry V. Levin <ldv@altlinux.org> |
| |
| Introduce sprintflags64 function. |
| This is necessary for the upcoming change of xlat.val type. |
| |
| * defs.h (sprintflags): Rename to sprintflags64, change type of integer |
| argument to uint64_t. |
| (sprintflags): New static inline function. |
| * util.c (sprintflags): Rename to sprintflags64, change type of integer |
| argument to uint64_t. Print it using PRIx64 format. |
| Based on patch by Jeff Mahoney <jeffm@suse.com>. |
| |
| 2016-04-28 Dmitry V. Levin <ldv@altlinux.org> |
| |
| printxvals: change type of integer argument to uint64_t. |
| This is necessary for the upcoming change of xlat.val type. |
| All users of printxvals are already prepared for this change. |
| |
| * defs.h (printxvals): Change type of integer argument to uint64_t. |
| * util.c (printxvals): Likewise. Print it using PRIx64 format. |
| Patch by Jeff Mahoney <jeffm@suse.com>. |
| |
| 2016-04-28 Dmitry V. Levin <ldv@altlinux.org> |
| |
| xlat_search: change type of integer argument to uint64_t. |
| This is necessary for the upcoming change of xlat.val type. |
| All users of addflags are already prepared for this change. |
| |
| * defs.h (xlat_search): Change type of integer argument to uint64_t. |
| * util.c (xlat_search): Likewise. Pass it by pointer. |
| (xlat_bsearch_compare): Treat first argument as a pointer. |
| Patch by Jeff Mahoney <jeffm@suse.com>. |
| |
| 2016-04-28 Dmitry V. Levin <ldv@altlinux.org> |
| |
| Introduce xlookup64 function. |
| This is necessary for the upcoming change of xlat.val type. |
| |
| * defs.h (xlookup): Rename to xlookup64, change type of integer argument |
| to uint64_t. |
| (xlookup): New static inline function. |
| * util.c (xlookup): Rename to xlookup64, change type of integer |
| argument to uint64_t. |
| Based on patch by Jeff Mahoney <jeffm@suse.com>. |
| |
| 2016-04-28 Dmitry V. Levin <ldv@altlinux.org> |
| |
| addflags: change type of integer argument to uint64_t. |
| This is necessary for the upcoming change of xlat.val type. |
| All users of addflags are already prepared for this change. |
| |
| * defs.h (addflags): Change type of integer argument to uint64_t. |
| * util.c (addflags): Likewise. Print it using PRIx64 format. |
| Based on patch by Jeff Mahoney <jeffm@suse.com>. |
| |
| 2016-04-28 Dmitry V. Levin <ldv@altlinux.org> |
| |
| Introduce printxval64 wrapper. |
| This is necessary for the upcoming change of xlat.val type. |
| |
| * defs.h (printxval64): New static inline function. |
| |
| 2016-04-28 Dmitry V. Levin <ldv@altlinux.org> |
| |
| Turn printxval macro into a static inline function. |
| This is necessary for the upcoming change of xlat.val type. |
| |
| * defs.h (printxval): Change to static inline function. |
| |
| 2016-04-28 Dmitry V. Levin <ldv@altlinux.org> |
| |
| tests: check decoding of migrate_pages syscall. |
| * tests/migrate_pages.c: New file. |
| * tests/migrate_pages.test: New test. |
| * tests/.gitignore: Add migrate_pages. |
| * tests/Makefile.am (check_PROGRAMS): Likewise. |
| (DECODER_TESTS): Add migrate_pages.test. |
| |
| Fix decoding of migrate_pages syscall. |
| * numa.c (SYS_FUNC(migrate_pages)): Print syscall arguments |
| in the right order. |
| |
| tests: check decoding of set_mempolicy syscall. |
| * tests/set_mempolicy.c: New file. |
| * tests/set_mempolicy.test: New test. |
| * tests/.gitignore: Add set_mempolicy. |
| * tests/Makefile.am (check_PROGRAMS): Likewise. |
| (DECODER_TESTS): Add set_mempolicy.test. |
| |
| tests: check decoding of get_mempolicy syscall. |
| * tests/get_mempolicy.c: New file. |
| * tests/get_mempolicy.test: New test. |
| * tests/.gitignore: Add get_mempolicy. |
| * tests/Makefile.am (check_PROGRAMS): Likewise. |
| (DECODER_TESTS): Add get_mempolicy.test. |
| |
| numa: fix decoding of nodemask arrays. |
| * numa.c (get_nodes): Rewrite an rename to print_nodemask. |
| All callers updated. |
| (SYS_FUNC(mbind), SYS_FUNC(set_mempolicy), SYS_FUNC(get_mempolicy)): |
| Print a delimiter before nodemask argument. |
| |
| 2016-04-27 Dmitry V. Levin <ldv@altlinux.org> |
| |
| Fix decoding of policy argument of get_mempolicy syscall. |
| * numa.c (SYS_FUNC(get_mempolicy)): Print policy argument in square |
| brackets to indicate indirect access. |
| |
| Fix decoding of pid_t argument of migrate_pages syscall. |
| * numa.c (SYS_FUNC(migrate_pages)): Print pid_t syscall |
| argument using %d format. |
| |
| tests: add printxval function to libtests. |
| * tests/tests.h (printxval): New prototype. |
| * tests/printxval.c: New file. |
| * tests/Makefile.am (libtests_a_SOURCES): Add it. |
| |
| tests: check decoding of remap_file_pages syscall. |
| * tests/remap_file_pages.c: New file. |
| * tests/remap_file_pages.test: New test. |
| * tests/.gitignore: Add remap_file_pages. |
| * tests/Makefile.am (check_PROGRAMS): Likewise. |
| (DECODER_TESTS): Add remap_file_pages.test. |
| |
| 2016-04-27 Fei Jie <feij.fnst@cn.fujitsu.com> |
| |
| tests: add pause.test. |
| * tests/pause.c: New file. |
| * tests/pause.test: New test. |
| * tests/.gitignore: Add pause. |
| * tests/Makefile.am (check_PROGRAMS): Likewise. |
| (DECODER_TESTS): Add pause.test. |
| |
| tests: add kill.test. |
| * tests/kill.c: New file. |
| * tests/kill.test: New test. |
| * tests/.gitignore: Add kill. |
| * tests/Makefile.am (check_PROGRAMS): Likewise. |
| (DECODER_TESTS): Add kill.test. |
| |
| 2016-04-27 Dmitry V. Levin <ldv@altlinux.org> |
| |
| Fix decoding of pid_t arguments of kill and tgkill syscalls. |
| * signal.c (SYS_FUNC(kill), SYS_FUNC(tgkill)): Print pid_t syscall |
| arguments using %d format. |
| |
| 2016-04-27 Fei Jie <feij.fnst@cn.fujitsu.com> |
| |
| tests: add mlock.test. |
| * tests/mlock.c: New file. |
| * tests/mlock.test: New test. |
| * tests/.gitignore: Add mlock. |
| * tests/Makefile.am (check_PROGRAMS): Likewise. |
| (DECODER_TESTS): Add mlock.test. |
| |
| 2016-04-27 Dmitry V. Levin <ldv@altlinux.org> |
| |
| Move parsers of NUMA related syscalls to numa.c. |
| * mem.c (get_nodes, SYS_FUNC(mbind), SYS_FUNC(set_mempolicy), |
| SYS_FUNC(get_mempolicy), SYS_FUNC(migrate_pages), SYS_FUNC(move_pages)): |
| Move ... |
| * numa.c: ... here. |
| * Makefile.am (strace_SOURCES): Add numa.c |
| |
| tests/umovestr3.c: robustify against os specific issues. |
| * tests/umovestr3.c (main): Create extra gap before unreadable page. |
| |
| tests: extend test coverage of umovestr short read condition. |
| * tests/umovestr3.c: New file. |
| * tests/umovestr3.test: New test. |
| * tests/.gitignore: Add umovestr3. |
| * tests/Makefile.am (check_PROGRAMS): Likewise. |
| (DECODER_TESTS): Add umovestr3.test. |
| |
| tests: check decoding of out-of-range syscalls. |
| * tests/nsyscalls.c: New file. |
| * tests/nsyscalls.test: New test. |
| * tests/.gitignore: Add nsyscalls. |
| * tests/Makefile.am (check_PROGRAMS): Likewise. |
| (DECODER_TESTS): Add nsyscalls.test. |
| |
| 2016-04-26 Dmitry V. Levin <ldv@altlinux.org> |
| |
| Fix decoding of 3rd argument of getdents/getdents64 syscalls. |
| * dirent.c (SYS_FUNC(getdents)): Always print 3rd syscall argument |
| as unsigned int. |
| * dirent64.c (SYS_FUNC(getdents64)): Likewise. |
| * tests/getdents.c (main): Check it. |
| * tests/getdents64.c (main): Likewise. |
| |
| Fix decoding of LINUX_REBOOT_CMD_RESTART2 argument. |
| * reboot.c (SYS_FUNC(reboot)): Cast numeric arguments to unsigned int. |
| |
| 2016-04-26 Dmitry V. Levin <ldv@altlinux.org> |
| |
| .travis.yml: raise sleep delay. |
| Previous sleep delay value seems to be not enough nowadays. |
| |
| .travis.yml (SLEEP_A_BIT): Raise sleep delay. |
| |
| 2016-04-26 Dmitry V. Levin <ldv@altlinux.org> |
| |
| Move definitions of MPOL_* constants to xlat files. |
| * mem.c (MPOL_DEFAULT, MPOL_PREFERRED, MPOL_BIND, MPOL_INTERLEAVE): |
| Move to xlat/policies.in. |
| (MPOL_F_NODE, MPOL_F_ADDR): Move to xlat/mempolicyflags.in. |
| (MPOL_MF_STRICT, MPOL_MF_MOVE, MPOL_MF_MOVE_ALL): Move |
| to xlat/mbindflags.in. |
| |
| tests: check decoding of renameat2 syscall. |
| * tests/renameat2.c: New file. |
| * tests/renameat2.test: New test. |
| * tests/.gitignore: Add renameat2. |
| * tests/Makefile.am (check_PROGRAMS): Likewise. |
| (DECODER_TESTS): Add renameat2.test. |
| |
| Add default values for RENAME_* constants. |
| * xlat/rename_flags.in: Add default values. |
| |
| tests: check decoding of utimes syscall. |
| * tests/utimes.c: New file. |
| * tests/utimes.test: New test. |
| * tests/.gitignore: Add utimes. |
| * tests/Makefile.am (check_PROGRAMS): Likewise. |
| (DECODER_TESTS): Add utimes.test. |
| |
| tests: check decoding of futimesat syscall. |
| * tests/futimesat.c: New file. |
| * tests/futimesat.test: New test. |
| * tests/.gitignore: Add futimesat. |
| * tests/Makefile.am (check_PROGRAMS): Likewise. |
| (DECODER_TESTS): Add futimesat.test. |
| |
| tests: extend test coverage of mknod syscall. |
| * mknod.c (main): Check more corner cases of mode_t parser. |
| * mknod.test: Update. |
| |
| 2016-04-26 Fei Jie <feij.fnst@cn.fujitsu.com> |
| |
| tests: add sched_yield.test. |
| * tests/sched_yield.c: New file. |
| * tests/sched_yield.test: New test. |
| * tests/.gitignore: Add sched_yield. |
| * tests/Makefile.am (check_PROGRAMS): Likewise. |
| (DECODER_TESTS): Add sched_yield.test. |
| |
| tests: add sync.test. |
| * tests/sync.c: New file. |
| * tests/sync.test: New test. |
| * tests/.gitignore: Add sync. |
| * tests/Makefile.am (check_PROGRAMS): Likewise. |
| (DECODER_TESTS): Add sync.test. |
| |
| tests: add mknodat.test. |
| * tests/mknodat.c: New file. |
| * tests/mknodat.test: New test. |
| * tests/.gitignore: Add mknodat. |
| * tests/Makefile.am (check_PROGRAMS): Likewise. |
| (DECODER_TESTS): Add mknodat.test. |
| |
| tests: add unlink.test. |
| * tests/unlink.c: New file. |
| * tests/unlink.test: New test. |
| * tests/.gitignore: Add unlink. |
| * tests/Makefile.am (check_PROGRAMS): Likewise. |
| (DECODER_TESTS): Add unlink.test. |
| |
| tests: add reboot.test. |
| * tests/reboot.c: New file. |
| * tests/reboot.test: New test. |
| * tests/.gitignore: Add reboot. |
| * tests/Makefile.am (check_PROGRAMS): Likewise. |
| (DECODER_TESTS): Add reboot.test. |
| |
| 2016-04-26 Dmitry V. Levin <ldv@altlinux.org> |
| |
| Fix decoding of statfs family syscalls. |
| Fix decoders of fstatfs, fstatfs64, statfs, and statfs64 syscalls |
| by rewriting them using mpers infrastructure. |
| |
| * fetch_struct_statfs.c: New file. |
| * fstatfs.c: Likewise. |
| * fstatfs64.c: Likewise. |
| * print_statfs.c: Likewise. |
| * statfs.h: Likewise. |
| * statfs64.c: Likewise. |
| * statfs.c: Remove everything except SYS_FUNC(statfs). |
| * configure.ac: Remove the check for struct statfs64 in <sys/vfs.h>. |
| Add checks for struct statfs and struct statfs64 in <asm/statfs.h>. |
| Add checks for f_frsize and f_flags members of these structures. |
| * defs.h (struct strace_statfs): New forward declaration. |
| (print_struct_statfs, print_struct_statfs64): New prototypes. |
| * Makefile.am (libstrace_a_SOURCES): Add fstatfs.c, fstatfs64.c, |
| statfs.c, and statfs64.c. |
| (strace_SOURCES): Add fetch_struct_statfs.c, print_statfs.c, |
| and statfs.h. |
| * NEWS: Mention this fix. |
| * tests/fstatfs.c: New file. |
| * tests/fstatfs64.c: Likewise. |
| * tests/statfs64.c: Likewise. |
| * tests/xstatfs.c: Likewise. |
| * tests/xstatfs64.c: Likewise. |
| * tests/xstatfsx.c: Likewise. |
| * tests/fstatfs.test: New test. |
| * tests/fstatfs64.test: Likewise. |
| * tests/statfs64.test: Likewise. |
| * tests/statfs.c: Rewrite using xstatfs.c. |
| * tests/statfs.test: Update. |
| * tests/.gitignore: Add fstatfs, fstatfs64, and statfs64. |
| * tests/Makefile.am (check_PROGRAMS): Likewise. |
| (DECODER_TESTS): Add fstatfs.test, fstatfs64.test, and statfs64.test. |
| (EXTRA_DIST): Add xstatfs.c, xstatfs64.c, and xstatfsx.c. |
| |
| 2016-04-26 Dmitry V. Levin <ldv@altlinux.org> |
| |
| tests: add printflags function to libtests. |
| * tests/printflags.c: New file. |
| * tests/tests.h (printflags): New prototype. |
| * tests/Makefile.am (libtests_a_SOURCES): Add it. |
| |
| 2016-04-26 Dmitry V. Levin <ldv@altlinux.org> |
| |
| Move definition of struct xlat to a separate header file. |
| Define struct xlat in a separate file so that it could be used later by |
| tests without inclusion of defs.h header file. |
| |
| * defs.h (struct xlat, XLAT, XLAT_END): Move ... |
| * xlat.h: ... here. |
| * Makefile.am (strace_SOURCES): Add xlat.h. |
| |
| 2016-04-25 Dmitry V. Levin <ldv@altlinux.org> |
| |
| alpha: decode osf_statfs64 and osf_fstatfs64 syscalls. |
| * linux/alpha/syscallent.h (osf_statfs64, osf_fstatfs64): Set nargs |
| and handler. |
| |
| 2016-04-25 Dmitry V. Levin <ldv@altlinux.org> |
| |
| alpha: fix decoding of osf_statfs and osf_fstatfs syscalls. |
| Do not attempt to print struct osf_statfs as if it was the same as |
| struct statfs. Since struct osf_statfs has never been decoded properly, |
| it is probably too late to implement a decoder, so let's just print the |
| pointer. |
| |
| * statfs.c [ALPHA] (SYS_FUNC(osf_statfs), SYS_FUNC(osf_fstatfs)): Move ... |
| * alpha.c: ... here. Replace printstatfs with printaddr. |
| |
| 2016-04-25 Dmitry V. Levin <ldv@altlinux.org> |
| |
| statfs: print f_flags field only when ST_VALID flag is set. |
| * statfs.c (print_statfs_flags): New function. |
| (printstatfs, printstatfs64, printcompat_statfs64): Use it. |
| * xlat/statfs_flags.in (ST_VALID): Move to the head of the list. |
| * tests/statfs.expected: Update. |
| |
| 2016-04-25 Fei Jie <feij.fnst@cn.fujitsu.com> |
| |
| tests: add symlink.test. |
| * tests/symlink.c: New file. |
| * tests/symlink.test: New test. |
| * tests/.gitignore: Add symlink. |
| * tests/Makefile.am (check_PROGRAMS): Likewise. |
| (DECODER_TESTS): Add symlink.test. |
| |
| tests: add rmdir.test. |
| * tests/rmdir.c: New file. |
| * tests/rmdir.test: New test. |
| * tests/.gitignore: Add rmdir. |
| * tests/Makefile.am (check_PROGRAMS): Likewise. |
| (DECODER_TESTS): Add rmdir.test. |
| |
| tests: add setdomainname.test. |
| * tests/setdomainname.c: New file. |
| * tests/setdomainname.test: New test. |
| * tests/.gitignore: Add setdomainname. |
| * tests/Makefile.am (check_PROGRAMS): Likewise. |
| (DECODER_TESTS): Add setdomainname.test. |
| |
| tests: add sched_rr_get_interval.test. |
| * tests/sched_rr_get_interval.c: New file. |
| * tests/sched_rr_get_interval.test: New test. |
| * tests/.gitignore: Add sched_rr_get_interval. |
| * tests/Makefile.am (check_PROGRAMS): Likewise. |
| (DECODER_TESTS): Add sched_rr_get_interval.test. |
| |
| 2016-04-25 Dmitry V. Levin <ldv@altlinux.org> |
| |
| statfs: decode f_flags field of struct statfs. |
| * xlat/statfs_flags.in: New file. |
| * statfs.c: Include "xlat/statfs_flags.h". |
| (printstatfs) [_STATFS_F_FLAGS]: Print statbuf.f_flags as flags. |
| (printstatfs64) [_STATFS_F_FLAGS]: Likewise. |
| (printcompat_statfs64): Likewise. |
| * tests/statfs.expected: Update. |
| |
| 2016-04-25 Zev Weiss <zev@bewilderbeest.net> |
| |
| statfs: don't quote f_type macro names. |
| * statfs.c (sprintfstype): Don't add double-quotes to fs magic macros. |
| * tests/statfs.expected: Remove double-quotes. |
| |
| 2016-04-25 Dmitry V. Levin <ldv@altlinux.org> |
| |
| tests/shmxt.c: robustify against arch specific issues. |
| Do not treat failed shmat(SHM_RND) as a test failure. |
| This change partially reverts commit |
| bea707377d2ee3e1950bfa43537ef928163a5fa6. |
| |
| * tests/shmxt.c (main): Use SHM_RND in the second shmat call, |
| do not treat its potential error as a test failure. |
| |
| 2016-04-23 Dmitry V. Levin <ldv@altlinux.org> |
| |
| Rename PRI__s64 to PRI__d64. |
| As PRI__*64 macros mirror PRI*64 macros from inttypes.h, follow the |
| principle of least astonishment and name these macros the same way. |
| |
| * defs.h (PRI__s64): Rename to PRI__d64. |
| |
| 2016-04-23 Dmitry V. Levin <ldv@altlinux.org> |
| |
| Fix old_mmap output when mmap arguments are unfetchable. |
| * mem.c (SYS_FUNC(old_mmap)): Use umove_or_printaddr instead of umoven |
| to fetch mmap arguments, return RVAL_DECODED when umove_or_printaddr |
| fails. |
| * tests/old_mmap.c (main): Check it. |
| |
| 2016-04-22 Dmitry V. Levin <ldv@altlinux.org> |
| |
| aarch64: fix old_mmap output for arm personality. |
| * mem.c (SYS_FUNC(old_mmap)) [AARCH64]: Fetch mmap arguments |
| as 32-bit integers. |
| |
| Define old_mmap parser only on architectures that use it. |
| * mem.c (SYS_FUNC(old_mmap)): Define only on AARCH64, ARM, I386, X86_64, |
| X32, M68K, S390, and S390X. |
| |
| 2016-04-22 Dmitry V. Levin <ldv@altlinux.org> |
| |
| tests: extend test coverage of mmap syscall. |
| Check decoding of "old mmap" edition of mmap syscall |
| on those architectures that define it. |
| |
| * tests/old_mmap.c: New file. |
| * tests/old_mmap.test: New test. |
| * tests/.gitignore: Add old_mmap. |
| * tests/Makefile.am (check_PROGRAMS): Likewise. |
| (DECODER_TESTS): Add old_mmap.test. |
| |
| 2016-04-22 Dmitry V. Levin <ldv@altlinux.org> |
| |
| tests: extend test coverage of mincore syscall. |
| * tests/mincore.c (print_mincore): New function. |
| (test_mincore): Use it. Check mincore with invalid vec address. |
| Check mincore with length argument not a multiple of the page size. |
| (main): Check with DEFAULT_STRLEN pages. |
| |
| 2016-04-22 Dmitry V. Levin <ldv@altlinux.org> |
| |
| Move parsers of sync_file_range and sync_file_range2 syscalls to libstrace |
| For each given architecture only one of these two syscalls has a |
| syscallent entry. When each parser is placed into a separate file, |
| moving to libstrace ensures that only one of them that is need |
| is linked into strace executable. |
| |
| * sync_file_range.c (SYS_FUNC(sync_file_range2)): Move ... |
| * sync_file_range2.c: ... here. |
| * Makefile.am (strace_SOURCES): Move sync_file_range.c ... |
| (libstrace_a_SOURCES): ... here. Add sync_file_range2.c. |
| (strace_SOURCES_c): Add filtered libstrace_a_SOURCES. |
| |
| 2016-04-22 Dmitry V. Levin <ldv@altlinux.org> |
| |
| tests: check decoding of clock_adjtime syscall. |
| * tests/clock_adjtime.c: New file. |
| * tests/clock_adjtime.test: New test. |
| * tests/.gitignore: Add clock_adjtime. |
| * tests/Makefile.am (check_PROGRAMS): Likewise. |
| (DECODER_TESTS): Add clock_adjtime.test. |
| |
| 2016-04-21 Dmitry V. Levin <ldv@altlinux.org> |
| |
| tests: do not include <assert.h> unnecessarily. |
| Automatically change tests/*.c files using the following script: |
| |
| for f in tests/*.c; do |
| grep -q '\<assert(' "$f" || |
| sed -i '/# *include *<assert\.h>/d' "$f" |
| done |
| |
| 2016-04-21 Dmitry V. Levin <ldv@altlinux.org> |
| |
| tests: do not include <errno.h> unnecessarily. |
| Automatically change tests/*.c files using the following script: |
| |
| for f in tests/*.c; do |
| grep -Fv errno.h "$f" | |
| grep -Ewq '(si_)?errno|SOCK_FILTER_DENY_SYSCALL' || |
| sed -i '/# *include *<errno\.h>/d' "$f" |
| done |
| |
| 2016-04-21 Dmitry V. Levin <ldv@altlinux.org> |
| |
| tests/xetpriority.c: print syscall() result using %ld format. |
| |
| tests/xetpgid.c: print syscall() result using %ld format. |
| |
| tests/xchownx.c: use errno2name. |
| |
| tests/userfaultfd.c: stop using assert. |
| |
| tests/unlinkat.c: print syscall() result using %ld format. |
| |
| tests/umount.c: use errno2name. |
| |
| tests/truncate64.c: cleanup. |
| * tests/truncate64.c (main): Use errno2name, stop using assert. |
| |
| tests/truncate.c: cleanup. |
| * tests/truncate.c (main): Use errno2name, stop using assert. |
| |
| tests/tee.c: stop using assert. |
| |
| tests/syslog.c: use errno2name. |
| |
| tests/sync_file_range2.c: stop using assert. |
| |
| tests/sync_file_range.c: stop using assert. |
| |
| tests/symlinkat.c: cleanup. |
| |
| tests/swap.c: cleanup. |
| * tests/swap.c (error_msg): Remove. |
| (main): Use errno2name. |
| |
| tests/splice.c: stop using assert. |
| |
| tests/setugid.c: cleanup. |
| |
| tests/sethostname.c: use errno2name. |
| |
| tests/setgroups.c: use errno2name. |
| * tests/setgroups.c (errno2str): Remove. |
| (main): Use errno2name. |
| |
| tests/seccomp-strict.c: cleanup. |
| * tests/seccomp-strict.c (main): Use errno2name, stop using assert. |
| |
| tests/seccomp-filter.c: cleanup. |
| * tests/seccomp-filter.c (main): Use errno2name, stop using assert. |
| |
| tests/sched_xetscheduler.c: print syscall() result using %ld format. |
| |
| tests/sched_xetparam.c: print syscall() result using %ld format. |
| |
| tests/renameat.c: print syscall() result using %ld format. |
| |
| tests/rename.c: print syscall() result using %ld format. |
| |
| tests/readv.c: cleanup. |
| |
| tests/pwritev.c: use errno2name. |
| |
| tests/preadv-pwritev.c: cleanup. |
| |
| tests/prctl-seccomp-strict.c: cleanup. |
| * tests/prctl-seccomp-strict.c (main): Use errno2name, |
| stop using assert. |
| |
| tests/openat.c: use errno2name. |
| |
| tests/open.c: use errno2name. |
| |
| tests/mlockall.c: cleanup. |
| |
| tests/mlock2.c: stop using assert. |
| |
| tests/mknod.c: print syscall() result using %ld format. |
| |
| tests/mkdirat.c: print syscall() result using %ld format. |
| |
| tests/lseek.c: cleanup. |
| * tests/lseek.c (main): Use errno2name, stop using assert. |
| |
| tests/llseek.c: cleanup. |
| * tests/llseek.c (main): Use errno2name, stop using assert. |
| |
| tests/linkat.c: print syscall() result using %ld format. |
| |
| tests/iopl.c: use errno2name. |
| |
| tests/ioperm.c: use errno2name. |
| |
| tests/getgroups.c: use errno2name. |
| * tests/getgroups.c (errno2str): Remove. |
| (main): Use errno2name. |
| |
| tests/ftruncate64.c: cleanup. |
| * tests/ftruncate64.c (main): Use errno2name, stop using assert. |
| |
| tests/ftruncate.c: cleanup. |
| * tests/ftruncate.c (main): Use errno2name, stop using assert. |
| |
| tests/fsync.c: print syscall() result using %ld format. |
| |
| tests/flock.c: print syscall() result using %ld format. |
| |
| tests/file_handle.c: use errno2name. |
| |
| tests/fdatasync.c: print syscall() result using %ld format. |
| |
| tests/fchownat.c: use errno2name. |
| |
| tests/fchmodat.c: use errno2name. |
| |
| tests/fchmod.c: use errno2name. |
| |
| tests/faccessat.c: print syscall() result using %ld format. |
| |
| tests/epoll_wait.c: print syscall() result using %ld format. |
| |
| tests/epoll_ctl.c: print syscall() result using %ld format. |
| |
| tests/epoll_create1.c: cleanup. |
| * tests/epoll_create1.c (main): Use errno2name, stop using assert. |
| |
| tests/epoll_create.c: print syscall() result using %ld format. |
| |
| tests/dup3.c: print syscall() result using %ld format. |
| |
| tests/dup2.c: print syscall() result using %ld format. |
| |
| tests/dup.c: cleanup. |
| |
| tests/creat.c: stop using sys/stat.h. |
| |
| tests/copy_file_range.c: stop using assert. |
| |
| tests/chroot.c: use errno2name. |
| |
| tests/aio.c: use errno2name. |
| |
| tests: cleanup acct.test. |
| * tests/acct.c (main): Use errno2name, stop using assert, |
| change sample file name. |
| * tests/acct.test: Update. |
| |
| tests: use errno2name() |
| Automatically change tests/*.c files using the following sed regexp: |
| sed -i 's/errno == E[[:alnum:]]\+ ? "E[[:alnum:]]\+" : "E[[:alnum:]]\+"/errno2name()/g' |
| |
| tests/dup.c: include "tests.h" |
| This is going to be necessary for the following commit. |
| |
| 2016-04-21 Fei Jie <feij.fnst@cn.fujitsu.com> |
| |
| tests: add getpgrp.test. |
| * tests/getpgrp.c: New file. |
| * tests/getpgrp.test: New test. |
| * tests/.gitignore: Add getpgrp. |
| * tests/Makefile.am (check_PROGRAMS): Likewise. |
| (DECODER_TESTS): Add getpgrp.test. |
| |
| tests: add access.test. |
| * tests/access.c: New file. |
| * tests/access.test: New test. |
| * tests/.gitignore: Add access. |
| * tests/Makefile.am (check_PROGRAMS): Likewise. |
| (DECODER_TESTS): Add access.test. |
| |
| tests: add fchdir.test. |
| * tests/fchdir.c: New file. |
| * tests/fchdir.test: New test. |
| * tests/.gitignore: Add fchdir. |
| * tests/Makefile.am (check_PROGRAMS): Likewise. |
| (DECODER_TESTS): Add fchdir.test. |
| |
| tests: add mkdir.test. |
| * tests/mkdir.c: New file. |
| * tests/mkdir.test: New test. |
| * tests/.gitignore: Add mkdir. |
| * tests/Makefile.am (check_PROGRAMS): Likewise. |
| (DECODER_TESTS): Add mkdir.test. |
| |
| tests: add getsid.test. |
| * tests/getsid.c: New file. |
| * tests/getsid.test: New test. |
| * tests/.gitignore: Add getsid. |
| * tests/Makefile.am (check_PROGRAMS): Likewise. |
| (DECODER_TESTS): Add getsid.test. |
| |
| 2016-04-21 Dmitry V. Levin <ldv@altlinux.org> |
| |
| tests: add errno2name function to libtests. |
| Add a simple translator of errno to its name, so one could |
| simply use errno2name() instead of complex expressions like |
| errno == EINVAL ? "EINVAL" : "EFAULT". |
| |
| * tests.h (errno2name): New prototype. |
| * errno2name.c: New file. |
| * Makefile.am (libtests_a_SOURCES): Add it. |
| |
| 2016-04-20 Dmitry V. Levin <ldv@altlinux.org> |
| |
| hppa: rename ECANCELLED to ECANCELED. |
| hppa seems to be the only architecture that defines ECANCELLED synonym |
| for ECANCELED constant, other architectures just define ECANCELED. |
| Change the way how this constant is printed on hppa to be in line |
| with other architectures. |
| |
| * linux/hppa/errnoent.h [253]: Rename ECANCELLED to ECANCELED. |
| |
| 2016-04-20 Dmitry V. Levin <ldv@altlinux.org> |
| |
| Remove parser of unimplemented timerfd syscall. |
| timerfd syscall was introduced in v2.6.22-rc1, but in v2.6.25-rc1 |
| it was replaced by timerfd_* syscall family. |
| |
| * linux/avr32/syscallent.h (timerfd): Fix nargs. |
| * linux/dummy.h (sys_timerfd): Add stub alias. |
| * time.c (SYS_FUNC(timerfd)): Remove. |
| |
| 2016-04-20 Dmitry V. Levin <ldv@altlinux.org> |
| |
| tests: workaround kernel bugs in seccomp-strict.test and prctl-seccomp-strict.test |
| If kernel implementation of strict seccomp mode is buggy, test programs |
| will be killed by SIGKILL. This is a known problem at least on |
| x32 and mips. Skip affected tests if this is the case. |
| |
| This change partially revert commit 9c1a72cd3f3d52d573876ce474b620a5f141fb1b. |
| |
| * tests/seccomp-strict.c (main): Remove workaround for x32. |
| * tests/prctl-seccomp-strict.c: Likewise. |
| * tests/seccomp-strict.test: Skip the test if the test program |
| has been killed by SIGKILL. |
| * tests/prctl-seccomp-strict.test: Likewise. |
| |
| 2016-04-20 Dmitry V. Levin <ldv@altlinux.org> |
| |
| tests/shmxt.c: do not use SHM_RND, it is unreliable. |
| * tests/shmxt.c (main): Do not set SHM_RND flag. |
| |
| tests/rt_sigpending.c: fix for systems where _NSIG > 16 * sizeof(long) |
| * tests/rt_sigsuspend.c (iterate): Do not assume that size will be less |
| than sizeof(long) on the second iteration. |
| |
| prctl-seccomp-strict.test: robustify against unrelated prctl invocations |
| * tests/prctl-seccomp-strict.test: Filter out PR_GET_* prctl calls. |
| |
| 2016-04-20 Dmitry V. Levin <ldv@altlinux.org> |
| |
| tests: adjust rt_sigpending to older kernels. |
| With linux kernels older than v3.9-rc1, compat rt_sigpending syscall |
| could fail with EFAULT in cases where on later kernels it succeeds. |
| Adjust the test to handle both cases properly. |
| |
| * tests/rt_sigpending.c (iterate): Stop iterations if rt_sigpending |
| failed with EFAULT. |
| |
| 2016-04-20 Dmitry V. Levin <ldv@altlinux.org> |
| |
| tests: adjust readv/writev and preadv/pwritev tests to older kernels. |
| With linux kernels older than v3.16-rc1, iovec based compat syscalls may |
| return EINVAL in some cases where on later kernels they return EFAULT. |
| Adjust tests to handle both cases properly. |
| |
| * tests/preadv-pwritev.c: Include <errno.h>. |
| (main): Print either "EINVAL" or "EFAULT" depending on errno. |
| * tests/pwritev.c: Likewise. |
| * tests/readv.c: Likewise. |
| |
| 2016-04-20 Dmitry V. Levin <ldv@altlinux.org> |
| |
| tests: remove obsolete non-strict uid tests. |
| Recently added strict tests for uid/gid related syscalls |
| made old uid tests obsolete. |
| |
| * tests/uid.awk: Remove. |
| * tests/uid.c: Remove. |
| * tests/uid.test: Remove. |
| * tests/uid16.c: Remove. |
| * tests/uid16.test: Remove. |
| * tests/uid32.c: Remove. |
| * tests/uid32.test: Remove. |
| * tests/.gitignore: Remove uid, uid16, and uid32. |
| * tests/Makefile.am (check_PROGRAMS): Likewise. |
| (DECODER_TESTS): Remove uid.test, uid16.test, and uid32.test. |
| (EXTRA_DIST): Remove uid.awk. |
| |
| 2016-04-20 Dmitry V. Levin <ldv@altlinux.org> |
| |
| tests: extend test coverage of getuid/getgid family syscalls. |
| Add strict tests for getuid, getuid32, getgid, getgid32, geteuid, |
| geteuid32, getegid, and getegid32 syscalls. |
| |
| * tests/getegid.c: New file. |
| * tests/getegid.test: New test. |
| * tests/getegid32.c: New file. |
| * tests/getegid32.test: New test. |
| * tests/geteuid.c: New file. |
| * tests/geteuid.test: New test. |
| * tests/geteuid32.c: New file. |
| * tests/geteuid32.test: New test. |
| * tests/getgid.c: New file. |
| * tests/getgid.test: New test. |
| * tests/getgid32.c: New file. |
| * tests/getgid32.test: New test. |
| * tests/getuid.c: New file. |
| * tests/getuid.test: New test. |
| * tests/getuid32.c: New file. |
| * tests/getuid32.test: New test. |
| * tests/.gitignore: Add getuid, getuid32, getgid, getgid32, geteuid, |
| * geteuid32, getegid, and getegid32. |
| * tests/Makefile.am (check_PROGRAMS): Likewise. |
| (DECODER_TESTS): Add getegid.test, getegid32.test, geteuid.test, |
| geteuid32.test, getgid.test, getgid32.test, getuid.test, |
| and getuid32.test. |
| |
| 2016-04-20 Dmitry V. Levin <ldv@altlinux.org> |
| |
| tests: extend test coverage of getresgid32 syscall. |
| * tests/getresgid32.c: New file. |
| * tests/getresgid32.test: New test. |
| * tests/.gitignore: Add getresgid32. |
| * tests/Makefile.am (check_PROGRAMS): Likewise. |
| (DECODER_TESTS): Add getresgid32.test. |
| |
| tests: extend test coverage of getresgid syscall. |
| * tests/getresgid.c: New file. |
| * tests/getresgid.test: New test. |
| * tests/.gitignore: Add getresgid. |
| * tests/Makefile.am (check_PROGRAMS): Likewise. |
| (DECODER_TESTS): Add getresgid.test. |
| |
| tests: extend test coverage of getresuid32 syscall. |
| * tests/getresuid32.c: New file. |
| * tests/getresuid32.test: New test. |
| * tests/.gitignore: Add getresuid32. |
| * tests/Makefile.am (check_PROGRAMS): Likewise. |
| (DECODER_TESTS): Add getresuid32.test. |
| |
| tests: extend test coverage of getresuid syscall. |
| * tests/getresugid.c: New file. |
| * tests/getresuid.c: New file. |
| * tests/getresuid.test: New test. |
| * tests/.gitignore: Add getresuid. |
| * tests/Makefile.am (check_PROGRAMS): Likewise. |
| (DECODER_TESTS): Add getresuid.test. |
| (EXTRA_DIST): Add getresugid.c. |
| |
| 2016-04-20 Fei Jie <feij.fnst@cn.fujitsu.com> |
| |
| tests: add symlinkat.test. |
| * tests/symlinkat.c: New file. |
| * tests/symlinkat.test: New test. |
| * tests/.gitignore: Add symlinkat. |
| * tests/Makefile.am (check_PROGRAMS): Likewise. |
| (DECODER_TESTS): Add symlinkat.test. |
| |
| tests: add iopl.test. |
| * tests/iopl.c: New file. |
| * tests/iopl.test: New test. |
| * tests/.gitignore: Add iopl. |
| * tests/Makefile.am (check_PROGRAMS): Likewise. |
| (DECODER_TESTS): Add iopl.test. |
| |
| 2016-04-20 Dmitry V. Levin <ldv@altlinux.org> |
| |
| mips o32, powerpc, powerpc64: fix decoding of iopl syscall. |
| * linux/mips/syscallent-o32.h (iopl): Fix nargs. |
| * linux/powerpc/syscallent.h (iopl): Fix nargs and sys_func. |
| * linux/powerpc64/syscallent.h (iopl): Likewise. |
| |
| 2016-04-20 Fei Jie <feij.fnst@cn.fujitsu.com> |
| |
| tests: add ioperm.test. |
| * tests/ioperm.c: New file. |
| * tests/ioperm.test: New test. |
| * tests/.gitignore: Add ioperm. |
| * tests/Makefile.am (check_PROGRAMS): Likewise. |
| (DECODER_TESTS): Add ioperm.test. |
| |
| 2016-04-20 Dmitry V. Levin <ldv@altlinux.org> |
| |
| Fix corner cases of getgroups and setgroups syscall decoders. |
| * uid.c (print_groups): New function. |
| (SYS_FUNC(setgroups), SYS_FUNC(getgroups)): Use it. |
| Print first syscall argument using %u format. |
| * tests/getgroups.c: New file. |
| * tests/getgroups.test: New test. |
| * tests/getgroups32.c: New file. |
| * tests/getgroups32.test: New test. |
| * tests/setgroups.c: New file. |
| * tests/setgroups.test: New test. |
| * tests/setgroups32.c: New file. |
| * tests/setgroups32.test: New test. |
| * tests/.gitignore: Add getgroups, getgroups32, setgroups, |
| and setgroups32. |
| * tests/Makefile.am (check_PROGRAMS): Likewise. |
| (DECODER_TESTS): Add getgroups.test, getgroups32.test, |
| setgroups.test, and setgroups32.test. |
| |
| Cleanup setfsuid syscall decoder. |
| * uid.c (SYS_FUNC(setfsuid)): Remove redundant check. |
| |
| tests: check decoding of setfsgid32 syscall. |
| * tests/setfsgid32.c: New file. |
| * tests/setfsgid32.test: New test. |
| * tests/.gitignore: Add setfsgid32. |
| * tests/Makefile.am (check_PROGRAMS): Likewise. |
| (DECODER_TESTS): Add setfsgid32.test. |
| |
| tests: check decoding of setfsgid syscall. |
| * tests/setfsugid.c: New file. |
| * tests/setfsgid.c: New file. |
| * tests/setfsgid.test: New test. |
| * tests/.gitignore: Add setfsgid. |
| * tests/Makefile.am (check_PROGRAMS): Likewise. |
| (DECODER_TESTS): Add setfsgid.test. |
| (EXTRA_DIST): Add setfsugid.c. |
| |
| tests: check decoding of setfsuid32 syscall. |
| * tests/setfsuid32.c: New file. |
| * tests/setfsuid32.test: New test. |
| * tests/.gitignore: Add setfsuid32. |
| * tests/Makefile.am (check_PROGRAMS): Likewise. |
| (DECODER_TESTS): Add setfsuid32.test. |
| |
| tests: check decoding of setfsuid syscall. |
| * tests/setfsugid.c: New file. |
| * tests/setfsuid.c: New file. |
| * tests/setfsuid.test: New test. |
| * tests/.gitignore: Add setfsuid. |
| * tests/Makefile.am (check_PROGRAMS): Likewise. |
| (DECODER_TESTS): Add setfsuid.test. |
| (EXTRA_DIST): Add setfsugid.c. |
| |
| tests: extend test coverage of setresgid32 syscall. |
| * tests/setresgid32.c: New file. |
| * tests/setresgid32.test: New test. |
| * tests/.gitignore: Add setresgid32. |
| * tests/Makefile.am (check_PROGRAMS): Likewise. |
| (DECODER_TESTS): Add setresgid32.test. |
| |
| tests: extend test coverage of setresgid syscall. |
| * tests/setresgid.c: New file. |
| * tests/setresgid.test: New test. |
| * tests/.gitignore: Add setresgid. |
| * tests/Makefile.am (check_PROGRAMS): Likewise. |
| (DECODER_TESTS): Add setresgid.test. |
| |
| tests: extend test coverage of setresuid32 syscall. |
| * tests/setresuid32.c: New file. |
| * tests/setresuid32.test: New test. |
| * tests/.gitignore: Add setresuid32. |
| * tests/Makefile.am (check_PROGRAMS): Likewise. |
| (DECODER_TESTS): Add setresuid32.test. |
| |
| tests: extend test coverage of setresuid syscall. |
| * tests/setresugid.c: New file. |
| * tests/setresuid.c: New file. |
| * tests/setresuid.test: New test. |
| * tests/.gitignore: Add setresuid. |
| * tests/Makefile.am (check_PROGRAMS): Likewise. |
| (DECODER_TESTS): Add setresuid.test. |
| (EXTRA_DIST): Add setresugid.c. |
| |
| tests: extend test coverage of setregid32 syscall. |
| * tests/setregid32.c: New file. |
| * tests/setregid32.test: New test. |
| * tests/.gitignore: Add setregid32. |
| * tests/Makefile.am (check_PROGRAMS): Likewise. |
| (DECODER_TESTS): Add setregid32.test. |
| |
| tests: extend test coverage of setregid syscall. |
| * tests/setregid.c: New file. |
| * tests/setregid.test: New test. |
| * tests/.gitignore: Add setregid. |
| * tests/Makefile.am (check_PROGRAMS): Likewise. |
| (DECODER_TESTS): Add setregid.test. |
| |
| tests: extend test coverage of setreuid32 syscall. |
| * tests/setreuid32.c: New file. |
| * tests/setreuid32.test: New test. |
| * tests/.gitignore: Add setreuid32. |
| * tests/Makefile.am (check_PROGRAMS): Likewise. |
| (DECODER_TESTS): Add setreuid32.test. |
| |
| tests: extend test coverage of setreuid syscall. |
| * tests/setreugid.c: New file. |
| * tests/setreuid.c: New file. |
| * tests/setreuid.test: New test. |
| * tests/.gitignore: Add setreuid. |
| * tests/Makefile.am (check_PROGRAMS): Likewise. |
| (DECODER_TESTS): Add setreuid.test. |
| (EXTRA_DIST): Add setreugid.c. |
| |
| tests: extend test coverage of setgid32 syscall. |
| * tests/setgid32.c: New file. |
| * tests/setgid32.test: New test. |
| * tests/.gitignore: Add setgid32. |
| * tests/Makefile.am (check_PROGRAMS): Likewise. |
| (DECODER_TESTS): Add setgid32.test. |
| |
| tests: extend test coverage of setgid syscall. |
| * tests/setgid.c: New file. |
| * tests/setgid.test: New test. |
| * tests/.gitignore: Add setgid. |
| * tests/Makefile.am (check_PROGRAMS): Likewise. |
| (DECODER_TESTS): Add setgid.test. |
| |
| tests: extend test coverage of setuid32 syscall. |
| * tests/setuid32.c: New file. |
| * tests/setuid32.test: New test. |
| * tests/.gitignore: Add setuid32. |
| * tests/Makefile.am (check_PROGRAMS): Likewise. |
| (DECODER_TESTS): Add setuid32.test. |
| |
| tests: extend test coverage of setuid syscall. |
| * tests/setugid.c: New file. |
| * tests/setuid.c: New file. |
| * tests/setuid.test: New test. |
| * tests/.gitignore: Add setuid. |
| * tests/Makefile.am (check_PROGRAMS): Likewise. |
| (DECODER_TESTS): Add setuid.test. |
| (EXTRA_DIST): Add setugid.c. |
| |
| 2016-04-20 Fei Jie <feij.fnst@cn.fujitsu.com> |
| |
| tests: add shmxt.test. |
| * tests/shmxt.c: New file. |
| * tests/shmxt.test: New test. |
| * tests/.gitignore: Add shmxt. |
| * tests/Makefile.am (check_PROGRAMS): Likewise. |
| (DECODER_TESTS): Add shmxt.test. |
| |
| 2016-04-20 Dmitry V. Levin <ldv@altlinux.org> |
| |
| alpha: fix decoding of shmat syscall. |
| On alpha, shmat syscall is known as osf_shmat. |
| |
| * linux/alpha/syscallent.h (osf_shmat): Fix sys_flags and sys_func. |
| |
| 2016-04-20 Fei Jie <feij.fnst@cn.fujitsu.com> |
| |
| tests: add semop.test. |
| * tests/semop.c: New file. |
| * tests/semop.test: New test. |
| * tests/.gitignore: Add semop. |
| * tests/Makefile.am (check_PROGRAMS): Likewise. |
| (DECODER_TESTS): Add semop.test. |
| |
| 2016-04-18 Dmitry V. Levin <ldv@altlinux.org> |
| |
| prctl-seccomp-filter-v.test: robustify against unrelated prctl invocations |
| * tests/prctl-seccomp-filter-v.test: Filter out PR_GET_* prctl calls. |
| |
| Reported-by: Steve McIntyre <steve@einval.com> |
| |
| 2016-04-18 Dmitry V. Levin <ldv@altlinux.org> |
| |
| tests/pselect6.c: fix potential output mismatch. |
| * tests/pselect6.c (main): In the last case of printing pselect6 |
| syscall, print the last argument the same way as in other cases. |
| |
| Reported-by: Steve McIntyre <steve@einval.com> |
| |
| 2016-04-18 Dmitry V. Levin <ldv@altlinux.org> |
| |
| tests: check decoding of fchown32 syscall. |
| * tests/fchown32.c: New file. |
| * tests/fchown32.test: New test. |
| * tests/.gitignore: Add fchown32. |
| * tests/Makefile.am (check_PROGRAMS): Likewise. |
| (DECODER_TESTS): Add fchown32.test. |
| |
| tests: check decoding of fchown syscall. |
| * tests/fchown.c: New file. |
| * tests/fchown.test: New test. |
| * tests/.gitignore: Add fchown. |
| * tests/Makefile.am (check_PROGRAMS): Likewise. |
| (DECODER_TESTS): Add fchown.test. |
| |
| tests: check decoding of lchown32 syscall. |
| * tests/lchown32.c: New file. |
| * tests/lchown32.test: New test. |
| * tests/.gitignore: Add lchown32. |
| * tests/Makefile.am (check_PROGRAMS): Likewise. |
| (DECODER_TESTS): Add lchown32.test. |
| |
| tests: check decoding of lchown syscall. |
| * tests/lchown.c: New file. |
| * tests/lchown.test: New test. |
| * tests/.gitignore: Add lchown. |
| * tests/Makefile.am (check_PROGRAMS): Likewise. |
| (DECODER_TESTS): Add lchown.test. |
| |
| tests: check decoding of chown32 syscall. |
| * tests/chown32.c: New file. |
| * tests/chown32.test: New test. |
| * tests/.gitignore: Add chown32. |
| * tests/Makefile.am (check_PROGRAMS): Likewise. |
| (DECODER_TESTS): Add chown32.test. |
| |
| tests: check decoding of chown syscall. |
| * tests/chown.c: New file. |
| * tests/chown.test: New test. |
| * tests/xchownx.c: New file. |
| * tests/.gitignore: Add chown. |
| * tests/Makefile.am (check_PROGRAMS): Likewise. |
| (DECODER_TESTS): Add chown.test. |
| (EXTRA_DIST): Add xchownx.c. |
| |
| Fix decoding of 16-bit uid_t/git_t. |
| * uid.c (printuid): Always cast value to uid_t. |
| |
| 2016-04-18 Dmitry V. Levin <ldv@altlinux.org> |
| |
| tests: move kernel uid overflow check to libtests. |
| This code used in two different places, so move it to the library. |
| |
| * tests/overflowuid.c: New file. |
| * tests/Makefile.am (libtests_a_SOURCES): Add it. |
| * tests/tests.h (check_overflowuid, check_overflowgid): New prototypes. |
| * tests/uid.c (main): Use check_overflowuid. |
| * tests/uid16.c (main): Likewise. |
| |
| 2016-04-12 Dmitry V. Levin <ldv@altlinux.org> |
| |
| tests: skip seccomp-strict.test and prctl-seccomp-strict.test on x32. |
| As x86_64 kernel does not support x32 syscall numbers in |
| SECCOMP_MODE_STRICT, skip affected tests on x32. |
| |
| * tests/seccomp-strict.c (main) [__x86_64__ && __ILP32__]: Bail out |
| using error_msg_and_skip. |
| * tests/prctl-seccomp-strict.c: Likewise. |
| |
| 2016-04-12 Dmitry V. Levin <ldv@altlinux.org> |
| |
| tests: add seccomp-filter.test. |
| * tests/seccomp-filter.c: New file. |
| * tests/seccomp-filter.test: New test. |
| * tests/.gitignore: Add seccomp-filter. |
| * tests/Makefile.am (check_PROGRAMS): Likewise. |
| (DECODER_TESTS): Add seccomp-filter.test. |
| |
| 2016-04-12 Dmitry V. Levin <ldv@altlinux.org> |
| |
| seccomp: fix decoding of sock_fprog and sock_filter structures. |
| Always print struct sock_fprog.len. |
| Fix printing of unfetchable elements in sock_filter array. |
| Fix printing of large sock_filter arrays. |
| |
| * seccomp.c (decode_fprog): Rewrite into decode_seccomp_fprog and |
| print_seccomp_fprog. |
| (print_seccomp_filter): Replace decode_fprog with print_seccomp_fprog. |
| * tests/prctl-seccomp-filter-v.c (main): Update. |
| * tests/seccomp-filter-v.c: New file. |
| * tests/seccomp-filter-v.test: New test. |
| * tests/.gitignore: Add seccomp-filter-v. |
| * tests/Makefile.am (check_PROGRAMS): Likewise. |
| (DECODER_TESTS): Add seccomp-filter-v.test. |
| |
| 2016-04-11 Dmitry V. Levin <ldv@altlinux.org> |
| |
| seccomp: print SECCOMP_* and BPF_* constants in a more compact way. |
| * seccomp.c (decode_bpf_code, decode_bpf_stmt): Replace " | " with "|". |
| * tests/prctl-seccomp-filter-v.c: Update. |
| |
| tests: rename seccomp.test to prctl-seccomp-filter-v.test. |
| * tests/.gitignore: Replace seccomp with prctl-seccomp-filter-v. |
| * tests/Makefile.am (check_PROGRAMS): Likewise. |
| (DECODER_TESTS): Replace seccomp.test with prctl-seccomp-filter-v.test. |
| * tests/seccomp.c: Rename to tests/prctl-seccomp-filter-v.c. |
| * tests/seccomp.test: Rename to tests/prctl-seccomp-filter-v.test. |
| |
| tests: add seccomp-strict.test. |
| * tests/seccomp-strict.c: New file. |
| * tests/seccomp-strict.test: New test. |
| * tests/.gitignore: Add seccomp-strict. |
| * tests/Makefile.am (check_PROGRAMS): Likewise. |
| (DECODER_TESTS): Add seccomp-strict.test. |
| |
| tests: add prctl-seccomp-strict.test. |
| * tests/prctl-seccomp-strict.c: New file. |
| * tests/prctl-seccomp-strict.test: New test. |
| * tests/.gitignore: Add prctl-seccomp-strict. |
| * tests/Makefile.am (check_PROGRAMS): Likewise. |
| (DECODER_TESTS): Add prctl-seccomp-strict.test. |
| |
| tests: bring lists back to the sorted order. |
| |
| 2016-04-10 Dmitry V. Levin <ldv@altlinux.org> |
| |
| tests/epoll_create1.c: extend for the case of ENOSYS. |
| * epoll_create1.c: Make the test work in case of epoll_create1 |
| returning ENOSYS. |
| |
| tests/epoll_ctl.c: extend epoll_ctl coverage. |
| * tests/epoll_ctl.c (main): Check EPOLL_CTL_DEL decoding. Check |
| decoding of long int descriptors and NULL struct epoll_event pointer. |
| |
| 2016-04-09 Dmitry V. Levin <ldv@altlinux.org> |
| |
| tests: add mlockall.test. |
| * tests/mlockall.c: New file. |
| * tests/mlockall.test: New test. |
| * tests/.gitignore: Add mlockall. |
| * tests/Makefile.am (check_PROGRAMS): Likewise. |
| (DECODER_TESTS): Add mlockall.test. |
| |
| 2016-04-08 Fei Jie <feij.fnst@cn.fujitsu.com> |
| |
| tests: add epoll_wait.test. |
| * tests/epoll_wait.c: New file. |
| * tests/epoll_wait.test: New test. |
| * tests/.gitignore: Add epoll_wait. |
| * tests/Makefile.am (check_PROGRAMS): Likewise. |
| (DECODER_TESTS): Add epoll_wait.test. |
| |
| tests: add epoll_ctl.test. |
| * tests/epoll_ctl.c: New file. |
| * tests/epoll_ctl.test: New test. |
| * tests/.gitignore: Add epoll_ctl. |
| * tests/Makefile.am (check_PROGRAMS): Likewise. |
| (DECODER_TESTS): Add epoll_ctl.test. |
| |
| tests: add epoll_create.test. |
| * tests/epoll_create.c: New file. |
| * tests/epoll_create.test: New test. |
| * tests/.gitignore: Add epoll_create. |
| * tests/Makefile.am (check_PROGRAMS): Likewise. |
| (DECODER_TESTS): Add epoll_create.test. |
| |
| 2016-04-08 Dmitry V. Levin <ldv@altlinux.org> |
| |
| tests/pread64-pwrite64.c: minor cleanup. |
| * tests/pread64-pwrite64.c: Do not include <sys/uio.h>. |
| |
| 2016-04-07 Dmitry V. Levin <ldv@altlinux.org> |
| |
| Fix decoding of swapon flags. |
| * swapon.c (SYS_FUNC(swapon)): Print priority regardless |
| of SWAP_FLAG_PREFER flag being set. |
| * tests/swap.c (error_msg): Handle EINVAL. |
| (main): Check decoding of swapon flags. |
| |
| tests/unlinkat.c: check AT_* decoding. |
| * tests/unlinkat.c (main): Check decoding of AT_* constants. |
| |
| tests/linkat.c: check AT_* decoding. |
| * tests/linkat.c (main): Check decoding of AT_* constants. |
| |
| 2016-04-06 Elliott Hughes <enh@google.com> |
| |
| Improve decoding of Android's PR_SET_VMA prctl. |
| Before: |
| |
| prctl(0x53564d41 /* PR_??? */, 0, 0x7f8ab53000, 4096, |
| "atexit handlers") = 0 |
| |
| After: |
| |
| prctl(PR_SET_VMA, PR_SET_VMA_ANON_NAME, 0x7fa8cbd000, 4096, |
| "atexit handlers") = 0 |
| |
| * prctl.c (SYS_FUNC(prctl)) [__ANDROID__]: Do not define PR_SET_VMA. |
| * Hard-code PR_SET_VMA_ANON_NAME, the only current sub-option. |
| * xlat/prctl_options.in: Add PR_SET_VMA. |
| |
| 2016-04-06 Fei Jie <feij.fnst@cn.fujitsu.com> |
| |
| tests: add mkdirat.test. |
| * tests/mkdirat.c: New file. |
| * tests/mkdirat.test: New test. |
| * tests/.gitignore: Add mkdirat. |
| * tests/Makefile.am (check_PROGRAMS): Likewise. |
| (DECODER_TESTS): Add mkdirat.test. |
| |
| tests: add swap.test. |
| * tests/swap.c: New file. |
| * tests/swap.test: New test. |
| * tests/.gitignore: Add swap. |
| * tests/Makefile.am (check_PROGRAMS): Likewise. |
| (DECODER_TESTS): Add swap.test. |
| |
| tests: add unlinkat.test. |
| * tests/unlinkat.c: New file. |
| * tests/unlinkat.test: New test. |
| * tests/.gitignore: Add unlinkat. |
| * tests/Makefile.am (check_PROGRAMS): Likewise. |
| (DECODER_TESTS): Add unlinkat.test. |
| |
| tests: add linkat.test. |
| * tests/linkat.c: New file. |
| * tests/linkat.test: New test. |
| * tests/.gitignore: Add linkat. |
| * tests/Makefile.am (check_PROGRAMS): Likewise. |
| (DECODER_TESTS): Add linkat.test. |
| |
| 2016-04-06 Dmitry V. Levin <ldv@altlinux.org> |
| |
| tests: add sync_file_range.test and sync_file_range2.test. |
| * configure.ac (AC_CHECK_FUNCS): Add sync_file_range. |
| * tests/sync_file_range.c: New file. |
| * tests/sync_file_range2.c: Likewise. |
| * tests/sync_file_range.test: New test. |
| * tests/sync_file_range2.test: Likewise. |
| * tests/.gitignore: Add sync_file_range and sync_file_range2. |
| * tests/Makefile.am (check_PROGRAMS): Likewise. |
| (DECODER_TESTS): Add sync_file_range.test and sync_file_range2.test. |
| |
| 2016-04-05 Dmitry V. Levin <ldv@altlinux.org> |
| |
| Add default values for SYNC_FILE_RANGE_* constants. |
| * xlat/sync_file_range_flags.in: Add default values. |
| |
| 2016-04-05 Elliott Hughes <enh@google.com> |
| |
| Fix sync_file_range2 output. |
| Before: |
| |
| sync_file_range2(3SYNC_FILE_RANGE_WAIT_BEFORE|SYNC_FILE_RANGE_WRITE| |
| SYNC_FILE_RANGE_WAIT_AFTER|0xfffffff8, 0, 0, ) |
| |
| After: |
| |
| sync_file_range2(3, SYNC_FILE_RANGE_WAIT_BEFORE|SYNC_FILE_RANGE_WRITE| |
| SYNC_FILE_RANGE_WAIT_AFTER|0xfffffff8, 0, 0) |
| |
| * sync_file_range.c (SYS_FUNC(sync_file_range2)): Output the ", " |
| in the right place. |
| |
| 2016-04-04 Dmitry V. Levin <ldv@altlinux.org> |
| |
| Replace PF_* constants with AF_* |
| AF_* constants appear to be more standardized, and in practice there's |
| always a one to one relationship between AF_* and PF_*, so let's |
| use AF_* instead of PF_*. |
| |
| * xlat/domains.in: Remove. |
| * net.c: Do not define PF_UNSPEC. Stop including "xlat/domains.h". |
| Replace PF_* with AF_*. Replace domains with addrfams. |
| * tests/inet-cmsg.c: Replace PF_INET with AF_INET. |
| * tests/net-yy-inet.c: Likewise. |
| * tests/netlink_inet_diag.c: Likewise. |
| * tests/net-accept-connect.c: Replace PF_LOCAL with AF_LOCAL. |
| * tests/net-y-unix.c: Likewise. |
| * tests/net-yy-unix.c: Likewise. |
| * tests/netlink_unix_diag.c: Likewise. |
| * tests/net.expected: Replace PF_ with AF_. |
| |
| 2016-04-03 Dmitry V. Levin <ldv@altlinux.org> |
| |
| tests: add read-write.test. |
| * tests/read-write.c: New file. |
| * tests/read-write.test: New test. |
| * tests/.gitignore: Add read-write. |
| * tests/Makefile.am (check_PROGRAMS): Likewise. |
| (DECODER_TESTS): Add read-write.test. |
| |
| 2016-04-02 Dmitry V. Levin <ldv@altlinux.org> |
| |
| tests/pread64-pwrite64.test: extend dumpio coverage. |
| * tests/pread64-pwrite64.c (dump_str, print_hex, test_dump): |
| New functions. |
| (main): Use them to test dumping of various data. |
| * tests/pread64-pwrite64.test: Update. |
| |
| tests: add hexdump_memdup function to libtests. |
| * tests/hexdump_strdup.c (hexdump_memdup): New function. |
| (hexdump_strdup): Use it. |
| * tests/tests.h (hexdump_memdup): New prototype. |
| |
| tests: add fchownat.test. |
| * tests/fchownat.c: New file. |
| * tests/fchownat.test: New test. |
| * tests/.gitignore: Add fchownat. |
| * tests/Makefile.am (check_PROGRAMS): Likewise. |
| (DECODER_TESTS): Add fchownat.test. |
| |
| tests: add fchmodat.test. |
| * tests/fchmodat.c: New file. |
| * tests/fchmodat.test: New test. |
| * tests/.gitignore: Add fchmodat. |
| * tests/Makefile.am (check_PROGRAMS): Likewise. |
| (DECODER_TESTS): Add fchmodat.test. |
| |
| Fix printing of negative offsets in pread64 and pwrite64 syscalls. |
| * io.c (SYS_FUNC(pread), SYS_FUNC(pwrite)): Print offset |
| using %lld format string. |
| * tests/pread64-pwrite64.c: New file. |
| * tests/pread64-pwrite64.test: New test. |
| * tests/.gitignore: Add pread64-pwrite64. |
| * tests/Makefile.am (check_PROGRAMS): Likewise. |
| (pread64_pwrite64_CPPFLAGS): New variable. |
| (DECODER_TESTS): Add pread64-pwrite64. |
| |
| tests/hexdump_strdup.c: add support for longer strings. |
| * tests/hexdump_strdup.c (hexdump_strdup): Output extra space character |
| before hexdumping of the 9th symbol. |
| |
| tests/preadv-pwritev.c: fix typo in error diagnostics. |
| * tests/preadv-pwritev.c (main): Fix typo in error message. |
| |
| 2016-04-01 Fei Jie <feij.fnst@cn.fujitsu.com> |
| |
| tests: add chroot.test. |
| * tests/chroot.c: New file. |
| * tests/chroot.test: New test. |
| * tests/.gitignore: Add chroot. |
| * tests/Makefile.am (check_PROGRAMS): Likewise. |
| (DECODER_TESTS): Add chroot.test. |
| |
| tests: add fdatasync.test. |
| * tests/fdatasync.c: New file. |
| * tests/fdatasync.test: New test. |
| * tests/.gitignore: Add fdatasync. |
| * tests/Makefile.am (check_PROGRAMS): Likewise. |
| (DECODER_TESTS): Add fdatasync.test. |
| |
| tests: add fsync.test. |
| * tests/fsync.c: New file. |
| * tests/fsync.test: New test. |
| * tests/.gitignore: Add fsync. |
| * tests/Makefile.am (check_PROGRAMS): Likewise. |
| (DECODER_TESTS): Add fsync.test. |
| |
| tests: add sethostname.test. |
| * tests/sethostname.c: New file. |
| * tests/sethostname.test: New test. |
| * tests/.gitignore: Add sethostname. |
| * tests/Makefile.am (check_PROGRAMS): Likewise. |
| (DECODER_TESTS): Add sethostname.test. |
| |
| 2016-04-01 Dmitry V. Levin <ldv@altlinux.org> |
| |
| Consistently handle unsigned arguments of mmap* and remap_file_pages. |
| Explicitly declare first 4 arguments of mmap* and all remap_file_pages |
| arguments as unsigned to avoid potential sign extension issues. |
| |
| * mem.c (print_mmap, SYS_FUNC(remap_file_pages)): Assign syscall |
| arguments to local variables of appropriate types. |
| |
| 2016-04-01 Dmitry V. Levin <ldv@altlinux.org> |
| |
| Consistently handle 2nd and 3rd arguments of [gs]etsockopt as unsigned. |
| The second (level) and third (optname) arguments of getsockopt and |
| setsockopt syscalls are enums, so treat them consistently as enums: |
| use "unsigned int" type to avoid potential sign extension issues. |
| |
| * net.c (print_sockopt_fd_level_name, print_getsockopt, |
| print_setsockopt): Change type of "level" and "name" arguments |
| from "int" to "unsigned int". |
| |
| 2016-04-01 Dmitry V. Levin <ldv@altlinux.org> |
| |
| Add sentinel attribute to printxvals. |
| * gcc_compat.h (ATTRIBUTE_SENTINEL): New macro. |
| * defs.h (printxvals): Add ATTRIBUTE_SENTINEL. |
| |
| Cleanup parser of ptrace syscall. |
| * process.c (print_user_offset_addr): New function for printing offset |
| address in the tracee's USER area. |
| (SYS_FUNC(ptrace)): Assign syscall arguments to local variables with |
| appropriate types. Print pid argument as int. Use switch statement |
| in the code that handles address argument. Use print_user_offset_addr |
| to print address in PTRACE_PEEKUSER and PTRACE_POKEUSER requests. |
| |
| 2016-03-31 Jeff Mahoney <jeffm@suse.com> |
| |
| Define PRI__[uxs]64 macros to print __s64 and __u64 values. |
| Rather than cast every __u64 or __s64 before printing, |
| define printing helpers for those types directly. |
| |
| * defs.h (PRI__s64, PRI__u64, PRI__x64): New macros. |
| |
| 2016-03-31 Dmitry V. Levin <ldv@altlinux.org> |
| |
| Implement dumping of preadv and pwritev syscalls. |
| * syscall.c (dumpio): Add SEN_preadv and SEN_pwritev. |
| * NEWS: Mention this. |
| * tests/preadv-pwritev.c: New file. |
| * tests/preadv-pwritev.test: New test. |
| * tests/.gitignore: Add preadv-pwritev. |
| * tests/Makefile.am (check_PROGRAMS): Likewise. |
| (preadv_pwritev_CPPFLAGS): New variable. |
| (DECODER_TESTS): Add preadv-pwritev. |
| |
| 2016-03-30 Dmitry V. Levin <ldv@altlinux.org> |
| |
| Fix decoding of preadv syscall in case of short read. |
| * io.c (SYS_FUNC(preadv)): Call tprint_iov_upto instead |
| of tprint_iov and specify syscall return value as a data size limit. |
| * NEWS: Mention it. |
| * tests/preadv.c (main): Add a test case for preadv short read. |
| |
| Fix printing of negative offsets in preadv and pwritev syscalls. |
| * io.c (print_llu_from_low_high_val): Rename to |
| print_lld_from_low_high_val, all callers changed. |
| Print value as a signed integer. |
| * tests/preadv.c: New file. |
| * tests/preadv.test: New test. |
| * tests/pwritev.c: New file. |
| * tests/pwritev.test: New test. |
| * tests/.gitignore: Add preadv and pwritev. |
| * tests/Makefile.am (check_PROGRAMS): Likewise. |
| (preadv_CPPFLAGS, pwritev_CPPFLAGS): New variables. |
| (DECODER_TESTS): Add preadv.test and pwritev.test. |
| |
| Fix printing of unreadable struct iovec. |
| * io.c (tprint_iov_upto): If the first element of iovec array is |
| unreadable, print its address without array markup. |
| * tests/readv.c (main): Check it. |
| |
| tests: factor out a part common to many simply organized test scripts. |
| * tests/init.sh (run_strace_match_diff): New function. |
| * tests/acct.test: Rewrite using run_strace_match_diff. |
| * tests/aio.test: Likewise. |
| * tests/alarm.test: Likewise. |
| * tests/chmod.test: Likewise. |
| * tests/clock_nanosleep.test: Likewise. |
| * tests/clock_xettime.test: Likewise. |
| * tests/copy_file_range.test: Likewise. |
| * tests/creat.test: Likewise. |
| * tests/dup.test: Likewise. |
| * tests/dup2.test: Likewise. |
| * tests/dup3.test: Likewise. |
| * tests/epoll_create1.test: Likewise. |
| * tests/execveat-v.test: Likewise. |
| * tests/execveat.test: Likewise. |
| * tests/fchmod.test: Likewise. |
| * tests/fcntl.test: Likewise. |
| * tests/file_handle.test: Likewise. |
| * tests/flock.test: Likewise. |
| * tests/fork-f.test: Likewise. |
| * tests/ftruncate.test: Likewise. |
| * tests/ftruncate64.test: Likewise. |
| * tests/getcwd.test: Likewise. |
| * tests/getdents.test: Likewise. |
| * tests/getdents64.test: Likewise. |
| * tests/getrandom.test: Likewise. |
| * tests/getrusage.test: Likewise. |
| * tests/getxxid.test: Likewise. |
| * tests/inet-cmsg.test: Likewise. |
| * tests/init.sh: Likewise. |
| * tests/membarrier.test: Likewise. |
| * tests/mincore.test: Likewise. |
| * tests/mknod.test: Likewise. |
| * tests/mlock2.test: Likewise. |
| * tests/mmsg.test: Likewise. |
| * tests/nanosleep.test: Likewise. |
| * tests/open.test: Likewise. |
| * tests/openat.test: Likewise. |
| * tests/pselect6.test: Likewise. |
| * tests/readdir.test: Likewise. |
| * tests/readlink.test: Likewise. |
| * tests/readv.test: Likewise. |
| * tests/recvmsg.test: Likewise. |
| * tests/rename.test: Likewise. |
| * tests/renameat.test: Likewise. |
| * tests/rt_sigpending.test: Likewise. |
| * tests/rt_sigprocmask.test: Likewise. |
| * tests/rt_sigqueueinfo.test: Likewise. |
| * tests/rt_sigsuspend.test: Likewise. |
| * tests/rt_sigtimedwait.test: Likewise. |
| * tests/rt_tgsigqueueinfo.test: Likewise. |
| * tests/sched_get_priority_mxx.test: Likewise. |
| * tests/sched_xetaffinity.test: Likewise. |
| * tests/sched_xetparam.test: Likewise. |
| * tests/sched_xetscheduler.test: Likewise. |
| * tests/seccomp.test: Likewise. |
| * tests/select.test: Likewise. |
| * tests/sendfile.test: Likewise. |
| * tests/sendfile64.test: Likewise. |
| * tests/splice.test: Likewise. |
| * tests/statx.sh: Likewise. |
| * tests/sysinfo.test: Likewise. |
| * tests/syslog.test: Likewise. |
| * tests/tee.test: Likewise. |
| * tests/time.test: Likewise. |
| * tests/timer_create.test: Likewise. |
| * tests/timer_xettime.test: Likewise. |
| * tests/timerfd_xettime.test: Likewise. |
| * tests/times-fail.test: Likewise. |
| * tests/times.test: Likewise. |
| * tests/truncate.test: Likewise. |
| * tests/truncate64.test: Likewise. |
| * tests/umask.test: Likewise. |
| * tests/umount.test: Likewise. |
| * tests/umount2.test: Likewise. |
| * tests/userfaultfd.test: Likewise. |
| * tests/vmsplice.test: Likewise. |
| * tests/xet_robust_list.test: Likewise. |
| * tests/xetitimer.test: Likewise. |
| * tests/xetpgid.test: Likewise. |
| * tests/xetpriority.test: Likewise. |
| * tests/xettimeofday.test: Likewise. |
| |
| tests: introduce $NAME. |
| * tests/init.sh (NAME): New variable, defined to ${ME_%.test}. |
| (run_prog, match_awk, match_diff, match_grep): Replace ${ME_%.test} |
| with $NAME. |
| * tests/fcntl.test: Likewise. |
| * tests/fstat.test: Likewise. |
| * tests/mmap.test: Likewise. |
| * tests/net-y-unix.test: Likewise. |
| * tests/net-yy-inet.test: Likewise. |
| * tests/net-yy-unix.test: Likewise. |
| * tests/open.test: Likewise. |
| * tests/openat.test: Likewise. |
| * tests/poll.test: Likewise. |
| * tests/ppoll.test: Likewise. |
| * tests/readlink.test: Likewise. |
| * tests/select.test: Likewise. |
| * tests/statx.sh: Likewise. |
| * tests/uname.test: Likewise. |
| |
| 2016-03-30 Dmitry V. Levin <ldv@altlinux.org> |
| |
| tests: move definitions of $OUT and $ERR to init.sh. |
| As virtually every test defines either one or both of OUT and ERR |
| variables and these definitions are exactly the same, move definitions |
| of these variables from individual tests to init.sh. |
| |
| * tests/init.sh (OUT, ERR): New variables. |
| * tests/ipc.sh: Remove initialization of OUT variable. |
| * tests/statx.sh: Likewise. |
| * tests/*.test: Remove initialization of OUT and ERR variables. |
| |
| 2016-03-29 Dmitry V. Levin <ldv@altlinux.org> |
| |
| tests: simplify sendfile.test and sendfile64.test. |
| Use the executable itself for input by default. |
| |
| * tests/sendfile.c (main): Use av[0] instead of av[1] for input. |
| * tests/sendfile64.c (main): Likewise. |
| * tests/sendfile.test: Invoke run_prog without arguments. |
| * tests/sendfile64.test: Likewise. |
| |
| 2016-03-29 Dmitry V. Levin <ldv@altlinux.org> |
| |
| open.test, openat.test: lift /proc requirement. |
| While -P option needs /proc to match descriptors, it does not use |
| /proc to match pathnames. As these tests do not need descriptor |
| match, the /proc requirement can be safely lifted. |
| |
| * tests/open.test: Lift /proc/self/fd/ requirement. |
| * tests/openat.test: Likewise. |
| |
| 2016-03-29 Dmitry V. Levin <ldv@altlinux.org> |
| |
| quotactl: add decoding of Q_GETNEXTQUOTA and Q_XGETNEXTQUOTA. |
| * quota.c (if_nextdqblk): New structure. |
| (decode_cmd_data): Handle Q_GETNEXTQUOTA and Q_XGETNEXTQUOTA. |
| |
| Update Q_* constants. |
| * xlat/quotacmds.in: Add Q_GETNEXTQUOTA and Q_XGETNEXTQUOTA introduced |
| by linux kernel commits v4.6-rc1~65^2~9^2~5 and v4.6-rc1~65^2~9^2~6. |
| |
| Update CLONE_* constants. |
| * xlat/clone_flags.in: Rename CLONE_STOPPED to CLONE_NEWCGROUP. |
| The former was removed by linux kernel commit v2.6.38-rc1~217. |
| The latter was introduced by linux kernel commit v4.6-rc1~67^2~8. |
| |
| Update BPF_MAP_TYPE_* constants. |
| * xlat/bpf_map_types.in: Add BPF_MAP_TYPE_PERCPU_HASH, |
| BPF_MAP_TYPE_PERCPU_ARRAY, and BPF_MAP_TYPE_STACK_TRACE introduced by |
| linux kernel commits v4.6-rc1~91^2~326^2~5, v4.6-rc1~91^2~326^2~4, and |
| v4.6-rc1~91^2~212^2~1, respectively. |
| |
| Update SO_* constants. |
| * xlat/sockoptions.in: Add SO_CNX_ADVICE introduced by linux kernel |
| commit v4.6-rc1~91^2~176. |
| |
| Update SEGV_* constants. |
| * xlat/sigsegv_codes.in: Add SEGV_PKUERR introduced by linux kernel |
| commit v4.6-rc1~68^2~23. |
| |
| avr32: wire up copy_file_range syscall. |
| * linux/avr32/syscallent.h [325]: Add copy_file_range entry. |
| |
| 2016-03-28 JayRJoshi <jay.r.joshi100@gmail.com> |
| |
| tests/uname.test: check abbreviated output, use print_quoted_string. |
| * tests/uname.c (main): Use print_quoted_string to print |
| utsname members. Add abbrev check. |
| * tests/uname.test: Add abbrev check. |
| |
| 2016-03-28 Dmitry V. Levin <ldv@altlinux.org> |
| |
| faccessat.test: robustify against libcs invoking faccessat syscall on their own |
| * tests/faccessat.c (TMP_FILE): Rename to sample, change its value |
| to "faccessat.sample". |
| * tests/faccessat.test: Rewrite using openat.test. |
| |
| openat.test: robustify against libcs invoking openat syscall on their own |
| * tests/openat.c (main): Rename fname to sample, change its value |
| to "openat.sample". |
| * tests/openat.test: Use -P option to filter out openat syscalls |
| made by libc and dynamic linker. |
| |
| tests: add open.test. |
| * tests/open.c: New file. |
| * tests/open.test: New test. |
| * tests/.gitignore: Add open. |
| * tests/Makefile.am (check_PROGRAMS): Likewise. |
| (DECODER_TESTS): Add open.test. |
| |
| 2016-03-27 Dmitry V. Levin <ldv@altlinux.org> |
| |
| Update generic ioctl entries from linux 4.5. |
| * linux/64/ioctls_inc.h: Update from linux v4.5 using ioctls_gen.sh. |
| * linux/32/ioctls_inc_align32.h: Likewise. |
| * linux/32/ioctls_inc_align64.h: Likewise. |
| * NEWS: Mention this. |
| |
| 2016-03-26 Dmitry V. Levin <ldv@altlinux.org> |
| |
| maint: update for linux 4.5. |
| * maint/ioctls_sym.sh: Update workarounds for drm/*_drm.h files. |
| Add workarounds for xen/gntdev.h and net/nfc/nci_core.h files. |
| Update path of saa6588.h and exynos-fimc.h files. |
| |
| 2016-03-25 Dmitry V. Levin <ldv@altlinux.org> |
| |
| Fix decoding of device numbers in mknod and mknodat syscalls. |
| * mknod.c (decode_mknod): Treat device number argument as unsigned int. |
| * tests/mknod.c: Include <sys/sysmacros.h> or <sys/mkdev.h> |
| for definition of makedev macro. |
| (main): Add a check for a character special file. |
| |
| 2016-03-25 Dmitry V. Levin <ldv@altlinux.org> |
| |
| sparc64: fix decoding of mknod and mknodat syscalls for sparc personality |
| Remove remnants of solaris personality support in mknod parser |
| that resulted to sparc personality being decoded as old solaris |
| personality. This complements commit v4.10-45-gdf4dd8b and fixes |
| commit v4.10-46-g588a90f. |
| |
| * mknod.c (decode_mknod) [SPARC || SPARC64]: Remove. |
| |
| 2016-03-25 Katerina Koukiou <k.koukiou@googlemail.com> |
| |
| tests: add openat.test. |
| * tests/openat.c: New file. |
| * tests/openat.test: New test. |
| * tests/.gitignore: Add openat. |
| * tests/Makefile.am (check_PROGRAMS): Likewise. |
| (DECODER_TESTS): Add openat.test. |
| |
| 2016-03-25 Fei Jie <feij.fnst@cn.fujitsu.com> |
| |
| tests: add renameat.test. |
| * tests/renameat.c: New file. |
| * tests/renameat.test: New test. |
| * tests/.gitignore: Add renameat. |
| * tests/Makefile.am (check_PROGRAMS): Likewise. |
| (DECODER_TESTS): Add renameat.test. |
| |
| tests: add faccessat.test. |
| * tests/faccessat.c: New file. |
| * tests/faccessat.test: New test. |
| * tests/.gitignore: Add faccessat. |
| * tests/Makefile.am (check_PROGRAMS): Likewise. |
| (DECODER_TESTS): Add faccessat.test. |
| |
| tests: add creat.test. |
| * tests/creat.c: New file. |
| * tests/creat.test: New test. |
| * tests/.gitignore: Add creat. |
| * tests/Makefile.am (check_PROGRAMS): Likewise. |
| (DECODER_TESTS): Add creat.test. |
| |
| tests: add mknod.test. |
| * tests/mknod.c: New file. |
| * tests/mknod.test: New test. |
| * tests/.gitignore: Add mknod. |
| * tests/Makefile.am (check_PROGRAMS): Likewise. |
| (DECODER_TESTS): Add mknod.test. |
| |
| tests: add syslog.test. |
| * tests/syslog.c: New file. |
| * tests/syslog.test: New test. |
| * tests/.gitignore: Add syslog. |
| * tests/Makefile.am (check_PROGRAMS): Likewise. |
| (DECODER_TESTS): Add syslog.test. |
| |
| 2016-03-23 JayRJoshi <jay.r.joshi100@gmail.com> |
| |
| tests/scm_rights-fd.test: fix pathname regex. |
| Pathname containing >, }, or non-printable characters was resulting |
| in failing of the test. |
| |
| * tests/scm_rights-fd.test: Fix pathname regex and simplify things. |
| |
| 2016-03-24 Dmitry V. Levin <ldv@altlinux.org> |
| |
| tests: add strace-r.test. |
| * tests/strace-r.expected: New file. |
| * tests/strace-r.test: New test. |
| * tests/Makefile.am (MISC_TESTS): Add it. |
| (EXTRA_DIST): Add strace-r.expected. |
| |
| tests: add strace-ttt.test. |
| * tests/strace-ttt.test: New test. |
| * tests/Makefile.am (MISC_TESTS): Add it. |
| |
| tests: add strace-tt.test. |
| * tests/strace-tt.test: New test. |
| * tests/Makefile.am (MISC_TESTS): Add it. |
| |
| tests: add strace-t.test. |
| * tests/strace-t.test: New test. |
| * tests/Makefile.am (MISC_TESTS): Add it. |
| |
| tests: add strace-T.test. |
| * tests/strace-T.expected: New file. |
| * tests/strace-T.test: New test. |
| * tests/Makefile.am (MISC_TESTS): Add it. |
| (EXTRA_DIST): Add strace-T.expected. |
| |
| 2016-03-23 Dmitry V. Levin <ldv@altlinux.org> |
| |
| tests: split out tests of specific decoders. |
| Split TESTS into three groups: tests of specific decoders, libunwind |
| tests, and all other tests. |
| |
| * tests/Makefile.am (TESTS): Move attach-f-p.test, attach-p-cmd.test, |
| bexecve.test, count-f.test, count.test, detach-running.test, |
| detach-sleeping.test, detach-stopped.test, dumpio.test, |
| filter-unavailable.test, fork-f.test, ksysent.test, opipe.test, |
| pc.test, qual_syscall.test, redirect.test, restart_syscall.test, |
| strace-f.test, and vfork-f.test to MISC_TESTS. |
| Move remaining tests except $(LIBUNWIND_TESTS) to DECODER_TESTS. |
| Add $(DECODER_TESTS) and $(MISC_TESTS). |
| |
| 2016-03-23 JayRJoshi <jay.r.joshi100@gmail.com> |
| |
| tests: add getcwd.test. |
| * tests/getcwd.c: New file. |
| * tests/getcwd.test: New test. |
| * tests/.gitignore: Add getcwd. |
| * tests/Makefile.am (check_PROGRAMS): Likewise. |
| (TESTS): Add getcwd.test. |
| |
| tests: add print_quoted_string function to libtests. |
| * tests/tests.h (print_quoted_string): New prototype. |
| * tests/print_quoted_string.c: New file. |
| * tests/Makefile.am (libtests_a_SOURCES): Add it. |
| |
| 2016-03-17 Fei Jie <feij.fnst@cn.fujitsu.com> |
| |
| tests: add xetpriority.test. |
| * resource.c (SYS_FUNC(getpriority), SYS_FUNC(setpriority)): Print |
| the second syscall argument using %d format. |
| * tests/xetpriority.c: New file. |
| * tests/xetpriority.test: New test. |
| * tests/.gitignore: Add xetpriority. |
| * tests/Makefile.am (check_PROGRAMS): Likewise. |
| (TESTS): Add xetpriority.test. |
| |
| 2016-03-15 Fei Jie <feij.fnst@cn.fujitsu.com> |
| |
| tests: add flock.test. |
| * tests/flock.c: New file. |
| * tests/flock.test: New test. |
| * tests/.gitignore: Add flock. |
| * tests/Makefile.am (check_PROGRAMS): Likewise. |
| (TESTS): Add flock.test. |
| |
| tests: add sched_xetscheduler.test. |
| * tests/sched_xetscheduler.c: New file. |
| * tests/sched_xetscheduler.test: New test. |
| * tests/.gitignore: Add sched_xetscheduler. |
| * tests/Makefile.am (check_PROGRAMS): Likewise. |
| (TESTS): Add sched_xetscheduler.test. |
| |
| 2016-03-15 Dmitry V. Levin <ldv@altlinux.org> |
| |
| alpha: fix SOCK_DIAG_BY_FAMILY tests. |
| This complements commit v4.9-368-g301c65c. |
| |
| * tests/netlink_inet_diag.c (check_responses): Align "buf" |
| on sizeof(long) boundary. |
| * tests/netlink_unix_diag.c (check_responses): Likewise. |
| |
| 2016-03-14 Dmitry V. Levin <ldv@altlinux.org> |
| |
| Update EPOLL* constants. |
| * xlat/epollevents.in: Add EPOLLWAKEUP and EPOLLEXCLUSIVE. |
| |
| 2016-03-12 Dmitry V. Levin <ldv@altlinux.org> |
| |
| tests: add count-f.test. |
| * tests/count-f.c: New file. |
| * tests/count-f.expected: Likewise. |
| * tests/count-f.test: New test. |
| * tests/.gitignore: Add count-f. |
| * tests/Makefile.am (check_PROGRAMS): Likewise. |
| (count_f_LDADD): New variable. |
| (EXTRA_DIST): Add count-f.expected. |
| (TESTS): Add count-f.test. |
| |
| 2016-02-21 Dmitry V. Levin <ldv@altlinux.org> |
| |
| hppa: wire up copy_file_range syscall. |
| * linux/hppa/syscallent.h [346]: Add copy_file_range entry. |
| |
| 2016-03-11 Fei Jie <feij.fnst@cn.fujitsu.com> |
| |
| tests: filter strace output in uname test. |
| * tests/uname.test: Use uniq to filter strace output. |
| |
| 2016-03-10 Fei Jie <feij.fnst@cn.fujitsu.com> |
| |
| tests: add sched_xetparam.test. |
| * tests/sched_xetparam.c: New file. |
| * tests/sched_xetparam.test: New test. |
| * tests/.gitignore: Add sched_xetparam. |
| * tests/Makefile.am (check_PROGRAMS): Likewise. |
| (TESTS): Add sched_xetparam.test. |
| |
| tests: add sched_get_priority_mxx.test. |
| * tests/sched_get_priority_mxx.c: New file. |
| * tests/sched_get_priority_mxx.test: New test. |
| * tests/.gitignore: Add sched_get_priority_mxx. |
| * tests/Makefile.am (check_PROGRAMS): Likewise. |
| (TESTS): Add sched_get_priority_mxx.test. |
| |
| tests: add dup.test, dup2.test, and dup3.test. |
| * tests/dup.c: New file. |
| * tests/dup.test: New test. |
| * tests/dup2.c: New file. |
| * tests/dup2.test: New test. |
| * tests/dup3.c: New file. |
| * tests/dup3.test: New test. |
| * tests/.gitignore: Add dup, dup2, and dup3. |
| * tests/Makefile.am (check_PROGRAMS): Likewise. |
| (TESTS): Add dup.test, dup2.test, and dup3.test. |
| |
| 2016-03-10 Fabien Siron <fabien.siron@epita.fr> |
| |
| tests: add fchmod.test. |
| * tests/fchmod.c: New file. |
| * tests/fchmod.test: New test. |
| * tests/.gitignore: Add fchmod. |
| * tests/Makefile.am (check_PROGRAMS): Likewise. |
| (TESTS): Add fchmod.test. |
| |
| 2016-03-09 Fei Jie <feij.fnst@cn.fujitsu.com> |
| |
| tests: add acct.test. |
| * tests/acct.c: New file. |
| * tests/acct.test: New test. |
| * tests/.gitignore: Add acct. |
| * tests/Makefile.am (check_PROGRAMS): Likewise. |
| (TESTS): Add acct.test. |
| |
| 2016-03-07 Anchit Jain <anchitjain1234@gmail.com> |
| |
| tests: add chmod.test. |
| * tests/chmod.c: New file. |
| * tests/chmod.test: New test. |
| * tests/.gitignore: Add chmod. |
| * tests/Makefile.am (check_PROGRAMS): Likewise. |
| (TESTS): Add chmod.test. |
| |
| 2016-03-05 Nahim El Atmani <naam@lse.epita.fr> |
| |
| Reduce memory usage while managing tcbs allocation. |
| * strace.c (init): Remove initial memory allocation for tcbtab. |
| (expand_tcbtab): Do initial memory allocation when tcbtabsize == 0. |
| |
| Reviewed-By: Gabriel Laskar <gabriel@lse.epita.fr> |
| Reported-by: haris iqbal <haris.phnx@gmail.com> |
| |
| 2016-03-01 Fei Jie <feij.fnst@cn.fujitsu.com> |
| |
| tests: add umask.test. |
| * tests/umask.c: New file. |
| * tests/umask.test: New test. |
| * tests/.gitignore: Add umask. |
| * tests/Makefile.am (check_PROGRAMS): Likewise. |
| (TESTS): Add umask.test. |
| |
| tests: add rename.test. |
| * tests/rename.c: New file. |
| * tests/rename.test: New test. |
| * tests/.gitignore: Add rename. |
| * tests/Makefile.am (check_PROGRAMS): Likewise. |
| (TESTS): Add rename.test. |
| |
| tests: add uname.test. |
| * tests/uname.c: New file. |
| * tests/uname.test: New test. |
| * tests/.gitignore: Add uname. |
| * tests/Makefile.am (check_PROGRAMS): Likewise. |
| (TESTS): Add uname.test. |
| |
| 2016-02-20 Dmitry V. Levin <ldv@altlinux.org> |
| |
| mips: wire up copy_file_range syscall. |
| * linux/mips/syscallent-n32.h [6324]: Add copy_file_range entry. |
| * linux/mips/syscallent-n64.h [5320]: Likewise. |
| * linux/mips/syscallent-o32.h [4360]: Likewise. |
| |
| 2016-02-19 Dmitry V. Levin <ldv@altlinux.org> |
| |
| tests: add rt_sigsuspend.test. |
| * tests/rt_sigsuspend.c: New file. |
| * tests/rt_sigsuspend.test: New test. |
| * tests/.gitignore: Add rt_sigsuspend. |
| * tests/Makefile.am (check_PROGRAMS): Likewise. |
| (TESTS): Add rt_sigsuspend.test. |
| |
| Print pid_t arguments of rt_sigqueueinfo and rt_tgsigqueueinfo as int. |
| * signal.c (SYS_FUNC(rt_sigqueueinfo)): Print first syscall argument |
| using %d format. |
| (SYS_FUNC(rt_tgsigqueueinfo)): Print first and second syscall arguments |
| using %d format. |
| * tests/rt_tgsigqueueinfo.c: New file. |
| * tests/rt_tgsigqueueinfo.test: New test. |
| * tests/.gitignore: Add rt_tgsigqueueinfo. |
| * tests/Makefile.am (check_PROGRAMS): Likewise. |
| (TESTS): Add rt_tgsigqueueinfo.test. |
| |
| getrusage.test: fix build on x32. |
| * tests/getrusage.c: Include <stdint.h> |
| (main): Print members of struct timeval using %ju format. |
| |
| 2016-02-19 Dmitry V. Levin <ldv@altlinux.org> |
| |
| getrusage.test: check that getrusage parser does not access extra memory |
| Place struct rusage at the end of an allocated memory page followed by |
| an inaccessible page. |
| |
| * tests/getrusage.c (main): Use tail_alloc. |
| |
| 2016-02-19 Fei Jie <feij.fnst@cn.fujitsu.com> |
| |
| tests: add getrusage.test. |
| * tests/getrusage.c: New file. |
| * tests/getrusage.test: New test. |
| * tests/.gitignore: Add getrusage. |
| * tests/Makefile.am (check_PROGRAMS): Likewise. |
| (TESTS): Add getrusage.test. |
| |
| 2016-02-19 Dmitry V. Levin <ldv@altlinux.org> |
| |
| Print rt_sigtimedwait return value as a signal name. |
| * signal.c (SYS_FUNC(rt_sigtimedwait)): Decode return value. |
| * tests/rt_sigtimedwait.c: New file. |
| * tests/rt_sigtimedwait.test: New test. |
| * tests/.gitignore: Add rt_sigtimedwait. |
| * tests/Makefile.am (check_PROGRAMS): Likewise. |
| (TESTS): Add rt_sigtimedwait.test. |
| |
| tests: add rt_sigprocmask.test. |
| * tests/rt_sigprocmask.c: New file. |
| * tests/rt_sigprocmask.test: New test. |
| * tests/.gitignore: Add rt_sigprocmask. |
| * tests/Makefile.am (check_PROGRAMS): Likewise. |
| (TESTS): Add rt_sigprocmask.test. |
| |
| Fix corner cases of rt_sigpending syscall decoder. |
| * signal (print_sigset_addr_len_limit): New function, cloned from |
| print_sigset_addr_len with added minimal length argument. |
| Treat length less than minimal length or greater than NSIG/8 as invalid. |
| Do not align length to 4-byte boundary. Align destination buffer |
| to 4-byte boundary and initialize it with zeroes so that subsequent |
| call to sprintsigmask_n will not access uninitialized data. |
| (print_sigset_addr_len): Turn into a wrapper around |
| print_sigset_addr_len_limit with current_wordsize |
| as a minimal length argument. |
| (SYS_FUNC(rt_sigpending)): Call print_sigset_addr_len_limit |
| instead of print_sigset_addr_len with 1 as a minimal length argument. |
| * tests/rt_sigpending.c: New file. |
| * tests/rt_sigpending.test: New test. |
| * tests/.gitignore: Add rt_sigpending. |
| * tests/Makefile.am (check_PROGRAMS): Likewise. |
| (TESTS): Add rt_sigpending.test. |
| |
| 2016-02-19 Dmitry V. Levin <ldv@altlinux.org> |
| |
| Change unix_diag requests back to use full dump instead of exact match. |
| Unfortunately, 64-bit linux kernel has a bug in matching inode numbers |
| greater than INT_MAX, so unix_diag exact match is not reliable. |
| |
| This partially reverts commit 69bfc89770152033d4aa0bc5673fc46e65d89838. |
| |
| * socketutils.c (unix_send_query): Add NLM_F_DUMP to nlmsg_flags, |
| remove initialization of udiag_cookie. |
| * tests/netlink_unix_diag.c (send_query): Remove "inode" argument, |
| add NLM_F_DUMP to nlmsg_flags, remove initialization of udiag_ino |
| and udiag_cookie. |
| (check_responses): Remove "inode" argument and its use. |
| (main): Remove invocation of inode_of_sockfd and passing of listening |
| socket inode to send_query and check_responses. |
| |
| 2016-02-19 Michael Shigorin <mike@altlinux.org> |
| |
| tests: avoid using cpp -dD. |
| -dD is less portable across some peculiar preprocessors. |
| |
| tests/Makefile.am (ksysent.h): Use cpp -dM instead of cpp -dD. |
| |
| 2016-02-16 Dmitry V. Levin <ldv@altlinux.org> |
| |
| tests: add poll.test. |
| * tests/poll.c: New file. |
| * tests/poll.test: New test. |
| * tests/.gitignore: Add poll. |
| * tests/Makefile.am (check_PROGRAMS): Likewise. |
| (TESTS): Add poll.test. |
| |
| Fix abbreviated output of poll and ppoll decoders. |
| * poll.c (decode_poll_entering, decode_poll_exiting): Fix corner cases |
| of abbreviated output. |
| * tests/ppoll-v.expected: Update. |
| * tests/ppoll.expected: Update. |
| * tests/ppoll.test: Update. |
| |
| Print unfetchable address in poll and ppoll decoders. |
| * poll.c (decode_poll_entering): Replace umove call with |
| umove_or_printaddr. |
| (decode_poll_exiting): Print unfetchable address when umove call fails. |
| |
| Print offsets in lseek and _llseek syscalls as signed integers. |
| * lseek.c (SYS_FUNC(lseek)): Print offset using %lld format. |
| (SYS_FUNC(llseek)): Likewise. Treat high and low components of offset |
| as unsigned long integers. |
| * tests/llseek.c (main): Check that negative offset is printed properly. |
| * tests/lseek.c (main): Likewise. |
| |
| 2016-02-14 Dmitry V. Levin <ldv@altlinux.org> |
| |
| tests: add xetpgid.test. |
| * tests/xetpgid.c: New file. |
| * tests/xetpgid.test: New test. |
| * tests/.gitignore: Add xetpgid. |
| * tests/Makefile.am (check_PROGRAMS): Likewise. |
| (TESTS): Add xetpgid.test. |
| |
| tests: add alarm.test. |
| * tests/alarm.c: New file. |
| * tests/alarm.test: New test. |
| * tests/.gitignore: Add alarm. |
| * tests/Makefile.am (check_PROGRAMS): Likewise. |
| (TESTS): Add alarm.test. |
| |
| Replace printargs_lu and printargs_ld with printargs_u and printargs_d. |
| * defs.h (printargs_lu): Rename to printargs_u. |
| (printargs_ld): Rename to printargs_d. |
| * syscall.c (printargs_lu): Rename to printargs_u. Replace %lu with %u. |
| (printargs_ld): Rename to printargs_d. Replace %ld with %d. |
| * linux/dummy.h (sys_getpgrp): Change to printargs. |
| (sys_alarm): Change to printargs_u. |
| (sys_getpgid, sys_getsid, sys_nice, sys_setpgid, sys_setpgrp, |
| sys_timer_delete, sys_timer_getoverrun): Change to printargs_d. |
| |
| Change printargs_lu and printargs_ld to return RVAL_DECODED. |
| * syscall.c (printargs_lu, printargs_ld): Return RVAL_DECODED. |
| |
| redirect.test: fix the way how strace output is discarded. |
| * tests/redirect.test: Disable tracing of syscalls, signals, |
| and exit status instead of redirecting strace output to /dev/null. |
| |
| tests: extend coverage of struct iovec arrays. |
| * tests/readv.c (main): Check decoding of empty, inaccessible, |
| and partially inaccessible iovec arrays. |
| * tests/readv.test: Update. |
| |
| Implement dumping of vmsplice syscall. |
| * syscall.c (dumpio): Add SEN_vmsplice. |
| * NEWS: Mention this. |
| * tests/vmsplice.c: New file. |
| * tests/vmsplice.test: New test. |
| * tests/.gitignore: Add vmsplice. |
| * tests/Makefile.am (check_PROGRAMS): Likewise. |
| (TESTS): Add vmsplice.test. |
| |
| tests: add tee.test. |
| * tests/tee.c: New file. |
| * tests/tee.test: New test. |
| * tests/.gitignore: Add tee. |
| * tests/Makefile.am (check_PROGRAMS): Likewise. |
| (TESTS): Add tee.test. |
| |
| Fix printing of negative offsets in splice syscall. |
| * io.c (SYS_FUNC(splice)): Use PRId64 instead of PRIu64 for printing |
| offsets. |
| * tests/splice.c: New file. |
| * tests/splice.test: New test. |
| * tests/.gitignore: Add splice. |
| * tests/Makefile.am (check_PROGRAMS): Likewise. |
| (TESTS): Add splice.test. |
| |
| Implement copy_file_range syscall decoding. |
| * copy_file_range.c: New file. |
| * Makefile.am (strace_SOURCES): Add it. |
| * linux/32/syscallent.h (copy_file_range): New entry. |
| * linux/64/syscallent.h: Likewise. |
| * linux/arm/syscallent.h: Likewise. |
| * linux/i386/syscallent.h: Likewise. |
| * linux/ia64/syscallent.h: Likewise. |
| * linux/m68k/syscallent.h: Likewise. |
| * linux/powerpc/syscallent.h: Likewise. |
| * linux/powerpc64/syscallent.h: Likewise. |
| * linux/s390/syscallent.h: Likewise. |
| * linux/s390x/syscallent.h: Likewise. |
| * linux/sparc/syscallent.h: Likewise. |
| * linux/sparc64/syscallent.h: Likewise. |
| * linux/x32/syscallent.h: Likewise. |
| * linux/x86_64/syscallent.h: Likewise. |
| * pathtrace.c (pathtrace_match): Add SEN_copy_file_range. |
| * NEWS: Mention new syscall parser. |
| * tests/copy_file_range.c: New file. |
| * tests/copy_file_range.test: New test. |
| * tests/.gitignore: Add copy_file_range. |
| * tests/Makefile.am (check_PROGRAMS): Likewise. |
| (TESTS): Add copy_file_range.test. |
| |
| Update fs *_MAGIC constants. |
| * xlat/fsmagic.in: Add CGROUP2_SUPER_MAGIC and OVERLAYFS_SUPER_MAGIC. |
| |
| Update IPV6_* constants. |
| * xlat/sockipv6options.in: Add IPV6_HDRINCL. |
| |
| Update SO_* constants. |
| * xlat/sockoptions.in: Add SO_ATTACH_REUSEPORT_CBPF |
| and SO_ATTACH_REUSEPORT_EBPF. |
| |
| Update MADV_* constants. |
| * xlat/madvise_cmds.in: Add MAD_FREE. |
| |
| 2016-02-13 Dmitry V. Levin <ldv@altlinux.org> |
| |
| tests: robustify execve and execveat tests. |
| * tests/execve.c (main): Use one page gap between two mapped regions |
| for an address that is more likely to be not yet mapped. |
| * tests/execveat.c (main): Likewise. |
| |
| tests: simplify execve test. |
| * tests/execve.c (main): Simplify the test assuming that execve syscall |
| never returns ENOSYS. |
| |
| 2016-02-13 Dmitry V. Levin <ldv@altlinux.org> |
| |
| Fix numbers of syscall arguments in syscall tables. |
| This semi-automatic change brings syscall tables in sync with kernel's |
| include/linux/syscalls.h file. |
| |
| * linux/aarch64/syscallent.h (recv): Fix nargs. |
| * linux/alpha/syscallent.h (sigaltstack, init_module, |
| sched_getscheduler, settimeofday): Likewise. |
| * linux/arm/syscallent.h (signal, pciconfig_iobase, msgrcv, msgctl, |
| shmat, shmdt, shmctl, semtimedop, get_mempolicy, set_mempolicy, |
| timerfd_create): Likewise. |
| * linux/bfin/syscallent.h (signal, delete_module): Likewise. |
| * linux/hppa/syscallent.h (init_module, munlockall, sched_getscheduler, |
| io_cancel, set_tid_address, listxattr, llistxattr, flistxattr, |
| removexattr, lremovexattr, fremovexattr): Likewise. |
| * linux/i386/syscallent.h (signal, mmap): Likewise. |
| * linux/ia64/syscallent.h (init_module, readv, writev, |
| sched_getscheduler): Likewise. |
| * linux/m68k/syscallent.h (signal, request_key): Likewise. |
| * linux/microblaze/syscallent.h (signal, clone, fstatfs64, vmsplice): |
| Likewise. |
| * linux/mips/syscallent-n32.h (getpgid, statfs, fstatfs, init_module, |
| delete_module): Likewise. |
| * linux/mips/syscallent-n64.h (getpgid, statfs, fstatfs, init_module, |
| delete_module): Likewise. |
| * linux/mips/syscallent-o32.h (signal, statfs, fstatfs, ioperm, |
| fstatfs64): Likewise. |
| * linux/powerpc/syscallent.h (signal, spu_run, spu_create): Likewise. |
| * linux/powerpc64/syscallent.h (signal, pread64, pwrite64, readahead, |
| fadvise64, lookup_dcookie, spu_run, spu_create, sync_file_range2, |
| fallocate, preadv, pwritev, fanotify_mark): Likewise. |
| * linux/s390/syscallent.h (signal, mmap, lookup_dcookie, ipc): Likewise. |
| * linux/s390x/syscallent.h (signal, ipc): Likewise. |
| * linux/sh/syscallent.h (signal, ipc, munlockall, fstatfs64, vmsplice): |
| Likewise. |
| * linux/sh64/syscallent.h (signal, ipc, msgrcv, msgctl, shmat, shmdt, |
| shmctl, fstatfs64, vmsplice): Likewise. |
| * linux/sparc/syscallent.h (ptrace, dup, signal, ipc): Likewise. |
| * linux/sparc64/syscallent.h (ptrace, dup, signal, pread64, pwrite64, |
| readahead, lookup_dcookie, fadvise64, fadvise64_64, ipc, |
| sync_file_range, fallocate, preadv, pwritev, fanotify_mark): Likewise. |
| * linux/x32/syscallent.h (64:recvmsg): Likewise. |
| * linux/xtensa/syscallent.h (mremap, futex, reboot, init_module, |
| delete_module, request_key, getcpu, ioprio_set, ioprio_get, utimensat, |
| futimesat, fchmodat, faccessat): Likewise. |
| * NEWS: Mention this fix. |
| |
| 2016-02-13 Dmitry V. Levin <ldv@altlinux.org> |
| |
| s390: decode fadvise64 and fadvise64_64. |
| * linux/s390/syscallent.h (fadvise64): Set sys_func. |
| (fadvise64_64): Set nargs and sys_func. |
| |
| mips n64: use the most optimal parser for fadvise64 syscall. |
| * linux/mips/syscallent-n64.h (fadvise64): Replace SEN(fadvise64_64) |
| with SEN(fadvise64). |
| |
| ia64: decode fstatfs64 and statfs64. |
| * linux/ia64/syscallent.h (fstatfs64, statfs64): Set nargs and sys_func. |
| |
| 2016-02-13 Dmitry V. Levin <ldv@altlinux.org> |
| |
| alpha, ia64, mips, sh, sh64: fix the number of pipe syscall arguments. |
| On alpha, ia64, mips, sh, sh64, sparc, and sparc64 architectures |
| pipe syscall does not take arguments. |
| |
| * linux/alpha/syscallent.h (pipe): Change nargs to 0. |
| * linux/ia64/syscallent.h (pipe): Likewise. |
| * linux/mips/syscallent-n32.h (pipe): Likewise. |
| * linux/mips/syscallent-n64.h (pipe): Likewise. |
| * linux/mips/syscallent-o32.h (pipe): Likewise. |
| * linux/sh/syscallent.h (pipe): Likewise. |
| * linux/sh64/syscallent.h (pipe): Likewise. |
| |
| 2016-02-13 Dmitry V. Levin <ldv@altlinux.org> |
| |
| alpha, ia64, mips, sh*, sparc*: fix error path decoding of pipe syscall. |
| * net.c (do_pipe) [HAVE_GETRVAL2]: Remove. |
| Always call decode_pair_fd on exiting. |
| (SYS_FUNC(pipe)) [HAVE_GETRVAL2]: Call printpair_fd instead of do_pipe. |
| |
| Fix pathtrace match for pipe2 syscall. |
| * pathtrace.c (pathtrace_match): As pipe2 syscall has no descriptors |
| or paths to test, move SEN_pipe2 to the appropriate category. |
| |
| avr32: wire up missing syscalls. |
| * linux/avr32/syscallent.h [322..324]: Add userfaultfd, membarrier, |
| and mlock2 entries. |
| |
| 2016-02-12 Dmitry V. Levin <ldv@altlinux.org> |
| |
| tests: check decoding of madvise, mlockall, mremap, and msync syscalls. |
| * tests/mmap.c (main): Change output format from regexp to verbatim. |
| Add tests for madvise, mlockall, mremap, and msync syscalls. |
| * tests/mmap.test: Convert from match_grep to match_diff. |
| Add madvise, mlockall, mremap, and msync syscalls to syscall filter. |
| |
| 2016-02-11 Dmitry V. Levin <ldv@altlinux.org> |
| |
| Simplify decoding of waitpid and wait4 syscalls. |
| * wait.c (printwaitn): Replace "n" and "bitness" integer arguments |
| with a single print_rusage function pointer. All callers updated. |
| |
| waitid: print pid argument as int. |
| * wait.c (SYS_FUNC(waitid)): As the type of second syscall argument |
| in the kernel is pid_t, print it as int. |
| |
| waitid: always print 5th argument. |
| * wait.c (SYS_FUNC(waitid)): Do not check for tcp->s_ent->nargs |
| as waitid syscall has 5 arguments. |
| |
| socketutils: add const qualifier to variables. |
| * socketutils.c (cache_and_print_inode_details): Make "details" |
| parameter const. |
| (print_sockaddr_by_inode_cached): Make "e" variable const. |
| (inet_send_query): Make struct nlmsghdr and struct inet_diag_req_v2 |
| members const. Make "msg" variable const. |
| (inet_parse_response): Make "data" parameter and diag_msg variable const. |
| (receive_responses): Make "h" and "rc" variables const. |
| (unix_send_query): Make struct nlmsghdr and struct unix_diag_req |
| members const. Make "msg" variable const. |
| (unix_print): Make all parameters const. |
| (print_sockaddr_by_inode): Make proto_name parameter const. |
| |
| print_sockaddr_by_inode: cleanup protocol lookup. |
| * socketutils.c (tcp_v4_print, udp_v4_print, tcp_v6_print, |
| udp_v6_print): New functions. |
| (print_sockaddr_by_inode): Make "protocols" array static, replace |
| "family" and "protocol" members with "print" in its underlying |
| structure. Iterate through protocols array when the protocol name |
| is specified. |
| |
| 2016-02-09 Dmitry V. Levin <ldv@altlinux.org> |
| |
| tests: check that -f -p attaches to threads properly. |
| Check that -f -p attaches and follows all threads of the given pid. |
| |
| * tests/attach-f-p.c: New file. |
| * tests/attach-f-p.test: New test. |
| * tests/.gitignore: Add attach-f-p. |
| * tests/Makefile.am (check_PROGRAMS): Likewise. |
| (attach_f_p_LDADD): New variable. |
| (TESTS): Add attach-f-p.test. |
| |
| 2016-02-09 Dmitry V. Levin <ldv@altlinux.org> |
| |
| Introduce libstrace.a for potentially conditional compilation units. |
| Some files are used conditionally depending on architecture and |
| configuration. Create a library for the purpose of keeping such |
| compilation units. |
| |
| * Makefile.am (strace_LDADD, noinst_LIBRARIES): Add libstrace.a. |
| (libstrace_a_CPPFLAGS): New variable, set to $(strace_CPPFLAGS). |
| (libstrace_a_CFLAGS): New variable, set to $(strace_CFLAGS). |
| (libstrace_a_SOURCES): New variable, set to upeek.c. |
| * util.c (upeek): Move ... |
| * upeek.c: ... here. |
| |
| 2016-02-08 Dmitry V. Levin <ldv@altlinux.org> |
| |
| travis-ci: pass more gcov arguments to codecov. |
| |
| tests: extend coverage of struct itimerspec. |
| * tests/timer_xettime.c (main): Check decoding of NULL struct itimerspec |
| pointer. |
| |
| tests: extend coverage of utimensat syscall. |
| * tests/utimensat.c (main): Check decoding of NULL struct timespec |
| pointer. |
| |
| tests: extend coverage of time syscall. |
| * tests/time.c (main): Check decoding of NULL time_t pointer. |
| |
| tests: extend coverage of struct sigevent. |
| * tests/timer_create.c (main): Check decoding of NULL struct sigevent |
| pointer. Check decoding of invalid sigev_notify value. |
| |
| 2016-02-08 Dmitry V. Levin <ldv@altlinux.org> |
| |
| tests: extend coverage of execve and execveat syscalls. |
| Check decoding of inaccessible or partially inaccessible arrays. |
| |
| * tests/execve-v.c: New file. |
| * tests/execveat-v.c: Likewise. |
| * tests/execve-v.test: New test. |
| * tests/execveat-v.test: Likewise. |
| * tests/execve.c: Rewrite. |
| * tests/execveat.c: Likewise. |
| * tests/execve.test: Likewise. |
| * tests/execveat.test: Likewise. |
| * tests/execve.expected: Remove. |
| * tests/execve-v.expected: Likewise. |
| * tests/execveat.expected: Likewise. |
| * tests/execveat-v.expected: Likewise. |
| * tests/.gitignore: Add execve-v and execveat-v. |
| * tests/Makefile.am (check_PROGRAMS): Likewise. |
| (TESTS): Add execve-v.test and execveat-v.test. |
| (EXTRA_DIST): Remove execve.expected, execve-v.expected, |
| execveat.expected, and execveat-v.expected. |
| |
| 2016-02-08 Dmitry V. Levin <ldv@altlinux.org> |
| |
| Fix decoding of execve and execveat syscalls with invalid input. |
| * execve.c (printargv): Fix decoding of inaccessible or partially |
| inaccessible array. |
| (printargc): Diagnose inaccessible or partially inaccessible array. |
| (decode_execve, SYS_FUNC(execv)): Update printargv and printargc callers. |
| |
| tests: extend coverage of capget syscall. |
| * tests/caps.c (main): Check decoding of inaccessible cap_user_header_t |
| and/or cap_user_data_t. |
| * tests/caps.awk: Update match patterns. |
| * tests/caps.test: Update. |
| |
| tests: extend coverage of sched_getaffinity syscall. |
| * tests/sched_xetaffinity.c (main): Check decoding of pointer |
| to inaccessible cpu_set_t. |
| |
| tests: extend coverage of utime syscall. |
| * tests/utime.c (main): Check decoding of NULL struct utimbuf pointer. |
| Check decoding of struct utimbuf located at the end of page boundary. |
| * tests/utime.test: Update. |
| |
| tests: extend coverage of sysinfo syscall. |
| * tests/sysinfo.c (main): Check decoding of NULL struct sysinfo pointer. |
| Check decoding of struct sysinfo located at the end of page boundary. |
| * tests/sysinfo.test: Update. |
| |
| tests: extend coverage of adjtimex syscall. |
| * tests/adjtimex.c (main): Check decoding of NULL struct timex pointer. |
| Check decoding of struct timex located at the end of page boundary. |
| * tests/adjtimex.test: Update. |
| |
| tests: check that strace does not retain stdin and stdout descriptors. |
| * tests/redirect.test: New test. |
| * tests/Makefile.am (TESTS): Add it. |
| |
| Create a dummy pipe descriptor instead of opening /dev/null. |
| * strace.c (open_dev_null): Rename to open_dummy_desc. All callers |
| changed. Create a pipe and return its first descriptor instead of |
| opening /dev/null. |
| |
| 2016-02-08 Denys Vlasenko <dvlasenk@redhat.com> |
| |
| If stdin/stdout aren't open on startup, open them to /dev/null. |
| Otherwise, -oLOGFILE may end up using one of them. This conflicts |
| with the previous change, which closes stdin/out in strace. |
| |
| * strace.c (init): If fcntl(F_GETFD) fails on stdin or stdout, |
| sanitize them: open /dev/null and dup it until fds 0,1,2 |
| are all used up. |
| |
| 2016-02-08 Denys Vlasenko <dvlasenk@redhat.com> |
| |
| Close stdin/out after child is forked. |
| Testcase: |
| |
| { sleep 1; yes | head -n99999; } | strace -o/dev/null sh -c 'exec <&-; sleep 9' |
| |
| The writer (head) will be able to perform writes to write end of the pipe. |
| With strace call removed, head will immediately get SIGPIPE. |
| |
| This change fixes this: now writer immediately gets SIGPIPE with strace too. |
| |
| * strace.c (startup_child): Close stdin/out and reopen them to /dev/null. |
| |
| 2016-02-05 Dmitry V. Levin <ldv@altlinux.org> |
| |
| tests: add opipe.test. |
| Check that -o |pipe_command works. In particular, check that |
| strace waits for completion of piped command. |
| |
| * tests/opipe.test: New test. |
| * tests/Makefile.am (TESTS): Add it. |
| |
| 2016-02-05 Keith Owens <kaos.ocs@gmail.com> |
| |
| strace-graph: print the pid in the graph. |
| * strace-graph: Prefix each command with its pid. |
| |
| strace-graph: cope with clone immediately followed by exit. |
| * strace-graph: A clone() followed by exit() with no intervening fork |
| or execve resulted in the new pid having no seq key. That breaks when |
| trying to use seq as an array reference. Ensure that clone populates |
| the new pid with an empty seq entry. |
| |
| strace-graph: handle recent strace output. |
| * strace-graph: Fix regex for --SIG. Ignore '+++ exited with <n> +++' |
| lines. Handle exit_group syscall as well as _exit. |
| |
| strace-graph: handle strace -T. |
| * strace-graph: Ignore extra ' <time.spent>' field added by strace -T. |
| |
| strace-graph: use "strict" and "warnings" pragmas. |
| * strace-graph: Set "use strict" and "use warnings" options. Fix errors |
| detected by strict/warnings. $result is really a string, it can be "-1" |
| followed by an error text. |
| |
| 2016-02-04 Dmitry V. Levin <ldv@altlinux.org> |
| |
| Add README.md file with links to build status and test coverage. |
| |
| travis-ci: prepare and submit test coverage report. |
| |
| tests: extend readlink and readlinkat coverage. |
| * tests/readlink.c (PREFIX, TARGET, LINKPATH): New macros. |
| (main): Allocate memory for string and buffer passed to the syscall |
| being tested using tail_alloc mechanism. Create and cleanup test |
| symlink. Test syscall error path output. Print hexquoted strings |
| using hexquote_strndup. |
| * tests/readlinkat.c: Likewise. |
| * tests/readlink.test: Remove creation and cleanup of test symlinks. |
| |
| tests: add hexquote_strndup function to libtests. |
| * tests/tests.h (hexquote_strndup): New prototype. |
| * tests/hexquote_strndup.c: New file. |
| * tests/Makefile.am (libtests_a_SOURCES): Add it. |
| |
| readlinkat.test: use readlink.test. |
| * tests/readlink.test (syscall): Initialize from $0. |
| * tests/readlinkat.test: Source readlink.test. |
| |
| 2016-02-04 Gabriel Laskar <gabriel@lse.epita.fr> |
| |
| Add configure --enable-code-coverage option. |
| * m4/ax_code_coverage.m4: New file. |
| * configure.ac: Use AX_CODE_COVERAGE. |
| * Makefile.am: Add @CODE_COVERAGE_RULES@. |
| (CODE_COVERAGE_LCOV_OPTIONS, CODE_COVERAGE_GENHTML_OPTIONS, |
| CODE_COVERAGE_IGNORE_PATTERN): New variables. |
| (strace_CPPFLAGS): Add $(CODE_COVERAGE_CPPFLAGS). |
| (strace_CFLAGS): Add $(CODE_COVERAGE_CFLAGS). |
| (strace_LDADD): Add $(CODE_COVERAGE_LDFLAGS). |
| * .gitignore: Add *.gcda and *.gcno. |
| |
| 2016-02-03 Dmitry V. Levin <ldv@altlinux.org> |
| |
| Makefile.am: introduce strace_CFLAGS and derivatives. |
| * Makefile.am (strace_CFLAGS): New variable, set to $(AM_CFLAGS). |
| (libmpers_CFLAGS): New variable, set to $(strace_CFLAGS). |
| (libmpers_m32_a_CFLAGS, libmpers_mx32_a_CFLAGS): New variables, |
| set to $(libmpers_CFLAGS). |
| |
| Makefile.am: use strace_CPPFLAGS consistently. |
| * Makefile.am (libmpers_CPPFLAGS): Replace $(AM_CPPFLAGS) |
| with $(strace_CPPFLAGS). |
| |
| 2016-02-03 Dmitry V. Levin <ldv@altlinux.org> |
| |
| tests: replace net-fd.test with net-y-unix.test. |
| Unlike the former test that was based on match_grep, |
| the new one uses match_diff and does more rigorous testing. |
| |
| * tests/net-y-unix.c: New file. |
| * tests/net-y-unix.test: New test. |
| * tests/net-fd.test: Remove. |
| * tests/net-fd.expected: Remove. |
| * tests/.gitignore: Add net-y-unix. |
| * tests/Makefile.am (check_PROGRAMS): Likewise. |
| (TESTS): Replace net-fd.test with net-y-unix.test. |
| (net-fd.log): Remove. |
| (EXTRA_DIST): Remove net-fd.expected. |
| |
| 2016-02-03 Dmitry V. Levin <ldv@altlinux.org> |
| |
| Implement caching of print_sockaddr_by_inode. |
| As -yy parser, compared to -y, needs to do at least 5 extra syscalls |
| (getxattr, socket, sendmsg, recvmsg, close) to print socket details, |
| caching results of netlink conversations between strace and kernel |
| noticeably reduces amount of system time spent by strace. |
| |
| The caching is safe since sockets do not change their addresses after |
| successful bind or connect syscall. |
| |
| * defs.h (string_quote, print_sockaddr_by_inode_cached): New prototypes. |
| * socketutils.c (cache_entry): New type. |
| (CACHE_SIZE, CACHE_MASK): New macros. |
| (cache): New static array. |
| (cache_and_print_inode_details): New static function. |
| (print_sockaddr_by_inode_cached): New function. |
| (inet_parse_response, unix_parse_response): Use |
| cache_and_print_inode_details. |
| * util.c (printfd): Use string_quote and print_sockaddr_by_inode_cached. |
| (string_quote): Remove static qualifier. |
| * NEWS: Mention this improvement. |
| * tests/unix-yy.c (main): Update. |
| |
| 2016-02-03 Dmitry V. Levin <ldv@altlinux.org> |
| |
| Change unix_diag requests to use exact match instead of full dump. |
| * socketutils.c (unix_send_query): Remove NLM_F_DUMP from nlmsg_flags, |
| initialize udiag_cookie. |
| * tests/netlink_unix_diag.c (send_query): Remove "family" and "proto" |
| arguments, add "inode" argument, remove NLM_F_DUMP from nlmsg_flags, |
| initialize udiag_ino and udiag_cookie. |
| (check_responses): Add "inode" argument, check inode match. |
| (main): Pass listening socket inode to send_query and check_responses. |
| |
| Robustify netlink response parsers. |
| * socketutils.c (inet_parse_response, unix_parse_response): Change |
| return type from bool to int, return -1 on all parse errors except |
| inode mismatch. |
| (receive_responses): Stop on the first nlmsg_type that is not |
| SOCK_DIAG_BY_FAMILY, also stop when the parser returns -1. |
| * tests/netlink_inet_diag.c (check_responses): Stop on short messages, |
| on first nlmsg_type that is not SOCK_DIAG_BY_FAMILY, print more verbose |
| diagnostics for NLMSG_ERROR. |
| * tests/netlink_unix_diag.c (check_responses): Likewise. |
| |
| inet_parse_response: add a safety check. |
| * socketutils.c (inet_parse_response): Check that netlink message |
| is large enough to contain a inet_diag_msg structure. |
| |
| receive_responses: avoid potential hangup. |
| * socketutils.c (receive_responses): Pass MSG_DONTWAIT to recvmsg after |
| the first recvmsg call to avoid potential hangup. |
| |
| 2016-02-03 Dmitry V. Levin <ldv@altlinux.org> |
| |
| tests: replace net-yy.test with net-yy-inet.test. |
| Unlike the former test that was based on match_awk, |
| the new one uses match_diff and does more rigorous testing. |
| |
| * tests/net-yy-inet.c: New file. |
| * tests/net-yy-inet.test: New test. |
| * tests/net-yy.test: Remove. |
| * tests/net-yy-accept.awk: Remove. |
| * tests/net-yy-connect.awk: Remove. |
| * tests/inet-accept-connect-send-recv.c: Remove. |
| * tests/.gitignore: Replace inet-accept-connect-send-recv |
| with net-yy-inet. |
| * tests/Makefile.am (check_PROGRAMS): Likewise. |
| (TESTS): Replace net-yy.test with net-yy-inet.test. |
| (EXTRA_DIST): Remove net-yy-accept.awk and net-yy-connect.awk. |
| |
| 2016-02-03 Dmitry V. Levin <ldv@altlinux.org> |
| |
| tests: replace unix-yy.test with net-yy-unix.test. |
| Unlike the former test that was based on match_awk, |
| the new one uses match_diff and does more rigorous testing. |
| |
| * tests/net-yy-unix.c: New file. |
| * tests/net-yy-unix.test: New test. |
| * tests/unix-yy.test: Remove. |
| * tests/unix-yy-accept.awk: Remove. |
| * tests/unix-yy-connect.awk: Remove. |
| * tests/.gitignore: Add net-yy-unix. |
| * tests/Makefile.am (check_PROGRAMS): Likewise. |
| (TESTS): Replace unix-yy.test with net-yy-unix.test. |
| (EXTRA_DIST): Remove unix-yy-accept.awk and unix-yy-connect.awk. |
| |
| 2016-02-02 Dmitry V. Levin <ldv@altlinux.org> |
| |
| tests: add inode_of_sockfd function to libtests. |
| * tests/tests.h (inode_of_sockfd): New prototype. |
| * tests/inode_of_sockfd.c: New file. |
| * tests/Makefile.am (libtests_a_SOURCES): Add it. |
| |
| unix_parse_response: add a safety check. |
| * socketutils.c (unix_parse_response): Check that netlink message |
| is large enough to contain a unix_diag_msg structure. |
| |
| 2016-01-29 Dmitry V. Levin <ldv@altlinux.org> |
| |
| Fixed decoding of mincore syscall's last argument. |
| * mem.c (SYS_FUNC(mincore)): Print only those bytes of the vector |
| that were written by the kernel. |
| * NEWS: Mention this fix. |
| * tests/mincore.c: New file. |
| * tests/mincore.test: New test. |
| * tests/Makefile.am (check_PROGRAMS): Add mincore. |
| (TESTS): Add mincore.test. |
| * tests/.gitignore: Add mincore. |
| |
| 2016-01-23 Dmitry V. Levin <ldv@altlinux.org> |
| |
| Move fallback -yy socket print from printfd to print_sockaddr_by_inode. |
| * util.c (printfd): In -yy mode, move fallback print of proto:[inode] ... |
| * socketutils.c (to print_sockaddr_by_inode): ... here. |
| |
| 2016-01-22 Dmitry V. Levin <ldv@altlinux.org> |
| |
| Implement simultaneous use of -p option and tracing of a command. |
| * strace.c (init): Allow -p option along with a command. |
| (startup_child): In -D mode, record the parent of the tracer process |
| as strace_child. |
| (startup_attach): Save trace_tracer_pid before -D mode fork. |
| When tracing a command in -f mode, do not check for the command's |
| threads as it has no threads at this moment. |
| Never attach to the tracer process. |
| In -D mode, never attach to the parent of the tracer process, |
| terminate that process only once at the end of startup_attach, |
| and reset strace_child. |
| * strace.1: Document that -p option can be used along with tracing |
| of a command. |
| * NEWS: Mention it. |
| * tests/attach-p-cmd-cmd.c: New file. |
| * tests/attach-p-cmd-p.c: Likewise. |
| * tests/attach-p-cmd.test: New test. |
| * tests/.gitignore: Add attach-p-cmd-cmd and attach-p-cmd-p. |
| * tests/Makefile.am (check_PROGRAMS): Likewise. |
| (TESTS): Add attach-p-cmd.test. |
| |
| This fixes Debian bug #549942. |
| |
| 2016-01-22 Dmitry V. Levin <ldv@altlinux.org> |
| |
| strace.1: fix format of -P description. |
| * strace.1 (-P): Write trailing using regular font. |
| |
| 2016-01-21 Dmitry V. Levin <ldv@altlinux.org> |
| |
| tests: use local nanosleep based sleep utility replacement. |
| * tests/sleep.c: New file. |
| * tests/.gitignore: Add sleep. |
| * tests/Makefile.am (check_PROGRAMS): Likewise. |
| * tests/count.test: Use it instead of system sleep utility. |
| |
| tests: add error_msg_and_fail function to libtests. |
| * tests/tests.h (error_msg_and_fail): New prototype. |
| * tests/error_msg.c (error_msg_and_fail): New function. |
| |
| 2016-01-20 Dmitry V. Levin <ldv@altlinux.org> |
| |
| Fix dumping of recvmmsg syscall in case of short read. |
| * net.c (dumpiov_in_mmsghdr): Call dumpiov_upto instead of dumpiov, |
| pass data size limit to dumpiov_upto. |
| * NEWS: Mention this fix. |
| * tests/mmsg.c (main): Update. |
| |
| Fix dumping of recvmsg syscall in case of short read. |
| * defs.h (dumpiov_in_msghdr): Add unsigned long argument. |
| * net.c (dumpiov_in_msghdr): Add data_size argument. Call dumpiov_upto |
| instead of dumpiov, pass data_size to dumpiov_upto. |
| * syscall.c (dumpio): Pass data size limit to dumpiov_in_msghdr. |
| * NEWS: Mention this fix. |
| * tests/recvmsg.c: New file. |
| * tests/recvmsg.test: New test. |
| * tests/Makefile.am (check_PROGRAMS): Add recvmsg. |
| (TESTS): Add recvmsg.test. |
| * tests/.gitignore: Add recvmsg. |
| |
| Fix decoding and dumping of readv syscall in case of short read. |
| * defs.h (dumpiov_upto): New prototype. |
| (dumpiov): Change to a wrapper around dumpiov_upto. |
| * util.c (dumpiov): Rename to dumpiov_upto, add and check data_size |
| argument. |
| * io.c (SYS_FUNC(readv)): Call tprint_iov_upto instead |
| of tprint_iov and specify syscall return value as a data size limit. |
| * syscall.c (dumpio): In case of SEN_readv, call dumpiov_upto instead |
| of dumpiov and specify syscall return value as a data size limit. |
| * NEWS: Mention this fix. |
| * tests/readv.c: New file. |
| * tests/readv.test: New test. |
| * tests/Makefile.am (check_PROGRAMS): Add readv. |
| (TESTS): Add readv.test. |
| * tests/.gitignore: Add readv. |
| |
| tests/tests.h: add ARRAY_SIZE and LENGTH_OF macros. |
| * tests/tests.h (ARRAY_SIZE, LENGTH_OF): New macros. |
| * tests/aio.c (ARRAY_SIZE): Remove. |
| * tests/mmsg.c (LENGTH_OF): Remove. |
| |
| tests: add hexdump_strdup function to libtests. |
| * tests/tests.h (hexdump_strdup): New prototype. |
| * tests/hexdump_strdup.c: New file. |
| * tests/Makefile.am (libtests_a_SOURCES): Add it. |
| |
| tests: add tprintf function to libtests. |
| * tests/tests.h (tprintf): New prototype. |
| * tests/tprintf.c: New file. |
| * tests/Makefile.am (libtests_a_SOURCES): Add it. |
| * tests/mmsg.c: Use tprintf. |
| |
| 2016-01-19 Dmitry V. Levin <ldv@altlinux.org> |
| |
| quotactl: add Q_XGETQSTATV command decoding. |
| * quota.c (fs_qfilestatv, fs_quota_statv): New structures. |
| (decode_cmd_data): Handle Q_XGETQSTATV case. |
| |
| quotactl: add decoding of if_dqinfo.dqi_flags constants. |
| * xlat/if_dqinfo_flags.in: New file. |
| * quota.c: Include "xlat/if_dqinfo_flags.h". |
| (decode_cmd_data): Print struct if_dqinfo.dqi_flags using printflags. |
| |
| quotactl: consistenly decode all write and unknown commands on entering. |
| * quota.c (decode_cmd_data): Change return type to int. |
| Return 0 on entering Q_GETQUOTA, Q_V1_GETQUOTA, Q_V2_GETQUOTA, |
| Q_XGETQUOTA, Q_GETFMT, Q_GETINFO, Q_V2_GETINFO, Q_V1_GETSTATS, |
| Q_V2_GETSTATS, and Q_XGETQSTAT commands, return RVAL_DECODED |
| for any other command. |
| (SYS_FUNC(quotactl)): On entering, print third argument of any command. |
| For any command except Q_QUOTAON and Q_V1_QUOTAON, call decode_cmd_data |
| and forward its return value. |
| |
| quotactl: fix Q_QUOTAON command decoding. |
| * quota.c (SYS_FUNC(quotactl)): Print Q_QUOTAON 4th argument as a path. |
| |
| quotactl: print third argument as unsigned int. |
| * quota.c (SYS_FUNC(quotactl)): Consistently print the third |
| argument using "%u" format. |
| |
| quotactl: fix Q_XQUOTAOFF command decoding. |
| * quota.c (decode_cmd_data): Print xfs quota flags argument. |
| |
| quotactl: fix Q_GETFMT and Q_XQUOTAON commands decoding. |
| * quota.c (decode_cmd_data): As quota format value and xfs quota flags |
| are in-memory constants, print it like an array of one element instead |
| of a structure. |
| |
| 2016-01-17 Dmitry V. Levin <ldv@altlinux.org> |
| |
| Update quotactl constants. |
| * xlat/quota_formats.in: Add QFMT_OCFS2 and QFMT_VFS_V1. |
| * xlat/quotacmds.in: Add Q_XGETQSTATV. |
| * xlat/quotatypes.in: Add PRJQUOTA. |
| * xlat/xfs_quota_flags.in: Add FS_QUOTA_PDQ_ACCT and FS_QUOTA_PDQ_ENFD. |
| |
| 2016-01-19 Dmitry V. Levin <ldv@altlinux.org> |
| |
| Replace u_int{8,16,32,64} with uint{8,16,32,64} |
| * util.c: Replace u_int{32,64} with uint{32,64}. |
| * quota.c: Replace u_int{8,16,32,64} with uint{8,16,32,64}. |
| |
| Move definitions of quotactl constants to xlat files. |
| * quota.c (Q_*): Move to xlat/quotacmds.in. |
| (USRQUOTA, GRPQUOTA): Move to xlat/quotatypes.in. |
| (QFMT_VFS_OLD, QFMT_VFS_V0): Move to xlat/quota_formats.in. |
| (XFS_QUOTA_*): Move to xlat/xfs_quota_flags.in. |
| (XFS_*_QUOTA): Move to xlat/xfs_dqblk_flags.in. |
| (QIF_*): Move to xlat/if_dqblk_valid.in. |
| (IIF_*): Move to xlat/if_dqinfo_valid.in. |
| |
| 2016-01-15 Dmitry V. Levin <ldv@altlinux.org> |
| |
| llseek.test: robustify against libcs invoking _llseek syscall on their own |
| * tests/llseek.test: Filter out _llseek calls made with non-negative |
| descriptor arguments. |
| |
| lseek.test: robustify against libcs invoking lseek syscall on their own. |
| * tests/lseek.test: Filter out lseek calls made with non-negative |
| descriptor arguments. |
| |
| 2016-01-14 Dmitry V. Levin <ldv@altlinux.org> |
| |
| mmsg.test: fix regression introduced by commit v4.11-138-g6e815ce. |
| This fixes the test on platforms where both __NR_sendmmsg and |
| HAVE_SENDMMSG are defined but the former is not implemented by the |
| kernel and the second is implemented as an indirect syscall. |
| |
| * tests/mmsg.c (LENGTH_OF): New macro. |
| (send_mmsg, recv_mmsg): Print expected output in case of ENOSYS. |
| (main): Redirect stdout to a new descriptor. Use LENGTH_OF. |
| Print expected output. |
| * tests/mmsg.test: Update. |
| * tests/mmsg.expected: Remove. |
| * tests/Makefile.am (EXTRA_DIST): Remove mmsg.expected. |
| |
| 2016-01-13 Dmitry V. Levin <ldv@altlinux.org> |
| |
| aio.test: check memory access by aio decoders. |
| * tests/aio.c (main): Place all objects passed to io_* syscalls |
| at the end of memory pages followed by inaccessible pages. |
| |
| 2016-01-13 Dmitry V. Levin <ldv@altlinux.org> |
| |
| s390, s390x: fix printing of syscalls unknown to the kernel. |
| On s390/s390x, syscalls with NR up to 255 can be implemented |
| directly using "svc NR", for NR >= 256 "svc 0" with %r1=NR is used. |
| The latter method is allowed for NR < 256, too. |
| |
| When the syscall number specified directly or indirectly is recognized |
| by the kernel, i.e. it is less than its NR_syscalls value, it is stored |
| in %r2 and is available to arch_get_scno via s390_regset.gprs[2]. |
| For syscall numbers >= NR_syscalls this register is set to 0, |
| but %r1 remains unchanged and could be used by arch_get_scno |
| via s390_regset.gprs[1] to decide what the syscall number is. |
| |
| * linux/s390/get_scno.c (arch_get_scno): If s390_regset.gprs[2] is zero, |
| take syscall number from s390_regset.gprs[1]. |
| * NEWS: Mention this fix. |
| |
| This fixes Debian bug #485979 and Fedora bug #1298294. |
| |
| 2016-01-13 Dmitry V. Levin <ldv@altlinux.org> |
| |
| s390, s390x: print all syscall arguments for syscall number 0. |
| * linux/s390/syscallent.h [0]: Set nargs to MA. |
| * linux/s390x/syscallent.h: Likewise. |
| |
| mips o32: alias sys_syscall to printargs. |
| * linux/dummy.h (sys_syscall): Alias to printargs. |
| * syscall.c [LINUX_MIPSO32] (SYS_FUNC(syscall)): Remove. |
| |
| 2016-01-13 Dmitry V. Levin <ldv@altlinux.org> |
| |
| travis-ci: update build matrix. |
| Add clang-3.6/x86_64, clang-3.6/x86, and musl-gcc/x86_64 to the matrix. |
| |
| * .travis.yml (compiler): Add gcc, clang-3.6, and musl-gcc. |
| (env): Add matrix, remove global ENABLE_GCC_WERROR. |
| (matrix): Add exclude, remove include. |
| * travis-ci.sh: Add support for clang and musl-gcc. |
| Use --enable-gcc-Werror for gcc build unconditionally. |
| |
| 2016-01-13 Dmitry V. Levin <ldv@altlinux.org> |
| |
| mpers.awk: add support for DWARF files generated by clang. |
| * mpers.awk: Define default_pointer_size. Initialize byte_size |
| for DW_TAG_pointer_type to default_pointer_size. Set parent |
| for DW_TAG_member only. Handle DW_AT_count as an alternative |
| to DW_AT_upper_bound. |
| |
| 2016-01-12 Dmitry V. Levin <ldv@altlinux.org> |
| |
| configure.ac: reorder some statements for better readability. |
| * configure.ac: Sort and group together AC_PROG_*, AC_C_*, AC_TYPE_*, |
| AC_HEADER_*, AC_CHECK_FUNCS, AC_CHECK_TYPES, AC_CHECK_MEMBERS, |
| and AC_CHECK_HEADERS. |
| |
| scm_rights-fd.test: rewrite without fork. |
| * tests/scm_rights.c (main): Rewrite without fork. |
| Place all objects passed to sendmsg and recvmsg at the end |
| of memory pages followed by inaccessible pages. |
| * tests/scm_rights-fd.test: Update. |
| |
| tests: fix clang "duplicate 'const' declaration specifier" warnings. |
| * tests/ksysent.c (pstr_t): Remove second const specifier. |
| * tests/mmsg.c (main): Remove second const specifier from one[], two[], |
| and three[]. |
| |
| tests/times.c: fix clang compilation warning. |
| * tests/times.c (main): Initialize dummy variable. |
| |
| 2016-01-12 Dmitry V. Levin <ldv@altlinux.org> |
| |
| tests/mmsg.c: fix build on rhel6/ppc. |
| There are weird platforms that define __NR_sendmmsg but at the same time |
| do not define __NR_recvmmsg. Add a workaround for them. |
| |
| * configure.ac (AC_CHECK_FUNCS): Add recvmmsg. |
| * tests/mmsg.c: Check for __NR_recvmmsg || HAVE_RECVMMSG. |
| |
| 2016-01-12 Dmitry V. Levin <ldv@altlinux.org> |
| |
| s390: fix sigreturn decoding on recent kernels. |
| Linux kernel commit v4.3-rc1-50-g8d4bd0e corrected uc_sigmask |
| of the compat signal frame, so remove the old workaround. |
| |
| * linux/s390/arch_sigreturn.c (arch_sigreturn) [S390]: Remove. |
| |
| 2016-01-12 Dmitry V. Levin <ldv@altlinux.org> |
| |
| Update PTRACE_* constants. |
| * ptrace.h (PTRACE_SECCOMP_GET_FILTER): Define. |
| * xlat/ptrace_cmds.in: Add PTRACE_SECCOMP_GET_FILTER. |
| |
| 2016-01-12 Dmitry V. Levin <ldv@altlinux.org> |
| |
| Fix struct sigevent decoding for musl. |
| Do not rely on "struct sigevent.__pad" being located at the same address |
| as "struct sigevent.sigev_notify_thread_id", it's not the case with musl |
| libc. Do not rely on struct sigevent definition at all to access |
| sigev_notify_thread_id. |
| |
| * configure.ac (AC_CHECK_MEMBERS): Remove struct sigevent._sigev_un._pad |
| and struct sigevent.__pad. |
| * sigevent.h: New file. |
| * Makefile.am (strace_SOURCES): Add it. |
| * print_sigevent.c: Include it. |
| * print_sigevent.c (struct_sigevent): Remove. |
| (print_sigevent): Update all struct_sigevent users. |
| * tests/timer_create.c: Include "sigevent.h". |
| (main): Use struct_sigevent instead of struct sigevent, |
| all struct sigevent clients changed. |
| |
| 2016-01-12 Dmitry V. Levin <ldv@altlinux.org> |
| |
| syscall.c: include <signal.h> |
| All users of NSIG macro must include <signal.h>. |
| This complements commit v4.10-184-g0e946ab. |
| |
| * syscall.c: Include <signal.h>. |
| |
| 2016-01-12 Dmitry V. Levin <ldv@altlinux.org> |
| |
| signal.c: fix musl libc compilation warning. |
| musl libc defines SIGRTMAX to a function that returns signed int, |
| which obviously makes gcc -Wsign-compare unhappy. |
| |
| * signal.c (signame): Cast ASM_SIGRTMAX to unsigned int. |
| |
| 2016-01-12 Dmitry V. Levin <ldv@altlinux.org> |
| |
| tests: fix TEST_SYSCALL_{NR,STR} and STRUCT_STAT_STR macros for musl. |
| The contents of TEST_SYSCALL_NAME and STRUCT_STAT macros was subject |
| to macro expansion when used in definitions of TEST_SYSCALL_NR, |
| TEST_SYSCALL_STR, and STRUCT_STAT_STR macros. |
| |
| As some libcs, e.g. musl libc, define lfs64 names as macros |
| (stat64 as stat, lstat64 as lstat, etc.), this might result to incorrect |
| expansion of TEST_SYSCALL_NR, TEST_SYSCALL_STR, and STRUCT_STAT_STR |
| macros. To avoid this problem, define these macros directly and remove |
| TEST_SYSCALL_NAME macro. |
| |
| * tests/_newselect.c (TEST_SYSCALL_NAME): Remove. |
| (TEST_SYSCALL_NR, TEST_SYSCALL_STR): New macros. |
| * tests/fcntl.c: Likewise. |
| * tests/fcntl64.c: Likewise. |
| * tests/fstat.c: Likewise. |
| * tests/fstatat64.c: Likewise. |
| * tests/lstat.c: Likewise. |
| * tests/newfstatat.c: Likewise. |
| * tests/select.c: Likewise. |
| * tests/stat.c: Likewise. |
| * tests/fstat64.c (TEST_SYSCALL_NAME): Remove. |
| (TEST_SYSCALL_NR, TEST_SYSCALL_STR, STRUCT_STAT_STR): New macros. |
| * tests/lstat64.c: Likewise. |
| * tests/stat64.c: Likewise. |
| * tests/fstatx.c (TEST_SYSCALL_NR, nrify, nrify_): Remove. |
| * tests/lstatx.c: Likewise. |
| * tests/struct_flock.c (TEST_SYSCALL_NR, TEST_SYSCALL_STR, nrify, |
| nrify_, stringify, stringify_): Remove. |
| * tests/xselect.c: Likewise. |
| * tests/xstatx.c: Check TEST_SYSCALL_STR instead of TEST_SYSCALL_NAME. |
| (STRUCT_STAT_STR, TEST_SYSCALL_STR, stringify, stringify_): Remove. |
| [!STRUCT_STAT] (STRUCT_STAT_STR): New macro. |
| |
| 2016-01-12 Dmitry V. Levin <ldv@altlinux.org> |
| |
| tests/struct_flock.c: fix musl libc compilation warnings. |
| The size of off_t is not something one can rely upon. For example, |
| musl libc unconditionally defines it as an int64_t type on x86. |
| A cast to the target type helps to avoid these libc differences. |
| |
| * configure.ac: Call AC_C_TYPEOF. |
| * tests/struct_flock.c (TYPEOF_FLOCK_OFF_T): New macro. |
| (test_flock_einval): Use it instead of off_t. |
| |
| 2016-01-12 Dmitry V. Levin <ldv@altlinux.org> |
| |
| tests/inet-cmsg.c: fix musl libc compilation warnings. |
| The types that are used to define msg_namelen member of struct msghdr |
| and cmsg_len member of struct cmsghdr differ between libcs. |
| For example, glibc defines them as size_t, while musl libc - as type |
| socklen_t. Print these fields using %lu format to avoid issues caused |
| by libc differences. |
| |
| * tests/inet-cmsg.c (main): Cast mh.msg_controllen and c->cmsg_len |
| to unsigned long and print them using %lu format. |
| |
| 2016-01-11 Dmitry V. Levin <ldv@altlinux.org> |
| |
| aio.test: include <fcntl.h> instead of <sys/fcntl.h> |
| * tests/aio.c: Include <fcntl.h> instead of <sys/fcntl.h>. |
| |
| mmsg.test: check memory access by sendmmsg and recvmmsg decoders. |
| * tests/tests.h (tail_memdup): New prototype. |
| * tests/tail_alloc.c (tail_memdup): New function. |
| * tests/mmsg.c (main): Place all objects passed to sendmmsg and recvmmsg |
| at the end of memory pages followed by inaccessible pages. |
| |
| mmsg.test: check decoding of flags passed to sendmmsg and recvmmsg. |
| * tests/mmsg.c (main): Pass MSG_DONTROUTE|MSG_NOSIGNAL to sendmmsg. |
| Pass MSG_DONTWAIT to recvmmsg. |
| * tests/mmsg.expected: Update. |
| |
| 2016-01-11 Dmitry V. Levin <ldv@altlinux.org> |
| |
| mmsg.test: prefer direct sendmmsg/recvmmsg syscalls to libc wrappers. |
| * tests/mmsg.c: Include <sys/syscall.h>. |
| Check for __NR_sendmmsg as an alternative to HAVE_SENDMMSG. |
| [!HAVE_STRUCT_MMSGHDR] (struct mmsghdr): Define. |
| (send_mmsg, recv_mmsg): New functions. |
| (main): Use them instead of sendmmsg and recvmmsg. |
| |
| Reported-by: Szabolcs Nagy <nsz@port70.net> |
| |
| 2016-01-10 Dmitry V. Levin <ldv@altlinux.org> |
| |
| sigreturn.test: use RT_5 signal number instead of RT_2. |
| Make the test compatible with musl libc that uses RT_2 internally. |
| |
| * tests/sigreturn.c (main): Replace RT_2 with RT_5. |
| * tests/sigreturn.test: Likewise. |
| |
| Reported-by: Szabolcs Nagy <nsz@port70.net> |
| |
| 2016-01-10 Dmitry V. Levin <ldv@altlinux.org> |
| |
| avr32: wire up accept4 syscall. |
| * linux/avr32/syscallent.h [321]: Add accept4 entry. |
| |
| 2016-01-09 Dmitry V. Levin <ldv@altlinux.org> |
| |
| sparc64: fix names of {s,g}etres{u,g}id syscalls. |
| * linux/sparc64/syscallent.h [108 ... 111]: Use sparc64 syscall names. |
| |
| sparc64: remove sparc32 syscall entries. |
| * linux/sparc64/syscallent.h [31, 32, 35, 44, 53, 56, 69, 70, 72, 77, |
| 82, 84, 87, 89, 91, 94, 112, 115, 155, 231]: Unassign. |
| |
| sparc: remove sparc64 syscall entries. |
| * linux/sparc/syscallent.h [52, 163]: Unassign. |
| |
| sparc64: clone syscallent.h from sparc. |
| * linux/sparc64/syscallent.h: Clone from linux/sparc/syscallent.h. |
| |
| sparc: fix mlock2 sysentry, wire up bind, listen, and setsockopt syscalls |
| * linux/sparc/syscallent.h [353]: Move mlock2 entry to 356. |
| [353, 354, 355]: Add bind, listen, and setsockopt entries. |
| * NEWS: Mention this. |
| |
| 2016-01-09 Dmitry V. Levin <ldv@altlinux.org> |
| |
| tests: do not use settimeofday wrapper provided by libc. |
| Workaround limitations of settimeofday wrapper provided by musl libc. |
| |
| * tests/xettimeofday.c (main): Call settimeofday using syscall(). |
| |
| Reported-by: Szabolcs Nagy <nsz@port70.net> |
| |
| 2016-01-09 Dmitry V. Levin <ldv@altlinux.org> |
| |
| ioctl.test: robustify against libcs invoking ioctl syscall on their own. |
| * tests/ioctl.test: Filter out from the log ioctl calls with standard |
| descriptor arguments. |
| |
| Reported-by: Szabolcs Nagy <nsz@port70.net> |
| |
| 2016-01-09 Dmitry V. Levin <ldv@altlinux.org> |
| |
| alpha: enhance decoding of getxpid, getxuid, and getxgid syscalls. |
| Print the second return value of getxpid, getxuid, and getxgid syscalls |
| that return a pair of values using the same mechanism as pipe syscall. |
| |
| * alpha.c: New file. |
| * Makefile.am (strace_SOURCES): Add it. |
| * linux/alpha/syscallent.h [20]: Change SEN(getpid) to SEN(getxpid). |
| [24]: Change SEN(getuid) to SEN(getxuid). |
| [47]: Change SEN(getgid) to SEN(getxgid). |
| * NEWS: Mention this enhancement. |
| * tests/uid.awk: Update for getxgid output change. |
| * tests/uid.test: Cleanup. |
| * tests/getxxid.c: New file. |
| * tests/getxxid.test: New test. |
| * tests/Makefile.am (check_PROGRAMS): Add getxxid. |
| (TESTS): Add getxxid.test. |
| * tests/.gitignore: Add getxxid. |
| |
| 2016-01-08 Dmitry V. Levin <ldv@altlinux.org> |
| |
| Cleanup parser of getpagesize syscall. |
| * mem.c (SYS_FUNC(getpagesize)): Decode on entering syscall. |
| |
| alpha: alias getdtablesize to printargs. |
| * linux/dummy.h [ALPHA] (sys_getdtablesize): Alias to printargs. |
| * desc.c [ALPHA] (SYS_FUNC(getdtablesize)): Remove. |
| |
| 2016-01-08 Dmitry V. Levin <ldv@altlinux.org> |
| |
| tests: change text marker in fork-f and vfork-f tests. |
| Use chdir syscalls instead of pwrite64 syscalls as a method of inserting |
| text markers into strace output because the former are more portable. |
| |
| * tests/fork-f.c (logit): Rename to logit_. Use chdir instead of pwrite. |
| (logit): New macro wrapper around logit_. |
| (main): Update expected output. |
| * tests/vfork-f.c: Likewise. |
| * tests/fork-f.test: Update. |
| |
| 2016-01-07 Dmitry V. Levin <ldv@altlinux.org> |
| |
| Fix printing of 32-bit times syscall return value on 64-bit architectures |
| This change complements commit v4.9-359-gd93d9f8 by fixing |
| RVAL_UDECIMAL case. |
| The only syscall that appears to be affected is the times syscall. |
| |
| * syscall.c (trace_syscall_exiting): In case of RVAL_UDECIMAL, |
| when current personality is 32-bit, print 32-bit return code. |
| * NEWS: Mention this fix. |
| |
| Reported-by: Steve McIntyre <steve@einval.com> |
| |
| 2016-01-07 Dmitry V. Levin <ldv@altlinux.org> |
| |
| tests/vfork-f.c: support platforms without vfork. |
| On some platforms, e.g. hppa glibc, vfork() is implemented using fork |
| syscall, so the test cannot rely on the parent process remaining blocked |
| until the child process either terminates or calls execve. |
| |
| * tests/vfork-f.c (main): Explicitly block the parent until the child |
| either terminates or calls execve. |
| |
| 2016-01-07 Dmitry V. Levin <ldv@altlinux.org> |
| |
| Fix and enhance decoding of sched_[gs]etaffinity syscalls. |
| Print cpu_set_t as a set of integers, similar to the way |
| fd_set is printed as a set of descriptors. |
| |
| * affinity.c: Include <sched.h>. |
| (get_cpuset_size): New function. |
| (print_affinitylist): Rewrite using get_cpuset_size and next_set_bit. |
| (sched_getaffinity, sched_setaffinity): Print first two args as ints. |
| * NEWS: Mention this enhancement. |
| * tests/sched_xetaffinity.c: New file. |
| * tests/sched_xetaffinity.test: New test. |
| * tests/Makefile.am (check_PROGRAMS): Add sched_xetaffinity. |
| (TESTS): Add sched_xetaffinity.test. |
| * tests/.gitignore: Add sched_xetaffinity. |
| |
| Reported-by: Joe Korty <joe.korty@ccur.com> |
| |
| 2016-01-06 Dmitry V. Levin <ldv@altlinux.org> |
| |
| tests: convert epoll_create1.test from match_grep to match_diff. |
| * tests/epoll_create1.c (main): Print expected output. |
| * tests/epoll_create1.test: Use match_diff instead of match_grep. |
| * tests/epoll_create1.expected: Remove. |
| * tests/Makefile.am (EXTRA_DIST): Remove epoll_create1.expected. |
| |
| tests/struct_flock.c: use libtests. |
| * tests/struct_flock.c (create_sample): Return void, |
| all callers changed. Use perror_msg_and_fail. |
| * tests/fcntl.c: Use SKIP_MAIN_UNDEFINED. |
| * tests/fcntl64.c: Likewise. |
| |
| tests/file_handle.c: use libtests. |
| * tests/file_handle.c: Use SKIP_MAIN_UNDEFINED. |
| (main): Use assert and perror_msg_and_skip. |
| |
| tests/uid32.c: use libtests. |
| * tests/uid32.c: Use SKIP_MAIN_UNDEFINED. |
| |
| tests/uid16.c: use libtests. |
| * tests/uid16.c: Use SKIP_MAIN_UNDEFINED. |
| (main): Use perror_msg_and_skip. |
| |
| tests/uid.c: use libtests. |
| * tests/uid.c: Use SKIP_MAIN_UNDEFINED. |
| (main): Use perror_msg_and_skip. |
| |
| tests/netlink_unix_diag.c: use libtests. |
| * tests/netlink_unix_diag.c (send_query, check_responses, main): |
| Use perror_msg_and_skip. |
| |
| tests/netlink_inet_diag.c: use libtests. |
| * tests/netlink_inet_diag.c (send_query, check_responses, main): |
| Use perror_msg_and_skip. |
| |
| tests/readdir.c: use libtests. |
| * tests/readdir.c: Use SKIP_MAIN_UNDEFINED. |
| (main): Use perror_msg_and_skip. |
| |
| tests/getdents64.c: use libtests. |
| * tests/getdents64.c: Use SKIP_MAIN_UNDEFINED. |
| (main): Use perror_msg_and_skip. |
| |
| tests/getdents.c: use libtests. |
| * tests/getdents.c: Use SKIP_MAIN_UNDEFINED. |
| (main): Use perror_msg_and_skip. |
| |
| tests/ipc_shm.c: use libtests. |
| * tests/ipc_shm.c (cleanup): New function. |
| (main): Use it and perror_msg_and_skip. |
| |
| tests/ipc_sem.c: use libtests. |
| * tests/ipc_sem.c (cleanup): New function. |
| (main): Use it and perror_msg_and_skip. |
| |
| tests/ipc_msg.c: use libtests. |
| * tests/ipc_msg.c (cleanup): New function. |
| (main): Use it and perror_msg_and_skip. |
| |
| tests/ipc_msgbuf.c: use libtests. |
| * tests/ipc_msgbuf.c (cleanup): New function. |
| (main): Use it and perror_msg_and_skip. |
| |
| tests/mq.c: use libtests. |
| * tests/mq.c: Use SKIP_MAIN_UNDEFINED. |
| (main): Use perror_msg_and_skip. |
| |
| tests/utimensat.c: use libtests. |
| * tests/utimensat.c: Use SKIP_MAIN_UNDEFINED. |
| (main): Use assert and perror_msg_and_skip. |
| |
| tests/ppoll.c: use libtests. |
| * tests/ppoll.c (main): Use assert, perror_msg_and_skip, |
| and perror_msg_and_fail. |
| |
| tests/mmsg.c: use libtests. |
| * tests/mmsg.c: Use SKIP_MAIN_UNDEFINED. |
| (main): Use perror_msg_and_skip. |
| |
| tests/ip_mreq.c: use libtests. |
| * tests/ip_mreq.c: Use SKIP_MAIN_UNDEFINED. |
| (main): Use perror_msg_and_skip. |
| |
| tests/ioctl.c: use libtests. |
| * tests/ioctl.c: Use SKIP_MAIN_UNDEFINED. |
| (main): Use %m printf format specifier. |
| |
| tests/pipe.c: use libtests. |
| * tests/pipe.c: Use SKIP_MAIN_UNDEFINED. |
| (main): Use perror_msg_and_fail and perror_msg_and_skip. |
| |
| tests/getrandom.c: use libtests. |
| * tests/getrandom.c: Use SKIP_MAIN_UNDEFINED. |
| (main): Use perror_msg_and_skip. |
| |
| tests/signalfd.c: use libtests. |
| * tests/signalfd.c: Use SKIP_MAIN_UNDEFINED. |
| (main): Use perror_msg_and_skip. |
| |
| tests/pc.c: use libtests. |
| * tests/pc.c (main): Use assert, get_page_size, perror_msg_and_fail, |
| and perror_msg_and_skip. |
| |
| tests/uio.c: use libtests. |
| * tests/uio.c: Use SKIP_MAIN_UNDEFINED. |
| |
| tests/bpf.c: use libtests. |
| * tests/bpf.c: Use SKIP_MAIN_UNDEFINED. |
| (main) Use perror_msg_and_skip. |
| |
| tests/aio.c: use libtests. |
| * tests/aio.c: Use SKIP_MAIN_UNDEFINED. |
| (main) Use perror_msg_and_skip. |
| |
| tests/sched_xetattr.c: use libtests. |
| * tests/sched_xetattr.c: Use SKIP_MAIN_UNDEFINED. |
| (main) Use perror_msg_and_skip. |
| |
| tests/wait.c: use libtests. |
| * tests/wait.c (main): Use perror_msg_and_fail. |
| |
| tests/vfork-f.c: use libtests. |
| * tests/vfork-f.c (main): Use assert and perror_msg_and_fail. |
| |
| tests/fork-f.c: use libtests. |
| * tests/fork-f.c (main): Use assert and perror_msg_and_fail. |
| |
| tests/userfaultfd.c: use libtests. |
| * tests/userfaultfd.c: Use SKIP_MAIN_UNDEFINED. |
| (main): Use assert. |
| |
| tests/mlock2.c: use libtests. |
| * tests/mlock2.c: Use SKIP_MAIN_UNDEFINED. |
| (main): Use assert. |
| |
| tests/membarrier.c: use libtests. |
| * tests/membarrier.c: Use SKIP_MAIN_UNDEFINED. |
| (main): Use assert. |
| |
| tests/nanosleep.c: use libtests. |
| * tests/nanosleep.c (main): Use assert, perror_msg_and_fail, |
| and perror_msg_and_skip. |
| |
| tests/timerfd_xettime.c: use libtests. |
| * tests/timerfd_xettime.c: Use SKIP_MAIN_UNDEFINED. |
| (main): Use perror_msg_and_skip. |
| |
| tests/timer_xettime.c: use libtests. |
| * tests/timer_xettime.c: Use SKIP_MAIN_UNDEFINED. |
| (main): Use perror_msg_and_skip. |
| |
| tests/timer_create.c: use libtests. |
| * tests/timer_create.c: Use SKIP_MAIN_UNDEFINED. |
| (main): Use perror_msg_and_skip. |
| |
| tests/clock_xettime.c: use libtests. |
| * tests/clock_xettime.c: Use SKIP_MAIN_UNDEFINED. |
| (main): Use perror_msg_and_skip. |
| |
| tests/clock_nanosleep.c: use libtests. |
| * tests/clock_nanosleep.c (main): Use assert and perror_msg_and_skip. |
| |
| tests/truncate64.c: use libtests. |
| * tests/truncate64.c: Use SKIP_MAIN_UNDEFINED. |
| (main): Use assert and perror_msg_and_skip. |
| |
| tests/truncate.c: use libtests. |
| * tests/truncate.c: Use SKIP_MAIN_UNDEFINED. |
| (main): Use assert and perror_msg_and_skip. |
| |
| tests/ftruncate64.c: use libtests. |
| * tests/ftruncate64.c: Use SKIP_MAIN_UNDEFINED. |
| (main): Use assert and perror_msg_and_skip. |
| |
| tests/ftruncate.c: use libtests. |
| * tests/ftruncate.c: Use SKIP_MAIN_UNDEFINED. |
| (main): Use assert and perror_msg_and_skip. |
| |
| 2016-01-05 Dmitry V. Levin <ldv@altlinux.org> |
| |
| tests/llseek.c: use libtests. |
| * tests/llseek.c: Use SKIP_MAIN_UNDEFINED. |
| (main): Use assert and perror_msg_and_skip. |
| |
| tests/lseek.c: use libtests. |
| * tests/lseek.c: Use SKIP_MAIN_UNDEFINED. |
| (main): Use assert and perror_msg_and_skip. |
| |
| tests/readlinkat.c: use libtests. |
| * tests/readlinkat.c: Use SKIP_MAIN_UNDEFINED. |
| (main): Use perror_msg_and_skip. |
| |
| tests/readlink.c: use libtests. |
| * tests/readlink.c: Use SKIP_MAIN_UNDEFINED. |
| (main): Use perror_msg_and_skip. |
| |
| tests/xattr.c: use libtests. |
| * tests/xattr.c: Use SKIP_MAIN_UNDEFINED. |
| (main): Use perror_msg_and_skip. |
| |
| tests/seccomp.c: use libtests. |
| * tests/seccomp.c: Use SKIP_MAIN_UNDEFINED. |
| (main): Use perror_msg_and_fail and perror_msg_and_skip. |
| |
| tests/restart_syscall.c: use libtests. |
| * tests/restart_syscall.c (main): Use assert, perror_msg_and_fail, |
| and perror_msg_and_skip. |
| |
| tests/inet-cmsg.c: use libtests. |
| * tests/inet-cmsg.c (main): Use perror_msg_and_skip. |
| |
| tests/eventfd.c: use libtests. |
| * tests/eventfd.c: Use SKIP_MAIN_UNDEFINED. |
| (main): Use perror_msg_and_skip. |
| |
| tests/epoll_create1.c: use libtests. |
| * tests/epoll_create1.c: Use SKIP_MAIN_UNDEFINED. |
| (main): Use assert and perror_msg_and_skip. |
| |
| tests/mmap.c: use libtests. |
| * tests/mmap.c (main): Use get_page_size and perror_msg_and_fail. |
| |
| tests/fanotify_mark.c: use libtests. |
| * tests/fanotify_mark.c: Use SKIP_MAIN_UNDEFINED. |
| |
| tests/inet-accept-connect-send-recv.c: use libtests. |
| * tests/inet-accept-connect-send-recv.c (main): Use perror_msg_and_skip |
| and perror_msg_and_fail. |
| |
| tests/net-accept-connect.c: use libtests. |
| * tests/net-accept-connect.c (main): Use perror_msg_and_skip |
| and perror_msg_and_fail. |
| |
| tests/unix-pair-send-recv.c: use libtests. |
| * tests/unix-pair-send-recv.c (main): Use perror_msg_and_skip |
| and perror_msg_and_fail. |
| |
| 2016-01-06 Dmitry V. Levin <ldv@altlinux.org> |
| |
| tests/xselect.c: use libtests. |
| * tests/xselect.c (main): Use assert, perror_msg_and_fail, |
| and perror_msg_and_skip. |
| |
| tests/pselect6.c: use libtests. |
| * tests/pselect6.c: Use SKIP_MAIN_UNDEFINED. |
| (main): Use assert, perror_msg_and_fail, and perror_msg_and_skip. |
| |
| 2016-01-05 Dmitry V. Levin <ldv@altlinux.org> |
| |
| tests/oldselect.c: use libtests. |
| * tests/oldselect.c: Use SKIP_MAIN_UNDEFINED. |
| (main): Use perror_msg_and_fail and perror_msg_and_skip. |
| |
| tests/select.c: use libtests. |
| * tests/select.c: Use SKIP_MAIN_UNDEFINED. |
| |
| tests/_newselect.c: use libtests. |
| * tests/_newselect.c: Use SKIP_MAIN_UNDEFINED. |
| |
| tests/fstatat.c: use libtests. |
| * tests/fstatat.c: Use SKIP_MAIN_UNDEFINED. |
| |
| tests/newfstatat.c: use libtests. |
| * tests/newfstatat.c: Use SKIP_MAIN_UNDEFINED. |
| |
| tests/fstatat64.c: use libtests. |
| * tests/fstatat64.c: Use SKIP_MAIN_UNDEFINED. |
| |
| tests/xstatx.c: use libtests. |
| * tests/xstatx.c: Use SKIP_MAIN_UNDEFINED. |
| |
| tests/stat64.c: use libtests. |
| * tests/stat64.c: Use SKIP_MAIN_UNDEFINED. |
| |
| tests/stat.c: use libtests. |
| * tests/stat.c: Use SKIP_MAIN_UNDEFINED. |
| |
| tests/lstat64.c: use libtests. |
| * tests/lstat64.c: Use SKIP_MAIN_UNDEFINED. |
| |
| tests/lstat.c: use libtests. |
| * tests/lstat.c: Use SKIP_MAIN_UNDEFINED. |
| |
| tests/fstat64.c: use libtests. |
| * tests/fstat64.c: Use SKIP_MAIN_UNDEFINED. |
| |
| tests/fstat.c: use libtests. |
| * tests/fstat.c: Use SKIP_MAIN_UNDEFINED. |
| |
| tests/statfs.c: use libtests. |
| * tests/statfs.c (main): Use perror_msg_and_fail. |
| |
| 2016-01-06 Dmitry V. Levin <ldv@altlinux.org> |
| |
| tests/xettimeofday.c: use libtests. |
| * tests/xettimeofday.c (main): Use assert and perror_msg_and_skip. |
| |
| tests/utime.c: use libtests. |
| * tests/utime.c (main): Use assert and perror_msg_and_skip. |
| |
| tests/filter-unavailable.c: use libtests. |
| * tests/filter-unavailable.c (main): Use perror_msg_and_fail. |
| |
| tests/scm_rights.c: use libtests. |
| * tests/scm_rights.c (main): Use perror_msg_and_fail and perror_msg_and_skip. |
| |
| tests/caps.c: use libtests. |
| * tests/caps.c (main): Use perror_msg_and_skip. |
| |
| tests/rt_sigqueueinfo.c: use libtests. |
| * tests/rt_sigqueueinfo.c (main): Use assert and perror_msg_and_skip. |
| |
| tests/umount.c: use libtests. |
| * tests/umount.c: Use SKIP_MAIN_UNDEFINED. |
| (main): Use perror_msg_and_fail. |
| |
| tests/umount2.c: use libtests. |
| * tests/umount2.c (main): Use perror_msg_and_fail. |
| |
| 2016-01-05 Dmitry V. Levin <ldv@altlinux.org> |
| |
| tests/times.c: use libtests. |
| * tests/times.c (main): Use perror_msg_and_fail and perror_msg_and_skip. |
| |
| 2016-01-04 Dmitry V. Levin <ldv@altlinux.org> |
| |
| tests/times-fail.c: use assert. |
| * tests/times-fail.c (main): Use assert. |
| |
| tests/memfd_create.c: use libtests. |
| * tests/memfd_create.c: Use SKIP_MAIN_UNDEFINED. |
| |
| tests/execveat.c: use libtests. |
| * tests/execveat.c: Use SKIP_MAIN_UNDEFINED. |
| |
| tests/xetitimer.c: use libtests. |
| * tests/xetitimer.c (main): Use perror_msg_and_skip. |
| |
| 2016-01-05 Dmitry V. Levin <ldv@altlinux.org> |
| |
| tests/sysinfo.c: use libtests. |
| * tests/sysinfo.c (main): Use perror_msg_and_skip. |
| |
| tests/sigaltstack.c: use libtests. |
| * tests/sigaltstack.c (main): Use perror_msg_and_skip. |
| |
| tests/adjtimex.c: use libtests. |
| * tests/adjtimex.c (main): Use perror_msg_and_skip. |
| |
| tests/xet_robust_list.c: use libtests. |
| * tests/xet_robust_list.c: Use SKIP_MAIN_UNDEFINED. |
| (main): Use perror_msg_and_skip and tail_alloc. |
| |
| tests/umovestr2.c: use libtests. |
| * tests/umovestr2.c (main): Use get_page_size and tail_alloc. |
| |
| tests/umovestr.c: use libtests. |
| * tests/umovestr.c (main): Use perror_msg_and_skip and tail_alloc. |
| |
| tests/time.c: use libtests. |
| * tests/time.c: Use SKIP_MAIN_UNDEFINED. |
| (main): Use perror_msg_and_skip and tail_alloc. |
| |
| tests/sendfile64.c: use libtests. |
| * tests/sendfile64.c: Use SKIP_MAIN_UNDEFINED. |
| (main): Use assert, perror_msg_and_fail, perror_msg_and_skip, |
| and tail_alloc. |
| |
| tests/sendfile.c: use libtests. |
| * tests/sendfile.c: Use SKIP_MAIN_UNDEFINED. |
| (main): Use assert, perror_msg_and_fail, perror_msg_and_skip, |
| and tail_alloc. |
| |
| 2016-01-05 Dmitry V. Levin <ldv@altlinux.org> |
| |
| tests: include tests.h instead of config.h. |
| Automatically edit tests/*.c files using the following perl one-liner: |
| |
| perl -0777 -pi -e \ |
| 's/#ifdef HAVE_CONFIG_H\n# include "config\.h"\n#endif\n*/#include "tests.h"\n/' \ |
| tests/*.c |
| |
| 2016-01-05 Dmitry V. Levin <ldv@altlinux.org> |
| |
| tests: introduce libtests. |
| Introduce tests/libtests.a with common functions for use in tests. |
| |
| * tests/tests.h: New file. |
| * tests/error_msg.c: Likewise. |
| * tests/tail_alloc.c: Likewise. |
| * tests/get_page_size.c: Likewise. |
| * tests/Makefile.am (libtests_a_SOURCES, libtests_a_CPPFLAGS, |
| check_LIBRARIES, LDADD): New variables. |
| (clock_xettime_LDADD, filter_unavailable_LDADD, mq_LDADD, |
| pc_LDADD, times_LDADD): Add $(LDADD). |
| * tests/.gitignore: Add libtests.a. |
| |
| 2016-01-01 Dmitry V. Levin <ldv@altlinux.org> |
| |
| tests: enable strace-k.test only for --with-libunwind configurations. |
| Also, since -k option does not support multiple personalities, |
| add strace-k.test to XFAIL_TESTS when running mpers tests. |
| |
| * tests/Makefile.am (MPERS_NAME, LIBUNWIND_TESTS, XFAIL_TESTS_, |
| XFAIL_TESTS_m32, XFAIL_TESTS_mx32, XFAIL_TESTS): New variables. |
| [USE_LIBUNWIND] (LIBUNWIND_TESTS): Add strace-k.test. |
| (TESTS): Replace strace-k.test with $(LIBUNWIND_TESTS). |
| * bootstrap: Substitute MPERS_NAME variable in tests-*/Makefile.am. |
| * tests/strace-k.test: Do not check for -k option availability. |
| |
| 2016-01-02 Dmitry V. Levin <ldv@altlinux.org> |
| |
| Move gcc compat macros to gcc_compat.h. |
| * defs.h: Include "gcc_compat.h". |
| (GNUC_PREREQ, ATTRIBUTE_NORETURN, ATTRIBUTE_FORMAT, |
| ATTRIBUTE_ALIGNED, ATTRIBUTE_PACKED, ATTRIBUTE_MALLOC, |
| ATTRIBUTE_NOINLINE, ATTRIBUTE_ALLOC_SIZE): Move ... |
| * gcc_compat.h: ... here. |
| * Makefile.am (strace_SOURCES): Add gcc_compat.h. |
| |
| 2015-12-31 Dmitry V. Levin <ldv@altlinux.org> |
| |
| Move defs.h from noinst_HEADERS to strace_SOURCES. |
| * Makefile.am (noinst_HEADERS): Move defs.h ... |
| (strace_SOURCES): ... here. |
| |
| 2015-12-30 Dmitry V. Levin <ldv@altlinux.org> |
| |
| test: remove fork.c and vfork.c. |
| These manual tests are obsoleted by fork-f.test and vfork-f.test. |
| |
| * test/fork.c: Remove. |
| * test/vfork.c: Remove. |
| * test/Makefile (PROGS): Remove fork and vfork. |
| * test/.gitignore: Remove fork and vfork. |
| |
| 2015-12-30 Dmitry V. Levin <ldv@altlinux.org> |
| |
| tests: add fork-f.test and vfork-f.test. |
| Check how strace -f follows fork and vfork syscalls. |
| |
| * tests/fork-f.c: New file. |
| * tests/fork-f.test: New test. |
| * tests/vfork-f.c: New file. |
| * tests/vfork-f.test: New test. |
| * tests/Makefile.am (check_PROGRAMS): Add fork-f and vfork-f. |
| (TESTS): Add fork-f.test and vfork-f.test. |
| * tests/.gitignore: Add fork-f and vfork-f. |
| |
| 2015-12-29 Dmitry V. Levin <ldv@altlinux.org> |
| |
| Set SYSCALL_NEVER_FAILS flag for getpid, getppid and gettid syscall. |
| * linux/*/syscallent*.h (getpid, getppid, gettid): Set NF flag. |
| |
| 2015-12-29 Dmitry V. Levin <ldv@altlinux.org> |
| |
| Set SYSCALL_NEVER_FAILS flag for umask syscall. |
| Linux kernel always ANDs umask argument with 0700 and therefore |
| this syscall never fails. |
| |
| * linux/*/syscallent*.h (umask): Set NF flag. |
| |
| 2015-12-27 Dmitry V. Levin <ldv@altlinux.org> |
| |
| alpha, ia64, mips, nios2, powerpc, sparc: always check for syscall error |
| On architectures that use dedicated registers to report syscall errors, |
| check for syscall error condition regardless of SYSCALL_NEVER_FAILS flag |
| in the syscall entry. On architectures that use negated errno |
| semantics, there is no way to distinguish a syscall error from a valid |
| return code that looks like a syscall error, and the check for |
| SYSCALL_NEVER_FAILS flag remains the only way to tell one case |
| from another. |
| |
| * linux/alpha/get_error.c (get_error): Ignore check_errno. |
| * linux/ia64/get_error.c: Likewise. |
| * linux/mips/get_error.c: Likewise. |
| * linux/nios2/get_error.c: Likewise. |
| * linux/powerpc/get_error.c: Likewise. |
| * linux/sparc/get_error.c: Likewise. |
| * linux/sparc64/get_error.c: Likewise. |
| |
| 2015-12-27 Dmitry V. Levin <ldv@altlinux.org> |
| |
| Handle unlikely errors from personality syscall. |
| Despite being marked as SYSCALL_NEVER_FAILS, personality syscall still |
| might report a failure on some architectures due to obscure kernel |
| bugs. Check for this unlikely case and let users know that their |
| kernel has gone bananas. |
| |
| * personality.c (SYS_FUNC(personality)): Do not parse syscall return |
| value in case of syserror. |
| |
| 2015-12-27 Dmitry V. Levin <ldv@altlinux.org> |
| |
| Do not truncate return value of get{,e}[ug]id and setfs[ug]id syscalls. |
| This should not be a user visible change unless the kernel does |
| something completely unexpected. In the latter case, let user see |
| what is going on. |
| |
| * uid.c (SYS_FUNC(getuid), SYS_FUNC(setfsuid)): Do not truncate |
| tcp->u_rval to uid_t on exiting syscall, return RVAL_DECODED. |
| |
| 2015-12-26 Dmitry V. Levin <ldv@altlinux.org> |
| |
| Enhance personality syscall decoding. |
| * xlat/personality_options.in: Split into ... |
| * xlat/personality_types.in: ... personality types and ... |
| * xlat/personality_flags.in: ... personality flags. |
| * personality.c: Include "xlat/personality_types.h" |
| and "xlat/personality_flags.h" instead of "xlat/personality_options.h". |
| (SYS_FUNC(personality)): Print PER_MASK part of personality as |
| a symbolic value, and the rest of personality as a set of flags. |
| * tests/personality.c (main): Add more test cases. |
| * tests/personality.test: Update. |
| |
| 2015-12-25 Dmitry V. Levin <ldv@altlinux.org> |
| |
| sh, sh64: fix syscall flags in several syscall entries. |
| * linux/sh/syscallent.h (geteuid32, getegid32, setfsuid32, setfsgid32): |
| Set SYSCALL_NEVER_FAILS flag. |
| (fchown32): Set TRACE_DESC flag. |
| * linux/sh64/syscallent.h: Likewise. |
| |
| 2015-12-25 Dmitry V. Levin <ldv@altlinux.org> |
| |
| Print personality value 0xffffffff properly. |
| Value 0xffffffff of personality syscall first argument has a special |
| meaning, it is not a set of personality flags. |
| |
| * personality.c (SYS_FUNC(personality)): If personality equals |
| to 0xffffffff, print it verbatim. |
| * tests/personality.c (main): Test it. |
| |
| 2015-12-25 Dmitry V. Levin <ldv@altlinux.org> |
| |
| tests: add personality.test. |
| * tests/personality.c: New file. |
| * tests/personality.test: New test. |
| * tests/Makefile.am (check_PROGRAMS): Add personality. |
| (TESTS): Add personality.test. |
| * tests/.gitignore: Add personality. |
| |
| Enhance personality syscall decoding. |
| * personality.c (SYS_FUNC(personality)): On entering syscall, |
| print first argument not as a hex value but as a set of flags. |
| On exiting syscall, print return code as a set of flags. |
| * NEWS: Mention this enhancement. |
| |
| 2015-12-25 Dmitry V. Levin <ldv@altlinux.org> |
| |
| Set SYSCALL_NEVER_FAILS flag for personality syscall. |
| Starting with commit |
| v2.6.29-6609-g11d06b2a1e5658f448a308aa3beb97bacd64a940, personality |
| syscall never fails to set the personality, but before commit |
| v2.6.35-rc1-372-g485d527 it still could return an error. |
| Starting with that commit, personality syscall never returns an error. |
| |
| * linux/*/syscallent.h: Set SYSCALL_NEVER_FAILS flag in personality |
| syscall entries. |
| |
| 2015-12-24 Dmitry V. Levin <ldv@altlinux.org> |
| |
| Add personality emulation flags. |
| * xlat/personality_options.in: Add UNAME26, ADDR_NO_RANDOMIZE, |
| FDPIC_FUNCPTRS, MMAP_PAGE_ZERO, ADDR_COMPAT_LAYOUT, READ_IMPLIES_EXEC, |
| ADDR_LIMIT_32BIT, SHORT_INODE, WHOLE_SECONDS, STICKY_TIMEOUTS, |
| and ADDR_LIMIT_3GB. |
| |
| 2015-12-24 Dmitry V. Levin <ldv@altlinux.org> |
| |
| arc, metag, nios2, or1k, tile: fix build. |
| Fix build regression introduced by commit |
| 34683e3926d8c2daa368afb805da422ee7043396. |
| |
| * linux/32/syscallent.h: Add sys_ prefix to ARCH_mmap and mmap. |
| * linux/arc/syscallent.h: Add sys_ prefix to ARCH_mmap and mmap_pgoff. |
| * linux/nios2/syscallent.h: Likewise. |
| * linux/or1k/syscallent.h: Likewise. |
| * linux/tile/syscallent1.h: Add sys_ prefix to ARCH_mmap and sys_mmap_4koff. |
| * pathtrace.c (pathtrace_match): Handle SEN_ARCH_mmap. |
| * NEWS: Mention this build fix. |
| |
| Reported-by: Alexey Brodkin <Alexey.Brodkin@synopsys.com> |
| |
| 2015-12-24 Dmitry V. Levin <ldv@altlinux.org> |
| |
| packages: remove acl development library from build dependencies. |
| Starting with commit v4.9-46-g681452b that removed all references |
| to acl.h, we no longer use acl development library. |
| |
| * .travis.yml (addons.apt.packages): Remove libacl1-dev. |
| * strace.spec (BuildRequires): Remove libacl-devel. |
| |
| 2015-12-23 Dmitry V. Levin <ldv@altlinux.org> |
| |
| packages/x86_64: enable experimental -k option. |
| * debian/control (Build-Depends) [amd64]: Add libunwind-dev. |
| * strace.spec (BuildRequires) [x86_64]: Add libunwind-devel. |
| |
| maint: post-release administrivia. |
| * NEWS: Add header line for the next release. |
| |
| 2015-12-21 Dmitry V. Levin <ldv@altlinux.org> |
| |
| Prepare for 4.11 release. |
| * NEWS: Update for 4.11 release. |
| * debian/changelog: 4.11-1. |
| * strace.spec: 4.11-1. |
| |
| 2015-12-20 Dmitry V. Levin <ldv@altlinux.org> |
| |
| Sync strace.spec and debian/ with packages. |
| * debian/changelog: Sync with 4.10-3. |
| * debian/control: Likewise. |
| * debian/rules: Likewise. |
| * strace.spec: Sync with 4.10-3. |
| |
| .mailmap: add addresses of Kirill A. Shutemov. |
| * .mailmap: Add both addresses of Kirill A. Shutemov here |
| to avoid duplications in CREDITS file. |
| |
| 2015-12-19 Dmitry V. Levin <ldv@altlinux.org> |
| |
| NEWS: Prepare for 4.11 release. |
| |
| 2015-12-18 Dmitry V. Levin <ldv@altlinux.org> |
| |
| ia64: wire up mlock2 syscall. |
| * linux/ia64/syscallent.h [1346]: Add mlock2 entry. |
| |
| 2015-12-17 Dmitry V. Levin <ldv@altlinux.org> |
| |
| Add copyright headers to some files which lack them. |
| Before this change, all files that exist since 20th century had |
| copyright headers, while most files that appeared later didn't. This |
| change fixes the inconsistency by adding missing copyright headers. |
| |
| It doesn't mean that copyright headers became maintained. In my view, |
| git history provides much better information on this subject and is much |
| more accurate than copyright headers. |
| |
| 2015-12-16 Dmitry V. Levin <ldv@altlinux.org> |
| |
| tests/aio.c: include <time.h> |
| * tests/aio.c: Include <time.h> for struct timespec. |
| |
| Reported-by: Szabolcs Nagy <nsz@port70.net> |
| |
| 2015-12-16 Dmitry V. Levin <ldv@altlinux.org> |
| |
| mpers.sh: switch to DWARF version 2 format for better portability. |
| * mpers.sh (CFLAGS): Replace -gdwarf-4 with -gdwarf-2. |
| |
| mpers.awk: add support for DWARF version 2 format. |
| * mpers.awk: Handle DW_AT_data_member_location in DWARF v2 format. |
| |
| 2015-12-16 Dmitry V. Levin <ldv@altlinux.org> |
| |
| Replace %Ld/%Lu printf format specifiers with %lld/%llu. |
| As %Ld and %Lu printf format specifiers are not quite portable, |
| replace them with %lld and %llu, respectively. |
| |
| * desc.c (SYS_FUNC(pselect6)): Replace %Lu with %llu. |
| * dirent.c (print_old_dirent, SYS_FUNC(getdents)): Likewise. |
| * times.c (SYS_FUNC(times)): Likewise. |
| * fcntl.c (print_struct_flock64): Replace %Ld with %lld. |
| * tests/ftruncate.c (main): Replace %Lu with %llu. |
| * tests/ftruncate64.c (main): Likewise. |
| * tests/getdents.c (print_dirent): Likewise. |
| * tests/llseek.c (main): Likewise. |
| * tests/lseek.c (main): Likewise. |
| * tests/truncate.c (main): Likewise. |
| * tests/truncate64.c (main): Likewise. |
| * tests/xstatx.c (main): Likewise. |
| * tests/pselect6.c (main): Replace %Ld with %lld. |
| * tests/xselect.c(main): Likewise. |
| |
| Reported-by: Szabolcs Nagy <nsz@port70.net> |
| |
| 2015-12-16 Szabolcs Nagy <nsz@port70.net> |
| |
| Fix SYS_FUNC and SEN macros for musl. |
| The syscall_name argument was subject to macro expansion because |
| it was passed down to other macros before it was prefixed. |
| |
| musl libc defines lfs64 names as macros (e.g. fstat64 as fstat) |
| so SYS_FUNC(fstat64) was expanded to sys_fstat. |
| |
| This change adds the prefix before the name is passed to other macros, |
| i.e. the argument of SYS_FUNC_NAME is already prefixed with sys_. |
| |
| * defs.h (SYS_FUNC): Add sys_ prefix to SYS_FUNC_NAME's argument. |
| (SYS_FUNC_NAME): Do not add sys_ prefix to MPERS_FUNC_NAME's argument. |
| * linux/ia64/syscallent.h (SYS_FUNC_NAME): Do not add sys_ prefix |
| to MPERS_FUNC_NAME's argument. |
| * syscall.c (SEN_NAME): Remove. |
| (SEN): Replace SEN_NAME call with its definition. Add sys_ prefix |
| to SYS_FUNC_NAME's argument. |
| |
| 2015-12-15 Dmitry V. Levin <ldv@altlinux.org> |
| |
| tests/times.test: workaround libc bug on x32. |
| As glibc times wrapper on x32 is known to wrongly truncate and then sign |
| extend the syscall return value, invoke the syscall directly on x32. |
| |
| * tests/times.c (main) [__NR_times && __x86_64__ && __ILP32__]: |
| Invoke times syscall using inline asm. |
| |
| 2015-12-15 Dmitry V. Levin <ldv@altlinux.org> |
| |
| mpers.awk: make fillers added to the output structure more predictable. |
| * mpers.awk (array_seq): New function. |
| (what_is): Use it for printing filler names. Tweak return types. |
| * mpers_test.sh: Use a more complicated sample type to test mpers |
| machinery. |
| |
| 2015-12-15 Dmitry V. Levin <ldv@altlinux.org> |
| |
| Robustify mpers.awk against input containing index loops. |
| Make mpers.awk check for potential index loops. Such loops should not |
| normally happen, but mpers.awk will not go into infinite recursion if |
| they do. |
| |
| * mpers.awk (enter, leave): New functions. |
| (what_is): Use them. |
| |
| 2015-12-15 Dmitry V. Levin <ldv@altlinux.org> |
| |
| Robustify mpers.awk against invalid input. |
| Make mpers.awk check that accessed elements of the main array that |
| are expected to have non-empty values really meet this requirement. |
| |
| * mpers.awk (array_get): New function. |
| (what_is, END): Use it. |
| * mpers_test.sh: Use a more complicated type to test mpers machinery. |
| |
| Reported-by: Mike Frysinger <vapier@gentoo.org> |
| |
| 2015-12-14 Dmitry V. Levin <ldv@altlinux.org> |
| |
| Replace HAVE_LITTLE_ENDIAN_LONG_LONG with WORDS_BIGENDIAN. |
| * defs.h: Use WORDS_BIGENDIAN instead of HAVE_LITTLE_ENDIAN_LONG_LONG. |
| * configure.ac (AC_LITTLE_ENDIAN_LONG_LONG): Remove. |
| * m4/long_long.m4: Remove. |
| |
| 2015-12-14 Dmitry V. Levin <ldv@altlinux.org> |
| |
| Remove unused parser of xmknod syscall. |
| The last reference to this parser was removed by commit |
| v4.10-45-gdf4dd8b. |
| |
| * mknod.c [SPARC || SPARC64] (SYS_FUNC(xmknod)): Remove. |
| |
| 2015-12-13 Dmitry V. Levin <ldv@altlinux.org> |
| |
| tests/restart_syscall: add a workaround for old arm kernels. |
| As arm kernels used to overwrite ARM_r0 with -EINTR after |
| ERESTART_RESTARTBLOCK, update regexp to workaround this. |
| |
| * tests/restart_syscall.c (main) [__arm__]: Add 0xfffffffc as a valid |
| alternative value for the first argument of restarted nanosleep syscall. |
| |
| 2015-12-12 Dmitry V. Levin <ldv@altlinux.org> |
| |
| tests/.gitignore: add ksysent.h. |
| tests/ksysent.h is a generated file listed in CLEANFILES. |
| This change complements commit v4.10-566-gbab4ef4. |
| |
| * tests/.gitignore: Add ksysent.h. |
| |
| 2015-12-11 Dmitry V. Levin <ldv@altlinux.org> |
| |
| aarch64: make arm registers unsigned. |
| Follow the x86_64 example and define registers in arm_pt_regs |
| as unsigned, to avoid potential sign extension bugs. |
| |
| This also fixes --enable-gcc-Werror build. |
| |
| * linux/aarch64/arch_regs.c (arm_pt_regs): Change uregs's type |
| from int to uint32_t. |
| |
| Reported-by: Sergey Bolshakov <sbolshakov@altlinux.org> |
| |
| 2015-12-10 Dmitry V. Levin <ldv@altlinux.org> |
| |
| tests: add ksysent.test. |
| Check that syscall names and numbers defined in syscallent files |
| match kernel __NR_* constants defined by <asm/unistd.h>. |
| |
| Tested on various platforms, including the following combinations |
| of architectures and kernel headers: |
| |
| x86_64: 4.4-rc, 4.3, 4.2, 4.1, 3.19, 3.17, 3.16, 3.12, 3.11, |
| 3.10-rhel, 2.6.32-rhel, 2.6.27-sle, 2.6.18-rhel |
| i386: 4.4-rc, 4.3, 4.2, 4.1, 3.19, 3.17, 3.16, 3.11, |
| 3.10-rhel, 2.6.32-rhel, 2.6.27-sle, 2.6.18-rhel |
| aarch64: 4.4-rc |
| alpha: 4.3 |
| arm eabi: 4.4-rc, 4.2, 4.1 |
| hppa: 3.18 |
| ia64: 3.18 |
| mips o32: 4.1 |
| ppc: 3.18 |
| ppc64: 3.10-rhel, 2.6.32-rhel |
| s390: 3.18 |
| s390x: 3.18 |
| sparc: 4.1 |
| sparc: 3.18 |
| x32: 3.19 |
| |
| The only platform which is known at this moment to fail the test |
| is CentOS-5 provided by OBS. On x86_64 instance it fails with |
| error: "prlimit64" syscall #300 is "fanotify_init" in syscallent.h |
| and on i586 it similarly fails with |
| error: "prlimit64" syscall #338 is "fanotify_init" in syscallent.h |
| So this is a real platform bug that is not likely to be worked around |
| on the strace side. |
| |
| * tests/ksysent.c: New file. |
| * tests/ksysent.sed: Likewise. |
| * tests/ksysent.test: New test. |
| * tests/Makefile.am (AM_CPPFLAGS): Add -I$(builddir). |
| (check_PROGRAMS): Add ksysent. |
| (TESTS): Add ksysent.test. |
| (EXTRA_DIST): Add ksysent.sed. |
| (ksysent.h): New rule. |
| (BUILT_SOURCES, CLEANFILES): Add ksysent.h. |
| * tests/.gitignore: Add ksysent. |
| |
| 2015-12-09 Dmitry V. Levin <ldv@altlinux.org> |
| |
| Document that syscall names match kernel __NR_* constants. |
| * strace.1: Note syscall naming difference between architectures |
| and the rule of choosing the right syscall name in each case. |
| |
| 2015-12-09 Dmitry V. Levin <ldv@altlinux.org> |
| |
| ia64: print all ia32 syscalls using printargs. |
| Printing of ia32 syscalls on ia64 must have been broken for a long time. |
| Do not pretend that it works, print ia32 syscalls using printargs |
| instead. |
| |
| * linux/ia64/syscallent.h: Remove all redefinitions of sys_* macros. |
| Stop including"../dummy.h". Include "../i386/syscallent.h" with |
| SYS_FUNC_NAME macro temporarily redirected to printargs. |
| |
| 2015-12-09 Dmitry V. Levin <ldv@altlinux.org> |
| |
| Fix build on architectures for which arch_sigreturn is not implemented. |
| This complements commit 527b42ff8da3f52fa7c48eb766b2b57fb0f0b977. |
| |
| * linux/arch_sigreturn.c (arch_sigreturn): Define. |
| |
| 2015-12-09 Dmitry V. Levin <ldv@altlinux.org> |
| |
| aarch64: swap 64-bit and 32-bit personalities. |
| Let native 64-bit personality be personality 0, and 32-bit personality |
| be personality 1, to follow the traditional layout used for other |
| architectures. |
| |
| * defs.h [AARCH64]: Swap PERSONALITY0_WORDSIZE and |
| PERSONALITY1_WORDSIZE, remove DEFAULT_PERSONALITY. |
| [AARCH64 && HAVE_M32_MPERS]: Rename PERSONALITY1_* to PERSONALITY0_*. |
| * file.c [AARCH64 || defined X86_64 || defined X32]: Define |
| STAT32_PERSONALITY for AARCH64 as well. |
| * syscall.c (update_personality) [AARCH64]: Adjust PERSONALITY_NAMES. |
| * linux/aarch64/errnoent1.h: Adjust comment. |
| * linux/aarch64/get_error.c (get_error): Adjust tcp->currpers check. |
| * linux/aarch64/get_syscall_args.c (get_syscall_args): Likewise. |
| * linux/arm/arch_sigreturn.c (arch_sigreturn) [AARCH64]: Likewise. |
| * linux/aarch64/get_scno.c (arch_get_scno): Adjust update_personality |
| invocations. |
| * linux/aarch64/ioctls_arch0.h: Swap with ... |
| * linux/aarch64/ioctls_arch1.h: ... this file. |
| * linux/aarch64/ioctls_inc0.h: Swap with ... |
| * linux/aarch64/ioctls_inc1.h: ... this file. |
| * linux/aarch64/syscallent.h: Swap with ... |
| * linux/aarch64/syscallent1.h: ... this file. |
| |
| 2015-12-08 Dmitry V. Levin <ldv@altlinux.org> |
| |
| mips: fix fadvise64 syscall entries. |
| * linux/mips/syscallent-n32.h [6216]: Change syscall handler |
| from fadvise64 to fadvise64_64. |
| * linux/mips/syscallent-n64.h [5215]: Rename from "fadvise64_64" |
| to "fadvise64" |
| * linux/mips/syscallent-o32.h [4254]: Likewise. |
| |
| xtensa: wire up syncfs syscall. |
| * linux/xtensa/syscallent.h [179]: Add syncfs entry. |
| |
| sh, sh64: fix syscall entries. |
| * linux/sh/syscallent.h [322]: Fix timerfd_create entry. |
| * linux/sh64/syscallent.h [350]: Likewise. |
| [0]: Fix restart_syscall entry. |
| |
| powerpc, powerpc64: wire up mlock2 syscall. |
| * linux/powerpc/syscallent.h [378]: Add mlock2 entry. |
| * linux/powerpc64/syscallent.h: Likewise. |
| |
| hppa: fix syscall entries. |
| * linux/hppa/syscallent.h: Swap [343] and [344] entries. |
| |
| avr32: update syscall entries. |
| * linux/avr32/syscallent.h [0]: Rename from setup to restart_syscall. |
| [284 ... 320]: New entries. |
| |
| m68k: fix syscall names. |
| * linux/m68k/syscallent.h [335]: Rename "atomic_comxchg_32" |
| to "atomic_cmpxchg_32". |
| |
| sparc: update syscall names. |
| * linux/sparc/syscallent.h [160]: Rename "sched_setaffinity" |
| to "sched_set_affinity". |
| [161]: Rename "sched_getaffinity" to "sched_get_affinity". |
| |
| powerpc, powerpc64: update syscall names. |
| * linux/powerpc/syscallent.h [201]: Rename "MOL" to "multiplexer". |
| [225]: Rename "tux" to "tuxcall". |
| [256]: Rename "debug_setcontext" to "sys_debug_setcontext". |
| * linux/powerpc64/syscallent.h: Likewise. |
| |
| alpha: update syscall entries. |
| * linux/alpha/syscallent.h [224 ... 228]: Add stub entries. |
| [100]: Rename "osf_getpriority" to "getpriority". |
| [255]: Rename "osf_subsysinfo" to "osf_subsys_info". |
| [303]: Rename "adjtimex32" to "old_adjtimex". |
| [319]: Rename "sysctl" to "_sysctl". |
| [320]: Remove. |
| |
| 2015-12-08 Dmitry V. Levin <ldv@altlinux.org> |
| |
| Fix mmap syscall entries. |
| Change syscall names to match kernel __NR_* constants. |
| |
| * linux/avr32/syscallent.h [90]: Rename "mmap" to "mmap2". |
| * linux/bfin/syscallent.h [90]: Rename "old_mmap" to "mmap". |
| * linux/i386/syscallent.h: Likewise. |
| * linux/m68k/syscallent.h: Likewise. |
| * linux/microblaze/syscallent.h: Likewise. |
| * linux/sh/syscallent.h: Likewise. |
| * linux/sh64/syscallent.h: Likewise. |
| * tests/mmap.c (main): Remove old_mmap from expected output. |
| * tests/mmap.test: Remove old_mmap from the list of mmap syscalls. |
| |
| 2015-12-08 Dmitry V. Levin <ldv@altlinux.org> |
| |
| Fix select and _newselect syscall entries. |
| Change syscall names to match kernel __NR_* constants. |
| This reverts commit ddcf54969d253582ab2cfdcab8ede9cdae3fb171. |
| |
| * linux/arm/syscallent.h [82]: Rename "oldselect" to "select". |
| [142]: Rename "select" to "_newselect". |
| * linux/bfin/syscallent.h: Likewise. |
| * linux/i386/syscallent.h: Likewise. |
| * linux/m68k/syscallent.h: Likewise. |
| * linux/microblaze/syscallent.h: Likewise. |
| * linux/powerpc/syscallent.h [82]: Likewise. |
| * linux/powerpc64/syscallent.h: Likewise. |
| * linux/sh/syscallent.h: Likewise. |
| * linux/sh64/syscallent.h: Likewise. |
| * linux/hppa/syscallent.h [142]: Rename "select" to "_newselect". |
| * linux/mips/syscallent-n32.h [6022]: Rename "select" to "_newselect". |
| * linux/mips/syscallent-n64.h [5022]: Likewise. |
| * linux/mips/syscallent-o32.h [4142]: Likewise. |
| * linux/s390/syscallent.h [142]: Rename "select" to "_newselect". |
| * linux/sparc/syscallent.h [230]: Rename "select" to "_newselect". |
| * tests/oldselect.test: Rename oldselect to select. Convert |
| from match_grep to match_diff. |
| * tests/oldselect.expected: Likewise. |
| * xselect.c: New file, based on select.c. |
| * tests/_newselect.c: New file. |
| * tests/select.c: Replace with a wrapper around xselect.c. |
| * tests/select.test: Parametrize. |
| * tests/_newselect.test: New test. |
| * tests/Makefile.am (check_PROGRAMS): Add _newselect. |
| (TESTS): Add _newselect.test. |
| (EXTRA_DIST): Add xselect.c. |
| * tests/.gitignore: Add _newselect. |
| |
| 2015-12-08 Dmitry V. Levin <ldv@altlinux.org> |
| |
| Fix exit syscall entries. |
| Change syscall names to match kernel __NR_* constants. |
| |
| * linux/avr32/syscallent.h [1]: Rename "_exit" to "exit". |
| * linux/bfin/syscallent.h: Likewise. |
| * linux/i386/syscallent.h: Likewise. |
| * linux/m68k/syscallent.h: Likewise. |
| * linux/microblaze/syscallent.h: Likewise. |
| * linux/sh/syscallent.h: Likewise. |
| * linux/sh64/syscallent.h: Likewise. |
| * linux/x32/syscallent.h [60]: Rename "_exit" to "exit". |
| * linux/x86_64/syscallent.h: Likewise. |
| |
| 2015-12-08 Dmitry V. Levin <ldv@altlinux.org> |
| |
| Fix pread64 and pwrite64 syscall entries. |
| Change syscall names to match kernel __NR_* constants. |
| |
| * linux/alpha/syscallent.h [349]: Rename "pread" to "pread64". |
| [350]: Rename "pwrite" to "pwrite64". |
| * linux/ia64/syscallent.h [1148]: Rename "pread" to "pread64". |
| [1149]: Rename "pwrite" to "pwrite64". |
| * linux/sh/syscallent.h [180]: Rename "pread" to "pread64". |
| [181]: Rename "pwrite" to "pwrite64". |
| * linux/sh64/syscallent.h: Likewise. |
| * linux/x32/syscallent.h [17]: Rename "pread" to "pread64". |
| [18]: Rename "pwrite" to "pwrite64". |
| * linux/x86_64/syscallent.h: Likewise. |
| |
| 2015-12-08 Dmitry V. Levin <ldv@altlinux.org> |
| |
| tests: sort the list of tests. |
| * tests/Makefile.am (TESTS): Sort the list of regular tests. |
| * tests/.gitignore: Sort. |
| |
| ia64: fix remap_file_pages syscall entry. |
| * linux/ia64/syscallent.h (1125): Set to remap_file_pages. |
| |
| bfin, i386: remove sysentry for nonexistent security syscall. |
| * linux/bfin/syscallent.h (223): Remove. |
| * linux/i386/syscallent.h: Likewise. |
| |
| build: add -D_FILE_OFFSET_BITS=64 to _CPPFLAGS instead of _CFLAGS. |
| * tests/Makefile.am (fstat64_CFLAGS): Rename to fstat64_CPPFLAGS, |
| replace $(AM_CFLAGS) with $(AM_CPPFLAGS). |
| (fstatat64_CFLAGS): Rename to fstatat64_CPPFLAGS, |
| replace $(AM_CFLAGS) with $(AM_CPPFLAGS). |
| (ftruncate64_CFLAGS): Rename to ftruncate64_CPPFLAGS, |
| replace $(AM_CFLAGS) with $(AM_CPPFLAGS). |
| (lstat64_CFLAGS): Rename to lstat64_CPPFLAGS, |
| replace $(AM_CFLAGS) with $(AM_CPPFLAGS). |
| (mmap64_CFLAGS): Rename to mmap64_CPPFLAGS, |
| replace $(AM_CFLAGS) with $(AM_CPPFLAGS). |
| (newfstatat_CFLAGS): Rename to newfstatat_CPPFLAGS, |
| replace $(AM_CFLAGS) with $(AM_CPPFLAGS). |
| (stat64_CFLAGS): Rename to stat64_CPPFLAGS, |
| replace $(AM_CFLAGS) with $(AM_CPPFLAGS). |
| (statfs_CFLAGS): Rename to statfs_CPPFLAGS, |
| replace $(AM_CFLAGS) with $(AM_CPPFLAGS). |
| (truncate64_CFLAGS): Rename to truncate64_CPPFLAGS, |
| replace $(AM_CFLAGS) with $(AM_CPPFLAGS). |
| (uio_CFLAGS): Rename to uio_CPPFLAGS, |
| replace $(AM_CFLAGS) with $(AM_CPPFLAGS). |
| |
| 2015-12-08 Dmitry V. Levin <ldv@altlinux.org> |
| |
| Move x32 <asm/stat.h> replacement to x32 specific directory. |
| As tests-m*32/Makefile.am files now refer to proper arch specific |
| directories, it's possible to relocate x32 <asm/stat.h> replacement |
| to its arch specific directory. |
| |
| * linux/x86_64/asm_stat.h: Move ... |
| * linux/x32/asm_stat.h: ... here, remove x32 guard. |
| * Makefile.am (strace_SOURCES): Remove linux/x86_64/asm_stat.h. |
| |
| 2015-12-08 Dmitry V. Levin <ldv@altlinux.org> |
| |
| build: set arch specific -m switches in tests-m*32/Makefile.am files properly |
| * tests/Makefile.am (ARCH_MFLAGS, AM_LDFLAGS): New variables. |
| (AM_CPPFLAGS): Use ARCH_MFLAGS. |
| * bootstrap: In tests-m32/Makefile.am and tests-mx32/Makefile.am, |
| add -m32 and -mx32, respectively, to ARCH_MFLAGS instead of AM_CFLAGS. |
| |
| build: initialize ARCH variable in tests-m*32/Makefile.am files properly |
| * configure.ac (arch_m32): Set to sparc on sparc64, powerpc on |
| powerpc64, arm on aarch64, i386 on x86_64 and x32, $arch in other cases. |
| (arch_mx32): Set to x32 on x86_64, $arch in other cases. |
| (AC_SUBST): Add arch_m32 and arch_mx32. |
| * bootstrap: Substitute @arch@ with @arch_m32@ in tests-m32/Makefile.am. |
| Substitute @arch@ with @arch_mx32@ in tests-mx32/Makefile.am. |
| |
| 2015-12-07 Dmitry V. Levin <ldv@altlinux.org> |
| |
| tests: add umount.test and umount2.test. |
| * tests/umount.c: New file. |
| * tests/umount2.c: Likewise. |
| * tests/umount.test: New test. |
| * tests/umount2.test: Likewise. |
| * tests/Makefile.am (check_PROGRAMS): Add umount and umount2. |
| (TESTS): Add umount.test and umount2.test. |
| * tests/.gitignore: Add umount and umount2. |
| |
| avr32: fix umount2 syscall entry. |
| * linux/avr32/syscallent.h: Rename umount to umount2. |
| |
| Update umount2 flags. |
| * umount.c (MNT_FORCE, MNT_DETACH, MNT_EXPIRE): Move definitions ... |
| * xlat/umount_flags.in: ... here. Add UMOUNT_NOFOLLOW. |
| |
| 2015-12-07 Dmitry V. Levin <ldv@altlinux.org> |
| |
| Print the first argument of umount2 syscall as a path. |
| * umount.c (SYS_FUNC(umount2)): Use printpath instead of printstr. |
| |
| This fixes Debian bug #785050. |
| |
| 2015-12-06 Dmitry V. Levin <ldv@altlinux.org> |
| |
| prctl: add PR_CAP_AMBIENT parser. |
| * xlat/pr_cap_ambient.in: New file. |
| * prctl.c: Include "xlat/pr_cap_ambient.h". |
| (SYS_FUNC(prctl)): Handle PR_CAP_AMBIENT. |
| |
| prctl: finish decoding of several commands on entering syscall. |
| * prctl.c (SYS_FUNC(prctl)): Return RVAL_DECODED after decoding of |
| PR_GET_DUMPABLE, PR_GET_KEEPCAPS, PR_GET_SECCOMP, PR_GET_TIMERSLACK, |
| PR_GET_TIMING, and PR_CAPBSET_READ commands. |
| |
| Fix build on systems that lack EM_FRV definition. |
| * xlat/audit_arch.in: Guard AUDIT_ARCH_FRV with EM_FRV check. |
| |
| times.test: workaround buggy libc. |
| * tests/times.c: Include <sys/syscall.h>. |
| (main): On systems where user's and kernel's long types are the same, |
| prefer direct times syscall over libc's times function because |
| the latter is more prone to return value truncation. |
| |
| times.test: reduce cpu time consumption, increase struct tms diversity. |
| * tests/times.c (main): Reduce cpu time consumption fourfold, |
| make the parent process consume less cpu time than the child process |
| so that members of the structure returned by times syscall would be |
| more likely to contain different values. |
| |
| 2015-12-06 Dmitry V. Levin <ldv@altlinux.org> |
| |
| mips n32, x32: fix printing of times syscall return value. |
| As times syscall returns kernel's long value, it has to be printed as |
| RVAL_LUDECIMAL on systems where long type is less than kernel's long. |
| |
| * times.c (SYS_FUNC(times)) [RVAL_LUDECIMAL && !IN_MPERS]: |
| Return RVAL_LUDECIMAL instead of RVAL_UDECIMAL. |
| |
| 2015-12-06 Dmitry V. Levin <ldv@altlinux.org> |
| |
| unix-yy.test: fix portability issue. |
| * tests/unix-yy-connect.awk (r_close_listen): Quote square brackets |
| that are not part of a bracket expression. |
| |
| inet-cmsg.test: skip the test when the network is not functional. |
| * tests/inet-cmsg.c (main): Return 77 if inet datagram socket |
| cannot be bound to INADDR_LOOPBACK. |
| |
| 2015-12-05 Dmitry V. Levin <ldv@altlinux.org> |
| |
| fcntl: skip F_GETLK64, F_SETLK64, and F_SETLKW64 in fcntl syscall parser |
| As the kernel recognizes F_GETLK64, F_SETLK64, and F_SETLKW64 commands |
| in fcntl64 syscall only, do not parse their structures in fcntl parser. |
| |
| * xlat/fcntlcmds.in: Move F_GETLK64, F_SETLK64, and F_SETLKW64 ... |
| * xlat/fcntl64cmds.in: ... here. |
| * fcntl.c: Include "xlat/fcntl64cmds.h". |
| (print_fcntl): Move printing of first two syscall arguments |
| and handling of F_GETLK64, F_SETLK64, and F_SETLKW64 commands ... |
| (SYS_FUNC(fcntl), SYS_FUNC(fcntl64)): ... here. |
| * tests/fcntl.c: New file, based on struct_flock.c. |
| * tests/fcntl64.c: Likewise. |
| * tests/struct_flock.c (test_flock_einval, create_sample): New functions. |
| (test_flock): Use test_flock_einval. |
| (test_flock64, main): Remove. |
| * tests/fcntl.test: New test. |
| * tests/fcntl64.test: Likewise. |
| * tests/struct_flock.test: Remove. |
| * tests/Makefile.am (check_PROGRAMS): Add fcntl and fcntl64, |
| remove struct_flock. |
| (TESTS): Add fcntl.test and fcntl64.test, remove struct_flock.test. |
| (EXTRA_DIST) Add struct_flock.c. |
| * tests/.gitignore: Add fcntl and fcntl64, remove struct_flock. |
| |
| 2015-12-05 Dmitry V. Levin <ldv@altlinux.org> |
| |
| print_fcntl: finish with unrecognized commands on entering syscall. |
| * fcntl.c (print_fcntl): Merge two switch statements. |
| |
| 2015-12-04 Elvira Khabirova <lineprinter0@gmail.com> |
| |
| fcntl: create a separate parser for fcntl64 syscall. |
| * fcntl.c(print_fcntl): New function, made from SYS_FUNC(fcntl). |
| (SYS_FUNC(fcntl), SYS_FUNC(fcntl64)): Use it. |
| * linux/32/syscallent.h: Change parser of fcntl64 to SEN(fcntl64). |
| * linux/arm/syscallent.h: Likewise. |
| * linux/avr32/syscallent.h: Likewise. |
| * linux/bfin/syscallent.h: Likewise. |
| * linux/hppa/syscallent.h: Likewise. |
| * linux/i386/syscallent.h: Likewise. |
| * linux/m68k/syscallent.h: Likewise. |
| * linux/microblaze/syscallent.h: Likewise. |
| * linux/mips/syscallent-n32.h: Likewise. |
| * linux/mips/syscallent-o32.h: Likewise. |
| * linux/powerpc/syscallent.h: Likewise. |
| * linux/s390/syscallent.h: Likewise. |
| * linux/sh/syscallent.h: Likewise. |
| * linux/sh64/syscallent.h: Likewise. |
| * linux/sparc/syscallent.h: Likewise. |
| * linux/xtensa/syscallent.h: Likewise. |
| |
| 2015-12-05 Dmitry V. Levin <ldv@altlinux.org> |
| |
| travis-ci: add build matrix. |
| |
| tests: replace old stat tests with stat.test and stat64.test. |
| * tests/stat.c: Replace with a wrapper around lstatx.c |
| * tests/stat.test: Replace with a wrapper around statx.sh. |
| * tests/stat32-v.test: Remove. |
| * tests/stat32.c: Remove. |
| * tests/stat64-v.test: Remove. |
| * tests/stat64.c: New file. |
| * tests/stat64.test: New test. |
| * tests/Makefile.am (check_PROGRAMS): Replace stat32 with stat64. |
| (stat_CFLAGS): Rename to stat64_CFLAGS. |
| (TESTS): Replace stat32-v.test and stat64-v.test with stat64.test. |
| * tests/.gitignore: Replace stat32 with stat64. |
| |
| tests: add lstat.test and lstat64.test. |
| * tests/lstat.c: New file. |
| * tests/lstat64.c: Likewise. |
| * tests/lstatx.c: Likewise. |
| * tests/lstat.test: New test. |
| * tests/lstat64.test: Likewise. |
| * tests/Makefile.am (check_PROGRAMS): Add lstat and lstat64. |
| (lstat64_CFLAGS): Define. |
| (TESTS): Add lstat.test and lstat64.test. |
| (EXTRA_DIST): Add lstatx.c. |
| * tests/.gitignore: Add lstat and lstat64. |
| |
| tests: add fstat.test and fstat64.test. |
| * tests/fstat.c: New file. |
| * tests/fstat64.c: Likewise. |
| * tests/fstatx.c: Likewise. |
| * tests/fstat.test: New test. |
| * tests/fstat64.test: Likewise. |
| * tests/Makefile.am (check_PROGRAMS): Add fstat and fstat64. |
| (fstat64_CFLAGS): Define. |
| (TESTS): Add fstat.test and fstat64.test. |
| (EXTRA_DIST): Add fstatx.c. |
| * tests/.gitignore: Add fstat and fstat64. |
| |
| 2015-12-05 Dmitry V. Levin <ldv@altlinux.org> |
| |
| tests: prepare for detailed testing of stat family syscalls. |
| Parametrize code from fstatat.c to support <asm/stat.h> |
| as an alternative to <sys/stat.h> and move it to a separate file. |
| |
| * tests/statx.sh: New file, based on fstatat64.test. |
| * tests/fstatat64.test: Use it. |
| * tests/newfstatat.test: Likewise. |
| * tests/xstatx.c: New file, based on fstatat.c. |
| * tests/fstatat.c: Use it. |
| * tests/Makefile.am (EXTRA_DIST): Add statx.sh and xstatx.c. |
| * tests/fstatat64.c (FSTATAT_NAME): Change to TEST_SYSCALL_NAME. |
| * tests/newfstatat.c: Likewise. |
| |
| 2015-12-04 Gabriel Laskar <gabriel@lse.epita.fr> |
| |
| ioctl: allow to stop decoding number. |
| For some ioctls, like from drm, the identification of the correct ioctl |
| is done by custom code. Specifying IOCTL_NUMBER_STOP_LOOKUP on |
| return of ioctl_decode_command_number() disables further calls to |
| ioctl_lookup(). |
| |
| * defs.h (IOCTL_NUMBER_UNKNOWN, IOCTL_NUMBER_HANDLED, |
| IOCTL_NUMBER_STOP_LOOKUP): Add macros representing ioctl number state |
| decoding. |
| * ioctl.c (SYS_FUNC(ioctl)): Skip ioctl_lookup() when |
| ioctl_decode_command_number() returns a value with |
| IOCTL_NUMBER_STOP_LOOKUP flag is set. |
| |
| Suggested-by: Patrik Jakobsson <patrik.r.jakobsson@gmail.com> |
| |
| 2015-12-04 Dmitry V. Levin <ldv@altlinux.org> |
| |
| tests: skip restart_syscall.test on x32. |
| The syscall number of restart_syscall returned by the kernel in case |
| of ERESTART_RESTARTBLOCK is broken on x32 from the beginning, see |
| https://lkml.org/lkml/2015/11/30/790 |
| |
| Until that improves, skip the test on x32. |
| |
| * tests/restart_syscall.c (main) [__x86_64__ && __ILP32__]: Return 77. |
| |
| 2015-12-04 Dmitry V. Levin <ldv@altlinux.org> |
| |
| x32: fix decoding of i386 personality lseek syscall. |
| On x32, tcp->ext_arg is not initialized for i386 personality, |
| so tcp->u_arg has to be used instead. |
| |
| * lseek.c (SYS_FUNC(lseek)) [X32]: Handle "current_personality == 1" case. |
| |
| 2015-12-04 Dmitry V. Levin <ldv@altlinux.org> |
| |
| x86_64, x32: add a replacement for <asm/stat.h> |
| Some old kernel headers, Ubuntu 14.04 in particular, provide |
| <asm/stat.h> editions that are completely wrong for x32. |
| Workaround this issue by providing a replacement. |
| |
| * linux/x86_64/asm_stat.h: New file. |
| * linux/x32/asm_stat.h: Likewise. |
| * Makefile.am (strace_SOURCES): Add them. |
| |
| 2015-12-04 Dmitry V. Levin <ldv@altlinux.org> |
| |
| Add a wrapper around <asm/stat.h> |
| * linux/asm_stat.h: New file. |
| * Makefile.am (strace_SOURCES): Add it. |
| * file.c: Use it. |
| |
| kernel_types.h: protect from double inclusion. |
| * kernel_types.h: Add #include guard. |
| |
| 2015-12-03 Dmitry V. Levin <ldv@altlinux.org> |
| |
| fstatat64.test: lift /proc requirement. |
| While -P option needs /proc to match descriptors, it does not use |
| /proc to match pathnames. As this test does not need descriptor |
| match, the /proc requirement can be safely lifted. |
| |
| * tests/fstatat64.test: Lift /proc/self/fd/ requirement. |
| |
| 2015-12-02 Dmitry V. Levin <ldv@altlinux.org> |
| |
| tests: add fstatat64.test and newfstatat.test. |
| * configure.ac (AC_CHECK_FUNCS): Add fstatat, ftruncate, and futimens. |
| * tests/fstatat.c: New file. |
| * tests/fstatat64.c: Likewise. |
| * tests/newfstatat.c: Likewise. |
| * tests/fstatat64.test: New test. |
| * tests/newfstatat.test: Likewise. |
| * tests/Makefile.am (check_PROGRAMS): Add fstatat64 and newfstatat. |
| (fstatat64_CFLAGS, newstatat_CFLAGS): Define. |
| (TESTS): Add fstatat64.test and newfstatat.test. |
| (EXTRA_DIST): Add fstatat.c. |
| * tests/.gitignore: Add fstatat64 and newfstatat. |
| |
| 2015-12-01 Dmitry V. Levin <ldv@altlinux.org> |
| |
| alpha, ppc, sh, sh64: fix fstatat64 syscall entries. |
| * linux/alpha/syscallent.h (newfstatat): Change sys_name to fstatat64. |
| * linux/powerpc/syscallent.h: Likewise. |
| * linux/sh/syscallent.h: Likewise. |
| * linux/sh64/syscallent.h: Likewise. |
| |
| ppc64: clone syscallent.h from ppc. |
| * linux/powerpc64/syscallent.h: Clone from linux/powerpc/syscallent.h |
| with entries for numbers 192..197, 204, 226, and 254 unassigned. |
| |
| tests: add lseek.test and llseek.test. |
| * tests/llseek.c: New file. |
| * tests/lseek.c: Likewise. |
| * tests/llseek.test: New test. |
| * tests/lseek.test: Likewise. |
| * tests/Makefile.am (check_PROGRAMS): Add llseek and lseek. |
| (TESTS): Add llseek.test and lseek.test. |
| * tests/.gitignore: Add llseek and lseek. |
| |
| tests: add ftruncate64.test and truncate64.test. |
| * tests/ftruncate64.c: New file. |
| * tests/truncate64.c: Likewise. |
| * tests/ftruncate64.test: New test. |
| * tests/truncate64.test: Likewise. |
| * tests/Makefile.am (check_PROGRAMS): Add ftruncate64 and truncate64. |
| (ftruncate64_CFLAGS, truncate64_CFLAGS): Define. |
| (TESTS): Add ftruncate64.test and truncate64.test. |
| * tests/.gitignore: Add ftruncate64 and truncate64. |
| |
| tests: add ftruncate.test and truncate.test. |
| * tests/ftruncate.c: New file. |
| * tests/truncate.c: Likewise. |
| * tests/ftruncate.test: New test. |
| * tests/truncate.test: Likewise. |
| * tests/Makefile.am (check_PROGRAMS): Add ftruncate and truncate. |
| (TESTS): Add ftruncate.test and truncate.test. |
| * tests/.gitignore: Add ftruncate and truncate. |
| |
| 2015-11-30 Dmitry V. Levin <ldv@altlinux.org> |
| |
| build: robustify linux/fcntl.h check. |
| * configure.ac (AC_CHECK_TYPES): Support older linux kernel headers |
| by including <sys/types.h> before <linux/fcntl.h>. |
| |
| 2015-11-30 Dmitry V. Levin <ldv@altlinux.org> |
| |
| syscall.c: move inclusion of arch specific files to the end of file. |
| Move inclusion of arch specific files that define static functions to |
| the end of syscall.c. |
| |
| * syscall.c (get_syscall_result_regs, get_error, getregs_old): |
| New forward declarations. |
| (arch_get_scno): Move forward. |
| Move inclusion of "get_scno.c", "get_syscall_args.c", |
| "get_syscall_result.c", "get_error.c", and "getregs_old.c" |
| to the end of file. |
| |
| 2015-11-30 Dmitry V. Levin <ldv@altlinux.org> |
| |
| x86_64: change getregs_old to forward ptrace return code. |
| * linux/x86_64/getregs_old.c (getregs_old): Change to return ptrace |
| return code. |
| * syscall.c (get_regs) [ARCH_REGS_FOR_GETREGSET && X86_64]: Use |
| getregs_old return code. |
| |
| 2015-11-30 Dmitry V. Levin <ldv@altlinux.org> |
| |
| Cleanup print_pc. |
| Apparently, there are only two types of instruction pointer printers |
| depending on the architecture: those that print a register that was |
| fetched earlier, and those that fetch a register themselves using upeek. |
| With this change, architectures of the first type have ARCH_PC_REG |
| defined in their arch_regs.c file, architectures of the first type |
| have ARCH_PC_PEEK_ADDR defined there, and the common code in syscall.c |
| uses these macros to print the instruction pointer. |
| |
| * Makefile.am (EXTRA_DIST): Remove linux/*/print_pc.c. |
| * linux/*/print_pc.c: Remove. |
| * linux/aarch64/arch_regs.c(ARCH_PC_REG): Define macro. |
| * linux/arc/arch_regs.c(ARCH_PC_REG): Likewise. |
| * linux/arm/arch_regs.c(ARCH_PC_REG): Likewise. |
| * linux/avr32/arch_regs.c(ARCH_PC_REG): Likewise. |
| * linux/i386/arch_regs.c(ARCH_PC_REG): Likewise. |
| * linux/ia64/arch_regs.c(ARCH_PC_REG): Likewise. |
| * linux/metag/arch_regs.c(ARCH_PC_REG): Likewise. |
| * linux/mips/arch_regs.c(ARCH_PC_REG): Likewise. |
| * linux/nios2/arch_regs.c(ARCH_PC_REG): Likewise. |
| * linux/or1k/arch_regs.c(ARCH_PC_REG): Likewise. |
| * linux/powerpc64/arch_regs.c(ARCH_PC_REG): Likewise. |
| * linux/powerpc/arch_regs.c(ARCH_PC_REG): Likewise. |
| * linux/s390/arch_regs.c(ARCH_PC_REG): Likewise. |
| * linux/s390x/arch_regs.c(ARCH_PC_REG): Likewise. |
| * linux/sparc64/arch_regs.c(ARCH_PC_REG): Likewise. |
| * linux/sparc/arch_regs.c(ARCH_PC_REG): Likewise. |
| * linux/tile/arch_regs.c(ARCH_PC_REG): Likewise. |
| * linux/x32/arch_regs.c(ARCH_PC_REG): Likewise. |
| * linux/x86_64/arch_regs.c(ARCH_PC_REG): Likewise. |
| * linux/alpha/arch_regs.c(ARCH_PC_PEEK_ADDR): Define macro. |
| * linux/bfin/arch_regs.c(ARCH_PC_PEEK_ADDR): Likewise. |
| * linux/crisv10/arch_regs.c(ARCH_PC_PEEK_ADDR): Likewise. |
| * linux/crisv32/arch_regs.c(ARCH_PC_PEEK_ADDR): Likewise. |
| * linux/hppa/arch_regs.c(ARCH_PC_PEEK_ADDR): Likewise. |
| * linux/m68k/arch_regs.c(ARCH_PC_PEEK_ADDR): Likewise. |
| * linux/microblaze/arch_regs.c(ARCH_PC_PEEK_ADDR): Likewise. |
| * linux/sh64/arch_regs.c(ARCH_PC_PEEK_ADDR): Likewise. |
| * linux/sh/arch_regs.c(ARCH_PC_PEEK_ADDR): Likewise. |
| * linux/xtensa/arch_regs.c(ARCH_PC_PEEK_ADDR): Likewise. |
| * syscall.c (print_pc): Stop including "print_pc.c". |
| Use ARCH_PC_REG or ARCH_PC_PEEK_ADDR. |
| |
| 2015-11-30 Dmitry V. Levin <ldv@altlinux.org> |
| |
| cleanup: make get_scno.c files more readable. |
| Make get_scno.c files more self-contained. While they are still |
| being included by syscall.c, the latter no longer provides |
| a function framework for them. |
| |
| * linux/aarch64/get_scno.c (arch_get_scno): Define. |
| * linux/alpha/get_scno.c: Likewise. |
| * linux/arc/get_scno.c: Likewise. |
| * linux/arm/get_scno.c: Likewise. |
| * linux/avr32/get_scno.c: Likewise. |
| * linux/bfin/get_scno.c: Likewise. |
| * linux/crisv10/get_scno.c: Likewise. |
| * linux/hppa/get_scno.c: Likewise. |
| * linux/i386/get_scno.c: Likewise. |
| * linux/ia64/get_scno.c: Likewise. |
| * linux/m68k/get_scno.c: Likewise. |
| * linux/metag/get_scno.c: Likewise. |
| * linux/microblaze/get_scno.c: Likewise. |
| * linux/mips/get_scno.c: Likewise. |
| * linux/nios2/get_scno.c: Likewise. |
| * linux/or1k/get_scno.c: Likewise. |
| * linux/powerpc/get_scno.c: Likewise. |
| * linux/powerpc64/get_scno.c: Likewise. |
| * linux/s390/get_scno.c: Likewise. |
| * linux/sh/get_scno.c: Likewise. |
| * linux/sh64/get_scno.c: Likewise. |
| * linux/sparc/get_scno.c: Likewise. |
| * linux/sparc64/get_scno.c: Likewise. |
| * linux/tile/get_scno.c: Likewise. |
| * linux/x86_64/get_scno.c: Likewise. |
| * linux/xtensa/get_scno.c: Likewise. |
| * syscall.c (arch_get_scno): New declaration. |
| Include "get_scno.c" in file scope. |
| (get_scno): Use arch_get_scno. |
| |
| Requested-by: Denys Vlasenko <dvlasenk@redhat.com> |
| |
| 2015-11-30 Dmitry V. Levin <ldv@altlinux.org> |
| |
| cleanup: make get_syscall_args.c files more readable. |
| Make get_syscall_args.c files more self-contained. While they are |
| still being included by syscall.c, the latter no longer defines |
| get_syscall_args function. |
| |
| * linux/aarch64/get_syscall_args.c: Include "arm/get_syscall_args.c" |
| with get_syscall_args temporarily defined to arm_get_syscall_args. |
| (get_syscall_args): Define. |
| * linux/alpha/get_syscall_args.c (get_syscall_args): Define. |
| * linux/arc/get_syscall_args.c: Likewise. |
| * linux/arm/get_syscall_args.c: Likewise. |
| * linux/avr32/get_syscall_args.c: Likewise. |
| * linux/bfin/get_syscall_args.c: Likewise. |
| * linux/crisv10/get_syscall_args.c: Likewise. |
| * linux/hppa/get_syscall_args.c: Likewise. |
| * linux/i386/get_syscall_args.c: Likewise. |
| * linux/ia64/get_syscall_args.c: Likewise. |
| * linux/m68k/get_syscall_args.c: Likewise. |
| * linux/metag/get_syscall_args.c: Likewise. |
| * linux/microblaze/get_syscall_args.c: Likewise. |
| * linux/mips/get_syscall_args.c: Likewise. |
| * linux/nios2/get_syscall_args.c: Likewise. |
| * linux/or1k/get_syscall_args.c: Likewise. |
| * linux/powerpc/get_syscall_args.c: Likewise. |
| * linux/s390/get_syscall_args.c: Likewise. |
| * linux/sh/get_syscall_args.c: Likewise. |
| * linux/sh64/get_syscall_args.c: Likewise. |
| * linux/sparc/get_syscall_args.c: Likewise. |
| * linux/tile/get_syscall_args.c: Likewise. |
| * linux/x86_64/get_syscall_args.c: Likewise. |
| * linux/xtensa/get_syscall_args.c: Likewise. |
| * syscall.c (get_syscall_args): Remove. |
| Include "get_syscall_args.c" in file scope. |
| |
| Requested-by: Denys Vlasenko <dvlasenk@redhat.com> |
| |
| 2015-11-30 Dmitry V. Levin <ldv@altlinux.org> |
| |
| cleanup: make get_syscall_result.c files more readable. |
| Make get_syscall_result.c files more self-contained. While they are |
| still being included by syscall.c, the latter no longer provides |
| a function framework for them. |
| |
| * linux/alpha/get_syscall_result.c (get_syscall_result_regs): Define. |
| * linux/bfin/get_syscall_result.c: Likewise. |
| * linux/crisv10/get_syscall_result.c: Likewise. |
| * linux/hppa/get_syscall_result.c: Likewise. |
| * linux/m68k/get_syscall_result.c: Likewise. |
| * linux/microblaze/get_syscall_result.c: Likewise. |
| * linux/sh/get_syscall_result.c: Likewise. |
| * linux/sh64/get_syscall_result.c: Likewise. |
| * linux/xtensa/get_syscall_result.c: Likewise. |
| * syscall.c [!ARCH_REGS_FOR_GETREGSET && !ARCH_REGS_FOR_GETREGS]: |
| Define USE_GET_SYSCALL_RESULT_REGS macro. |
| [USE_GET_SYSCALL_RESULT_REGS]: Include "get_syscall_result.c". |
| (get_syscall_result) [USE_GET_SYSCALL_RESULT_REGS]: Stop including |
| "get_syscall_result.c". Call get_syscall_result_regs. |
| |
| Requested-by: Denys Vlasenko <dvlasenk@redhat.com> |
| |
| 2015-11-29 Dmitry V. Levin <ldv@altlinux.org> |
| |
| cleanup: make get_error.c files more readable. |
| Make get_error.c files more self-sustained. While they are still being |
| included by syscall.c, the latter no longer defines get_error function. |
| |
| * linux/aarch64/get_error.c: Include "arm/get_error.c" with get_error |
| temporarily defined to arm_get_error. |
| (get_error): Define. |
| * linux/alpha/get_error.c (get_error): Define. |
| * linux/arc/get_error.c: Likewise. |
| * linux/arm/get_error.c: Likewise. |
| * linux/avr32/get_error.c: Likewise. |
| * linux/bfin/get_error.c: Likewise. |
| * linux/crisv10/get_error.c: Likewise. |
| * linux/hppa/get_error.c: Likewise. |
| * linux/i386/get_error.c: Likewise. |
| * linux/ia64/get_error.c: Likewise. |
| * linux/m68k/get_error.c: Likewise. |
| * linux/metag/get_error.c: Likewise. |
| * linux/microblaze/get_error.c: Likewise. |
| * linux/mips/get_error.c: Likewise. |
| * linux/nios2/get_error.c: Likewise. |
| * linux/or1k/get_error.c: Likewise. |
| * linux/powerpc/get_error.c: Likewise. |
| * linux/s390/get_error.c: Likewise. |
| * linux/sh/get_error.c: Likewise. |
| * linux/sh64/get_error.c: Likewise. |
| * linux/sparc/get_error.c: Likewise. |
| * linux/sparc64/get_error.c: Likewise. |
| * linux/tile/get_error.c: Likewise. |
| * linux/x86_64/get_error.c: Likewise. |
| * linux/xtensa/get_error.c: Likewise. |
| * syscall.c: Include "get_error.c" in file scope. |
| (get_error): Remove. Move arch independent code ... |
| (get_syscall_result): ... here. Update get_error invocation. |
| |
| Requested-by: Denys Vlasenko <dvlasenk@redhat.com> |
| |
| 2015-11-28 Dmitry V. Levin <ldv@altlinux.org> |
| |
| cleanup: make arch_sigreturn.c files more readable. |
| Make arch_sigreturn.c files more self-sustained. While they are |
| still being included by sigreturn.c, the latter no longer defines |
| arch_sigreturn function. |
| |
| * linux/alpha/arch_sigreturn.c (arch_sigreturn): Define. |
| * linux/arm/arch_sigreturn.c: Likewise. |
| * linux/crisv10/arch_sigreturn.c: Likewise. |
| * linux/i386/arch_sigreturn.c: Likewise. |
| * linux/ia64/arch_sigreturn.c: Likewise. |
| * linux/m68k/arch_sigreturn.c: Likewise. |
| * linux/microblaze/arch_sigreturn.c: Likewise. |
| * linux/mips/arch_sigreturn.c: Likewise. |
| * linux/powerpc/arch_sigreturn.c: Likewise. |
| * linux/s390/arch_sigreturn.c: Likewise. |
| * linux/sparc/arch_sigreturn.c: Likewise. |
| * linux/tile/arch_sigreturn.c: Likewise. |
| * linux/x32/arch_sigreturn.c: Remove code. |
| Include "x86_64/arch_sigreturn.c". |
| * linux/x86_64/arch_sigreturn.c: Stop including "x32/arch_sigreturn.c". |
| Include "i386/arch_sigreturn.c" with arch_sigreturn temporarily defined |
| to i386_arch_sigreturn. |
| (arch_sigreturn): Define. Add x32 personality support there. |
| * sigreturn.c: Remove arch_sigreturn header and footer. |
| |
| Requested-by: Denys Vlasenko <dvlasenk@redhat.com> |
| |
| 2015-11-26 Dmitry V. Levin <ldv@altlinux.org> |
| |
| Add initial Travis CI support. |
| * .travis.yml: New file. |
| * travis-ci.sh: Likewise. |
| |
| 2015-11-27 Dmitry V. Levin <ldv@altlinux.org> |
| |
| tests: remove temporary files left after two tests. |
| * tests/net-yy.test: Remove "$LOG"-connect and "$LOG"-accept. |
| * tests/unix-yy.test: Likewise. |
| |
| 2015-11-27 Dmitry V. Levin <ldv@altlinux.org> |
| |
| tests: skip stat32-v.test on x32. |
| Explicitly skip 32-bit stat test on x32 even if libc pretends |
| to support it. |
| |
| * tests/stat.c (main) [__x86_64__ && __ILP32__]: Skip. |
| |
| 2015-11-27 Dmitry V. Levin <ldv@altlinux.org> |
| |
| tests: fix ipc_msgbuf.test on x32. |
| * tests/ipc_msgbuf.c: Include "config.h" and "kernel_types.h". |
| (main): Replace "long" with "kernel_long_t" in struct msgbuf. |
| |
| x32: fix pselect6 decoding. |
| * desc.c: Include "kernel_types.h". |
| (umove_kulong_array_or_printaddr): New function. |
| (SYS_FUNC(pselect6)): Use it. |
| |
| x32: fix sigreturn decoding. |
| * linux/x32/arch_sigreturn.c: Implement x32_rt_sigreturn decoding. |
| * linux/x86_64/arch_sigreturn.c: Handle (current_personality == 0) |
| case only. |
| Include "x32/arch_sigreturn.c" instead of "i386/arch_sigreturn.c". |
| |
| x32: fix struct dirent decoding. |
| * kernel_types.h: New file. |
| * Makefile.am (strace_SOURCES): Add it. |
| * configure.ac (AC_CHECK_TYPES): Check for __kernel_long_t |
| and __kernel_ulong_t in <asm/posix_types.h>. |
| * dirent.c: Stop including <dirent.h>. |
| (kernel_dirent): Remove. |
| Include "kernel_types.h". |
| (print_old_dirent, SYS_FUNC(getdents)): Print variables |
| of kernel_ulong_t type using %Lu format. |
| * syscall.c (kernel_long_t, kernel_ulong_t): Remove. |
| Include "kernel_types.h". |
| * tests/getdents.c (kernel_dirent): Remove. |
| Include "kernel_types.h". |
| (print_dirent): Print variables of kernel_ulong_t type using %Lu format. |
| |
| 2015-11-26 Elvira Khabirova <lineprinter0@gmail.com> |
| |
| Refer to -h on incorrect usage. |
| * defs.h (error_msg_and_help): New prototype. |
| * strace.c (error_msg_and_help): New function. |
| (error_opt_arg, init): Use it. |
| (usage): Remove unnecessary arguments. |
| * count.c: Use the new function. |
| |
| Rearrange flags descriptions in the usage text. |
| * strace.c (usage): Rearrange descriptions. |
| * tests/strace-k.test: Change the option detecting regexp accordingly. |
| |
| 2015-11-26 Dmitry V. Levin <ldv@altlinux.org> |
| |
| tests: run in "set -x" mode if VERBOSE variable is non-null. |
| * tests/init.sh: Enter "set -x" mode if $VERBOSE is non-null. |
| |
| 2015-11-26 Dmitry V. Levin <ldv@altlinux.org> |
| |
| tests: fix match_diff usage. |
| Fix argument order in match_diff invocations: |
| the first argument has to be actual output, |
| the second argument has to be expected output. |
| |
| * tests/aio.test: Swap match_diff arguments. |
| * tests/clock_nanosleep.test: Likewise. |
| * tests/clock_xettime.test: Likewise. |
| * tests/file_handle.test: Likewise. |
| * tests/getdents.test: Likewise. |
| * tests/getdents64.test: Likewise. |
| * tests/getrandom.test: Likewise. |
| * tests/inet-cmsg.test: Likewise. |
| * tests/ioctl.test: Likewise. |
| * tests/membarrier.test: Likewise. |
| * tests/mlock2.test: Likewise. |
| * tests/nanosleep.test: Likewise. |
| * tests/pselect6.test: Likewise. |
| * tests/readdir.test: Likewise. |
| * tests/readlink.test: Likewise. |
| * tests/readlinkat.test: Likewise. |
| * tests/rt_sigqueueinfo.test: Likewise. |
| * tests/seccomp.test: Likewise. |
| * tests/select.test: Likewise. |
| * tests/sendfile.test: Likewise. |
| * tests/sendfile64.test: Likewise. |
| * tests/struct_flock.test: Likewise. |
| * tests/sysinfo.test: Likewise. |
| * tests/time.test: Likewise. |
| * tests/timer_create.test: Likewise. |
| * tests/timer_xettime.test: Likewise. |
| * tests/timerfd_xettime.test: Likewise. |
| * tests/times-fail.test: Likewise. |
| * tests/times.test: Likewise. |
| * tests/umovestr2.test: Likewise. |
| * tests/userfaultfd.test: Likewise. |
| * tests/utime.test: Likewise. |
| * tests/utimensat.test: Likewise. |
| * tests/xet_robust_list.test: Likewise. |
| * tests/xetitimer.test: Likewise. |
| * tests/xettimeofday.test: Likewise. |
| |
| 2015-11-26 Dmitry V. Levin <ldv@altlinux.org> |
| |
| x86_64: fix x32 personality support in print_llu_from_low_high_val. |
| x86 is the only personality supported on x86_64 |
| that has 32-bit syscall arguments. |
| |
| * io.c (print_llu_from_low_high_val) [X86_64]: Fix |
| current_personality == 2 case. |
| |
| 2015-11-26 Dmitry V. Levin <ldv@altlinux.org> |
| |
| x86_64: fix x32 personality support in getllval. |
| x86 is the only personality supported on x86_64 |
| that has 32-bit syscall arguments. |
| |
| * util.c (getllval) [X86_64]: Fix current_personality == 2 case. |
| |
| 2015-11-26 Dmitry V. Levin <ldv@altlinux.org> |
| |
| tests/file_handle: fix expected output. |
| * tests/file_handle.c (main): Parametrize handle_type |
| in open_by_handle_at parser output. |
| |
| startup_attach: fix compilation warning. |
| * strace.c (startup_attach): Split single error_msg statement with |
| variable number of arguments to silence a compilation warning. |
| |
| 2015-11-26 Dmitry V. Levin <ldv@altlinux.org> |
| |
| .gitignore: add mpers_xlat.h. |
| Ignore mpers_xlat.h generated since commit v4.10-454-g5cb45b2. |
| |
| * .gitignore: Add /mpers_xlat.h. |
| |
| Reported-by: Elvira Khabirova <lineprinter0@gmail.com> |
| |
| 2015-11-26 Dmitry V. Levin <ldv@altlinux.org> |
| |
| tests: add struct_flock.test. |
| * tests/struct_flock.c: New file. |
| * tests/struct_flock.test: New test. |
| * tests/Makefile.am (check_PROGRAMS): Add struct_flock. |
| (TESTS): Add struct_flock.test. |
| * tests/.gitignore: Add struct_flock. |
| |
| Convert parsers of flock structures to new mpers infrastructure. |
| * fetch_struct_flock.c: New file. |
| * Makefile.am (strace_SOURCES): Add it. |
| * fcntl.c (print_struct_flock64): New function. |
| (printflock64): Use fetch_struct_flock64 and print_struct_flock64. |
| (printflock): Use fetch_struct_flock and print_struct_flock64. |
| |
| fcntl.c: implement decoding for all known operations. |
| * xlat/f_owner_types.in: New file. |
| * xlat/f_seals.in: Likewise. |
| * fcntl.c: Include "xlat/f_owner_types.h" and "xlat/f_seals.h". |
| (print_f_owner_ex): New function. |
| (SYS_FUNC(fcntl)): Use it. |
| Handle F_SETPIPE_SZ, F_GETPIPE_SZ, F_OFD_SETLKW, |
| F_OFD_SETLK, F_SETOWN_EX, F_ADD_SEALS, F_SETSIG, |
| F_OFD_GETLK, F_GETOWN_EX, F_GET_SEALS, F_GETSIG. |
| |
| fcntl.c: mark F_DUPFD and F_DUPFD_CLOEXEC return code with RVAL_FD flag. |
| * fcntl.c (SYS_FUNC(fcntl)): Set RVAL_FD flag in the return code |
| for F_DUPFD and F_DUPFD_CLOEXEC operations. |
| |
| fcntl.c: remove redundant ifdefs. |
| * fcntl.c (USE_PRINTFLOCK64): Remove macro. |
| (printflock64): Define unconditionally. |
| (SYS_FUNC(fcntl)): Do not check for USE_PRINTFLOCK64, |
| F_DUPFD_CLOEXEC, F_NOTIFY, F_SETLEASE, and F_GETLEASE macros. |
| |
| Update F_* constants. |
| * xlat/fcntlcmds.in: Add F_SETOWN_EX, F_GETOWN_EX, F_GETOWNER_UIDS, |
| F_OFD_GETLK, F_OFD_SETLK, F_OFD_SETLKW, and F_CANCELLK. |
| Remove F_ALLOCSP, F_BLKSIZE, F_BLOCKS, F_CHKFL, F_CNVT, F_DUP2FD, |
| F_ISSTREAM, F_NPRIV, F_PRIV, F_QUOTACL, F_REVOKE, F_RGETLK, F_RSETLK, |
| F_RSETLKW, F_SHARE, and F_UNSHARE. |
| Add default values. |
| |
| Update LOCK_* constants. |
| * xlat/flockcmds.in: Add LOCK_MAND, LOCK_READ, LOCK_WRITE, and LOCK_RW. |
| Add default values. |
| |
| 2015-11-26 Dmitry V. Levin <ldv@altlinux.org> |
| |
| fcntl.c: use <linux/fcntl.h> instead of <fcntl.h> |
| Include <linux/fcntl.h> for proper definitions of F_* constants |
| and flock structures. |
| |
| * configure.ac (AC_CHECK_TYPES): Check for struct flock, struct flock64, |
| struct __kernel_flock, and struct __kernel_flock64 in <linux/fcntl.h>. |
| * flock.h: New file. |
| * Makefile.am (strace_SOURCES): Add it. |
| * fcntl.c: Include it instead of <fcntl.h>. |
| (struct flock64): Remove. |
| (printflock): Use struct_kernel_flock instead of struct flock. |
| (printflock64): Use struct_kernel_flock64 instead of struct flock64. |
| |
| 2015-11-26 Elvira Khabirova <lineprinter0@gmail.com> |
| |
| mpers: fix compound types with arbitrary member alignments. |
| * mpers.sh: Compound types are now represented as packed |
| with character arrays as explicit fillers inbetween members |
| and at the end. |
| |
| 2015-11-26 Mike Frysinger <vapier@gentoo.org> |
| |
| Support C libraries without System V shared memory/ipc. |
| Some systems (like Bionic) omit support for SysV related code. That |
| means no C library headers for strace to include. Add configure tests |
| to probe the headers from the kernel and use them when they are |
| available. |
| |
| It might make more sense to never rely on the C library's headers as |
| there is no guarantee or requirement that the structure layout between |
| apps and the C library match that what is passed to the kernel. |
| |
| * configure.ac (AC_CHECK_HEADERS): Check for linux/ipc.h, |
| linux/mqueue.h, linux/msg.h, linux/sem.h, linux/shm.h, |
| sys/ipc.h, sys/msg.h, sys/sem.h, and sys/shm.h. |
| * ipc_defs.h: Include <sys/ipc.h> or <linux/ipc.h> depending |
| on what is available. |
| * ipc_msg.c: Replace <sys/ipc.h> with "ipc_defs.h". |
| Fallback to <linux/msg.h> when available. |
| * ipc_msgctl.c: Include <sys/msg.h>, <asm/msgbuf.h>, or <linux/msg.h> |
| based on what is available. Note missing support for old ipc structs. |
| * ipc_sem.c: Include <sys/sem.h> or <linux/sem.h> depending |
| on what is available. Only decode sembuf when available. |
| * ipc_shm.c: Fallback to <linux/shm.h> when available. |
| * ipc_shmctl.c: Include <sys/shm.h>, <asm/shmbuf.h>, or <linux/shm.h> |
| based on what is available. Note missing support for old ipc structs. |
| * print_mq_attr.c: Fallback to <linux/mqueue.h> when available. |
| |
| 2015-11-25 Dmitry V. Levin <ldv@altlinux.org> |
| |
| CREDITS.in: add Jian Zhen. |
| Thanks to Jian Zhen for donation of https://github.com/strace/ and |
| strace.io. |
| |
| * CREDITS.in: Add Jian Zhen. |
| |
| 2015-11-24 Dmitry V. Levin <ldv@altlinux.org> |
| |
| Fix syscall entries of unimplemented getpmsg and putpmsg syscalls. |
| * linux/ia64/syscallent.h (getpmsg): Change SEN(printargs) |
| to SEN(getpmsg). |
| (putpmsg): Change SEN(printargs) to SEN(putpmsg). |
| * linux/mips/syscallent-n32.h: Likewise. |
| * linux/mips/syscallent-n64.h: Likewise. |
| * linux/mips/syscallent-o32.h: Likewise. |
| * linux/arm/syscallent.h (getpmsg, putpmsg): Set sys_flags to TN. |
| * linux/bfin/syscallent.h (getpmsg, putpmsg): Likewise. |
| * linux/hppa/syscallent.h (getpmsg, putpmsg): Likewise. |
| * linux/i386/syscallent.h (getpmsg, putpmsg): Likewise. |
| * linux/m68k/syscallent.h (getpmsg, putpmsg): Likewise. |
| * linux/microblaze/syscallent.h (getpmsg, putpmsg): Likewise. |
| * linux/powerpc/syscallent.h (getpmsg, putpmsg): Likewise. |
| * linux/s390/syscallent.h (getpmsg, putpmsg): Likewise. |
| * linux/s390x/syscallent.h (getpmsg, putpmsg): Likewise. |
| * linux/x32/syscallent.h (getpmsg, putpmsg): Likewise. |
| * linux/x86_64/syscallent.h (getpmsg, putpmsg): Likewise. |
| |
| 2015-11-24 Dmitry V. Levin <ldv@altlinux.org> |
| |
| Remove parsers of getpmsg and putpmsg syscalls. |
| These system calls are not implemented in the Linux kernel. |
| |
| * linux/dummy.h(getpmsg, putpmsg): Move to the list of deprecated |
| syscalls. |
| * Makefile.am (strace_SOURCES): Remove stream.c. |
| * stream.c: Remove. |
| * xlat/pmsgflags.in: Remove. |
| |
| 2015-11-24 Dmitry V. Levin <ldv@altlinux.org> |
| |
| Remove parser of query_module syscall. |
| Since query_module syscall is present only in kernels before Linux 2.6 |
| and strace does not support those kernels, there is no use to keep this |
| parser any longer. |
| |
| * bjm.c: Do not include <sys/*>, "xlat/qm_which.h", |
| and "xlat/modflags.h". |
| (MOD_*, QM_*, module_symbol, module_info, SYS_FUNC(query_module)): |
| Remove. |
| * linux/dummy.h (sys_query_module): Add stub alias. |
| * xlat/modflags.in: Remove. |
| * xlat/qm_which.in: Remove. |
| |
| 2015-11-24 Dmitry V. Levin <ldv@altlinux.org> |
| |
| Fix syscall entries of deprecated sysfs syscall. |
| * linux/alpha/syscallent.h (sysfs): Change nargs from 5 to 3. |
| * linux/hppa/syscallent.h (sysfs): Likewise. |
| * linux/mips/syscallent-n32.h (sysfs): Likewise. |
| * linux/mips/syscallent-n64.h (sysfs): Likewise. |
| |
| Move sysfs syscall to deprecated category. |
| * linux/dummy.h (sys_sysfs): Move to the list of deprecated syscalls. |
| |
| Fix syscall entries of deprecated bdflush syscall. |
| * linux/alpha/syscallent.h (bdflush): Change nargs from 0 to 2. |
| * linux/arm/syscallent.h (bdflush): Likewise. |
| * linux/avr32/syscallent.h (bdflush): Likewise. |
| * linux/bfin/syscallent.h (bdflush): Likewise. |
| * linux/hppa/syscallent.h (bdflush): Likewise. |
| * linux/i386/syscallent.h (bdflush): Likewise. |
| * linux/ia64/syscallent.h (bdflush): Likewise. |
| * linux/m68k/syscallent.h (bdflush): Likewise. |
| * linux/microblaze/syscallent.h (bdflush): Likewise. |
| * linux/powerpc/syscallent.h (bdflush): Likewise. |
| * linux/s390/syscallent.h (bdflush): Likewise. |
| * linux/s390x/syscallent.h (bdflush): Likewise. |
| * linux/sh/syscallent.h (bdflush): Likewise. |
| * linux/sh64/syscallent.h (bdflush): Likewise. |
| * linux/sparc/syscallent.h (bdflush): Likewise. |
| |
| 2015-11-22 Dmitry V. Levin <ldv@altlinux.org> |
| |
| Implement name_to_handle_at and open_by_handle_at syscalls decoding. |
| * file_handle.c: New file. |
| * Makefile.am (strace_SOURCES): Add it. |
| * linux/dummy.h (sys_name_to_handle_at, sys_open_by_handle_at): |
| Remove stub aliases. |
| * pathtrace.c (pathtrace_match): Add SEN_name_to_handle_at. |
| * tests/file_handle.c: New file. |
| * tests/file_handle.test: New test. |
| * tests/Makefile.am (check_PROGRAMS): Add file_handle. |
| (TESTS): Add file_handle.test. |
| * tests/.gitignore: Add file_handle. |
| |
| Implement lookup_dcookie syscall decoding. |
| * lookup_dcookie.c: New file. |
| * Makefile.am (strace_SOURCES): Add it. |
| * linux/dummy.h (sys_lookup_dcookie): Remove stub alias. |
| |
| Implement kexec_file_load syscall decoding. |
| * xlat/kexec_file_load_flags.in: New file. |
| * kexec.c: Include "xlat/kexec_file_load_flags.h". |
| (SYS_FUNC(kexec_file_load)): New function. |
| * linux/dummy.h (sys_kexec_file_load): Remove stub alias. |
| * pathtrace.c (pathtrace_match): Add SEN_kexec_file_load. |
| |
| Implement kcmp syscall decoding. |
| * kcmp.c: New file. |
| * Makefile.am (strace_SOURCES): Add it. |
| * linux/dummy.h (sys_kcmp): Remove stub alias. |
| * xlat/kcmp_types.in: New file. |
| |
| Implement iopl syscall decoding. |
| * iopl.c: New file. |
| * Makefile.am (strace_SOURCES): Add it. |
| * linux/dummy.h (sys_iopl): Remove stub alias. |
| |
| Implement ioperm syscall decoding. |
| * ioperm.c: New file. |
| * Makefile.am (strace_SOURCES): Add it. |
| * linux/dummy.h (sys_ioperm): Remove stub alias. |
| |
| net: fix printing of IP_RECVOPTS/IP_RETOPTS cmsg options. |
| * net.c (print_cmsg_ip_opts): Print each byte as unsigned char. |
| |
| userfaultfd: fix pathtrace support. |
| * pathtrace.c (pathtrace_match): Add SEN_userfaultfd. |
| |
| 2015-11-22 Dmitry V. Levin <ldv@altlinux.org> |
| |
| Implement IPPROTO_IP control messages decoding. |
| * net.c: Include "xlat/ip_cmsg_types.h". |
| (print_cmsg_ip_pktinfo, print_cmsg_ip_ttl, print_cmsg_ip_tos, |
| print_cmsg_ip_opts, print_cmsg_ip_recverr, print_cmsg_ip_checksum, |
| print_cmsg_ip_origdstaddr): New functions. |
| (print_cmsg_type_data): Add generic SOL_IP level decoding. |
| Use these functions for decoding of IP_PKTINFO, IP_TTL, IP_TOS, |
| IP_RECVOPTS, IP_RETOPTS, IP_RECVERR, IP_ORIGDSTADDR, IP_CHECKSUM, |
| and SCM_SECURITY type messages. |
| * xlat/ip_cmsg_types.in: New file. |
| * xlat/sockipoptions.in: Move IP_RETOPTS before IP_RECVRETOPTS. |
| * tests/inet-cmsg.c: New file. |
| * tests/inet-cmsg.test: New test. |
| * tests/Makefile.am (check_PROGRAMS): Add inet-cmsg. |
| (TESTS): Add inet-cmsg.test. |
| * tests/.gitignore: Add inet-cmsg. |
| |
| Suggested-by: Orion Poplawski <orion@cora.nwra.com> |
| |
| 2015-11-22 Dmitry V. Levin <ldv@altlinux.org> |
| |
| Simplify control messages printers. |
| Do not pass sizeof(struct cmsghdr) to every cmsg printer. |
| |
| * net.c (printcmsghdr): Pass pointer to cmsg_data and length |
| of cmsg_data to print_cmsg_type_data. |
| (print_cmsg_type_data): Update prototype. Pass pointer to cmsg_data |
| and length of cmsg_data to cmsg printers. |
| (print_scm_rights, print_scm_creds, print_scm_security): Update. |
| |
| 2015-11-21 Dmitry V. Levin <ldv@altlinux.org> |
| |
| net: factor out address printing code to a separate function. |
| * net.c (sockaddr_buf_t): New type. |
| (print_sockaddr): New function. |
| (printsock, print_group_req): Use it. |
| |
| 2015-11-20 Dmitry V. Levin <ldv@altlinux.org> |
| |
| mpers: skip xlat struct definitions in mpers mode. |
| Avoid duplicate definitions of xlat structures in files |
| compiled in mpers mode. |
| |
| Each xlat file defines the corresponding xlat struct with |
| either global or local visibility using the following rules: |
| |
| - if xlat struct declaration is available in defs.h, |
| a global definition is provided in regular mode, |
| and nothing is provided in mpers mode; |
| - otherwise, if xlat file is included by a mpers source file, |
| a global definition is provided in regular mode |
| (unless no mpers mode is supported on this architecture, |
| in that case, a local definition is provided instead), |
| and a declaration is provided in mpers mode; |
| - otherwise, a local definition is provided in regular mode, |
| and an error message is printed in mpers mode. |
| |
| Fallback definitions of constants provided by xlat files |
| remain available in all modes. |
| |
| * bootstrap: Invoke generate_mpers_am.sh before xlat/gen.sh. |
| * defs.h (adjtimex_modes, adjtimex_status, sigev_value): Remove. |
| * generate_mpers_am.sh: Generate mpers_xlat.h. |
| * Makefile.am (EXTRA_DIST): Add mpers_xlat.h. |
| * print_sigevent.c: Include "xlat/sigev_value.h" unconditionally. |
| * print_timex.c: Include "xlat/adjtimex_modes.h" and |
| "xlat/adjtimex_status.h" unconditionally. |
| * xlat/gen.sh (cond_xlat): Move printing of fallback definitions ... |
| (cond_def): ... here. |
| (gen_header): Check also mpers_xlat.h for global declarations |
| of xlat structures. |
| Process input file twice, first time print directives |
| only, second time print everything. |
| Wrap struct xlat into #ifdef IN_MPERS ... #else ... #endif. |
| * xlat/getrandom_flags.in: Cleanup. |
| |
| 2015-11-20 Dmitry V. Levin <ldv@altlinux.org> |
| |
| tests: rewrite getdents test in C for better coverage. |
| * tests/getdents.awk: Remove. |
| * tests/getdents.out: Remove. |
| * tests/getdents.c: New file. |
| * tests/getdents.test: Rewrite. |
| * tests/getdents64.c: New file. |
| * tests/getdents64.test: New test. |
| * tests/Makefile.am (check_PROGRAMS): Add getdents and getdents64. |
| (TESTS): Add getdents64.test. |
| (EXTRA_DIST): Remove getdents.awk and getdents.out. |
| * tests/.gitignore: Add getdents and getdents64. |
| |
| 2015-11-19 Dmitry V. Levin <ldv@altlinux.org> |
| |
| tests: add readdir.test. |
| * tests/readdir.c: New file. |
| * tests/readdir.test: New test. |
| * tests/Makefile.am (check_PROGRAMS): Add readdir. |
| (TESTS): Add readdir.test. |
| * tests/.gitignore: Add readdir. |
| |
| Mpersify parsers of readdir and getdents syscalls. |
| * defs.h (dirent_types): New xlat prototype. |
| * dirent.c: Stop including "xlat/direnttypes.h". |
| (kernel_dirent): New typedef. Mpersify it. |
| (print_old_dirent): Use it instead of old_dirent_t. |
| (SYS_FUNC(getdents)): Use it instead of struct kernel_dirent. |
| Rename direnttypes to dirent_types. |
| (SYS_FUNC(getdents64)): Move ... |
| * dirent64.c: ... here. Rename direnttypes to dirent_types. |
| Include "xlat/dirent_types.h". |
| * Makefile.am (strace_SOURCES): Add dirent64.c. |
| * xlat/direnttypes.in: Rename to xlat/dirent_types.in. |
| |
| 2015-11-19 Gabriel Laskar <gabriel@lse.epita.fr> |
| |
| getdents: fix typos in array output. |
| Array should be enclosed by square brakets, and elements should be |
| separated by commas. |
| |
| * dirent.c (SYS_FUNC(getdents), SYS_FUNC(getdents64)): Fix typos |
| in array output. |
| * tests/getdents.awk: Update regexps to match fixed output. |
| * tests/getdents.out: Update output. |
| |
| 2015-11-19 Dmitry V. Levin <ldv@altlinux.org> |
| |
| printcmsghdr: move type and data decoders to a separate function. |
| * net.c (print_scm_rights, print_scm_creds, print_scm_security): Change |
| to return void. Move printing of struct cmsghdr closing '}' ... |
| (printcmsghdr): ... here. Move type and data decoders to ... |
| (print_cmsg_type_data): ... new function. |
| |
| 2015-11-18 Dmitry V. Levin <ldv@altlinux.org> |
| |
| Assume that libc provides sendmsg. |
| Starting with commit v4.6-281-g7af9f35, we implicitly assume that |
| HAVE_SENDMSG is always defined. Therefore, the check for sendmsg |
| availability is redundant and could be safely removed. |
| |
| * configure.ac (AC_CHECK_FUNCS): Remove sendmsg. |
| * linux/dummy.h [!HAVE_SENDMSG] (sys_recvmsg, sys_sendmsg): Remove |
| stub aliases. |
| * net.c [HAVE_SENDMSG]: Define unconditionally. |
| * syscall.c (dumpio) [HAVE_SENDMSG]: Likewise. |
| |
| 2015-11-18 Dmitry V. Levin <ldv@altlinux.org> |
| |
| net.c: move fallback definition of SCM_SECURITY to xlat/ |
| * net.c: Move fallback definition of SCM_SECURITY ... |
| * xlat/scmvals.in: ... here. |
| |
| 2015-11-17 Dmitry V. Levin <ldv@altlinux.org> |
| |
| Implement mlock2 syscall decoding. |
| * mem.c: Include "xlat/mlock_flags.h". |
| (SYS_FUNC(mlock2)): New function. |
| * xlat/mlock_flags.in: New file. |
| * xlat/mlockall_flags.in: Add MCL_ONFAULT, add default values. |
| * linux/dummy.h (mlock2): Remove. |
| * tests/mlock2.c: New file. |
| * tests/mlock2.test: New test. |
| * tests/Makefile.am (check_PROGRAMS): Add mlock2. |
| (TESTS): Add mlock2.test. |
| * tests/.gitignore Add mlock2. |
| |
| Implement membarrier syscall decoding. |
| * membarrier.c: New file. |
| * Makefile.am (strace_SOURCES): Add it. |
| * xlat/membarrier_cmds.in: New file. |
| * linux/dummy.h (membarrier): Remove. |
| * tests/membarrier.c: New file. |
| * tests/membarrier.test: New test. |
| * tests/Makefile.am (check_PROGRAMS): Add membarrier. |
| (TESTS): Add membarrier.test. |
| * tests/.gitignore: Add membarrier. |
| |
| Implement userfaultfd syscall decoding. |
| * userfaultfd.c: New file. |
| * Makefile.am (strace_SOURCES): Add it. |
| * xlat/uffd_flags.in: New file. |
| * linux/dummy.h (userfaultfd): Remove. |
| * tests/userfaultfd.c: New file. |
| * tests/userfaultfd.test: New test. |
| * tests/Makefile.am (check_PROGRAMS): Add userfaultfd. |
| (TESTS): Add userfaultfd.test. |
| * tests/.gitignore: Add userfaultfd. |
| |
| 2015-11-17 Dmitry V. Levin <ldv@altlinux.org> |
| |
| ia64: wire up kcmp syscall. |
| ia64 has kcmp syscall starting with linux kernel commit |
| v4.3-rc7-1-gd305c47. |
| |
| * linux/ia64/syscallent.h (kcmp): New entry. |
| |
| 2015-11-17 Dmitry V. Levin <ldv@altlinux.org> |
| |
| powerpc: wire up direct sysv ipc syscalls. |
| Starting with linux commit v4.3-rc3-33-ga342361, powerpc has |
| direct sysv ipc syscalls in addition to traditional ipc syscall. |
| |
| * linux/powerpc/syscallent.h (semop, semget, semctl, semtimedop, msgsnd, |
| msgrcv, msgget, msgctl, shmat, shmdt, shmget, shmctl): New entries. |
| |
| 2015-11-17 Dmitry V. Levin <ldv@altlinux.org> |
| |
| Wire up userfaultfd, membarrier, and mlock2 syscalls. |
| * linux/dummy.h (membarrier, mlock2, userfaultfd): New stub aliases. |
| * linux/32/syscallent.h (userfaultfd, membarrier, mlock2): New entries. |
| * linux/64/syscallent.h (userfaultfd, membarrier, mlock2): Likewise. |
| * linux/arm/syscallent.h (userfaultfd, membarrier, mlock2): Likewise. |
| * linux/hppa/syscallent.h (userfaultfd, membarrier, mlock2): Likewise. |
| * linux/i386/syscallent.h (userfaultfd, membarrier, mlock2): Likewise. |
| * linux/ia64/syscallent.h (userfaultfd, membarrier): Likewise. |
| * linux/m68k/syscallent.h (userfaultfd, membarrier, mlock2): Likewise. |
| * linux/microblaze/syscallent.h (userfaultfd, membarrier, mlock2): Likewise. |
| * linux/mips/syscallent-n32.h (userfaultfd, membarrier, mlock2): Likewise. |
| * linux/mips/syscallent-n64.h (userfaultfd, membarrier, mlock2): Likewise. |
| * linux/mips/syscallent-o32.h (userfaultfd, membarrier, mlock2): Likewise. |
| * linux/powerpc/syscallent.h (userfaultfd, membarrier): Likewise. |
| * linux/s390/syscallent.h (userfaultfd, membarrier, mlock2): Likewise. |
| * linux/s390x/syscallent.h (userfaultfd, membarrier, mlock2): Likewise. |
| * linux/sparc/syscallent.h (membarrier, userfaultfd, mlock2): Likewise. |
| * linux/x32/syscallent.h (userfaultfd, membarrier, mlock2): Likewise. |
| * linux/x86_64/syscallent.h (userfaultfd, membarrier, mlock2): Likewise. |
| |
| 2015-11-16 Dmitry V. Levin <ldv@altlinux.org> |
| |
| sprintflags: skip zero flags. |
| Tweak sprintflags behaviour to match printflags. |
| |
| * util.c (sprintflags): Skip zero flags unless the value passed |
| to sprintflags is also zero. |
| |
| 2015-11-16 Mike Frysinger <vapier@gentoo.org> |
| |
| printflags: handle empty xlats. |
| If the set of headers are unable to produce a valid list, printflags |
| will try to pass NULL to tprints which crashes. Add a sanity check |
| for this edge case. |
| |
| * util.c (printflags): Check xlat->str is not NULL. |
| |
| 2015-11-16 Dmitry V. Levin <ldv@altlinux.org> |
| |
| mpers: forward mpers_DEFS to mpers.sh. |
| mpers_DEFS has to be forwarded to mpers.sh so that config.h would be |
| properly included by defs.h at preprocessor stage. |
| |
| * Makefile.am (mpers-m%.stamp): Add the whole $(mpers_sh_opts) set of |
| options to mpers.sh's CPPFLAGS. |
| |
| 2015-11-16 Dmitry V. Levin <ldv@altlinux.org> |
| |
| tests/ioctl: workaround glibc ioctl wrapper on powerpc. |
| * tests/ioctl.c (main) [POWERPC] Disable TCGETS test. |
| |
| 2015-11-15 Dmitry V. Levin <ldv@altlinux.org> |
| |
| powerpc: wire up switch_endian syscall. |
| powerpc has switch_endian syscall starting with linux commit |
| v4.0-rc4-67-g529d235. |
| |
| * linux/powerpc/syscallent.h (switch_endian): New entry. |
| |
| 2015-11-15 Dmitry V. Levin <ldv@altlinux.org> |
| |
| sparc: reserve more space for new syscalls. |
| Move socket subcalls further down the table to make room |
| for new syscalls. |
| |
| * linux/sparc/syscallent.h (SYS_socket_subcall): Raise from 353 to 400. |
| |
| 2015-11-15 Dmitry V. Levin <ldv@altlinux.org> |
| |
| m68k: wire up direct socket syscalls. |
| Starting with linux commit v4.3-rc3-1-g5b3f33e, m68k has direct |
| socket syscalls in addition to traditional socketcall syscall. |
| |
| * linux/m68k/syscallent.h (socket, socketpair, bind, connect, listen, |
| accept4, getsockopt, setsockopt, getsockname, getpeername, sendto, |
| sendmsg, recvfrom, recvmsg, shutdown, recvmmsg, sendmmsg): New entries. |
| |
| 2015-11-15 Dmitry V. Levin <ldv@altlinux.org> |
| |
| i386: wire up direct socket syscalls. |
| Starting with linux commit v4.2-rc1-64-g9dea5dc, x86 has direct |
| socket syscalls in addition to traditional socketcall syscall. |
| |
| * linux/i386/syscallent.h (socket, socketpair, bind, connect, listen, |
| accept4, getsockopt, setsockopt, getsockname, getpeername, sendto, |
| sendmsg, recvfrom, recvmsg, shutdown): New entries. |
| |
| 2015-11-11 Heiko Carstens <heiko.carstens@de.ibm.com> |
| |
| s390, s390x: update syscall tables. |
| * linux/s390/syscallent.h: Add new syscalls available with kernel 4.3.0. |
| * linux/s390x/syscallent.h: Likewise. |
| |
| 2015-11-07 Dmitry V. Levin <ldv@altlinux.org> |
| |
| Fix *_printer_defs.h rules ambiguousness. |
| There is an ambiguousness in *_printer_defs.h rules definition: |
| |
| $ grep '^[^ ]*_defs\.h: ' Makefile.am |
| m%_defs.h: $(srcdir_mpers_source_files) |
| %_printer_defs.h: $(srcdir_mpers_source_files) |
| |
| While it appears to work with GNU make, it has to be fixed nevertheless. |
| |
| * Makefile.am (m%_defs.h): Rename to m%_type_defs.h. |
| (mpers_m32_targets): Rename m32_defs.h to m32_type_defs.h. |
| (mpers_mx32_targets): Rename mx32_defs.h to mx32_type_defs.h. |
| * mpers_type.h: Rename m32_defs.h to m32_type_defs.h, |
| mx32_defs.h to mx32_type_defs.h. |
| * .gitignore: Likewise. |
| |
| Reported-by: Elliott Hughes <enh@google.com> |
| |
| 2015-10-09 Dmitry V. Levin <ldv@altlinux.org> |
| |
| fcntl.c: make use of RVAL_DECODED. |
| * fcntl.c (SYS_FUNC(fcntl)): Return RVAL_DECODED for write-only operations. |
| |
| 2015-10-08 Dmitry V. Levin <ldv@altlinux.org> |
| |
| desc.c: move parser of fcntl syscall to a separate file. |
| * fcntl.c: New file. |
| * Makefile.am (strace_SOURCES): Add it. |
| * desc.c (printflock64, printflock, SYS_FUNC(fcntl)): Move to fcntl.c. |
| |
| desc.c: move parser of flock syscall to a separate file. |
| * flock.c: New file. |
| * Makefile.am (strace_SOURCES): Add it. |
| * desc.c (SYS_FUNC(flock)): Move to flock.c. |
| |
| 2015-10-08 Dmitry V. Levin <ldv@altlinux.org> |
| |
| tests: fix false uio.test failures. |
| * tests/uio.c (main): Use descriptor number 0 in pread/pwrite |
| and preadv/pwritev syscalls. |
| * tests/uio.expected: Update regexps. |
| |
| Reported-by: Lennart Sorensen <lsorense@csclub.uwaterloo.ca> |
| |
| 2015-10-01 Gabriel Laskar <gabriel@lse.epita.fr> |
| |
| Fix make -j builds. |
| In files generated by mpers scripts, includes directives are taken from |
| original files where the type definition was done. This causes to |
| include defs.h in multiple files. defs.h includes printers.h header, |
| which is a generated header. |
| |
| This patch add an explicit dependency to printers.h for the mpers |
| scripts. |
| |
| * Makefile.am (mpers-m%.stamp): Add printers.h to order-only |
| prerequisites. |
| |
| 2015-09-29 Mike Frysinger <vapier@gentoo.org> |
| |
| mpers: fix shell code to conform better to POSIX. |
| The `echo -n` behavior is non-portable, so use printf instead. |
| |
| * generate_mpers_am.sh: Change `echo -n` to `printf`. |
| |
| 2015-09-23 Gabriel Laskar <gabriel@lse.epita.fr> |
| |
| ioctl: fix ioctl command number decoding in case of conflicts. |
| When a command number was decoded through ioctl_decode_command_number(), |
| there was no check for conflicts with other potential ioctls numbers. |
| |
| For example: |
| ioctl(fd, MCE_GET_RECORD_LEN, &i); |
| output: |
| ioctl(3, MIXER_READ(1), 0x7ffddce74a58) = 0 |
| instead of: |
| ioctl(3, MIXER_READ(1) or MCE_GET_RECORD_LEN, 0x7ffee435ce08) = 0 |
| |
| * ioctl.c (SYS_FUNC(ioctl)): Fix ioctl command number decoding |
| in case of conflicts. |
| * tests/ioctl.c (main): Add a case for command number conflicts. |
| |
| 2015-09-23 Dmitry V. Levin <ldv@altlinux.org> |
| |
| tests: convert ioctl.test from match_grep to match_diff. |
| * tests/ioctl.c (main): Print expected output. |
| * tests/ioctl.test: Use match_diff instead of match_grep. |
| * tests/ioctl.expected: Remove. |
| * tests/Makefile.am (EXTRA_DIST): Remove ioctl.expected. |
| |
| 2015-09-20 Dmitry V. Levin <ldv@altlinux.org> |
| |
| Convert parser of seccomp filter program to new mpers infrastructure. |
| * seccomp_fprog.h: New file. |
| * fetch_seccomp_fprog.c: New file. |
| * Makefile.am (strace_SOURCES): Add them. |
| * seccomp.c: Include "seccomp_fprog.h". |
| (print_seccomp_filter): Use fetch_seccomp_fprog. |
| |
| 2015-09-19 Dmitry V. Levin <ldv@altlinux.org> |
| |
| tests/init.sh: enhance match_grep error diagnostics. |
| * tests/init.sh (match_grep): Check patterns one by one, |
| output only those patterns that didn't match. |
| |
| tests/init.sh: fix comment. |
| * tests/init.sh (match_awk): Fix usage description. |
| |
| tests: add one more case to select.test. |
| * tests/select.c (main): Check how timeout is printed |
| on exiting syscall. |
| |
| tests: uncouple pselect6 from select.test. |
| * tests/select.c Do not include <string.h>. |
| Include <sys/syscall.h>. |
| [!__NR_select]: Skip the test. |
| (main): Remove pselect6 support, test just select syscall. |
| * tests/select.test: Remove all pselect6 checks, test just |
| select syscall. |
| |
| tests: robustify select test. |
| * tests/select.c: Do not include <assert.h>. |
| (main): Skip the test instead of assertions. |
| Add some padding to the timeval structure. |
| |
| tests: add one more case to pselect6.test. |
| * tests/pselect6.c (main): Check how timeout is printed |
| on exiting syscall. |
| |
| tests: robustify pselect6 test. |
| * tests/pselect6.c: Do not include <assert.h> and <string.h>. |
| Include <sys/syscall.h>. |
| [!__NR_pselect6]: Skip the test. |
| (main): Skip the test instead of assertions. |
| Add some padding to the timespec structure. |
| |
| Convert another parser of struct timeval to new mpers infrastructure. |
| * print_time.c (sprint_timeval): New mpers printer. |
| [ALPHA] (sprint_timeval32): New function. |
| * defs.h [ALPHA] (sprint_timeval32): New prototype. |
| (bitness_t, TIMEVAL_TEXT_BUFSIZE, printtv_bitness, sprinttv): Remove. |
| * desc.c (decode_select): Replace bitness parameter with two printers. |
| Use them instead of printtv_bitness and sprinttv. |
| (sys_oldselect, sys_select): Pass print_timeval and sprint_timeval |
| to decode_select. |
| [ALPHA] (sys_osf_select): Pass print_timeval32 and sprint_timeval32 |
| to decode_select. |
| (pselect6): Pass print_timespec and sprint_timespec to decode_select. |
| * time.c (UTIME_NOW, UTIME_OMIT, current_time_t_is_compat, |
| struct timeval32, printtv_bitness, do_sprinttv, sprinttv): Remove. |
| |
| Convert another parser of struct timespec to new mpers infrastructure. |
| * print_time.c (sprint_timespec): New mpers printer. |
| * defs.h (TIMESPEC_TEXT_BUFSIZE): Update. |
| (sprint_timespec): Remove. |
| * time.c (sprint_timespec): Remove. |
| * net.c (sys_recvmmsg): Update callers. |
| * poll.c (decode_poll_exiting): Likewise. |
| |
| tests: add another case to pselect6 test. |
| * tests/pselect6.c: Include <sys/time.h>. |
| (handler): New function. |
| (main): Install an interval timer. |
| Use it to check how ERESTARTNOHAND is printed. |
| |
| Fix decoding of gettimeofday and settimeofday. |
| * time.c (print_timezone): new function. |
| (sys_gettimeofday, sys_settimeofday): Use it instead of print_timeval |
| to print struct timezone. |
| [ALPHA] (sys_osf_gettimeofday, sys_osf_settimeofday): Use it |
| instead of print_timeval32 to print struct timezone. |
| * tests/xettimeofday.c: New file. |
| * tests/xettimeofday.test: New test. |
| * tests/Makefile.am (check_PROGRAMS): Add xettimeofday. |
| (TESTS): Add xettimeofday. |
| * tests/.gitignore: Add xettimeofday. |
| |
| Convert parser of struct timeval to new mpers infrastructure. |
| * defs.h (printtv, printtv_special): Remove. |
| [ALPHA] (print_timeval32, print_timeval32_pair): New prototypes. |
| * print_time.c (print_timeval): New mpers printer. |
| [ALPHA] (print_timeval32, print_timeval32_pair): New functions. |
| * time.c (sys_gettimeofday, sys_settimeofday): Use print_timeval |
| instead of printtv. |
| [ALPHA] (sys_osf_gettimeofday, sys_osf_settimeofday): |
| Use print_timeval32 instead of printtv_bitness. |
| * utimes.c [ALPHA] (sys_osf_utimes): Use print_timeval32_pair |
| instead of printtv_bitness. |
| |
| Convert parser of struct timespec to new mpers infrastructure. |
| * defs.h (print_timespec): Remove. |
| * print_time.c (print_timespec): New mpers printer. |
| * futex.c (sys_futex): Use print_timespec instead of printtv. |
| * ipc_sem.c (sys_semtimedop): Likewise. |
| * mq.c (sys_mq_timedsend, sys_mq_timedreceive): Likewise. |
| * time.c (clock_settime, clock_gettime, clock_nanosleep): Likewise. |
| (print_timespec): Remove. |
| |
| Remove unused parser of adjtime syscall. |
| * time.c (sys_adjtime): Remove. |
| |
| Fix decoding of clock_nanosleep. |
| * time.c (sys_clock_nanosleep): Use is_erestart, |
| temporarily_clear_syserror, and restore_cleared_syserror. |
| * tests/clock_nanosleep.c: New file. |
| * tests/clock_nanosleep.test: New test. |
| * tests/Makefile.am (check_PROGRAMS): Add clock_nanosleep. |
| (TESTS): Add clock_nanosleep.test. |
| * tests/.gitignore: Add clock_nanosleep. |
| |
| Add is_erestart helper function. |
| * defs.h (is_erestart): New prototype. |
| * syscall.c (is_erestart): New function. |
| * time.c (sys_nanosleep): Use is_erestart, |
| temporarily_clear_syserror, and restore_cleared_syserror. |
| |
| Add helper functions to clear/restore syserror. |
| * defs.h (temporarily_clear_syserror, restore_cleared_syserror): |
| New prototypes. |
| * syscall.c (saved_u_error): New variable. |
| (temporarily_clear_syserror, restore_cleared_syserror): New functions. |
| * aio.c (sys_io_getevents): Use temporarily_clear_syserror |
| and restore_cleared_syserror. |
| * mq.c (sys_mq_timedreceive): Likewise. |
| * signal.c (sys_rt_sigtimedwait): Likewise. |
| |
| tests: add nanosleep.test. |
| * tests/nanosleep.c: New file. |
| * tests/nanosleep.test: New test. |
| * tests/Makefile.am (check_PROGRAMS): Add nanosleep. |
| (TESTS): Add nanosleep.test. |
| * tests/.gitignore: Add nanosleep. |
| |
| tests: rewrite restart_syscall in C. |
| * tests/restart_syscall.c: New file. |
| * tests/restart_syscall.expected: Remove. |
| * tests/restart_syscall_unknown.expected: Remove. |
| * tests/restart_syscall.test: Update to use restart_syscall. |
| * tests/Makefile.am (check_PROGRAMS): Add restart_syscall. |
| (EXTRA_DIST): Remove restart_syscall.expected |
| and restart_syscall_unknown.expected. |
| * tests/.gitignore: Add restart_syscall. |
| |
| Properly initialize siginfo_t object passed to print_stopped function. |
| * strace.c (trace): Clear the whole siginfo_t variable before passing it |
| to ptrace(PTRACE_GETSIGINFO) because the latter may initialize only a |
| part of the structure. |
| |
| tests: add clock_xettime.test. |
| * tests/clock_xettime.c: New file. |
| * tests/clock_xettime.test: New test. |
| * tests/Makefile.am (check_PROGRAMS): Add clock_xettime. |
| (TESTS): Add clock_xettime.test. |
| * tests/.gitignore: Add clock_xettime. |
| |
| Convert parser of struct itimerval to new mpers infrastructure. |
| * defs.h [ALPHA] (print_itimerval32): New prototype. |
| * print_time.c (print_itimerval): New mpers printer. |
| [ALPHA] (timeval32_t): New typedef. |
| [ALPHA] (print_timeval32_t, print_itimerval32): New functions. |
| * time.c (sys_getitimer, sys_setitimer): Use print_itimerval instead |
| of printitv. |
| [ALPHA] (sys_osf_getitimer, sys_osf_setitimer): Use print_itimerval32 |
| instead of printitv_bitness. |
| (tprint_timeval32, tprint_timeval, printitv_bitness, printitv): Remove. |
| |
| tests: add xetitimer.test. |
| * tests/xetitimer.c: New file. |
| * tests/xetitimer.test: New test. |
| * tests/Makefile.am (check_PROGRAMS): Add xetitimer. |
| (TESTS): Add xetitimer.test. |
| * tests/.gitignore: Add xetitimer. |
| |
| Convert parser of struct itimerspec to new mpers infrastructure. |
| * print_time.c (print_itimerspec): New mpers printer. |
| * time.c (sys_timer_settime, sys_timer_gettime, sys_timerfd, |
| sys_timerfd_settime, sys_timerfd_gettime): Use it instead of printitv. |
| |
| 2015-09-17 Dmitry V. Levin <ldv@altlinux.org> |
| |
| print_time.c: introduce print_timespec_t helper. |
| * print_time.c (time_fmt): New constant string. |
| (print_timeval_t): Use it. |
| (print_timespec_t): New function. |
| (print_timespec_t_utime): Use it. |
| |
| tests: add timerfd_xettime.test. |
| * tests/timerfd_xettime.c: New file. |
| * tests/timerfd_xettime.test: New test. |
| * tests/Makefile.am (check_PROGRAMS): Add timerfd_xettime. |
| (TESTS): Add timerfd_xettime.test. |
| * tests/.gitignore: Add timerfd_xettime. |
| |
| tests: add timer_xettime.test. |
| * tests/timer_xettime.c: New file. |
| * tests/timer_xettime.test: New test. |
| * tests/Makefile.am (check_PROGRAMS): Add timer_xettime. |
| (TESTS): Add timer_xettime.test. |
| * tests/.gitignore: Add timer_xettime. |
| |
| time.c: move parser of time syscall to print_time.c. |
| * time.c (current_time_t_is_int32): Remove. |
| (sys_time): Move ... |
| * print_time.c: ... here. Mpersify time_t. |
| |
| print_time.c: remove unused function parameters. |
| * print_time.c (print_timespec_t_utime, print_timeval_t): Remove |
| "struct tcb *" parameter. |
| (print_timespec_utime_pair, print_timeval_pair): Update callers. |
| |
| Add struct timex.tai support. |
| * configure.ac (AC_CHECK_MEMBERS): Add struct timex.tai. |
| * print_timex.c (print_timex) [HAVE_STRUCT_TIMEX_TAI]: Print tai field. |
| * tests/adjtimex.c (main) [HAVE_STRUCT_TIMEX_TAI]: Likewise. |
| |
| Convert parser of struct timex to new mpers infrastructure. |
| * defs.h (adjtimex_modes, adjtimex_status): New xlat prototypes. |
| * print_timex.c (struct_timex): New typedef. Mpersify it. |
| [IN_MPERS]: Do not include "xlat/adjtimex_modes.h" |
| and "xlat/adjtimex_status.h". |
| [SUPPORTED_PERSONALITIES > 1]: Remove. |
| (tprint_timeval): Remove. |
| (tprint_timex): Rename to print_timex. Mpersify it. |
| * time.c (do_adjtimex): Rename tprint_timex to print_timex. |
| * tests/adjtimex.c: New file. |
| * tests/adjtimex.test: New test. |
| * tests/Makefile.am (check_PROGRAMS): Add adjtimex. |
| (TESTS): Add adjtimex.test. |
| * tests/.gitignore: Add adjtimex. |
| |
| Move parser of struct timex to a separate file. |
| * print_timex.c: New file. |
| * Makefile.am (strace_SOURCES): Add it. |
| * time.c (tprint_timex32, tprint_timex): Move to print_timex.c. |
| |
| Enhance parser of struct sigevent. |
| * print_sigevent.c (print_sigevent): Always print names |
| of struct_sigevent fields along with their values. |
| Print signal name of sigev_signo for those sigev_notify values |
| that require valid signal numbers. |
| * tests/timer_create.c: New file. |
| * tests/timer_create.test: New test. |
| * tests/Makefile.am (check_PROGRAMS): Add timer_create. |
| (TESTS): Add timer_create.test. |
| * tests/.gitignore: Add timer_create. |
| |
| 2015-09-16 Dmitry V. Levin <ldv@altlinux.org> |
| |
| Convert parser of struct sigevent to new mpers infrastructure. |
| * defs.h (sigev_value): New prototype. |
| (printsigevent): Remove. |
| * print_sigevent.c (struct_sigevent): New typedef. Mpersify it. |
| [IN_MPERS]: Do not include "xlat/sigev_value.h". |
| (printsigevent32): Remove. |
| (printsigevent): Rename to print_sigevent. Mpersify it. |
| * mq.c (sys_mq_notify): Rename printsigevent to print_sigevent. |
| * time.c (sys_timer_create): Likewise. |
| |
| Move parser of struct sigevent to a separate file. |
| * print_sigevent.c: New file. |
| * Makefile.am (strace_SOURCES): Add it. |
| * time.c (printsigevent32, printsigevent): Move to print_sigevent.c. |
| |
| time.c: move fallback definitions of SIGEV_* values to xlat/ |
| * time.c: Move fallback definitions of SIGEV_* values ... |
| * xlat/sigev_value.in: ... here. |
| |
| Simplify use of mpers printers. |
| * native_defs.h: New file. |
| * syscall.c: Include it. |
| * mpers_type.h [!IN_MPERS] (MPERS_DEFS): Change to "native_defs.h". |
| * defs.h (MPERS_PRINTER_NAME): Remove. |
| [SUPPORTED_PERSONALITIES > 1] (MPERS_PRINTER_NAME, printers): Move ... |
| * Makefile.am (printers.h): ... here. |
| Add macro definitions for mpers printers. |
| (m%_defs.h): Add redefinition of MPERS_PRINTER_NAME and inclusion |
| of "$(mpers_PREFIX)printer_decls.h". |
| (strace_SOURCES): Add native_defs.h. |
| * README-mpers: Update instructions for using mpers printers. |
| * ipc_msg.c (tprint_msgsnd, tprint_msgrcv): Call tprint_msgbuf directly. |
| * mq.c (sys_mq_open, mq_getsetattr): Call printmqattr directly. |
| * process.c (sys_ptrace): Call printsiginfo_at directly. |
| * signal.c (print_sigqueueinfo, sys_rt_sigtimedwait): Likewise. |
| * resource.c (sys_getrusage): Call printrusage directly. |
| * utimes.c (sys_utimensat): Call print_timespec_utime_pair directly. |
| (sys_utimes, sys_futimesat): Call print_timeval_pair directly. |
| * wait.c (printwaitn): Call printrusage directly. |
| (sys_waitid): Call printrusage and printsiginfo_at directly. |
| |
| 2015-09-15 Dmitry V. Levin <ldv@altlinux.org> |
| |
| Add a new helper function umove_ulong_array_or_printaddr. |
| * defs.h (umove_ulong_array_or_printaddr): New prototype. |
| * util.c (umove_ulong_array_or_printaddr): New function. |
| * desc.c (sys_pselect6): Use it instead of open-coding |
| a proxy struct parser for different personalities. |
| * io.c (tprint_iov_upto): Use it instead of open-coding |
| a struct iovec parser for different personalities. |
| * kexec.c (print_kexec_segments): Use it instead of open-coding |
| a struct kexec_segment parser for different personalities. |
| (print_seg): Pass arguments using an array. |
| |
| tests: add pselect6.test. |
| * tests/pselect6.c: New file. |
| * tests/pselect6.test: New test. |
| * tests/Makefile.am (check_PROGRAMS): Add pselect6. |
| (TESTS): Add pselect6.test. |
| * tests/.gitignore: Add pselect6. |
| |
| 2015-09-14 Dmitry V. Levin <ldv@altlinux.org> |
| |
| Rename umove_long_or_printaddr to umove_ulong_or_printaddr. |
| Rename the recently added function to reflect what kind of data type |
| it actually deals with: unsigned long int, without sign extension. |
| |
| * defs.h (umove_long_or_printaddr): Rename to umove_ulong_or_printaddr, |
| chage 3rd argument to unsigned long *. |
| * util.c (umove_long_or_printaddr): Likewise. |
| * aio.c (sys_io_submit): Update callers. |
| |
| 2015-09-14 Dmitry V. Levin <ldv@altlinux.org> |
| |
| aarch64, ppc64, sparc64, tile: hook up mpers printers. |
| * defs.h [AARCH64 && HAVE_M32_MPERS]: Define PERSONALITY0_INCLUDE_FUNCS, |
| PERSONALITY0_INCLUDE_PRINTERS_DECLS, |
| and PERSONALITY0_INCLUDE_PRINTERS_DEFS. |
| [POWERPC64 && HAVE_M32_MPERS]: Define PERSONALITY1_INCLUDE_FUNCS, |
| PERSONALITY1_INCLUDE_PRINTERS_DECLS, |
| and PERSONALITY1_INCLUDE_PRINTERS_DEFS. |
| [SPARC64 && HAVE_M32_MPERS]: Likewise. |
| [TILE && HAVE_M32_MPERS]: Likewise. |
| |
| 2015-09-14 Anton Blanchard <anton@samba.org> |
| |
| Add PowerPC specific ptrace constants. |
| * xlat/ptrace_cmds.in: Add PowerPC specific ptrace constants. |
| |
| 2015-09-14 Dmitry V. Levin <ldv@altlinux.org> |
| |
| Update SCTP_* constants. |
| * xlat/socksctpoptions.in: Add SCTP_GET_ASSOC_ID_LIST, SCTP_AUTO_ASCONF, |
| SCTP_PEER_ADDR_THLDS, SCTP_RECVRCVINFO, SCTP_RECVNXTINFO, |
| SCTP_DEFAULT_SNDINFO, SCTP_SOCKOPT_CONNECTX, SCTP_SOCKOPT_CONNECTX3, |
| and SCTP_GET_ASSOC_STATS. |
| |
| Update F_* constants. |
| * xlat/fcntlcmds.in: Add F_SETPIPE_SZ, F_GETPIPE_SZ, F_ADD_SEALS, |
| and F_GET_SEALS. |
| |
| Update RENAME_* constants. |
| * xlat/rename_flags.in: Add RENAME_WHITEOUT. |
| |
| Update SO_* constants. |
| * xlat/sockoptions.in: Add SO_ATTACH_BPF, SO_BPF_EXTENSIONS, |
| SO_BUSY_POLL, SO_DETACH_BPF, SO_GET_FILTER, SO_INCOMING_CPU, |
| SO_LOCK_FILTER, SO_MAX_PACING_RATE, SO_PEEK_OFF, SO_RXQ_OVFL, |
| SO_SELECT_ERR_QUEUE, and SO_WIFI_STATUS. |
| |
| Update INPUT_PROP_* constants. |
| * xlat/evdev_prop.in: Add INPUT_PROP_ACCELEROMETER. |
| |
| Update KEY_* constants. |
| * xlat/evdev_keycode.in: Add KEY_ROTATE_DISPLAY, KEY_NUMERIC_A, |
| KEY_NUMERIC_B, KEY_NUMERIC_C, and KEY_NUMERIC_D. |
| |
| Update FALLOC_FL_* constants. |
| * xlat/falloc_flags.in: Add FALLOC_FL_INSERT_RANGE. |
| |
| Update AF_* and PF_* constants. |
| * xlat/addrfams.in: Add AF_IB and AF_MPLS. |
| * xlat/domains.in: Add PF_IB and PF_MPLS. |
| |
| Update TCP_* constants. |
| * xlat/socktcpoptions.in: Add TCP_NOTSENT_LOWAT, TCP_CC_INFO, |
| TCP_SAVE_SYN, and TCP_SAVED_SYN. |
| |
| Update PACKET_* constants. |
| * xlat/sockpacketoptions.in: Add PACKET_VNET_HDR, PACKET_TX_TIMESTAMP, |
| PACKET_TIMESTAMP, PACKET_FANOUT, PACKET_TX_HAS_OFF, PACKET_QDISC_BYPASS, |
| PACKET_ROLLOVER_STATS, and PACKET_FANOUT_DATA. |
| |
| Update BPF_MAP_TYPE_* constants. |
| * xlat/bpf_map_types.in: Add BPF_MAP_TYPE_PERF_EVENT_ARRAY. |
| |
| Update IPPROTO_* constants. |
| * xlat/inet_protocols.in: Add IPPROTO_MPLS. |
| |
| Update IP_* constants. |
| * xlat/sockipoptions.in: Add IP_CHECKSUM and IP_BIND_ADDRESS_NO_PORT. |
| |
| Update PTRACE_O_* constants. |
| * ptrace.h: Define PTRACE_O_SUSPEND_SECCOMP. |
| * xlat/ptrace_setoptions_flags.in: Add it. |
| |
| Update PR_* constants. |
| * xlat/prctl_options.in: Add PR_SET_FP_MODE, PR_GET_FP_MODE, |
| and PR_CAP_AMBIENT. |
| |
| Update SECBIT_* constants. |
| * xlat/secbits.in: Add SECBIT_NO_CAP_AMBIENT_RAISE |
| and SECBIT_NO_CAP_AMBIENT_RAISE_LOCKED. |
| |
| 2015-08-28 Dmitry V. Levin <ldv@altlinux.org> |
| |
| mpers.m4: workaround missing gnu/stubs-*.h files. |
| On some systems missing gnu/stubs-*.h files make -m32/-mx32 compilation |
| checks fail. As we want to support multiple personalities despite of |
| this limitation, workaround the check by creating empty gnu stub files |
| if necessary. |
| |
| * m4/mpers.m4 (st_MPERS): Check for the gnu stub file. Create an empty |
| gnu stub file if the system one is missing. |
| * Makefile.am (DISTCLEANFILES): Add gnu/stubs-32.h and gnu/stubs-x32.h. |
| |
| 2015-08-28 Elvira Khabirova <lineprinter0@gmail.com> |
| |
| tests: add times-fail.test. |
| * tests/times-fail.c: New file. |
| * tests/times-fail.test: New test. |
| * tests/Makefile.am (check_PROGRAMS): Add times-fail. |
| (TESTS): Add times-fail.test. |
| * tests/.gitignore: Add times-fail. |
| |
| 2015-08-28 Eugene Syromyatnikov <evgsyr@gmail.com> |
| |
| tests: add times.test. |
| * tests/times.c: New file. |
| * tests/times.test: New test. |
| * tests/Makefile.am (check_PROGRAMS): Add times. |
| (TESTS): Add times.test. |
| (times_LDADD): Define. |
| * tests/.gitignore: Add times. |
| |
| 2015-08-28 Elvira Khabirova <lineprinter0@gmail.com> |
| |
| Mpersify parser of times syscall. |
| Fix multiple personalities support in parser of times syscall by |
| mpersifying struct tms. |
| |
| * times.c (tms_t): New typedef. Mpersify it. |
| (sys_times): Use it instead of struct tms. |
| |
| 2015-08-28 Elvira Khabirova <lineprinter0@gmail.com> |
| |
| tests: add sysinfo.test. |
| * tests/sysinfo.c: New file. |
| * tests/sysinfo.test: New test. |
| * tests/Makefile.am (check_PROGRAMS): Add sysinfo. |
| (TESTS): Add sysinfo.test. |
| * tests/.gitignore: Add sysinfo. |
| |
| 2015-08-28 Elvira Khabirova <lineprinter0@gmail.com> |
| |
| Mpersify parser of sysinfo syscall. |
| Fix multiple personalities support in parser of sysinfo syscall by |
| mpersifying struct sysinfo. |
| |
| * sysinfo.c (sysinfo_t): New typedef. Mpersify it. |
| (sys_sysinfo): Use it instead of struct sysinfo. |
| |
| 2015-08-28 Elvira Khabirova <lineprinter0@gmail.com> |
| |
| Enhance msgctl syscall decoding. |
| Make parser of msgctl syscall print struct msqid_ds. |
| |
| * ipc_msgctl.c (msqid_ds_t): New typedef. Mpersify it. |
| (print_msqid_ds): New function. Use msqid_ds_t. |
| (sys_msgctl): Use print_msqid_ds. |
| * tests/ipc_msg.c: Update for struct msqid_ds support. |
| |
| 2015-08-28 Elvira Khabirova <lineprinter0@gmail.com> |
| |
| Enhance shmctl syscall decoding. |
| Make parser of shmctl syscall print struct shmid_ds. |
| |
| * ipc_shmctl.c (shmid_ds_t): New typedef. Mpersify it. |
| (print_shmid_ds): New function. Use shmid_ds_t. |
| (sys_shmctl): Use print_shmid_ds. |
| * tests/ipc_shm.c: Update for struct shmid_ds support. |
| |
| 2015-08-28 Elvira Khabirova <lineprinter0@gmail.com> |
| |
| tests: add ipc_msgbuf.test. |
| * tests/ipc_msgbuf.c: New file. |
| * tests/ipc_msgbuf.expected: Likewise. |
| * tests/ipc_msgbuf.test: New test. |
| * tests/Makefile.am (check_PROGRAMS): Add ipc_msgbuf. |
| (TESTS): Add ipc_msgbuf.test. |
| (EXTRA_DIST): Add ipc_msgbuf.expected. |
| * tests/.gitignore: Add ipc_msgbuf. |
| |
| 2015-08-28 Elvira Khabirova <lineprinter0@gmail.com> |
| |
| Mpersify tprint_msgsnd and tprint_msgrcv. |
| Fix multiple personalities support in tprint_msgsnd and tprint_msgrcv |
| by converting tprint_msgbuf into a mpersified printer. |
| |
| * print_msgbuf.c (msgbuf_t): New typedef. Mpersify it. |
| (tprint_msgbuf): Use it instead of long. |
| Wrap function name into MPERS_PRINTER_DECL. |
| * ipc_msg.c (tprint_msgsnd, tprint_msgrcv): Use mpersified |
| tprint_msgbuf. |
| |
| 2015-08-28 Elvira Khabirova <lineprinter0@gmail.com> |
| |
| tests: add mq.test. |
| * tests/mq.c: New file. |
| * tests/mq.expected: Likewise. |
| * tests/mq.test: New test. |
| * tests/Makefile.am (check_PROGRAMS): Add mq. |
| (TESTS): Add mq.test. |
| (EXTRA_DIST): Add mq.expected. |
| (mq_LDADD): Add -lrt. |
| * tests/.gitignore: Add mq. |
| |
| 2015-08-28 Elvira Khabirova <lineprinter0@gmail.com> |
| |
| Mpersify parsers of mq_open and mq_getsetattr syscalls. |
| Fix multiple personalities support in parsers of mq_open and |
| mq_getsetattr by converting printmqattr into a mpersified printer. |
| |
| * print_mq_attr.c (mq_attr_t): New typedef. Mpersify it. |
| (printmqattr): Use it instead of struct mq_attr. Wrap function name |
| into MPERS_PRINTER_DECL. |
| * mq.c (mq_open, mq_getsetattr): Use mpersified printmqattr. |
| |
| 2015-08-28 Dmitry V. Levin <ldv@altlinux.org> |
| |
| tests: add wait.test. |
| * tests/wait.c: New file. |
| * tests/wait.expected: Likewise. |
| * tests/wait.test: New test. |
| * tests/Makefile.am (check_PROGRAMS): Add wait. |
| (TESTS): Add wait.test. |
| (EXTRA_DIST): Add wait.expected. |
| * tests/.gitignore: Add wait. |
| |
| 2015-08-28 Dmitry V. Levin <ldv@altlinux.org> |
| |
| Mpersify parsers of getrusage, waitpid, wait4, and waitid syscalls. |
| Fix multiple personalities support in parsers of getrusage, waitpid, |
| wait4, and waitid syscalls by converting printrusage into a mpersified |
| printer. |
| |
| * defs.h (printrusage): Remove. |
| * printrusage.c (rusage_t): New typedef. Mpersify it. |
| (printrusage): Use it instead of struct rusage. |
| Wrap function name into MPERS_PRINTER_DECL. |
| * resource.c (sys_getrusage): Use mpersified printrusage. |
| * wait.c (printwaitn, sys_waitid): Likewise. |
| |
| 2015-08-28 Elvira Khabirova <lineprinter0@gmail.com> |
| |
| tests: add rt_sigqueueinfo.test. |
| * tests/rt_sigqueueinfo.c: New file. |
| * tests/rt_sigqueueinfo.test: New test. |
| * tests/Makefile.am (check_PROGRAMS): Add rt_sigqueueinfo. |
| (TESTS): Add rt_sigqueueinfo.test. |
| * tests/.gitignore: Add rt_sigqueueinfo. |
| |
| 2015-08-28 Elvira Khabirova <lineprinter0@gmail.com> |
| |
| Mpersify printsiginfo_at printer. |
| Fix multiple personalities support in parsers of ptrace, |
| rt_sigqueueinfo, rt_tgsigqueueinfo, rt_sigtimedwait and waitid syscalls |
| by converting printsiginfo_at into a mpersified printer. |
| |
| * printsiginfo.c (siginfo_t): Mpersify. |
| (printsiginfo_at): Wrap function name into MPERS_PRINTER_DECL. |
| * defs.h (printsiginfo_at): Remove. |
| * signal.c (print_sigqueueinfo, sys_rt_sigtimedwait): Use mpersified |
| printsiginfo_at. |
| * process.c (sys_ptrace): Likewise. |
| * wait.c (sys_waitid): Likewise. |
| |
| 2015-08-28 Elvira Khabirova <lineprinter0@gmail.com> |
| |
| Mpersify parser of sigaltstack syscall. |
| Fix multiple personalities support in parser of sigaltstack syscall by |
| mpersifying stack_t typedef. |
| |
| * sigaltstack.c (stack_t): Mpersify. |
| (print_stack_t): Use it. |
| |
| 2015-08-28 Elvira Khabirova <lineprinter0@gmail.com> |
| |
| Mpersify parser of utime syscall. |
| Fix multiple personalities support in parser of utime syscall by using |
| mpersified utimbuf_t typedef. |
| |
| * utime.c (utimbuf_t): New typedef. Mpersify it. |
| (sys_utime): Use it instead of a locally defined union. |
| |
| 2015-08-28 Dmitry V. Levin <ldv@altlinux.org> |
| |
| tests: add utimensat.test. |
| * tests/utimensat.c: New file. |
| * tests/utimensat.test: New test. |
| * tests/Makefile.am (check_PROGRAMS): Add utimensat. |
| (TESTS): Add utimensat.test. |
| * configure.ac (AC_CHECK_FUNCS): Add utimensat. |
| * tests/.gitignore: Add utimensat. |
| |
| 2015-08-28 Dmitry V. Levin <ldv@altlinux.org> |
| |
| Mpersify parsers of utimes, futimesat, and utimensat syscalls. |
| Fix multiple personalities support in parsers of utimes, futimesat, |
| and utimensat syscalls by introducing two mpersified printers: |
| print_timeval_pair and print_timespec_utime_pair. |
| |
| * print_time.c: New file. |
| * Makefile.am (strace_SOURCES): Add it. |
| * utimes.c (decode_utimes): Remove. |
| (sys_utimes, sys_futimesat): Use print_timeval_pair instead |
| of decode_utimes. |
| (sys_utimensat): Use print_timespec_utime_pair instead of decode_utimes. |
| |
| 2015-08-28 Elvira Khabirova <lineprinter0@gmail.com> |
| |
| Add mpers support. |
| Add a subsystem for semi-automatical definition of how parsers should |
| work with personality-dependent (mpers) types of tracee's data. Create |
| auxiliary libraries containing mpers syscall parsers and printer |
| functions, one library for each possible nonnative target personality. |
| |
| Currently some parsers do not handle differences in definitions of data |
| types between personalities, namely LP64 and ILP32. When |
| this is the case, long integers, pointers, and all compound |
| types containing long and pointer members may be printed incorrectly, |
| because of differences in sizes, offsets and alignments. |
| |
| Since in most cases these are the only differences in desired behaviour |
| of parsers and printers for different personalities, a correct way |
| would be to compile one source code into multiple parsers, differing |
| only in definitions of mpers types. |
| |
| To get a definition of a given type for nonnative personality |
| a very basic .c file containing a declaration of a variable of this type |
| is being compiled for this personality (using -m32 or -mx32 compiler |
| flag). Information about the type is then being extracted from |
| this binary's DWARF debug info with an awk script and put |
| into a corresponding header file. Resulting headers are being used to |
| compile mpers variations of syscall parsers and printer functions. |
| |
| In addition to syscall parsers, there can occur a need to create mpers |
| printing functions, which then can be called from many places |
| in the code (for example, printsiginfo_at). Such functions (printers) |
| are marked in a special manner. |
| |
| For each possible nonnative target personality a library is being |
| created, containing mpers variations of syscall parsers and printers. |
| Only syscall parsers from files marked in a special manner and specially |
| marked functions from such files are being recompiled and included |
| in these libraries. |
| |
| generate_mpers_am.sh is called by bootstrap to find the files |
| from strace_SOURCES which include MPERS_DEFS. During compilation, |
| these files are being inspected for inclusions of DEF_MPERS_TYPE, |
| and nonnative variations of each included type are being generated |
| by an awk script. |
| |
| Mpers parser names are being modified during inclusions of syscallent |
| headers for nonnative personalities. Pointers to printers are |
| being stored in structs struct_printers, and a master |
| pointer printers is being updated on every set_personality. |
| |
| * README-mpers: New README explaining how to use mpers support. |
| * empty.h: New empty file. |
| * generate_mpers_am.sh: New file. |
| * mpers.awk: Likewise. |
| * mpers.sh: Likewise. |
| * mpers_test.sh: Likewise. |
| * mpers_type.h: Likewise. |
| * Makefile.am (strace_SOURCES): Add empty.h and mpers_type.h. |
| (strace_CPPFLAGS, strace_LDFLAGS, strace_LDADD): Move to the beginning |
| of the file. |
| (strace_LDADD, noinst_LIBRARIES): Add libmpers-%.a. |
| (EXTRA_DIST): Add mpers.awk, mpers.sh, mpers_test.sh. |
| (BUILT_SOURCES, CLEANFILES): Add new generated files: |
| native_printer_decls.h, native_printer_defs.h, printers.h, |
| [HAVE_M32_MPERS] $(mpers_m32_targets), and [HAVE_MX32_MPERS] |
| $(mpers_mx32_targets). |
| (mpers_NAME, mpers_PREFIX, mpers_DEFS, mpers_INCLUDES, mpers_CPPFLAGS, |
| mpers_sh_opts, libmpers_CPPFLAGS, libmpers_m[x]32_a_SOURCES, |
| libmpers_m[x]32_a_CPPFLAGS, mpers_m[x]32_targets): New variables. |
| (mpers-m[x]32.stamp, m[x]32_defs.h, m[x]32_funcs.h, printers.h, |
| %_printer_decls.h, %_printer_defs.h, clean-local, |
| native_printer_decls.h, native_printer_defs.h, $mpers_m[x]32_targets): |
| New targets. |
| * bootstrap: Add generate_mpers_am.sh. |
| * configure.ac: Add AC_PROG_RANLIB. |
| * m4/mpers.m4: Add HAVE_MPERS variable. Add $st_cv_mpers checks. |
| * defs.h: Include mpers_type.h. |
| Include printers.h, native_printer_decls.h, define MPERS_PRINTER_NAME. |
| Redefine SYS_FUNC_NAME. Define MPERS_PRINTER_DECL. |
| [HAVE_M32_MPERS]: define PERSONALITY1_INCLUDE_FUNCS, |
| PERSONALITY1_INCLUDE_PRINTERS_DECLS, PERSONALITY1_INCLUDE_PRINTERS_DEFS |
| for X86_64, X32. |
| [HAVE_MX32_MPERS]: define PERSONALITY2_INCLUDE_FUNCS, |
| PERSONALITY2_INCLUDE_PRINTERS_DECLS, PERSONALITY2_INCLUDE_PRINTERS_DEFS |
| for X86_64. |
| Add fallback definitions of |
| PERSONALITY1_INCLUDE_FUNCS, PERSONALITY2_INCLUDE_FUNCS, |
| PERSONALITY0_INCLUDE_PRINTERS_DECLS, PERSONALITY0_INCLUDE_PRINTERS_DEFS, |
| PERSONALITY1_INCLUDE_PRINTERS_DECLS, PERSONALITY1_INCLUDE_PRINTERS_DEFS, |
| PERSONALITY2_INCLUDE_PRINTERS_DECLS, PERSONALITY2_INCLUDE_PRINTERS_DEFS. |
| * syscall.c: Include PERSONALITY1_INCLUDE_FUNCS, |
| PERSONALITY2_INCLUDE_FUNCS, |
| PERSONALITY0_INCLUDE_PRINTERS_DECLS, PERSONALITY0_INCLUDE_PRINTERS_DEFS, |
| PERSONALITY1_INCLUDE_PRINTERS_DECLS, PERSONALITY1_INCLUDE_PRINTERS_DEFS, |
| PERSONALITY2_INCLUDE_PRINTERS_DECLS, PERSONALITY2_INCLUDE_PRINTERS_DEFS. |
| (printers): New struct. Update it when needed. |
| * .gitignore: Add libmpers-m32.a, libmpers-mx32.a, m32_defs.h, |
| m32_funcs.h, m32_printer_decls.h, m32_printer_defs.h, mpers-m32, |
| mpers-m32.stamp, mpers-mx32, mpers-mx32.stamp, mpers.am, mx32_defs.h, |
| mx32_funcs.h, mx32_printer_decls.h, mx32_printer_defs.h, |
| native_printer_decls.h, native_printer_defs.h, and printers.h. |
| |
| 2015-08-28 Dmitry V. Levin <ldv@altlinux.org> |
| |
| tests: convert readlink.test and readlinkat.test from match_awk to match_diff |
| * tests/readlink.c (main): Print expected output. |
| * tests/readlinkat.c (main): Likewise. |
| * tests/readlink.test: Use match_diff instead of match_awk. |
| * tests/readlinkat.test: Likewise. |
| * tests/readlink.awk: Remove. |
| * tests/readlinkat.awk: Likewise. |
| * tests/Makefile.am (EXTRA_DIST): Remove readlink.awk and readlinkat.awk. |
| |
| tests: convert getrandom.test from match_awk to match_diff. |
| * tests/getrandom.c (main): Print expected output. |
| * tests/getrandom.test: Use match_diff instead of match_awk. |
| * tests/getrandom.awk: Remove. |
| * tests/Makefile.am (EXTRA_DIST): Remove getrandom.awk. |
| |
| 2015-08-27 Dmitry V. Levin <ldv@altlinux.org> |
| |
| tests: convert select.test from match_awk to match_diff. |
| * tests/select.c (main): Print expected output. |
| * tests/select.test: Use match_diff instead of match_awk. |
| * tests/select.awk: Remove. |
| * tests/Makefile.am (EXTRA_DIST): Remove select.awk. |
| |
| tests: convert several tests from match_grep to match_diff. |
| * tests/sendfile.test: Use match_diff instead of match_grep. |
| * tests/sendfile64.test: Likewise. |
| * tests/time.test: Likewise. |
| * tests/utime.test: Likewise. |
| * tests/xet_robust_list.test: Likewise. |
| * tests/sendfile.c (main): Update match patterns for match_diff. |
| * tests/sendfile64.c (main): Likewise. |
| * tests/time.c (main): Likewise. |
| * tests/utime.c (main): Likewise. |
| * tests/xet_robust_list.c (main): Likewise. |
| |
| 2015-08-27 Dmitry V. Levin <ldv@altlinux.org> |
| |
| tests: fix match_diff usage. |
| The first argument of match_diff should be the file with expected |
| output, the second argument - the file with actual output. |
| |
| * tests/aio.test: Swap match_diff arguments. |
| * tests/restart_syscall.test: Likewise. |
| * tests/seccomp.test: Likewise. |
| * tests/umovestr2.test: Likewise. |
| |
| 2015-08-27 Dmitry V. Levin <ldv@altlinux.org> |
| |
| build: fix -I options. |
| * configure.ac (AM_INIT_AUTOMAKE): Add nostdinc. |
| * Makefile.am (AM_CPPFLAGS): Append -I$(builddir) and -I$(srcdir). |
| * tests/Makefile.am (AM_CPPFLAGS): Likewise. |
| |
| 2015-08-26 Dmitry V. Levin <ldv@altlinux.org> |
| |
| aio: rewrite from libaio.h to linux/aio_abi.h. |
| * configure.ac (AC_CHECK_HEADERS): Remove libaio.h. |
| * aio.c: Assume that <linux/aio_abi.h> is available, |
| include it instead of <libaio.h>. |
| [!IOCB_RESFD]: Remove. |
| (enum iocb_sub): Remove SUB_POLL. |
| (tprint_lio_opcode): Update. |
| (print_common_flags): Use IOCB_FLAG_RESFD instead of IOCB_RESFD, |
| rename fields of struct iocb. |
| (iocb_is_valid, print_iocb_header, print_iocb): New functions. |
| (sys_io_submit): Use print_iocb. |
| (print_io_event): Fix struct io_event decoding. |
| (sys_io_cancel): Use print_iocb_header. |
| * strace.spec (BuildRequires): Remove libaio-devel. |
| * tests/aio.c (main): Test IOCB_CMD_PREADV, io_cancel, |
| and struct io_event decoding. |
| * tests/aio.test (syscalls): Add io_cancel. |
| |
| 2015-08-26 Dmitry V. Levin <ldv@altlinux.org> |
| |
| Fix multiple personalities support in parser of io_submit syscall. |
| Introduce a new helper function to fetch tracee's long integers |
| and use it to fix multiple personalities support in io_submit parser. |
| |
| * defs.h (umove_long_or_printaddr): New prototype. |
| * util.c (umove_long_or_printaddr): New function. |
| * aio.c (sys_io_submit): Use it to fetch tracee's pointers. |
| * tests/aio.c: New file. |
| * tests/aio.test: New test. |
| * tests/Makefile.am (check_PROGRAMS): Add aio. |
| (TESTS): Add aio.test. |
| * tests/.gitignore: Add aio. |
| |
| 2015-08-26 Dmitry V. Levin <ldv@altlinux.org> |
| |
| tests: fix build on systems that lack O_CLOEXEC definition. |
| * tests/epoll_create1.c (main): Check that O_CLOEXEC is defined. |
| * tests/eventfd.c (main): Likewise. |
| * tests/signalfd.c (main): Likewise. |
| |
| tests: fix build on systems that lack AT_FDCWD definition. |
| * tests/readlinkat.c: Stop including <fcntl.h>. |
| (main): Replace AT_FDCWD with -100. |
| |
| Fix printing of io_getevents first argument. |
| * aio.c (sys_io_getevents): Print first argument using "%lu" format. |
| |
| 2015-08-26 Mike Frysinger <vapier@gentoo.org> |
| |
| decode extend getsockopt/setsockopt options. |
| Currently the code assumes the set of valid options between getsockopt |
| and setsockopt are exactly the same and thus maintains one list. The |
| kernel unfortunately does not do this -- it allows for different opts |
| between the get and set functions. See the {g,s}et_opt{min,max} fields |
| in the various netfilter subcores. |
| |
| To support this, extend the printxval function to take multiple sets of |
| xlats as varargs. Then we add the new get/set lists, and pass them down |
| in the net code when decoding things. |
| |
| A simple example is iptables; before: |
| getsockopt(4, SOL_IP, 0x40 /* IP_??? */, ...) = 0 |
| getsockopt(4, SOL_IP, 0x41 /* IP_??? */, ...) = 0 |
| after: |
| getsockopt(4, SOL_IP, IPT_SO_GET_INFO, ...) = 0 |
| getsockopt(4, SOL_IP, IPT_SO_GET_ENTRIES, ...) = 0 |
| |
| If these were setsockopt calls, then 0x40 & 0x41 would be |
| IPT_SO_SET_REPLACE & IPT_SO_SET_ADD_COUNTERS. |
| |
| * configure.ac: Check for netfilter headers. |
| * defs.h (printxvals): New prototype. |
| (printxval): Change to a define. |
| * net.c: Include netfilter headers and new sockopts headers. |
| (print_sockopt_fd_level_name): Add a is_getsockopt argument. Change SOL_IP |
| and SOL_IPV6 decoding to use printxvals, and use is_getsockopt to pass more |
| xlats down. |
| (getsockopt): Call print_sockopt_fd_level_name with is_getsockopt as true. |
| (setsockopt): Call print_sockopt_fd_level_name with is_getsockopt as false. |
| * util.c (printxval): Rename to ... |
| (printxvals): ... this. Rewrite to be varargs based. |
| * xlat/getsockipoptions.in: New xlat list. |
| * xlat/getsockipv6options.in, xlat/setsockipoptions.in, |
| xlat/setsockipv6options.in: Likewise. |
| |
| 2015-08-26 Dmitry V. Levin <ldv@altlinux.org> |
| |
| Fix build on systems that lack VIDIOC_CREATE_BUFS definition. |
| * v4l2.c (v4l2_ioctl): Check that v4l2_ioctl is defined. |
| |
| Fix build on systems that lack EM_ARM/EM_OPENRISC definitions. |
| * xlat/audit_arch.in: Guard AUDIT_ARCH_ARM and AUDIT_ARCH_ARMEB |
| with EM_ARM check. Guard AUDIT_ARCH_OPENRISC with EM_OPENRISC check. |
| |
| 2015-08-25 Dmitry V. Levin <ldv@altlinux.org> |
| |
| Fix build on systems that lack UBI_IOCVOLCRBLK/UBI_IOCVOLRMBLK definitions |
| * mtd.c (ubi_ioctl): Check that UBI_IOCVOLCRBLK and UBI_IOCVOLRMBLK |
| are defined. |
| |
| Fix build on systems that lack O_CLOEXEC definition. |
| * xlat/efd_flags.in: Check that O_CLOEXEC is defined. |
| * xlat/epollflags.in: Likewise. |
| * xlat/sfd_flags.in: Likewise. |
| * xlat/timerfdflags.in: Fix O_CLOEXEC check. |
| |
| 2015-08-21 Elvira Khabirova <lineprinter0@gmail.com> |
| |
| printsiginfo.c: fix integer conversions. |
| * printsiginfo.c (printsigsource): Print si_pid and si_uid as unsigned |
| integers. |
| (printsigval): Print si_int as signed int. |
| |
| 2015-08-20 Dmitry V. Levin <ldv@altlinux.org> |
| |
| Fix decoding of times syscall return value. |
| Always print return value of successful times syscall |
| as unsigned long integer. |
| |
| * times.c (sys_times): Return RVAL_UDECIMAL unless syserror. |
| |
| 2015-08-20 Elvira Khabirova <lineprinter0@gmail.com> |
| |
| mq.c: remove repeated code. |
| * mq.c (sys_mq_open): Use printmqattr instead of implementing it again. |
| [HAVE_MQUEUE_H]: Remove. |
| |
| 2015-08-20 Elvira Khabirova <lineprinter0@gmail.com> |
| |
| ipc_msg.c: fix multiple personalities support in msgrcv ipc subcall. |
| When msgrcv syscall is an ipc subcall, msgp (pointer to struct msgbuf) |
| and msgtyp (message type) syscall arguments are passed via proxy |
| structure which definition significantly depends on tracee's |
| wordsize. |
| |
| * ipc_msg.c (fetch_msgrcv_args): New function. |
| (sys_msgrcv): Use it. |
| |
| 2015-08-20 Elvira Khabirova <lineprinter0@gmail.com> |
| |
| ipc.c: split into separate files. |
| In preparation for upcoming mpers-related changes, |
| split ipc.c into independent groups of parsers. |
| |
| * ipc_defs.h: New file. |
| * ipc_msg.c: Likewise. |
| * ipc_msgctl.c: Likewise. |
| * ipc_sem.c: Likewise. |
| * ipc_shm.c: Likewise. |
| * ipc_shmctl.c: Likewise. |
| * mq.c: Likewise. |
| * print_mq_attr.c: Likewise. |
| * print_msgbuf.c: Likewise. |
| * ipc.c: Remove. |
| (sys_mq_open, sys_mq_timedsend, sys_mq_timedreceive, sys_mq_notify, |
| sys_mq_getsetattr): Move to mq.c. |
| (sys_msgget, tprint_msgsnd, sys_msgsnd, tprint_msgrcv, sys_msgrcv): Move |
| to ipc_msg.c. |
| (sys_msgctl): Move to ipc_msgctl.c. |
| (tprint_sembuf, tprint_sembuf_array, sys_semop, sys_semtimedop, |
| sys_semget, syssemctl): Move to ipc_sem.c. |
| (sys_shmget, sys_shmat, sys_shmdt): Move to ipc_shm.c. |
| (sys_shmctl): Move to ipc_shmctl.c. |
| (printmqattr): Move to print_mq_attr.c. |
| (tprint_msgbuf): Move to print_msgbuf.c. |
| (IPC_64, PRINTCTL): Move to ipc_defs.h. |
| * defs.h (struct xlat resource_flags): New prototype. |
| * Makefile.am (strace_SOURCES): Remove ipc.c. Add ipc_defs.h, mq.c, |
| ipc_msg.c, ipc_msgctl.c, ipc_sem.c, ipc_shm.c, ipc_shmctl.c, |
| print_mq_attr.c, and print_msgbuf.c. |
| |
| 2015-08-20 Elvira Khabirova <lineprinter0@gmail.com> |
| |
| .gitignore: add sen.h and sys_func.h. |
| |
| 2015-08-19 Dmitry V. Levin <ldv@altlinux.org> |
| |
| tests: add sendfile.test and sendfile64.test. |
| * tests/sendfile.c: New file. |
| * tests/sendfile64.c: New file. |
| * tests/sendfile.test: New test. |
| * tests/sendfile64.test: New test. |
| * tests/Makefile.am (check_PROGRAMS): Add sendfile and sendfile64. |
| (TESTS): Add sendfile.test and sendfile64.test. |
| * tests/.gitignore: Add sendfile and sendfile64. |
| |
| 2015-08-19 Dmitry V. Levin <ldv@altlinux.org> |
| |
| sendfile: decode file offset both on entering and exiting syscall. |
| When sendfile is called with a valid pointer to a file offset variable, |
| kernel updates this variable on successfull exit from syscall. |
| |
| * sendfile.c (sys_sendfile, sys_sendfile64): Print tcp->u_arg[2] |
| on exiting syscall as well as on entering. |
| |
| 2015-08-19 Dmitry V. Levin <ldv@altlinux.org> |
| |
| io.c: move sendfile parsers to a separate file. |
| * sendfile.c: New file. |
| * Makefile.am (strace_SOURCES): Add it. |
| * io.c (sys_sendfile, sys_sendfile64): Move to sendfile.c |
| |
| 2015-08-19 Dmitry V. Levin <ldv@altlinux.org> |
| |
| Make printnum_* functions return boolean status. |
| With this change, printnum_* functions return true iff they |
| successfully fetched necessary data from tracee's memory. |
| |
| * defs.h (printnum_short, printnum_int, printnum_int64, |
| printnum_long_int, printpair_int, printpair_int64): Return bool. |
| * util.c (DEF_PRINTNUM, DEF_PRINTPAIR, printnum_long_int): Likewise. |
| |
| 2015-08-19 Dmitry V. Levin <ldv@altlinux.org> |
| |
| mips: print _MIPS_SIM in configure.ac for debug purposes. |
| * configure.ac [MIPS]: Print _MIPS_SIM. |
| |
| xtensa: fix several syscall entries. |
| * linux/xtensa/syscallent.h: Fix nargs in splice, tee, vmsplice, |
| pselect6, ppoll, epoll_pwait, and set_robust_list syscall entries. |
| |
| ia64: fix syscall numbers for set_robust_list, get_robust_list, and splice syscalls |
| * linux/ia64/syscallent.h: Place syscall entries for set_robust_list, |
| get_robust_list, and splice in correct order. |
| |
| 2015-08-18 Dmitry V. Levin <ldv@altlinux.org> |
| |
| tests: add a test for get_robust_list and set_robust_list decoding. |
| * tests/xet_robust_list.c: New file. |
| * tests/xet_robust_list.test: New test. |
| * tests/Makefile.am (check_PROGRAMS): Add xet_robust_list. |
| (TESTS): Add xet_robust_list.test. |
| * tests/.gitignore: Add xet_robust_list. |
| |
| Simplify printing of get_robust_list first argument. |
| * get_robust_list.c (sys_get_robust_list): Print first argument |
| using "%d" format. |
| |
| 2015-08-18 Elvira Khabirova <lineprinter0@gmail.com> |
| |
| Fix io_setup first argument printing. |
| * aio.c (sys_io_setup): Print first argument using "%u" format. |
| |
| 2015-08-18 Dmitry V. Levin <ldv@altlinux.org> |
| |
| Fix printing tracee's long integers. |
| Replace ambiguous printnum_long that used to fetch native long integers |
| from tracee's memory with printnum_ptr, printnum_slong, and printnum_ulong |
| that fetch tracee's pointer, signed long, and unsigned long integers. |
| |
| * defs.h (printnum_long, printpair_long): Remove prototypes. |
| (printnum_int64, printpair_int64): Remove macros, declare functions |
| unconditionally. |
| [SUPPORTED_PERSONALITIES > 1 && SIZEOF_LONG > 4] (printnum_long_int): |
| New prototype. |
| (printnum_ptr, printnum_slong, printnum_ulong): New macros. |
| * aio.c (sys_io_setup): Use printnum_ulong. |
| * block.c (block_ioctl): Use printnum_slong and printnum_ulong. |
| * get_robust_list.c (sys_get_robust_list): Use printnum_ptr |
| and printnum_ulong. |
| * io.c (print_off_t): Remove. |
| (sys_sendfile): Use printnum_ulong. |
| * ipc.c (sys_semctl): Use printnum_ptr. |
| * prctl.c (sys_prctl): Likewise. |
| * process.c (sys_ptrace): Likewise. |
| * rtc.c (rtc_ioctl): Use printnum_ulong. |
| * util.c (printnum_long, printpair_long): Remove. |
| (printnum_int64, printpair_int64): Define unconditionally. |
| [SUPPORTED_PERSONALITIES > 1 && SIZEOF_LONG > 4] (printnum_long_int): |
| New function. |
| |
| 2015-08-18 Dmitry V. Levin <ldv@altlinux.org> |
| |
| Fix time syscall decoding for some personalities. |
| * time.c (current_time_t_is_int32): Define. |
| (sys_time): Use it, printnum_int, and printnum_int64 instead |
| of printnum_long. |
| * tests/time.c: New file. |
| * tests/time.test: New test. |
| * tests/Makefile.am (check_PROGRAMS): Add time. |
| (TESTS): Add time.test. |
| * tests/.gitignore: Add time. |
| |
| 2015-08-18 Mike Frysinger <vapier@gentoo.org> |
| |
| signal: SIGSYS: decode si_syscall & si_arch fields. |
| When receiving SIGSYS, the si_syscall & si_arch fields are set to known |
| values, so make sure we decode their values into the symbol settings. |
| This makes stracing seccomp failures much easier. |
| |
| * defs.h (syscall_name): New prototype. |
| * printsiginfo.c: Include linux/audit.h and xlat/audit_arch.h. |
| (print_si_info): Decode si_syscall & si_arch for SIGSYS. |
| * syscall.c (undefined_scno_name): Delete. |
| (syscall_name): New function. |
| (trace_syscall_entering): Change undefined_scno_name to syscall_name. |
| (trace_syscall_exiting): Likewise. |
| * xlat/audit_arch.in: New file. |
| |
| 2015-08-18 Elvira Khabirova <lineprinter0@gmail.com> |
| |
| ipc.c: remove unnecesarry #ifdef IPC_64. |
| * ipc.c (PRINTCTL): Remove #ifdef IPC_64 check as IPC_64 is always |
| defined at this point. |
| |
| 2015-08-16 Elvira Khabirova <lineprinter0@gmail.com> |
| |
| resource.c: move times parser to a separate file. |
| * times.c: New file. |
| * Makefile.am (strace_SOURCES): Add it. |
| * resource.c (sys_times): Move to times.c. |
| |
| 2015-08-16 Elvira Khabirova <lineprinter0@gmail.com> |
| |
| sysctl.c: remove KERN_JAVA_* defines handling. |
| This has been obsoleted by binfmt_misc since Linux 2.1.43. |
| |
| * sysctl.c (sys_sysctl): Remove KERN_JAVA_INTERPRETER |
| and KERN_JAVA_APPLETVIEWER. |
| |
| 2015-08-16 Elvira Khabirova <lineprinter0@gmail.com> |
| |
| sysinfo.c: remove obsolete code. |
| struct sysinfo members totalhigh, freehigh and mem_unit are present |
| since Linux 2.3.48. |
| |
| * configure.ac (AC_CHECK_MEMBERS): Remove struct sysinfo checks. |
| * sysinfo.c (sys_sysinfo): Remove HAVE_STRUCT_SYSINFO_* checks. |
| |
| 2015-08-15 Gleb Fotengauer-Malinovskiy <glebfm@altlinux.org> |
| |
| tests: add readlink.test and readlinkat.test. |
| * tests/readlink.c: New file. |
| * tests/readlink.awk: Likewise. |
| * tests/readlinkat.c: Likewise. |
| * tests/readlinkat.awk: Likewise. |
| * tests/readlink.test: New test. |
| * tests/readlinkat.test: Likewise. |
| * tests/Makefile.am (check_PROGRAMS): Add readlink and readlinkat. |
| (TESTS): Add readlink.test and readlinkat.test. |
| (EXTRA_DIST): Add readlink.awk and readlinkat.awk. |
| * tests/.gitignore: Add readlink and readlinkat. |
| |
| 2015-08-09 Dmitry V. Levin <ldv@altlinux.org> |
| |
| Print nanoseconds along with seconds in stat family syscalls. |
| * configure.ac (AC_CHECK_MEMBERS): Add stat.st_atim.tv_nsec, |
| stat.st_ctim.tv_nsec, stat.st_mtim.tv_nsec, stat.st_atime_nsec, |
| stat.st_atime_csec, and stat.st_mtime_nsec. |
| * file.c: Explicitly define HAVE_STRUCT_STAT_ST_ATIME_NSEC, |
| HAVE_STRUCT_STAT_ST_CTIME_NSEC and HAVE_STRUCT_STAT_ST_MTIME_NSEC |
| for locally defined types. |
| * printstat.h (DO_PRINTSTAT): Print st_atime_nsec, st_ctime_nsec, |
| and st_mtime_nsec members. |
| * tests/stat.c [_FILE_OFFSET_BITS == 64]: Use st_atime_nsec, |
| st_ctime_nsec, and st_mtime_nsec via st_atim.tv_nsec, st_ctim.tv_nsec, |
| and st_mtim.tv_nsec. |
| (main): Print st_atime_nsec, st_ctime_nsec, and st_mtime_nsec members. |
| |
| This fixes Fedora bug #1251176. |
| |
| 2015-08-03 Dmitry V. Levin <ldv@altlinux.org> |
| |
| signalfd4: fix flags decoding. |
| * configure.ac (AC_CHECK_FUNCS): Add eventfd. |
| (AC_CHECK_HEADERS): Add sys/signalfd.h. |
| * signalfd.c: Include <fcntl.h>. |
| [HAVE_SYS_SIGNALFD_H] Include <sys/signalfd.h>. |
| Include "xlat/sfd_flags.h". |
| (do_signalfd): Use sfd_flags for flags decoding. |
| * xlat/sfd_flags.in: New file. |
| * tests/signalfd.c: Likewise. |
| * tests/signalfd.expected: Likewise. |
| * tests/signalfd.test: New test. |
| * tests/Makefile.am (check_PROGRAMS): Add signalfd. |
| (TESTS): Add signalfd.test. |
| (EXTRA_DIST): Add signalfd.expected. |
| * tests/.gitignore: Add signalfd. |
| |
| signalfd, signalfd4: mark return code with RVAL_FD flag. |
| * signalfd.c (do_signalfd): Set RVAL_FD flag in the return code. |
| |
| signal.c: move signalfd parsers to a separate file. |
| * signalfd.c: New file. |
| * Makefile.am (strace_SOURCES): Add it. |
| * signal.c (do_signalfd, sys_signalfd, sys_signalfd4): Move to signalfd.c |
| |
| perf_event_open: mark return code with RVAL_FD flag. |
| * perf.c (sys_perf_event_open): Set RVAL_FD flag in the return code. |
| |
| pipe, pipe2, socketpair: print returned descriptors using printfd. |
| * net.c (printpair_fd, decode_pair_fd): New functions. |
| (do_pipe, sys_socketpair): Use them. |
| |
| socket: mark return code with RVAL_FD flag. |
| * net.c (sys_socket): Set RVAL_FD flag in the return code. |
| * tests/net-yy-accept.awk: Update socket and bind regexps. |
| * tests/unix-yy-accept.awk: Likewise. |
| * tests/net-yy-connect.awk: Update socket and connect regexps. |
| * tests/unix-yy-connect.awk: Likewise. |
| |
| timerfd, timerfd_create: mark return code with RVAL_FD flag. |
| * time.c (sys_timerfd, sys_timerfd_create): Set RVAL_FD flag |
| in the return code. |
| |
| 2015-08-02 Dmitry V. Levin <ldv@altlinux.org> |
| |
| inotify_init1: mark return code with RVAL_FD flag. |
| * inotify.c (sys_inotify_init1): Set RVAL_FD flag in the return code. |
| |
| fanotify_init: mark return code with RVAL_FD flag. |
| * fanotify.c (sys_fanotify_init): Set RVAL_FD flag in the return code. |
| |
| Fix epoll_create syscall decoding. |
| * epoll.c (sys_epoll_create): New function. |
| * linux/dummy.h (sys_epoll_create): Remove. |
| |
| epoll_create1: mark return code with RVAL_FD flag. |
| * epoll.c (sys_epoll_create1): Set RVAL_FD flag in the return code. |
| |
| epoll_create1: fix pathtrace support. |
| * pathtrace.c (pathtrace_match): Add SEN_epoll_create1. |
| |
| epoll_create1: fix flags decoding. |
| * xlat/epollflags.in: Remove EPOLL_NONBLOCK, provide fallback definition |
| for EPOLL_CLOEXEC. |
| * tests/epoll_create1.c: New file. |
| * tests/epoll_create1.expected: Likewise. |
| * tests/epoll_create1.test: New test. |
| * tests/Makefile.am (check_PROGRAMS): Add epoll_create1. |
| (TESTS): Add epoll_create1.test. |
| (EXTRA_DIST): Add epoll_create1.expected. |
| * tests/.gitignore: Add epoll_create1. |
| |
| 2015-08-01 Dmitry V. Levin <ldv@altlinux.org> |
| |
| desc.c: move epoll parsers to a separate file. |
| * epoll.c: New file. |
| * Makefile.am (strace_SOURCES): Add it. |
| * desc.c (sys_epoll_create1, print_epoll_event, sys_epoll_ctl, |
| print_epoll_event_array, epoll_wait_common, epoll_wait, epoll_pwait): |
| Move to epoll.c. |
| |
| eventfd2: fix flags decoding. |
| * configure.ac (AC_CHECK_HEADERS): Add sys/eventfd.h. |
| * eventfd.c: Include <fcntl.h>. |
| [HAVE_SYS_EVENTFD_H] Include <sys/eventfd.h>. |
| Include "xlat/efd_flags.h". |
| (do_eventfd): Use efd_flags for flags decoding. |
| * xlat/efd_flags.in: New file. |
| * tests/eventfd.c: New file. |
| * tests/eventfd.expected: Likewise. |
| * tests/eventfd.test: New test. |
| * tests/Makefile.am (check_PROGRAMS): Add eventfd. |
| (TESTS): Add eventfd.test. |
| (EXTRA_DIST): Add eventfd.expected. |
| * tests/.gitignore: Add eventfd. |
| |
| eventfd: print first argument as unsigned int. |
| * eventfd.c (do_eventfd): Explicitly cast initial value to unsigned int. |
| |
| Mark eventfd return code with RVAL_FD flag. |
| * eventfd.c (do_eventfd): Set RVAL_FD flag in the return code. |
| |
| desc.c: move eventfd parsers to a separate file. |
| * eventfd.c: New file. |
| * Makefile.am (strace_SOURCES): Add it. |
| * desc.c (do_eventfd, sys_eventfd, sys_eventfd2): Move to eventfd.c. |
| |
| Update PERF_FLAG_* constants. |
| * xlat/perf_event_open_flags.in: Add PERF_FLAG_FD_CLOEXEC, |
| provide fallback definitions. |
| |
| desc.c: move perf_event_open parser to a separate file. |
| * perf.c: New file. |
| * Makefile.am (strace_SOURCES): Add it. |
| * desc.c (sys_perf_event_open): Move to perf.c. |
| |
| 2015-08-01 Elvira Khabirova <lineprinter0@gmail.com> |
| |
| time.c: remove obsolete code from adjtimex parser. |
| Linux versions 1.3.28 and below are not supported. |
| |
| * time.c (tprint_timex) [LINUX_VERSION_CODE < 66332]: Remove. |
| |
| 2015-08-01 Elvira Khabirova <lineprinter0@gmail.com> |
| |
| ipc.c: move fallback definitions of msg, sem, and shm constants to xlat/ |
| * ipc.c: Move MSG_STAT and MSG_INFO definitions to xlat/msgctl_flags.in. |
| Move SHM_STAT and SHM_INFO definitions to xlat/shmctl_flags.in. |
| Move SEM_STAT and SEM_INFO definitions to xlat/semctl_flags.in. |
| |
| 2015-08-01 Dmitry V. Levin <ldv@altlinux.org> |
| |
| tests/ppoll: replace SIGABRT with SIGHUP. |
| Use SIGHUP instead of SIGABRT, the number of the former |
| is more portable across architectures. |
| |
| * tests/ppoll.c (test2): Replace SIGABRT with SIGHUP. |
| * tests/ppoll.expected: Update regexp. |
| * tests/ppoll-v.expected: Likewise. |
| |
| 2015-08-01 Dmitry V. Levin <ldv@altlinux.org> |
| |
| decode_poll_exiting: reserve more space in output buffer. |
| * poll.c (decode_poll_exiting): Reserve more space in output buffer. |
| |
| 2015-07-30 Dmitry V. Levin <ldv@altlinux.org> |
| |
| Cleanup poll/ppoll decoders. |
| * poll.c (decode_poll): Split into print_pollfd, decode_poll_entering, |
| and decode_poll_exiting. |
| (sys_poll, sys_ppoll): Update callers. |
| * tests/ppoll.c: New file. |
| * tests/ppoll.expected: Likewise. |
| * tests/ppoll-v.expected: Likewise. |
| * tests/ppoll.test: New test. |
| * tests/Makefile.am (check_PROGRAMS): Add ppoll. |
| (TESTS): Add ppoll.test. |
| (EXTRA_DIST): Add ppoll.expected and ppoll-v.expected. |
| * tests/.gitignore: Add ppoll. |
| |
| poll: print timeout argument as int. |
| * poll.c (sys_poll): Explicitly cast timeout argument to int. |
| |
| stream.c: move poll and ppoll parsers to a separate file. |
| * poll.c: New file. |
| * Makefile.am (strace_SOURCES): Add it. |
| * stream.c (decode_poll, sys_poll, sys_ppoll): Move to poll.c. |
| |
| Assume that <poll.h> is available. |
| * configure.ac (AC_CHECK_HEADERS): Remove poll.h and sys/poll.h. |
| * pathtrace.c: Include <poll.h> unconditionally. |
| * stream.c: Likewise. |
| [HAVE_SYS_POLL_H]: Compile unconditionally. |
| [!HAVE_SYS_POLL_H]: Remove. |
| |
| tests: add oldselect.test. |
| * tests/oldselect.c: New file. |
| * tests/oldselect.expected: Likewise. |
| * tests/oldselect.test: New test. |
| * tests/Makefile.am (check_PROGRAMS): Add oldselect. |
| (TESTS): Add oldselect.test. |
| (EXTRA_DIST): Add oldselect.expected. |
| * tests/.gitignore: Add oldselect. |
| |
| 2015-07-30 Elvira Khabirova <lineprinter0@gmail.com> |
| |
| Fix oldselect decoding on 64-bit architectures. |
| As struct sel_arg_struct is an array of 32-bit values, |
| fetch it using an intermediate array on 64-bit architectures. |
| |
| * desc.c (sys_oldselect): Rename args to long_args. |
| [SIZEOF_LONG == 4] Alias oldselect_args to long_args. |
| [SIZEOF_LONG != 4] Introduce oldselect_args to fetch oldselect args. |
| * linux/sh64/syscallent.h (oldselect): Remove. |
| |
| 2015-07-30 Dmitry V. Levin <ldv@altlinux.org> |
| |
| net.c: use printaddr. |
| * net.c (printsock, sys_recvfrom): Use printaddr. |
| |
| 2015-07-30 Denys Vlasenko <dvlasenk@redhat.com> |
| |
| net.c: recvfrom fixes. |
| This change fixes these three problems (before/after is shown): |
| |
| On interrupted syscall, flags are not decoded: |
| |
| -recvfrom(3, 0x7fff0a41e306, 10, 2, 0, 0) = ? ERESTARTSYS |
| +recvfrom(3, 0x7fff0a41e306, 10, MSG_PEEK, 0, 0) = ? ERESTARTSYS |
| |
| If peer address is unavalable (example: anon sockets from socketpair()), |
| kernel returns socklen of 0, but we ignore that and show bogus sockaddr data: |
| |
| -recvfrom(3, "123456789\0", 10, MSG_PEEK, {sa_family=0x7777 /* AF_??? */, sa_data="wwwwwwwwwwwwww"}, [0]) = 10 |
| +recvfrom(3, "123456789\0", 10, MSG_PEEK, 0x7ffde6edf760, [0]) = 10 |
| |
| SYS_FUNC(recvfrom) passes address of fromlen, not fromlen, to printsock(): |
| |
| - printsock(tcp, tcp->u_arg[4], tcp->u_arg[5]); |
| + printsock(tcp, tcp->u_arg[4], fromlen); |
| |
| 2015-07-29 Elliott Hughes <enh@google.com> |
| |
| prctl: decode Android-specific PR_SET_VMA. |
| Android kernels have a prctl to name VMAs. |
| |
| * prctl.c (sys_prctl) [__ANDROID__]: Decode PR_SET_VMA. |
| |
| 2015-07-29 Dmitry V. Levin <ldv@altlinux.org> |
| |
| mips: fix stub files. |
| This complements commit 140ecf876686d49085c6eb3a2306e2ea6ea641bc. |
| |
| * linux/mips/genstub.sh: Output SEN(printargs) instead of printargs. |
| |
| Reported-by: Elliott Hughes <enh@google.com> |
| |
| 2015-07-29 Dmitry V. Levin <ldv@altlinux.org> |
| |
| tests/bpf: fix build with incompatibly old linux/bpf.h and/or gcc. |
| * configure.ac: Check how union bpf_attr.log_buf initialization works. |
| * tests/bpf.c: Check for HAVE_UNION_BPF_ATTR_LOG_BUF. |
| |
| Implement sched_getattr and sched_setattr syscalls decoding. |
| * xlat/sched_flags.in: New file. |
| * sched.c: Include "xlat/sched_flags.h". |
| (print_sched_attr, sys_sched_setattr, sys_sched_getattr): New functions. |
| * linux/dummy.h (sys_sched_getattr, sys_sched_setattr): Remove. |
| * tests/sched_xetattr.c: New file. |
| * tests/sched_xetattr.test: New test. |
| * tests/Makefile.am (check_PROGRAMS): Add sched_xetattr. |
| (TESTS): Add sched_xetattr.test. |
| * tests/.gitignore: Add sched_xetattr. |
| |
| Implement memfd_create syscall decoding. |
| * memfd_create.c: New file. |
| * Makefile.am (strace_SOURCES): Add it. |
| * linux/dummy.h (sys_memfd_create): Remove. |
| * pathtrace.c (pathtrace_match): Add SEN_memfd_create. |
| * xlat/memfd_create_flags.in: New file. |
| * tests/memfd_create.c: New file. |
| * tests/memfd_create.expected: Likewise. |
| * tests/memfd_create.test: New test. |
| * tests/Makefile.am: (check_PROGRAMS): Add memfd_create. |
| (TESTS): Add memfd_create.test. |
| (EXTRA_DIST): Add memfd_create.expected. |
| * tests/.gitignore: Add memfd_create. |
| |
| 2015-07-28 Elliott Hughes <enh@google.com> |
| |
| Fix builds where HAVE_MQUEUE_H isn't defined. |
| Android doesn't have <mqueue.h>. |
| |
| * ipc.c (sys_mq_open) [!HAVE_MQUEUE_H]: Fix printaddr invocation. |
| |
| 2015-07-27 Dmitry V. Levin <ldv@altlinux.org> |
| |
| tests/restart_syscall: skip if nanosleep looks uninterrupted. |
| * tests/restart_syscall.test: Skip if restart_syscall is not detected |
| and nanosleep syscall looks uninterrupted. |
| |
| Implement execveat syscall decoding. |
| * execve.c (decode_execve): New function. |
| (sys_execve): Use it. |
| (sys_execveat): New function. |
| * linux/dummy.h (sys_execveat): Remove. |
| * tests/execveat.c: New file. |
| * tests/execveat.expected: Likewise. |
| * tests/execveat-v.expected: Likewise. |
| * tests/execveat.test: New test. |
| * tests/Makefile.am (check_PROGRAMS): Add execveat. |
| (TESTS): Add execveat.test. |
| (EXTRA_DIST): Add execveat.expected and execveat-v.expected. |
| * tests/.gitignore: Add execveat. |
| |
| execve: fix support of personalities with different word size. |
| * execve.c (printargc): Do not assume that host and target pointers have |
| the same size. |
| * tests/execve.c: New file. |
| * tests/execve.expected: Likewise. |
| * tests/execve-v.expected: Likewise. |
| * tests/execve.test: New test. |
| * tests/Makefile.am (check_PROGRAMS): Add execve. |
| (TESTS): Add execve.test. |
| (EXTRA_DIST): Add execve.expected and execve-v.expected. |
| * tests/.gitignore: Add execve. |
| |
| Implement bpf syscall decoding. |
| * bpf.c: New file. |
| * Makefile.am (strace_SOURCES): Add it. |
| * configure.ac (AC_CHECK_HEADERS): Add linux/bpf.h. |
| * linux/dummy.h (sys_bpf): Remove. |
| * pathtrace.c (pathtrace_match): Add SEN_bpf. |
| * xlat/bpf_commands.in: New file. |
| * xlat/bpf_map_types.in: New file. |
| * xlat/bpf_map_update_elem_flags.in: New file. |
| * xlat/bpf_prog_types.in: New file. |
| * tests/bpf.c: New file. |
| * tests/bpf.test: New test. |
| * tests/Makefile.am (check_PROGRAMS): Add bpf. |
| (TESTS): Add bpf.test. |
| * tests/.gitignore: Add bpf. |
| |
| 2015-07-25 Dmitry V. Levin <ldv@altlinux.org> |
| |
| prctl: fix decoding of unrecognized commands. |
| The use of printargs introduced by commit v4.10-179-g210a6b6 is wrong: |
| when the first argument is already printed, printargs cannot be called. |
| |
| * prctl.c (print_prctl_args): New function. |
| (sys_prctl): Use it. |
| |
| 2015-07-23 Dmitry V. Levin <ldv@altlinux.org> |
| |
| Macroize -m32/-mx32 configure checks. |
| Prepare for additional configure checks that would be needed |
| for new multiple personalities support. |
| |
| * m4/mpers.m4: New file. |
| * configure.ac: Use it. |
| |
| 2015-07-22 Dmitry V. Levin <ldv@altlinux.org> |
| |
| tests/uid: import uid overflow check from tests/uid16. |
| * tests/uid.c (main): Skip if the uid returned by getuid matches |
| /proc/sys/kernel/overflowuid. |
| |
| 2015-07-21 Dmitry V. Levin <ldv@altlinux.org> |
| |
| sh64: fix inotify_{add,rm}_watch syscall entries. |
| * linux/sh64/syscallent.h (inotify_add_watch, inotify_rm_watch): |
| Set sys_func. |
| |
| microblaze: fix several syscall entries. |
| * linux/microblaze/syscallent.h (signalfd4, eventfd2, epoll_create1, |
| dup3, pipe2, inotify_init1, recvmmsg): Set sys_func. |
| |
| hppa: fix several syscall entries. |
| * linux/hppa/syscallent.h (remap_file_pages, mq_open, mq_unlink, |
| mq_timedsend, mq_timedreceive, mq_notify, mq_getsetattr, |
| clock_nanosleep, signalfd, timerfd): Set sys_func. |
| |
| ia64: fix getpagesize syscall entry. |
| * linux/ia64/syscallent.h (getpagesize): Fux nargs. |
| |
| avr32: fix fstatat64 syscall entry. |
| * linux/avr32/syscallent.h (fstatat64): Set sys_func. |
| |
| alpha: fix 2 dummy osf syscall entries. |
| * linux/alpha/syscallent.h (osf_set_program_attributes): Fix nargs. |
| (osf_sigstack): Fix nargs and sys_name. |
| |
| alpha, arm, ia64, mips, sh64: fix semop syscall entries. |
| * linux/alpha/syscallent.h (semop): Fix nargs, set sys_func. |
| * linux/ia64/syscallent.h (semop): Set sys_func. |
| * linux/mips/syscallent-n32.h (semop): Likewise. |
| * linux/mips/syscallent-n64.h (semop): Likewise. |
| * linux/arm/syscallent.h (semop): Fix nargs. |
| * linux/sh64/syscallent.h (semop): Likewise. |
| |
| m68k: fix getpagesize decoding. |
| * linux/m68k/syscallent.h (getpagesize): Set sys_func. |
| * mem.c [M68K] (sys_getpagesize): Define. |
| |
| tests/ip_mreq: skip if basic setsockopt operations fail. |
| * tests/ip_mreq.c (main): Return 77 if basic |
| IP_ADD_MEMBERSHIP/IP_DROP_MEMBERSHIP options cannot be set. |
| |
| 2015-07-21 Dmitry V. Levin <ldv@altlinux.org> |
| |
| tests: use -lpthread instead of -pthread. |
| On some obscure systems, -lpthread is more likely to work than -pthread. |
| |
| * tests/Makefile.am (filter_unavailable_LDFLAGS): Rename to |
| filter_unavailable_LDADD and change to -lpthread. |
| |
| 2015-07-21 Dmitry V. Levin <ldv@altlinux.org> |
| |
| mips o32: fix utimensat syscall entry. |
| * linux/mips/syscallent-o32.h (utimensat): set sys_flags and sys_func. |
| |
| 2015-07-21 Dmitry V. Levin <ldv@altlinux.org> |
| |
| linux/mips/syscallent-compat.h: use designated initializers. |
| Change linux/mips/syscallent-compat.h to use designated initializers |
| like normal syscallent.h files. |
| |
| * linux/mips/syscallent-compat.h: Use designated initializers. |
| |
| 2015-07-21 Dmitry V. Levin <ldv@altlinux.org> |
| |
| linux/mips/syscallent-compat.h: fix initalization of empty entries. |
| This complements commit 140ecf876686d49085c6eb3a2306e2ea6ea641bc. |
| |
| * linux/mips/syscallent-compat.h: Fix initalization of empty entries. |
| |
| 2015-07-20 Dmitry V. Levin <ldv@altlinux.org> |
| |
| Remove unused parsers of getmsg and putmsg. |
| * stream.c [SPARC || SPARC64] (sys_putmsg, sys_getmsg): Remove. |
| Stop including "xlat/msgflags.h". |
| * xlat/msgflags.in: Remove. |
| |
| sigreturn: make use of RVAL_DECODED. |
| * sigreturn.c (arch_sigreturn): New function. |
| (sys_sigreturn): Use it. Return RVAL_DECODED. |
| * linux/alpha/arch_sigreturn.c: Update. |
| * linux/crisv10/arch_sigreturn.c: Likewise. |
| * linux/m68k/arch_sigreturn.c: Likewise. |
| * linux/microblaze/arch_sigreturn.c: Likewise. |
| * linux/x86_64/arch_sigreturn.c: Likewise. |
| |
| or1k_atomic.c: make use of RVAL_DECODED. |
| * or1k_atomic.c (sys_or1k_atomic): Update for RVAL_DECODED. |
| |
| Update openat parser for the RVAL_DECODED change. |
| * open.c (sys_openat): Update for RVAL_DECODED. |
| |
| bjm.c: make use of RVAL_DECODED. |
| * bjm.c (sys_create_module, sys_delete_module, sys_init_module, |
| sys_finit_module): Update for RVAL_DECODED. |
| |
| access.c: make use of RVAL_DECODED. |
| * access.c (decode_access, sys_faccessat): Update for RVAL_DECODED. |
| |
| affinity.c: make use of RVAL_DECODED. |
| * affinity.c (sys_sched_setaffinity): Update for RVAL_DECODED. |
| |
| affinity.c: use printaddr and umove_or_printaddr. |
| * affinity.c (print_affinitylist): Use printaddr and umove_or_printaddr. |
| (sys_sched_getaffinity): Remove redundant u_rval check. |
| |
| aio.c: enhance io_* syscalls decoding. |
| * aio.c (sys_io_setup): Use printnum_int64 and printnum_long. |
| (sys_io_destroy, sys_io_submit): Update for RVAL_DECODED. |
| (sys_io_submit): Use umove_or_printaddr and printaddr. |
| Enclose iocb array in square brackets. |
| Change to traditional structure output format. |
| (print_io_event): New function. |
| (sys_io_cancel, sys_io_getevents): Use it. |
| (sys_io_cancel): Use umove_or_printaddr and printaddr. |
| (sys_io_getevents): Use printaddr. |
| |
| cacheflush.c: make use of RVAL_DECODED. |
| * cacheflush.c (sys_cacheflush): Update for RVAL_DECODED. |
| |
| cacheflush.c: use printaddr. |
| * cacheflush.c (sys_cacheflush): Use printaddr. |
| |
| capability.c: make use of RVAL_DECODED. |
| * capability.c (sys_capset): Update for RVAL_DECODED. |
| |
| capability.c: use printaddr and umove_or_printaddr. |
| * capability.c (get_cap_header): Use printaddr. |
| (print_cap_data): Use printaddr and umove_or_printaddr. |
| |
| chdir.c: make use of RVAL_DECODED. |
| * chdir.c (sys_chdir): Update for RVAL_DECODED. |
| |
| chmod.c: make use of RVAL_DECODED. |
| * chmod.c (decode_chmod): Change to return void. |
| (sys_chmod, sys_fchmodat): Update callers. Update for RVAL_DECODED. |
| (sys_fchmod): Update for RVAL_DECODED. |
| |
| clone.c: make use of RVAL_DECODED. |
| * clone.c (sys_setns, sys_unshare, sys_fork): Update for RVAL_DECODED. |
| |
| Alias sys_epoll_create to printargs_ld. |
| * desc.c (sys_epoll_create): Remove. |
| * linux/dummy.h (sys_epoll_create): Alias to printargs_ld. |
| |
| desc.c: make use of RVAL_DECODED. |
| * desc.c (sys_flock, sys_close, sys_dup, do_dup2, sys_epoll_create1, |
| sys_epoll_ctl, do_eventfd, sys_perf_event_open): Update |
| for RVAL_DECODED. |
| |
| desc.c: do not use xmalloc, use umove_or_printaddr and printaddr. |
| * desc.c (printflock64, printflock): Use umove_or_printaddr. |
| (decode_select): Do not use xmalloc. Use umoven_or_printaddr |
| and printaddr. |
| (sys_oldselect): Use printaddr. |
| (sys_epoll_ctl): Use umoven_or_printaddr and printaddr. |
| (print_epoll_event_array): New function. |
| (sys_epoll_wait_common): Use it. |
| (sys_pselect6): Use umove_or_printaddr. |
| (sys_eventfd2): Use printaddr. |
| |
| xlat/epollctls.in: add default values. |
| * xlat/epollctls.in (EPOLL_CTL_ADD, EPOLL_CTL_DEL, EPOLL_CTL_MOD): Add |
| default values. |
| |
| dirent.c: do not use xmalloc. |
| * dirent.c (print_old_dirent): Use umove_or_printaddr. |
| (sys_readdir): Use printaddr. |
| (sys_getdents, sys_getdents64): Do not use xmalloc for dirents, |
| treat malloc failure the same way as umoven failure. Use printaddr. |
| |
| execve.c: make use of RVAL_DECODED. |
| * execve.c (sys_execve, sys_execv): Update for RVAL_DECODED. |
| |
| execve.c: use printaddr and umove_or_printaddr. |
| * execve.c (printargv): Use umoven_or_printaddr. |
| (sys_execve, sys_execv): Use printaddr. |
| |
| fadvise.c: make use of RVAL_DECODED. |
| * fadvise.c (sys_fadvise64, sys_fadvise64_64): Update for RVAL_DECODED. |
| |
| fallocate.c: make use of RVAL_DECODED. |
| * fallocate.c (sys_fallocate): Update for RVAL_DECODED. |
| |
| fanotify.c: make use of RVAL_DECODED. |
| * fanotify.c (sys_fanotify_init, sys_fanotify_mark): Update |
| for RVAL_DECODED. |
| |
| fchownat.c: make use of RVAL_DECODED. |
| * fchownat.c (sys_fchownat): Update for RVAL_DECODED. |
| |
| file.c: use umove_or_printaddr. |
| * file.c (printstat32, printstatsol): Remove. |
| (printstat, printstat64, printoldstat): Use umove_or_printaddr. |
| |
| futex.c: enhance futex syscall decoding. |
| * futex.c (sys_futex): Use switch statement. Use printaddr. |
| Print uint32_t syscall arguments using %u format. |
| Update for RVAL_DECODED. |
| |
| get_robust_list.c: use printnum_long. |
| * get_robust_list.c (sys_get_robust_list): Use printnum_long. |
| |
| getcpu.c: use printnum_int and printaddr. |
| * getcpu.c (sys_getcpu): Use printnum_int and printaddr. |
| |
| getcwd.c: use printaddr. |
| * getcwd.c (sys_getcwd): Use printaddr. |
| |
| getrandom.c: use printaddr. |
| * getrandom.c (sys_getrandom): Use printaddr. |
| |
| hostname.c: make use of RVAL_DECODED. |
| * hostname.c (sys_sethostname): Update for RVAL_DECODED. |
| |
| hostname.c: use printaddr. |
| * hostname.c (sys_gethostname): Use printaddr. |
| |
| inotify.c: make use of RVAL_DECODED. |
| * inotify.c (sys_inotify_add_watch, sys_inotify_rm_watch, |
| sys_inotify_init1): Update for RVAL_DECODED. |
| |
| io.c: make use of RVAL_DECODED. |
| * io.c (sys_write, sys_writev, sys_pwrite, sys_pwritev, sys_sendfile, |
| sys_sendfile64, sys_tee, sys_splice, sys_vmsplice): Update |
| for RVAL_DECODED. |
| |
| Use printnum_int64 instead of print_loff_t. |
| * defs.h (print_loff_t): Remove. |
| * io.c (print_loff_t): Remove. |
| (sys_sendfile64, sys_splice): Use printnum_int64 instead of print_loff_t. |
| * mtd.c (mtd_ioctl): Likewise. |
| |
| io.c: use printaddr and umove_or_printaddr. |
| * io.c (sys_read, sys_pread): Use printaddr. |
| (tprint_iov_upto): Do not fetch data in case of syserror. |
| Use printaddr. |
| (sys_readv, sys_preadv): Remove redundant check for syserror. |
| (print_off_t): Use printnum_int and printnum_long. |
| (print_loff_t): Use umove_or_printaddr. |
| |
| ioprio.c: make use of RVAL_DECODED. |
| * ioprio.c (sys_ioprio_set): Update for RVAL_DECODED. |
| |
| ipc.c: use printaddr and umove_or_printaddr. |
| * ipc.c (sys_msgctl): Use printaddr. |
| (tprint_msgbuf): New function. |
| (tprint_msgsnd, tprint_msgrcv): Use it. |
| (sys_msgrcv): Use umove_or_printaddr. |
| (tprint_sembuf): Rename to tprint_sembuf_array. |
| (tprint_sembuf): New function. |
| (tprint_sembuf_array): Use it. |
| (sys_semop, sys_semtimedop): Update callers. |
| (sys_shmctl, sys_shmat, sys_shmdt): Use printaddr. |
| (sys_mq_open, printmqattr): Use printaddr and umove_or_printaddr. |
| * tests/ipc_msg.c (main): Update msgctl IPC_RMID regexp. |
| * tests/ipc_shm.c (main): Update shmctl IPC_RMID regexp. |
| |
| kexec.c: use printaddr and umove_or_printaddr. |
| * kexec.c (print_seg): New function. |
| (print_kexec_segments): Use it. Use printaddr and umove_or_printaddr. |
| (kexec_load): Use printaddr. Update for RVAL_DECODED. |
| |
| keyctl.c: make use of RVAL_DECODED. |
| * keyctl.c (sys_add_key, sys_request_key): Update for RVAL_DECODED. |
| (keyctl_join_session_keyring, keyctl_handle_key, |
| keyctl_set_reqkey_keyring): Remove. |
| (keyctl_get_keyring_id, keyctl_update_key, keyctl_handle_key_key, |
| keyctl_read_key, keyctl_keyring_search, keyctl_chown_key, |
| keyctl_instantiate_key, keyctl_instantiate_key_iov, keyctl_negate_key, |
| keyctl_reject_key, keyctl_set_timeout, keyctl_get_persistent, |
| keyctl_setperm_key): Change to return void. |
| Update for RVAL_DECODED. |
| (sys_keyctl): Update callers. Update for RVAL_DECODED. |
| |
| keyctl.c: use printaddr. |
| * keyctl.c (keyctl_read_key): Use printaddr. |
| |
| ldt.c: make use of RVAL_DECODED. |
| * ldt.c (sys_modify_ldt, sys_set_thread_area, sys_get_thread_area): |
| Update for RVAL_DECODED. |
| |
| ldt.c: use printaddr and umove_or_printaddr. |
| * ldt.c [I386 || X86_64 || X32] (print_user_desc): |
| Use umove_or_printaddr. |
| [I386 || X86_64 || X32] (sys_modify_ldt): Use printaddr. |
| [(M68K || MIPS] (set_thread_area): Likewise. |
| [I386 || X86_64 || X32] (set_thread_area): Do not fetch data |
| if !verbose. |
| [I386 || X86_64 || X32] (get_thread_area): Remove redundant check |
| for syserror. |
| |
| link.c: make use of RVAL_DECODED. |
| * link.c (sys_link, sys_linkat, sys_unlinkat, sys_symlinkat): Update |
| for RVAL_DECODED. |
| |
| lseek.c: make use of RVAL_DECODED. |
| * lseek.c (sys_lseek): Update for RVAL_DECODED. |
| |
| lseek.c: use printnum_int64. |
| * lseek.c (sys_llseek): Use printnum_int64. |
| |
| mem.c: make use of RVAL_DECODED. |
| * mem.c (print_mmap): Change to return void. |
| Update for RVAL_DECODED. |
| (sys_old_mmap, sys_old_mmap_pgoff, sys_mmap, sys_mmap_pgoff, |
| sys_mmap_4koff): Update callers. Update for RVAL_DECODED. |
| (sys_brk, sys_munmap, sys_mprotect, sys_mremap, sys_madvise, |
| sys_mlockall, sys_msync, sys_remap_file_pages, sys_mbind, |
| sys_set_mempolicy, sys_migrate_pages, [POWERPC] subpage_prot): |
| Update for RVAL_DECODED. |
| |
| mem.c: use printaddr and umove_or_printaddr. |
| * mem.c (sys_brk, print_mmap, sys_munmap, sys_mprotect, sys_mremap, |
| sys_madvise, sys_msync, sys_mincore, sys_remap_file_pages, get_nodes, |
| sys_mbind, [POWERPC] sys_subpage_prot): Use printaddr. |
| (sys_get_mempolicy): Use printaddr and umove_or_printaddr. |
| |
| mknod.c: make use of RVAL_DECODED. |
| * mknod.c (decode_mknod): Change to return void. |
| Update for RVAL_DECODED. |
| (sys_mknod, sys_mknodat): Update callers. Update for RVAL_DECODED. |
| [SPARC || SPARC64] (xmknod): Update for RVAL_DECODED. |
| |
| mount.c: make use of RVAL_DECODED. |
| * mount.c (sys_mount): Update for RVAL_DECODED. |
| |
| mount.c: use printaddr. |
| * mount.c (sys_mount): Use printaddr. |
| |
| Alias sys_connect to sys_bind. |
| * linux/dummy.h (sys_connect): Alias to sys_bind. |
| * net.c (sys_connect): Remove. |
| |
| net.c: make use of RVAL_DECODED. |
| * net.c (sys_socket, sys_bind, sys_listen, sys_send, sys_sendto, |
| sys_sendmsg, sys_shutdown, sys_setsockopt): Update for RVAL_DECODED. |
| |
| net.c: use printaddr and umove_or_printaddr. |
| * net.c (printsock): Use printaddr and umove_or_printaddr. |
| (printcmsghdr, printmsghdr, printmmsghdr, decode_mmsg, do_sockname, |
| sys_recv, sys_recvfrom, sys_recvmsg, do_pipe, print_linger, print_ucred, |
| print_tpacket_stats, print_icmp_filter, print_getsockopt, |
| print_group_req, print_tpacket_req, print_packet_mreq, |
| print_setsockopt): Use printaddr. |
| (print_mreq, print_mreq6): Use umove_or_printaddr. |
| |
| 2015-07-18 Elvira Khabirova <lineprinter0@gmail.com> |
| |
| tests: add sigaltstack.test. |
| * tests/sigaltstack.c: New file. |
| * tests/sigaltstack.expected: Likewise. |
| * tests/sigaltstack.test: New test. |
| * tests/Makefile.am (check_PROGRAMS): Add sigaltstack. |
| (TESTS): Add sigaltstack.test. |
| (EXTRA_DIST): sigaltstack.expected. |
| * tests/.gitignore: Add sigaltstack. |
| |
| bootstrap: delete personality test directories beforehand. |
| * bootstrap: Delete tests-m32 and tests-mx32 directories |
| before creating them. |
| |
| 2015-07-18 Dmitry V. Levin <ldv@altlinux.org> |
| |
| defs.h: do not include <signal.h> |
| * printsiginfo.h: New file. |
| * Makefile.am (strace_SOURCES): Add it. |
| * defs.h: Do not include <signal.h>. |
| (printsiginfo): Remove. |
| * printsiginfo.c: Include <signal.h> and "printsiginfo.h". |
| * strace.c: Likewise. |
| * sigaltstack.c: Include <signal.h>. |
| * signal.c: Likewise. |
| * sigreturn.c: Likewise. |
| * time.c: Likewise. |
| |
| resource.c: move printrusage and printrusage32 to a separate file. |
| * printrusage.c: New file. |
| * Makefile.am (strace_SOURCES): Add it. |
| * resource.c (printrusage, [ALPHA] printrusage32): Move |
| to printrusage.c. |
| |
| open.c: make use of RVAL_DECODED. |
| * open.c (decode_open, sys_creat): Update for RVAL_DECODED. |
| |
| personality.c: make use of RVAL_DECODED. |
| * personality.c (sys_personality): Update for RVAL_DECODED. |
| |
| printsiginfo.c: use umove_or_printaddr. |
| * printsiginfo.c (printsiginfo_at): Use umove_or_printaddr. |
| |
| prctl.c: make use of RVAL_DECODED. |
| * prctl.c (prctl_enter, prctl_exit): Merge into sys_prctl. |
| (sys_prctl, sys_arch_prctl): Update for RVAL_DECODED. |
| |
| prctl.c: use printaddr and umove_or_printaddr. |
| * prctl.c (prctl_exit): Use printaddr and umove_or_printaddr. |
| |
| process.c: use printaddr. |
| * process.c (sys_ptrace): Use printaddr. |
| |
| process_vm.c: make use of RVAL_DECODED. |
| * process_vm.c (sys_process_vm_writev): Update for RVAL_DECODED. |
| |
| process_vm.c: use printaddr. |
| * process_vm.c (sys_process_vm_readv): Use printaddr. |
| |
| reboot.c: make use of RVAL_DECODED. |
| * reboot.c (sys_reboot): Update for RVAL_DECODED. |
| |
| Enhance quotactl decoding. |
| * quota.c (decode_cmd_data): Use umove_or_printaddr. |
| (sys_quotactl): Do not disable the parser in verbose mode. |
| Decode all "set" commands on entering syscall. |
| |
| readahead.c: make use of RVAL_DECODED. |
| * readahead.c (sys_readahead.c): Update for RVAL_DECODED. |
| |
| readlink.c: use printaddr. |
| * readlink.c (decode_readlink): Use printaddr. |
| |
| renameat.c: make use of RVAL_DECODED. |
| * renameat.c (sys_renameat, sys_renameat2): Update for RVAL_DECODED. |
| |
| resource.c: make use of RVAL_DECODED. |
| * resource.c (sys_setrlimit, sys_getpriority, sys_setpriority): |
| Update for RVAL_DECODED. |
| |
| resource.c: use umove_or_printaddr. |
| * resource.c (print_rlimit64, print_rlimit32, printrusage32, |
| printrusage, sys_times): Use umove_or_printaddr. |
| (decode_rlimit64): Remove. |
| (decode_rlimit): Remove redundant checks. |
| [defined(current_wordsize) && current_wordsize != 4] (decode_rlimit): |
| Define to print_rlimit64. |
| (sys_prlimit64): Replace decode_rlimit64 with print_rlimit64. |
| |
| sched.c: make use of RVAL_DECODED. |
| * sched.c (sys_sched_setscheduler, sys_sched_setparam, |
| sys_sched_get_priority_min): Update for RVAL_DECODED. |
| |
| sched.c: use printnum_int and printaddr. |
| * sched.c (sys_sched_setscheduler, sys_sched_getparam, |
| sys_sched_setparam): Use printnum_int for sched_param decoding. |
| (sched_rr_get_interval): Use printaddr. |
| |
| scsi.c: use printaddr. |
| * scsi.c (print_sg_io_buffer): Use printaddr. |
| |
| 2015-07-17 Dmitry V. Levin <ldv@altlinux.org> |
| |
| seccomp.c: make use of RVAL_DECODED. |
| * seccomp.c (sys_seccomp): Update for RVAL_DECODED. |
| |
| seccomp.c: use printaddr and umove_or_printaddr. |
| * seccomp.c (decode_fprog, decode_seccomp_set_mode_strict): |
| Use printaddr. |
| (print_seccomp_filter): Use umove_or_printaddr. |
| |
| sigaltstack.c: use printaddr and umove_or_printaddr. |
| * sigaltstack.c (print_stack_t): Use umove_or_printaddr and printaddr. |
| |
| signal.c: make use of RVAL_DECODED. |
| * signal.c (sys_sigsuspend, sys_kill, sys_tgkill, sys_rt_sigsuspend, |
| sys_rt_sigqueueinfo, sys_rt_tgsigqueueinfo, sys_restart_syscall, |
| do_signalfd): Update for RVAL_DECODED. |
| |
| signal.c: use printaddr and umove_or_printaddr. |
| * signal.c (print_sigset_addr_len, decode_old_sigaction): |
| Use printaddr and umove_or_printaddr. |
| (sys_signal): Use printaddr. |
| (sys_sigprocmask, sys_sigpending, sys_rt_sigprocmask, |
| sys_rt_sigpending): Remove redundant checks for syserror. |
| (decode_new_sigaction): Use umove_or_printaddr. |
| |
| 2015-07-16 Dmitry V. Levin <ldv@altlinux.org> |
| |
| sram_alloc.c: make use of RVAL_DECODED. |
| * sram_alloc.c [BFIN] (sys_sram_alloc): Update for RVAL_DECODED. |
| |
| statfs.c: use umove_or_printaddr. |
| * statfs.c (printstatfs, printstatfs64, printcompat_statfs64): |
| Use umove_or_printaddr. |
| |
| swapon.c: make use of RVAL_DECODED. |
| * swapon.c (sys_swapon): Update for RVAL_DECODED. |
| |
| swapon.c: move fallback definitions of swap options to xlat/ |
| * swapon.c: Move definitions of SWAP_FLAG_* flags ... |
| * xlat/swap_flags.in: ... here. |
| |
| sync_file_range2: fix typo in flags decoding. |
| * sync_file_range.c (sys_sync_file_range2): Fix typo in flags decoding. |
| |
| sync_file_range.c: make use of RVAL_DECODED. |
| * sync_file_range.c (sys_sync_file_range, sys_sync_file_range2): Update |
| for RVAL_DECODED. |
| |
| syslog.c: use umove_or_printaddr and RVAL_DECODED. |
| * sysctl.c (sys_sysctl): Use umove_or_printaddr and RVAL_DECODED. |
| |
| sysinfo.c: use umove_or_printaddr. |
| * sysinfo.c (sys_sysinfo): Use umove_or_printaddr. |
| |
| syslog.c: make use of RVAL_DECODED. |
| * syslog.c (sys_syslog): Update for RVAL_DECODED. |
| |
| syslog.c: use printaddr. |
| * syslog.c (sys_syslog): Use printaddr. |
| |
| sysmips.c: cleanup. |
| * sysmips.c [MIPS] (sys_sysmips): Use switch statement. Use printaddr. |
| Fix misprinted ", " delimiter. |
| |
| sysmips.c: make use of RVAL_DECODED. |
| * sysmips.c [MIPS] (sys_sysmips): Update for RVAL_DECODED. |
| |
| time.c: make use of RVAL_DECODED. |
| * time.c (sys_settimeofday, sys_osf_settimeofday, sys_clock_settime, |
| sys_timerfd, sys_timerfd_create, sys_timerfd_settime): Update |
| for RVAL_DECODED. |
| (timerfd_gettime): Decode struct itimerspec argument on exiting syscall. |
| |
| time.c: use printaddr, printnum_int, and umoven_or_printaddr. |
| * time.c (sys_nanosleep): Use printaddr. |
| (printitv_bitness, tprint_timex32, tprint_timex, printsigevent32, |
| printsigevent): Use umoven_or_printaddr. |
| (sys_timer_create): Use printnum_int. |
| (sys_getitimer, sys_osf_getitimer, sys_setitimer, sys_osf_setitimer, |
| do_adjtimex, sys_timer_settime, sys_timer_gettime): Remove |
| redundant checks for syserror. |
| |
| sprinttv: do not fetch data in case of syserror. |
| * time.c (sprinttv): Do not fetch data in case syserror. |
| Print address instead of {...} in case of umove failure. |
| (sys_gettimeofday, sys_osf_gettimeofday, sys_adjtime, sys_clock_gettime, |
| clock_nanosleep): Remove now redundant checks for syserror. |
| |
| truncate.c: make use of RVAL_DECODED. |
| * truncate.c (sys_truncate, sys_truncate64, sys_ftruncate, |
| sys_ftruncate64): Update for RVAL_DECODED. |
| |
| umask.c: make use of RVAL_DECODED. |
| * umask.c (sys_umask): Update for RVAL_DECODED. |
| |
| umount.c: make use of RVAL_DECODED. |
| * umount.c (sys_umount2): Update for RVAL_DECODED. |
| |
| utimes.c: make use of RVAL_DECODED. |
| * utimes.c (decode_utimes): Change to return void. |
| Update for RVAL_DECODED. |
| (sys_utimes, sys_futimesat, sys_utimensat, sys_osf_utimes): |
| Update callers. Update for RVAL_DECODED. |
| |
| 2015-07-16 Dmitry V. Levin <ldv@altlinux.org> |
| |
| tests/uid.test: adopt for alpha. |
| Make the test work on alpha that has getxuid syscall instead of getuid. |
| |
| * tests/uid.awk (BEGIN): Update getuid regexp to match both getuid |
| and getxuid syscalls. |
| * tests/uid.c (main): Allow __NR_getxuid as an alternative |
| to __NR_getuid. |
| * tests/uid.test: If getuid syscall is not available, probe for |
| getxuid syscall. |
| |
| 2015-07-16 Dmitry V. Levin <ldv@altlinux.org> |
| |
| uid.c: make use of RVAL_DECODED. |
| * uid.c (sys_setuid, sys_setreuid, sys_setresuid, sys_chown, sys_fchown, |
| sys_setgroups): Update for RVAL_DECODED. |
| |
| uid.c: use printaddr and umoven_or_printaddr. |
| * uid.c (get_print_uid): Use umoven_or_printaddr. |
| (sys_getresuid): Do not check for syserror, get_print_uid now does |
| the right thing. |
| (sys_setgroups, sys_getgroups): Add const qualifier to local variables |
| that are assigned once. Use printaddr. |
| |
| ia64: wire up utimensat syscall. |
| * linux/ia64/syscallent.h (utimensat): New entry. |
| |
| decode_utimes: enclose timespec array in square brackets. |
| * utimes.c (decode_utimes): enclose timespec array in square brackets |
| instead of curly brackets. |
| |
| uname.c: use umove_or_printaddr. |
| * uname.c (sys_uname): Use umove_or_printaddr. |
| |
| tests: add utime.test. |
| * tests/utime.c: New file. |
| * tests/utime.test: New test. |
| * tests/Makefile.am (check_PROGRAMS): Add utime. |
| (TESTS): Add utime.test. |
| * tests/.gitignore: Add utime. |
| |
| utime.c: make use of RVAL_DECODED. |
| * utime.c (sys_utime): Update for RVAL_DECODED. |
| |
| utime.c: use umoven_or_printaddr. |
| * utime.c (sys_utime): Use umoven_or_printaddr. |
| |
| 2015-07-15 Dmitry V. Levin <ldv@altlinux.org> |
| |
| wait.c: use printaddr and umove_or_printaddr. |
| * wait.c (waitid): Do not check for NULL the address passed |
| to printrusage. |
| (printwaitn): Likewise. |
| Use printaddr and umove_or_printaddr for fetching wait status. |
| |
| wait: move fallback definitions of wait options to xlat/ |
| * wait.c: Move definitions of __W* flags ... |
| * xlat/wait4_options.in: ... here. |
| |
| tests: add xattr.test. |
| * tests/xattr.c: New file. |
| * tests/xattr.expected: Likewise. |
| * tests/xattr.test: New test. |
| * tests/Makefile.am (check_PROGRAMS): Add xattr. |
| (TESTS): Add xattr.test. |
| (EXTRA_DIST): Add xattr.expected. |
| * tests/.gitignore: Add xattr. |
| |
| 2015-07-14 Dmitry V. Levin <ldv@altlinux.org> |
| |
| xattr.c: make use of RVAL_DECODED. |
| * xattr.c (sys_setxattr, sys_fsetxattr, sys_removexattr, |
| sys_fremovexattr): Update for RVAL_DECODED. |
| |
| print_xattr_val: do not fetch data in case of !verbose || syserror. |
| * xattr.c (print_xattr_val): Do not fetch data in case |
| of !verbose || syserror. Use printaddr. |
| |
| print_xattr_list: use printaddr. |
| * xattr.c (print_xattr_list): Use printaddr. |
| |
| print_xattr_val: remove unused argument. |
| * xattr.c (print_xattr_val): Remove unused "failed" argument. |
| (sys_setxattr, sys_fsetxattr, sys_getxattr, sys_fgetxattr): Update |
| all callers. |
| |
| print_xattr_list: remove redundant address check. |
| * xattr.c (print_xattr_list): Do not check for NULL the address passed |
| to printstr. |
| |
| ipc.c: make use of RVAL_DECODED. |
| * ipc.c (sys_mq_notify, sys_mq_open, sys_mq_timedreceive, |
| sys_mq_timedsend, sys_msgctl, sys_msgget, sys_msgsnd, sys_semctl, |
| sys_semget, sys_semop, sys_semtimedop, sys_shmctl, sys_shmdt, |
| sys_shmget): Update for RVAL_DECODED. |
| (sys_shmat): Decode all arguments on entering syscall. |
| |
| 2015-07-14 Dmitry V. Levin <ldv@altlinux.org> |
| |
| umoven_or_printaddr: do not fetch data if not in verbose mode. |
| After this change, umoven_or_printaddr and its callers, including |
| printnum_* and printpair_*, will not fetch data in !verbose mode. |
| |
| * util.c (umoven_or_printaddr): Do not call umoven if !verbose. |
| |
| 2015-07-14 Dmitry V. Levin <ldv@altlinux.org> |
| |
| Change printnum_* printers to honor syserror. |
| With this change, printnum_* printers will not attempt to fetch data |
| in case of exiting(tcp) && syserror(tcp). |
| All "at exiting" decoders that call these printers have been made |
| ready for this change in previous commits. |
| |
| * util.c (DEF_PRINTNUM, DEF_PRINTPAIR): Use umove_or_printaddr. |
| * prctl.c (prctl_exit): Use printnum_int and printnum_long. |
| (sys_arch_prctl): Do not check for syserror. |
| |
| 2015-07-13 Dmitry V. Levin <ldv@altlinux.org> |
| |
| term.c: enhance tty ioctl parser. |
| Decode as much data on entering syscall as possible. |
| |
| * term.c (decode_termios, decode_termio, decode_winsize, decode_ttysize, |
| decode_modem_flags): New functions. |
| (term_ioctl): Use them. Update for RVAL_DECODED. |
| |
| 2015-07-12 Elvira Khabirova <lineprinter0@gmail.com> |
| |
| Change comparisons with function pointers to comparisons with SENs. |
| * pathtrace.c (pathtrace_match): Change all comparisons with function |
| pointers to a single SEN based switch. |
| * syscall.c (dumpio, trace_syscall_entering): Change all comparisons |
| with function pointers to comparisons with SENs. |
| * ipc.c (sys_ipc): Remove. |
| * sock.c (sys_socketcall): Likewise. |
| * linux/dummy.h (sys_ipc, sys_socketcall): New aliases. |
| |
| Add unique syscall entry numbers (SENs) |
| * Makefile.am (BUILT_SOURCES, CLEANFILES): Add sen.h. |
| (syscallent_names, syscallent_patterns, syscallent_files): New variables. |
| (sen.h): New rule. |
| * defs.h (struct sysent): Add sen field. |
| * generate_sen.sh: New file. |
| * linux/syscall.h: Include "sen.h". |
| * syscall.c (SEN_NAME): New temporary macro. |
| (SEN): Use it to prepend syscall entry number. |
| |
| Introduce SEN macro. |
| * syscall.c (SEN): New temporary macro. |
| * linux/dummy.h (sys_printargs): New macro. |
| * linux/subcall.h: Wrap all sys_func entries using SEN. |
| * linux/*/syscallent*.h: Likewise. |
| |
| 2015-07-10 Dmitry V. Levin <ldv@altlinux.org> |
| |
| scsi.c: enhance SG_IO ioctl parser. |
| Fix SG_IO ioctl output in case of failed umove |
| |
| * scsi.c: Include <linux/ioctl.h> instead of <sys/ioctl.h>. |
| Update for RVAL_DECODED. |
| (print_sg_io_v3_req, print_sg_io_v3_res, print_sg_io_v4_req, |
| print_sg_io_v4_res): Do not print address in case of failed umove. |
| (scsi_ioctl): Use printaddr. |
| |
| 2015-07-10 Dmitry V. Levin <ldv@altlinux.org> |
| |
| ptp.c: enhance ptp ioctl parser. |
| * ptp.c: Include <linux/ioctl.h> instead of <sys/ioctl.h>. |
| Update for RVAL_DECODED. |
| (ptp_ioctl): Use umove_or_printaddr. |
| |
| 2015-07-10 Dmitry V. Levin <ldv@altlinux.org> |
| |
| mtd.c: enhance mtd and ubi ioctl parsers. |
| Decode as much data on entering syscall as possible. |
| |
| * xlat/mtd_file_mode_options.in: New file. |
| * mtd.c: Include <linux/ioctl.h> instead of <sys/ioctl.h>. |
| Include "xlat/mtd_file_mode_options.h". |
| Update for RVAL_DECODED. |
| (mtd_ioctl, ubi_ioctl): Use printnum_int and umove_or_printaddr. |
| |
| 2015-07-10 Dmitry V. Levin <ldv@altlinux.org> |
| |
| sock.c: enhance socket ioctl parser. |
| Decode as much data on entering syscall as possible. |
| |
| * sock.c: Update for RVAL_DECODED. |
| (print_addr): Remove. |
| (print_ifreq_addr, print_ifreq, print_ifc_len, decode_ifconf): New |
| functions. |
| (sock_ioctl) Use them. Use umove_or_printaddr. |
| |
| 2015-07-10 Dmitry V. Levin <ldv@altlinux.org> |
| |
| block.c: enhance block ioctl parser. |
| * block.c: Update for RVAL_DECODED. |
| Define BLKROTATIONAL and BLKZEROOUT. |
| (block_ioctl): Decode them. Use printnum_short, printnum_int, |
| printnum_long, printpair_int64, and umove_or_printaddr. |
| (print_blkpg_req, block_ioctl): Use umove_or_printaddr. |
| |
| 2015-07-09 Dmitry V. Levin <ldv@altlinux.org> |
| |
| blkpg_ops: add BLKPG_RESIZE_PARTITION constant. |
| * xlat/blkpg_ops.in: Add BLKPG_RESIZE_PARTITION. |
| |
| Reported-by: Christian Neukirchen <chneukirchen@gmail.com> |
| |
| 2015-07-09 Dmitry V. Levin <ldv@altlinux.org> |
| |
| loop.c: enhance loop ioctl parser. |
| Decode as much data on entering syscall as possible. |
| |
| * loop.c: Include <linux/ioctl.h> instead of <sys/ioctl.h>. |
| Update for RVAL_DECODED. |
| (decode_loop_info, decode_loop_info64): New functions. |
| (loop_ioctl): Use them. Decode LOOP_SET_STATUS, LOOP_SET_STATUS64, |
| LOOP_SET_FD, LOOP_CHANGE_FD, LOOP_CTL_ADD and LOOP_CTL_REMOVE on |
| entering syscall. |
| Print LOOP_SET_FD and LOOP_CHANGE_FD arguments using printfd. |
| |
| 2015-07-09 Dmitry V. Levin <ldv@altlinux.org> |
| |
| rtc.c: enhance rtc ioctl parser. |
| * rtc.c: Update for RVAL_DECODED. |
| (print_rtc): Rename to print_rtc_time. |
| (decode_rtc_time, decode_rtc_wkalrm): New functions. |
| (rtc_ioctl): Use them. |
| [RTC_VL_READ]: Decode RTC_VL_READ. |
| Use printnum_long for RTC_IRQP_READ and RTC_EPOCH_READ decoding. |
| |
| Use printpair_int. |
| * evdev.c (repeat_ioctl): Use printpair_int. |
| * net.c (do_pipe, sys_socketpair): Likewise. |
| |
| 2015-07-09 Dmitry V. Levin <ldv@altlinux.org> |
| |
| Add several generic integer pairs printing functions. |
| Add functions to fetch and print pairs of integer types. |
| Note that these printers do not attempt to fetch data |
| in case of exiting(tcp) && syserror(tcp). |
| |
| printnum_* printers will follow as soon as all callers are made ready |
| for this change. |
| |
| * defs.h (printpair_int, printpair_long, printpair_int64): New |
| prototypes. |
| * util.c (DEF_PRINTPAIR): New macro. |
| (printpair_int, printpair_long, printpair_int64): New functions. |
| |
| 2015-07-09 Dmitry V. Levin <ldv@altlinux.org> |
| |
| Add two generic integer printing functions. |
| Add printnum_short and printnum_int64 in addition to already existing |
| printnum_int and printnum_long. |
| |
| * defs.h (printnum_short, printnum_int64): New prototypes. |
| * util.c (DEF_PRINTNUM): New macro. |
| (printnum_int, printnum_long): Use DEF_PRINTNUM. |
| (printnum_short, printnum_int64): New functions. |
| |
| 2015-07-09 Dmitry V. Levin <ldv@altlinux.org> |
| |
| Add address printing functions. |
| printaddr is a simple function implementing "print NULL or address" |
| idiom. |
| umoven_or_printaddr is a wrapper around umoven that has the same return |
| value semantics as umoven but also prints the address when the data |
| is not going to be fetched (in case of exiting(tcp) && syserror(tcp)) |
| or cannot be fetched (umoven fails). |
| umove_or_printaddr is a macro wrapper around umoven_or_printaddr that |
| mirrors umove wrapper around umoven. |
| |
| * defs.h (printaddr, umoven_or_printaddr): New prototypes. |
| (umove_or_printaddr): New macro. |
| * util.c (printaddr, umoven_or_printaddr): New functions. |
| |
| 2015-07-09 Dmitry V. Levin <ldv@altlinux.org> |
| |
| Implement RVAL_DECODED flag. |
| Implement a method for "on entering" parsers to return |
| "done with decoding" information to their callers. |
| |
| If a syscall parser called from trace_syscall_entering returns a value |
| with RVAL_DECODED bit set, record this value in tcp->sys_func_rval |
| and use it in trace_syscall_exiting instead of calling the parser on |
| exiting syscall. |
| |
| If an ioctl parser returned RVAL_DECODED, this would tell |
| SYS_FUNC(ioctl) that the decoding is finished but fallback printing of |
| the ioctl command argument is needed, while e.g. RVAL_DONE+1 would mean |
| that the decoding is finished and no fallback decoding is needed. |
| |
| * defs.h (struct tcb): Add sys_func_rval. |
| (RVAL_DECODED): New macro. |
| * syscall.c (trace_syscall_entering): Initialize tcp->sys_func_rval |
| along with setting TCB_INSYSCALL flag. |
| (trace_syscall_exiting): Use tcp->sys_func_rval instead of calling |
| tcp->s_ent->sys_func when the former has RVAL_DECODED flag set. |
| Reset tcp->sys_func_rval along with clearing TCB_INSYSCALL flag. |
| * ioctl.c (sys_ioctl): Set RVAL_DECODED flag on exiting. |
| Print ioctl argument iff RVAL_DECODED is set and fallback decoding |
| is requested. |
| |
| 2015-07-05 Dmitry V. Levin <ldv@altlinux.org> |
| |
| time.c: move rtc ioctl parser to a separate file. |
| * rtc.c: new file |
| * Makefile.am (strace_SOURCES): Add it. |
| * time.c (print_rtc, rtc_ioctl): Move to rtc.c. |
| |
| term.c: fix typo. |
| * term.c: Rename TCLFLSH to TCFLSH. |
| |
| Do not include sys/filio.h. |
| * configure.ac (AC_CHECK_HEADERS): Remove sys/filio.h. |
| * term.c: Do not include <sys/filio.h>. |
| |
| 2015-07-02 Dmitry V. Levin <ldv@altlinux.org> |
| |
| ioctl: prepare ioctl_decode_command_number for future changes. |
| * ioctl.c (ioctl_decode_command_number): Change 1st arg to struct tcb*. |
| (sys_ioctl): Update callers. |
| |
| ioctl: simplify ioctl_decode signature. |
| * ioctl.c (ioctl_decode): Remove 2nd and 3rd parameters. |
| (sys_ioctl): Update callers. |
| |
| ioctl: consistently use name "code" for ioctl request code. |
| * ioctl.c (evdev_decode_number, hiddev_decode_number, |
| ioctl_decode_command_number): Rename "arg" to "code". |
| |
| Move ioctl syscall parser to ioctl.c. |
| * io.c (sys_ioctl): Move ... |
| * ioctl.c: ... here. |
| (ioctl_lookup, ioctl_next_match, ioctl_print_code, ioctl_decode, |
| ioctl_decode_command_number): Declare as static. |
| * defs.h (ioctl_lookup, ioctl_next_match, ioctl_print_code, |
| ioctl_decode, ioctl_decode_command_number): Remove. |
| |
| ioctl: remove obsolete registry of ioctl characters. |
| * ioctl.c: Remove registry of ioctl characters. |
| |
| 2015-06-30 Dmitry V. Levin <ldv@altlinux.org> |
| |
| Fix filtering of <unavailable> syscalls. |
| * syscall.c (trace_syscall_exiting): Skip filtered syscalls also in case |
| of get_regs or get_syscall_result failure. |
| * tests/filter-unavailable.c: New file. |
| * tests/filter-unavailable.expected: Likewise. |
| * tests/filter-unavailable.test: New test. |
| * tests/Makefile.am (check_PROGRAMS): Add filter-unavailable. |
| (filter_unavailable_LDFLAGS): Add -pthread. |
| (TESTS): Add filter-unavailable.test. |
| (EXTRA_DIST): Add filter-unavailable.expected. |
| * tests/.gitignore: Add filter-unavailable. |
| |
| Reported-by: Bryan Matsuo <bryan.matsuo@gmail.com> |
| |
| 2015-06-30 Dmitry V. Levin <ldv@altlinux.org> |
| |
| Fix -qq option in conjunction with -o option. |
| This change makes -qq option work in conjunction with -o option, |
| thus complementing commit v4.7-222-g01997cf. |
| |
| * strace.c (init): Do not reset qflag. |
| |
| 2015-06-30 Dmitry V. Levin <ldv@altlinux.org> |
| |
| xtensa: wire up new syscalls. |
| * linux/xtensa/syscallent.h (bpf, execveat): New entries. |
| |
| bfin: wire up new syscalls. |
| * linux/bfin/syscallent.h (kcmp, finit_module, sched_setattr, |
| sched_getattr, renameat2, seccomp, getrandom, memfd_create, |
| bpf, execveat): New entries. |
| |
| alpha: wire up new syscalls. |
| * linux/alpha/syscallent.h (getrandom, memfd_create, execveat): |
| New entries. |
| |
| 2015-06-17 Dmitry V. Levin <ldv@altlinux.org> |
| |
| tests: skip stat32 test if struct stat is defined incorrectly. |
| If stat.st_mode returned by syscall is 0, it means that the definition |
| of struct stat in <asm/stat.h> is incorrect. This is the case e.g. on |
| mips n32 where the only available stat syscall is 64-bit but at the same |
| time struct stat defined by <asm/stat.h> is 32-bit. |
| |
| * tests/stat.c (main) [NR_stat]: Return 77 if st_mode is 0. |
| |
| 2015-06-17 Dmitry V. Levin <ldv@altlinux.org> |
| |
| Consistenly use #ifdef to check for AC_DEFINE'd macros. |
| * aio.c (print_common_flags): Use #ifdef in the check for |
| HAVE_STRUCT_IOCB_U_C_FLAGS. |
| * defs.h: Use #ifdef in the check for HAVE_LITTLE_ENDIAN_LONG_LONG. |
| * net.c: Use #ifdef in the check for HAVE_SENDMSG. |
| * syscall.c (dumpio): Likewise. |
| * printstat.h (DO_PRINTSTAT): Use #ifdef in checks for |
| HAVE_STRUCT_STAT_ST_* macros. |
| * util.c: Use #ifdef in checks for HAVE_SYS_XATTR_H. |
| |
| xattr: move fallback definitions of xattr flags to xlat/ |
| * xattr.c: Include <sys/xattr.h> insread of <linux/xattr.h>. |
| Move definitions of XATTR_* flags ... |
| * xlat/xattrflags.in: ... here. |
| |
| link: move fallback definitions of AT_* constants to xlat/ |
| * link.c: Move definitions of AT_* constants ... |
| * xlat/at_flags.in: ... here. |
| |
| net: move fallback definitions of SOL_* constants to xlat/ |
| * net.c: Move definitions of SOL_* constants ... |
| * xlat/socketlayers.in: ... here. |
| |
| futex: move fallback definitions of futex constants to xlat/ |
| * futex.c: Move definitions of FUTEX_OP_CMP_* constants ... |
| * xlat/futexwakecmps.in: ... here. |
| * futex.c: Move definitions of other FUTEX_OP_* constants ... |
| * xlat/futexwakeops.in: ... here. |
| * futex.c: Move definitions of remaining FUTEX_* constants except |
| FUTEX_PRIVATE_FLAG and FUTEX_CLOCK_REALTIME flags ... |
| * xlat/futexops.in: ... here. |
| |
| clone: move definitions of cloning flags to xlat/ |
| * clone.c: Include <sched.h>. Move definitions of CLONE_* flags ... |
| * xlat/clone_flags.in: ... here. |
| |
| 2015-06-16 Dmitry V. Levin <ldv@altlinux.org> |
| |
| Update mount flags constants. |
| * mount.c: Remove definitions of mount flags constants. |
| * xlat/mount_flags.in: Update from linux v4.0, add default values. |
| |
| mount: update parser to match kernel behaviour. |
| * mount.c (sys_mount): Do not decode type and data strings for |
| MS_SHARED, MS_PRIVATE, MS_SLAVE, and MS_UNBINDABLE mount flags |
| that do not imply valid strings. |
| |
| mount: robustify MS_MGC_VAL decoding. |
| * mount.c (sys_mount): When printing mount flags, do not assume that |
| (flags & MS_MGC_MSK) == MS_MGC_VAL. |
| |
| 2015-06-08 Dmitry V. Levin <ldv@altlinux.org> |
| |
| net: decode setsockopt() multicast arguments. |
| * configure.ac (AC_CHECK_FUNCS): Add inet_pton. |
| * net.c (print_mreq, print_mreq6): New functions. |
| (print_setsockopt): Use them to decode IP_ADD_MEMBERSHIP, |
| IP_DROP_MEMBERSHIP, IPV6_ADD_MEMBERSHIP, IPV6_DROP_MEMBERSHIP, |
| IPV6_JOIN_ANYCAST, and IPV6_LEAVE_ANYCAST. |
| * tests/ip_mreq.c: New file. |
| * tests/ip_mreq.expected: Likewise. |
| * tests/ip_mreq.test: New test. |
| * tests/Makefile.am (check_PROGRAMS): Add ip_mreq. |
| (TESTS): Add ip_mreq.test. |
| (EXTRA_DIST): ip_mreq.expected. |
| * tests/.gitignore: Add ip_mreq. |
| |
| Based on patch by Ben Noordhuis <info@bnoordhuis.nl>. |
| |
| 2015-06-08 Dmitry V. Levin <ldv@altlinux.org> |
| |
| Update IPV6 socket options constants. |
| * xlat/sockipv6options.in: Update from linux v4.0. |
| |
| 2015-06-05 Dmitry V. Levin <ldv@altlinux.org> |
| |
| net: factor out interface index printing code. |
| * net.c (print_ifindex): New function. |
| (printsock) [HAVE_STRUCT_SOCKADDR_IN6_SIN6_SCOPE_ID]: Use it. |
| |
| 2015-05-25 Dmitry V. Levin <ldv@altlinux.org> |
| |
| Consistently use error_msg instead of fprintf(stderr) |
| * linux/alpha/get_scno.c: Use error_msg. |
| * linux/arm/get_scno.c: Likewise. |
| * linux/mips/get_scno.c: Likewise. |
| * linux/sh/get_scno.c: Likewise. |
| * linux/x86_64/get_scno.c: Likewise. |
| * exit.c (sys_exit): Likewise. |
| * pathtrace.c (pathtrace_select, pathtrace_match): Likewise. |
| * strace.c (alloctcb, droptcb, detach, startup_attach, |
| test_ptrace_seize, init, cleanup, print_debug_info, |
| maybe_allocate_tcb, startup_tcb, trace): Likewise. |
| * syscall.c (update_personality, trace_syscall_exiting, |
| get_scno): Likewise. |
| * unwind.c (DPRINTF): Likewise. |
| * tests/bexecve.test: Update patterns. |
| * tests/detach-stopped.test: Likewise. |
| |
| Consistently print OOM diagnostic messages. |
| * bjm.c (sys_query_module): Use error_msg to print OOM diagnostics. |
| * util.c (dumpiov, dumpstr): Likewise. |
| |
| 2015-05-25 Dmitry V. Levin <ldv@altlinux.org> |
| |
| Introduce memory allocation wrappers. |
| Introduce wrappers to the following functions that do memory allocation: |
| malloc, calloc, realloc, strdup. |
| |
| This commit is a follow-up to the related discussions in strace-devel ML: |
| http://sourceforge.net/p/strace/mailman/message/33618180/ |
| http://sourceforge.net/p/strace/mailman/message/33733470/ |
| |
| * defs.h (xmalloc, xcalloc, xreallocarray, xstrdup): New prototypes. |
| * xmalloc.c: New file. |
| * Makefile.am (strace_SOURCES): Add it. |
| * count.c (count_syscall, call_summary_pers): Use xcalloc. |
| * desc.c (decode_select): Use xmalloc. |
| * dirent.c (sys_getdents, sys_getdents64): Likewise. |
| * net.c (sys_recvmmsg): Use xstrdup. |
| * pathtrace.c (storepath): Use xreallocarray. |
| (pathtrace_match): Use xmalloc. |
| * strace.c (die_out_of_memory): Move to xmalloc.c. |
| (expand_tcbtab): Use xcalloc and xreallocarray. |
| (startup_child): Use xstrdup. |
| (init): Use xmalloc, xcalloc, and xstrdup. |
| * syscall.c (reallocate_qual): Use xreallocarray. |
| (qualify): Use xstrdup. |
| * unwind.c (unwind_tcb_init): Use xmalloc. |
| (build_mmap_cache): Use xcalloc, xreallocarray, and xstrdup. |
| (get_symbol_name): Use xreallocarray. |
| (stacktrace_walk, queue_put): Use xmalloc. |
| * util.c (printstr): Use xmalloc. |
| * vsprintf.c (strace_vfprintf): Likewise. |
| |
| 2015-05-21 Dmitry V. Levin <ldv@altlinux.org> |
| |
| Fix ioctl entries on 32-bit architectures with 64-bit aligned structures |
| Some ioctl constants are defined to different values on those 32-bit |
| architectures where structures containing a 64-bit field are aligned on |
| a 8-byte boundary and have a size multiple of 8 bytes, and on other |
| 32-bit architectures. |
| |
| * configure.ac: Check the size of a structure containing a 64-bit field. |
| * linux/32/ioctls_inc.h: Rename to ... |
| * linux/32/ioctls_inc_align32.h: ... this. |
| * linux/32/ioctls_inc_align64.h: New file. |
| * linux/32/ioctls_inc.h: Include either 32/ioctls_inc_align32.h |
| or ioctls_inc_align64.h depending on SIZEOF_STRUCT_I64_I32. |
| * Makefile.am (EXTRA_DIST): Add linux/32/ioctls_inc_align32.h and |
| * linux/32/ioctls_inc_align64.h. |
| * tests/ioctl.c (main): Test for VIDIOC_ENUMINPUT. |
| * tests/ioctl.expected: Check VIDIOC_ENUMINPUT decoding. |
| |
| Reported-by: Philippe De Muyter <phdm@macqel.be> |
| |
| 2015-05-21 Dmitry V. Levin <ldv@altlinux.org> |
| |
| maint: make linux/kvm.h parseable on arm. |
| * maint/ioctls_sym.sh [AARCH64 || ARM]: Add missing definitions for |
| structures referenced from linux/kvm.h. |
| |
| 2015-05-21 Philippe De Muyter <phdm@macqel.be> |
| |
| v4l2: add decoding for VIDIOC_S_CROP's arg. |
| * v4l2.c (v4l2_ioctl): Add decoding for VIDIOC_S_CROP's arg. |
| |
| 2015-05-19 Ezequiel Garcia <ezequiel@vanguardiasur.com.ar> |
| |
| Add support for Altera's Nios-II softcore architecture. |
| This commit adds strace support for Altera's Nios-II. The architecture |
| is supported by Linux since v3.19, and it implements the generic syscall |
| ABI. |
| |
| * configure.ac: Add nios2 support. |
| * cacheflush.c [NIOS2] (sys_cacheflush): New function. |
| * linux/nios2/*: New Nios-II specific files. |
| * Makefile.am (EXTRA_DIST): Add them. |
| |
| 2015-05-19 Philippe De Muyter <phdm@macqel.be> |
| |
| v4l2: VIDIOC_CROPCAP: add missing braces around arg printout. |
| * v4l2.c (v4l2_ioctl): case VIDIOC_CROPCAP: add missing braces around arg |
| printout. |
| |
| 2015-05-19 Dmitry V. Levin <ldv@altlinux.org> |
| |
| maint: avoid effects of locale when sorting files. |
| * maint/ioctls_gen.sh: Invoke sort with LC_COLLATE=C. |
| * maint/ioctls_hex.sh: Likewise. |
| * maint/ioctls_sym.sh: Likewise. |
| |
| Reported-by: Philippe De Muyter <phdm@macqel.be> |
| |
| 2015-04-18 Philippe De Muyter <phdm@macqel.be> |
| |
| v4l2: add decoding for VIDIOC_CREATE_BUFS's arg. |
| * v4l2.c (v4l2_ioctl): Add decoding for VIDIOC_CREATE_BUFS's arg. |
| |
| 2015-04-17 Dmitry V. Levin <ldv@altlinux.org> |
| |
| mips o32: decode indirect syscall. |
| Implement decoding of MIPS O32 specific indirect syscall. |
| |
| * syscall.c [LINUX_MIPSO32] (decode_mips_subcall, sys_syscall): |
| New functions. |
| (trace_syscall_entering) [LINUX_MIPSO32]: Use decode_mips_subcall. |
| * linux/mips/syscallent-o32.h (4000): Change sys_func to sys_syscall. |
| |
| Reported-and-tested-by: Arturo Borrero Gonzalez <arturo.borrero.glez@gmail.com> |
| |
| 2015-04-14 Dmitry V. Levin <ldv@altlinux.org> |
| |
| debian: add gawk to Build-Depends. |
| * debian/control (Build-Depends): Add gawk. |
| Patch by Reiner Herrmann <reiner@reiner-h.de>. |
| |
| This fixes Debian bug #780992. |
| |
| 2015-04-14 Dmitry V. Levin <ldv@altlinux.org> |
| |
| tests: fix bexecve.test for the case of mixed personalities. |
| Fix bexecve.test when the executable being run does not match the |
| native architecture. |
| |
| * tests/bexecve.test: Use "set_ptracer_any" instead of "sh". |
| Allow for a personality switch notification in the strace output. |
| |
| 2015-04-07 Dmitry V. Levin <ldv@altlinux.org> |
| |
| tests: add a test for "resuming interrupted nanosleep" |
| * tests/restart_syscall.test: New test. |
| * tests/restart_syscall.expected: New file. |
| * tests/restart_syscall_unknown.expected: Likewise. |
| * tests/Makefile.am (TESTS): Add restart_syscall.test. |
| (EXTRA_DIST): Add restart_syscall.expected |
| (TEST_LOG_COMPILER): Change to "env". |
| (OS, ARCH, AM_TEST_LOG_FLAGS): Define. |
| and restart_syscall_unknown.expected. |
| |
| tests: strip executable bit from *.expected files. |
| |
| 2015-04-07 Dmitry V. Levin <ldv@altlinux.org> |
| |
| Declare syscall parsers using SYS_FUNC macro. |
| Introduce SYS_FUNC macro to declare and define all syscall parsers. |
| |
| * Makefile.am (BUILT_SOURCES, CLEANFILES): Add sys_func.h. |
| (sys_func.h): New rule. |
| * defs.h (SYS_FUNC_NAME, SYS_FUNC): New macros. |
| * linux/syscall.h: Include "sys_func.h". |
| [NEED_UID16_PARSERS]: Use SYS_FUNC to declare uid16 syscall parsers. |
| Remove other declarations. |
| * linux/alpha/syscallent.h (160, 161): Add sys_ prefix to osf_statfs |
| and osf_fstatfs syscall parsers. |
| * *.c: Use SYS_FUNC to define syscall parsers. |
| |
| 2015-04-07 Denys Vlasenko <dvlasenk@redhat.com> |
| |
| Fix confusing "resuming interrupted unknown" message. |
| Dmitry reported seeing the following: |
| |
| $ sleep 2 & sleep 1; ./strace -erestart_syscall -p $! |
| [1] 12345 |
| Process 12345 attached |
| restart_syscall(<... resuming interrupted unknown ...>) = 0 |
| |
| Fixing it by replacing "unknown" with "system call". |
| |
| 2015-04-07 Dmitry V. Levin <ldv@altlinux.org> |
| |
| tests: workaround old gawk versions that do not provide @include support |
| Some of our tests use GNU awk @include extension, but not all currently |
| used versions of GNU awk support it. Skip these tests if gawk does not |
| provide @include support. |
| |
| * tests/init.sh (check_gawk): New function. |
| (match_awk): Use it. |
| |
| 2015-04-06 Dmitry V. Levin <ldv@altlinux.org> |
| |
| tests: rewrite umovestr2.test without using grep. |
| The regular expression generated by umovestr2.c on systems with large |
| page size is too big for GNU grep. Rewrite the test to use diff |
| instead of grep. |
| |
| * tests/umovestr2.test: Use match_diff instead of match_grep. |
| * tests/umovestr2.c (main): Convert output from regexp to plain text. |
| |
| 2015-03-31 Dmitry V. Levin <ldv@altlinux.org> |
| |
| Cleanup process_vm_writev syscall decoding. |
| * process_vm.c (sys_process_vm_writev): Do not check for syserror, |
| it is not applicable on entering syscall. |
| |
| umovestr: read chunks of memory up to pagesize at a time. |
| * defs.h (get_pagesize): New prototype. |
| * mem.c (get_pagesize) Make global. |
| * util.c (PAGMASK): Remove. |
| (vm_read_mem): New process_vm_readv proxy function. |
| (umoven, umovestr): Use it. |
| (umovestr): Read chunks up to pagesize at a time. |
| |
| 2015-03-31 Dmitry V. Levin <ldv@altlinux.org> |
| |
| umovestr: fix short read bug. |
| * util.c (umovestr): Check the right address. |
| * tests/umovestr.c: New file. |
| * tests/umovestr2.c: Likewise. |
| * tests/umovestr.expected: Likewise. |
| * tests/umovestr.test: New test. |
| * tests/umovestr2.test: Likewise. |
| * tests/Makefile.am (check_PROGRAMS): Add umovestr and umovestr2. |
| (TESTS): Add umovestr.test and umovestr2.test. |
| (EXTRA_DIST): Add umovestr.expected. |
| * tests/.gitignore: Add umovestr and umovestr2. |
| |
| Reported-by: Josef T. Burger <bolo@cs.wisc.edu> |
| |
| 2015-03-31 Dmitry V. Levin <ldv@altlinux.org> |
| |
| When process_vm_readv fails with EPERM, try PTRACE_PEEKDATA. |
| process_vm_readv() and ptrace(PTRACE_PEEKDATA) have inconsistent access |
| control rules wrt traced processes: process_vm_readv() is more likely to |
| fail with EPERM than ptrace(PTRACE_PEEKDATA) when tracing a process that |
| has execve'd a privileged executable. |
| |
| * util.c (umoven, umovestr): If process_vm_readv returned EPERM, |
| fall back to ptrace(PTRACE_PEEKDATA). |
| |
| Reported-by: Andrew Guertin <lists@dolphinling.net> |
| |
| 2015-03-30 Dmitry V. Levin <ldv@altlinux.org> |
| |
| Use macros for gcc attributes. |
| * defs.h (error_msg, perror_msg, error_msg_and_die, perror_msg_and_die, |
| die_out_of_memory, printllval, printnum_int, printnum_long, tprintf): |
| Use ATTRIBUTE_* macros for gcc attributes. |
| * file.c (struct stat64): Likewise. |
| * statfs.c (struct compat_statfs64): Likewise. |
| * strace.c (die, exec_or_die, init): Likewise. |
| * linux/sparc/arch_sigreturn.c: Likewise. |
| * linux/ubi-user.h: Likewise. |
| |
| 2015-03-30 Dmitry V. Levin <ldv@altlinux.org> |
| |
| Introduce macros for gcc attributes. |
| Define macros for gcc attributes that are already in use |
| or going to be used soon. |
| |
| * defs.h (GNUC_PREREQ, ATTRIBUTE_NORETURN, ATTRIBUTE_FORMAT, |
| ATTRIBUTE_ALIGNED, ATTRIBUTE_PACKED, ATTRIBUTE_MALLOC, |
| ATTRIBUTE_NOINLINE, ATTRIBUTE_ALLOC_SIZE): New macros. |
| |
| 2015-03-28 Felix Janda <felix.janda@posteo.de> |
| |
| Include <linux/ioctl.h> for _IOC_* macros. |
| Fix a compilation failure with musl libc. |
| |
| * evdev.c: Include <linux/ioctl.h>. |
| * ioctl.c: Include <linux/ioctl.h> instead of <asm/ioctl.h>. |
| * ioctlsort.c: Likewise. |
| |
| Reported-by: Dima Krasner <dima@dimakrasner.com> |
| Acked-by: Mike Frysinger <vapier@gentoo.org> |
| |
| 2015-03-28 Felix Janda <felix.janda@posteo.de> |
| |
| Include <sys/stat.h> for S_I* macros. |
| Fix a compilation failure with musl libc. |
| |
| * mknod.c: Include <sys/stat.h>. |
| * printmode.c: Likewise. |
| |
| Reported-by: Dima Krasner <dima@dimakrasner.com> |
| Acked-by: Mike Frysinger <vapier@gentoo.org> |
| |
| 2015-03-27 Dmitry V. Levin <ldv@altlinux.org> |
| |
| signal.c: move siginfo_t parsers to a separate file. |
| * printsiginfo.c: New file. |
| * Makefile.am (strace_SOURCES): Add it. |
| * defs.h (printsiginfo): Change second argument's type from int to bool. |
| * signal.c: Stop defining siginfo_t related constants. |
| Move inclusion of xlat/sig*_codes.h files to printsiginfo.c |
| (printsigsource, printsigval, printsiginfo_at): Move to printsiginfo.c. |
| (printsiginfo): Change second argument's type from int to bool, |
| split, and move to printsiginfo.c. |
| |
| Update siginfo_t constants. |
| * xlat/sigbus_codes.in: Add BUS_MCEERR_AR and BUS_MCEERR_AO, |
| add default values. |
| * xlat/sigtrap_codes.in: Add TRAP_BRANCH and TRAP_HWBKPT, |
| add default values. |
| * xlat/sigsegv_codes.in: Add SEGV_BNDERR, add default values. |
| * xlat/sigchld_codes.in: Add default values. |
| * xlat/sigemt_codes.in: Likewise. |
| * xlat/sigfpe_codes.in: Likewise. |
| * xlat/sigill_codes.in: Likewise. |
| * xlat/siginfo_codes.in: Likewise. |
| * xlat/sigpoll_codes.in: Likewise. |
| * xlat/sigsys_codes.in: Likewise. |
| |
| 2015-03-26 Dmitry V. Levin <ldv@altlinux.org> |
| |
| signal.c: move sigaltstack parser to a separate file. |
| * sigaltstack.c: New file. |
| * Makefile.am (strace_SOURCES): Add it. |
| * signal.c (print_stack_t, sys_sigaltstack): Move to sigaltstack.c. |
| * xlat/sigaltstack_flags.in: Add default values. |
| |
| 2015-03-25 Denys Vlasenko <dvlasenk@redhat.com> |
| |
| Move sparc64 get_scno() code where it belongs. |
| |
| sparc: rename personality 2 files to personality 1. |
| Run-tested in qemu 32-bit sparc. |
| |
| 2015-03-25 Denys Vlasenko <dvlasenk@redhat.com> |
| |
| sparc: delete personality 1. |
| Personality 1 for sparc and sparc64 appears to be an old attempt |
| to support stracing Solaris binaries. |
| |
| It stalled after the only syscall, solaris_open, was covered: |
| all other solaris_foo's are printargs. |
| |
| This change deletes personality 1. Now sparc is an one-personality |
| arch, and sparc64 is a two-personality one. |
| |
| For clarity, pure renaming of personality 2 files to personality 1 for sparc64 |
| is performed in the next commit - this prevents a state where syscallent1.h |
| seems to indergo a lot of changes, where in fact in is deleted, and then |
| replaced by syscallent2.h |
| |
| Therefore, tree at this commit will not build. |
| |
| 2015-03-24 Denys Vlasenko <dvlasenk@redhat.com> |
| |
| qemu_multiarch_testing/*: make it easier to do debug in sandboxes. |
| |
| 2015-03-24 Denys Vlasenko <dvlasenk@redhat.com> |
| |
| sparc: fix v4.10-25-g8497b62 fallout. |
| Before: |
| |
| $ sleep 3 & ./strace -p $! |
| Process 8703 attached |
| syscall: unknown syscall trap 1a800003 00025d58 |
| syscall_516(0, 0x40080000, 0, 0xfc000f00, 0x28, 0xefc03b18) = 0 |
| exit_group(0) = ? |
| +++ exited with 0 +++ |
| |
| After: |
| |
| $ sleep 3 & ./strace -p $! |
| Process 8725 attached |
| restart_syscall(<... resuming interrupted nanosleep ...>) = 0 |
| exit_group(0) = ? |
| +++ exited with 0 +++ |
| |
| 2015-03-24 Dmitry V. Levin <ldv@altlinux.org> |
| |
| get_scno: add diagnostics for invalid syscall numbers. |
| * syscall.c (get_scno): Print a debug level message |
| for !SCNO_IS_VALID syscall numbers. |
| |
| 2015-03-24 Dmitry V. Levin <ldv@altlinux.org> |
| |
| arm: fix v4.10-25-g8497b62 fallout. |
| Starting with commit v4.10-25-g8497b62, |
| |
| arm$ ./strace true |
| pid 1234 stray syscall exit |
| Segmentation fault |
| |
| Fix this by updating ARM syscall sanity check. |
| In particular, get_scno() should not set TCB_INSYSCALL flag because |
| other code assumes that s_ent is properly initialized when this flag |
| is set. |
| |
| * linux/arm/get_scno.c: Check syscall number after fetching. |
| Do not apply the check to SCNO_IN_RANGE syscalls. |
| Do not set TCB_INSYSCALL flag. |
| Extend diagnostics and move it to debug level. |
| |
| 2015-03-24 Dmitry V. Levin <ldv@altlinux.org> |
| |
| mips: fix pipe syscall decoding. |
| * linux/mips/arch_getrval2.c: New file. |
| * Makefile.am (EXTRA_DIST): Add it. |
| * defs.h [MIPS] (HAVE_GETRVAL2): Define. |
| |
| 2015-03-23 Dmitry V. Levin <ldv@altlinux.org> |
| |
| sigreturn.c: split arch specific code into separate arch files. |
| Split code that use arch-specific registers to separate arch files. |
| |
| * sigreturn.c (sys_sigreturn): Move arch-specific code |
| to linux/*/arch_sigreturn.c, include "arch_sigreturn.c". |
| * linux/arch_sigreturn.c: New file. |
| * Makefile.am (EXTRA_DIST): Add linux/arch_sigreturn.c |
| and linux/*/arch_sigreturn.c files. |
| |
| 2015-03-23 Dmitry V. Levin <ldv@altlinux.org> |
| |
| syscall.c: split arch specific code into separate arch files. |
| Split code that use arch-specific registers to separate arch files. |
| |
| * syscall.c: Move definitions of variables containing fetched registers |
| to linux/*/arch_regs.c files. |
| [HAVE_GETRVAL2] (getrval2): Move arch-specific code |
| to linux/*/arch_getrval2.c, include "arch_getrval2.c". |
| (print_pc): Move arch-specific code to linux/*/print_pc.c files, |
| include "print_pc.c". |
| [X86_64] (x86_64_getregs_old): Rename to getregs_old, move to |
| linux/x86_64/getregs_old.c, include "getregs_old.c". |
| [POWERPC] (powerpc_getregs_old): Rename to getregs_old, move to |
| linux/powerpc/getregs_old.c, include "getregs_old.c". |
| (get_regs) [X86_64, POWERPC]: Update callers. |
| (get_scno): Move arch-specific code to linux/*/get_scno.c, |
| include "get_scno.c". |
| (get_syscall_args): Move arch-specific code |
| to linux/*/get_syscall_args.c, include "get_syscall_args.c". |
| (get_error): Move arch-specific code to linux/*/get_error.c, |
| include "get_error.c". |
| (get_syscall_result): Move arch-specific code |
| to linux/*/get_syscall_result.c, include "get_syscall_result.c". |
| * Makefile.am (EXTRA_DIST): Add new linux/*/*.c files. |
| |
| 2015-03-23 Dmitry V. Levin <ldv@altlinux.org> |
| |
| syscall.c: prepare for the split. |
| Move functions that use arch-specific registers to the end of file. |
| |
| 2015-03-23 Dmitry V. Levin <ldv@altlinux.org> |
| |
| Move get_regs error check from trace_syscall_entering to get_scno. |
| Starting with commit v4.10-25-g8497b62, get_scno() can be called outside |
| trace_syscall_entering(), so move the get_regs_error check from |
| trace_syscall_entering() to get_scno(). |
| |
| * syscall.c (trace_syscall_entering): Move get_regs_error check ... |
| (get_scno): ... here. |
| |
| 2015-03-23 Dmitry V. Levin <ldv@altlinux.org> |
| |
| alpha, ia64, sh, sparc, sparc64: fix pipe and pipe2 syscalls decoding. |
| Fix pipe syscall decoding on alpha. |
| Fix pipe2 syscall decoding on ia64, sh, sparc, and sparc64. |
| |
| * configure.ac (AC_CHECK_FUNCS): Add pipe2. |
| * defs.h [ALPHA || IA64 || SH || SPARC || SPARC64] (HAVE_GETRVAL2): |
| Define. |
| * net.c (do_pipe): Check HAVE_GETRVAL2 instead of architecture macros. |
| Do not use getrval2 for pipe2 decoding. |
| Print address if umove call fails. |
| * syscall.c (getrval2): Check HAVE_GETRVAL2 instead of architecture |
| macros. Implement for [ALPHA]. |
| * tests/pipe.c: New file. |
| * tests/pipe.expected: New file. |
| * tests/pipe.test: New test. |
| * tests/Makefile.am (check_PROGRAMS): Add pipe. |
| (TESTS): Add pipe.test. |
| (EXTRA_DIST): Add pipe.expected. |
| * tests/.gitignore: Add pipe. |
| |
| 2015-03-22 Dmitry V. Levin <ldv@altlinux.org> |
| |
| decode_socket_subcall: fetch all arguments with a single umoven call. |
| * syscall.c (decode_socket_subcall): Replace umoven fetch loop |
| with a single umoven call. |
| |
| 2015-03-21 Denys Vlasenko <dvlasenk@redhat.com> |
| |
| New test: test/many_looping_threads.c. |
| |
| test/.gitignore: add missing test targets. |
| |
| Trivial optimization in sys_sigreturn() |
| |
| Change last parameter of umoven() from char* to void* |
| Saves tons of casts. |
| |
| Remove unused struct tcb::inst field. |
| It is unused since we dropped support for kernels without PTRACE_SETOPTIONS. |
| |
| test/Makefile: add missing test targets. |
| |
| Move the comment about termination logic where it belongs. |
| |
| startup_tcb() never fails, remove code which checks for failures. |
| |
| 2015-03-21 Denys Vlasenko <dvlasenk@redhat.com> |
| |
| Show the syscall name in "resuming interrupted call" message. |
| When signal is received, or if we have attached to a process, |
| current syscall (if process is in one) gets restarted. |
| |
| Some syscalls are restarted via "restart_syscall()" mechanism. |
| On such sycalls, we don't show _which_ syscall gets restarted. |
| |
| IOW: users want to see "resuming interrupted nanosleep" |
| instead of "resuming interrupted call" when they attach to "sleep 999". |
| |
| Kernel does expose this information. The only thing we need is |
| to fetch syscall# on attach, and save it. |
| |
| This patch does this. It adds tcp->s_prev_ent, which is |
| a pointer to struct_sysent of the previous syscall of this tracee. |
| It can be NULL. |
| |
| sys_restart_syscall() is made to use it when the message is generated. |
| |
| To similarly handle restart_syscall() *after signals*, not just |
| on attach, on each syscall exit patch saves exited syscall's data |
| in the same member (tcp->s_prev_ent). |
| |
| Example: |
| |
| $ sleep 3 & strace -p $! |
| Process 8728 attached |
| restart_syscall(<... resuming interrupted nanosleep ...>) = 0 |
| _exit(0) = ? |
| +++ exited with 0 +++ |
| |
| 2015-03-20 Dmitry V. Levin <ldv@altlinux.org> |
| |
| tests: add a test for mmap/mprotect/munmap decoding. |
| * tests/mmap.c: New file. |
| * tests/mmap64.c: New file. |
| * tests/mmap.test: New test. |
| * tests/mmap64.test: New test. |
| * tests/Makefile.am (check_PROGRAMS): Add mmap and mmap64. |
| (mmap64_CFLAGS): Define. |
| (TESTS): Add mmap.test and mmap64.test. |
| * tests/.gitignore: Add mmap and mmap64. |
| |
| sparc, sparc64: fix decoding of mmap2. |
| * linux/sparc/syscallent.h (mmap2): Decode with sys_mmap_4koff, |
| not sys_mmap. |
| * linux/sparc64/syscallent2.h (mmap2): Decode with sys_mmap_pgoff, |
| not sys_mmap. |
| |
| 2015-03-19 Dmitry V. Levin <ldv@altlinux.org> |
| |
| tests: add a test for SECCOMP_MODE_FILTER decoding. |
| * tests/seccomp.c: New file. |
| * tests/seccomp.test: New test. |
| * tests/Makefile.am (check_PROGRAMS): Add seccomp. |
| (TESTS): Add seccomp.test. |
| * tests/.gitignore: Add seccomp. |
| |
| 2015-03-18 Dmitry V. Levin <ldv@altlinux.org> |
| |
| tests: factor out common awk code. |
| Factor out awk code used in several tests to match.awk. |
| |
| * tests/match.awk: New file. |
| * tests/Makefile.am (EXTRA_DIST): Add it. |
| * tests/caps.awk: Use it. |
| * tests/getdents.awk: Likewise. |
| * tests/getrandom.awk: Likewise. |
| * tests/select.awk: Likewise. |
| * tests/sigaction.awk: Likewise. |
| * tests/init.sh (match_awk): Use gawk not awk. Define AWKPATH. |
| * tests/getdents.test: Likewise. |
| |
| 2015-03-18 Dmitry V. Levin <ldv@altlinux.org> |
| |
| tests: skip netlink based tests when resources are not available. |
| * tests/netlink_inet_diag.c (main): Return 77 if socket, bind, |
| or listen syscall fail. |
| * tests/netlink_unix_diag.c (main): Likewise. |
| |
| 2015-03-18 Dmitry V. Levin <ldv@altlinux.org> |
| |
| aarch64, arm: decode extra padded compat struct statfs64. |
| According to arch/arm/kernel/sys_oabi-compat.c, |
| struct statfs64 has extra padding with EABI. |
| |
| * statfs.c [AARCH64 || defined ARM] (COMPAT_STATFS64_PADDED_SIZE): |
| Define. |
| (do_statfs64_fstatfs64): New function, factored out from sys_statfs64. |
| [COMPAT_STATFS64_PADDED_SIZE]: Check it in addition to |
| sizeof(struct compat_statfs64). |
| (sys_statfs64, sys_fstatfs64): Use do_statfs64_fstatfs64. |
| |
| Reported-and-tested-by: Elliott Hughes <enh@google.com> |
| |
| 2015-03-18 Dmitry V. Levin <ldv@altlinux.org> |
| |
| tests: factor out common shell code to functions. |
| Factor out shell code used in several tests to common functions. |
| |
| * tests/fanotify_mark.expected: New file. |
| * tests/ioctl.expected: New file. |
| * tests/net-fd.expected: New file. |
| * tests/net.expected: New file. |
| * tests/statfs.expected: New file. |
| * tests/sun_path.expected: New file. |
| * tests/uio.expected: New file. |
| * tests/ipc.sh: New file. |
| * tests/Makefile.am (EXTRA_DIST): Add them. |
| * tests/init.sh (dump_log_and_fail_with, run_prog, |
| run_prog_skip_if_failed, run_strace, run_strace_merge, |
| match_awk, match_diff, match_grep): New functions. |
| * tests/*.test: Use them. |
| |
| 2015-03-18 Elliott Hughes <enh@google.com> |
| |
| Show f_flags field in printstatfs. |
| printstatfs64 was right, but printstatfs was missing f_flags. |
| Noticed on aarch64. |
| |
| * statfs.c (printstatfs) [_STATFS_F_FLAGS]: Print statfs.f_flags. |
| |
| 2015-03-16 Dmitry V. Levin <ldv@altlinux.org> |
| |
| tests/uid*: use fchown* instead of chown* |
| Newer architectures have no chown syscall, so use fchown* syscalls |
| for testing printuid. |
| |
| * tests/uid.test: Use fchown instead of chown. |
| * tests/uid.c: Test __NR_fchown instead of __NR_chown. |
| (main): Use __NR_fchown instead of __NR_chown. |
| * tests/uid32.c: Test __NR_fchown32 instead of __NR_chown32. |
| (main): Use __NR_fchown32 instead of __NR_chown32. |
| * tests/uid16.c: Test __NR_fchown and __NR_fchown32 instead |
| of __NR_chown and __NR_chown32. |
| (main): Use __NR_fchown instead of __NR_chown. |
| * tests/uid.awk: Update regexp. |
| |
| 2015-03-16 Dmitry V. Levin <ldv@altlinux.org> |
| |
| stat64-v.test: add newfstatat syscall support. |
| Newer architectures have no stat syscall, so stat() is implemented there |
| using newfstatat syscall. |
| |
| * tests/stat.c (STAT_FNAME): Rename to STAT_PREFIX. Update callers. |
| [_FILE_OFFSET_BITS == 64] (STAT_PREFIX): Add newfstatat support. |
| (main) [!NR_stat]: Add newfstatat support. |
| |
| Reported-by: Andreas Schwab <schwab@suse.de> |
| |
| 2015-03-16 Andreas Schwab <schwab@suse.de> |
| |
| aarch64: properly decode generic syscalls. |
| * linux/aarch64/syscallent1.h: Don't override entries 277 to 1023. |
| |
| tests: verify that all patterns match. |
| * tests/ipc_msg.test: Count matches to verify that all patterns match. |
| * tests/ipc_sem.test: Likewise. |
| * tests/ipc_shm.test: Likewise. |
| * tests/stat32-v.test: Likewise. |
| * tests/stat64-v.test: Likewise. |
| |
| 2015-03-16 Dmitry V. Levin <ldv@altlinux.org> |
| |
| Fix stat64 st_[acm]time decoding for personalities with 32-bit time_t. |
| STRUCT_STAT.st_[acm]time are declared as unsigned int for some |
| personalities, while time_t is signed. |
| |
| * printstat.h (DO_PRINTSTAT): If st_[acm]time have the same size as int, |
| explicitly cast them to int. |
| * tests/stat64-v.test: Test that negative time_t is decoded properly. |
| |
| Reported-by: Andreas Schwab <schwab@suse.de> |
| |
| 2015-03-16 Dmitry V. Levin <ldv@altlinux.org> |
| |
| semctl: fix indirect syscall decoding. |
| On architectures where the semctl call is implemented by the ipc syscall |
| the 4th argument is passed by reference. |
| |
| * ipc.c (sys_semctl): Handle the indirect ipc subcall case. |
| * tests/ipc_sem.c (main): Optionally match indirection |
| in the 4th argument of semctl calls. |
| |
| Reported-by: Andreas Schwab <schwab@suse.de> |
| |
| 2015-03-16 Andreas Schwab <schwab@suse.de> |
| |
| tests/ipc_*: match IPC_64 flag. |
| * tests/ipc_msg.c (main): Optionally match "IPC_64|" in the third |
| argument of the ipc call. |
| * tests/ipc_sem.c (main): Likewise. |
| * tests/ipc_shm.c (main): Likewise. |
| |
| 2015-03-16 Andreas Schwab <schwab@suse.de> |
| |
| Fix crash in ipc_sem test. |
| Properly use union semun as argument of semctl. |
| |
| * tests/ipc_sem.c (main): Properly use union semun as argument of |
| semctl. Don't handle EFAULT specially. |
| * tests/ipc_sem.test: Revert last change. |
| |
| 2015-03-16 Andreas Schwab <schwab@suse.de> |
| |
| m68k: fix sigreturn decoding. |
| * sigreturn.c (sys_sigreturn) [M68K]: Fetch the words of the |
| signal mask from the proper place. |
| |
| aarch64: fix ioctl decoding. |
| * linux/aarch64/ioctls_inc0.h: Rename from ioctls_inc1.h. |
| * linux/aarch64/ioctls_inc1.h: Rename from ioctls_inc0.h. |
| * linux/aarch64/ioctls_arch0.h: Rename from ioctls_arch1.h. |
| * linux/aarch64/ioctls_arch1.h: Rename from ioctls_arch0.h. |
| |
| 2015-03-12 Andreas Schwab <schwab@suse.de> |
| |
| tests/select.test: handle architectures using pselect6 syscall. |
| * tests/select.awk (BEGIN): Update regexps to match both select |
| and pselect6 syscalls. |
| * tests/select.test: Probe for both select and pselect6 syscall. |
| |
| Distribute linux/aarch64/arch_regs.h. |
| * Makefile.am (EXTRA_DIST): Add linux/aarch64/arch_regs.h. |
| |
| Fix decoding of mmap2 for arm. |
| * syscallent.h (mmap2): Decode with sys_mmap_4koff, not |
| sys_mmap_pgoff. |
| |
| 2015-03-12 Andreas Schwab <schwab@suse.de> |
| |
| m68k: define HAVE_SA_RESTORER. |
| On m68k the kernel sigaction structure has the sa_restorer member for |
| historical reasons. |
| |
| * signal.c (HAVE_SA_RESTORER): Define for M68K. |
| |
| 2015-03-11 Dmitry V. Levin <ldv@altlinux.org> |
| |
| aarch64: fix rt_sigreturn decoding. |
| * sigreturn.c (sys_sigreturn) [AARCH64]: Fix personality check. |
| |
| 2015-03-09 Dmitry V. Levin <ldv@altlinux.org> |
| |
| maint: post-release administrivia. |
| * NEWS: Add header line for next release. |
| |
| 2015-03-06 Dmitry V. Levin <ldv@altlinux.org> |
| |
| Prepare for 4.10 release. |
| * NEWS: Update for 4.10 release. |
| * debian/changelog: 4.10-1. |
| * strace.spec: 4.10-1. |
| |
| Move sigreturn/rt_sigreturn parser to a separate file. |
| * sigreturn.c: New file. |
| * Makefile.am (strace_SOURCES): Add it. |
| * defs.h (sprintsigmask_n): New prototype. |
| (tprintsigmask_addr): New macro. |
| * signal.c (sprintsigmask_n): Make global. |
| (tprintsigmask_addr): Remove. |
| (sys_sigreturn): Move to sigreturn.c. |
| |
| 2015-03-05 Dmitry V. Levin <ldv@altlinux.org> |
| |
| ia64: use PTRACE_GETREGS to fetch registers. |
| * linux/ia64/arch_regs.h: Stop including <asm/rse.h>. |
| (ia64_frame_ptr): New declaration. |
| * signal.c (sys_sigreturn) [IA64]: Use ia64_frame_ptr. |
| * syscall.c [IA64]: Include <asm/rse.h>. |
| [IA64] (ia64_regs, ia64_frame_ptr): New variable. |
| [IA64] (ARCH_REGS_FOR_GETREGS): New macro. |
| [IA64] (ia64_ia32mode): Convert to macro. |
| [IA64] (ia64_r8, ia64_r10): Remove. |
| (getrval2, print_pc, get_scno, get_syscall_args, get_error) [IA64]: |
| Use ia64_regs. |
| (get_syscall_result) [IA64]: Remove. |
| |
| s390, s390x: use PTRACE_GETREGSET to fetch registers. |
| * linux/s390/arch_regs.h: New file. |
| * linux/s390x/arch_regs.h: New file. |
| * Makefile.am (EXTRA_DIST): Add them. |
| * signal.c (sys_sigreturn) [S390 || S390X]: Use s390_frame_ptr. |
| * syscall.c [S390 || S390X] (s390_regset, s390_frame_ptr): New variable. |
| [S390 || S390X] (ARCH_REGS_FOR_GETREGSET): New macro. |
| (print_pc) [S390 || S390X]: Use s390_regset. |
| (get_scno) [S390 || S390X]: Likewise. |
| (get_syscall_args) [S390 || S390X]: Likewise. |
| (get_error) [S390 || S390X]: Likewise. |
| (get_syscall_result) [S390 || S390X]: Remove. |
| |
| qemu_multiarch_testing: update. |
| * qemu_multiarch_testing/README: Update statistics. |
| |
| 2015-03-05 Dmitry V. Levin <ldv@altlinux.org> |
| |
| tests: robustify unix-yy.test. |
| Implement additional synchronization between parent and child processes |
| to guarantee that the child starts closing connected socket only after |
| exiting of the parent's accept() syscall. |
| This guarantee seems to be necessary to reliably receive UNIX_DIAG_PEER |
| messages from NETLINK_SOCK_DIAG interface. |
| |
| * tests/net-accept-connect.c: Implement additional synchronization |
| between parent and child processes. |
| * tests/unix-yy-connect.awk: Update. |
| |
| 2015-03-05 Dmitry V. Levin <ldv@altlinux.org> |
| |
| Use SIGRTMIN from kernel headers. |
| * configure.ac (ASM_SIGRTMIN): Define to SIGRTMIN from <asm/signal.h>. |
| * signal.c: Use ASM_SIGRTMIN instead of constants provided by libc. |
| * tests/sigreturn.c: Use ASM_SIGRTMIN instead of hardcoded value. |
| Use lower RT_* numbers to support pre-3.18 hppa kernels. |
| * tests/sigreturn.test: Update regexp. |
| |
| 2015-03-05 Dmitry V. Levin <ldv@altlinux.org> |
| |
| ppc64: fix compilation warning. |
| Fix compilation warning introduced by commit |
| 577be2593d4895ef941e1c4e5e1608f7dd13610d |
| |
| * signal.c (sys_sigreturn) [POWERPC64]: Fix initialization of signal |
| mask on 32bit personality. |
| |
| 2015-03-05 Dmitry V. Levin <ldv@altlinux.org> |
| |
| aarch64: fix compilation warnings. |
| Fix compilation warnings introduced by commit |
| 5b9b7e1d347eb4556084cdccad75e8247c535ed5: |
| |
| signal.c:702:45: warning: signed and unsigned type in conditional expression [-Wsign-compare] |
| syscall.c:746:34: warning: initialization from incompatible pointer type [enabled by default] |
| |
| * syscall.c [AARCH64] (aarch64_sp_ptr): Add explicit cast. |
| [AARCH64] (arm_sp_ptr): Change pointer type to unsigned. |
| * linux/aarch64/arch_regs.h (arm_sp_ptr): Update. |
| |
| Reported-by: Mike Frysinger <vapier@gentoo.org> |
| |
| 2015-03-05 Dmitry V. Levin <ldv@altlinux.org> |
| |
| i386: simplify sigreturn decoding. |
| * signal.c (sys_sigreturn) [X86_64 || X32 || I386]: Do not define |
| i386_sigcontext_struct and i386_fpstate structures. |
| |
| 2015-03-05 Dmitry V. Levin <ldv@altlinux.org> |
| |
| tests: add a test for sigreturn/rt_sigreturn decoding. |
| Convert test/sigreturn.c into a regular test. |
| |
| * test/Makefile (PROGS): Remove sigreturn. |
| * test/.gitignore: Likewise. |
| * test/sigreturn.c: Rewrite to ... |
| * tests/sigreturn.c: ... new file. |
| * tests/sigreturn.test: New test. |
| * tests/Makefile.am (check_PROGRAMS): Add sigreturn. |
| (TESTS): Add sigreturn.test. |
| * tests/.gitignore: Add sigreturn. |
| |
| 2015-03-04 Dmitry V. Levin <ldv@altlinux.org> |
| |
| sigreturn: print signal mask as a syscall argument. |
| Although sigreturn takes signal mask via frame pointer, |
| it's more convenient to display signal mask as a syscall argument |
| rather than an outstanding object of unknown nature: |
| |
| Before this change: |
| sigreturn() (mask [USR2 CHLD RT_2 RT_3 RT_4 RT_31 RT_32]) = 0 |
| |
| After this change: |
| sigreturn({mask=[USR2 CHLD RT_2 RT_3 RT_4 RT_31 RT_32]}) = 0 |
| |
| * signal.c (sys_sigreturn): Display signal mask as a syscall argument. |
| |
| 2015-03-04 Dmitry V. Levin <ldv@altlinux.org> |
| |
| aarch64: implement rt_sigreturn decoding. |
| * linux/64/syscallent.h (139): Use sys_sigreturn for rt_sigreturn |
| decoding. |
| * syscall.c [ARM] (arm_regs): Make static. |
| [ARM] (arm_sp_ptr): New variable. |
| [AARCH64] (aarch64_sp_ptr, arm_sp_ptr): New variables. |
| * linux/aarch64/arch_regs.h: New file. |
| * linux/arm/arch_regs.h (arm_regs): Remove. |
| (arm_sp_ptr): New declaration. |
| * signal.c (sys_sigreturn) [ARM]: Use arm_sp_ptr. |
| [AARCH64]: Print signal mask. |
| |
| arm: simplify sigreturn decoding. |
| * signal.c (sys_sigreturn) [ARM]: Do not define sigcontext and ucontext |
| structures, fetch signal mask only, use print_sigset_addr_len. |
| |
| s390: fix sigreturn decoding. |
| * signal.c (sys_sigreturn) [S390]: Fix signal mask decoding. |
| |
| mips o32: fix sigreturn decoding. |
| * signal.c (sys_sigreturn) [LINUX_MIPSO32]: Fix the address of signal mask. |
| [MIPS] Use print_sigset_addr_len to print signal mask. |
| |
| x86_64, x32: implement rt_sigreturn decoding. |
| * syscall.c [X86_64 || X32] (x86_64_rsp_ptr): New variable. |
| * linux/x86_64/arch_regs.h (x86_64_rsp_ptr): New declaration. |
| * linux/x86_64/syscallent.h (15): Use sys_sigreturn for rt_sigreturn |
| decoding. |
| * linux/x32/syscallent.h (513): Likewise. |
| * signal.c (sys_sigreturn) [X86_64 || X32]: Print signal mask |
| for non-i386 personalities. |
| |
| sparc, sparc64: fix sigreturn decoding. |
| * linux/sparc/arch_regs.h (U_REG_FP): New macro. |
| * signal.c (sys_sigreturn) [SPARC || SPARC64]: Fix decoding |
| of upper 32 bits of the sigmask. |
| |
| ppc, ppc64: fix sigreturn decoding. |
| * signal.c (sys_sigreturn) [POWERPC]: Fix decoding of upper 32 bits |
| of the sigmask. |
| |
| sigreturn: issue a less innocuous warning. |
| * signal.c (sys_sigreturn): Issue a less innocuous warning on |
| architectures for which signal mask decoding is not implemented yet. |
| |
| 2015-03-04 Dmitry V. Levin <ldv@altlinux.org> |
| |
| bootstrap: do not link Makefile* files. |
| * bootstrap: Do not symlink any Makefile* files, not just Makefile.am |
| and Makefile.in. |
| |
| Reported-by: Christopher Covington <cov@codeaurora.org> |
| |
| 2015-03-04 Dmitry V. Levin <ldv@altlinux.org> |
| |
| ia64: fix sigreturn decoding. |
| * signal.c (sys_sigreturn) [IA64]: Fix the address of signal mask. |
| Use print_sigset_addr_len to print signal mask. |
| |
| 2015-03-04 Dmitry V. Levin <ldv@altlinux.org> |
| |
| ia64: use generic signalent. |
| This complements commit v4.9-321-gfcf7f8d. |
| |
| * linux/ia64/signalent.h: Remove. |
| * Makefile.am (EXTRA_DIST): Remove it. |
| |
| 2015-03-04 Giedrius Statkevičius <giedrius.statkevicius@gmail.com> |
| |
| Document that -k is available only with libunwind. |
| Without this users might get confused why `man strace` describes |
| an option that doesn't work. |
| |
| * strace.1: Note that -k is available only if strace is built |
| with libunwind. |
| |
| 2015-03-03 Dmitry V. Levin <ldv@altlinux.org> |
| |
| debian: update control file. |
| * debian/control (strace, strace-udeb): Add mips64 and mips64el |
| to architecture list. |
| Patch by James Cowgill <james410@cowgill.org.uk> |
| |
| This fixes Debian bug #773375. |
| |
| 2015-03-03 Dmitry V. Levin <ldv@altlinux.org> |
| |
| debian: sync with 4.9-2 package. |
| * debian/changelog: Sync with 4.9-2. |
| * debian/control: Likewise. |
| |
| 2015-03-03 Dmitry V. Levin <ldv@altlinux.org> |
| |
| Add arch-specific PTRACE_* constants. |
| * xlat/ptrace_cmds.in: Add arch-specific ptrace commands. |
| * xlat/ptrace_events.in: Add PTRACE_EVENT_MIGRATE for tile. |
| * xlat/ptrace_setoptions_flags.in: Add PTRACE_O_TRACEMIGRATE for tile. |
| |
| This fixes Debian bug #734554. |
| |
| 2015-03-03 Mike Frysinger <vapier@gentoo.org> |
| |
| Clarify bootstrap-vs-autoreconf usage. |
| * README-hacking: Tell people to run ./bootstrap. |
| |
| 2015-03-03 Dmitry V. Levin <ldv@altlinux.org> |
| |
| mips n32: fix preadv/pwritev offset decoding. |
| In mips n32 abi, like in most of 32-bit architectures, offset |
| is passed to preadv/pwritev syscalls using two syscall arguments. |
| |
| * io.c (print_llu_from_low_high_val) [LINUX_MIPSN32]: Remove. |
| |
| 2015-03-03 Mike Frysinger <vapier@gentoo.org> |
| |
| tests: skip ipc_sem.test on broken kernels. |
| Rather than trigger an ERROR which fails `make check`, go with SKIP |
| instead. We don't want the testsuite failing due to kernel bugs. |
| |
| * tests/ipc_sem.c (main): Change 99 to 77. |
| |
| 2015-03-03 Mike Frysinger <vapier@gentoo.org> |
| |
| tests: skip pc.test on s390. |
| The s390 hardware can't support an exact si_addr, and the current kernels |
| don't handle text addresses correctly at all. Until that improves, skip |
| the test on s390. |
| |
| * tests/pc.c (main): Return 77 on s390 systems. |
| |
| 2015-03-03 Mike Frysinger <vapier@gentoo.org> |
| |
| tests: note the kernel configs for -yy options. |
| * tests/net-yy.test: Note CONFIG_INET_TCP_DIAG. |
| * tests/unix-yy.test: Note CONFIG_UNIX_DIAG. |
| |
| 2015-03-02 Dmitry V. Levin <ldv@altlinux.org> |
| |
| alpha: fix -yy decoding. |
| * socketutils.c (receive_responses): Align buffer on a sizeof(long) boundary. |
| |
| Reported-and-tested-by: Mike Frysinger <vapier@gentoo.org> |
| |
| 2015-03-02 Dmitry V. Levin <ldv@altlinux.org> |
| |
| aarch64, x32: fix decoding of compat personality statfs64/fstatfs64. |
| * statfs.c (struct compat_statfs64) [AARCH64 || X32]: Apply the same |
| attributes as on X86_64. |
| |
| mips: fix compilation warning. |
| * syscall.c (get_scno) [MIPS]: Fix harmless compilation warning |
| about comparison between signed and unsigned integer expressions. |
| |
| x32: fix compilation warnings. |
| * sysinfo.c (sys_sysinfo): Use ll length format modifier |
| instead of l and cast kernel ulong types to unsigned long long. |
| |
| aarch64: add -i option support. |
| * syscall.c (print_pc): Add aarch64 support. |
| |
| 2015-03-02 Dmitry V. Levin <ldv@altlinux.org> |
| |
| ioctl: use x32 specific ioctl entries on x32 personality. |
| As ioctls_inc.h generated natively on x32 differs both from 32/ioctls_inc.h |
| (by 45 entries) and from linux/64/ioctls_inc.h (by 322 entries), use x32 |
| specific ioctl entries on x32 personality. |
| |
| * linux/x32/ioctls_inc0.h: Generate from linux v3.19 using ioctls_gen.sh. |
| * linux/x86_64/ioctlent2.h: Remove. |
| * linux/x86_64/ioctls_arch2.h: New file. |
| * linux/x86_64/ioctls_inc2.h: New file. |
| * Makefile.am (EXTRA_DIST): Remove linux/x86_64/ioctlent2.h, add |
| linux/x86_64/ioctls_arch2.h and linux/x86_64/ioctls_inc2.h. |
| |
| 2015-03-02 Dmitry V. Levin <ldv@altlinux.org> |
| |
| tests/uid16: skip if real uid is larger than 16bit. |
| * tests/uid16.c (main): Skip if the uid returned by getuid matches |
| /proc/sys/kernel/overflowuid. |
| |
| 2015-03-02 Dmitry V. Levin <ldv@altlinux.org> |
| |
| tests: fix uid tests on big endian architectures. |
| * tests/uid.c (main): Ignore uids returned by getresuid to avoid |
| 16bit vs 32bit issues on big endian architectures. |
| Change real UID instead of effective UID in setresuid test. |
| * tests/uid16.c (main): Likewise. |
| * tests/uid32.c (main): Change real UID instead of effective UID |
| in setresuid test to match uid.c |
| * tests/uid.awk: Update setresuid regexp. |
| |
| Reported-by: Mike Frysinger <vapier@gentoo.org> |
| |
| 2015-03-01 Mike Frysinger <vapier@gentoo.org> |
| |
| tests/getdents: handle older getdents calls. |
| If the tools we use call older getdents syscalls where d_type isn't |
| passed back, or the arch is old (like Alpha) and can't pass back in |
| either version, make sure we don't fail. |
| |
| * tests/getdents.awk (d_type_dir, d_type_reg): Accept DT_UNKNOWN. |
| |
| 2015-02-28 Dmitry V. Levin <ldv@altlinux.org> |
| |
| Fix multiple personalities support in decoding syscall return values. |
| * syscall.c (trace_syscall_exiting): When current personality is 32bit, |
| print 32bit return code. |
| |
| Update generic 64-bit ioctlent from linux v3.19. |
| * linux/64/ioctls_inc.h: Update from linux v3.19 using ioctls_gen.sh. |
| |
| 2015-02-28 Dmitry V. Levin <ldv@altlinux.org> |
| |
| sparc, sparc64: fix rt_sigaction decoding. |
| Fix regression introduced by commit v4.9-9-gc3a5c01. |
| |
| * signal.c (HAVE_SA_RESTORER): New macro. |
| [HPPA || IA64]: Do not undefine SA_RESTORER. |
| (old_sigaction, old_sigaction32, new_sigaction): Use HAVE_SA_RESTORER |
| instead of SA_RESTORER to check whether to define sa_restorer. |
| (decode_old_sigaction, decode_new_sigaction): Use HAVE_SA_RESTORER in |
| addition to SA_RESTORER to check whether to use sa_restorer. |
| |
| 2015-02-28 Dmitry V. Levin <ldv@altlinux.org> |
| |
| Fix stack buffer overflow when specified command is too long. |
| * strace.c (startup_child): Check that the length of the command strace |
| is going to execute does not exceed PATH_MAX limit. |
| |
| Reported-by: Cheolung Lee <chpie@grayhash.com> |
| |
| 2015-02-28 Dmitry V. Levin <ldv@altlinux.org> |
| |
| build: include ptrace.h after regs.h. |
| Restore the order of including <sys/reg.h> and <linux/ptrace.h> |
| headers that was inadvertently changed by commit v4.9-280-g5503dd2. |
| |
| This should fix build on platforms like m68k where some constants |
| are defined simultaneously as enums by <sys/reg.h> and as macros |
| by <asm/ptrace.h>. |
| |
| * process.c: Include "ptrace.h" after "regs.h". |
| * signal.c: Likewise. |
| * syscall.c: Likewise. |
| * util.c: Likewise. |
| |
| 2015-02-28 Dmitry V. Levin <ldv@altlinux.org> |
| |
| x32: fix decoding of timeval, timespec, and timex structures. |
| As time_t is a 64-bit type in x32 personality, it is not correct to |
| treat it as a long int type. |
| |
| * time.c (current_time_t_is_compat): New macro. |
| (sprinttv, sprint_timespec, printitv_bitness, tprint_timex): Use it. |
| (tprint_timeval, do_sprinttv, sprint_timespec): Use j and uintmax_t |
| when printing tv_sec/tv_usec. |
| (tprint_timex): Use j and intmax_t/uintmax_t when printing struct timex |
| members of type kernel_long_t. |
| |
| 2015-02-28 Mike Frysinger <vapier@gentoo.org> |
| |
| tests/ipc_sem: detect broken kernels. |
| When running 32bit ipc tests on ppc/sparc with a 64bit kernel, the ipc |
| logic wrongly returns errors. Detect that and throw an error. |
| |
| * tests/ipc_sem.c: Return 99 when errno is EFAULT. |
| * tests/ipc_sem.test: Save output to $OUT and show it when failing. |
| Handle exit status 99 to throw an ERROR. |
| |
| 2015-02-27 Dmitry V. Levin <ldv@altlinux.org> |
| |
| build: do not link strace with -ldl. |
| * configure.ac: Fix dladdr check. |
| |
| 2015-02-27 Mike Frysinger <vapier@gentoo.org> |
| |
| Handle broken PTRACE_EVENT_STOP values. |
| For a few linux releases (3.1 through 3.3), this define in the exported |
| headers were broken. Redefine if that's the case. |
| |
| * ptrace.h [PTRACE_EVENT_STOP]: Redefine if PTRACE_EVENT_STOP is 7. |
| |
| 2015-02-27 Mike Frysinger <vapier@gentoo.org> |
| |
| bootstrap: always set up test dirs. |
| When files get updated, the bootstrap script should make sure the |
| parallel dirs are kept in sync. |
| |
| * bootstrap: Always generate the test$m. Clean up symlinks first. |
| Don't link in Makefile.in files. |
| |
| 2015-02-27 Mike Frysinger <vapier@gentoo.org> |
| |
| Fix cross-compiling of ioctlsort. |
| Use the AX_PROG_CC_FOR_BUILD helper to set up build settings when cross |
| compiling. This way ioctlsort uses the build tools all the time. |
| |
| * configure.ac: Call AX_PROG_CC_FOR_BUILD. |
| * Makefile.am (ioctlsort_CC): Set to CC_FOR_BUILD. |
| (ioctlsort_CPPFLAGS): Change CPPFLAGS to CPPFLAGS_FOR_BUILD. |
| (ioctlsort_CFLAGS): Change CFLAGS to CFLAGS_FOR_BUILD. |
| (ioctlsort_LDFLAGS): Change LDFLAGS to LDFLAGS_FOR_BUILD. |
| (ioctlsort_LD): Delete. |
| (ioctlsort%): Change to ioctlsort%$(BUILD_EXEEXT). Use ioctlsort_CFLAGS. |
| * m4/ax_prog_cc_for_build.m4: Import from the autoconf-archive package. |
| |
| 2015-02-27 Dmitry V. Levin <ldv@altlinux.org> |
| |
| tests: robustify pc.test. |
| * configure.ac: Check for dladdr in -ldl. |
| * tests/Makefile.am (pc_LDADD): Adde $(dl_LIBS). |
| * tests/pc.c: Include "config.h" and <dlfcn.h>. |
| (main): Use dladdr to find the address to unmap. |
| |
| 2015-02-27 Dmitry V. Levin <ldv@altlinux.org> |
| |
| tests: drop support for alternative names of select syscall. |
| This mostly reverts commit 4a00fc4867bde7a4c333f238851e5cb03f02c824. |
| |
| * tests/select.awk: Drop _newselect support. |
| * tests/select.test: Skip if select syscall is not supported. |
| |
| 2015-02-27 Dmitry V. Levin <ldv@altlinux.org> |
| |
| Rename _newselect to select. |
| As an exception to the general rules that syscall names should match |
| __NR_* constants defined in kernel headers, show select as "select" |
| and old select as "oldselect". |
| |
| * linux/arm/syscallent.h (82): Change name to oldselect. |
| * linux/hppa/syscallent.h (142): Change name to select. |
| * linux/mips/syscallent-n32.h (6022): Likewise. |
| * linux/mips/syscallent-n64.h (5022): Likewise. |
| * linux/mips/syscallent-o32.h (4142): Likewise. |
| * linux/sparc/syscallent.h (230): Likewise. |
| |
| 2015-02-27 Dmitry V. Levin <ldv@altlinux.org> |
| |
| sparc: sync syscall entries with kernel headers. |
| * linux/sparc/syscallent.h: Fix syscall entries for vmsplice, |
| inotify_init, inotify_add_watch, inotify_rm_watch, inotify_rm_watch, |
| ioprio_set, ioprio_get, splice, sync_file_range, sched_getaffinity, and |
| sched_setaffinity. |
| (67, 68, 202, 230): Change syscall names to match __NR_* constants |
| defined in arch/sparc/include/uapi/asm/unistd.h. |
| |
| 2015-02-26 Dmitry V. Levin <ldv@altlinux.org> |
| |
| s390, s390x: sync syscall entry names with kernel headers. |
| * linux/s390/syscallent.h (1, 180, 181): Change syscall names to match |
| __NR_* constants defined in arch/s390/include/uapi/asm/unistd.h. |
| * linux/s390x/syscallent.h: Likewise. |
| |
| 2015-02-26 Mike Frysinger <vapier@gentoo.org> |
| |
| xlat: avoid fork bombing the build system. |
| When there were fewer xlat headers, this didn't matter as much. |
| But now with >200, trying to run them all in parallel can easily |
| fork bomb smaller systems. |
| |
| * xlat/gen.sh (main): Do not more jobs than # of cpus. |
| |
| 2015-02-26 Dmitry V. Levin <ldv@altlinux.org> |
| |
| arm: sync syscall entry names with kernel. |
| * linux/arm/syscallent.h (82, 90, 180, 181, 327): |
| Change syscall names to match __NR_* constants defined |
| in arch/arm/include/uapi/asm/unistd.h. |
| |
| arm: fix get_mempolicy, set_mempolicy, and timerfd_create syscall entries |
| * linux/arm/syscallent.h (320, 321, 350): Fix names and handlers. |
| |
| hppa: sync syscall entry names with kernel. |
| * linux/hppa/syscallent.h (18, 28, 59, 84, 108, 109, 280): |
| Change syscall names to match __NR_* constants defined in |
| arch/parisc/include/uapi/asm/unistd.h. |
| |
| subcall.h: add sendmmsg entry. |
| * linux/subcall.h: Add sys_sendmmsg entry. |
| (SYS_socket_nsubcalls): Update. |
| |
| arm: simplify ARM_FIRST_SHUFFLED_SYSCALL definition. |
| * linux/arm/syscallent.h (ARM_FIRST_SHUFFLED_SYSCALL): Use SYS_ipc_subcall. |
| |
| ia64: parametrize i386 syscallent size check. |
| * linux/ia64/syscallent.h: Use (SYS_ipc_subcall + SYS_ipc_nsubcalls) |
| instead of numeric constant. |
| |
| Cleanup linux/subcall.h. |
| * linux/subcall.h: Use SYS_ipc_subcall. |
| |
| alpha: fix statfs decoding. |
| * statfs.c (printstatfs) [ALPHA]: Remove faulty code. |
| |
| x32: fix build regression. |
| * linux/x32/arch_regs.h: New file. |
| * Makefile.am (EXTRA_DIST): Add it. |
| |
| 2015-02-26 Mike Frysinger <vapier@gentoo.org> |
| |
| hppa: fix fanotify_mark decoding. |
| The parisc kernel has some legacy baggage here and decodes the 64bit |
| field in the reverse order. Handle it in strace too. |
| |
| * fanotify.c [HPPA] (sys_fanotify_mark): Reverse the mask bits. |
| |
| 2015-02-26 Mike Frysinger <vapier@gentoo.org> |
| |
| ia64: fix decoding of getresuid/getresgid/setresgid. |
| Looks like the similarity of these names caused confusion when generating |
| the syscall table. getresgid was wired to the wrong output while the other |
| two were wired up to printargs instead of the real printer. |
| |
| * linux/ia64/syscallent.h: Connect getresuid to sys_getresuid, getresgid to |
| sys_getresgid, and setresgid to sys_setresgid. |
| |
| 2015-02-26 Mike Frysinger <vapier@gentoo.org> |
| |
| ia64: fix up builds after 16bit uid support. |
| The ia64 port pulls in the i386 syscall table so it can decode |
| 32bit apps, so we need to enable the 16bit uid parsers for it. |
| |
| * defs.h (NEED_UID16_PARSERS): Define to 1 for IA64. |
| * linux/ia64/syscallent.h: Undefine sys_stime to avoid redefine warnings. |
| |
| 2015-02-26 Mike Frysinger <vapier@gentoo.org> |
| |
| v4l2: use uintmax_t for times. |
| There is no guarantee that the backing value for the various time fields |
| are ints or longs which makes printfs annoying. Lets cast them to the |
| uintmax_t type so we can use the j flag and not worry about truncation. |
| |
| * v4l2.c (v4l2_ioctl): Use j and uintmax_t when printing tv_sec/tv_usec. |
| |
| 2015-02-26 Mike Frysinger <vapier@gentoo.org> |
| |
| ignore core/compile files. |
| Newer autotools includes a compile helper script. |
| |
| * .gitignore: Add /compile and core. |
| |
| 2015-02-24 Dmitry V. Levin <ldv@altlinux.org> |
| |
| NEWS: Prepare for 4.10 release. |
| |
| 2015-02-24 Dmitry V. Levin <ldv@altlinux.org> |
| |
| Remove support for systems without PTRACE_SETOPTIONS. |
| Assume that the kernel is v2.5.46 or newer, i.e. PTRACE_SETOPTIONS |
| and PTRACE_O_TRACESYSGOOD|PTRACE_O_TRACEEXEC|PTRACE_O_TRACECLONE |
| are universally available. |
| |
| This change removes all code that implemented post-execve SIGTRAP |
| handling and fork/vfork/clone->CLONE_PTRACE substitution. |
| |
| * defs.h (TCB_BPTSET, TCB_WAITEXECVE): Remove macros. |
| (need_fork_exec_workarounds, setbpt, clearbpt): Remove declarations. |
| * strace.c (need_fork_exec_workarounds, |
| test_ptrace_setoptions_followfork, test_ptrace_setoptions_for_all): |
| Remove. |
| (syscall_trap_sig): Set to (SIGTRAP | 0x80). |
| (ptrace_setoptions): Set to (PTRACE_O_TRACESYSGOOD | PTRACE_O_TRACEEXEC). |
| (detach): Do not test for TCB_BPTSET. |
| (init): Do not call test_ptrace_setoptions_followfork and |
| test_ptrace_setoptions_for_all. Do not test for TCB_BPTSET. |
| * syscall.c (syscall_fixup_on_sysenter, internal_fork, internal_exec, |
| syscall_fixup_for_fork_exec, syscall_fixup_on_sysexit): Remove. |
| (trace_syscall_entering): Do not test for TCB_WAITEXECVE. Do not call |
| syscall_fixup_on_sysenter and syscall_fixup_for_fork_exec. |
| (trace_syscall_exiting): Do not call syscall_fixup_on_sysexit and |
| syscall_fixup_for_fork_exec. |
| [IA64] (ia64_ia32mode): Make static. |
| * linux/ia64/arch_regs.h (ia64_ia32mode): Remove declaration. |
| * util.c: Do not include "syscall.h". |
| (arg_setup, get_arg0, get_arg1, set_arg0, set_arg1, restore_arg0, |
| restore_arg1, arg_finish_change, change_syscall, setbpt, clearbpt): |
| Remove. |
| * tests/ptrace_setoptions.test: Remove. |
| * tests/Makefile.am (TESTS): Remove it. |
| |
| 2015-02-24 Dmitry V. Levin <ldv@altlinux.org> |
| |
| tests: robustify pc.test. |
| * tests/pc.c (main): Unmap larger memory region. |
| Dump process map for debug purposes. |
| * tests/pc.test: Update regexps to take CLD_DUMPED child process |
| into account. |
| |
| 2015-02-23 Dmitry V. Levin <ldv@altlinux.org> |
| |
| tests: fix "make dist" regression. |
| * tests/Makefile.am (EXTRA_DIST): Add getrandom.awk. |
| |
| tests: workaround broken awk. |
| * tests/getdents.out: New file. |
| * tests/Makefile.am (EXTRA_DIST): Add it. |
| * tests/getdents.test: Check whether awk is capable of matching long |
| regular expressions. |
| |
| 2015-02-23 Dmitry V. Levin <ldv@altlinux.org> |
| |
| Fix compilation warnings about incompatible print formats. |
| On some platforms printing of __s64 types with "%lld" format, |
| or __u64 types with "%llu" or "%llx" formats causes a warning |
| that __s64/__u64 type is not compatible with long long format. |
| From my PoV, this is nonsense, but the workaround costs nothing. |
| |
| * scsi.c (print_sg_io_v4_req, print_sg_io_v4_res): Cast __u64 types |
| to (unsigned long long). |
| * v4l2.c (v4l2_ioctl): Likewise. Cast __s64 type to (long long). |
| |
| 2015-02-23 Dmitry V. Levin <ldv@altlinux.org> |
| |
| powerpc64: fix build regression. |
| * linux/powerpc64/arch_regs.h: New file. |
| * Makefile.am (EXTRA_DIST): Add it. |
| |
| signalent: update from linux v3.19. |
| * linux/alpha/signalent.h: Update from linux v3.19 signalent.sh. |
| * linux/hppa/signalent.h: Likewise. |
| * linux/mips/signalent.h: Likewise. |
| * linux/sparc/signalent.h: Likewise. |
| |
| Cleanup auxiliary signalent files. |
| * linux/aarch64/signalent1.h: Include "signalent.h". |
| * linux/powerpc64/signalent1.h: Likewise. |
| * linux/sparc64/signalent2.h: Likewise. |
| * linux/tile/signalent1.h: Likewise. |
| * linux/x32/signalent1.h: Likewise. |
| * linux/x86_64/signalent1.h: Likewise. |
| * linux/x86_64/signalent2.h: Likewise. |
| * linux/sparc64/signalent.h: Include "sparc/signalent.h". |
| * linux/sparc64/signalent1.h: Include "sparc/signalent1.h". |
| * linux/x32/signalent.h: Remove. |
| * Makefile.am (EXTRA_DIST): Remove linux/x32/signalent.h. |
| |
| 2015-02-23 Dmitry V. Levin <ldv@altlinux.org> |
| |
| x86_64, x32: fix sys_sigreturn. |
| On x86_64/x32, sys_sigreturn is defined only for i386 personality. |
| |
| * signal.c (sys_sigreturn): Define for X32. |
| (sys_sigreturn) [X86_64 || X32]: Implement for i386 personality only. |
| |
| 2015-02-23 Dmitry V. Levin <ldv@altlinux.org> |
| |
| sparc, x32: fix build regression. |
| * syscall.c (print_pc): Use current_wordsize iff it is defined. |
| |
| Change errnoent.h files to use designated initializers. |
| * signal.c (printsiginfo): Allow elements of errnoent array to be zero. |
| * syscall.c (trace_syscall_exiting): Likewise. |
| * errnoent.sh: Output designated initializers. |
| * linux/errnoent.h: Regenerated. |
| * linux/alpha/errnoent.h: Regenerated. |
| * linux/hppa/errnoent.h: Regenerated. |
| * linux/mips/errnoent.h: Regenerated. |
| * linux/sparc/errnoent.h: Regenerated. |
| * linux/sparc/errnoent1.h: Regenerated. |
| * linux/powerpc/errnoent.h: New file. |
| * linux/powerpc64/errnoent.h: Include "powerpc/errnoent.h". |
| * Makefile.am (EXTRA_DIST): Add linux/powerpc/errnoent.h |
| and linux/powerpc64/errnoent.h. |
| |
| errnoent: update from linux v3.19. |
| * linux/errnoent.h: Update from linux v3.19 using errnoent.sh. |
| * linux/alpha/errnoent.h: Likewise. |
| * linux/hppa/errnoent.h: Likewise. |
| * linux/mips/errnoent.h: Likewise. |
| * linux/sparc/errnoent.h: Likewise. |
| |
| Cleanup auxiliary errnoent files. |
| * linux/aarch64/errnoent1.h: Include "errnoent.h". |
| * linux/powerpc64/errnoent1.h: Likewise. |
| * linux/sparc64/errnoent2.h: Likewise. |
| * linux/tile/errnoent1.h: Likewise. |
| * linux/x32/errnoent1.h: Likewise. |
| * linux/x86_64/errnoent1.h: Likewise. |
| * linux/x86_64/errnoent2.h: Likewise. |
| * linux/sparc64/errnoent.h: Include "sparc/errnoent.h". |
| * linux/sparc64/errnoent1.h: Include "sparc/errnoent1.h". |
| * linux/x32/errnoent.h: Remove. |
| * Makefile.am (EXTRA_DIST): Remove linux/x32/errnoent.h. |
| |
| 2015-02-22 Dmitry V. Levin <ldv@altlinux.org> |
| |
| evdev: update constants from linux v3.19. |
| * xlat/evdev_keycode.in: Update from linux v3.19. |
| * xlat/evdev_prop.in: Likewise. |
| |
| evdev: decode keycode value in EVIOC[GS]KEYCODE_V2 commands. |
| * evdev.c (keycode_V2_ioctl): Use evdev_keycode to print |
| input_keymap_entry.keycode. |
| |
| evdev: fix build with old kernel headers. |
| * configure.ac: Check whether struct input_absinfo.resolution is defined |
| in <linux/input.h>. |
| * evdev.c (SYN_MAX): Add fallback definition. |
| (abs_ioctl): Wrap use of struct input_absinfo.resolution in #ifdef check. |
| (keycode_V2_ioctl, mtslots_ioctl, repeat_ioctl): Wrap in #ifdef checks. |
| (evdev_read_ioctl): Wrap in #ifdef checks the code that uses EV_SW, |
| EVIOCGREP, EVIOCGKEYCODE_V2, EVIOCGMTSLOTS, EVIOCGPROP, and EVIOCGSW. |
| (evdev_write_ioctl): Wrap in #ifdef checks the code that uses EVIOCSREP, |
| EVIOCSKEYCODE_V2, EVIOCSCLOCKID, and EVIOCREVOKE. |
| |
| 2015-02-22 Etienne Gemsa <etienne.gemsa@lse.epita.fr> |
| |
| Add decoding for evdev ioctls. |
| This patch introduces decoding for evdev ioctls. For EVIOCSFF the five |
| first members are decoded, the union is not. The code was compiled and |
| tested on x86_64 with Linux 3.13. |
| |
| * evdev.c: New file. |
| * Makefile.am (strace_SOURCES): Add it. |
| * defs.h (evdev_ioctl): New prototype. |
| * ioctl.c (ioctl_decode): Call evdev_ioctl for 'E' ioctl commands. |
| * xlat/evdev_autorepeat.in: New file. |
| * xlat/evdev_ff_status.in: New file. |
| * xlat/evdev_ff_types.in: New file. |
| * xlat/evdev_keycode.in: New file. |
| * xlat/evdev_leds.in: New file. |
| * xlat/evdev_misc.in: New file. |
| * xlat/evdev_mtslots.in: New file. |
| * xlat/evdev_prop.in: New file. |
| * xlat/evdev_relative_axes.in: New file. |
| * xlat/evdev_snd.in: New file. |
| * xlat/evdev_switch.in: New file. |
| * xlat/evdev_sync.in: New file. |
| |
| 2015-02-22 Dmitry V. Levin <ldv@altlinux.org> |
| |
| Fix build with old kernel headers. |
| * strace.c (print_debug_info, maybe_allocate_tcb, print_signalled, |
| print_exited): Remove "const" qualifier from status variable to |
| workaround some old implementations of WIFSIGNALED/WIFSTOPPED/WIFEXITED |
| macros. |
| * v4l2.c: Include <linux/types.h>. |
| (v4l2_ioctl): Check that V4L2_CTRL_FLAG_NEXT_CTRL and VIDIOC_S_EXT_CTRLS |
| macros are defined. |
| * tests/Makefile.am (AM_CPPFLAGS): Define. |
| |
| Fix "make dist" regression. |
| * Makefile.am (EXTRA_DIST): Remove README-linux. |
| |
| 2015-02-20 Elliott Hughes <enh@google.com> |
| |
| test/sfd.c: add missing includes. |
| |
| 2015-02-19 Dmitry V. Levin <ldv@altlinux.org> |
| |
| Remove linux/fanotify.h. |
| * linux/fanotify.h: Remove. |
| * Makefile.am (EXTRA_DIST): Remove it. |
| * fanotify.c: Do not include <linux/fanotify.h>. |
| * xlat/fan_classes.in: Add default values. |
| * xlat/fan_event_flags.in: Likewise. |
| * xlat/fan_init_flags.in: Likewise. |
| * xlat/fan_mark_flags.in: Likewise. |
| |
| Remove linux/keyctl.h. |
| * linux/keyctl.h: Remove. |
| * Makefile.am (EXTRA_DIST): Remove it. |
| * keyctl.c: Do not include <linux/keyctl.h>. |
| * xlat/key_perms.in: Add default values. |
| * xlat/key_reqkeys.in: Likewise. |
| * xlat/key_spec.in: Likewise. |
| * xlat/keyctl_commands.in: Likewise. |
| |
| Remove linux/kexec.h. |
| * linux/kexec.h: Remove. |
| * Makefile.am (EXTRA_DIST): Remove it. |
| * kexec.c: Do not include <linux/kexec.h>. |
| * xlat/kexec_arch_values.in: Add default values. |
| * xlat/kexec_flags.in: Rename to kexec_load_flags.in, add default |
| values. |
| |
| Remove linux/inotify.h. |
| * linux/inotify.h: Remove. |
| * Makefile.am (EXTRA_DIST): Remove it. |
| * inotify.c: Do not include <linux/inotify.h>. |
| * xlat/inotify_flags.in: Add default values. |
| |
| Remove linux/reboot.h. |
| * linux/reboot.h: Remove. |
| * Makefile.am (EXTRA_DIST): Remove it. |
| * reboot.c: Do not include <linux/reboot.h>. |
| * xlat/bootflags1.in: Add default values. |
| * xlat/bootflags2.in: Likewise. |
| * xlat/bootflags3.in: Likewise. |
| |
| seccomp: fix fallback definitions of some SECCOMP_* constants. |
| * seccomp.c (SECCOMP_SET_MODE_STRICT, SECCOMP_SET_MODE_FILTER, |
| SECCOMP_FILTER_FLAG_TSYNC): Remove fallback definitions. |
| * xlat/seccomp_filter_flags.in: Add default value. |
| * xlat/seccomp_ops.in: Add default values. |
| |
| 2015-02-19 Dmitry V. Levin <ldv@altlinux.org> |
| |
| is_negated_errno: sync MAX_ERRNO with the kernel. |
| Linux kernel used to guarantee that the largest errno value will not |
| exceed 4095, but SECCOMP_RET_ERRNO support introduced by kernel commit |
| v3.4-rc2-13-gacf3b2c71ed20c53dc69826683417703c2a88059 inadvertently |
| broke it. The guarantee is back with kernel commit |
| v3.19-8275-g580c57f1076872ebc2427f898b927944ce170f2d. |
| |
| * syscall.c (is_negated_errno): Set maximum errno value to 4095. |
| |
| 2015-02-19 Mike Frysinger <vapier@gentoo.org> |
| |
| README-linux: punt. |
| Considering we're requiring linux-2.6 era kernels, the discussion of |
| header troubles that plagued 2.2 and 2.4 are no longer relevant. |
| |
| * README-linux: Delete. |
| |
| 2015-02-19 Dmitry V. Levin <ldv@altlinux.org> |
| |
| Improve prctl decoding. |
| * configure.ac (AC_CHECK_HEADERS): Add linux/securebits.h. |
| * prctl.c (sys_prctl): Implement full decoding of all PR_* constants |
| as defined in linux v3.19. |
| (sys_arch_prctl): Fix decoding of unknown commands. |
| * xlat/cap.in: New file. |
| * xlat/pr_mce_kill.in: New file. |
| * xlat/pr_mce_kill_policy.in: New file. |
| * xlat/pr_set_mm.in: New file. |
| * xlat/pr_tsc.in: New file. |
| * xlat/pr_unalign_flags.in: New file. |
| * xlat/secbits.in: New file. |
| * xlat/prctl_options.in: Remove non-linux constants, add fallback |
| definitions. |
| * xlat/seccomp_mode.in: Add fallback definitions. |
| |
| xlat: extend syntax. |
| * xlat/gen.sh (gen_header): If the name of constant is specified with a |
| value, generate a default definition for the constant using this value. |
| * xlat/timerfdflags.in: Use extended syntax. |
| |
| Move CAP_* definitions out to header files. |
| * Makefile.am (strace_SOURCES): Add caps0.h and caps1.h. |
| * caps0.h: New file. |
| * caps1.h: New file. |
| * capability.c: Remove CAP_* definitions, include "caps0.h" |
| and "caps1.h" instead. |
| Include "xlat/cap_mask0.h" instead of "xlat/capabilities.h". |
| Include "xlat/cap_mask1.h" instead of "xlat/capabilities1.h". |
| (print_cap_bits): Update callers. |
| * xlat/capabilities.in: Rename to xlat/cap_mask0.in. |
| * xlat/capabilities1.in: Rename to xlat/cap_mask1.in. |
| |
| 2015-02-18 Dmitry V. Levin <ldv@altlinux.org> |
| |
| Declare all format printers with printf format attribute. |
| * defs.h (printllval, printnum_int, printnum_long): Mark with |
| format(printf) attribute. |
| * sock.c (sock_ioctl): Fix format string. |
| |
| 2015-02-17 Dmitry V. Levin <ldv@altlinux.org> |
| |
| Rename printnum to printnum_long to avoid confusion. |
| * defs.h (printnum): Rename to printnum_long. |
| * util.c (printnum): Likewise. |
| * process.c (sys_ptrace): Likewise. |
| * time.c (sys_time): Likewise. |
| |
| Use printnum_int consistently. |
| * sock.c (sock_ioctl): Use printnum_int instead of printnum to print |
| integer type. |
| * stream.c (sys_getpmsg): Likewise. |
| |
| 2015-02-16 Dmitry V. Levin <ldv@altlinux.org> |
| |
| print_pc: fix multiple personalities support. |
| * syscall.c (print_pc): Choose instruction pointer format depending |
| on current_wordsize, not the size of long integer type. |
| * tests/pc.c: New file. |
| * tests/pc.test: New test. |
| * tests/Makefile.am (check_PROGRAMS): Add pc. |
| (TESTS): Add pc.test. |
| * tests/.gitignore: Add pc. |
| |
| mips: use PTRACE_GETREGS to fetch all registers. |
| * linux/mips/arch_regs.h (struct mips_regs): New structure. |
| (mips_REG_*): New macros. |
| * signal.c (sys_sigreturn) [MIPS]: Use mips_REG_SP. |
| * syscall.c [MIPS] (struct mips_regs): New variable. |
| [MIPS] (ARCH_REGS_FOR_GETREGS): New macro. |
| (mips_a3, mips_r2): Remove. |
| (print_pc) [MIPS]: Use mips_REG_EPC. |
| (get_scno) [MIPS]: Use mips_REG_V0 and mips_REG_A3. |
| (get_syscall_args) [MIPS]: Use mips_REG_A[0-5]. |
| (get_syscall_result) [MIPS]: Remove. |
| (get_error) [MIPS]: Use mips_REG_A3 and mips_REG_V0. |
| |
| mips: move ABI check to configure.ac. |
| * configure.ac [MIPS]: Check for MIPS ABI. |
| * defs.h [MIPS]: Remove MIPS ABI check. |
| * ioctlsort.c: Likewise. |
| |
| tests: support alternative names of select syscall. |
| * tests/select.awk: Recognize "_newselect" as another name of "select". |
| * tests/select.test: Try alternative names of select syscall. |
| |
| 2015-02-15 Dmitry V. Levin <ldv@altlinux.org> |
| |
| i386: fix compilation warning. |
| Some gcc versions complain about assigning long* to uint32_t* on i386. |
| |
| * syscall.c [I386] (i386_esp_ptr): Change type from uint32_t* to long*. |
| * linux/i386/arch_regs.h (i386_esp_ptr): Likewise. |
| * linux/x86_64/arch_regs.h: Do not include "i386/arch_regs.h". |
| (i386_esp_ptr): New prototype. |
| |
| 2015-02-14 Dmitry V. Levin <ldv@altlinux.org> |
| |
| Do not reset get_regs_error unnecessarily. |
| As get_regs() is now guaranteed to set get_regs_error, |
| there is no need to reset get_regs_error before get_regs() call. |
| |
| * strace.c (trace): Call clear_regs() iff !WIFSTOPPED. |
| |
| 2015-02-14 Dmitry V. Levin <ldv@altlinux.org> |
| |
| get_syscall_result: remove redundant ifdefs. |
| As get_regs() is now guaranteed to fetch registers when either |
| ARCH_REGS_FOR_GETREGSET or ARCH_REGS_FOR_GETREGS is defined, we can |
| safely replace all checks for architectures where these macros are defined |
| with a single check for these macros. |
| |
| * syscall.c (get_syscall_result): Check for [ARCH_REGS_FOR_GETREGSET || |
| ARCH_REGS_FOR_GETREGS]. Remove all checks for architectures where |
| nothing has to be done after get_regs(). |
| |
| 2015-02-14 Dmitry V. Levin <ldv@altlinux.org> |
| |
| get_regs: define for all architectures. |
| * defs.h (get_regs_error): Remove. |
| (clear_regs): Update prototype, declare unconditionally. |
| (get_regs): Declare unconditionally. |
| * syscall.c (clear_regs): New function. |
| (get_regs): Define unconditionally. |
| (get_regs_error): Define unconditionally, change scope to static. |
| |
| get_regs: unify code for architectures that use PTRACE_GETREGS. |
| * syscall.c [I386, POWERPC, ARM, AVR32, SPARC, SPARC64, TILE] |
| (ARCH_REGS_FOR_GETREGS): New macro. |
| (get_regs): Unify code for ARCH_REGS_FOR_GETREGS architectures. |
| |
| get_regset: define iff PTRACE_GETREGSET is used. |
| * syscall.c [AARCH64, X86_64, X32] (ARCH_REGS_FOR_GETREGSET, |
| ARCH_IOVEC_FOR_GETREGSET): New macros. |
| (get_regset): Define iff ARCH_REGS_FOR_GETREGSET is defined; change |
| return type to long, return ptrace() return code instead of assigning it |
| to get_regs_error; do not list individual architectures, implement |
| constant and variable iovec cases depending on ARCH_IOVEC_FOR_GETREGSET. |
| (get_regs): Assign get_regset() return code to get_regs_error. |
| |
| 2015-02-14 Dmitry V. Levin <ldv@altlinux.org> |
| |
| arm, i386: switch back to use PTRACE_GETREGS. |
| PTRACE_GETREGSET and PTRACE_GETREGS methods are equally good on arm and |
| i386 architectures, but PTRACE_GETREGSET with fallback to PTRACE_GETREGS |
| is a bit more costly, so choose the method that costs less. |
| This partially reverts commit v4.7-149-gfaa177e. |
| |
| * syscall.c [ARM, I386] (ARCH_REGS_FOR_GETREGSET): Remove. |
| (get_regset) [ARM || I386]: Remove. |
| (get_regs) [ARM || I386]: Use PTRACE_GETREGS unconditionally. |
| |
| 2015-02-14 Dmitry V. Levin <ldv@altlinux.org> |
| |
| syscall.c: remove obsolete ifdefs. |
| * syscall.c (get_regset, get_regs): Do not check for availability |
| of PTRACE_GETREGSET and NT_PRSTATUS macros. |
| |
| syscall.c: ensure that NT_PRSTATUS is defined. |
| * syscall.c: Do not include <elf.h>. |
| (NT_PRSTATUS): New macro. |
| |
| 2015-02-13 Dmitry V. Levin <ldv@altlinux.org> |
| |
| Move regs-related macros and declarations from defs.h to regs.h. |
| * regs.h: New file. |
| * Makefile.am (strace_SOURCES): Add it. |
| * linux/arch_regs.h: New file. |
| * linux/alpha/arch_regs.h: Likewise. |
| * linux/arm/arch_regs.h: Likewise. |
| * linux/hppa/arch_regs.h: Likewise. |
| * linux/i386/arch_regs.h: Likewise. |
| * linux/ia64/arch_regs.h: Likewise. |
| * linux/mips/arch_regs.h: Likewise. |
| * linux/powerpc/arch_regs.h: Likewise. |
| * linux/sh64/arch_regs.h: Likewise. |
| * linux/sparc/arch_regs.h: Likewise. |
| * linux/sparc64/arch_regs.h: Likewise. |
| * linux/tile/arch_regs.h: Likewise. |
| * linux/x86_64/arch_regs.h: Likewise. |
| * Makefile.am (EXTRA_DIST): Add them. |
| * defs.h: Remove definitions of PTRACE_*, REG_*, PT_*, U_REG_*, |
| and ARM_* macros. |
| Remove declarations of struct pt_regs variables. |
| [SPARC]: Do not include <asm/psr.h>. |
| [SPARC64]: Do not include <asm/psrcompat.h>. |
| * bjm.c: Do not include <sys/user.h>. |
| * process.c: Include "regs.h". |
| Do not include <sys/user.h> and <sys/reg.h>. |
| [IA64]: Do not include <asm/ptrace_offsets.h> and <asm/rse.h>. |
| * util.c: Likewise. |
| * syscall.c: Likewise. |
| [AARCH64]: Define struct arm_pt_regs and ARM_* macros. |
| [SPARC]: Include <asm/psr.h>. |
| [SPARC64]: Include <asm/psrcompat.h>. |
| * signal.c: Include "regs.h". |
| Do not include <sys/user.h> and <sys/reg.h>. |
| [IA64]: Do not include <asm/ptrace_offsets.h>. |
| * strace.c [IA64]: Do not include <asm/ptrace_offsets.h>. |
| |
| Move all ptrace-related macros and declarations from defs.h to ptrace.h. |
| * ptrace.h: New file. |
| * Makefile.am (strace_SOURCES): Add it. |
| * configure.ac (AC_CHECK_HEADERS): Remove linux/ptrace.h and sys/ptrace.h. |
| * defs.h: Do not include <sys/ptrace.h> and <asm/ptrace.h>. |
| Remove definitions of PTRACE_* macros. |
| * process.c: Remove <linux/ptrace.h> workarounds, include "ptrace.h". |
| * signal.c: Likewise. |
| * syscall.c: Likewise. |
| * util.c: Likewise. |
| * strace.c: Include "ptrace.h". |
| * wait.c: Likewise. |
| |
| 2015-02-12 Dmitry V. Levin <ldv@altlinux.org> |
| |
| Enhance wait status decoding. |
| * xlat/ptrace_events.in: New file. |
| * wait.c: Include "xlat/ptrace_events.h". |
| (printstatus): In case of WIFSTOPPED, print 0x80 flag separately from |
| the stop signal name. |
| [WIFCONTINUED]: Add WIFCONTINUED support. |
| Decode PTRACE_EVENT_* events. |
| |
| 2015-02-08 Bart Van Assche <bart.vanassche@sandisk.com> |
| |
| scsi: add bsg support. |
| The Linux kernel supports two different versions of the SG_IO API, |
| namely v3 and v4. This patch adds support for version 4 of this API. |
| At least the sg3_utils package supports version 4 of this API. Version |
| 4 of this API is used if /dev/bsg/H:C:I:L is used as device name. |
| |
| This patch has been tested by inspecting the output of the following |
| commands: |
| |
| modprobe scsi_debug dev_size_mb=16 delay=0 |
| dev=$(lsscsi | sed -n '/ scsi_debug /s,^[^/]*,,p') |
| ./strace -eioctl -s256 sg_inq $dev |
| echo 'Test XDWRITEREAD(10)' |
| bsg=/dev/bsg/$(lsscsi | sed -n '/ scsi_debug /s,^\[\([^]]\+\)\].*,\1,p') |
| dd if=/dev/zero bs=512 count=1 | |
| ./strace -eioctl -s256 sg_raw -s 512 -r 1024 $bsg 53 00 00 00 00 01 00 00 01 00 |
| |
| * configure.ac (AC_CHECK_HEADERS): Add linux/bsg.h. |
| * xlat/bsg_protocol.in: New file. |
| * xlat/bsg_subprotocol.in: Likewise. |
| * scsi.c: Include them and <linux/bsg.h>. |
| (print_sg_io_v3_req, print_sg_io_v3_res, print_sg_io_v4_req, |
| print_sg_io_v4_res): New functions. |
| (print_sg_io_req, print_sg_io_res): Use them. |
| (scsi_ioctl): Update callers. |
| |
| 2015-02-08 Bart Van Assche <bart.vanassche@sandisk.com> |
| |
| scsi: Add iovec support. |
| * scsi.c (print_sg_io_req, print_sg_io_res): Add support for decoding |
| iovecs passed via the SG I/O v3 interface. Decode the "data in" and |
| "data out" buffers in hex instead of in ASCII. |
| |
| scsi: on exit, print only initialized part of the buffer. |
| * scsi.c (print_sg_io_res): Only print that part of the data in buffer |
| that has been initialized by the SCSI LLD driver. |
| |
| scsi: make print_sg_io_buffer() print square brackets instead of its callers |
| * scsi.c (print_sg_io_buffer): Print square brackets in this function. |
| (print_sg_io_req, print_sg_io_res): Update callers. |
| |
| 2015-02-08 Bart Van Assche <bart.vanassche@sandisk.com> |
| |
| scsi: improve consistency with other decoding functions. |
| Pass pointers to tracee's memory as integers instead of pointers. |
| |
| * scsi.c (print_sg_io_buffer): Change second argument's type to |
| unsigned long. |
| (print_sg_io_req, print_sg_io_res): Update callers. |
| |
| 2015-02-08 Dmitry V. Levin <ldv@altlinux.org> |
| |
| tests: extend getdents to support all filesystems regardless of file order |
| * tests/getdents.awk: Include all 6 possible permutations of 3 |
| direntries to regexps. |
| |
| 2015-02-08 Dmitry V. Levin <ldv@altlinux.org> |
| |
| print_setsockopt: fix fall-through bug in SOL_IP switch case. |
| This fixes the bug introduced by commit v4.9-250-ga0a4909. |
| |
| * net.c (print_setsockopt): Separate SOL_IP case from SOL_PACKET. |
| |
| Reported-by: Ben Noordhuis <info@bnoordhuis.nl> |
| |
| 2015-02-07 Dmitry V. Levin <ldv@altlinux.org> |
| |
| Do not watch for post-execve SIGTRAP if PTRACE_O_TRACEEXEC is enabled. |
| If PTRACE_O_TRACEEXEC option is enabled, then post-execve SIGTRAPs are |
| suppressed and we can safely skip -ENOSYS heuristics. This partially |
| reverts commits v4.9-258-g8e398b6 and v4.9-261-gd70c41d. |
| |
| * syscall.c (syscall_fixup_on_sysenter): Skip if PTRACE_O_TRACEEXEC |
| flag is set in ptrace_setoptions. Remove all SECCOMP_RET_ERRNO |
| workarounds as they are not needed when PTRACE_O_TRACEEXEC is not |
| supported by the kernel. |
| |
| 2015-02-07 Dmitry V. Levin <ldv@altlinux.org> |
| |
| When the process stared by strace exits/terminates, forget its pid. |
| The process stared by strace can exit/terminate only once. When this |
| happens, forget its pid, so that any other event or action related to a |
| process with the same pid as the pid of that first process would not be |
| confused with that first process. |
| |
| * strace.c (print_signalled, print_exited): Clear strace_child when it |
| equals to the given pid. |
| |
| 2015-02-07 Dmitry V. Levin <ldv@altlinux.org> |
| |
| -b execve: avoid misleading warning about unknown pid. |
| * strace.c (maybe_allocate_tcb): If detach_on_execve is set, do not warn |
| about !WIFSTOPPED process with pid == strace_child. |
| * tests/bexecve.test: New test. |
| * tests/Makefile.am (TESTS): Add it. |
| |
| -b execve: do not use struct tcb after detach. |
| * strace.c (trace): Do not proceed after detach. |
| |
| 2015-02-07 Dmitry V. Levin <ldv@altlinux.org> |
| |
| trace: split into several functions. |
| This change moves the main loop back to main() and splits trace() |
| into several functions. There are no algorithmic changes. |
| |
| * strace.c (print_debug_info, maybe_allocate_tcb, maybe_switch_tcbs, |
| print_signalled, print_exited, print_stopped, startup_tcb): New |
| functions. |
| (trace) Use them. Move the main loop ... |
| (main): ... here. |
| |
| 2015-02-07 Dmitry V. Levin <ldv@altlinux.org> |
| |
| printsiginfo: constify the first argument. |
| * signal.c (printsiginfo): Make the first argument a pointer to a const type. |
| * defs.h (printsiginfo): Likewise. |
| (printsiginfo, printsiginfo_at): Always define these prototypes. |
| * configure.ac (AC_CHECK_TYPES): Remove siginfo_t, as HAVE_SIGINFO_T |
| is no longer used. |
| |
| 2015-02-06 Dmitry V. Levin <ldv@altlinux.org> |
| |
| test: add a manual test for seccomp decoding. |
| * test/.gitignore: Add seccomp. |
| * test/Makefile (PROGS): Likewise. |
| * test/seccomp.c: New file. |
| * test/README: Mention ../tests/. |
| |
| Implement seccomp decoding. |
| * configure.ac (AC_CHECK_HEADERS): Add linux/filter.h |
| and linux/seccomp.h. |
| * defs.h (print_seccomp_filter): New prototype. |
| * linux/dummy.h (sys_seccomp): Remove. |
| * linux/syscall.h (sys_seccomp): New prototype. |
| * prctl.c: Include <linux/seccomp.h>. |
| (sys_prctl): Decode PR_SET_SECCOMP. |
| * seccomp.c: New file. |
| * Makefile.am (strace_SOURCES): Add it. |
| * xlat/bpf_class.in: New file. |
| * xlat/bpf_miscop.in: Likewise. |
| * xlat/bpf_mode.in: Likewise. |
| * xlat/bpf_op_alu.in: Likewise. |
| * xlat/bpf_op_jmp.in: Likewise. |
| * xlat/bpf_rval.in: Likewise. |
| * xlat/bpf_size.in: Likewise. |
| * xlat/bpf_src.in: Likewise. |
| * xlat/seccomp_filter_flags.in: Likewise. |
| * xlat/seccomp_mode.in: Likewise. |
| * xlat/seccomp_ops.in: Likewise. |
| * xlat/seccomp_ret_action.in: Likewise. |
| |
| 2015-02-06 Dmitry V. Levin <ldv@altlinux.org> |
| |
| is_negated_errno: support large errno values. |
| Thanks to SECCOMP_RET_DATA == 0xffff, abnormally large errno |
| values could be easily seen when a seccomp filter is used, e.g. |
| BPF_STMT(BPF_RET, SECCOMP_RET_ERRNO | SECCOMP_RET_DATA) |
| |
| * syscall.c (is_negated_errno): Allow errno values as large as 0xffff. |
| |
| 2015-02-06 Dmitry V. Levin <ldv@altlinux.org> |
| |
| x86, x32, x86_64: print SECCOMP_RET_ERRNO filtered syscalls. |
| This is required to process SECCOMP_RET_ERRNO filtered syscalls on |
| systems where linux kernel does not change the syscall number to -1. |
| |
| * syscall.c (is_negated_errno): Move before syscall_fixup_on_sysenter. |
| (syscall_fixup_on_sysenter) [I386 || X32 || X86_64] : Use it to check |
| AX register. |
| |
| 2015-02-06 Dmitry V. Levin <ldv@altlinux.org> |
| |
| is_negated_errno: merge x86_64 and x32 definitions. |
| * syscall.c (kernel_long_t, kernel_ulong_t): New types. |
| (is_negated_errno): Merge [X32] and [!X32] definitions. |
| (get_error): Merge [X86_64] and [X32] code. |
| |
| 2015-02-06 Dmitry V. Levin <ldv@altlinux.org> |
| |
| x32: rename is_negated_errno_x32 to is_negated_errno. |
| Use the same function name on all architectures. |
| |
| * syscall.c [X32] (is_negated_errno_x32): Rename to is_negated_errno. |
| (get_error) [X32]: Update callers. |
| |
| 2015-02-06 Dmitry V. Levin <ldv@altlinux.org> |
| |
| x86, x32, x86_64: do not skip syscall number -1. |
| Syscall number -1 might be a side effect of SECCOMP_RET_ERRNO filtering. |
| |
| * syscall.c (syscall_fixup_on_sysenter) [I386 || X32 || X86_64]: |
| Do not skip syscalls that have number -1. |
| |
| 2015-02-06 Dmitry V. Levin <ldv@altlinux.org> |
| |
| x86_64: do not interpet syscall number -1 as a x32 personality syscall. |
| Syscall number -1 might be a side effect of SECCOMP_RET_ERRNO filtering. |
| |
| * syscall.c (get_scno) [X86_64]: Handle the case of scno == -1. |
| |
| 2015-02-05 Dmitry V. Levin <ldv@altlinux.org> |
| |
| Implement getrandom syscall decoding. |
| * getrandom.c: New file. |
| * Makefile.am (strace_SOURCES): Add it. |
| * linux/dummy.h (sys_getrandom): Remove. |
| * linux/syscall.h (sys_getrandom): New prototype. |
| * xlat/getrandom_flags.in: New file. |
| * tests/getrandom.c: New file. |
| * tests/getrandom.awk: New file. |
| * tests/getrandom.test: New test. |
| * tests/Makefile.am (check_PROGRAMS): Add getrandom. |
| (TESTS): Add getrandom.test. |
| (EXTRA_DIST): Add getrandom.awk. |
| * tests/.gitignore: Add getrandom. |
| |
| 2015-02-04 Dmitry V. Levin <ldv@altlinux.org> |
| |
| tests: add a test for select syscall decoding. |
| Convert test/select.c into a regular test. |
| |
| * test/Makefile (PROGS): Remove select. |
| * test/.gitignore: Likewise. |
| * test/select.c: Rewrite to ... |
| * tests/select.c: ... new file. |
| * tests/select.awk: New file. |
| * tests/select.test: New test. |
| * tests/Makefile.am (check_PROGRAMS): Add select. |
| (TESTS): Add select.test. |
| (EXTRA_DIST): Add select.awk. |
| * tests/.gitignore: Add select. |
| |
| 2015-02-01 Dmitry V. Levin <ldv@altlinux.org> |
| |
| tests: add a test for the latest dumpio fix. |
| * tests/dumpio.expected: New file. |
| * tests/unix-pair-send-recv.c: New file. |
| * tests/dumpio.test: New test. |
| * tests/Makefile.am (check_PROGRAMS): Add unix-pair-send-recv. |
| (TESTS): Add dumpio.test. |
| (EXTRA_DIST): Add dumpio.expected. |
| * tests/.gitignore: Add unix-pair-send-recv. |
| |
| 2015-02-01 Aurelien Jacobs <aurel@gnuage.org> |
| |
| Fix simultaneous -e read and -e write usage. |
| This allows using both -e read=FD and -e write=FD at the same time |
| with the same FD. |
| Without this patch, the -e write=FD is ignored if -e read=FD is used |
| at the same time. |
| |
| 2015-01-31 Dmitry V. Levin <ldv@altlinux.org> |
| |
| net.c: remove unused HAVE_SIN6_SCOPE_ID_LINUX-based code. |
| The AC_SIN6_SCOPE_ID autoconf macro that was able to define |
| HAVE_SIN6_SCOPE_ID_LINUX was removed by commit v4.4-98-g64f793a. |
| |
| * net.c [HAVE_SIN6_SCOPE_ID_LINUX]: Remove. |
| |
| 2015-01-30 Dmitry V. Levin <ldv@altlinux.org> |
| |
| printsock: do not fetch sockaddr.sa_data twice. |
| * net.c (printsock): Print addrbuf.sa.sa_data using print_quoted_string. |
| |
| setsockopt: add decoding of MCAST_JOIN_GROUP and MCAST_LEAVE_GROUP. |
| * net.c (print_group_req): New function. |
| (print_setsockopt): Use it. |
| |
| 2015-01-29 Dmitry V. Levin <ldv@altlinux.org> |
| |
| tests: add a test for sockaddr_un.sun_path decoding. |
| * tests/net-accept-connect.c: Allow long socket addresses. |
| * tests/sun_path.test: New test. |
| * tests/Makefile.am (TESTS): Add it. |
| |
| printsock: print the whole sockaddr_un.sun_path. |
| * net.c (printsock): If sockaddr_un.sun_path is not NUL-terminated, |
| do not omit the last byte of sockaddr_un.sun_path array. |
| |
| printsock: do not fetch sockaddr_un.sun_path twice. |
| * net.c (printsock): Print addrbuf.sau.sun_path using |
| print_quoted_string. |
| |
| 2015-01-29 Dmitry V. Levin <ldv@altlinux.org> |
| |
| net: define all SOL_* constants. |
| Ensure that all known SOL_* constants are defined. |
| Sync the list of known SOL_* constants with linux/socket.h. |
| |
| * net.c: Provide definitions for all SOL_* constants. |
| Remove all SOL_* preprocessor conditionals. |
| (socketlayers): Disconnect from inet_protocols. |
| * xlat/socketlayers.in: Remove SOL_ICMP, add SOL_ALG and SOL_NFC. |
| |
| 2015-01-29 Dmitry V. Levin <ldv@altlinux.org> |
| |
| setsockopt: decode PACKET_ADD_MEMBERSHIP. |
| * xlat/packet_mreq_type.in: New file. |
| * net.c: Include "xlat/packet_mreq_type.h". |
| (print_packet_mreq): New function. |
| (print_setsockopt): Use it. |
| |
| 2015-01-29 Dmitry V. Levin <ldv@altlinux.org> |
| |
| getsockopt, setsockopt: do not decode structures in non-verbose mode. |
| Move the code that is common between getsockopt and setsockopt parsers |
| to a separate function. |
| Move printers specific to getsockopt and setsockopt to separate |
| functions, choose appropriate parsers depending on verbose mode. |
| Move parsers of specific socket options to separate functions. |
| |
| * net.c (printicmpfilter): Rename to print_icmp_filter. |
| (printsockopt): Remove. |
| (print_sockopt_fd_level_name, print_linger, print_ucred, |
| print_tpacket_stats, print_getsockopt, print_tpacket_req, |
| print_packet_mreq, print_setsockopt): New functions. |
| (sys_getsockopt, sys_setsockopt): Use them. |
| |
| 2015-01-28 Dmitry V. Levin <ldv@altlinux.org> |
| |
| sendmsg: do not decode msghdr in non-verbose mode. |
| * net.c (printmsghdr): Do not decode struct msghdr in non-verbose mode. |
| |
| decode_select: do not allocate unused memory. |
| * desc.c (decode_select): On entering syscall, do not allocate memory |
| in non-verbose mode. |
| |
| 2015-01-26 Dmitry V. Levin <ldv@altlinux.org> |
| |
| xattr: quote using print_quoted_string. |
| * xattr.c (print_xattr_val): Drop local quoting code, use |
| print_quoted_string. |
| |
| v4l2: quote pixelformat. |
| * v4l2.c (print_pixelformat): Output in quoted v4l2_fourcc() format. |
| |
| v4l2: quote strings. |
| * v4l2.c (v4l2_ioctl): Print strings using print_quoted_string. |
| |
| mips: quote sysmips nodename. |
| * sysmips.c (sys_sysmips): Print nodename using print_quoted_string. |
| |
| block_ioctl: quote strings. |
| * block.c (print_blkpg_req): Print blkpg_partition.devname and |
| blkpg_partition.volname using print_quoted_string. |
| (block_ioctl): Print blk_user_trace_setup.name using print_quoted_string. |
| |
| sys_uname: quote struct utsname members. |
| * uname.c (PRINT_UTS_MEMBER): New macro. |
| (sys_uname): Use them. |
| |
| sock_ioctl: quote network interface names. |
| * sock.c (print_ifname): New function. |
| (sock_ioctl): Use it to quote ifr_name, ifru_newname, and ifru_slave. |
| |
| printsock: quote network interface names. |
| * net.c (printsock): Print network interface names returned by |
| if_indextoname() using print_quoted_string. |
| |
| getdents, getdents64: quote filenames. |
| * dirent.c (print_old_dirent): Fix quoting. |
| (sys_getdents): Print d_name using print_quoted_string. |
| (sys_getdents64): Likewise. |
| * tests/getdents.test: Test it. |
| * tests/getdents.awk: Update. |
| |
| 2015-01-26 Dmitry V. Levin <ldv@altlinux.org> |
| |
| printfd: quote pathnames. |
| Change printfd() behaviour in show_fd_path mode to quote pathnames |
| the same way printpathn() does. |
| |
| * util.c (printfd): Print non-socket paths using print_quoted_string. |
| * tests/scm_rights-fd.test: Test it. |
| * tests/scm_rights.c: Update. |
| |
| 2015-01-26 Dmitry V. Levin <ldv@altlinux.org> |
| |
| Rework string_quote API. |
| string_quote() has proven to be too hard to use, replace it with |
| print_quoted_string() that does memory allocation and prints the result. |
| |
| * defs.h (string_quote): Remove. |
| (QUOTE_0_TERMINATED, QUOTE_OMIT_LEADING_TRAILING_QUOTES): New macros. |
| (print_quoted_string): New prototype. |
| * util.c (string_quote): Make static; take "style" flags instead |
| of "len", treat QUOTE_0_TERMINATED style flag as former (len == -1); |
| add QUOTE_OMIT_LEADING_TRAILING_QUOTES style flag support. |
| (ALLOCA_CUTOFF, use_alloca): New macros. |
| (print_quoted_string): New function. |
| (printpathn, printstr): Update to new API. |
| * loop.c (loop_ioctl): Likewise. |
| * mtd.c (ubi_ioctl): Likewise. |
| * net.c (print_scm_security): Likewise. |
| * socketutils.c (unix_parse_response): Likewise. |
| |
| 2015-01-24 Dmitry V. Levin <ldv@altlinux.org> |
| |
| avr32: fix typo in sys_timerfd syscall entry. |
| * linux/avr32/syscallent.h (timerfd): Change sys_name to "timerfd". |
| |
| hppa: fix typos in getresuid and getresgid syscall entries. |
| * linux/hppa/syscallent.h (getresuid): Change sys_func to sys_getresuid. |
| (getresgid): Change sys_func to sys_getresgid. |
| |
| 2015-01-24 Helge Deller <deller@gmx.de> |
| |
| hppa: fix typo in getpeername syscall entry. |
| This fixes an obvious typo which prints "lock" instead of "getpeername" |
| for the getpeername syscall. |
| |
| * linux/hppa/syscallent.h (getpeername): Change sys_name to "getpeername". |
| |
| 2015-01-24 Dmitry V. Levin <ldv@altlinux.org> |
| |
| Impove struct cmsghdr decoding. |
| Print all cmsghdr structures in msg_control array, |
| not just the first one. |
| Change output format to be consistent with other parts of strace |
| where structures and arrays are printed. |
| Implement decoder for SCM_SECURITY message type. |
| |
| * net.c (print_scm_rights, print_scm_creds, print_scm_security): |
| New functions. |
| (printcmsghdr): Use them. Iterate over all members of the array. |
| * xlat/scmvals.in: Add SCM_SECURITY. |
| * tests/scm_rights.c (main): Pass one more descriptor to the receiver. |
| Set SO_PASSCRED on the receiver part. Reserve enough space to receive |
| SCM_CREDENTIALS and SCM_RIGHTS. |
| * tests/scm_rights-fd.test: Update. |
| |
| 2015-01-24 Dmitry V. Levin <ldv@altlinux.org> |
| |
| Update SO_* constants. |
| * xlat/sockoptions.in: Add SO_DOMAIN, SO_MARK, SO_NOFCS, SO_PASSSEC, |
| SO_PROTOCOL, SO_RCVBUFFORCE, SO_SNDBUFFORCE, SO_TIMESTAMPING, |
| and SO_TIMESTAMPNS. |
| |
| 2015-01-24 Dmitry V. Levin <ldv@altlinux.org> |
| |
| tests: run tests for each supported personality. |
| When strace supports more than one personality, run test suite |
| for each personality supported by the host system. |
| |
| * bootstrap: Create tests-m32 and tests-mx32 subtrees from tests. |
| * configure.ac: Check for -m32 and -mx32 runtime support. |
| (AC_CONFIG_FILES): Add tests-m32/Makefile and tests-mx32/Makefile. |
| * Makefile.am [HAVE_M32_RUNTIME] (TESTS_M32): Define. |
| [HAVE_MX32_RUNTIME] (TESTS_MX32): Define. |
| (SUBDIRS): Add $(TESTS_M32) $(TESTS_MX32). |
| * .gitignore: Add /tests-m32 and /tests-mx32. |
| |
| 2015-01-24 Dmitry V. Levin <ldv@altlinux.org> |
| |
| Fix ILP32 personality struct cmsghdr decoding on LP64 architectures. |
| * net.c (union_cmsghdr): New union. |
| [SUPPORTED_PERSONALITIES > 1 && SIZEOF_LONG > 4] (cmsghdr32): New structure. |
| (printcmsghdr): Properly handle the case of current_wordsize < sizeof(long). |
| |
| Fix ILP32 personality preadv/pwritev offset decoding on LP64 architectures |
| * io.c (print_llu_from_low_high_val) [SIZEOF_LONG == SIZEOF_LONG_LONG |
| && SUPPORTED_PERSONALITIES > 1]: Properly handle the case of |
| current_wordsize < sizeof(long). |
| |
| 2015-01-22 Dmitry V. Levin <ldv@altlinux.org> |
| |
| ioctl: take all 32 bits of ioctl commands into account. |
| Historically, only 16 bits (8-bit number and 8-bit type) of 32-bit ioctl |
| commands were used for decoding, which was the source for numerous |
| annoying collisions like this: |
| |
| ioctl(0, SNDCTL_TMR_TIMEBASE or SNDRV_TIMER_IOCTL_NEXT_DEVICE or TCGETS, {B38400 opost isig icanon echo ...}) = 0 |
| ioctl(0, MGSL_IOCGPARAMS or MMTIMER_GETRES or MTIOCTOP or SNDCTL_MIDI_MPUMODE, 0x7fffd47f7338) = -1 ENOTTY (Inappropriate ioctl for device) |
| |
| The solution is to use all 32 bits for decoding, not just "number" and |
| "type", but also "size" and "direction". |
| |
| As some architectures override defaults that come from asm-generic/ and |
| provide alternative definitions for some ioctl commands, we support |
| per-architecture ioctl definitions and merge them with common |
| definitions at build time. During the merge, we used to keep both |
| generic and architecture-specific definitions, now architecture-specific |
| definitions have precedence over generic ones -- ioctlsort omits |
| definitions from asm-generic/ for those ioctl names that have different |
| definitions in asm/. |
| |
| Additional bits of "direction" are architecture specific -- the number |
| of bits and their values differ between architectures. To reduce |
| architecture differences in the source code, we keep "direction" in |
| symbolic form and compile it in ioctlsort. |
| |
| Additional bits of "size" are also architecture specific -- not only the |
| number of bits differ between architectures, but sizes of many types |
| depend on sizeof(long). To reduce architecture differences in the |
| source code, we keep 32-bit and 64-bit versions of common ioctl |
| definitions, and use the appropriate version for each architecture and |
| personality. |
| |
| To implement this, the tools for generating ioctl definitions from |
| kernel headers have been rewritten, and the source format of ioctl |
| definitions has been extended. The final ioctlent*.h files that are |
| included by syscall.c are now generated from source ioctls_inc*.h and |
| ioctls_arch*.h files at build time with ioctlsort. |
| |
| * ioctl.c (ioctl_lookup): Use all 32 bits of ioctl command code. |
| * ioctlsort.c: Rewritten. |
| * linux/32/ioctls_inc.h: New file. |
| * linux/64/ioctls_inc.h: New file. |
| * linux/aarch64/ioctls_arch0.h: New file. |
| * linux/aarch64/ioctls_arch1.h: New file. |
| * linux/aarch64/ioctls_inc0.h: New file. |
| * linux/aarch64/ioctls_inc1.h: New file. |
| * linux/alpha/ioctls_arch0.h: New file. |
| * linux/alpha/ioctls_inc0.h: New file. |
| * linux/arc/ioctls_arch0.h: New file. |
| * linux/arc/ioctls_inc0.h: New file. |
| * linux/arm/ioctls_arch0.h: New file. |
| * linux/arm/ioctls_inc0.h: New file. |
| * linux/avr32/ioctls_arch0.h: New file. |
| * linux/avr32/ioctls_inc0.h: New file. |
| * linux/bfin/ioctls_arch0.h: New file. |
| * linux/bfin/ioctls_inc0.h: New file. |
| * linux/hppa/ioctls_arch0.h: New file. |
| * linux/hppa/ioctls_inc0.h: New file. |
| * linux/i386/ioctls_arch0.h: New file. |
| * linux/i386/ioctls_inc0.h: New file. |
| * linux/ia64/ioctls_arch0.h: New file. |
| * linux/ia64/ioctls_inc0.h: New file. |
| * linux/m68k/ioctls_arch0.h: New file. |
| * linux/m68k/ioctls_inc0.h: New file. |
| * linux/metag/ioctls_arch0.h: New file. |
| * linux/metag/ioctls_inc0.h: New file. |
| * linux/microblaze/ioctls_arch0.h: New file. |
| * linux/microblaze/ioctls_inc0.h: New file. |
| * linux/mips/ioctls_arch0.h: New file. |
| * linux/mips/ioctls_inc0.h: New file. |
| * linux/or1k/ioctls_arch0.h: New file. |
| * linux/or1k/ioctls_inc0.h: New file. |
| * linux/powerpc/ioctls_arch0.h: New file. |
| * linux/powerpc/ioctls_inc0.h: New file. |
| * linux/powerpc64/ioctls_arch0.h: New file. |
| * linux/powerpc64/ioctls_arch1.h: New file. |
| * linux/powerpc64/ioctls_inc0.h: New file. |
| * linux/powerpc64/ioctls_inc1.h: New file. |
| * linux/s390/ioctls_arch0.h: New file. |
| * linux/s390/ioctls_inc0.h: New file. |
| * linux/s390x/ioctls_arch0.h: New file. |
| * linux/s390x/ioctls_inc0.h: New file. |
| * linux/sh/ioctls_arch0.h: New file. |
| * linux/sh/ioctls_inc0.h: New file. |
| * linux/sh64/ioctls_arch0.h: New file. |
| * linux/sh64/ioctls_inc0.h: New file. |
| * linux/sparc/ioctls_arch0.h: New file. |
| * linux/sparc/ioctls_inc0.h: New file. |
| * linux/sparc64/ioctls_arch0.h: New file. |
| * linux/sparc64/ioctls_arch2.h: New file. |
| * linux/sparc64/ioctls_inc0.h: New file. |
| * linux/sparc64/ioctls_inc2.h: New file. |
| * linux/tile/ioctls_arch0.h: New file. |
| * linux/tile/ioctls_arch1.h: New file. |
| * linux/tile/ioctls_inc0.h: New file. |
| * linux/tile/ioctls_inc1.h: New file. |
| * linux/x32/ioctls_arch0.h: New file. |
| * linux/x32/ioctls_arch1.h: New file. |
| * linux/x32/ioctls_inc0.h: New file. |
| * linux/x32/ioctls_inc1.h: New file. |
| * linux/x86_64/ioctls_arch0.h: New file. |
| * linux/x86_64/ioctls_arch1.h: New file. |
| * linux/x86_64/ioctls_inc0.h: New file. |
| * linux/x86_64/ioctls_inc1.h: New file. |
| * linux/xtensa/ioctls_arch0.h: New file. |
| * linux/xtensa/ioctls_inc0.h: New file. |
| * linux/aarch64/ioctlent.h.in: Remove. |
| * linux/aarch64/ioctlent1.h: Remove. |
| * linux/alpha/ioctlent.h.in: Remove. |
| * linux/arc/ioctlent.h.in: Remove. |
| * linux/arm/ioctlent.h.in: Remove. |
| * linux/avr32/ioctlent.h.in: Remove. |
| * linux/bfin/ioctlent.h.in: Remove. |
| * linux/hppa/ioctlent.h.in: Remove. |
| * linux/i386/ioctlent.h.in: Remove. |
| * linux/ia64/ioctlent.h.in: Remove. |
| * linux/ioctlent.h.in: Remove. |
| * linux/ioctlent.sh: Remove. |
| * linux/m68k/ioctlent.h.in: Remove. |
| * linux/metag/ioctlent.h.in: Remove. |
| * linux/microblaze/ioctlent.h.in: Remove. |
| * linux/mips/ioctlent.h.in: Remove. |
| * linux/mips/ioctlent.sh: Remove. |
| * linux/or1k/ioctlent.h.in: Remove. |
| * linux/powerpc/ioctlent.h.in: Remove. |
| * linux/powerpc64/ioctlent.h: Remove. |
| * linux/powerpc64/ioctlent1.h: Remove. |
| * linux/s390/ioctlent.h.in: Remove. |
| * linux/s390x/ioctlent.h.in: Remove. |
| * linux/sh/ioctlent.h.in: Remove. |
| * linux/sh64/ioctlent.h.in: Remove. |
| * linux/sparc/ioctlent.h.in: Remove. |
| * linux/sparc64/ioctlent.h.in: Remove. |
| * linux/sparc64/ioctlent2.h: Remove. |
| * linux/tile/ioctlent.h.in: Remove. |
| * linux/tile/ioctlent1.h: Remove. |
| * linux/x32/ioctlent.h.in: Remove. |
| * linux/x32/ioctlent1.h: Remove. |
| * linux/x86_64/ioctlent.h.in: Remove. |
| * linux/x86_64/ioctlent1.h: Remove. |
| * linux/xtensa/ioctlent.h.in: Remove. |
| * linux/x86_64/ioctlent2.h: Include ioctlent0.h instead of ioctlent.h. |
| * syscall.c (struct_ioctlent ioctlent0): Likewise. |
| * Makefile.am: Remove all ioctlent-related definitions. |
| Define the list of ioctlent*.h files that have to be generated by |
| presence of $(srcdir)/$(OS)/$(ARCH)/ioctls_inc*.h files. |
| Add rules for ioctlent*.h files generation. |
| (EXTRA_DIST): Update. |
| * maint/ioctls_gen.sh: New file. |
| * maint/ioctls_hex.sh: New file. |
| * maint/ioctls_sym.sh: New file. |
| * maint/print_ioctlent.c: New file. |
| * HACKING-scripts: Update for ioctlent.sh -> ioctls_gen.sh migration. |
| * .gitignore: Add ioctlent[012].h and ioctls_all[012].h. |
| * configure.ac (AC_CHECK_HEADERS): Add linux/hiddev.h |
| and linux/mmtimer.h for tests. |
| * tests/ioctl.c: New file. |
| * tests/ioctl.test: New test. |
| * tests/Makefile.am (check_PROGRAMS): Add ioctl. |
| (TESTS): Add ioctl.test. |
| * tests/.gitignore: Add ioctl. |
| |
| 2015-01-21 Gabriel Laskar <gabriel@lse.epita.fr> |
| |
| ioctl: add decoding for parametrized command names. |
| Some ioctl commands from evdev, hiddev, mixer, uinput, spi, and joystick |
| are parametrized by a size or a number that are variable. This change |
| implements printing of these parametrized ioctl command names. |
| |
| * configure.ac (AC_CHECK_HEADERS): Add linux/input.h. |
| * defs.h (ioctl_decode_number): New prototype. |
| * io.c (sys_ioctl): Use ioctl_decode_number. |
| * ioctl.c (ioctl_decode_number): New function. |
| * xlat/evdev_abs.in: New file. |
| * xlat/evdev_ev.in: New file. |
| |
| 2015-01-21 Dmitry V. Levin <ldv@altlinux.org> |
| |
| Update auxiliary maintainer mode build tools. |
| * git-set-file-times: Update from rsync. |
| * git-version-gen: Update from gnulib. |
| * gitlog-to-changelog: Likewise. |
| |
| Update warnings.m4. |
| * m4/warnings.m4: Update from gnulib. |
| |
| 2015-01-21 Dmitry V. Levin <ldv@altlinux.org> |
| |
| powerpc64: maintain own linux/powerpc64 subdirectory. |
| Most architectures supported by strace have their own subdirectory in |
| linux directory, but powerpc64 didn't, causing inconveniences. |
| |
| * configure.ac (arch): Define to "powerpc64" on powerpc64. |
| * linux/powerpc/errnoent1.h: Move to linux/powerpc64/. |
| * linux/powerpc/ioctlent1.h: Likewise. |
| * linux/powerpc/signalent1.h: Likewise. |
| * linux/powerpc/syscallent1.h: Likewise. |
| * linux/powerpc64/ioctlent.h: New file. |
| * linux/powerpc64/syscallent.h: Likewise. |
| * linux/powerpc64/userent.h: Likewise. |
| * Makefile.am (EXTRA_DIST): Remove linux/powerpc/ioctlent1.h, |
| linux/powerpc/syscallent1.h, linux/powerpc/errnoent1.h, and |
| linux/powerpc/signalent1.h; added linux/powerpc64/errnoent1.h, |
| linux/powerpc64/ioctlent.h, linux/powerpc64/ioctlent1.h, |
| linux/powerpc64/signalent1.h, linux/powerpc64/syscallent.h, |
| linux/powerpc64/syscallent1.h, and linux/powerpc64/userent.h. |
| |
| 2015-01-21 Dmitry V. Levin <ldv@altlinux.org> |
| |
| configure.ac: remove unused AC_INCLUDEDIR. |
| * configure.ac (AC_INCLUDEDIR): Remove. |
| * m4/includedir.m4: Remove. |
| |
| ioctl: print unrecognized ioctl codes in _IOC(dir,type,nr,size) format. |
| * defs.h (ioctl_print_code): New prototype. |
| * ioctl.c: Include xlat/ioctl_dirs.h. |
| (ioctl_print_code): New function. |
| * io.c (sys_ioctl): Use it. |
| * xlat/ioctl_dirs.in: New file. |
| |
| 2015-01-20 Dmitry V. Levin <ldv@altlinux.org> |
| |
| ioctl: assume that all ioctl commands have unsigned int type. |
| In linux, ioctl command number has a 32-bit unsigned integer type: |
| fs/ioctl.c:SYSCALL_DEFINE3(ioctl, unsigned int, fd, unsigned int, cmd, unsigned long, arg) |
| If the kernel completely ignores other bits on 64-bit architectures, |
| why should strace care? |
| Let's follow the kernel and treat it as unsigned int. |
| |
| * defs.h (struct_ioctlent): Change "code" type to "unsigned int". |
| (ioctl_decode, ioctl_lookup, block_ioctl, loop_ioctl, mtd_ioctl, |
| ubi_ioctl, ptp_ioctl, scsi_ioctl, sock_ioctl, term_ioctl, rtc_ioctl, |
| v4l2_ioctl): Likewise. |
| * ioctl.c (ioctl_decode, ioctl_lookup, compare, ioctl_next_match): |
| Likewise. |
| * block.c (block_ioctl): Likewise. |
| * loop.c (loop_ioctl): Likewise. |
| * mtd.c (mtd_ioctl, ubi_ioctl): Likewise. |
| * ptp.c (ptp_ioctl): Likewise. |
| * scsi.c (scsi_ioctl): Likewise. |
| * sock.c (sock_ioctl): Likewise. |
| * term.c (term_ioctl): Likewise. |
| * time.c (rtc_ioctl): Likewise. |
| * v4l2.c (v4l2_ioctl): Likewise. |
| * ioctlsort.c (struct ioctlent, compare, main): Likewise. |
| |
| 2015-01-16 Dmitry V. Levin <ldv@altlinux.org> |
| |
| ioctlent.sh: cleanup regexps that are used to fetch bases. |
| |
| ioctlent.sh: sync lookup regexps that are used in grep and sed. |
| ioctlent.sh looks for ioctl command names using grep, and fetches them |
| with their definitions using sed. Historically, lookup regexps used in |
| grep and sed are slightly different, which makes the script more |
| complicated than necessary. |
| |
| qemu_multiarch_testing: update. |
| * qemu_multiarch_testing/.gitignore: New file. |
| * qemu_multiarch_testing/README: Update statistics. |
| * qemu_multiarch_testing/hdc.dir/init2: Run "make check". |
| * qemu_multiarch_testing/make-hdc-img.sh: Robustify, |
| automatically calculate hdc image size. |
| * qemu_multiarch_testing/parallel-build-hdc-img.sh: Reduce |
| hdb image size. Report completion of each parallelized task. |
| |
| 2015-01-14 Dmitry V. Levin <ldv@altlinux.org> |
| |
| tests: add IPC_STAT to ipc tests, workaround limitiations of old kernels |
| * tests/ipc_msg.c: Include <errno.h>. |
| (main): Add a test call with IPC_STAT, handle old kernels MSG_STAT behaviour. |
| * tests/ipc_sem.c: Include <errno.h>. |
| (main): Add a test call with IPC_STAT, handle old kernels SEM_STAT behaviour. |
| * tests/ipc_shm.c: Include <errno.h>. |
| (main): Add a test call with IPC_STAT, handle old kernels SHM_STAT behaviour. |
| |
| Change length type of umoven and umovestr to unsigned. |
| * defs.h (umoven, umovestr): Change type of 3rd argument from "int" |
| to "unsigned int". |
| * util.c (umoven, umovestr): Likewise. Adjust the code appropriately. |
| |
| tests: skip sendmmsg/recvmmsg test if these syscalls are not implemented in kernel |
| * tests/mmsg.c: #include <errno.h> |
| (main): Return 77 if sendmmsg failed with ENOSYS. |
| |
| tests: skip ip network tests when the network is not functional. |
| * tests/inet-accept-connect-send-recv.c (main): Return 77 if inet stream |
| socket cannot be created or it cannot be bound to INADDR_LOOPBACK. |
| * tests/net-yy.test: Skip the test if inet-accept-connect-send-recv |
| returns 77. |
| |
| tests: handle the case when all 64 process capability bits are set. |
| * tests/caps.awk: Handle the case when all bits of 64-bit capability |
| word are set. |
| |
| tests: explicitly request gawk when using gawk features. |
| * tests/uid.test: Check for gawk availability and invoke gawk instead of |
| plain awk because the test uses gawk's match() feature. |
| |
| tests: skip detach tests if kill does not work. |
| * tests/detach-running.test: Skip if "kill -0" does not work. |
| * tests/detach-sleeping.test: Likewise. |
| * tests/detach-stopped.test: Likewise. |
| |
| ARM OABI: fix potential compilation warning. |
| * syscall.c (get_scno) [!__ARM_EABI__ || ENABLE_ARM_OABI]: Fix |
| "comparison between signed and unsigned" warning reported by some |
| gcc versions. |
| |
| powerpc: fix potential compilation warning. |
| * mem.c [POWERPC] (sys_subpage_prot): Fix "comparison between signed |
| and unsigned" warning reported by some gcc versions. |
| |
| 2015-01-13 Dmitry V. Levin <ldv@altlinux.org> |
| |
| sparc, sparc64: remove ioctl header file names from solaris ioctl entries |
| Starting with commit v4.9-27-g3e252ca, header file names should not be |
| part of ioctlent files included by syscall.c |
| |
| * linux/sparc/ioctlent1.h: Remove ioctl header file names. |
| * linux/sparc64/ioctlent2.h: Remove all entries, include "ioctlent.h". |
| |
| 2015-01-13 Dmitry V. Levin <ldv@altlinux.org> |
| |
| mips: enable indirect ipc subcall support. |
| * linux/mips/syscallent-n32.h [LINUX_MIPSN32]: Define SYS_socket_subcall, |
| include "subcall.h". |
| * linux/mips/syscallent-n64.h [LINUX_MIPSN64]: Likewise. |
| * linux/mips/syscallent-o32.h [LINUX_MIPSO32]: Likewise. |
| |
| mips: remove stub entries from syscallent files, generate stubs at build time |
| * linux/mips/genstub.sh: New file. |
| * Makefile.am (EXTRA_DIST): Add it. |
| * configure.ac [MIPS]: Use it to generate syscallent stubs. |
| * linux/mips/.gitignore: Add syscallent stubs. |
| * linux/mips/syscallent-n32.h: Remove stub entries, include |
| the stub file instead. |
| * linux/mips/syscallent-n64.h: Likewise. |
| * linux/mips/syscallent-o32.h: Likewise. |
| |
| build: add $(builddir)/$(OS)/$(ARCH) to the headers search list. |
| * Makefile.am (AM_CPPFLAGS): Add -I$(builddir)/$(OS)/$(ARCH) before |
| -I$(srcdir)/$(OS)/$(ARCH). |
| |
| build: fix build if siginfo_t lacks si_timerid/si_overrun. |
| * configure.ac (AC_CHECK_MEMBERS): Check for siginfo_t.si_timerid and |
| siginfo_t.si_overrun. |
| * signal.c (printsiginfo) [SI_TIMER]: Check HAVE_SIGINFO_T_SI_TIMERID |
| and HAVE_SIGINFO_T_SI_OVERRUN. |
| |
| configure.ac: remove unused AM_CONDITIONAL expressions. |
| * configure.ac (AM_CONDITIONAL): Remove I386, X86_64, X32. |
| |
| tests: portability fixes. |
| * tests/stat.test: dd obs= is not portable, use bs= instead. |
| * tests/stat32-v.test: Likewise. |
| * tests/stat64-v.test: Likewise. |
| * tests/net.test: Use $* instead of $@ in the quoted string. |
| * tests/net-fd.test: Likewise. |
| * tests/statfs.test: Quote { and } in regexps. |
| * tests/caps.awk: Likewise. |
| * tests/getdents.awk: Likewise. |
| * tests/net-yy-accept.awk: Likewise. |
| * tests/net-yy-connect.awk: Likewise. |
| * tests/sigaction.awk: Likewise. |
| * tests/unix-yy-accept.awk: Likewise. |
| * tests/unix-yy-connect.awk: Likewise. |
| |
| 2015-01-12 Dmitry V. Levin <ldv@altlinux.org> |
| |
| Wire up new syscalls. |
| * linux/dummy.h (sys_bpf, sys_execveat, sys_getrandom, |
| sys_kexec_file_load, sys_memfd_create, sys_seccomp): New stub aliases. |
| * linux/32/syscallent.h (seccomp, getrandom, memfd_create, bpf, |
| execveat): New entries. |
| * linux/64/syscallent.h: Likewise. |
| * linux/arm/syscallent.h: Likewise. |
| * linux/hppa/syscallent.h: Likewise. |
| * linux/i386/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/sparc/syscallent.h: Likewise. |
| * linux/ia64/syscallent.h (getrandom, memfd_create, bpf, execveat): |
| New entries. |
| * linux/m68k/syscallent.h: Likewise. |
| * linux/s390/syscallent.h: (seccomp, getrandom, memfd_create, bpf, |
| s390_pci_mmio_write, s390_pci_mmio_read, execveat): New entries. |
| * linux/s390x/syscallent.h: Likewise. |
| * linux/x86_64/syscallent.h (seccomp, getrandom, memfd_create, |
| kexec_file_load, bpf, execveat): New entries. |
| * linux/x32/syscallent.h: Likewise. |
| * linux/xtensa/syscallent.h (seccomp, getrandom, memfd_create): |
| New entries. |
| |
| 2015-01-12 Dmitry V. Levin <ldv@altlinux.org> |
| |
| s390x: adjust some syscall entries. |
| According to linux/arch/s390/include/uapi/asm/unistd.h, readdir is |
| defined both on s390 and s390x, while getrlimit, _llseek, sendfile64, |
| and fadvise64_64 are defined on s390 only. |
| |
| * linux/s390x/syscallent.h (readdir): Add. |
| (getrlimit, _llseek, sendfile64, fadvise64_64): Remove. |
| |
| 2015-01-12 Dmitry V. Levin <ldv@altlinux.org> |
| |
| Change syscallent.h files to use designated initializers. |
| Automatically convert all linux syscallent.h files to a form that uses |
| designated initializers, with subsequent correction of whitespace |
| indentation. |
| |
| * linux/alpha/syscallent.h: Use designated initializers. |
| * linux/arm/syscallent.h: Likewise. |
| * linux/avr32/syscallent.h: Likewise. |
| * linux/bfin/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/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/x32/syscallent.h: Likewise. |
| * linux/x86_64/syscallent.h: Likewise. |
| * linux/xtensa/syscallent.h: Likewise. |
| |
| 2015-01-12 Dmitry V. Levin <ldv@altlinux.org> |
| |
| Create generic 32-bit syscallent.h. |
| Since arc/syscallent.h, metag/syscallent.h, or1k/syscallent.h, and |
| tile/syscallent1.h share a lot of identical syscall entries described in |
| <asm-generic/unistd.h>, move these entries to a new file 32/syscallent.h |
| using the following automated conversion with subsequent correction of |
| whitespace indentation: |
| |
| sed -e 's|^[[:space:]]*\({[^}]\+},\)[[:space:]]*/\*[[:space:]]\([[:space:]]*[0-9]\+\)[[:space:]]*\*/|[\2] = \1|' -e '/^[[:space:]]*\[[[:space:]]*2\(4[4-9]\|5[0-9]\)/d' linux/arc/syscallent.h |
| |
| * linux/32/syscallent.h: New file. |
| * Makefile.am (EXTRA_DIST): Add it. |
| * linux/arc/syscallent.h: Include "32/syscallent.h", |
| remove generic 32-bit syscall entries, use designated initializers. |
| * linux/metag/syscallent.h: Likewise. |
| * linux/or1k/syscallent.h: Likewise. |
| * linux/tile/syscallent1.h: Likewise. |
| |
| 2015-01-12 Dmitry V. Levin <ldv@altlinux.org> |
| |
| tile: fix syscall entries. |
| * linux/tile/syscallent1.h (truncate64, ftruncate64): Change nargs to 3. |
| (pread64, pwrite64): Change nargs to 5. |
| (llseek): Change sys_name to _llseek. |
| |
| s390: fix fadvise64 and fadvise64_64 syscall entries. |
| * linux/s390/syscallent.h (fadvise64, fadvise64_64): Change sys_func to |
| printargs until special parsers for 31-bit 31 s390 emulation wrappers |
| are written. |
| |
| alpha: fix fadvise64 syscall entry. |
| * linux/alpha/syscallent.h (fadvise64): Change sys_name to fadvise64. |
| |
| tile: fix fadvise64_64 syscall entry. |
| * linux/tile/syscallent1.h (fadvise64_64): Fix nargs, sys_func, |
| and sys_name. |
| |
| Fix getrlimit and ugetrlimit syscall entries. |
| * linux/arm/syscallent.h (getrlimit, ugetrlimit): Fix sys_name. |
| * linux/i386/syscallent.h: Likewise. |
| * linux/m68k/syscallent.h: Likewise. |
| * linux/microblaze/syscallent.h: Likewise. |
| * linux/powerpc/syscallent.h: Likewise. |
| * linux/avr32/syscallent.h (getrlimit): Fix sys_name. |
| * linux/or1k/syscallent.h: Likewise. |
| * linux/s390/syscallent.h (ugetrlimit): Fix sys_name. |
| * linux/sh/syscallent.h: Likewise. |
| * linux/sh64/syscallent.h: Likewise. |
| |
| Fix umount and umount2 syscall entries. |
| * linux/aarch64/syscallent1.h (umount): Change nargs to 1. |
| * linux/avr32/syscallent.h: Likewise. |
| * linux/xtensa/syscallent.h: Likewise. |
| * linux/ia64/syscallent.h (umount2): Change nargs to 2. |
| * linux/arm/syscallent.h (umount, umount2): Fix sys_name. |
| * linux/bfin/syscallent.h: Likewise. |
| * linux/i386/syscallent.h: Likewise. |
| * linux/m68k/syscallent.h: Likewise. |
| * linux/microblaze/syscallent.h: Likewise. |
| * linux/powerpc/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/metag/syscallent.h: (umount2): Fix sys_name. |
| * linux/or1k/syscallent.h: Likewise. |
| * linux/x32/syscallent.h: Likewise. |
| * linux/x86_64/syscallent.h: Likewise. |
| |
| Fix sendfile64 syscall entries. |
| * linux/arc/syscallent.h (sendfile64): Change sys_name to sendfile64. |
| * linux/metag/syscallent.h: Likewise. |
| * linux/or1k/syscallent.h: Likewise. |
| |
| Fix number of arguments in ipc family syscall entries. |
| * linux/64/syscallent.h (msgget, semget, semtimedop, semop, shmget, |
| shmctl, shmat, shmdt): Fix nargs for direct ipc syscalls. |
| * linux/alpha/syscallent.h (msgctl, msgget, msgrcv, semget, shmctl, |
| shmdt, shmget, semtimedop): Likewise. |
| * linux/avr32/syscallent.h (msgget, semget, semop, semtimedop, shmat, |
| shmget, shmdt, shmctl): Likewise. |
| * linux/bfin/syscallent.h (semget, semop, msgctl, msgget, msgrcv, shmat, |
| * shmctl, shmdt, shmget, semtimedop): Likewise. |
| * linux/hppa/syscallent.h (semop, semget, msgrcv, msgget, msgctl, |
| semtimedop): Likewise. |
| * linux/microblaze/syscallent.h (semtimedop, semget, semop, msgctl, |
| msgget, msgrcv, shmat, shmctl, shmdt, shmget): Likewise. |
| * linux/ia64/syscallent.h (semtimedop): Likewise. |
| * linux/mips/syscallent-n32.h (semtimedop): Likewise. |
| * linux/mips/syscallent-n64.h (semtimedop): Likewise. |
| * linux/or1k/syscallent.h (msgget, msgctl, msgrcv, semget, semtimedop, |
| semop, shmget, shmctl, shmat, shmdt): Likewise. |
| * linux/sh64/syscallent.h (semget, msgget, shmget): Likewise. |
| * linux/tile/syscallent1.h (msgget, semget, semtimedop, semop, shmget, |
| shmctl, shmat, shmdt): Likewise. |
| * linux/x32/syscallent.h (shmget, shmat, shmctl, semget, semop, shmdt, |
| msgget, semtimedop): Likewise. |
| * linux/x86_64/syscallent.h (shmget, shmat, shmctl, semget, semop, |
| shmdt, msgget, semtimedop): Likewise. |
| * linux/xtensa/syscallent.h (shmget, shmat, shmctl, shmdt, semtimedop, |
| semget, semop, msgget, msgrcv, msgctl): Likewise. |
| |
| 2015-01-12 Dmitry V. Levin <ldv@altlinux.org> |
| |
| Create generic 64-bit syscallent.h. |
| Since aarch64/syscallent1.h and tile/syscallent.h share a lot of |
| identical syscall entries described in <asm-generic/unistd.h>, move |
| these entries to a new file 64/syscallent.h using the following |
| automated conversion with subsequent correction of whitespace |
| indentation: |
| |
| sed -e 's|^[[:space:]]*\({[^}]\+},\)[[:space:]]*/\*[[:space:]]\([[:space:]]*[0-9]\+\)[[:space:]]*\*/|[\2] = \1|' -e '/^\[[[:space:]]*2\(4[4-9]\|5[0-9]\)\]/d' linux/tile/syscallent.h |
| |
| * linux/64/syscallent.h: New file. |
| * Makefile.am (EXTRA_DIST): Add it. |
| * linux/aarch64/syscallent1.h: Include "64/syscallent.h", |
| remove generic 64-bit syscall entries, use designated initializers. |
| * linux/tile/syscallent.h: Likewise. |
| |
| 2015-01-12 Dmitry V. Levin <ldv@altlinux.org> |
| |
| Fix nfsservctl syscall entries. |
| * linux/arc/syscallent.h (nfsservctl): Set nargs, sys_func, and sys_name. |
| * linux/metag/syscallent.h: Likewise. |
| |
| Add missing syscall entries for sched_[gs]etattr and renameat2. |
| * linux/alpha/syscallent.h (sched_setattr, sched_getattr, renameat2): |
| New syscall entries. |
| * linux/arc/syscallent.h: Likewise. |
| * linux/metag/syscallent.h: Likewise. |
| * linux/or1k/syscallent.h: Likewise. |
| * linux/tile/syscallent.h: Likewise. |
| * linux/tile/syscallent1.h: Likewise. |
| |
| Fix NUMA related syscall entries. |
| * linux/alpha/syscallent.h (mbind, get_mempolicy, set_mempolicy): |
| Set sys_func. |
| * linux/hppa/syscallent.h (mbind, get_mempolicy, set_mempolicy): |
| Fix nargs, set sys_func. |
| * linux/microblaze/syscallent.h (mbind): Fix nargs. |
| * linux/mips/syscallent-n32.h (move_pages): Set sys_func. |
| * linux/mips/syscallent-n64.h (move_pages): Likewise. |
| * linux/mips/syscallent-o32.h (mbind): Fix nargs. |
| * linux/or1k/syscallent.h (migrate_pages): Likewise. |
| * linux/powerpc/syscallent.h (migrate_pages): Likewise. |
| * linux/sh/syscallent.h (mbind): Likewise. |
| * linux/sh64/syscallent.h (mbind): Likewise. |
| |
| xtensa: fix syscall entries. |
| * linux/xtensa/syscallent.h (sendmmsg): Fix sys_func and sys_name. |
| (restart_syscall, io_setup, io_destroy, io_submit, io_getevents, |
| io_cancel, add_key, request_key, keyctl): Set sys_func. |
| (migrate_pages, mbind, get_mempolicy, set_mempolicy, move_pages, |
| fstatat64): Fix nargs. |
| (renameat2): New entry. |
| |
| Fix sched_setparam syscall entries. |
| * linux/aarch64/syscallent1.h (sched_setparam): Change nargs to 2. |
| * linux/arm/syscallent.h (sched_setparam): Likewise. |
| * linux/avr32/syscallent.h (sched_setparam): Likewise. |
| * linux/bfin/syscallent.h (sched_setparam): Likewise. |
| * linux/i386/syscallent.h (sched_setparam): Likewise. |
| * linux/m68k/syscallent.h (sched_setparam): Likewise. |
| * linux/microblaze/syscallent.h (sched_setparam): Likewise. |
| * linux/s390/syscallent.h (sched_setparam): Likewise. |
| * linux/s390x/syscallent.h (sched_setparam): Likewise. |
| * linux/sh/syscallent.h (sched_setparam): Likewise. |
| * linux/sh64/syscallent.h (sched_setparam): Likewise. |
| * linux/tile/syscallent.h (sched_setparam): Likewise. |
| * linux/tile/syscallent1.h (sched_setparam): Likewise. |
| * linux/x32/syscallent.h (sched_setparam): Likewise. |
| * linux/x86_64/syscallent.h (sched_setparam): Likewise. |
| |
| arc: fix fanotify_mark syscall entry. |
| * linux/arc/syscallent.h (fanotify_mark): Change nargs to 6. |
| |
| ia64: add fallocate syscall entry. |
| * linux/ia64/syscallent.h (fallocate): Add syscall entry. |
| |
| Fix lookup_dcookie syscall entries. |
| * linux/s390/syscallent.h (lookup_dcookie): Add syscall entry. |
| * linux/s390x/syscallent.h (lookup_dcookie): Likewise. |
| * linux/tile/syscallent.h (lookup_dcookie): Change nargs to 3. |
| * linux/x32/syscallent.h (lookup_dcookie): Likewise. |
| |
| aarch64: fix syscall names for statfs, fstatfs, truncate, and ftruncate. |
| * linux/aarch64/syscallent1.h (statfs, fstatfs, truncate, ftruncate): |
| Use correct syscall names. |
| |
| aarch64: fix mlock syscall entry. |
| * linux/aarch64/syscallent1.h (mlock): Change to mlock entry. |
| |
| sh, sh64: fix mlock syscall entry. |
| * linux/sh/syscallent.h (mlock): Change nargs to 2. |
| * linux/sh64/syscallent.h (mlock): Likewise. |
| |
| tile: fix swapon syscall entries. |
| * linux/tile/syscallent.h (swapon): Change nargs to 2. |
| * linux/tile/syscallent1.h (swapon): Likewise. |
| |
| 2015-01-12 Dmitry V. Levin <ldv@altlinux.org> |
| |
| ARM EABI: reserve some space for new syscalls. |
| Reserve the same space for new syscalls on EABI as it is already |
| reserved on OABI. |
| |
| * linux/arm/syscallent.h [__ARM_EABI__] (ARM_FIRST_SHUFFLED_SYSCALL): |
| Raise to 400. |
| |
| 2015-01-12 Dmitry V. Levin <ldv@altlinux.org> |
| |
| arm: rewrite shuffle_scno in a bit more readable way. |
| * linux/arm/syscallent.h: Define ARM_FIRST_SHUFFLED_SYSCALL instead of |
| ARM_LAST_ORDINARY_SYSCALL. |
| * syscall.c [ARM || AARCH64] (shuffle_scno): Update. |
| |
| tests: add tests for ipc syscalls decoding. |
| * tests/ipc_msg.c: New file. |
| * tests/ipc_sem.c: Likewise. |
| * tests/ipc_shm.c: Likewise. |
| * tests/ipc_msg.test: New test. |
| * tests/ipc_sem.test: Likewise. |
| * tests/ipc_shm.test: Likewise. |
| * tests/Makefile.am (check_PROGRAMS): Add ipc_msg, ipc_sem, and ipc_shm. |
| (TESTS): Add ipc_msg.test, ipc_sem.test, and ipc_shm.test. |
| * tests/.gitignore: Add ipc_msg, ipc_sem, and ipc_shm. |
| |
| 2015-01-12 Dmitry V. Levin <ldv@altlinux.org> |
| |
| Fix indirect ipc subcall handling. |
| indirect_ipccall used to guess whether currently decoded ipc syscall is |
| an indirect subcall or not based on generic knowledge, while there is a |
| robust method to identify indirect ipc subcalls. |
| |
| * defs.h (TRACE_INDIRECT_SUBCALL): New flag. |
| * ipc.c (indirect_ipccall): Check it. |
| * linux/subcall.h: Set it. |
| |
| 2015-01-12 Dmitry V. Levin <ldv@altlinux.org> |
| |
| Move socket and ipc subcall entries to subcall.h. |
| Syscall entries for socket and ipc subcalls are the same on all |
| architectures, or at least they should be the same, so move them |
| to the single file. |
| |
| * linux/subcall.h: Add syscall entries for socket and ipc subcalls. |
| * linux/arm/syscallent.h: Remove entries for socket and ipc subcalls. |
| * linux/i386/syscallent.h: Likewise. |
| * linux/m68k/syscallent.h: Likewise. |
| * linux/powerpc/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. |
| |
| 2015-01-12 Dmitry V. Levin <ldv@altlinux.org> |
| |
| sh: fix typo introduced by commit v4.9-121-gd535b8b. |
| * linux/sh/syscallent.h (getresgid32): Fix typo in sys_func and sys_name. |
| |
| 2015-01-10 Dmitry V. Levin <ldv@altlinux.org> |
| |
| Fix fanotify_mark decoding on 32-bit architectures. |
| The fanotify_mark syscall takes a 64-bit mask, and on 32-bit |
| architectures it is split up into two syscall arguments. |
| |
| * configure.ac (AC_CHECK_FUNCS): Add fanotify_mark. |
| (AC_CHECK_HEADERS): Add sys/fanotify.h. |
| * defs.h (getllval): New prototype. |
| * util.c (getllval): New function based on printllval. |
| (printllval): Use getllval. |
| * fanotify.c (sys_fanotify_mark): Use getllval to properly decode |
| 64-bit mask and two syscall arguments followed by it. |
| * tests/fanotify_mark.c: New file. |
| * tests/fanotify_mark.test: New test. |
| * tests/Makefile.am (check_PROGRAMS): Add fanotify_mark. |
| (TESTS): Add fanotify_mark.test. |
| * tests/.gitignore: Add fanotify_mark. |
| |
| 2015-01-09 Dmitry V. Levin <ldv@altlinux.org> |
| |
| v4l2: fix build on systems with older kernel headers. |
| * v4l2.c (print_v4l2_format_fmt): Do not use |
| V4L2_BUF_TYPE_VIDEO_OUTPUT_OVERLAY unless it is defined. |
| (v4l2_ioctl): Do not use VIDIOC_ENUM_FRAMESIZES and |
| VIDIOC_ENUM_FRAMEINTERVALS unless they are defined. |
| |
| 2015-01-09 Dmitry V. Levin <ldv@altlinux.org> |
| |
| tests: fix build with awk that does not support switch-case. |
| The switch-case statement is a gawk-specific feature which is not |
| necessarily available, let's use traditional if-else statements instead. |
| |
| * tests/uid.awk: Rewrite without switch-case statements. |
| |
| 2015-01-09 Dmitry V. Levin <ldv@altlinux.org> |
| |
| Fix build on systems that lack O_CLOEXEC definition. |
| * xlat/timerfdflags.in [!TFD_CLOEXEC]: Check that O_CLOEXEC is defined. |
| |
| 2015-01-09 Dmitry V. Levin <ldv@altlinux.org> |
| |
| Fix build on systems that lack NETLINK_SOCK_DIAG definition. |
| NETLINK_INET_DIAG was introduced in linux v2.6.14, |
| NETLINK_SOCK_DIAG was added much later in linux v3.3. |
| |
| * net.c [!NETLINK_SOCK_DIAG && NETLINK_INET_DIAG] |
| (NETLINK_SOCK_DIAG): Define. |
| * socketutils.c: Likewise. |
| * tests/netlink_unix_diag.c: Likewise. |
| |
| 2015-01-09 Dmitry V. Levin <ldv@altlinux.org> |
| |
| Cleanup local copy of linux/fanotify.h. |
| * linux/fanotify.h: Remove macros and structures not used by |
| fanotify_init and fanotify_mark parsers. |
| |
| Fix "make dist" regression introduced by commit v4.9-125-g120e5db. |
| * Makefile.am (EXTRA_DIST): Add linux/unix_diag.h. |
| |
| 2015-01-08 Dmitry V. Levin <ldv@altlinux.org> |
| |
| tests: fix build with fresh glibc. |
| * tests/netlink_unix_diag.c: Include <stdint.h>. |
| |
| 2015-01-08 Dmitry V. Levin <ldv@altlinux.org> |
| |
| ioctlent.sh: handle linux/aufs_type.h properly. |
| Before this change, ioctlent.sh could not recognize unusual constants |
| defined by linux/aufs_type.h, resulting to ioctls.h with references to |
| these constants without appropriate definitions in ioctldefs.h. |
| |
| * linux/ioctlent.sh: Update the regexp that is used to lookup constants |
| referenced by generated ioctls.h. |
| |
| 2015-01-08 Dmitry V. Levin <ldv@altlinux.org> |
| |
| tests: fix distcheck. |
| * tests/stat32-v.test: Remove work files if the test is skipped. |
| |
| Fix printing of time_t values set in the distant future. |
| * util.c (sprinttime): Increase buffer size. |
| * tests/stat64-v.test: Try to set modification time of the sample file |
| to a value set in the distant future. |
| |
| Use AC_CHECK_TYPES to check for struct statfs64. |
| * m4/statfs.m4: Remove. |
| * configure.ac (AC_STATFS64): Remove. |
| (AC_CHECK_TYPES): Add struct statfs64. |
| * statfs.c: Replace HAVE_STATFS64 with HAVE_STRUCT_STATFS64. |
| |
| Use AC_CHECK_TYPES to check for struct stat64. |
| * m4/stat.m4: Remove. |
| * configure.ac (AC_STAT64): Remove. |
| (AC_CHECK_TYPES): Add struct stat64. |
| * file.c: Replace HAVE_STAT64 with HAVE_STRUCT_STAT64. |
| |
| file.c: fix 32-bit stat decoding on 64-bit architectures. |
| * file.c [SPARC || SPARC64] (struct stat): Remove, use generic |
| definition from <asm/stat.h>. |
| [SPARC64] (struct stat_sparc64, printstat_sparc64): Remove. |
| [AARCH64 || X86_64 || X32 || POWERPC64 || SPARC64] (struct stat32, |
| STAT32_PERSONALITY): Define. |
| [STAT32_PERSONALITY] (struct stat_powerpc32): Rename to struct stat32. |
| [STAT32_PERSONALITY] (printstat_powerpc32): Rename to printstat32. |
| (printstat) [STAT32_PERSONALITY]: Call printstat32 when |
| current_personality == STAT32_PERSONALITY. |
| [HAVE_STAT64] (printstat64) [STAT32_PERSONALITY]: Call printstat when |
| current_personality != STAT32_PERSONALITY. |
| [!HAVE_STAT64] (sys_stat64): Fallback to sys_stat. |
| [!HAVE_STAT64] (sys_fstat64): Fallback to sys_fstat. |
| |
| sparc: reuse struct stat parser code for struct solstat decoding. |
| * printstat.h: Parametrize major() and minor(). |
| * file.c [SPARC || SPARC64]: Define do_printstat_sol by instantiating |
| printstat.h template. |
| [SPARC || SPARC64] (printstatsol): Use do_printstat_sol. |
| |
| ppc64: reuse struct stat parser code for struct stat_powerpc32 decoding. |
| * file.c [POWERPC64]: Define do_printstat32 by instantiating printstat.h |
| template. |
| [POWERPC64] (printstat_powerpc32): Use do_printstat32. |
| |
| file.c: group related parsers together. |
| * file.c (sys_stat, sys_fstat): Collect in one place right before |
| the definition of printstat64. |
| (sys_stat64, sys_fstat64): Collect in one place right after the |
| definition of printstat64. |
| |
| file.c: collect scattered __old_kernel_stat related code. |
| * file.c [HAVE_STRUCT___OLD_KERNEL_STAT] (convertoldstat, printoldstat, |
| sys_oldstat, sys_oldfstat): Collect functions in one place. |
| |
| Use the same source code for struct stat/stat64 decoding. |
| * file.c: Define do_printstat64 by instantiating printstat.h template. |
| (printstat64): Use do_printstat64. |
| |
| x32: use generic printstat/printstat64 parsers. |
| * file.c (printstat) [X32]: Define. |
| (printstat64) [X32]: Use "struct stat64" instead of "struct stat". |
| Use printstat for x32 personality processes. |
| (printstat64_x32): Remove. |
| (sys_stat64, sys_fstat64) [X32]: Use printstat64 instead of |
| printstat64_x32. |
| |
| x32: remove redundant definitions. |
| * file.c [X32]: Do not define "struct stat" and "struct |
| __old_kernel_stat" locally, use definitions provided by <asm/stat.h>. |
| Do not define "struct stat64" exclusively, reuse another definition |
| added earlier for X86_64. |
| |
| Convert do_printstat to a template function. |
| * printstat.h: New file. |
| * Makefile.am (strace_SOURCES): Add it. |
| * file.c: Include "printstat.h". |
| (do_printstat): Move to printstat.h, parametrize its name |
| and struct stat. |
| |
| file.c: prepare realprintstat for parametrization. |
| * file.c (realprintstat): Adjust format strings so that all 64-bit |
| integer fields are printed with %llu format, and %u format is used for |
| all the rest. Rename to do_printstat. |
| (printstat, printoldstat): Update callers. |
| |
| tests: cleanup stat.test. |
| * tests/stat.test: Rewrite in a more readable way. |
| |
| tests: check verbose decoding of 32-bit and 64-bit struct stat. |
| * tests/stat.c: New file. |
| * tests/stat32.c: Likewise. |
| * tests/stat32-v.test: New file. |
| * tests/stat64-v.test: Likewise. |
| * tests/Makefile.am (check_PROGRAMS): Add stat and stat32. |
| (stat_CFLAGS): Define. |
| (TESTS): Add stat32-v.test and stat64-v.test. |
| * tests/.gitignore: Add stat and stat32. |
| |
| 2015-01-07 Dmitry V. Levin <ldv@altlinux.org> |
| |
| Cleanup struct stat.st_flags decoding. |
| There are no symbolic constants defined for struct stat.st_flags, |
| so decode this rare field as unsigned int. |
| |
| * xlat/fileflags.in: Remove. |
| * file.c (realprintstat, printstat64) [HAVE_STRUCT_STAT_ST_FLAGS]: |
| Decode struct stat.st_flags as unsigned int. |
| |
| 2015-01-07 Dmitry V. Levin <ldv@altlinux.org> |
| |
| Drop struct stat.st_aclcnt and stat.st_level support. |
| Remove the code that supports struct stat.st_aclcnt and stat.st_level |
| decoding -- these fields are not defined in system headers. |
| |
| * configure.ac (AC_CHECK_MEMBERS): Remove struct stat.st_aclcnt and |
| struct stat.st_level. |
| * file.c (realprintstat, printstat64) |
| [HAVE_STRUCT_STAT_ST_ACLCNT || HAVE_STRUCT_STAT_ST_LEVEL]: Remove. |
| |
| 2015-01-07 Dmitry V. Levin <ldv@altlinux.org> |
| |
| tests: fix race condition in net-accept-connect based tests. |
| Change all net-accept-connect based tests to use different unix domain |
| socket addresses, so that these tests could be safely run in parallel. |
| |
| * tests/net-accept-connect.c: Parametrize unix domain socket address. |
| * tests/net-fd.test: Pass socket address to net-accept-connect. |
| * tests/net.test: Likewise. |
| * tests/unix-yy.test: Likewise. |
| * tests/unix-yy-accept.awk: Update regexps. |
| * tests/unix-yy-connect.awk: Likewise. |
| |
| 2014-12-31 Mike Frysinger <vapier@gentoo.org> |
| |
| timerfd: update flags decoding. |
| The current code only decodes TFD_TIMER_ABSTIME when the kernel has |
| a bunch of newer flags. We have to handle fallbacks for all of them |
| since the kernel doesn't currently export things to userspace. |
| |
| * time.c: Include fcntl.h for O_* defines. |
| (TFD_TIMER_ABSTIME): Move to xlat/timerfdflags.in. |
| * xlat/timerfdflags.in: Add more definitions. |
| |
| 2014-12-29 Dmitry V. Levin <ldv@altlinux.org> |
| |
| sparc: fix fxstat decoding. |
| * file.c [SPARC || SPARC64] (sys_fxstat): Print file descriptor |
| using printfd. |
| |
| 2014-12-29 Dmitry V. Levin <ldv@altlinux.org> |
| |
| sparc: drop _STAT64_VER support. |
| Starting with commit v4.6-240-g5afdf12, nobody compiles this |
| non-Linux code. |
| |
| * file.c [SPARC || SPARC64] (sys_xstat, sys_fxstat): Remove |
| _STAT64_VER code. |
| |
| 2014-12-29 Dmitry V. Levin <ldv@altlinux.org> |
| |
| sparc: remove redundant sys_lxstat. |
| * file.c [SPARC || SPARC64] (sys_lxstat): Remove. |
| * linux/sparc/dummy2.h (solaris_lxstat): Alias to sys_xstat. |
| * linux/sparc64/dummy2.h (solaris_lxstat): Likewise. |
| |
| 2014-12-28 Dmitry V. Levin <ldv@altlinux.org> |
| |
| file.c: do not include unused headers. |
| * file.c: Do not include <fcntl.h>. |
| |
| 2014-12-27 Dmitry V. Levin <ldv@altlinux.org> |
| |
| Cleanup UTIME_NOW/UTIME_OMIT decoding. |
| Move the code that's present in two copies from sprinttv() |
| to a new helper function. |
| |
| * time.c (do_sprinttv): New function. |
| (sprinttv): Use it. |
| |
| 2014-12-27 Elliott Hughes <enh@google.com> |
| |
| Fix UTIME_NOW/UTIME_OMIT decoding. |
| The kernel doesn't actually care what tv_sec is set to --- it only checks |
| tv_nsec when looking for the special values. |
| |
| 2014-12-26 Dmitry V. Levin <ldv@altlinux.org> |
| |
| Make -yy output for inet sockets consistent with unix domain sockets. |
| Prepend -yy output generated for INET/INET6 TCP/UDP sockets with their |
| protocol name obtained using getxattr. |
| |
| * socketutils.c (inet_parse_response): Add proto_name argument. |
| Print proto_name for connected and unconnected sockets. |
| (receive_responses): Add proto_name argument, pass it to the parser. |
| (inet_print): Add proto_name argument, pass it to receive_responses. |
| (unix_parse_response): Add proto_name argument. |
| (print_sockaddr_by_inode): Pass protocol name to inet_print calls. |
| * tests/net-yy-accept.awk: Update to match new output format. |
| * tests/net-yy-connect.awk: Likewise. |
| |
| 2014-12-25 Dmitry V. Levin <ldv@altlinux.org> |
| |
| tests: robustify unix domain socket decoding test. |
| Unix domain socket address family name is not universally decoded as |
| AF_LOCAL, other names like AF_UNIX and AF_FILE are valid synonyms. |
| Similarly, PF_UNIX and PF_FILE are valid synonyms for PF_LOCAL. |
| |
| Some test regexps have to be properly initialized before they could |
| be used, so make sure they are initialized before use. |
| |
| 2014-12-25 Dmitry V. Levin <ldv@altlinux.org> |
| |
| tests: fix unix domain socket decoding availability test. |
| Since inet_diag and unix_diag interfaces are implemented by different |
| kernel modules, they have to be tested separately. |
| |
| * tests/netlink_unix_diag.c: New file. |
| * tests/unix-yy.test: Use it. |
| * tests/Makefile.am (check_PROGRAMS): Add it. |
| * tests/.gitignore: Likewise. |
| |
| 2014-12-25 Masatake YAMATO <yamato@redhat.com> |
| |
| tests: add a test for decoding unix domain socket addresses. |
| * tests/unix-yy-accept.awk: New file. |
| * tests/unix-yy-connect.awk: New file. |
| * tests/unix-yy.test: New test. |
| * tests/Makefile.am (TESTS): Add it. |
| (EXTRA_DIST): Add unix-yy-accept.awk and unix-yy-connect.awk. |
| |
| 2014-12-25 Masatake YAMATO <yamato@redhat.com> |
| |
| Support unix domain sockets in -yy option. |
| This change extends -yy option to handle unix domain sockets: |
| their peer addresses will be printed, similar to inet sockets. |
| |
| For a listening socket, its socket inode and socket path are printed. |
| For an accepted socket, its socket inode, the peer inode, and the |
| socket path are printed. |
| For a client socket, its socket inode and the peer inode are printed. |
| |
| An example of a server side communication using netcat: |
| |
| $ ./strace -yy -e network nc -l -U /tmp/example.sock |
| socket(PF_LOCAL, SOCK_STREAM, 0) = 3 |
| setsockopt(3<UNIX:[14728348]>, SOL_SOCKET, SO_REUSEADDR, [1], 4) = 0 |
| bind(3<UNIX:[14728348]>, {sa_family=AF_LOCAL, sun_path="/tmp/example.sock"}, 19) = 0 |
| listen(3<UNIX:[14728348,"/tmp/example.sock"]>, 10) = 0 |
| accept(3<UNIX:[14728348,"/tmp/example.sock"]>, {sa_family=AF_LOCAL, NULL}, [2]) = 4<UNIX:[14727246->14727245,"/tmp/example.sock"]> |
| recvfrom(4<UNIX:[14727246->14727245,"/tmp/example.sock"]>, "INPUT\n", 8192, 0, NULL, NULL) = 6 |
| INPUT |
| |
| An example of a client side communication using netcat: |
| |
| $ ./strace -yy -e network nc -U /tmp/example.sock |
| socket(PF_LOCAL, SOCK_STREAM, 0) = 3 |
| connect(3<UNIX:[14727245]>, {sa_family=AF_LOCAL, sun_path="/tmp/example.sock"}, 19) = 0 |
| getsockopt(3<UNIX:[14727245]>, SOL_SOCKET, SO_ERROR, [0], [4]) = 0 |
| INPUT |
| ... |
| sendto(3<UNIX:[14727245->14727246]>, "INPUT\n", 6, 0, NULL, 0) = 6 |
| |
| * linux/unix_diag.h: New file. |
| * socketutils.c (send_query): Rename to inet_send_query. |
| (parse_response): Rename to inet_parse_response. |
| (unix_print, unix_send_query, unix_parse_response): New functions. |
| (receive_responses): Add a new argument named parser: a function for |
| handling protocol specific data parts of diag messages. |
| (print_sockaddr_by_inode): Call unix_print. |
| Replace NETLINK_INET_DIAG with NETLINK_SOCK_DIAG, they are equal |
| but NETLINK_SOCK_DIAG looks more generic. |
| |
| 2014-12-16 Masatake YAMATO <yamato@redhat.com> |
| |
| Use the protocol name of a socket as a hint for peer address resolution. |
| To resolve the peer address of socket, all combinations of families |
| (AF_INET, AF_INET6) and protocols(IPPROTO_TCP, IPPROTO_UDP) were tried. |
| This change utilizes the protocol name obtained via getxattr to specify |
| the right combination. |
| |
| * socketutils.c (inet_print): New helper function. |
| (print_sockaddr_by_inode): Use it. Utilize the protocol name |
| associated with the given inode for resolving the peer socket |
| address. If the protocol name is NULL, resolve the address |
| by trying combinations of families and protocols as before. |
| * defs.h (print_sockaddr_by_inode): Update prototype. |
| * util.c (printfd): Pass the protocol name associated with |
| the given path to print_sockaddr_by_inode as the 2nd argument. |
| |
| 2014-12-16 Dmitry V. Levin <ldv@altlinux.org> |
| |
| Fix decoding of getgroups, getgroups32, setgroups, and setgroups32 syscalls |
| Convert parsers of these syscalls to the same scheme as were applied to |
| parsers of other uid/gid related syscalls. |
| That is, define two sets of parsers on architectures that support |
| (either directly or via multiarch) 16-bit and 32-bit gid getgroups |
| and setgroups syscalls simultaneously, and reuse essentially the same |
| code by parametrizing uid_t and names of parser functions. |
| |
| * groups.c: Remove. |
| (sys_getgroups, sys_setgroups): Move ... |
| * uid.c: ... here and parametrize their names. |
| * Makefile.am (strace_SOURCES): Remove groups.c. |
| * linux/syscall.h (sys_getgroups32, sys_setgroups32): Remove. |
| [NEED_UID16_PARSERS] (sys_getgroups16, sys_setgroups16): New prototypes. |
| * linux/arm/syscallent.h: Rename sys_[gs]etgroups to sys_[gs]etgroups16, |
| rename sys_[gs]etgroups32 to sys_[gs]etgroups. |
| * linux/bfin/syscallent.h: Likewise. |
| * linux/i386/syscallent.h: Likewise. |
| * linux/m68k/syscallent.h: Likewise. |
| * linux/microblaze/syscallent.h: Likewise. |
| * linux/s390/syscallent.h: Likewise. |
| * linux/sh/syscallent.h: Likewise. |
| * linux/sh64/syscallent.h: Likewise. |
| * linux/sparc/syscallent.h: Likewise. |
| * tests/uid.c: Test for getgroups. |
| * tests/uid16.c: Likewise. |
| * tests/uid32.c: Test for getgroups32. |
| * tests/uid.awk: Test for getgroups/getgroups32 decoding. |
| * tests/uid.test: Trace getgroups/getgroups32 syscalls. |
| |
| 2014-12-16 Dmitry V. Levin <ldv@altlinux.org> |
| |
| Fix decoding of 16-bit *chown and [gs]et*[gu]id syscalls. |
| Define two sets of parsers on architectures that support (either |
| directly or via multiarch) 16-bit and 32-bit uid/gid syscalls |
| simultaneously. Since the code in these two sets is essentially |
| the same and the key difference between them is the size of uid_t, |
| implement it by parametrizing uid_t and names of parser functions. |
| |
| * defs.h (NEED_UID16_PARSERS): New macro. |
| * linux/syscall.h [NEED_UID16_PARSERS] (sys_chown16, sys_fchown16, |
| sys_getresuid16, sys_getuid16, sys_setfsuid16, sys_setresuid16, |
| sys_setreuid16, sys_setuid16): New prototypes. |
| * linux/dummy.h (sys_geteuid16): Alias to sys_getuid16. |
| (sys_getegid16, sys_getgid16, sys_getresgid16, sys_setfsgid16, |
| sys_setgid16, sys_setregid16, sys_setresgid16): Alias to corresponding |
| sys_*uid16 functions. |
| * uid.c: Stop including <asm/posix_types.h>. |
| Parametrize uid_t and names of all exported functions. |
| (get_print_uid): New function. |
| (sys_getresuid): Use it. |
| (printuid): Check for (uid_t) -1. |
| * uid16.c: New file. |
| * Makefile.am (strace_SOURCES): Add it. |
| * linux/arm/syscallent.h: Use sys_chown16, sys_fchown16, sys_getegid16, |
| sys_geteuid16, sys_getgid16, sys_getresgid16, sys_getresuid16, |
| sys_getuid16, sys_setfsgid16, sys_setfsuid16, sys_setgid16, |
| sys_setregid16, sys_setresgid16, sys_setresuid16, sys_setreuid16, |
| and sys_setuid16 parsers for *chown and [gs]et*[gu]id syscall entries. |
| * linux/bfin/syscallent.h: Likewise. |
| * linux/i386/syscallent.h: Likewise. |
| * linux/m68k/syscallent.h: Likewise. |
| * linux/microblaze/syscallent.h: Likewise. |
| * linux/s390/syscallent.h: Likewise. |
| * linux/sparc/syscallent.h: Likewise. |
| * linux/sh/syscallent.h: Likewise. |
| * linux/sh64/syscallent.h: Likewise. |
| * tests/uid16.c: New file. |
| * tests/uid16.test: New test. |
| * tests/Makefile.am (CHECK_PROGRAMS): Add uid16. |
| (TESTS): Add uid16.test. |
| * tests/.gitignore: Add uid16. |
| |
| 2014-12-16 Dmitry V. Levin <ldv@altlinux.org> |
| |
| sh, sh64: fix uid/gid syscall entries. |
| * linux/sh/syscallent.h: Replace printargs with real syscall |
| parsers in *chown32 and [gs]et*[gu]id32 syscall entries. |
| * linux/sh64/syscallent.h: Likewise. |
| |
| s390: fix uid/gid syscall entries. |
| * linux/s390/syscallent.h: Add "32" suffix to names of *chown32 |
| and [gs]et*[gu]id32 syscalls #198..216. |
| |
| sparc: fix uid/gid syscall entries. |
| * linux/sparc/syscallent.h: Add "32" suffix to names |
| of [gs]etres[gu]id32 syscalls #108..112. |
| Fix entry for syscall #112 from setresgid32 to setregid32. |
| |
| 2014-12-15 Dmitry V. Levin <ldv@altlinux.org> |
| |
| chown.c: split into separate files. |
| This will make further uid/gid fixes simpler. |
| |
| * fchownat.c: New file. |
| * chown.c (sys_fchownat: Move to fchownat.c. |
| (sys_chown, sys_fchown): Move to uid.c. |
| * Makefile.am (strace_SOURCES): Remove chown.c, add fchownat.c. |
| |
| 2014-12-15 Dmitry V. Levin <ldv@altlinux.org> |
| |
| util.c: move printuid to uid.c. |
| This will make further uid/gid fixes simpler. |
| |
| * util.c (printuid): Move |
| * uid.c: ... here. |
| |
| 2014-12-15 Dmitry V. Levin <ldv@altlinux.org> |
| |
| tests/uid.awk: rewrite in a more maintainable style. |
| Since the test is virtually a FSM, rewrite it as a FSM. |
| |
| 2014-12-14 Dmitry V. Levin <ldv@altlinux.org> |
| |
| printuid: fix uid_t decoding on 64-bit architectures. |
| It was not a good idea to treat uid_t as a long int type because |
| the latter is twice larger than uid_t on 64-bit architectures. |
| |
| * defs.h (printuid): Change uid argument type from "unsigned long" |
| to "unsigned int". |
| * util.c (printuid): Likewise. When uid equals to -1, print "-1". |
| * tests/uid.awk: New file. |
| * tests/uid.c: New file. |
| * tests/uid32.c: Likewise. |
| * tests/uid.test: New test. |
| * tests/uid32.test: Likewise. |
| * tests/Makefile.am (CHECK_PROGRAMS): Add uid and uid32. |
| (TESTS): Add uid.test and uid32.test. |
| (EXTRA_DIST): Add uid.awk. |
| * tests/.gitignore: Add uid and uid32. |
| |
| 2014-12-13 Dmitry V. Levin <ldv@altlinux.org> |
| |
| Update PTRACE_* constants. |
| * xlat/ptrace_cmds.in: Add PTRACE_PEEKSIGINFO, PTRACE_GETSIGMASK, |
| and PTRACE_SETSIGMASK. |
| |
| Update SWAP_FLAG_* constants. |
| * swapon.c: Ensure that SWAP_FLAG_DISCARD_ONCE and |
| SWAP_FLAG_DISCARD_PAGES are defined. |
| * xlat/swap_flags.in: Add SWAP_FLAG_DISCARD_ONCE and |
| SWAP_FLAG_DISCARD_PAGES. |
| |
| 2014-12-11 Dmitry V. Levin <ldv@altlinux.org> |
| |
| Update SCHED_* constants. |
| * xlat/schedulers.in: Add SCHED_BATCH, SCHED_ISO, SCHED_IDLE, and |
| SCHED_DEADLINE. |
| |
| Update prctl PR_* constants. |
| * xlat/prctl_options.in: Add PR_SET_THP_DISABLE, PR_GET_THP_DISABLE, |
| PR_MPX_ENABLE_MANAGEMENT, and PR_MPX_DISABLE_MANAGEMENT. |
| |
| 2014-12-11 Dmitry V. Levin <ldv@altlinux.org> |
| |
| Always compile sys_prctl parser. |
| Since sys_prctl is referenced by syscallent files unconditionally, |
| conditional compilation of sys_prctl depending on prctl availability is |
| pointless. |
| |
| * prctl.c (unalignctl_string, sys_prctl): Compile unconditionally. |
| |
| 2014-12-11 Dmitry V. Levin <ldv@altlinux.org> |
| |
| process.c: split struct_user_offsets into architecture-specific include files |
| * Makefile.am (EXTRA_DIST): Add linux/alpha/userent.h, |
| linux/arm/userent.h, linux/avr32/userent.h, linux/bfin/userent.h, |
| linux/crisv10/userent.h, linux/crisv32/userent.h, |
| linux/i386/userent.h, linux/i386/userent0.h, linux/ia64/userent.h, |
| linux/m68k/userent.h, linux/microblaze/userent.h, |
| linux/mips/userent.h, linux/or1k/userent.h, linux/powerpc/userent.h, |
| linux/s390/userent.h, linux/s390/userent0.h, linux/s390/userent1.h, |
| linux/s390x/userent.h, linux/sh/userent.h, linux/sh/userent0.h, |
| linux/sh64/userent.h, linux/sparc/userent.h, linux/sparc64/userent.h, |
| linux/tile/userent.h, linux/userent.h, linux/userent0.h, |
| linux/x32/userent.h, linux/x86_64/userent.h, and |
| linux/xtensa/userent.h. |
| * process.c (struct_user_offsets): Split into architecture-specific |
| include files, inculde userent.h. |
| |
| process.c: include less headers. |
| * process.c: Do not include <fcntl.h> and <sys/stat.h>. |
| Reorder inclusion of xlat header files. |
| |
| Unexport struct_user_offsets. |
| * defs.h (struct_user_offsets): Remove. |
| * process.c (struct_user_offsets): Make static. |
| |
| 2014-12-11 Dmitry V. Levin <ldv@altlinux.org> |
| |
| process.c: introduce XLAT_UOFF macro. |
| Introduce XLAT_UOFF macro and use it to automatically transform |
| struct_user_offsets array into a more readable and compact form. |
| |
| for n in $(sed -n 's/^[[:space:]]*{[[:space:]]*uoff(\([a-z_0-9]\+\)),.*/\1/p' process.c |sort -u); do |
| sed -i 's/^\([[:space:]]*\){[[:space:]]*uoff('"$n"'),[[:space:]]*"offsetof(struct user,[[:space:]]*'"$n"')"[[:space:]]*},$/\1XLAT_UOFF('"$n"'),/' process.c |
| done |
| |
| * process.c (XLAT_UOFF): New macro. |
| (struct_user_offsets): Use it. |
| |
| 2014-12-11 Dmitry V. Levin <ldv@altlinux.org> |
| |
| process.c: move sethostname and gethostname parsers to a separate file. |
| * hostname.c: New file. |
| * Makefile.am (strace_SOURCES): Add it. |
| * process.c (sys_sethostname, sys_gethostname): Move to hostname.c. |
| |
| process.c: move exit parser to a separate file. |
| * exit.c: New file. |
| * Makefile.am (strace_SOURCES): Add it. |
| * process.c (sys_exit): Move to exit.c. |
| |
| process.c: move clone, setns, unshare, and fork parsers to a separate file |
| * clone.c: New file. |
| * Makefile.am (strace_SOURCES): Add it. |
| * process.c: Move sys_clone, sys_setns, sys_unshare, sys_fork, and |
| related code to clone.c. |
| |
| process.c: move get*uid and set*uid parsers to a separate file. |
| * uid.c: New file. |
| * Makefile.am (strace_SOURCES): Add it. |
| * process.c (sys_getuid, sys_setfsuid, sys_setuid, sys_getresuid, |
| sys_setreuid, sys_setresuid): Move to uid.c. |
| |
| process.c: move getgroups* and setgroups* parsers to a separate file. |
| * groups.c: New file. |
| * Makefile.am (strace_SOURCES): Add it. |
| * process.c: Move sys_setgroups, sys_getgroups, sys_setgroups32, |
| sys_getgroups32, and related code to groups.c. |
| |
| process.c: move execve and execv parsers to a separate file. |
| * execve.c: New file. |
| * Makefile.am (strace_SOURCES): Add it. |
| * process.c: Move sys_execve, sys_execv, and related code to execve.c. |
| |
| process.c: move waitpid, wait4, osf_wait4, and waitid parsers to a separate file |
| * wait.c: New file. |
| * Makefile.am (strace_SOURCES): Add it. |
| * process.c: Move sys_waitpid, sys_wait4, sys_osf_wait4, sys_waitid and |
| related code to wait.c. |
| |
| process.c: move uname parser to a separate file. |
| * uname.c: New file. |
| * Makefile.am (strace_SOURCES): Add it. |
| * process.c (sys_uname): Move to uname.c. |
| |
| process.c: move futex parser to a separate file. |
| * futex.c: New file. |
| * Makefile.am (strace_SOURCES): Add it. |
| * process.c: Move sys_futex and related code to futex.c. |
| |
| process.c: move get_robust_list parser to a separate file. |
| * get_robust_list.c: New file. |
| * Makefile.am (strace_SOURCES): Add it. |
| * process.c (sys_get_robust_list): Move to get_robust_list.c. |
| |
| process.c: move sched_* parsers to a separate file. |
| * sched.c: New file. |
| * Makefile.am (strace_SOURCES): Add it. |
| * process.c: Move sys_sched_getscheduler, sys_sched_setscheduler, |
| sys_sched_getparam, sys_sched_setparam, sys_sched_get_priority_min, |
| sys_sched_rr_get_interval, and related code to sched.c. |
| |
| process.c: move sched_setaffinity and sched_getaffinity parsers to a separate file |
| * affinity.c: New file. |
| * Makefile.am (strace_SOURCES): Add it. |
| * process.c (sys_sched_setaffinity, sys_sched_getaffinity): Move |
| to affinity.c. |
| |
| process.c: move prctl and arch_prctl parsers to a separate file. |
| * prctl.c: New file. |
| * Makefile.am (strace_SOURCES): Add it. |
| * process.c: Move sys_prctl, sys_arch_prctl, and related code to prctl.c. |
| |
| process.c: move getcpu parser to a separate file. |
| * getcpu.c: New file. |
| * Makefile.am (strace_SOURCES): Add it. |
| * process.c (sys_getcpu): Move to getcpu.c. |
| |
| process.c: move process_vm_readv and process_vm_writev parsers to a separate file |
| * process_vm.c: New file. |
| * Makefile.am (strace_SOURCES): Add it. |
| * process.c (sys_process_vm_readv, sys_process_vm_writev): Move |
| to process_vm.c. |
| |
| Implement decoding of fallocate FALLOC_FL_* flags. |
| * xlat/falloc_flags.in: New file. |
| * configure.ac (AC_CHECK_HEADERS): Add linux/falloc.h. |
| * fallocate.c [HAVE_LINUX_FALLOC_H]: Include <linux/falloc.h>. |
| Include xlat/falloc_flags.h. |
| (sys_fallocate): Decode flags. |
| |
| Fix decoding of renameat2 RENAME_* flags. |
| * renameat.c: Include <linux/fs.h> where RENAME_NOREPLACE, |
| RENAME_EXCHANGE, and RENAME_WHITEOUT are usually defined. |
| |
| file.c: move open, openat, and creat parsers to a separate file. |
| * open.c: New file. |
| * Makefile.am (strace_SOURCES): Add it. |
| * file.c: Move sys_open, sys_openat, sys_creat, and related code |
| to open.c. |
| |
| file.c: move access and faccessat parsers to a separate file. |
| * access.c: New file. |
| * Makefile.am (strace_SOURCES): Add it. |
| * file.c: Move sys_access, sys_faccessat and related code to access.c. |
| |
| file.c: move umask parser to a separate file. |
| * umask.c: New file. |
| * Makefile.am (strace_SOURCES): Add it. |
| * file.c (sys_umask): Move to umask.c. |
| |
| file.c: move lseek and llseek parsers to a separate file. |
| * lseek.c: New file. |
| * Makefile.am (strace_SOURCES): Add it. |
| * file.c: Move sys_lseek, sys_llseek, and related code to lseek.c. |
| |
| file.c: move readahead parser to a separate file. |
| * readahead.c: New file. |
| * Makefile.am (strace_SOURCES): Add it. |
| * file.c (sys_readahead): Move to readahead.c. |
| |
| file.c: move truncate, truncate64, ftruncate, and ftruncate64 parsers to a separate file |
| * truncate.c: New file. |
| * Makefile.am (strace_SOURCES): Add it. |
| * file.c (sys_truncate, sys_truncate64, sys_ftruncate, sys_ftruncate64): |
| Move to truncate.c. |
| |
| file.c: move chdir parser to a separate file. |
| * chdir.c: New file. |
| * Makefile.am (strace_SOURCES): Add it. |
| * file.c (sys_chdir): Move to chdir.c. |
| |
| file.c: move link, linkat, unlinkat, and symlinkat parsers to a separate file |
| * link.c: New file. |
| * Makefile.am (strace_SOURCES): Add it. |
| * file.c: Move sys_link, sys_linkat, sys_unlinkat, sys_symlinkat, and |
| related code to link.c. |
| |
| file.c: move readlink and readlinkat parsers to a separate file. |
| * readlink.c: New file. |
| * Makefile.am (strace_SOURCES): Add it. |
| * file.c (decode_readlink, sys_readlink, sys_readlinkat): Move |
| to readlink.c. |
| |
| file.c: move renameat and renameat2 parsers to a separate file. |
| * renameat.c: New file. |
| * Makefile.am (strace_SOURCES): Add it. |
| * file.c: Move sys_renameat, sys_renameat2, and related code |
| to renameat.c. |
| |
| file.c: move chown, fchown, and fchownat parsers to a separate file. |
| * chown.c: New file. |
| * Makefile.am (strace_SOURCES): Add it. |
| * file.c (sys_chown, sys_fchownat, sys_fchown): Move to chown.c. |
| |
| Export at_flags. |
| * defs.h (at_flags): New prototype. |
| |
| file.c: move chmod, fchmod, and fchmodat parsers to a separate file. |
| * chmod.c: New file. |
| * Makefile.am (strace_SOURCES): Add it. |
| * file.c (sys_chmod, sys_fchmodat, sys_fchmod): Move to chmod.c. |
| |
| file.c: move utimes, futimesat, utimensat, and osf_utimes parsers to a separate file |
| * utimes.c: New file. |
| * Makefile.am (strace_SOURCES): Add it. |
| * file.c (decode_utimes, sys_utimes, sys_futimesat, sys_utimensat, |
| sys_osf_utimes): Move to utimes.c. |
| |
| file.c: move utime parser to a separate file. |
| * utime.c: New file. |
| * Makefile.am (strace_SOURCES): Add it. |
| * file.c (sys_utime): Move to utime.c. |
| |
| Export sprinttime. |
| * defs.h (sprinttime): New prototype. |
| * file.c (sprinttime): Make global and move to util.c. |
| |
| file.c: move mknod, mknodat, and xmknod parsers to a separate file. |
| * mknod.c: New file. |
| * Makefile.am (strace_SOURCES): Add it. |
| * file.c: Move sys_mknod, sys_mknodat, sys_xmknod, and related code |
| to mknod.c. |
| |
| file.c: export sprintmode and move it to a separate file. |
| * printmode.c: New file. |
| * Makefile.am (strace_SOURCES): Add it. |
| * defs.h (sprintmode): New prototype. |
| * file.c (sprintmode): Make global and move to printmode.c. |
| |
| file.c: move getcwd parser to a separate file. |
| * getcwd.c: New file. |
| * Makefile.am (strace_SOURCES): Add it. |
| * file.c (sys_getcwd): Move to getcwd.c. |
| |
| file.c: move *xattr parsers to a separate file. |
| * xattr.c: New file. |
| * Makefile.am (strace_SOURCES): Add it. |
| * file.c: Move sys_setxattr, sys_fsetxattr, sys_getxattr, sys_fgetxattr, |
| sys_listxattr, sys_flistxattr, sys_removexattr, sys_fremovexattr, |
| and related code to xattr.c. |
| |
| file.c: move fadvise64 and fadvise64_64 parsers to a separate file. |
| * fadvise.c: New file. |
| * Makefile.am (strace_SOURCES): Add it. |
| * file.c: Move sys_fadvise64, sys_fadvise64_64, and related code |
| to fadvise.c. |
| |
| file.c: move sync_file_range and sync_file_range2 parsers to a separate file |
| * sync_file_range.c: New file. |
| * Makefile.am (strace_SOURCES): Add it. |
| * file.c: Move sys_sync_file_range, sys_sync_file_range2, and related |
| code to sync_file_range.c. |
| |
| file.c: move fallocate parser to a separate file. |
| * fallocate.c: New file. |
| * Makefile.am (strace_SOURCES): Add it. |
| * file.c (sys_fallocate): Move to fallocate.c. |
| |
| file.c: move swapon parser to a separate file. |
| * swapon.c: New file. |
| * Makefile.am (strace_SOURCES): Add it. |
| * file.c: Move sys_swapon and related code to swapon.c. |
| |
| 2014-12-06 Dmitry V. Levin <ldv@altlinux.org> |
| |
| Implement full decoding of 64-bit capabilities. |
| Unlike v1 capabilities which are 32-bit, v2 and v3 are 64-bit, but |
| before this change only lower 32 capability bits were decoded for |
| v2 and v3. |
| |
| * xlat/capabilities1.in: New file. |
| * capability.c: Define v2/v3 CAP_* constants. |
| Include xlat/capabilities1.h. |
| (get_cap_header): New function. |
| (print_cap_header): Update to use get_cap_header result. |
| (print_cap_data): Decoder higher capability bits for v2 and v3. |
| (sys_capget, sys_capset): Use get_cap_header, update print_cap_header |
| and print_cap_data calls. |
| * tests/caps.c: New file. |
| * tests/caps.awk: New file. |
| * tests/caps.test: New test. |
| * tests/Makefile.am (CHECK_PROGRAMS): Add caps. |
| (TESTS): Add caps.test. |
| (EXTRA_DIST): Add caps.awk. |
| |
| 2014-12-06 Dmitry V. Levin <ldv@altlinux.org> |
| |
| Make parsers of capget and capset syscalls self-contained. |
| Various versions of <linux/capability.h> used to require different |
| workarounds to avoid conflicts with types defined by libc headers. |
| Define all required types and constants locally to fix this issue. |
| |
| * configure.ac (AC_CHECK_HEADERS): Remove linux/capability.h. |
| * capability.c: Do not include <linux/capability.h>, remove workarounds |
| for problematic versions of <linux/capability.h> file. |
| Define CAP_* and _LINUX_CAPABILITY_VERSION_* constants as enums. |
| (struct __user_cap_header_struct, struct __user_cap_data_struct): Define. |
| * xlat/cap_version.in: Add #unconditional. |
| * xlat/capabilities.in: Likewise. |
| |
| 2014-12-04 Dmitry V. Levin <ldv@altlinux.org> |
| |
| Remove system.c. |
| All disjoint parts of system.c have been moved to separate files. |
| |
| * system.c: Remove. |
| * Makefile.am (strace_SOURCES): Remove it. |
| |
| 2014-12-04 Dmitry V. Levin <ldv@altlinux.org> |
| |
| Move mount parser to a separate file. |
| * mount.c: New file. |
| * Makefile.am (strace_SOURCES): Add it. |
| * system.c: Move sys_mount and related code to mount.c. |
| |
| Move umount2 parser to a separate file. |
| * umount.c: New file. |
| * Makefile.am (strace_SOURCES): Add it. |
| * system.c: Move sys_umount2 and related code to umount.c. |
| |
| Move personality parser to a separate file. |
| * personality.c: New file. |
| * Makefile.am (strace_SOURCES): Add it. |
| * system.c: Move sys_personality and related code to personality.c. |
| |
| Move syslog parser to a separate file. |
| * syslog.c: New file. |
| * Makefile.am (strace_SOURCES): Add it. |
| * system.c: Move sys_syslog and related code to syslog.c. |
| |
| Move cacheflush parser to a separate file. |
| * cacheflush.c: New file. |
| * Makefile.am (strace_SOURCES): Add it. |
| * system.c: Move inclusion of <asm/cachectl.h> to cacheflush.c. |
| [M68K, BFIN, SH]: Move to cacheflush.c. |
| |
| bfin: move sram_alloc parser to a separate file. |
| * sram_alloc.c: New file. |
| * Makefile.am (strace_SOURCES): Add it. |
| * system.c [BFIN]: Move sys_sram_alloc and related code to sram_alloc.c. |
| |
| Move capget and capset parsers to a separate file. |
| * capability.c: New file. |
| * Makefile.am (strace_SOURCES): Add it. |
| * system.c: Move inclusion of headers and macro definitions related |
| to capget and capset decoding to capability.c. |
| (print_cap_header, print_cap_data, sys_capget, sys_capset): Move |
| to capability.c. |
| |
| 2014-12-03 Dmitry V. Levin <ldv@altlinux.org> |
| |
| Move sysctl parser to a separate file. |
| * sysctl.c: New file. |
| * Makefile.am (strace_SOURCES): Add it. |
| * system.c: Move sys_sysctl and related code to sysctl.c. |
| |
| mips: move sysmips parser to a separate file. |
| * sysmips.c: New file. |
| * Makefile.am (strace_SOURCES): Add it. |
| * system.c: Fix typo in the check for <linux/utsname.h>. |
| Move inclusions of <linux/utsname.h> and <asm/sysmips.h> to sysmips.c. |
| [MIPS]: Likewise. |
| |
| or1k: move or1k_atomic parser to a separate file. |
| * or1k_atomic.c: New file. |
| * Makefile.am (strace_SOURCES): Add it. |
| * system.c [OR1K]: Move to or1k_atomic.c. |
| |
| 2014-12-02 Dmitry V. Levin <ldv@altlinux.org> |
| |
| Alias sys_setdomainname to sys_sethostname. |
| Since parsers for setdomainname and sethostname syscalls are identical, |
| replace sys_setdomainname with an alias to sys_sethostname. |
| |
| * linux/dummy.h (sys_setdomainname): Alias to sys_sethostname. |
| * linux/syscall.h (sys_setdomainname): Remove. |
| * process.c (sys_setdomainname): Remove. |
| |
| 2014-12-02 Dmitry V. Levin <ldv@altlinux.org> |
| |
| Alias sys_getpeername to sys_getsockname. |
| Since parsers for getpeername and getsockname syscalls are identical, |
| replace sys_getpeername with an alias to sys_getsockname. |
| |
| * linux/dummy.h (sys_getpeername): Alias to sys_getsockname. |
| * linux/syscall.h (sys_getpeername): Remove. |
| * net.c (sys_getpeername): Remove. |
| |
| 2014-12-02 Dmitry V. Levin <ldv@altlinux.org> |
| |
| Alias sys_stime to sys_time. |
| Since parsers for stime and time syscalls are identical, |
| replace sys_stime with an alias to sys_time. |
| |
| * linux/dummy.h (sys_stime): Alias to sys_time. |
| * linux/syscall.h (sys_stime): Remove. |
| * time.c (sys_stime): Remove. |
| |
| 2014-12-02 Dmitry V. Levin <ldv@altlinux.org> |
| |
| Remove unused sys_mctl. |
| Starting with commit v4.6-240-g5afdf12, nobody compiles this |
| non-Linux code. |
| |
| * mem.c [MC_SYNC]: Remove. |
| * xlat/mctl_funcs.in: Remove. |
| * xlat/mctl_lockas.in: Remove. |
| |
| 2014-12-01 Dmitry V. Levin <ldv@altlinux.org> |
| |
| Alias sys_mkdir and sys_mkdirat to sys_chmod and sys_fchmodat. |
| Special parsers for mkdir and mkdirat are redundant because |
| sys_chmod and sys_fchmodat implement the same decoding. |
| |
| * file.c (decode_mkdir, sys_mkdir, sys_mkdirat): Remove. |
| * linux/dummy.h (sys_mkdir): Alias to sys_chmod. |
| (sys_mkdirat): Alias to sys_fchmodat. |
| * linux/syscall.h (sys_mkdir, sys_mkdirat): Remove. |
| * pathtrace.c (pathtrace_match): Do not check for sys_mkdirat. |
| |
| 2014-12-01 Dmitry V. Levin <ldv@altlinux.org> |
| |
| Remove unused <sys/acl.h> based code. |
| Starting with commit v4.6-240-g5afdf12, nobody compiles this |
| non-Linux code. |
| |
| * configure.ac (AC_CHECK_HEADERS): Remove sys/acl.h. |
| * file.c [HAVE_SYS_ACL_H]: Remove. |
| * xlat/aclcmds.in: Remove. |
| |
| 2014-12-01 Dmitry V. Levin <ldv@altlinux.org> |
| |
| Remove unused <sys/asynch.h> based code. |
| Starting with commit v4.6-240-g5afdf12, nobody compiles this |
| non-Linux code. |
| |
| * configure.ac (AC_CHECK_HEADERS): Remove sys/asynch.h. |
| * file.c [HAVE_SYS_ASYNCH_H]: Remove. |
| |
| 2014-11-27 Masatake YAMATO <yamato@redhat.com> |
| |
| Print protocol name of socket descriptors with -yy option. |
| For those socket descriptors that have no associated ip:port pairs |
| (or when this information is not available), -yy option prints |
| the same <socket:[INODE]> information as -y option, e.g. |
| |
| $ strace -e sendto -yy ip l > /dev/null |
| sendto(3<socket:[23456789]>, ... |
| |
| This change makes -yy output more informative: instead of just |
| printing "socket", the name of protocol behind the socket descriptor |
| will be printed, e.g. |
| |
| sendto(3<NETLINK:[23456789]>, ... |
| |
| * configure.ac (AC_CHECK_HEADERS): Add sys/xattr.h. |
| * tests/net-yy-accept.awk: Update to support protocol names. |
| * tests/net-yy-connect.awk: Likewise. |
| * util.c [HAVE_SYS_XATTR_H]: Include <sys/xattr.h>. |
| (getfdproto): New function. |
| (printfd): Use it. |
| |
| 2014-11-21 Dmitry V. Levin <ldv@altlinux.org> |
| |
| Replace MAXPATHLEN with PATH_MAX. |
| MAXPATHLEN is defined to PATH_MAX, so replace the former with the latter. |
| |
| * strace.c (startup_child): Replace MAXPATHLEN with PATH_MAX. |
| * util.c (printpathn, printpath): Likewise. |
| |
| 2014-11-21 Mike Frysinger <vapier@gentoo.org> |
| |
| Decode FIFREEZE/FITHAW/FITRIM ioctls. |
| The freeze/thaw ones are simple, but the trim is an interesting struct. |
| |
| * block.c (block_ioctl): Handle FIFREEZE/FITHAW/FITRIM. |
| * ioctl.c (ioctl_decode): Pass 'X' ioctls to block_ioctl. |
| |
| 2014-11-21 Dmitry V. Levin <ldv@altlinux.org> |
| |
| Include <sys/uio.h> unconditionally. |
| Since <sys/uio.h> is standardized by POSIX and is present in all |
| available versions of glibc, it's safe to assume that any usable |
| libc implementation provides this header file. |
| |
| * configure.ac (AC_CHECK_HEADERS): Remove sys/uio.h. |
| * io.c: Include <sys/uio.h> unconditionally. |
| (tprint_iov_upto, tprint_iov, sys_readv, sys_writev, |
| print_llu_from_low_high_val, sys_preadv, sys_pwritev): Define |
| unconditionally. |
| * net.c: Include <sys/uio.h> unconditionally. |
| * util.c: Include <sys/uio.h> unconditionally. |
| (dumpiov): Define unconditionally. |
| |
| 2014-11-21 Dmitry V. Levin <ldv@altlinux.org> |
| |
| Consistently use C99 designated initializers in the new netlink code. |
| * socketutils.c (send_query, receive_responses): Use designated |
| initializers for sockaddr_nl, nlmsghdr, and inet_diag_req_v2 structures. |
| * tests/netlink_inet_diag.c (send_query, check_responses): Likewise. |
| |
| 2014-11-20 Mike Frysinger <vapier@gentoo.org> |
| |
| Decode open's O_TMPFILE. |
| * xlat/open_mode_flags.in: Add O_TMPFILE definition. |
| |
| 2014-11-11 Helge Deller <deller@gmx.de> |
| |
| hppa: update error codes and signal numbers. |
| There are two important changes in here: |
| |
| 1. EWOULDBLOCK has been up to kernel 3.14 errorcode #246. Since hppa |
| folks had problems with EWOULDBLOCK != EAGAIN, this was changed in |
| kernel 3.14. |
| |
| 2. Starting with kernel 3.18, hppa folks changed some signal numbers in |
| such a way that we end up with SIGRTMIN == 32, which brings hppa in sync |
| with other linux ports. |
| |
| Both were incompatible changes which basically broke hppa ABI, but since |
| they have been merged into the kernel, we have to follow. |
| |
| 2014-11-11 Thomas De Schampheleire <thomas.de.schampheleire@gmail.com> |
| |
| stack trace support: fix check on symbol name presence. |
| The output format of the stack trace is supposed to be different |
| depending on whether symbol names are available in the build. |
| |
| However, the check only verified the validity of the pointer, not of the |
| string pointed to (which could be empty). |
| |
| This commit fixes the check so that the original output: |
| |
| mmap(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x5e000 |
| > /lib/libc-2.10.1.so(_IO_file_doallocate+0x8c) [0x68a38] |
| > /lib/libc-2.10.1.so(_IO_doallocbuf+0x6c) [0x78574] |
| > /lib/libc-2.10.1.so(_IO_file_overflow+0x184) [0x7763c] |
| > /lib/libc-2.10.1.so(_IO_file_xsputn+0x88) [0x76aac] |
| > /lib/libc-2.10.1.so(_IO_puts+0xc8) [0x6b64c] |
| > /bin/busybox(+0x0) [0x62c60] |
| > /bin/busybox(+0x0) [0x4940] |
| > /bin/busybox(+0x0) [0x499c] |
| > /bin/busybox(+0x0) [0x4e08] |
| > /lib/libc-2.10.1.so(__libc_init_first+0x30c) [0x1f84c] |
| > /lib/libc-2.10.1.so(__libc_start_main+0xd8) [0x1f9f8] |
| |
| becomes: |
| |
| mmap(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x5e000 |
| > /lib/libc-2.10.1.so(_IO_file_doallocate+0x8c) [0x68a38] |
| > /lib/libc-2.10.1.so(_IO_doallocbuf+0x6c) [0x78574] |
| > /lib/libc-2.10.1.so(_IO_file_overflow+0x184) [0x7763c] |
| > /lib/libc-2.10.1.so(_IO_file_xsputn+0x88) [0x76aac] |
| > /lib/libc-2.10.1.so(_IO_puts+0xc8) [0x6b64c] |
| > /bin/busybox() [0x62c60] |
| > /bin/busybox() [0x4940] |
| > /bin/busybox() [0x499c] |
| > /bin/busybox() [0x4e08] |
| > /lib/libc-2.10.1.so(__libc_init_first+0x30c) [0x1f84c] |
| > /lib/libc-2.10.1.so(__libc_start_main+0xd8) [0x1f9f8] |
| |
| Acked-by: Masatake YAMATO <yamato@redhat.com> |
| |
| 2014-11-11 Masatake YAMATO <yamato@redhat.com> |
| |
| tests: add a test for decoding and dumping of recvmmsg/sendmmsg. |
| * configure (AC_CHECK_FUNCS): Add sendmmsg. |
| * tests/mmsg.c: New file. |
| * tests/mmsg.expected: New file. |
| * tests/mmsg.test: New test. |
| * tests/.gitignore: Add mmsg. |
| * tests/Makefile.am (CHECK_PROGRAMS): Add mmsg. |
| (TESTS): Add mmsg.test. |
| (EXTRA_DIST): Add mmsg.expected. |
| |
| 2014-11-11 Masatake YAMATO <yamato@redhat.com> |
| |
| Add functions for dumping iovecs in mmsghdr used in sendmmsg and recvmmsg |
| This patch is similar to what I did in commit |
| 02f9f6b386741a52f58e1b31ad4e7fff60781ef8. |
| That commit was for sendmsg and recvmsg system calls. |
| This one is for sendmmsg and recvmmsg system calls. |
| |
| * defs.h (dumpiov_in_mmsghdr): New declaration. |
| * net.c (extractmmsghdr): New function derived from printmmsghdr. |
| (printmmsghdr): Use it. |
| (dumpiov_in_mmsghdr): New function. |
| * syscall.c (dumpio) [HAVE_SENDMSG]: Call dumpiov_in_mmsghdr |
| for recvmmsg and sendmmsg syscalls. |
| |
| 2014-11-11 Masatake YAMATO <yamato@redhat.com> |
| |
| Use the definition of struct mmsghdr if it is defined in build environment |
| mmsghrd structure type is defined locally in printmmsghdr function. |
| |
| However, more functions will refer the definition in modifications for |
| supporting "-e write=set" and "-e read=set" option for sendmmsg and |
| recvmmsg system calls. |
| |
| After this change, the system definition of struct mmsghdr will be used |
| if configure reports it is available, falling back to the old local |
| definition. |
| |
| * configure.ac (AC_CHECK_TYPES): Add struct mmsghdr. |
| * net.c [!HAVE_STRUCT_MMSGHDR] (struct mmsghdr): Define. |
| (printmmsghdr): Use previously defined struct mmsghdr. |
| |
| 2014-11-11 Masatake YAMATO <yamato@redhat.com> |
| |
| Introduce a separate function to copy from msghdr32 to msghdr. |
| This patch is an initial step for supporting "-e write=set" and |
| "-e read=set" option for sendmmsg and recvmmsg system calls. |
| |
| Coverting a data of msghdr32 to msghdr is needed both for |
| {send,recv}msg and {send,recv}mmsg to decode parameters. |
| To share the copying code in both decoders, a separate |
| function named copy_from_msghdr32 is introduced. |
| |
| * net.c [SUPPORTED_PERSONALITIES > 1 && SIZEOF_LONG > 4] |
| (copy_from_msghdr32): New function. |
| (extractmsghdr) [SUPPORTED_PERSONALITIES > 1 && SIZEOF_LONG > 4]: Use it. |
| |
| 2014-11-11 Dmitry V. Levin <ldv@altlinux.org> |
| |
| ioctlsort: rewrite build rules using noinst_PROGRAMS. |
| * linux/ioctlsort.c: Rename to ioctlsort.c |
| * Makefile.am (EXTRA_DIST): Rename linux/ioctlsort.c to ioctlsort.c. |
| [MAINTAINER_MODE] (noinst_PROGRAMS): Add ioctlsort. |
| (ioctlsort_SOURCES): Add ioctlsort.c. |
| (nodist_ioctlsort_SOURCES): Add ioctls.h and ioctldefs.h. |
| (CLEANFILES): Add $(nodist_ioctlsort_SOURCES). |
| (ioctlsort.$(OBJEXT)): Likewise. |
| (ioctlsort): Remove. |
| |
| 2014-11-11 Lubomir Rintel <lkundrak@v3.sk> |
| |
| Makefile.am: look for ioctl definitions in the kernel build tree by default |
| While most of ioctl-related kernel headers are now exported by kernel's |
| headers_install, some are still modules_install only. The kernel's |
| headers installed into /usr/include/ are usually headers_install'ed and |
| therefore don't contain some internal headers we need. The solution is |
| to look for modules_install'ed headers for the running kernel, and fall |
| back to old behavior if they aren't found. |
| |
| 2014-11-04 Lubomir Rintel <lkundrak@v3.sk> |
| |
| Dump details for Bluetooth socket operations. |
| * configure.ac (AC_CHECK_HEADERS): Add bluetooth/bluetooth.h. |
| * xlat/bt_protocols.in: New file. |
| * net.c [AF_BLUETOOTH && HAVE_BLUETOOTH_BLUETOOTH_H]: Include bluetooth |
| headers. |
| [PF_BLUETOOTH && HAVE_BLUETOOTH_BLUETOOTH_H]: Include "xlat/bt_protocols.h". |
| (printsock) [AF_BLUETOOTH && HAVE_BLUETOOTH_BLUETOOTH_H]: Dump details |
| for AF_BLUETOOTH sockets. |
| (sys_socket) [PF_BLUETOOTH && HAVE_BLUETOOTH_BLUETOOTH_H]: Decode |
| protocol for PF_BLUETOOTH sockets. |
| |
| 2014-11-04 Philippe De Muyter <phdm@macqel.be> |
| |
| Implement Video4Linux video-input ioctls decoder. |
| Introduce v4l2.c, a decoder for the arguments of the video-input subset |
| of the v4l2 ioctl's. This is a combination of |
| - previous work by Peter Zotov <whitequark@whitequark.org>, found at |
| https://gist.githubusercontent.com/whitequark/1263207/raw/strace-4.6-v4l2-ioctls.patch |
| - previous work by William Manley <will@williammanley.net>, found at |
| http://marc.info/?l=strace&m=139395588520675 |
| - forward port, additions and fixes by Philippe De Muyter <phdm@macqel.be> |
| |
| As v4l2 is a moving target, I have made v4l2.c compilable with ancient |
| linux kernels by testing the availability of some macros. It has been |
| succesfully compiled on linux 3.10, 3.1, 2.6.31 and 2.6.22, and |
| succesfully used on linux 3.10 with a camera device. |
| |
| * configure.ac: Check for availabilty of V4L2_* enum constants. |
| * Makefile.am (strace_SOURCES): Add v4l2.c. |
| * defs.h (v4l2_ioctl): New prototype. |
| * ioctl.c (ioctl_decode): Use v4l2_ioctl. |
| * v4l2.c: New file. |
| * xlat/v4l2_*.in: New files. |
| |
| Cc: Peter Zotov <whitequark@whitequark.org> |
| Cc: William Manley <will@williammanley.net> |
| |
| 2014-11-04 Dmitry V. Levin <ldv@altlinux.org> |
| |
| Update ioctl entries. |
| * linux/ioctlent.h.in: Regenerate from v3.17 headers. |
| |
| Remove ioctl header file names from the executable. |
| * defs.h (struct ioctlent): Remove "doth" field. |
| * Makefile.am ($(ioctlent_h)): Remove 1st field. |
| |
| 2014-11-04 Dmitry V. Levin <ldv@altlinux.org> |
| |
| Filter out redundant ioctl entries early. |
| For two ioctl entries with the same code, if one's name is a prefix |
| to another's name, keep the entry with a shorter name. Filter out |
| redundant ioctl entries at ioctlsort stage so that distributed |
| ioctlent.h.in files will be already filtered. |
| |
| * linux/ioctlsort.c (is_not_prefix): New function. |
| (main): Use it. |
| * linux/ioctlent-filter.awk: Remove. |
| * Makefile.am (EXTRA_DIST): Remove linux/ioctlent-filter.awk. |
| ($(ioctlent_h)): Don't use linux/ioctlent-filter.awk. |
| |
| 2014-11-03 Dmitry V. Levin <ldv@altlinux.org> |
| |
| ioctlent.sh: update the list of directories exported by headers_install. |
| * linux/ioctlent.sh: Add drm, mtd, rdma, video, and xen directories. |
| |
| 2014-11-01 Masatake YAMATO <yamato@redhat.com> |
| |
| Add a function for dumping iovec in msghdr used in sendmsg and recvmsg. |
| Here is an example session: |
| |
| $ ./strace -e write=all ip link change dev enp0s25 mtu 1501 > /dev/null |
| sendmsg(3, {msg_name(12)={sa_family=AF_NETLINK, pid=0, groups=00000000}, msg_iov(1)=[{"(... |
| * 40 bytes in buffer 0 |
| | 00000 28 00 00 00 10 00 05 00 d0 d9 aa 53 00 00 00 00 (..........S.... | |
| | 00010 00 00 00 00 02 00 00 00 00 00 00 00 00 00 00 00 ................ | |
| | 00020 08 00 04 00 dd 05 00 00 ........ | |
| ... |
| |
| $ ./strace -e read=all ip link show > /dev/null |
| recvmsg(3, {msg_name(12)={sa_family=AF_NETLINK, pid=0, groups=00000000}, msg_iov(1)=[{"... |
| * 8192 bytes in buffer 0 |
| | 00000 34 00 00 00 02 00 00 00 00 00 00 00 ff 23 00 00 4............#.. | |
| | 00010 ff ff ff ff 20 00 00 00 10 00 05 00 00 00 00 00 .... ........... | |
| ... |
| |
| * defs.h (dumpiov_in_msghdr): New prototype. |
| * net.c (extractmsghdr): New function derived from printmsghdr. |
| (printmsghdr): Use extractmsghdr. |
| (dumpiov_in_msghdr): New function. |
| * syscall.c (dumpio) [HAVE_SENDMSG]: Call dumpiov_in_msghdr for recvmsg |
| and sendmsg syscalls. |
| |
| 2014-10-31 Maarten ter Huurne <maarten@treewalker.org> |
| |
| Include <linux/ptrace.h> regardless of <sys/reg.h> existence. |
| This fixes compilation with musl libc. |
| This approach was already used in process.c, so I assume it is safe. |
| |
| * signal.c: Move [HAVE_LINUX_PTRACE_H] code out of [HAVE_SYS_REG_H] check. |
| * syscall.c: Likewise. |
| * util.c: Likewise. |
| |
| 2014-10-31 Dmitry V. Levin <ldv@altlinux.org> |
| |
| sock: decode SIOCSIFNAME on entering syscall. |
| * sock.c (sock_ioctl): Handle SIOCSIFNAME on entering syscall. |
| |
| 2014-10-31 Mike Frysinger <vapier@gentoo.org> |
| |
| sock: fix decoding of SIOCSIFNAME. |
| The decoding of SIOCSIFNAME is incorrect. It does not use |
| the ifr_index field to look things up, but ifr_newname. |
| |
| * sock.c (sock_ioctl): Split out SIOCSIFNAME from SIOCGIFNAME and |
| display ifr_newname. |
| |
| 2014-10-31 Mike Frysinger <vapier@gentoo.org> |
| |
| sock: fix decoding of struct ifreq.ifr_name. |
| The ifr name fields of the ifreq structure might not be NUL terminated. |
| If the user makes an ioctl call where they aren't, then strace ends up |
| reading random content from its own stack. Limit the printf lengths. |
| |
| * sock.c (sock_ioctl): Add explicit length limits to ifr_name printfs. |
| |
| 2014-10-03 Elliott Hughes <enh@google.com> |
| |
| Don't risk truncating open flags by using mode_t. |
| On Android, 32-bit arm and x86 use __kernel_mode_t (an unsigned short) |
| as their mode_t. The open(2) flags are actually an int, so high ones |
| like O_CLOEXEC get truncated if you coerce them to mode_t. |
| |
| * defs.h (tprint_open_modes, sprint_open_modes): Change argument type |
| from mode_t to int. |
| * file.c (tprint_open_modes, sprint_open_modes): Likewise. |
| |
| 2014-09-29 Dmitry V. Levin <ldv@altlinux.org> |
| |
| Enhance sysinfo decoding. |
| * configure.ac (AC_CHECK_MEMBERS): Check for struct sysinfo.totalhigh, |
| struct sysinfo.freehigh, and struct sysinfo.mem_unit. |
| * sysinfo.c (sys_sysinfo): Treat failed umove() call as syserror(). |
| Print totalhigh, freehigh, and mem_unit members when struct sysinfo |
| supports them. |
| |
| Move sysinfo parser to a separate file. |
| * sysinfo.c: New file. |
| * Makefile.am (strace_SOURCES): Add it. |
| * resource.c (sys_sysinfo): Move to sysinfo.c. |
| |
| 2014-09-29 Dmitry V. Levin <ldv@altlinux.org> |
| |
| Fix build with musl libc. |
| * resource.c: Include <sys/sysinfo.h> for struct sysinfo definition. |
| |
| Reported-by: Steven Honeyman <stevenhoneyman@gmail.com> |
| |
| 2014-09-23 Dmitry V. Levin <ldv@altlinux.org> |
| |
| tests: cleanup checks for basic programs. |
| * tests/init.sh: Check for cat and rm. |
| * tests/getdents.test: Check for awk. |
| * tests/ptrace_setoptions.test: Check for grep. |
| * tests/net-fd.test: Do not check for rm. |
| * tests/net.test: Likewise. |
| * tests/scm_rights-fd.test: Likewise. |
| * tests/stat.test: Likewise. |
| * tests/uio.test: Likewise. |
| |
| tests: add a test for -yy option. |
| * tests/net-yy.test: New test. |
| * tests/inet-accept-connect-send-recv.c: New file. |
| * tests/netlink_inet_diag.c: Likewise. |
| * tests/net-yy-accept.awk: Likewise. |
| * tests/net-yy-connect.awk: Likewise. |
| * tests/.gitignore: Add inet-accept-connect-send-recv, |
| netlink_inet_diag, *.tmp-*, and *.tmp.*. |
| * tests/Makefile.am (check_PROGRAMS): Add inet-accept-connect-send-recv |
| and netlink_inet_diag. |
| (TESTS): Add net-yy.test. |
| (EXTRA_DIST): Add net-yy-accept.awk and net-yy-connect.awk. |
| |
| 2014-09-22 Dmitry V. Levin <ldv@altlinux.org> |
| |
| Move statfs related parsers to a separate file. |
| * statfs.c: New file. |
| * Makefile.am (strace_SOURCES): Add it. |
| * file.c (sprintfstype, printstatfs, sys_statfs, sys_fstatfs): Move |
| to statfs.c. |
| [HAVE_STATFS64] (printstatfs64, printcompat_statfs64, sys_statfs64, |
| sys_fstatfs64): Likewise. |
| [ALPHA] (osf_statfs, osf_fstatfs): Likewise. |
| |
| fsmagic: sort array by value and use bsearch for faster lookup. |
| * defs.h (xlat_search): New prototype. |
| * util.c (xlat_bsearch_compare, xlat_search): New functions. |
| * file.c (sprintfstype): Use xlat_search for fsmagic lookup. |
| * xlat/fsmagic.in: Sort by value and mark as not NULL-terminated. |
| * tests/statfs.c: New file. |
| * tests/statfs.test: New test. |
| * tests/Makefile.am (check_PROGRAMS): Add statfs. |
| (statfs_CFLAGS): Define. |
| (TESTS): Add statfs.test. |
| * tests/.gitignore: Add statfs. |
| |
| 2014-09-21 Dmitry V. Levin <ldv@altlinux.org> |
| |
| fsmagic: update from <linux/magic.h> |
| * xlat/fsmagic.in: Add new constants from <linux/magic.h>. |
| Reported by Elliott Hughes. |
| |
| 2014-09-17 Dmitry V. Levin <ldv@altlinux.org> |
| |
| Add -yy option: print ip and port associated with socket descriptors. |
| When two ore more -y options are given, print local and remote ip:port |
| pairs associated with socket descriptors. This implementation uses |
| NETLINK_INET_DIAG for sockaddr lookup; it's based on the patch |
| prepared by Zubin Mithra as a part of his GSoC 2014 strace project. |
| |
| * Makefile.am (strace_SOURCES): Add socketutils.c |
| (EXTRA_DIST): Add linux/inet_diag.h and linux/sock_diag.h. |
| * defs.h (print_sockaddr_by_inode): New prototype. |
| * linux/inet_diag.h: New file. |
| * linux/sock_diag.h: Likewise. |
| * socketutils.c: Likewise. |
| * strace.1: Document -yy option. |
| * strace.c (usage): Likewise. |
| * util.c (printfd): Use print_sockaddr_by_inode. |
| |
| 2014-09-17 Vicente Olivert Riera <vincent@gentoo.org> |
| |
| sigaction: wrap sa_restorer in #ifdef SA_RESTORER consistently. |
| Wrap sa_restorer member definitions in #ifdef SA_RESTORER to be |
| consistent with their use. |
| If an architecture does not provide sa_restorer members but still |
| defines SA_RESTORER macro, the latter has to be explicitly undefined. |
| |
| This change fixes compilation failures like this one: |
| signal.c: In function 'decode_old_sigaction': |
| signal.c:631:21: error: 'struct old_sigaction' has no member named 'sa_restorer' |
| signal.c: In function 'decode_new_sigaction': |
| signal.c:1224:21: error: 'struct new_sigaction' has no member named 'sa_restorer' |
| |
| * signal.c (struct old_sigaction, struct old_sigaction32, |
| struct new_sigaction, struct new_sigaction32): |
| Wrap sa_restorer member in #ifdef SA_RESTORER. |
| (decode_old_sigaction, decode_new_sigaction): |
| Wrap use of sa32.sa_restorer in #ifdef SA_RESTORER. |
| |
| 2014-09-17 Dmitry V. Levin <ldv@altlinux.org> |
| |
| Fix compilation warnings reported by gcc -Wsign-compare. |
| * configure.ac (gl_WARN_ADD): Add -Wsign-compare. |
| * defs.h (struct tcb): Change 'currpers' type to unsigned. |
| (struct xlat): Change 'val' type to unsigned |
| (signame): Add 'const' qualifier to its argument. |
| (xlookup, printxval): Add 'const' qualifier to the 2nd argument and |
| change its type to unsigned. |
| (printpathn): Change the 3rd argument type to unsigned. |
| (ioctl_lookup): Change 1st argument type to unsigned. |
| * count.c (call_summary_pers, call_summary): Change 'i' type to unsigned. |
| * file.c (print_xattr_list): Fix comparisons between signed and unsigned |
| long values. |
| * ioctl.c (compare): Fix cast. |
| (ioctl_lookup): Change 1st argument type to to unsigned. |
| (ioctl_next_match): Change 'code' type to unsigned. |
| * mem.c (sys_move_pages): Change 'i' type to unsigned. |
| * mtd.c (mtd_ioctl): Change 'i' and 'j' types to unsigned. |
| Print 'i' using %u format string. |
| * process.c (sys_prctl): Change 'i' type to unsigned. |
| (printargv): Change 'n' type to unsigned. |
| (sys_ptrace): Change 'addr' type to unsigned. |
| * scsi.c (print_sg_io_buffer): Add 'const' qualifier to 'len' argument |
| and change its type to unsigned. Change 'i' and 'allocated' types |
| to unsigned. |
| * signal.c (signame): Add 'const' qualifier to its argument. |
| Fix comparisons between signed and unsigned values. |
| (sprintsigmask_n, printsiginfo): Fix comparisons between signed and |
| unsigned values. |
| * sock.c (sock_ioctl): Change 'i' and 'nifra' types to unsigned. |
| * strace.c (expand_tcbtab, alloctcb): Change 'i' type to unsigned. |
| (detach): Change 'sig' type to unsigned. |
| (startup_attach): Change 'tcbi' type to unsigned. |
| (startup_child): Change 'm', 'n', and 'len' types to unsigned. |
| (init): Use new variable to iterate 'tcbtab'. |
| (pid2tcb): Change 'i' type to unsigned. |
| (cleanup): Change 'i' and 'sig' types to unsigned. |
| * syscall.c (update_personality): Change 'personality' argument type |
| to unsigned. |
| (struct qual_options): Change 'bitflag' type to unsigned. |
| (reallocate_qual): Add 'const' qualifier to its argument and change its |
| type to unsigned. |
| (qualify_one): Change 'n' and 'bitflag' arguments types to unsigned. |
| Add 'const' qualifier to 'n', 'not', and 'pers' arguments. |
| Change 'p' type to signed int. |
| (qual_syscall): Change 'bitflag' argument type to unsigned. |
| Add 'const' qualifier to 'bitflag' and 'not' arguments. |
| Change 'p' type to signed int. |
| (qual_signal): Change 'bitflag' argument type to unsigned. |
| Add 'const' qualifier to 'bitflag' and 'not' arguments. |
| Change 'i' type to unsigned. |
| (qual_desc): Change 'bitflag' argument type to unsigned. |
| Add 'const' qualifier to 'bitflag' and 'not' arguments. |
| (qualify): Change 'i' type to unsigned. |
| (get_scno): Change 'currpers' type to unsigned. |
| Fix a comparison between signed and unsigned values. |
| * system.c (sys_sysctl): Change 'cnt' and 'max_cnt' types to unsigned. |
| Fix comparisons between signed and unsigned values. |
| * util.c (xlookup, printxval): Add 'const' qualifier to 'val' argument |
| and change its type to unsigned. |
| (printuid): Fix a comparison between signed and unsigned values. |
| (printpathn): Change 'n' argument type to unsigned. |
| (printstr): Change 'size' type to unsigned. |
| Fix a comparison between signed and unsigned values. |
| (setbpt): Change 'i' type to unsigned. |
| * net.c (printsock): Silence a compilation warning. |
| * reboot.c (sys_reboot): Likewise. |
| |
| 2014-09-11 Dmitry V. Levin <ldv@altlinux.org> |
| |
| Move dirent related parsers to a separate file. |
| * dirent.c: New file. |
| * Makefile.am (strace_SOURCES): Add it. |
| * file.c (print_old_dirent, sys_readdir, sys_getdents, sys_getdents64): |
| Move to dirent.c. |
| |
| getdents, getdents64: fix potential out-of-bounds read issues. |
| * file.c (sys_getdents): Check for invalid d_reclen. |
| Avoid reading from uninitialized memory. |
| (sys_getdents64): Likewise. |
| * tests/getdents.awk: New file. |
| * tests/getdents.test: New test. |
| * tests/Makefile.am (TESTS): Add it. |
| (EXTRA_DIST): Add getdents.awk. |
| |
| 2014-09-10 Dmitry V. Levin <ldv@altlinux.org> |
| |
| tprint_sock_type: remove unused parameter. |
| * net.c (tprint_sock_type): Remove unused parameter 'tcp'. |
| (sys_socket, sys_socketpair): Update callers. |
| |
| printsock: fix decoding of unrecognized AF_PACKET packet types. |
| * net.c (printsock): Fix fallback string for AF_PACKET packet types. |
| |
| 2014-09-09 Dmitry V. Levin <ldv@altlinux.org> |
| |
| decode_select: fix potential use of an uninitialized variable. |
| A pointer to fd_set was used uninitialized when nfds == 0. |
| |
| * desc.c (decode_select): Initialize fds. |
| |
| Reported-by: Zubin Mithra <zubin.mithra@gmail.com> |
| |
| 2014-09-08 Dmitry V. Levin <ldv@altlinux.org> |
| |
| Use external libaio.h. |
| Stop using an outdated partial copy of libaio.h, switch back to external |
| libaio.h from libaio. |
| This partially reverts commit 2df03c494eb3c36c4178eba35c374831031d1a58. |
| |
| * aio.c: Drop a partial copy of libaio.h, include <libaio.h> instead. |
| (print_common_flags): Check for HAVE_STRUCT_IOCB_U_C_FLAGS. |
| (sys_io_submit): Check for HAVE_DECL_IO_CMD_PWRITE and |
| HAVE_DECL_IO_CMD_PWRITEV. |
| * configure.ac: Check for libaio.h and declaration it provides. |
| |
| 2014-08-19 Dmitry V. Levin <ldv@altlinux.org> |
| |
| maint: post-release administrivia. |
| * NEWS: Add header line for next release. |
| |
| 2014-08-15 Dmitry V. Levin <ldv@altlinux.org> |
| |
| Prepare for 4.9 release. |
| * NEWS: Update for 4.9 release. |
| * debian/changelog: 4.9-1. |
| * strace.spec: 4.9-1. |
| |
| Sync strace.spec and debian/ with packages. |
| * debian/changelog: Sync with 4.8-1.1. |
| * debian/control: Likewise. |
| * debian/rules: Likewise. |
| * strace.spec: Sync with 4.8-5. |
| |
| NEWS: Update for 4.9 release. |
| |
| 2014-08-15 Mike Frysinger <vapier@gentoo.org> |
| |
| Update syscall tables to the point where they include renameat2. |
| * linux/dummy.h: Add printargs aliases for sys_sched_getattr and |
| sys_sched_setattr. |
| * linux/aarch64/syscallent1.h: Add kcmp/finit_module/sched_setattr/ |
| sched_getattr/renameat2. |
| * linux/alpha/syscallent.h: Add kcmp/finit_module. |
| * linux/arm/syscallent.h: Add sched_setattr/sched_getattr/renameat2. |
| * linux/hppa/syscallent.h: Add sched_setattr/sched_getattr/utimes/renameat2. |
| * linux/i386/syscallent.h: Add sched_setattr/sched_getattr/renameat2. |
| * 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: Add getdents64/sched_setattr/sched_getattr/ |
| renameat2. |
| * linux/mips/syscallent-o32.h: Add sched_setattr/sched_getattr/renameat2. |
| * linux/powerpc/syscallent.h: Fix finit_module/kcmp order. Add sched_setattr/ |
| sched_getattr/renameat2. |
| * linux/s390/syscallent.h: Add sched_setattr/sched_getattr/renameat2. |
| * linux/s390x/syscallent.h: Likewise. |
| * linux/sparc/syscallent.h: Likewise. |
| * linux/x32/syscallent.h: Likewise. |
| * linux/x86_64/syscallent.h: Likewise. |
| * linux/xtensa/syscallent.h: Add sched_setattr/sched_getattr. |
| |
| renameat2: add decoding support. |
| * file.c (decode_renameat, sys_renameat2): New functions. |
| (sys_renameat): Use decode_renameat. |
| * pathtrace.c (pathtrace_match): Handle sys_renameat2. |
| * linux/syscall.h (sys_renameat2): New prototype. |
| * xlat/rename_flags.in: New file. |
| |
| 2014-08-14 Mike Frysinger <vapier@gentoo.org> |
| |
| CREDITS: fix generation in out of tree builds. |
| The {...} code changes the working dir with `cd`, but the commands outside |
| of that block expects to be in the original dir. Change to a subshell so |
| the path outside of this block remains unchanged. |
| |
| * Makefile.am ($(srcdir)/CREDITS): Change {...} to (...). |
| |
| 2014-08-14 Mike Frysinger <vapier@gentoo.org> |
| |
| ia64: add missing syscalls. |
| When the preadv/pwritev syscalls were added, the ones before it in the |
| ia64 list were missed, so all the syscalls there and later were not in |
| the right location (causing things to be decoded incorrectly). |
| |
| Add the missing syscalls before preadv which also re-aligns all the |
| syscalls after that point. This fixes the uio.test. |
| |
| * linux/ia64/syscallent.h: Add syscalls 1310 through 1318. |
| |
| 2014-08-14 Mike Frysinger <vapier@gentoo.org> |
| |
| ia64: fix sigaction decoding. |
| Looks like ia64 doesn't have sa_restorer either, yet still defines |
| SA_RESTORER. Deploy the same trick that HPPA is using to make the |
| test pass. |
| |
| * signal.c (SA_RESTORER): Undefine when IA64 is defined. |
| (struct new_sigaction) [IA64]: Disable sa_restorer. |
| |
| 2014-08-12 Dmitry V. Levin <ldv@altlinux.org> |
| |
| tests: skip detach-stopped.test when PTRACE_SEIZE doesn't work. |
| detach-stopped.test is known to fail when PTRACE_SEIZE is not available, |
| so skip the test in that case. |
| |
| * tests/detach-stopped.test: Check for "strace -d" output and skip the |
| test when it says that PTRACE_SEIZE doesn't work. |
| |
| 2014-08-11 Erik Johansson <erik@ejohansson.se> |
| |
| sh: fix syscall numbering for recv and sendto. |
| * linux/sh/syscallent.h: Swap recv and sendto syscall entries. |
| |
| 2014-08-11 Mike Frysinger <vapier@gentoo.org> |
| |
| tests: fix uio building w/out preadv/pwritev. |
| The preadv/pwritev symbols weren't added to glibc until the 2.10 release, |
| so trying to build the uio test leads to link failures. Add configure |
| tests and update uio.test to handle this. |
| |
| * configure.ac (AC_CHECK_FUNCS): Add preadv/pwritev. |
| * tests/uio.c: Include config.h. |
| (main): Check for HAVE_PREADV and HAVE_PWRITEV. |
| * tests/uio.test: Check exit status of uio helper. |
| |
| 2014-08-11 Mike Frysinger <vapier@gentoo.org> |
| |
| tests: ignore *.tmp files. |
| The tests like to generate random .tmp files, so ignore them. |
| |
| * tests/.gitignore: Add *.tmp. |
| |
| 2014-08-11 Mike Frysinger <vapier@gentoo.org> |
| |
| tests: fix shell errors in detach tests. |
| The current detach test code does: |
| set -e |
| ... |
| cleanup() { |
| set +e |
| kill ... |
| wait ... |
| } |
| ... |
| cleanup |
| exit 0 |
| |
| The problem is that while `set -e` is disabled for the body of the |
| cleanup function, it isn't necessarily disabled in the caller scope. |
| So if the return value of the cleanup function (`wait` in this case) |
| is non-zero, the script ends up failing overall. |
| |
| Add an explicit return 0 to the cleanup function so that we don't kill |
| the overall test pipeline. |
| |
| * tests/detach-running.test (cleanup): Add return 0. |
| * tests/detach-sleeping.test (cleanup): Likewise. |
| * tests/detach-stopped.test (cleanup): Likewise. |
| |
| 2014-08-11 Mike Frysinger <vapier@gentoo.org> |
| |
| set_ptracer_any: add a little documentation. |
| This way I don't have to keep reading up on these options and wondering |
| why the code isn't aborting when the call fails. |
| |
| * tests/set_ptracer_any.c (main): Note prctl failures are ok. |
| |
| 2014-08-10 Mike Frysinger <vapier@gentoo.org> |
| |
| signal: fix thinko in sa_restorer. |
| Previous commit here re-added the bugs trying to be fixed due to a |
| logic thinko. The patches were tested in isolation and hand merged |
| later. Oops. |
| |
| * signal.c (struct new_sigaction): Change || to &&. |
| |
| 2014-08-09 Mike Frysinger <vapier@gentoo.org> |
| |
| sigaction test: support arches w/out SA_RESTORER and swapped args. |
| Running Linux 3.15 (sparc64) and glibc 2.17 (sparc32) triggers a |
| rt_sigaction call that does not use SA_RESTORER and has an order |
| where it inserts a restorer and a size. The current tests don't |
| support that ordering, so add another regex. |
| |
| * tests/sigaction.awk: Support no SA_RESTORER and swapped args. |
| |
| 2014-08-09 Mike Frysinger <vapier@gentoo.org> |
| |
| alpha/sparc: fix arg count for rt_sigaction. |
| Both these arches have a rt_sigaction syscall that takes 5 args, not 4. |
| |
| * linux/alpha/syscallent.h (rt_sigaction): Change nargs to 5. |
| * linux/sparc/syscallent.h (rt_sigaction): Change nargs to 5. |
| |
| 2014-08-09 Mike Frysinger <vapier@gentoo.org> |
| |
| hppa: fix sigaction decoding. |
| Since the rt_sigaction syscall on hppa doesn't have a sa_restorer, |
| do not include it in the kernel struct. |
| |
| We also have to undefine SA_RESTORER so that code doesn't try to |
| use it. The headers will export this, but the syscall doesn't |
| actually respect it. |
| |
| * signal.c (SA_RESTORER): Undefine when HPPA is defined. |
| (struct new_sigaction): Disable sa_restorer on hppa. |
| |
| 2014-08-09 Mike Frysinger <vapier@gentoo.org> |
| |
| alpha: fix sigaction decoding. |
| Since the rt_sigaction syscall on alpha doesn't have a sa_restorer, |
| do not include it in the kernel struct. |
| |
| * signal.c (struct new_sigaction): Disable sa_restorer on alpha. |
| |
| 2014-08-08 Dmitry V. Levin <ldv@altlinux.org> |
| |
| Prepare for -yy option support. |
| * defs.h (show_fd_path): Change type to unsigned int. |
| * strace.c (show_fd_path): Likewise. |
| (init): Handle repeated -y option. |
| |
| 2014-08-07 Dmitry V. Levin <ldv@altlinux.org> |
| |
| Fix preadv/pwritev offset decoding on ILP32 architectures. |
| This fixes regression introduced by the previous commit. |
| |
| * io.c (print_llu_from_low_high_val) [SIZEOF_LONG != SIZEOF_LONG_LONG]: |
| Cast argument to unsigned long before casting it to unsigned long long. |
| |
| 2014-08-07 Dmitry V. Levin <ldv@altlinux.org> |
| |
| Fix preadv/pwritev offset decoding on bigendian architectures. |
| This partially reverts commit 7845a42b39e59e904d01e75e21f7bc7eb6462560. |
| |
| * util.c (printllval): Remove align argument. |
| * defs.h (printllval): Update prototype. |
| (printllval_aligned, printllval_unaligned): Remove. |
| * file.c (sys_readahead, sys_truncate64, sys_ftruncate64, sys_fadvise64, |
| sys_fadvise64_64, sys_sync_file_range, sys_sync_file_range2, |
| sys_fallocate): Replace printllval_aligned call with printllval. |
| * io.c (sys_pread, sys_pwrite): Likewise. |
| (print_llu_from_low_high_val): New function. |
| (sys_preadv, sys_pwritev): Use it instead of printllval_unaligned. |
| |
| 2014-08-06 Dmitry V. Levin <ldv@altlinux.org> |
| |
| Decode file descriptors returned by accept and accept4 syscalls. |
| * net.c (do_accept): Rename to do_sockname. |
| (sys_accept, sys_accept4): Update callers, return RVAL_FD. |
| (sys_getsockname, sys_getpeername): Call do_sockname directly. |
| * tests/net-fd.test: Update. |
| |
| 2014-08-01 Mike Frysinger <vapier@gentoo.org> |
| |
| x32: update io_{setup,submit} syscalls. |
| Starting in 3.16, these two syscalls have gotten their own entry |
| point for x32. See linux 7fd44dacdd803c0bbf38bf478d51d280902bb0f1. |
| |
| * linux/x32/syscallent.h: Change existing io_{setup,submit} to 64bit, |
| and add new entry points for x32 specifically. |
| |
| 2014-06-18 Max Filippov <jcmvbkbc@gmail.com> |
| |
| xtensa: sort values in struct_user_offsets. |
| Otherwise ptrace syscall argument decoding is wrong: |
| ptrace(PTRACE_PEEKUSER, 296, syscall_nr, [0x4048eb]) = 0 |
| ptrace(PTRACE_PEEKUSER, 296, syscall_nr, [0x3fa6cd30]) = 0 |
| ptrace(PTRACE_PEEKUSER, 296, syscall_nr, [0x8040676d]) = 0 |
| instead of |
| ptrace(PTRACE_PEEKUSER, 296, pc, [0x4048eb]) = 0 |
| ptrace(PTRACE_PEEKUSER, 296, a1, [0x3fa6cd30]) = 0 |
| ptrace(PTRACE_PEEKUSER, 296, a0, [0x8040676d]) = 0 |
| |
| * process.c (struct_user_offsets) [XTENSA]: Sort values. |
| |
| 2014-06-18 Dmitry V. Levin <ldv@altlinux.org> |
| |
| Document -k option as experimental. |
| strace -k does not produce a reliable output on all supported |
| configurations yet, even basic strace-k.test is known to fail |
| on some of them. |
| |
| * strace.c (usage): Document -k option as experimental. |
| * strace.1: Likewise. |
| * NEWS: Likewise. |
| |
| 2014-06-18 Dmitry V. Levin <ldv@altlinux.org> |
| |
| tests: robustify -k test. |
| Split stack-fcall.c into several compilation units so that intermediate |
| function calls would not be optimized out by compiler. |
| |
| * tests/stack-fcall.c: Move intermediate functions to ... |
| * tests/stack-fcall-*.c: ... new files. |
| * tests/Makefile.am (stack_fcall_SOURCES): Add stack-fcall-*.c. |
| |
| 2014-06-13 Dmitry V. Levin <ldv@altlinux.org> |
| |
| tests: enhance -k test. |
| Add two more function calls to the stack. Suggested by Masatake YAMATO. |
| |
| * tests/stack-fcall.c (f1): Rename to f3. |
| (f1, f2): New functions. |
| * tests/strace-k.test: Update. |
| |
| 2014-06-13 Dmitry V. Levin <ldv@altlinux.org> |
| |
| unwind: ignore memory mappings that have no PROT_EXEC bit set. |
| * unwind.c (build_mmap_cache): For each memory mapping being scanned, |
| save its PROT_EXEC bit and skip the mapping if it is not set. |
| |
| unwind: cleanup build_mmap_cache. |
| * unwind.c (build_mmap_cache): Move local variables to the code branch |
| where they are used. Check return code of sscanf and strdup. Do not |
| treat unusual memory mappings as fatal errors. Do not skip memory |
| mappings with path names starting with "[". |
| |
| unwind: remove unused field from mmap_cache_t. |
| * unwind.c (mmap_cache_t): Remove "deleted" field. |
| (build_mmap_cache): Remove initialization of "deleted" field. |
| |
| 2014-06-12 Dmitry V. Levin <ldv@altlinux.org> |
| |
| unwind: refactor stacktrace_walk. |
| * unwind.c (stacktrace_walk): Move stack frame printing code |
| to separate function print_stack_frame. |
| |
| unwind: constify binary_filename and symbol_name functions arguments. |
| * unwind.c (call_action_fn, print_call_cb, sprint_call_or_error, |
| queue_put, queue_put_call): Add const qualifier to binary_filename and |
| symbol_name arguments. |
| |
| 2014-06-11 Luca Clementi <luca.clementi@gmail.com> |
| |
| unwind: disable stack trace with multiple personalities. |
| * unwind.c (unwind_cache_invalidate, unwind_print_stacktrace, |
| unwind_capture_stacktrace): Disable stack tracing of non-default |
| personality processes. |
| |
| 2014-06-05 Dmitry V. Levin <ldv@altlinux.org> |
| |
| unwind: rename function_off_set to function_offset. |
| * unwind.c (call_action_fn, stacktrace_walk, STACK_ENTRY_SYMBOL_FMT, |
| print_call_cb, sprint_call_or_error, queue_put, queue_put_call): |
| Rename function_off_set to function_offset. |
| |
| unwind: fix a bug in range updating of binary search. |
| * unwind.c (print_stacktrace): Fix another off-by-one error in binary search. |
| |
| unwind: use fopen64 instead of fopen. |
| * unwind.c (fopen_for_input): Define to fopen64 iff |
| [_LARGEFILE64_SOURCE && HAVE_FOPEN64], otherwise define it to fopen. |
| (build_mmap_cache): Use fopen_for_input instead of fopen. |
| |
| 2014-06-05 Dmitry V. Levin <ldv@altlinux.org> |
| |
| unwind: fix build on 32-bit architectures. |
| Fix compilation warnings in unwind.c on 32-bit architectures. |
| On some architectures getuid is actually getuid32, so change the test |
| to use getpid instead of getuid. |
| |
| * unwind.c (STACK_ENTRY_SYMBOL_FMT): Explicitly cast function_off_set |
| to unsigned long. |
| (queue_put_error): Change the 3rd argument's type to unsigned long. |
| * tests/stack-fcall.c (f1): Use getpid instead of getuid. |
| * tests/strace-k.test: Likewise. |
| |
| 2014-06-05 Dmitry V. Levin <ldv@altlinux.org> |
| |
| tests: robustify -w option test. |
| * tests/count.test: Allow nanosleep to spend a bit less time than 1 second. |
| |
| 2014-06-04 Dmitry V. Levin <ldv@altlinux.org> |
| |
| Fix delete_module decoding. |
| * xlat/delete_module_flags.in: New file. |
| * file.c (sys_delete_module): Move ... |
| * bjm.c (sys_delete_module): ... to here. |
| Decode 1st argument using printstr instead of printpath. |
| * NEWS: Mention it. |
| |
| 2014-06-04 Zubin Mithra <zubin.mithra@gmail.com> |
| |
| Decode paths associated with file descriptors returned by syscalls. |
| * defs.h (RVAL_FD): New macro. |
| (RVAL_MASK, RVAL_STR, RVAL_NONE): Update. |
| * desc.c (sys_dup, sys_delete_module): New functions. |
| (do_dup2, decode_open, sys_creat): Change return value to RVAL_FD. |
| * linux/dummy.h (sys_delete_module, sys_dup): Remove. |
| * linux/syscall.h (sys_delete_module, sys_dup): New prototypes. |
| * syscall.c (trace_syscall_exiting): Handle RVAL_FD. |
| |
| 2014-06-03 Dmitry V. Levin <ldv@altlinux.org> |
| |
| NEWS: Prepare for 4.9 release. |
| |
| Warn about flags that have no effect with -c. |
| * strace.c (init): Issue a warning if -i, -k, -r, -t, -T, or -y is used |
| along with -c. |
| This fixes Debian bug #443895. |
| |
| debian: enable security hardening features. |
| * debian/rules: Follow the advice in https://wiki.debian.org/Hardening |
| and enable maximum hardening as for programs that handle untrusted data. |
| Patch by Markus <waldeck@gmx.de>. |
| |
| 2014-06-03 Dmitry V. Levin <ldv@altlinux.org> |
| |
| debian: update control file. |
| * debian/control (strace64): Fix a typo in package description. |
| Patch by Pascal De Vuyst <pascal.devuyst@gmail.com>. |
| (strace, strace-udeb): Add x32 to architecture list. |
| Patch by Guillaume Morin <guillaume@morinfr.org>. |
| (strace, strace-udeb): Add or1k to architecture list. |
| Patch by Christian Svensson <debian@cmd.nu>. |
| (strace, strace-udeb): Add arm64 to architecture list, |
| and remove defunct arm. |
| Patch by Wookey <wookey@debian.org>. |
| |
| This fixes Debian bugs: #697625, #727018, #742235, #749956. |
| |
| 2014-06-03 Dmitry V. Levin <ldv@altlinux.org> |
| |
| manpage: minor corrections. |
| $ groff -ww -mandoc -z strace.1 |
| strace.1:65: warning: macro `IX' not defined |
| |
| * strace.1: define IX macro as empty for groff. |
| Change remaining '-' as minus to '\-'. |
| Have two word spaces after a full stop as an end of sentence. |
| Use extra space ('\,' or '\/') between roman and italic characters. |
| Based on patch by Bjarni Ingi Gislason <bjarniig@rhi.hi.is>. |
| This fixes Debian bug #725987. |
| |
| 2014-05-30 Masatake YAMATO <yamato@redhat.com> |
| |
| unwind: tests: add a test for -k option. |
| * tests/stack-fcall.c: New test target. |
| * tests/strace-k.test: New test driver. |
| * tests/Makefile.am (check_PROGRAMS): Add stack-fcall. |
| (TESTS): Add strace-k.test. |
| * tests/.gitignore: Add stack-fcall. |
| |
| 2014-05-30 Masatake YAMATO <yamato@redhat.com> |
| |
| unwind: move stacktrace capturing and mmap cache invalidating to trace_syscall_entering |
| Instead of handling stacktrace capturing and mmap cache invalidating in |
| sys_* functions, handle them uniformly in trace_syscall_entering using |
| new flags introduced by previous two commits. |
| |
| The patch is simpler than its older version(v3). The value of |
| hide_log_until_execve is just ignored. I found the value is nothing |
| to do with this patch. unwind_cache_invalidate is mentioned only |
| once in trace_syscall_exiting. |
| Both are suggested by Dmitry Levin. |
| |
| 2014-05-30 Dmitry V. Levin <ldv@altlinux.org> |
| |
| unwind: add SE and SI flags to syscall entries for all architectures. |
| Add SE flag to execve, exit, and exit_group syscall entries. |
| Add SI flag to brk, execve, mmap, mprotect, mremap, munmap, |
| remap_file_pages, shmat, and shmdt syscall entries. |
| |
| 2014-05-30 Masatake YAMATO <yamato@redhat.com> |
| |
| unwind: introduce markers specifying the needs of special care in unwinding |
| Some system calls require capturing the stack trace before they are |
| processed in kernel. Typical one is execve. Some system calls require |
| invalidating mmap cache after they are processed in kernel. |
| |
| In current implementation these requirements are handled directly by |
| appropriate syscall handlers. However, it is difficult to keep the |
| source code maintainable using this approach to cover all system calls |
| which have such requirements. |
| |
| A more generic way to implement this is to flag all syscalls that |
| require special processing, and handle these flags right in |
| trace_syscall_entering instead of changing syscall handlers. |
| |
| This patch just defines new flags: STACKTRACE_INVALIDATE_CACHE and |
| STACKTRACE_CAPTURE_ON_ENTER. |
| |
| The names of macros are suggested by Dmitry Levin. |
| |
| 2014-05-30 Masatake YAMATO <yamato@redhat.com> |
| |
| unwind: enable dwarf cache of libunwind. |
| Here is the benchmark of the dwarf cache. |
| |
| Target program: |
| |
| #include <sched.h> |
| int main(void) |
| { |
| unsigned int max = 0x6fff, i; |
| for (i = 0; i < max; i++) |
| sched_yield(); |
| return 0; |
| } |
| |
| Command line: |
| |
| ./strace -o /dev/null -k a.out |
| |
| With the dwarf cache: |
| |
| real 0m12.081s |
| user 0m3.858s |
| sys 0m8.194s |
| |
| Without the dwarf cache: |
| |
| real 0m22.326s |
| user 0m5.218s |
| sys 0m16.952s |
| |
| 2014-05-30 Masatake YAMATO <yamato@redhat.com> |
| |
| unwind: report expected backtracing error. |
| When a file mmap'ed to the target process is unlink'ed, backtracing the |
| stack would fail. Current implementation reports it as |
| "backtracing_error". To avoid confusion, the message is changed to |
| "expected_backtracing_error". |
| |
| Here is the reproducer: |
| |
| $ cat ./p-deleted.c |
| #include <unistd.h> |
| |
| int main(int argc, char **argv) { |
| return unlink(argv[0]) < 0; |
| } |
| |
| $ strace -e unlink -k ./p-deleted |
| unlink("./p-deleted") = 0 |
| > /usr/lib64/libc-2.18.so(unlink+0x7) [0xe7f17] |
| > /home/yamato/var/strace/t_unwind/p-deleted (deleted)(+0x0) [0x575] |
| > /usr/lib64/libc-2.18.so(__libc_start_main+0xf5) [0x21d65] |
| > backtracing_error [0x7ffff1365590] |
| +++ exited with 0 +++ |
| |
| p-deleted is deleted therefore backtracing_error is reported. This |
| patch records the deleted marker when making mmap cache and refers the |
| recorded information in the case "backtracing_error" to switch the |
| message. |
| |
| Here is the output of this patch: |
| |
| $ strace -e unlink -k ./p-deleted |
| unlink("./p-deleted") = 0 |
| > /usr/lib64/libc-2.18.so(unlink+0x7) [0xe7f17] |
| > /home/yamato/var/strace/t_unwind/p-deleted (deleted)(+0x0) [0x575] |
| > /usr/lib64/libc-2.18.so(__libc_start_main+0xf5) [0x21d65] |
| > expected_backtracing_error [0x7ffff1365590] |
| +++ exited with 0 +++ |
| |
| This solution is not perfect: if a file is unlink'ed after making the |
| mmap cache and before unwinding, strace cannot have a chance to record |
| the deleted marker. |
| |
| In this version of patch, hardcoded magic number used in comparing "(delete)" |
| string is replaced with strlen as suggested by Dmitry Levin. |
| |
| In old version of patch, the deleted entry was thrown away from mmap |
| cache to avoid to report "backtracing_error". In this patch I keep it, |
| and just switch the error message. |
| Inspired by the review comment from Dmitry Levin. |
| |
| 2014-05-30 Masatake YAMATO <yamato@redhat.com> |
| |
| unwind: call unwind_tcb_fin before printing detached message. |
| captured stacktrace is printed in unwind_tcb_fin if tcp->queue is not |
| empty. This should happen before printing detached message, so |
| unwind_tcb_fin is moved to the top of droptcb. |
| |
| This is implicitly suggested by Dmitry Levin in patch review process. |
| |
| 2014-05-30 Masatake YAMATO <yamato@redhat.com> |
| |
| unwind: implement automatic mmap cache invalidation. |
| A mmap cache belonging to a tcb was updated when a system call which |
| changed the memory mapping was called. This implementation was assumed |
| the mapping was changed only by the tcb. However, this assumption is |
| incorrect if the target application is multi-threaded; more than two |
| tcbs can shared the same memory mapping and a tcb can modify it without |
| being noticed by the others. |
| |
| This change introduces a global integer variable mmap_cache_generation, |
| and mmap_cache_generation field to struct tcb. The variable |
| is incremented each time a process enters a syscall that can modify its |
| memory mapping. Each tcb records the value of this variable at the |
| moment if building its mmap cache. Every mmap cache associated with |
| the given tcb can be validated by comparing its mmap_cache_generation |
| field with the variable mmap_cache_generation. |
| |
| This implementation is inefficient. If strace attaches two processes |
| which don't share the memory mapping, rebuilding mmap cache of a tcb |
| triggered by another tcb's mmap system call is not necessary. |
| |
| 2014-05-30 Masatake YAMATO <yamato@redhat.com> |
| |
| unwind: introduce queue_t for capturing stacktrace. |
| This is the second step for splitting capturing from printing. |
| |
| New `queue' field is added to tcb. Captured stacktrace is stored here. |
| The field is initialized/finalized at unwind_tcb_init/unwind_tcb_fin. |
| |
| New API function unwind_capture_stacktrace is added. This function |
| captures the currest stack using stracktrace_walker and records it in |
| tcb. It's printing is delayed to the next call of |
| unwind_print_stacktrace. |
| |
| unwind_print_stacktrace is extended. Now it checks queue field of |
| the given tcb at the start of function. If the function finds a |
| captured stack trace, the latter is printed using stracktrace_walker. |
| |
| Currently unwind_capture_stacktrace invocations are added directly to |
| handlers of mmap, munmap, mprotect, and execve. |
| |
| Here is the difference of output with/without patch: |
| |
| (without patch) |
| execve("./test-fork", ["./test-fork"], [/* 56 vars */]) = 0 |
| > /usr/lib64/ld-2.18.so(check_one_fd.part.0+0x82) [0x11f0] |
| |
| (with patch) |
| execve("./test-fork", ["./test-fork"], [/* 54 vars */]) = 0 |
| > /usr/lib64/libc-2.18.so(execve+0x7) [0xbcd27] |
| > /home/yamato/var/strace/strace(exec_or_die+0x10c) [0x26ac] |
| > /home/yamato/var/strace/strace(startup_child+0x346) [0x134f6] |
| > /home/yamato/var/strace/strace(init+0x89f) [0x13dff] |
| > /home/yamato/var/strace/strace(main+0xa) [0x26ca] |
| > /usr/lib64/libc-2.18.so(__libc_start_main+0xf5) [0x21d65] |
| > /home/yamato/var/strace/strace(_start+0x29) [0x2799] |
| |
| In older version output lines of captured elements were built when |
| printing. In this version they are built when capturing the stack. |
| As result, unneeded dynamic memory allocations are avoided. |
| Suggested by Luca Clementi. |
| |
| In older version the combination of snprintf and realloc were used. |
| In this version they are replaced with asprintf. |
| Suggested by Dmitry Levin. |
| |
| 2014-05-30 Masatake YAMATO <yamato@redhat.com> |
| |
| unwind: introduce own debug macro. |
| * unwind.c (DPRINTF): New macro, to be utilized in debugging cache |
| management code. |
| |
| 2014-05-30 Masatake YAMATO <yamato@redhat.com> |
| |
| unwind: introduce stacktrace_walker. |
| In current implementation, the stack trace is captured and printed at |
| the same time, in trace_syscall_exiting. This approach cannot |
| provide user expected information when a system call changes the |
| memory mapping. In such cases, the stack trace should be captured on |
| entering syscall and printed on exiting. |
| |
| As the initial step for splitting capturing from printing, this change |
| introduces stacktrace_walker utility function. It can be used both for |
| capturing in trace_syscall_entering and printing in |
| trace_syscall_exiting. |
| |
| 2014-05-30 Masatake YAMATO <yamato@redhat.com> |
| |
| unwind: give all exported functions "unwind_" prefix. |
| * unwind.c (init_unwind_addr_space): Rename to unwind_init. |
| (init_libunwind_ui): Rename to unwind_tcb_init. |
| (free_libunwind_ui): Rename to unwind_tcb_fin. |
| (delete_mmap_cache): Rename to unwind_cache_invalidate. |
| (print_stacktrace): Rename to unwind_print_stacktrace. |
| * defs.h: Update prototypes. |
| * mem.c: All callers updated. |
| * process.c: Likewise. |
| * strace.c: Likewise. |
| * syscall.c: Likewise. |
| |
| 2014-05-30 Masatake YAMATO <yamato@redhat.com> |
| |
| unwind: delete mmap cache in free_libunwind_ui. |
| free_libunwind_ui is expected to release all unwind related resources |
| attached to tcp. |
| |
| * strace.c (droptcb): Move delete_mmap_cache call ... |
| * unwind.c (free_libunwind_ui): ... to here. |
| |
| 2014-05-30 Masatake YAMATO <yamato@redhat.com> |
| |
| unwind: make alloc_mmap_cache function local. |
| * defs.h (alloc_mmap_cache): Remove. |
| * unwind.c (alloc_mmap_cache): Add static qualifier. |
| |
| unwind: fix a bug in range updating of binary search. |
| * unwind.c (print_stacktrace): Fix off-by-one error in binary search. |
| |
| 2014-05-30 Luca Clementi <luca.clementi@gmail.com> |
| |
| Add -k option to print stack trace after each syscall. |
| Print the stack trace of the traced process after each system call when |
| -k option is specified. It is implemented using libunwind to unwind the |
| stack and to obtain the function name pointed by the IP. |
| |
| Based on the code that was originally taken from strace-plus |
| of Philip J. Guo. |
| |
| * configure.ac: Add --with-libunwind option. Check libunwind support. |
| * Makefile.am: Add libunwind support. |
| * defs.h (struct tcb) [USE_LIBUNWIND]: Append libunwind specific fields. |
| [USE_LIBUNWIND] (stack_trace_enabled, alloc_mmap_cache, |
| delete_mmap_cache, print_stacktrace): New prototypes. |
| * mem.c (print_mmap, sys_munmap, sys_mprotect): Add libunwind support. |
| * process.c (sys_execve): Likewise. |
| * strace.c (usage, alloctcb, droptcb, init): Likewise. |
| * syscall.c (trace_syscall_exiting): Likewise. |
| * unwind.c: New file. |
| * strace.1: Document -k option. |
| |
| 2014-05-30 Dmitry V. Levin <ldv@altlinux.org> |
| |
| sysctl: update CTL_*, KERN_*, NET_*, and VM_* constants. |
| * configure.ac (AC_CHECK_DECLS): Add CTL_*, KERN_*, NET_*, and |
| VM_* constants. |
| * system.c (CTL_PROC, CTL_CPU): Remove definitions. |
| * xlat/sysctl_*.in: Update. |
| |
| Check for constants used by waitid function. |
| * configure.ac (AC_CHECK_DECLS): Add P_* constants. |
| |
| Check for LO_FLAGS_READ_ONLY constant. |
| * configure.ac (AC_CHECK_DECLS): Add LO_FLAGS_READ_ONLY. |
| |
| Compress blank lines. |
| Suppress empty lines left after automated xlat conversion. |
| |
| xlat: cleanup the aftermath of automatic conversion. |
| |
| Generate xlat/*.in files. |
| Automatically convert xlat structures from *.c files to xlat/*.in files |
| using "./generate_xlat_in.sh *.c" command. |
| |
| Rename several xlat structures to avoid collisions. |
| * bjm.c (which): Rename to qm_which. |
| * ipc.c (msg_flags): Rename to ipc_msg_flags. |
| * time.c (which): Rename to itimer_which. |
| |
| Enhance xlat generator. |
| * xlat/gen.sh: Define all xlat structs not declared in defs.h as static. |
| Some symbolic constants are not macros, extend #ifdef check to cover |
| symbolic constants checked by AC_CHECK_DECLS. |
| Handle complex symbolic constants in SYMBOL|... form. |
| Handle symbolic constants in 1<<SYMBOL form. |
| Handle numeric constants. |
| Implement #unconditional directive that turns off preprocessor checks. |
| Implement #unterminated directive that turns off adding XLAT_END. |
| |
| 2014-05-30 Dmitry V. Levin <ldv@altlinux.org> |
| |
| Use bootstrap script consistently. |
| Now that ./xlat/gen.sh has to be run before autoreconf, |
| replace all autoreconf calls with ./bootstrap call. |
| |
| * bootstrap: Forward arguments to autoreconf. |
| * build_static_example.sh: Replace autoreconf call with bootstrap call. |
| * make-dist: Likewise. |
| * qemu_multiarch_testing/README: Likewise. |
| |
| 2014-05-30 Mike Frysinger <vapier@gentoo.org> |
| |
| Implement xlat generator. |
| * bootstrap: New file. |
| * xlat/gen.sh: Likewise. |
| * Makefile.am: Include xlat/Makemodule.am |
| (EXTRA_DIST): Add $(XLAT_INPUT_FILES), $(XLAT_HEADER_FILES), and |
| xlat/gen.sh. |
| |
| 2014-05-30 Dmitry V. Levin <ldv@altlinux.org> |
| |
| tests: fix SCM_RIGHTS test for big-endian systems. |
| * tests/scm_rights.c (main): Send zero integer to avoid issues with |
| endianness. |
| * tests/scm_rights-fd.test: Update grep patterns. |
| |
| Decode file descriptors passed via SCM_RIGHTS control messages. |
| * net.c (printcmsghdr): Print descriptors from SCM_RIGHTS control |
| messages using printfd. |
| * tests/scm_rights.c: New file. |
| * tests/scm_rights-fd.test: New test. |
| * tests/Makefile.am (check_PROGRAMS): Add scm_rights. |
| (TESTS): Add scm_rights-fd.test. |
| * tests/.gitignore: Add scm_rights and uio. |
| |
| tests: add a test for -c and -w options. |
| * tests/count.test: New test. |
| * tests/Makefile.am (TESTS): Add it. |
| |
| 2014-05-29 Mark Hills <Mark.Hills@framestore.com> |
| |
| Optionally produce stats on syscall latency. |
| Time spent in system time is not useful where a syscall depends on some |
| non-CPU resource, eg. typically open() or stat() to a network drive. |
| |
| This patch adds a new flag (-w) to produce a summary of the time |
| difference between beginning and end of the system call (ie. latency) |
| |
| This functionality has been useful to profile slow processes that |
| are not CPU-bound. |
| |
| 2014-05-29 Dmitry V. Levin <ldv@altlinux.org> |
| |
| Constify count_syscall function. |
| * count.c (count_syscall): Add const qualifier to timeval argument and |
| rename it. Store the wall clock time spent while in syscall in separate |
| timeval variable. |
| * defs.h (count_syscall): Update prototype. |
| * syscall.c (trace_syscall_exiting): Update count_syscall invocation. |
| |
| Constify tv_* functions. |
| * defs.h (tv_nz, tv_cmp, tv_float, tv_add, tv_sub, tv_mul, tv_div): Add |
| const qualifier to read only arguments. |
| * util.c (tv_nz, tv_cmp, tv_float, tv_add, tv_sub, tv_mul, tv_div): |
| Likewise. |
| |
| 2014-05-28 Dmitry V. Levin <ldv@altlinux.org> |
| |
| Use printstr for sethostname, setdomainname, and gethostname decoding. |
| The argument passed to sethostname and setdomainname syscalls, as well |
| as the string returned by gethostname syscall, is not a pathname, so |
| printpathn is not the right method for its decoding. |
| |
| * process.c (sys_sethostname, sys_setdomainname): Decode 1st argument |
| using printstr instead of printpathn. |
| [ALPHA] (sys_gethostname): Likewise. |
| |
| 2014-05-21 James Hogan <james.hogan@imgtec.com> |
| |
| Fix {get,set}rlimit decoding with unreliable SIZEOF_RLIM_T. |
| When strace is built with large file support definitions in CFLAGS (as |
| may be provided by buildroot) the C library headers may expose a 64-bit |
| rlim_t even though the struct rlimit fields used by the system call |
| interface are only 32-bit. The SIZEOF_RLIM_T will then be 8 which |
| results in bad decoding of the getrlimit and setrlimit syscalls. |
| |
| This is fixed by replacing unreliable SIZEOF_RLIM_T based checks with |
| checks for current_wordsize. |
| |
| 2014-05-13 Masatake YAMATO <yamato@redhat.com> |
| |
| Enhance setns syscall decoding. |
| * process.c (sys_setns): New function. |
| Decode the 2nd syscall argument using clone_flags. |
| * linux/syscall.h (sys_setns): New prototype. |
| * linux/dummy.h (sys_setns): Remove. |
| |
| 2014-05-12 Dmitry V. Levin <ldv@altlinux.org> |
| |
| mips: fix syscall entries that should have TP flag set. |
| |
| xtensa: fix unshare syscall entry. |
| |
| alpha, hppa, mips n64: fix waitid syscall entry. |
| |
| Add TM flag to shmat and shmdt syscall entries. |
| |
| Alias sys_vfork to sys_fork. |
| * process.c (sys_vfork): Remove. |
| * linux/syscall.h (sys_vfork): Likewise. |
| * linux/dummy.h (sys_vfork): Alias to sys_fork. |
| * linux/alpha/syscallent.h: Fix vfork entry. |
| * util.c (setbpt): Do not check for sys_vfork. |
| * syscall.c (syscall_fixup_for_fork_exec): Likewise. |
| |
| 2014-04-17 Dmitry V. Levin <ldv@altlinux.org> |
| |
| epoll_ctl: fix EPOLL_CTL_DEL argument decoding. |
| * desc.c (sys_epoll_ctl): Do not parse the event structure for |
| EPOLL_CTL_DEL operation. |
| |
| Reported-by: Марк Коренберг <socketpair@gmail.com> |
| |
| 2014-04-17 Dmitry V. Levin <ldv@altlinux.org> |
| |
| Update CLOCK_* constants. |
| * time.c (clocknames): Add CLOCK_BOOTTIME, CLOCK_REALTIME_ALARM, |
| CLOCK_BOOTTIME_ALARM, CLOCK_SGI_CYCLE, and CLOCK_TAI. |
| Fixes RH#1088455. |
| |
| 2014-04-17 Dmitry V. Levin <ldv@altlinux.org> |
| |
| Fix preadv/pwritev offset decoding. |
| * util.c (printllval): Add align argument. |
| * defs.h (printllval): Update prototype. |
| (printllval_aligned, printllval_unaligned): New macros. |
| * file.c (sys_readahead, sys_truncate64, sys_ftruncate64, sys_fadvise64, |
| sys_fadvise64_64, sys_sync_file_range, sys_sync_file_range2, |
| sys_fallocate): Replace printllval call with printllval_aligned. |
| * io.c (sys_pread, sys_pwrite): Likewise. |
| (sys_preadv, sys_pwritev): Replace printllval call with |
| printllval_unaligned. |
| * linux/arm/syscallent.h: Set the number of preadv and pwritev |
| arguments to 5. |
| * linux/mips/syscallent-o32.h: Likewise. |
| * linux/powerpc/syscallent.h: Likewise. |
| * linux/sh/syscallent.h: Likewise. |
| * linux/xtensa/syscallent.h: Likewise. |
| |
| Reported-by: Dima Kogan <dima@secretsauce.net> |
| |
| 2014-04-16 Dmitry V. Levin <ldv@altlinux.org> |
| |
| tests: add a test for pread/pwrite and preadv/pwritev offset decoding. |
| * tests/uio.c: New file. |
| * tests/uio.test: New test. |
| * tests/Makefile.am (check_PROGRAMS): Add uio. |
| (uio_CFLAGS): Define. |
| (TESTS): Add uio.test. |
| |
| 2014-04-10 Dmitry V. Levin <ldv@altlinux.org> |
| |
| Refactor LDT decoding. |
| * configure.ac (AC_CHECK_TYPES): Remove struct user_desc. |
| * ldt.c: New file. |
| * Makefile.am (strace_SOURCES): Add ldt.c. |
| * mem.c: Do not include <asm/ldt.h>. |
| (print_ldt_entry): Remove. |
| (sys_modify_ldt, sys_set_thread_area, sys_get_thread_area): Move... |
| * ldt.c: ... here. |
| * process.c: Do not include <asm/ldt.h>. |
| (sys_clone) [I386 || X86_64 || X32]: Use print_user_desc. |
| |
| 2014-04-10 Denys Vlasenko <dvlasenk@redhat.com> |
| |
| Make int3 example in comments more cut-n-pastable. |
| I found that I use it quite often. Lets make it so that |
| after cut-n-pasting it into a file, there is no need |
| to edit the result (e.g. no need to remove C comment |
| chars from every line. |
| |
| 2014-04-09 Dmitry V. Levin <ldv@altlinux.org> |
| |
| mips: enable decoding of set_thread_area. |
| * linux/dummy.h [MIPS]: Do not redirect sys_set_thread_area to printargs. |
| * mem.c [MIPS] (sys_set_thread_area): Define. |
| |
| x86_64, x32: enable decoding of modify_ldt, get_thread_area, and set_thread_area |
| * linux/dummy.h [X86_64 || X32]: Do not redirect sys_modify_ldt, |
| sys_get_thread_area, and sys_set_thread_area to printargs. |
| |
| x32: decode clone LDT user_desc entries for x86 processes. |
| * mem.c [X32]: Include asm/ldt.h. |
| [X32] (print_ldt_entry, sys_modify_ldt, sys_set_thread_area, |
| sys_get_thread_area): Define. |
| * process.c [X32]: Include asm/ldt.h. |
| (sys_clone) [X32]: Decode LDT entry if current_personality == 1. |
| |
| 2014-04-09 Elliott Hughes <enh@google.com> |
| |
| x86-64: decode clone LDT user_desc entries for x86 processes. |
| * mem.c [X86_64]: Include asm/ldt.h. |
| [X86_64] (print_ldt_entry, sys_modify_ldt, sys_set_thread_area, |
| sys_get_thread_area): Define. |
| * process.c [X86_64]: Include asm/ldt.h. |
| (sys_clone) [X86_64]: Decode LDT entry if current_personality == 1. |
| |
| 2014-04-09 Dmitry V. Levin <ldv@altlinux.org> |
| |
| x32: fix clone(2) argument order for x86 processes. |
| Apply the same fix that was made for x86_64. |
| |
| * process.c [X32] (ARG_CTID, ARG_TLS): Take current |
| personality into account. |
| |
| 2014-04-09 Elliott Hughes <enh@google.com> |
| |
| x86-64: fix clone(2) argument order for x86 processes. |
| Without this patch, strace claims that parent_tidptr == tls, which is |
| clearly wrong. It is expected that parent_tidptr == child_tidptr. |
| |
| * process.c [X86_64] (ARG_CTID, ARG_TLS): Take current |
| personality into account. |
| |
| 2014-04-06 Elliott Hughes <enh@google.com> |
| |
| aarch64: Fix decoding of arm struct stat64. |
| We need to handle this situation more like x86-64. 32-bit arm and i386 |
| actually have a common struct stat64, except the arm one must not be |
| packed. Additionally, on aarch64 the 32-bit personality is personality 0. |
| |
| 2014-03-20 Dmitry V. Levin <ldv@altlinux.org> |
| |
| ARM EABI: disable OABI support by default. |
| OABI is rarely used in ARM EABI systems nowadays, so disable its support |
| by default. Add --enable-arm-oabi option to enable ARM OABI support. |
| |
| * configure.ac: New option --enable-arm-oabi. |
| * syscall.c (get_scno) [ARM]: Check ENABLE_ARM_OABI macro defined by |
| configure instead of undocumented STRACE_KNOWS_ONLY_EABI macro. |
| |
| 2014-03-12 Elliott Hughes <enh@google.com> |
| |
| Fix stat decoding for LP64 bionic. |
| Patch fb642bb6d63f7ffe2228bf48a6008bc8f56f67ff fixed building with |
| HAVE_STAT64 for aarch64 with uapi kernel headers but not x86_64. |
| The workaround needed to be applied to all LP64 architectures, not |
| just aarch64. This patch fixes that and adds an explanatory comment. |
| |
| 2014-03-11 Masatake YAMATO <yamato@redhat.com> |
| |
| Decode protocol argument for PF_NETLINK sockets. |
| * net.c (protocols): Rename to inet_protocols. |
| [PF_NETLINK] (netlink_protocols): New xlat structure. |
| (sys_socket): Rename protocols to inet_protocols. |
| [PF_NETLINK]: Decode protocol argument using netlink_protocols. |
| |
| Acked-by: Mike Frysinger <vapier@gentoo.org> |
| |
| 2014-03-11 Dmitry V. Levin <ldv@altlinux.org> |
| |
| Cleanup socketpair decoding. |
| The only supported domain for socketpair syscall is AF_UNIX, so |
| no decoding related to other domains is required for socketpair. |
| |
| * net.c (sys_socketpair): Remove support for PF_INET and PF_IPX domains, |
| print the protocol argument as is. |
| |
| 2014-03-11 Dmitry V. Levin <ldv@altlinux.org> |
| |
| printsiginfo: add SIGSYS decoding. |
| * configure.ac (AC_CHECK_MEMBERS): Check for siginfo_t.si_syscall. |
| * signal.c (SYS_SECCOMP): Define if not yet defined. |
| (sigsys_codes): new xlat structure. |
| (printsiginfo): Decode SIGSYS. |
| |
| Update siginfo codes. |
| * signal.c (siginfo_codes): Add SI_DETHREAD. |
| |
| Factor out printing of si_pid and si_uid members of siginfo_t. |
| * signal.c (printsigsource): New function. |
| (printsiginfo): Use it. |
| |
| 2014-03-10 Elliott Hughes <enh@google.com> |
| |
| Improve SI_TIMER decoding. |
| Decode siginfo_t more clearly for si_code SI_TIMER. |
| The 'pid' is actually a POSIX timer id, and the 'uid' is actually the |
| overrun. |
| Also factor out the si_value dumping so it's the same for every si_code. |
| |
| 2014-03-03 Elliott Hughes <enh@google.com> |
| |
| aarch64: fix decoding of arm syscall numbers. |
| If an aarch64 strace is tracing a process using the arm personality, it |
| also needs to call the shuffle_scno function for the ARM-specific |
| syscalls. |
| |
| * syscall.c (shuffle_scno): Define on AARCH64. |
| (get_scno) [AARCH64]: Call shuffle_scno when the tracee is in 32-bit mode. |
| |
| 2014-03-03 Dmitry V. Levin <ldv@altlinux.org> |
| |
| Fix fcntl decoding. |
| Assume that F_SETLK64, F_SETLKW64, and F_GETLK64 are either defined or |
| not defined altogether. |
| Do not assume that sizeof(off_t) < sizeof(long long) when F_SETLK64 is |
| undefined. |
| |
| This change fixes build with musl libc on x86. |
| |
| * configure.ac: Define SIZEOF_OFF_T. |
| * desc.c (USE_PRINTFLOCK64): New macro. |
| (struct flock64, printflock64): Do not define on X32. |
| (printflock): Replace X32 specific workaround with SIZEOF_OFF_T check. |
| Fix printing off_t members of struct flock. |
| (sys_fcntl): Use USE_PRINTFLOCK64. |
| |
| 2014-03-01 Dmitry V. Levin <ldv@altlinux.org> |
| |
| sys_fcntl: remove F_FREESP and F_FREESP64 support. |
| F_FREESP and F_FREESP64 fcntl commands are not available in Linux |
| and therefore the code implementing their decoding is useless. |
| Besides that, F_FREESP64 decoding is too complicated to support. |
| |
| * desc.c (fcntlcmds): Remove F_FREESP and F_FREESP64. |
| Remove F_FREESP64 from the check whether to define struct flock64. |
| (sys_fcntl): Remove F_FREESP and F_FREESP64 support. |
| |
| 2014-02-28 Elliott Hughes <enh@google.com> |
| |
| Add multi-personality support to struct old_sigaction decoding. |
| struct sigaction is another structure that contains members |
| whose size differs between 32-bit and 64-bit personalities. |
| |
| * signal.c [HAVE_SIGACTION] (old_sigaction32): New structure. |
| [HAVE_SIGACTION] (decode_old_sigaction): Decode 32-bit struct |
| old_sigaction on a 64-bit host. |
| |
| 2014-02-28 Elliott Hughes <enh@google.com> |
| |
| Fix decoding of arm struct stat64 by aarch64 strace. |
| aarch64's uapi header files have a struct stat but no struct stat64. |
| To correctly decode a 32-bit process' s struct stat64 we need |
| HAVE_STAT64, but then the build fails because there is no struct stat64. |
| Luckily, the aarch64 struct stat is structurally equivalent to the arm |
| struct stat64, so we can just reuse that. |
| |
| * file.c [AARCH64] (stat64): Define to stat. |
| |
| 2014-02-28 Dmitry V. Levin <ldv@altlinux.org> |
| |
| Remove obsolete ioctlsort.c. |
| The generic version of ioctlsort.c became obsolete after commit |
| v4.6-240-g5afdf12 that removed its last non-Linux users. |
| |
| * ioctlsort.c: Remove. |
| * Makefile.am (EXTRA_DIST): Remove ioctlsort.c. |
| |
| Reported-by: Elliott Hughes <enh@google.com> |
| |
| 2014-02-27 Dmitry V. Levin <ldv@altlinux.org> |
| |
| Add multi-personality support to stack_t decoding. |
| stack_t is one of many structures that contain members |
| whose size differs between 32-bit and 64-bit personalities. |
| |
| * signal.c (print_stack_t): Decode 32-bit stack_t on a 64-bit host. |
| |
| Reported-by: Elliott Hughes <enh@google.com> |
| |
| 2014-02-27 Dmitry V. Levin <ldv@altlinux.org> |
| |
| Rewrite signal mask decoding without sigset_t. |
| The sigset_t provided by libc is not quite convenient. |
| In glibc, sigset_t is an array with space for 1024 bits, which is much |
| more than required: all architectures supported by Linux have only 64 |
| signals except MIPS, which has 128. |
| In bionic libc, LP32 sigset_t is only 4 bytes long, which is less than |
| necessary. |
| |
| With this change, signal mask is decoded without use of intermediate |
| sigset_t structure, which saves us some cpu cycles in case of glibc with |
| its inflated sigset_t, and enables build with libcs where sigset_t is |
| broken. |
| |
| Old implementation used to check each signal number in the given signal |
| mask twice using sigismember(). |
| New implementation is based on popcount and next_set_bit() so it's |
| noticeably faster. |
| |
| * configure.ac: Check for __builtin_popcount. |
| * signal.c: Ensure that NSIG >= 32. |
| (sprintsigmask, sprintsigmask_long, printsigmask): Remove. |
| (popcount32, sprintsigmask_n): New functions. |
| (tprintsigmask_addr, sprintsigmask_val, tprintsigmask_val): New macros. |
| (print_sigset_addr_len, sys_sigsetmask, sys_sigreturn, sys_siggetmask, |
| sys_sigsuspend, sys_sigprocmask, decode_new_sigaction): Update to use |
| new signal mask decoding interface. |
| * tests/sigaction.c (main): Add a test with almost filled signal mask. |
| * tests/sigaction.awk: Update. |
| |
| 2014-02-26 Dmitry V. Levin <ldv@altlinux.org> |
| |
| Fix build with Bionic libc. |
| Add generic tests for fopen64 and fputs_unlocked functions to fix build |
| with Bionic libc that does not provide them. |
| |
| * configure.ac (AC_CHECK_FUNCS): Add fopen64 and fputs_unlocked. |
| * strace.c [_LARGEFILE64_SOURCE]: Use fopen instead of fopen64 |
| if !HAVE_FOPEN64. |
| Use fputs instead of fputs_unlocked if !HAVE_FPUTS_UNLOCKED. |
| * vsprintf.c: Use fputs instead of fputs_unlocked |
| if !HAVE_FPUTS_UNLOCKED. |
| |
| Reported-by: Elliott Hughes <enh@google.com> |
| |
| 2014-02-25 James Yang <james.yang@freescale.com> |
| |
| powerpc64: fix 64-bit process detection on embedded. |
| * syscall.c (get_scno) [POWERPC64]: Fix 64-bit process detection |
| on embedded powerpc. |
| |
| 2014-02-25 Dmitry V. Levin <ldv@altlinux.org> |
| |
| Do not compile scsi ioctl decoding if <scsi/sg.h> is not available. |
| Add a generic test for <scsi/sg.h> availability to fix build with |
| Bionic libc that does not provide <scsi/sg.h>. |
| |
| * configure.ac (AC_CHECK_HEADERS): Add scsi/sg.h. |
| * ioctl.c (ioctl_decode): Do not call scsi_ioctl if !HAVE_SCSI_SG_H. |
| * scsi.c: Do not compile scsi ioctl decoding if !HAVE_SCSI_SG_H. |
| |
| Reported-by: Elliott Hughes <enh@google.com> |
| |
| 2014-02-14 Dmitry V. Levin <ldv@altlinux.org> |
| |
| Revert "Add support for Altera's Nios-II softcore architecture" |
| The patch originally submitted by Ezequiel García was OK, but I somehow |
| managed to mangle it so that most of the patch was not applied. |
| |
| According to Ezequiel García, an architecture port based on the generic |
| syscall ABI is in progress. |
| |
| This reverts commit 61e426e87ac81be4b4ff9de581635b4ea585624f. |
| |
| 2014-02-08 Dmitry V. Levin <ldv@altlinux.org> |
| |
| tests: tighten sigaction check. |
| * tests/sigaction.awk: Check that input conatins all expected lines. |
| |
| 2014-02-08 Dmitry V. Levin <ldv@altlinux.org> |
| |
| Fix sigaction reporting on non-x86 architectures. |
| If SA_RESTORER is not defined by libc headers but defined by kernel |
| headers, use the definition provided by kernel headers for proper |
| sigaction decoding. |
| |
| * signal.c [!SA_RESTORER]: Define to ASM_SA_RESTORER if the latter is |
| defined, regardless of architecure. |
| |
| 2014-02-08 Dmitry V. Levin <ldv@altlinux.org> |
| |
| Check for SA_RESTORER definition in <asm/signal.h> |
| Kernel header <asm/signal.h> cannot be included from regular code |
| because it conflicts with libc headers, but SA_RESTORER is needed in |
| signal.c, so SA_RESTORER value is forwarded from <asm/signal.h> to |
| config.h using a configure check. |
| |
| * configure.ac (ASM_SA_RESTORER): Define if SA_RESTORER is defined |
| in <asm/signal.h>. |
| |
| 2014-02-07 Dmitry V. Levin <ldv@altlinux.org> |
| |
| arm: fix compilation warning. |
| Fix "dereferencing type-punned pointer will break strict-aliasing rules" |
| warning introduced by commit v4.8-54-g670b21b. |
| |
| * signal.c (sys_sigreturn) [ARM]: Avoid dereferencing type-punned pointers. |
| |
| 2014-02-06 Dmitry V. Levin <ldv@altlinux.org> |
| |
| kexec: fix typo. |
| * kexec.c (print_kexec_segments) [SUPPORTED_PERSONALITIES == 1]: Fix typo. |
| |
| 2014-02-06 Ezequiel Garcia <ezequiel@vanguardiasur.com.ar> |
| |
| Add support for Altera's Nios-II softcore architecture. |
| This commit adds strace support for Altera's Nios-II official |
| kernel port as found in git://git.rocketboards.org/linux-socfpga.git |
| |
| Notice that this an out-of-tree kernel architectural port, and uses the |
| legacy (non-generic) system call ABI. In particular, the port doesn't |
| support PTRACE_GETREGSET, so the implementation is based on PTRACE_GETREGS. |
| |
| Given it's mandatory for new architectures to support the generic |
| syscall ABI and PTRACE_GETREGSET, if the nios2 architecure is ever |
| mainlined, the strace support will have to be re-factored accordingly. |
| |
| * linux/nios2/ioctlent.h.in: New file. |
| * linux/nios2/syscallent.h: Likewise. |
| * Makefile.am (EXTRA_DIST): Add linux/nios2/ioctlent.h.in and |
| linux/nios2/syscallent.h. |
| * configure.ac: Add NIOS2 to the list of supported architectures. |
| * defs.h [NIOS2]: Use register reading system. |
| * process.c (struct_user_offsets): Add NIOS2 support. |
| * syscall.c (get_regs, get_scno, get_syscall_args, |
| get_syscall_result, get_error): Likewise. |
| * util.c (change_syscall): Likewise. |
| * mem.c (sys_getpagesize): Define on NIOS2. |
| * system.c [NIOS2] (sys_cacheflush, sys_nios2cmpxchg): New functions. |
| |
| Acked-by: Mike Frysinger <vapier@gentoo.org> |
| |
| 2014-02-05 Dmitry V. Levin <ldv@altlinux.org> |
| |
| Implement add_key, keyctl, and request_key decoding. |
| * keyctl.c: New file. |
| * linux/keyctl.h: Likewise. |
| * Makefile.am (strace_SOURCES): Add keyctl.c. |
| (EXTRA_DIST): Add linux/keyctl.h. |
| * linux/dummy.h (sys_add_key, sys_keyctl, sys_request_key): Remove. |
| * linux/syscall.h (sys_add_key, sys_keyctl, sys_request_key): New |
| prototypes. |
| |
| Implement ioprio_get and ioprio_set decoding. |
| * ioprio.c: New file. |
| * Makefile.am (strace_SOURCES): Add ioprio.c. |
| * linux/dummy.h (sys_ioprio_get, sys_ioprio_set): Remove. |
| * linux/syscall.h (sys_ioprio_get, sys_ioprio_set): New prototypes. |
| |
| Implement finit_module decoding. |
| * bjm.c (module_init_flags): New xlat structure. |
| (sys_finit_module): New function. |
| * linux/dummy.h (sys_finit_module): Remove. |
| * linux/syscall.h (sys_finit_module): New prototype. |
| |
| Cleanup inotify syscalls decoding. |
| * linux/inotify.h: New file. |
| * file.c (inotify_modes, inotify_init_flags, sys_inotify_add_watch, |
| sys_inotify_rm_watch, sys_inotify_init1): Move... |
| * inotify.c: ... here. |
| (inotify_modes): Rename to inotify_flags, convert to XLAT form. |
| (inotify_init_flags): Convert to XLAT form. |
| * Makefile.am (strace_SOURCES): Add inotify.c. |
| (EXTRA_DIST): Add linux/inotify.h. |
| |
| Enhance reboot decoding. |
| * linux/reboot.h: New file. |
| * system.c (bootflags1, bootflags2, bootflags3, sys_reboot): Move... |
| * reboot.c: ... here. |
| (bootflags2, bootflags3): Update constants. |
| * Makefile.am (strace_SOURCES): Add reboot.c. |
| (EXTRA_DIST): Add linux/reboot.h. |
| |
| Implement kexec_load decoding. |
| * kexec.c: New file. |
| * linux/kexec.h: Likewise. |
| * Makefile.am (strace_SOURCES): Add kexec.c. |
| (EXTRA_DIST): Add linux/kexec.h. |
| * linux/dummy.h (sys_kexec_load): Remove. |
| * linux/syscall.h (sys_kexec_load): New prototype. |
| |
| Use prepared editions of recently imported linux headers. |
| * linux/fanotify.h: Replace with edition prepared with headers_install.sh. |
| * linux/personality.h: Likewise. |
| |
| Implement fanotify_init and fanotify_mark decoding. |
| * fanotify.c: New file. |
| * linux/fanotify.h: Likewise. |
| * Makefile.am (strace_SOURCES): Add fanotify.c. |
| (EXTRA_DIST): Add linux/fanotify.h. |
| * defs.h (print_dirfd): New prototype. |
| * file.c (print_dirfd): Export. |
| * linux/dummy.h (sys_fanotify_init, sys_fanotify_mark): Remove. |
| * linux/syscall.h (sys_fanotify_init, sys_fanotify_mark): New |
| prototypes. |
| * pathtrace.c (pathtrace_match): Handle sys_fanotify_init and |
| sys_fanotify_mark. |
| |
| Use XLAT_END macro. |
| Automatically update all xlat structures using the following sed regexp: |
| s/^[[:space:]]*{[[:space:]]*0[[:space:]]*,[[:space:]]*NULL[[:space:]]*,\?[[:space:]]*}[[:space:]]*,\?[[:space:]]*/\tXLAT_END/ |
| |
| Itroduce XLAT_END macro to make xlat structures more compact. |
| * defs.h (XLAT_END): New macro. |
| |
| Convert personality_options to XLAT form. |
| * linux/personality.h: New file. |
| * Makefile.am (EXTRA_DIST): Add it. |
| * system.c: Include <linux/personality.h>. |
| (personality_options): Update PER_* constants, convert to XLAT form. |
| |
| Convert futexops to XLAT form. |
| * process.c: Define FUTEX_*_PRIVATE macros. |
| (futexops): Convert to XLAT form. |
| |
| Convert sigev_value to XLAT form. |
| * time.c (sigev_value): Convert to XLAT form. |
| (printsigevent32, printsigevent): Update use of sigev_value. |
| |
| Use XLAT macro. |
| Automatically convert all xlat structures to XLAT form |
| using the following sed regexp: |
| s/^[[:space:]]*{[[:space:]]*\([^",}[:space:]]\+\)[[:space:]]*,[[:space:]]*"\1",\?[[:space:]]*}[[:space:]]*/\tXLAT(\1)/ |
| |
| 2014-02-05 Dmitry V. Levin <ldv@altlinux.org> |
| |
| Introduce XLAT macro to ease maintenance of xlat structures. |
| * defs.h (XLAT): New macro. |
| |
| Suggested-by: Mike Frysinger <vapier@gentoo.org> |
| |
| 2014-02-04 Stefan Sørensen <stefan.sorensen@spectralink.com> |
| |
| Decode ptp ioctls. |
| * defs.h (ptp_ioctl): New prototype. |
| * ioctl.c (ioctl_decode): Call ptp_ioctl when code is '='. |
| * Makefile.am (strace_SOURCES): Add ptp.c. |
| (EXTRA_DIST): Add linux/ptp_clock.h. |
| * ptp.c: New file. |
| * linux/ptp_clock.h: New file. |
| |
| 2014-02-03 Stefan Sørensen <stefan.sorensen@spectralink.com> |
| |
| Decode dynamic posix clocks. |
| * time.c (cpuclocknames): New xlat structure. |
| (printclockname): New function that decodes posix clock names, |
| including dynamic fd encoded clocks. |
| (sys_clock_settime, sys_clock_gettime, sys_clock_nanosleep, |
| sys_clock_adjtime, sys_timer_create, sys_timerfd, sys_timerfd_create): |
| Use it. |
| |
| Update ADJ_* constants. |
| * time.c (adjtimex_modes): Add ADJ_TAI, ADJ_SETOFFSET, ADJ_MICRO, |
| ADJ_NANO, ADJ_OFFSET_SS_READ. |
| |
| 2014-02-02 Philippe Ombredanne <pombredanne@nexb.com> |
| |
| Add decoding of sockets descriptor 'paths' for network calls. |
| * net.c (sys_bind, sys_listen, do_accept, sys_send, sys_sendto, |
| sys_sendmsg, sys_sendmmsg, sys_recv, sys_recvfrom, sys_recvmsg, |
| sys_recvmmsg, sys_shutdown, sys_getsockopt, sys_setsockopt): Decode |
| socket descriptor arguments using printfd. |
| * pathtrace.c (pathtrace_match): Also check TRACE_NETWORK syscalls |
| that take socket descriptor arguments. |
| * tests/net-fd.test: New test for socket descriptor arguments decoding. |
| * tests/Makefile.am (TESTS): Add net-fd.test. |
| (net-fd.log): New dependency on net.log. |
| |
| 2014-02-02 Dmitry V. Levin <ldv@altlinux.org> |
| |
| tests: rename all tests so that their names end in .test suffix. |
| Due to automake limitations, some features work only for tests |
| that end in one of the suffixes listed in TEST_EXTENSIONS. |
| |
| * tests/detach-running: Rename to detach-running.test. |
| * tests/detach-sleeping: Rename to detach-sleeping.test. |
| * tests/detach-stopped: Rename to detach-stopped.test. |
| * tests/net: Rename to net.test. |
| * tests/ptrace_setoptions: Rename to ptrace_setoptions.test. |
| * tests/qual_syscall: Rename to qual_syscall.test. |
| * tests/sigaction.sh: Rename to sigaction.test. |
| * tests/stat: Rename to stat.test. |
| * tests/strace-f: Rename to strace-f.test. |
| * tests/Makefile.am (TESTS): Update. |
| (LOG_COMPILER): Rename to TEST_LOG_COMPILER. |
| |
| 2014-01-31 Mike Frysinger <vapier@gentoo.org> |
| |
| net: add more sockopt options. |
| This syncs with the defines as available in linux-3.13. |
| |
| * net.c (sockipoptions): Add IP_IPSEC_POLICY, IP_XFRM_POLICY, |
| IP_PASSSEC, IP_TRANSPARENT, IP_ORIGDSTADDR, IP_RECVORIGDSTADDR, |
| IP_MINTTL, IP_NODEFRAG, IP_UNBLOCK_SOURCE, IP_BLOCK_SOURCE, |
| IP_ADD_SOURCE_MEMBERSHIP, IP_DROP_SOURCE_MEMBERSHIP, MCAST_JOIN_GROUP, |
| MCAST_BLOCK_SOURCE, MCAST_UNBLOCK_SOURCE, MCAST_LEAVE_GROUP, |
| MCAST_JOIN_SOURCE_GROUP, MCAST_LEAVE_SOURCE_GROUP, IP_MULTICAST_ALL, |
| IP_UNICAST_IF. |
| |
| 2014-01-08 Chris Dearman <chris.dearman@imgtec.com> |
| |
| mips: fix sigaction reporting. |
| MIPS userland uses the same sigaction structure with a full signal |
| mask for old_sigaction and new_sigaction and does does not have |
| an sa_restorer field. |
| |
| These changes have been tested on MIPS O32 big/little endian, MIPS N64 |
| big endian and x86-64. |
| |
| * signal.c (old_sigaction) [MIPS]: Add definition for MIPS. |
| (decode_old_sigaction) [MIPS]: Print sa_mask according to its definition. |
| (new_sigaction) [MIPS]: Add definition for MIPS. |
| |
| 2014-01-08 Dmitry V. Levin <ldv@altlinux.org> |
| |
| Factor out struct sigaction printing code. |
| * signal.c [HAVE_SIGACTION] (decode_old_sigaction): New function. |
| [HAVE_SIGACTION] (sys_sigaction): Use it. |
| (decode_new_sigaction): New function. |
| (sys_rt_sigaction): Use it. |
| |
| 2014-01-08 Dmitry V. Levin <ldv@altlinux.org> |
| |
| tests: add a test for rt_sigaction output. |
| Since "struct sigaction" varies between architectures, rt_sigaction |
| decoding sometimes produces incorrect output. This test is expected |
| to catch basic rt_sigaction decoding bugs. |
| |
| Based on a patch proposed by Chris Dearman. |
| |
| * tests/sigaction.c: New file. |
| * tests/sigaction.awk: Likewise. |
| * tests/sigaction.sh: New test. |
| * tests/Makefile.am (check_PROGRAMS): Add sigaction. |
| (TESTS): Add sigaction.sh. |
| (EXTRA_DIST): Add sigaction.awk. |
| * tests/.gitignore: Add sigaction. |
| |
| 2014-01-05 Kirill A. Shutemov <kirill.shutemov@linux.intel.com> |
| |
| mem: add missed MAP_HUGETLB mmap flag. |
| * mem.c (mmap_flags): Add MAP_HUGETLB mmap flag. |
| |
| Acked-by: Mike Frysinger <vapier@gentoo.org> |
| |
| 2013-12-31 Mike Frysinger <vapier@gentoo.org> |
| |
| Delete old PTRACE_{PEEK,POKE}USR logic. |
| The code base has settled on PTRACE_{PEEK,POKE}USER (with an E) and has |
| logic in defs.h to make sure it's set sanely. Delete this old logic as |
| the defs.h takes care of it now. |
| |
| * process.c: Delete PTRACE_PEEKUSR/PTRACE_POKEUSR defines. |
| * signal.c: Likewise. |
| * syscall.c: Delete PTRACE_PEEKUSR define. |
| * util.c: Likewise. |
| |
| 2013-12-31 Mike Frysinger <vapier@gentoo.org> |
| |
| Decode the O_PATH flag. |
| * file.c (open_mode_flags): Add O_PATH. |
| |
| 2013-11-13 Dmitry V. Levin <ldv@altlinux.org> |
| |
| Remove unused configure checks. |
| * configure.ac (AC_CHECK_FUNCS): Remove _sys_siglist and sys_siglist. |
| (AC_CHECK_DECLS): Likewise. |
| |
| 2013-11-13 Dmitry V. Levin <ldv@altlinux.org> |
| |
| Assume that <sys/ptrace.h> provides a valid ptrace prototype. |
| We used to explicitly list architectures where <sys/ptrace.h> from glibc |
| is known to provide a valid prototype for ptrace, and use a homegrown |
| replacement for all the rest. Situation seems to be better nowadays, |
| glibc is not the only libc available, so let's use ptrace prototype from |
| <sys/ptrace.h> by default, leaving the replacement for rare broken cases |
| if any. |
| |
| * defs.h: Use ptrace prototype workaround iff |
| NEED_PTRACE_PROTOTYPE_WORKAROUND is defined. |
| |
| 2013-11-12 Dmitry V. Levin <ldv@altlinux.org> |
| |
| Stop using _LFS64_LARGEFILE. |
| There is only one place left in the code where strace guesses whether |
| libc provides LFS64 functions and structures. The most natural thing to |
| do there is to check for _LARGEFILE64_SOURCE - the macro provided by |
| glibc. Other libc implementations that provide nondegenerate LFS64 |
| interfaces are expected to define this macro as well. |
| |
| * defs.h (_LFS64_LARGEFILE): Remove. |
| * strace.c: Use _LARGEFILE64_SOURCE instead of _LFS64_LARGEFILE. |
| |
| 2013-11-12 Dmitry V. Levin <ldv@altlinux.org> |
| |
| Define truncate64, ftruncate64, and getdents64 decoders unconditionally. |
| These decoders are referenced by most architectures, there were no |
| undefined references so far because _LFS64_LARGEFILE appears to be |
| always defined by glibc when _GNU_SOURCE is defined. |
| |
| * file.c (sys_truncate64, sys_ftruncate64, sys_getdents64): Define |
| unconditionally. |
| |
| 2013-11-12 Dmitry V. Levin <ldv@altlinux.org> |
| |
| Define printflock64 only if it is referenced by other code. |
| * configure.ac (AC_CHECK_TYPES): Add struct flock64. |
| * desc.c (HAVE_F_SETLK64, HAVE_F_SETLKW64, HAVE_F_GETLK64): New macros. |
| [!HAVE_STRUCT_FLOCK64] (struct flock64): Define. |
| (printflock64): Define only if referenced by other code. |
| (sys_fcntl): Handle F_FREESP64, F_SETLK64, F_SETLKW64, and F_GETLK64 iff |
| these constants are defined and differ from their non-64bit versions. |
| |
| 2013-11-12 Dmitry V. Levin <ldv@altlinux.org> |
| |
| Make PTRACE_PEEKUSER/PTRACE_POKEUSER checks less glibc specific. |
| * configure.ac (AC_CHECK_DECLS): Add PTRACE_PEEKUSER and |
| PTRACE_POKEUSER. |
| * defs.h: Define PTRACE_PEEKUSER and PTRACE_POKEUSER only if |
| they are not provided by <sys/ptrace.h>. |
| |
| Reported by John Spencer. |
| |
| 2013-11-12 Dmitry V. Levin <ldv@altlinux.org> |
| |
| Remove unneeded redefinitions of IPPROTO_* macros. |
| IPPROTO_* macros are defined by <netinet/in.h>, no need to redefine |
| them. |
| |
| * net.c (IPPROTO_EGP, IPPROTO_PUP, IPPROTO_IDP, IPPROTO_IGMP, |
| IPPROTO_RAW, IPPROTO_MAX): Remove. |
| |
| Reported by John Spencer. |
| |
| 2013-11-12 Dmitry V. Levin <ldv@altlinux.org> |
| |
| Remove unused AC_OFF_T_IS_LONG_LONG configure check. |
| * configure.ac: Remove AC_OFF_T_IS_LONG_LONG. |
| * m4/long_long.m4: Likewise. |
| |
| Remove unused code. |
| * configure.ac (AC_CHECK_TYPES): Remove struct opthdr and |
| struct t_opthdr. |
| * net.c (print_sock_optmgmt): Remove. |
| |
| 2013-11-12 Dmitry V. Levin <ldv@altlinux.org> |
| |
| Use struct sigcontext instead of struct sigcontext_struct. |
| * configure.ac (AC_CHECK_TYPES): Remove struct sigcontext_struct. |
| * signal.c (sys_sigreturn) [S390 || S390X || POWERPC || ALPHA): Replace |
| struct sigcontext_struct with struct sigcontext. |
| |
| Reported by John Spencer. |
| |
| 2013-11-12 Dmitry V. Levin <ldv@altlinux.org> |
| |
| Use standard names of sched_param structure members. |
| * process.c (sys_sched_setscheduler, sys_sched_getparam, |
| sys_sched_setparam): Use portable struct sched_param member name |
| sched_priority instead of glibc specific __sched_priority. |
| |
| Reported by John Spencer. |
| |
| 2013-11-12 Dmitry V. Levin <ldv@altlinux.org> |
| |
| Make SIGEV_THREAD_ID decoding less glibc specific. |
| SIGEV_THREAD_ID decoding requires access to an internal member of |
| struct sigevent. There seems to be no portable way to do it besides |
| adding a configure check. |
| |
| * configure.ac (AC_CHECK_MEMBERS): Check for |
| struct sigevent._sigev_un._pad and struct sigevent.__pad. |
| * time.c (printsigevent): Use an appropriate struct sigevent member |
| to print thread id. |
| |
| Reported by John Spencer. |
| |
| 2013-11-11 Dmitry V. Levin <ldv@altlinux.org> |
| |
| Remove unused configure checks. |
| * configure.ac (AC_CHECK_MEMBERS): Remove T_conn_res.QUEUE_ptr, |
| T_conn_res.ACCEPTOR_id, dqblk.dqb_curblocks, sigcontext.sc_hi2. |
| |
| 2013-11-11 Dmitry V. Levin <ldv@altlinux.org> |
| |
| Assume "long long" availability. |
| Most of the code already uses long long types unconditionally. |
| |
| * configure.ac: Remove the check for long long. |
| * file.c (printstat64): Remove HAVE_LONG_LONG checks, use %llu format |
| string unconditionally. |
| |
| 2013-11-11 Dmitry V. Levin <ldv@altlinux.org> |
| |
| Include <sys/poll.h> only if there is no <poll.h> |
| * pathtrace.c: Do not include <sys/poll.h> if <poll.h> is available. |
| * stream.c: Likewise. |
| |
| Move io_* syscalls decoding to a separate file. |
| * desc.c (sys_io_setup, sys_io_destroy, sys_io_submit, sys_io_cancel, |
| sys_io_getevents, declarations from libaio.h): Move to ... |
| * aio.c: new file. |
| * Makefile.am (strace_SOURCES): Add aio.c. |
| |
| 2013-11-11 Denys Vlasenko <dvlasenk@redhat.com> |
| |
| Stop using external libaio.h. |
| This change incorporates a partial copy instead |
| of using external libaio.h. |
| Why? |
| Because we want to properly decode 32-bit aio calls |
| by 64-bit strace. For that, we need more definitions than |
| libaio.h provides. |
| (These defs are not done yet, but will eventually be done). |
| Keeping our local 32-bit compat defs in sync with libaio.h |
| _without seeing libaio structs_ is hard/more bug prone. |
| A smaller benefit is that we don't need libaio installed. |
| |
| 2013-11-11 Denys Vlasenko <dvlasenk@redhat.com> |
| |
| sys_io_submit: simplify iocb_cmd_lookup() helper. |
| This helper returns two values (a string and an enum). |
| The caller prints the string. It's simpler to just print |
| the string in the caller itself. This eliminates |
| "return by reference" and more importantly, an intermediate |
| static string buffer for the string result. |
| |
| Since function of the helper is different now, |
| it is renamed to tprint_lio_opcode(). |
| |
| 2013-11-11 Denys Vlasenko <dvlasenk@redhat.com> |
| |
| sys_io_submit: stop traversing iocb vector after first failure. |
| The program may use a very large nr but supply either outright |
| invalid iocbpp[], or one with far fewer elements than nr. |
| We used to try reading iocbpp[i] until i == nr. |
| With this change, we stop on the first failure. |
| |
| 2013-11-09 Denys Vlasenko <dvlasenk@redhat.com> |
| |
| Fix pathtrace_match() to match recent fixes to select decoding. |
| |
| Fix select decoding on e.g. 32-bit ppc process by 64-bit strace. |
| Added next_set_bit() function which finds the next set bit, |
| properly taking into account word size of the traced process. |
| Use it in decode_select() instead of fd_isset(). |
| Also, properly round fdsize up to word size of traced process, |
| not to strace's word size. |
| |
| 2013-11-06 Denys Vlasenko <dvlasenk@redhat.com> |
| |
| Speed up and explain fd_isset() |
| |
| 2013-11-05 Dr. David Alan Gilbert <dave@treblig.org> |
| |
| Add a test for the latest select decoding fix. |
| * test/select.c (main): Add a test for nfds larger than FD_SETSIZE. |
| |
| 2013-11-05 Dmitry V. Levin <ldv@altlinux.org> |
| |
| Fix select decoding for glibc in _FORTIFY_SOURCE mode. |
| glibc in _FORTIFY_SOURCE mode raises SIGABRT when descriptor greater |
| or equal to FD_SETSIZE is passed to FD_ISSET. Select family syscalls, |
| however, can legitimately accept such descriptors. To overcome this |
| limitation, we have to replace FD_ISSET with an equivalent that imposes |
| no such restrictions. |
| |
| * desc.c (fd_isset): New function. |
| (decode_select): Use it instead of FD_ISSET. |
| |
| 2013-11-05 Dmitry V. Levin <ldv@altlinux.org> |
| |
| More select decoding fixes. |
| * desc.c (decode_select): Actually print arg[0] as int on entering |
| syscall. When arg[0] is negative, do not attempt to fetch and decode |
| descriptor sets on entering syscall, kernel will reject it anyway. |
| On exiting syscall, stop checking descriptor sets as soon as all |
| returned descriptors are found. |
| |
| 2013-11-05 Denys Vlasenko <dvlasenk@redhat.com> |
| |
| Truncate arg[0] to int in select decoding. |
| This matches kernel's behavior. |
| |
| test/select.c: make comment more understandable. |
| |
| 2013-11-05 Dr. David Alan Gilbert <dave@treblig.org> |
| |
| Fix select decoding with bogus (huge or negative) nfds. |
| We used to allocate and fetch bit arrays using a sanitized |
| length, but then iterate over them with "j < arg[0]" condition, |
| where arg[0] is not sanitized. This segfaults if arg[0] is huge |
| or negative. This change fixes this. |
| |
| Add test/select.c to capture the case. |
| |
| 2013-09-26 Ali Polatel <alip@exherbo.org> |
| |
| Work around conflict between <sys/ptrace.h> and <linux/ptrace.h> |
| Since glibc-2.18~39 <sys/ptrace.h> defines ptrace_peeksiginfo_args |
| which collides with <linux/ptrace.h>. |
| |
| * configure.ac: Check for `struct ptrace_peeksiginfo_args' in |
| <sys/ptrace.h>. |
| * process.c: Work around potential conflict between <sys/ptrace.h> |
| and <linux/ptrace.h> by redefining ptrace_peeksiginfo_args. |
| * signal.c: Likewise. |
| * syscall.c: Likewise. |
| * util.c: Likewise. |
| |
| 2013-09-11 Vineet Gupta <Vineet.Gupta1@synopsys.com> |
| |
| Add support for ARC Cores from Synopsys. |
| Take #2 on mainlining strace support for ARC (last one was 4.6 based back |
| in March 2011), see |
| http://sourceforge.net/p/strace/mailman/message/27210168/ |
| |
| The syscall ABI is asm-generic/unistd.h based (so no legacy syscalls), |
| hence very similar to metag port. |
| |
| test/* all seem to work well. |
| |
| * linux/arc/ioctlent.h.in: New file. |
| * linux/arc/syscallent.h: Likewise. |
| * Makefile.am (EXTRA_DIST): Add linux/arc/ioctlent.h.in and |
| linux/arc/syscallent.h. |
| * configure.ac: Add ARC to the list of supported architectures. |
| * defs.h: Add ARC support. |
| * process.c (struct_user_offsets): Likewise. |
| * signal.c (sys_sigreturn): Likewise. |
| * syscall.c (print_pc, get_regset, get_regs, get_scno, get_syscall_args, |
| get_syscall_result, get_error): Likewise. |
| * util.c (change_syscall): Likewise. |
| |
| Acked-by: Mike Frysinger <vapier@gentoo.org> |
| |
| 2013-09-11 William Manley <william.manley@youview.com> |
| |
| Add support for decoding sync_file_range. |
| * file.c (sync_file_range_flags): New xlat structure. |
| (sys_sync_file_range, sys_sync_file_range2): New functions. |
| * linux/syscall.h (sys_sync_file_range, sys_sync_file_range2): New |
| prototypes. |
| * linux/dummy.h (sys_sync_file_range, sys_sync_file_range2): Remove. |
| * linux/mips/syscallent-o32.h: Set the number of sync_file_range |
| arguments to 7. |
| |
| 2013-09-11 Mike Frysinger <vapier@gentoo.org> |
| |
| fanotify_mark: fix number of args for 32bit arches. |
| The fanotify_mark func takes a 64bit mask, so 32bit arches have to split |
| it up into two fields. When the syscall was added, it was listed as only |
| having 5 fields total (since that's correct for 64bit systems). |
| |
| * linux/arm/syscallent.h: Set the number of fanotify_mark arguments to 6. |
| * linux/bfin/syscallent.h: Likewise. |
| * linux/hppa/syscallent.h: Likewise. |
| * linux/i386/syscallent.h: Likewise. |
| * linux/m68k/syscallent.h: Likewise. |
| * linux/metag/syscallent.h: Likewise. |
| * linux/microblaze/syscallent.h: Likewise. |
| * linux/mips/syscallent-o32.h: Likewise. |
| * linux/or1k/syscallent.h: Likewise. |
| * linux/powerpc/syscallent.h: Likewise. |
| * linux/s390/syscallent.h: Likewise. |
| * linux/sh/syscallent.h: Likewise. |
| * linux/sparc/syscallent.h: Likewise. |
| * linux/tile/syscallent1.h: Likewise. |
| |
| Acked-by: Chris Metcalf <cmetcalf@tilera.com> [for tile] |
| |
| 2013-09-11 Dmitry V. Levin <ldv@altlinux.org> |
| |
| x86, x86_64: fix compilation warnings. |
| Fix "dereferencing type-punned pointer will break strict-aliasing rules" |
| warnings introduced by commit v4.8-52-gb51f364. |
| |
| * signal.c (sys_sigreturn): Avoid dereferencing type-punned pointers. |
| |
| 2013-07-18 Denys Vlasenko <dvlasenk@redhat.com> |
| |
| Remove rt parameter from [s]printsigmask() |
| In almost all cases, the parameter was 1 ("decode RT sigs too"). |
| This change hardwires it to be 1. |
| |
| The cases where it was 0 are, and why the change to "decode RT sigs too" |
| is fine: |
| |
| IA64: 64-bit arch, all 64 signals fit in one word in any case. |
| S390[x]: sc.oldmask is a sigset_t on kernel side, |
| (sigset_t *)&sc.oldmask[0] does contain all 64 signals. |
| TILE: uc.uc_sigmask is a sigset_t on kernel side, |
| memcpy(&sigm, &uc.uc_sigmask, NSIG / 8) copies all 64 signals. |
| |
| 2013-07-18 Denys Vlasenko <dvlasenk@redhat.com> |
| |
| Convert some uses of long_to_sigmask+printsigmask to sprintsigmask_long. |
| This allows to drop long_to_sigmask function, |
| and a whole bunch of sigset_t variables. |
| |
| Simplify some sigmask manipulations. |
| |
| Add compat support for sys_pselect6. |
| |
| I386: fix signedness mismatch warning. |
| &i386_regs.esp is a pointer to long, not unsigned long. |
| It needs a cast. |
| |
| 2013-07-18 Denys Vlasenko <dvlasenk@redhat.com> |
| |
| Fix sigset printing via print_sigset(). |
| Replace print_sigset() with print_sigset_addr_len(), |
| which takes not only addr, but also len parameter. |
| This allows us to drop "do we need to print RT signals?" parameter, |
| and this fixes RT signals printing in many syscalls. |
| |
| sys_epoll_pwait: print RT signals too, print sigmask size argument. |
| |
| sys_sigprocmask: print_sigset -> print_sigset_addr_len(current_wordsize), |
| no change in functionality. |
| |
| sys_sigpending: use print_sigset_addr_len(current_wordsize) |
| instead of open-coding it. |
| |
| sys_rt_sigprocmask: use print_sigset_addr_len instead of open-coding it. |
| sys_rt_sigpending: ditto. |
| sys_rt_sigsuspend: ditto. |
| sys_rt_sigtimedwait: ditto. |
| |
| do_signalfd: print_sigset -> print_sigset_addr_len. This fixes |
| RT signals printing (wasn't showing them before). |
| |
| sys_ppoll: ditto. |
| |
| copy_sigset_len() is folded into its only user, print_sigset_addr_len(), |
| and copy_sigset() is gone. |
| |
| While at it, checked kernel sources and noted where kernel enforces |
| sigset_size == NSIG / 8 (== sizeof(kernel_sigset_t)), |
| and where it allows word-sized sigset_size ([rt_]sigpending). |
| |
| 2013-07-18 Denys Vlasenko <dvlasenk@redhat.com> |
| |
| sys_rt_sigaction: fix sigset copying. |
| In practice, we always copy as many bytes as syscall param says |
| (8, or 16 on mips). However, malicious program can call sigaction |
| with wrong sigset size. Such syscall will result in EINVAL, |
| but we (strace) end up copying 128 bytes (sizeof(sigset_t)), |
| which copyes some garbage from stack after struct sigaction. |
| |
| Now we always copy NSIG / 8 bytes (which is 8 bytes, or 16 on mips). |
| |
| 2013-07-18 Denys Vlasenko <dvlasenk@redhat.com> |
| |
| ARM: remove wrong NSIG = 32 define. |
| ARM in fact has 64 signals (1..64), and NSIG should be 65 |
| (as usual, rememebr that NSIG_libc == NSIG_kernel+1). |
| |
| I carefully reviewed all usages of NSIG. In syscall.c, |
| the only usage is: |
| for (i = 0; i <= NSIG; i++) |
| if (strcasecmp(s, signame(i) + 3) == 0)... |
| which is safe even if NSIG is way too big - signame(i) |
| returns a well-formed string for any i. |
| |
| In signal.c, memcpy(&sigset, &sc.sc_mask, NSIG / 8) is used by |
| IA64 and TILE code, so ARM change can't affect it. And final |
| usage is: |
| struct new_sigaction::unsigned long sa_mask[NSIG / sizeof(long)]; |
| It will grow on ARM (and become correct in the process). |
| Its only use is |
| memcpy(&sigset, &sa.sa_mask, NSIG / 8); |
| printsigmask(&sigset, 1); |
| which used to copy garbage in high bits, now it will copy actual data. |
| |
| 2013-07-17 Denys Vlasenko <dvlasenk@redhat.com> |
| |
| ARM: fix sigreturn decoding. |
| Decoding of test/sigreturn testcase: |
| Was: |
| sigreturn() (mask [QUIT TRAP ABRT BUS SEGV USR2 PIPE STKFLT STOP XCPU VTALRM PROF WINCH IO PWR RTMIN]) = 0 |
| Now: |
| sigreturn() (mask [CHLD RT_1 RT_3 RT_31 RT_32]) = 0 |
| |
| 2013-07-16 Denys Vlasenko <dvlasenk@redhat.com> |
| |
| Group USE_CUSTOM_PRINTF define with other tweakables. |
| No code changes. |
| |
| 2013-07-16 Denys Vlasenko <dvlasenk@redhat.com> |
| |
| Improve sigreturn decoding on x86 to show RT signal bits too. |
| This includes decoding of 32-bit sigreturn by 64-bit strace, |
| which previously wasn't done. |
| |
| Added a test for it. |
| |
| 2013-07-12 Anton Blanchard <anton@samba.org> |
| |
| powerpc: enhance 32/64bit detection. |
| We were using uname to determine if userspace was 32 or 64bit. |
| This fails when we have a 64bit kernel and a 32bit userspace. |
| |
| * configure.ac (powerpc*): Similar to x86, use a runtime test |
| to determine if we are 32 or 64bit. |
| |
| 2013-07-12 Anton Blanchard <anton@samba.org> |
| |
| powerpc: fix some compiler warnings. |
| Fix a number of differing signedness warnings when building on |
| powerpc. |
| |
| powerpc: fix iflag build issue (static -> extern) |
| |
| 2013-07-10 Denys Vlasenko <dvlasenk@redhat.com> |
| |
| PTRACE_SEIZE can set ptrace options immediately, use this feature. |
| This eliminates some rare bugs, such as post-execve SIGTRAP |
| generation when we attach to a process, and it manages to finish |
| execve'ing before we set TRACEEXEC option to suppress that. |
| |
| 2013-07-08 Denys Vlasenko <dvlasenk@redhat.com> |
| |
| If -o|logger is in use, exit trace loop if nprocs == 0. |
| |
| Exit trace loop if got ECHILD, not if nprocs == 0. |
| Comment gives a testcase which wasn't handled correctly |
| by the old code. |
| |
| 2013-07-07 Denys Vlasenko <dvlasenk@redhat.com> |
| |
| s390[x]: get rid of syscall_mode, delete code which never triggers. |
| Before this change, the logic was as follows: |
| syscall entry: |
| get_scno: |
| syscall_mode = GPR2 |
| scno = syscall_mode unless syscall_mode == -ENOSYS |
| (if -ENOSYS, scn is retrieved by decoding current insn) |
| fixup: |
| gpr2 = GPR2 |
| syscall_mode = scno unless syscall_mode == -ENOSYS |
| if (gpr2 != syscall_mode) stray_entry |
| syscall exit: |
| get_res: |
| gpr2 = GRP2 |
| fixup: |
| syscall_mode = scno unless syscall_mode == -ENOSYS |
| if (WAITEXECVE && gpr2 in (-ENOSYS, scno)) gpr2 = 0; |
| get_error: |
| gpr2 is retval |
| |
| Entry fixup's if() can never trigger: |
| regardless whether GPR2 is -ENOSYS or not, syscall_mode is always |
| equal to GRP2 value there. So it can be removed. |
| |
| On sysexit path, syscall mode is never used. |
| |
| Therefore, syscall_mode variable is deleted. grp2 is read from |
| GPR2 register in get_scno, redundant read in entry fixup is removed. |
| As a result, entry fixup's s390 code block vanishes completely. |
| |
| gpr2 variable is renamed s390_gpr2 to match the convention used |
| by other arches. |
| |
| 2013-07-04 Denys Vlasenko <dvlasenk@redhat.com> |
| |
| ARM: add STRACE_KNOWS_ONLY_EABI define which can be used to omit OABI support |
| |
| Add paranoia check before passing a long to pid2tcb(int pid) |
| |
| 2013-07-02 Denys Vlasenko <dvlasenk@redhat.com> |
| |
| In debug output, show waitpid status with 6 hex digits, not 4. |
| This shows event byte values better (without variable offset): |
| |
| [wait(0x01057f) = 29491] WIFSTOPPED,sig=SIGTRAP,EVENT_FORK (1) |
| [wait(0x80057f) = 29492] WIFSTOPPED,sig=SIGTRAP,EVENT_STOP (128) |
| ^^ |
| |
| 2013-07-02 Denys Vlasenko <dvlasenk@redhat.com> |
| |
| Replace suspicious popen_pid assignment with an obviously correct one. |
| popen_pid = vfork() does work correctly, but for a subtle reason |
| that wrong assignment of 0 happens in the child _first_, |
| and _then_ correct value overwrites it in the parent. |
| |
| (And in a hyphothetical system where vfork = fork, |
| popen_pid wouldn't be shared, so it will also be ok.) |
| |
| However, it's not necessary to be difficult. |
| This change makes it so that assignment is done only in parent. |
| |
| 2013-07-01 Denys Vlasenko <dvlasenk@redhat.com> |
| |
| Convert trace() from returning int to returning void. |
| The cleanup sequence in error cases, and on normal code path |
| was nearly the same, no point in duplicating it. |
| |
| Remove ia64-specific printing of current address on signal delivery. |
| The address is printed anyway by printleader() if -i is active. |
| |
| Rename ia32 to ia64_ia32mode, and make it bool, not long. |
| Grepping for just ia32 was turning up many false positives. |
| |
| 2013-06-30 Denys Vlasenko <dvlasenk@redhat.com> |
| |
| Fold is_restart_error() into its sole user. |
| |
| 2013-06-29 Denys Vlasenko <dvlasenk@redhat.com> |
| |
| Update qemu_multiarch_testing/README. |
| |
| 2013-06-28 Denys Vlasenko <dvlasenk@redhat.com> |
| |
| sys_clone: add a comment about CLONE_PTRACE and CLONE_UNTRACED. |
| No code changes. |
| |
| POWERPC: get rid of "static long ppc_result" |
| |
| POWERPC: read ppc_regs.nip if -i. |
| |
| POWERPC: if GETREGS fails with EIO, don't try it again. |
| |
| Get rid of powerpc_getreg(), it's a copy of upeek() |
| |
| Change upeek() to take pid, not full tcp. |
| This will be used by next change. |
| |
| 2013-06-26 Anton Blanchard <anton@samba.org> |
| |
| powerpc: Provide a fallback for old kernels without PTRACE_GETREGS. |
| PTRACE_GETREGS was added to the ppc kernel in 2.6.23. In order to |
| provide backward compatibility for very old kernels, add a manual |
| fallback. |
| |
| * syscall.c (powerpc_getreg, powerpc_getregs_old): New functions. |
| (get_regs): Call powerpc_getregs_old if PTRACE_GETREGS is not supported. |
| |
| 2013-06-26 Anton Blanchard <anton@samba.org> |
| |
| powerpc: Use PTRACE_GETREGS to fetch all registers. |
| * defs.h: declare ppc_regs and get_regs_error. |
| * signal.c (sys_sigreturn): Use ppc_regs instead of upeek. |
| * syscall.c: define ppc_regs. |
| (printcall): Use ppc_regs instead of upeek. |
| (get_scno): Replace multiple upeek calls with one PTRACE_GETREGS call. |
| (get_syscall_result): Likewise. |
| |
| 2013-06-26 Denys Vlasenko <dvlasenk@redhat.com> |
| |
| Another manpage tweak. |
| |
| Manpage update. |
| |
| Update build_static_example.sh. |
| Now it also contains a tested example of i686 build on 64-bit host. |
| |
| In -f mode, do not assume that new pid is stopped - handle exits too. |
| |
| 2013-06-26 Denys Vlasenko <dvlasenk@redhat.com> |
| |
| Set strace_child only in the right branch. |
| "strace_child = pid" assignment was racing in NOMMU case |
| because of vfork (no way to know which process would win). |
| |
| After this change, strace_child is set to nonzero only |
| in one process after [v]fork. |
| |
| 2013-06-26 Denys Vlasenko <dvlasenk@redhat.com> |
| |
| Get rid of TCB_INUSE and TCB_STRACE_CHILD. |
| We can use tcb::pid == 0 as an indicator of free tcb, |
| and we already have strace_child variable which holds |
| pid of our child, if any. |
| |
| 2013-06-21 Denys Vlasenko <dvlasenk@redhat.com> |
| |
| Fix debug output of wait4 result (was reusing buf[] on unknown events) |
| |
| Show PTRACE_EVENT_STOP correctly in debug output. |
| |
| 2013-06-21 Denys Vlasenko <dvlasenk@redhat.com> |
| |
| Panic a bit less when we see an unknown pid. |
| I stumbeld over this case when I used "exec stace ...". |
| |
| * strace.c (trace): Do not exit if we see an unknown pid in wait4. |
| |
| 2013-06-21 Denys Vlasenko <dvlasenk@redhat.com> |
| |
| detach(): Reorganize code. Logic is the same. |
| * strace.c (detach): Use goto's instead of excessive nesting. |
| Drop sigstop_expected and interrupt_done variables. |
| |
| Eat pending SIGSTOP _before_ PTRACE_DETACH in detach() |
| * strace.c (detach): If TCB_IGNORE_ONE_SIGSTOP is set, |
| di not PTRACE_DETACH - wait for SIGSTOP first. |
| |
| 2013-06-20 Denys Vlasenko <dvlasenk@redhat.com> |
| |
| detach(): warn if we see ECHILD from waitpid. |
| * strace.c (detach): Warn if we see ECHILD from waitpid. |
| Explain in comments that we don't normally expect !WIFSTOPPED |
| either, and also that PTRACE_CONT failure isn't expected |
| (the "break" there is a "I'm confused, bailing out" code style).. |
| |
| Improve error messages in detach() |
| * strace.c (detach): Change return type from int to void. |
| Improve error meesages: show PID, tell exactly which operation fails. |
| |
| 2013-06-20 Denys Vlasenko <dvlasenk@redhat.com> |
| |
| Remove workarounds for ancient kernels lacking __WALL. |
| __WALL is available and working at least since 2.4 kernels: 10 years ago. |
| |
| * strace (detach): Remove workarounds for ancient kernels lacking __WALL. |
| Add missing EINTR check. |
| (trace): Remove workarounds for ancient kernels lacking __WALL. |
| Remove redundant double error printout. |
| |
| 2013-06-20 Denys Vlasenko <dvlasenk@redhat.com> |
| |
| USE_SEIZE: fix detaching from stopped processes. |
| V3: split SEIZE/!SEIZE code paths to reduce confusion. |
| Extensively comment every possible case. |
| Verified that all tests/detach* tests work in both SEIZE and !SEIZE |
| cases. |
| |
| * strace.c (detach): If PTRACE_SEIZE API is in use, stop the tracee |
| using PTRACE_INTERRUPT instead of sending it a SIGSTOP. |
| In a subsequent waitpid loop, correctly wait and suppress SIGSTOP |
| on detach if PTRACE_INTERRUPT wasn't used, or wait for any ptrace |
| stop and detach without suppressing signals. |
| |
| 2013-06-19 Dmitry V. Levin <ldv@altlinux.org> |
| |
| tests: disable /proc based checks when /proc is not mounted. |
| * tests/detach-running: Disable /proc based checks when |
| /proc/self/status is not available. |
| * tests/detach-sleeping: Likewise. |
| * tests/detach-stopped: Likewise. |
| |
| 2013-06-19 Denys Vlasenko <dvlasenk@redhat.com> |
| |
| tests/detach-{running,sleeping,stopped}: check post-detach state. |
| Check that traced process still exists and is in a right state |
| after strace detached from it. |
| |
| 2013-06-19 Dmitry V. Levin <ldv@altlinux.org> |
| |
| tests: ensure that strace can detach from running processes. |
| * tests/detach-running: New test. |
| * tests/Makefile.am (TESTS): Add it. |
| |
| tests: ensure that strace does not leave sleeping processes stopped. |
| * tests/detach-sleeping: Do not send SIGCONT to the sleeping process. |
| |
| 2013-06-18 Dmitry V. Levin <ldv@altlinux.org> |
| |
| tests: fix parallel-tests support in detach-* tests. |
| * tests/detach-sleeping: Use $LOG file for set_ptracer_any output. |
| * tests/detach-stopped: Likewise. |
| |
| tests: parametrize "sleep 1" |
| * tests/init.sh (SLEEP_A_BIT): New variable. |
| * tests/detach-sleeping: Use it. |
| * tests/detach-stopped: Likewise. |
| |
| tests: ensure that strace can detach from sleeping and stopped processes |
| * tests/set_ptracer_any.c: New file. |
| * tests/detach-sleeping: New test. |
| * tests/detach-stopped: Likewise. |
| * tests/Makefile.am (check_PROGRAMS): Add set_ptracer_any. |
| (TESTS): Add detach-sleeping and detach-stopped. |
| * tests/.gitignore: Add set_ptracer_any. |
| |
| 2013-06-18 Dmitry V. Levin <ldv@altlinux.org> |
| |
| tests: enhance timeout checks. |
| Run each test using a wrapper that does all necessary timeout checks. |
| |
| * tests/run.sh: New file. |
| * tests/Makefile.am (EXTRA_DIST, LOG_COMPILER): Add it. |
| * tests/init.sh (check_strace, check_timeout): Remove. |
| * tests/detach-stopped: Update callers. |
| * tests/net: Likewise. |
| * tests/ptrace_setoptions: Likewise. |
| * tests/qual_syscall: Likewise. |
| * tests/stat: Likewise. |
| * tests/strace-f: Likewise. |
| |
| 2013-06-18 Dmitry V. Levin <ldv@altlinux.org> |
| |
| tests: enable parallel-tests support. |
| * configure.ac (AM_INIT_AUTOMAKE): Add parallel-tests. |
| |
| tests: prepare for parallel-tests support. |
| * tests/Makefile.am (CLEANFILES): Calculate dynamically from TESTS. |
| * tests/init.sh (LOG): New variable. |
| * tests/detach-stopped: Use it. |
| * tests/net: Likewise. |
| * tests/qual_syscall: Likewise. |
| * tests/stat: Likewise. |
| * tests/strace-f: Likewise. |
| |
| 2013-06-18 Denys Vlasenko <dvlasenk@redhat.com> |
| |
| Cleanups. No logic changes. |
| * defs.h: Define new ptrace constants unconditionally. |
| * strace.c (detach): Fix comment. |
| (trace): Remove now unnecessary "if USE_SEIZE". |
| |
| 2013-06-05 Dmitry V. Levin <ldv@altlinux.org> |
| |
| maint: post-release administrivia. |
| * NEWS: Add header line for next release. |
| |
| 2013-06-03 Dmitry V. Levin <ldv@altlinux.org> |
| |
| ioctlent: add UAPI support. |
| * Makefile.am (IOCTLSORT_INCLUDEDIR): Define. |
| (ioctlsort): Use it. |
| * linux/ioctlent.sh (lookup_ioctls): Look into uapi directory tree. |
| Strip "uapi/" prefix from output path names. |
| * linux/ioctlent.h.in: Regenerate from v3.9 headers. |
| * NEWS: Mention it. |
| |
| Prepare for 4.8 release. |
| * NEWS: Update for 4.8 release. |
| * debian/changelog: 4.8-1. |
| * strace.spec: 4.8-1. |
| |
| 2013-06-02 Dmitry V. Levin <ldv@altlinux.org> |
| |
| Fix "make dist" on recently added architectures. |
| * Makefile.am (EXTRA_DIST): Add linux/aarch64/errnoent1.h, |
| linux/aarch64/ioctlent.h.in, linux/aarch64/ioctlent1.h, |
| linux/aarch64/signalent1.h, linux/aarch64/syscallent.h, |
| linux/aarch64/syscallent1.h, linux/metag/ioctlent.h.in, |
| linux/metag/syscallent.h, linux/or1k/ioctlent.h.in, |
| linux/or1k/syscallent.h, linux/tile/errnoent1.h, linux/tile/ioctlent1.h, |
| linux/tile/signalent1.h, linux/tile/syscallent1.h, linux/ubi-user.h, |
| linux/xtensa/ioctlent.h.in, and linux/xtensa/syscallent.h. |
| |
| Fix "make dist" regression introduced by commit v4.7-184-gd648f29. |
| * Makefile.am (EXTRA_DIST): Add linux/ubi-user.h. |
| |
| 2013-05-28 Dmitry V. Levin <ldv@altlinux.org> |
| |
| Do not suppress signal delivery messages with -qq. |
| Current implementation of -qq does not allow suppressing exit status |
| messages without suppressing signal delivery messages, which is not |
| good. There is a traditional "-e signal=none" syntax that can be used |
| to suppress all signal delivery messages. |
| This partially reverts commit v4.7-222-g01997cf. |
| |
| * strace.c (trace): Do not suppress signal delivery messages with -qq. |
| * strace.1: Update documentation about -qq option. |
| |
| 2013-05-23 Chris Metcalf <cmetcalf@tilera.com> |
| |
| tile: use siginfo_t, not struct siginfo. |
| As of glibc 2.16, "struct siginfo" is no longer supported, |
| and "siginfo_t" must be used instead. |
| |
| tile: remove MAP_CACHE_xxx support in mem.c. |
| These flags support functionality in mmap() that has not been |
| pushed back to the community, and which may or may not eventually |
| end up being the final community model. In the interim, having |
| these flags unconditionally present for "#ifdef TILE" just means |
| that the TILE build breaks if using the community versions of |
| the kernel and glibc, so just revert the code until such time |
| as it may end up in the community. |
| |
| 2013-05-17 Mike Frysinger <vapier@gentoo.org> |
| |
| Rename COPYRIGHT to COPYING. |
| The standard name people have adopted is "COPYING" rather than |
| "COPYRIGHT". Use that as a lot of license scanning tools look for it. |
| |
| * COPYRIGHT: Rename to ... |
| * COPYING: ... this. |
| * Makefile.am (EXTRA_DIST): Rename COPYRIGHT to COPYING. |
| * README: Likewise. |
| * strace.spec (%files): Likewise. |
| |
| 2013-05-17 Dmitry V. Levin <ldv@altlinux.org> |
| |
| Sync strace.spec and debian/ with packages. |
| * debian/changelog: Sync with 4.7-1. |
| * debian/strace.docs: Likewise. |
| * strace.spec: Sync with 4.7-3. |
| |
| Update PTRACE_O_* constants. |
| * process.c (ptrace_setoptions_flags): Sync with Linux 3.9. |
| |
| Update AF_*, PF_*, MSG_*, and TCP_* constants. |
| * net.c (domains, addrfams, protocols, socktcpoptions): Sync with |
| Linux 3.9. |
| |
| 2013-05-14 Dmitry V. Levin <ldv@altlinux.org> |
| |
| NOMMU: do not hide startup syscalls unless in -D mode. |
| On NOMMU systems in "strace PROG" case, we have no way to attach to |
| the tracee before it calls execve unless in -D mode. That is, the |
| first execve call is very likely to be missed, and setting |
| hide_log_until_execve just results to empty log. |
| |
| * strace.c (init) [NOMMU_SYSTEM]: Do not set hide_log_until_execve |
| unless in -D mode. |
| |
| 2013-05-14 Dmitry V. Levin <ldv@altlinux.org> |
| |
| Make -D mode work when the Yama LSM is enabled. |
| * strace.c [HAVE_PRCTL]: Include sys/prctl.h. |
| (startup_child) [HAVE_PRCTL && PR_SET_PTRACER && PR_SET_PTRACER_ANY]: |
| In -D mode, allow tracing the process that is going to become the |
| tracee. |
| |
| Update PR_* constants. |
| * process.c (prctl_options): Add PR_SET_PTRACER. |
| |
| 2013-05-14 Denys Vlasenko <dvlasenk@redhat.com> |
| |
| Hide startup syscalls. |
| Tested with "./strace [-D] [-q] [-bexecve] env true", |
| all cases seem to work. |
| |
| * defs.h: Declare new variable: bool hide_log_until_execve. |
| * strace.c: Define hide_log_until_execve. |
| Rename skip_startup_execve to skip_one_b_execve. |
| (startup_child): Do not set skip_one_b_execve = 1 here. |
| (init): If "strace PROG" case (as opposed to "strace -pPID"), |
| set skip_one_b_execve and hide_log_until_execve to 1. |
| (trace): Don't print signal messages if hide_log_until_execve == 1. |
| * syscall.c (trace_syscall_entering): |
| Skip syscall printing if hide_log_until_execve == 1. |
| Reset hide_log_until_execve if we enter execve syscall. |
| (trace_syscall_exiting): Skip syscall printing if hide_log_until_execve == 1. |
| |
| 2013-05-13 Daniel P. Berrange <berrange@redhat.com> |
| |
| Allow -q to be repeated for very quiet output. |
| Even with the -q flag specified, tracing output is still mixed |
| with messages about signals and process exit status, which is |
| often irrelevant. Allow the -q option to be repeated to force |
| the suppression of signals / exit status info too. |
| |
| * defs.h: Change 'qflag' from 'bool' to 'unsigned int'. |
| * strace.1: Document ability to repeat '-q' option. |
| * strace.c: Allow '-q' to be repeated to quieten process |
| exit status and signal messages. |
| |
| 2013-05-11 Dmitry V. Levin <ldv@altlinux.org> |
| |
| mips o32: fix syscall table. |
| * linux/mips/syscallent-o32.h: Add entries for getpmsg, putpmsg, |
| get_mempolicy, set_mempolicy and vserver. Fix names for umount, |
| umount2, mmap, mmap2, pread64, pwrite64, sigaltstack and fstatat64 |
| syscalls. |
| |
| 2013-05-10 Dmitry V. Levin <ldv@altlinux.org> |
| |
| mips n64: fix syscall table. |
| * linux/mips/syscallent-n64.h: Add entries for get_mempolicy, |
| set_mempolicy and timerfd syscalls. Fix entry for socket syscall. |
| Fix names for pread64, pwrite64, shmat, rt_sigsuspend, sigaltstack |
| and umount2 syscalls. |
| |
| mips n32: fix syscall table. |
| * linux/mips/syscallent-n32.h: Add entries for mbind, get_mempolicy, |
| set_mempolicy and timerfd syscalls. Fix entry for socket syscall. |
| Fix handlers for truncate, ftruncate and getdents64 syscalls. |
| Fix names for pread64, pwrite64, shmat, rt_sigsuspend, sigaltstack, |
| umount2, and getdents64 syscalls. |
| |
| 2013-05-08 Dmitry V. Levin <ldv@altlinux.org> |
| |
| sync_file_range: fix number of syscall arguments. |
| * linux/avr32/syscallent.h: Set the number of sync_file_range arguments |
| to 6. |
| * linux/bfin/syscallent.h: Likewise. |
| * linux/hppa/syscallent.h: Likewise. |
| * linux/i386/syscallent.h: Likewise. |
| * linux/m68k/syscallent.h: Likewise. |
| * linux/microblaze/syscallent.h: Likewise. |
| * linux/mips/syscallent-o32.h: Likewise. |
| * linux/or1k/syscallent.h: Likewise. |
| * linux/s390/syscallent.h: Likewise. |
| * linux/sh/syscallent.h: Likewise. |
| * linux/powerpc/syscallent.h: Change sync_file_range to |
| sync_file_range2, set the number of sync_file_range2 arguments to 6. |
| * linux/tile/syscallent.h: Change sync_file_range to sync_file_range2, |
| set the number of sync_file_range2 arguments to 4. |
| * linux/tile/syscallent1.h: Change sync_file_range to sync_file_range2. |
| update handler. |
| * linux/xtensa/syscallent.h: Likewise. |
| |
| Add syscall entries for new linux syscalls. |
| * linux/dummy.h: Add printargs aliases for sys_finit_module, sys_kcmp |
| and sys_sync_file_range2. |
| * linux/alpha/syscallent.h: Add entries for process_vm_readv |
| and process_vm_writev. |
| * linux/bfin/syscallent.h: Likewise. |
| * linux/arm/syscallent.h: Add entries for sync_file_range2, kcmp |
| and finit_module. |
| * linux/hppa/syscallent.h: Add entries for process_vm_readv, |
| process_vm_writev, kcmp and finit_module. |
| * linux/tile/syscallent.h: Likewise. |
| * linux/tile/syscallent1.h: Likewise. |
| * linux/ia64/syscallent.h: Add entry for finit_module. |
| * linux/i386/syscallent.h: Add entries for kcmp and finit_module. |
| * linux/m68k/syscallent.h: Likewise. |
| * linux/metag/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/or1k/syscallent.h: Likewise. |
| * linux/powerpc/syscallent.h: Likewise. |
| * linux/sh/syscallent.h: Likewise. |
| * linux/sh64/syscallent.h: Likewise. |
| * linux/x32/syscallent.h: Likewise. |
| * linux/x86_64/syscallent.h: Likewise. |
| * linux/xtensa/syscallent.h: Likewise. |
| * linux/s390/syscallent.h: Add entries for s390_runtime_instr, kcmp |
| and finit_module. |
| * linux/s390x/syscallent.h: Likewise. |
| * linux/sparc/syscallent.h: Add entries for kern_features, kcmp |
| and finit_module. |
| |
| tests/net: fix portability issues. |
| * tests/net-accept-connect.c: Fix address length passed to bind() |
| and connect(). |
| * tests/net: Update regexps. |
| |
| tests: add a test for basic network syscalls. |
| * tests/.gitignore: Add net-accept-connect, *.o and *.log.*. |
| * tests/Makefile.am (AM_CFLAGS): New variable. |
| (check_PROGRAMS): Add net-accept-connect. |
| (TESTS): Add net. |
| * tests/net-accept-connect.c: New file. |
| * tests/net: New file. |
| |
| tests: do not skip tests when timeout utility is not available. |
| * tests/init.sh (check_timeout): New function. |
| * tests/ptrace_setoptions: Use it. |
| * tests/qual_syscall: Likewise. |
| * tests/stat: Likewise. |
| * tests/strace-f: Likewise. |
| |
| 2013-05-07 Dmitry V. Levin <ldv@altlinux.org> |
| |
| Move subcall decoding configuration out of the common code. |
| * Makefile.am (EXTRA_DIST): Add linux/subcall.h. |
| * linux/syscall.h (SYS_socket_subcall): Remove. |
| (SYS_socket_nsubcalls, SYS_ipc_subcall, SYS_ipc_nsubcalls): Move to ... |
| * linux/subcall.h: ... new file. |
| * linux/arm/syscallent.h: Define SYS_socket_subcall, include subcall.h. |
| * linux/i386/syscallent.h: Likewise. |
| * linux/m68k/syscallent.h: Likewise. |
| * linux/powerpc/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. |
| |
| Suggested by Mike Frysinger and Chris Metcalf. |
| |
| 2013-05-07 Dmitry V. Levin <ldv@altlinux.org> |
| |
| sparc: remove some unused declarations and macros. |
| * linux/syscall.h [SPARC || SPARC64] (sys_msgsys, sys_semsys, |
| sys_shmsys): Remove declarations. |
| [SPARC || SPARC64] (SYS_semsys_subcall, SYS_semsys_nsubcalls, |
| SYS_msgsys_subcall, SYS_msgsys_nsubcalls, SYS_shmsys_subcall, |
| SYS_shmsys_nsubcalls): Remove macros. |
| |
| 2013-05-07 Mike Frysinger <vapier@gentoo.org> |
| |
| mips: fix build regression. |
| The recent commit (2690fadc8b35190dddd29274a7405bac13adc469) shuffled |
| the mips headers around causing it to check the ABI defines before it |
| included the header which set those up. Now all mips builds fail with: |
| In file included from count.c:36:0: |
| defs.h:48:4: error: #error Unsupported _MIPS_SIM |
| |
| * defs.h [MIPS]: Move sgidefs.h above _MIPS_SIM check. |
| |
| 2013-05-07 James Hogan <james.hogan@imgtec.com> |
| |
| metag: rename llseek syscall to _llseek. |
| The raw llseek syscall is called _llseek from userland, so fix the |
| naming of it for metag to allow the stat test to pass. |
| |
| * linux/metag/syscallent.h: Rename llseek syscall to _llseek. |
| |
| 2013-05-07 James Hogan <james.hogan@imgtec.com> |
| |
| metag: disable socket and ipc subcall support. |
| The metag architecture also uses dedicated syscalls and doesn't need to |
| multiplex ipc and socket subcalls. |
| |
| * linux/syscall.h [METAG]: Do not define SYS_socket_subcall and |
| SYS_ipc_subcall. |
| |
| 2013-05-07 Dmitry V. Levin <ldv@altlinux.org> |
| |
| pread, pwrite: fix number of syscall arguments. |
| The number of pread and pwrite arguments depends on architecture and |
| personality. For 64bit and ilp32 it equals to 4, for unaligned |
| 32bit it equals to 5, and for aligned 32bit it equals to 6. |
| |
| * linux/aarch64/syscallent1.h: Change the number of pread and pwrite |
| arguments to 4. |
| * linux/alpha/syscallent.h: Likewise. |
| * linux/mips/syscallent-n32.h: Likewise. |
| * linux/mips/syscallent-n64.h: Likewise. |
| * linux/s390x/syscallent.h: Likewise. |
| * linux/sh64/syscallent.h: Likewise. |
| * linux/tile/syscallent.h: Likewise. |
| * linux/x32/syscallent.h: Likewise. |
| * linux/x86_64/syscallent.h: Likewise. |
| * linux/or1k/syscallent.h: Change the number of pread and pwrite |
| arguments to 5. |
| |
| 2013-05-07 Dmitry V. Levin <ldv@altlinux.org> |
| |
| preadv, pwritev: fix number of syscall arguments. |
| The number of preadv and pwritev arguments depends on architecture and |
| personality. For 64bit and ilp32 it equals to 4, for unaligned 32bit |
| it equals to 5, and for aligned 32bit it equals to 6. |
| |
| * linux/aarch64/syscallent1.h: Change the number of preadv and pwritev |
| arguments to 4. |
| * linux/alpha/syscallent.h: Likewise. |
| * linux/ia64/syscallent.h: Likewise. |
| * linux/mips/syscallent-n32.h: Likewise. |
| * linux/mips/syscallent-n64.h: Likewise. |
| * linux/s390x/syscallent.h: Likewise. |
| * linux/sh64/syscallent.h: Likewise. |
| * linux/tile/syscallent.h: Likewise. |
| * linux/x32/syscallent.h: Likewise. |
| * linux/x86_64/syscallent.h: Likewise. |
| * linux/powerpc/syscallent.h: Change the number of preadv and pwritev |
| arguments to 6. |
| * linux/sh/syscallent.h: Likewise. |
| * linux/xtensa/syscallent.h: Likewise. |
| |
| 2013-05-07 Dmitry V. Levin <ldv@altlinux.org> |
| |
| ftruncate64, truncate64: fix number of syscall arguments. |
| The number of ftruncate64/truncate64 arguments depends on architecture |
| and personality. For 64bit and ilp32 it equals to 2, for unaligned |
| 32bit it equals to 3, and for aligned 32bit it equals to 4. |
| |
| * linux/or1k/syscallent.h: Change the number of ftruncate64 and |
| truncate64 arguments to 3. |
| * linux/sh/syscallent.h: Likewise. |
| * linux/sh64/syscallent.h: Change ftruncate64 and truncate64 handlers. |
| * linux/sparc/syscallent.h: Change ftruncate64 handler, change the |
| number of its arguments to 3. |
| * linux/xtensa/syscallent.h: Change the number of ftruncate64 and |
| truncate64 arguments to 4. |
| |
| 2013-05-07 Dmitry V. Levin <ldv@altlinux.org> |
| |
| fallocate: fix number of syscall arguments. |
| The number of fallocate arguments depends on architecture and |
| personality. For 64bit and ilp32 it equals to 4, |
| for 32bit it equals to 6. |
| |
| * linux/aarch64/syscallent1.h: Change the number of fallocate arguments |
| to 4. |
| * linux/alpha/syscallent.h: Likewise. |
| * linux/mips/syscallent-n32.h: Likewise. |
| * linux/mips/syscallent-n64.h: Likewise. |
| * linux/s390x/syscallent.h: Likewise. |
| * linux/sh64/syscallent.h: Likewise. |
| * linux/tile/syscallent.h: Likewise. |
| * linux/x32/syscallent.h: Likewise. |
| * linux/x86_64/syscallent.h: Likewise. |
| * linux/microblaze/syscallent.h: Set fallocate handler and flags. |
| |
| 2013-05-07 Dmitry V. Levin <ldv@altlinux.org> |
| |
| fadvise64, fadvise64_64: fix handlers and number of syscall arguments. |
| The number of fadvise64 arguments depends on architecture and |
| personality. For 64bit and ilp32 it equals to 4, for unaligned |
| 32bit it equals to 5, and for aligned 32bit it equals to 6. |
| |
| The number of fadvise64_64 arguments is 4 for 64bit and ilp32, for |
| unaligned 32bit and most of aligned 32bit it equals to 6, and for |
| mips o32 it equals to 7. |
| |
| * linux/alpha/syscallent.h: Set fadvise64 handler. |
| * linux/s390/syscallent.h: Likewise. |
| * linux/hppa/syscallent.h: Set fadvise64_64 handler, change the number |
| of syscall arguments to 6. |
| * linux/ia64/syscallent.h: Change the number of fadvise64 arguments |
| to 4. |
| * linux/mips/syscallent-n32.h: Likewise. |
| * linux/tile/syscallent1.h: Change the number of fadvise64 arguments |
| to 5. |
| * linux/mips/syscallent-o32.h: Change the number of fadvise64_64 |
| arguments to 7. |
| * linux/s390x/syscallent.h: Change fadvise64_64 handler. Set fadvise64 |
| handler. Change numbers of fadvise64 and fadvise64_64 arguments to 4. |
| * linux/sh64/syscallent.h: Change fadvise64_64 handler. |
| Change numbers of fadvise64 and fadvise64_64 arguments to 4. |
| * linux/sparc/syscallent.h: Set fadvise64 and fadvise64_64 handlers, |
| change numbers of their arguments to 5 and 6. |
| * linux/x86_64/syscallent.h: Change fadvise64 handler. |
| |
| 2013-05-07 Dmitry V. Levin <ldv@altlinux.org> |
| |
| mips o32: raise the max number of syscall arguments to 7. |
| On mips o32, fadvise64_64 takes 7 arguments. |
| |
| * defs.h [LINUX_MIPSO32]: Raise MAX_ARGS to 7. |
| |
| 2013-05-07 Dmitry V. Levin <ldv@altlinux.org> |
| |
| mips: split syscallent.h. |
| linux/mips/syscallent.h consisted of several parts that had little in |
| common. Split them into separate files to ease maintenance. |
| |
| * linux/mips/syscallent-compat.h: New file. |
| * linux/mips/syscallent-n32.h: Likewise. |
| * linux/mips/syscallent-n64.h: Likewise. |
| * linux/mips/syscallent-o32.h: Likewise. |
| * linux/mips/syscallent.h: Include them. |
| * Makefile.am (EXTRA_DIST): Add them. |
| |
| 2013-05-07 Dmitry V. Levin <ldv@altlinux.org> |
| |
| readahead: fix number of syscall arguments. |
| The number of readahead arguments depends on architecture and |
| personality. For 64bit and ilp32 it equals to 3, for unaligned 32bit it |
| equals to 4, and for aligned 32bit it equals to 5. |
| |
| * linux/aarch64/syscallent1.h: Set number of readahead arguments to 3. |
| * linux/alpha/syscallent.h: Likewise. |
| * linux/ia64/syscallent.h: Likewise. |
| * linux/s390x/syscallent.h: Likewise. |
| * linux/sh64/syscallent.h: Likewise. |
| * linux/x32/syscallent.h: Likewise. |
| * linux/x86_64/syscallent.h: Likewise. |
| * linux/or1k/syscallent.h: Set number of readahead arguments to 4. |
| * linux/sh/syscallent.h: Likewise. |
| * linux/tile/syscallent.h: Likewise. |
| * linux/xtensa/syscallent.h: Set number of readahead arguments to 5. |
| |
| 2013-05-06 Dmitry V. Levin <ldv@altlinux.org> |
| |
| linux/syscall.h: make subcall decoding configuration more readable. |
| * linux/syscall.h: Inverse and sort the subcall ifdef, |
| add a comment why subcall decoding support is not enabled |
| on some architectures. |
| |
| 2013-05-06 Chris Zankel <chris@zankel.net> |
| |
| xtensa: disable socket and ipc subcall support. |
| The Xtensa architecture also uses dedicated syscalls and doesn't |
| need to multiplex ipc and socket subcalls. |
| |
| * linux/syscall.h [XTENSA]: Do not define SYS_socket_subcall and |
| SYS_ipc_subcall. |
| |
| 2013-05-06 Dmitry V. Levin <ldv@altlinux.org> |
| |
| Fix syscall flags. |
| * linux/aarch64/syscallent1.h: Fix syscall flags for send. |
| * linux/alpha/syscallent.h: Fix syscall flags for fchdir, getcwd, |
| oldumount, sigaltstack, umount, uselib, and utimes. |
| * linux/arm/syscallent.h: Fix syscall flags for close, creat, dup, dup2, |
| fchdir, fchmod, fchown, fchown32, fcntl, fcntl64, fdatasync, flock, |
| fsetxattr, fsync, getdents, getdents64, ioctl, oldfstat, oldselect, |
| open, pipe, poll, pread, pwrite, read, readahead, readdir, readv, |
| select, socketcall, write, and writev. |
| * linux/avr32/syscallent.h: Fix syscall flags for inotify_init and |
| unshare. |
| * linux/bfin/syscallent.h: Fix syscall flags for pread64 and pwrite64. |
| * linux/hppa/syscallent.h: Fix syscall flags for fchdir, flistxattr, |
| getcwd, pause, signal, umount2, uselib, utime, and vfork. |
| * linux/ia64/syscallent.h: Fix syscall flags for creat, fchdir, |
| lstat, umount, uselib, and utimes. Fix syscall handlers for |
| fgetxattr, flistxattr, fremovexattr, and fsetxattr. |
| * linux/m68k/syscallent.h: Fix syscall flags for close, creat, dup, |
| dup2, fchdir, fchmod, fchown, fchown32, fcntl, fcntl64, fdatasync, |
| flock, fsetxattr, getdents, ioctl, oldfstat, oldselect, open, pipe, |
| poll, pread64, pwrite64, read, readahead, readdir, readv, select, |
| socketcall, write, and writev. |
| * linux/metag/syscallent.h: Fix syscall flags for fanotify_init, |
| prlimit64, process_vm_readv, process_vm_writev, and quotactl. |
| * linux/microblaze/syscallent.h: Fix syscall flags for close, creat, |
| dup, dup2, fchdir, fchmod, fchown, fchown32, fcntl, fcntl64, |
| fdatasync, flock, fsetxattr, getdents, ioctl, oldfstat, oldselect, |
| open, perf_event_open, pipe, poll, pread64, pwrite64, read, readahead, |
| readdir, readv, select, socketcall, write, and writev. |
| * linux/mips/syscallent.h: Fix syscall flags for close, creat, dup, |
| dup2, fchdir, fchmod, fchown, fcntl, fcntl64, fdatasync, flock, |
| fsetxattr, getdents, getdents64, getxattr, ioctl, lgetxattr, |
| listxattr, llistxattr, lremovexattr, lsetxattr, oldfstat, open, pipe, |
| pivot_root, poll, pread, pwrite, read, readahead, readv, removexattr, |
| select, setxattr, socketcall, statfs, write, and writev. |
| * linux/or1k/syscallent.h: Fix syscall flags for fchdir and quotactl. |
| * linux/powerpc/syscallent.h: Fix syscall flags for fchdir. |
| * linux/sh/syscallent.h: Fix syscall flags for getcwd. |
| * linux/sparc/syscallent.h: Fix syscall flags for getresgid, getresuid, |
| setresgid, setresgid32, and setresuid. |
| * linux/xtensa/syscallent.h: Fix syscall flags for close, creat, dup, |
| dup2, fallocate, fchdir, fchmod, fchown, fcntl, fcntl64, fdatasync, |
| flock, fsetxattr, fstatfs, fstatfs64, fsync, getdents, getdents64, |
| ioctl, open, pipe, pivot_root, poll, pread64, pwrite64, read, |
| readahead, readv, rt_sigreturn, select, setfsgid, setfsuid, setuid, |
| swapoff, times, utime, write, and writev. |
| |
| tests/stat: enhance regexps. |
| * tests/stat: Enhance regexps that check tracing of stat/stat64 and |
| fstatat/fstatat64 syscalls. |
| |
| 2013-05-06 Chris Metcalf <cmetcalf@tilera.com> |
| |
| tests/stat: support fstatat syscall for stat() |
| Newer Linux architectures don't support the stat/stat64 syscalls. |
| Instead they use fstatat() with AT_FDCWD and an extra flags argument. |
| Support seeing this output in the 'strace -efile' test. |
| |
| As part of this change, use "grep -E -x" syntax consistently for |
| all stat tests, since the number of \(foo\)\? expressions was becoming |
| pretty unwieldy. |
| |
| * tests/stat: Update stat/stat64 check regexp to handle architectures |
| that use fstatat instead. Use "grep -E -x" syntax consistently. |
| |
| 2013-05-06 Dmitry V. Levin <ldv@altlinux.org> |
| |
| ARM OABI: fix 64-bit arguments decoding. |
| ARM OABI and ARM EABI have different function parameters passing rules, |
| see commit v4.6-11-g7a5b08f for details. |
| |
| * util.c (printllval): Do not align argument number in case of ARM OABI. |
| * file.c (sys_fadvise64_64): Likewise. |
| |
| 2013-05-06 Mike Frysinger <vapier@gentoo.org> |
| |
| printllval: fix 64bit unpacking on mips/o32 and xtensa. |
| The mips/o32 ABI and xtensa arch also do 64bit aligning, so add it to the |
| printllval list for this. |
| |
| Normally for sys_fadvise64_64 we'd handle the same list of arches, but |
| mips/o32 ABI is funky and doesn't shift -- it has 7 args. So just add |
| xtensa to it. |
| |
| * file.c (sys_fadvise64_64): Add XTENSA to the shifted list. |
| * util.c (printllval): Add LINUX_MIPSO32 and XTENSA to the shifted list. |
| |
| 2013-05-06 Chris Metcalf <cmetcalf@tilera.com> |
| |
| tile: disable socket and ipc subcall support. |
| The tile arch just has the dedicated syscalls, so disable |
| the logic for parsing subcalls. |
| |
| * linux/syscall.h [TILE]: Do not define SYS_socket_subcall and |
| SYS_ipc_subcall. |
| |
| 2013-05-06 Mike Frysinger <vapier@gentoo.org> |
| |
| Blackfin: disable socketcall and ipc subcall support. |
| The Blackfin arch does not have a socketcall or ipc subcall |
| (it has dedicated syscalls broken out), so disable the logic for it. |
| |
| * linux/syscall.h [BFIN]: Do not define SYS_socket_subcall and |
| SYS_ipc_subcall. |
| |
| 2013-05-05 Mike Frysinger <vapier@gentoo.org> |
| |
| s390: fix # of args truncate64/ftruncate64 takes. |
| * linux/s390/syscallent.h: Change nargs to 3 for truncate64/ftruncate64. |
| |
| 2013-05-05 Mike Frysinger <vapier@gentoo.org> |
| |
| mtd: clamp ubi name strings. |
| Since the length fields with the ubi volnames are signed 16bit values, |
| make sure we clamp that number to the size of the buffer we've allocated |
| on the stack to prevent buffer overflows. |
| |
| * mtd.c (ubi_ioctl): Clamp length to string_quote to 0/UBI_MAX_VOLUME_NAME. |
| Check the return of string_quote and tweak the output accordingly. |
| |
| 2013-05-04 Dmitry V. Levin <ldv@altlinux.org> |
| |
| printxval: support more architectures. |
| * configure.ac: Define SIZEOF_LONG_LONG. |
| * util.c (printllval): Handle all architectures with sizeof(long) > 4 |
| and sizeof(long) == sizeof(long long). |
| |
| 2013-05-04 Mike Frysinger <vapier@gentoo.org> |
| |
| Fix building for sparc64 targets. |
| * util.c (printllval): Handle SPARC64 define. |
| |
| Fix building for mips n64 targets. |
| * util.c (printllval): Handle LINUX_MIPSN64 define. |
| |
| 2013-05-03 Dmitry V. Levin <ldv@altlinux.org> |
| |
| hppa: fix stat64 and fstat64 decoding. |
| * file.c [HPPA]: Do not redefine stat64 to hpux_stat64. |
| |
| arm, aarch64, ppc: fix printllval-based decoders. |
| * util.c (printllval) [ARM || POWERPC]: Align argument number. |
| [AARCH64]: Align argument number in 32bit mode. |
| * file.c (sys_fadvise64_64) [ARM || POWERPC]: Remove no longer needed |
| printllval workaround. |
| [AARCH64]: Fix printing POSIX_FADV_* constants in 32bit mode. |
| |
| 2013-05-02 Mike Frysinger <vapier@gentoo.org> |
| |
| Decode mtd/ubi ioctls. |
| Been playing with UBI of late and it'd help if I could see what it was |
| doing. Not entirely sure about the decoding of UBI_IOCVOLUP -- it takes |
| a pointer to a 64bit value, not a strict. |
| |
| * util.c (MAX, MIN): Move to ... |
| * defs.h (MAX, MIN): ... here. |
| (CLAMP): Define. |
| (ubi_ioctl): New prototype. |
| * ioctl.c (ioctl_decode): Call ubi_ioctl when code is 'o' or 'O'. |
| * mtd.c: Include ubi user API header. |
| (ubi_volume_types): New enum decode. |
| (ubi_volume_props): Likewise. |
| (ubi_ioctl): Define. |
| * linux/ubi-user.h: Import from linux 3.8. |
| |
| 2013-05-02 Mike Frysinger <vapier@gentoo.org> |
| |
| test: add mtd/ubi test helpers. |
| I used these to develop the mtd/ubi ioctl decoders. |
| |
| * test/.gitignore: Add mtd/ubi. |
| * test/Makefile: Declare all tests in a PROGS var. |
| Declare build targets .PHONY. |
| (all): Depend on $(PROGS) instead of hardcoded list. |
| (clean): Remove $(PROGS) instead of hardcoded list. |
| * test/mtd.c: New file. |
| * test/ubi.c: Likewise. |
| |
| 2013-05-02 Mike Frysinger <vapier@gentoo.org> |
| |
| test: include headers for used funcs. |
| These funcs use things like wait/write/read/strcmp but sometimes |
| don't include the right header for them. |
| |
| * test/Makefile: Add -Wall to CFLAGS. |
| * test/clone.c: Include unistd.h. |
| * test/fork.c: Include sys/wait.h. |
| * test/sig.c: Include unistd.h. |
| * test/sigkill_rain.c: Include sys/wait.h. |
| * test/vfork.c: Include sys/wait.h. |
| * test/wait_must_be_interruptible.c: Include string.h |
| |
| 2013-05-02 Dmitry V. Levin <ldv@altlinux.org> |
| |
| ia64: fix compilation warnings introduced by commit v4.7-174-g44f0ed1. |
| * linux/ia64/syscallent.h: Undefine sys_oldlstat, sys_lstat and |
| sys_lstat64 before redefining them to printargs. |
| |
| Reported-by: Mike Frysinger <vapier@gentoo.org> |
| |
| 2013-05-02 Mike Frysinger <vapier@gentoo.org> |
| |
| tests: stat: fix clean up of sample file. |
| * tests/stat: Also rm the sample file at the end of the test. |
| |
| Ignore more files. |
| * .gitignore: Add gdb related files. |
| * tests/.gitignore: Ignore test logs. |
| |
| 2013-05-02 Dmitry V. Levin <ldv@altlinux.org> |
| |
| x32: fix decoding of i386 truncate and ftruncate syscalls. |
| * linux/x32/syscallent1.h: Remove sys_*truncate64 redirections. |
| |
| x32: fix printllval-based decoders of i386 syscalls. |
| * util.c (printllval) [X32]: Handle i386 personality. |
| |
| tests: add basic test for ftruncate, lseek and stat family syscalls. |
| * tests/stat: New test. |
| * tests/Makefile.am (TESTS): Add stat. |
| |
| 2013-05-01 Dmitry V. Levin <ldv@altlinux.org> |
| |
| x32: fix build regressions introduced by commit v4.7-96-g8435d67. |
| * desc.c (printflock) [X32]: Add special handling required for |
| this architecture with sizeof(long) < sizeof(off_t). |
| * file.c [X32] (struct stat64): Add __attribute__((packed)). |
| [X32] (HAVE_STAT64): Define. |
| (printstat) [X32]: Redirect to printstat64. |
| (printstat64) [X32]: Use "struct stat" instead of "struct stat64". |
| [X32] (realprintstat64): Rename to printstat64_x32. |
| (sys_stat64, sys_fstat64) [X32]: Remove second definitions of these |
| functions. Call printstat64_x32 instead of printstat64 |
| * linux/x32/syscallent.h: Fix handlers for truncate and ftruncate. |
| |
| Alias sys_*lstat* syscall printing functions. |
| * file.c (sys_lstat, sys_lstat64, sys_oldlstat): Remove. |
| * linux/dummy.h: Move !HAVE_STRUCT___OLD_KERNEL_STAT aliases forward. |
| (sys_lstat): Alias to sys_stat. |
| (sys_lstat64): Alias to sys_stat64. |
| (sys_oldlstat): Alias to sys_oldstat. |
| * linux/syscall.h (sys_lstat, sys_lstat64, sys_oldlstat): Remove. |
| * linux/x32/syscallent1.h (sys_lstat64): Remove. |
| |
| x86_64: decode __old_kernel_stat based syscalls. |
| * linux/x86_64/syscallent1.h: Remove sys_old*stat redirections. |
| |
| x32: fix decoding of __old_kernel_stat based syscalls. |
| * file.c [X32] (struct __old_kernel_stat): Define. |
| * linux/x32/syscallent1.h: Remove sys_old*stat redirections. |
| |
| 2013-05-01 James Hogan <james.hogan@imgtec.com> |
| |
| test/threaded_execve: fix on metag. |
| The metag ABI has stacks growing upwards so clone expects the stack |
| argument to point at the bottom of the stack instead of the top. |
| |
| * test/threaded_execve.c [__metag__]: Define clone2 differently |
| to avoid a segfault at runtime. |
| |
| 2013-05-01 James Hogan <james.hogan@imgtec.com> |
| |
| test/skodic: make a bit more portable. |
| * test/skodic.c (main): Don't use MAP_FIXED since valid virtual addresses |
| vary between architectures (as far as I can tell the use of MAP_FIXED is |
| not relevant to the test). Also don't assume the file desriptor returned |
| by open call is 3 when passing it to mmap. |
| |
| 2013-05-01 Mike Frysinger <vapier@gentoo.org> |
| |
| printllval: handle s390x. |
| This is a 64bit arch w/no personalities, so fix printing. |
| It can now trace a simple call like readahead: |
| $ cat test.c |
| main(){readahead(-1, (unsigned long long)1 << 50, 0);} |
| $ gcc test.c |
| $ ./strace -ereadahead ./a.out |
| readahead(-1, 1125899906842624, 0) = -1 EBADF (Bad file descriptor) |
| |
| * util.c (printllval): Handle S390X define. |
| |
| 2013-05-01 Mike Frysinger <vapier@gentoo.org> |
| |
| Stop using old AM_CONFIG_HEADER macro. |
| Building with automake-1.13 throws an error: |
| configure.ac:6: error: 'AM_CONFIG_HEADER': this macro is obsolete. |
| You should use the 'AC_CONFIG_HEADERS' macro instead. |
| |
| * configure.ac (AM_CONFIG_HEADER): Rename to AC_CONFIG_HEADERS. |
| |
| 2013-04-30 Dmitry V. Levin <ldv@altlinux.org> |
| |
| build: introduce git-version-gen. |
| * .gitignore: Add .version. |
| * Makefile.am (EXTRA_DIST, BUILT_SOURCES): Add $(srcdir)/.version. |
| Add rules to check NEWS, generate $(srcdir)/.version and |
| $(distdir)/.tarball-version files. |
| Change ChangeLog and CREDITS generation rules to depend on |
| $(srcdir)/.version instead of $(srcdir)/.git/refs/heads/*. |
| * NEWS: Add dates to recent releases. |
| * configure.ac (AC_INIT): Use git-version-gen. |
| (AM_INIT_AUTOMAKE): Remove check-news. |
| * git-version-gen: Import from gnulib. |
| * make-dist: Check NEWS. |
| |
| Makefile.am: sort long lists to ease maintenance. |
| * Makefile.am (strace_SOURCES, EXTRA_DIST): Sort, place one list element |
| per line. |
| |
| build: fix "make dist" regression introduced by commit v4.7-105-g7270de5 |
| * Makefile.am (EXTRA_DIST): Remove linux/arm/syscallent1.h, |
| linux/arm/signalent1.h, linux/arm/ioctlent1.h and linux/arm/errnoent1.h. |
| |
| build: fix "make dist" regression introduced by commit v4.7-29-g17e3860. |
| * Makefile.am (EXTRA_DIST): Add linux/ioctlent-filter.awk. |
| |
| 2013-04-30 Mike Frysinger <vapier@gentoo.org> |
| |
| Blackfin: tweak sram_alloc syscall decode. |
| * system.c (sys_sram_alloc): The 2nd argument of sram_alloc syscall |
| is a bit field, not a specific value, so decode it as such. |
| |
| 2013-03-31 Zev Weiss <zev@bewilderbeest.net> |
| |
| Print io_submit() offsets in decimal. |
| This makes output formatting more consistent with pread()/pwrite(), |
| which print their offset parameters in decimal. |
| |
| * desc.c (sys_io_submit): Change offset output format from %llx to %lld. |
| |
| 2013-03-30 Andreas Schwab <schwab@suse.de> |
| |
| Fix building outside source directory. |
| The file linux/ioctlent.h is generated in the build directory, so |
| "../ioctlent.h" won't find it. |
| |
| * linux/aarch64/ioctlent1.h: Remove "../" from include file name. |
| * linux/powerpc/ioctlent1.h: Likewise. |
| * linux/tile/ioctlent1.h: Likewise. |
| * linux/x32/ioctlent1.h: Likewise. |
| * linux/x86_64/ioctlent1.h: Likewise. |
| * linux/x86_64/ioctlent2.h: Likewise. |
| |
| 2013-03-30 Andreas Schwab <schwab@suse.de> |
| |
| AArch64: Fix printing of long long value. |
| * util.c (printllval): Fix printing of long long values on |
| AArch64. |
| |
| 2013-03-27 Dmitry V. Levin <ldv@altlinux.org> |
| |
| Update PR_* constants. |
| * process.c (prctl_options): Add more PR_* constants from linux/prctl.h. |
| |
| 2013-03-25 Chris Zankel <chris@zankel.net> |
| |
| Add support for the XTENSA architecture. |
| * configure.ac: Add XTENSA to the list of supported architectures. |
| * defs.h: Add XTENSA support. |
| * linux/xtensa/syscallent.h: New file. |
| * linux/xtensa/ioctlent.h.in: Likewise. |
| * process.c (struct_user_offsets): Add XTENSA support. |
| * signal.c (sys_sigreturn): Likewise. |
| * syscall.c (printcall, get_scno, get_syscall_args, |
| get_syscall_result, get_error): Likewise. |
| * util.c (change_syscall): Likewise. |
| |
| 2013-03-22 Denys Vlasenko <vda.linux@googlemail.com> |
| |
| Add example script which builds static (possibly cross-compiled) strace. |
| |
| 2013-03-21 Dmitry V. Levin <ldv@altlinux.org> |
| |
| Use 64-bit versions of stat, readdir and setrlimit functions when available |
| strace already has a mechanism to use fopen64 for output when the 64-bit |
| version of fopen is available on 32-bit architectures. Apply this |
| mechanism for other three functions to make strace fully adopted for |
| 64-bit types. |
| |
| * strace.c (struct_stat, stat_file, struct_dirent, read_dir, |
| struct_rlimit, set_rlimit): New macros. |
| (startup_attach): Use read_dir. |
| (startup_child): Use struct_stat and stat_file. |
| (main): Use struct_rlimit and set_rlimit. |
| |
| 2013-03-20 Dmitry V. Levin <ldv@altlinux.org> |
| |
| Do not use struct dirent in readdir decoding. |
| struct dirent from libc should not be used for umove'ing into because it |
| contains fixed size d_name. |
| |
| * file.c (printdir): Rename to print_old_dirent. |
| [SH64]: Decode using struct kernel_dirent. |
| [!SH64]: Decode using an open-coded struct with 32-bit d_ino and d_off. |
| (sys_readdir): Update. |
| |
| 2013-03-20 Dmitry V. Levin <ldv@altlinux.org> |
| |
| Do not use off_t in sendfile decoding. |
| sendfile parser used to decode off_t* parameter as a pointer to host |
| off_t type. With this change, it is decoded as a pointer to target long |
| type. |
| |
| * io.c (print_off_t): New function. |
| (sys_sendfile): Use it. |
| * linux/aarch64/syscallent1.h: Use sys_sendfile64 for sendfile decoding. |
| * linux/tile/syscallent.h: Likewise. |
| * linux/x32/syscallent.h: Likewise. |
| * linux/x86_64/syscallent.h: Likewise. |
| * linux/hppa/syscallent.h: Use sys_sendfile64 for sendfile64 decoding. |
| * linux/metag/syscallent.h: Correct sendfile syscall name. |
| * linux/or1k/syscallent.h: Likewise. |
| |
| 2013-03-18 Dmitry V. Levin <ldv@altlinux.org> |
| |
| Fix build with older versions of libaio.h. |
| * configure.ac: When libaio.h is available, check for |
| struct iocb.u.c.flags, IO_CMD_PWRITE and IO_CMD_PWRITEV. |
| * desc.c (print_common_flags): Check for HAVE_STRUCT_IOCB_U_C_FLAGS. |
| (sys_io_submit): Check for HAVE_DECL_IO_CMD_PWRITE and |
| HAVE_DECL_IO_CMD_PWRITEV. |
| |
| Fix io_submit decoding. |
| * desc.c (print_common_flags, sys_io_submit): Add missing ", " to |
| SUB_COMMON output, remove extra ", " from SUB_VECTOR output. |
| |
| 2013-03-18 Maxin B. John <maxin.john@enea.com> |
| |
| tests: relax check_prog to allow timeout command provided by busybox. |
| Busybox version of timeout doesn't have --version option. |
| Relax check_prog to handle those cases. |
| |
| * tests/init.sh (check_prog): Use type builtin to check program |
| availability. |
| |
| 2013-03-18 Dmitry V. Levin <ldv@altlinux.org> |
| |
| Reorganize get_regs code, hopefully without functional changes. |
| * syscall.c [I386 || ARM || OR1K || METAG] (ARCH_REGS_FOR_GETREGSET): |
| New macro. |
| (get_regset): Implement for AARCH64, METAG, OR1K and X32. |
| (get_regs) [AARCH64 || METAG || OR1K || X32]: Use it. |
| |
| arm, i386: use PTRACE_GETREGSET if available. |
| * syscall.c [ARM || I386 || X86_64] (get_regset): New function. |
| (get_regs) [ARM || I386 || X86_64]: Use it. |
| |
| Include <sys/uio.h> and <elf.h> on all architectures. |
| * syscall.c: Include <sys/uio.h> and <elf.h> on all architectures. |
| |
| x86-64: enhance PTRACE_GETREGSET test. |
| * syscall.c (get_regs) [X86_64]: Check whether PTRACE_GETREGSET |
| works regardless of the kernel version. |
| |
| x32: use PTRACE_GETREGSET unconditionally. |
| * syscall.c (get_regs) [X32]: Assume that PTRACE_GETREGSET always works |
| regardless of the kernel version. |
| |
| x86-64, x32: do not include linux/ptrace.h unnecessarily. |
| * syscall.c [X86_64 || X32]: Stop including linux/ptrace.h. |
| |
| i386, tile, x32: do not redefine ptrace prototype. |
| * defs.h [I386 || TILE || X32]: Use ptrace prototype from sys/ptrace.h. |
| |
| ptrace: decode note segment descriptor types. |
| * configure.ac (AC_CHECK_HEADERS): Add elf.h. |
| * process.c: Include elf.h. |
| (nt_descriptor_types): New xlat structure. |
| (sys_ptrace): Use it. |
| |
| 2013-03-14 Dmitry V. Levin <ldv@altlinux.org> |
| |
| Update MADV_* constants. |
| * mem.c (madvise_cmds): Add more MADV_* constants from |
| asm-generic/mman-common.h |
| |
| Reported-by: Robin Hack <hack.robin@gmail.com> |
| |
| 2013-03-07 Denys Vlasenko <vda.linux@googlemail.com> |
| |
| Tweaks for -c: fixed setitimer/getitimer hack; optimized call_summary_pers() |
| count_syscall() was calling setitimer/getitimer once in order to find |
| smallest "tick" OS uses in time accounting, in order to use it |
| for syscalls which apparently spent less than that time in syscall. |
| The code assumed that this "tick" is not zero... but it is zero |
| on linux-3.6.11. Which means that this hack doesn't work... |
| |
| At least this change prevents this measurement from being done |
| _repeatedly_, by initializing one_tick to -1, not 0. |
| |
| While at it, added comments in count_syscall() explaining what we are doing. |
| |
| Optimized call_summary_pers() a bit, by eliminating redundant tv -> float |
| conversions, and prevented 0.0/0.0 which was resulting in "% time" |
| being shown as "-nan" if total CPU time spent was 0.000000 |
| (try "strace -c /bin/true"). |
| |
| The code seems to seriously underestimate CPU usage: |
| "strace -c ls -lR /usr/share >/dev/null" shows total time spent |
| in syscalls to be only ~10..20% of what "time ls -lR /usr/share >/dev/null" |
| shows. |
| |
| It might be useful to have a mode where we show wall clock time |
| spent in syscalls, not CPU time. It might also be more accurate. |
| |
| text data bss dec hex filename |
| 245019 676 5708 251403 3d60b strace_old |
| 244923 684 5676 251283 3d593 strace |
| |
| 2013-03-06 Denys Vlasenko <vda.linux@googlemail.com> |
| |
| Open-code isprint(c) and isspace(c) |
| We don't call setlocale, thus we always use C locale. |
| But libc supports various other locales, and therefore |
| its ctype interface is general and at times inefficient. |
| For example, in glibc these macros result in function call, |
| whereas for e.g. isprint(c) just c >= ' ' && c <= 0x7e |
| suffices. |
| |
| By open-coding ctype checks (we have only 4 of them) |
| we avoid function calls, we get smaller code: |
| |
| text data bss dec hex filename |
| 245127 680 5708 251515 3d67b strace_old |
| 245019 676 5708 251403 3d60b strace |
| |
| and we don't link in ctype tables (beneficial for static builds). |
| |
| 2013-03-06 Denys Vlasenko <vda.linux@googlemail.com> |
| |
| Makefile: add commented-out tweak to generate link map. |
| |
| Stop using a large static buffer in getfdpath. |
| text data bss dec hex filename |
| 245075 680 9836 255591 3e667 strace_old |
| 245143 680 5708 251531 3d68b strace |
| |
| 2013-03-05 Denys Vlasenko <vda.linux@googlemail.com> |
| |
| Fix wrongly indented closing curly brace. No code changes. |
| |
| strace_vfprintf: if malloc fails, exit gracefully. |
| |
| 2013-03-05 Dmitry V. Levin <ldv@altlinux.org> |
| |
| Use sysconf(_SC_PAGESIZE) instead of hardcoded PAGE_SHIFT. |
| PAGE_SHIFT couldn't be reliably obtained at compile time, |
| thanks to Chris Metcalf for the hint. |
| |
| * mem.c: Do not include <sys/user.h>. |
| [SH64] Do not include <asm/page.h>. |
| (get_pagesize): New function. |
| (sys_mmap_pgoff, sys_old_mmap_pgoff): Use it. |
| |
| 2013-03-05 Denys Vlasenko <vda.linux@googlemail.com> |
| |
| Emit better message for ERESTARTNOHAND return. |
| |
| Disable STREAMS syscalls for non-SPARC. |
| text data bss dec hex filename |
| 3002 0 1024 4026 fba stream.o.old |
| 1729 0 1024 2753 ac1 stream.o |
| |
| Fix printstrbufarg's address argument to be long, not int. |
| |
| Remove variable tracing_paths and check in pathtrace_match. |
| |
| 2013-03-05 Denys Vlasenko <vda.linux@googlemail.com> |
| |
| Use dynamically-sized selected[] array for -P PATH. |
| While at it, added a small optimization of not remembering |
| the path twice if it happens to be the same. |
| |
| text data bss dec hex filename |
| 245111 680 10860 256651 3ea8b strace_old |
| 245075 680 9804 255559 3e647 strace |
| |
| 2013-03-05 Denys Vlasenko <vda.linux@googlemail.com> |
| |
| metag,or1k: whitesace style fix. no code changes. |
| |
| Assorted fixes to syscallent.h. |
| or1k was missing TM on many memory-related syscalls |
| sys_lookup_dcookie is 3-arg on 64-bit arches, and isn't TF |
| sys_recvmsg is 3-arg on all arches |
| sys_nfsservctl is 3-arg on all arches |
| sys_timerfd_create is 2-arg on all arches |
| sys_[f]truncate64 is 4-arg or 3-arg, never 5-arg |
| truncate64 is TF |
| sys_[l]lseek is TD |
| fstat[64] is TD |
| |
| 2013-03-05 James Hogan <james.hogan@imgtec.com> |
| |
| Add support for Imagination Technologies Meta. |
| Add support for Imagination Technologies Meta architecture (the |
| architecture/ABI is usually referred to as metag in code). The Meta |
| Linux kernel port is in the process of being upstreamed for v3.9 so it |
| uses generic system call numbers. |
| |
| sys_lookup_dcookie writes a filename to buffer argument, so I've set |
| TF flag. |
| nfsservctl appears to be set to sys_ni_syscall in asm-generic/unistd.h |
| so I've left it blank. |
| truncate64/ftruncate64/pread64/pwrite64/readahead have unaligned 64bit |
| args which are packed tightly on metag, so less arguments on metag. |
| fchdir/llseek takes a file descriptor so s/TF/TD/ |
| sync_file_range has 2 64bit args so uses 6 args, so s/4/6/ |
| timerfd_create/msgget/msgctl/msgrcv/semget/segtimedop/semop/shmget/ |
| shmctl/shmat/shmdt/recvmsg/migrate_pages have different number of args. |
| oldgetrlimit is just getrlimit for metag. |
| add TM flag to various memory syscalls. |
| metag doesn't directly use sys_mmap_pgoff for mmap2. |
| prlimit64/process_vm_readv/process_vm_writev take a pid so add TP flag. |
| fanotify_init doesn't appear to take a file descriptor so remove TD. |
| Add kcmp syscall. |
| |
| Cc: Christian Svensson <blue@cmd.nu> |
| |
| 2013-03-01 Denys Vlasenko <vda.linux@googlemail.com> |
| |
| umovestr: speed up check for NUL byte in the fetched word. |
| |
| 2013-03-01 Dmitry V. Levin <ldv@altlinux.org> |
| |
| Fix trace=set regression introduced by commit v4.7-111-g9cbc15b. |
| * syscall.c (qual_syscall, qualify): Pass personality down to |
| qualify_one. |
| * tests/qual_syscall: New test. |
| * tests/Makefile.am (TESTS): Add qual_syscall. |
| |
| 2013-03-01 Chris Metcalf <cmetcalf@tilera.com> |
| |
| tile: handle printllval like x86_64 or powerpc64. |
| Without this fix the tilegx build fails when it hits the new #error |
| about SIZEOF_LONG > 4. |
| |
| * util.c (printllval): Fix printing of long long values on TILE. |
| |
| 2013-02-27 Denys Vlasenko <vda.linux@googlemail.com> |
| |
| Make -b take SYSCALL param, document it in --help and in manpage. |
| To not waste an option letter for just one trick, |
| extend -b to take a parameter: |
| "on which syscalls do you want to detach?". |
| Currently supports only execve. |
| |
| While at it, fixed (by removing non-Linux and stale info) |
| and extended manpage text about -f. |
| |
| 2013-02-26 Dmitry V. Levin <ldv@altlinux.org> |
| |
| Cleanup umoven and umovestr. |
| Cleanup sloppy error handling. |
| |
| First, EFAULT kind of errors from process_vm_readv by itself is not |
| something unusual, so a warning message will not be issued unless a |
| short read is detected. |
| |
| Second, clients of umoven and umovestr are not prepared to detect and |
| handle short reads that can happen in these functions. The most safe |
| way to handle them is to return an error code. |
| |
| * util.c (umoven, umovestr): Cleanup handling of errors coming from |
| process_vm_readv and PTRACE_PEEKDATA. |
| |
| 2013-02-26 Dmitry V. Levin <ldv@altlinux.org> |
| |
| pathtrace: fix umovestr return code check. |
| * pathtrace.c (upathmatch): Only NUL-terminated strings can be |
| path-matched, so fix the umovestr return code check to filter out |
| unsuitable strings. |
| |
| 2013-02-26 Dmitry V. Levin <ldv@altlinux.org> |
| |
| Fix compilation errors uncovered by -Werror=enum-compare. |
| This fixes regression introduced by commit v4.7-111-g9cbc15b. |
| |
| * syscall.c: Merge all nsyscalls* enums into single enum. |
| Likewise merge nerrnos*, nsignals*, and nioctlents* into single enums. |
| |
| 2013-02-26 Denys Vlasenko <vda.linux@googlemail.com> |
| |
| Mass replace error_msg("%s", "literal") -> error_msg("literal") |
| There is no need to print literal strings through "%s". |
| Only untrusted strings such as filenames need that. |
| |
| 2013-02-26 Ben Noordhuis <info@bnoordhuis.nl> |
| |
| Make umoven report success as 0, not >=0, stop returning success on partial reads |
| umoven() uses process_vm_readv() when available but it returns the |
| return value of that syscall, which is the number of bytes copied, |
| while its callers expect it to simply return zero on success. |
| |
| It was causing syscalls that take a user-space argument to print |
| the abbreviated version, e.g.: |
| |
| epoll_ctl(5, EPOLL_CTL_ADD, 10, {...}) |
| |
| Instead of: |
| |
| epoll_ctl(5, EPOLL_CTL_ADD, 10, {EPOLLIN, {u32=10, u64=10}}) |
| |
| * util.c (umoven): Make umove[n] report success as 0, not >=0, |
| stop returning "success" on partial reads. |
| |
| 2013-02-26 Denys Vlasenko <vda.linux@googlemail.com> |
| |
| Assorted NOMMU fixes. |
| With -D, strdup'ing of pathname is necessary only on NOMMU. |
| |
| Don't set skip_startup_execve to 1 if NOMMU and not in daemonized mode |
| (try "strace [-D] -b env echo HI" to see whether we detach on correct execve). |
| |
| Fix test_ptrace_FOO shortcuts on NOMMU to always assume success |
| and _properly_ set all variables. |
| |
| 2013-02-26 Denys Vlasenko <vda.linux@googlemail.com> |
| |
| Shorten help text - no need to show deprecated option -F. |
| |
| 2013-02-23 Denys Vlasenko <vda.linux@googlemail.com> |
| |
| Merge adjacent tprint's. |
| |
| Correct i > MAX_NSYSCALLS commparison: should be i >= MAX_NSYSCALLS. |
| |
| 2013-02-22 Denys Vlasenko <vda.linux@googlemail.com> |
| |
| Fix wrong offset display in dumpstr. |
| BTW, the new code from prev commit is 5 times faster |
| than old one :) |
| |
| 2013-02-22 Denys Vlasenko <vda.linux@googlemail.com> |
| |
| Fix a bug in dumpstr (no null termination). Essentially rewrote dumpstr. |
| This is a 14 year old bug (!). |
| |
| It wasn't biting us merely because outstr[80] was static, thus ended up |
| in bss and whatever was after it "accidentally" provided the NUL byte. |
| When dumpstr was changed to use on-stack buffer, the bug reared its ugly head. |
| |
| This is a rewrite which is smaller and should be significantly faster |
| for _long_ strings. |
| |
| text data bss dec hex filename |
| 244627 680 10860 256167 3e8a7 strace.t9/strace |
| 244563 680 10860 256103 3e867 strace.ta/strace |
| |
| * util.c (dumpstr): Rewrite to be faster and smaller. |
| |
| 2013-02-22 Denys Vlasenko <vda.linux@googlemail.com> |
| |
| Eliminate MAX_QUALS, make qualifier array dynamic. |
| MAX_QUALS was 2048, even though most arches used less than 500 entries |
| in it. MAX_QUALS had to be maintained by hand to be higher than syscall |
| count. It also limited the highest possible fd to track. |
| |
| This change makes qual_flagsN[] arrays start sized to the required minimum |
| (number of syscalls) and grow dynamically if user requested |
| -e read=BIGNUM. As a precaution, BIGNUM should be < 2^15, but this limit |
| can be raised with no cost for normal strace invocations. |
| |
| qual_flags is now a define to qual_vec[current_personality]. |
| |
| As a bonus, this patch aliases sysent, errnoent, signalent, ioctlent |
| names in one-personality arches to their corresponding <foo>0 arrays, |
| removing one indirection level. |
| |
| text data bss dec hex filename |
| 244471 700 12928 258099 3f033 strace.t7/strace |
| 244627 680 10860 256167 3e8a7 strace.t8/strace |
| |
| 2013-02-22 Denys Vlasenko <vda.linux@googlemail.com> |
| |
| Create and use struct_sysent and struct_ioctlent typedefs. |
| This is a preparatory mass replace patch with no code changes. |
| |
| The future change will need to typedef sysent to sysent0, |
| which results in compile failures when "struct sysent" string |
| gets mangled into "struct sysent0". |
| |
| 2013-02-22 Denys Vlasenko <vda.linux@googlemail.com> |
| |
| Use tcp->qual_flg instead of qual_flags[] in verbose() and abbrev() |
| We have hundreds of uses of these macros. |
| Result is more efficient and 1.1 kbyte shorter code: |
| |
| text data bss dec hex filename |
| 245579 700 12928 259207 3f487 strace.t5/strace |
| 244471 700 12928 258099 3f033 strace.t6/strace |
| |
| 2013-02-21 Denys Vlasenko <vda.linux@googlemail.com> |
| |
| Remove unused QUAL_FAULT code (was used by non-Linux code only). |
| |
| 2013-02-21 Denys Vlasenko <vda.linux@googlemail.com> |
| |
| Use uint8_t for qual_flags[] instead of ints. |
| Resulting bss reduction is ~6kbytes: |
| |
| text data bss dec hex filename |
| 245703 700 19072 265475 40d03 strace.t4/strace |
| 245687 700 12928 259315 3f4f3 strace.t5/strace |
| |
| 2013-02-21 Denys Vlasenko <vda.linux@googlemail.com> |
| |
| Eliminate many SCNO_IS_VALID checks. |
| By adding tcp->s_ent pointer tot syscall table entry, |
| we can replace sysent[tcp->scno] references by tcp->s_ent. |
| More importantly, we may ensure that tcp->s_ent is always valid, |
| regardless of tcp->scno value. This allows us to drop |
| SCNO_IS_VALID(tcp->scno) checks before we access syscall |
| table entry. |
| |
| We can optimize (qual_flags[tcp->scno] & QUAL_foo) checks |
| with a similar technique. |
| |
| Resulting code shrink: |
| text data bss dec hex filename |
| 245975 700 19072 265747 40e13 strace.t3/strace |
| 245703 700 19072 265475 40d03 strace.t4/strace |
| |
| * count.c (count_syscall): Use cheaper SCNO_IN_RANGE() check. |
| * defs.h: Add "int qual_flg" and "const struct sysent *s_ent" |
| to struct tcb. Remove "int u_nargs" from it. |
| Add UNDEFINED_SCNO constant which will mark undefined scnos |
| in tcp->qual_flg. |
| * pathtrace.c (pathtrace_match): Drop SCNO_IS_VALID check. |
| Use tcp->s_ent instead of sysent[tcp->scno]. |
| * process.c (sys_prctl): Use tcp->s_ent->nargs instead of tcp->u_nargs. |
| (sys_waitid): Likewise. |
| * strace.c (init): Add compile-time check that DEFAULT_QUAL_FLAGS |
| constant is consistent with init code. |
| * syscall.c (decode_socket_subcall): Use tcp->s_ent->nargs |
| instead of tcp->u_nargs. Set tcp->qual_flg and tcp->s_ent. |
| (decode_ipc_subcall): Likewise. |
| (printargs): Use tcp->s_ent->nargs instead of tcp->u_nargs. |
| (printargs_lu): Likewise. |
| (printargs_ld): Likewise. |
| (get_scno): [MIPS,ALPHA] Use cheaper SCNO_IN_RANGE() check. |
| If !SCNO_IS_VALID, set tcp->s_ent and tcp->qual_flg to default values. |
| (internal_fork): Use tcp->s_ent instead of sysent[tcp->scno]. |
| (syscall_fixup_for_fork_exec): Remove SCNO_IS_VALID check. |
| Use tcp->s_ent instead of sysent[tcp->scno]. |
| (get_syscall_args): Likewise. |
| (get_error): Drop SCNO_IS_VALID check where it is redundant. |
| (dumpio): Drop SCNO_IS_VALID check where it is redundant. |
| Use tcp->s_ent instead of sysent[tcp->scno]. |
| (trace_syscall_entering): Use (tcp->qual_flg & UNDEFINED_SCNO) instead |
| of SCNO_IS_VALID check. Use tcp->s_ent instead of sysent[tcp->scno]. |
| Drop SCNO_IS_VALID check where it is redundant. |
| Print undefined syscall name with undefined_scno_name(tcp). |
| (trace_syscall_exiting): Likewise. |
| * util.c (setbpt): Use tcp->s_ent instead of sysent[tcp->scno]. |
| |
| 2013-02-21 Denys Vlasenko <vda.linux@googlemail.com> |
| |
| ARM: make it one-personality arch. |
| ARM in fact _is_ one personality. |
| |
| We had two personalities for it because it has a handful of |
| syscalls with huge scnos (0x000f00xx). |
| |
| Extending syscall table to have [0x000f0005] index is of course |
| not a good idea. |
| |
| Someone decided to handle that by having a separate personality |
| just for these syscalls. |
| |
| But multi-personality arch does a bit more work in other parts. |
| |
| This patch is another alternative: "move" 0x000f00nn syscalls |
| down to the entries just above last ordinary syscall, |
| by manipulating scno if it falls into the 0x000f00xx range. |
| |
| In order to not worsen genuine undefined scnos' printing, |
| the code remaps scno back to actual value before printing |
| "syscall_NNN" string. |
| |
| * defs.h: Remove multi-reprsonality defines from ARM. |
| * syscall.c (shuffle_scno): New function. |
| (undefined_scno_name): New function. |
| (get_scno): [ARM] Replace personality setting with scno shuffling. |
| (trace_syscall_entering): Print unknown syscall name using |
| undefined_scno_name(). |
| (trace_syscall_exiting): Likewise. |
| * linux/arm/syscallent.h: Add ARM specific syscalls at the end. |
| * linux/arm/errnoent1.h: Deleted. |
| * linux/arm/ioctlent1.h: Deleted. |
| * linux/arm/signalent1.h: Deleted. |
| * linux/arm/syscallent1.h: Deleted. |
| |
| 2013-02-20 Denys Vlasenko <vda.linux@googlemail.com> |
| |
| arm: shorten syscall table for EABI - no point in storing NULL entries. |
| Also, reformatted ARM code in get_scno(), mostly improved comments, |
| without code changes. |
| |
| Use the same style of includes in linux/*/* files. |
| While at it, fix some comments which say |
| "we use i386 syscalls/ioctls/errnos" but in reality |
| common ones are used. |
| |
| 2013-02-19 Denys Vlasenko <vda.linux@googlemail.com> |
| |
| Fix compiler warnings. |
| With constant current_wordsize == 4 and 32-bit longs, |
| gcc was spooked by "1ul << (8 * current_wordsize)" = "1ul << 32". |
| |
| Make such places conditional on SIZEOF_LONG > 4. |
| |
| 2013-02-19 Denys Vlasenko <vda.linux@googlemail.com> |
| |
| Improve comment text. No code changes. |
| |
| 2013-02-19 Denys Vlasenko <vda.linux@googlemail.com> |
| |
| Fix NOMMU + daemonized tracer SEGV. |
| pathname[] was getting destroyed, execve of garbage pathname |
| failing, and to top it off, the tracer's stack was also |
| smashed and trecer segfaulted. |
| |
| * strace.c (exec_or_die): New function. |
| (startup_child): Don't use pathname[] contents after vfork, |
| make a malloced copy instead. Explain "NOMMU + -D bug" |
| and how we work around it. |
| |
| 2013-02-19 Denys Vlasenko <vda.linux@googlemail.com> |
| |
| Make it possible to to do test builds for NOMMU architectures. |
| And while using it, I discovered that -D doesn't work too well |
| on NOMMU. Added a comment about it. |
| |
| 2013-02-19 Denys Vlasenko <vda.linux@googlemail.com> |
| |
| Clean up mmap decoding. |
| Previous code merges too many similar, but different ways |
| of decoding mmap. For example, sys_old_mmap is "params in memory" |
| API... except SH[64], where it is "params in regs", |
| i.e. what sys_mmap ("new mmap") function does on other arches! |
| |
| It's much simpler when every mmap handler has same API regardless |
| of arch. Where API means whether params are in regs or in memory, |
| and whether offset is in bytes, pages, or 4k blocks. |
| |
| Then we just insert correct function pointers into |
| arch syscall tables. |
| |
| It turns out there are four common mmap APIs over |
| all architectures which exist in Linux kernel, |
| and one outlier for S390. |
| |
| A number of mmap decoders were plain wrong in arch tables. |
| For example, BFIN has no old_mmap. It returns ENOSYS. |
| I checked kernel sources for all arches nad fixed the tables. |
| |
| There was dead code for x86_64 for old_mmap: |
| x86_64 has no old_mmap. |
| |
| * mem.c: Refactor mmap functions so that we have five mmap syscall |
| handlers, each with the fixed API (not varying by arch). |
| * pathtrace.c (pathtrace_match): Adjust sys_func == mmap_func checks. |
| * linux/syscall.h: Declare new mmap syscall handler functions. |
| * linux/arm/syscallent.h: mmap2 is sys_mmap_pgoff. |
| * linux/avr32/syscallent.h: mmap is sys_mmap_pgoff. |
| * linux/bfin/syscallent.h: old_mmap is ENOSYS, mmap2 is sys_mmap_pgoff. |
| * linux/hppa/syscallent.h: mmap2 is sys_mmap_4koff. |
| * linux/i386/syscallent.h: mmap2 is sys_mmap_pgoff. |
| * linux/ia64/syscallent.h: mmap2 is sys_mmap_pgoff. |
| * linux/m68k/syscallent.h: mmap2 is sys_mmap_pgoff. |
| * linux/microblaze/syscallent.h: old_mmap is sys_mmap, mmap2 is sys_mmap_pgoff. |
| * linux/mips/syscallent.h: mmap is sys_mmap_4kgoff. |
| * linux/or1k/syscallent.h: mmap2 is sys_mmap_pgoff. |
| * linux/powerpc/syscallent.h: mmap2 is sys_mmap_4kgoff. |
| * linux/s390/syscallent.h: mmap2 is sys_old_mmap_pgoff. |
| * linux/s390x/syscallent.h: mmap is sys_old_mmap and thus has 1 arg. |
| * linux/sh/syscallent.h: old_mmap2 is sys_mmap, mmap2 is sys_mmap_4koff. |
| * linux/sh64/syscallent.h: Likewise. |
| * linux/sparc/syscallent1.h: mmap is TD|TM. |
| * linux/tile/syscallent1.h: mmap2 is sys_mmap_4koff. |
| |
| 2013-02-18 Denys Vlasenko <vda.linux@googlemail.com> |
| |
| Remove unused function sys_mmap64. |
| No wonder that it is unused. |
| It's code looked quite questionable. |
| |
| * mem.c (sys_mmap64): Remove this function. |
| |
| 2013-02-18 Denys Vlasenko <vda.linux@googlemail.com> |
| |
| Remove code which supports systems with long long off_t. |
| While looking at mmap mess, did experimenting in order |
| to figure out what gets used when. |
| |
| Tried building armv4tl, armv5l, armv6l, mips, mipsel, i686, |
| x86_64 and none of they have long long off_t, |
| which isn't suprprising: we aren't using glibc defines |
| which enable that. |
| |
| Moreover, we SHOULD NOT use off_t in syscall decode! |
| Its size depends on libc, not on arch! I.e. it is essentially |
| unpredictable and can even in theory vary on the same arch |
| with different libc. |
| |
| We should use longs or long longs, in a way which matches |
| architectural ABI for the given syscall. There are usually |
| *at most* two permutations, no need to add yet another variable |
| (sizeof(off_t)) to the mix. |
| |
| This change removes almost all HAVE_LONG_LONG_OFF_T conditionals, |
| which will reveal further possible simplifications. |
| |
| * mem.c: Remove code conditional on HAVE_LONG_LONG_OFF_T. |
| As a result, never remap sys_mmap64 to sys_mmap. |
| (print_mmap): Compile unconditionally. |
| (sys_old_mmap): Compile unconditionally. |
| (sys_mmap): Compile unconditionally. |
| * io.c (sys_sendfile): Add a FIXME comment. |
| * file.c: Remove code conditional on HAVE_LONG_LONG_OFF_T. |
| As a result, never remap sys_*stat64 to sys_*stat etc. |
| (sys_truncate): Compile unconditionally. |
| (realprintstat): Likewise. |
| (sys_stat): Likewise. |
| (sys_fstat): Likewise. |
| (sys_lstat): Likewise. |
| * desc.c (printflock): Likewise. |
| |
| 2013-02-18 Denys Vlasenko <vda.linux@googlemail.com> |
| |
| Fixes in "new" mmap. |
| * mem.c (sys_mmap): Ensure unsigned expansion of tcp->u_arg[5]. |
| Add page shift of offset for I386. |
| Use tcp->ext_arg[5] as offset for X32. |
| (sys_old_mmap): [X32] Remove this function, X32 doesn't use is. |
| |
| Preliminary simplifications in mmap functions. |
| * mem.c: Move "define sys_mmap64 sys_mmap" from the top |
| to the only place it affects. |
| (print_mmap): Make offset argument unsigned, for safer implicit conversions. |
| (sys_old_mmap): [IA64] use unsigned narrow_arg[]. |
| Cast u_arg[5] (offset param) to unsigned long, to prevent erroneous signed |
| expansion. |
| |
| 2013-02-17 Denys Vlasenko <vda.linux@googlemail.com> |
| |
| Remove broken HAVE_LONG_LONG conditionals. |
| We use printllval without HAVE_LONG_LONG guards in many places, |
| but define it only if HAVE_LONG_LONG. This means that |
| on !HAVE_LONG_LONG systems we won't build for some time now. |
| |
| * defs.h: Remove HAVE_LONG_LONG guard around LONG_LONG() macro |
| and printllval() function declaration. |
| * util.c: Remove HAVE_LONG_LONG guard around printllval() |
| function definition. |
| (printllval): Add compile-time error check for using wrong |
| if branch. Explain places where we deliberately use mismatched |
| types for printf formats. |
| |
| 2013-02-17 Denys Vlasenko <vda.linux@googlemail.com> |
| |
| Use explicit long type instead of off_t. |
| * file.c (sys_lseek): Use long instead of off_t. |
| |
| Merge two identical tables. |
| * defs.h: Declare whence_codes[]. |
| * desc.c: Delete static whence[]. |
| (printflock[64]): Use whence_codes. |
| * file.c: Make whence_codes[] non-static. |
| Add SEEK_DATA and SEEK_HOLE to them. |
| |
| 2013-02-17 Denys Vlasenko <vda.linux@googlemail.com> |
| |
| Remove wrong x32-specific lseek. |
| Testing confirmed what I suspected: x32 lseek uses kernel-sized |
| (i.e. wide) long for offset parameter. |
| |
| * file.c: Delete sys_lseek32. |
| * linux/syscall.h: Likewise. |
| * linux/x32/syscallent1.h: Likewise. |
| * test/x32_lseek.c: New file. |
| |
| 2013-02-17 Denys Vlasenko <vda.linux@googlemail.com> |
| |
| Fix SEGV in lseek. |
| I found hard way why the code was using "_whence" name. |
| |
| * file.c: Rename whence[] to whence_codes[]. |
| (sys_lseek): Fix printxval() to use whence_codes[]. |
| (sys_lseek32): Likewise. |
| |
| 2013-02-17 Denys Vlasenko <vda.linux@googlemail.com> |
| |
| Comment inner workings of sys_[l]lseek. |
| The code doesn't look fully correct to me, but I need to experiment |
| on actual x32 machine before I start "fixing" things. |
| For now, add comments, and optimize out one tprints() call... |
| |
| * file.c (sys_lseek): Rename '_whence' as 'whence'. |
| Merge printing of ", " into subsequent tprintf. |
| (sys_lseek32): Likewise. |
| (sys_llseek): Likewise. |
| |
| 2013-02-17 Denys Vlasenko <vda.linux@googlemail.com> |
| |
| Cosmetic fixes to syscall tables, no code changes. |
| |
| 2013-02-16 Denys Vlasenko <vda.linux@googlemail.com> |
| |
| Make linux/mips/syscallent.h smaller. |
| * linux/mips/syscallent.h: Remove trailing empty elements. |
| Compactify huge stretches of NULL elements in the middle. |
| |
| Simple optimization in get_error. |
| * defs.h: Define SCNO_IN_RANGE(scno) macro. |
| * syscall.c (get_error): Change return type to void. |
| Use SCNO_IN_RANGE instead of SCNO_IS_VALID. |
| (trace_syscall_exiting): Stop checking get_error() return value. |
| |
| Mass rename of SCNO_IN_RANGE define to SCNO_IS_VALID. |
| |
| Finish prefixing regs struct names with arch_ |
| * defs: Rename regs -> sparc_regs. |
| * signal.c (sys_sigreturn): Use new variable name. |
| * syscall.c: Rename regs -> sparc_regs, regs -> avr32_regs. |
| (getrval2): Use new variable names. |
| (printcall): Likewise. |
| |
| 2013-02-15 Denys Vlasenko <vda.linux@googlemail.com> |
| |
| Use the same type for i386_regs on 32-bit and 64-bit x86. |
| * defs.h: Stop including <asm/ptrace.h> for x86. |
| Change i386_regs from "struct pt_regs" to "struct user_regs_struct". |
| * syscall.c: Likewise. |
| |
| Fix build error on Tile. |
| * syscall.c (get_scno): [TILE] Remove TCB_WAITEXECVE check, |
| it is never true on Tile, and stopped compiling when |
| TCB_WAITEXECVE define was removed for Tile. |
| |
| 2013-02-15 Denys Vlasenko <vda.linux@googlemail.com> |
| |
| x86: zero-extend 32-bit args in syscall entry instead of sign-extension. |
| Zero-extension is slightly more common that sign-extension: |
| all pointers are zero-extended, and some other params are unsigned. |
| |
| Whereas signed ones (fds, pids, etc) are often treated as |
| _32-bit ints_ even by kernel, so just unconditionally casting |
| such tcp->u_arg[N] to int works. |
| |
| * syscall.c (get_syscall_args): [X86] Zero-extend 32-bit args |
| instead of sign-extension. |
| |
| 2013-02-15 Denys Vlasenko <vda.linux@googlemail.com> |
| |
| Macroize conditional signed widening operation. |
| * defs.h: Define widen_to_long() macro. |
| * signal.c (sys_kill): Use it instead of open-coding it. |
| (sys_tgkill): Use widen_to_long() on pids. |
| * resource.c (decode_rlimit): Formatting fix. |
| |
| 2013-02-15 Denys Vlasenko <vda.linux@googlemail.com> |
| |
| A better handling of current_wordsize. |
| On x86_64: |
| text data bss dec hex filename |
| 435661 26628 47424 509713 7c711 strace_old |
| 435501 26612 47440 509553 7c671 strace_new_clever_wordsize |
| |
| On x32 and arm it should be even better, current_wordsize becomes |
| a constant there. |
| |
| * defs.h: Declare current_wordsize as a variable if needed, |
| else declare as a constant define. |
| Remove declatation of personality_wordsize[]. |
| * syscall.c: Make personality_wordsize[] static. |
| Declare current_wordsize as a variable if needed. |
| (set_personality): Set current_wordsize only if non-constant. |
| |
| 2013-02-15 Denys Vlasenko <vda.linux@googlemail.com> |
| |
| Remove unnecessary "return 0" statements. |
| * util.c (change_syscall): Remove dummy "return 0"s. |
| |
| 2013-02-14 Denys Vlasenko <vda.linux@googlemail.com> |
| |
| x86: fix required kernel version for GETREGSET. |
| * syscall.c (get_regs): [X86] Use GETREGSET only if kernel >= 2.6.35 |
| |
| Whitespace fix, no code changes. |
| |
| 2013-02-14 Christian Svensson <blue@cmd.nu> |
| |
| Add support for the OpenRISC 1000 platform. |
| * configure.ac: Added or1k architecture.. |
| * defs.h: Added or1k to use register reading system. |
| * linux/or1k/ioctlent.h.in: Use i386 ioctls. |
| * linux/or1k/syscallent.h: New file. |
| * process.c: Added or1k register defs to struct_user_offsets[]. |
| * syscall.c: Added or1k_io iovec for or1k GETREGSET, |
| regset structure for or1k. |
| (printcall): Added handling for or1k. |
| (get_regs): Likewise. |
| (get_scno): Likewise. |
| (get_syscall_args): Likewise. |
| (get_syscall_result): Likewise. |
| (get_error): Likewise. |
| * util.c (change_syscall): Added dummy handling for or1k. |
| * system.c (sys_or1k_atomic): New function (or1k specific syscall). |
| |
| 2013-02-14 Denys Vlasenko <vda.linux@googlemail.com> |
| |
| [X86] Use ptrace(PTRACE_GETREGSET, NT_PRSTATUS) to get registers. |
| Unlike PTRACE_GETREGS, this new method detects 32-bit processes |
| reliably, without checking segment register values which |
| are undocumented and aren't part of any sort of API. |
| While at it, also fixed x32 detection to use __X32_SYSCALL_BIT, |
| as it should have been from the beginning. |
| |
| * defs.h: Declare os_release and KERNEL_VERSION. |
| * strace.c: Make os_release non-static, remove KERNEL_VERSION define. |
| * syscall.c: New struct i386_user_regs_struct, |
| static union x86_regs_union and struct iovec x86_io. |
| (printcall): Use i386_regs or x86_64_regs depending on x86_io.iov_len. |
| (get_regs): On x86 and kernels 2.6.30+, use PTRACE_GETREGSET, |
| on earlier kernels fall back to old method. |
| (get_scno): [X86] Determine personality based on regset size |
| on scno & __X32_SYSCALL_BIT. |
| (syscall_fixup_on_sysenter): Use i386_regs or x86_64_regs depending |
| on x86_io.iov_len. |
| (get_syscall_args): Likewise. |
| (get_error): Likewise. |
| |
| 2013-02-13 Denys Vlasenko <vda.linux@googlemail.com> |
| |
| Rename some register statics by prefixing their names with arch. |
| This makes it easier to grep for them. |
| |
| * syscall.c: Rename variables: |
| r0 -> bfin_r0,alpha_r0,sh_r0. |
| a3 -> mips_a3. |
| r2 -> mips_r2. |
| (get_scno): Use new variable names. |
| (get_syscall_result): Likewise. |
| (get_error): Likewise. |
| |
| 2013-02-13 Denys Vlasenko <vda.linux@googlemail.com> |
| |
| Factor out code to check addr, fetch and print siginfo. |
| * defs.h: Declare new function printsiginfo_at(tcp, addr). |
| * process.c (sys_waitid): Use printsiginfo_at(). |
| (sys_ptrace): Likewise. |
| * signal.c: (printsiginfo_at): Implement this new function. |
| (sys_rt_sigsuspend): Use printsiginfo_at(). |
| (sys_rt_sigtimedwait): Likewise. |
| |
| Decode struct iov in PTRACE_GET/SETREGSET. |
| * process.c (sys_ptrace): Decode struct iov in PTRACE_GET/SETREGSET. |
| |
| 2013-02-12 Denys Vlasenko <vda.linux@googlemail.com> |
| |
| Unify representations of struct user fields for subarchitectures. |
| * process.c: Unify MIPS and LINUX_MIPSN32, and SH and SH64 parts of |
| struct_user_offsets[]. |
| |
| Add start_code and start_data members of struct user. |
| * process.c: Add start_code and start_data members of struct user |
| in struct_user_offsets[], where appropriate. |
| |
| Remove hacks for old kernels for architectures which require new kernels |
| * util.c (change_syscall): For MICROBLAZE, replace code |
| with dummy "return 0" and a comment explaining why that is ok |
| for this architecture. |
| |
| 2013-02-12 Denys Vlasenko <vda.linux@googlemail.com> |
| |
| Remove stray syscall result reading code on syscall entry for s390. |
| This is a leftover from sysenter/sysexit split. |
| I can't run-test it, but from code inspection it seems to be correct. |
| |
| * syscall.c (get_scno): Remove stray syscall result reading for s390[x]. |
| |
| 2013-02-12 Denys Vlasenko <vda.linux@googlemail.com> |
| |
| Deobfuscate definitions of struct user offsets. |
| The maze of ifdefs/ifndefs was scaring new contributors. |
| Format it so that every arch has its own ifdef block. |
| |
| * process.c: Deobfuscate definitions of struct user offsets. |
| |
| 2013-02-12 Denys Vlasenko <vda.linux@googlemail.com> |
| |
| Remove hacks for old kernels for architectures which require new kernels |
| * defs.h: Do not define TCB_WAITEXECVE for AARCH64. |
| * util.c (change_syscall): For AARCH64 and X32, replace code |
| with dummy "return 0" and a comment explaining why that is ok |
| for these architectures. |
| |
| Remove old kernel hacks for architectures which require new kernels. |
| * defs.h: Do not define TCB_WAITEXECVE for AVR32, BFIN and TILE. |
| * util.c (change_syscall): For AVR32, BFIN and TILE, replace code |
| with dummy "return 0" and a comment explaining why that is ok |
| for these architectures. |
| |
| Handle recv[m]msg for non-native 32-bit personality syscalls. |
| * net.c (printmsghdr): If current_wordsize is 4 and long is wider than it, |
| read 32-bit struct msghdr and expand it into a native one before using it. |
| (printmmsghdr): Likewise for struct mmsghdr. |
| |
| 2013-02-12 Denys Vlasenko <vda.linux@googlemail.com> |
| |
| Fix is_negated_errno() check for X32. |
| X32's return value is 64-bit. We were truncating it to 32-bit long |
| before checking for -errno. |
| |
| * syscall.c (is_negated_errno_x32): New function. |
| (get_error): Use is_negated_errno_x32 for X32 architecture. |
| |
| 2013-02-12 Denys Vlasenko <vda.linux@googlemail.com> |
| |
| Remove unused / ambiguously used defines. |
| We sometimes use LINUXSPARC and sometimes (more often) |
| use "defined(SPARC) || defined(SPARC64)". Better to use |
| one construct consistently. |
| LINUX_MIPS64 is altogether unused. |
| |
| * defs.h: Remove LINUXSPARC and LINUX_MIPS64 defines. |
| Move PTRACE_xxx compat defines up, before arch-specific |
| machinery. Use defined(SPARC) || defined(SPARC64) |
| instead of LINUXSPARC. |
| * file.c: Use defined(SPARC) || defined(SPARC64) instead of LINUXSPARC. |
| * signal.c: Likewise. |
| |
| 2013-02-11 Denys Vlasenko <vda.linux@googlemail.com> |
| |
| Preparatory patch for "new" x86 personality detection. |
| * syscall.c: Move PT_FLAGS_COMPAT define to its only user, get_scno(). |
| Rename arm_regs_union's fields to names less likely to collide with |
| system defines. |
| (get_regs): Use sizeof(arm_regs_union) instead of sizeof(aarch64_regs). |
| This should be the same, but htis way it's cleaner. |
| Remove __X32_SYSCALL_MASK and use __X32_SYSCALL_BIT instead. |
| Explain 64-bit check in X32 build better. |
| |
| 2013-02-09 Dmitry V. Levin <ldv@altlinux.org> |
| |
| Fix sigaltstack decoder. |
| strace used to hang when decoding sigaltstack called with invalid |
| stack_t pointers because of mishandling umove() return code. |
| |
| * signal.c (print_stack_t): Handle unfetchable stack_t properly. |
| Change return type to void. |
| (sys_sigaltstack): Update print_stack_t() usage. |
| |
| Reported-by: kawillia@ucalgary.ca |
| |
| 2013-02-09 Mike Frysinger <vapier@gentoo.org> |
| |
| Fix decoding of sysctl() when oldval fields are NULL. |
| If you call glibc's syscall wrapper like so: |
| static int name[] = { CTL_NET, NET_IPV4, NET_IPV4_LOCAL_PORT_RANGE }; |
| int buffer[2] = { 32768, 61000 }; |
| size_t size = sizeof(buffer); |
| sysctl(name, 3, 0, 0, buffer, size); |
| (note that oldval/oldlenp are NULL). |
| |
| The current strace code complains like so: |
| _sysctl({{CTL_NET, NET_IPV4, NET_IPV4_LOCAL_PORT_RANGE, 38}, 3, process_vm_readv: Bad address |
| (nil), 0, 0x7fffe23c3960, 8}) = -1 EACCES (Permission denied) |
| |
| Since passing NULL for the old values is valid, handle that explicitly. |
| This also simplifies the code a bit by splitting up the handling of the |
| new and old args so that we only handle the new args once. |
| |
| Now the output looks like: |
| _sysctl({{CTL_NET, NET_IPV4, NET_IPV4_LOCAL_PORT_RANGE, 38}, 3, NULL, 0, 0x7fff8c0c91b0, 8) = -1 EACCES (Permission denied) |
| |
| * system.c (sys_sysctl): Check if info.oldval is NULL first. Move the |
| processing of oldlen/info.newval/info.newlen out so they always get |
| executed. Fix the format strings so we use %lu for unsigned long rather |
| than a mix of %ld and %lu. |
| |
| 2013-02-08 Denys Vlasenko <vda.linux@googlemail.com> |
| |
| If we are on a glibc system, assume it's at least glibc 2.1. |
| It is not likely anyone uses glibc older that that: |
| glibc 2.1.1 was released in 1999 |
| |
| * net.c: Remove test for glibc >= 2.1. |
| * signal.c: Remove code which is compiled only for glibc < 2.1. |
| * util.c: Likewise. |
| |
| 2013-02-08 Denys Vlasenko <vda.linux@googlemail.com> |
| |
| S390: stop using needlessly static long pc variable. |
| * syscall.c: Remove "static long pc" variable. |
| (get_scno): Use an automatic long variable instead of a static. |
| |
| Dying suddenly with abort() is rude, avoid if possible. |
| * file.c (sys_utime): Don't call abort() if wordsize is strange. |
| Instead, warn user about it. |
| * desc.c (printflock): Use the same message string as in sys_utime. |
| |
| Remove vestigial hacks around non-Linux struct sigactions. |
| * signal.c: Stop using __sighandler_t glibc'ism. Remove SA_HANDLER macro. |
| Explain why we can't use "sa_handler" as a field name. |
| (sys_sigaction): Use __sa_handler instead of SA_HANDLER macro. |
| (sys_rt_sigaction): Likewise. |
| |
| 2013-02-08 Denys Vlasenko <vda.linux@googlemail.com> |
| |
| Optimize AArch64 handling of 32-bit personality. |
| By putting aarch64_regs and arm_regs into a union, |
| register copying is eliminated. |
| No need to check and change personality on syscall exit. |
| |
| * defs.h: Remove unused NUM_ARM_REGS define. Fix indentation. |
| * syscall.c: Put aarch64_regs and arm_regs into a union. |
| (update_personality): Shorten bitness message. |
| (printcall): Add commented-out PC printing. |
| (get_regs): Remove now-unnecessary 64-to-32 bits register copying. |
| (get_syscall_result): Drop personality changing code. |
| |
| 2013-02-07 Denys Vlasenko <vda.linux@googlemail.com> |
| |
| Rename some register statics by prefixing their names with arch. |
| This makes it easier to grep for them. |
| |
| * syscall.c: Make IA64's r8, r10 global variables static. |
| Rename variables: |
| r8,r10 -> ia64_r8,ia64_r10. |
| d0 -> m68k_d0. |
| a3 -> alpha_a3. |
| r28 -> hppa_r28. |
| r9 -> sh64_r9. |
| r10 -> cris_r10. |
| r3 -> microblaze_r3. |
| (get_scno): Use new variable names. |
| (syscall_fixup_on_sysenter): Likewise. |
| (get_syscall_result): Likewise. |
| (get_error): Likewise. |
| |
| 2013-02-06 Denys Vlasenko <vda.linux@googlemail.com> |
| |
| Rename ARM's regs structure to arm_regs. |
| Compile-tested. |
| |
| * defs.h: Rename regs structure to arm_regs. |
| * syscall.c: Likewise. |
| (printcall): Use new name instead of old one. |
| (get_regs): Likewise. |
| (get_scno): Likewise. |
| (get_syscall_args): Likewise. |
| (get_error): Likewise. |
| * signal.c (sys_sigreturn): Likewise. |
| |
| 2013-02-06 Denys Vlasenko <vda.linux@googlemail.com> |
| |
| Stop needlessly using static variable. |
| * syscall.c: Remove static long psr. |
| (get_scno): Use local psr variable. |
| (get_syscall_result): Likewise. |
| |
| 2013-02-06 Denys Vlasenko <vda.linux@googlemail.com> |
| |
| Shortcut tests for fork/exec syscalls. |
| This change should speed up strace by a tiny bit. |
| |
| More importantly, it makes it much more clear that |
| fork and exec fixups are not necessary for any reasonably |
| recent kernels. IOW: syscall_fixup_for_fork_exec() and its callees |
| are all dead code. |
| |
| * defs.h: Declare new need_fork_exec_workarounds flag variable. |
| * strace.c: Define need_fork_exec_workarounds flag variable. |
| (test_ptrace_setoptions_followfork): Return 0/1 as success/fail indicator. |
| (test_ptrace_setoptions_for_all): Likewise. |
| (init): Set need_fork_exec_workarounds to TRUE if needed. |
| * syscall.c: Rename internal_syscall() to syscall_fixup_for_fork_exec(). |
| (trace_syscall_entering): Call syscall_fixup_for_fork_exec() only if |
| need_fork_exec_workarounds == TRUE. |
| (trace_syscall_exiting): Likewise. |
| |
| 2013-02-05 Ben Noordhuis <info@bnoordhuis.nl> |
| |
| Improve perf_event_open argument decoding. |
| * configure.ac (AC_CHECK_HEADERS): Add linux/perf_event.h. |
| * desc.c [HAVE_LINUX_PERF_EVENT_H]: Include <linux/perf_event.h>. |
| (perf_event_open_flags): New xlat structure. |
| (sys_perf_event_open): New function. |
| * linux/dummy.h (sys_perf_event_open): Remove. |
| * linux/syscall.h (sys_perf_event_open): New prototype. |
| |
| 2013-02-05 Chris Metcalf <cmetcalf@tilera.com> |
| |
| tile: fix merge skew with new get_regs architecture. |
| * defs.h [TILE]: Declare clear_regs(), get_regs() and get_regs_error. |
| * syscall.c (get_regs) [TILE]: Fix merge skew. |
| (printcall) [TILE]: fix a compiler warning about pt_reg_t in |
| a printf expression. |
| |
| 2013-02-05 Bernhard Reutner-Fischer <rep.dot.nop@gmail.com> |
| |
| mount: decode MS_NOSEC. |
| * system.c (MS_NOSEC): Define. |
| (mount_flags): Add MS_NOSEC. |
| |
| mmap: decode MAP_UNINITIALIZED. |
| * mem.c (mmap_flags): Add MAP_UNINITIALIZED. |
| |
| 2013-02-05 Dmitry V. Levin <ldv@altlinux.org> |
| |
| Print 64-bit instruction pointers zero padded. |
| * syscall.c (printcall): Print 64-bit instruction pointers zero padded. |
| |
| x86_64: fix compilation warning introduced in previous commit. |
| * syscall.c (printcall): Cast x86_64_regs.rip to the type being printed. |
| |
| 2013-02-05 Denys Vlasenko <vda.linux@googlemail.com> |
| |
| Simple bug fix for x86_86. |
| * syscall.c (printcall): Use x86_64_regs.rip, not x86_64_regs.ip. |
| |
| 2013-02-05 Chris Metcalf <cmetcalf@tilera.com> |
| |
| Add tilegx support to strace. |
| tilegx support has been in the kernel since 3.0. |
| In addition, fix some issues with the tilepro support already |
| present in strace, primarily the decision to use the |
| <asm/unistd.h> numbering space for system calls. |
| |
| * defs.h [TILE]: Include <asm/ptrace.h> and provide an extern |
| struct pt_regs tile_regs for efficiency. Provide compat 32-bit |
| personality via SUPPORTED_PERSONALITIES, PERSONALITY0_WORDSIZE, |
| PERSONALITY1_WORDSIZE, and DEFAULT_PERSONALITY. |
| * linux/tile/errnoent1.h: New file, includes linux/errnoent.h. |
| * linux/tile/ioctlent1.h: New file, includes linux/ioctlent.h. |
| * linux/tile/signalent1.h: New file, includes linux/signalent.h. |
| * linux/tile/syscallent.h: Update with new asm-generic syscalls. |
| The version previously committed was the from the first tile patch |
| to LKML, which subsequently was changed to use <asm-generic/unistd.h>. |
| * linux/tile/syscallent1.h: Copy from linux/tile/syscallent.h. |
| * mem.c (addtileflags) [TILE]: use %ld properly for a "long" variable. |
| * process.c [TILE]: Choose clone arguments correctly and properly |
| suppress all "struct user" related offsets in user_struct_offsets. |
| * signal.c [TILE]: Use tile_regs not upeek. |
| * syscall.c (update_personality) [TILE]: Print mode. |
| (PT_FLAGS_COMPAT) [TILE]: Provide if not in system headers. |
| (tile_regs) [TILE]: Define 'struct pt_regs' variable to hold state. |
| (get_regs) [TILE]: use PTRACE_GETREGS to set tile_regs rather than using upeek. |
| (get_scno) [TILE]: Set personality. |
| (get_syscall_args) [TILE]: Use tile_regs. |
| (get_syscall_result) [TILE]: Update tile_regs. |
| (get_error) [TILE]: Use tile_regs. |
| (printcall) [TILE]: Print pc. |
| (arg0_offset, arg1_offset, restore_arg0, restore_arg1) [TILE]: |
| Properly handle tile call semantics and support tilegx. |
| |
| 2013-02-05 Denys Vlasenko <vda.linux@googlemail.com> |
| |
| Small optimization for SPARC[64] get_scno. |
| * syscall.c: Remove static unsigned long trap veriable. |
| (get_scno): Use local trap variable. |
| |
| Do not compile getrval2() if not needed. |
| * syscall.c (getrval2): Do not compile it for architetures where |
| it isn't ever used. |
| |
| 2013-02-05 Denys Vlasenko <vda.linux@googlemail.com> |
| |
| Optimize out PTRACE_PEEKUSER with -i. |
| strace -i was fetching PC with a separate PEEKUSER |
| despite having GETREGS data: |
| |
| ptrace(PTRACE_GETREGS, 22331, 0, 0x8087f00) = 0 |
| ptrace(PTRACE_PEEKUSER, 22331, 4*EIP, [0x80dd7b7]) = 0 |
| write(3, "[080dd7b7] ioctl(0, SNDCTL_TMR_T"..., 82) = 82 |
| ptrace(PTRACE_SYSCALL, 22331, 0, SIG_0) = 0 |
| |
| Now it does this: |
| |
| ptrace(PTRACE_GETREGS, 22549, 0, 0x8087ea0) = 0 |
| write(3, "[080dd7b7] ioctl(0, SNDCTL_TMR_T"..., 82) = 82 |
| ptrace(PTRACE_SYSCALL, 22549, 0, SIG_0) = 0 |
| |
| Analogous improvement in sys_sigreturn() is also implemented. |
| |
| * defs.h: Declare extern struct pt_regs regs for SPARC[64] and ARM. |
| Declare clear_regs(), get_regs() and get_regs_error flag variable. |
| * strace.c (trace): Call get_regs(pid) as soon as we know the tcb |
| and that it is stopped. |
| * syscall.c (get_regs): New function. Used to fetch registers early, |
| just after tracee has stopped. |
| (printcall): Move it here from util.c. Use global regs.REG data, |
| if available on the arch, instead of re-fetching it. |
| (get_scno): Use global regs.REG data. |
| (get_syscall_result): Likewise. |
| * signal.c (sys_sigreturn): Likewise. |
| * util.c (printcall): Moved to syscall.c. |
| |
| 2012-12-15 Stanislav Brabec <sbrabec@suse.cz> |
| |
| Fix sys_semtimedop decoding on s390x. |
| The s390 and s390x pass semtimedop arguments differently from other |
| architectures. sys_semtimedop parser was fixed for s390 by commit |
| v4.6-177-ge0f5fd8, and s390x requires the same fix. |
| |
| * linux/ipc.c (sys_semtimedop): Fix timespec decoding on s390x. |
| |
| 2012-12-08 Dmitry V. Levin <ldv@altlinux.org> |
| |
| Fix *xattr decoding. |
| * file.c (print_xattr_val): Do not attempt to decode a zero sized array. |
| Fixes RH#885233. |
| |
| 2012-12-08 Stanislav Brabec <sbrabec@suse.cz> |
| |
| sys_semtimedop: fix timeval argument index in wrapped call. |
| Looking at the implementation of wrapped semtimedop() call inside glibc |
| and kernel, I started to believe that timeval should be located in |
| tcp->u_arg[4] and not tcp->u_arg[5]. Fortunately, tcp->u_arg[5] now |
| works correctly as well, due to side effects of decode_ipc_subcall(). |
| |
| declaration in header: |
| int semtimedop(semid, *sops, nsops, *timeout); |
| 0 1 2 3 |
| |
| sys_ipc arguments in glibc on all patforms except s390*: |
| semid, (int) nsops, 0, CHECK_N (sops, nsops), timeout |
| 0 1 2 3 4 |
| We have to use indexes: 0 3 1 4 |
| |
| sys_ipc arguments on s390*: |
| semid, (int) nsops, timeout, sops |
| 0 1 2 3 |
| We have to use indexes: 0 3 1 2 |
| |
| * ipc.c (sys_semtimedop) [!S390]: Fix timeval argument index in |
| indirect_ipccall case. |
| |
| 2012-12-06 John Spencer <maillist-strace@barfooze.de> |
| |
| Fix glibc version checks. |
| * util.c: Check if __GLIBC__ is defined before using it. |
| * signal.c: Likewise. Fix __GLIBC_MINOR__ checks. |
| |
| 2012-11-29 James Hogan <james.hogan@imgtec.com> |
| |
| Add state argument to change_syscall and fix SPARC. |
| Add a state argument to change_syscall() so that SPARC can modify that |
| instead of read-modify-writing the whole register set. This function is |
| always called within an arg_setup/arg_finish_change sequence which on |
| certain architectures like SPARC will also be doing a read-modify-write. |
| This prevents the second write (from arg_finish_change) from undoing the |
| effects of the change_syscall call. |
| |
| * util.c (change_syscall): Move below definition of arg_setup_state. |
| Add state argument. |
| [SPARC || SPARC64] Change to set state->u_regs[U_REG_G1] rather than |
| read-modify-writing it with PTRACE_GETREGS and PTRACE_SETREGS. |
| (setbpt, clearbpt): Pass state argument to change_syscall. |
| |
| 2012-11-12 Steve McIntyre <steve.mcintyre@linaro.org> |
| |
| Add support for tracing 32-bit ARM EABI binaries on AArch64. |
| * defs.h [AARCH64]: Copy in the definition of arm_pt_regs and the |
| accessor macros, so it's possible to build on AArch64 without |
| ARM system headers. Set SUPPORTED_PERSONALITIES to 2. |
| Define PERSONALITY0_WORDSIZE and PERSONALITY1_WORDSIZE. |
| Set DEFAULT_PERSONALITY to 1. |
| * linux/aarch64/errnoent1.h: New file, includes generic errnoent.h. |
| * linux/aarch64/ioctlent1.h: New file, includes generic ioctlent.h. |
| * linux/aarch64/signalent1.h: New file, includes generic signalent.h. |
| * linux/aarch64/syscallent1.h: Rename from linux/aarch64/syscallent.h. |
| * linux/aarch64/syscallent.h: New file, includes arm/syscallent.h. |
| * syscall.c [AARCH64]: Define aarch64_regs. |
| (update_personality) [AARCH64]: Add debug output. |
| (get_scno) [AARCH64]: Determine if we're in ARM or AArch64 mode by |
| checking the size of the returned uio structure from PTRACE_GETREGSET |
| and interpret the structure accordingly. |
| (get_syscall_result): Likewise. |
| (get_syscall_args): Merge the AArch64 and ARM sections so that on |
| AArch64 we can fall back to supporting the ARM personality. |
| (get_error): Likewise. |
| |
| 2012-11-12 Dmitry V. Levin <ldv@altlinux.org> |
| |
| Move asm-generic ioctl definitions to linux/ioctlent.h.in. |
| * linux/ioctlent.h.in: Add asm-generic ioctl entries from all |
| linux/*/ioctlent.h.in files. |
| * linux/bfin/ioctlent.h.in: Remove asm-generic ioctl entries. |
| * linux/i386/ioctlent.h.in: Likewise. |
| * linux/powerpc/ioctlent.h.in: Likewise. |
| * linux/s390/ioctlent.h.in: Likewise. |
| * linux/sparc/ioctlent.h.in: Likewise. |
| |
| 2012-10-27 Dmitry V. Levin <ldv@altlinux.org> |
| |
| Filter out redundant "*32" ioctl entries. |
| * linux/ioctlent-filter.awk: New file. |
| * Makefile.am: Use it. |
| * linux/ioctlent.h.in: Removed redundant "*32" entries. |
| |
| 2012-10-26 Dmitry V. Levin <ldv@altlinux.org> |
| |
| Enhance quotactl decoding. |
| * quota.c (sys_quotactl): Decode 2nd syscall argument using printpath. |
| * pathtrace.c (pathtrace_match): Add quotactl support. |
| * linux/*/syscallent.h: Add TF flag to quotactl entry. |
| |
| 2012-10-26 Steve McIntyre <steve.mcintyre@linaro.org> |
| |
| Add AArch64 support to strace. |
| AArch64 has been included in linux from 3.7 onwards. |
| Add support for AArch64 in strace, tested on linux in a simulator. |
| |
| * configure.ac: Support AArch64. |
| * defs.h [AARCH64]: Include <sys/ptrace.h>, define TCB_WAITEXECVE. |
| * ipc.c (indirect_ipccall): Support AArch64. |
| * process.c (struct_user_offsets): Likewise. |
| * syscall.c [AARCH64]: Include <asm/ptrace.h>, <sys/uio.h>, and |
| <elf.h>. Define struct user_pt_regs regs. |
| (get_scno, get_syscall_result): Support AArch64 using PTRACE_GETREGSET. |
| (get_syscall_args, get_error): Support AArch64. |
| * linux/aarch64/ioctlent.h.in: New file. |
| * linux/aarch64/syscallent.h: New file, based on linux 3.7 version of |
| asm-generic/unistd.h. |
| |
| 2012-10-26 Steve McIntyre <steve.mcintyre@linaro.org> |
| |
| linux: add new errno values for EPROBE_DEFER and EOPENSTALE. |
| New definitions match updates in Linux 3.4 and Linux 3.5 respectively. |
| |
| * linux/errnoent.h (ERRNO_517): Change to EPROBE_DEFER. |
| (ERRNO_518): Change to EOPENSTALE. |
| |
| 2012-10-26 Namhyung Kim <namhyung.kim@lge.com> |
| |
| Add -e trace=memory option. |
| Add a new 'memory' category for tracing memory mapping related syscalls. |
| |
| Affected syscalls are: break, brk, get_mempolicy, madvise, mbind, |
| migrate_pages, mincore, mlock, mlockall, mmap, move_pages, mprotect, |
| mremap, msync, munlock, munlockall, munmap, remap_file_pages, and |
| set_mempolicy. |
| |
| * defs.h (TRACE_MEMORY): New macro. |
| * syscall.c (lookup_class): Handle trace=memory option. |
| * strace.1: Document it. |
| * linux/alpha/syscallent.h: Add TM flag to memory mapping related syscalls. |
| * linux/arm/syscallent.h: Likewise. |
| * linux/avr32/syscallent.h: Likewise. |
| * linux/bfin/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.h: Likewise. |
| * linux/powerpc/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/tile/syscallent.h: Likewise. |
| * linux/x32/syscallent.h: Likewise. |
| * linux/x86_64/syscallent.h: Likewise. |
| |
| 2012-09-28 Mike Frysinger <vapier@gentoo.org> |
| |
| x32: add 64bit annotation too. |
| Since someone can invoke these entry points directly with syscall(), |
| at least decode their name and show that they're 64bit versions rather |
| than just showing syscall_###. |
| |
| * linux/x32/syscallent.h: Sync all missing entries below 312 with x86_64. |
| |
| 2012-09-28 Dmitry V. Levin <ldv@altlinux.org> |
| |
| Ignore fflush(3) return value. |
| strace used to honor fflush(3) return value in trace_syscall_entering |
| which resulted to tracees not being PTRACE_SYSCALL'ed which in turn |
| caused nasty hangups like this one: |
| |
| $ strace -o'|:' pwd |
| |:: Broken pipe |
| |
| There is little strace can do in case of fflush(3) returning EOF, and |
| hangup is certainly not the best solution for the issue. |
| |
| * syscall.c (trace_syscall_entering): Ignore fflush(3) return value. |
| |
| 2012-09-28 Dmitry V. Levin <ldv@altlinux.org> |
| |
| Use perror_msg instead of perror. |
| * signal.c (sys_sigreturn): Use perror_msg instead of perror. |
| * strace.c (tprintf, tprints, detach, startup_attach): Likewise. |
| * syscall.c (get_scno): Likewise. |
| * util.c (umoven, umovestr): Likewise. |
| |
| 2012-09-27 Denys Vlasenko <vda.linux@googlemail.com> |
| |
| process_vm_readv may return ESRCH if tracee was killed, don't complain. |
| Discovered by running test/sigkill_rain under strace. |
| |
| * util.c (umoven): Do not emit error message if process_vm_readv |
| fails with ESRCH. |
| (umovestr): LikeWise. |
| |
| 2012-09-13 Denys Vlasenko <vda.linux@googlemail.com> |
| |
| Trivial fixes, no code changes. |
| * strace.c: Fix compiler warning message about tgkill - we don't use it. |
| Fix indentation of preprocessor directives. |
| (trace): Remove outdated comment. |
| |
| 2012-08-24 Dmitry V. Levin <ldv@altlinux.org> |
| |
| Always check setreuid return code. |
| * strace.c (startup_child): Check setreuid return code. |
| |
| 2012-08-24 Mike Frysinger <vapier@gentoo.org> |
| |
| x32: update {g,s}etsockopt syscall numbers. |
| Starting with linux 3.6 (and backported to earlier kernels), these two |
| syscalls have changed numbers (moving from native to compat entry points). |
| Update the strace syscall list accordingly. |
| |
| * linux/x32/syscallent.h: Move setsockopt from 54 to 541, and move |
| getsockopt from 55 to 542. |
| |
| 2012-08-16 Dmitry V. Levin <ldv@altlinux.org> |
| |
| Decode file type returned by getdents system call. |
| * file.c (sys_getdents): Decode d_type in unabbreviated mode. |
| |
| 2012-07-12 Dmitry V. Levin <ldv@altlinux.org> |
| |
| Close pipe and wait for the pipe process termination. |
| In case of normal strace termination, when the trace output is |
| redirected to a file or a pipe, close it and wait for the pipe |
| process termination. |
| |
| * strace.c (main): Before normal exit, close shared_log when it |
| differs from stderr, and wait for popen_pid termination. |
| |
| 2012-07-10 Denys Vlasenko <vda.linux@googlemail.com> |
| |
| Enable usage of PTRACE_SEIZE. |
| * defs.h: Define USE_SEIZE to 1. Remove PTRACE_SEIZE_DEVEL |
| and PTRACE_EVENT_STOP1. |
| * strace.c (ptrace_attach_or_seize): Replace PTRACE_SEIZE_DEVEL |
| with 0. |
| (trace): Do not check for PTRACE_EVENT_STOP1. |
| |
| 2012-06-05 Mike Frysinger <vapier@gentoo.org> |
| |
| x32: update syscall table. |
| This syncs with the syscall table as it is in linux 3.4. |
| |
| * linux/x32/syscallent.h (59): Fix comment typo. |
| (78): Add missing getdents entry. |
| (174): Delete create_module entry (not in the kernel). |
| (181, 182, 183, 184, 185): Add missing entries. |
| (524, 536, 539, 540): Fix spacing. |
| |
| 2012-05-18 Denys Vlasenko <vda.linux@googlemail.com> |
| |
| Merge adjacent printing operations in a few places. |
| * file.c (sys_readahead): Merge tprints() with following printllval(). |
| (sys_ftruncate64): Likewise. |
| (sys_fadvise64): Likewise. |
| (sys_fadvise64_64): Likewise. |
| (sys_fallocate): Merge tprints() with following tprintf(). |
| |
| 2012-05-16 Denys Vlasenko <vda.linux@googlemail.com> |
| |
| Use %d printf format instead of %i everywhere. |
| * loop.c (loop_ioctl): Use %d instead of %i. |
| * mtd.c (mtd_ioctl): Likewise. |
| |
| Fix a few goofs in sys_sysctl() |
| * system.c (sys_sysctl): Cast pointer to long, not size_t, |
| when we intend to use it as an address. Set oldlen to 0 prior |
| to reading into it - we want to have deterministic result |
| if read fails. |
| |
| 2012-05-16 Denys Vlasenko <vda.linux@googlemail.com> |
| |
| Stop using non-standard %Zu and %Zd formats for size_t printing. |
| The documented formats are %zu and %zd, but since our (normally disabled) |
| "fast" printf code doesn't support those too, I convert them to %lu and %ld. |
| |
| * bjm.c (sys_query_module): Convert %Zd usages to %lu. |
| * system.c (sys_sysctl): Likewise. |
| |
| 2012-05-15 Denys Vlasenko <vda.linux@googlemail.com> |
| |
| Remove outdated comment about suspending new tracees. |
| We no longer track parent/child relationship between tracees. |
| Therefore, we no longer suspend new tracee until parent is seen |
| exiting form [v]fork/clone. The comment is obsolete. |
| |
| * strace.c (trace): Remove outdated comment. |
| |
| 2012-05-15 Denys Vlasenko <vda.linux@googlemail.com> |
| |
| Make sure current_wordsize and PERSONALITY0_WORDSIZE are ints in all arches |
| On 64bit systems with a single personality, they used to be sizeof(long), |
| which has type "long", not "int", which complicates printf formats. |
| |
| * defs.h: Ensure that PERSONALITY0_WORDSIZE;s tyoe is int. |
| This in turn makes sure current_wordsize is also an int. |
| * count.c (call_summary): Revert the change which added cast to int. |
| |
| 2012-05-15 Dmitry V. Levin <ldv@altlinux.org> |
| |
| Add configure --enable-gcc-Werror option. |
| * configure.ac: New option --enable-gcc-Werror. |
| |
| Make x86-64 build free of artificial warnings. |
| * signal.c (sys_sigreturn): Do not issue "no sys_sigreturn" warning |
| on X86_64. |
| |
| 2012-05-14 Dmitry V. Levin <ldv@altlinux.org> |
| |
| Fix kernel release string parsing. |
| * strace.c (get_os_release): Handle "X.Y-something" utsname.release |
| strings properly. |
| |
| Reported-by: Bryce Gibson <bryce@gibson-consulting.com.au> |
| |
| 2012-05-14 Denys Vlasenko <vda.linux@googlemail.com> |
| |
| On clearing "breakpopint", restore syscall number too. |
| This fixes Fedora bug 659382. |
| Low risk: this code is not supposed to be used on any non-acient kernel. |
| |
| * util.c (clearbpt): Restore syscall number too. |
| |
| 2012-05-05 Mike Frysinger <vapier@gentoo.org> |
| |
| util: fix building when glibc has a stub process_vm_readv. |
| If you have a newer glibc which provides process_vm_readv, but it is built |
| against older kernel headers which lack __NR_process_vm_readv, the library |
| will contain a stub implementation that just returns ENOSYS. Autoconf |
| checks for this case explicitly and will declare it as unavailable. So we |
| end up in a case where the headers provide the prototype, but autoconf has |
| not defined HAVE_PROCESS_VM_READV, so we hit the same build failure again: |
| |
| util.c:738:16: error: static declaration of 'process_vm_readv' follows non-static declaration |
| /usr/include/bits/uio.h:58:16: note: previous declaration of 'process_vm_readv' was here |
| |
| So rename our local function to something unique, and add a define so the |
| callers all hit the right place. |
| |
| * util.c (strace_process_vm_readv): Rename from process_vm_readv. |
| (process_vm_readv): Define to strace_process_vm_readv. |
| |
| 2012-05-03 Dmitry V. Levin <ldv@altlinux.org> |
| |
| doc: describe documentation policy. |
| * README-hacking: Describe documentation policy. |
| |
| 2012-05-02 Dmitry V. Levin <ldv@altlinux.org> |
| |
| maint: post-release administrivia. |
| * NEWS: Add header line for next release. |
| |
| Prepare for 4.7 release. |
| * configure.ac: Version 4.7. |
| * debian/changelog: 4.7-1. |
| * strace.spec: 4.7-1. |
| |
| Fix build with <linux/loop.h> from 2.6.18 kernel headers. |
| * configure.ac: Check for LO_FLAGS_AUTOCLEAR and LO_FLAGS_PARTSCAN |
| declarations. |
| * loop.c (loop_flags_options): Use LO_FLAGS_AUTOCLEAR and |
| LO_FLAGS_PARTSCAN only when appropriate declarations are available. |
| (loop_ioctl): Use LOOP_SET_CAPACITY only when it is defined. |
| |
| 2012-05-01 Dmitry V. Levin <ldv@altlinux.org> |
| |
| * vsprintf.c: Check for USE_CUSTOM_PRINTF earlier. |
| |
| Remove duplicate names from CREDITS. |
| * .mailmap: Merge email addresses. |
| * CREDITS.in: Remove a duplicate name. |
| |
| 2012-05-01 Dmitry V. Levin <ldv@altlinux.org> |
| |
| tests: raise strace check timeout to 60 seconds. |
| * tests/init.sh (check_timeout): New variable. |
| * tests/ptrace_setoptions: Use it. |
| * tests/strace-f: Likewise. |
| |
| Reported-by: Mike Frysinger <vapier@gentoo.org> |
| |
| 2012-05-01 Dmitry V. Levin <ldv@altlinux.org> |
| |
| Update STA_* constants. |
| * time.c (adjtimex_status): Add STA_NANO, STA_MODE, and STA_CLK. |
| * NEWS (Improvements): Mention it. |
| |
| NEWS: update for release. |
| * NEWS (Improvements): Mention recent recvmsg/recvmmsg decoders |
| enhancements. |
| (Portability): Add a recommendation for the minimum Linux kernel |
| version to use. |
| |
| Make printing of utsname.domainname more portable. |
| * configure.ac: Check for struct utsname.domainname field. |
| * process.c (sys_uname): Print utsname.domainname when the field is |
| available. |
| |
| 2012-05-01 Dmitry V. Levin <ldv@altlinux.org> |
| |
| Fix recvmmsg decode: do not show more data than actually returned. |
| This change complements recent fix for recvmsg decoding. |
| |
| * net.c (printmmsghdr): Add msg_len parameter to pass down to do_msghdr. |
| When this parameter is zero, pass mmsghdr.msg_len to do_msghdr instead. |
| (decode_mmsg): Add msg_len parameter, pass it down to printmmsghdr. |
| (sys_sendmmsg): Call decode_mmsg with msg_len == (unsigned long) -1L. |
| (sys_recvmmsg): Call decode_mmsg with msg_len == 0. |
| |
| 2012-05-01 Dmitry V. Levin <ldv@altlinux.org> |
| |
| Remove recently introduced use of ULONG_MAX. |
| * io.c: Remove limits.h inclusion. |
| (tprint_iov): Use "(unsigned long) -1L" instead of "ULONG_MAX". |
| * net.c: Remove limits.h inclusion. |
| (printmmsghdr, sys_sendmsg): Use "(unsigned long) -1L" instead of |
| "ULONG_MAX". |
| |
| 2012-04-28 Denys Vlasenko <vda.linux@googlemail.com> |
| |
| Enable printing of uts.domainname in uname syscall. |
| * process.c (sys_uname): Enable printing of uts.domainname |
| |
| 2012-04-28 Denys Vlasenko <vda.linux@googlemail.com> |
| |
| Fix printstr's len parameter width. |
| We often pass syscall params and other long-sized values |
| as printstr(len). Truncating them to int may be a bad thing. |
| |
| * defs.h: Change len parameter's type from int to long in |
| string_quote and printstr function declarations. |
| * util.c (string_quote): Special-case only len==-1, not all len<0. |
| (printstr): Likewise. |
| |
| 2012-04-28 Denys Vlasenko <vda.linux@googlemail.com> |
| |
| Fix recvmsg decode: do not show more data than actually returned. |
| I noticed that "hostname -d" talks over netlink and gets 20 bytes |
| of response, but we show entire 1024 bytes of iov. |
| This changes fixes that. |
| |
| * defs.h: New function tprint_iov_upto. |
| * io.c (tprint_iov_upto): Definition of this function. |
| (tprint_iov): Call tprint_iov_upto. |
| * net.c (do_msghdr): Add data_size parameter, pass it down to tprint_iov_upto. |
| (printmsghdr): Add data_size parameter, pass it down to do_msghdr. |
| (printmmsghdr): Call do_msghdr with data_size==ULONG_MAX. |
| (sys_sendmsg): Call printmsghdr with data_size==ULONG_MAX. |
| (sys_recvmsg): Call printmsghdr with data_size==tcp->u_rval. |
| |
| 2012-04-27 Dmitry V. Levin <ldv@altlinux.org> |
| |
| Package strace-log-merge. |
| * strace.spec (%files): Add strace-log-merge. |
| |
| 2012-04-27 Mike Frysinger <vapier@gentoo.org> |
| |
| NEWS: clarify & fix typo. |
| |
| 2012-04-27 Mike Frysinger <vapier@gentoo.org> |
| |
| Cast current_wordsize to an int. |
| On 64bit systems with a single personality, we see: |
| count.c: In function 'call_summary': |
| count.c:223:5: warning: format '%u' expects type 'unsigned int', |
| but argument 3 has type 'long unsigned int' |
| |
| Since on multi-personality systems this is an array of ints, cast |
| the multiplication to an int and update the printf format. |
| |
| * count.c (call_summary): Change %u to %d and cast first argument to int. |
| |
| 2012-04-20 Dmitry V. Levin <ldv@altlinux.org> |
| |
| Update NEWS for upcoming 4.7 release. |
| * NEWS: Update for 4.7 release. |
| |
| Sync strace.spec and debian/ with packages. |
| * debian/changelog: Sync with 4.5.20-2.3. |
| * debian/control: Likewise. |
| * strace.spec: Sync with 4.6-2. |
| |
| 2012-04-18 Mike Frysinger <vapier@gentoo.org> |
| |
| Decode /dev/loop ioctls. |
| Needed to debug some losetup failures, and it's easier when you can see |
| what the kernel is getting vs what you think you're sending, so add some |
| decoders for those ioctls. |
| |
| * loop.c: New file. |
| * Makefile.am (strace_SOURCES): Add loop.c. |
| * defs.h (loop_ioctl): New prototype. |
| (string_quote): Likewise. |
| * ioctl.c (ioctl_decode): Call loop_ioctl when code is 'L'. |
| * util.c (string_quote): Remove static keyword. |
| |
| 2012-04-18 H.J. Lu <hongjiu.lu@intel.com> |
| |
| x32: add ia32 support. |
| * Makefile.am (EXTRA_DIST): Add linux/x32/errnoent1.h, |
| linux/x32/ioctlent1.h, linux/x32/signalent1.h and |
| linux/x32/syscallent1.h. |
| * configure.ac: Remove AC_GNU_SOURCE, obsoleted by |
| AC_USE_SYSTEM_EXTENSIONS. |
| * defs.h (SUPPORTED_PERSONALITIES): Set to 2 for X32. |
| (PERSONALITY1_WORDSIZE): Set to 4 for X32. |
| * file.c (stat64): New struct for X32. |
| (sys_lseek32): New function for X32. |
| (stat64): Undef. |
| (sys_fstat64): Likewise. |
| (sys_stat64): Likewise. |
| (realprintstat64): New function for X32. |
| (sys_fstat64): Likewise. |
| (sys_stat64): Likewise. |
| * mem.c (sys_old_mmap): New function for X32. |
| * pathtrace.c (pathtrace_match): Also check sys_old_mmap for X32. |
| * syscall.c (update_personality): Add X32 support. |
| (get_scno): Support currpers == 1 for X32. |
| * linux/syscall.h (sys_lseek32): New function prototype for X32. |
| * linux/x32/errnoent1.h: New file. |
| * linux/x32/ioctlent1.h: Likewise. |
| * linux/x32/signalent1.h: Likewise. |
| * linux/x32/syscallent1.h: Likewise. |
| |
| 2012-04-17 H.J. Lu <hongjiu.lu@intel.com> |
| |
| Cast clock_t type to unsigned long long. |
| * resource.c (sys_times): Cast clock_t type to unsigned long long. |
| * signal.c (printsiginfo): Likewise. |
| |
| 2012-04-16 Denys Vlasenko <vda.linux@googlemail.com> |
| |
| Add custom (faster) vfprintf implementation (disabled by default) |
| * defs.h: Declare strace_vfprintf either as a alias to vfprintf |
| or as a bona fide function. USE_CUSTOM_PRINTF define controls whether |
| we use strace_vfprintf. By default, we don't. |
| * strace.c (tprintf): Call strace_vfprintf instead of vfprintf. |
| * vsprintf.c: New file, implements strace_vfprintf. |
| |
| 2012-04-16 Denys Vlasenko <vda.linux@googlemail.com> |
| |
| Stop using %h[h]u format specifiers. |
| This is needed for simplified printf, and reduces code size a bit. |
| |
| * block.c (block_ioctl): Cast the value to unsinged and use %u |
| instead of using %hu. |
| * desc.c (sys_io_cancel): Likewise. |
| * resource.c (sys_sysinfo): Likewise. |
| |
| 2012-04-16 Denys Vlasenko <vda.linux@googlemail.com> |
| |
| Trivial speed optimization. |
| * strace.c (tprints): Use fputs_unlocked instead of fputs. |
| |
| 2012-04-16 H.J. Lu <hongjiu.lu@intel.com> |
| |
| Fix a problem with sys_lseek on x32. |
| * file.c (sys_lseek): Use MIPS-n32 variant also for x32 |
| |
| 2012-04-16 H.J. Lu <hongjiu.lu@intel.com> |
| |
| Add x32 support to strace. |
| X32 support is added to Linux kernel 3.4. In a nutshell, x32 is x86-64 with |
| 32bit pointers. At system call level, x32 is also identical to x86-64, |
| as shown by many changes like "defined(X86_64) || defined(X32)". The |
| main differerence bewteen x32 and x86-64 is off_t in x32 is long long |
| instead of long. |
| |
| This patch adds x32 support to strace. Tested on Linux/x32. |
| |
| * configure.ac: Support X32. |
| * defs.h: Set SUPPORTED_PERSONALITIES to 3 for X86_64, |
| Set PERSONALITY2_WORDSIZE to 4 for X86_64. |
| Add tcb::ext_arg for X32. |
| * file.c (stat): New for X32. |
| (sys_lseek): Use 64-bit version for X32. |
| (printstat64): Check current_personality != 1 for X86_64. |
| * ipc.c (indirect_ipccall): Check current_personality == 1 |
| for X86_64. |
| * mem.c (sys_mmap64): Also use tcp->u_arg for X32. Print NULL |
| for zero address. Call printllval for offset for X32. |
| * pathtrace.c (pathtrace_match): Don't check sys_old_mmap for |
| X32. |
| * process.c (ARG_FLAGS): Defined for X32. |
| (ARG_STACK): Likewise. |
| (ARG_PTID): Likewise. |
| (change_syscall): Handle X32. |
| (struct_user_offsets): Support X32. |
| (sys_arch_prctl): Likewise. |
| * signal.c: Include <asm/sigcontext.h> for X32. |
| (SA_RESTORER): Also define for X32. |
| * syscall.c (update_personality): Support X32 for X86_64. |
| (is_restart_error): Likewise. |
| (syscall_fixup_on_sysenter): Likewise. |
| (get_syscall_args): Likewise. |
| (get_syscall_result): Likewise. |
| (get_error): Likewise. |
| (__X32_SYSCALL_BIT): Define if not defined. |
| (__X32_SYSCALL_MASK): Likewise. |
| (get_scno): Check DS register value for X32. Use |
| __X32_SYSCALL_MASK on X32 system calls. |
| * util.c (printllval): Use ext_arg for X32. |
| (printcall): Support X32. |
| (change_syscall): Likewise. |
| (arg0_offset): Likewise. |
| (arg1_offset): Likewise. |
| * Makefile.am (EXTRA_DIST): Add linux/x32/errnoent.h, |
| linux/x32/ioctlent.h.in, linux/x32/signalent.h, |
| linux/x32/syscallent.h, linux/x86_64/errnoent2.h, |
| linux/x86_64/ioctlent2.h, linux/x86_64/signalent2.h and |
| linux/x86_64/syscallent2.h. |
| * linux/x32/errnoent.h: New. |
| * linux/x32/ioctlent.h.in: Likewise. |
| * linux/x32/signalent.h: Likewise. |
| * linux/x32/syscallent.h: Likewise. |
| * linux/x86_64/errnoent2.h: Likewise. |
| * linux/x86_64/ioctlent2.h: Likewise. |
| * linux/x86_64/signalent2.h: Likewise. |
| * linux/x86_64/syscallent2.h: Likewise. |
| |
| 2012-04-16 H.J. Lu <hongjiu.lu@intel.com> |
| |
| Restore tcb::u_lrval; fix lseek on MIPS-n32. |
| Linux kernel v3.4 adds x32 support. Both x32 and n32 use 64bit offset |
| for lseek parameter and return value. We need u_lrval to handle it |
| properly. Also we shouldn't check HAVE_LONG_LONG_OFF_T for n32 lseek. |
| This patch fixes it properly and prepares lseek for x32. |
| |
| * defs.h (tcb): Restore tcb::u_lrval field, RVAL_Lfoo constants. |
| Set RVAL_MASK to 7. |
| * file.c (sys_lseek): Print 64bit offset and return RVAL_LUDECIMAL |
| for n32. |
| * syscall.c (get_error): Set u_lrval for MIPS-n32. |
| (trace_syscall_exiting): Handle RVAL_Lfoo return value types. |
| |
| 2012-04-06 Mike Frysinger <vapier@gentoo.org> |
| |
| Decode mtd ioctls. |
| I got tired of figuring out mtd structures (which show up a lot |
| in the embedded space), so add decoders for those ioctls. |
| |
| * defs.h (mtd_ioctl): New prototype. |
| (print_loff_t): Likewise. |
| * io.c (print_loff_t): Delete static keyword |
| * ioctl.c (ioctl_decode): Call mtd_ioctl when code is 'M'. |
| * Makefile.am (strace_SOURCES): Add mtd.c. |
| (EXTRA_DIST): Add linux/mtd-abi.h. |
| * mtd.c: New file. |
| * linux/mtd-abi.h: New file. |
| |
| 2012-04-05 Mike Frysinger <vapier@gentoo.org> |
| |
| Fix indefinite hang on no-mmu systems. |
| The ptrace setoptions code will fork a child which goes to sleep and |
| expects the parent to continue on to do tests. Unfortunately, this |
| does not work on no-mmu systems as fork() is actually vfork() and any |
| vforked children will hang the parent until it exits or execs. |
| |
| We might be able to make this test work on no-mmu systems with a bit |
| of work, but easier to just disable this for the release so it works |
| now. |
| |
| * strace.c (test_ptrace_setoptions_for_all): Return if strace_vforked. |
| |
| 2012-03-29 Denys Vlasenko <vda.linux@googlemail.com> |
| |
| Makefile.am: whitespace fix. |
| |
| 2012-03-27 Anton Blanchard <anton@samba.org> |
| |
| powerpc: Add syscall entries for direct socket system calls. |
| * linux/powerpc/syscallent.h: Add direct socket system calls. |
| |
| 2012-03-26 Dmitry V. Levin <ldv@altlinux.org> |
| |
| qual_syscall: fix potential NULL dereference. |
| Fix regression introduced by commit |
| c1371ebc400fe9578908beca87f2bf407daf1506 |
| |
| * syscall.c (qual_syscall): Handle null sys_name. |
| |
| Reported-by: Fr. Br. George <george@altlinux.org> |
| |
| 2012-03-26 Dmitry V. Levin <ldv@altlinux.org> |
| |
| strace-log-merge: fix file suffix calculation. |
| * strace-log-merge: Quote file prefix to fix file suffix calculation. |
| |
| Reported-by: Denys Vlasenko <vda.linux@googlemail.com> |
| Suggested-by: Andreas Schwab <schwab@linux-m68k.org> |
| |
| 2012-03-26 Denys Vlasenko <vda.linux@googlemail.com> |
| |
| Remove unreachable code. |
| * strace.c (process_opt_p_list): Remove unreachable code. |
| |
| manpage: remove false info about -p being limited to 32 processes. |
| |
| Tweak help text and manpage (added -In to manpage) |
| |
| 2012-03-25 Dmitry V. Levin <ldv@altlinux.org> |
| |
| printstr: check for potential integer overflow. |
| * util.c (printstr): Check for potential integer overflow during outstr |
| buffer size calculation. |
| |
| Robustify parsing of numbers from strings. |
| * defs.h (string_to_uint): New prototype. |
| * util.c (string_to_uint): New function. |
| * strace.c (error_opt_arg): New function. |
| (process_opt_p_list): Use string_to_uint instead of atoi. |
| Terminate in case of invalid process id. |
| (init): Use string_to_uint instead of atoi. |
| Use error_opt_arg in case of invalid option argument. |
| * syscall.c (qual_syscall, qual_signal, qual_desc): Use string_to_uint |
| instead of atoi. |
| |
| strace-log-merge: enhance usage error diagnostics. |
| * strace-log-merge: Add --help option. Check number of arguments. |
| Issue an error message when no strace output was merged. |
| |
| configure.ac: sort lists and use m4_normalize to ease maintenance. |
| * configure.ac (AC_CHECK_FUNCS, AC_CHECK_HEADERS, AC_CHECK_MEMBERS, |
| AC_CHECK_DECLS): Sort lists, use m4_normalize. |
| |
| 2012-03-23 Denys Vlasenko <vda.linux@googlemail.com> |
| |
| Simple optimizations. |
| Why open-coding isdigit is a good idea? |
| |
| Before: call __ctype_b_loc |
| movzbl (%ebx),%edx |
| mov (%eax),%eax |
| testb $0x8,0x1(%eax,%edx,2) |
| je lbl |
| |
| After: movzbl (%eax),%edx |
| sub $0x30,%edx |
| cmp $0x9,%dl |
| ja lbl |
| |
| text data bss dec hex filename |
| 236869 704 18944 256517 3ea05 strace.before |
| 236719 700 18944 256363 3e96b strace |
| |
| * defs.h: Alias sigemptyset to __sigemptyset on glibc. |
| * syscall.c (qual_syscall): Open-code isdigit. |
| (qual_desc): Likewise. |
| (qual_signal): Open-code isdigit. Remove string copying |
| which was done for no apparent reason. |
| |
| 2012-03-23 Denys Vlasenko <vda.linux@googlemail.com> |
| |
| Reorder declarations in defs.h. No code changes. |
| * defs.h: Reorder declarations (such as: keep all printing functions together). |
| |
| 2012-03-22 Denys Vlasenko <vda.linux@googlemail.com> |
| |
| Simplify current tcp switching and current column handling. |
| Instead of using "static FILE *outf and static unsigned int curcol" |
| to cache current outfile and its position, we can simply |
| remember current tcb and use its ->outf and ->curcol. |
| This allows to drop numerous "tcp->curcol = curcol" ops in trace(). |
| |
| Turns out we can't drop "static FILE *outf", but now its role is |
| a bit clearer: it newer changes after init, stays == stderr or |
| opened to shared log (which may be the same thing if neither -o |
| nor -ff was specified). Let's rename it then. |
| |
| text data bss dec hex filename |
| 236953 704 18944 256601 3ea59 strace.before.prev.commit |
| 236905 704 18944 256553 3ea29 strace.before |
| 236869 704 18944 256517 3ea05 strace |
| |
| * strace.c: Replace curcol static variable by struct tcb *current_tcp. |
| Rename static FILE *outf to shared_log (since it no longer caches tcp->outf). |
| (ptrace_restart): Use current_tcp->curcol instead of curcol. |
| (tprintf): Check current_tcp != NULL instead of outf != NULL. |
| Use current_tcp->outf instead of outf, current_tcp->curcol instead of curcol. |
| (tprints): Likewise. |
| (line_ended): Likewise. |
| (printleader): Switch current tcb by "current_tcp = tcp" istead of |
| assignments to outf and curcol. |
| (droptcb): Set current_tcp to NULL if we dropped it. |
| (startup_child): Rename outf to shared_log. |
| (init): Likewise. |
| (cleanup): Likewise. |
| (trace): Simplify current tcp switching and current column handling. |
| |
| 2012-03-22 Denys Vlasenko <vda.linux@googlemail.com> |
| |
| Make threaded execve handling code more reabable and somewhat simpler. |
| * strace.c (droptcb): Remove outfname check in "outfname && followfork >= 2" - |
| with recent changes, followfork >= 2 check guarantees that outfile |
| was specified, and _is already opened_. |
| (trace): Move tcb existence check before threaded execve handling. |
| This allows to remove tcp != NULL checks in threaded execve handling. |
| Rewrite threaded execve handling code to be less indented, |
| keeping the same logic. |
| |
| 2012-03-21 Denys Vlasenko <vda.linux@googlemail.com> |
| |
| simple cleanups in defs.h. No logic changes. |
| * defs.h: Move offsetof macro definition into "libc stuff" section. |
| Renumber TCB_foo constants (smaller constants -> sometimes smaller code). |
| Remove uoff macro. |
| * process.c: Move uoff macro here (sole user). |
| |
| Show "+++ exited..." with -C. |
| * strace.c (trace): Show "+++ exited..." with -C too. |
| Save tcp->curcol after PTRACE_LISTEN failure too, just in case. |
| |
| Slight tweak to qemu_multiarch_testing scripts. |
| |
| 2012-03-21 Denys Vlasenko <vda.linux@googlemail.com> |
| |
| Replace reprinting decision logic. |
| After this change, we no longer need to decide when we need |
| to set TCB_REPRINT, and when we don't: it's never needed :) |
| |
| Well, almost. That pesky pid-changing execve needs special treatment. |
| If not it, it'd be possible to nuke TCB_REPRINT... |
| |
| While at it, fix a case of mishandled -C. |
| |
| * strace.c (printleader): Do not set TCB_REPRINT. |
| (trace): Set TCB_REPRINT only for execve with changing pid. |
| Fix mishandling of -C. |
| * syscall.c (trace_syscall_entering): Do not clear TCB_REPRINT. |
| (trace_syscall_exiting): Replace reprinting decision logic. |
| Remove call to printargs(): it is known to just return 0 here. |
| |
| 2012-03-21 Denys Vlasenko <vda.linux@googlemail.com> |
| |
| Report some ptrace failures; nuke tcp->ptrace_errno. |
| Report some (not all) ptrace errors, namely, |
| errors on ptrace restart operations. |
| |
| Before: 10533 sendto(-1, 0x804895e, 17, 0, NULL, 0 <unfinished ...> |
| After: 10533 sendto(-1, 0x804895e, 17, 0, NULL, 0 <ptrace(SYSCALL):No such process> |
| |
| This tells user that strace failed to let sendto syscall |
| to be entered - process was dead at that point of time. |
| It is (marginally) better than to always say "<unfinished ...>" |
| |
| While at it, patch removes tcp->ptrace_errno. |
| I added it many months ago, and it looks that after all |
| it is not needed for ptrace error detection: I failed to execute |
| a single existing code path which is accessible |
| through that variable only. |
| |
| * defs.h: Remove struct tcp::ptrace_errno field. |
| * strace.c (ptrace_restart): Emit message to log on error. |
| (printleader): Remove "if (printing_tcp->ptrace_errno)..." code. |
| (trace): Remove !tcp->ptrace_errno check, it's always true. |
| |
| 2012-03-20 Denys Vlasenko <vda.linux@googlemail.com> |
| |
| Eliminate redundant checks of res variable. |
| * syscall.c (trace_syscall_entering): Eliminate redundant checks of res variable. |
| (trace_syscall_exiting): Likewise. |
| |
| Rename POWERPC-specific static variable result to ppc_result. |
| * syscall.c: Rename POWERPC-specific static variable result to ppc_result. |
| |
| Remove redundant checks in syscall entry/exit, rename badly named function |
| * syscall.c (syscall_enter): Rename to get_syscall_args. |
| Document its return values. |
| (trace_syscall_entering): Don't check get_syscall_args() return |
| value for 0, it never returns that. |
| (syscall_fixup_on_sysexit): Make it return void. |
| (trace_syscall_exiting): Fix up syscall_fixup_on_sysexit() |
| call site accordingly. |
| |
| Trivial tweaks. No logic changes. |
| * process.c (sys_ptrace): Remove unneeded line wrapping. |
| * syscall.c (trace_syscall_entering): Use tprints() instead of tprintf(). |
| |
| Make ptrace_restart() static. No code changes. |
| * defs.h: Remove ptrace_restart() declaration. |
| * strace.c (ptrace_restart): Move its definition here. |
| * util.c (ptrace_restart): Remove its definition. |
| |
| 2012-03-20 Dmitry V. Levin <ldv@altlinux.org> |
| |
| Do not include limits.h unnecessarily. |
| * ioctl.c: Remove limits.h inclusion left after the reverted change. |
| |
| 2012-03-20 Denys Vlasenko <vda.linux@googlemail.com> |
| |
| Partially revert last change. |
| Thank you Dmitry for spotting it. |
| |
| * ioctl.c (compare): Partially revert last change - the new |
| comparison logic was buggy. |
| |
| 2012-03-20 Denys Vlasenko <vda.linux@googlemail.com> |
| |
| Simplify search in ioctl table. |
| text data bss dec hex filename |
| 236973 704 18944 256621 3ea6d strace.before |
| 236929 704 18944 256577 3ea41 strace |
| |
| * ioctl.c (compare): Simplify generation of compare result. |
| (ioctl_lookup): Pass key directly, not as part of dummy struct. |
| (ioctl_next_match): More readable code. No logic changes. |
| |
| 2012-03-19 Denys Vlasenko <vda.linux@googlemail.com> |
| |
| Update qemu build script: now tries to upload result back to host. |
| |
| 2012-03-19 Denys Vlasenko <vda.linux@googlemail.com> |
| |
| Shrink space needed by undefined syscalls in syscall tables. |
| Undefined syscall looked like this before this change: |
| { 5, 0, printargs, "SYS_53" }, |
| That is, "SYS_53" string had to be allocated and stored in strace binary. |
| Since now SCNO_IN_RANGE() macro requires sysent[scno].sys_func != NULL |
| for valid syscalls, we can replace printargs with NULL in such lines |
| and make them "invalid", thus not requiring syscall name string. |
| |
| Savings on i386: |
| text data bss dec hex filename |
| 237389 704 18944 257037 3ec0d strace.before |
| 236973 704 18944 256621 3ea6d strace |
| Savings on mips: |
| 336551 153692 38320 528563 810b3 strace.before |
| 275543 153688 38320 467551 7225f strace |
| |
| Tested to still decode undefined syscalls correctly (syscall no. 222 on i386). |
| |
| * linux/*/syscallent.h: Replace 'printargs, "SYS_nnn"' with |
| 'NULL, NULL'. |
| |
| 2012-03-19 Denys Vlasenko <vda.linux@googlemail.com> |
| |
| Optimize code if we have only one personality. |
| On i386: |
| text data bss dec hex filename |
| 238025 672 18980 257677 3ee8d strace.before |
| 237389 704 18944 257037 3ec0d strace |
| |
| * defs.h: Define PERSONALITY0_WORDSIZE as sizeof(long) if not defined. |
| Introduce new define, current_wordsize as |
| (personality_wordsize[current_personality]). |
| Make set_personality() no-op, current_personality constant zero, |
| current_wordsize as PERSONALITY0_WORDSIZE if we have only one personality. |
| * count.c (call_summary): Use current_wordsize instead of |
| personality_wordsize[current_personality]. |
| * desc.c (printflock): Likewise. |
| * file.c (sys_utime): Likewise. |
| * io.c (tprint_iov): Likewise. |
| * process.c (printargv): Likewise. |
| * resource.c (decode_rlimit): Likewise. |
| * signal.c (sys_kill): Likewise. |
| (sys_rt_sigaction): Likewise. |
| * time.c (sprinttv): Likewise. |
| (sprint_timespec): Likewise. |
| (printitv_bitness): Likewise. |
| (tprint_timex): Likewise. |
| (printsigevent): Likewise. |
| * util.c (dumpiov): Likewise. |
| (umoven): Likewise. |
| (umovestr): Likewise. |
| * syscall.c: Initialize sysent to sysent0 etc. |
| Make current_personality, personality_wordsize[], set_personality() |
| conditional on SUPPORTED_PERSONALITIES > 1. |
| |
| 2012-03-18 Denys Vlasenko <vda.linux@googlemail.com> |
| |
| Fix mips64 build failure: sys_pwrite64 doesn't exist. |
| sys_pwrite seems to do the same thing as sys_pwrite64 |
| which we deleted when we removed non-Linux code. |
| |
| * linux/mips/syscallent.h: s/sys_pwrite64/sys_pwrite/ |
| |
| 2012-03-18 Denys Vlasenko <vda.linux@googlemail.com> |
| |
| qemu_multiarch_testing/: a directory with scripts for build testing. |
| |
| 2012-03-18 Denys Vlasenko <vda.linux@googlemail.com> |
| |
| Make internal_fork and internal_exec static. |
| text data bss dec hex filename |
| 237917 672 18980 257569 3ee21 strace |
| 237845 672 18980 257497 3edd9 strace_new |
| |
| * defs.h: Remove declarations of internal_fork and internal_exec. |
| * process.c: Remove definitions of internal_fork and internal_exec. |
| * syscall.c: Move them here. |
| (internal_syscall): Return void instead of int. We were always |
| returning zero, and callers weren't checking it anyway. |
| |
| 2012-03-18 Denys Vlasenko <vda.linux@googlemail.com> |
| |
| Remove code which is not used on Linux. |
| Compile tested in qemu on armv4l,armv4tl,armv5l,armv6l,i686, |
| mipsel,mips,x86_64 |
| |
| * syscall.c: Remove code which handles RVAL_Lfoo constants. |
| * defs.h: Remove struct tcb::u_lrval member - it is never set. |
| Remove RVAL_Lfoo constants which signify return of "long" result - |
| they are never used. |
| |
| 2012-03-18 Denys Vlasenko <vda.linux@googlemail.com> |
| |
| Remove unused version of sys_lseek. |
| It is buggy: it returns RVAL_LUDECIMAL, which means the return value |
| is in tcp->u_lrval. But tcp->u_lrval is never set |
| (on Linux - it used to be set on other OSes). |
| |
| * file.c (sys_lseek): Remove a version of this function which is |
| supposed to be used if off_t is long long. It appears to be buggy |
| and unused. |
| |
| 2012-03-17 Denys Vlasenko <vda.linux@googlemail.com> |
| |
| Revert "Remove underscores from a few syscall names which have them" |
| This reverts commit 31972d52b1059d8faca1c5f417c2db1a90b868ae. |
| |
| 2012-03-17 Denys Vlasenko <vda.linux@googlemail.com> |
| |
| Simplify sys_lseek64 conditional compilation. |
| It looks like sys_lseek64() is never used. |
| For one, it is buggy (always shows 0 return value), and no one complains. |
| |
| From code inspection: sys_lseek64 name is not used anywhere. |
| It is defined to sys_lseek if HAVE_LONG_LONG_OFF_T is true. |
| Thus, if !HAVE_LONG_LONG_OFF_T, it is never used. |
| Therefore "if _LFS64_LARGEFILE || HAVE_LONG_LONG_OFF_T" |
| conditional it sits in can be simplified to |
| "if HAVE_LONG_LONG_OFF_T". |
| Therefore, we can move it a bit up and merge with |
| "if !HAVE_LONG_LONG_OFF_T, use this sys_lseek()" code block, |
| by addind an "else" clause to it. |
| To simplify it more, drop define and just rename sys_lseek64 -> |
| sys_lseek. |
| |
| Since the function is buggy, I think it is unused and we can |
| just drop it. (I checked: at least I386 never uses it). |
| |
| * file.c (sys_lseek64): Rename to sys_lseek; don't compile it |
| if _LFS64_LARGEFILE but !HAVE_LONG_LONG_OFF_T since in this case |
| it is never used. |
| |
| 2012-03-17 Denys Vlasenko <vda.linux@googlemail.com> |
| |
| Remove underscores from a few syscall names which have them. |
| Affected names are "_newselect", "_llseek", "_sysctl". |
| I see no apparent reason why they have leading underscores. |
| Moreover, some arches have underscored names and some have |
| non-underscored ones. This is not consistent. |
| |
| I verified that every architectire I touched did not have |
| a similarly named syscall without underscore, thus this change |
| does not introduce new ambiquities. |
| |
| I left "_exit" untouched for now, but the same points stand for it too: |
| some architectures use "exit" and no one complains. So why many |
| arches are using "_exit"? |
| |
| * linux/*/syscallent.h: Remove underscores from displayed |
| syscall names for _newselect, _llseek, _sysctl. |
| |
| 2012-03-17 Denys Vlasenko <vda.linux@googlemail.com> |
| |
| Remove unused struct tcb::baddr field. |
| * defs.h: Remove unused struct tcb::baddr field. |
| |
| Remove unused PTRACE_WRITE{TEXT,DATA} constants (they are from SunOS) |
| * util.c: Remove unused PTRACE_WRITE{TEXT,DATA} constants. |
| |
| Reindent case labels. No code changes. |
| * net.c (printsockopt): Reindent case labels. |
| * signal.c (sys_signal): Likewise. |
| |
| Remove unused constants. No code changes. |
| * syscall.c: Remove unused ENOIOCTLCMD constant. Fix indentation. |
| * util.c: Remove unused CLONE_STOPPED constant. |
| |
| Move change_syscall() to its only user and make it static. |
| * defs.h: Remove declaration of change_syscall(). |
| * process.c (change_syscall): Remove definition of this function. |
| * util.c (change_syscall): Add definition of change_syscall(). |
| |
| MAP_ANON is the same as MAP_ANONYMOUS, no need to have the former. |
| * mem.c: Do not allocate string for MAP_ANON if it is the same as |
| MAP_ANONYMOUS. |
| |
| Indentation and whitespace fixes. No code changes. |
| |
| test/threaded_execve: make it also test a case when leader is not in syscall |
| |
| 2012-03-16 Dmitry V. Levin <ldv@altlinux.org> |
| |
| Implement prlimit64 decoding, rewrite [gs]etrlimit decoding. |
| * configure.ac: Remove AC_RLIM_T_IS_LONG_LONG call. |
| Define SIZEOF_RLIM_T. |
| * m4/long_long.m4 (AC_RLIM_T_IS_LONG_LONG): Remove. |
| * linux/dummy.h (sys_prlimit64): Remove. |
| * linux/syscall.h (sys_prlimit64): New prototype. |
| * resource.c (resources): Reindent, add RLIMIT_RTTIME. |
| (sprintrlim, print_rlimit32, sys_getrlimit, sys_setrlimit): Remove. |
| [HAVE_LONG_LONG_RLIM_T]: Remove dead code. |
| [_LFS64_LARGEFILE || HAVE_LONG_LONG_RLIM_T]: Likewise. |
| (sprint_rlim64, print_rlimit64, decode_rlimit64, sprint_rlim32, |
| print_rlimit32, decode_rlimit, sys_getrlimit, sys_setrlimit, |
| sys_prlimit64): New functions. |
| |
| 2012-03-16 Denys Vlasenko <vda.linux@googlemail.com> |
| |
| Remove another "interrupt to quit" message. |
| * strace.c (startup_attach): Remove another "interrupt to quit" message. |
| |
| Fix "strace -oFILE -ff -p<nonexistant_pid>" behavior. |
| * strace.c (newoutf): Set tcp->outf in non-ff mode too. |
| (alloctcb): This define is removed. |
| (alloc_tcb): Renamed to alloctcb. Does not set tcp->outf anymore. |
| Lost 'command_options_parsed' flag parameter. |
| (startup_attach): Do not say "interrupt to quit" in attach message - |
| ^C does not work in all cases, we mislead users. |
| Call newoutf(tcp) after successful attach. |
| (startup_child): Call newoutf(tcp) after successful attach. |
| (trace): Call newoutf(tcp) when we picked up already attached child. |
| |
| 2012-03-16 Denys Vlasenko <vda.linux@googlemail.com> |
| |
| Make alloc_tcb and droptcb static. No code changes. |
| The change is trivial. Diff is large because it is confused |
| by function definitions being moved around. |
| |
| * defs.h: Remove declarations of alloc_tcb and droptcb. |
| * strace.c: Make alloc_tcb and droptcb static. |
| Shuffle functions around to make compiler happy. |
| |
| 2012-03-16 Denys Vlasenko <vda.linux@googlemail.com> |
| |
| Tidy up includes and copyright notices, fix indentation. |
| The files not mentioned in changelog below had only |
| copyright notices fixes and indentation fixes. |
| |
| * defs.h: Include <stdint.h> and <inttypes.h>. |
| * file.c: Do not include <inttypes.h>. |
| Move struct kernel_dirent declaration below top include block. |
| * block.c: Do not include <stdint.h> and <inttypes.h>. |
| * quota.c: Likewise. |
| * desc.c: Likewise. |
| * signal.c: Likewise. |
| |
| 2012-03-16 Dmitry V. Levin <ldv@altlinux.org> |
| |
| scsi.c: add copyright header. |
| * scsi.c: This file was added back in 2007 without a copyright header. |
| Add it now. |
| |
| 2012-03-15 Dmitry V. Levin <ldv@altlinux.org> |
| |
| Enhance capget and capset syscalls decoding. |
| * system.c (cap_version): New xlat structure. |
| (print_cap_header, print_cap_data): New functions. |
| (sys_capget, sys_capset): Use them. |
| |
| Remove unused code. |
| * syscall.c (subcall_style, decode_subcall): Remove. |
| [SYS_socket_subcall] (decode_socket_subcall): New function, based on |
| decode_subcall in deref_style. |
| [SYS_ipc_subcall] (decode_ipc_subcall): New function, based on |
| decode_subcall in shift_style. |
| (trace_syscall_entering): Use decode_socket_subcall and |
| decode_ipc_subcall instead of decode_subcall. |
| |
| Fix IPC decoding on alpha and arm. |
| * ipc.c (indirect_ipccall): Return 0 on ALPHA and ARM EABI. |
| (sys_shmat): Use indirect_ipccall for proper return value decoding. |
| |
| arm: fix compilation warnings. |
| * configure.ac: Define SIZEOF_LONG. |
| * signal.c (sys_rt_sigaction) [SUPPORTED_PERSONALITIES > 1]: Help |
| compiler to optimize out unreachable code that is not expected to work |
| on platforms where sizeof(long) <= 4. |
| |
| 2012-03-15 Dmitry V. Levin <ldv@altlinux.org> |
| |
| tests: robustify again buggy shells. |
| * tests/init.sh (check_strace): Use "${parameter:-word}" shell syntax |
| instead of "${parameter-word}". |
| |
| Reported-by: Mike Frysinger <vapier@gentoo.org> |
| |
| 2012-03-15 Mike Frysinger <vapier@gentoo.org> |
| |
| improve ifdef check with decode_subcall. |
| Use the same ifdef logic around the call sites of decode_subcall() |
| to protect the definition of the func itself. This fixes warnings |
| for targets like hppa which don't use this func. |
| |
| * syscall.c (decode_subcall): Wrap in SYS_socket_subcall and |
| SYS_ipc_subcall define checks. |
| |
| 2012-03-15 Mike Frysinger <vapier@gentoo.org> |
| |
| alpha: fix decode of osf_sigprocmask. |
| The alpha sigprocmask syscall is special in that it comes from OSF rather |
| than the style that everyone else uses. |
| |
| Tested with this simple code: |
| $ cat test.c |
| #include <signal.h> |
| main() { |
| sigset_t set, oldset; |
| sigemptyset(&set); |
| sigaddset(&set, SIGINT); |
| sigaddset(&set, SIGHUP); |
| sigprocmask(SIG_SETMASK, &set, &oldset); |
| sigprocmask(SIG_UNBLOCK, &oldset, &set); |
| sleep(3); |
| } |
| $ gcc test.c && ./strace ./a.out |
| ... |
| osf_sigprocmask(SIG_SETMASK, [HUP INT]) = 0 (old mask []) |
| osf_sigprocmask(SIG_UNBLOCK, []) = 0x3 (old mask [HUP INT]) |
| osf_sigprocmask(SIG_BLOCK, [CHLD]) = 0x3 (old mask [HUP INT]) |
| ... |
| |
| * linux/alpha/syscallent.h: Call sys_sigprocmask for osf_sigprocmask, |
| and change number of arguments to two. |
| * signal.c (sys_sigprocmask): Fix decoding of alpha osf sigprocmask. |
| |
| 2012-03-15 Denys Vlasenko <vda.linux@googlemail.com> |
| |
| Fix array size calculation in previous commit. |
| * pathtrace.c (getfdpath): Fix array size calculation. |
| |
| 2012-03-15 Denys Vlasenko <vda.linux@googlemail.com> |
| |
| pathtrace_select() is never called with NULL, remove dead code. |
| pathtrace_select() is only called for -P FILE options, |
| and FILE is never a NULL pointer. |
| |
| text data bss dec hex filename |
| 239453 672 19012 259137 3f441 strace.before |
| 239329 672 19012 259013 3f3c5 strace |
| |
| * pathtrace.c (pathtrace_select): Remove "if (path == NULL)...". |
| (pathtrace_select): Remove code which only executes if path == NULL. |
| The code was also buggy, it can free non-malloced pointer. |
| (getfdpath): Simplify snprintf to sprintf. |
| (pathmatch): Use strcmp() == 0 idiom for string equality test. |
| (pathtrace_match): Likewise. |
| |
| 2012-03-15 Denys Vlasenko <vda.linux@googlemail.com> |
| |
| manpage: remove bugs which are fixed. |
| "A traced process ignores SIGSTOP" - fixed, expected to be in linux-3.4.x. |
| "A traced process which tries to block SIGTRAP will be sent a SIGSTOP |
| in an attempt to force continuation of tracing." - not needed |
| and no longer done. |
| "On Linux, exciting as it would be, tracing the init process is forbidden" |
| - not true anymore. |
| "When a traced process receives a SIGTRAP signal not |
| associated with tracing, strace will not report that signal correctly." |
| - not true anymore. |
| |
| Simplify SIGCHLD handler setting. |
| * strace.c (init): Set SIGCHLD to SIG_DFL earlier. |
| (startup_child): Do not bother restoring SIGCHLD handler. |
| |
| When reporting signals, use short signal names (SIGfoo) instead of strerror |
| * defs.h: Remove strsignal declaration. |
| * signal.c: Better check for SI_FROMUSER define. |
| * strace.c (strerror): Remove this function. |
| (trace): Use short signal names (SIGfoo) instead of strerror. |
| |
| Remove TODO file: it's eleven years old and completely outdated. |
| |
| Clean up defs.h order. No code changes. |
| * defs.h: Group together related declarations. No code changes. |
| |
| 2012-03-15 Denys Vlasenko <vda.linux@googlemail.com> |
| |
| Fix lame kernel version checking code. |
| The code "os_release[0] >= '3'" is not good for any |
| finer-grained checks such as "kernel >= 3.2.1". |
| Let's proactively fix it. |
| |
| * strace.c: Change os_release from string to integer. |
| (get_os_release): Parse uname.release to KERNEL_VERSION |
| representation. |
| (init): Convert kernel version check to KERNEL_VERSION. |
| |
| 2012-03-15 Denys Vlasenko <vda.linux@googlemail.com> |
| |
| Experimental support for "detach on execve" feature. |
| * strace.c: Define new detach_on_execve, skip_startup_execve bool variables. |
| (init): Set detach_on_execve on -b, set skip_startup_execve if |
| "strace PROG" form is used. |
| (trace): Detach from process if -b and we see PTRACE_EVENT_EXEC event. |
| |
| Simple fixes. |
| * strace.c (usage): Document -d; document that -F is deprecated. |
| (droptcb): Print "<detached ...>" correctly for non-ff mode too. |
| (detach): Suppress a warning. |
| |
| Remove an outdated comment. |
| * defs.h: Remove an outdated comment. |
| |
| Remove extra include directives. No code changes. |
| * defs.h: Include <signal.h> unconditionally. |
| Other files were doing it unconditionally, so no harm done. |
| * bjm.c: Remove system includes which are already included by defs.h. |
| * pathtrace.c: Likewise. |
| * process.c: Likewise. |
| * signal.c: Likewise. |
| * strace.c: Likewise. |
| * stream.c: Likewise. |
| * syscall.c: Likewise. |
| * system.c: Likewise. |
| * util.c: Likewise. |
| |
| 2012-03-15 Denys Vlasenko <vda.linux@googlemail.com> |
| |
| Tidy up order of includes; make bool variables explicit. |
| Bool variables are more compact in data and (on x86) on code too: |
| |
| text data bss dec hex filename |
| 237950 676 19044 257670 3ee86 strace.before |
| 237838 676 19012 257526 3edf6 strace |
| |
| * defs.h: Group library includes at the top of the file. |
| Rename dtime to Tflag, debug to debug_flag. |
| Change debug_flag,Tflag,qflag,not_failing_only,show_fd_path,tracing_paths |
| variable declarations from int to bool. |
| * strace.c: Change corresponding definitions. Do the same for static |
| variables iflag,rflag,print_pid_pfx. |
| Rename dtime to Tflag, debug to debug_flag. |
| * syscall.c: Rename dtime to Tflag, debug to debug_flag. |
| |
| 2012-03-15 Dmitry V. Levin <ldv@altlinux.org> |
| |
| Fix compiler warnings about breaking strict-aliasing rules. |
| * system.c (sys_capget, sys_capset): Use proxy unions to cast long* |
| pointers to cap_user_header_t and cap_user_data_t pointers without |
| breaking strict-aliasing rules. |
| |
| Reported-by: Mike Frysinger <vapier@gentoo.org> |
| |
| 2012-03-15 Mike Frysinger <vapier@gentoo.org> |
| |
| ppc64: drop unused pid variable. |
| * syscall.c (get_scno) [POWERPC64]: Delete unused pid variable. |
| |
| 2012-03-15 Dmitry V. Levin <ldv@altlinux.org> |
| |
| ia64: fix compilation warnings. |
| * linux/ia64/syscallent.h: Remove improper defines and undefs. |
| |
| Reported-by: Mike Frysinger <vapier@gentoo.org> |
| |
| 2012-03-15 Dmitry V. Levin <ldv@altlinux.org> |
| |
| Ensure that SWAP_FLAG_* constants are defined. |
| * file.c: Define those of SWAP_FLAG_* constants which are not yet |
| provided by <sys/swap.h>. |
| |
| Reported-by: Mike Frysinger <vapier@gentoo.org> |
| |
| 2012-03-14 Dmitry V. Levin <ldv@altlinux.org> |
| |
| Enhance *listxattr syscalls decoding. |
| * file.c (print_xattr_list): New function. |
| (sys_listxattr, sys_flistxattr): Use it. |
| |
| 2012-03-13 Dmitry V. Levin <ldv@altlinux.org> |
| |
| Fix *at syscalls flags decoding. |
| Several *at decoders were defining own incomplete *atflags xlat |
| structures. That was error prone, and fchownat decoder actually |
| failed to recognize AT_EMPTY_PATH. Merging these incomplete |
| structures into the single at_flags xlat structure will fix |
| flags handling in all these decoders altogether. |
| |
| * file.c: Define all AT_* constants used by *at decoders. |
| (at_flags): New xlat structure, with records for all AT_* constants. |
| (fstatatflags, linkat_flags, unlinkatflags): Remove. |
| (sys_newfstatat, sys_linkat, sys_unlinkat, sys_fchownat, |
| sys_utimensat): Use at_flags. |
| |
| 2012-03-13 Dmitry V. Levin <ldv@altlinux.org> |
| |
| Fix linkat flags decoding. |
| * file.c (linkat_flags): New xlat structure. |
| (sys_linkat): Decode flags using linkat_flags. |
| |
| Implement sys_rt_tgsigqueueinfo syscall decoder. |
| * linux/dummy.h (sys_rt_tgsigqueueinfo): Remove. |
| * linux/syscall.h (sys_rt_tgsigqueueinfo): New prototype. |
| * signal.c (print_sigqueueinfo): New function, based on |
| sys_rt_sigqueueinfo. |
| (sys_rt_sigqueueinfo): Use print_sigqueueinfo. |
| (sys_rt_tgsigqueueinfo): New function. |
| |
| Implement syslog syscall decoder. |
| * linux/dummy.h (sys_syslog): Remove. |
| * linux/syscall.h (sys_syslog): New prototype. |
| * system.c (syslog_action_type): New xlat structure. |
| (sys_syslog): New function. |
| |
| 2012-03-13 Denys Vlasenko <vda.linux@googlemail.com> |
| |
| Less ugly debug display of ptrace events. |
| * strace.c (trace): Less ugly debug display of ptrace events. |
| |
| Make manpage mention that -p "`pidof PROG`" works. |
| |
| 2012-03-13 Denys Vlasenko <vda.linux@googlemail.com> |
| |
| Fix logging for "strace -o FILE -ff test/threaded_execve" test case. |
| Our logic which was deciding whether to print "<unfinished ...>" |
| thingy wasn't working properly for -ff case. |
| |
| * defs.h: Group log generation-related declarations together. |
| Add a large comment which explains how it works. |
| Add declaration of line_ended() function. |
| * strace.c (line_ended): New function which sets up internal data |
| to indicate that previous line was finished. |
| (printleader): Change logic to fix log generation in -ff mode. |
| (newoutf): Make check for -ff mode consistent with other places. |
| (droptcb): Print "<detached ...>" if last line for this tcp wasn't finished. |
| (cleanup): Remove code to print "<unfinished ...>", printleader() |
| or detach() will do it instead. |
| (trace): Remove code to print "<unfinished ...>". |
| Add code which finishes threaded execve's incomplete line |
| with " <pid changed to PID ...>" message. Replace printing_tcp = NULL |
| followed by fflush() by line_ended() call. |
| * process.c (sys_exit): Call line_ended() to indicate that we finished priting. |
| * syscall.c (trace_syscall_exiting): Set printing_tcp to current tcp. |
| Call line_ended() to indicate that we finished priting. |
| Remove call to fflush(), it is done by line_ended() now. |
| |
| 2012-03-13 Dmitry V. Levin <ldv@altlinux.org> |
| |
| net.c: recognize MSG_WAITFORONE. |
| * net.c (msg_flags): Add MSG_WAITFORONE. |
| |
| 2012-03-12 Denys Vlasenko <vda.linux@googlemail.com> |
| |
| Treat -ff without -o FILE as single -f. |
| * strace.c (init): Treat -ff without -o FILE as single -f. |
| |
| Style fix. No code changes. |
| * strace.c (process_opt_p_list): Style fix. |
| |
| 2012-03-12 Denys Vlasenko <vda.linux@googlemail.com> |
| |
| Reduce stack usage by ~0.5k. |
| main() uses ~0.5k of stack for local variables and such. When we enter |
| main tracing loop, most of these variables are no longer used. |
| But they still take up stack for the entire life of strace. |
| We can avoid this wastage if we move init code into a separate function. |
| (Need to be careful and not allow automatic inlining). |
| |
| * strace.c (init): New function. Most of pre-existing code of |
| main is now living here. |
| (main): Call init() to do initialization. |
| |
| 2012-03-12 Denys Vlasenko <vda.linux@googlemail.com> |
| |
| Preparatory cosmetic changes for the next commit. |
| * strace.c (tprintf): Move function up in the source file. No code changes. |
| (tprints): Likewise. |
| (printleader): Likewise. |
| (tabto): Likewise. |
| |
| 2012-03-11 Dmitry V. Levin <ldv@altlinux.org> |
| |
| Implement sendmmsg syscall decoder. |
| * linux/dummy.h (sys_sendmmsg): Remove. |
| * linux/syscall.h (sys_sendmmsg): New prototype. |
| * net.c (printmmsghdr): Add index argument specifying the element in |
| mmsghdr array to print. |
| (decode_mmsg): New function, prints the whole mmsghdr array, its length |
| and message flags. |
| (sys_sendmmsg): New function. |
| (sys_recvmmsg): Use decode_mmsg to fix mmsghdr array decoding. |
| |
| Implement sched_rr_get_interval syscall decoder. |
| * linux/dummy.h (sys_sched_rr_get_interval): Remove. |
| * linux/syscall.h (sys_sched_rr_get_interval): New prototype. |
| * process.c (sys_sched_rr_get_interval): New function. |
| |
| Implement migrate_pages syscall decoder. |
| * linux/dummy.h (sys_migrate_pages): Remove. |
| * linux/syscall.h (sys_migrate_pages): New prototype. |
| * mem.c (sys_migrate_pages): New function. |
| |
| Implement get_robust_list syscall decoder. |
| * linux/dummy.h (sys_get_robust_list): Remove. |
| * linux/syscall.h (sys_get_robust_list): New prototype. |
| * process.c (sys_get_robust_list): New function. |
| |
| Define sys_set_robust_list as an alias to sys_munmap. |
| * linux/dummy.h (sys_set_robust_list): Redefine to sys_munmap. |
| |
| Implement clock_adjtime syscall decoder. |
| * linux/dummy.h (sys_clock_adjtime): Remove. |
| * linux/syscall.h (sys_clock_adjtime): New prototype. |
| * time.c (do_adjtimex): New function, based on sys_adjtimex. |
| (sys_adjtimex): Use it. |
| (sys_clock_adjtime): New function. |
| |
| Define sys_setns as an alias to sys_inotify_rm_watch. |
| * linux/dummy.h (sys_setns): Redefine to sys_inotify_rm_watch. |
| |
| Sort definitions of dummy parsers. No code changes. |
| * linux/dummy.h: Sort definitions of parsers implemented as aliases. |
| |
| Correct inotify_rm_watch decoder. |
| * file.c (sys_inotify_rm_watch): Print second argument as int. |
| |
| Alias sys_fsync to sys_close. |
| * file.c (sys_fsync): Remove. |
| * linux/syscall.h (sys_fsync): Likewise. |
| * linux/dummy.h (sys_fsync): Alias to sys_close. |
| * linux/m68k/syscallent.h: Add TD flag to fsync entry. |
| * linux/microblaze/syscallent.h: Likewise. |
| * linux/mips/syscallent.h: Likewise. |
| |
| 2012-03-10 Dmitry V. Levin <ldv@altlinux.org> |
| |
| Update ioctl entries. |
| * linux/ioctlent.h.in: Regenerate from v3.3 headers. |
| * linux/i386/ioctlent.h.in: Likewise. |
| |
| strace-log-merge: cleanup. |
| * strace-log-merge: Redirect usage to stderr, make the check |
| for numeric suffix simpler. |
| |
| Add syscall entries for new linux syscalls. |
| * linux/i386/syscallent.h: Update process_vm_writev handler. |
| * linux/powerpc/syscallent.h: Likewise. |
| * linux/x86_64/syscallent.h: Likewise. |
| * linux/alpha/syscallent.h: Add entries for accept4 and sendmmsg. |
| * linux/arm/syscallent.h: Add entries for process_vm_readv and |
| process_vm_writev. |
| * linux/m68k/syscallent.h: Likewise. |
| * linux/mips/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/ia64/syscallent.h: Add entries for process_vm_readv, |
| process_vm_writev and accept4. |
| * linux/microblaze/syscallent.h: Add entries for sendmmsg, |
| process_vm_readv and process_vm_writev. |
| |
| Implement process_vm_writev decoder. |
| * process.c (sys_process_vm_writev): New function. |
| * linux/syscall.h (sys_process_vm_writev): New prototype. |
| |
| Output iovec length in vmsplice and process_vm_readv decoders. |
| * io.c (sys_vmsplice): Output iovec length. |
| * process.c (sys_process_vm_readv): Likewise. |
| |
| 2012-03-09 Dmitry V. Levin <ldv@altlinux.org> |
| |
| swapon: decode swap flags. |
| * file.c: Include <sys/swap.h>. |
| (swap_flags): New xlat structure. |
| (sys_swapon): New function. |
| * linux/dummy.h (sys_swapon): Remove. |
| * linux/syscall.h (sys_swapon): New declaration. |
| |
| 2012-03-09 Denys Vlasenko <vda.linux@googlemail.com> |
| |
| Trivial simplification. |
| * strace.c (detach): Use waitpid instead of wait4. |
| |
| 2012-03-09 Denys Vlasenko <vda.linux@googlemail.com> |
| |
| Don't consider PROG to be our child in "strace -D PROG" case. |
| TCB_STRACE_CHILD is used for the case when "strace PROG" is ^C-ed |
| or something like that. strace should not just exit - it should |
| do something with its child (such as signal it too). |
| |
| In -D case, PROG is not really a child of _strace_, it is a child |
| of strace's parent. It's ok to handle it exactly as an attached process. |
| |
| While we are at it, remove nonsensical special-casing of TCB_STRACE_CHILD |
| in printing of "<unfinished ...>" message. |
| |
| * strace.c (startup_attach): Don't set TCB_STRACE_CHILD if -D. |
| (trace): Print "<unfinished ...>" on error regardless of TCB_STRACE_CHILD. |
| |
| 2012-03-09 Denys Vlasenko <vda.linux@googlemail.com> |
| |
| Fix the case where we try to detach unattached processes. |
| Before this change: |
| $ strace -D -p1 |
| strace: -D and -p are mutually exclusive options |
| Process 1 detached <==== WRONG! (and we try to SIGSTOP it!!!) |
| |
| * defs.h: Change the meaning of TCB_ATTACHED: now it means "this tracee |
| is attached to us". Add TCB_STRACE_CHILD: "this tracee is our child". |
| * strace.c (kill_save_errno): Move up. No code changes. |
| (process_opt_p_list): Don't set TCB_ATTACHED on new tcb. |
| (startup_attach): Change how we work with TCB_ATTACHED. |
| Set TCB_STRACE_CHILD on -D. |
| (startup_child): Use kill_save_errno instead of kill. |
| Set TCB_ATTACHED and TCB_STRACE_CHILD on attached strace child. |
| If we are in -D case, don't set TCB_ATTACHED (we aren't attached yet). |
| (detach): do not do PTRACE_DETACH if TCB_ATTACHED is not set. |
| (cleanup): Check TCB_STRACE_CHILD instead of TCB_ATTACHED. |
| (trace): Likewise. |
| |
| 2012-03-09 Denys Vlasenko <vda.linux@googlemail.com> |
| |
| Call PTRACE_CONT with addr=0. |
| * strace.c (trace): Call PTRACE_CONT with addr=0. |
| |
| install strace-log-merge by "make install" |
| |
| strace_log_merge: new file. Helper to merge timestamped strace -ff logs. |
| |
| 2012-03-09 Denys Vlasenko <vda.linux@googlemail.com> |
| |
| Fix PID prefix printing in "strace -oLOG -ff -p1 -p2 -p3" case. |
| In this case we were printing PIDs to LOG.* files |
| even though it is not necessary. |
| |
| The fix is in the addition of "&& followfork < 2" condition. |
| |
| * strace.c: Remove pflag_seen variable, add print_pid_pfx one. |
| (process_opt_p_list): Do not pflag_seen++. |
| (main): Use "nprocs != 0" condition instead of "pflag_seen != 0". |
| Set print_pid_pfx before entering main tracing loop. |
| (printleader): Use print_pid_pfx to decide whether to print pid prefix. |
| |
| 2012-03-09 Denys Vlasenko <vda.linux@googlemail.com> |
| |
| Allow -p PID to take comma or whitespace-separated list of PIDs. |
| * defs.h: Clarify meaning of TCB_ATTACHED. No code changes. |
| * strace.c (process_opt_p_list): New function. |
| (main): Call process_opt_p_list to process -p PIDs argument. |
| |
| 2012-03-08 Denys Vlasenko <vda.linux@googlemail.com> |
| |
| Pass addr=0 instead of 1 into restarting ptrace calls. |
| While we are at it, fold do_ptrace into its lone caller. |
| We no longer set tcp->ptrace_errno = ESRCH on ESRC error in upeek. |
| Other code paths where ptrace fails wern't doing it, and the code which |
| checks tcp->ptrace_errno even assumes it is never set to ESRCH. |
| (It was me who added this code sometime ago, so it was my fault |
| that it was a bit messy) |
| |
| I ran sigkill_rain test and verified that unfinished syscalls are |
| still handled correctly. |
| |
| * util.c (ptrace_restart): Do not pass addr=1 to ptrace(), pass 0 instead. |
| I have no idea why we were passing 1. Ptrace documentation says |
| that addr parameter is ignored. |
| (do_ptrace): Remove this function. |
| (upeek): Use ptrace() instead of do_ptrace(). |
| * defs.h: Remove do_ptrace() declaration. |
| |
| 2012-03-08 Denys Vlasenko <vda.linux@googlemail.com> |
| |
| Trivial tweaks to error messages. |
| * strace.c (test_ptrace_setoptions_followfork): Use kill_save_errno |
| instead of kill. |
| (trace): Use perror_msg instead of perror. |
| * count.c (set_sortby): Use error_msg_and_die instead of fprintf. |
| * syscall.c (qualify): Likewise. |
| * util.c (ptrace_restart): Expand error message. |
| (umoven): Likewise. |
| (umovestr): Likewise. |
| (upeek): Use perror_msg instead of sprintf + perror. |
| |
| 2012-02-28 Denys Vlasenko <vda.linux@googlemail.com> |
| |
| Remove stray sys_swapon() declaration. |
| * linux/syscall.h: Remove stray sys_swapon() declaration. |
| * linux/mips/syscallent.h: Include dummy.h with correct relative path. |
| * linux/dummy.h: Tweak one place where spaces are used instead of tabs. |
| * linux/dummy_check.sh: New script. It helps in finding stray syscall |
| handler declarations. |
| |
| 2012-02-27 Denys Vlasenko <vda.linux@googlemail.com> |
| |
| Correct syscall entries for t[g]kill. |
| * linux/hppa/syscallent.h: Make tgkill use sys_tgkill, not printargs. |
| * linux/sh/syscallent.h: Change tkill type TD -> TS. |
| * linux/sh64/syscallent.h: Likewise. |
| * linux/mips/syscallent.h: Change tkill type 0 -> TS. |
| * linux/x86_64/syscallent.h: Likewise. |
| * linux/avr32/syscallent.h: Likewise. |
| |
| 2012-02-27 Denys Vlasenko <vda.linux@googlemail.com> |
| |
| Assorted trivial optimizations. |
| text data bss dec hex filename |
| 236448 672 19044 256164 3e8a4 strace.before |
| 236360 672 19044 256076 3e84c strace |
| |
| * file.c (sprintmode): Use smaller static buffer, eliminate strlen call. |
| (sprinttime): Use smaller static buffer. |
| (printstat_sparc64): Coalesce two printing calls into one. |
| (printstat_powerpc32): Likewise. |
| (printcompat_statfs6): Likewise. |
| (sys_utime): Do not fetch personality_wordsize[current_personality] |
| repeatedly - cache it in local variable instead. |
| * process.c (printargv): Likewise. |
| * resource.c (sprintrlim): Return const char*, not char*. This allows |
| to eliminate sprintf(buf, "RLIM_INFINITY"). Use smaller static buffer. |
| (sprintrlim64): Likewise. |
| * strace.c (strerror): Use smaller static buffer. |
| (strsignal): Likewise. |
| |
| 2012-02-27 Denys Vlasenko <vda.linux@googlemail.com> |
| |
| Alias a few more syscall printing functions. |
| text data bss dec hex filename |
| 237384 672 19044 257100 3ec4c strace.before |
| 236448 672 19044 256164 3e8a4 strace |
| |
| * defs.h: Declare new functions printargs_lu(), printargs_ld() |
| which simply print syscall all args as unsigned or signed longs. |
| * desc.c (sys_epoll_create): Call printargs_ld() instead of open-coding it. |
| * linux/syscall.h: Remove declarations of the following functions: |
| sys_alarm, sys_getresgid, sys_getsid, sys_nice, sys_setgid, sys_setpgid, |
| sys_setpgrp, sys_setregid, sys_setresgid. |
| * process.c (sys_setgid): Delete this function: now aliased to sys_setuid(). |
| (sys_getresgid): Delete this function: now aliased to sys_getresuid(). |
| (sys_setregid): Delete this function: now aliased to sys_setreuid(). |
| (sys_setresgid): Delete this function: now aliased to sys_setresuid(). |
| (sys_setpgrp): Delete this function: now aliased to printargs_lu(). |
| (sys_getsid): Likewise. |
| (sys_setpgid): Likewise. |
| (sys_alarm): Likewise. |
| (sys_getpgrp): Delete this function: was unused - was already shadowed |
| by a define in linux/dummy.h. |
| (sys_setsid): Likewise. |
| (sys_getpgid): Likewise. |
| * resource.c (sys_nice): Delete this function: now aliased to printargs_ld(). |
| * linux/dummy.h: Define new aliases (see above for the list). |
| * syscall.c (printargs_lu): New function. |
| (printargs_ld): New function. |
| |
| 2012-02-27 Denys Vlasenko <vda.linux@googlemail.com> |
| |
| Style fixes, no code changes. |
| * desc.c (sys_io_getevents): Indentation fix. |
| * file.c (sys_xstat): Remove space after function name. |
| (decode_mknod): Indentation fix. |
| * net.c (printsockopt): Indentation fix. |
| * process.c (unalignctl_string): Indentation fix. |
| (sys_sched_getscheduler): Remove space after ! operator. |
| |
| 2012-02-25 Dmitry V. Levin <ldv@altlinux.org> |
| |
| Compress blank lines. |
| Suppress repeated empty lines left after automated code removal. |
| This change was made by filtering every source code file through |
| "cat -s". |
| |
| 2012-02-25 Dmitry V. Levin <ldv@altlinux.org> |
| |
| Remove parts of automake machinery which are not needed on Linux. |
| This change is a verbatim part of Dmitry's changes to remove support |
| for non-Linux architectures. |
| |
| * Makefile.am: Don't install PORTING file. Install README-linux-ptrace file. |
| Set OS variable to linux unconditionally. |
| * configure.ac: Remove code to set opsys variable, and its usage. |
| Remove checks for headers which are never present on Linux. |
| * m4/stat.m4: Remove 'ifdef LINUX' check. |
| * m4/statfs.m4: Likewise. |
| |
| 2012-02-25 Dmitry V. Levin <ldv@altlinux.org> |
| |
| Remove and update documentation. |
| This change is a verbatim part of Dmitry's changes to remove support |
| for non-Linux architectures. |
| |
| * PORTING: Deleted. |
| * INSTALL: Modified. |
| * README: Modified. |
| * strace.1: Modified: bugs should be reported to mailing list, not Debian. |
| * strace.spec: do not install PORTING file. |
| |
| 2012-02-25 Denys Vlasenko <vda.linux@googlemail.com> |
| |
| Remove a few more code parts which are unused on Linux. |
| This change is abapted from Dmitry's changes to remove support for |
| non-Linux architectures. |
| |
| * Makefile.am: Remove if LINUX/endif pairs. |
| * defs.h: Remove stream_ioctl() declaration. |
| * ioctl.c (ioctl_decode): Remove 'ifdef HAVE_SYS_STREAM_H' block. |
| * resource.c: Use 'defined(FOO)' instead of 'defined FOO' form. |
| * util.c: Likewise. |
| * signal.c: Remove conditional includes which are never used on Linux. |
| * stream.c: Likewise. |
| * file.c: Remove excessive empty lines. |
| |
| 2012-02-25 Denys Vlasenko <vda.linux@googlemail.com> |
| |
| Build fixes after non-Linux code removal. |
| * configure.ac: Remove calls to proc-based ptrace checks. |
| * proc.c: Remove, it's empty now. |
| * Makefile.am: Remove reference to proc.c. |
| * net.c: Remove trailing newlines. |
| * quota.c: Likewise |
| * resource.c: Likewise |
| * strace.c: Likewise |
| * stream.c: Likewise |
| * time.c: Likewise |
| |
| Fix defined(FOO) style. |
| * file.c: Consistently use defined(FOO) instead of defined (FOO). |
| * mem.c: Likewise. |
| * net.c: Likewise. |
| * signal.c: Likewise. |
| * sock.c: Likewise. |
| * linux/mips/syscallent.h: Likewise. |
| |
| Reindent preprocessor directives in util.c; fix style. |
| * util.c: Fix indentation of preprocessor directives broken by |
| automatic removal of non-Linux code. Fix style to use consistent |
| defined(FOO) instead of defined (FOO). |
| |
| Reindent preprocessor directives in syscall.c; fix style. |
| * syscall.c: Fix indentation of preprocessor directives broken by |
| automatic removal of non-Linux code. Fix style to use consistent |
| defined(FOO) instead of defined (FOO). |
| |
| Reindent defs.h preprocessor directives. |
| * defs.h: Fix indentation of preprocessor directives broken by |
| automatic removal of non-Linux code. |
| |
| Cleanup after non-Linux code removal. |
| Conditions such as defined(LINUX) are always true now, |
| defined(FREEBSD) etc are always false. |
| When if directive has them as subexpressions, it can be simplified. |
| Another trivial changes here are fixes for directive indentation. |
| |
| 2012-02-25 Denys Vlasenko <vda.linux@googlemail.com> |
| |
| Manual removal of non-Linux source, documentation, etc. |
| Remove non-Linux source directories: freebsd/, svr4/, sunos4/, svr4/. |
| Remove README-freebsd, README-sunos4, README-svr4, m4/procfs.m4. |
| |
| linux/sparc/{errnoent1,ioctlent1,signalent1}.h used to point to svr4/ files - |
| replace their contents with copies of used (and now deleted) files. |
| Make linux/sparc64/{errnoent1,ioctlent1,signalent1}.h include these files |
| instead of svr4/* ones. |
| |
| Makefile.am: remove references to deleted files. |
| configure.ac: Remove a few tests which make no sense on Linux. |
| Man page: remove non-Linux quirks information. |
| |
| 2012-02-25 Denys Vlasenko <vda.linux@googlemail.com> |
| |
| Automated removal of non-Linux code. |
| This change is generated by running every source through the following command: |
| |
| unifdef -DLINUX -Dlinux -USUNOS4 -USVR4 -UUNIXWARE -UFREEBSD |
| -USUNOS4_KERNEL_ARCH_KLUDGE -UHAVE_MP_PROCFS |
| -UHAVE_POLLABLE_PROCFS -UHAVE_PR_SYSCALL -UUSE_PROCFS file.c |
| |
| 2012-02-24 Denys Vlasenko <vda.linux@googlemail.com> |
| |
| When accessing data blocks, truncate addr to wordsize. |
| * util.c (umoven): Truncate addr to wordsize before use. |
| |
| 2012-02-22 Dmitry V. Levin <ldv@altlinux.org> |
| |
| strace.1: fix a typo. |
| * strace.1: Fix a typo in example description. |
| This fixes Debian bug #653309. |
| |
| Fix sockaddr_un.sun_path name in decoded output. |
| * net.c (printsock): Show sockaddr_un.sun_path as "sun_path". |
| This fixes Debian bug #554946. |
| |
| Avoid potential core file clobbering on exit. |
| * strace.c (main): Set RLIMIT_CORE to zero before terminating itself |
| with a deadly signal. |
| This fixes Debian bug #656398. |
| |
| 2012-02-20 Dmitry V. Levin <ldv@altlinux.org> |
| |
| Eliminate native_scno and known_scno. |
| * defs.h (known_scno): Remove. |
| (sysent): Remove native_scno field. |
| * process.c [IA64]: Replace known_scno(tcp) with tcp->scno. |
| (internal_fork) [USE_PROCFS || !LINUX]: Likewise. |
| * syscall.c: Do not define NR_SYSCALL_BASE. |
| (known_scno): Remove. |
| (syscall_fixup_on_sysenter) [USE_PROCFS]: Replace known_scno(tcp) |
| with tcp->scno. |
| (trace_syscall_entering) [SVR4 || FREEBSD || SUNOS4]: Likewise. |
| (syscall_fixup_on_sysexit) [SUNOS4]: Likewise. |
| |
| Remove initialization of native_scno field. |
| * linux/i386/syscallent.h: Remove native_scno initialization for clone, |
| fork and vfork. |
| * linux/ia64/syscallent.h (sys_fork, sys_vfork): Remove redirections |
| to printargs. |
| * linux/syscall.h [IA64]: Do not define SYS_fork and SYS_vfork. |
| * util.c (printcall) [IA64]: Likewise. |
| (setbpt): Use sys_func to check for clone, fork and vfork syscalls. |
| |
| Do not use SYS_ipc and SYS_socketcall. |
| * linux/dummy.h (sys_ipc, sys_socketcall): Remove redirections to |
| printargs. |
| * linux/ia64/syscallent.h: Likewise. |
| * linux/i386/syscallent.h: Remove native_scno initialization for "ipc" |
| and "socketcall". |
| * linux/syscall.h (sys_ipc, sys_socketcall): New prototypes. |
| (SYS_ipc, SYS_socketcall): Remove no longer used constants. |
| [IA64]: Remove undefining of ipc and socket SYS_* constants. |
| [SPARC || SPARC64]: Remove unused ipc SYS_* constants. |
| * ipc.c (sys_ipc): New function. |
| * sock.c (sys_socketcall): Likewise. |
| * syscall.c (trace_syscall_entering): Use sys_func to check for ipc and |
| socket subcalls. |
| |
| 2012-02-20 Dmitry V. Levin <ldv@altlinux.org> |
| |
| Remove initialization of native_scno field for most of syscalls. |
| The native_scno field is not so much used in the code than before. |
| In many cases sys_func is checked instead, and for most of syscall |
| entries there is no need to initialize native_scno. |
| |
| * linux/i386/syscallent.h: Remove native_scno initialization for |
| _exit, read, write, waitpid, execve, wait4, sysfs, readv, writev, |
| pread64, pwrite64, exit_group, waitid, send, recv, sendto and |
| recvfrom syscall entries. |
| * linux/syscall.h: Do not define no longer used SYS_waitid and |
| SYS_sub_* constants. |
| [IA64]: Do not define SYS_waitpid and SYS32_* constants. |
| * defs.h: Do not define no longer used __NR_exit_group constant. |
| * strace.c [USE_PROCFS] (proc_open): Use sys_func to check for execve. |
| |
| 2012-02-14 Mike Frysinger <vapier@gentoo.org> |
| |
| util: check for process_vm_readv in C library. |
| glibc-2.15 provides process_vm_readv, so trying to provide it ourselves |
| with that version fails. |
| |
| * configure.ac (AC_CHECK_FUNCS): Add process_vm_readv. |
| * util.c: Handle HAVE_PROCESS_VM_READV. |
| |
| 2012-02-09 Denys Vlasenko <vda.linux@googlemail.com> |
| |
| README-linux-ptrace: correct the description of suppressed signals. |
| |
| 2012-02-06 Dmitry V. Levin <ldv@altlinux.org> |
| |
| strace -P: fix handling of invalid syscalls. |
| * pathtrace.c (pathtrace_match): Check the given syscall number using |
| SCNO_IN_RANGE. |
| |
| 2012-02-06 H.J. Lu <hongjiu.lu@intel.com> |
| |
| Skip the syscall entry if the sys_func field is NULL. |
| Avoid NULL dereference when there are holes in sysent tables. |
| It can happen with syscall (number, ...) and number is in those holes. |
| There are no targets with holey systent tables so far, but at least |
| one such a target, x32, is already on the horizon. |
| |
| * defs.h (SCNO_IN_RANGE): Also check the sys_func field. |
| |
| 2012-02-06 H.J. Lu <hongjiu.lu@intel.com> |
| |
| Define RLIM64_INFINITY only if not defined. |
| * resource.c (RLIM64_INFINITY): Define only if it isn't defined. |
| |
| 2012-02-06 H.J. Lu <hongjiu.lu@intel.com> |
| |
| Cast to long for %l in printf. |
| Cast a value to long for %l in printf to avoid compiler warning |
| on systems where it may be long long. |
| |
| * count.c (call_summary_pers): Cast to long. |
| * ipc.c (sys_mq_open, printmqattr): Likewise. |
| * quota.c (decode_cmd_data): Likewise. |
| * resource.c (sys_sysinfo): Likewise. |
| * time.c (tprint_timex): Likewise. |
| |
| 2012-02-06 H.J. Lu <hongjiu.lu@intel.com> |
| |
| Check HAVE_LONG_LONG_OFF_T when printing offset. |
| When HAVE_LONG_LONG_OFF_T is defined, we need to use %llu to print |
| offset. |
| |
| * io.c (sys_sendfile): Check HAVE_LONG_LONG_OFF_T when printing |
| offset. |
| |
| 2012-02-06 H.J. Lu <hongjiu.lu@intel.com> |
| |
| Define old stat functions only if needed. |
| When HAVE_LONG_LONG_OFF_T is defined, those old stat functions aren't |
| used and strace won't link since they use realprintstat which isn't |
| defined when HAVE_LONG_LONG_OFF_T is defined. |
| |
| * file.c (convertoldstat, sys_oldstat, sys_oldfstat, sys_oldlstat): |
| Define only if HAVE_LONG_LONG_OFF_T isn't defined. |
| |
| 2012-02-06 H.J. Lu <hongjiu.lu@intel.com> |
| |
| Print NULL for zero address in sys_mmap64. |
| * mem.c (sys_mmap64): Print NULL for zero address so that it is |
| consistent with sys_mmap. |
| |
| 2012-02-04 Dmitry V. Levin <ldv@altlinux.org> |
| |
| Remove unused sys_pread64 and sys_pwrite64 parsers on Linux. |
| * io.c [HAVE_LONG_LONG_OFF_T]: Remove sys_pread64 and sys_pwrite64 |
| aliases. |
| (sys_pread64, sys_pwrite64): Define these functions only on |
| [SVR4 && _LFS64_LARGEFILE] platform. |
| * linux/mips/syscallent.h: Use sys_pread and sys_pwrite to handle |
| appropriate syscalls. |
| * linux/syscall.h (sys_pread64, sys_pwrite64): Remove. |
| * syscall.c (dumpio): Check sys_pread64 and sys_pwrite64 only on |
| [SVR4 && _LFS64_LARGEFILE] platform. |
| |
| 2012-02-03 Denys Vlasenko <vda.linux@googlemail.com> |
| |
| Trivial changes to help text. No code changes. |
| * strace.c (usage): Tweak help text: remove unpaired closing brackets, |
| make -V and -h sit on separate lines (hard to see them otherwise). |
| |
| 2012-01-29 Denys Vlasenko <vda.linux@googlemail.com> |
| |
| Simple optimizations. |
| text data bss dec hex filename |
| 239474 672 20484 260630 3fa16 strace.before |
| 239234 668 19044 258946 3f382 strace |
| |
| * file.c (sprint_open_modes): Reduce static buffer size. |
| Simplify separator printing. |
| * signal.c (sprintsigmask): Reduce static buffer size. |
| Simplify separator printing and printing of almost full masks. |
| Use stpcpy instead of sprintf and strcpy+strlen. |
| * strace.c (startup_child): Don't strchr() for ':' twice in a row. |
| * util.c (sprintflags): Exit loop early if possible. |
| |
| 2012-01-29 Denys Vlasenko <vda.linux@googlemail.com> |
| |
| Trivial optimization. |
| * strace.c (cleanup): Read 'interrupted' volatile variable only once. |
| |
| 2012-01-29 Denys Vlasenko <vda.linux@googlemail.com> |
| |
| Make interactive-ness directly controllable via command line option. |
| Defaults are often ok, but when they are not, people get confused. |
| "Why can't I kill strace?" and "Why strace dies on ^C when I want |
| to _tracee_ to die instead?" are typical complaints. |
| |
| * strace.c: Replace 'interactive' variable with 'opt_intr' variable. |
| Define INTR_foo constants for its possible values. |
| Define 'interactive' as a macro. |
| (usage): Document -I n option. |
| (main): Parse -I n option, modify signal handling to accomidate new |
| -I 1 and -I 4 modes. |
| |
| 2012-01-29 Denys Vlasenko <vda.linux@googlemail.com> |
| |
| Suppress compiler warning. |
| * strace.c (trace): Frame potentially unused label with ifdef/endif. |
| |
| On Ctrl-C induced detach, send SIGINT to child tracee, not SIGTERM. |
| * strace.c (interrupt): Remember signal number. |
| (cleanup): If we exiting due to signal, send that signal to child tracee. |
| |
| 2012-01-29 Denys Vlasenko <vda.linux@googlemail.com> |
| |
| Add experimental code to use PTRACE_SEIZE, disabled by default. |
| All new code is predicated on "ifdef USE_SEIZE". If it is not defined, |
| behavior is not changed. |
| |
| If USE_SEIZE is enabled and run-time check shows that PTRACE_SEIZE works, then: |
| - All attaching is done with PTRACE_SEIZE + PTRACE_INTERRUPT. |
| This means that we no longer generate (and possibly race with) SIGSTOP. |
| - PTRACE_EVENT_STOP will be generated if tracee is group-stopped. |
| When we detect it, we issue PTRACE_LISTEN instead of PTRACE_SYSCALL. |
| This leaves tracee stopped. This fixes the inability to SIGSTOP or ^Z |
| a straced process. |
| |
| * defs.h: Add commented-out "define USE_SEIZE 1" and define PTRACE_SEIZE |
| and related constants. |
| * strace.c: New variable post_attach_sigstop shows whether we age going |
| to expect SIGSTOP on attach (IOW: are we going to use PTRACE_SEIZE). |
| (ptrace_attach_or_seize): New function. Uses PTRACE_ATTACH or |
| PTRACE_SEIZE + PTRACE_INTERRUPT to attach to given pid. |
| (startup_attach): Use ptrace_attach_or_seize() instead of ptrace(PTRACE_ATTACH). |
| (startup_child): Conditionally use alternative attach method using PTRACE_SEIZE. |
| (test_ptrace_setoptions_followfork): More robust parameters to PTRACE_TRACEME. |
| (test_ptrace_seize): New function to test whether PTRACE_SEIZE works. |
| (main): Call test_ptrace_seize() while initializing. |
| (trace): If PTRACE_EVENT_STOP is seen, restart using PTRACE_LISTEN in order |
| to not let tracee run. |
| * process.c: Decode PTRACE_SEIZE, PTRACE_INTERRUPT, PTRACE_LISTEN. |
| * util.c (ptrace_restart): Add "LISTEN" to a possible error message. |
| |
| 2012-01-28 Denys Vlasenko <vda.linux@googlemail.com> |
| |
| process_vm_readv gets EINVAL if process is gone (SIGKILLed). Don't complain. |
| * util.c (umoven): Don't complain on EINVAL from process_vm_readv. |
| (umovestr): Likewise. |
| |
| Revert last change. Add a comment to prevent further misunderstanding. |
| * time.c (sys_nanosleep): Display remaining time only on interrupt. |
| |
| Fix nanosleep decoding: second argument was not shown after success. |
| * time.c (sys_nanosleep): Fix bug - inverted is_restart_error() check. |
| * syscall.c (is_restart_error): Remove redundant check. |
| |
| 2012-01-28 Denys Vlasenko <vda.linux@googlemail.com> |
| |
| Use process_vm_readv instead of PTRACE_PEEKDATA to read data blocks. |
| Currently, we use PTRACE_PEEKDATA to read things like filenames and |
| data passed by I/O syscalls. |
| PTRACE_PEEKDATA gets one word per syscall. This is VERY expensive. |
| For example, in order to print fstat syscall, we need to perform |
| more than twenty trips into kernel to fetch one struct stat! |
| |
| Kernel 3.2 got a new syscall, process_vm_readv(), which can be used to |
| copy data blocks out of process' address space. |
| |
| This change uses it in umoven() and umovestr() functions if possible, |
| with fallback to old method if process_vm_readv() fails. |
| If it returns ENOSYS, we don't try to use it anymore, eliminating |
| overhead of trying it on older kernels. |
| |
| Result of "time strace -oLOG ls -l /usr/lib >/dev/null": |
| before patch: 0.372s |
| After patch: 0.262s |
| |
| * util.c (process_vm_readv): Wrapper to call process_vm_readv syscall. |
| (umoven): Use process_vm_readv for block reads of tracee memory. |
| (umovestr): Likewise. |
| * linux/syscall.h: Declare new function sys_process_vm_readv. |
| * process.c (sys_process_vm_readv): Decoder for new syscall. |
| * linux/i386/syscallent.h: Add process_vm_readv, process_vm_writev syscalls. |
| * linux/x86_64/syscallent.h: Likewise. |
| * linux/powerpc/syscallent.h: Likewise. |
| |
| 2012-01-28 Denys Vlasenko <vda.linux@googlemail.com> |
| |
| Fix a case of broken output if last seen syscall was exit. |
| * defs.h: Rename tcp_last to printing_tcp. Explain what it means. |
| Remove printtrailer() function. |
| * process.c (sys_exit): Convert printtrailer() call to "printing_tcp = NULL". |
| * strace.c: Add new variable printing_tcp. |
| (cleanup): Convert printtrailer() call to "printing_tcp = NULL". |
| (trace): Likewise. |
| (trace): Fix checks for incomplete line - it was working wrongly if last syscall was exit. |
| (printleader): Set printing_tcp. |
| (printtrailer): Remove this function. |
| * syscall.c: Remove tcp_last variable. |
| (trace_syscall_entering): Don't set printing_tcp, printleader call now does it. |
| (trace_syscall_exiting): Convert printtrailer() call to "printing_tcp = NULL". |
| |
| 2012-01-28 Denys Vlasenko <vda.linux@googlemail.com> |
| |
| Fix handling of test/threaded_execve.c testcase. |
| Since 3.0, Linux has a way to identify which thread execve'ed. |
| This patch makes use of it in order to properly dispose |
| of disappeared ("superseded") thread leader, |
| and replace it with execve'ed thread. |
| |
| Before this patch, strace was "leaking" thread which exec'ed. |
| It was thinking that it still runs. It would look like this: |
| |
| 18460 pause( <unfinished ...> <=== thread leader |
| 18466 execve("/proc/self/exe", ["exe", "exe"], [/* 47 vars */] <unfinished ...> |
| 18465 +++ exited with 0 +++ <=== exits from other threads |
| 18460 <... pause resumed> ) = 0 |
| |
| The last line is wrong: it's not pause resumed, it's execve resumed. |
| If thread leader would do exit instead of pause, it is much worse: |
| strace panics because it thinks it sees return from exit syscall! |
| |
| And strace isn't aware 18466 (exec'ed thread) is gone. |
| It still thinks it's executes execve syscall. |
| |
| * strace.c: New variable "static char *os_release". |
| (get_os_release): New static function. |
| (main): Call get_os_release to retrieve Linux version. |
| (trace): If we see PTRACE_EVENT_EXEC, retrieve old pid, and if it |
| differs from new one, free one of tcbs and print correct messages. |
| |
| 2012-01-27 Denys Vlasenko <vda.linux@googlemail.com> |
| |
| Fix readlink result display - was printing bogus "..." semi-randomly. |
| * file.c (decode_readlink): Use printstr() instead of printpathn(). |
| |
| Add new test program: test/threaded_execve.c. |
| |
| Make pid2tcb static. |
| * defs.h: Remove pid2tcb declaration. |
| * strace.c (pid2tcb): Make this function static. |
| |
| 2012-01-24 Denys Vlasenko <vda.linux@googlemail.com> |
| |
| Per Dmitry's request, remove paranoid check in verror_msg() |
| * strace.c (verror_msg): Remove redundant check for msg != NULL. |
| |
| More robust error check for vasprintf. |
| * strace.c (verror_msg): More robust error check for vasprintf. |
| |
| 2012-01-24 Denys Vlasenko <vda.linux@googlemail.com> |
| |
| Slightly more compact handling of argv[] |
| text data bss dec hex filename |
| 238274 672 20484 259430 3f566 strace.before |
| 238226 672 20484 259382 3f536 strace |
| |
| * strace.c (main): Slightly more compact handling of argv[] |
| |
| 2012-01-24 Denys Vlasenko <vda.linux@googlemail.com> |
| |
| Trivial optimization. |
| * strace.c: Set default interactive = 1 statically instead |
| of doing it in main(). |
| |
| 2012-01-24 Denys Vlasenko <vda.linux@googlemail.com> |
| |
| Allocate -o OUTFILE buffer only if needed. |
| text data bss dec hex filename |
| 238258 668 28676 267602 41552 strace.before |
| 238274 668 20484 259426 3f562 strace |
| |
| * strace.c (main): Allocate -o OUTFILE buffer only if needed: |
| unused buffer in bss is not entirely free. |
| |
| 2012-01-24 Denys Vlasenko <vda.linux@googlemail.com> |
| |
| Use single fprintf in verror_msg() |
| This change partially reverts commit 44d0532. |
| |
| In code before commit 44d0532, single fprintf was used on purpose: |
| we want to send entire message as one write() call. Since stderr |
| is unbuffered, separate fprintf's to it always result in separate |
| writes, they are not coalesced. If we aren't the only program |
| which writes to this particular stderr, this may result |
| in interleaved messages. |
| |
| Since this function is not performance critical, I guess |
| it's ok to make it less efficient. |
| |
| * strace.c (verror_msg): Attempt to print the message in single |
| write operation. Use separate fprintfs as a fallback if malloc fails. |
| |
| 2012-01-21 Denys Vlasenko <vda.linux@googlemail.com> |
| |
| Improve code readability (logic is unchanged) |
| * util.c (umoven): Move assignment out of function call. Make assignment |
| to a flag variable later, closer to the place where it will be used. |
| (umovestr): Likewise. |
| (uload): Likewise. |
| |
| 2012-01-20 Denys Vlasenko <vda.linux@googlemail.com> |
| |
| Change umovestr API: return > 0 instead of 0 if NUL was seen. |
| * pathtrace.c (upathmatch): Adjust umovestr return value check for new API. |
| * util.c (printpathn): Use umovestr() > 0 return value for more efficient |
| (and robust - we don't depend on "no overwrote past NUL" behavior anymore) |
| handling of terminating NUL. |
| (printstr): Remove useless NUL placement before umovestr() call. |
| Allocate 1 byte more to outstr[] array - for NUL. |
| (umovestr): Change to return 1 if NUL was seen. |
| |
| umovestr result may have no NUL, use "%.*s" instead of "%s" to print it. |
| * system.c (sys_mount): Be careful when printing umovestr result, |
| it may have no terminating NUL. |
| (sys_sysmips): Likewise. |
| |
| 2012-01-20 Denys Vlasenko <vda.linux@googlemail.com> |
| |
| Eliminate code duplication in time printing, reduce a few static buffers |
| text data bss dec hex filename |
| 238454 664 28772 267890 41672 strace.before |
| 238106 664 28676 267446 414b6 strace |
| |
| * defs.h: Add TIMESPEC_TEXT_BUFSIZE and TIMEVAL_TEXT_BUFSIZE defines. |
| Add 'int special' parameter to sprinttv(). |
| * time.c (sprinttv): Add 'int special' parameter, and use it |
| similarly to 'int special' parameter of printtv_bitness(). |
| (printtv_bitness): Use sprinttv() instead of duplicating its code. |
| (print_timespec): Use sprint_timespec() instead of duplicating |
| its code. |
| * desc.c (decode_select): Use TIMEVAL_TEXT_BUFSIZE instead of 128 |
| when checking remaining buffer size. |
| * net.c (sys_recvmsg): Use TIMESPEC_TEXT_BUFSIZE instead of 128 |
| for static buffer size. |
| * stream.c (decode_poll): Use TIMESPEC_TEXT_BUFSIZE instead of 128 |
| when checking remaining buffer size. |
| |
| 2012-01-19 Denys Vlasenko <dvlasenk@redhat.com> |
| |
| Reduce bss usage and speed up string printing. |
| text data bss dec hex filename |
| 237913 660 49284 287857 46471 strace.before |
| 237973 660 28772 267405 4148d strace |
| |
| This reduces L1 D-cache pressure a bit: instead of dirtying |
| 20k of bss, we will reuse already dirty stack area. |
| |
| * util.c (printpathn): Use on-stack buffers instead of static ones. |
| Saves 5*MAXPATHLEN in bss. |
| (printstr): Use tprints() instead of tprintf("%s") when printing |
| formatted string. May be a bit faster, depending on libc. |
| |
| 2012-01-18 Andreas Schwab <schwab@linux-m68k.org> |
| |
| Add support for compat_statfs64. |
| * file.c (struct compat_statfs64, printcompat_statfs64): Define. |
| (sys_statfs64, sys_fstatfs64): Use it. |
| |
| Add support for statfs64.f_flags. |
| * file.c (printstatfs64): Print f_flags if available. |
| |
| Fix missing parens. |
| * signal.c (sys_sigreturn): Add missing parens. |
| |
| 2012-01-18 Denys Vlasenko <dvlasenk@redhat.com> |
| |
| Get rid of TCB_SIGTRAPPED. |
| On attempts to block or set SIGTRAP handler, |
| for example, using sigaction syscall, we generate |
| an additional SIGSTOP. |
| |
| This change gets rid of this SIGSTOP sending/ignoring. |
| It appears to work just fine. |
| |
| It also works if I force strace to not use PTRACE_O_TRACESYSGOOD, |
| which means strace stops will be marked with SIGTRAP, |
| not (SIGTRAP | 0x80) - I wondered maybe that's when |
| this hack is needed. |
| |
| So, why we even have TCB_SIGTRAPPED? No one knows. It predates |
| version control: this code was present in the initial commit, |
| in 1999. No adequate comments, either. |
| |
| Moreover, TCB_SIGTRAPPED is not set in sys_rt_sigaction |
| and sys_sigprocmask syscalls - the ones which are most usually |
| used to implement signal blocking, it is only set in obsolete |
| sys_signal, sys_sigaction, sys_sigsetmask, and in some dead |
| non-Linux code. |
| |
| I think whatever bug it was fixing is gone long ago - |
| at least as long as sys_rt_sigaction is used by glibc. |
| Again, since glibc (and uclibc) uses sys_rt_sigaction |
| and sys_sigprocmask, modified code paths are not used |
| by most programs anyway. |
| |
| * defs.h: Remove definition of TCB_SIGTRAPPED. |
| * signal.c (sys_sigvec): Don't set TCB_SIGTRAPPED and don't send SIGSTOP. |
| (sys_sigsetmask): Likewise. |
| (sys_sigaction): Likewise. |
| (sys_signal): Likewise. |
| * strace.c (trace): Remove code which executes if TCB_SIGTRAPPED is set. |
| |
| 2012-01-18 Denys Vlasenko <dvlasenk@redhat.com> |
| |
| When we write log, flush output buffers in a few more cases. |
| I observed a case when signal delivery message was buffered |
| by stdio until it was flushed along with the next syscall |
| entry message. |
| |
| * strace.c (trace): Flush output buffers in a few more cases. |
| |
| 2012-01-18 Denys Vlasenko <dvlasenk@redhat.com> |
| |
| Fix old sigaction display. |
| * signal.c (sys_sigaction): Fix display of sigaction with |
| SIG_DFL/SIG_IGN handlers. |
| |
| Change x86_64_regs struct type from pt_regs to user_regs_struct. |
| * syscall.c: Change x86_64_regs struct type from |
| pt_regs to user_regs_struct, and explain the change in comment. |
| |
| 2012-01-17 Dmitry V. Levin <ldv@altlinux.org> |
| |
| Fix struct pt_regs declaration on i386 and x86-64. |
| * defs.h [I386] (i386_regs): Replace definition with declaration. |
| [X86_64] (x86_64_regs): Remove. |
| * syscall.c [X86_64] (x86_64_regs): Make static. |
| |
| 2012-01-12 Denys Vlasenko <dvlasenk@redhat.com> |
| |
| Make ERESTARTxyz messages more descriptive. |
| There is widespread confusion about exact meaning |
| of ERESTARTxyz codes. Before this change, we were showing |
| all four of them the same: as "(To be restarted)". |
| |
| This change prints better explanations for these codes, |
| and contains verbose comments which explain *why* we display |
| codes that way - or else someone confused |
| is bound to come later and mangle them again. |
| New messages are: |
| |
| ERESTARTSYS (To be restarted if SA_RESTART is set) |
| ERESTARTNOINTR (To be restarted) |
| ERESTARTNOHAND (Interrupted by signal) |
| ERESTART_RESTARTBLOCK (Interrupted by signal) |
| |
| * syscall.c (trace_syscall_exiting): Make ERESTARTxyz messages |
| more descriptive. |
| |
| 2012-01-10 Denys Vlasenko <dvlasenk@redhat.com> |
| |
| Fix sigreturn arg count from 1 to 0 on all architectures. |
| * linux/alpha/syscallent.h: Change [rt_]sigreturn's arg count to 0. |
| * linux/arm/syscallent.h: Likewise. |
| * linux/avr32/syscallent.h: Likewise. |
| * linux/bfin/syscallent.h: Likewise. |
| * linux/m68k/syscallent.h: Likewise. |
| * linux/microblaze/syscallent.h: Likewise. |
| * linux/mips/syscallent.h: Likewise. |
| * linux/powerpc/syscallent.h: Likewise. |
| * linux/sh/syscallent.h: Likewise. |
| * linux/sh64/syscallent.h: Likewise. |
| * linux/sparc/syscallent.h: Likewise. |
| * linux/tile/syscallent.h: Likewise. |
| |
| 2012-01-10 Denys Vlasenko <dvlasenk@redhat.com> |
| |
| Display mask on enter to sigreturn, not on exit. |
| sys_sigreturn() performs ugly manipulations in order to show |
| signal mask which is restored by this syscall: on syscall entry, |
| fetches it from the stack, saves it in tcp->u_arg[] |
| (where it used to overflow this array - fixed sometime ago), |
| then retrieves the mask and displays it on syscall exit. |
| |
| Apparently, the motivation is to make it slightly more obvious |
| to user that signal mask is restored only when this syscall returns. |
| IMO, this hardly justifies the necessary hacks. It is much easier |
| to display the mask at the point when we fetch it - on syscall entry. |
| |
| While at it, I made it so that we do display returned value/errno. |
| I see no point in hiding it and showing uninformative "= ?" instead. |
| |
| Example of pause() being interrupted by ALRM which has installed handler |
| which re-arms ALRM: |
| |
| Before the patch: |
| |
| rt_sigsuspend([INT]) = ? ERESTARTNOHAND (To be restarted) |
| --- {si_signo=SIGALRM, si_code=SI_KERNEL} (Alarm clock) --- |
| alarm(1) = 0 |
| sigreturn() = ? (mask now [INT]) |
| |
| After: |
| |
| rt_sigsuspend([INT]) = ? ERESTARTNOHAND (To be restarted) |
| --- {si_signo=SIGALRM, si_code=SI_KERNEL} (Alarm clock) --- |
| alarm(1) = 0 |
| sigreturn() (mask [INT]) = -1 EINTR (Interrupted system call) |
| |
| * defs.h: Declare struct pt_regs i386_regs and struct pt_regs x86_64_regs. |
| * syscall.c: Remove "static" keywork from these structures' definitions. |
| * signal.c (sys_sigreturn): Display mask on enter, not on exit. |
| |
| 2012-01-04 Denys Vlasenko <dvlasenk@redhat.com> |
| |
| Do not detach from tracee which experienced ptrace error. |
| Before this patch, if a thread got nuked by exit in another thread |
| and we happened to poke it at the same time, we print "????(" thingy |
| and detach the thread. Since we removed "detach before death" logic, |
| this no longer matches the behavior of other threads. |
| Before patch: |
| [pid 1780] exit_group(1) = ? |
| [pid 1778] ????( <unfinished ...> |
| Process 1778 detached |
| [pid 5860] +++ exited with 1 +++ |
| After: |
| [pid 17765] exit_group(1) = ? |
| [pid 21680] ????( <unfinished ...> |
| [pid 17791] +++ exited with 1 +++ |
| [pid 21680] +++ exited with 1 +++ |
| |
| * strace (trace): Do not detach from tracee which experienced ptrace error. |
| |
| 2012-01-04 Denys Vlasenko <dvlasenk@redhat.com> |
| |
| Remove sig parameter from detach() |
| * strace.c (detach): Drop sig parameter - it is zero in all calls. |
| (cleanup): Don't pass sig = 0 to detach() call. |
| (detach): Ditto. |
| |
| 2011-12-26 Dmitry V. Levin <ldv@altlinux.org> |
| |
| Enhance decoding for personalities with small wordsize. |
| * util.c (umoven, umovestr) [SUPPORTED_PERSONALITIES > 1]: If current |
| personality's wordsize is less than sizeof(long), use only significant |
| bits of the given address. |
| |
| 2011-12-23 Dmitry V. Levin <ldv@altlinux.org> |
| |
| Enhance personality switching. |
| On syscall entry, save current personality in the tcb structure |
| along with scno. |
| On syscall exit, restore current personality from the tcb structure. |
| * defs.h (struct tcb) [SUPPORTED_PERSONALITIES > 1]: Add currpers |
| field. |
| * strace.c (alloc_tcb) [SUPPORTED_PERSONALITIES > 1]: Initialize |
| tcp->currpers. |
| * syscall.c (update_personality) [SUPPORTED_PERSONALITIES > 1]: New |
| function. |
| (get_scno, trace_syscall_exiting): Use it. |
| |
| Reported-by: Michael A Fetterman <mafetter@nvidia.com> |
| |
| 2011-12-01 Dmitry V. Levin <ldv@altlinux.org> |
| |
| * net.c (socktcpoptions): Add more TCP_* constants from linux/tcp.h. |
| Reported-by: Rick Jones <rick.jones2@hp.com> |
| |
| 2011-12-01 Heiko Carstens <heiko.carstens@de.ibm.com> |
| |
| Fix sys_ipc/sys_semtimedop decoding on s390. |
| The s390 kernel sys_ipc system call only takes five arguments instead of |
| six arguments which the common code sys_ipc implementation takes. |
| One of the arguments of the sys_semtimedop subcall is therefore passed in |
| a different register than in the common code implementation. |
| This leads to broken decoding of the timespec argument: |
| |
| semtimedop(0, 0x3ffffb43832, 1, {...}) = -1 EAGAIN |
| |
| Fixed it looks like this: |
| |
| semtimedop(0, 0x3ffffc2c842, 1, {0, 10000000}) = -1 EINTR |
| |
| * linux/ipc.c (sys_semtimedop): Fix timespec decoding on s390. |
| |
| 2011-11-29 Dmitry V. Levin <ldv@altlinux.org> |
| |
| strace.c (trace): Fix compilation warning. |
| |
| 2011-11-28 Dmitry V. Levin <ldv@altlinux.org> |
| |
| linux/syscall.h: Remove redundant function declarations. |
| Remove 51 function declarations aliased to other declarations in |
| linux/dummy.h file. |
| |
| linux/syscall.h: Sort function declarations. |
| |
| linux/syscall.h: Place one function declaration per line. |
| |
| Remove redundant parsers. |
| * desc.c (sys_dup): Remove. |
| * file.c (sys_pivotroot, sys_rmdir, sys_fchdir, sys_chroot, sys_fchroot, |
| sys_unlink, sys_symlink, sys_rename): Remove. |
| * linux/syscall.h (sys_chroot, sys_dup, sys_fchdir, sys_pivotroot, |
| sys_rename, sys_rmdir, sys_symlink, sys_unlink): Remove. |
| * linux/dummy.h: Add aliases for sys_chroot, sys_dup, sys_pivotroot, |
| sys_rename, sys_rmdir, sys_symlink, sys_unlink. |
| * pathtrace.c (pathtrace_match): Update. |
| * sunos4/dummy.h: Add aliases for sys_chroot, sys_dup, sys_fchdir, |
| sys_fchroot, sys_rename, sys_rmdir, sys_symlink, sys_unlink. |
| * svr4/dummy.h: Likewise. |
| * sunos4/syscall.h (sys_chroot, sys_dup, sys_fchdir, sys_fchroot, |
| sys_rename, sys_rmdir, sys_symlink, sys_unlink): Remove. |
| * svr4/syscall.h (sys_chroot, sys_dup, sys_fchdir, sys_fchroot, |
| sys_rename, sys_rmdir, sys_symlink, sys_unlink): Remove. |
| |
| Reflect the fact that nfsservctl syscall was removed from linux kernels. |
| linux/dummy.h: Move nfsservctl to "unimplemented" section. |
| |
| 2011-11-27 Dmitry V. Levin <ldv@altlinux.org> |
| |
| x86_64: add getcpu syscall entry. |
| * linux/x86_64/syscallent.h: Add syscall entry for getcpu. |
| |
| 2011-11-26 Dmitry V. Levin <ldv@altlinux.org> |
| |
| Add syscall entries for new linux syscalls. |
| * linux/dummy.h: Add printargs parsers for new syscalls. |
| * linux/arm/syscallent.h: Add entries for sys_clock_adjtime, |
| sys_name_to_handle_at, sys_open_by_handle_at, sys_sendmmsg, sys_setns |
| and sys_syncfs. |
| * linux/i386/syscallent.h: Likewise. |
| * linux/ia64/syscallent.h: Likewise. |
| * linux/mips/syscallent.h: Likewise. |
| * linux/powerpc/syscallent.h: Likewise. |
| * linux/sh/syscallent.h: Likewise. |
| * linux/sh64/syscallent.h: Likewise. |
| * linux/sparc/syscallent.h: Likewise. |
| * linux/x86_64/syscallent.h: Likewise. |
| * linux/alpha/syscallent.h: Add entries for sys_clock_adjtime, |
| sys_name_to_handle_at, sys_open_by_handle_at, sys_setns and sys_syncfs. |
| * linux/m68k/syscallent.h: Likewise. |
| * linux/microblaze/syscallent.h: Likewise. |
| * linux/s390/syscallent.h: Likewise. |
| * linux/s390x/syscallent.h: Likewise. |
| * linux/avr32/syscallent.h: Add entry for sys_setns. |
| * linux/bfin/syscallent.h: Add entries for sys_sendmmsg and sys_setns. |
| * linux/hppa/syscallent.h: Add entries for sys_clock_adjtime, |
| fanotify_init, fanotify_mark, sys_name_to_handle_at, |
| sys_open_by_handle_at, sys_sendmmsg, sys_setns and sys_syncfs. |
| |
| Fix prctl syscall entries. |
| * linux/mips/syscallent.h: Fix prctl handler. |
| * linux/tile/syscallent.h: Likewise. |
| |
| arm: fix io_* syscall entries. |
| * linux/arm/syscallent.h: Fix handlers for io_setup, io_destroy, |
| io_getevents, io_submit and io_cancel. |
| |
| Fix mincore syscall entries. |
| * linux/arm/syscallent.h: Fix mincore handler. |
| * linux/avr32/syscallent.h: Likewise. |
| * linux/mips/syscallent.h: Likewise. |
| * linux/sh/syscallent.h: Likewise. |
| * linux/sh64/syscallent.h: Likewise. |
| |
| 2011-11-25 Dmitry V. Levin <ldv@altlinux.org> |
| |
| Fix sendmsg syscall entries. |
| * linux/arm/syscallent.h: Fix number of sendmsg arguments. |
| * linux/avr32/syscallent.h: Likewise. |
| * linux/bfin/syscallent.h: Likewise. |
| * linux/hppa/syscallent.h: Likewise. |
| * linux/i386/syscallent.h: Likewise. |
| * linux/m68k/syscallent.h: Likewise. |
| * linux/microblaze/syscallent.h: Likewise. |
| * linux/powerpc/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/tile/syscallent.h: Likewise. |
| * linux/x86_64/syscallent.h: Likewise. |
| |
| Fix epoll_wait syscall entries. |
| * linux/arm/syscallent.h: Fix epoll_wait flags and handler. |
| * linux/m68k/syscallent.h: Fix epoll_wait flags. |
| * linux/microblaze/syscallent.h: Fix number of epoll_wait arguments. |
| * linux/sh/syscallent.h: Likewise. |
| * linux/sh64/syscallent.h: Likewise. |
| * linux/x86_64/syscallent.h: Likewise. |
| |
| Fix epoll_ctl syscall entries. |
| * linux/arm/syscallent.h: Fix epoll_ctl flags and handler. |
| * linux/m68k/syscallent.h: Fix epoll_ctl flags. |
| * linux/x86_64/syscallent.h: Fix number of epoll_ctl arguments. |
| |
| arm: fix epoll_create syscall entry. |
| * linux/arm/syscallent.h: Fix epoll_create handler. |
| |
| Fix mlockall syscall entries. |
| * linux/arm/syscallent.h: Fix number of mlockall arguments. |
| * linux/avr32/syscallent.h: Likewise. |
| * linux/bfin/syscallent.h: Likewise. |
| * linux/i386/syscallent.h: Likewise. |
| * linux/m68k/syscallent.h: Likewise. |
| * linux/microblaze/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/tile/syscallent.h: Likewise. |
| * linux/x86_64/syscallent.h: Likewise. |
| |
| Fix epoll_pwait syscall entries. |
| * linux/alpha/syscallent.h: Fix number of epoll_pwait arguments. |
| * linux/arm/syscallent.h: Likewise. |
| * linux/avr32/syscallent.h: Likewise. |
| * linux/bfin/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.h: Likewise. |
| * linux/powerpc/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/tile/syscallent.h: Likewise. |
| * linux/x86_64/syscallent.h: Likewise. |
| |
| Fix reboot syscall entries. |
| * linux/alpha/syscallent.h: Fix number of reboot arguments. |
| * linux/arm/syscallent.h: Likewise. |
| * linux/avr32/syscallent.h: Likewise. |
| * linux/bfin/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.h: Likewise. |
| * linux/powerpc/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/tile/syscallent.h: Likewise. |
| * linux/x86_64/syscallent.h: Likewise. |
| |
| Fix swapon syscall entries. |
| * linux/arm/syscallent.h: Fix number of swapon arguments. |
| * linux/avr32/syscallent.h: Likewise. |
| * linux/bfin/syscallent.h: Likewise. |
| * linux/i386/syscallent.h: Likewise. |
| * linux/m68k/syscallent.h: Likewise. |
| * linux/microblaze/syscallent.h: Likewise. |
| * linux/mips/syscallent.h: Likewise. |
| * linux/powerpc/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/tile/syscallent.h: Likewise. |
| * linux/x86_64/syscallent.h: Likewise. |
| * linux/alpha/syscallent.h: Fix number of swapon arguments, add TF flag. |
| * linux/hppa/syscallent.h: Likewise. |
| * linux/ia64/syscallent.h: Likewise. |
| |
| Fix sgetmask and ssetmask syscall entries. |
| * linux/hppa/syscallent.h: Fix sgetmask and ssetmask entries. |
| * linux/powerpc/syscallent.h: Likewise. |
| * linux/sparc/syscallent.h: Likewise. |
| * linux/tile/syscallent.h: Likewise. |
| |
| Rename siggetmask to sgetmask and sigsetmask to ssetmask. |
| * linux/arm/syscallent.h: Rename siggetmask to sgetmask and |
| sigsetmask to ssetmask. |
| * linux/bfin/syscallent.h: Likewise. |
| * linux/i386/syscallent.h: Likewise. |
| * linux/m68k/syscallent.h: Likewise. |
| * linux/microblaze/syscallent.h: Likewise. |
| * linux/mips/syscallent.h: Likewise. |
| * linux/sh/syscallent.h: Likewise. |
| * linux/sh64/syscallent.h: Likewise. |
| * linux/ia64/syscallent.h: Rename sys_sgetmask to sys_siggetmask, |
| sys_ssetmask to sys_sigsetmask. |
| |
| Add TRACE_IPC flag to sys_ipc syscall entries. |
| * linux/arm/syscallent.h: Add TI flag to sys_ipc entry. |
| * linux/avr32/syscallent.h: Likewise. |
| * linux/bfin/syscallent.h: Likewise. |
| * linux/i386/syscallent.h: Likewise. |
| * linux/m68k/syscallent.h: Likewise. |
| * linux/microblaze/syscallent.h: Likewise. |
| * linux/mips/syscallent.h: Likewise. |
| * linux/powerpc/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. |
| |
| 2011-11-05 Dmitry V. Levin <ldv@altlinux.org> |
| |
| gitlog-to-changelog: update from gnulib. |
| * gitlog-to-changelog: Update from gnulib. |
| * Makefile.am: Add --append-dot to gitlog-to-changelog invocation. |
| |
| 2011-10-22 Denys Vlasenko <dvlasenk@redhat.com> |
| |
| Decode TIOCSCTTY's third parameter. |
| * term.c (term_ioctl): Decode TIOCSCTTY's third parameter. |
| |
| 2011-10-14 Dmitry V. Levin <ldv@altlinux.org> |
| |
| Remove useless and obsolete "#if DONE" sections. No code changes. |
| * linux/dummy.h: Remove "#if DONE" section. |
| * linux/sparc/dummy2.h: Likewise. |
| * linux/sparc64/dummy2.h: Likewise. |
| * sunos4/dummy.h: Likewise. |
| * svr4/dummy.h: Likewise. |
| |
| Add names for dummy parsers. No code changes. |
| * linux/dummy.h: Add aliases to printargs() for those of dummy parsers |
| that had no own names before. |
| * linux/*/syscallent.h: Use these new names instead of printargs. |
| |
| Sort definitions of dummy parsers. No code changes. |
| * linux/dummy.h: Sort definitions of parsers implemented as aliases |
| to printargs(). |
| |
| 2011-10-14 Mike Frysinger <vapier@gentoo.org> |
| |
| sys_epoll_create1: decode flag arguments correctly. |
| * desc.c (epollflags): Define. |
| (sys_epoll_create1): Use epollflags to printflags. Change "O" to "EPOLL". |
| |
| Reported-by: Марк Коренберг <socketpair@gmail.com> |
| |
| 2011-10-11 Dmitry V. Levin <ldv@altlinux.org> |
| |
| Implement decoding of splice, tee and vmsplice(2) syscalls. |
| * io.c (print_loff_t): New function. |
| (sys_sendfile64): Use it. |
| (splice_flags): New xlat structure. |
| (sys_tee, sys_splice, sys_vmsplice): New functions. |
| * linux/syscall.h (sys_tee, sys_splice, sys_vmsplice): Declare them. |
| * linux/*/syscallent.h: Use them. |
| |
| 2011-10-11 Dmitry V. Levin <ldv@altlinux.org> |
| |
| Fix epoll_wait and epoll_pwait decoding. |
| * desc.c (epoll_wait_common): Print "maxevents" and "timeout" arguments |
| as integers. |
| |
| Reported-by: Марк Коренберг <socketpair@gmail.com> |
| |
| 2011-10-11 Dmitry V. Levin <ldv@altlinux.org> |
| |
| Decode EPOLLRDHUP. |
| * desc.c (epollevents): Add EPOLLRDHUP. |
| |
| Reported-by: Марк Коренберг <socketpair@gmail.com> |
| |
| 2011-10-11 Dmitry V. Levin <ldv@altlinux.org> |
| |
| Remove unreachable code in umoven() and umovestr(). |
| * util.c (umoven, umovestr): Remove unreachable code. |
| |
| Reported-by: Weichuan Yan <wchyan@marvell.com> |
| |
| 2011-09-05 Denys Vlasenko <dvlasenk@redhat.com> |
| |
| Do post-attach initialization earlier; fix "we ignore SIGSTOP on NOMMU" bug |
| We set ptrace options when we see post-attach SIGSTOP. |
| This is wrong: it's better to set them right away on the very first |
| stop (whichever it will be). It also will make adding SEIZE support easier, |
| since SEIZE has no post-attach SIGSTOP. |
| |
| We do it by adding a new bit, TCB_IGNORE_ONE_SIGSTOP, and treating |
| TCB_STARTUP and TCB_IGNORE_ONE_SIGSTOP as two slightly different things. |
| |
| * defs.h: Add a new flag bit, TCB_IGNORE_ONE_SIGSTOP. |
| * process.c (internal_fork): Set TCB_IGNORE_ONE_SIGSTOP on a newly added child. |
| * strace.c (startup_attach): Set TCB_IGNORE_ONE_SIGSTOP after attach. |
| Fix a case when "strace -p PID" found PID dead but sone other of its threads |
| still alive. |
| (startup_child): Set TCB_IGNORE_ONE_SIGSTOP after attach, _if needed_. |
| This fixes a bogus case where we can ignore a _real_ SIGSTOP on NOMMU. |
| (detach): Perform anti-SIGSTOP dance only if TCB_IGNORE_ONE_SIGSTOP is set, |
| not if TCB_STARTUP is set. |
| (trace): Set TCB_IGNORE_ONE_SIGSTOP after attach. |
| Clear TCB_STARTUP and initialize tracee on the very first tracee stop. |
| Clear TCB_IGNORE_ONE_SIGSTOP when SIGSTOP is seen. |
| |
| 2011-09-05 Denys Vlasenko <dvlasenk@redhat.com> |
| |
| Get rid of TCB_ATTACH_DONE. |
| * defs.h: Remove TCB_ATTACH_DONE constant. |
| * strace.c (startup_attach): Use TCB_STARTUP instead of TCB_ATTACH_DONE |
| to distinquish attached from not-yet-attached threads. |
| |
| 2011-09-05 Denys Vlasenko <dvlasenk@redhat.com> |
| |
| Set TCB_STARTUP only _after_ we attached. |
| This fixes logic in detach() which thinks that TCB_STARTUP |
| means that we are already attached, but did not see SIGSTOP yet. |
| This also allows to get rid of TCB_ATTACH_DONE flag. |
| |
| * process.c (internal_fork): Set TCB_STARTUP after attach. |
| * strace.c (startup_attach): Likewise. |
| (startup_child): Likewise. |
| (alloc_tcb): Do not set TCB_STARTUP on tcb allocation - we are |
| not attached yet. |
| (trace): Set TCB_STARTUP when we detech an auto-attached child. |
| |
| 2011-09-02 Denys Vlasenko <dvlasenk@redhat.com> |
| |
| Simple optimizations in trace() |
| * strace.c (trace): Calculate WSTOPSIG(status) once, |
| unify code paths to ptrace(PTRACE_SYSCALL). |
| |
| Trivial fixes on error paths. |
| * strace.c (startup_attach): Emit message on fork() failure. |
| (startup_child): Remove non-informative comment. |
| * util.c (ptrace_restart): use perror_msg() on error instead of fprintf(). |
| |
| 2011-09-01 Denys Vlasenko <dvlasenk@redhat.com> |
| |
| Fix compile failure introduced by last commit. |
| * desc.c (decode_select): Fix double definition of nfds. |
| |
| 2011-09-01 Denys Vlasenko <dvlasenk@redhat.com> |
| |
| Roll back "die on malloc failure" behaviour a bit. |
| After recent change, select(2^31-1, NULL, NULL, NULL) |
| would make strace exit. This change caps fdsize so that |
| it is always in [0, 1025*1024], IOW: we will try to allocate at most |
| 1 megabyte, which in practice will almost always work, |
| unlike malloc(2Gig). |
| |
| * desc.c (decode_select): Cap fdsize to 1024*1024. |
| * pathtrace.c (pathtrace_match): Cap fdsize to 1024*1024. |
| * file.c (sys_getdents): Cap len to 1024*1024. |
| (sys_getdents64): Cap len to 1024*1024. |
| * util.c (dumpiov): Refuse to process iov with more than 1024*1024 |
| elements. Don't die on malloc failure. |
| (dumpstr): Don't die on malloc failure. |
| |
| 2011-09-01 Denys Vlasenko <dvlasenk@redhat.com> |
| |
| Add stpcpy to autoconf machinery. |
| * configure.ac: Add stpcpy to AC_CHECK_FUNCS. |
| * defs.h: Frame stpcpy with "if !defined HAVE_STPCPY". |
| * util.c: Likewise. |
| |
| Simplify sprinttv() |
| * time.c (sprinttv): Trivial simplifications. |
| |
| * desc.c (decode_select): Set tcp->auxstr as late as possible. |
| |
| 2011-09-01 Denys Vlasenko <dvlasenk@redhat.com> |
| |
| Reformat setuid-ing code in startup_child() |
| New code does the same as old one, but is more readable (I hope). |
| |
| * strace.c (startup_child): Reformat setuid-ing code. |
| |
| 2011-09-01 Denys Vlasenko <dvlasenk@redhat.com> |
| |
| Minor tweaks in startup_child(). Logic isn't changed (but code is) |
| * strace.c (startup_attach): Tweak comment. |
| (startup_child): Move common code out of ifdef. |
| Indent nested ifdefs. Tweak comments. Remove two |
| unnecessary calls to getpid(). |
| |
| Use tprints with literal strings, it may be faster than tprintf. |
| * bjm.c: Replace tprintf("str") with tprints("str"). |
| * block.c: Likewise. |
| * desc.c: Likewise. |
| * file.c: Likewise. |
| * io.c: Likewise. |
| * ipc.c: Likewise. |
| * mem.c: Likewise. |
| * net.c: Likewise. |
| * proc.c: Likewise. |
| * process.c: Likewise. |
| * quota.c: Likewise. |
| * resource.c: Likewise. |
| * scsi.c: Likewise. |
| * signal.c: Likewise. |
| * sock.c: Likewise. |
| * strace.c: Likewise. |
| * stream.c: Likewise. |
| * syscall.c: Likewise. |
| * system.c: Likewise. |
| * term.c: Likewise. |
| * time.c: Likewise. |
| * util.c: Likewise. |
| |
| Fix "format not a string literal" warning caused by tprintf(str) |
| * defs.h: Declare tprints(). |
| * strace.c: Define tprints(). |
| (tabto): Use tprints(str), since tprintf(str) was throwing a warning. |
| * desc.c: Use tprints(str) instead of tprintf("%s", str). |
| * file.c: Likewise. |
| * io.c: Likewise. |
| * net.c: Likewise. |
| * process.c: Likewise. |
| * signal.c: Likewise. |
| * syscall.c: Likewise. |
| * util.c: Likewise. |
| |
| 2011-08-31 Denys Vlasenko <dvlasenk@redhat.com> |
| |
| Add README-linux-ptrace file. |
| I tried to push this doc to Michael Kerrisk <mtk.manpages@gmail.com>, |
| but got no reply. To avoid losing the document, let it live |
| in strace tree for now. |
| |
| 2011-08-31 Denys Vlasenko <dvlasenk@redhat.com> |
| |
| Make out-of-memory handling more uniform. |
| This fixes one real bug in dumpstr(). |
| |
| * defs.h: Declare die_out_of_memory(). |
| * strace.c (die_out_of_memory): New function. |
| (strace_popen): If allocation fails, call die_out_of_memory(). |
| (main): Likewise. |
| (expand_tcbtab): Likewise. |
| (rebuild_pollv): Likewise. |
| * count.c (count_syscall): Likewise. |
| (call_summary_pers): Likewise. |
| * desc.c (decode_select): Likewise. |
| * file.c (sys_getdents): Likewise. |
| (sys_getdents64): Likewise. |
| (sys_getdirentries): Likewise. |
| * pathtrace.c (pathtrace_match): Likewise. |
| * syscall.c (qualify): Likewise. |
| * util.c (printstr): Likewise. |
| (dumpiov): Likewise. |
| (dumpstr): Likewise. |
| (fixvfork): Likewise. |
| * mem.c (sys_mincore): Don't check free() parameter for NULL. |
| |
| 2011-08-31 Denys Vlasenko <dvlasenk@redhat.com> |
| |
| Optimization: eliminate all remaining usages of strcat() |
| After this change, we don't use strcat() anywhere. |
| |
| * defs.h: Change sprinttv() return type to char *. |
| * time.c (sprinttv): Return pointer past last stored char. |
| * desc.c (decode_select): Change printing logic in order to eliminate |
| usage of strcat() - use stpcpy(), *outptr++ = ch, sprintf() instead. |
| Also reduce usage of strlen(). |
| * stream.c (decode_poll): Likewise. |
| |
| 2011-08-31 Denys Vlasenko <dvlasenk@redhat.com> |
| |
| Optimize string_quote() for speed. |
| * util.c (string_quote): Speed up check for terminating NUL. |
| Replace strintf() with open-coded binary to hex/oct conversions - |
| we potentially do them for every single byte, need to be fast. |
| |
| Optimization: eliminate some usages of strcat() |
| * defs.h: Declare stpcpy(). |
| * util.c: Define stpcpy(). |
| * file.c: Remove static str_append(). |
| (sprint_open_modes): Use stpcpy() instead of str_append(). |
| (sprintflags): Use stpcpy() instead of strcat(). |
| (printpathn): Eliminate usage of strcat(). |
| (printstr): Eliminate usage of strcat(). |
| |
| 2011-08-30 Denys Vlasenko <dvlasenk@redhat.com> |
| |
| Small optimization on AVR32. |
| * syscall.c (syscall_enter): Optimize tcp->u_arg[i] setting |
| from regs.FOO for AVR32. |
| |
| 2011-08-30 Denys Vlasenko <dvlasenk@redhat.com> |
| |
| On X86_64 and I386, use PTRACE_GETREGS to fetch all registers. |
| Before this change, registers were read with PTRACE_PEEKUSER |
| ptrace operation, one per register. This is slower than |
| fetching them all in one ptrace operation. |
| |
| * defs.h: include asm/ptrace.h on X86_64 and I386. |
| * syscall.c: New static variables i386_regs and x86_64_regs. |
| Remove static eax/rax variables. |
| (get_scno): Fetch all registers with single PTRACE_GETREGS operation. |
| (get_syscall_result): Likewise. |
| (syscall_fixup_on_sysenter): Use PTRACE_GETREGS results in i386/x86_64_regs. |
| (syscall_enter): Set tcp->u_arg[i] from PTRACE_GETREGS results. |
| (get_error): Set tcp->u_rval, tcp->u_error from PTRACE_GETREGS results. |
| |
| 2011-08-30 Dmitry V. Levin <ldv@altlinux.org> |
| |
| Do not include <limits.h> |
| * strace.c: Do not include <limits.h> explicitly, it is already included |
| implicitly by <sys/param.h>. |
| |
| 2011-08-30 Dmitry V. Levin <ldv@altlinux.org> |
| |
| Include <sys/param.h> to get PATH_MAX definition. |
| * pathtrace.c: Include <sys/param.h> instead of <limits.h> to get |
| PATH_MAX definition. |
| |
| Reported-by: Steve Bennett <steveb@workware.net.au> |
| |
| 2011-08-26 Denys Vlasenko <dvlasenk@redhat.com> |
| |
| Indent a large set of nested ifdefs/endifs. No code changes. |
| * defs.h: Indent a large set of nested ifdefs/endifs |
| |
| Rename syscall_fixup to syscall_fixup_on_sysenter. |
| * defs.h: Tweak comment. |
| * syscall.c: Rename syscall_fixup to syscall_fixup_on_sysenter. |
| (trace_syscall_entering): Use new finction name. |
| |
| Make syscall result reading more consistent among different arches. |
| * syscall.c: Eliminate static flags variable for POWERPC. |
| (syscall_fixup): Don't fetch syscall results. Affected arches: |
| POWERPC, BFIN, HPPA. |
| (syscall_fixup_on_sysexit): Move syscall results fetching code |
| for this function to get_syscall_result. Affected arches: |
| S390X, POWERPC, BFIN, M68K, HPPA, CRIS, MICROBLAZE. |
| (get_syscall_result): Add syscall results fetching. |
| |
| 2011-08-25 Denys Vlasenko <dvlasenk@redhat.com> |
| |
| Simplify syscall_fixup[_on_sysexit] |
| * syscall.c (syscall_fixup): Remove checks for entering(tcp). |
| Remove code which executes if exiting(tcp). |
| (syscall_fixup_on_sysexit): Remove code which executes |
| if entering(tcp). Remove checks for exiting(tcp). |
| |
| Split syscall_fixup into enter/exit pair of functions. |
| * syscall.c: Create syscall_fixup_on_sysexit() which is a copy of |
| syscall_fixup(). |
| (trace_syscall_exiting): Call syscall_fixup_on_sysexit() instead of |
| syscall_fixup(). |
| |
| Remove stray commas in struct initializers. No code changes. |
| * process.c: Remove stray commas in struct initializers. |
| |
| 2011-08-24 Denys Vlasenko <dvlasenk@redhat.com> |
| |
| Optimize tabto() |
| tabto is used in many lines of strace output. |
| On glibc, tprintf("%*s", col - curcol, "") is noticeably slow |
| compared to tprintf(" "). Use the latter. |
| Observed ~15% reduction of time spent in userspace. |
| |
| * defs.h: Drop extern declaration of acolumn. Make tabto() |
| take no parameters. |
| * process.c (sys_exit): Call tabto() with no parameters. |
| * syscall.c (trace_syscall_exiting): Call tabto() with no parameters. |
| * strace.c: Make acolumn static, add static char *acolumn_spaces. |
| (main): Allocate acolumn_spaces as a string of spaces. |
| (printleader): Call tabto() with no parameters. |
| (tabto): Use simpler method to print lots of spaces. |
| |
| 2011-08-24 Denys Vlasenko <dvlasenk@redhat.com> |
| |
| * syscall.c (sys_indir): Use %ld for printing long, not %u. |
| |
| 2011-08-24 Denys Vlasenko <dvlasenk@redhat.com> |
| |
| Opotimize "scno >= 0 && scno < nsyscalls" check. |
| gcc can't figure out on its own that this check can be done with |
| single compare, and does two compares. We can help it by casting |
| scno to unsigned long: ((unsigned long)(scno) < nsyscalls) |
| |
| * defs.h: New macro SCNO_IN_RANGE(long_var). |
| * count.c (count_syscall): Use SCNO_IN_RANGE() instead of open-coded check. |
| * syscall.c (getrval2): Use SCNO_IN_RANGE() instead of open-coded check. |
| This fixes a bug: missing check for scno < 0 and scno > nsyscalls |
| instead of scno >= nsyscalls. |
| (get_scno): Use SCNO_IN_RANGE() instead of open-coded check. |
| This fixes a bug: scno > nsyscalls instead of scno >= nsyscalls. |
| (known_scno): Use SCNO_IN_RANGE() instead of open-coded check. |
| (internal_syscall): Likewise. |
| (syscall_enter): Likewise. |
| (trace_syscall_entering): Likewise. |
| (get_error): Likewise. |
| (trace_syscall_exiting): Likewise. |
| |
| 2011-08-24 Denys Vlasenko <dvlasenk@redhat.com> |
| |
| Remove scno_good logic in syscall exit. |
| * syscall.c (trace_syscall_exiting): Remove scno_good logic, |
| it can't trigger in syscall exit. |
| |
| Remove redundant assignments. |
| * syscall.c (get_error): Remove redundant "u_error = 0" and redundant |
| and unclear comments. |
| |
| Group int-sized fields together in struct tcb. |
| * defs.h: Group int-sized fields together in struct tcb. |
| |
| 2011-08-24 Denys Vlasenko <dvlasenk@redhat.com> |
| |
| Reorder functions in syscall.c. No code changes. |
| Old order (basically "in no particular order"): |
| dumpio |
| decode_subcall |
| internal_syscall |
| get_scno |
| get_syscall_result |
| known_scno |
| syscall_fixup |
| is_negated_errno |
| get_error |
| syscall_enter |
| trace_syscall_entering |
| trace_syscall_exiting |
| trace_syscall |
| printargs |
| getrval2 |
| sys_indir |
| is_restart_error |
| |
| New order: |
| various utility functions: |
| decode_subcall |
| printargs |
| getrval2 |
| sys_indir |
| is_restart_error |
| syscall enter handling functions: |
| get_scno |
| known_scno |
| syscall_fixup (also used in syscall exit code) |
| internal_syscall (also used in syscall exit code) |
| syscall_enter |
| trace_syscall_entering |
| syscall exit handling functions: |
| get_syscall_result |
| is_negated_errno |
| get_error |
| dumpio |
| trace_syscall_exiting |
| main syscall enter/exit function: |
| trace_syscall |
| |
| * syscall.c: Reorder functions so that related ones are closer |
| in the source. |
| |
| 2011-08-24 Denys Vlasenko <dvlasenk@redhat.com> |
| |
| Rename some functions, delete unused one. No code changes. |
| * defs.h: Rename get_scno_on_sysenter() to get_scno(); |
| delete force_result() declaration. |
| * strace.c (proc_open): Rename get_scno_on_sysenter() to get_scno(). |
| * syscall.c: Rename get_scno_on_sysenter() to get_scno(). |
| Rename get_scno_on_sysexit() to get_syscall_result(). |
| Delete unused force_result(). |
| |
| 2011-08-24 Denys Vlasenko <dvlasenk@redhat.com> |
| |
| Unify per-architecture post-execve SIGTRAP check. |
| Move post-execve SIGTRAP check from get_scno_on_sysenter |
| (multitude of places on many architectures) to a single location |
| in trace_syscall_entering. This loosens the logic for some arches, |
| since many of them had additional checks such as scno == 0. |
| However, on non-ancient Linux kernels we should never have post-execve |
| SIGTRAP in the first place, by virtue of using PTRACE_O_TRACEEXEC. |
| |
| * syscall.c (get_scno_on_sysenter): Remove tcp->flags & TCB_WAITEXECVE checks. |
| (trace_syscall_entering): Do tcp->flags & TCB_WAITEXECVE check here. |
| (get_scno_on_sysexit): Tweak comment. |
| (syscall_fixup): Likewise. |
| (trace_syscall_exiting): Likewise. |
| |
| 2011-08-24 Denys Vlasenko <dvlasenk@redhat.com> |
| |
| Speed up x86 by avoiding EAX read on syscall entry. |
| on x86, EAX read on syscall entry is not necessary if we know |
| that post-execve SIGTRAP is disabled by PTRACE_O_TRACEEXEC ptrace option. |
| This patch (a) moves EAX retrieval from syscall_fixup |
| to get_scno_on_sysexit, and (b) perform EAX retrieval in syscall_fixup |
| only if we are in syscall entry and PTRACE_O_TRACEEXEC option is not on. |
| |
| * syscall.c (get_scno_on_sysexit): On I386 and X86_64, read eax/rax |
| which contain syscall return value. |
| (syscall_fixup): On I386 and X86_64, read eax/rax only on syscall enter |
| and only if PTRACE_O_TRACEEXEC is not in effect. |
| |
| 2011-08-24 Denys Vlasenko <dvlasenk@redhat.com> |
| |
| Do not read syscall no in get_scno_on_sysexit. |
| * syscall.c (get_scno_on_sysexit): Remove scno retrieval code, since |
| we don't save it anyway. This is the first real logic change |
| which should make strace faster: for example, on x64 ORIG_EAX |
| is no longer read in each syscall exit. |
| |
| Simplify get_scno_on_sysenter/sysexit. |
| * syscall.c (get_scno_on_sysenter): Remove "if (exiting(tcp))" code, |
| make "if (entering(tcp))" code unconditional. |
| (get_scno_on_sysexit): Remove "if (entering(tcp))" code, |
| make "if (exiting(tcp))" code unconditional. |
| |
| 2011-08-24 Denys Vlasenko <dvlasenk@redhat.com> |
| |
| get_scno is an unholy mess, make it less horrible. |
| Currently, get_scno does *much* more than "get syscall no". |
| It checks for post-execve SIGTRAP. It checks for changes |
| in personality. It retrieves params on entry and registers on exit. |
| Worse still, it is different in different architectures: for example, |
| for AVR32 regs are fetched in get_scno(), while for e.g. I386 |
| it is done in syscall_enter(). |
| |
| Another problem is that get_scno() is called on both syscall entry and |
| syscall exit, which is stupid: we don't need to know scno on syscall |
| exit, it is already known from last syscall entry and stored in |
| tcp->scno! In essence, get_scno() does two completely different things |
| on syscall entry and on exit, they are just mixed into one bottle, like |
| shampoo and conditioner. |
| |
| The following patches will try to improve this situation. |
| |
| This change duplicates get_scno into identical get_scno_on_sysenter, |
| get_scno_on_sysexit functions. Call them in syscall enter and syscall |
| exit, correspondingly. |
| |
| * defs.h: Rename get_scno to get_scno_on_sysenter; declare it only |
| if USE_PROCFS. |
| * strace.c (proc_open): Call get_scno_on_sysenter instead of get_scno. |
| * syscall.c (get_scno): Split into two (so far identical) functions |
| get_scno_on_sysenter and get_scno_on_sysexit. |
| (trace_syscall_entering): Call get_scno_on_sysenter instead of get_scno. |
| (trace_syscall_exiting): Call get_scno_on_sysexit instead of get_scno. |
| |
| 2011-08-23 Dmitry V. Levin <ldv@altlinux.org> |
| |
| Reduce code redundancy in syscall_enter() |
| * syscall.c [LINUX] (syscall_enter): Move tcp->u_nargs initialization |
| from arch-specific ifdefs to common code. Always cache tcp->u_nargs in |
| a local variable and use it in for() loops. |
| [IA64, AVR32] Rewrite tcp->u_arg[] initialization using a loop. |
| |
| 2011-08-23 Denys Vlasenko <dvlasenk@redhat.com> |
| |
| Define MAX_ARGS to 6 for all Linux arches. |
| * defs.h: Define MAX_ARGS to 6 for all Linux arches. |
| * linux/ia64/syscallent.h: Change all 8-argument printargs |
| to MA (MAX_ARGS). |
| linux/mips/syscallent.h: Change all two 7-argument printargs |
| to MA (MAX_ARGS). |
| |
| Fix argument printing in sys_mmap64. |
| * mem.c (sys_mmap64): Fix a bug where we used tcp->u_args[i] |
| instead of argument values copied from memory. |
| |
| 2011-08-23 Denys Vlasenko <dvlasenk@redhat.com> |
| |
| Cache tcp->u_nargs in a local variable for for() loops. |
| Loops of the form "for (i = 0; i < tcp->u_nargs; i++) ..." |
| need to fetch tcp->u_nargs from memory on every iteration |
| if "..." part has a function call (gcc doesn't know that |
| tcp->u_nargs won't change). This can be sped up |
| by putting tcp->u_nargs in a local variable, which might |
| go into a CPU register. |
| |
| * syscall.c (decode_subcall): Cache tcp->u_nargs in a local variable |
| as for() loop limit value. |
| (syscall_enter): Likewise. |
| |
| 2011-08-23 Denys Vlasenko <dvlasenk@redhat.com> |
| |
| Drop checks for sysent[i].nargs == -1. |
| * defs.h: Declare nsyscalls, nerrnos, nioctlents, nsignals as unsigned. |
| * syscall.c: Define nsyscalls, nerrnos, nioctlents, nsignals as unsigned. |
| (decode_subcall): Drop checks for sysent[i].nargs == -1. |
| (syscall_enter): Likewise. |
| |
| 2011-08-23 Denys Vlasenko <dvlasenk@redhat.com> |
| |
| Stop using nargs == -1 in syscallent tables. |
| Usage -1 as argument count in syscallent tables |
| necessitates the check for it, a-la: |
| if (sysent[tcp->scno].nargs != -1) |
| tcp->u_nargs = sysent[tcp->scno].nargs; |
| else |
| tcp->u_nargs = MAX_ARGS; |
| which is stupid: we waste cycles checking something which |
| is constant and known at compile time. |
| |
| * defs.h: Make struct sysent::nargs unsigned. |
| * freebsd/i386/syscallent.h: Replace nargs of -1 with MA. |
| * linux/s390/syscallent.h: Likewise. |
| * linux/s390x/syscallent.h: Likewise. |
| * svr4/syscallent.h: Likewise. |
| * freebsd/syscalls.pl: Likewise in generator script. |
| * syscallent.sh: Likewise in generator script. |
| * syscall.c: Add define MA MAX_ARGS / undef MA around includes |
| of syscallent[N].h. |
| |
| 2011-08-23 Denys Vlasenko <dvlasenk@redhat.com> |
| |
| Move trace_syscall_exiting below trace_syscall_entering. No code changes. |
| Syscall enter happens before syscall exit. Having functions |
| in opposite order in the source is confusing. |
| |
| * syscall.c: Move trace_syscall_exiting below trace_syscall_entering. |
| |
| 2011-08-23 Denys Vlasenko <dvlasenk@redhat.com> |
| |
| Fix -z display. |
| Before this patch, the following: |
| open("qwerty", O_RDONLY) = -1 ENOENT |
| write(2, "wc: qwerty: No such file or dire"..., 38) = 38 |
| was shown totally wrongly with -z: |
| open("qwerty", O_RDONLY) = 38 |
| (yes, that's right, write syscall is lost!) |
| Now it is shown "less wrongly" as: |
| open("qwerty", O_RDONLY <unfinished ...> |
| write(2, "wc: qwerty: No such file or dire"..., 38) = 38 |
| |
| * syscall.c (trace_syscall_exiting): Use common TCB_INSYSCALL clearing |
| via "goto ret". This fixes totally broken display of -z, but even now |
| it is not working as intended. Add a comment about that. |
| (trace_syscall_entering): Use common TCB_INSYSCALL setting |
| via "goto ret". |
| |
| 2011-08-23 Denys Vlasenko <dvlasenk@redhat.com> |
| |
| Straighten up confused comments/messages about post-execve SIGTRAP handling |
| * defs.h: Explain TCB_INSYSCALL and TCB_WAITEXECVE bits in detail. |
| * strace.c (choose_pfd): Use entering/exiting macros instead of direct check |
| for TCB_INSYSCALL. |
| * syscall.c (get_scno): Use entering/exiting macros instead of direct check |
| for TCB_INSYSCALL. Fix comments about post-execve SIGTRAP. |
| (syscall_fixup): Use entering/exiting instead of direct check |
| for TCB_INSYSCALL. Add a comment what "not a syscall entry" message |
| usually means. Change wrong "stray syscall exit" messages into |
| "not a syscall entry" ones. |
| |
| count_syscall() always returns 0, optimize it. |
| * defs.h (count_syscall): Change return type from int to void. |
| * count.c (count_syscall): Change return type from int to void. |
| * syscall.c (trace_syscall_exiting): Change code around call |
| to count_syscall accordingly. |
| |
| Optimize out dummy PC printing on signal delivery. |
| * strace.c (trace): Optimize out dummy PC printing on signal delivery. |
| While at it, tweak comments. |
| |
| Conditionally optimize out unused code. |
| * syscall.c (internal_syscall): Call internal_exec only if |
| SUNOS4 || (LINUX && TCB_WAITEXECVE). |
| * process.c (internal_exec): Define this function only if |
| SUNOS4 || (LINUX && TCB_WAITEXECVE). |
| (printwaitn): Don't check wordsize if SUPPORTED_PERSONALITIES == 1. |
| * signal.c (sys_kill): Likewise. |
| * syscall.c (is_negated_errno): Likewise. |
| (trace_syscall_exiting): Fold a tprintf into tprintfs which follow it. |
| |
| Cosmetic improvement in ifdefs. No code changes. |
| * strace.c (proc_open): Change ifdefs so that braces are properly paired. |
| |
| Exclude tcp->pfd from non-procfs systems. |
| * defs.h: Make struct tcb::pfd fields conditional on USE_PROCFS. |
| * strace.c (alloc_tcb): Use tcp->pfd only if USE_PROCFS. |
| (droptcb): Likewise. |
| |
| Small optimizations related to memory allocation. |
| * strace (expand_tcbtab): Shorten "out of memory" message. |
| (rebuild_pollv): Remove unnecessary NULL check before free(). |
| * util.c (dumpstr): Add a comment about likely bug. |
| |
| Improve code readability by avoiding assignments inside if() |
| * desc.c (decode_select): Move assignment out of if() condition. |
| * file.c (sprinttime): Likewise. |
| (sys_getdirentries): Likewise. |
| * io.c (sys_ioctl): Likewise. |
| * strace.c (test_ptrace_setoptions_followfork): Likewise. |
| (main): Likewise. |
| (proc_open): Likewise. |
| (detach): Likewise. |
| (proc_poll): Likewise. |
| (trace): Likewise. |
| * syscall.c (qualify): Likewise. |
| (sys_indir): Likewise. |
| * test/procpollable.c (main): Likewise. |
| * test/sfd.c (main): Likewise. |
| * time.c (printtv_bitness): Likewise. |
| (sprinttv): Likewise. |
| (print_timespec): Likewise. |
| (void sprint_timespec): Likewise. |
| (printitv_bitness): Likewise. |
| * util.c (dumpstr): Likewise. |
| (umovestr): Likewise. |
| (fixvfork): Likewise. |
| |
| Convert ioctl_next_match() to new-style C function definition. |
| * ioctl.c (ioctl_next_match): Convert to new-style C function definition. |
| |
| 2011-08-23 Denys Vlasenko <dvlasenk@redhat.com> |
| |
| Small optimization in signal and ioctl tables. |
| Trivial shuffling of data tables puts them all in one file, |
| allowing gcc to see their sizes and eliminate variables |
| which store these sizes. |
| |
| Surprisingly, in C mode gcc does not optimize out static const int |
| variables. Help it by using enums instead. |
| |
| * defs.h: Stop exporting ioctlent{0,1,2}, nioctlents{0,1,2}, |
| signalent{0,1,2}, nsignals{0,1,2}. |
| * ioctl.c: Remove definitions of ioctlent{,0,1,2} and nioctlents{,0,1,2}. |
| * signal.c: Remove definitions of signalent{,0,1,2} and nsignals{,0,1,2}. |
| * syscall.c: Move above definitions to this file. Make them static const |
| or enums if suitable. |
| |
| 2011-08-23 Denys Vlasenko <dvlasenk@redhat.com> |
| |
| Don't return int from set_personality(), no one checks it. |
| * defs.h (set_personality): Change return type to void. |
| * syscall.c (set_personality): Change return type to void. |
| |
| Remove unused declaration. |
| * defs.h: Remove unused declaration of handle_new_child(). |
| |
| Use natural-sized integer field for tcb::flags. |
| * defs: Change struct tcb::flags type from short to int. |
| This results in smaller code at least on x86. |
| |
| Make needlessly static data local. |
| * syscall.c (get_scno): For POWERPC64 and X86-64, variable currpers |
| is declared static. But its old data is never used. Convert it |
| to ordinary local variable. |
| |
| Optimize get_scno function. |
| * syscall.c (get_scno): Make gpr_offset[] array static const. |
| |
| Optimize iocb_cmd_lookup. |
| * desc.c (iocb_cmd_lookup): Make command table constant. |
| Reduce size of static char buffer. |
| |
| Correct sys_sendfile[64] type and nargs. |
| * freebsd/i386/syscallent.h: Correct sys_sendfile nargs 7->8 |
| * linux/mips/syscallent.h: Correct sys_sendfile64 nargs 5->4 |
| * linux/sh/syscallent.h: Correct sys_sendfile64 nargs 5->4 |
| * linux/sh64/syscallent.h: Correct sys_sendfile64 nargs 5->4 |
| * linux/m68k/syscallent.h: Correct sys_sendfile64 type TF->TD|TN |
| * linux/microblaze/syscallent.h: Correct sys_sendfile64 type TF->TD|TN |
| * linux/tile/syscallent.h: Correct sys_sendfile and sys_sendfile64 type TD->TD|TN |
| |
| Make addflags return void. |
| * defs.h (addflags): Change return type from int to void. |
| * util.c (addflags): Change return type from int to void. |
| |
| 2011-08-23 Denys Vlasenko <dvlasenk@redhat.com> |
| |
| Set saner MAX_ARGS (6 or 8) for X86_64 and I386. |
| I noticed that tcp->u_args[MAX_ARGS] array is way larger than |
| I'd expect: for all arches except HPPA it has 32 (!) elements. |
| |
| I looked at the code and so far I spotted only one abuser of |
| this fact: sys_sigreturn. On several arches, it saves sigset_t |
| into tcp->u_args[1...N] on entry and prints it on exit, a-la |
| |
| memcpy(&tcp->u_arg[1], &sc.oldmask[0], sizeof(sigset_t)) |
| |
| The problem here is that in glibc sigset_t is insanely large: |
| 128 bytes, and using sizeof(sigset_t) in memcpy will overrun |
| &tcp->u_args[1] even with MAX_ARGS == 32: |
| On 32 bits, sizeof(tcp->u_args) == 32*4 == 128 bytes! |
| We may already have a bug there! |
| |
| This commit changes the code to save NSIG / 8 bytes only. |
| NSIG can't ever be > 256, and in practice is <= 129, |
| thus NSIG / 8 is <= 16 bytes == 4 32-bit words, |
| and even MAX_ARGS == 5 should be enough for saving signal masks. |
| |
| * defs.h: Reduce MAX_ARGS for X86_64 and I386 from 32 to 8 |
| for FreeBSD and to 6 for everyone else. Add comment about current |
| state of needed MAX_ARGS. |
| * signal.c: Add comment about size of sigset_t. |
| (sprintsigmask): Reduce static string buffer from 8k to 2k. |
| (sys_sigreturn): Fix sigset saving to save only NSIG / 8 bytes, |
| not sizeof(sigset_t) bytes. |
| * linux/mips/syscallent.h: Reduce nargs of printargs-type syscall to 7. |
| * linux/arm/syscallent.h: Reduce nargs of printargs-type syscall to 6. |
| * linux/i386/syscallent.h: Likewise. |
| * linux/m68k/syscallent.h: Likewise. |
| * linux/powerpc/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. |
| |
| 2011-08-23 Denys Vlasenko <dvlasenk@redhat.com> |
| |
| Optimize sys_old_mmap. |
| * mem.c (sys_old_mmap): For Ia64 and 32-bit personality of x86-64, |
| copy narrow parameters from userspace by single umove, not by six |
| separate ones; then assign them to long u_arg[i]. For SH[64], |
| avoid copying of tcp->u_arg. |
| (sys_mmap): Add FIXME comment - SH64 and i386 seem to be handled |
| differently for no apparent reason. |
| * test/mmap_offset_decode.c: New test program, illustrates FIXME. |
| |
| 2011-08-23 Denys Vlasenko <dvlasenk@redhat.com> |
| |
| Untangle ifdef forest in sys_mmap64. No code changes. |
| After careful analysis, it looks like !LINUX and ALPHA |
| pass all seven parameters in registers; and in all other cases |
| parameters are on stack (pointed to by tcp->u_arg[0]). |
| In light of this, reorganize ifdefs, making them simpler, |
| without changing any logic. |
| After this, it's apparent we use tcp->u_arg[4,5,6] and possibly |
| [7] without checking that it's valid to do so. |
| So far, just add a comment about this. |
| |
| * mem.c (sys_mmap64): Rewrite ifdefs in a much simpler way. |
| Add comments about apparent bugs. |
| |
| 2011-08-23 Denys Vlasenko <dvlasenk@redhat.com> |
| |
| Style and comment fixes, no code changes. |
| * mem.c: Indent includes to show nesting better. |
| (addtileflags): Fix style of this function definition; |
| correct wrong endif comment, add another endif comment. |
| |
| Use simpler rounding up to next multiple of 2. |
| * util.c (printllval): simpler rounding up to next multiple of 2. |
| |
| Cosmetic fixes, no code changes. |
| * defs.h: Add/reformat comments. |
| * signal.c: Remove wrong comment. Add warning directive |
| when we detect that NSIG is undefined. Add comment about |
| NSIG on ARM. Fix typo in comment. |
| (signame): Reformat code a bit without changes to logic. |
| Shorten static buffer. |
| (sys_rt_sigprocmask): Remove stray empty line. |
| * syscall.c: Add warning directive when we detect that |
| NSIG is undefined. Add comment about NSIG on ARM. |
| |
| 2011-08-23 Dmitry V. Levin <ldv@altlinux.org> |
| |
| Fix PTRACE_SETOPTIONS tests. |
| * strace.c [LINUX] (kill_save_errno): New function. |
| (test_ptrace_setoptions_followfork): Change return type to void. |
| Fix and harden error handling. Use kill_save_errno() to avoid errno |
| clobbering. Treat EIO from ptrace() the same way as EINVAL. |
| (test_ptrace_setoptions_for_all): Use kill_save_errno() to avoid errno |
| clobbering. Treat EIO from ptrace() the same way as EINVAL. |
| (main): Update use of test_ptrace_setoptions_followfork(). |
| |
| Fix compilation on linux 2.4.x. |
| * configure.ac: Check for BLKGETSIZE64. |
| * block.c (block_ioctl): Check for HAVE_BLKGETSIZE64. |
| |
| 2011-08-17 Denys Vlasenko <dvlasenk@redhat.com> |
| |
| Remove tcp->parent and TCB_CLONE_THREAD. |
| tcp->parent is used for only two things: |
| (1) to send signal on detach via tgkill (need to know tgid). |
| Solution: use tkill, it needs only tid. |
| (2) to optimize out ptrace options setting for new tracees. |
| Not a big deal if we drop this optimization: "set options" op is fast, |
| doing it just one extra time once per each tracee is hardly measurable. |
| |
| TCB_CLONE_THREAD is a misnomer. It used only to flag sibling we attached to |
| in startup_attach. This is used to prevent infinite recursive rescanning |
| of /proc/PID/task. |
| Despite the name, there is no guarantee it is set only on non-leader: |
| if one would run "strace -f -p THREAD_ID" and THREAD_ID is *not* |
| a thread leader, strace will happily attach to it and all siblings |
| and will think that THREAD_ID is the leader! Which is a bug, but |
| since we no longer detach when we think tracee is going to die, |
| this bug no longer matters, because we do not use the knowledge |
| about thread group leaders for anything. (We used it to delay |
| leader's exit). |
| |
| IOW: after this patch strace has no need to know about threads, parents |
| and children, and so on. Therefore it does not track that information. |
| It treats all tracees as independent entities. Overall, |
| this simplifies code a lot. |
| |
| * defs.h: Add TCB_ATTACH_DONE flag, remove TCB_CLONE_THREAD flag |
| and struct tcb::parent field. |
| * process.c (internal_fork): Don't set tcpchild->parent. |
| * strace.c (startup_attach): Use TCB_ATTACH_DONE flag instead of |
| TCB_CLONE_THREAD to avoid attach attempts on already-attached threads. |
| Unlike TCB_CLONE_THREAD, TCB_ATTACH_DONE bit is used only temporarily, |
| and only in this function. We clear it on every tcb before we return. |
| (detach): Use tkill instead of tgkill. |
| (trace): Set ptrace options on new tracees unconditionally, |
| not only when tcp->parent == NULL. |
| |
| 2011-08-17 Denys Vlasenko <dvlasenk@redhat.com> |
| |
| Remove TCB_SUSPENDED constant and related code. |
| Since we no longer suspend waitpid'ing tracees, we have only one case when |
| we suspend tracee: when we pick up a new tracee created by clone/fork/vfork. |
| |
| Background: on some other OSes, attach to child is done this way: |
| get fork's result (pid), loop ptrace(PTRACE_ATTACH) until you hook up |
| new process/thread. This is ugly and not safe, but what matters for us |
| is that it doesn't require suspending. Suspending is required |
| on Linux only, because on Linux attach to child is done differently. |
| |
| On Linux, we use two methods of catching new tracee: |
| adding CLONE_THREAD bit to syscall (if needed, we change |
| [v]fork into clone before that), or using ptrace options. |
| In both cases, it may be so that new tracee appears before one which |
| created it returns from syscall. In this case, current code |
| suspends new tracee until its creator returns. Only then |
| strace can determine who is its parent (it needs child's pid for this, |
| which is visible in parent's [v]fork/clone result). |
| This is inherently racy. For example, what if SIGKILL kills |
| creator after it succeeded creating child, but before it returns? |
| Looks like we will have child suspended forever. |
| |
| But after previous commit, we DO NOT NEED parent<->child link for anything. |
| Therefore we do not need suspending too. Bingo! |
| |
| This patch removes suspending code. Now new tracees will be continued |
| right away. Next patch will remove tcp->parent member. |
| |
| * defs.h: Remove TCB_SUSPENDED constant |
| * process.c (handle_new_child): Delete this function. |
| (internal_fork): Do not call handle_new_child on syscall exit. |
| * strace.c (handle_ptrace_event): Delete this function. |
| (trace): Do not suspend new child; remove all handling |
| of now impossible TCB_SUSPENDED condition. |
| |
| 2011-08-17 Denys Vlasenko <dvlasenk@redhat.com> |
| |
| Do not detach when we think tracee is going to die. |
| Current code plays some ungodly tricks, trying to not detach |
| thread group leader until all threads exit. |
| |
| Also, it detaches from a tracee when signal delivery is detected |
| which will cause tracee to exit. |
| This operation is racy (not to mention the determination |
| whether signal is set to SIG_DFL is a horrible hack): |
| after we determined that this signal is indeed fatal |
| but before we detach and let process die, |
| *other thread* may set a handler to this signal, and |
| we will leak the process, falsely displaying it as killed! |
| |
| I need to look in the past to figure out why we even do it. |
| First guess is that it's a workaround for old kernel bugs: |
| kernel used to deliver exit notifications to the tracer, |
| not to real parent. These workarounds are ancient |
| (internal_exit is from 1995). |
| |
| The patch deletes the hacks. We no longer need tcp->nclone_threads, |
| TCB_EXITING and TCB_GROUP_EXITING. We also lose a few rather |
| ugly functions. |
| |
| I also added a new message: "+++ exited with EXITCODE +++" |
| which shows exact moment strace got exit notification. |
| It is analogous to existing "+++ killed by SIG +++" message. |
| |
| * defs.h: Delete struct tcb::nclone_threads field, |
| TCB_EXITING and TCB_GROUP_EXITING constants, |
| declarations of sigishandled() and internal_exit(). |
| * process.c (internal_exit): Delete this function. |
| (handle_new_child): Don't ++tcp->nclone_threads. |
| * signal.c (parse_sigset_t): Delete this function. |
| (sigishandled): Delete this function. |
| * strace.c (startup_attach): Don't tcbtab[tcbi]->nclone_threads++. |
| (droptcb): Don't delay dropping if tcp->nclone_threads > 0, |
| don't drop parent if its nclone_threads reached 0: |
| just drop (only) this tcb unconditionally. |
| (detach): don't drop parent. |
| (handle_group_exit): Delete this function. |
| (handle_ptrace_event): Instead of handle_group_exit, just drop tcb; |
| do not panic if we see WIFEXITED from an attached pid; |
| print "+++ exited with EXITCODE +++" for every WIFEXITED pid. |
| * syscall.c (internal_syscall): Do not treat sys_exit specially - |
| don't call internal_exit on it. |
| |
| 2011-08-16 Sergei Trofimovich <slyfox@gentoo.org> |
| |
| Declare printrusage32() on Alpha. |
| * defs.h [ALPHA] (printrusage32): New declaration. |
| |
| 2011-08-15 Denys Vlasenko <dvlasenk@redhat.com> |
| |
| Slight optimization and cleanup in trace() |
| * strace.c (trace): Do not recalculate "cflag ? &ru : NULL" |
| again and again. Do not clear errno unnecessarily. |
| Consistently check wait errors as pid < 0, not pid == -1. |
| Indent ifdefs for better readability. |
| Remove comments after endif if ifdef/endif block is really tiny. |
| |
| Fix compilation on 2.4.20 kernel based system. |
| * block.c (block_ioctl): add ifdef/endif around BLKGETSIZE64 usage |
| * strace.c (trace): add ifdef/endif around WIFCONTINUED usage |
| |
| 2011-07-19 Dmitry V. Levin <ldv@altlinux.org> |
| |
| Check for additional PTRACE_* constants. |
| * configure.ac (AC_CHECK_DECLS): Add PTRACE_O_TRACESYSGOOD, |
| PTRACE_O_TRACEEXEC, PTRACE_O_TRACEEXIT, PTRACE_EVENT_EXEC, |
| PTRACE_EVENT_VFORK_DONE and PTRACE_EVENT_EXIT. |
| * defs.h [LINUX]: Define these PTRACE_* constants when they are not |
| provided by <sys/ptrace.h>. |
| |
| Reported-by: Douglas Mencken <dougmencken@gmail.com> |
| Reported-by: Steve Bennett <steveb@workware.net.au> |
| |
| 2011-07-19 Denys Vlasenko <dvlasenk@redhat.com> |
| |
| Remove superfluous backslash-continuation in configure.ac. |
| * configure.ac: remove superfluous backslash continuation |
| in AC_CHECK_DECLS |
| |
| 2011-06-24 Denys Vlasenko <dvlasenk@redhat.com> |
| |
| Make IOCTL_WSTOP more readable. |
| * defs.h: Make IOCTL_WSTOP more readable |
| |
| Trivial cleanups. |
| * strace.c (trace): Change ifdef LINUX to make a bit more sense, |
| remove wrong comment at its endif. Slightly optimize |
| "+++ killed by SIG +++" message for systems without WCOREDUMP macro. |
| |
| Remove redundant include <stdarg.h> |
| * strace.c: Remove redundant include <stdarg.h> |
| |
| Clean up two old comments. |
| * strace.c (startup_attach): Remove misplaced comment. |
| (trace) Remove incomplete part of a comment. |
| |
| Make a few variables static. |
| * defs.h: Remove tcbtab declaration. |
| * strace.c: Make run_uid, run_gid, outf, tcbtab, progname |
| global variables static |
| |
| Add debug output in initial attachment code. |
| * strace.c (startup_attach): If -d, report pid and success/failure |
| of every attach attempt. |
| |
| Better debug logging of allocations and waitpit results. |
| * strace.c (alloc_tcb): Print number of allocated tcb's if -d. |
| (droptcb): Likewise. |
| (handle_ptrace_event): Remove PTRACE_EVENT_EXEC debug message. |
| (trace): Improve logging of waitpid: show WIFxxx, exitcode/signal, |
| ptrace event name, WCOREDUMP - all on one line. |
| |
| 2011-06-23 Denys Vlasenko <dvlasenk@redhat.com> |
| |
| Optimize arrays of register indexes in syscall_enter. |
| * syscall.c (syscall_enter) [BFIN]: Make register no array "static const". |
| [SH]: Make register no array "const", pre-multiply it by 4. |
| [SH64]: Make register no array "const". |
| [X86_64]: Make register no array "const", pre-multiply it by 8. |
| |
| 2011-06-23 Denys Vlasenko <dvlasenk@redhat.com> |
| |
| Deindent syscall_enter by removing unnecessary braces. No code changes. |
| syscall_enter has many long (>80 columns) lines. |
| It is aggravated by the fact that it has a lot of {} blocks |
| which are not necessary (the code is the same without them). |
| This patch removes {}s and deindents affected lines. |
| While at it, it indents ifdefs so that nesting is easier to track, |
| and adds a few spaces in the expressions, such as |
| "tcp->u_nargs*sizeof..." -> "tcp->u_nargs * sizeof...". |
| There is no actual changes to the code here. |
| |
| * syscall.c (syscall_enter): Remove unnecessary {} blocks. |
| |
| 2011-06-23 Denys Vlasenko <dvlasenk@redhat.com> |
| |
| Remove dead "ifndef CLONE_PTRACE" branch. |
| process.c defines CLONE_PTRACE for Linux, so it can't be undefined. |
| Therefore ifndef CLONE_PTRACE code is dead (since at least 2004). |
| This patch removes it. |
| |
| * process.c (handle_new_child): Remove ifdef CLONE_PTRACE/endif (but not |
| the code inside) and entire ifndef CLONE_PTRACE/endif block. |
| |
| 2011-06-23 Denys Vlasenko <dvlasenk@redhat.com> |
| |
| Add a comment about setbpt. No code changes. |
| * defs.h: Add a comment about setbpt(). |
| |
| Untangle a particularly badly obfuscated bit of code. No logic changes. |
| * util.c (setbpt): Calculate new arg0 in more readable way. |
| |
| 2011-06-23 Denys Vlasenko <dvlasenk@redhat.com> |
| |
| Remove TCB_FOLLOWFORK. |
| TCB_FOLLOWFORK flag seems to be unnecessary, because we either follow |
| all [v]forks/clones or don't follow any, therefore global variable |
| followfork is an already existing indicator of what we want to do. |
| This patch drops all setting/clearing of TCB_FOLLOWFORK bit, |
| and replaces checks for this bit by checks of followfork value. |
| In internal_fork, check is moved to in front of if(), since |
| the check is needed on both "entering" and "exiting" branch. |
| |
| * defs.h: Remove TCB_FOLLOWFORK define. |
| * process.c (internal_fork): Do not set/clear TCB_FOLLOWFORK, |
| test followfork instead of tcp->flags & TCB_FOLLOWFORK. |
| (handle_new_child): Likewise. |
| * strace.c (startup_attach): Likewise. |
| |
| 2011-06-23 Dmitry V. Levin <ldv@altlinux.org> |
| |
| * system.c (sys_capget, sys_capset): Fix pointer arithmetics. |
| |
| 2011-06-23 Denys Vlasenko <dvlasenk@redhat.com> |
| |
| Make initial tcb allocation more readable. No logic changes. |
| * strace.c (main): Make initial tcb allocation more readable. |
| |
| 2011-06-23 Denys Vlasenko <dvlasenk@redhat.com> |
| |
| Do not allocate tiny cap_user_header/data structures, place them on stack. |
| This allows us to avoid having code to malloc them, and code to check |
| for malloc failure. Resulting code decrease: |
| text data bss dec hex filename |
| 10175 0 16 10191 27cf system.o.old |
| 9797 0 0 9797 2645 system.o |
| |
| * system.c (sys_capget): Put cap_user_header_t and cap_user_data_t |
| on stack, rather than allocating them in heap. These structures |
| are very small (a few integer fields), stack is a better place |
| for them. |
| (sys_capset): Likewise. |
| |
| 2011-06-23 Denys Vlasenko <dvlasenk@redhat.com> |
| |
| Use [p]error_msg[_and_die] where appropriate. No logic changes. |
| Resulting size changes: |
| text data bss dec hex filename |
| 17445 16 8572 26033 65b1 strace.o.old |
| 16850 16 8572 25438 635e strace.o |
| |
| * strace.c: Replace fprintf[+cleanup]+exit with [p]error_msg_and_die, |
| fprintf("progname: ...") with [p]error_msg where appropriate. |
| |
| 2011-06-22 Denys Vlasenko <dvlasenk@redhat.com> |
| |
| Whitespace cleanups. No code changes. |
| * count.c: Place opening curly brace after if (), |
| not on the next line. Almost all strace code alredy |
| uses this style. |
| * desc.c: Likewise. |
| * file.c: Likewise. |
| * net.c: Likewise. |
| * pathtrace.c: Likewise. |
| * process.c: Likewise. |
| * quota.c: Likewise. |
| * signal.c: Likewise. |
| * strace.c: Likewise. |
| * syscall.c: Likewise. |
| * time.c: Likewise. |
| |
| 2011-06-22 Denys Vlasenko <dvlasenk@redhat.com> |
| |
| Make strace_fopen abort on error. |
| Error from strace_fopen in main results in call to exit(1). |
| Error from strace_fopen in newoutf is propagated to newoutf |
| callers: startup_attach (where it results in exit(1)) |
| and alloc_tcb (where error is ignored). In second case, |
| the behavior doesn't seem to be right: it means with -ff |
| on open error for new LOGFILE.PID the output will continue |
| to go into *the same file as the previous process* - which |
| would be confusing. Moreover, on droptcb outf may be closed |
| and the output of other, still running process outputting |
| to the same outf will be lost. I don't think this is sane. |
| IOW: in all cases, error in strace_fopen should be fatal. |
| |
| * strace.c (strace_fopen): Abort on error instead of returning NULL. |
| (newoutf): Change return type to void. |
| (startup_attach): Remove error check on newoutf return value. |
| (main): Remove error check on strace_fopen return value. |
| |
| 2011-06-22 Denys Vlasenko <dvlasenk@redhat.com> |
| |
| Make set_cloexec_flag abort on error. |
| set_cloexec_flag() may fail only if we pass it a bad fd, |
| such as -1 or non-opened one. If we do, we have a bug |
| in the caller. It makes no sense to try to continue |
| running when we detect such a blatant bug in our own code. |
| |
| * strace (set_cloexec_flag): Abort instead of returning error |
| indicator. Change function to return void. |
| (strace_fopen): Remove error check on set_cloexec_flag return value. |
| (proc_open): Likewise. |
| (proc_poll_open): Likewise. |
| |
| 2011-06-22 Denys Vlasenko <dvlasenk@redhat.com> |
| |
| Make strace_popen abort on error. |
| It makes no sense to postpone abort on strace_popen error |
| unti it returns. Moreover, out-of-memory error was exiting |
| without any message. |
| While at it, use 0 as "none" for popen_pid, as optimization. |
| |
| * strace: Initialize popen_pid to 0 - this puts it in bss. |
| (trace): Reset popen_pid to 0 instead of -1. |
| (strace_popen): Never return NULL as error indicator, |
| abort with good error message instead. |
| (main): Remove NULL check of strace_popen result. |
| |
| 2011-06-22 Denys Vlasenko <dvlasenk@redhat.com> |
| |
| Delete fork_tcb() |
| Get rid of fork_tcb() function. It used to do what the comment |
| above it says, but now it doesn't do much: |
| it only sets tcp->flags |= TCB_FOLLOWFORK and maybe calls |
| expand_tcbtab(). The second operation is not necessary, since |
| alloc_tcp() will do it itself when needed. |
| This patch deletes fork_tcb(), open-coding tcp->flags |= TCB_FOLLOWFORK |
| where it was formerly called. It also makes nprocs, tcbtabsize and |
| expand_tcbtab() static. (While at it, I nuked redundant |
| extern char **environ declaration: strace.c had *two* of them...) |
| |
| * defs.h: Remove declarations of nprocs, tcbtabsize and |
| expand_tcbtab. |
| * process.c (fork_tcb): Remove this function. |
| (internal_fork): Open-code fork_tcb. |
| (handle_new_child): Likewise. |
| * strace.c: Remove redundant "extern char **environ". Declare |
| nprocs and tcbtabsize static. |
| (expand_tcbtab): Make it static. |
| |
| 2011-06-22 Denys Vlasenko <dvlasenk@redhat.com> |
| |
| Simplify expand_tcbtab and alloc_tcb. |
| Get rid of a few intermediate variables, simplifies a few expressions, |
| and uses error_msg_and_die instead of more verbose |
| fprintf+cleanup+exit sequence. |
| In alloc_tcp, I use memset to clear entire new tcp. |
| This not only saves a few bytes of code, but lowers the chances |
| of future bugs where some data "leaks out" into new tcb's |
| from old ones because we forgot to re-initialize it. |
| |
| * strace.c (expand_tcbtab): Simplify this function. No logic changes. |
| (alloc_tcb): Likewise. |
| |
| 2011-06-21 Denys Vlasenko <dvlasenk@redhat.com> |
| |
| Trivial fixes. |
| * process.c (internal_fork): Remove conditionals which make no difference |
| (we return 0 on both branches of these ifs). |
| * util.c: Fix indentation of an ifdef. |
| |
| 2011-06-21 Dmitry V. Levin <ldv@altlinux.org> |
| |
| Fix build when libaio-devel is not available. |
| * desc.c: Do not compile code that uses struct iocb unless |
| HAVE_LIBAIO_H is set. |
| |
| Reported-by: Denys Vlasenko <dvlasenk@redhat.com> |
| |
| 2011-06-21 Dmitry V. Levin <ldv@altlinux.org> |
| |
| tests: finish ptrace_setoptions_* merge. |
| * tests/Makefile.am (TESTS): Merge ptrace_setoptions_*. |
| * tests/ptrace_setoptions: Check for Linux kernel > 2.6. |
| |
| 2011-06-21 Denys Vlasenko <dvlasenk@redhat.com> |
| |
| Remove write-only nchildren member from struct tcb. |
| * defs.h: Remove nchildren member from struct tcb. |
| * process.c (handle_new_child): Remove inc/decrements of tcp->nchildren. |
| (internal_fork): Likewise. |
| * strace.c (startup_attach): Likewise. |
| (droptcb): Likewise. |
| (alloc_tcb): Remove initialization of tcp->nchildren. |
| |
| Fix tests/ptrace_setoptions_* to match last fix in ptrace options code. |
| |
| Remove write-only nzombies member from struct tcb. |
| * defs.h: Remove nzombies member from struct tcb. |
| * strace.c (droptcb): Remove "tcp->parent->nzombies++". |
| (alloc_tcb): Remove "tcp->nzombies = 0". |
| |
| 2011-06-21 Denys Vlasenko <dvlasenk@redhat.com> |
| |
| Fix regression introduced by "Properly handle real SIGTRAPs" change. |
| Commit 3454e4b463e6c22c7ea8c5461ef5a077f4650a54 |
| introduced a bug: sometimes, TRACECLONE/TRACE[V]FORK opts were not set. |
| The check (tcp->parent == NULL) in old code was meant to check |
| "if we are not a child created by auto-attach" - in this case, |
| options need to be set on the child; otherwise they are inherited |
| and do not need to be set. |
| I misunderstood the check and if tcp->parent is not NULL, I was |
| setting only ptrace_setoptions_for_all bits. |
| This change fixes the problem. Since the fixed logic makes it |
| unnecessary to keep two sets of options in separate variables, |
| I merge them back into one variable, ptrace_setoptions. |
| |
| * defs.h: Merge ptrace_setoptions_followfork and ptrace_setoptions_for_all |
| into one variable, ptrace_setoptions. |
| * strace.c: Likewise. |
| (test_ptrace_setoptions_followfork): Use ptrace_setoptions variable. |
| (test_ptrace_setoptions_for_all): Likewise. |
| (main): Likewise. |
| * process.c (internal_fork): Likewise. |
| (internal_exec): Likewise. |
| * strace.c (trace): Fix the bug where different options were set |
| depending on "tcp->parent == NULL" condition. Add a comment |
| which makes it more clear why this condition is checked. |
| |
| 2011-06-18 Denys Vlasenko <dvlasenk@redhat.com> |
| |
| Do not suspend waitpid. |
| strace used to suspend waitpid until there is a child |
| for waitpid'ing process to collect status from. |
| Apparently, it was done because in some very old kernels |
| (circa 2002 or even earlier) there were ptrace bugs which |
| were making waitpid in real parent to not see children. |
| This kernel bug is fixed long ago. This change removes the workaround. |
| test/wait_must_be_interruptible.c is a test program which |
| illustrates why without this change strace changes |
| programs's behavior. |
| |
| * defs.h: Delete waitpid and nclone_waiting members from from struct tcb. |
| Remove declaration of internal_wait(). |
| * process.c (internal_wait): Remove this function. |
| * strace.c (alloc_tcb): Do not set tcp->nclone_waiting. |
| (resume): Remove this function. |
| (resume_from_tcp): Remove this function. |
| (detach): Do not call resume_from_tcp(). |
| (handle_group_exit): Do not call resume_from_tcp(). |
| * syscall.c (internal_syscall): Do not call internal_wait(). |
| |
| 2011-06-13 Andi Kleen <ak@linux.intel.com> |
| |
| Enhance io_submit() decoding. |
| strace didn't decode important fields in the iocb passed to io_submit. |
| This patch changes the code to dump them all. Also it prefixes the fields |
| with names to make it easier to read. |
| |
| * desc.c (iocb_cmd_lookup, print_common_flags): New functions. |
| (sys_io_submit): New iocb decoder. |
| |
| 2011-06-13 Dmitry V. Levin <ldv@altlinux.org> |
| |
| Add argument to tprint_iov() specifying whether to decode each iovec. |
| * defs.h (tprint_iov): Add decode_iov argument. |
| * io.c (tprint_iov): Implement new decode_iov argument. |
| (sys_readv, sys_writev, sys_sendfile, sys_preadv, sys_pwritev): Update |
| tprint_iov calls. |
| * net.c (do_msghdr): Likewise. |
| |
| Introduce ARRAY_SIZE() macro. |
| * defs.h (ARRAY_SIZE): New macro. |
| * ioctl.c: Use it. |
| * pathtrace.c (pathmatch, storepath): Likewise. |
| * process.c (printpriv): Likewise. |
| * signal.c: Likewise. |
| * syscall.c: Likewise. |
| |
| 2011-06-13 Andi Kleen <ak@linux.intel.com> |
| |
| Fix decoding of timer id returned by timer_create. |
| * time.c (sys_timer_create): The kernel returns a integer, not a |
| pointer for the timer id in the memory pointed to by timer_id. |
| |
| 2011-06-09 Dmitry V. Levin <ldv@altlinux.org> |
| |
| Add test for PTRACE_O_TRACESYSGOOD. |
| * tests/ptrace_setoptions_for_all: New file. |
| * tests/Makefile.am (TESTS): Add ptrace_setoptions_for_all. |
| |
| tests: update test for linux kernel version. |
| * tests/ptrace_setoptions_followfork: Check for Linux kernel > 2.6. |
| |
| 2011-06-09 Dmitry V. Levin <ldv@altlinux.org> |
| |
| Update ptrace_setoptions test. |
| The test have to be adjusted after commit v4.6-5-g3454e4b. |
| |
| * ptrace_setoptions: Update grep pattern, rename to |
| ptrace_setoptions_followfork. |
| * tests/Makefile.am (TESTS): Rename ptrace_setoptions to |
| ptrace_setoptions_followfork. |
| |
| 2011-06-09 Dmitry V. Levin <ldv@altlinux.org> |
| |
| * strace.c (verror_msg): Rewrite without use of heap memory allocation. |
| |
| 2011-06-09 Dmitry V. Levin <ldv@altlinux.org> |
| |
| Fix MIPS syscall entries. |
| * linux/mips/syscallent.h: Remove duplicate entries for 4336, 4337, |
| and 4338 syscall numbers. |
| |
| Reported-by: Denys Vlasenko <dvlasenk@redhat.com> |
| |
| 2011-06-08 Denys Vlasenko <dvlasenk@redhat.com> |
| |
| Don't display bogus parameter for sigreturn syscall. |
| * linux/*/syscallent.h: For those arches which use sys_sigreturn, |
| not printargs, to show [rt_]sigreturn syscall, change number of arguments |
| from 1 to 0: sys_sigreturn function doesn't use syscall parameters. |
| (I guess kernel doesn't actually _have_ any parameters for this syscall, |
| at least on these architectures). Do the same change for I386 and x86-64 |
| even though they use printargs: I looked at kernel code and syscall |
| definitely doesn't have any parameters on these arches. |
| (I hesitate to change 1 to 0 params for arches I don't know - |
| it is remotely possible some of them do have a parameter for this syscall). |
| |
| Optimize sigreturn handling. |
| * signal.c (sys_sigreturn): move stack pointer variables, |
| and for SPARC and MIPS, stack pointer and sigmask reading code |
| into "if (entering) ..." block, because it is only needed |
| in this branch; load tcp->u_arg[1] into sigmask for display |
| _after_ we know for sure u_arg[1] does contain valid sigmask |
| (IOW: perform operation only when we know we will need the result) |
| |
| Do not call umoven to fetch parameters if we have zero params. |
| * syscall.c [I386] (syscall_enter): Do not call umoven |
| to fetch zero bytes. This is just an optimization. |
| |
| "Modernize" four old-style function parameter declarations. |
| * signal.c (signame, long_to_sigset, printsigmask, printsignal): |
| Convert old-style C function definitions to a "modern" form. |
| This does not change any actual code. |
| |
| 2011-06-08 Denys Vlasenko <dvlasenk@redhat.com> |
| |
| Fix sigreturn decoding on MIPS. |
| The "return 0" line was accidentally deleted circa 2007, |
| which made sigreturn on MIPS always display "= 0" return |
| instead of more informative " = ? (mask now [MASK])". |
| |
| * strace.c (sys_sigreturn): Add wrongly deleted "return 0" line |
| |
| 2011-06-08 Denys Vlasenko <dvlasenk@redhat.com> |
| |
| Print at least one space between SYSCALL(ARGS) and = RESULT if tracee is killed |
| We already do it in the normal case, but in rare code path where |
| tracee is gone (SIGKILLed?) sometimes we were printing this: |
| "SYSCALL(ARGS <unavailable>)= ? <unavailable>" - note jammed together ")=". |
| test/sigkill_rain.c can be used to verify the fix. |
| |
| * strace.c (printleader): add a space after ")" in " <unavailable>)" |
| |
| 2011-06-08 Denys Vlasenko <dvlasenk@redhat.com> |
| |
| Add fflush after printf in test/sigkill_rain.c. |
| |
| Update test/* directory, it seem to be a bit bit-rotted. |
| Added README; modified sigkill_rain.c to be more understandable, |
| made clone.c compile; added wait_must_be_interruptible.c test; |
| updated Makefile and .gitignore. |
| |
| 2011-06-07 Denys Vlasenko <dvlasenk@redhat.com> |
| |
| Whitespace cleanups. no code changes. |
| * bjm.c: Fix tabulation (such as extra spaces before tabs), |
| convert punctuation where it deviates from prevalent form |
| elsewhere in strace code, convert sizeof and offsetof where |
| it deviates from from prevalent form, remove space between |
| function/macro/array names and (parameters) or [index], |
| add space between "if" and (condition), correct non-standard |
| or wrong indentaion. |
| * defs.h: Likewise |
| * desc.c: Likewise |
| * file.c: Likewise |
| * ipc.c: Likewise |
| * linux/arm/syscallent.h: Likewise |
| * linux/avr32/syscallent.h: Likewise |
| * linux/hppa/syscallent.h: Likewise |
| * linux/i386/syscallent.h: Likewise |
| * linux/ioctlsort.c: Likewise |
| * linux/m68k/syscallent.h: Likewise |
| * linux/microblaze/syscallent.h: Likewise |
| * linux/powerpc/syscallent.h: Likewise |
| * linux/s390/syscallent.h: Likewise |
| * linux/s390x/syscallent.h: Likewise |
| * linux/sh/syscallent.h: Likewise |
| * linux/sh64/syscallent.h: Likewise |
| * linux/tile/syscallent.h: Likewise |
| * linux/x86_64/syscallent.h: Likewise |
| * mem.c: Likewise |
| * net.c: Likewise |
| * pathtrace.c: Likewise |
| * process.c: Likewise |
| * signal.c: Likewise |
| * sock.c: Likewise |
| * strace.c: Likewise |
| * stream.c: Likewise |
| * sunos4/syscall.h: Likewise |
| * sunos4/syscallent.h: Likewise |
| * svr4/syscall.h: Likewise |
| * svr4/syscallent.h: Likewise |
| * syscall.c: Likewise |
| * system.c: Likewise |
| * test/childthread.c: Likewise |
| * test/leaderkill.c: Likewise |
| * test/skodic.c: Likewise |
| * time.c: Likewise |
| * util.c: Likewise |
| |
| 2011-05-30 Dmitry V. Levin <ldv@altlinux.org> |
| |
| ARM EABI: fix 64-bit syscall's arguments decoding. |
| ARM OABI and ARM EABI have different function parameters passing rules. |
| With EABI, 64-bit function parameters passed in registers are aligned to |
| an even-numbered register instead of using the next available pair, see |
| http://lkml.org/lkml/2006/1/12/175 |
| This rule also applies to syscall's arguments. |
| |
| * linux/arm/syscallent.h (pread, pwrite, truncate64, ftruncate64, |
| readahead, preadv, pwritev): Fix number of arguments. |
| * util.c (printllval): Align 64bit argument to 64bit boundary on |
| __ARM_EABI__. |
| |
| Reported-by: Damir Shayhutdinov <damir@altlinux.org> |
| |
| 2011-05-30 Damir Shayhutdinov <damir@altlinux.ru> |
| |
| Linux: implement decoding of preadv and pwritev syscalls. |
| * io.c [LINUX && HAVE_SYS_UIO_H] (sys_preadv, sys_pwritev): New functions. |
| * linux/syscall.h (sys_preadv, sys_pwritev): Declare them. |
| * linux/*/syscallent.h: Use them. |
| |
| 2011-05-30 Denys Vlasenko <dvlasenk@redhat.com> |
| |
| "Modernize" all old-style function parameter declarations. |
| * bjm.c: Convert all remaining old-style C function definitions |
| to a "modern" form. This does not change any actual code. |
| * io.c: Likewise |
| * ioctl.c: Likewise |
| * net.c: Likewise |
| * proc.c: Likewise |
| * process.c: Likewise |
| * signal.c: Likewise |
| * sock.c: Likewise |
| * strace.c: Likewise |
| * stream.c: Likewise |
| * syscall.c: Likewise |
| * system.c: Likewise |
| * time.c: Likewise |
| * util.c: Likewise |
| |
| 2011-05-27 Denys Vlasenko <dvlasenk@redhat.com> |
| |
| Cleanups on top of "handle SIGTRAP properly" change, based on Dmitry's comments. |
| * defs.h ([p]error_msg[_and_die]): Declare new functions. |
| * strace.c (SYSCALLTRAP): Rename to syscall_trap_sig. |
| ([p]error_msg[_and_die]): Define new functions. |
| (strace_tracer_pid): New variable, it controls which pid will |
| do cleanup on exit via [p]error_msg_and_die. |
| (main): Set strace_tracer_pid to our initial pid. |
| (startup_attach): Change strace_tracer_pid if we are in -D mode. |
| (test_ptrace_setoptions_for_all): Minor changes to logic, |
| such as better diagnostic messages. |
| |
| 2011-05-25 Denys Vlasenko <dvlasenk@redhat.com> |
| |
| Identifier "errno" may be a macro, it's unsafe to use it. |
| * strace.c (strerror): Rename parameter errno to err_no |
| |
| 2011-05-24 Denys Vlasenko <dvlasenk@redhat.com> |
| |
| Don't perform TCB_WAITEXECVE wait if not needed. |
| * defs.h (ptrace_setoptions_for_all): Expose this variable. |
| * strace.c (ptrace_setoptions_for_all): Remove "static". |
| * process.c (internal_exec): Don't set TCB_WAITEXECVE bit |
| if we know that post-execve SIGTRAP is not going to happen. |
| |
| 2011-05-23 Denys Vlasenko <dvlasenk@redhat.com> |
| |
| Properly handle real SIGTRAPs. |
| * defs.h (ptrace_setoptions): Variable renamed to ptrace_setoptions_followfork. |
| * process.c (internal_fork): Ditto. |
| * strace.c (ptrace_setoptions_for_all): New variable. |
| (SYSCALLTRAP): New variable. |
| (error_msg_and_die): New function. |
| (test_ptrace_setoptions_for_all): New function. |
| (main): Call test_ptrace_setoptions_for_all() at init. |
| (handle_ptrace_event): Handle PTRACE_EVENT_EXEC (by ignoring it). |
| (trace): Check events and set ptrace options without -f too. |
| Check WSTOPSIG(status) not for SIGTRAP, but for SYSCALLTRAP. |
| |
| 2011-04-24 Mike Frysinger <vapier@gentoo.org> |
| |
| Blackfin: update syscall list. |
| |
| * linux/bfin/syscallent.h: Add name_to_handle_at, open_by_handle_at, |
| clock_adjtime, and syncfs syscalls. |
| |
| 2011-04-24 Mike Frysinger <vapier@gentoo.org> |
| |
| linux: add new EHWPOISON errno. |
| |
| * linux/errnoent.h: Change ERRNO_133 to EHWPOISON. |
| |
| 2011-04-08 Grant Edwards <grant.b.edwards@gmail.com> |
| |
| Add ability to print file descriptor paths and filter by those paths. |
| * pathtrace.c: New file, implements matching syscall arguments to |
| user-specified file paths. |
| * Makefile.am (strace_SOURCES): Add pathtrace.c. |
| * defs.h (TCB_FILTERED, filtered): New defines. |
| (getfdpath, pathtrace_select, pathtrace_match, show_fd_path, |
| tracing_paths): New declarations. |
| * strace.c (show_fd_path, tracing_paths): New global variables. |
| (usage, main): Implement handling of -y and -P options. |
| * strace.1: Add descriptions of -y and -P options. |
| * syscall.c (trace_syscall_entering): Add path matching logic to the |
| print/noprint decision and set the TCB_FILTERED bit appropriately. |
| (trace_syscall_exiting): Use filtered() macro that checks the |
| TCB_FILTERED bit to determine print/noprint status. |
| * util.c (printfd): Use getfdpath(). |
| |
| 2011-04-07 Dmitry V. Levin <ldv@altlinux.org> |
| |
| Fix BLKTRACESTOP definition. |
| * block.c: Fix typo in the check for BLKTRACESTOP. |
| Reported by Gabor Z. Papp. |
| |
| 2011-03-15 Dmitry V. Levin <ldv@altlinux.org> |
| |
| Ensure that PTRACE_GETSIGINFO et al are always defined on Linux. |
| * configure.ac (AC_CHECK_DECLS): Add PTRACE_* constants. |
| * defs.h [LINUX]: Define those PTRACE_* constants that are not provided |
| by <sys/ptrace.h>. |
| |
| * CREDITS.in: Fix typo. |
| |
| 2011-03-14 Dmitry V. Levin <ldv@altlinux.org> |
| |
| Update PTRACE_* constants. |
| * process.c (ptrace_cmds): Add PTRACE_GETREGSET and PTRACE_SETREGSET. |
| |
| Prepare for 4.6 release. |
| * NEWS: Update for 4.6 release. |
| * configure.ac: Version 4.6. |
| * debian/changelog: 4.6-1. |
| * strace.spec: 4.6-1. |
| |
| 2011-03-14 Mike Frysinger <vapier@gentoo.org> |
| |
| linux/ioctlent: unify them all. |
| This unifies all the ioctlent.h's in the linux subdir while still |
| allowing each arch to maintain its own minor list. |
| |
| The basic method is: |
| - each arch has linux/<arch>/ioctlent.h.in which defines only the |
| arch-specific ioctls; |
| - linux/ioctlent.h.in which defines only the common ioctls; |
| - at build time, these two headers are combined and sorted to produce |
| the linux/ioctlent.h file. |
| |
| This also requires a little tweaking of the include files since the |
| common ioctlent.h is a built file. |
| |
| * linux/ioctlent.h: Split into linux/ioctlent.h.in and |
| linux/i386/ioctlent.h.in, remove asm entries from the former, remove |
| non-asm entries from the latter. |
| * linux/alpha/ioctlent.h: Rename to linux/alpha/ioctlent.h.in, remove |
| non-asm entries. |
| * linux/bfin/ioctlent.h: Rename to linux/bfin/ioctlent.h.in, remove |
| non-asm entries. |
| * linux/hppa/ioctlent.h: Rename to linux/hppa/ioctlent.h.in, remove |
| non-asm entries. |
| * linux/ia64/ioctlent.h: Rename to linux/ia64/ioctlent.h.in, remove |
| non-asm entries. |
| * linux/mips/ioctlent.h: Rename to linux/mips/ioctlent.h.in, remove |
| non-asm entries. |
| * linux/powerpc/ioctlent.h: Rename to linux/powerpc/ioctlent.h.in, |
| remove non-asm entries. |
| * linux/s390/ioctlent.h: Rename to linux/s390/ioctlent.h.in, remove |
| non-asm entries. |
| * linux/sh/ioctlent.h: Rename to linux/sh/ioctlent.h.in, remove |
| non-asm entries. |
| * linux/sparc/ioctlent.h: Rename to linux/sparc/ioctlent.h.in, remove |
| non-asm entries. |
| * linux/arm/ioctlent.h.in: New file. |
| * linux/avr32/ioctlent.h.in: Likewise. |
| * linux/i386/ioctlent.h.in: Likewise. |
| * linux/m68k/ioctlent.h.in: Likewise. |
| * linux/microblaze/ioctlent.h.in: Likewise. |
| * linux/tile/ioctlent.h.in: Likewise. |
| * linux/x86_64/ioctlent.h.in: Likewise. |
| * linux/s390x/ioctlent.h.in: Include ioctlent.h.in instead of |
| ioctlent.h. |
| * linux/sh64/ioctlent.h.in: Likewise. |
| * linux/sparc64/ioctlent.h.in: Likewise. |
| * linux/arm/ioctlent1.h: Update ioctlent.h include. |
| * linux/powerpc/ioctlent1.h: Likewise. |
| * linux/sparc/ioctlent1.h: Likewise. |
| * linux/sparc64/ioctlent1.h: Likewise. |
| * linux/x86_64/ioctlent1.h: Likewise. |
| * Makefile.am (AM_CPPFLAGS): Add -I$(builddir)/$(OS). |
| (EXTRA_DIST): Update. |
| [MAINTAINER_MODE && LINUX]: Convert from ioctlent_h to ioctlent_h_in. |
| [LINUX]: Add $(builddir)/$(OS)/ioctlent.h generation rules. |
| * .gitignore: Add linux/ioctlent.h. |
| |
| 2011-03-10 Dmitry V. Levin <ldv@altlinux.org> |
| |
| Show more details about signals received by traced processess. |
| * strace.c [!USE_PROCFS] (trace): Differentiate output format depending |
| on PTRACE_GETSIGINFO success or failure. In the former case, use |
| printsiginfo() to show more details about received signal. |
| |
| Get rid of PT_GETSIGINFO. |
| * strace.c [!USE_PROCFS] (trace): Assume that PTRACE_GETSIGINFO is |
| available. Replace PT_GETSIGINFO with PTRACE_GETSIGINFO. Use |
| PTRACE_GETSIGINFO for all signals. |
| |
| Enhance decoding of kernel-generated signals. |
| * signal.c (printsiginfo) [LINUX]: Do not print uninteresting |
| zero-initialized fields. |
| |
| Fix decoding of user-generated signals. |
| * signal.c [LINUX] (SI_FROMUSER): Define. |
| [LINUX || SVR4] (printsiginfo) [SI_FROMUSER]: Enhance decoding. |
| |
| Recognize SI_KERNEL and SI_ASYNCNL. |
| * signal.c [LINUX] (SI_KERNEL, SI_ASYNCNL): Define. |
| [LINUX || SVR4] (siginfo_codes): Add entries for SI_KERNEL and |
| SI_ASYNCNL, reorder entries. |
| |
| 2011-03-05 Sebastian Pipping <sebastian@pipping.org> |
| |
| Take all git branches into account for generation of CREDITS file. |
| * Makefile.am: Make CREDITS target depend on all git branches. |
| |
| 2011-03-04 Dmitry V. Levin <ldv@altlinux.org> |
| |
| Fix decoding of file descriptors. |
| * defs.h (printfd): New function prototype. |
| * util.c (printfd): New function. |
| * file.c (print_dirfd): Update prototype to use printfd(). |
| (sys_openat, sys_faccessat, sys_newfstatat, sys_mkdirat, sys_linkat, |
| sys_unlinkat, sys_readlinkat, sys_renameat, sys_fchownat, sys_fchmodat, |
| sys_futimesat, sys_utimensat, sys_mknodat): Update use of print_dirfd(). |
| (sys_lseek, sys_llseek, sys_readahead, sys_ftruncate, sys_ftruncate64, |
| sys_fstat, sys_fstat64, sys_oldfstat, sys_fstatfs, sys_fstatfs64, |
| sys_fchdir, sys_fchroot, sys_linkat, sys_fchown, sys_fchmod, sys_fsync, |
| sys_readdir, sys_getdents, sys_getdirentries, sys_fsetxattr, |
| sys_fgetxattr, sys_flistxattr, sys_fremovexattr, sys_fadvise64, |
| sys_fadvise64_64, sys_inotify_add_watch, sys_inotify_rm_watch, |
| sys_fallocate): Use printfd() for decoding of file descriptors. |
| * desc.c (sys_fcntl, sys_flock, sys_close, sys_dup, do_dup2, |
| decode_select, sys_epoll_ctl, epoll_wait_common): Use printfd() for |
| decoding of file descriptors. |
| * io.c (sys_read, sys_write, sys_readv, sys_writev, sys_pread, |
| sys_pwrite, sys_sendfile, sys_sendfile64, sys_pread64, sys_pwrite64, |
| sys_ioctl): Likewise. |
| * mem.c (print_mmap, sys_mmap64): Likewise. |
| * signal.c (do_signalfd): Likewise. |
| * stream.c (decode_poll): Likewise. |
| * time.c (sys_timerfd_settime, sys_timerfd_gettime): Likewise. |
| Based on patch from Grant Edwards <grant.b.edwards@gmail.com>. |
| |
| 2011-03-03 Sebastian Pipping <sebastian@pipping.org> |
| |
| Print shutdown(2) modes as SHUT_* constants. |
| * net.c (shutdown_modes): New xlat structure. |
| (sys_shutdown): Use shutdown_modes to decode 2nd syscall argument. |
| |
| Fix decoding of inotify_init1() flags. |
| * file.c (inotify_init_flags): New xlat structure. |
| (sys_inotify_init1): Use it instead of open_mode_flags. |
| |
| 2011-03-03 Dmitry V. Levin <ldv@altlinux.org> |
| |
| Fix struct xlat initialization bugs. |
| * file.c (inotify_modes): Terminate with NULL entry. |
| * net.c (sock_type_flags): Make this array static. |
| (socketlayers): Add a comment that this array should remain not |
| NULL-terminated. |
| |
| tests: avoid SIGPIPE. |
| * tests/ptrace_setoptions: Replace "grep -q" with "grep > /dev/null". |
| The former may result to strace being killed by SIGPIPE, which in |
| certain configuratons may lead to generation of a core file. |
| Suggested by Mike Frysinger. |
| |
| 2011-03-01 Mike Frysinger <vapier@gentoo.org> |
| |
| tests: do not make missing /usr/bin/time a failure. |
| * tests/init.sh (framework_skip_): New function. |
| (check_prog): Use it instead of framework_failure_. |
| |
| 2011-02-27 Dmitry V. Levin <ldv@altlinux.org> |
| |
| Generate an xz tar archive of the distribution. |
| * configure.ac (AM_INIT_AUTOMAKE): Replace dist-bzip2 with dist-xz. |
| * Makefile.am: Update srpm target. |
| * make-dist: Update for dist-xz. |
| * strace.spec: Update Source tag. |
| * debian/watch: Update regexp. |
| * .gitignore: Add strace-*.tar.xz. |
| |
| Use "make check" in debian/rules and strace.spec. |
| * debian/control: Update Build-Depends. |
| * debian/rules: Run "make check". |
| * strace.spec: Update BuildRequires. Run "make check" in %check section. |
| |
| Implement two basic "strace -f" tests. |
| * Makefile.am (SUBDIRS): Add tests. |
| * configure.ac (AC_CONFIG_FILES): Add tests/Makefile. |
| * tests/.gitignore: New file. |
| * tests/Makefile.am: Likewise. |
| * tests/init.sh: Likewise. |
| * tests/ptrace_setoptions: Likewise. |
| * tests/strace-f: Likewise. |
| |
| 2011-02-26 Dmitry V. Levin <ldv@altlinux.org> |
| |
| ppc, s390, sparc: regenerate ioctlent.h files. |
| * linux/powerpc/ioctlent.h: Regenerated using Fedora 15 kernel headers. |
| * linux/s390/ioctlent.h: Likewise. |
| * linux/sparc/ioctlent.h: Likewise. |
| |
| Remove redundant ioctlent.h files. |
| * linux/s390x/ioctlent.h: Replace old contents with include of |
| s390/ioctlent.h file. |
| * linux/sparc64/ioctlent.h: Replace old contents with include of |
| sparc/ioctlent.h file. |
| |
| 2011-02-25 Dmitry V. Levin <ldv@altlinux.org> |
| |
| ioctlsort: sync with ioctl_lookup() |
| * linux/ioctlsort.c (main): Use NR and TYPE bits only, to sync with |
| ioctl_lookup() which looks at these bits only. |
| |
| Remove obsolete .cvsignore files. |
| * test/.cvsignore: Rename to test/.gitignore. |
| * */.cvsignore, */*/.cvsignore: Removed. |
| |
| Ignore generated intermediate header files. |
| * .gitignore: Add ioctls.h and ioctldefs.h. |
| |
| 2011-02-24 Dmitry V. Levin <ldv@altlinux.org> |
| |
| Generate much of the CREDITS file from git log. |
| * CREDITS.in: New file, derived from CREDITS, without names of |
| those who are listed as git log 'Author:'s. |
| * CREDITS: Remove file. |
| * Makefile.am [MAINTAINER_MODE] (CREDITS): New rule. |
| * .gitignore: Add CREDITS. |
| * .mailmap: New file, required to map git author names and email |
| addresses to canonical/preferred form. |
| |
| 2011-02-23 Dmitry V. Levin <ldv@altlinux.org> |
| |
| sparc: fix compilation warning. |
| * file.c [!HAVE_LONG_LONG_OFF_T] (realprintstat): Cast st_size |
| to unsigned long. |
| |
| Update the list of files that must be distributed. |
| * Makefile.am (EXTRA_DIST): Add debian/source/format, debian/watch, |
| linux/ia64/signalent.h, linux/powerpc/ioctlent1.h, |
| linux/powerpc/syscallent1.h, linux/powerpc/errnoent1.h, |
| linux/powerpc/signalent1.h. |
| |
| Fix compilation warning reported by gcc -Wunused-but-set-variable. |
| * process.c (printwaitn) [!SUNOS4]: Do not define "exited" variable. |
| |
| 2011-02-22 Mike Frysinger <vapier@gentoo.org> |
| |
| ioctlsort: zero pad ioctl codes to 4 places. |
| Zero padding the ioctl number will allow simple sorting via shell scripts. |
| |
| * linux/ioctlsort.c (main): Output ioctl codes zero padded. |
| * linux/ioctlent.h: Regenerated. |
| |
| 2011-02-22 Mike Frysinger <vapier@gentoo.org> |
| |
| Update mount flags to latest linux. |
| * system.c (MS_RELATIME, MS_KERNMOUNT, MS_I_VERSION, |
| MS_STRICTATIME, MS_BORN): Define. |
| (mount_flags): Add MS_RELATIME, MS_KERNMOUNT, MS_I_VERSION, |
| MS_STRICTATIME, MS_BORN. |
| |
| 2011-02-22 Dmitry V. Levin <ldv@altlinux.org> |
| |
| Sync debian/changelog and strace.spec with packages. |
| * debian/changelog: Sync with 4.5.20-2. |
| * strace.spec: Likewise. |
| |
| 2011-02-20 Dmitry V. Levin <ldv@altlinux.org> |
| |
| Add TRACE_DESC|TRACE_FILE flags to fanotify_* sysentries. |
| * linux/*/syscallent.h: Add TD flag to fanotify_init. Add TD|TF flags |
| to fanotify_mark. |
| |
| Fix flags of fallocate sysentries. |
| * linux/*/syscallent.h: Fix sys_fallocate flags. |
| |
| Add TRACE_DESC flag to epoll_create* sysentries. |
| * linux/*/syscallent.h: Add TD flag to sys_epoll_create and |
| sys_epoll_create1. |
| |
| Add TRACE_DESC flag to fgetxattr, flistxattr, and fremovexattr sysentries |
| * linux/*/syscallent.h: Add TD flag to sys_fgetxattr, sys_flistxattr, |
| and fremovexattr. |
| |
| Add TRACE_FILE flag to swapoff sysentries. |
| * linux/*/syscallent.h: Add TF flag to sys_swapoff. |
| |
| Add TRACE_DESC flag to fadvise64* sysentries. |
| * linux/*/syscallent.h: Add TD flag to sys_fadvise64 and |
| sys_fadvise64_64. |
| |
| Add TRACE_DESC flag to mmap, mmap2, and old_mmap sysentries. |
| * linux/*/syscallent.h: Add TD flag to sys_mmap and sys_old_mmap. |
| |
| Do not initialize native_scno on platforms with only one personality. |
| * linux/bfin/syscallent.h: Remove redundant native_scno initialization. |
| * linux/m68k/syscallent.h: Likewise. |
| * linux/microblaze/syscallent.h: Likewise. |
| |
| Add LOOP_* ioctls defined in linux/loop.h. |
| * linux/ioctlent.sh: Add LOOP_* ioctls (0x4C..) defined in linux/loop.h |
| header file. |
| * linux/ioctlent.h: Regenerated. |
| Reported by Mike Frysinger. |
| |
| 2011-02-19 Dmitry V. Levin <ldv@altlinux.org> |
| |
| Fix PTRACE_GETEVENTMSG usage and enhance test_ptrace_setoptions() |
| * strace.c (handle_ptrace_event): Fix PTRACE_GETEVENTMSG usage. |
| (test_ptrace_setoptions): Test that PTRACE_GETEVENTMSG works properly. |
| |
| 2011-02-19 Mike Frysinger <vapier@gentoo.org> |
| |
| linux/sparc: move to common syscall.h. |
| Rather than constantly deal with the sparc/syscall.h going stale, merge |
| the few sparc-specific pieces into the linux/syscall.h header. |
| |
| * linux/syscall.h: Add sparc-specific pieces from sparc/syscall.h. |
| * Makefile.am (EXTRA_DIST): Remove linux/sparc/syscall.h and |
| linux/sparc64/syscall.h. |
| * linux/sparc/syscall.h, linux/sparc64/syscall.h: Deleted. |
| |
| 2011-02-19 Mike Frysinger <vapier@gentoo.org> |
| |
| sparc: add new funcs to syscall.h. |
| Sync missing defs from the common syscall.h here. |
| |
| * linux/sparc/syscall.h: Add sys_setfsuid, sys_pread64, and |
| sys_pwrite64 prototypes. |
| |
| 2011-02-19 Mike Frysinger <vapier@gentoo.org> |
| |
| sparc: punt unused syscall.h.2. |
| I can't find any mention of this header actually being used. |
| Seems to be a really old copy of the common syscall.h. |
| |
| * Makefile.am (EXTRA_DIST): Remove linux/sparc/syscall.h.2. |
| * linux/sparc/syscall.h.2: Deleted. |
| |
| 2011-02-19 Dmitry V. Levin <ldv@altlinux.org> |
| |
| Fix raw exit_group(2) decoding. |
| * syscall.c (trace_syscall_entering): Check for sys_exit instead of |
| SYS_exit to handle exit_group(2) as well as _exit(2). |
| |
| 2011-02-18 Dmitry V. Levin <ldv@altlinux.org> |
| |
| Optimize known_scno() |
| * syscall.c (known_scno): Do not check for native_scno field on |
| platforms that support only one personality. |
| |
| * process.c (internal_exit) [IA64]: Remove redundant check. |
| |
| 2011-02-09 Dmitry V. Levin <ldv@altlinux.org> |
| |
| Fix biarch support in IO dumping. |
| * syscall.c (dumpio): Switch on tcp->sys_func instead of tcp->scno |
| for more reliable results. |
| |
| Simplify tprintf() declaration. |
| * defs.h (tprintf): Simplify declaration. |
| |
| 2011-02-05 Dmitry V. Levin <ldv@altlinux.org> |
| |
| * defs.h (SYSCALL_NEVER_FAILS): Fix typo. |
| |
| 2011-01-19 Dmitry V. Levin <ldv@altlinux.org> |
| |
| Fix decoding of get[ug]id, gete[ug]id and setfs[ug]id return values. |
| * defs.h (SYSCALL_NEVER_FAILS): New syscall flag. |
| * linux/dummy.h: Change redirection for sys_get[ug]id, sys_gete[ug]id |
| and setfs[ug]id. |
| * linux/*/syscallent.h: Set SYSCALL_NEVER_FAILS flag for get[ug]id, |
| gete[ug]id and setfs[ug]id syscalls. |
| * process.c [LINUX] (sys_getuid, sys_setfsuid): New functions. |
| * syscall.c (NF): New shorthand macro for use in syscallent.h files. |
| (get_error): Check SYSCALL_NEVER_FAILS flag. |
| Reported by Марк Коренберг <socketpair@gmail.com>. |
| |
| * linux/*/syscallent.h: Fix typo in sys_newfstatat syscall flags. |
| |
| 2011-01-18 Mike Frysinger <vapier@gentoo.org> |
| |
| Blackfin: update ioctl list. |
| * linux/bfin/ioctlent.h: Sync with latest kernel sources. |
| |
| 2011-01-17 Dmitry V. Levin <ldv@altlinux.org> |
| |
| Fix stat64 decoding on mips. |
| * linux/mips/syscallent.h: Use sys_stat64() to decode stat64 syscall. |
| This fixes Debian bug #599028. |
| |
| Update linux/*/syscallent.h files to match Linux kernel v2.6.37. |
| * linux/alpha/syscallent.h: Add hooks for fanotify_init, fanotify_mark, |
| and prlimit64. |
| * linux/i386/syscallent.h: Likewise. |
| * linux/ia64/syscallent.h: Likewise. |
| * linux/m68k/syscallent.h: Likewise. |
| * linux/microblaze/syscallent.h: Likewise. |
| * linux/mips/syscallent.h: Likewise. |
| * linux/powerpc/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/x86_64/syscallent.h: Likewise. |
| * linux/arm/syscallent.h: Add hooks for accept4, fanotify_init, |
| fanotify_mark, and prlimit64. |
| * linux/hppa/syscallent.h: Add hook for prlimit64. |
| |
| 2011-01-16 Dmitry V. Levin <ldv@altlinux.org> |
| |
| block.c: cleanup. |
| * block.c: Include <inttypes.h>. |
| (print_blkpg_req): Always decode struct blkpg_ioctl_arg. |
| Robustify decoding of strings. |
| (block_ioctl): Do not decode return values passed by pointers on exit |
| from failed syscalls. |
| Use format macros from inttypes.h to print values of type uint64_t. |
| |
| 2011-01-15 Dmitry V. Levin <ldv@altlinux.org> |
| |
| Add block ioctl support. |
| * block.c: New file. |
| * Makefile.am (strace_SOURCES): Add it. |
| * defs.h [LINUX] (block_ioctl): New function. |
| * ioctl.c (ioctl_decode) [LINUX]: Use it to decode HDIO_* and BLK* |
| ioctls. |
| Patch by Jeff Mahoney <jeffm@suse.com> |
| |
| 2011-01-14 Holger Hans Peter Freyther <zecke@selfish.org> |
| |
| Parse SOL_SCTP socket options. |
| * configure.ac (AC_CHECK_HEADERS): Add netinet/sctp.h. |
| * net.c [HAVE_NETINET_SCTP_H]: Include <netinet/sctp.h>. |
| [SOL_SCTP] (socksctpoptions): New xlat structure. |
| (sys_getsockopt, printsockopt): Parse SOL_SCTP options. |
| |
| * net.c (socketlayers): Add more SOL_* constants from linux/socket.h. |
| |
| 2011-01-14 Dmitry V. Levin <ldv@altlinux.org> |
| |
| strace.1: fix misleading italics. |
| * strace.1: Use bold instead of italics for "-e trace=" keywords. |
| This fixes Debian bug #589323. |
| |
| Update linux/ioctlent.h. |
| * linux/ioctlent.h: Regenerate using linux v2.6.37 headers. |
| |
| Add HDIO_* ioctls defined in linux/hdreg.h. |
| * linux/ioctlent.sh: Add HDIO_* ioctls (0x03..) defined in |
| linux/hdreg.h header file. |
| This fixes Debian bug #450953. |
| |
| 2011-01-13 Dmitry V. Levin <ldv@altlinux.org> |
| |
| Test PTRACE_O_TRACECLONE and PTRACE_O_TRACEVFORK along with PTRACE_O_TRACEFORK |
| * strace.c (test_ptrace_setoptions): Add PTRACE_O_TRACECLONE and |
| PTRACE_O_TRACEVFORK to PTRACE_SETOPTIONS call, to test exactly |
| the same set of options that is going to be used later in trace(). |
| |
| 2011-01-10 Dmitry V. Levin <ldv@altlinux.org> |
| |
| * net.c (protocols): Add more IPPROTO_* constants defined in netinet/in.h |
| |
| 2011-01-10 Holger Hans Peter Freyther <holger@freyther.de> |
| |
| * net.c (protocols): Add IPPROTO_GRE, IPPROTO_SCTP and IPPROTO_UDPLITE. |
| |
| 2011-01-10 Carmelo AMOROSO <carmelo.amoroso@st.com> |
| |
| sh: Add entry for not-multiplexed accept4. |
| * linux/sh/syscallent.h: Add specific entry for not-multiplexed accept4 |
| available in kernel mainline since v2.6.37-rc6, see |
| http://git.kernel.org/?p=linux/kernel/git/torvalds/linux-2.6.git;a=commit;h=21b6e4c7106b2d68a6710506d8706608272fd78b |
| |
| 2010-12-14 Carmelo AMOROSO <carmelo.amoroso@st.com> |
| |
| sh: Add entries for not-multiplexed socket calls. |
| * linux/sh/syscallent.h: Add specific entries for not-multiplexed |
| socket calls (available in kernel mainline since v2.6.37-rc1) |
| |
| sh: Fix compilation warning in do_pipe due to missing prototype. |
| * defs.h [SH]: Make getrval2 prototype visible to do_pipe |
| and fix the following compiler warning: |
| .../net.c: In function 'do_pipe': |
| .../net.c:1632: warning: implicit declaration of function 'getrval2' |
| .../net.c:1632: warning: format '%lu' expects type 'long unsigned int', |
| but argument 3 has type 'int' |
| |
| 2010-12-14 Dmitry V. Levin <ldv@altlinux.org> |
| |
| Fix build on uClibc. |
| * defs.h [LINUX]: Define PTRACE_GETEVENTMSG macro. |
| Patch by Douglas Mencken <dougmencken@gmail.com>. |
| |
| 2010-12-07 Dmitry V. Levin <ldv@altlinux.org> |
| |
| Fix strace -f -o '|command' hangup. |
| * strace.c (main): Call test_ptrace_setoptions() before parsing |
| -o option, otherwise a forked command will cause a hangup inside |
| test_ptrace_setoptions(). |
| |
| 2010-12-03 Dmitry V. Levin <ldv@altlinux.org> |
| |
| Output diagnostics to stderr. |
| * syscall.c (get_scno): Output information about changes in |
| personality mode to stderr. Reported by Pádraig Brady. |
| |
| Recognize more clone flags. |
| * process.c (CLONE_*): Define more flags from linux v2.6.25. |
| (clone_flags): Add entries for them. |
| Proposed by <zhangyanfei@cn.fujitsu.com>. |
| |
| Decode struct ucred for getsockopt SO_PEERCRED. |
| * net.c (sys_getsockopt): Decode SO_PEERCRED. |
| Proposed by Arkadiusz Miśkiewicz <arekm@maven.pl>. |
| |
| 2010-12-03 Carmelo AMOROSO <carmelo.amoroso@st.com> |
| |
| sh: Add support for tracing sys_cacheflush system call. |
| * linux/sh/syscallent.h: Update sys_cacheflush entry. |
| * linux/syscall.h [SH] (sys_cacheflush): New function declaration. |
| * system.c [SH] (cacheflush_flags): New xlat structure. |
| [SH] (sys_cacheflush): New function. |
| |
| Reviewed-by: Angelo Castello <angelo.castello@st.com> |
| |
| 2010-11-30 Dmitry V. Levin <ldv@altlinux.org> |
| |
| Cleanup test_ptrace_setoptions() |
| * strace.c (test_ptrace_setoptions): Cleanup. |
| (main): Fix test_ptrace_setoptions() error diagnostics message. |
| Print ptrace_setoptions value in debug mode. |
| |
| 2010-11-30 Wang Chao <wang.chao@cn.fujitsu.com> |
| |
| Handle followfork using ptrace_setoptions if available. |
| If PTRACE_O_TRACECLONE et al options are supported by kernel, |
| use them to do followfork rather than the original setbpt |
| method that changes registers ourselves. |
| |
| * defs.h [LINUX] (handle_new_child): New function prototype. |
| * process.c [LINUX] (handle_new_child): New function based on the |
| code from internal_fork(), with a trivial change: do reparent only |
| for sys_clone. |
| [LINUX] (internal_fork): Use handle_new_child(). Do nothing if |
| ptrace_setoptions is in effect. |
| * strace.c [LINUX] (handle_ptrace_event): New function. |
| [LINUX] (trace): If ptrace_setoptions is in effect, then |
| call the new function to handle PTRACE_EVENT_* status, and |
| set PTRACE_SETOPTIONS when we see the initial stop of tracee. |
| |
| 2010-11-30 Wang Chao <wang.chao@cn.fujitsu.com> |
| |
| Test how PTRACE_SETOPTIONS support works. |
| Currently test fork related options only. Fork a child that uses |
| PTRACE_TRACEME at startup and then does a fork so strace can test |
| how the PTRACE_SETOPTIONS support works before it handles any real |
| tracee. Since PTRACE_O_TRACECLONE/*FORK were introduced to kernel |
| at the same time, this test seems to be enough for these 3 options. |
| |
| * defs.h [LINUX]: Define PTRACE_O_TRACECLONE et al macros here. |
| (ptrace_setoptions): New variable declaration. |
| * strace.c [LINUX] (test_ptrace_setoptions): New function, tests |
| whether kernel supports PTRACE_O_CLONE/*FORK, the result is stored |
| in the new variable ptrace_setoptions for later use. |
| (main): Call test_ptrace_setoptions() if followfork option is set. |
| |
| 2010-09-17 Dmitry V. Levin <ldv@altlinux.org> |
| |
| Enable support for less verbose build rules. |
| * configure.ac (AM_INIT_AUTOMAKE): Add silent-rules. |
| |
| 2010-09-17 Wang Chao <wang.chao@cn.fujitsu.com> |
| |
| Do not trace children cloned with CLONE_UNTRACED flag. |
| If clone is called with flag CLONE_UNTRACED, to be consistent with |
| option PTRACE_O_TRACECLONE, we should not set CLONE_PTRACE flag on |
| its arguments. |
| |
| * process.c [LINUX] (internal_fork): Check the syscall and arguments. |
| |
| 2010-09-17 Dmitry V. Levin <ldv@altlinux.org> |
| |
| Update the list of CLOCK_* constants to match Linux kernel v2.6.32+ |
| * time.c (struct xlat clocknames[]): Add more RT clock IDs. |
| Reported by Tommi Rantala. |
| |
| 2010-09-16 Dmitry V. Levin <ldv@altlinux.org> |
| |
| Update linux/hppa/syscallent.h to match Linux kernel v2.6.35. |
| * linux/hppa/syscallent.h: Add hooks for recvmmsg and accept4. |
| |
| 2010-09-15 Dmitry V. Levin <ldv@altlinux.org> |
| |
| Pass less information to qualify_one and qual_* |
| * syscall.c (qualify_one, qual_syscall, qual_signal, qual_fault, |
| qual_desc): Take just a bitflag argument instead of pointer to the whole |
| qual_options structure. |
| (struct qual_options): Update prototype of "qualify" field. |
| (qualify): Update use of qualify_one and qual_options->qualify. |
| |
| 2010-09-15 Wang Chao <wang.chao@cn.fujitsu.com> |
| |
| Fix -e option with only one value in qualifier statement. |
| Fix regression introduced by commit v4.5.20-19-g30145dd: |
| if -e option is used with only one value in qualifier statement, |
| e.g. 'strace -e trace=open ls', syscall information would not be |
| printed properly. |
| |
| * syscall.c (qualify): Remove faulty optimization. |
| |
| 2010-09-15 Mike Frysinger <vapier@gentoo.org> |
| |
| Fix off_t/rlim_t size checks when cross-compiling. |
| The current off_t/rlim_t size checks (wrt size of long long) use AC_RUN |
| which obviously doesn't work when cross-compiling. While we don't hit |
| any configure errors, the fall back code is pretty dumb (which is to say |
| there isn't any). Considering the code in question though, we can use |
| some fun compiler tricks with sizeof and array lengths to turn it into |
| a pure build test and avoid the RUN issue completely. |
| |
| * m4/long_long.m4 (AC_OFF_T_IS_LONG_LONG, AC_RLIM_T_IS_LONG_LONG): |
| Convert from AC_RUN_IFELSE to AC_COMPILE_IFELSE. |
| |
| 2010-09-15 Mike Frysinger <vapier@gentoo.org> |
| |
| Fix long long little endian detection when cross-compiling. |
| The long long endian detection code does an AC_TRY_RUN() and since that |
| doesn't work when cross-compiling, it sets a fallback value. However, |
| rather than do any sort of default endian detection, the code simply |
| sets it to "no". This probably breaks most little endian systems out |
| there when cross-compiling for them. It certainly breaks Blackfin |
| systems. So use the common endian detection code provided by autoconf |
| and key off of that when cross-compiling. |
| |
| * configure.ac: Call AC_C_BIGENDIAN. |
| * m4/long_long.m4 (AC_LITTLE_ENDIAN_LONG_LONG): Set cross-compiling |
| logic based on ac_cv_c_bigendian. |
| |
| 2010-09-15 Mike Frysinger <vapier@gentoo.org> |
| |
| Blackfin: decode new syscalls. |
| * linux/bfin/syscallent.h: Add fanotify/prlimit/cacheflush syscalls. |
| * linux/syscall.h: Add sys_cacheflush() decl. |
| * system.c: Decode Blackfin's cacheflush syscall. |
| |
| * linux/ioctlent.sh: Search a few non-exported paths. |
| |
| 2010-09-15 Roland McGrath <roland@redhat.com> |
| |
| Clean up pid2tcb usage. |
| * strace.c (pid2tcb): Always match pid. Fail for argument <= 0. |
| [USE_PROCFS] (first_used_tcb): New function. |
| [USE_PROCFS] (trace): Use that instead of pid2tcb(0). |
| |
| 2010-09-09 Dmitry V. Levin <ldv@altlinux.org> |
| |
| Turn on more compiler warnings. |
| * configure.ac: Enable gcc -Wwrite-strings. |
| |
| Import warnings.m4 from gnulib. |
| * m4/warnings.m4: Replace with warnings.m4 from gnulib. |
| * configure.ac: Use gl_WARN_ADD from new warnings.m4. |
| * Makefile.am (AM_CFLAGS): Update for new warnings.m4. |
| |
| Split acinclude.m4. |
| * Makefile.am (ACLOCAL_AMFLAGS): Add "-I m4". |
| * acinclude.m4: Remove. |
| * m4/includedir.m4: New file, with definition of AC_INCLUDEDIR from |
| acinclude.m4. |
| * m4/long_long.m4: New file, with definitions of AC_OFF_T_IS_LONG_LONG, |
| AC_RLIM_T_IS_LONG_LONG and AC_LITTLE_ENDIAN_LONG_LONG from acinclude.m4. |
| * m4/procfs.m4: New file, with definitions of AC_MP_PROCFS, |
| AC_POLLABLE_PROCFS and AC_STRUCT_PR_SYSCALL from acinclude.m4. |
| * m4/stat.m4: New file, with definition of AC_STAT64 from acinclude.m4. |
| * m4/statfs.m4: New file, with definition of AC_STATFS64 from |
| acinclude.m4. |
| * m4/warnings.m4: New file, with definition of AC_WARNFLAGS from |
| acinclude.m4. |
| |
| * process.c (sys_waitid): Remove unused variable. |
| |
| 2010-09-07 Dmitry V. Levin <ldv@altlinux.org> |
| |
| Fix const-correctness issues uncovered by gcc -Wwrite-strings. |
| * defs.h (struct xlat): Add const qualifier to the field of |
| type "char *". |
| (set_sortby, qualify, printnum, printnum_int): Add const qualifier to |
| arguments of type "char *". |
| * count.c (set_sortby): Add const qualifier to the argument and |
| automatic variable of type "char *". |
| * desc.c (decode_select): Add const qualifier to automatic variables of |
| type "char *". |
| * ioctlsort.c (struct ioctlent): Add const qualifier to fields of |
| type "char *". |
| (main): Add const qualifier to argv. |
| * process.c (printargv): Add const qualifier to the argument and |
| automatic variable of type "char *". |
| (printargc) Add const qualifier to argument of type "char *". |
| * signal.c (sprintsigmask, parse_sigset_t): Add const qualifier to |
| arguments of type "char *". |
| * strace.c (progname): Add const qualifier. |
| (detach): Add const qualifier to automatic variable of type "char *". |
| * stream.c (struct strbuf): Add const qualifier to the field of |
| type "char *". |
| * syscall.c (struct qual_options): Add const qualifier to fields of |
| type "char *". |
| (qual_syscall, qual_fault, qual_desc, lookup_class): Add const qualifier |
| to arguments of type "char *". |
| (qual_signal): Add const qualifier to the argument of type "char *", |
| avoid modification of constant argument. |
| (qualify): Likewise. |
| * util.c (printflags): Add const qualifier to automatic variable of |
| type "char *". |
| (printnum, printnum_int): Add const qualifier to arguments of |
| type "char *". |
| |
| 2010-09-04 Wang Chao <wang.chao@cn.fujitsu.com> |
| |
| Fix printing clone flags. |
| When we trace clone() syscall with only exit signal as clone |
| flags, strace would print an unnecessary OR operator. |
| |
| * process.c (sys_clone): Fix this. |
| |
| 2010-08-28 Wang Chao <wang.chao@cn.fujitsu.com> |
| |
| Drop nclone_detached and related flags. |
| Remove nclone_detached since CLONE_DETACHED flag was no-op for a very |
| long time in kernel. |
| |
| * defs.h (struct tcb): Remove nclone_detached field. |
| Remove TCB_CLONE_DETACHED flag. |
| * process.c: Remove CLONE_DETACHED flag. |
| (clone_flags): Remove CLONE_DETACHED entry. |
| (internal_fork, internal_wait): Remove code dealing with CLONE_DETACHED |
| flag and nclone_detached. |
| * strace.c (startup_attach, alloc_tcb, droptcb, handle_group_exit): |
| Likewise. |
| |
| 2010-08-09 Neil Campbell <lists@thebatcave.org.uk> |
| |
| Correct get/set_robust_list syscall numbers for powerpc. |
| * linux/powerpc/syscallent.h: Swap positions of get_ and set_robust_list. |
| |
| 2010-08-09 Wang Chao <wang.chao@cn.fujitsu.com> |
| |
| Handle CLONE_PARENT flag. |
| * process.c (internal_fork): The parent of new cloned process is the |
| same of the calling process when CLONE_PARENT is set. |
| |
| Fix error when judging if process has children. |
| * process.c (internal_wait): Processes counted in tcp->nclone_threads |
| are tcp's threads, rather than tcp's children. |
| |
| 2010-08-09 Wang Chao <wang.chao@cn.fujitsu.com> |
| |
| Forbid using mutually exclusive options -D and -p together. |
| If we use -D and -p option together to trace a multi-thread program, in |
| addition to the main thread, other threads could not be traced even if we |
| present -f option. Moreover, when executing 'strace -D -p <non-exist pid>', |
| strace could not terminate normally. |
| |
| * strace.c (main): Check it. |
| |
| 2010-08-05 David Daney <ddaney@caviumnetworks.com> |
| |
| Update Linux MIPS syscalls to match 2.6.35-rc6+ |
| * linux/mips/syscallent.h: Add and update 405 hooks. |
| |
| 2010-08-05 Edgar E. Iglesias <edgar.iglesias@gmail.com> |
| |
| Add support for the MicroBlaze architecture. |
| * configure.ac: Recognize MicroBlaze. |
| * linux/microblaze/syscallent.h: New file. |
| * Makefile.am (EXTRA_DIST): Add linux/microblaze/syscallent.h |
| * process.c (change_syscall, struct_user_offsets): Add MicroBlaze |
| support. |
| * signal.c (sys_sigreturn): Likewise. |
| * syscall.c (internal_syscall, get_scno, syscall_fixup, get_error, |
| syscall_enter): Likewise. |
| |
| 2010-08-05 Frederik Schüler <fs@debian.org> |
| |
| linux/sparc: add missing syscall declarations. |
| * linux/sparc/syscall.h: Sync with linux/syscall.h |
| |
| 2010-07-17 Andreas Schwab <schwab@linux-m68k.org> |
| |
| Handle biarch get/setrlimit. |
| * resource.c (print_rlimit32) [POWERPC64 || X86_64]: Define. |
| (sys_getrlimit, sys_setrlimit) [POWERPC64 || X86_64]: Use it. |
| |
| 2010-07-13 Andreas Schwab <schwab@linux-m68k.org> |
| |
| Add biarch support for powerpc64. |
| * acinclude.m4 (AC_LITTLE_ENDIAN_LONG_LONG): Use int instead of |
| long. |
| * configure.ac [$host_cpu = powerpc*]: Also define POWERPC64 if |
| $host_cpu = powerpc64. |
| * defs.h (SUPPORTED_PERSONALITIES, PERSONALITY0_WORDSIZE) |
| (PERSONALITY1_WORDSIZE) [POWERPC64]: Define. |
| * file.c: (struct stat_powerpc32, printstat_powerpc32) [POWERPC64]: |
| Define. |
| (printstat) [LINUX && POWERPC64]: Use printstat_powerpc32 in |
| 32-bit personality. |
| (sys_newfstatat) [POWERPC64]: Handle personalities. |
| * signal.c (sys_sigreturn) [POWERPC64]: Likewise. |
| * util.c (printllval) [POWERPC64]: Likewise. |
| (printcall) [POWERPC64]: Use wider format for IP prefix. |
| * syscall.c (get_scno) [POWERPC64]: Check for 64/32 bit mode. |
| * linux/powerpc/errnoent1.h: New file. |
| * linux/powerpc/ioctlent1.h: New file. |
| * linux/powerpc/signalent1.h: New file. |
| * linux/powerpc/syscallent1.h: New file. |
| |
| 2010-07-09 Andreas Schwab <schwab@redhat.com> |
| |
| Balance braces. |
| * strace.c (proc_open): Avoid unbalanced braces. |
| (trace): Likewise. |
| |
| 2010-07-06 Andreas Schwab <schwab@linux-m68k.org> |
| |
| Remove extern declaration at file scope. |
| * defs.h (force_result): Declare. |
| * process.c (internal_wait): Don't declare force_result. |
| |
| 2010-06-24 Andreas Schwab <schwab@redhat.com> |
| |
| Document -C/-D. |
| * strace.c (usage): Document -C. |
| * strace.1: Document -D. |
| |
| 2010-06-13 Roland McGrath <roland@redhat.com> |
| |
| Fix sourceforge download URL. |
| |
| 2010-06-05 Andreas Schwab <schwab@linux-m68k.org> |
| |
| M68K: Fix fetching syscall arguments. |
| * syscall.c (syscall_enter) [M68K]: Properly handle more than five |
| syscall arguments. |
| |
| 2010-05-28 Andreas Schwab <schwab@linux-m68k.org> |
| |
| Decode TLS syscalls on m68k. |
| * linux/m68k/syscallent.h: Add entries for get_thread_area, |
| set_thread_area, atomic_comxchg_32, atomic_barrier. |
| * linux/dummy.h (sys_get_thread_area, sys_set_thread_area) [M68K]: |
| Don't redefine. |
| * mem.c (sys_get_thread_area, sys_set_thread_area) [LINUX && M68K]: New. |
| |
| Fix warning when compiling for m68k. |
| * syscall.c (d0): Define as long. |
| |
| 2010-04-13 Dmitry V. Levin <ldv@altlinux.org> |
| |
| Prepare for 4.5.20 release. |
| * NEWS: Update for 4.5.20 release. |
| * configure.ac: Version 4.5.20. |
| * debian/changelog: 4.5.20-1. |
| * strace.spec: 4.5.20-1. |
| |
| 2010-04-13 Frederik Schüler <fs@debian.org> |
| |
| Update debian/* files for the upcoming release. |
| * debian/control: update standards-version to 3.8.4. |
| * debian/rules: allow parallel building. |
| * debian/rules: comment out verbose build, only needed for debugging. |
| * debian/rules: clean up clean: target, dh_clean does most of the work |
| already. |
| * debian/rules: use *-stamp instead of stamp-*, so dh_clean can tidy |
| up for us. |
| |
| 2010-04-13 Heiko Carstens <heiko.carstens@de.ibm.com> |
| |
| Fix s390 system call table list. |
| * linux/s390/syscallent.h: Add the missing entries for preadv and |
| pwritev to the system call table list. |
| * linux/s390x/syscallent.h: Likewise. |
| |
| 2010-04-07 Dmitry V. Levin <ldv@altlinux.org> |
| |
| Update linux/ioctlent.h. |
| * linux/ioctlent.sh: Search in asm-generic directory as well. |
| * linux/ioctlent.h: Regenerated. |
| |
| Update linux/*/syscallent.h files to match Linux kernel v2.6.33. |
| * linux/alpha/syscallent.h: Add 47 hooks. |
| * linux/arm/syscallent.h: Update hooks for pselect6, ppoll, |
| epoll_pwait. Add 11 hooks. |
| * linux/bfin/syscallent.h: Update hooks for prctl, fallocate, |
| signalfd4, eventfd2, epoll_create1, dup3, pipe2, perf_event_open. |
| Hook up recvmmsg. |
| * linux/hppa/syscallent.h: Update hooks for signalfd4, eventfd2, |
| epoll_create1, dup3, pipe2, perf_event_open. |
| * linux/i386/syscallent.h: Fix syscall name for the kexec_load hook. |
| Add 5 hooks. |
| * linux/ia64/syscallent.h: Fix syscall name for the kexec_load hook. |
| Add 4 hooks. |
| * linux/m68k/syscallent.h: Add 50 hooks. |
| * linux/powerpc/syscallent.h: Fix hook for timerfd_create. Fix |
| 6 syscall names to match the kernel. Use sys_semop to parse semop. |
| Add 14 hooks. |
| * linux/s390/syscallent.h: Fix syscall name for the kexec_load hook. |
| Add 14 hooks. |
| * linux/s390x/syscallent.h: Likewise. |
| * linux/sh/syscallent.h: Add 13 hooks. |
| * linux/sh64/syscallent.h: Add 15 hooks. |
| * linux/sparc/syscallent.h: Add 22 hooks. |
| * linux/x86_64/syscallent.h: Add 5 hooks. |
| |
| Enhance recvmmsg parser. |
| * net.c (sys_recvmmsg): Decode mmsghdr structure on exit from the |
| syscall. Decode timespec structure both on entrance and on exit. |
| |
| 2010-04-07 Andreas Schwab <schwab@linux-m68k.org> |
| |
| Decode recvmmsg syscall. |
| * net.c (do_msghr): New function to print struct msghdr. |
| (printmsghdr): Use it. |
| (printmmsghdr, sys_recvmmsg): New. |
| * linux/syscall.h: Declare sys_recvmmsg. |
| (SYS_sub_recvmmsg): Define. |
| (SYS_socket_nsubcalls): Bump. |
| * linux/sparc/syscall.h: Likewise. |
| * linux/arm/syscallent.h: Add sys_recvmmsg. |
| * linux/bfin/syscallent.h: Likewise. |
| * linux/i386/syscallent.h: Likewise. |
| * linux/m68k/syscallent.h: Likewise. |
| * linux/powerpc/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/ia64/syscallent.h: Adjust. |
| |
| 2010-04-07 Dmitry V. Levin <ldv@altlinux.org> |
| |
| * strace.1: Fix quoting of hyphens and formatting of strace options. |
| |
| Split trace_syscall() for better readability. |
| * syscall.c (trace_syscall): Split into trace_syscall_exiting() and |
| trace_syscall_entering(). |
| |
| Implement -C option to combine regular and -c output. |
| * defs.h (cflag_t): New enum. |
| * strace.1: Document -C option. |
| * strace.c (cflag): Update type. |
| (main): Handle -C option. |
| (trace): Update use of cflag. |
| * count.c (count_syscall): Move clearing of TCB_INSYSCALL to ... |
| * syscall.c (trace_syscall): ... here. Update use of cflag. |
| Based on patch by Adrien Kunysz. |
| |
| Fix "make dist" regression introduced by commit v4.5.19-12-g5078770. |
| * Makefile.am (EXTRA_DIST): Rename linux/syscallent.h to linux/i386/syscallent.h |
| |
| * desc.c (sys_epoll_pwait): Fix output formatting bug. |
| |
| * desc.c (decode_select): Fix potential stack buffer overflow. |
| |
| 2010-03-31 Dmitry V. Levin <ldv@altlinux.org> |
| |
| Fix msgsnd indirect ipccall decoding. |
| This regression was introduced by commit v4.5.18-136-g783f5bc. |
| * ipc.c (tprint_msgsnd): Add and use "flags" argument. |
| (sys_msgsnd): Pass "flags" argument to tprint_msgsnd(). |
| Patch by Anton Blanchard. |
| |
| 2010-03-23 Mark Wielaard <mjw@redhat.com> |
| |
| Hook up inotify_init1 open mode flags printer. |
| * file.c [LINUX] (sys_inotify_init1): New function. |
| * linux/syscall.h: Declare new sys_inotify_init1 handler. |
| * linux/bfin/syscallent.h: Hook up new handler. |
| * linux/hppa/syscallent.h: Likewise. |
| * linux/i386/syscallent.h: Likewise. |
| * linux/x86_64/syscallent.h: Likewise. |
| |
| 2010-03-09 Andreas Schwab <schwab@redhat.com> |
| |
| Avoid spurious error when checking for linux/netlink.h. |
| * configure.ac: Include <asm/types.h> when checking for |
| linux/netlink.h. |
| |
| 2010-02-23 Andreas Schwab <schwab@linux-m68k.org> |
| |
| Fix reporting signal mask by sigreturn on powerpc. |
| * signal.c (sys_sigreturn) [POWERPC]: Skip dummy stack frame when |
| locating signal context. |
| |
| 2010-02-09 David Daney <ddaney@caviumnetworks.com> |
| |
| Fix MIPS N32/N64 compile error. |
| * syscall.c [LINUX_MIPSN32 || LINUX_MIPSN64] (syscall_enter): Pass |
| tcp->pid to ptrace(). |
| |
| 2010-02-05 Chris Metcalf <cmetcalf@tilera.com> |
| |
| Add support for the TILE architecture. |
| * configure.ac: Add TILE to the list of supported architectures. |
| * defs.h: Define TCB_WAITEXECVE for TILE. |
| * linux/tile/syscallent.h: New file. |
| * Makefile.am (EXTRA_DIST): Add linux/tile/syscallent.h |
| * process.c (change_syscall, struct_user_offsets): Add TILE support. |
| * syscall.c (get_scno, get_error, syscall_enter): Likewise. |
| * mem.c (mmap_flags, print_mmap): Add MAP_CACHE_xxx TILE extensions |
| support. |
| * signal.c (sigact_flags): Add SA_NOPTRACE. |
| (sys_sigreturn): Add TILE support. |
| |
| 2010-02-04 Dmitry V. Levin <ldv@altlinux.org> |
| |
| Remove dead code. |
| * defs.h (tv_tv): Remove. |
| * net.c (sys_xsetsockaddr): Remove commented out dead code. |
| * process.c (setarg, sys_execv, sys_execve, struct_user_offsets): |
| Likewise. |
| * signal.c (sys_sigsuspend): Likewise. |
| * strace.c (reaper, trace): Likewise. |
| * stream.c (internal_stream_ioctl): Likewise. |
| * syscall.c (trace_syscall): Likewise. |
| * term.c (term_ioctl): Likewise. |
| * util.c (tv_tv, umoven, uload, getpc, fixvfork, setbpt, clearbpt): |
| Likewise. |
| |
| Merge Linux internal_clone() into internal_fork() |
| * defs.h (internal_clone): Remove. |
| * process.c (internal_clone): Merge into internal_fork(). |
| (internal_fork) [!LINUX]: Remove dead code. |
| * syscall.c (internal_syscall): Replace internal_clone() with |
| internal_fork(). |
| |
| * Makefile.am (INCLUDES): Remove redundant search directories. |
| |
| 2010-02-04 Frederik Schüler <fs@debian.org> |
| |
| Update debian/* files. |
| * debian/control: add sparc64 to the architectures list. |
| This closes Debian bug #560062 |
| * Backport commit f0df31e71a58c6e79ba77c1a9d84b2f38d44bec7 to fix FTBFS. |
| This closes Debian bug #560516 |
| * debian/control: Update standards-version to 3.8.3. |
| * debian/control: Lower package priority to optional, matching |
| the archive override. |
| * debian/control: add ${misc:Depends} to Depends: lines where |
| appropriate. |
| * debian/watch: new file, allows automatic tracking of new |
| upstream versions. |
| * debian/source/format: new file, adapt to debian source format "quilt" |
| * debian/rules: indentation cleanups; use dh_testroot and dh_prep |
| in clean target. |
| |
| 2010-01-25 Andreas Schwab <schwab@redhat.com> |
| |
| Fix spurious failure of AC_STAT64 test. |
| * acinclude.m4 (AC_STAT64): Include <sys/types.h> first. |
| |
| 2010-01-12 Andreas Schwab <schwab@redhat.com> |
| |
| Don't kill the process when detaching. |
| * strace.c (detach): Call clearbpt when TCB_BPTSET is set. |
| |
| 2009-12-25 Dmitry V. Levin <ldv@altlinux.org> |
| |
| Decode fifth argument of mremap syscall. |
| * mem.c (sys_mremap): Decode fifth argument. |
| * linux/*/syscallent.h: Update the number of mremap syscall arguments. |
| |
| 2009-12-24 Chris Metcalf <cmetcalf@tilera.com> |
| |
| * mem.c (sys_mbind): Display first argument in hex. |
| |
| * mem.c (mremap_flags): Add MREMAP_FIXED. |
| |
| 2009-11-16 Mike Frysinger <vapier@gentoo.org> |
| |
| Move i386-specific files out of common linux dir. |
| * linux/syscallent.h: Moved to ... |
| * linux/i386/syscallent.h: ... here. |
| * linux/ia64/syscallent.h: Update i386 syscallent.h include. |
| * linux/sparc/gen.pl: Likewise. |
| * linux/x86_64/syscallent1.h: Likewise. |
| |
| 2009-11-16 Andreas Schwab <schwab@redhat.com> |
| |
| Remove support for pre-C89. |
| * defs.h: Remove references to __STDC__ and P macros. |
| * strace.c: Likewise. |
| |
| 2009-11-13 Dmitry V. Levin <ldv@altlinux.org> |
| |
| Decode more SOL_PACKET socket options. |
| * net.c (sockpacketoptions): Add more PACKET_* entries. |
| (sys_getsockopt): Decode PACKET_STATISTICS. |
| (printsockopt): Decode PACKET_RX_RING and PACKET_TX_RING. |
| Patch by Gabor Gombas. |
| |
| 2009-11-11 Andreas Schwab <schwab@redhat.com> |
| |
| Ignore errors if a thread is killed. |
| * util.c (clearbpt): Ignore ESRCH error. |
| |
| 2009-11-06 Bernhard Reutner-Fischer <rep.dot.nop@gmail.com> |
| |
| Fix handling of Linux systems without struct statfs64. |
| * acinclude.m4 (AC_STATFS64): New macro to check for struct statfs64. |
| * configure.ac: Call AC_STATFS64. |
| * file.c (printstatfs64, sys_statfs64, sys_fstatfs64): Compile only |
| if struct statfs64 is available. |
| |
| 2009-11-06 Dmitry V. Levin <ldv@altlinux.org> |
| |
| Fix getsockopt decoding on architectures where sizeof(long) > sizeof(int) |
| * net.c (sys_getsockopt): Optimize output a bit. |
| Decode integer argument using printnum_int(), patch by Gabor Gombas. |
| |
| Check umove() return code. |
| * bjm.c (sys_query_module): Print input parameters when entering |
| syscall. Fix handling of syscall error. Handle unlikely umove() |
| failures. |
| * ipc.c (tprint_msgrcv): New function. Move part of msgrcv parser code |
| here, add check umove() return code. |
| (sys_msgsnd): Print msqid parameter as int instead of long. |
| (sys_msgrcv): Likewise. Use tprint_msgrcv(). |
| * process.c (print_affinitylist): Check umove() return code. |
| * sock.c (sock_ioctl): Handle unlikely umove() failure in the |
| SIOCGIFCONF parser. |
| |
| Fix check for linux/netlink.h on Linux 2.6.32-rc5+ |
| * configure.ac (AC_CHECK_HEADERS): In check for linux/netlink.h, include |
| sys/socket.h instead of linux/socket.h beforehand. |
| |
| 2009-11-04 Andreas Schwab <schwab@redhat.com> |
| |
| Decode fallocate on PowerPC. |
| * linux/powerpc/syscallent.h: Decode fallocate. |
| |
| Factor out printing of 64bit syscall argument. |
| * defs.h (ALIGN64): Remove. |
| (printllval): Declare. |
| * util.c (printllval): Define. |
| * file.c (sys_readahead): Use printllval. |
| (sys_lseek64): Likewise. |
| (sys_truncate64): Likewise. |
| (sys_ftruncate64): Likewise. |
| (sys_fadvise64): Likewise. |
| (sys_fadvise64_64): Likewise. |
| (sys_fallocate): Likewise. |
| * io.c (sys_pread): Likewise. |
| (sys_pwrite): Likewise. |
| (sys_pread64): Likewise. |
| (sys_pwrite64): Likewise. |
| * mem.c (sys_mmap64): Likewise. |
| |
| 2009-11-03 Andreas Schwab <schwab@redhat.com> |
| |
| Correct decoding of readahead and fadvice64(_64) on PowerPC. |
| * file.c (sys_readahead): Align 64bit argument. Handle PowerPC64 |
| like other 64bit architectures. |
| (sys_fadvise64): Likewise. |
| (sys_fadvise64_64): Handle PowerPC like ARM. |
| * linux/powerpc/syscallent.h (sys_readahead): Account for 64bit |
| argument alignment on PowerPC32. |
| |
| 2009-10-27 Andreas Schwab <schwab@redhat.com> |
| |
| Maintain separate print column for each process. |
| * defs.h (struct tcp): Add curcol. |
| * strace.c: (alloc_tcb): Initialize it. |
| (trace): Use curcol from current process and save it before |
| continuing. |
| (tprintf): Don't modify curcol on output error. |
| |
| 2009-10-21 Roland McGrath <roland@redhat.com> |
| |
| * strace.spec: 4.5.19-1 release. |
| |
| 2009-10-21 Dmitry V. Levin <ldv@altlinux.org> |
| |
| * file.c (printstat64): Cleanup trailing whitespace. |
| |
| 2009-10-16 Andreas Schwab <schwab@redhat.com> |
| |
| Fix decoding of newfstatat syscall on x86-64. |
| * file.c (printstat64) [LINUX && X68_64]: If tracing a 64-bit |
| process redirect to printstat. |
| Fixes RH#529316 "Field values shown for "newfstatat" system |
| call are incorrect" |
| |
| 2009-10-12 Dmitry V. Levin <ldv@altlinux.org> |
| |
| * configure.ac (AC_CHECK_HEADERS): Remove asm/reg.h. |
| |
| 2009-10-12 Mike Frysinger <vapier@gentoo.org> |
| |
| sparc/linux: Rewrite to use asm/ptrace.h. |
| The current sparc/linux code uses asm/reg.h, but recent Linux kernels |
| dropped that header completely. So switch over to the ptrace headers |
| as those should stick around indefinitely as part of the ABI. |
| |
| * defs.h [LINUXSPARC] (U_REG_G1, U_REG_O0, U_REG_O1): Define. |
| * process.c: Drop asm/regs.h include. |
| [SPARC || SPARC64] (change_syscall): Change struct regs to struct pt_regs. |
| * signal.c: Drop asm/regs.h include. |
| (m_siginfo_t): Unify [SPARC || SPARC64] and [MIPS]. |
| [SPARC || SPARC64] (sys_sigreturn): Change struct regs to struct pt_regs. |
| * syscall.c: Drop asm/regs.h include. |
| [SPARC || SPARC64] (internal_syscall, get_scno, get_error, force_result, |
| syscall_enter): Change struct regs to struct pt_regs. |
| * util.c: Drop asm/regs.h include. |
| (_hack_syscall5, _ptrace): Delete. |
| [SPARC || SPARC64] (getpc, printcall, arg_setup_state): Change |
| struct regs to struct pt_regs. |
| |
| 2009-10-11 Roland McGrath <roland@redhat.com> |
| |
| * make-dist: Clean up. |
| |
| * configure.ac: Use AC_CONFIG_AUX_DIR([.]). |
| |
| 2009-10-09 Dmitry V. Levin <ldv@altlinux.org> |
| |
| * make-dist: New script for preparing release tarballs. |
| |
| * git-set-file-times: Import from rsync. |
| |
| * Makefile.am [MAINTAINER_MODE]: Define and export TAR_OPTIONS. |
| |
| 2009-10-08 Dmitry V. Levin <ldv@altlinux.org> |
| |
| Enhance msgsnd() parser. |
| * ipc.c (tprint_msgsnd): New function. Move msgsnd parser code here, |
| add check for umove() return code. |
| (sys_msgsnd): Use tprint_msgsnd(). |
| |
| * NEWS: Update for 4.5.19 release. |
| |
| Enhance semop()/semtimedop() sembuf parser. |
| * ipc.c (tprint_sembuf): New function. Move sembuf parser code here, |
| add abbrev() support. |
| (sys_semop, sys_semtimedop): Use tprint_sembuf(). |
| |
| 2009-10-08 Jakub Bogusz <qboosh@pld-linux.org> |
| |
| Add pretty printing of sembuf argument to semop() and semtimedop() |
| * ipc.c (semop_flags): New xlat structure. |
| (sys_semop, sys_semtimedop): Add pretty printing of sembuf argument. |
| |
| 2009-10-08 Mike Frysinger <vapier@gentoo.org> |
| |
| Add support for Linux/no-mmu with vfork. |
| * configure.ac (AC_CHECK_FUNCS): Add fork. |
| * strace.c (strace_vforked): Define. |
| (startup_child): Do not raise SIGSTOP if vforked. |
| (trace): Skip first exec when starting up after vforked. |
| * syscall.c [BFIN] (get_scno): Drop waitexec checks. |
| |
| Avoid malloc(0) in getdents parsers. |
| On end of directory, getdents returns 0. This return value is used to |
| then try and do malloc(0), but on some systems this will always return |
| NULL. Since the code won't read the pointer in question if len is 0, |
| then don't bother calling malloc(0) and set the pointer to NULL ourself. |
| * file.c (sys_getdents, sys_getdents64): Avoid malloc(0) call. |
| |
| 2009-10-07 Mike Frysinger <vapier@gentoo.org> |
| |
| Add sys_nanosleep() prototype for sparc. |
| * linux/sparc/syscall.h (sys_nanosleep): New prototype. |
| Reported by Frederik Schüler. |
| |
| Silence compiler warnings about implicit cast from pointer to integer. |
| * util.c (do_ptrace): Cast ptrace() 4th arg to long. |
| (ptrace_restart): Drop void* cast on ptrace() 4th arg. |
| |
| Ignore .gdb files from FLAT toolchains. |
| * .gitignore: Add /*.gdb. |
| |
| * configure.ac (AC_CHECK_FUNCS): Sort and expand. |
| |
| Blackfin: Update ioctl/syscall lists. |
| * linux/bfin/ioctlent.h: Sync list with latest kernel sources. |
| * linux/bfin/syscallent.h: Likewise. |
| |
| ioctlsort: Check ppc hosts too. |
| * linux/ioctlsort.c: Check for __powerpc__. |
| |
| 2009-10-07 Andreas Schwab <schwab@redhat.com> |
| |
| Fix build on ia64. |
| * linux/ia64/syscallent.h: Update for addition of accept4 syscall |
| in ../syscallent.h. |
| |
| 2009-10-07 Roland McGrath <roland@redhat.com> |
| |
| * strace.spec (%doc): Add ChangeLog-CVS. |
| |
| * Makefile.am (srpm): New phony target. |
| |
| * Makefile.am (EXTRA_DIST): Add ChangeLog. |
| ($(srcdir)/ChangeLog): New target, replaces gen-changelog phony target. |
| Put it inside [MAINTAINER_MODE]. |
| |
| 2009-10-06 Dmitry V. Levin <ldv@altlinux.org> |
| |
| * NEWS: Update for 4.5.19 release. |
| |
| 2009-10-05 Frederik Schüler <fs@debian.org> |
| |
| Prepare debian/* files for release. |
| * debian/rules: Do not ship ChangeLog anymore. |
| * debian/control: Update to Debian standards version 3.8.1, and remove |
| Roland from the Maintainers list. This closes Debian bug #521458. |
| * debian/changelog: Document changes and prepare for release. |
| |
| 2009-10-05 Dmitry V. Levin <ldv@altlinux.org> |
| |
| * defs.h [HPPA]: Lower MAX_ARGS from 32 to 6. |
| |
| * ipc.c [LINUX] (sys_shmat): HPPA does not use an IPC multiplexer. |
| Based on patch from Carlos O'Donell. |
| |
| 2009-10-05 Carlos O'Donell <carlos@systemhalted.org> |
| |
| * linux/hppa/syscallent.h: Update syscalls. |
| Based on work by Kyle McMartin and Helge Deller. |
| |
| Fix SA_HANDLER function pointer comparisons for hppa. |
| * signal.c (sys_sigaction): Cast SA_HANDLER function pointers to long. |
| (sys_rt_sigaction): Likewise. |
| |
| 2009-10-05 Edgar E. Iglesias <edgar.iglesias@gmail.com> |
| |
| CRIS: Correct first argument to upeek() |
| This complements commit ea0e6e80260d2b1b7ad40282012b0e47869bcddf. |
| * syscall.c [CRISV10 || CRISV32] (syscall_fixup, syscall_enter): Pass |
| tcp pointer instead of pid to upeek(). |
| * util.c [CRISV10 || CRISV32] (printcall): Likewise. |
| |
| 2009-10-05 Dmitry V. Levin <ldv@altlinux.org> |
| |
| * signal.c (do_signalfd): Fix typo in output format. |
| |
| 2009-09-21 Dmitry V. Levin <ldv@altlinux.org> |
| |
| * Makefile.am (gen_changelog_start_date): Fix date. |
| |
| 2009-09-19 Dmitry V. Levin <ldv@altlinux.org> |
| |
| Prepare for 4.5.19 release. |
| * NEWS: Update for 4.5.19 release. |
| * configure.ac: Version 4.5.19. |
| * debian/changelog: 4.5.19-1. |
| * strace.spec: 4.5.19-1. |
| |
| Update debian/* to 4.5.18-1. |
| * debian/changelog: Update to 4.5.18-1. |
| * debian/compat: Set compatibility level to 7. |
| * debian/control (Build-Depends): Update debhelper requirement. |
| (strace, strace64): Add Section and Priority tags. |
| |
| 2009-09-19 Kirill A. Shutemov <kirill@shutemov.name> |
| |
| Fix fadvise64 decoding on ARM. |
| * file.c (sys_fadvise64_64) [ARM]: Fix argument ordering. |
| |
| 2009-09-18 Dmitry V. Levin <ldv@altlinux.org> |
| |
| Fix follow fork/vfork on Linux ARM OABI. |
| __NR_SYSCALL_BASE eis 0 for EABI and is 0x900000 for OABI. |
| * process (change_syscall) [LINUX && ARM]: Mask off the high order bits |
| when changing syscall. |
| |
| Reviewed-by: Kirill A. Shutemov <kirill@shutemov.name> |
| |
| 2009-09-18 Mike Frysinger <vapier@gentoo.org> |
| |
| Mark shell scripts as executable. |
| |
| Ignore ioctlsort helper program. |
| * .gitignore: Add ioctlsort. |
| |
| linux/errno: Add ERFKILL. |
| * linux/errnoent.h: Change ERRNO_132 to ERFKILL according to errno 132 |
| definition introduced in Linux 2.6.31. |
| |
| 2009-09-01 Paolo Bonzini <pbonzini@redhat.com> |
| |
| Add accept4 socketcall. |
| This second patch in the series adds support for accept4 as a socketcall |
| sub-call. Besides the need to renumber all system calls, this poses |
| no problem. |
| Tested on i686. |
| |
| * linux/arm/syscallent.h: Add accept4 socketcall. |
| * linux/m68k/syscallent.h: Likewise. |
| * linux/powerpc/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/syscallent.h: Likewise. |
| |
| * linux/sparc/syscall.h (SYS_sub_accept4): Declare. |
| (SYS_socket_nsubcalls): Update. |
| * linux/syscall.h: Likewise. |
| |
| 2009-09-01 Paolo Bonzini <pbonzini@redhat.com> |
| |
| Replace x86-64 paccept with accept4. |
| This patch changes the paccept syscall to accept4 for x86-64, since |
| the former was dropped in Linux kernel commit v2.6.27-rc7-14-g2d4c826. |
| At the same time, it adds support for pretty printing its arguments. |
| |
| * linux/x86_64/syscallent.h: Replace paccept with accept4, |
| hook in sys_accept4. |
| * net.c (sys_accept): Leave a small stub calling the new... |
| (do_accept): ... function, which also adds a flags_arg argument. |
| (sys_accept4): New. |
| |
| 2009-08-28 Andreas Schwab <schwab@redhat.com> |
| |
| Zero-extend 32-bit addresses when printing argv array. |
| (printargv): Zero-extend 32-bit addresses. |
| Fixes RH#519480 "64-bit strace is lazy on execve of 32-bit |
| process". |
| |
| 2009-08-12 Andreas Schwab <schwab@redhat.com> |
| |
| Add more futex decoding. |
| * process.c (FUTEX_WAIT_REQUEUE_PI, FUTEX_CMP_REQUEUE_PI) |
| (FUTEX_PRIVATE_FLAG, FUTEX_CLOCK_REALTIME): Define. |
| (futexops): Add entries for them. |
| (sys_futex): Decode FUTEX_CMP_REQUEUE_PI and |
| FUTEX_WAIT_REQUEUE_PI. |
| |
| 2009-07-08 Dmitry V. Levin <ldv@altlinux.org> |
| |
| Generate ChangeLog from git log. |
| * .gitignore: Add ChangeLog |
| * ChangeLog: Rename to ChangeLog-CVS. |
| * Makefile.am (gen-changelog): New rule. |
| (dist-hook): Depend on it. |
| (EXTRA_DIST): Add ChangeLog-CVS. |
| * README-hacking: Describe changes. |
| * gitlog-to-changelog: Import from gnulib. |
| |
| |
| See ChangeLog-CVS for older changes. |