]> granicus.if.org Git - strace/log
strace
6 years agotests: check decoding of successful evdev ioctl
Zhibin Li [Wed, 1 Aug 2018 09:54:35 +0000 (17:54 +0800)]
tests: check decoding of successful evdev ioctl

* tests/ioctl_evdev-success.c: New file.
* tests/ioctl_evdev-success-v.c: Likewise.
* tests/ioctl_evdev-success.test: New test.
* tests/ioctl_evdev-success-v.test: Likewise.
* tests/.gitignore: Add ioctl_evdev-success and ioctl_evdev-success-v.
* tests/Makefile.am (check_PROGRAMS): Likewise.
(DECODER_TESTS): Add the two tests mentioned above.

6 years agoevdev: fix decoding of EVIOCGBIT(0, ...)
Zhibin Li [Wed, 1 Aug 2018 09:53:57 +0000 (17:53 +0800)]
evdev: fix decoding of EVIOCGBIT(0, ...)

There is a comment in drivers/input/evdev.c which says:
/* EV_SYN==0 is EV_CNT, _not_ SYN_CNT, see EVIOCGBIT */

That is, EVIOCGBIT(0, ...) should return a bit mask with supported
event types instead of SYN_* event codes.

* defs.h (evdev_ev): New prototype.
* evdev.c: Include "xlat/evdev_ev.h" and remove "xlat/evdev_sync.h".
(bit_ioctl) <case EV_SYN>: Replace EV_SYN with 0, use evdev_ev
with XT_SORTED in decode_bitset invocation instead.
* ioctl.c: Do not include "xlat/evdev_ev.h".
(evdev_decode_number): Print nr == 0x20 as "0" instead of "EV_SYN".
* tests/ioctl_evdev.c (main): Use 0 instead of EV_SYN in EVIOCGBIT
output.
* xlat/evdev_sync.in: Remove.

Co-Authored-by: Dmitry V. Levin <ldv@altlinux.org>
Fixes: v4.10~89 "Add decoding for evdev ioctls"
6 years agoevdev: fix decoding of bit sets
Zhibin Li [Wed, 1 Aug 2018 09:53:57 +0000 (17:53 +0800)]
evdev: fix decoding of bit sets

According to drivers/input/evdev.c:bits_to_user(),
the Linux kernel returns the number of bytes, not bits.

* evdev.c (decode_bitset_): Treat syscall return value as the number
of bytes.

Co-Authored-by: Dmitry V. Levin <ldv@altlinux.org>
Fixes: v4.10~89 "Add decoding for evdev ioctls"
6 years agokvm: decode the argument of KVM_CHECK_EXTENSION
Pierre Marsais [Thu, 16 Aug 2018 19:04:41 +0000 (20:04 +0100)]
kvm: decode the argument of KVM_CHECK_EXTENSION

xlat/kvm_cap.in has been generated using the following command line:

grep '#define\s\+KVM_CAP' $linux/include/uapi/linux/kvm.h |
sed -E -e 's/^#define\s+([^ \t]+)\s*([0-9]+).*$/printf "%-40s%s\n" \1 \2/e' \
       -e 's/ {8}/\t/g; s/ +/\t/g'

* xlat/kvm_cap.in: New file.
* kvm.c: Include "xlat/kvm_cap.h".
(kvm_ioctl_decode_check_extension): New function.
(kvm_ioctl): Use it.
* tests/ioctl_kvm_run_common.c (main): Check decoding
of KVM_CHECK_EXTENSION command.

Signed-off-by: Pierre Marsais <pierre.marsais@lse.epita.fr>
6 years agoxlat: update V4L2_CID_USER_*_BASE constants
Dmitry V. Levin [Sat, 18 Aug 2018 07:22:47 +0000 (07:22 +0000)]
xlat: update V4L2_CID_USER_*_BASE constants

* xlat/v4l2_control_id_bases.in (V4L2_CID_USER_S2255_BASE,
V4L2_CID_USER_SI476X_BASE, V4L2_CID_USER_SAA7134_BASE,
V4L2_CID_USER_ADV7180_BASE, V4L2_CID_USER_TC358743_BASE,
V4L2_CID_USER_MAX217X_BASE): New constants.

