2017-09-05  Dmitry V. Levin  <ldv@altlinux.org>

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

	.mailmap: add canonical name and address of Edgar Kaziakhmedov.
	* .mailmap: Add canonical name and address of Edgar Kaziakhmedov here
	to avoid duplications in CREDITS file.

	maint: add gen-tag-message.sh script.
	* maint/gen-tag-message.sh: New file.

	maint: add gen-contributors-list.sh script.
	* maint/gen-contributors-list.sh: New file.

2017-09-05  Eugene Syromyatnikov  <evgsyr@gmail.com>

	Update copyright headers.
	Headers updated automatically with

	    maint/update_copyright_headers.sh -c

2017-09-05  Eugene Syromyatnikov  <evgsyr@gmail.com>

	update_copyright_years.sh: add ability to automatically commit results.
	* maint/update_copyright_years.sh (DEFAULT_GIT_COMMIT_MESSAGE,
	GIT_COMMIT_MESSAGE): New variables.
	<-c>: New option, implies -a, calls git commit with GIT_COMMIT_TEMPLATE string
	as a template.

2017-09-04  Eugene Syromyatnikov  <evgsyr@gmail.com>

	configure.ac: specify minimal GNU Automake version.
	In order to provide better diagnostics.

	* configure.ac (AM_INIT_AUTOMAKE): Specify minimal GNU Automake version as
	1.13 due to usage of AM_EXTRA_RECURSIVE_TARGETS macro.

	Closes: https://github.com/strace/strace/issues/11

2017-09-04  Eugene Syromyatnikov  <evgsyr@gmail.com>

	Update NEWS.

2017-09-03  JingPiao Chen  <chenjingpiao@gmail.com>

	tests: check decoding of IFLA_XDP netlink attribute of ifinfomsg.
	* tests/nlattr_ifla_xdp.c: New file.
	* tests/gen_tests.in (nlattr_ifla_xdp): New entry.
	* tests/pure_executables.list: Add nlattr_ifla_xdp.
	* tests/.gitignore: Likewise.

	tests: check decoding of IFLA_PORT_SELF netlink attribute of ifinfomsg.
	* tests/nlattr_ifla_port.c: New file.
	* tests/gen_tests.in (nlattr_ifla_port): New entry.
	* tests/pure_executables.list: Add nlattr_ifla_port.
	* tests/.gitignore: Likewise.

	tests: check decoding of more ifinfomsg netlink attributes.
	* tests/nlattr_ifinfomsg.c (IFLA_LINKINFO, IFLA_VF_PORTS,
	IFLA_INFO_KIND, IFLA_VF_PORT): New macros.
	(main): Check decoding of IFLA_LINKINFO and IFLA_VF_PORTS.

	rtnl_link: decode more ifinfomsg netlink attributes.
	* configure.ac (AC_CHECK_TYPES): Check for struct ifla_port_vsi
	in <linux/if_link.h>.
	* rtnl_link.c: Include "xlat/rtnl_ifla_info_attrs.h",
	"xlat/rtnl_ifla_port_attrs.h", "xlat/rtnl_ifla_port_attrs.h",
	"xlat/rtnl_ifla_xdp_attrs.h", and "xlat/xdp_flags.h".
	(decode_ifla_linkinfo, decode_ifla_port_vsi,
	decode_ifla_port, decode_ifla_vf_ports,
	decode_ifla_xdp_flags, decode_ifla_xdp): New functions.
	(ifla_linkinfo_nla_decoders, ifla_port_nla_decoders,
	ifla_vf_port_nla_decoders, ifla_xdp_nla_decoders): New arrays.
	(ifinfomsg_nla_decoders) <IFLA_LINKINFO>: Use decode_ifla_linkinfo.
	<IFLA_VF_PORTS>: Use decode_ifla_vf_ports.
	<IFLA_PORT_SELF>: Use decode_ifla_port.
	<IFLA_XDP>: Use decode_ifla_xdp.
	* xlat/rtnl_ifla_info_attrs.in: New file.
	* xlat/rtnl_ifla_port_attrs.in: Likewise.
	* xlat/rtnl_ifla_vf_port_attrs.in: Likewise.
	* xlat/rtnl_ifla_xdp_attrs.in: Likewise.
	* xlat/xdp_flags.in: Likewise.

2017-09-02  Eugene Syromyatnikov  <evgsyr@gmail.com>

	keyctl: add support for KDF parameters decoding in KEYCTL_DH_COMPUTE.
	* fetch_struct_keyctl_kdf_params.c: New file.
	* keyctl_kdf_params.h: Likewise.
	* Makefile.am (strace_SOURCES): Add them.
	* configure.ac: Add check for struct keyctl_kdf_params presence in
	<linux/keyctl.h>.
	* defs.h (struct strace_keyctl_kdf_params): Add forward declaration.
	* keyctl.c (keyctl_dh_compute): Add new parameter kdf_addr, print it
	on exiting.
	(SYS_FUNC(keyctl)) <case KEYCTL_DH_COMPUTE>: Pass arg5 to
	keyctl_dh_compute.
	* tests/keyctl.c: Include assert.h.
	(struct keyctl_kdf_params) [!HAVE_STRUCT_KEYCTL_KDF_PARAMS]: New
	definition.
	(STR32): New definition, copied from ioctl_dm.c.
	(append_str, kckdfp_to_str): New functions.
	(main): Update expected output, add checks for struct keyctl_kdf_params
	decoding.

	tests/keyctl: improve readability.
	* tests/keyctl.c: Since do_keyctl() has so convoluted calling convention
	and keyctl test is so complex, let's try to improve readability a bit
	with some conventions regarding do_keyctl() call formatting: arguments
	representing single keyctl argument should be put on the separate line,
	continuations of arguments related to the same keyctl argument should
	have additional indentation and termination 0UL should always be
	on a separate line.  Also, while we are here, let's add spaces
	to two type casts that are missing them.

2017-09-01  Gleb Fotengauer-Malinovskiy  <glebfm@altlinux.org>

	s390: update ioctl entries from linux 4.13.
	* linux/s390/ioctls_arch0.h: Update from linux v4.13-rc7 using ioctls_gen.sh.

2017-09-01  Dmitry V. Levin  <ldv@altlinux.org>

	mpers.awk: fix regression introduced by the previous cleanup.
	* mpers.awk (what_is): Remove returned_size from local variables.

	Fixes: v4.18-308-gfd3447b5 ("mpers.awk: declare local variables consistently")

