2018-08-14  Dmitry V. Levin  <ldv@altlinux.org>

	Prepare for 4.24 release.
	* NEWS: Update for 4.24 release.

2018-08-12  Dmitry V. Levin  <ldv@altlinux.org>

	Update copyright headers.
	Headers updated automatically using maint/update_copyright_years.sh
	script.

2018-08-12  Gleb Fotengauer-Malinovskiy  <glebfm@altlinux.org>

	Update ioctl entries from linux v4.18.
	* linux/32/ioctls_inc_align16.h: Update from linux v4.18-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/s390x/ioctls_arch0.h: Likewise.
	* NEWS: Mention this.

	maint: update for linux v4.18.
	* maint/ioctls_sym.sh: Add workaround for linux/omap3isp.h file.

2018-08-12  Dmitry V. Levin  <ldv@altlinux.org>

	Replace BTRFS_IOC_[GS]ET_FSLABEL with FS_IOC_[GS]ETFSLABEL.
	Linux kernel commit v4.18-rc1~37^2~66 introduced FS_IOC_[GS]ETFSLABEL
	ioctl constants as generalized copies of BTRFS_IOC_[GS]ET_FSLABEL.

	* linux/32/ioctls_inc_align16.h: Replace BTRFS_IOC_[GS]ET_FSLABEL
	with FS_IOC_[GS]ETFSLABEL.
	* 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 BTRFS_IOC_[GS]ET_FSLABEL.
	* tests/btrfs.c (FS_IOC_GETFSLABEL, FS_IOC_SETFSLABEL): Add fallback
	definitions.
	(btrfs_test_label_ioctls, btrfs_test_read_ioctls): Replace
	BTRFS_IOC_[GS]ET_FSLABEL with FS_IOC_[GS]ETFSLABEL.

2018-08-08  Eugene Syromyatnikov  <evgsyr@gmail.com>

	open.c: use __O_TMPFILE.
	As it is the flag kernel actually checks against,
	and it is now guaranteed to have a fallback definition.

	* open.c (STRACE_O_TMPFILE): Remove.
	(decode_open): Use __O_TMPFILE instead of STRACE_O_TMPFILE.

2018-08-05  Dmitry V. Levin  <ldv@altlinux.org>

	xlat: regenerate sock_options.in.
	* xlat/sock_options.in: Regenerate using maint/gen_xlat_defs.sh script.
	* xlat/sock_options.sh: Remove.

2018-08-05  Dmitry V. Levin  <ldv@altlinux.org>

	xlat: add fallback definitions to open_mode_flags.
	* xlat/open_mode_flags.in: Regenerate using maint/gen_xlat_defs.sh script
	to provide fallback definitions.  Implement a workaround for O_NDELAY.

	Co-Authored-by: Co-Authored-by: Eugene Syromyatnikov <evgsyr@gmail.com>

2018-08-05  Eugene Syromyatnikov  <evgsyr@gmail.com>

	xlat: remove non-Linux flags from open_mode_flags.
	* xlat/open_mode_flags.in (O_PRIV, FNDELAY, FAPPEND, FMARK, FDEFER,
	FSHLOCK, FEXLOCK, FCREAT, FTRUNC, FEXCL, FNBIO, FSYNC, FNOCTTY,
	O_SHLOCK, O_EXLOCK): Remove flags that are not present in Linux.

	Co-Authored-by: Dmitry V. Levin <ldv@altlinux.org>

2018-08-05  Dmitry V. Levin  <ldv@altlinux.org>

	xlat: add fallback definitions to madvise_cmds.
	* xlat/madvise_cmds.in: Regenerate using maint/gen_xlat_defs.sh script
	to provide fallback definitions.

	Co-Authored-by: Eugene Syromyatnikov <evgsyr@gmail.com>

2018-08-05  Dmitry V. Levin  <ldv@altlinux.org>

	xlat: add fallback definitions to mmap_flags.
	* xlat/mmap_flags.in: Regenerate using maint/gen_xlat_defs.sh script
	to provide fallback definitions.  Implement a workaround for MAP_RENAME.

	Co-Authored-by: Eugene Syromyatnikov <evgsyr@gmail.com>

2018-08-05  Eugene Syromyatnikov  <evgsyr@gmail.com>

	maint: add a Linux UAPI headers crawler.
	This script is going to be used to generate xlat fallback values.

	* maint/gen_xlat_defs.sh: New file.

	Co-Authored-by: Dmitry V. Levin <ldv@altlinux.org>

2018-08-05  Dmitry V. Levin  <ldv@altlinux.org>

	strace.spec.in: use $RPM_OPT_FLAGS when building auxiliary programs.
	* strace.spec.in: Set CFLAGS_FOR_BUILD to "$RPM_OPT_FLAGS" so that
	$RPM_OPT_FLAGS is honored when building auxiliary programs like
	ioctlsort.

2018-08-05  Dmitry V. Levin  <ldv@altlinux.org>

	strace.spec.in: compress changelog files.
	Some say uncompressed changelog files are too big.

	* strace.spec.in: Compress ChangeLog and ChangeLog-CVS using gzip -9n.

2018-08-05  Dmitry V. Levin  <ldv@altlinux.org>

	strace.spec.in: use a SUSE-specific group name for SUSE.
	Since, apparently, it isn't quite happy with a simple group name
	"Development/Debuggers".

	* strace.spec.in (Group): Add %{?suse_version:/Tools}.

2018-08-05  Eugene Syromyatnikov  <evgsyr@gmail.com>

	strace.spec.in: use a SUSE-specific license name for SUSE.
	Since, apparently, it isn't quite happy with a simple "BSD".

	* strace.spec.in (License): Add %{?suse_version:-3-Clause}.

	Co-Authored-by: Dmitry V. Levin <ldv@altlinux.org>

2018-08-05  Eugene Syromyatnikov  <evgsyr@gmail.com>

	tests: allow any error code when trying to set time.
	Lower expectations of particular error code numbers when trying to set
	time.  This helps to workaround issues with unexpected return codes
	in some exotic environments where EPERM is returned instead of EINVAL
	(e.g. mock that uses systemd-nspawn).

	* tests/clock_xettime.c (main): Do not hardcode EINVAL, print return
	codes using sprintrc.
	* tests/xettimeofday.c (main): Likewise.
	* NEWS: Mention this fix.

	Co-Authored-by: Dmitry V. Levin <ldv@altlinux.org>

