2011-02-27 03:28:50 +03:00
# Automake input for strace tests.
2015-12-17 20:56:48 +03:00
#
2016-01-02 02:09:02 +03:00
# Copyright (c) 2011-2016 Dmitry V. Levin <ldv@altlinux.org>
2015-12-17 20:56:48 +03:00
# All rights reserved.
#
# Redistribution and use in source and binary forms, with or without
# modification, are permitted provided that the following conditions
# are met:
# 1. Redistributions of source code must retain the above copyright
# notice, this list of conditions and the following disclaimer.
# 2. Redistributions in binary form must reproduce the above copyright
# notice, this list of conditions and the following disclaimer in the
# documentation and/or other materials provided with the distribution.
# 3. The name of the author may not be used to endorse or promote products
# derived from this software without specific prior written permission.
#
# THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR
# IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
# OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
# IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT,
# INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
# NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
# DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
# THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
# THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
2011-02-27 03:28:50 +03:00
2015-04-08 00:18:23 +03:00
OS = linux
ARCH = @arch@
2016-01-02 02:09:02 +03:00
MPERS_NAME =
2015-12-08 03:14:10 +03:00
ARCH_MFLAGS =
2013-05-08 03:32:01 +04:00
AM_CFLAGS = $( WARN_CFLAGS)
2015-12-08 03:14:10 +03:00
AM_CPPFLAGS = $( ARCH_MFLAGS) \
tests: add ksysent.test
Check that syscall names and numbers defined in syscallent files
match kernel __NR_* constants defined by <asm/unistd.h>.
Tested on various platforms, including the following combinations
of architectures and kernel headers:
x86_64: 4.4-rc, 4.3, 4.2, 4.1, 3.19, 3.17, 3.16, 3.12, 3.11,
3.10-rhel, 2.6.32-rhel, 2.6.27-sle, 2.6.18-rhel
i386: 4.4-rc, 4.3, 4.2, 4.1, 3.19, 3.17, 3.16, 3.11,
3.10-rhel, 2.6.32-rhel, 2.6.27-sle, 2.6.18-rhel
aarch64: 4.4-rc
alpha: 4.3
arm eabi: 4.4-rc, 4.2, 4.1
hppa: 3.18
ia64: 3.18
mips o32: 4.1
ppc: 3.18
ppc64: 3.10-rhel, 2.6.32-rhel
s390: 3.18
s390x: 3.18
sparc: 4.1
sparc: 3.18
x32: 3.19
The only platform which is known at this moment to fail the test
is CentOS-5 provided by OBS. On x86_64 instance it fails with
error: "prlimit64" syscall #300 is "fanotify_init" in syscallent.h
and on i586 it similarly fails with
error: "prlimit64" syscall #338 is "fanotify_init" in syscallent.h
So this is a real platform bug that is not likely to be worked around
on the strace side.
* tests/ksysent.c: New file.
* tests/ksysent.sed: Likewise.
* tests/ksysent.test: New test.
* tests/Makefile.am (AM_CPPFLAGS): Add -I$(builddir).
(check_PROGRAMS): Add ksysent.
(TESTS): Add ksysent.test.
(EXTRA_DIST): Add ksysent.sed.
(ksysent.h): New rule.
(BUILT_SOURCES, CLEANFILES): Add ksysent.h.
* tests/.gitignore: Add ksysent.
2015-12-10 05:06:25 +03:00
-I$( builddir) \
2015-12-08 03:14:10 +03:00
-I$( top_builddir) /$( OS) /$( ARCH) \
2015-02-22 05:13:04 +03:00
-I$( top_srcdir) /$( OS) /$( ARCH) \
-I$( top_builddir) /$( OS) \
2015-08-27 01:50:58 +03:00
-I$( top_srcdir) /$( OS) \
-I$( top_builddir) \
-I$( top_srcdir)
2015-12-08 03:14:10 +03:00
AM_LDFLAGS = $( ARCH_MFLAGS)
2013-05-08 03:32:01 +04:00
2016-01-02 15:05:14 +03:00
libtests_a_SOURCES = \
error_msg.c \
2016-01-20 08:26:43 +03:00
get_page_size.c \
hexdump_strdup.c \
2016-01-02 15:05:14 +03:00
tail_alloc.c \
tests.h \
2016-01-20 05:06:59 +03:00
tprintf.c \
2016-01-02 15:05:14 +03:00
# end of libtests_a_SOURCES
libtests_a_CPPFLAGS = $( AM_CPPFLAGS) -D_FILE_OFFSET_BITS= 64
check_LIBRARIES = libtests.a
LDADD = libtests.a
2014-05-30 01:35:34 +04:00
check_PROGRAMS = \
2015-12-08 20:38:12 +03:00
_newselect \
2015-09-17 00:58:36 +03:00
adjtimex \
2015-08-26 15:49:07 +03:00
aio \
2015-07-26 02:55:51 +03:00
bpf \
2015-02-04 19:38:09 +03:00
caps \
2015-09-18 17:24:51 +03:00
clock_nanosleep \
2015-09-18 00:57:22 +03:00
clock_xettime \
2015-08-02 02:04:32 +03:00
epoll_create1 \
2015-08-02 00:08:13 +03:00
eventfd \
2015-07-27 13:02:33 +03:00
execve \
2015-07-26 14:06:53 +03:00
execveat \
2015-02-04 19:38:09 +03:00
fanotify_mark \
fcntl: skip F_GETLK64, F_SETLK64, and F_SETLKW64 in fcntl syscall parser
As the kernel recognizes F_GETLK64, F_SETLK64, and F_SETLKW64 commands
in fcntl64 syscall only, do not parse their structures in fcntl parser.
* xlat/fcntlcmds.in: Move F_GETLK64, F_SETLK64, and F_SETLKW64 ...
* xlat/fcntl64cmds.in: ... here.
* fcntl.c: Include "xlat/fcntl64cmds.h".
(print_fcntl): Move printing of first two syscall arguments
and handling of F_GETLK64, F_SETLK64, and F_SETLKW64 commands ...
(SYS_FUNC(fcntl), SYS_FUNC(fcntl64)): ... here.
* tests/fcntl.c: New file, based on struct_flock.c.
* tests/fcntl64.c: Likewise.
* tests/struct_flock.c (test_flock_einval, create_sample): New functions.
(test_flock): Use test_flock_einval.
(test_flock64, main): Remove.
* tests/fcntl.test: New test.
* tests/fcntl64.test: Likewise.
* tests/struct_flock.test: Remove.
* tests/Makefile.am (check_PROGRAMS): Add fcntl and fcntl64,
remove struct_flock.
(TESTS): Add fcntl.test and fcntl64.test, remove struct_flock.test.
(EXTRA_DIST) Add struct_flock.c.
* tests/.gitignore: Add fcntl and fcntl64, remove struct_flock.
2015-12-05 03:52:01 +03:00
fcntl \
fcntl64 \
2015-11-23 00:29:32 +03:00
file_handle \
2015-06-29 14:57:44 +03:00
filter-unavailable \
2015-12-31 02:00:43 +03:00
fork-f \
2015-12-05 03:02:44 +03:00
fstat \
fstat64 \
2015-12-02 04:02:39 +03:00
fstatat64 \
2015-12-01 03:02:45 +03:00
ftruncate \
2015-12-01 03:32:40 +03:00
ftruncate64 \
2015-11-19 19:39:32 +03:00
getdents \
getdents64 \
2015-02-04 19:38:09 +03:00
getrandom \
2016-01-09 03:06:06 +03:00
getxxid \
2014-09-23 04:14:04 +04:00
inet-accept-connect-send-recv \
Implement IPPROTO_IP control messages decoding
* net.c: Include "xlat/ip_cmsg_types.h".
(print_cmsg_ip_pktinfo, print_cmsg_ip_ttl, print_cmsg_ip_tos,
print_cmsg_ip_opts, print_cmsg_ip_recverr, print_cmsg_ip_checksum,
print_cmsg_ip_origdstaddr): New functions.
(print_cmsg_type_data): Add generic SOL_IP level decoding.
Use these functions for decoding of IP_PKTINFO, IP_TTL, IP_TOS,
IP_RECVOPTS, IP_RETOPTS, IP_RECVERR, IP_ORIGDSTADDR, IP_CHECKSUM,
and SCM_SECURITY type messages.
* xlat/ip_cmsg_types.in: New file.
* xlat/sockipoptions.in: Move IP_RETOPTS before IP_RECVRETOPTS.
* tests/inet-cmsg.c: New file.
* tests/inet-cmsg.test: New test.
* tests/Makefile.am (check_PROGRAMS): Add inet-cmsg.
(TESTS): Add inet-cmsg.test.
* tests/.gitignore: Add inet-cmsg.
Suggested-by: Orion Poplawski <orion@cora.nwra.com>
2015-11-21 03:03:54 +03:00
inet-cmsg \
ioctl: take all 32 bits of ioctl commands into account
Historically, only 16 bits (8-bit number and 8-bit type) of 32-bit ioctl
commands were used for decoding, which was the source for numerous
annoying collisions like this:
ioctl(0, SNDCTL_TMR_TIMEBASE or SNDRV_TIMER_IOCTL_NEXT_DEVICE or TCGETS, {B38400 opost isig icanon echo ...}) = 0
ioctl(0, MGSL_IOCGPARAMS or MMTIMER_GETRES or MTIOCTOP or SNDCTL_MIDI_MPUMODE, 0x7fffd47f7338) = -1 ENOTTY (Inappropriate ioctl for device)
The solution is to use all 32 bits for decoding, not just "number" and
"type", but also "size" and "direction".
As some architectures override defaults that come from asm-generic/ and
provide alternative definitions for some ioctl commands, we support
per-architecture ioctl definitions and merge them with common
definitions at build time. During the merge, we used to keep both
generic and architecture-specific definitions, now architecture-specific
definitions have precedence over generic ones -- ioctlsort omits
definitions from asm-generic/ for those ioctl names that have different
definitions in asm/.
Additional bits of "direction" are architecture specific -- the number
of bits and their values differ between architectures. To reduce
architecture differences in the source code, we keep "direction" in
symbolic form and compile it in ioctlsort.
Additional bits of "size" are also architecture specific -- not only the
number of bits differ between architectures, but sizes of many types
depend on sizeof(long). To reduce architecture differences in the
source code, we keep 32-bit and 64-bit versions of common ioctl
definitions, and use the appropriate version for each architecture and
personality.
To implement this, the tools for generating ioctl definitions from
kernel headers have been rewritten, and the source format of ioctl
definitions has been extended. The final ioctlent*.h files that are
included by syscall.c are now generated from source ioctls_inc*.h and
ioctls_arch*.h files at build time with ioctlsort.
* ioctl.c (ioctl_lookup): Use all 32 bits of ioctl command code.
* ioctlsort.c: Rewritten.
* linux/32/ioctls_inc.h: New file.
* linux/64/ioctls_inc.h: New file.
* linux/aarch64/ioctls_arch0.h: New file.
* linux/aarch64/ioctls_arch1.h: New file.
* linux/aarch64/ioctls_inc0.h: New file.
* linux/aarch64/ioctls_inc1.h: New file.
* linux/alpha/ioctls_arch0.h: New file.
* linux/alpha/ioctls_inc0.h: New file.
* linux/arc/ioctls_arch0.h: New file.
* linux/arc/ioctls_inc0.h: New file.
* linux/arm/ioctls_arch0.h: New file.
* linux/arm/ioctls_inc0.h: New file.
* linux/avr32/ioctls_arch0.h: New file.
* linux/avr32/ioctls_inc0.h: New file.
* linux/bfin/ioctls_arch0.h: New file.
* linux/bfin/ioctls_inc0.h: New file.
* linux/hppa/ioctls_arch0.h: New file.
* linux/hppa/ioctls_inc0.h: New file.
* linux/i386/ioctls_arch0.h: New file.
* linux/i386/ioctls_inc0.h: New file.
* linux/ia64/ioctls_arch0.h: New file.
* linux/ia64/ioctls_inc0.h: New file.
* linux/m68k/ioctls_arch0.h: New file.
* linux/m68k/ioctls_inc0.h: New file.
* linux/metag/ioctls_arch0.h: New file.
* linux/metag/ioctls_inc0.h: New file.
* linux/microblaze/ioctls_arch0.h: New file.
* linux/microblaze/ioctls_inc0.h: New file.
* linux/mips/ioctls_arch0.h: New file.
* linux/mips/ioctls_inc0.h: New file.
* linux/or1k/ioctls_arch0.h: New file.
* linux/or1k/ioctls_inc0.h: New file.
* linux/powerpc/ioctls_arch0.h: New file.
* linux/powerpc/ioctls_inc0.h: New file.
* linux/powerpc64/ioctls_arch0.h: New file.
* linux/powerpc64/ioctls_arch1.h: New file.
* linux/powerpc64/ioctls_inc0.h: New file.
* linux/powerpc64/ioctls_inc1.h: New file.
* linux/s390/ioctls_arch0.h: New file.
* linux/s390/ioctls_inc0.h: New file.
* linux/s390x/ioctls_arch0.h: New file.
* linux/s390x/ioctls_inc0.h: New file.
* linux/sh/ioctls_arch0.h: New file.
* linux/sh/ioctls_inc0.h: New file.
* linux/sh64/ioctls_arch0.h: New file.
* linux/sh64/ioctls_inc0.h: New file.
* linux/sparc/ioctls_arch0.h: New file.
* linux/sparc/ioctls_inc0.h: New file.
* linux/sparc64/ioctls_arch0.h: New file.
* linux/sparc64/ioctls_arch2.h: New file.
* linux/sparc64/ioctls_inc0.h: New file.
* linux/sparc64/ioctls_inc2.h: New file.
* linux/tile/ioctls_arch0.h: New file.
* linux/tile/ioctls_arch1.h: New file.
* linux/tile/ioctls_inc0.h: New file.
* linux/tile/ioctls_inc1.h: New file.
* linux/x32/ioctls_arch0.h: New file.
* linux/x32/ioctls_arch1.h: New file.
* linux/x32/ioctls_inc0.h: New file.
* linux/x32/ioctls_inc1.h: New file.
* linux/x86_64/ioctls_arch0.h: New file.
* linux/x86_64/ioctls_arch1.h: New file.
* linux/x86_64/ioctls_inc0.h: New file.
* linux/x86_64/ioctls_inc1.h: New file.
* linux/xtensa/ioctls_arch0.h: New file.
* linux/xtensa/ioctls_inc0.h: New file.
* linux/aarch64/ioctlent.h.in: Remove.
* linux/aarch64/ioctlent1.h: Remove.
* linux/alpha/ioctlent.h.in: Remove.
* linux/arc/ioctlent.h.in: Remove.
* linux/arm/ioctlent.h.in: Remove.
* linux/avr32/ioctlent.h.in: Remove.
* linux/bfin/ioctlent.h.in: Remove.
* linux/hppa/ioctlent.h.in: Remove.
* linux/i386/ioctlent.h.in: Remove.
* linux/ia64/ioctlent.h.in: Remove.
* linux/ioctlent.h.in: Remove.
* linux/ioctlent.sh: Remove.
* linux/m68k/ioctlent.h.in: Remove.
* linux/metag/ioctlent.h.in: Remove.
* linux/microblaze/ioctlent.h.in: Remove.
* linux/mips/ioctlent.h.in: Remove.
* linux/mips/ioctlent.sh: Remove.
* linux/or1k/ioctlent.h.in: Remove.
* linux/powerpc/ioctlent.h.in: Remove.
* linux/powerpc64/ioctlent.h: Remove.
* linux/powerpc64/ioctlent1.h: Remove.
* linux/s390/ioctlent.h.in: Remove.
* linux/s390x/ioctlent.h.in: Remove.
* linux/sh/ioctlent.h.in: Remove.
* linux/sh64/ioctlent.h.in: Remove.
* linux/sparc/ioctlent.h.in: Remove.
* linux/sparc64/ioctlent.h.in: Remove.
* linux/sparc64/ioctlent2.h: Remove.
* linux/tile/ioctlent.h.in: Remove.
* linux/tile/ioctlent1.h: Remove.
* linux/x32/ioctlent.h.in: Remove.
* linux/x32/ioctlent1.h: Remove.
* linux/x86_64/ioctlent.h.in: Remove.
* linux/x86_64/ioctlent1.h: Remove.
* linux/xtensa/ioctlent.h.in: Remove.
* linux/x86_64/ioctlent2.h: Include ioctlent0.h instead of ioctlent.h.
* syscall.c (struct_ioctlent ioctlent0): Likewise.
* Makefile.am: Remove all ioctlent-related definitions.
Define the list of ioctlent*.h files that have to be generated by
presence of $(srcdir)/$(OS)/$(ARCH)/ioctls_inc*.h files.
Add rules for ioctlent*.h files generation.
(EXTRA_DIST): Update.
* maint/ioctls_gen.sh: New file.
* maint/ioctls_hex.sh: New file.
* maint/ioctls_sym.sh: New file.
* maint/print_ioctlent.c: New file.
* HACKING-scripts: Update for ioctlent.sh -> ioctls_gen.sh migration.
* .gitignore: Add ioctlent[012].h and ioctls_all[012].h.
* configure.ac (AC_CHECK_HEADERS): Add linux/hiddev.h
and linux/mmtimer.h for tests.
* tests/ioctl.c: New file.
* tests/ioctl.test: New test.
* tests/Makefile.am (check_PROGRAMS): Add ioctl.
(TESTS): Add ioctl.test.
* tests/.gitignore: Add ioctl.
2015-01-19 20:02:16 +03:00
ioctl \
2015-06-08 17:19:46 +03:00
ip_mreq \
2015-01-12 19:08:59 +03:00
ipc_msg \
2015-08-03 12:40:46 +03:00
ipc_msgbuf \
2015-01-12 19:08:59 +03:00
ipc_sem \
2015-02-04 19:38:09 +03:00
ipc_shm \
tests: add ksysent.test
Check that syscall names and numbers defined in syscallent files
match kernel __NR_* constants defined by <asm/unistd.h>.
Tested on various platforms, including the following combinations
of architectures and kernel headers:
x86_64: 4.4-rc, 4.3, 4.2, 4.1, 3.19, 3.17, 3.16, 3.12, 3.11,
3.10-rhel, 2.6.32-rhel, 2.6.27-sle, 2.6.18-rhel
i386: 4.4-rc, 4.3, 4.2, 4.1, 3.19, 3.17, 3.16, 3.11,
3.10-rhel, 2.6.32-rhel, 2.6.27-sle, 2.6.18-rhel
aarch64: 4.4-rc
alpha: 4.3
arm eabi: 4.4-rc, 4.2, 4.1
hppa: 3.18
ia64: 3.18
mips o32: 4.1
ppc: 3.18
ppc64: 3.10-rhel, 2.6.32-rhel
s390: 3.18
s390x: 3.18
sparc: 4.1
sparc: 3.18
x32: 3.19
The only platform which is known at this moment to fail the test
is CentOS-5 provided by OBS. On x86_64 instance it fails with
error: "prlimit64" syscall #300 is "fanotify_init" in syscallent.h
and on i586 it similarly fails with
error: "prlimit64" syscall #338 is "fanotify_init" in syscallent.h
So this is a real platform bug that is not likely to be worked around
on the strace side.
* tests/ksysent.c: New file.
* tests/ksysent.sed: Likewise.
* tests/ksysent.test: New test.
* tests/Makefile.am (AM_CPPFLAGS): Add -I$(builddir).
(check_PROGRAMS): Add ksysent.
(TESTS): Add ksysent.test.
(EXTRA_DIST): Add ksysent.sed.
(ksysent.h): New rule.
(BUILT_SOURCES, CLEANFILES): Add ksysent.h.
* tests/.gitignore: Add ksysent.
2015-12-10 05:06:25 +03:00
ksysent \
2015-12-01 03:59:26 +03:00
llseek \
lseek \
2015-12-05 03:03:02 +03:00
lstat \
lstat64 \
2015-11-15 05:29:29 +03:00
membarrier \
2015-07-29 02:03:41 +03:00
memfd_create \
2015-11-15 05:35:57 +03:00
mlock2 \
2015-03-20 01:03:32 +03:00
mmap \
mmap64 \
2014-11-06 19:23:27 +03:00
mmsg \
2015-08-19 05:28:48 +03:00
mq \
2015-09-18 05:18:03 +03:00
nanosleep \
2014-05-30 01:35:34 +04:00
net-accept-connect \
2014-09-23 04:14:04 +04:00
netlink_inet_diag \
2014-12-25 03:11:40 +03:00
netlink_unix_diag \
2015-12-02 04:02:39 +03:00
newfstatat \
2015-07-30 11:24:32 +03:00
oldselect \
2015-02-15 18:52:02 +03:00
pc \
2015-12-25 03:52:42 +03:00
personality \
2015-03-23 03:04:27 +03:00
pipe \
2015-07-30 22:46:11 +03:00
ppoll \
2015-09-15 05:14:38 +03:00
pselect6 \
2015-11-19 22:04:32 +03:00
readdir \
2015-08-14 18:49:27 +03:00
readlink \
readlinkat \
2016-01-20 03:17:02 +03:00
readv \
2016-01-20 06:26:37 +03:00
recvmsg \
2015-09-18 14:27:11 +03:00
restart_syscall \
2015-08-21 18:49:14 +03:00
rt_sigqueueinfo \
2016-01-07 03:31:33 +03:00
sched_xetaffinity \
2015-07-29 10:59:56 +03:00
sched_xetattr \
2014-05-30 01:35:34 +04:00
scm_rights \
2015-03-19 03:40:49 +03:00
seccomp \
2015-02-04 05:09:52 +03:00
select \
2015-08-19 04:25:39 +03:00
sendfile \
sendfile64 \
2014-05-30 01:35:34 +04:00
set_ptracer_any \
sigaction \
2015-07-17 04:45:25 +03:00
sigaltstack \
2015-08-03 12:47:25 +03:00
signalfd \
2015-03-04 15:31:18 +03:00
sigreturn \
2014-05-14 08:16:29 +04:00
stack-fcall \
2015-01-07 22:30:37 +03:00
stat \
2015-12-05 03:03:49 +03:00
stat64 \
2014-09-22 02:42:45 +04:00
statfs \
2015-08-03 06:30:49 +03:00
sysinfo \
2015-08-18 16:25:36 +03:00
time \
2015-09-16 19:31:43 +03:00
timer_create \
2015-09-17 21:25:12 +03:00
timer_xettime \
2015-09-17 23:05:20 +03:00
timerfd_xettime \
2015-08-04 15:52:55 +03:00
times \
2015-08-21 00:09:32 +03:00
times-fail \
2015-12-01 03:02:45 +03:00
truncate \
2015-12-01 03:32:40 +03:00
truncate64 \
2014-12-13 21:24:13 +03:00
uid \
Fix decoding of 16-bit *chown and [gs]et*[gu]id syscalls
Define two sets of parsers on architectures that support (either
directly or via multiarch) 16-bit and 32-bit uid/gid syscalls
simultaneously. Since the code in these two sets is essentially
the same and the key difference between them is the size of uid_t,
implement it by parametrizing uid_t and names of parser functions.
* defs.h (NEED_UID16_PARSERS): New macro.
* linux/syscall.h [NEED_UID16_PARSERS] (sys_chown16, sys_fchown16,
sys_getresuid16, sys_getuid16, sys_setfsuid16, sys_setresuid16,
sys_setreuid16, sys_setuid16): New prototypes.
* linux/dummy.h (sys_geteuid16): Alias to sys_getuid16.
(sys_getegid16, sys_getgid16, sys_getresgid16, sys_setfsgid16,
sys_setgid16, sys_setregid16, sys_setresgid16): Alias to corresponding
sys_*uid16 functions.
* uid.c: Stop including <asm/posix_types.h>.
Parametrize uid_t and names of all exported functions.
(get_print_uid): New function.
(sys_getresuid): Use it.
(printuid): Check for (uid_t) -1.
* uid16.c: New file.
* Makefile.am (strace_SOURCES): Add it.
* linux/arm/syscallent.h: Use sys_chown16, sys_fchown16, sys_getegid16,
sys_geteuid16, sys_getgid16, sys_getresgid16, sys_getresuid16,
sys_getuid16, sys_setfsgid16, sys_setfsuid16, sys_setgid16,
sys_setregid16, sys_setresgid16, sys_setresuid16, sys_setreuid16,
and sys_setuid16 parsers for *chown and [gs]et*[gu]id syscall entries.
* linux/bfin/syscallent.h: Likewise.
* linux/i386/syscallent.h: Likewise.
* linux/m68k/syscallent.h: Likewise.
* linux/microblaze/syscallent.h: Likewise.
* linux/s390/syscallent.h: Likewise.
* linux/sparc/syscallent.h: Likewise.
* linux/sh/syscallent.h: Likewise.
* linux/sh64/syscallent.h: Likewise.
* tests/uid16.c: New file.
* tests/uid16.test: New test.
* tests/Makefile.am (CHECK_PROGRAMS): Add uid16.
(TESTS): Add uid16.test.
* tests/.gitignore: Add uid16.
2014-12-14 00:49:01 +03:00
uid16 \
2014-12-13 21:24:13 +03:00
uid32 \
2015-02-01 03:20:32 +03:00
uio \
2015-12-07 03:06:35 +03:00
umount \
umount2 \
2015-03-31 21:52:57 +03:00
umovestr \
umovestr2 \
2015-07-15 03:09:08 +03:00
unix-pair-send-recv \
2015-11-15 05:22:44 +03:00
userfaultfd \
2015-07-15 12:02:17 +03:00
utime \
2015-07-15 18:34:59 +03:00
utimensat \
2015-12-31 02:00:43 +03:00
vfork-f \
2015-07-15 04:50:27 +03:00
wait \
2015-08-18 22:21:36 +03:00
xattr \
xet_robust_list \
2015-09-17 23:44:22 +03:00
xetitimer \
2015-09-18 19:15:49 +03:00
xettimeofday \
2015-08-18 22:21:36 +03:00
# end of check_PROGRAMS
2014-04-17 03:28:29 +04:00
2016-01-02 15:05:14 +03:00
clock_xettime_LDADD = -lrt $( LDADD)
filter_unavailable_LDADD = -lpthread $( LDADD)
build: add -D_FILE_OFFSET_BITS=64 to _CPPFLAGS instead of _CFLAGS
* tests/Makefile.am (fstat64_CFLAGS): Rename to fstat64_CPPFLAGS,
replace $(AM_CFLAGS) with $(AM_CPPFLAGS).
(fstatat64_CFLAGS): Rename to fstatat64_CPPFLAGS,
replace $(AM_CFLAGS) with $(AM_CPPFLAGS).
(ftruncate64_CFLAGS): Rename to ftruncate64_CPPFLAGS,
replace $(AM_CFLAGS) with $(AM_CPPFLAGS).
(lstat64_CFLAGS): Rename to lstat64_CPPFLAGS,
replace $(AM_CFLAGS) with $(AM_CPPFLAGS).
(mmap64_CFLAGS): Rename to mmap64_CPPFLAGS,
replace $(AM_CFLAGS) with $(AM_CPPFLAGS).
(newfstatat_CFLAGS): Rename to newfstatat_CPPFLAGS,
replace $(AM_CFLAGS) with $(AM_CPPFLAGS).
(stat64_CFLAGS): Rename to stat64_CPPFLAGS,
replace $(AM_CFLAGS) with $(AM_CPPFLAGS).
(statfs_CFLAGS): Rename to statfs_CPPFLAGS,
replace $(AM_CFLAGS) with $(AM_CPPFLAGS).
(truncate64_CFLAGS): Rename to truncate64_CPPFLAGS,
replace $(AM_CFLAGS) with $(AM_CPPFLAGS).
(uio_CFLAGS): Rename to uio_CPPFLAGS,
replace $(AM_CFLAGS) with $(AM_CPPFLAGS).
2015-12-08 03:24:53 +03:00
fstat64_CPPFLAGS = $( AM_CPPFLAGS) -D_FILE_OFFSET_BITS= 64
fstatat64_CPPFLAGS = $( AM_CPPFLAGS) -D_FILE_OFFSET_BITS= 64
ftruncate64_CPPFLAGS = $( AM_CPPFLAGS) -D_FILE_OFFSET_BITS= 64
lstat64_CPPFLAGS = $( AM_CPPFLAGS) -D_FILE_OFFSET_BITS= 64
mmap64_CPPFLAGS = $( AM_CPPFLAGS) -D_FILE_OFFSET_BITS= 64
2016-01-02 15:05:14 +03:00
mq_LDADD = -lrt $( LDADD)
build: add -D_FILE_OFFSET_BITS=64 to _CPPFLAGS instead of _CFLAGS
* tests/Makefile.am (fstat64_CFLAGS): Rename to fstat64_CPPFLAGS,
replace $(AM_CFLAGS) with $(AM_CPPFLAGS).
(fstatat64_CFLAGS): Rename to fstatat64_CPPFLAGS,
replace $(AM_CFLAGS) with $(AM_CPPFLAGS).
(ftruncate64_CFLAGS): Rename to ftruncate64_CPPFLAGS,
replace $(AM_CFLAGS) with $(AM_CPPFLAGS).
(lstat64_CFLAGS): Rename to lstat64_CPPFLAGS,
replace $(AM_CFLAGS) with $(AM_CPPFLAGS).
(mmap64_CFLAGS): Rename to mmap64_CPPFLAGS,
replace $(AM_CFLAGS) with $(AM_CPPFLAGS).
(newfstatat_CFLAGS): Rename to newfstatat_CPPFLAGS,
replace $(AM_CFLAGS) with $(AM_CPPFLAGS).
(stat64_CFLAGS): Rename to stat64_CPPFLAGS,
replace $(AM_CFLAGS) with $(AM_CPPFLAGS).
(statfs_CFLAGS): Rename to statfs_CPPFLAGS,
replace $(AM_CFLAGS) with $(AM_CPPFLAGS).
(truncate64_CFLAGS): Rename to truncate64_CPPFLAGS,
replace $(AM_CFLAGS) with $(AM_CPPFLAGS).
(uio_CFLAGS): Rename to uio_CPPFLAGS,
replace $(AM_CFLAGS) with $(AM_CPPFLAGS).
2015-12-08 03:24:53 +03:00
newfstatat_CPPFLAGS = $( AM_CPPFLAGS) -D_FILE_OFFSET_BITS= 64
2016-01-02 15:05:14 +03:00
pc_LDADD = $( dl_LIBS) $( LDADD)
build: add -D_FILE_OFFSET_BITS=64 to _CPPFLAGS instead of _CFLAGS
* tests/Makefile.am (fstat64_CFLAGS): Rename to fstat64_CPPFLAGS,
replace $(AM_CFLAGS) with $(AM_CPPFLAGS).
(fstatat64_CFLAGS): Rename to fstatat64_CPPFLAGS,
replace $(AM_CFLAGS) with $(AM_CPPFLAGS).
(ftruncate64_CFLAGS): Rename to ftruncate64_CPPFLAGS,
replace $(AM_CFLAGS) with $(AM_CPPFLAGS).
(lstat64_CFLAGS): Rename to lstat64_CPPFLAGS,
replace $(AM_CFLAGS) with $(AM_CPPFLAGS).
(mmap64_CFLAGS): Rename to mmap64_CPPFLAGS,
replace $(AM_CFLAGS) with $(AM_CPPFLAGS).
(newfstatat_CFLAGS): Rename to newfstatat_CPPFLAGS,
replace $(AM_CFLAGS) with $(AM_CPPFLAGS).
(stat64_CFLAGS): Rename to stat64_CPPFLAGS,
replace $(AM_CFLAGS) with $(AM_CPPFLAGS).
(statfs_CFLAGS): Rename to statfs_CPPFLAGS,
replace $(AM_CFLAGS) with $(AM_CPPFLAGS).
(truncate64_CFLAGS): Rename to truncate64_CPPFLAGS,
replace $(AM_CFLAGS) with $(AM_CPPFLAGS).
(uio_CFLAGS): Rename to uio_CPPFLAGS,
replace $(AM_CFLAGS) with $(AM_CPPFLAGS).
2015-12-08 03:24:53 +03:00
stat64_CPPFLAGS = $( AM_CPPFLAGS) -D_FILE_OFFSET_BITS= 64
statfs_CPPFLAGS = $( AM_CPPFLAGS) -D_FILE_OFFSET_BITS= 64
2016-01-02 15:05:14 +03:00
times_LDADD = -lrt $( LDADD)
build: add -D_FILE_OFFSET_BITS=64 to _CPPFLAGS instead of _CFLAGS
* tests/Makefile.am (fstat64_CFLAGS): Rename to fstat64_CPPFLAGS,
replace $(AM_CFLAGS) with $(AM_CPPFLAGS).
(fstatat64_CFLAGS): Rename to fstatat64_CPPFLAGS,
replace $(AM_CFLAGS) with $(AM_CPPFLAGS).
(ftruncate64_CFLAGS): Rename to ftruncate64_CPPFLAGS,
replace $(AM_CFLAGS) with $(AM_CPPFLAGS).
(lstat64_CFLAGS): Rename to lstat64_CPPFLAGS,
replace $(AM_CFLAGS) with $(AM_CPPFLAGS).
(mmap64_CFLAGS): Rename to mmap64_CPPFLAGS,
replace $(AM_CFLAGS) with $(AM_CPPFLAGS).
(newfstatat_CFLAGS): Rename to newfstatat_CPPFLAGS,
replace $(AM_CFLAGS) with $(AM_CPPFLAGS).
(stat64_CFLAGS): Rename to stat64_CPPFLAGS,
replace $(AM_CFLAGS) with $(AM_CPPFLAGS).
(statfs_CFLAGS): Rename to statfs_CPPFLAGS,
replace $(AM_CFLAGS) with $(AM_CPPFLAGS).
(truncate64_CFLAGS): Rename to truncate64_CPPFLAGS,
replace $(AM_CFLAGS) with $(AM_CPPFLAGS).
(uio_CFLAGS): Rename to uio_CPPFLAGS,
replace $(AM_CFLAGS) with $(AM_CPPFLAGS).
2015-12-08 03:24:53 +03:00
truncate64_CPPFLAGS = $( AM_CPPFLAGS) -D_FILE_OFFSET_BITS= 64
uio_CPPFLAGS = $( AM_CPPFLAGS) -D_FILE_OFFSET_BITS= 64
2014-06-17 01:45:52 +04:00
stack_fcall_SOURCES = stack-fcall.c \
stack-fcall-0.c stack-fcall-1.c stack-fcall-2.c stack-fcall-3.c
2013-05-08 03:32:01 +04:00
2016-01-02 02:09:02 +03:00
i f U S E _ L I B U N W I N D
LIBUNWIND_TESTS = strace-k.test
e l s e
LIBUNWIND_TESTS =
e n d i f
2014-02-02 19:20:11 +04:00
TESTS = \
strace-f.test \
qual_syscall.test \
tests: add ksysent.test
Check that syscall names and numbers defined in syscallent files
match kernel __NR_* constants defined by <asm/unistd.h>.
Tested on various platforms, including the following combinations
of architectures and kernel headers:
x86_64: 4.4-rc, 4.3, 4.2, 4.1, 3.19, 3.17, 3.16, 3.12, 3.11,
3.10-rhel, 2.6.32-rhel, 2.6.27-sle, 2.6.18-rhel
i386: 4.4-rc, 4.3, 4.2, 4.1, 3.19, 3.17, 3.16, 3.11,
3.10-rhel, 2.6.32-rhel, 2.6.27-sle, 2.6.18-rhel
aarch64: 4.4-rc
alpha: 4.3
arm eabi: 4.4-rc, 4.2, 4.1
hppa: 3.18
ia64: 3.18
mips o32: 4.1
ppc: 3.18
ppc64: 3.10-rhel, 2.6.32-rhel
s390: 3.18
s390x: 3.18
sparc: 4.1
sparc: 3.18
x32: 3.19
The only platform which is known at this moment to fail the test
is CentOS-5 provided by OBS. On x86_64 instance it fails with
error: "prlimit64" syscall #300 is "fanotify_init" in syscallent.h
and on i586 it similarly fails with
error: "prlimit64" syscall #338 is "fanotify_init" in syscallent.h
So this is a real platform bug that is not likely to be worked around
on the strace side.
* tests/ksysent.c: New file.
* tests/ksysent.sed: Likewise.
* tests/ksysent.test: New test.
* tests/Makefile.am (AM_CPPFLAGS): Add -I$(builddir).
(check_PROGRAMS): Add ksysent.
(TESTS): Add ksysent.test.
(EXTRA_DIST): Add ksysent.sed.
(ksysent.h): New rule.
(BUILT_SOURCES, CLEANFILES): Add ksysent.h.
* tests/.gitignore: Add ksysent.
2015-12-10 05:06:25 +03:00
ksysent.test \
2015-12-08 20:33:52 +03:00
\
2015-12-08 20:38:12 +03:00
_newselect.test \
2015-09-17 00:58:36 +03:00
adjtimex.test \
2015-08-26 15:49:07 +03:00
aio.test \
2015-12-08 20:33:52 +03:00
bexecve.test \
2015-07-26 02:55:51 +03:00
bpf.test \
2014-12-05 03:21:23 +03:00
caps.test \
2015-09-18 17:24:51 +03:00
clock_nanosleep.test \
2015-09-18 00:57:22 +03:00
clock_xettime.test \
2015-02-01 03:20:32 +03:00
dumpio.test \
2015-08-02 02:04:32 +03:00
epoll_create1.test \
2015-08-02 00:08:13 +03:00
eventfd.test \
2015-07-27 13:02:33 +03:00
execve.test \
2015-07-26 14:06:53 +03:00
execveat.test \
2015-01-10 03:08:58 +03:00
fanotify_mark.test \
fcntl: skip F_GETLK64, F_SETLK64, and F_SETLKW64 in fcntl syscall parser
As the kernel recognizes F_GETLK64, F_SETLK64, and F_SETLKW64 commands
in fcntl64 syscall only, do not parse their structures in fcntl parser.
* xlat/fcntlcmds.in: Move F_GETLK64, F_SETLK64, and F_SETLKW64 ...
* xlat/fcntl64cmds.in: ... here.
* fcntl.c: Include "xlat/fcntl64cmds.h".
(print_fcntl): Move printing of first two syscall arguments
and handling of F_GETLK64, F_SETLK64, and F_SETLKW64 commands ...
(SYS_FUNC(fcntl), SYS_FUNC(fcntl64)): ... here.
* tests/fcntl.c: New file, based on struct_flock.c.
* tests/fcntl64.c: Likewise.
* tests/struct_flock.c (test_flock_einval, create_sample): New functions.
(test_flock): Use test_flock_einval.
(test_flock64, main): Remove.
* tests/fcntl.test: New test.
* tests/fcntl64.test: Likewise.
* tests/struct_flock.test: Remove.
* tests/Makefile.am (check_PROGRAMS): Add fcntl and fcntl64,
remove struct_flock.
(TESTS): Add fcntl.test and fcntl64.test, remove struct_flock.test.
(EXTRA_DIST) Add struct_flock.c.
* tests/.gitignore: Add fcntl and fcntl64, remove struct_flock.
2015-12-05 03:52:01 +03:00
fcntl.test \
fcntl64.test \
2015-11-23 00:29:32 +03:00
file_handle.test \
2015-06-29 14:57:44 +03:00
filter-unavailable.test \
2015-12-31 02:00:43 +03:00
fork-f.test \
2015-12-05 03:02:44 +03:00
fstat.test \
fstat64.test \
2015-12-02 04:02:39 +03:00
fstatat64.test \
2015-12-01 03:02:45 +03:00
ftruncate.test \
2015-12-01 03:32:40 +03:00
ftruncate64.test \
2014-09-10 04:07:32 +04:00
getdents.test \
2015-11-19 19:39:32 +03:00
getdents64.test \
2015-02-04 19:38:09 +03:00
getrandom.test \
2016-01-09 03:06:06 +03:00
getxxid.test \
Implement IPPROTO_IP control messages decoding
* net.c: Include "xlat/ip_cmsg_types.h".
(print_cmsg_ip_pktinfo, print_cmsg_ip_ttl, print_cmsg_ip_tos,
print_cmsg_ip_opts, print_cmsg_ip_recverr, print_cmsg_ip_checksum,
print_cmsg_ip_origdstaddr): New functions.
(print_cmsg_type_data): Add generic SOL_IP level decoding.
Use these functions for decoding of IP_PKTINFO, IP_TTL, IP_TOS,
IP_RECVOPTS, IP_RETOPTS, IP_RECVERR, IP_ORIGDSTADDR, IP_CHECKSUM,
and SCM_SECURITY type messages.
* xlat/ip_cmsg_types.in: New file.
* xlat/sockipoptions.in: Move IP_RETOPTS before IP_RECVRETOPTS.
* tests/inet-cmsg.c: New file.
* tests/inet-cmsg.test: New test.
* tests/Makefile.am (check_PROGRAMS): Add inet-cmsg.
(TESTS): Add inet-cmsg.test.
* tests/.gitignore: Add inet-cmsg.
Suggested-by: Orion Poplawski <orion@cora.nwra.com>
2015-11-21 03:03:54 +03:00
inet-cmsg.test \
ioctl: take all 32 bits of ioctl commands into account
Historically, only 16 bits (8-bit number and 8-bit type) of 32-bit ioctl
commands were used for decoding, which was the source for numerous
annoying collisions like this:
ioctl(0, SNDCTL_TMR_TIMEBASE or SNDRV_TIMER_IOCTL_NEXT_DEVICE or TCGETS, {B38400 opost isig icanon echo ...}) = 0
ioctl(0, MGSL_IOCGPARAMS or MMTIMER_GETRES or MTIOCTOP or SNDCTL_MIDI_MPUMODE, 0x7fffd47f7338) = -1 ENOTTY (Inappropriate ioctl for device)
The solution is to use all 32 bits for decoding, not just "number" and
"type", but also "size" and "direction".
As some architectures override defaults that come from asm-generic/ and
provide alternative definitions for some ioctl commands, we support
per-architecture ioctl definitions and merge them with common
definitions at build time. During the merge, we used to keep both
generic and architecture-specific definitions, now architecture-specific
definitions have precedence over generic ones -- ioctlsort omits
definitions from asm-generic/ for those ioctl names that have different
definitions in asm/.
Additional bits of "direction" are architecture specific -- the number
of bits and their values differ between architectures. To reduce
architecture differences in the source code, we keep "direction" in
symbolic form and compile it in ioctlsort.
Additional bits of "size" are also architecture specific -- not only the
number of bits differ between architectures, but sizes of many types
depend on sizeof(long). To reduce architecture differences in the
source code, we keep 32-bit and 64-bit versions of common ioctl
definitions, and use the appropriate version for each architecture and
personality.
To implement this, the tools for generating ioctl definitions from
kernel headers have been rewritten, and the source format of ioctl
definitions has been extended. The final ioctlent*.h files that are
included by syscall.c are now generated from source ioctls_inc*.h and
ioctls_arch*.h files at build time with ioctlsort.
* ioctl.c (ioctl_lookup): Use all 32 bits of ioctl command code.
* ioctlsort.c: Rewritten.
* linux/32/ioctls_inc.h: New file.
* linux/64/ioctls_inc.h: New file.
* linux/aarch64/ioctls_arch0.h: New file.
* linux/aarch64/ioctls_arch1.h: New file.
* linux/aarch64/ioctls_inc0.h: New file.
* linux/aarch64/ioctls_inc1.h: New file.
* linux/alpha/ioctls_arch0.h: New file.
* linux/alpha/ioctls_inc0.h: New file.
* linux/arc/ioctls_arch0.h: New file.
* linux/arc/ioctls_inc0.h: New file.
* linux/arm/ioctls_arch0.h: New file.
* linux/arm/ioctls_inc0.h: New file.
* linux/avr32/ioctls_arch0.h: New file.
* linux/avr32/ioctls_inc0.h: New file.
* linux/bfin/ioctls_arch0.h: New file.
* linux/bfin/ioctls_inc0.h: New file.
* linux/hppa/ioctls_arch0.h: New file.
* linux/hppa/ioctls_inc0.h: New file.
* linux/i386/ioctls_arch0.h: New file.
* linux/i386/ioctls_inc0.h: New file.
* linux/ia64/ioctls_arch0.h: New file.
* linux/ia64/ioctls_inc0.h: New file.
* linux/m68k/ioctls_arch0.h: New file.
* linux/m68k/ioctls_inc0.h: New file.
* linux/metag/ioctls_arch0.h: New file.
* linux/metag/ioctls_inc0.h: New file.
* linux/microblaze/ioctls_arch0.h: New file.
* linux/microblaze/ioctls_inc0.h: New file.
* linux/mips/ioctls_arch0.h: New file.
* linux/mips/ioctls_inc0.h: New file.
* linux/or1k/ioctls_arch0.h: New file.
* linux/or1k/ioctls_inc0.h: New file.
* linux/powerpc/ioctls_arch0.h: New file.
* linux/powerpc/ioctls_inc0.h: New file.
* linux/powerpc64/ioctls_arch0.h: New file.
* linux/powerpc64/ioctls_arch1.h: New file.
* linux/powerpc64/ioctls_inc0.h: New file.
* linux/powerpc64/ioctls_inc1.h: New file.
* linux/s390/ioctls_arch0.h: New file.
* linux/s390/ioctls_inc0.h: New file.
* linux/s390x/ioctls_arch0.h: New file.
* linux/s390x/ioctls_inc0.h: New file.
* linux/sh/ioctls_arch0.h: New file.
* linux/sh/ioctls_inc0.h: New file.
* linux/sh64/ioctls_arch0.h: New file.
* linux/sh64/ioctls_inc0.h: New file.
* linux/sparc/ioctls_arch0.h: New file.
* linux/sparc/ioctls_inc0.h: New file.
* linux/sparc64/ioctls_arch0.h: New file.
* linux/sparc64/ioctls_arch2.h: New file.
* linux/sparc64/ioctls_inc0.h: New file.
* linux/sparc64/ioctls_inc2.h: New file.
* linux/tile/ioctls_arch0.h: New file.
* linux/tile/ioctls_arch1.h: New file.
* linux/tile/ioctls_inc0.h: New file.
* linux/tile/ioctls_inc1.h: New file.
* linux/x32/ioctls_arch0.h: New file.
* linux/x32/ioctls_arch1.h: New file.
* linux/x32/ioctls_inc0.h: New file.
* linux/x32/ioctls_inc1.h: New file.
* linux/x86_64/ioctls_arch0.h: New file.
* linux/x86_64/ioctls_arch1.h: New file.
* linux/x86_64/ioctls_inc0.h: New file.
* linux/x86_64/ioctls_inc1.h: New file.
* linux/xtensa/ioctls_arch0.h: New file.
* linux/xtensa/ioctls_inc0.h: New file.
* linux/aarch64/ioctlent.h.in: Remove.
* linux/aarch64/ioctlent1.h: Remove.
* linux/alpha/ioctlent.h.in: Remove.
* linux/arc/ioctlent.h.in: Remove.
* linux/arm/ioctlent.h.in: Remove.
* linux/avr32/ioctlent.h.in: Remove.
* linux/bfin/ioctlent.h.in: Remove.
* linux/hppa/ioctlent.h.in: Remove.
* linux/i386/ioctlent.h.in: Remove.
* linux/ia64/ioctlent.h.in: Remove.
* linux/ioctlent.h.in: Remove.
* linux/ioctlent.sh: Remove.
* linux/m68k/ioctlent.h.in: Remove.
* linux/metag/ioctlent.h.in: Remove.
* linux/microblaze/ioctlent.h.in: Remove.
* linux/mips/ioctlent.h.in: Remove.
* linux/mips/ioctlent.sh: Remove.
* linux/or1k/ioctlent.h.in: Remove.
* linux/powerpc/ioctlent.h.in: Remove.
* linux/powerpc64/ioctlent.h: Remove.
* linux/powerpc64/ioctlent1.h: Remove.
* linux/s390/ioctlent.h.in: Remove.
* linux/s390x/ioctlent.h.in: Remove.
* linux/sh/ioctlent.h.in: Remove.
* linux/sh64/ioctlent.h.in: Remove.
* linux/sparc/ioctlent.h.in: Remove.
* linux/sparc64/ioctlent.h.in: Remove.
* linux/sparc64/ioctlent2.h: Remove.
* linux/tile/ioctlent.h.in: Remove.
* linux/tile/ioctlent1.h: Remove.
* linux/x32/ioctlent.h.in: Remove.
* linux/x32/ioctlent1.h: Remove.
* linux/x86_64/ioctlent.h.in: Remove.
* linux/x86_64/ioctlent1.h: Remove.
* linux/xtensa/ioctlent.h.in: Remove.
* linux/x86_64/ioctlent2.h: Include ioctlent0.h instead of ioctlent.h.
* syscall.c (struct_ioctlent ioctlent0): Likewise.
* Makefile.am: Remove all ioctlent-related definitions.
Define the list of ioctlent*.h files that have to be generated by
presence of $(srcdir)/$(OS)/$(ARCH)/ioctls_inc*.h files.
Add rules for ioctlent*.h files generation.
(EXTRA_DIST): Update.
* maint/ioctls_gen.sh: New file.
* maint/ioctls_hex.sh: New file.
* maint/ioctls_sym.sh: New file.
* maint/print_ioctlent.c: New file.
* HACKING-scripts: Update for ioctlent.sh -> ioctls_gen.sh migration.
* .gitignore: Add ioctlent[012].h and ioctls_all[012].h.
* configure.ac (AC_CHECK_HEADERS): Add linux/hiddev.h
and linux/mmtimer.h for tests.
* tests/ioctl.c: New file.
* tests/ioctl.test: New test.
* tests/Makefile.am (check_PROGRAMS): Add ioctl.
(TESTS): Add ioctl.test.
* tests/.gitignore: Add ioctl.
2015-01-19 20:02:16 +03:00
ioctl.test \
2015-06-08 17:19:46 +03:00
ip_mreq.test \
2015-01-12 19:08:59 +03:00
ipc_msg.test \
2015-08-03 12:40:46 +03:00
ipc_msgbuf.test \
2015-01-12 19:08:59 +03:00
ipc_sem.test \
2015-12-08 20:33:52 +03:00
ipc_shm.test \
2015-12-01 03:59:26 +03:00
llseek.test \
lseek.test \
2015-12-05 03:03:02 +03:00
lstat.test \
lstat64.test \
2015-12-08 20:33:52 +03:00
membarrier.test \
memfd_create.test \
mlock2.test \
mmap.test \
mmap64.test \
mmsg.test \
2015-08-19 05:28:48 +03:00
mq.test \
2015-12-08 20:33:52 +03:00
nanosleep.test \
net-fd.test \
net-yy.test \
net.test \
newfstatat.test \
oldselect.test \
pc.test \
2015-12-25 03:52:42 +03:00
personality.test \
2015-12-08 20:33:52 +03:00
pipe.test \
ppoll.test \
2015-09-15 05:14:38 +03:00
pselect6.test \
2015-11-19 22:04:32 +03:00
readdir.test \
2015-08-14 18:49:27 +03:00
readlink.test \
readlinkat.test \
2016-01-20 03:17:02 +03:00
readv.test \
2016-01-20 06:26:37 +03:00
recvmsg.test \
2015-08-21 18:49:14 +03:00
rt_sigqueueinfo.test \
2016-01-07 03:31:33 +03:00
sched_xetaffinity.test \
2015-07-29 10:59:56 +03:00
sched_xetattr.test \
2014-05-30 01:35:34 +04:00
scm_rights-fd.test \
2015-03-19 03:40:49 +03:00
seccomp.test \
2015-02-04 05:09:52 +03:00
select .test \
2015-08-19 04:25:39 +03:00
sendfile.test \
sendfile64.test \
2014-02-02 19:20:11 +04:00
sigaction.test \
2015-07-17 04:45:25 +03:00
sigaltstack.test \
2015-08-03 12:47:25 +03:00
signalfd.test \
2015-03-04 15:31:18 +03:00
sigreturn.test \
2014-02-02 19:20:11 +04:00
stat.test \
2015-12-05 03:03:49 +03:00
stat64.test \
2014-09-22 02:42:45 +04:00
statfs.test \
2015-01-29 18:19:21 +03:00
sun_path.test \
2015-12-08 20:33:52 +03:00
sysinfo.test \
2015-08-18 16:25:36 +03:00
time.test \
2015-09-16 19:31:43 +03:00
timer_create.test \
2015-09-17 21:25:12 +03:00
timer_xettime.test \
2015-09-17 23:05:20 +03:00
timerfd_xettime.test \
2015-08-21 00:09:32 +03:00
times-fail.test \
2015-12-08 20:33:52 +03:00
times.test \
2015-12-01 03:02:45 +03:00
truncate.test \
2015-12-01 03:32:40 +03:00
truncate64.test \
2015-12-08 20:33:52 +03:00
uid.test \
uid16.test \
uid32.test \
uio.test \
2015-12-07 03:06:35 +03:00
umount.test \
umount2.test \
2015-03-31 21:52:57 +03:00
umovestr.test \
umovestr2.test \
2014-12-24 14:59:32 +03:00
unix-yy.test \
2015-11-15 05:22:44 +03:00
userfaultfd.test \
2015-07-15 12:02:17 +03:00
utime.test \
2015-07-15 18:34:59 +03:00
utimensat.test \
2015-12-31 02:00:43 +03:00
vfork-f.test \
2015-07-15 04:50:27 +03:00
wait.test \
2015-07-15 03:09:08 +03:00
xattr.test \
2015-08-18 22:21:36 +03:00
xet_robust_list.test \
2015-09-17 23:44:22 +03:00
xetitimer.test \
2015-09-18 19:15:49 +03:00
xettimeofday.test \
2015-12-08 20:33:52 +03:00
\
2014-05-30 01:14:14 +04:00
count.test \
2014-02-02 19:20:11 +04:00
detach-sleeping.test \
detach-stopped.test \
2014-05-14 08:16:29 +04:00
detach-running.test \
2015-04-08 00:18:23 +03:00
restart_syscall.test \
2016-01-02 02:09:02 +03:00
$( LIBUNWIND_TESTS)
XFAIL_TESTS_ =
XFAIL_TESTS_m32 = $( LIBUNWIND_TESTS)
XFAIL_TESTS_mx32 = $( LIBUNWIND_TESTS)
XFAIL_TESTS = $( XFAIL_TESTS_$( MPERS_NAME) )
2011-02-27 03:28:50 +03:00
Add decoding of sockets descriptor 'paths' for network calls
* net.c (sys_bind, sys_listen, do_accept, sys_send, sys_sendto,
sys_sendmsg, sys_sendmmsg, sys_recv, sys_recvfrom, sys_recvmsg,
sys_recvmmsg, sys_shutdown, sys_getsockopt, sys_setsockopt): Decode
socket descriptor arguments using printfd.
* pathtrace.c (pathtrace_match): Also check TRACE_NETWORK syscalls
that take socket descriptor arguments.
* tests/net-fd.test: New test for socket descriptor arguments decoding.
* tests/Makefile.am (TESTS): Add net-fd.test.
(net-fd.log): New dependency on net.log.
Signed-off-by: Philippe Ombredanne <pombredanne@nexb.com>
Signed-off-by: Dmitry V. Levin <ldv@altlinux.org>
2014-02-01 21:57:45 +04:00
net-fd.log : net .log
2015-04-08 00:18:23 +03:00
TEST_LOG_COMPILER = env
AM_TEST_LOG_FLAGS = STRACE_ARCH = $( ARCH) $( srcdir) /run.sh
2013-06-18 19:28:47 +04:00
2015-03-18 22:14:02 +03:00
EXTRA_DIST = init.sh run.sh match.awk \
2014-12-05 03:21:23 +03:00
caps.awk \
2015-02-01 03:20:32 +03:00
dumpio.expected \
2015-08-02 00:08:13 +03:00
eventfd.expected \
2015-07-27 13:02:33 +03:00
execve.expected \
execve-v.expected \
2015-07-26 14:06:53 +03:00
execveat.expected \
execveat-v.expected \
2015-03-17 20:07:57 +03:00
fanotify_mark.expected \
2015-06-29 14:57:44 +03:00
filter-unavailable.expected \
2015-12-02 04:02:39 +03:00
fstatat.c \
2015-12-05 03:02:44 +03:00
fstatx.c \
2015-06-08 17:19:46 +03:00
ip_mreq.expected \
2015-03-17 20:07:57 +03:00
ipc.sh \
2015-08-03 12:40:46 +03:00
ipc_msgbuf.expected \
tests: add ksysent.test
Check that syscall names and numbers defined in syscallent files
match kernel __NR_* constants defined by <asm/unistd.h>.
Tested on various platforms, including the following combinations
of architectures and kernel headers:
x86_64: 4.4-rc, 4.3, 4.2, 4.1, 3.19, 3.17, 3.16, 3.12, 3.11,
3.10-rhel, 2.6.32-rhel, 2.6.27-sle, 2.6.18-rhel
i386: 4.4-rc, 4.3, 4.2, 4.1, 3.19, 3.17, 3.16, 3.11,
3.10-rhel, 2.6.32-rhel, 2.6.27-sle, 2.6.18-rhel
aarch64: 4.4-rc
alpha: 4.3
arm eabi: 4.4-rc, 4.2, 4.1
hppa: 3.18
ia64: 3.18
mips o32: 4.1
ppc: 3.18
ppc64: 3.10-rhel, 2.6.32-rhel
s390: 3.18
s390x: 3.18
sparc: 4.1
sparc: 3.18
x32: 3.19
The only platform which is known at this moment to fail the test
is CentOS-5 provided by OBS. On x86_64 instance it fails with
error: "prlimit64" syscall #300 is "fanotify_init" in syscallent.h
and on i586 it similarly fails with
error: "prlimit64" syscall #338 is "fanotify_init" in syscallent.h
So this is a real platform bug that is not likely to be worked around
on the strace side.
* tests/ksysent.c: New file.
* tests/ksysent.sed: Likewise.
* tests/ksysent.test: New test.
* tests/Makefile.am (AM_CPPFLAGS): Add -I$(builddir).
(check_PROGRAMS): Add ksysent.
(TESTS): Add ksysent.test.
(EXTRA_DIST): Add ksysent.sed.
(ksysent.h): New rule.
(BUILT_SOURCES, CLEANFILES): Add ksysent.h.
* tests/.gitignore: Add ksysent.
2015-12-10 05:06:25 +03:00
ksysent.sed \
2015-12-05 03:03:02 +03:00
lstatx.c \
2015-07-29 02:03:41 +03:00
memfd_create.expected \
2015-08-19 05:28:48 +03:00
mq.expected \
2015-03-17 20:07:57 +03:00
net.expected \
net-fd.expected \
2014-09-23 04:14:04 +04:00
net-yy-accept.awk \
net-yy-connect.awk \
2015-07-30 11:24:32 +03:00
oldselect.expected \
2015-03-23 03:04:27 +03:00
pipe.expected \
2015-07-30 22:46:11 +03:00
ppoll.expected \
ppoll-v.expected \
2014-09-23 04:14:04 +04:00
sigaction.awk \
2015-07-17 04:45:25 +03:00
sigaltstack.expected \
2015-08-03 12:47:25 +03:00
signalfd.expected \
2015-03-17 20:07:57 +03:00
statfs.expected \
2015-12-05 03:01:56 +03:00
statx.sh \
fcntl: skip F_GETLK64, F_SETLK64, and F_SETLKW64 in fcntl syscall parser
As the kernel recognizes F_GETLK64, F_SETLK64, and F_SETLKW64 commands
in fcntl64 syscall only, do not parse their structures in fcntl parser.
* xlat/fcntlcmds.in: Move F_GETLK64, F_SETLK64, and F_SETLKW64 ...
* xlat/fcntl64cmds.in: ... here.
* fcntl.c: Include "xlat/fcntl64cmds.h".
(print_fcntl): Move printing of first two syscall arguments
and handling of F_GETLK64, F_SETLK64, and F_SETLKW64 commands ...
(SYS_FUNC(fcntl), SYS_FUNC(fcntl64)): ... here.
* tests/fcntl.c: New file, based on struct_flock.c.
* tests/fcntl64.c: Likewise.
* tests/struct_flock.c (test_flock_einval, create_sample): New functions.
(test_flock): Use test_flock_einval.
(test_flock64, main): Remove.
* tests/fcntl.test: New test.
* tests/fcntl64.test: Likewise.
* tests/struct_flock.test: Remove.
* tests/Makefile.am (check_PROGRAMS): Add fcntl and fcntl64,
remove struct_flock.
(TESTS): Add fcntl.test and fcntl64.test, remove struct_flock.test.
(EXTRA_DIST) Add struct_flock.c.
* tests/.gitignore: Add fcntl and fcntl64, remove struct_flock.
2015-12-05 03:52:01 +03:00
struct_flock.c \
2015-03-17 20:07:57 +03:00
sun_path.expected \
2014-12-13 21:24:13 +03:00
uid.awk \
2015-03-17 20:07:57 +03:00
uio.expected \
2015-03-31 21:52:57 +03:00
umovestr.expected \
2014-12-24 14:59:32 +03:00
unix-yy-accept.awk \
unix-yy-connect.awk \
2015-07-15 04:50:27 +03:00
wait.expected \
2015-07-15 03:09:08 +03:00
xattr.expected \
2015-12-08 20:38:12 +03:00
xselect.c \
2015-12-05 03:01:56 +03:00
xstatx.c \
2014-09-23 04:14:04 +04:00
$( TESTS)
2011-02-27 03:28:50 +03:00
tests: add ksysent.test
Check that syscall names and numbers defined in syscallent files
match kernel __NR_* constants defined by <asm/unistd.h>.
Tested on various platforms, including the following combinations
of architectures and kernel headers:
x86_64: 4.4-rc, 4.3, 4.2, 4.1, 3.19, 3.17, 3.16, 3.12, 3.11,
3.10-rhel, 2.6.32-rhel, 2.6.27-sle, 2.6.18-rhel
i386: 4.4-rc, 4.3, 4.2, 4.1, 3.19, 3.17, 3.16, 3.11,
3.10-rhel, 2.6.32-rhel, 2.6.27-sle, 2.6.18-rhel
aarch64: 4.4-rc
alpha: 4.3
arm eabi: 4.4-rc, 4.2, 4.1
hppa: 3.18
ia64: 3.18
mips o32: 4.1
ppc: 3.18
ppc64: 3.10-rhel, 2.6.32-rhel
s390: 3.18
s390x: 3.18
sparc: 4.1
sparc: 3.18
x32: 3.19
The only platform which is known at this moment to fail the test
is CentOS-5 provided by OBS. On x86_64 instance it fails with
error: "prlimit64" syscall #300 is "fanotify_init" in syscallent.h
and on i586 it similarly fails with
error: "prlimit64" syscall #338 is "fanotify_init" in syscallent.h
So this is a real platform bug that is not likely to be worked around
on the strace side.
* tests/ksysent.c: New file.
* tests/ksysent.sed: Likewise.
* tests/ksysent.test: New test.
* tests/Makefile.am (AM_CPPFLAGS): Add -I$(builddir).
(check_PROGRAMS): Add ksysent.
(TESTS): Add ksysent.test.
(EXTRA_DIST): Add ksysent.sed.
(ksysent.h): New rule.
(BUILT_SOURCES, CLEANFILES): Add ksysent.h.
* tests/.gitignore: Add ksysent.
2015-12-10 05:06:25 +03:00
ksysent.h : $( srcdir ) /ksysent .sed
echo '#include <asm/unistd.h>' | \
$( CPP) $( AM_CPPFLAGS) $( CPPFLAGS) -dD - > $@ .t1
LC_COLLATE = C sed -n -f $( srcdir) /ksysent.sed < $@ .t1 > $@ .t2
mv -f $@ .t2 $@
rm -f $@ .t1
BUILT_SOURCES = ksysent.h
CLEANFILES = ksysent.h $( TESTS:= .tmp)