2017-09-01  Dmitry V. Levin  <ldv@altlinux.org>

	rtnl_link: enhance decoding of struct rtnl_link_stats{,64}
	Enhance runtime detection of struct rtnl_link_stats.rx_nohandler
	and struct rtnl_link_stats64.rx_nohandler.

	* rtnl_link.c (decode_rtnl_link_stats): Do not accept structure length
	greater than min_size but less than sizeof(struct rtnl_link_stats).
	(decode_rtnl_link_stats64): Likewise, so not accept structure length
	greater than min_size but less than sizeof(struct rtnl_link_stats64).

2017-09-01  Dmitry V. Levin  <ldv@altlinux.org>

	rtnl_neightbl: enhance decoding of struct ndt_stats.
	Add support of kernels that operate with older definition of
	struct ndt_stats than the definition used to build strace.

	* rtnl_neightbl.c (decode_ndt_stats): Add runtime detection
	of struct ndt_stats.ndts_table_fulls field, print the field
	when it is available.

2017-09-01  JingPiao Chen  <chenjingpiao@gmail.com>

	tests: check decoding of IFLA_PROTINFO netlink attribute of ifinfomsg.
	* tests/nlattr_ifla_brport.c: New file.
	* tests/gen_tests.in (nlattr_ifla_brport): New entry.
	* tests/pure_executables.list: Add nlattr_ifla_brport.
	* tests/.gitignore: Likewise.
	* tests/test_nlattr.h (TEST_NESTED_NLATTR_OBJECT): New macro.

	rtnl_link: decode IFLA_PROTINFO netlink attribute of ifinfomsg.
	* configure.ac (AC_CHECK_TYPES): Check for ifla_bridge_id
	and rtnl_link_stats64 structures in <linux/if_link.h>.
	* rtnl_link.c: Include "xlat/rtnl_ifla_brport_attrs.h".
	(decode_ifla_bridge_id, decode_ifla_protinfo): New functions.
	(ifla_brport_nla_decoders): New array.
	(ifinfomsg_nla_decoders) <IFLA_PROTINFO>: Use decode_ifla_protinfo.
	* xlat/rtnl_ifla_brport_attrs.in: New file.

	tests: check decoding of ndtmsg netlink attributes.
	* tests/nlattr_ndtmsg.c (NDTA_PARMS, NDTPA_IFINDEX): New macros.
	(main): Check decoding of NDTA_CONFIG, NDTA_PARMS and NDTA_STATS.

	rtnl_neightbl: decode ndtmsg netlink attributes.
	* configure.ac (AC_CHECK_TYPES): Check for ndt_config
	and ndt_stats structures in <linux/neighbour.h>.
	(AC_CHECK_MEMBERS): Check for ndts_table_fulls field in struct ndt_stats.
	* rtnl_neightbl.c: Include "xlat/rtnl_neightbl_parms_attrs.h".
	(decode_ndt_config, decode_ndta_parms, decode_ndta_parms): New functions.
	(ndt_parms_nla_decoders, ndtmsg_nla_decoders): New arrays.
	(decode_ndtmsg): Use ndtmsg_nla_decoders.
	* xlat/rtnl_neightbl_parms_attrs.in: New file.

	tests: check decoding of ifaddrlblmsg netlink attributes.
	* tests/nlattr_ifaddrlblmsg.c (main): Check decoding of IFAL_ADDRESS.

	rtnl_addrlabel: decode ifaddrlblmsg netlink attributes.
	* rtnl_addrlabel.c (decode_ifal_address): New function.
	(ifaddrlblmsg_nla_decoders): New array.
	(decode_ifaddrlblmsg): Use it.

2017-09-01  Dmitry V. Levin  <ldv@altlinux.org>

	alpha: wire up new syscalls.
	* linux/alpha/syscallent.h [514..522]: New entries.

2017-08-31  JingPiao Chen  <chenjingpiao@gmail.com>

	tests/.gitignore: add missing files that should be ignored.
	* tests/.gitignore: Add is_linux_mips_n64.

2017-08-31  Dmitry V. Levin  <ldv@altlinux.org>

	mpers.awk: declare local variables consistently.
	* mpers.awk (compare_indices): Make c1 and c2 variables local.
	(enter): Make item variable local.
	(what_is): Make loc_diff, returned_size, and to_return local.

2017-08-30  Dmitry V. Levin  <ldv@altlinux.org>

	mpers.awk: separate local variables from real parameters by newline.
	* mpers.awk (array_get, update_upper_bound): Separate local variables
	from real parameters by newline.

2017-08-29  Dmitry V. Levin  <ldv@altlinux.org>

	rtnl_rule: enhance FRA_TABLE decoding.
	The attribute of FRA_TABLE is not just a 32-bit integer, some constants
	have well-known symbolic names like RT_TABLE_DEFAULT.

	* rtnl_rule.c (fib_rule_hdr_nla_decoders) <FRA_TABLE>:
	Use decode_nla_rt_class.
	* tests/nlattr_fib_rule_hdr.c (FRA_TABLE): New macro.
	(main): Check FRA_TABLE decoding.

2017-08-29  Dmitry V. Levin  <ldv@altlinux.org>

	rtnl_route: enhance RTA_TABLE decoding.
	The attribute of RTA_TABLE is not just a 32-bit integer, some constants
	have well-known symbolic names like RT_TABLE_DEFAULT.

	* nlattr.h (decode_nla_rt_class): New prototype.
	* rtnl_route.c (decode_nla_rt_class): New function.
	(rtmsg_nla_decoders) <RTA_TABLE>: Use it.
	* tests/nlattr_rtmsg.c (main): Check RTA_TABLE decoding.