2018-08-05  Eugene Syromyatnikov  <evgsyr@gmail.com>

	s390x: fix build with old kernel headers.
	Avoid defining psw_compat_t and s390_compat_regs if their definitions
	are provided by kernel.  Before Linux commit v3.10-rc1~201^2~11,
	these definition were available in <asm/ptrace.h>.

	* configure.ac (AC_CHECK_TYPES): Check for s390_compat_regs.
	* linux/s390x/arch_regs.c [HAVE_S390_COMPAT_REGS]: Do not define
	psw_compat_t and s390_compat_regs.
	* NEWS: Mention this fix.

	Co-Authored-by: Dmitry V. Levin <ldv@altlinux.org>

2018-08-05  Dmitry V. Levin  <ldv@altlinux.org>

	strace.spec.in: minor updates here and there.
	* strace.spec.in: Add descriptive comments to build requirements.
	Introduce %maybe_use_defattr and use it instead of %defattr.
	Add output of ld --version to the build environment information.
	Use printf instead of echo -e.

2018-08-05  Dmitry V. Levin  <ldv@altlinux.org>

	strace.spec.in: remove strace64 subpackage.
	strace64 subpackage used to be installed into ppc32 and sparc32
	userspace running by a 64-bit kernel to trace 64-bit processes.

	As simultaneous decoding of processes running both in 64-bit and 32-bit
	personality is fully supported on every architecture with compat kernel
	support for quite some time, one can just install a 64-bit strace and
	there is no more need for that strace64 kludge.

	* strace.spec.in (strace64_arches, copy64, %ifarch %{strace64_arches}):
	Remove.

2018-08-04  Dmitry V. Levin  <ldv@altlinux.org>

	Update NEWS.

	Update NEWS.

	rtnl_route: decode new RTA_* attributes.
	* rtnl_route.c (rtmsg_nla_decoders): Add entries for RTA_IP_PROTO,
	RTA_SPORT, and RTA_DPORT.

	xlat: update RTA_* constants.
	* xlat/rtnl_route_attrs.in: Add RTA_IP_PROTO, RTA_SPORT, and RTA_DPORT
	* constants introduced by Linux kernel commit v4.18-rc1~114^2~165^2~2.

	rtnl_link: decode new IFLA_BRPORT_* attributes.
	* rtnl_link.c (ifla_brport_nla_decoders): Add entries for
	IFLA_BRPORT_GROUP_FWD_MASK, IFLA_BRPORT_NEIGH_SUPPRESS, and
	IFLA_BRPORT_ISOLATED.

	xlat: update IFLA_BRPORT_* constants.
	* xlat/rtnl_ifla_brport_attrs.in: Add IFLA_BRPORT_GROUP_FWD_MASK
	constant introduced by Linux kernel commit v4.15-rc1~84^2~607.
	Add IFLA_BRPORT_NEIGH_SUPPRESS constant introduced by Linux kernel
	commit v4.15-rc1~84^2~523^2~2.
	Add IFLA_BRPORT_ISOLATED constant introduced by Linux kernel commit
	v4.18-rc1~114^2~142.

	xlat: update IFA_* constants.
	* xlat/rtnl_addr_attrs.in: Add IFA_RT_PRIORITY constant introduced
	by Linux kernel commit v4.18-rc1~114^2~108^2~3

	xlat: update RTPROT_* constants.
	* xlat/routing_protocols.in: Add RTPROT_BGP, RTPROT_ISIS, RTPROT_OSPF,
	RTPROT_RIP, and RTPROT_EIGRP constants introduced by Linux kernel commit
	v4.18-rc1~114^2~90.

2018-08-01  Dmitry V. Levin  <ldv@altlinux.org>

	xlat: save the script used to generate xlat/sock_options.in.
	* xlat/sock_options.sh: New file from commit message of commit v4.23~199.

2018-08-01  Zhibin Li  <08826794brmt@gmail.com>

	tests: check decoding of getsockopt(PACKET_STATISTICS)
	* tests/net-tpacket_stats.c: New file.
	* tests/net-tpacket_stats-success.c: Likewise.
	* tests/gen_tests.in (net-tpacket_stats): New test.
	* tests/net-tpacket_stats-success.test: Likewise.
	* tests/.gitignore: Add net-tpacket_stats and net-tpacket_stats-success.
	* tests/Makefile.am (check_PROGRAMS): Add net-tpacket_stats-success.
	(DECODER_TESTS): Add net-tpacket_stats-success.test.
	* tests/pure_executables.list: Add net-tpacket_stats.

	tests: check decoding of setsockopt(PACKET_[R|T]X_RING)
	* tests/net-tpacket_req.c: New file.
	* tests/.gitignore: Add net-tpacket_req.
	* tests/pure_executables.list: Likewise.
	* tests/gen_tests.in (net-tpacket_req): New test.

	tests: check decoding of setsockopt(PACKET_[ADD|DROP]_MEMBERSHIP)
	* tests/net-packet_mreq.c: New file.
	* tests/.gitignore: Add net-packet_mreq.
	* tests/pure_executables.list: Likewise.
	* tests/gen_tests.in (net-packet_mreq): New test.

2018-07-20  Dmitry V. Levin  <ldv@altlinux.org>

	tests: bring lists back to the sorted order.
	* tests/.gitignore: Make the list sorted again.
	* tests/pure_executables.list: Likewise.
	* tests/Makefile.am (check_PROGRAMS, DECODER_TESTS, MISC_TESTS):
	Likewise.