6 years agoxlat: workaround V4L2_CID_USER_IMX_BASE Linux kernel ABI breakage
Dmitry V. Levin [Sat, 18 Aug 2018 07:22:47 +0000 (07:22 +0000)]
xlat: workaround V4L2_CID_USER_IMX_BASE Linux kernel ABI breakage

Linux kernel commit v4.18-rc2-106-g421860b9d47053badce4b247576fa48df9ab4c48
has changed the value of V4L2_CID_USER_IMX_BASE constant introduced
by commit v4.13-rc1~141^2~121 because the old value was already used
by V4L2_CID_USER_MAX217X_BASE.

This is of course an ABI breakage that affects Linux kernels starting
with 4.13 and up to 4.18, as well as their LTS derivatives.

Since the imx driver didn't provide any public control ID definitions,
it looks like the best way to handle this situation is to pretend that
the old value of V4L2_CID_USER_IMX_BASE didn't exist.

* xlat/v4l2_control_id_bases.in (V4L2_CID_USER_IMX_BASE): Redefine.

Co-Authored-by: Eugene Syromyatnikov <evgsyr@gmail.com>
6 years agoPost-release administrivia
Dmitry V. Levin [Tue, 14 Aug 2018 10:11:12 +0000 (10:11 +0000)]
Post-release administrivia

* NEWS: Add a header line for the next release.
* debian/changelog.in: Add a changelog entry for 4.24-1.
* strace.spec.in: Likewise.

6 years agoPrepare for 4.24 release v4.24
Dmitry V. Levin [Tue, 14 Aug 2018 00:01:02 +0000 (00:01 +0000)]
Prepare for 4.24 release

* NEWS: Update for 4.24 release.

6 years agoUpdate copyright headers
Dmitry V. Levin [Sun, 12 Aug 2018 22:22:32 +0000 (22:22 +0000)]
Update copyright headers

Headers updated automatically using maint/update_copyright_years.sh
script.

6 years agoUpdate ioctl entries from linux v4.18
Gleb Fotengauer-Malinovskiy [Fri, 10 Aug 2018 16:07:34 +0000 (19:07 +0300)]
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.

6 years agomaint: update for linux v4.18
Gleb Fotengauer-Malinovskiy [Fri, 10 Aug 2018 16:06:38 +0000 (19:06 +0300)]
maint: update for linux v4.18

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

6 years agoReplace BTRFS_IOC_[GS]ET_FSLABEL with FS_IOC_[GS]ETFSLABEL
Dmitry V. Levin [Sun, 12 Aug 2018 09:50:33 +0000 (09:50 +0000)]
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.

6 years agoopen.c: use __O_TMPFILE
Eugene Syromyatnikov [Tue, 31 Jul 2018 12:21:32 +0000 (14:21 +0200)]
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.

6 years agoxlat: regenerate sock_options.in
Dmitry V. Levin [Sun, 5 Aug 2018 18:57:25 +0000 (18:57 +0000)]
xlat: regenerate sock_options.in

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

6 years agoxlat: add fallback definitions to open_mode_flags
Dmitry V. Levin [Sun, 5 Aug 2018 18:57:25 +0000 (18:57 +0000)]
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>
6 years agoxlat: remove non-Linux flags from open_mode_flags
Eugene Syromyatnikov [Wed, 20 Jun 2018 16:57:07 +0000 (18:57 +0200)]
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>
6 years agoxlat: add fallback definitions to madvise_cmds
Dmitry V. Levin [Sun, 5 Aug 2018 18:57:25 +0000 (18:57 +0000)]
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>
6 years agoxlat: add fallback definitions to mmap_flags
Dmitry V. Levin [Sun, 5 Aug 2018 18:57:25 +0000 (18:57 +0000)]
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>
6 years agomaint: add a Linux UAPI headers crawler
Eugene Syromyatnikov [Sun, 5 Aug 2018 14:26:15 +0000 (16:26 +0200)]
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>
6 years agostrace.spec.in: use $RPM_OPT_FLAGS when building auxiliary programs
Dmitry V. Levin [Sun, 5 Aug 2018 11:49:04 +0000 (11:49 +0000)]
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.

