Eugene Syromyatnikov [Mon, 15 Oct 2018 15:56:42 +0000 (17:56 +0200)]
xlat: add fallback definitions to setsock_ipv6_options
* xlat/setsock_ipv6_options.in: Add fallback definitions.
Eugene Syromyatnikov [Mon, 15 Oct 2018 15:32:01 +0000 (17:32 +0200)]
xlat: add SOL_CAN_* to socketlayers
* xlat/socketlayers.in (SOL_CAN_BASE): New constant, introduced by Linux
commit v2.6.25-rc1~1162^2~1414.
(SOL_CAN_RAW): New constant, introduced by Linux commit
v2.6.25-rc1~1162^2~1413.
* NEWS: Mention this.
Co-Authored-by: Dmitry V. Levin <ldv@altlinux.org>
Eugene Syromyatnikov [Mon, 10 Sep 2018 23:45:30 +0000 (01:45 +0200)]
xlat: add FAN_ENABLE_AUDIT and FAN_REPORT_TID to fan_init_flags
* xlat/fan_init_flags.in (FAN_ENABLE_AUDIT): New constant, introduced
by Linux commit v4.15-rc1~130^2^2~11.
(FAN_REPORT_TID): New constant, introduced by Linux commit
v4.20-rc1~75^2~2.
* NEWS: Mention this.
* tests/fanotify_init.c (main): Update expected output.
Co-Authored-by: Dmitry V. Levin <ldv@altlinux.org>
Eugene Syromyatnikov [Mon, 15 Oct 2018 15:47:01 +0000 (17:47 +0200)]
xlat: update siginfo_codes
* xlat/siginfo_codes.in (SI_LWP): Remove, as it is not present on Linux.
(SI_NOINFO): Define only on SPARC, provide fallback value.
Eugene Syromyatnikov [Fri, 26 Oct 2018 00:03:40 +0000 (02:03 +0200)]
loop: use XLAT_MACROS_ONLY instead of #stop
As the former allows controlling presence of xlat definitions
during the inclusion and not header generation.
* xlat/loop_cmds.in: Remove #stop.
* loop.c: Wrap "xlat/loop_cmds.h" inclusion in XLAT_MACROS_ONLY.
* tests/ioctl_loop.c: Likewise.
Eugene Syromyatnikov [Wed, 26 Sep 2018 16:28:55 +0000 (18:28 +0200)]
syslog: move constant definitions to xlat
* syslog.c (enum): Remove.
* xlat/syslog_action_type.in: Add fallback definitions.
Dmitry V. Levin [Mon, 24 Dec 2018 23:46:43 +0000 (23:46 +0000)]
Add copyright headers to some files that lack them
We do our best to keep copyright headers up to date, yet
git history provides better information on this subject
and is more accurate than copyright headers.
Dmitry V. Levin [Mon, 24 Dec 2018 23:46:43 +0000 (23:46 +0000)]
Update copyright headers
Dmitry V. Levin [Mon, 24 Dec 2018 20:00:11 +0000 (20:00 +0000)]
Update NEWS
Eugene Syromyatnikov [Tue, 4 Sep 2018 18:30:30 +0000 (20:30 +0200)]
strace.1.in: consistently use CTRL-combinations
Eugene Syromyatnikov [Tue, 4 Sep 2018 14:45:04 +0000 (16:45 +0200)]
strace.1.in: print names of entities in bold, provide man page sections
* strace.1.in (.SH DESCRIPTION, .SH OPTIONS): Add man page section
numbers. Make mentions of strace and other entities bold.
Dmitry V. Levin [Mon, 24 Dec 2018 20:00:11 +0000 (20:00 +0000)]
strace.1.in: document %net
* strace.1.in: Mention %net as a synonym to %network.
Complements:
v4.25-21-g97c3deca5 "basic_filters: add %net as a possible designation for network syscalls"
Shankara Pailoor [Wed, 19 Dec 2018 13:01:40 +0000 (05:01 -0800)]
quotactl: add xlat styles support
* quota.c (print_qcmd): New function.
(SYS_FUNC(quotactl)): Use it to print the quotactl command.
* tests/quotactl.c (print_dqinfo, print_dqfmt): Handle XLAT_RAW
and XLAT_VERBOSE.
(QUOTA_STR, QUOTA_ID_STR, QUOTA_STR_INVALID): New macros.
(gen_quotacmd, gen_quotaid): New functions.
(main): Use them.
* tests/quotactl-Xabbrev.c: New file.
* tests/quotactl-Xraw.c: Likewise.
* tests/quotactl-Xverbose.c: Likewise.
* tests/gen_tests.in (quotactl-Xabbrev, quotactl-Xraw,
quotactl-Xverbose): New tests.
* tests/pure_executables.list: Add quotactl-Xabbrev, quotactl-Xraw,
and quotactl-Xverbose.
* tests/.gitignore: Likewise.
Co-Authored-by: Dmitry V. Levin <ldv@altlinux.org>
Dmitry V. Levin [Mon, 24 Dec 2018 10:19:24 +0000 (10:19 +0000)]
xlat_idx: do not issue warnings for holes in indices
Some xlat indices like evdev_abs have holes, avoid issuing warnings
about them.
* xlat.c (xlat_idx): Do not issue warnings for holes in the index.
Dmitry V. Levin [Sun, 23 Dec 2018 22:12:36 +0000 (22:12 +0000)]
rtnl_link: fix off-by-one errors in indexed and sorted xlat lookups
* rtnl_link.c (decode_nla_tun_type, decode_ifla_xdp_attached,
decode_ifla_inet_conf, decode_ifla_inet6_flags, decode_ifla_inet6_conf,
decode_ifla_inet6_stats, decode_ifla_inet6_icmp6_stats,
decode_ifla_inet6_agm): Decrement xlat size by one to account
for XLAT_END as other users of indexed and sorted xlats do.
Fixes: v4.25~71 "rtnl_link: decode named constants for IFLA_XDP_ATTACHED attribute value"
Fixes: v4.23~41 "rtnl_link: decode IFLA_AF_SPEC"
Fixes: v4.23~37 "rtnl_link: implement IFLA_INFO_DATA for tun devices"
Dmitry V. Levin [Sun, 23 Dec 2018 22:12:36 +0000 (22:12 +0000)]
net: fix off-by-one error in sorted xlat lookup
* net.c (ax25_protocols): Decrement xlat size by one to account
for XLAT_END as other users of sorted xlats do.
Fixes: v4.25~28 "net: add support for AX.25 protocols and socket option names decoding"
Dmitry V. Levin [Sun, 23 Dec 2018 22:12:36 +0000 (22:12 +0000)]
netlink_smc_diag: fix off-by-one error in xlat lookup
* netlink_smc_diag.c (decode_smc_diag_shutdown): Decrement xlat size
by one to account for XLAT_END as other users of xlats do.
Fixes: v4.25~54 "netlink_smc_diag: decode SMC_DIAG_SHUTDOWN attribute value"
Dmitry V. Levin [Sun, 23 Dec 2018 22:12:36 +0000 (22:12 +0000)]
aio: fix off-by-one error in indexed xlat lookup
* aio.c (tprint_lio_opcode): Decrement xlat size by one to account
for XLAT_END as other users of indexed xlats do.
Fixes: v4.24~71 "aio: print IOCB_CMD_* using xlat"
Dmitry V. Levin [Sun, 23 Dec 2018 22:12:36 +0000 (22:12 +0000)]
nlattr: fix off-by-one error in indexed xlat lookup
* nlattr.c (decode_nla_meminfo): Decrement xlat size by one
to account for XLAT_END as other users of indexed xlats do.
Fixes: v4.23~89 "nlattr: print index names in netlink meminfo array"
Eugene Syromiatnikov [Thu, 20 Dec 2018 15:35:27 +0000 (16:35 +0100)]
evdev: fix off-by-one error in decode_bitset
* evdev.c (decode_bitset): Decrement sorted/indexed xlat's size by one
in order to account for guarding XLAT_END, as other sorted/indexed xlat
wrappers do.
Fixes: v4.23~261 "evdev: support various types of xlats in decode_bitset"
Dmitry V. Levin [Sat, 22 Dec 2018 22:16:03 +0000 (22:16 +0000)]
strace: terminate itself if interrupted by a signal
* strace.c (terminate): Terminate itself if interrupted by a signal.
* NEWS: Mention this change.
* tests/detach-running.test: Check it.
* tests/detach-sleeping.test: Likewise.
* tests/detach-stopped.test: Likewise.
Shankara Pailoor [Thu, 20 Dec 2018 13:27:40 +0000 (05:27 -0800)]
tests: check that printsignal handles xlat styles properly
* tests/printsignal.c: New file.
* tests/Makefile.am (EXTRA_DIST): Add it.
* tests/printsignal-Xabbrev.c: New file.
* tests/printsignal-Xraw.c: Likewise.
* tests/printsignal-Xverbose.c: Likewise.
* tests/gen_tests.in (printsignal-Xabbrev, printsignal-Xraw,
printsignal-Xverbose): New tests.
* tests/pure_executables.list: Add printsignal-Xabbrev,
* printsignal-Xraw, and printsignal-Xverbose.
* tests/.gitignore: Likewise.
Co-Authored-by: Dmitry V. Levin <ldv@altlinux.org>
Eugene Syromyatnikov [Sun, 7 Oct 2018 03:25:33 +0000 (05:25 +0200)]
signal: return NULL if signal number has no string representation
Also return NULL if signal number is 0.
* signal.c (signame): Return NULL if signal name has not been found.
Co-Authored-by: Dmitry V. Levin <ldv@altlinux.org>
Dmitry V. Levin [Sat, 22 Dec 2018 18:58:51 +0000 (18:58 +0000)]
filter_qualify: prepare for the change of signame semantics
* filter_qualify.c (sigstr_to_uint): Check signame return value.
Eugene Syromyatnikov [Sun, 7 Oct 2018 03:23:09 +0000 (05:23 +0200)]
Use sprintsigname for converting signal number to string
As signame is being converted to an xlookup-like function, a separate
routine is needed in order to get string representation of signal.
* defs.h (sprintsigname): New prototype.
* signal.c (sprintsigname): New function.
* strace.c (print_debug_info, print_signalled, print_stopped): Use it
instead of signame.
* wait.c (printstatus): Likewise.
Co-Authored-by: Dmitry V. Levin <ldv@altlinux.org>
Eugene Syromyatnikov [Sun, 7 Oct 2018 03:12:42 +0000 (05:12 +0200)]
Use printsignal instead of signame
As the former respects xlat styles while the latter doesn't.
* clone.c (SYS_FUNC(clone)): Use printsignal for printing termination
signal in printflags.
* fcntl.c (print_fcntl) <case F_SETSIG>: Use printsignal.
* prctl.c (SYS_FUNC(prctl)) <case PR_GET_PDEATHSIG,
case PR_SET_PDEATHSIG>: Likewise.
* print_sigevent.c (print_sigevent): Likewise.
* s390.c (s390_runtime_instr): Likewise.
* signal.c (SYS_FUNC(kill), SYS_FUNC(tgkill)): Likewise.
Eugene Syromyatnikov [Sun, 7 Oct 2018 03:09:09 +0000 (05:09 +0200)]
signal: make printisgnal honor xlat style
* signal.c (printsignal): Respect current xlat style.
Eugene Syromyatnikov [Wed, 3 Oct 2018 08:31:30 +0000 (10:31 +0200)]
Always define WCOREDUMP
wait.c does it already, now strace.c also does.
* wait.h: New file.
* Makefile.am (strace_SOURCES): Add it.
* strace.c: Replace <sys/wait.h> with "wait.h".
[!WCOREDUMP]: Remove.
* wait.c: Replace <sys/wait.h> with "wait.h".
[!WCOREFLAG] (WCOREFLAG), [!WCOREDUMP] (WCOREDUMP): Move to wait.h,
rework.
[!W_STOPCODE] (W_STOPCODE), [!W_EXITCODE] (W_EXITCODE),
[!W_CONTINUED] (W_CONTINUED): Move to wait.h.
Co-Authored-by: Dmitry V. Levin <ldv@altlinux.org>
Masatake YAMATO [Mon, 17 Dec 2018 19:16:11 +0000 (04:16 +0900)]
net: enhance decoding of getsockopt(SO_ERROR)
* net.c (print_get_error): New function decoding error
number returned as option value for SO_ERROR option.
(print_getsockopt) <case SO_ERROR>: Call print_get_error.
* tests/so_error.c: New test.
* tests/gen_tests.in (so_error): Likewise.
* tests/pure_executables.list: Add so_error.
* tests/.gitignore: Likewise.
Signed-off-by: Masatake YAMATO <yamato@redhat.com>
Signed-off-by: Dmitry V. Levin <ldv@altlinux.org>
Dmitry V. Levin [Mon, 17 Dec 2018 17:30:24 +0000 (17:30 +0000)]
ia64: do not clobber r12 for raw syscalls
According to
https://sourceware.org/ml/libc-alpha/2018-12/msg00470.html
GCC mainline now gives errors for an asm that clobbers the stack
pointer.
According to
https://gcc.gnu.org/ml/gcc-patches/2018-12/msg00932.html>
GCC previously ignored such a clobber; thus, this patch removes it
from the clobbers for ia64 raw syscalls.
* linux/ia64/raw_syscall.h (raw_syscall_0): Remove "r12" from clobbers.
Dmitry V. Levin [Mon, 17 Dec 2018 13:45:05 +0000 (13:45 +0000)]
block: decode BLKGETZONESZ and BLKGETNRZONES ioctls
These ioctls were introduced by linux kernel commits v4.20-rc1~17^2~16
and v4.20-rc1~17^2~15, respectively.
* block.c (block_ioctl): Handle BLKGETZONESZ and BLKGETNRZONES.
* xlat/block_ioctl_cmds.in (BLKGETZONESZ, BLKGETNRZONES): New entries.
Dmitry V. Levin [Thu, 13 Dec 2018 22:07:26 +0000 (22:07 +0000)]
Implement PTRACE_GET_SYSCALL_INFO decoder
* defs.h (audit_arch): New prototype.
* process.c: Include "ptrace_syscall_info.h".
(SYS_FUNC(ptrace)) <PTRACE_GET_SYSCALL_INFO>: Call
print_ptrace_syscall_info on exiting syscall.
* ptrace_syscall_info.h (print_ptrace_syscall_info): New prototype.
* ptrace_syscall_info.c: Include "print_fields.h" and
"xlat/ptrace_syscall_info_op.h".
(print_ptrace_syscall_info): New function.
* xlat/ptrace_syscall_info_op.in: New file.
* tests/ptrace_syscall_info.c: New file.
* tests/gen_tests.in (ptrace_syscall_info): New test.
* tests/pure_executables.list: Add ptrace_syscall_info.
* tests/.gitignore: Likewise.
Dmitry V. Levin [Wed, 21 Nov 2018 01:44:16 +0000 (01:44 +0000)]
Introduce PTRACE_GET_SYSCALL_INFO support
When PTRACE_GET_SYSCALL_INFO API works,
use it instead of traditional upeek/get_regs API.
Tested on x86_64 and x86.
* get_personality.c: New file.
* get_personality.h: Likewise.
* Makefile.am (strace_SOURCES): Add them.
* linux/aarch64/arch_get_personality.c: New file.
* linux/powerpc64/arch_get_personality.c: Likewise.
* linux/riscv/arch_get_personality.c: Likewise.
* linux/s390x/arch_get_personality.c: Likewise.
* linux/sparc64/arch_get_personality.c: Likewise.
* linux/tile/arch_get_personality.c: Likewise.
* linux/x32/arch_get_personality.c: Likewise.
* linux/x86_64/arch_get_personality.c: Likewise.
* linux/check_scno.c: Likewise.
* linux/x32/check_scno.c: Likewise.
* Makefile.am (EXTRA_DIST): Add them.
* linux/ia64/arch_getrval2.c (getrval2): Invoke get_regs()
if ptrace_syscall_info is in use.
* linux/mips/arch_getrval2.c: Likewise.
* linux/sparc/arch_getrval2.c: Likewise.
* defs.h (get_personality_from_syscall_info): New prototype.
* syscall.c: Include "get_personality.h" and "ptrace_syscall_info.h".
(get_regs_error): Define unconditionally.
(ptrace_sci): New static variable.
(clear_regs): Reset ptrace_sci.op.
(ptrace_syscall_info_is_valid, ptrace_get_syscall_info,
get_syscall_regs): New functions.
(get_syscall_result_regs): Change to get_syscall_regs.
(get_instruction_pointer, get_stack_pointer, get_scno, get_syscall_args,
get_error, set_error, set_success): Add ptrace_syscall_info support.
* tests/int_0x80.test: New test.
* tests/Makefile.am (DECODER_TESTS): Add int_0x80.test.
(XFAIL_TESTS_x86_64, XFAIL_TESTS_x32): Remove.
* tests/gen_tests.in (int_0x80): Remove.
Dmitry V. Levin [Wed, 21 Nov 2018 01:44:16 +0000 (01:44 +0000)]
Check whether PTRACE_GET_SYSCALL_INFO is supported by the kernel
The result of this check is going to be used by subsequent commits.
* ptrace_syscall_info.c: New file.
* ptrace_syscall_info.h: Likewise.
* Makefile.am (strace_SOURCES): Add them.
* strace.c: Include "ptrace_syscall_info.h".
(init): Call test_ptrace_get_syscall_info.
Dmitry V. Levin [Wed, 21 Nov 2018 01:44:16 +0000 (01:44 +0000)]
Add definitions for PTRACE_GET_SYSCALL_INFO API
Provide fallback definitions for PTRACE_GET_SYSCALL_INFO API.
Add very basic PTRACE_GET_SYSCALL_INFO support in the parser
of ptrace syscall.
* ptrace.h: Include <stdint.h>.
[!PTRACE_GET_SYSCALL_INFO] (PTRACE_GET_SYSCALL_INFO,
PTRACE_SYSCALL_INFO_NONE, PTRACE_SYSCALL_INFO_ENTRY,
PTRACE_SYSCALL_INFO_EXIT, PTRACE_SYSCALL_INFO_SECCOMP,
struct ptrace_syscall_info): Define.
* xlat/ptrace_cmds.in: Add PTRACE_GET_SYSCALL_INFO.
* process.c (SYS_FUNC(ptrace)): Handle it.
Dmitry V. Levin [Mon, 10 Dec 2018 00:00:00 +0000 (00:00 +0000)]
Change the license of strace to LGPL-2.1-or-later
strace is now provided under the terms of the GNU Lesser General
Public License version 2.1 or later, see COPYING for more details.
strace test suite is now provided under the terms of the GNU General
Public License version 2 or later, see tests/COPYING for more details.
Dmitry V. Levin [Mon, 10 Dec 2018 00:00:00 +0000 (00:00 +0000)]
tests: change the license to GPL-2.0-or-later
strace test suite is now provided under the terms of the GNU General
Public License version 2 or later, see tests/COPYING for more details.
Shankara Pailoor [Sun, 9 Dec 2018 15:41:43 +0000 (07:41 -0800)]
bpf: honor xlat styles when printing kernel version
* print_kernel_version.c: New file.
* Makefile.am (strace_SOURCES): Add it.
* defs.h (print_kernel_version): New prototype.
* bpf.c (BEGIN_BPF_CMD_DECODER(BPF_PROG_LOAD)):
Use print_kernel_version.
* tests/kernel_version.c: New file.
* tests/kernel_version-Xabbrev.c: Likewise.
* tests/kernel_version-Xraw.c: Likewise.
* tests/kernel_version-Xverbose.c: Likewise.
* tests/gen_tests.in (kernel_version, kernel_version-Xabbrev,
kernel_version-Xraw, kernel_version-Xverbose): New tests.
* tests/pure_executables.list: Add kernel_version,
kernel_version-Xabbrev, kernel_version-Xraw, and kernel_version-Xverbose.
* tests/.gitignore: Likewise.
Co-Authored-by: Dmitry V. Levin <ldv@altlinux.org>
Shankara Pailoor [Sat, 8 Dec 2018 22:12:42 +0000 (14:12 -0800)]
print_dev_t: add xlat styles support
* print_dev_t.c (print_dev_t): Respect xlat_verbosity.
* tests/btrfs.c (sprint_makedev): New function.
(btrfs_print_balance_args, btrfs_test_dev_info_ioctl,
btrfs_test_dev_replace_ioctl, btrfs_test_get_dev_stats_ioctl,
btrfs_test_scrub_ioctls): Use it to update expected output.
* tests/xstatx.c (print_st_mode, sprint_makedev): New functions.
(print_stat): Use them.
* tests/fstat-Xabbrev.c: New file.
* tests/fstat-Xraw.c: Likewise.
* tests/fstat-Xverbose.c: Likewise.
* tests/fstat64-Xabbrev.c: Likewise.
* tests/fstat64-Xraw.c: Likewise.
* tests/fstat64-Xverbose.c: Likewise.
* tests/gen_tests.in (fstat-Xabbrev, fstat-Xraw, fstat-Xverbose,
fstat64-Xabbrev, fstat64-Xraw, fstat64-Xverbose): New entries.
* tests/trace_fstat.in: Likewise.
* tests/trace_stat_like.in: Likewise.
* tests/pure_executables.list: Add fstat-Xabbrev, fstat-Xraw,
fstat-Xverbose, fstat64-Xabbrev, fstat64-Xraw, and fstat64-Xverbose.
* tests/.gitignore: Likewise.
Co-Authored-by: Dmitry V. Levin <ldv@altlinux.org>
Dmitry V. Levin [Wed, 5 Dec 2018 18:37:34 +0000 (18:37 +0000)]
i386, x32: use upoke() instead of set_regs()
This brings i386 and x32 in line with x86_64
and removes redundant HAVE_GETREGS_OLD checks.
Besides that, use of PTRACE_GET_SYSCALL_INFO would require
an extra get_regs() invocation before set_regs().
* syscall.c (ARCH_MIGHT_USE_SET_REGS): Define to 1.
[HAVE_GETREGS_OLD] (ARCH_MIGHT_USE_SET_REGS): Redefine to 0.
(ptrace_setregset_or_setregs): Check ARCH_MIGHT_USE_SET_REGS instead
of HAVE_GETREGS_OLD.
* linux/i386/arch_regs.c (ARCH_MIGHT_USE_SET_REGS): Redefine to 0.
* linux/powerpc/arch_regs.c: Likewise.
* linux/x86_64/arch_regs.c: Likewise.
* linux/i386/set_error.c (arch_set_error, arch_set_success)
[!HAVE_GETREGS_OLD]: Remove.
* linux/i386/set_scno.c (arch_set_scno) [!HAVE_GETREGS_OLD]: Remove.
* linux/powerpc/set_error.c (arch_set_error, arch_set_success)
[!HAVE_GETREGS_OLD]: Remove.
* linux/powerpc/set_scno.c (arch_set_scno) [!HAVE_GETREGS_OLD]: Remove.
* linux/x86_64/set_error.c [!HAVE_GETREGS_OLD]: Remove.
* linux/x86_64/set_scno.c: Likewise.
Dmitry V. Levin [Wed, 5 Dec 2018 18:37:34 +0000 (18:37 +0000)]
upoke: workaround crippled x32
As PTRACE_POKEUSER is crippled on x32 by design from the very first
linux kernel commit v3.4-rc1~33^2~2 when it was introduced,
workaround this by using the raw x86_64 syscall instead.
* linux/ptrace_pokeuser.c: New file.
* linux/x32/ptrace_pokeuser.c: Likewise.
* Makefile.am (EXTRA_DIST): Add them.
* upoke.c: Include "ptrace_pokeuser.c".
(upoke): Use ptrace_pokeuser instead of ptrace.
Dmitry V. Levin [Wed, 5 Dec 2018 18:37:34 +0000 (18:37 +0000)]
x86_64: remove some annoying pieces of unused code
* linux/x86_64/get_scno.c (X32_PERSONALITY_NUMBER): Remove.
(arch_get_scno): Remove ifdefed archeological artefacts.
Dmitry V. Levin [Wed, 5 Dec 2018 16:10:05 +0000 (16:10 +0000)]
Refactor tamper_with_syscall_exiting()
Move the code than deals with updating the return and error values
to separate functions.
* syscall.c (set_error, set_success): New functions.
(tamper_with_syscall_exiting): Use them.
Dmitry V. Levin [Wed, 5 Dec 2018 06:47:35 +0000 (06:47 +0000)]
Refactor get_syscall_args() and get_error()
* linux/*/get_error.c: Rename all arch-specific implementations
of get_error() to arch_get_error().
* linux/*/get_syscall_args.c: Rename all arch-specific implementations
of get_syscall_args() to arch_get_syscall_args().
* syscall.c (get_syscall_args, get_error): New functions.
(tamper_with_syscall_exiting, get_syscall_result): Do not clear
tcp->u_error before get_error() invocation as the latter does it now.
Dmitry V. Levin [Tue, 4 Dec 2018 22:31:41 +0000 (22:31 +0000)]
Refactor stack pointers
Change all linux/*/arch_regs.c to provide either ARCH_SP_REG
or ARCH_SP_PEEK_ADDR. Introduce get_stack_pointer(), rewrite
all code accessing stack pointers to use get_stack_pointer().
On some architectures stack pointers were referred to as frame pointers,
clean up this confusion.
* defs.h (get_stack_pointer): New prototype.
* syscall.c (get_stack_pointer): New function.
* linux/arch_rt_sigframe.c: New file.
* linux/aarch64/arch_regs.c (aarch64_sp_ptr, arm_sp_ptr): Remove.
(ARCH_SP_REG): New macro.
* linux/alpha/arch_regs.c: Import linux/alpha/arch_regs.h.
(REG_FP): Rename to REG_SP.
(ARCH_SP_PEEK_ADDR): New macro.
* linux/alpha/arch_sigreturn.c (arch_sigreturn): Use get_stack_pointer.
* linux/arc/arch_regs.c (arc_sp_ptr): Remove.
(ARCH_SP_REG): New macro.
* linux/arm/arch_regs.c (arm_sp_ptr): Remove.
(ARCH_SP_REG): New macro.
* linux/arm/arch_sigreturn.c (arch_sigreturn): Use get_stack_pointer.
* linux/avr32/arch_regs.c (avr32_sp_ptr): Remove.
(ARCH_SP_REG): New macro.
* linux/bfin/arch_regs.c (ARCH_SP_PEEK_ADDR): New macro.
* linux/hppa/arch_regs.c: Import linux/hppa/arch_regs.h.
(PT_GR30, ARCH_SP_PEEK_ADDR): New macros.
* linux/hppa/arch_rt_sigframe.c (FUNC_GET_RT_SIGFRAME_ADDR): Use
get_stack_pointer.
* linux/i386/arch_regs.c (i386_esp_ptr): Remove.
(ARCH_SP_REG): New macro.
* linux/i386/arch_rt_sigframe.c (FUNC_GET_RT_SIGFRAME_ADDR): Use
get_stack_pointer.
* linux/i386/arch_sigreturn.c (arch_sigreturn): Likewise.
* linux/ia64/arch_regs.c (ia64_frame_ptr): Remove.
(ARCH_SP_REG): New macro.
* linux/ia64/arch_regs.h (ia64_frame_ptr): Remove.
* linux/ia64/arch_rt_sigframe.c (FUNC_GET_RT_SIGFRAME_ADDR): Use
get_stack_pointer.
* linux/m68k/arch_regs.c (m68k_usp_ptr): Remove.
(ARCH_SP_REG): New macro.
* linux/m68k/arch_rt_sigframe.c: Link to i386/arch_rt_sigframe.c.
* linux/m68k/arch_sigreturn.c (arch_sigreturn): Use get_stack_pointer.
* linux/metag/arch_regs.c (metag_sp_ptr): Remove.
(ARCH_SP_REG): New macro.
* linux/metag/arch_rt_sigframe.c (FUNC_GET_RT_SIGFRAME_ADDR): Use
get_stack_pointer.
* linux/microblaze/arch_regs.c (ARCH_SP_PEEK_ADDR): New macro.
* linux/mips/arch_regs.c: Import linux/mips/arch_regs.h.
(mips_regs): Add static qualifier.
(ARCH_SP_REG): New macro.
* linux/mips/arch_sigreturn.c (arch_sigreturn): Use get_stack_pointer.
* linux/nios2/arch_regs.c (nios2_sp_ptr): Remove.
(ARCH_SP_REG): New macro.
* linux/or1k/arch_regs.c (or1k_sp_ptr): Remove.
(ARCH_SP_REG): New macro.
* linux/powerpc/arch_regs.c (ppc_regs): Add static qualifier.
(ARCH_SP_REG): New macro.
* linux/powerpc/arch_rt_sigframe.c (FUNC_GET_RT_SIGFRAME_ADDR): Use
get_stack_pointer.
* linux/powerpc/arch_sigreturn.c (arch_sigreturn): Use get_stack_pointer.
* linux/powerpc64/arch_rt_sigframe.c (FUNC_GET_RT_SIGFRAME_ADDR): Use
get_stack_pointer.
* linux/riscv/arch_regs.c (riscv_sp_ptr): Remove.
(ARCH_SP_REG): New macro.
* linux/s390/arch_regs.c (s390_frame_ptr): Remove.
(ARCH_SP_REG): New macro.
* linux/s390/arch_sigreturn.c (S390_FRAME_PTR): Remove.
(arch_sigreturn): Use get_stack_pointer.
* linux/s390x/arch_regs.c (s390_frame_ptr, s390x_frame_ptr): Remove.
(ARCH_SP_REG): New macro.
* linux/s390x/arch_sigreturn.c (S390_FRAME_PTR): Remove.
* linux/sh/arch_regs.c (ARCH_SP_PEEK_ADDR): New macro.
* linux/sh64/arch_regs.c: Likewise.
* linux/sparc/arch_regs.c: Import linux/sparc/arch_regs.h.
(sparc_regs): Add static qualifier.
(ARCH_SP_REG): New macro.
* linux/sparc/arch_sigreturn.c (arch_sigreturn): Use get_stack_pointer.
* linux/sparc64/arch_rt_sigframe.c (FUNC_GET_RT_SIGFRAME_ADDR): Use
get_stack_pointer.
* linux/tile/arch_regs.c (tile_regs): Add static qualifier.
(ARCH_SP_REG): New macro.
* linux/tile/arch_sigreturn.c (arch_sigreturn): Use get_stack_pointer.
* linux/x86_64/arch_regs.c (i386_esp_ptr, x86_64_rsp_ptr): Remove.
(ARCH_SP_REG): New macro.
* linux/x86_64/arch_regs.h (i386_esp_ptr, x86_64_rsp_ptr): Remove.
* linux/x86_64/arch_rt_sigframe.c: Link to i386/arch_rt_sigframe.c.
* linux/xtensa/arch_regs.c (ARCH_SP_PEEK_ADDR): New macro.
* linux/aarch64/arch_regs.h: Remove.
* linux/aarch64/arch_rt_sigframe.c: Remove.
* linux/alpha/arch_regs.h: Remove.
* linux/alpha/arch_rt_sigframe.c: Remove.
* linux/arc/arch_regs.h: Remove.
* linux/arc/arch_rt_sigframe.c: Remove.
* linux/arm/arch_regs.h: Remove.
* linux/arm/arch_rt_sigframe.c: Remove.
* linux/avr32/arch_regs.h: Remove.
* linux/avr32/arch_rt_sigframe.c: Remove.
* linux/bfin/arch_rt_sigframe.c: Remove.
* linux/hppa/arch_regs.h: Remove.
* linux/i386/arch_regs.h: Remove.
* linux/m68k/arch_regs.h: Remove.
* linux/metag/arch_regs.h: Remove.
* linux/microblaze/arch_rt_sigframe.c: Remove.
* linux/mips/arch_regs.h: Remove.
* linux/mips/arch_rt_sigframe.c: Remove.
* linux/nios2/arch_regs.h: Remove.
* linux/nios2/arch_rt_sigframe.c: Remove.
* linux/or1k/arch_regs.h: Remove.
* linux/or1k/arch_rt_sigframe.c: Remove.
* linux/powerpc/arch_regs.h: Remove.
* linux/powerpc64/arch_regs.h: Remove.
* linux/riscv/arch_regs.h: Remove.
* linux/riscv/arch_rt_sigframe.c: Remove.
* linux/s390/arch_regs.h: Remove.
* linux/s390/arch_rt_sigframe.c: Remove.
* linux/s390x/arch_regs.h: Remove.
* linux/s390x/arch_rt_sigframe.c: Remove.
* linux/sh/arch_rt_sigframe.c: Remove.
* linux/sh64/arch_rt_sigframe.c: Remove.
* linux/sparc/arch_regs.h: Remove.
* linux/sparc/arch_rt_sigframe.c: Remove.
* linux/sparc64/arch_regs.h: Remove.
* linux/tile/arch_regs.h: Remove.
* linux/tile/arch_rt_sigframe.c: Remove.
* linux/xtensa/arch_rt_sigframe.c: Remove.
* Makefile.am (EXTRA_DIST): Remove them, add linux/arch_rt_sigframe.c.
Dmitry V. Levin [Mon, 3 Dec 2018 19:45:02 +0000 (19:45 +0000)]
Refactor print_pc()
Split print_pc() into arch-independent print_instruction_pointer()
and arch-specific get_instruction_pointer().
* print_instruction_pointer.c: New file.
* Makefile.am (strace_SOURCES): Add it.
* defs.h (print_pc): Remove.
(get_instruction_pointer, print_instruction_pointer): New prototypes.
* syscall.c (print_pc): Remove.
(get_instruction_pointer): New function.
* strace.c (printleader): Replace print_pc with
print_instruction_pointer.
Dmitry V. Levin [Tue, 4 Dec 2018 22:31:41 +0000 (22:31 +0000)]
ppc64: remove redundant redefinition
* linux/powerpc64/arch_regs.c (ARCH_PC_REG): Remove.
Shankara Pailoor [Sun, 2 Dec 2018 19:57:10 +0000 (11:57 -0800)]
print_dev_t: print major and minor numbers in hex like stat(1)
* print_dev_t.c (print_dev_t): Print major and minor numbers in hex.
* strace.1.in: Update makedev example.
* tests/bpf-obj_get_info_by_fd.c (main): Update expected output.
* tests/btrfs.c (btrfs_print_balance_args, btrfs_test_scrub_ioctls,
btrfs_test_dev_info_ioctl, btrfs_test_get_dev_stats_ioctl,
btrfs_test_dev_replace_ioctl): Update expected output.
* tests/ioctl_dm.c (main): Likewise.
* tests/ioctl_loop.c (print_loop_info, print_loop_info64): Likewise.
* tests/mknod.c (main): Likewise.
* tests/mknodat.c (main): Likewise.
* tests/nlattr_unix_diag_msg.c (main): Likewise.
* tests/ustat.c (main): Likewise.
* tests/xstatx.c (print_stat): Likewise.
Co-Authored-by: Dmitry V. Levin <ldv@altlinux.org>
Janosch Frank [Fri, 30 Nov 2018 15:41:39 +0000 (16:41 +0100)]
s390x: beautify sthyi data tail prints
The test already expects a ", " before the print of struct
padding. Let's add it to s390.c to make the output look a bit nicer and
fix test runs on z/VM that have padding at the end of the STHYI structs.
* s390.c (decode_ebcdic): Add missing comma.
Signed-off-by: Janosch Frank <frankja@linux.ibm.com>
Dmitry V. Levin [Tue, 27 Nov 2018 01:13:40 +0000 (01:13 +0000)]
Stop using SIG_0
Number 0 is not a valid signal number, and SIG_0 is not a valid
description for a signal.
* linux/signalent.h: Replace SIG_0 with 0.
* linux/alpha/signalent.h: Likewise.
* linux/hppa/signalent.h: Likewise.
* linux/mips/signalent.h: Likewise.
* linux/sparc/signalent.h: Likewise.
* filter_qualify.c (sigstr_to_uint): Start iterations with number 1.
* tests/fcntl-common.c (test_fcntl_others): Update expected output.
* tests/kill.c (main): Likewise.
* tests/ptrace.c (test_peeksiginfo): Likewise.
* tests/s390_runtime_instr.c (main): Likewise.
Dmitry V. Levin [Mon, 26 Nov 2018 20:49:05 +0000 (20:49 +0000)]
mem: fix build on architectures where kernel_ulong_t is bigger than long
* mem.c (print_mmap_flags): Fix format string.
Fixes: v4.25-26-g0933b3086 "mem: add xlat styles support to print_mmap_flags"
Dmitry V. Levin [Mon, 26 Nov 2018 02:04:04 +0000 (02:04 +0000)]
tests: add remap_file_pages test variants with different xlat verbosity levels
* tests/remap_file_pages-Xabbrev.c: New file.
* tests/remap_file_pages-Xraw.c: Likewise.
* tests/remap_file_pages-Xverbose.c: Likewise.
* tests/remap_file_pages.c: Add handling of XLAT_RAW and XLAT_VERBOSE flags.
* tests/pure_executables.list: Add remap_file_pages-Xabbrev,
remap_file_pages-Xraw, and remap_file_pages-Xverbose.
* tests/.gitignore: Likewise.
* tests/gen_tests.in (remap_file_pages-Xabbrev, remap_file_pages-Xraw,
remap_file_pages-Xverbose): New tests.
Shankara Pailoor [Mon, 26 Nov 2018 01:10:44 +0000 (17:10 -0800)]
mem: add xlat styles support to print_mmap_flags
* mem.c (print_mmap_flags): Respect xlat_verbosity.
* tests/mmap.c (main): Update expected output.
* tests/old_mmap.c (main): Likewise.
Co-Authored-by: Dmitry V. Levin <ldv@altlinux.org>
Dmitry V. Levin [Mon, 26 Nov 2018 02:04:04 +0000 (02:04 +0000)]
tests: add memfd_create test variants with different xlat verbosity levels
* tests/memfd_create-Xabbrev.c: New file.
* tests/memfd_create-Xraw.c: Likewise.
* tests/memfd_create-Xverbose.c: Likewise.
* tests/memfd_create.c: Add handling of XLAT_RAW and XLAT_VERBOSE flags.
* tests/pure_executables.list: Add memfd_create-Xabbrev, memfd_create-Xraw,
and memfd_create-Xverbose.
* tests/.gitignore: Likewise.
* tests/gen_tests.in (memfd_create-Xabbrev, memfd_create-Xraw,
memfd_create-Xverbose): New tests.
Shankara Pailoor [Mon, 26 Nov 2018 01:10:44 +0000 (17:10 -0800)]
memfd_create: add xlat styles support
* memfd_create.c (SYS_FUNC(memfd_create)): Respect xlat_verbosity.
Co-Authored-by: Dmitry V. Levin <ldv@altlinux.org>
Dmitry V. Levin [Sat, 24 Nov 2018 23:56:38 +0000 (23:56 +0000)]
Enhance error diagnostics when the first exec fails
When the first exec fails, strace used to print the trace of the child
process till its end, producing a lot of confusing output.
Enhance the diagnostics by hiding irrelevant parts of the trace.
* defs.h (TCB_CHECK_EXEC_SYSCALL): New macro. Change values of TCB_*
macros listed after TCB_CHECK_EXEC_SYSCALL.
(check_exec_syscall): New macro.
* strace.c (dispatch_event) <TE_STOP_BEFORE_EXECVE>: Clear
TCB_CHECK_EXEC_SYSCALL flag.
* syscall.c (syscall_entering_trace): Do not clear TCB_HIDE_LOG when
TCB_CHECK_EXEC_SYSCALL is set, set TCB_CHECK_EXEC_SYSCALL along with
clearing TCB_HIDE_LOG.
(syscall_exiting_decode): Set TCB_HIDE_LOG if TCB_CHECK_EXEC_SYSCALL
is set.
* tests/first_exec_failure.test: New file.
* tests/Makefile.am (MISC_TESTS): Add first_exec_failure.test.
Closes: https://github.com/strace/strace/issues/88
Dmitry V. Levin [Sat, 24 Nov 2018 01:22:13 +0000 (01:22 +0000)]
build: use more traditional git options
The support of --no-patch alias to -s option in "git diff" and related
git commands was added in git v1.8.4.
* copyright-year-gen: Use "git show -s" instead of "git show --no-patch".
* file-date-gen: Use "git log -s" instead of "git log --no-patch".
Closes: https://github.com/strace/strace/issues/80
Eugene Syromyatnikov [Sun, 7 Oct 2018 03:05:44 +0000 (05:05 +0200)]
basic_filters: add %net as a possible designation for network syscalls
* basic_filters.c (lookup_class) <syscall_class>: Add %net as an alias
for TRACE_NETWORK.
Eugene Syromyatnikov [Thu, 25 Oct 2018 23:59:26 +0000 (01:59 +0200)]
hppa: add a comment about old name of syscall number 102
Also, remove empty definition.
* linux/hppa/syscallent.h ([102]): Remove empty definition,
add a comment that it was socketcall.
Eugene Syromyatnikov [Thu, 25 Oct 2018 23:58:39 +0000 (01:58 +0200)]
mips: update syscall entry for reserved221 syscall
The syscall number 4221 is actually called "reserved221" on mips.
* linux/mips/syscallent-o32.h ([4221]): Set to "reserved221".
Eugene Syromyatnikov [Mon, 24 Sep 2018 18:35:18 +0000 (20:35 +0200)]
arm: add a comment that __ARM_NR_cmpxchg was removed in 4.4
* linux/arm/syscallent.h: Add a comment about __ARM_NR_cmpxchg.
Eugene Syromyatnikov [Mon, 24 Sep 2018 18:32:45 +0000 (20:32 +0200)]
arm: replace empty syscall entry definitions with comments
* linux/arm/syscallent.h ([222]): Remove definition, add a comment
that it was tux syscall.
([223]): Remove definition, add comment that it was unused.
([254]): Remove definition, add comment that it was reserved
for set_thread_area.
([255]): Remove definition, add comment that it was reserved
for get_thread_area.
Eugene Syromyatnikov [Mon, 15 Oct 2018 15:55:56 +0000 (17:55 +0200)]
linux/dummy.h: remove unused sys_phys definition
* linux/dummy.h (sys_phys): Remove.
Eugene Syromyatnikov [Thu, 27 Sep 2018 05:31:23 +0000 (07:31 +0200)]
numa: use already existing array item printing function
* numa.c (print_int): Remove.
(SYS_FUNC(move_pages)): Use print_int32_array_member instead of
print_int.
Eugene Syromyatnikov [Mon, 24 Sep 2018 18:30:27 +0000 (20:30 +0200)]
net: use already existing array item printing function
* net.c (print_uint32): Remove.
(print_getsockopt): Use print_uint32_array_member instead of
print_uint32.
Eugene Syromyatnikov [Mon, 24 Sep 2018 17:56:08 +0000 (19:56 +0200)]
Remove HAVE_LINUX_GENETLINK_H ifdefs
<linux/netlink.h> is available since Linux 2.6.15 (commit
v2.6.15-rc1~53^2).
* configure.ac (AC_CHECK_HEADERS): Remove linux/genetlink.h.
* socketutils.c [!HAVE_LINUX_GENETLINK_H]: Remove.
* tests/netlink_generic.c [!HAVE_LINUX_GENETLINK_H]: Likewise.
Dmitry V. Levin [Wed, 21 Nov 2018 22:51:49 +0000 (22:51 +0000)]
Document -X option in strace -h output
* strace.c (usage): Mention -X option.
Reported-by: Dmitry Vyukov <dvyukov@google.com>
Complements: v4.23~308 "Add user interface for configuring xlat output style"
Dmitry V. Levin [Wed, 21 Nov 2018 01:44:16 +0000 (01:44 +0000)]
Move kill_save_errno to a separate header file
This function is going to be used outside strace.c,
so make it globally available and move it to a separate header file.
* strace.c (kill_save_errno): Add "inline" keyword, change return type
from "void" to "int", move the function ...
* kill_save_errno.h: ... to this new file.
* Makefile.am (strace_SOURCES): Add it.
Dmitry V. Levin [Tue, 20 Nov 2018 04:56:30 +0000 (04:56 +0000)]
syscall_entering_trace: set TCB_FILTERED along with TCB_HIDE_LOG
This allows to remove some of hide_log() checks that became redundant.
* syscall.c (syscall_entering_trace): Set TCB_FILTERED along with
TCB_HIDE_LOG, remove now redundant hide_log(tcp) check.
(syscall_exiting_decode): Replace "filtered(tcp) || hide_log(tcp)"
with "filtered(tcp)".
Dmitry V. Levin [Tue, 20 Nov 2018 04:56:30 +0000 (04:56 +0000)]
syscall_entering_trace: optimize clearing of TCB_HIDE_LOG flag
* syscall.c (syscall_entering_trace): Since we check for TCB_HIDE_LOG
flag anyway, do not clean it unless it is set.
Dmitry V. Levin [Mon, 12 Nov 2018 13:42:11 +0000 (13:42 +0000)]
print_inet_addr: print nameless and named addresses using the same style
* sockaddr.c (print_inet_addr): Handle var_name == NULL case in a more
structured way: use inet_addr("%s") form to print AF_INET addresses
in structureless contexts where no structure field name is available.
Likewise, use inet_pton(AF_INET6, "%s") that case.
* tests/nlattr_ifaddrmsg.c (main): Update expected output.
* tests/nlattr_ifla_af_spec.c (main): Likewise.
Complements: v4.19~76 "print_inet_addr: add support of invocations without field name"
Dmitry V. Levin [Mon, 5 Nov 2018 17:40:36 +0000 (17:40 +0000)]
tests: extend test coverage of RND* ioctl commands
* tests/ioctl_random.c (main): Check the error path of RNDADDENTROPY
parser. Check decoding of unrecognized RND* ioctl commands.
Rasmus Villemoes [Mon, 5 Nov 2018 17:29:00 +0000 (17:29 +0000)]
Add support for /dev/[u]random ioctls
* random_ioctl.c: New file.
* Makefile.am (strace_SOURCES): Add it.
* defs.h (DECL_IOCTL): Add random.
* ioctl.c (ioctl_decode): Add 'R' case.
* xlat/random_ioctl_cmds.in: New file.
* tests/ioctl_random.c: New file.
* tests/.gitignore: Add ioctl_random.
* tests/pure_executables.list: Likewise.
* tests/gen_tests.in (ioctl_random): New entry.
Signed-off-by: Rasmus Villemoes <rasmus.villemoes@prevas.dk>
Eugene Syromyatnikov [Wed, 16 May 2018 00:22:44 +0000 (02:22 +0200)]
Add dist/INSTALL
* dist/INSTALL: New file.
* bootstrap: Copy it.
* .gitignore: Add /INSTALL.
References: https://github.com/strace/strace/issues/17
References: https://github.com/strace/strace/issues/55
Closes: https://github.com/strace/strace/issues/67
Eugene Syromyatnikov [Tue, 13 Mar 2018 13:11:01 +0000 (14:11 +0100)]
Rename INSTALL to README-configure
* INSTALL-git.md: Replace INSTALL with README-configure.
* maint/install.texi: Likewise.
* INSTALL: Rename to README-configure, regenerate.
* Makefile.am (EXTRA_DIST): Add README-configure.
References: https://github.com/strace/strace/issues/85
Co-Authored-by: Dmitry V. Levin <ldv@altlinux.org>
Eugene Syromyatnikov [Tue, 4 Sep 2018 14:32:25 +0000 (16:32 +0200)]
dist/README: add more references
* dist/README: Mention README-hacking, add links to repositories
and the mailing list archive.
Suggested-by: Jamal Hadi Salim <jhs@mojatatu.com>
Co-Authored-by: Dmitry V. Levin <ldv@altlinux.org>
Eugene Syromyatnikov [Tue, 4 Sep 2018 13:54:30 +0000 (15:54 +0200)]
README.md: add a link to the new contributors guide
* README.md: Add a link to the Guide of new contributors.
Suggested-by: Jamal Hadi Salim <jhs@mojatatu.com>
Dmitry V. Levin [Tue, 30 Oct 2018 10:43:31 +0000 (10:43 +0000)]
Post-release administrivia
* NEWS: Add a header line for the next release.
* debian/changelog.in: Add a changelog entry for 4.25-1.
* strace.spec.in: Likewise.
Dmitry V. Levin [Tue, 30 Oct 2018 08:09:10 +0000 (08:09 +0000)]
Prepare for 4.25 release
* NEWS: Update for 4.25 release.
Dmitry V. Levin [Tue, 30 Oct 2018 08:09:10 +0000 (08:09 +0000)]
Update copyright headers
Headers updated automatically using maint/update_copyright_years.sh
script.
Dmitry V. Levin [Thu, 25 Oct 2018 10:37:49 +0000 (10:37 +0000)]
Update NEWS
Elvira Khabirova [Sat, 22 Sep 2018 13:09:50 +0000 (15:09 +0200)]
Implement decoding of NBD_* ioctl commands
* nbd_ioctl.c: New file.
* Makefile.am (strace_SOURCES): Add it.
* defs.h (DECL_IOCTL): Add nbd.
* ioctl.c (ioctl_decode): Add 0xab (nbd) case.
* xlat/nbd_ioctl_cmds.in: Likewise.
* xlat/nbd_ioctl_flags.in: Likewise.
* tests/ioctl_nbd.c: Likewise.
* tests/.gitignore: Add ioctl_nbd.
* tests/pure_executables.list: Likewise.
* tests/gen_tests.in (ioctl_nbd): New entry.
Co-Authored-by: Dmitry V. Levin <ldv@altlinux.org>
Dmitry V. Levin [Thu, 25 Oct 2018 13:36:54 +0000 (13:36 +0000)]
tests: fix build with recent kernel headers
Linux commit
v4.19-rc2-5-g2ecefa0a15fd0ef88b9cd5d15ceb813008136431
changed the definition of struct keyctl_dh_params in an incompatible
way again. Workaround this issue by using designated initializers.
* tests/keyctl.c (main): Use designated initializers for
struct keyctl_dh_params.
Dmitry V. Levin [Wed, 24 Oct 2018 09:05:38 +0000 (09:05 +0000)]
arm, sparc, sparc64: wire up io_pgetevents
* linux/arm/syscallent.h ([399]): Wire up io_pgetevents syscall
introduced by Linux commit v4.19-rc7~24^2~1.
(ARM_FIRST_SHUFFLED_SYSCALL, SYS_socket_subcall): Raise from 400 to 500,
to make room for new syscalls.
* linux/sparc/syscallent.h ([361]): Wire up io_pgetevents syscall
introduced by Linux commit v4.19~31^2~5.
* linux/sparc64/syscallent.h: Likewise.
Gleb Fotengauer-Malinovskiy [Sun, 21 Oct 2018 08:47:44 +0000 (11:47 +0300)]
Update ioctl entries from linux v4.19
* linux/32/ioctls_inc_align16.h: Update from linux v4.19-rc8
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.
* linux/i386/ioctls_arch0.h: Likewise.
* linux/x86_64/ioctls_arch0.h: Likewise.
* NEWS: Mention this.
Gleb Fotengauer-Malinovskiy [Sun, 21 Oct 2018 08:47:06 +0000 (11:47 +0300)]
maint: update for linux 4.19-rc8
* maint/ioctls_sym.sh (x86_list): Add KVM_[GS]ET_NESTED_STATE.
Dmitry V. Levin [Wed, 24 Oct 2018 07:48:56 +0000 (07:48 +0000)]
Remove redundant VIDIOC_SUBDEV_* constants
Remove those of VIDIOC_SUBDEV_* constants are defined exactly the same
way by the Linux kernel as their VIDIOC_* origins.
Linux kernel commit v4.19-rc1~137^2~248 introduced more of such
duplicates, forward remove them as well.
* linux/32/ioctls_inc_align16.h: Remove VIDIOC_SUBDEV_DV_TIMINGS_CAP,
VIDIOC_SUBDEV_ENUM_DV_TIMINGS, VIDIOC_SUBDEV_G_DV_TIMINGS,
VIDIOC_SUBDEV_G_EDID, VIDIOC_SUBDEV_QUERY_DV_TIMINGS,
VIDIOC_SUBDEV_S_DV_TIMINGS, and VIDIOC_SUBDEV_S_EDID.
* 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.
* maint/ioctls_sym.sh: Remove VIDIOC_SUBDEV_DV_TIMINGS_CAP,
VIDIOC_SUBDEV_ENUM_DV_TIMINGS, VIDIOC_SUBDEV_ENUMSTD,
VIDIOC_SUBDEV_G_DV_TIMINGS, VIDIOC_SUBDEV_G_EDID, VIDIOC_SUBDEV_G_STD,
VIDIOC_SUBDEV_QUERY_DV_TIMINGS, VIDIOC_SUBDEV_QUERYSTD,
VIDIOC_SUBDEV_S_DV_TIMINGS, VIDIOC_SUBDEV_S_EDID, and
VIDIOC_SUBDEV_S_STD.
Dmitry V. Levin [Thu, 27 Sep 2018 19:46:36 +0000 (19:46 +0000)]
xtensa: fix typo in pkey_alloc syscall number
* linux/xtensa/syscallent.h (pkey_alloc): Change from 249 to 349.
Dmitry V. Levin [Sun, 23 Sep 2018 09:54:55 +0000 (09:54 +0000)]
xlat: print _IOC_NONE in symbolic form even if it is equal to 0
On some architectures _IOC_NONE equals to 1, on others it is 0.
Change the way how ioctl direction flags are printed so that
_IOC_NONE is printed in symbolic form even if it is equal to 0.
* xlat/ioctl_dirs.in (_IOC_NONE): Move to the head of the list.
* tests/ioctl_inotify.c (main): Update expected output.
* tests/ioctl_loop. (main): Likewise.c
* tests/ioctl_perf.c (main): Likewise.
* tests/ioctl_scsi.c (main): Likewise.
Dmitry V. Levin [Tue, 18 Sep 2018 21:54:17 +0000 (21:54 +0000)]
Disable git-archive
Since configure uses git-version-gen which in turn depends
on "git describe" or a .tarball-version file, raw archives
generated by "git archive" cannot be built.
* .gitattributes: New file.
* README-github_gitlab-autogenerated-archives.txt: Likewise.
Dmitry V. Levin [Sun, 16 Sep 2018 21:32:37 +0000 (21:32 +0000)]
Workaround signedness bugs in system NLMSG_OK reported by -Wsign-compare
Introduce a replacement for NLMSG_OK provided by <linux/netlink.h> since
that system macro contains signedness bugs that are not going to be fixed.
* netlink.h: Include <stdbool.h>.
(is_nlmsg_ok): New static inline function.
* socketutils.c (receive_responses): Use it instead of NLMSG_OK.
* tests/netlink_inet_diag.c (check_responses): Likewise.
* tests/netlink_netlink_diag.c (check_responses): Likewise.
* tests/netlink_unix_diag.c (check_responses): Likewise.
Closes: https://github.com/strace/strace/issues/79
Dmitry V. Levin [Sun, 16 Sep 2018 16:45:24 +0000 (16:45 +0000)]
tests/sprintrc.c: drop redundant check
* tests/sprintrc.c (sprintrc_ex): Remove fmt check, this also fixes the
warning reported by clang -Wtautological-constant-out-of-range-compare.
Dmitry V. Levin [Sun, 16 Sep 2018 11:44:01 +0000 (11:44 +0000)]
build: enable gcc -Woverride-init and clang -Winitializer-overrides
* m4/st_warn_cflags.m4 (gl_WARN_ADD): Add -Winitializer-overrides
and -Woverride-init.
Dmitry V. Levin [Sun, 16 Sep 2018 11:44:01 +0000 (11:44 +0000)]
tests: exclude arm_sync_file_range from ksysent test
arm_sync_file_range is better known as sync_file_range2.
* tests/ksysent.sed: Filter out arm_sync_file_range.
Dmitry V. Levin [Sun, 16 Sep 2018 11:44:01 +0000 (11:44 +0000)]
Ignore warnings about overridden initialization of hwaddr_sizes
As hwaddr_sizes array is explicitly initialized this way,
ignore potential warnings reported by gcc -Woverride-init
and clang -Winitializer-overrides.
* gcc_compat.h (CLANG_PREREQ): New macro.
(DIAG_PUSH_IGNORE_OVERRIDE_INIT, DIAG_POP_IGNORE_OVERRIDE_INIT): New
macros non-trivially defined for gcc >= 4.2 and clang >= 2.8.
* sock.c (print_ifreq): Use them to ignore warnings about overridden
initialization of hwaddr_sizes array.
Closes: https://github.com/strace/strace/issues/77
Dmitry V. Levin [Sun, 16 Sep 2018 09:48:16 +0000 (09:48 +0000)]
tests: workaround clang -Wunneeded-internal-declaration bug
* tests/execve.c (main): Explicitly mark q_envp variable as used
to workaround clang -Wunneeded-internal-declaration bug.
* tests/execveat.c (main): Likewise.
* tests/nsyscalls.c (main): Explicitly mark syscallent variable as used
to workaround clang -Wunneeded-internal-declaration bug.
Closes: https://github.com/strace/strace/issues/78
Eugene Syromyatnikov [Fri, 31 Aug 2018 07:01:24 +0000 (09:01 +0200)]
process: honor xlat style in print_user_offset_addr
* process.c (print_user_offset_addr): Print in accordance with xlat
verbosity setting.
Eugene Syromyatnikov [Fri, 31 Aug 2018 04:42:28 +0000 (06:42 +0200)]
time: add xlat styles support to printclockname
* time.c (printclockname): Respectl xlat_verbosity.
Eugene Syromyatnikov [Fri, 31 Aug 2018 04:05:08 +0000 (06:05 +0200)]
perf: rewrite print_perf_event_attr using PRINT_FIELD_* macros
* perf.c: Include "print_fields.h".
(PRINT_XLAT): Remove.
(print_perf_event_attr): Use PRINT_FIELD_* macros.
Eugene Syromyatnikov [Fri, 31 Aug 2018 14:04:16 +0000 (16:04 +0200)]
tests: check stack unwinding for signals
* tests/stack-fcall-3.c: Include <signal.h>.
(f3): Call getpid or kill depending on the argument, store getpid result.
* tests/stack-fcall.c (main): Remove arguments, call f0(0) and f0(1).
* tests/strace-k-demangle.expected: Update expected output.
* tests/strace-k.expected: Likewise.
* tests/strace-k.test: Rewrite pattern matching code.
Co-Authored-by: Dmitry V. Levin <ldv@altlinux.org>