2018-07-20  Zhibin Li  <08826794brmt@gmail.com>

	tests: check decoding of successful quotactl.
	* tests/quotactl-success.c: New file.
	* tests/quotactl-success-v.c: Likewise.
	* tests/quotactl-xfs-success.c: Likewise.
	* tests/quotactl-xfs-success-v.c: Likewise.
	* tests/quotactl-success.test: New test.
	* tests/quotactl-success-v.test: Likewise.
	* tests/quotactl-xfs-success.test: Likewise.
	* tests/quotactl-xfs-success-v.test: Likewise.
	* tests/.gitignore: Add quotactl-success, quotactl-success-v,
	quotactl-xfs-success and quotactl-xfs-success-v.
	* tests/Makefile.am (check_PROGRAMS): Likewise.
	(DECODER_TESTS): Add four new tests listed above.
	* tests/quotactl.h: [INJECT_RETVAL] (check_quota): Use errstr instead of
	sprintrc; check that returned value is equivalent to the injected one;
	append "(INJECTED)" string to errstr.
	* tests/quotactl.c: Changed condition rc != 0 to rc < 0 in callback
	functions and value of opaque pointer addr_cb_arg in order to check
	successful injection.
	* tests/quotactl-xfs.c: Likewise.

2018-07-18  Dmitry V. Levin  <ldv@altlinux.org>

	net: enhance decoding of getsockopt(PACKET_STATISTICS)
	* net.c (print_tpacket_stats): Change decoder to match the kernel
	behaviour: getsockopt syscall accepts any non-negative *optlen and
	writes either MIN(sizeof(struct tpacket_stats), *optlen) or
	MIN(sizeof(struct tpacket_stats_v3), *optlen) bytes of data.

	net: compile SO_PEERCRED/SO_ATTACH_FILTER/SO_ATTACH_REUSEPORT_CBPF code unconditionally
	* net.c: Remove checks for SO_PEERCRED, SO_ATTACH_FILTER, and
	SO_ATTACH_REUSEPORT_CBPF macros as they are defined unconditionally
	since commit v4.23~199.

	net: enhance decoding of getsockopt(SO_PEERCRED)
	* net.c (print_ucred): Rename to print_get_ucred, change decoder
	to match the kernel behaviour: getsockopt syscall accepts any
	non-negative *optlen and writes MIN(sizeof(struct ucred), *optlen)
	bytes of data.
	(print_getsockopt): Replace print_ucred with print_get_ucred.
	* tests/so_percred.c: Include <string.h>.
	(main): Update expected output.

	net: enhance decoding of getsockopt(SO_LINGER)
	* net.c (print_get_linger): Change decoder to match the kernel
	behaviour: getsockopt syscall accepts any non-negative *optlen
	and writes MIN(sizeof(struct linger), *optlen) bytes of data.
	(print_set_linger): Move after definition of SYS_FUNC(getsockopt).
	* tests/so_linger.c: Include <stddef.h> and <string.h>.
	(main): Update expected output.

	net: generalize getsockopt length check.
	* net.c (print_getsockopt): Apply (ulen < 0 || rlen < 0) check for all
	cases.  As the kernel neither accepts nor returns a negative length
	in case of successful getsockopt syscall invocation, these negative
	values must have been forged by userspace.

2018-07-15  Dmitry V. Levin  <ldv@altlinux.org>

	tests: fix build with fresh glibc.
	Workaround additional incompatibility between <sys/stat.h> and
	<asm/stat.h> introduced by glibc-2.27.9000-566-gfd70af4.

	* tests/xstatx.c (statx, statx_timestamp): Redefine before the inclusion
	of <sys/stat.h> to avoid conflicts between definitions provided by the
	linux kernel headers and the GNU libc.

2018-07-15  Eugene Syromyatnikov  <evgsyr@gmail.com>

	tests/quotactl.h: document check_quota.
	* tests/quotactl.h (check_quota): Add a comment describing the function
	usage.

2018-07-15  Zhibin Li  <08826794brmt@gmail.com>

	tests/quotactl-xfs.c: fix indentation.

2018-07-15  Zhibin Li  <08826794brmt@gmail.com>

	tests: use check_quota for invalid quotactl commands.
	Use check_quota function for invalid commands instead of manual quotactl
	syscall invocations. In this way successful injection can also be checked
	for these commands in the next commit.

	* tests/quotactl.c (main): Add invalid_cmd_str and invalid_id_str local
	variables, remove unused variable rc, use check_quota instead of manual
	quotactl syscall invocations.
	* tests/quotaclt.c (main): Add invalid_cmd_str variable, remove unused
	variable rc, use check_quota instead of manual quotactl syscall invocations.

2018-07-15  Zhibin Li  <08826794brmt@gmail.com>

	tests: enhance test coverage of quotactl syscall parser.
	* tests/quotactl.c (print_dqfmt): New function.
	(main): Use print_dqfmt to print flags of quota format, improve existing
	tests and add more tests for Q_GETFMT.
	* tests/quotactl-xfs.c: Improve existing tests and add more tests for
	Q_XGETQSTAT and Q_XGETQSTATV.

	tests/quotactl-xfs.c: fix typos in QCMD.
	* tests/quotactl-xfs.c (main): fix typos of sub-commands in QCMD.

	Mpersify decoder of struct xfs_dqstats.
	* xfs_quota_stat.h: New file.
	* fetch_struct_xfs_quotastat.c: Likewise.
	* Makefile.am (strace_SOURCES): Add them.
	* quota.c: Include xfs_quota_stat.h
	(struct fs_qfilestat, struct xfs_dqstats): Moved to xfs_quota_stat.h.
	(decode_cmd_data) <case Q_XGETQSTAT>: Use fetch_struct_quotastat.

	quota: fix disorder of PRINT_FIELD invocations.
	* quota.c (decode_cmd_data) <case Q_XGETQSTAT>: Print fields
	of struct xfs_dqstats in the structure order.

2018-07-12  Zhibin Li  <08826794brmt@gmail.com>

	tests: extend coverage for other fcntl flags.
	* tests/fcntl-common.c: Include <assert.h>.
	(struct fcntl_cmd_check): New structure.
	(print_retval_flags, test_other_set_cmd, test_other_get_cmd,
	print_flags_getfd, print_flags_getsig, print_flags_getlease,
	test_fcntl_others): New functions.
	(main): Use test_fcntl_others.

2018-07-11  Dmitry V. Levin  <ldv@altlinux.org>

	Implement -e kvm= option on all architectures.
	Make -e kvm= interface available on all architectures by adding a stub
	on those architectures that do not have <linux/kvm.h>.

	* filter_qualify.c (qualify_kvm): Define unconditionally.
	(qual_options): Define qualify_kvm entry unconditionally.
	* strace.c (usage): Mention kvm argument of -e option unconditionally.