6 years agostrace.spec.in: compress changelog files
Dmitry V. Levin [Sun, 5 Aug 2018 11:49:04 +0000 (11:49 +0000)]
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.

6 years agostrace.spec.in: use a SUSE-specific group name for SUSE
Dmitry V. Levin [Sun, 5 Aug 2018 11:49:04 +0000 (11:49 +0000)]
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}.

6 years agostrace.spec.in: use a SUSE-specific license name for SUSE
Eugene Syromyatnikov [Mon, 11 Jun 2018 05:42:57 +0000 (07:42 +0200)]
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>
6 years agotests: allow any error code when trying to set time
Eugene Syromyatnikov [Sun, 5 Aug 2018 05:14:34 +0000 (07:14 +0200)]
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>
6 years agos390x: fix build with old kernel headers
Eugene Syromyatnikov [Sun, 5 Aug 2018 07:38:17 +0000 (09:38 +0200)]
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>
6 years agostrace.spec.in: minor updates here and there
Dmitry V. Levin [Sun, 5 Aug 2018 11:49:04 +0000 (11:49 +0000)]
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.

6 years agostrace.spec.in: remove strace64 subpackage
Dmitry V. Levin [Sun, 5 Aug 2018 11:49:04 +0000 (11:49 +0000)]
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.

6 years agoUpdate NEWS
Dmitry V. Levin [Sat, 4 Aug 2018 20:34:09 +0000 (20:34 +0000)]
Update NEWS

6 years agoUpdate NEWS
Dmitry V. Levin [Sat, 4 Aug 2018 11:45:20 +0000 (11:45 +0000)]
Update NEWS

6 years agortnl_route: decode new RTA_* attributes
Dmitry V. Levin [Sat, 4 Aug 2018 11:45:20 +0000 (11:45 +0000)]
rtnl_route: decode new RTA_* attributes

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

6 years agoxlat: update RTA_* constants
Dmitry V. Levin [Sat, 4 Aug 2018 11:45:20 +0000 (11:45 +0000)]
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.

6 years agortnl_link: decode new IFLA_BRPORT_* attributes
Dmitry V. Levin [Sat, 4 Aug 2018 11:45:20 +0000 (11:45 +0000)]
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.

6 years agoxlat: update IFLA_BRPORT_* constants
Dmitry V. Levin [Sat, 4 Aug 2018 11:45:20 +0000 (11:45 +0000)]
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.

6 years agoxlat: update IFA_* constants
Dmitry V. Levin [Sat, 4 Aug 2018 11:45:20 +0000 (11:45 +0000)]
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

6 years agoxlat: update RTPROT_* constants
Dmitry V. Levin [Sat, 4 Aug 2018 11:45:20 +0000 (11:45 +0000)]
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.

6 years agoxlat: save the script used to generate xlat/sock_options.in
Dmitry V. Levin [Wed, 1 Aug 2018 14:57:16 +0000 (14:57 +0000)]
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.

6 years agotests: check decoding of getsockopt(PACKET_STATISTICS)
Zhibin Li [Tue, 24 Jul 2018 08:59:16 +0000 (16:59 +0800)]
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.

6 years agotests: check decoding of setsockopt(PACKET_[R|T]X_RING)
Zhibin Li [Tue, 24 Jul 2018 08:59:15 +0000 (16:59 +0800)]
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.

6 years agotests: check decoding of setsockopt(PACKET_[ADD|DROP]_MEMBERSHIP)
Zhibin Li [Tue, 24 Jul 2018 08:59:14 +0000 (16:59 +0800)]
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.

6 years agotests: bring lists back to the sorted order
Dmitry V. Levin [Fri, 20 Jul 2018 16:18:17 +0000 (16:18 +0000)]
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.

6 years agotests: check decoding of successful quotactl
Zhibin Li [Wed, 18 Jul 2018 10:00:58 +0000 (18:00 +0800)]
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.

6 years agonet: enhance decoding of getsockopt(PACKET_STATISTICS)
Dmitry V. Levin [Wed, 18 Jul 2018 20:03:18 +0000 (20:03 +0000)]
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.