2017-08-29  JingPiao Chen  <chenjingpiao@gmail.com>

	rtnl_nsid: decode rtgenmsg netlink attributes.
	* rtnl_nsid.c (rtgenmsg_nla_decoders): New array.
	(decode_rtgenmsg): Use it.

	rtnl_netconf: decode netconfmsg netlink attributes.
	* rtnl_netconf.c (netconfmsg_nla_decoders): New array.
	(decode_netconfmsg): Use it.

	tests: check decoding of ndmsg netlink attributes.
	* tests/nlattr_ndmsg.c: Include <netinet/in.h> and <arpa/inet.h>.
	(NDA_PORT): New macro.
	(main): Check decoding of NDA_DST, NDA_CACHEINFO and NDA_PORT.

	rtnl_neigh: decode ndmsg netlink attributes.
	* nlattr.c: Include <netinet/in.h> and <arpa/inet.h>.
	(decode_nla_be16): New function.
	* nlattr.h (decode_nla_be16): New prototype.
	* rtnl_neigh.c (decode_neigh_addr,
	decode_nda_cacheinfo): New functions.
	(ndmsg_nla_decoders): New array.
	(decode_ndmsg): Use it.

	tests: check decoding of fib_rule_hdr netlink attributes.
	* tests/nlattr_fib_rule_hdr.c: Include <inttypes.h>.
	(FRA_TUN_ID, FRA_UID_RANGE): New macros.
	(main): Check decoding of FRA_DST, FRA_UID_RANGE and FRA_TUN_ID.

	rtnl_rule: decode fib_rule_hdr netlink attributes.
	* configure.ac (AC_CHECK_FUNCS): Add be64toh.
	(AC_CHECK_TYPES): Check for struct fib_rule_uid_range
	in <linux/fib_rules.h>.
	* nlattr.c: Include <endian.h>.
	(decode_nla_be64): New function.
	* nlattr.h (decode_nla_be64): New prototype.
	* rtnl_rule.c (decode_rule_addr,
	decode_fib_rule_uid_range): New functions.
	(fib_rule_hdr_nla_decoders): New array.
	(decode_fib_rule_hdr): Use it.

	rtnl_neigh: fix ndm_type field decode in struct ndmsg.
	* defs.h (routing_types): New xlat prototype.
	* rtnl_neigh.c (decode_ndmsg): Fix ndm_type decode.
	* xlat/nda_types.in: Remove it.
	* tests/netlink_route.c (test_rtnl_neigh): Update the test.
	* tests/nlattr_ndmsg.c (init_ndmsg, print_ndmsg): Likewise.

2017-08-28  Dmitry V. Levin  <ldv@altlinux.org>

	Disallow more than one signal= specification in an injection expression.
	Specifying several signal= specifications in an injection expressions
	makes no sense.

	* filter_qualify.c (parse_inject_token): Disallow second
	signal= specification.
	* strace.1.in: Document it.
	* tests/qual_inject-syntax.test: Check it.

2017-08-28  Dmitry V. Levin  <ldv@altlinux.org>

	Add "flags" field to struct inject_data.
	Introduce "flags" field to struct inject_data and use it instead
	of magic rval and signo constants.
	Due to layout of struct inject_data, this new field does not change
	sizeof(struct inject_data).

	* defs.h (INJECT_F_RETVAL, INJECT_F_SIGNAL): New macros.
	(INJECT_OPTS_RVAL_DEFAULT): Remove macro.
	(struct inject_data): Add "flags" field.
	* filter_qualify.c (parse_inject_token, qualify_inject_common): Check
	struct inject_data.flags instead of inject_data.rval
	and inject_data.signo, do not initialize inject_opts.data.
	* syscall.c (tamper_with_syscall_entering): Check struct
	inject_data.flags instead of inject_data.rval and inject_data.signo.

2017-08-28  Dmitry V. Levin  <ldv@altlinux.org>
	    Victor Krapivensky  <krapivenskiy.va@phystech.edu>

	Move inject data of struct inject_opts to inject_data substructure.
	* defs.h (inject_data): New structure.
	(struct inject_opts): Replace "signo" and "rval" fields with "data"
	field of type "struct inject_data".
	* filter_qualify.c (parse_inject_token, qualify_inject_common): Update
	for the new layout of struct inject_opts.
	* syscall.c (tamper_with_syscall_entering, tamper_with_syscall_exiting):
	Likewise.

2017-08-28  Gleb Fotengauer-Malinovskiy  <glebfm@altlinux.org>

	Update ioctl entries from linux v4.13-rc7.
	* linux/32/ioctls_inc_align16.h: Update from linux v4.13-rc7 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/arm/ioctls_arch0.h: Likewise.
	* linux/i386/ioctls_arch0.h: Likewise.
	* linux/powerpc/ioctls_arch0.h: Likewise.
	* linux/s390x/ioctls_arch0.h: Likewise.
	* linux/x86_64/ioctls_arch0.h: Likewise.
	* NEWS: Mention this.

2017-08-28  JingPiao Chen  <chenjingpiao@gmail.com>

	tests: check decoding of ifinfomsg netlink attributes.
	* tests/nlattr_ifinfomsg.c: Include <stddef.h> and <linux/if_link.h>.
	(IFLA_LINK_NETNSID): New macro.
	(main): Check decoding of IFLA_LINK_NETNSID,
	IFLA_STATS, IFLA_MAP and IFLA_STATS64.

	rtnl_link: decode ifinfomsg netlink attributes.
	* configure.ac (AC_CHECK_HEADERS): Add linux/if_link.h.
	(AC_CHECK_TYPES): Check for struct rtnl_link_stats64
	in <linux/if_link.h>.
	(AC_CHECK_MEMBERS): Check for rx_nohandler field
	in struct rtnl_link_stats/rtnl_link_stats64.
	* rtnl_link.c: Include <linux/if_link.h>.
	(decode_rtnl_link_stats, decode_rtnl_link_ifmap,
	decode_rtnl_link_stats64): New functions.
	(ifinfomsg_nla_decoders): New array.
	(decode_ifinfomsg): Use it.