2018-07-11  Eugene Syromyatnikov  <evgsyr@gmail.com>

	xlat: update bpf(2)-related constants.
	* xlat/bpf_attach_type.in (BPF_CGROUP_UDP4_SENDMSG,
	BPF_CGROUP_UDP6_SENDMSG): New constant, introduced by Linux commit
	v4.18-rc1~114^2~9^2~20^2~4.
	(BPF_LIRC_MODE2): New constant, introduced by Linux commit
	v4.18-rc1~114^2~9^2~15^2~1.
	* xlat/bpf_commands.in (BPF_BTF_LOAD): New constant, introduced by Linux
	commit v4.18-rc1~114^2~417^2~1^2~5.
	(BPF_BTF_GET_FD_BY_ID): New constant, introduced by Linux commit
	v4.18-rc1~114^2~223^2~21^2~4.
	(BPF_TASK_FD_QUERY): New constant, introduced by Linux commit
	v4.18-rc1~114^2~148^2~1^2~5.
	* xlat/bpf_map_types.in (BPF_MAP_TYPE_XSKMAP): New constant, introduced
	by Linux commit v4.18-rc1~114^2~304^2~4^2~8.
	(BPF_MAP_TYPE_SOCKHASH): New constant, introduced by Linux commit
	v4.18-rc1~114^2~223^2~5^2~2.
	* xlat/bpf_prog_types.in (BPF_PROG_TYPE_LWT_SEG6LOCAL): New constant,
	introduced by Linux commit v4.18-rc1~114^2~148^2~2^2~1.
	(BPF_PROG_TYPE_LIRC_MODE2): New constant, introduced by Linux commit
	v4.18-rc1~114^2~9^2~15^2~1.
	* tests/bpf.c: Update expected output.

2018-07-11  Eugene Syromyatnikov  <evgsyr@gmail.com>

	Wire up io_pgetevents and rseq on hppa, microblaze, mips, powerpc, and s390
	* linux/hppa/syscallent.h ([350]): Wire up io_pgetevents syscall
	introduced by Linux commit v4.18-rc3~7^2~2.
	* linux/microblaze/syscallent.h ([399], [400]): Wire up io_pgetevents
	and rseq syscalls introduced by Linux commit v4.18-rc3~33^2~2.
	* linux/mips/syscallent-n32.h ([6331], [6332]): Wire up rseq and
	io_pgetevents syscalls introduced by Linux commits v4.18-rc2~11^2~2
	and v4.18-rc2~11^2, respectively.
	* linux/mips/syscallent-n64.h ([5327], [5328]): Likewise.
	* linux/mips/syscallent-o32.h ([4367], [4368]): Likewise.
	* linux/powerpc/syscallent.h ([388]): Wire up io_pgetevents syscall
	introduced by Linux commit v4.18-rc3~14^2~2.
	* linux/powerpc64/syscallent.h ([388]): Likewise.
	* linux/s390/syscallent.h ([382], [383]): Wire up io_pgetevents
	and rseq syscalls introduced by Linux commits v4.18-rc4~18^2~1
	and v4.18-rc4~18^2, respectively.
	* linux/s390x/syscallent.h([382], [383]): Likewise.

	Co-Authored-by: Dmitry V. Levin <ldv@altlinux.org>

2018-07-11  Eugene Syromyatnikov  <evgsyr@gmail.com>

	maint: improve the tag message.
	* maint/gen-tag-message.sh: Align the wording of the changes section
	header with the one used in NEWS, add a reference to CREDITS in
	"Contributors" section.

	Co-Authored-by: Dmitry V. Levin <ldv@altlinux.org>

2018-07-10  Dmitry V. Levin  <ldv@altlinux.org>

	Upgrade invalid -e kvm= argument to a fatal error.
	* filter_qualify.c (qualify_kvm): Call error_msg_and_die instead of
	error_msg in case of invalid -e kvm= argument.
	* tests/options-syntax.test: Check it.

	Mention -e inject option in "strace -h" output.
	* strace.c (usage): Mention inject argument of -e option.

2018-07-07  Masatake YAMATO  <yamato@redhat.com>

	tests: check decoding of vcpu auxstr.
	* tests/ioctl_kvm_run_common.c: Rename from ioctl_kvm_run.c.
	(run_kvm): Parametrize printing of KVM_RUN ioctl with print_KVM_RUN
	invocation.
	(main): Invoke optional KVM_NO_CPUID_CALLBACK macro when the old kernel
	behavior is detected.
	* tests/Makefile.am (EXTRA_DIST): Add ioctl_kvm_run_common.c.
	* tests/ioctl_kvm_run.c: New file, a wrapper around
	ioctl_kvm_run_common.c.
	* ioctl_kvm_run_auxstr_vcpu.c: Likewise.
	* tests/gen_tests.in (ioctl_kvm_run_auxstr_vcpu): New test.
	* tests/pure_executables.list: Add ioctl_kvm_run_auxstr_vcpu.
	* tests/.gitignore: Likewise.

	Co-Authored-by: Dmitry V. Levin <ldv@altlinux.org>

2018-07-07  Masatake YAMATO  <yamato@redhat.com>

	strace.1.in: document -e kvm=vcpu option.
	* strace.1.in (-e kvm=vcpu): Document new option.
	* NEWS: Mention -e kvm=vcpu option.

	Co-Authored-by: Dmitry V. Levin <ldv@altlinux.org>