6 years agonet: compile SO_PEERCRED/SO_ATTACH_FILTER/SO_ATTACH_REUSEPORT_CBPF code unconditionally
Dmitry V. Levin [Wed, 18 Jul 2018 20:03:18 +0000 (20:03 +0000)]
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.

6 years agonet: enhance decoding of getsockopt(SO_PEERCRED)
Dmitry V. Levin [Tue, 17 Jul 2018 22:07:40 +0000 (22:07 +0000)]
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.

6 years agonet: enhance decoding of getsockopt(SO_LINGER)
Dmitry V. Levin [Mon, 16 Jul 2018 22:57:59 +0000 (22:57 +0000)]
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.

6 years agonet: generalize getsockopt length check
Dmitry V. Levin [Wed, 18 Jul 2018 19:25:52 +0000 (19:25 +0000)]
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.

6 years agotests: fix build with fresh glibc
Dmitry V. Levin [Sun, 15 Jul 2018 22:14:29 +0000 (22:14 +0000)]
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.

6 years agotests/quotactl.h: document check_quota
Eugene Syromyatnikov [Sun, 15 Jul 2018 04:44:07 +0000 (07:44 +0300)]
tests/quotactl.h: document check_quota

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

6 years agotests/quotactl-xfs.c: fix indentation
Zhibin Li [Thu, 12 Jul 2018 09:32:14 +0000 (17:32 +0800)]
tests/quotactl-xfs.c: fix indentation

6 years agotests: use check_quota for invalid quotactl commands
Zhibin Li [Thu, 12 Jul 2018 09:32:12 +0000 (17:32 +0800)]
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.

6 years agotests: enhance test coverage of quotactl syscall parser
Zhibin Li [Thu, 12 Jul 2018 09:32:11 +0000 (17:32 +0800)]
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.

6 years agotests/quotactl-xfs.c: fix typos in QCMD
Zhibin Li [Thu, 12 Jul 2018 09:32:10 +0000 (17:32 +0800)]
tests/quotactl-xfs.c: fix typos in QCMD

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

6 years agoMpersify decoder of struct xfs_dqstats
Zhibin Li [Thu, 12 Jul 2018 09:32:09 +0000 (17:32 +0800)]
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.

6 years agoquota: fix disorder of PRINT_FIELD invocations
Zhibin Li [Thu, 12 Jul 2018 09:32:08 +0000 (17:32 +0800)]
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.

6 years agotests: extend coverage for other fcntl flags
Zhibin Li [Thu, 12 Jul 2018 06:49:42 +0000 (14:49 +0800)]
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.

6 years agoImplement -e kvm= option on all architectures
Dmitry V. Levin [Wed, 11 Jul 2018 00:00:57 +0000 (00:00 +0000)]
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.

6 years agoxlat: update bpf(2)-related constants
Eugene Syromyatnikov [Mon, 25 Jun 2018 01:31:32 +0000 (03:31 +0200)]
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.

6 years agoWire up io_pgetevents and rseq on hppa, microblaze, mips, powerpc, and s390
Eugene Syromyatnikov [Mon, 25 Jun 2018 01:06:23 +0000 (03:06 +0200)]
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>
6 years agomaint: improve the tag message
Eugene Syromyatnikov [Fri, 22 Jun 2018 11:26:06 +0000 (13:26 +0200)]
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>
6 years agoUpgrade invalid -e kvm= argument to a fatal error
Dmitry V. Levin [Tue, 10 Jul 2018 16:10:38 +0000 (16:10 +0000)]
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.

6 years agoMention -e inject option in "strace -h" output
Dmitry V. Levin [Tue, 10 Jul 2018 16:10:38 +0000 (16:10 +0000)]
Mention -e inject option in "strace -h" output

* strace.c (usage): Mention inject argument of -e option.

6 years agotests: check decoding of vcpu auxstr
Masatake YAMATO [Sat, 7 Jul 2018 07:49:13 +0000 (16:49 +0900)]
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.