2017-08-28  Dmitry V. Levin  <ldv@altlinux.org>
	    Eugene Syromyatnikov  <evgsyr@gmail.com>

	Imply RVAL_DECODED when RVAL_IOCTL_PARSED is returned on entering.
	Also, rename RVAL_IOCTL_PARSED to RVAL_IOCTL_DECODED as the latter
	is a more suitable name.

	* defs.h (RVAL_IOCTL_PARSED): Rename to RVAL_IOCTL_DECODED.
	* ioctl.c (ioctl_decode): Update comment.
	(SYS_FUNC(ioctl)): Replace RVAL_IOCTL_PARSED with RVAL_IOCTL_DECODED,
	add convertation of RVAL_IOCTL_DECODED to RVAL_DECODED.
	* block.c (block_ioctl): Replace RVAL_DECODED | RVAL_IOCTL_PARSED
	with RVAL_IOCTL_DECODED on entering.  Replace RVAL_IOCTL_PARSED
	with RVAL_IOCTL_DECODED on exiting.
	* btrfs.c (btrfs_ioctl): Likewise.
	* evdev.c: Likewise.
	* file_ioctl.c: Likewise.
	* fs_x_ioctl.c: Likewise.
	* hdio.c: Likewise.
	* loop.c: Likewise.
	* mtd.c: Likewise.
	* nsfs.c: Likewise.
	* print_sg_req_info.c: Likewise.
	* ptp.c: Likewise.
	* rtc.c: Likewise.
	* scsi.c: Likewise.
	* sg_io_v3.c: Likewise.
	* sg_io_v4.c: Likewise.
	* sock.c: Likewise.
	* term.c: Likewise.
	* ubi.c: Likewise.
	* userfaultfd.c: Likewise.
	* dm.c (dm_known_ioctl): Return RVAL_IOCTL_DECODED on exiting and 0
	on entering.  Replace RVAL_IOCTL_PARSED with RVAL_IOCTL_DECODED
	on exiting.
	* v4l2.c: Likewise.

2017-08-28  Eugene Syromyatnikov  <evgsyr@gmail.com>

	Replace return 1 ioctl sub-decoder hack with proper flag.
	* defs.h (RVAL_IOCTL_PARSED): Introduce new flag for ioctl sub-decoders
	* to signalise that they have successfully printed argument.
	* ioctl.c (SYS_FUNC(ioctl)): Check for RVAL_IOCTL_PARSED flag, remove
	un-set it before returning the value.
	* block.c: Use RVAL_IOCTL_PARSED instead of 1.
	* btrfs.c: Likewise.
	* dm.c: Likewise.
	* evdev.c: Likewise.
	* file_ioctl.c: Likewise.
	* fs_x_ioctl.c: Likewise.
	* hdio.c: Likewise.
	* loop.c: Likewise.
	* mtd.c: Likewise.
	* nsfs.c: Likewise.
	* print_sg_req_info.c: Likewise.
	* ptp.c: Likewise.
	* rtc.c: Likewise.
	* scsi.c: Likewise.
	* sg_io_v3.c: Likewise.
	* sg_io_v4.c: Likewise.
	* sock.c: Likewise.
	* term.c: Likewise.
	* ubi.c: Likewise.
	* userfaultfd.c: Likewise.
	* v4l2.c: Likewise.

2017-08-28  Eugene Syromyatnikov  <evgsyr@gmail.com>

	v4l2: streamline logic.
	Move exiting path out of if (entering(tcp)) { ... return 0; } else,
	provide common exit point in v4l2_ioctl handler, use break instead of
	return in specific command handlers.

	* v4l2.c (print_v4l2_format, print_v4l2_buffer, print_v4l2_standard,
	print_v4l2_input, print_v4l2_frmivalenum): Move exiting path out of else
	par of the entering(tcp) condition.
	(v4l2_ioctl): Add return RVAL_DECODED | 1 at the end of function.
	(v4l2_ioctl) <case VIDIOC_S_STD, case VIDIOC_S_INPUT>: Replace return
	with break.

2017-08-28  Eugene Syromyatnikov  <evgsyr@gmail.com>

	v4l2: reorder field printing in order to avoid auxstr usage.
	Also rework flow a little in order to reduce amount of indentation.

	* v4l2.c (print_v4l2_requestbuffers): Print count as the last field on
	entering, append it with updated value on exiting.
	* tests/ioctl_v4l2.c: Update expected output.

2017-08-28  Eugene Syromyatnikov  <evgsyr@gmail.com>

	userfaultfd: streamline logic.
	Make userfaultfd ioctl handling more in line with other ioctl decoders.

	* userfaultfd.c (uffdio_ioctl): Return RVAL_DECODED | 1, break instead
	of returning in specific command handlers, return 0 on entering paths,
	move exiting paths out of else branch of entering(tcp) condition.

2017-08-28  Eugene Syromyatnikov  <evgsyr@gmail.com>

	Do not return RVAL_DECODED on exiting path of ioctl decoders.
	* print_sg_req_info.c (decode_sg_req_info): Return 1 instead of
	RVAL_DECODED | 1 on exiting path.
	* scsi.c (decode_sg_scsi_id): Likewise.
	* sg_io_v3.c (decode_response): Likewise.
	* sg_io_v4.c (decode_response): Likewise.

2017-08-28  Eugene Syromyatnikov  <evgsyr@gmail.com>

	dm: return RVAL_DECODED instead of 0 if we can't decode command.
	Return RVAL_DECODED if we can't decode command in order to avoid being
	called on exiting.

	* dm.c (dm_ioctl): Return RVAL_DECODED instead of 0 if command can't be
	decoded.

2017-08-28  Eugene Syromyatnikov  <evgsyr@gmail.com>
	    Dmitry V. Levin  <ldv@altlinux.org>

	Return 0 instead of 1 on entering path of ioctl decoders.
	As returning 1 (without RVAL_DECODED) on entering makes no sense.

	* block.c (block_ioctl) <case BLKTRACESETUP>: Replace return 1 with
	return 0 on entering path.
	* ptp.c (ptp_ioctl) <case PTP_SYS_OFFSET>: Likewise.
	* sg_io_v3.c (decode_request): Likewise.
	* sg_io_v4.c (decode_request): Likewise.
	* sock.c (decode)ifconf, sock_ioctl) <case SIOCGIFMAP>: Likewise.
	* ubi.c (ubi_ioctl) <case UBI_IOCMKVOL, case UBI_IOCATT>: Likewise.
	* v4l2.c (print_v4l2_ext_controls): Likewise.

2017-08-28  Eugene Syromyatnikov  <evgsyr@gmail.com>

	ioctl: simplify ioctl_decode handling, document its return value semantics
	* ioctl.s (SYS_FUNC(ioctl.c)): Unconditionally unset 1, simply print arg
	when (ret & RVAL_DECODED) && !(ret & 1).

2017-08-28  Eugene Syromyatnikov  <evgsyr@gmail.com>
	    Dmitry V. Levin  <ldv@altlinux.org>

	syscall.c: define personality names for all multi-personality architectures
	I see no reason for not having these definitions for SPARC64 and RISC-V.
	Also, borrow the check template from supported_personalities.h.

	* syscall.c (update_personality) [defined RISCV, defined SPARC64]
	<PERSONALITY_NAMES>: Define it for these architectures.