2018-07-07  Masatake YAMATO  <yamato@redhat.com>

	kvm: attach the exit reason of vcpu as auxstr to KVM_RUN output.
	In KVM, a virtual machine implementation like Qemu can access a vcpu
	via ioctl.  KVM_RUN is an ioctl command to enter vcpu.  The command
	returns control for various reasons: needs of device emulation or
	consuming time slices are the typical ones.  The vmi takes a different
	action for the reason.

	We, strace users, want to know the reason to understand kvm.  This
	change prints the reason as auxstr if "-e kvm=vcpu" option is given,
	and if strace runs on Linux 4.16.0 or higher, which includes commit
	e46b469278a59781f9b25ff608af84892963821b, "kvm: embed vcpu id to dentry
	of vcpu anon inode."

	The way to get the reason is a bit complicated because the ioctl does
	not return it to the userspace directly.  Instead, the vmi and kvm
	communicate via an area of the process virtual memory where the fd of
	vcpu is mmap'ed.  strace must peek the area to know the reason.

	The change does three things: (1) recording the area for the given vcpu
	when the target calls VCPU_CREATE to vcpu_info_list per tcb data field,
	(2) verifying the data recorded in vcpu_info_list before doing (3), and
	(3) decoding the exit reason field of the area.

	The change is complicated because there is a case that strace
	does not have a chance to do (1) if -p option is used.
	In this case, vcpu_info data created in the step (2).

	The area has more fields than "exit reason",
	dumping them may be implemented in the future.

	* defs.h (struct tcb) [HAVE_LINUX_KVM_H]: Add vcpu_info_list field.
	[HAVE_LINUX_KVM_H]: (kvm_run_structure_decoder_init,
	kvm_vcpu_info_free): New declarations.
	* strace.c (usage): Add "kvm" as a new expression for -e option.
	(droptcb): Call kvm_vcpu_info_free.
	* filter_qualify.c (qualify_kvm): New function calling
	kvm_run_structure_decoder_init to enable for attaching the exit
	reason to auxstr.
	(qual_options): Add "kvm" as an entry.
	* xlat/kvm_exit_reason.in: New file.
	* kvm.c: Include xmalloc.h and mmap_cache.h.
	(dump_kvm_run_structure): New static variable.
	(kvm_run_structure_decoder_init): New function.
	(vcpu_info): New struct definition representing the 3-tuple: vcpu file
	descriptor, id of the vcpu, and mmap'ed entry.
	(vcpu_find, vcpu_alloc, vcpu_register, vcpu_getinfo,
	kvm_vcpu_info_free): New functions to access tcb's vcpu_info_list
	field and vcpu_info data type.
	(is_map_for_file, map_len): New helper functions.
	(kvm_ioclt_run_attach_auxstr, kvm_ioctl_decode_run): New functions
	decoding vcpu exit reason and attaching the decoded data to auxstr
	field of tcb.
	(kvm_ioctl_create_vcpu): Call vcpu_register to make an entry mapping
	a file descriptor and the vcpu id associated with the fd.
	(kvm_ioctl): Call kvm_ioctl_decode_run.

	Co-Authored-by: Dmitry V. Levin <ldv@altlinux.org>

2018-07-07  Masatake YAMATO  <yamato@redhat.com>

	mmap_cache: add customizable search function.
	* mmap_cache.c (mmap_cache_search_custom): New function.
	* mmap_cache.h (mmap_cache_search_fn): New type.
	(mmap_cache_search_custom): New function prototype.

2018-07-07  Pierre Marsais  <pierre.marsais@lse.epita.fr>

	tests: check verbose decoding of kvm ioctl.
	* tests/ioctl_kvm_run-v.c: New file.
	* tests/ioctl_kvm_run.c: Include xlat.h and xlat/kvm_cpuid_flags.h.
	(print_kvm_segment, print_kvm_sregs, print_kvm_regs): New functions.
	(run_kvm): Use them.
	(print_cpuid_ioctl) [VERBOSE]: Print verbose ioctl decoding.
	* tests/gen_tests.in (ioctl_kvm_run-v): New entry.
	* tests/pure_executables.list: Add ioctl_kvm_run-v.
	* tests/.gitignore: Likewise.

	tests: check decoding of kvm ioctls related to struct kvm_cpuid2.
	* tests/ioctl_kvm_run.c [!HAVE_STRUCT_KVM_CPUID2]: Skip the test.
	(KVM_MAX_CPUID_ENTRIES): New macro.
	(print_cpuid_ioctl): New function.
	(main): Add tests for cpuid related ioctl.

2018-07-07  Pierre Marsais  <pierre.marsais@lse.epita.fr>

	kvm: decode the argument of KVM_SET_CPUID2 and KVM_GET_*_CPUID ioctl commands
	* configure.ac (AC_CHECK_TYPES): Add struct kvm_cpuid2.
	* xlat/kvm_cpuid_flags.in: New file.
	* kvm.c [HAVE_STRUCT_KVM_CPUID2]: Include "xlat/kvm_cpuid_flags.h".
	[HAVE_STRUCT_KVM_CPUID2] (print_kvm_cpuid_entry, kvm_ioctl_decode_cpuid2):
	New functions.
	(kvm_ioctl) [HAVE_STRUCT_KVM_CPUID2]: Use kvm_ioctl_decode_cpuid2.
	* NEWS: Mention this improvement.

	Co-Authored-by: Dmitry V. Levin <ldv@altlinux.org>

2018-07-07  Zhibin Li  <08826794brmt@gmail.com>

	net: fix a typo in print_tpacket_stats.

2018-07-03  Dmitry V. Levin  <ldv@altlinux.org>

	tests: fix race condition in aio.test.
	* tests/aio.c (main): Print aio_key fields before the io_submit syscall
	invocation to avoid races with the kernel.

2018-07-03  Dmitry V. Levin  <ldv@altlinux.org>

	ci: robustify network-related operations.
	Reduce false positives by wrapping network-related operations into a loop.

	* ci/install-dependencies.sh (retry_if_failed): New function.
	Use it to invoke apt-get update, apt-get install, git clone,
	add-apt-repository, and pip install.

2018-06-29  Zhibin Li  <08826794brmt@gmail.com>

	.gitignore: ignore linux/linux.
	Ignore directory linux/linux created by workaround from commit
	v4.23-11-g15003d4.

	* .gitignore: Add /linux/linux.