Signed-off-by: Masatake YAMATO <yamato@redhat.com>
Co-Authored-by: Dmitry V. Levin <ldv@altlinux.org>
6 years agostrace.1.in: document -e kvm=vcpu option
Masatake YAMATO [Sat, 7 Jul 2018 07:49:12 +0000 (16:49 +0900)]
strace.1.in: document -e kvm=vcpu option

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

Signed-off-by: Masatake YAMATO <yamato@redhat.com>
Co-Authored-by: Dmitry V. Levin <ldv@altlinux.org>
6 years agokvm: attach the exit reason of vcpu as auxstr to KVM_RUN output
Masatake YAMATO [Sat, 7 Jul 2018 07:49:11 +0000 (16:49 +0900)]
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.

Signed-off-by: Masatake YAMATO <yamato@redhat.com>
Co-Authored-by: Dmitry V. Levin <ldv@altlinux.org>
6 years agommap_cache: add customizable search function
Masatake YAMATO [Sat, 7 Jul 2018 07:49:10 +0000 (16:49 +0900)]
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.

Signed-off-by: Masatake YAMATO <yamato@redhat.com>
6 years agotests: check verbose decoding of kvm ioctl
Pierre Marsais [Thu, 28 Jun 2018 02:37:45 +0000 (03:37 +0100)]
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.

Signed-off-by: Pierre Marsais <pierre.marsais@lse.epita.fr>
6 years agotests: check decoding of kvm ioctls related to struct kvm_cpuid2
Pierre Marsais [Thu, 28 Jun 2018 02:37:44 +0000 (03:37 +0100)]
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.

Signed-off-by: Pierre Marsais <pierre.marsais@lse.epita.fr>
6 years agokvm: decode the argument of KVM_SET_CPUID2 and KVM_GET_*_CPUID ioctl commands
Pierre Marsais [Thu, 28 Jun 2018 02:37:43 +0000 (03:37 +0100)]
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.

Signed-off-by: Pierre Marsais <pierre.marsais@lse.epita.fr>
Co-Authored-by: Dmitry V. Levin <ldv@altlinux.org>
6 years agonet: fix a typo in print_tpacket_stats
Zhibin Li [Thu, 5 Jul 2018 14:43:25 +0000 (22:43 +0800)]
net: fix a typo in print_tpacket_stats

6 years agotests: fix race condition in aio.test
Dmitry V. Levin [Tue, 3 Jul 2018 16:51:49 +0000 (16:51 +0000)]
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.

6 years agoci: robustify network-related operations
Dmitry V. Levin [Tue, 3 Jul 2018 13:23:19 +0000 (13:23 +0000)]
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.

6 years ago.gitignore: ignore linux/linux
Zhibin Li [Wed, 27 Jun 2018 16:02:37 +0000 (00:02 +0800)]
.gitignore: ignore linux/linux

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

* .gitignore: Add /linux/linux.

6 years agoFix build on systems where libc relies on <linux/signal.h>
Dmitry V. Levin [Mon, 18 Jun 2018 22:59:38 +0000 (22:59 +0000)]
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
6 years agoxlat: add AUDIT_INTEGRITY_EVM_XATTR to nl_audit_types
Eugene Syromyatnikov [Mon, 18 Jun 2018 16:51:02 +0000 (18:51 +0200)]
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.

6 years agoxlat: add UDP_SEGMENT to sock_udp_options
Eugene Syromyatnikov [Mon, 18 Jun 2018 16:37:55 +0000 (18:37 +0200)]
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.

6 years agoRemove redundant range initializers in syscallent files
Dmitry V. Levin [Sun, 17 Jun 2018 23:02:51 +0000 (23:02 +0000)]
Remove redundant range initializers in syscallent files

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

6 years agox32: move rseq syscall entry to a suitable place
Chen Jingpiao [Sun, 17 Jun 2018 14:45:46 +0000 (22:45 +0800)]
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.

6 years agoaio: make iocb array output more strucutred
Eugene Syromyatnikov [Sun, 17 Jun 2018 21:34:37 +0000 (23:34 +0200)]
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.

6 years agoaio: print IOCB_CMD_* using xlat
Eugene Syromyatnikov [Sun, 17 Jun 2018 21:15:51 +0000 (23:15 +0200)]
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.