2017-08-28  Eugene Syromyatnikov  <evgsyr@gmail.com>

	copyright-year-gen: workaround for old git versions.
	Apply the same treatment to this script as the one in
	v4.18-278-g295cf32.

	* copyright-year-gen <year>: Change format to format:%cD, remove --date,
	supply output as a -d option argument to date +%Y.

2017-08-27  Eugene Syromyatnikov  <evgsyr@gmail.com>

	ubi: trim overly long lines.

	term: use print_quoted_string.
	* term.c (decode_termios): Use print_quoted_string for printing c_cc field
	instead of writing the printing code by hand.

2017-08-27  Eugene Syromyatnikov  <evgsyr@gmail.com>

	update_copyright_years.sh: workaround for old git versions.
	Old git versions (like the one shipped in Debian 8) do not support setting
	date format with --date, working this around by processing git log output
	with date +%Y.

	* main/update_copyright_years.sh (process_file) <first_commit_year,
	last_commit_year>: Change format to format:%aD, remove --date, supply
	output as a -d option argument to date +%Y.

2017-08-27  Eugene Syromyatnikov  <evgsyr@gmail.com>

	syscall: use spaces in tile personality names, de-duplicate definition.
	As Chris Metcalf, the author of v4.7-40-g0b99a8a, told in private, there
	is no strong reason for having tile's personality name different from
	personality names on other architectures, so let's use spaces instead of
	dashes here. And, while we are here, remove duplication of personality
	name definitions for various architectures.

	* syscall.c (update_personality) [defined TILE]: Change dashes to spaces
	in personality names.

2017-08-26  JingPiao Chen  <chenjingpiao@gmail.com>
	    Dmitry V. Levin  <ldv@altlinux.org>

	tests: check decoding of rtmsg netlink attributes.
	* tests/nlattr_rtmsg.c: Include <netinet/in.h> and <arpa/inet.h>.
	(LWTUNNEL_ENCAP_NONE, RTA_ENCAP_TYPE): New macros.
	(main): Check decoding of RTA_DST, RTA_OIF, RTA_METRICS, RTA_MULTIPATH,
	RTA_CACHEINFO, RTA_MFC_STATS, RTA_VIA, and RTA_ENCAP_TYPE.

	rtnl_route: decode rtmsg netlink attributes.
	* configure.ac (AC_CHECK_TYPES): Check for
	rta_mfc_stats and rtvia structures in <linux/rtnetlink.h>.
	* nlattr.c (decode_nla_ifindex): New function.
	* nlattr.h (decode_nla_ifindex): New prototype.
	* rtnl_route.c (decode_route_addr, decode_rta_metrics,
	decode_rta_multipath, decode_rta_cacheinfo,
	decode_rta_mfc_stats, decode_rtvia,
	decode_rta_encap_type): New functions.
	(rta_metrics_nla_decoders, rtmsg_nla_decoders): New arrays.
	(decode_rtmsg): Use rtmsg_nla_decoders.
	* xlat/lwtunnel_encap_types.in: New file.
	* xlat/route_nexthop_flags.in: Likewise.
	* xlat/rtnl_rta_metrics_attrs.in: Likewise.

2017-08-25  Dmitry V. Levin  <ldv@altlinux.org>

	s390: wire up s390_guarded_storage syscall.
	* linux/s390/syscallent.h [378]: Add s390_guarded_storage entry.
	* linux/s390x/syscallent.h: Likewise.

	microblaze: wire up statx syscall.
	* linux/microblaze/syscallent.h [398]: Add statx entry.

2017-08-24  Dmitry V. Levin  <ldv@altlinux.org>

	alloc_number_set_array: add ATTRIBUTE_MALLOC.
	* number_set.h: Include "gcc_compat.h".
	(alloc_number_set_array): Add ATTRIBUTE_MALLOC.

2017-08-24  Nikolay Marchuk  <marchuk.nikolay.a@gmail.com>

	Add macros for testing QUAL_* flags.
	* defs.h (traced, raw, inject): Add macros for testing QUAL_TRACE,
	QUAL_RAW, and QUAL_INJECT flags.
	* syscall.c (syscall_entering_trace, syscall_exiting_trace): Use them.

2017-08-24  Dmitry V. Levin  <ldv@altlinux.org>

	Remove QUAL_SIGNAL, QUAL_READ and QUAL_WRITE.
	Remove these flags that are unused since commit v4.15~26.
	They might be introduced later with a different meaning.

	* defs.h (QUAL_SIGNAL, QUAL_READ, QUAL_WRITE): Remove.

2017-08-24  Eugene Syromiatnikov  <evgsyr@gmail.com>

	xstrdup, xtrndup: allow NULL argument.
	Accept NULL argument in xstrdup and xtrndup functions to allow use
	of "xstrdup(str)" instead of "str ? xstrdup(str) : NULL".

	* xmalloc.c (xstrdup, xstrndup): Handle NULL argument.
	* xmalloc.h: Add comment regarding this deviation from the behaviour
	of the POSIX counterparts of these functions.

2017-08-23  Dmitry V. Levin  <ldv@altlinux.org>

	tests: really skip mips o32 scno tampering tests on mips n64.
	* tests/is_linux_mips_n64.c: New file.
	* tests/Makefile.am (check_PROGRAMS): Add it.
	* tests/scno_tampering.sh <$STRACE_ARCH == mips>:
	In case of mips o32 abi, skip the test if is_linux_mips_n64 says
	that the kernel is mips n64, even if "uname -m" claims it's mips.