2018-06-18  Dmitry V. Levin  <ldv@altlinux.org>

	Fix build on systems where libc relies on <linux/signal.h>
	Commit v4.23~10 has broken the build with Android's libc because it
	relies on the UAPI headers (such as <linux/signal.h>) to define various
	types, rather than copying them into the libc headers (such as <signal.h>)
	like most other Linux C libraries.

	* linux/linux/signal.h: Rename to linux/signal.h.in.
	* Makefile.am (strace_SOURCES): Remove linux/linux/signal.h.
	(EXTRA_DIST): Add linux/signal.h.in.
	(DISTCLEANFILES): Add linux/linux/signal.h.
	* configure.ac (AC_CACHE_CHECK): Check whether <linux/signal.h>
	can be used along with <signal.h>, install linux/linux/signal.h
	workaround if they cannot be used together.

	Reported-by: Elliott Hughes <enh@google.com>
	Closes: https://github.com/strace/strace/issues/72

2018-06-18  Eugene Syromyatnikov  <evgsyr@gmail.com>

	xlat: add AUDIT_INTEGRITY_EVM_XATTR to nl_audit_types.
	* xlat/nl_audit_types.in (AUDIT_INTEGRITY_EVM_XATTR): New constant,
	introduced by Linux commit v4.18-rc1~100^2~9.

	xlat: add UDP_SEGMENT to sock_udp_options.
	* xlat/sock_udp_options.in (UDP_SEGMENT): New constant, introduced by
	Linux commit v4.18-rc1~114^2~377^2~8.

2018-06-17  Dmitry V. Levin  <ldv@altlinux.org>

	Remove redundant range initializers in syscallent files.
	* linux/aarch64/syscallent.h: Remove redundant range initializers.
	* linux/x32/syscallent.h: Likewise.

2018-06-17  Chen Jingpiao  <chenjingpiao@gmail.com>

	x32: move rseq syscall entry to a suitable place.
	As rseq syscall is not x32-specific, move it after the previous one
	that is not x32-specific.  Fix the unused syscall number range.

	* linux/x32/syscallent.h ([334]): Move it after [333].
	([335 ... 511]): Update the range.

2018-06-17  Eugene Syromyatnikov  <evgsyr@gmail.com>

	aio: make iocb array output more strucutred.
	* aio.c (print_iocb): Print curly brackets.
	(print_iocbp): Do not print curly brackets.
	* tests/aio.c: Update expected output.

	aio: print IOCB_CMD_* using xlat.
	* xlat/aio_cmds.in: New file.
	* aio.c (tprint_lio_opcode): Change array of structs "cmds" to array of
	enums "subs", use printxval_indexn_ex for printing cmd, return sub type
	using subs array.

	xlat/sock_tcp_options.in: add #value_indexed.
	* xlat/sock_tcp_options.in: Add #value_indexed, provide fallback
	definitions.
	* net.c (print_sockopt_fd_level_name) <case SOL_TCP>: Use
	printxval_index instead of printxval.

	xlat/sock_tcp_options.in: update.
	* xlat/sock_tcp_options.in (TCP_ZEROCOPY_RECEIVE): New constant,
	introduced by Linux commit v4.18-rc1~114^2~351^2~1.
	(TCP_INQ): New constant, introduced by Linux commit v4.18-rc1~114^2~330.

	xlat/sigtrap_codes.in: add TRAP_UNK.
	* xlat/sigtrap_codes.in (TRAP_UNK): New constant, introduced by Linux
	commit v4.17-rc1-15-gdb78e6a.

2018-06-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.23-1.
	* strace.spec.in: Likewise.

2018-06-14  Dmitry V. Levin  <ldv@altlinux.org>

	Prepare for 4.23 release.
	* NEWS: Update for 4.23 release.

	Update copyright headers.
	Headers updated automatically using maint/update_copyright_years.sh
	script.

	tests: add missing copyright headers.
	* tests/prctl-spec-inject.test: Add copyright header.
	* tests/qualify_personality.sh: Likewise.

	maint: document release procedure.
	* maint/README-release: New file.
	* maint/gen-release-notes.sh: Likewise.
	* maint/gen-release-github.sh: Likewise.
	* maint/gen-release-gitlab.sh: Likewise.

	maint: prepend contributor names in tag messages with an asterisk.
	* maint/gen-tag-message.sh: Prepend every line of
	gen-contributors-list.sh output with an asterisk.

2018-06-14  Eugene Syromyatnikov  <evgsyr@gmail.com>

	Update NEWS.

2018-06-13  Dmitry V. Levin  <ldv@altlinux.org>

	Wire up rseq syscall.
	This new syscall was introduced by Linux commit v4.17-1308-gd7822b1.

	* linux/dummy.h (sys_rseq): New macro.
	* linux/arm/syscallent.h (398): Add rseq entry.
	* linux/i386/syscallent.h (386): Likewise.
	* linux/powerpc/syscallent.h (387): Likewise.
	* linux/powerpc64/syscallent.h (387): Likewise.
	* linux/x32/syscallent.h (334): Likewise.
	* linux/x86_64/syscallent.h (334): Likewise.

2018-06-13  Eugene Syromyatnikov  <evgsyr@gmail.com>

	tests: check decoding of io_pgetevents syscall.
	* configure.ac (AC_CHECK_TYPES): Check for struct __aio_sigset
	in <linux/aio_abi.h>.
	* tests/aio_pgetevents.c: New file.
	* tests/.gitignore: Add aio_pgetevents.
	* tests/pure_executables.list: Likewise.
	* tests/gen_tests.in (aio_pgetevents): New test.

	Co-Authored-by: Dmitry V. Levin <ldv@altlinux.org>

2018-06-13  Eugene Syromyatnikov  <evgsyr@gmail.com>

	Implement io_pgetevents syscall decoding.
	Introduced by Linux commit v4.17-rc3-7-g7a074e9.

	* print_aio_sigset.c: New file.
	* Makefile.am (strace_SOURCES): Add it.
	* aio.c (print_io_getevents): Rename from SYS_FUNC(io_getevents), add
	has_usig flag, print user sigset on exiting if has_usig is set to true.
	(SYS_FUNC(io_getevents), SYS_FUNC(io_pgetevents)): New functions,
	wrappers for print_io_getevents.
	* linux/32/syscallent.h ([292]): Wire up io_pgetevents.
	* linux/64/syscallent.h ([292]): Likewise.
	* linux/i386/syscallent.h ([385]): Likewise.
	* linux/x32/syscallent.h ([333]): Likewise.
	* linux/x86_64/syscallent.h ([333]): Likewise.
	* NEWS: Mention this improvement.

	Co-Authored-by: Dmitry V. Levin <ldv@altlinux.org>