6 years agoxlat/sock_tcp_options.in: add #value_indexed
Eugene Syromyatnikov [Sun, 17 Jun 2018 21:35:38 +0000 (23:35 +0200)]
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.

6 years agoxlat/sock_tcp_options.in: update
Eugene Syromyatnikov [Sun, 17 Jun 2018 08:49:02 +0000 (10:49 +0200)]
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.

6 years agoxlat/sigtrap_codes.in: add TRAP_UNK
Eugene Syromyatnikov [Fri, 15 Jun 2018 13:35:37 +0000 (15:35 +0200)]
xlat/sigtrap_codes.in: add TRAP_UNK

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

6 years agoPost-release administrivia
Dmitry V. Levin [Fri, 15 Jun 2018 17:52:14 +0000 (17:52 +0000)]
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.

6 years agoPrepare for 4.23 release v4.23
Dmitry V. Levin [Thu, 14 Jun 2018 11:00:00 +0000 (11:00 +0000)]
Prepare for 4.23 release

* NEWS: Update for 4.23 release.

6 years agoUpdate copyright headers
Dmitry V. Levin [Thu, 14 Jun 2018 11:00:00 +0000 (11:00 +0000)]
Update copyright headers

Headers updated automatically using maint/update_copyright_years.sh
script.

6 years agotests: add missing copyright headers
Dmitry V. Levin [Thu, 14 Jun 2018 11:00:00 +0000 (11:00 +0000)]
tests: add missing copyright headers

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

6 years agomaint: document release procedure
Dmitry V. Levin [Thu, 14 Jun 2018 11:00:00 +0000 (11:00 +0000)]
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.

6 years agomaint: prepend contributor names in tag messages with an asterisk
Dmitry V. Levin [Thu, 14 Jun 2018 11:00:00 +0000 (11:00 +0000)]
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.

6 years agoUpdate NEWS
Eugene Syromyatnikov [Thu, 14 Jun 2018 09:48:20 +0000 (11:48 +0200)]
Update NEWS

6 years agoWire up rseq syscall
Dmitry V. Levin [Wed, 13 Jun 2018 23:51:31 +0000 (23:51 +0000)]
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.

6 years agotests: check decoding of io_pgetevents syscall
Eugene Syromyatnikov [Wed, 13 Jun 2018 15:38:07 +0000 (17:38 +0200)]
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>
6 years agoImplement io_pgetevents syscall decoding
Eugene Syromyatnikov [Thu, 7 Jun 2018 17:57:28 +0000 (19:57 +0200)]
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>
6 years agotravis: re-enable testing with the latest mainline kernel headers
Dmitry V. Levin [Tue, 12 Jun 2018 12:27:22 +0000 (12:27 +0000)]
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.

6 years agoWorkaround incompatibility between <linux/signal.h> and libc headers
Dmitry V. Levin [Tue, 12 Jun 2018 12:27:22 +0000 (12:27 +0000)]
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.

6 years agotests: add personality specification syntax checks
Eugene Syromyatnikov [Sun, 20 May 2018 01:31:11 +0000 (03:31 +0200)]
tests: add personality specification syntax checks

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

6 years agotests: add basic checks for personality designation support
Eugene Syromyatnikov [Sun, 20 May 2018 01:14:08 +0000 (03:14 +0200)]
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.

6 years agoAdd support for personality designation in regex qualifications
Eugene Syromyatnikov [Sun, 11 Feb 2018 04:24:29 +0000 (05:24 +0100)]
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

6 years agoAdd support for personality designation in syscall qualifications
Eugene Syromyatnikov [Sun, 11 Feb 2018 04:04:05 +0000 (05:04 +0100)]
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
6 years agotests: add basic checks for inject=SET:syscall= expression syntax
Eugene Syromyatnikov [Thu, 7 Jun 2018 17:41:49 +0000 (19:41 +0200)]
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.

6 years agoImplement injection of syscalls with no side effects as an alternative to -1
Eugene Syromyatnikov [Thu, 1 Feb 2018 12:51:17 +0000 (13:51 +0100)]
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