2017-08-22  Dmitry V. Levin  <ldv@altlinux.org>

	Hide struct number_set implementation details from users.
	* number_set.h (number_slot_t, struct number_set): Move to number_set.c.
	(struct number_set): Add forward declaration.
	(read_set, write_set, signal_set): Change prototypes from objects
	to pointers.
	* filter_qualify.c (read_set, write_set, signal_set): Change definitions
	from objects to pointers.
	(abbrev_set, inject_set, raw_set, trace_set, verbose_set): Change
	definitions from arrays to pointers.
	(qualify_read): Initialize read_set before first use.
	(qualify_write): Initialize write_set before first use.
	(qualify_signals): Initialize signal_set before first use.
	(qualify_trace): Initialize trace_set before first use.
	(qualify_abbrev): Initialize abbrev_set before first use.
	(qualify_verbose): Initialize verbose_set before first use.
	(qualify_raw): Initialize raw_set before first use.
	(qualify_inject_common): Initialize inject_set before first use.
	* strace.c (print_signalled, print_stopped): Update signal_set usage.
	* syscall.c (dumpio): Update usage of read_set and write_set.

	Extend number_set interface.
	* number_set.h (number_set_array_is_empty, is_number_in_set_array,
	add_number_to_set_array, clear_number_set_array,
	invert_number_set_array, alloc_number_set_array, free_number_set_array):
	New function prototypes.
	* number_set.c (number_set_array_is_empty, is_number_in_set_array,
	add_number_to_set_array, clear_number_set_array,
	invert_number_set_array, alloc_number_set_array, free_number_set_array):
	New functions.
	* basic_filters.c (qualify_syscall_number, qualify_syscall_regex,
	qualify_syscall_class, qualify_syscall_name): Use
	add_number_to_set_array.
	(qualify_syscall_tokens, qualify_tokens): Use
	clear_number_set_array and invert_number_set_array.
	* filter_qualify.c (qualify_inject_common): Use alloc_number_set_array,
	number_set_array_is_empty, is_number_in_set_array,
	add_number_to_set_array, and free_number_set_array.
	(qual_flags): Use is_number_in_set_array.

	Move number_set interface to separate files.
	* number_set.c: New file.
	* number_set.h: Likewise.
	* Makefile.am (strace_SOURCES): Add them.
	* basic_filters.c: Include "number_set.h".
	(number_slot_t, struct number_set): Move to number_set.h.
	(BITS_PER_SLOT, number_setbit, number_isset, reallocate_number_set,
	add_number_to_set, is_number_in_set): Move to number_set.c.
	* defs.h (struct number_set): Remove forward declaration.
	(read_set, write_set, signal_set, is_number_in_set): Move to number_set.h.
	* filter.h (add_number_to_set): Move to number_set.h.
	* filter_qualify.c: Include "number_set.h".
	(number_slot_t, struct number_set): Remove.
	* strace.c: Include "number_set.h".
	* syscall.c: Likewise.

2017-08-22  Edgar Kaziakhmedov  <edgar.kaziakhmedov@virtuozzo.com>

	Move SUPPORTED_PERSONALITIES to a separate file.
	Since the defs.h contains unrelated declarations which are
	redundant (and sometimes conflicting) for other binaries included
	in the strace package, move SUPPORTED_PERSONALITIES defintions
	to a separate file.

	* defs.h: Include "supported_personalities.h".
	(SUPPORTED_PERSONALITIES): Move ...
	* supported_personalities.h: ... to the new file.
	* Makefile.am (strace_SOURCES): Add it.

2017-08-22  Edgar Kaziakhmedov  <edgar.kaziakhmedov@virtuozzo.com>

	Move string_to_uint* functions to a separate file.
	Make string_to_uint* functions available to other binaries
	included in the strace package.

	* string_to_uint.h: New file.
	* defs.h: Include it.
	(string_to_uint_ex, string_to_uint_upto, string_to_uint): Move
	to string_to_uint.h.
	* util.c (string_to_uint_ex, string_to_uint): Move ...
	* string_to_uint.c: ... to the new file.
	* Makefile.am (strace_SOURCES): Add string_to_uint.h and string_to_uint.c.

2017-08-22  JingPiao Chen  <chenjingpiao@gmail.com>

	tests: check decoding of ifaddrmsg netlink attributes.
	* tests/nlattr_ifaddrmsg.c: Include <arpa/inet.h>.
	(IFA_FLAGS, SET_IFA_FAMILY): New macros.
	(init_ifaddrmsg): Set ifaddrmsg.ifa_family field from ifa_family.
	(print_ifaddrmsg): Print ifaddrmsg.ifa_family field using ifa_family_str.
	(main): Check decoding of IFA_ADDRESS, IFA_CACHEINFO, and IFA_FLAGS.

	rtnl_addr: decode ifaddrmsg netlink attributes.
	* rtnl_addr.c (decode_ifa_address,
	decode_ifa_cacheinfo, decode_ifa_flags): New functions.
	(ifaddrmsg_nla_decoders): New array.
	(decode_ifaddrmsg): Use it.

2017-08-22  Dmitry V. Levin  <ldv@altlinux.org>

	Export decode_inet_addr.
	* defs.h (decode_inet_addr): New prototype.
	* netlink_inet_diag.c (decode_inet_addr): Remove static keyword, move ...
	* sockaddr.c: ... here.

	netlink_inet_diag: prepare decode_inet_addr for export.
	* netlink_inet_diag.c (decode_inet_addr): Change return type to bool,
	parametrize field name using new var_name argument.
	(decode_inet_diag_hostcond): Specify "addr" field name
	to decode_inet_addr.

2017-08-20  Dmitry V. Levin  <ldv@altlinux.org>

	print_inet_addr: add support of invocations without field name.
	Prepare print_inet_addr for use in structureless contexts where
	no structure field name is available.

	* sockaddr.c (print_inet_addr): Handle var_name == NULL.

2017-08-19  Dmitry V. Levin  <ldv@altlinux.org>

	print_inet_addr: print address of unsupported family in hex.
	* sockaddr.c (print_inet_addr): Specify QUOTE_FORCE_HEX
	to print_quoted_string.

2017-08-18  Dmitry V. Levin  <ldv@altlinux.org>

	mips o32: do not bail out in get_syscall_args if umoven fails.
	If the kernel contains commit 84d77d3f06e7e8dea057d10e8ec77ad71f721be3,
	both PTRACE_PEEKDATA and process_vm_readv become unavailable when the
	process dumpable flag is cleared.  As the first 4 syscall arguments are
	still available via registers, do not treat this as get_syscall_args
	error.

	This condition is triggered and therefore tested by prctl-dumpable test.

	* linux/mips/get_syscall_args.c (get_syscall_args) [LINUX_MIPSO32]:
	Do not bail out if umoven fails.