2018-06-13  Dmitry V. Levin  <ldv@altlinux.org>

	travis: re-enable testing with the latest mainline kernel headers.
	As <linux/signal.h> is out of the game now, the Linux commit
	v4.17-rc3-7-g7a074e9 should not cause harm anymore, so let's enable
	testing with the latest mainline kernel headers again.

	* .travis.yml (matrix): Do not specify KBRANCH for KHEADERS=torvalds/linux.

2018-06-13  Dmitry V. Levin  <ldv@altlinux.org>

	Workaround incompatibility between <linux/signal.h> and libc headers.
	Override <linux/signal.h> with <signal.h> so that those few linux
	headers that include <linux/signal.h> could be included along with libc
	headers.

	* linux/linux/signal.h: New file.
	* Makefile.am (strace_SOURCES): Add it.

2018-06-13  Eugene Syromyatnikov  <evgsyr@gmail.com>

	tests: add personality specification syntax checks.
	* tests/options-syntax.test: Add personality specification syntax
	checks.

	tests: add basic checks for personality designation support.
	* tests/qualify_personality.sh: New file.
	* tests/qualify_personality_empty.in: Likewise.
	* tests/trace_personality_32.in: Likewise.
	* tests/trace_personality_64.in: Likewise.
	* tests/trace_personality_regex_32.in: Likewise.
	* tests/trace_personality_regex_64.in: Likewise.
	* tests/trace_personality_regex_x32.in: Likewise.
	* tests/trace_personality_x32.in: Likewise.
	* tests/Makefile.am (EXTRA_DIST): Add them.
	* tests/gen_tests.in (trace_personality_32, trace_personality_64,
	trace_personality_x32, trace_personality_regex_32,
	trace_personality_regex_64, trace_personality_regex_x32): New tests.

2018-06-13  Eugene Syromyatnikov  <evgsyr@gmail.com>

	Add support for personality designation in regex qualifications.
	* basic_filters.c (qualify_syscall_regex): Copy syscall name
	to a temporary buffer, append the personality designation to it,
	and check it against regular expression if the syscall name
	hasn't been matched already.

	References: https://github.com/strace/strace/issues/35

2018-06-13  Eugene Syromyatnikov  <evgsyr@gmail.com>

	Add support for personality designation in syscall qualifications.
	* syscall.c (personality_designators): New array.
	* defs.h (personality_designators): New declaration.
	* basic_filters.c (qualify_syscall_separate_personality,
	qualify_syscall_number_personality): New functions.
	(qualify_syscall_number): Use qualify_syscall_separate_personality for
	checking for a personality specification, call
	qualify_syscall_number_personality for setting number set for specific
	personality.
	(qualify_syscall_name_personality): New function.
	(qualify_syscall_name): Use qualify_syscall_separate_personality for
	checking for a personality specification, call
	qualify_syscall_name_personality for setting number set for specific
	personality.
	* strace.1.in (.SS Filtering): Document it.
	* NEWS: Mention it.

	Co-Authored-by: Dmitry V. Levin <ldv@altlinux.org>
	Closes: https://github.com/strace/strace/issues/35

2018-06-13  Eugene Syromyatnikov  <evgsyr@gmail.com>

	tests: add basic checks for inject=SET:syscall= expression syntax.
	* tests/qual_fault-syscall.test: New test.
	* tests/qual_inject-error-signal-syscall.test: Likewise.
	* tests/qual_inject-retval-syscall.test: Likewise.
	* tests/qual_inject-signal-syscall.test: Likewise.
	* tests/Makefile.am (MISC_TESTS): Add them.
	* tests/qual_fault-syntax.test: Add checks for inject=SET:syscall=
	expression syntax.
	* tests/qual_inject-syntax.test: Likewise.
	* tests/qual_fault.test: Append $suffix to -e fault arguments, override
	$NAME with $name_override if the latter is set.
	* tests/qual_inject-error-signal.test: Append $suffix to -e inject
	arguments, override $NAME with $name_override if the latter is set.
	* tests/qual_inject-retval.test: Likewise.
	* tests/qual_inject-signal.test: Likewise.

2018-06-13  Eugene Syromyatnikov  <evgsyr@gmail.com>

	Implement injection of syscalls with no side effects as an alternative to -1
	* defs.h (INJECT_F_SYSCALL, INJECT_ACTION_FLAGS, TCB_TAMPERED_NO_FAIL,
	syscall_tampered_nofail): New macros.
	(inject_data): Add scno field.
	* filter_qualify.c (struct inject_personality_data): New type.
	(parse_inject_token): Add "pdata" argument, parse "syscall=" option.
	(parse_inject_expression): Add "pdata" argument, forward it to
	parse_inject_token.
	(qualify_inject_common) <pdata>: New variable array, pass it to
	parse_inject_expression, copy it into inject_vec.
	* syscall.c (tamper_with_syscall_entering): Inject the specified syscall
	if INJECT_F_SYSCALL is set.
	(tamper_with_syscall_exiting): Update the check for a failed syscall
	injection.
	(get_syscall_result): Update get_error invocation.
	* strace.1.in: Document new syscall injection expression.
	* NEWS: Mention it.

	Co-Authored-by: Dmitry V. Levin <ldv@altlinux.org>
	Closes: https://github.com/strace/strace/issues/26

2018-06-13  Dmitry V. Levin  <ldv@altlinux.org>

	ia64: remove legacy i386 entries from the syscall entry table.
	Remove the last piece of IA-32 mode support.  Besides being obsolete,
	these bogus syscall entries cause problems with syscall name resolution.

	* linux/ia64/syscallent.h [CST > 0]: Remove.

	Complements: v4.21~17 "linux/ia64: remove IA-32 mode support"

2018-06-11  Eugene Syromyatnikov  <evgsyr@gmail.com>

	linux: set error flags in arch_set_error on POWER and Alpha.
	* alpha/set_error.c (arch_set_error): Set alpha_r3 to 1, update tracee's
	REG_A3.
	* powerpc/set_error.c (arch_set_error): Set bit 28 in CCR register,
	update tracee's PT_CCR.

	Fixes: v4.15~126 "Implement arch specific methods of changing syscall number and error code"

