7173 Commits

Author SHA1 Message Date
44e21ae30d tests: workaround systemd-nspawn habit of disabling unimplemented syscalls
* tests/nsyscalls.c (test_syscall): Do not assume that unimplemented
syscalls always fail with ENOSYS.
2018-08-22 20:38:27 +00:00
ccee090b78 tests: workaround systemd-nspawn habit of disabling mlockall syscall
* tests/mmap.c (main): Do not assume that mlockall syscall always
succeeds.
2018-08-22 20:38:27 +00:00
1df0986c75 tests: workaround systemd-nspawn habit of disabling munlockall syscall
* tests/munlockall.c (main): Do not assume that munlockall syscall
always succeeds.
2018-08-22 20:38:27 +00:00
Eugene Syromyatnikov
9d2848e517 Decode AF_SMC netlink messages unconditionally
As smc_diag.h is bundled, there is little sense to build AF_SMC support
conditionally.

* netlink_smc_diag.c [!AF_SMC]: Include xlat/addrfams.h under
XLAT_MACROS_ONLY, enable the rest of file.
* netlink_sock_diag.c: Include xlat/addrfams.h under XLAT_MACROS_ONLY.
(diag_decoders): Remove "ifdef AF_SMC" condition for [AF_SMC], reorder
in accordance with address family values.
* tests/nlattr_smc_diag_msg.c [!AF_SMC]: Define AF_SMC to 43, enable
the rest of test.
2018-08-21 11:28:14 +00:00
14ae61f37b strace.c: introduce struct tcb_wait_data
Introduce a new structure to pass information between next_event(),
restart_delayed_tcb(), and dispatch_event().

This is going to be used by a subsequent change of next_event().

* strace.c (struct tcb_wait_data): New type.
(next_event): Remove parameters, return a pointer
to const struct tcb_wait_data.  Return NULL instead of TE_BREAK.
(dispatch_event): Replace all parameters with a pointer
to const struct tcb_wait_data, obtain the trace event, siginfo,
and status from its fields.
(restart_delayed_tcb): Add local struct tcb_wait_data variable
with te field set to TE_RESTART, pass it to dispatch_event().
(main): Remove status and si variables, update next_event()
and dispatch_event() invocations.

Co-Authored-by: Eugene Syromyatnikov <evgsyr@gmail.com>
2018-08-19 10:26:18 +00:00
Eugene Syromyatnikov
2d88ec9e39 xlat: fix typo in smc_protocols.in
* xlat/smc_protocols.in: s/^MCPROTO_SMC/SMCPROTO_SMC/.
2018-08-19 10:26:18 +00:00
538cf68f12 ci: add a test with the latest gcc and mainline headers
* .gitlab-ci.yml (gcc-x86_64-libdw-mainline): New entry.
* .travis.yml (CC=gcc-8, KHEADERS=torvalds/linux): Likewise.
2018-08-19 10:26:18 +00:00
9725de9c22 ci: update gitlab ubuntu image
* .gitlab-ci.yml (image): Replace "ubuntu:17.10" with "ubuntu:18.04".
2018-08-19 10:26:18 +00:00
7b0d371b3f ci: install kernel headers after compiler dependencies
* ci/install-dependencies.sh: Install kernel headers after compiler
dependencies to avoid a needless attempt to install $common_packages.
2018-08-19 10:26:18 +00:00
f0ec4e696c ci: fix kernel headers version diagnostics
* ci/run-build-and-tests.sh: Honor $CPPFLAGS when printing
kernel headers version.
2018-08-19 10:26:18 +00:00
Zhibin Li
ed29ac33bb tests: enhance test coverage of evdev ioctl
* tests/ioctl_evdev.c (main): Test EVIOCGMTSLOTS(8) command.
2018-08-19 10:26:18 +00:00
Zhibin Li
e286b9cbc0 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.
2018-08-19 10:26:18 +00:00
Zhibin Li
5ee385e2eb 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"
2018-08-19 10:26:18 +00:00
Zhibin Li
99300f217b 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"
2018-08-19 10:26:18 +00:00
Pierre Marsais
e38143b00e 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>
2018-08-19 10:26:18 +00:00
0f09267db0 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.
2018-08-19 10:26:18 +00:00
b89a69dec2 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>
2018-08-19 10:26:18 +00:00
a264eb3b65 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.
2018-08-14 10:11:12 +00:00
150655ca3e Prepare for 4.24 release
* NEWS: Update for 4.24 release.
v4.24
2018-08-14 00:01:02 +00:00
c1154d21a6 Update copyright headers
Headers updated automatically using maint/update_copyright_years.sh
script.
2018-08-12 22:22:32 +00:00
Gleb Fotengauer-Malinovskiy
33e8748587 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.
2018-08-12 09:50:33 +00:00
Gleb Fotengauer-Malinovskiy
5f3b52cd32 maint: update for linux v4.18
* maint/ioctls_sym.sh: Add workaround for linux/omap3isp.h file.
2018-08-12 09:50:33 +00:00
95cf8b343f 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-12 09:50:33 +00:00
Eugene Syromyatnikov
11e24ca2a4 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-08 23:27:06 +00:00
f22adb0c7c 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 18:57:25 +00:00
a6ab0251f0 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 18:57:25 +00:00
Eugene Syromyatnikov
c20a515b6d 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 18:57:25 +00:00
22f0253f33 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 18:57:25 +00:00
d7da491c34 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 18:57:25 +00:00
Eugene Syromyatnikov
769946f50a 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 18:57:25 +00:00
6757946d39 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 11:49:04 +00:00
090bd651d3 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 11:49:04 +00:00
6215963cde 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 11:49:04 +00:00
Eugene Syromyatnikov
5771116f98 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 11:49:04 +00:00
Eugene Syromyatnikov
76cdf04c31 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 11:49:04 +00:00
Eugene Syromyatnikov
197014937c 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 11:49:04 +00:00
0930b2303e 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 11:49:04 +00:00
594cd12cd6 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-05 11:49:04 +00:00
656de0c59f Update NEWS 2018-08-04 20:34:09 +00:00
cc1da1e9fd Update NEWS 2018-08-04 11:45:20 +00:00
dad8828327 rtnl_route: decode new RTA_* attributes
* rtnl_route.c (rtmsg_nla_decoders): Add entries for RTA_IP_PROTO,
RTA_SPORT, and RTA_DPORT.
2018-08-04 11:45:20 +00:00
e9e2dec950 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.
2018-08-04 11:45:20 +00:00
2eb862c260 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.
2018-08-04 11:45:20 +00:00
a72d6cdea0 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.
2018-08-04 11:45:20 +00:00
90eee029a9 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
2018-08-04 11:45:20 +00:00
3ecff1d391 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-04 11:45:20 +00:00
150197054f 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 14:57:16 +00:00
Zhibin Li
49f45ff291 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.
2018-08-01 14:57:16 +00:00
Zhibin Li
7ecd1096bf 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.
2018-08-01 14:57:16 +00:00
Zhibin Li
8f9a7721d5 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-08-01 14:57:16 +00:00