2017-08-17  Dmitry V. Levin  <ldv@altlinux.org>

	configure: cleanup struct statfs/statfs64 member checks.
	* configure.ac <AC_CHECK_TYPES([struct statfs])>: Merge several
	AC_CHECK_MEMBERS checks of struct statfs members into a single check.
	<AC_CHECK_TYPES([struct statfs64])>: Likewise, for checks
	of struct statfs64 members.

2017-08-16  Dmitry V. Levin  <ldv@altlinux.org>

	tests: fix a few harmless -Woverflow compilation warnings.
	Fix the following compilation warnings on platforms where
	sizeof(struct timeval.tv_usec) < sizeof(long):

	xettimeofday.c: In function ‘main’:
	xettimeofday.c:76:16: warning: overflow in implicit constant conversion [-Woverflow]
	  tv->tv_usec = (long) 0xbadc0dedfacefeedLL;
	xetitimer.c: In function ‘main’:
	xetitimer.c:170:28: warning: overflow in implicit constant conversion [-Woverflow]
	  p_new->it_value.tv_usec = (long) 0xbadc0dedfacefeedLL;
	In file included from utimes.c:38:0:
	xutimes.c: In function ‘main’:
	xutimes.c:110:18: warning: overflow in implicit constant conversion [-Woverflow]
	  tv[1].tv_usec = (long) 0xbadc0dedfacefeedLL;
	futimesat.c: In function ‘main’:
	futimesat.c:121:18: warning: overflow in implicit constant conversion [-Woverflow]
	  tv[1].tv_usec = (long) 0xbadc0dedfacefeedLL;
	In file included from _newselect.c:35:0:
	xselect.c: In function ‘main’:
	xselect.c:94:16: warning: overflow in implicit constant conversion [-Woverflow]
	  tv->tv_usec = (long) 0xbadc0dedfacefeedLL;
	                ^
	* tests/futimesat.c (main): In initialization of struct timeval.tv_usec,
	change explicit cast from (long) to (suseconds_t).
	* tests/xetitimer.c: Likewise.
	* tests/xettimeofday.c: Likewise.
	* tests/xselect.c: Likewise.
	* tests/xutimes.c: Likewise.

	Reported-by: Anatoly Pugachev <matorola@gmail.com>

2017-08-16  Dmitry V. Levin  <ldv@altlinux.org>

	tests: fix sigaction.test on sparc.
	On sparc, the first argument of old sigaction syscall has negated
	semantics, compared to other architectures.  While sigaction.test
	was aware about this arch-specific detail from the beginning, in one
	of many sigaction syscall invocations a non-negative signal number
	was erroneously passed on sparc.

	* tests/sigaction.c (ADDR_INT, SIGNO_INT): New arch-specific macros.
	(signo, addr): Use them.

2017-08-16  Dmitry V. Levin  <ldv@altlinux.org>

	nlattr: fix printing of unrecognized attribute data.
	Do not print more than "nlattr.nla_len - NLA_HDRLEN" bytes
	of unrecognized attribute data.

	* nlattr.c (decode_nlattr_with_data): Specify "nla_len - NLA_HDRLEN"
	instead of "len - NLA_HDRLEN" as the size of unrecognized attribute
	data.
	* tests/nlattr.c (test_nlattr): Check it.

2017-08-15  JingPiao Chen  <chenjingpiao@gmail.com>

	tests: check decoding of NETLINK_ROUTE rtgenmsg attributes.
	* tests/nlattr_rtgenmsg.c: New file.
	* tests/gen_tests.in (nlattr_rtgenmsg): New entry.
	* tests/pure_executables.list: Add nlattr_rtgenmsg.
	* tests/.gitignore: Likewise.

2017-08-15  JingPiao Chen  <chenjingpiao@gmail.com>
	    Fabien Siron  <fabien.siron@epita.fr>

	netlink: add basic decoding of NETLINK_ROUTE rtgenmsg attributes.
	* rtnl_nsid.c: Include "nlattr.h" and "xlat/rtnl_nsid_attrs.h".
	(decode_rtgenmsg): Call decode_nlattr.
	* xlat/rtnl_nsid_attrs.in: New file.

2017-08-15  JingPiao Chen  <chenjingpiao@gmail.com>

	tests: check decoding of NETLINK_ROUTE br_port_msg attributes.
	* tests/nlattr_br_port_msg.c: New file.
	* tests/gen_tests.in (nlattr_br_port_msg): New entry.
	* tests/pure_executables.list: Add nlattr_br_port_msg.
	* tests/.gitignore: Likewise.

2017-08-15  JingPiao Chen  <chenjingpiao@gmail.com>
	    Fabien Siron  <fabien.siron@epita.fr>

	netlink: add basic decoding of NETLINK_ROUTE br_port_msg attributes.
	* rtnl_mdb.c: Include "netlink.h", "nlattr.h".
	and "xlat/rtnl_mdb_attrs.h".
	(decode_br_port_msg): Call decode_nlattr.
	* xlat/rtnl_mdb_attrs.in: New file.

2017-08-15  JingPiao Chen  <chenjingpiao@gmail.com>

	tests: check decoding of NETLINK_ROUTE netconfmsg attributes.
	* tests/nlattr_netconfmsg.c: New file.
	* tests/gen_tests.in (nlattr_netconfmsg): New entry.
	* tests/pure_executables.list: Add nlattr_netconfmsg.
	* tests/.gitignore: Likewise.

2017-08-15  JingPiao Chen  <chenjingpiao@gmail.com>
	    Fabien Siron  <fabien.siron@epita.fr>

	netlink: add basic decoding of NETLINK_ROUTE netconfmsg attributes.
	* rtnl_netconf.c: Include "netlink.h", "nlattr.h",
	and "xlat/rtnl_netconf_attrs.h".
	(decode_netconfmsg): Call decode_nlattr.
	* xlat/rtnl_netconf_attrs.in: New file.

2017-08-15  JingPiao Chen  <chenjingpiao@gmail.com>

	tests: check decoding of NETLINK_ROUTE dcbmsg attributes.
	* tests/nlattr_dcbmsg.c: New file.
	* tests/gen_tests.in (nlattr_dcbmsg): New entry.
	* tests/pure_executables.list: Add nlattr_dcbmsg.
	* tests/.gitignore: Likewise.

2017-08-15  JingPiao Chen  <chenjingpiao@gmail.com>
	    Fabien Siron  <fabien.siron@epita.fr>

	netlink: add basic decoding of NETLINK_ROUTE dcbmsg attributes.
	* rtnl_dcb.c: Include "netlink.h", "nlattr.h",
	and "xlat/rtnl_dcb_attrs.h".
	(decode_dcbmsg): Call decode_nlattr.
	* xlat/rtnl_dcb_attrs.in: New file.