2018-06-11  Eugene Syromyatnikov  <evgsyr@gmail.com>

	tests: check decoding of IFLA_LINKINFO netlink attribute.
	* tests/nlattr_ifla_linkinfo.c: New file.
	* tests/pure_executables.list: Add nlattr_ifla_linkinfo.
	* tests/.gitignore: Likewise.
	* tests/gen_tests.in (nlattr_ifla_linkinfo): New test.

	Co-Authored-by: Dmitry V. Levin <ldv@altlinux.org>

2018-06-11  Eugene Syromyatnikov  <evgsyr@gmail.com>

	tests: add print_quoted_stringn to print string with a size limit.
	This is similar to print_quoted_cstring, but not quite the same.

	* tests/print_quoted_string.c (print_quoted_stringn): New function.
	* tests/tests.h (print_quoted_stringn): New declaration.

2018-06-11  Eugene Syromyatnikov  <evgsyr@gmail.com>

	tests: add fallback_func argument to TEST_NESTED_NLATTR_OBJECT_EX_
	* tests/test_nlattr.h (TEST_NESTED_NLATTR_OBJECT_EX_): Add fallback_func
	argument, call it instead of print_quoted_hex.
	(TEST_NESTED_NLATTR_OBJECT_EX, TEST_NESTED_NLATTR_OBJECT): Specify
	print_quoted_hex as a fallback_func.
	* tests/nlattr_ifla_af_spec.c: Specify print_quoted_hex as
	a fallback_func in TEST_NESTED_NLATTR_OBJECT_EX_ calls.

	tests/test_nlattr.h: add ability to provide additional nlattr payload.
	* tests/test_nlattr.h (print_nlattr): Add add_data argument, print
	opening square bracket if add_data is set to true.
	(TEST_NLATTR_EX_): Rename from TEST_NLATTR_, add nla_total_len_
	argument, use it for msg_len calculation, print square brackets
	if nla_total_len_ is greater than nla_data_len_.
	(TEST_NLATTR_): New macro, a wrapper for TEST_NLATTR_EX_.

2018-06-11  Eugene Syromyatnikov  <evgsyr@gmail.com>

	rtnl_link: decode struct ifla_bridge_id unconditionally.
	Since it is relatively simple.

	* rtnl_link.c (decode_ifla_bridge_id): Provide struct definition for
	the id variable.
	[!HAVE_STRUCT_IFLA_BRIDGE_ID] (decode_ifla_bridge_id): Decode struct
	ifla_bridge_id.

2018-06-11  Eugene Syromyatnikov  <evgsyr@gmail.com>

	nlattr: specify size for ethernet protocol.
	Otherwise it tries to decode payload of size 1, which makes little
	sense.

	* nlattr.c (decode_nla_ether_proto) <opts>: Specify size field.

	Fixes: v4.22-321-gfd0cd65 "nlattr: add ethernet protocol decoder"

2018-06-11  Eugene Syromyatnikov  <evgsyr@gmail.com>

	rtnl_link: use ARRSZ_PAIR where appropriate.
	It reduces code duplication somewhat and allows avoiding errors like
	the one fixed in the previous commit.

	* rtnl_link.c (decode_ifla_protinfo, decode_nla_linkinfo_data_bridge,
	decode_nla_linkinfo_data_tun, decode_ifla_linkinfo, decode_ifla_port,
	decode_ifla_vf_ports, decode_ifla_xdp,
	DECL_NETLINK_ROUTE_DECODER(decode_ifinfomsg)): Use ARRSZ_PAIR in
	decode_nlattr call arguments.

2018-06-11  Eugene Syromyatnikov  <evgsyr@gmail.com>

	rtnl_link: fix incorrect variable names in ARRAY_SIZE arguments.
	* rtnl_link.c (decode_nla_linkinfo_data_bridge): Change
	rtnl_ifla_info_data_bridge_attrs to ifla_info_data_bridge_nla_decoders
	in ARRAY_SIZE call.
	(decode_nla_linkinfo_data_tun): Change rtnl_ifla_info_data_tun_attrs
	to ifla_info_data_tun_nla_decoders in ARRAY_SIZE call.

	Fixes: v4.22-328-g1e6d5a8 "rtnl_link: implement IFLA_INFO_DATA for bridges"
	Fixes: v4.22-329-g4eab3a4 "rtnl_link: implement IFLA_INFO_DATA for tun devices"

2018-06-11  Eugene Syromyatnikov  <evgsyr@gmail.com>

	mips: add missing pure flag to syscall entries.
	* linux/mips/syscallent-n32.h ([6038], [6100], [6102], [6105], [6106],
	[6108], [6109], [6178]): Add pure flag to getpid, getuid, getgid, geteuid,
	getegid, getpgid, getpgrp, and gttid syscall descriptors.
	* linux/mips/syscallent-n64.h ([5038], [5100], [5102], [5105], [5106],
	[5108], [5109], [5178]): Likewise.
	* linux/mips/syscallent-o32.h ([4020], [4024], [4047], [4049], [4050],
	[4064], [4065], [4222]): Likewise.

	Complements: v4.21~29 "Add pure syscall flag"

2018-06-11  Eugene Syromyatnikov  <evgsyr@gmail.com>

	mips: add missing "never fails" flag to getpgrp syscall entries.
	* linux/mips/syscallent-n32.h ([6109]): Add NF flag.
	* linux/mips/syscallent-n64.h ([5109]): Likewise.
	* linux/mips/syscallent-o32.h ([4065]): Likewise.

	Complements: v4.21~46 "Add SYSCALL_NEVER_FAILS flag to getpgrp"

2018-06-07  Eugene Syromyatnikov  <evgsyr@gmail.com>

	Update NEWS.
	Co-Authored-by: Dmitry V. Levin <ldv@altlinux.org>

	xlat: describe IPV4_DEVCONF_* weirdness.
	* xlat/inet_devconf_indices.in: Add a comment about fallback definitions.