2017-08-15  JingPiao Chen  <chenjingpiao@gmail.com>

	tests: check decoding of NETLINK_ROUTE ifaddrlblmsg attributes.
	* tests/nlattr_ifaddrlblmsg.c: New file.
	* tests/gen_tests.in (nlattr_ifaddrlblmsg): New entry.
	* tests/pure_executables.list: Add nlattr_ifaddrlblmsg.
	* tests/.gitignore: Likewise.

2017-08-15  JingPiao Chen  <chenjingpiao@gmail.com>
	    Fabien Siron  <fabien.siron@epita.fr>

	netlink: add basic decoding of NETLINK_ROUTE ifaddrlblmsg attributes.
	* rtnl_addrlabel.c: Include "netlink.h", "nlattr.h",
	and "xlat/rtnl_addrlabel_attrs.h".
	(decode_ifaddrlblmsg): Call decode_nlattr.
	* xlat/rtnl_addrlabel_attrs.in: New file.

2017-08-15  JingPiao Chen  <chenjingpiao@gmail.com>

	tests: check decoding of NETLINK_ROUTE tcamsg attributes.
	* tests/nlattr_tcamsg.c: New file.
	* tests/gen_tests.in (nlattr_tcamsg): New entry.
	* tests/pure_executables.list: Add nlattr_tcamsg.
	* tests/.gitignore: Likewise.

2017-08-15  JingPiao Chen  <chenjingpiao@gmail.com>
	    Fabien Siron  <fabien.siron@epita.fr>

	netlink: add basic decoding of NETLINK_ROUTE tcamsg attributes.
	* rtnl_tc_action.c: Include "nlattr.h" and "xlat/rtnl_tc_action_attrs.h".
	(decode_tcamsg): Call decode_nlattr.
	* xlat/rtnl_tc_action_attrs.in: New file.

2017-08-15  JingPiao Chen  <chenjingpiao@gmail.com>

	tests: check decoding of NETLINK_ROUTE tcmsg attributes.
	* tests/nlattr_tcmsg.c: New file.
	* tests/gen_tests.in (nlattr_tcmsg): New entry.
	* tests/pure_executables.list: Add nlattr_tcmsg.
	* tests/.gitignore: Likewise.

2017-08-15  JingPiao Chen  <chenjingpiao@gmail.com>
	    Fabien Siron  <fabien.siron@epita.fr>

	netlink: add basic decoding of NETLINK_ROUTE tcmsg attributes.
	* rtnl_tc.c: Include "nlattr.h" and "xlat/rtnl_tc_attrs.h".
	(decode_tcmsg): Call decode_nlattr.
	* xlat/rtnl_tc_attrs.in: New file.

2017-08-15  JingPiao Chen  <chenjingpiao@gmail.com>

	tests: check decoding of NETLINK_ROUTE ndtmsg attributes.
	* tests/nlattr_ndtmsg.c: New file.
	* tests/gen_tests.in (nlattr_ndtmsg): New entry.
	* tests/pure_executables.list: Add nlattr_ndtmsg.
	* tests/.gitignore: Likewise.

2017-08-15  JingPiao Chen  <chenjingpiao@gmail.com>
	    Fabien Siron  <fabien.siron@epita.fr>

	netlink: add basic decoding of NETLINK_ROUTE ndtmsg attributes.
	* rtnl_neightbl.c: Include "nlattr.h" and "xlat/rtnl_neightbl_attrs.h".
	(decode_ndtmsg): Call decode_nlattr.
	* xlat/rtnl_neightbl_attrs.in: New file.

2017-08-15  JingPiao Chen  <chenjingpiao@gmail.com>

	tests: check decoding of NETLINK_ROUTE ndmsg attributes.
	* tests/nlattr_ndmsg.c: New file.
	* tests/gen_tests.in (nlattr_ndmsg): New entry.
	* tests/pure_executables.list: Add nlattr_ndmsg.
	* tests/.gitignore: Likewise.

2017-08-15  JingPiao Chen  <chenjingpiao@gmail.com>
	    Fabien Siron  <fabien.siron@epita.fr>

	netlink: add basic decoding of NETLINK_ROUTE ndmsg attributes.
	* rtnl_neigh.c: Include "nlattr.h" and "xlat/rtnl_neigh_attrs.h".
	(decode_ndmsg): Call decode_nlattr.
	* xlat/rtnl_neigh_attrs.in: New file.

2017-08-15  JingPiao Chen  <chenjingpiao@gmail.com>

	tests: check decoding of NETLINK_ROUTE fib_rule_hdr attributes.
	* tests/nlattr_fib_rule_hdr.c: New file.
	* tests/gen_tests.in (nlattr_fib_rule_hdr): New entry.
	* tests/pure_executables.list: Add nlattr_fib_rule_hdr.
	* tests/.gitignore: Likewise.

2017-08-15  JingPiao Chen  <chenjingpiao@gmail.com>
	    Fabien Siron  <fabien.siron@epita.fr>

	netlink: add basic decoding of NETLINK_ROUTE fib_rule_hdr attributes.
	* rtnl_rule.c: Include "nlattr.h" and "xlat/rtnl_rule_attrs.h".
	(decode_fib_rule_hdr): Call decode_nlattr.
	* xlat/rtnl_rule_attrs.in: New file.

2017-08-15  JingPiao Chen  <chenjingpiao@gmail.com>

	tests: check decoding of NETLINK_ROUTE rtmsg attributes.
	* tests/nlattr_rtmsg.c: New file.
	* tests/gen_tests.in (nlattr_rtmsg): New entry.
	* tests/pure_executables.list: Add nlattr_rtmsg.
	* tests/.gitignore: Likewise.

2017-08-15  JingPiao Chen  <chenjingpiao@gmail.com>
	    Fabien Siron  <fabien.siron@epita.fr>

	netlink: add basic decoding of NETLINK_ROUTE rtmsg attributes.
	* rtnl_route.c: Include "nlattr.h" and "xlat/rtnl_route_attrs.h".
	(decode_rtmsg): Call decode_nlattr.
	* xlat/rtnl_route_attrs.in: New file.

