]> granicus.if.org Git - strace/log
strace
9 years agotests: robustify unix-yy.test
Dmitry V. Levin [Thu, 5 Mar 2015 17:30:23 +0000 (17:30 +0000)]
tests: robustify unix-yy.test

Implement additional synchronization between parent and child processes
to guarantee that the child starts closing connected socket only after
exiting of the parent's accept() syscall.
This guarantee seems to be necessary to reliably receive UNIX_DIAG_PEER
messages from NETLINK_SOCK_DIAG interface.

* tests/net-accept-connect.c: Implement additional synchronization
between parent and child processes.
* tests/unix-yy-connect.awk: Update.

9 years agoUse SIGRTMIN from kernel headers
Dmitry V. Levin [Thu, 5 Mar 2015 05:03:41 +0000 (05:03 +0000)]
Use SIGRTMIN from kernel headers

* configure.ac (ASM_SIGRTMIN): Define to SIGRTMIN from <asm/signal.h>.
* signal.c: Use ASM_SIGRTMIN instead of constants provided by libc.
* tests/sigreturn.c: Use ASM_SIGRTMIN instead of hardcoded value.
Use lower RT_* numbers to support pre-3.18 hppa kernels.
* tests/sigreturn.test: Update regexp.

9 years agoppc64: fix compilation warning
Dmitry V. Levin [Thu, 5 Mar 2015 04:29:37 +0000 (04:29 +0000)]
ppc64: fix compilation warning

Fix compilation warning introduced by commit
577be2593d4895ef941e1c4e5e1608f7dd13610d

* signal.c (sys_sigreturn) [POWERPC64]: Fix initialization of signal
mask on 32bit personality.

9 years agoaarch64: fix compilation warnings
Dmitry V. Levin [Thu, 5 Mar 2015 04:10:52 +0000 (04:10 +0000)]
aarch64: fix compilation warnings

Fix compilation warnings introduced by commit
5b9b7e1d347eb4556084cdccad75e8247c535ed5:

signal.c:702:45: warning: signed and unsigned type in conditional expression [-Wsign-compare]
syscall.c:746:34: warning: initialization from incompatible pointer type [enabled by default]

* syscall.c [AARCH64] (aarch64_sp_ptr): Add explicit cast.
[AARCH64] (arm_sp_ptr): Change pointer type to unsigned.
* linux/aarch64/arch_regs.h (arm_sp_ptr): Update.

Reported-by: Mike Frysinger <vapier@gentoo.org>
9 years agoi386: simplify sigreturn decoding
Dmitry V. Levin [Thu, 5 Mar 2015 01:14:33 +0000 (01:14 +0000)]
i386: simplify sigreturn decoding

* signal.c (sys_sigreturn) [X86_64 || X32 || I386]: Do not define
i386_sigcontext_struct and i386_fpstate structures.

9 years agotests: add a test for sigreturn/rt_sigreturn decoding
Dmitry V. Levin [Wed, 4 Mar 2015 12:31:18 +0000 (12:31 +0000)]
tests: add a test for sigreturn/rt_sigreturn decoding

Convert test/sigreturn.c into a regular test.

* test/Makefile (PROGS): Remove sigreturn.
* test/.gitignore: Likewise.
* test/sigreturn.c: Rewrite to ...
* tests/sigreturn.c: ... new file.
* tests/sigreturn.test: New test.
* tests/Makefile.am (check_PROGRAMS): Add sigreturn.
(TESTS): Add sigreturn.test.
* tests/.gitignore: Add sigreturn.

9 years agosigreturn: print signal mask as a syscall argument
Dmitry V. Levin [Wed, 4 Mar 2015 23:55:25 +0000 (23:55 +0000)]
sigreturn: print signal mask as a syscall argument

Although sigreturn takes signal mask via frame pointer,
it's more convenient to display signal mask as a syscall argument
rather than an outstanding object of unknown nature:

Before this change:
    sigreturn() (mask [USR2 CHLD RT_2 RT_3 RT_4 RT_31 RT_32]) = 0

After this change:
    sigreturn({mask=[USR2 CHLD RT_2 RT_3 RT_4 RT_31 RT_32]}) = 0

* signal.c (sys_sigreturn): Display signal mask as a syscall argument.

9 years agoaarch64: implement rt_sigreturn decoding
Dmitry V. Levin [Wed, 4 Mar 2015 23:05:53 +0000 (23:05 +0000)]
aarch64: implement rt_sigreturn decoding

* linux/64/syscallent.h (139): Use sys_sigreturn for rt_sigreturn
decoding.
* syscall.c [ARM] (arm_regs): Make static.
[ARM] (arm_sp_ptr): New variable.
[AARCH64] (aarch64_sp_ptr, arm_sp_ptr): New variables.
* linux/aarch64/arch_regs.h: New file.
* linux/arm/arch_regs.h (arm_regs): Remove.
(arm_sp_ptr): New declaration.
* signal.c (sys_sigreturn) [ARM]: Use arm_sp_ptr.
[AARCH64]: Print signal mask.

9 years agoarm: simplify sigreturn decoding
Dmitry V. Levin [Wed, 4 Mar 2015 22:27:35 +0000 (22:27 +0000)]
arm: simplify sigreturn decoding

* signal.c (sys_sigreturn) [ARM]: Do not define sigcontext and ucontext
structures, fetch signal mask only, use print_sigset_addr_len.

9 years agos390: fix sigreturn decoding
Dmitry V. Levin [Wed, 4 Mar 2015 21:40:00 +0000 (21:40 +0000)]
s390: fix sigreturn decoding

* signal.c (sys_sigreturn) [S390]: Fix signal mask decoding.

9 years agomips o32: fix sigreturn decoding
Dmitry V. Levin [Wed, 4 Mar 2015 20:04:02 +0000 (20:04 +0000)]
mips o32: fix sigreturn decoding

* signal.c (sys_sigreturn) [LINUX_MIPSO32]: Fix the address of signal mask.
[MIPS] Use print_sigset_addr_len to print signal mask.

9 years agox86_64, x32: implement rt_sigreturn decoding
Dmitry V. Levin [Wed, 4 Mar 2015 12:19:55 +0000 (12:19 +0000)]
x86_64, x32: implement rt_sigreturn decoding

* syscall.c [X86_64 || X32] (x86_64_rsp_ptr): New variable.
* linux/x86_64/arch_regs.h (x86_64_rsp_ptr): New declaration.
* linux/x86_64/syscallent.h (15): Use sys_sigreturn for rt_sigreturn
decoding.
* linux/x32/syscallent.h (513): Likewise.
* signal.c (sys_sigreturn) [X86_64 || X32]: Print signal mask
for non-i386 personalities.

9 years agosparc, sparc64: fix sigreturn decoding
Dmitry V. Levin [Wed, 4 Mar 2015 17:52:42 +0000 (17:52 +0000)]
sparc, sparc64: fix sigreturn decoding

* linux/sparc/arch_regs.h (U_REG_FP): New macro.
* signal.c (sys_sigreturn) [SPARC || SPARC64]: Fix decoding
of upper 32 bits of the sigmask.

9 years agoppc, ppc64: fix sigreturn decoding
Dmitry V. Levin [Wed, 4 Mar 2015 16:01:47 +0000 (16:01 +0000)]
ppc, ppc64: fix sigreturn decoding

* signal.c (sys_sigreturn) [POWERPC]: Fix decoding of upper 32 bits
of the sigmask.

9 years agosigreturn: issue a less innocuous warning
Dmitry V. Levin [Wed, 4 Mar 2015 13:12:06 +0000 (13:12 +0000)]
sigreturn: issue a less innocuous warning

* signal.c (sys_sigreturn): Issue a less innocuous warning on
architectures for which signal mask decoding is not implemented yet.

9 years agobootstrap: do not link Makefile* files
Dmitry V. Levin [Wed, 4 Mar 2015 14:50:19 +0000 (14:50 +0000)]
bootstrap: do not link Makefile* files

* bootstrap: Do not symlink any Makefile* files, not just Makefile.am
and Makefile.in.

Reported-by: Christopher Covington <cov@codeaurora.org>
9 years agoia64: fix sigreturn decoding
Dmitry V. Levin [Wed, 4 Mar 2015 12:11:31 +0000 (12:11 +0000)]
ia64: fix sigreturn decoding

* signal.c (sys_sigreturn) [IA64]: Fix the address of signal mask.
Use print_sigset_addr_len to print signal mask.

9 years agoia64: use generic signalent
Dmitry V. Levin [Wed, 4 Mar 2015 12:04:57 +0000 (12:04 +0000)]
ia64: use generic signalent

This complements commit v4.9-321-gfcf7f8d.

* linux/ia64/signalent.h: Remove.
* Makefile.am (EXTRA_DIST): Remove it.

9 years agoDocument that -k is available only with libunwind
Giedrius Statkevičius [Tue, 3 Mar 2015 19:24:34 +0000 (21:24 +0200)]
Document that -k is available only with libunwind

Without this users might get confused why `man strace` describes
an option that doesn't work.

* strace.1: Note that -k is available only if strace is built
with libunwind.

9 years agodebian: update control file
Dmitry V. Levin [Tue, 3 Mar 2015 18:31:06 +0000 (18:31 +0000)]
debian: update control file

* debian/control (strace, strace-udeb): Add mips64 and mips64el
to architecture list.
Patch by James Cowgill <james410@cowgill.org.uk>

This fixes Debian bug #773375.

9 years agodebian: sync with 4.9-2 package
Dmitry V. Levin [Wed, 20 Aug 2014 17:00:09 +0000 (17:00 +0000)]
debian: sync with 4.9-2 package

* debian/changelog: Sync with 4.9-2.
* debian/control: Likewise.

9 years agoAdd arch-specific PTRACE_* constants
Dmitry V. Levin [Tue, 3 Mar 2015 22:53:25 +0000 (22:53 +0000)]
Add arch-specific PTRACE_* constants

* xlat/ptrace_cmds.in: Add arch-specific ptrace commands.
* xlat/ptrace_events.in: Add PTRACE_EVENT_MIGRATE for tile.
* xlat/ptrace_setoptions_flags.in: Add PTRACE_O_TRACEMIGRATE for tile.

This fixes Debian bug #734554.

9 years agoClarify bootstrap-vs-autoreconf usage
Mike Frysinger [Tue, 3 Mar 2015 01:42:04 +0000 (20:42 -0500)]
Clarify bootstrap-vs-autoreconf usage

* README-hacking: Tell people to run ./bootstrap.

9 years agomips n32: fix preadv/pwritev offset decoding
Dmitry V. Levin [Tue, 3 Mar 2015 01:36:29 +0000 (01:36 +0000)]
mips n32: fix preadv/pwritev offset decoding

In mips n32 abi, like in most of 32-bit architectures, offset
is passed to preadv/pwritev syscalls using two syscall arguments.

* io.c (print_llu_from_low_high_val) [LINUX_MIPSN32]: Remove.

9 years agotests: skip ipc_sem.test on broken kernels
Mike Frysinger [Tue, 3 Mar 2015 01:07:14 +0000 (20:07 -0500)]
tests: skip ipc_sem.test on broken kernels

Rather than trigger an ERROR which fails `make check`, go with SKIP
instead.  We don't want the testsuite failing due to kernel bugs.

* tests/ipc_sem.c (main): Change 99 to 77.

9 years agotests: skip pc.test on s390
Mike Frysinger [Tue, 3 Mar 2015 01:04:34 +0000 (20:04 -0500)]
tests: skip pc.test on s390

The s390 hardware can't support an exact si_addr, and the current kernels
don't handle text addresses correctly at all.  Until that improves, skip
the test on s390.

* tests/pc.c (main): Return 77 on s390 systems.

9 years agotests: note the kernel configs for -yy options
Mike Frysinger [Tue, 3 Mar 2015 00:51:30 +0000 (19:51 -0500)]
tests: note the kernel configs for -yy options

* tests/net-yy.test: Note CONFIG_INET_TCP_DIAG.
* tests/unix-yy.test: Note CONFIG_UNIX_DIAG.

9 years agoalpha: fix -yy decoding
Dmitry V. Levin [Mon, 2 Mar 2015 23:39:41 +0000 (23:39 +0000)]
alpha: fix -yy decoding

* socketutils.c (receive_responses): Align buffer on a sizeof(long) boundary.

Reported-and-tested-by: Mike Frysinger <vapier@gentoo.org>
9 years agoaarch64, x32: fix decoding of compat personality statfs64/fstatfs64
Dmitry V. Levin [Mon, 2 Mar 2015 21:34:02 +0000 (21:34 +0000)]
aarch64, x32: fix decoding of compat personality statfs64/fstatfs64

* statfs.c (struct compat_statfs64) [AARCH64 || X32]: Apply the same
attributes as on X86_64.

9 years agomips: fix compilation warning
Dmitry V. Levin [Mon, 2 Mar 2015 15:06:51 +0000 (15:06 +0000)]
mips: fix compilation warning

* syscall.c (get_scno) [MIPS]: Fix harmless compilation warning
about comparison between signed and unsigned integer expressions.

9 years agox32: fix compilation warnings
Dmitry V. Levin [Mon, 2 Mar 2015 14:34:25 +0000 (14:34 +0000)]
x32: fix compilation warnings

* sysinfo.c (sys_sysinfo): Use ll length format modifier
instead of l and cast kernel ulong types to unsigned long long.

9 years agoaarch64: add -i option support
Dmitry V. Levin [Mon, 2 Mar 2015 03:38:27 +0000 (03:38 +0000)]
aarch64: add -i option support

* syscall.c (print_pc): Add aarch64 support.

9 years agoioctl: use x32 specific ioctl entries on x32 personality
Dmitry V. Levin [Mon, 2 Mar 2015 02:38:50 +0000 (02:38 +0000)]
ioctl: use x32 specific ioctl entries on x32 personality

As ioctls_inc.h generated natively on x32 differs both from 32/ioctls_inc.h
(by 45 entries) and from linux/64/ioctls_inc.h (by 322 entries), use x32
specific ioctl entries on x32 personality.

* linux/x32/ioctls_inc0.h: Generate from linux v3.19 using ioctls_gen.sh.
* linux/x86_64/ioctlent2.h: Remove.
* linux/x86_64/ioctls_arch2.h: New file.
* linux/x86_64/ioctls_inc2.h: New file.
* Makefile.am (EXTRA_DIST): Remove linux/x86_64/ioctlent2.h, add
linux/x86_64/ioctls_arch2.h and linux/x86_64/ioctls_inc2.h.

9 years agotests/uid16: skip if real uid is larger than 16bit
Dmitry V. Levin [Mon, 2 Mar 2015 02:13:03 +0000 (02:13 +0000)]
tests/uid16: skip if real uid is larger than 16bit

* tests/uid16.c (main): Skip if the uid returned by getuid matches
/proc/sys/kernel/overflowuid.

9 years agotests: fix uid tests on big endian architectures
Dmitry V. Levin [Mon, 2 Mar 2015 01:13:47 +0000 (01:13 +0000)]
tests: fix uid tests on big endian architectures

* tests/uid.c (main): Ignore uids returned by getresuid to avoid
16bit vs 32bit issues on big endian architectures.
Change real UID instead of effective UID in setresuid test.
* tests/uid16.c (main): Likewise.
* tests/uid32.c (main): Change real UID instead of effective UID
in setresuid test to match uid.c
* tests/uid.awk: Update setresuid regexp.

Reported-by: Mike Frysinger <vapier@gentoo.org>
9 years agotests/getdents: handle older getdents calls
Mike Frysinger [Sun, 1 Mar 2015 08:11:35 +0000 (03:11 -0500)]
tests/getdents: handle older getdents calls

If the tools we use call older getdents syscalls where d_type isn't
passed back, or the arch is old (like Alpha) and can't pass back in
either version, make sure we don't fail.

* tests/getdents.awk (d_type_dir, d_type_reg): Accept DT_UNKNOWN.

9 years agoFix multiple personalities support in decoding syscall return values
Dmitry V. Levin [Sat, 28 Feb 2015 23:41:11 +0000 (23:41 +0000)]
Fix multiple personalities support in decoding syscall return values

* syscall.c (trace_syscall_exiting): When current personality is 32bit,
print 32bit return code.

9 years agoUpdate generic 64-bit ioctlent from linux v3.19
Dmitry V. Levin [Sat, 28 Feb 2015 18:37:12 +0000 (18:37 +0000)]
Update generic 64-bit ioctlent from linux v3.19

* linux/64/ioctls_inc.h: Update from linux v3.19 using ioctls_gen.sh.

9 years agosparc, sparc64: fix rt_sigaction decoding
Dmitry V. Levin [Sat, 28 Feb 2015 17:17:09 +0000 (17:17 +0000)]
sparc, sparc64: fix rt_sigaction decoding

Fix regression introduced by commit v4.9-9-gc3a5c01.

* signal.c (HAVE_SA_RESTORER): New macro.
[HPPA || IA64]: Do not undefine SA_RESTORER.
(old_sigaction, old_sigaction32, new_sigaction): Use HAVE_SA_RESTORER
instead of SA_RESTORER to check whether to define sa_restorer.
(decode_old_sigaction, decode_new_sigaction): Use HAVE_SA_RESTORER in
addition to SA_RESTORER to check whether to use sa_restorer.

9 years agoFix stack buffer overflow when specified command is too long
Dmitry V. Levin [Sat, 28 Feb 2015 14:50:09 +0000 (14:50 +0000)]
Fix stack buffer overflow when specified command is too long

* strace.c (startup_child): Check that the length of the command strace
is going to execute does not exceed PATH_MAX limit.

Reported-by: Cheolung Lee <chpie@grayhash.com>
9 years agobuild: include ptrace.h after regs.h
Dmitry V. Levin [Sat, 28 Feb 2015 12:20:21 +0000 (12:20 +0000)]
build: include ptrace.h after regs.h

Restore the order of including <sys/reg.h> and <linux/ptrace.h>
headers that was inadvertently changed by commit v4.9-280-g5503dd2.

This should fix build on platforms like m68k where some constants
are defined simultaneously as enums by <sys/reg.h> and as macros
by <asm/ptrace.h>.

* process.c: Include "ptrace.h" after "regs.h".
* signal.c: Likewise.
* syscall.c: Likewise.
* util.c: Likewise.

9 years agox32: fix decoding of timeval, timespec, and timex structures
Dmitry V. Levin [Fri, 27 Feb 2015 21:46:42 +0000 (21:46 +0000)]
x32: fix decoding of timeval, timespec, and timex structures

As time_t is a 64-bit type in x32 personality, it is not correct to
treat it as a long int type.

* time.c (current_time_t_is_compat): New macro.
(sprinttv, sprint_timespec, printitv_bitness, tprint_timex): Use it.
(tprint_timeval, do_sprinttv, sprint_timespec): Use j and uintmax_t
when printing tv_sec/tv_usec.
(tprint_timex): Use j and intmax_t/uintmax_t when printing struct timex
members of type kernel_long_t.

9 years agotests/ipc_sem: detect broken kernels
Mike Frysinger [Fri, 27 Feb 2015 06:39:25 +0000 (01:39 -0500)]
tests/ipc_sem: detect broken kernels

When running 32bit ipc tests on ppc/sparc with a 64bit kernel, the ipc
logic wrongly returns errors.  Detect that and throw an error.

* tests/ipc_sem.c: Return 99 when errno is EFAULT.
* tests/ipc_sem.test: Save output to $OUT and show it when failing.
Handle exit status 99 to throw an ERROR.

9 years agobuild: do not link strace with -ldl
Dmitry V. Levin [Fri, 27 Feb 2015 05:01:25 +0000 (05:01 +0000)]
build: do not link strace with -ldl

* configure.ac: Fix dladdr check.

9 years agoHandle broken PTRACE_EVENT_STOP values
Mike Frysinger [Fri, 27 Feb 2015 04:31:37 +0000 (23:31 -0500)]
Handle broken PTRACE_EVENT_STOP values

For a few linux releases (3.1 through 3.3), this define in the exported
headers were broken.  Redefine if that's the case.

* ptrace.h [PTRACE_EVENT_STOP]: Redefine if PTRACE_EVENT_STOP is 7.

9 years agobootstrap: always set up test dirs
Mike Frysinger [Fri, 27 Feb 2015 03:22:40 +0000 (22:22 -0500)]
bootstrap: always set up test dirs

When files get updated, the bootstrap script should make sure the
parallel dirs are kept in sync.

* bootstrap: Always generate the test$m.  Clean up symlinks first.
Don't link in Makefile.in files.

9 years agoFix cross-compiling of ioctlsort
Mike Frysinger [Fri, 27 Feb 2015 03:22:36 +0000 (22:22 -0500)]
Fix cross-compiling of ioctlsort

Use the AX_PROG_CC_FOR_BUILD helper to set up build settings when cross
compiling.  This way ioctlsort uses the build tools all the time.

* configure.ac: Call AX_PROG_CC_FOR_BUILD.
* Makefile.am (ioctlsort_CC): Set to CC_FOR_BUILD.
(ioctlsort_CPPFLAGS): Change CPPFLAGS to CPPFLAGS_FOR_BUILD.
(ioctlsort_CFLAGS): Change CFLAGS to CFLAGS_FOR_BUILD.
(ioctlsort_LDFLAGS): Change LDFLAGS to LDFLAGS_FOR_BUILD.
(ioctlsort_LD): Delete.
(ioctlsort%): Change to ioctlsort%$(BUILD_EXEEXT).  Use ioctlsort_CFLAGS.
* m4/ax_prog_cc_for_build.m4: Import from the autoconf-archive package.

9 years agotests: robustify pc.test
Dmitry V. Levin [Fri, 27 Feb 2015 04:09:56 +0000 (04:09 +0000)]
tests: robustify pc.test

* configure.ac: Check for dladdr in -ldl.
* tests/Makefile.am (pc_LDADD): Adde $(dl_LIBS).
* tests/pc.c: Include "config.h" and <dlfcn.h>.
(main): Use dladdr to find the address to unmap.

9 years agotests: drop support for alternative names of select syscall
Dmitry V. Levin [Fri, 27 Feb 2015 01:39:26 +0000 (01:39 +0000)]
tests: drop support for alternative names of select syscall

This mostly reverts commit 4a00fc4867bde7a4c333f238851e5cb03f02c824.

* tests/select.awk: Drop _newselect support.
* tests/select.test: Skip if select syscall is not supported.

9 years agoRename _newselect to select
Dmitry V. Levin [Fri, 27 Feb 2015 01:25:24 +0000 (01:25 +0000)]
Rename _newselect to select

As an exception to the general rules that syscall names should match
__NR_* constants defined in kernel headers, show select as "select"
and old select as "oldselect".

* linux/arm/syscallent.h (82): Change name to oldselect.
* linux/hppa/syscallent.h (142): Change name to select.
* linux/mips/syscallent-n32.h (6022): Likewise.
* linux/mips/syscallent-n64.h (5022): Likewise.
* linux/mips/syscallent-o32.h (4142): Likewise.
* linux/sparc/syscallent.h (230): Likewise.

9 years agosparc: sync syscall entries with kernel headers
Dmitry V. Levin [Fri, 27 Feb 2015 00:17:06 +0000 (00:17 +0000)]
sparc: sync syscall entries with kernel headers

* linux/sparc/syscallent.h: Fix syscall entries for vmsplice,
inotify_init, inotify_add_watch, inotify_rm_watch, inotify_rm_watch,
ioprio_set, ioprio_get, splice, sync_file_range, sched_getaffinity, and
sched_setaffinity.
(67, 68, 202, 230): Change syscall names to match __NR_* constants
defined in arch/sparc/include/uapi/asm/unistd.h.

9 years agos390, s390x: sync syscall entry names with kernel headers
Dmitry V. Levin [Thu, 26 Feb 2015 23:36:26 +0000 (23:36 +0000)]
s390, s390x: sync syscall entry names with kernel headers

* linux/s390/syscallent.h (1, 180, 181): Change syscall names to match
__NR_* constants defined in arch/s390/include/uapi/asm/unistd.h.
* linux/s390x/syscallent.h: Likewise.

9 years agoxlat: avoid fork bombing the build system
Mike Frysinger [Thu, 26 Feb 2015 23:06:16 +0000 (18:06 -0500)]
xlat: avoid fork bombing the build system

When there were fewer xlat headers, this didn't matter as much.
But now with >200, trying to run them all in parallel can easily
fork bomb smaller systems.

* xlat/gen.sh (main): Do not more jobs than # of cpus.

9 years agoarm: sync syscall entry names with kernel
Dmitry V. Levin [Thu, 26 Feb 2015 23:04:04 +0000 (23:04 +0000)]
arm: sync syscall entry names with kernel

* linux/arm/syscallent.h (82, 90, 180, 181, 327):
Change syscall names to match __NR_* constants defined
in arch/arm/include/uapi/asm/unistd.h.

9 years agoarm: fix get_mempolicy, set_mempolicy, and timerfd_create syscall entries
Dmitry V. Levin [Thu, 26 Feb 2015 23:03:10 +0000 (23:03 +0000)]
arm: fix get_mempolicy, set_mempolicy, and timerfd_create syscall entries

* linux/arm/syscallent.h (320, 321, 350): Fix names and handlers.

9 years agohppa: sync syscall entry names with kernel
Dmitry V. Levin [Thu, 26 Feb 2015 22:42:09 +0000 (22:42 +0000)]
hppa: sync syscall entry names with kernel

* linux/hppa/syscallent.h (18, 28, 59, 84, 108, 109, 280):
Change syscall names to match __NR_* constants defined in
arch/parisc/include/uapi/asm/unistd.h.

9 years agosubcall.h: add sendmmsg entry
Dmitry V. Levin [Thu, 26 Feb 2015 22:07:14 +0000 (22:07 +0000)]
subcall.h: add sendmmsg entry

* linux/subcall.h: Add sys_sendmmsg entry.
(SYS_socket_nsubcalls): Update.

9 years agoarm: simplify ARM_FIRST_SHUFFLED_SYSCALL definition
Dmitry V. Levin [Thu, 26 Feb 2015 22:05:45 +0000 (22:05 +0000)]
arm: simplify ARM_FIRST_SHUFFLED_SYSCALL definition

* linux/arm/syscallent.h (ARM_FIRST_SHUFFLED_SYSCALL): Use SYS_ipc_subcall.

9 years agoia64: parametrize i386 syscallent size check
Dmitry V. Levin [Thu, 26 Feb 2015 22:03:19 +0000 (22:03 +0000)]
ia64: parametrize i386 syscallent size check

* linux/ia64/syscallent.h: Use (SYS_ipc_subcall + SYS_ipc_nsubcalls)
instead of numeric constant.

9 years agoCleanup linux/subcall.h
Dmitry V. Levin [Thu, 26 Feb 2015 21:45:47 +0000 (21:45 +0000)]
Cleanup linux/subcall.h

* linux/subcall.h: Use SYS_ipc_subcall.

9 years agoalpha: fix statfs decoding
Dmitry V. Levin [Thu, 26 Feb 2015 21:08:40 +0000 (21:08 +0000)]
alpha: fix statfs decoding

* statfs.c (printstatfs) [ALPHA]: Remove faulty code.

9 years agox32: fix build regression
Dmitry V. Levin [Thu, 26 Feb 2015 20:40:43 +0000 (20:40 +0000)]
x32: fix build regression

* linux/x32/arch_regs.h: New file.
* Makefile.am (EXTRA_DIST): Add it.

9 years agohppa: fix fanotify_mark decoding
Mike Frysinger [Thu, 26 Feb 2015 19:16:13 +0000 (14:16 -0500)]
hppa: fix fanotify_mark decoding

The parisc kernel has some legacy baggage here and decodes the 64bit
field in the reverse order.  Handle it in strace too.

* fanotify.c [HPPA] (sys_fanotify_mark): Reverse the mask bits.

9 years agoia64: fix decoding of getresuid/getresgid/setresgid
Mike Frysinger [Thu, 26 Feb 2015 07:25:27 +0000 (02:25 -0500)]
ia64: fix decoding of getresuid/getresgid/setresgid

Looks like the similarity of these names caused confusion when generating
the syscall table.  getresgid was wired to the wrong output while the other
two were wired up to printargs instead of the real printer.

* linux/ia64/syscallent.h: Connect getresuid to sys_getresuid, getresgid to
sys_getresgid, and setresgid to sys_setresgid.

9 years agoia64: fix up builds after 16bit uid support
Mike Frysinger [Thu, 26 Feb 2015 07:15:33 +0000 (02:15 -0500)]
ia64: fix up builds after 16bit uid support

The ia64 port pulls in the i386 syscall table so it can decode
32bit apps, so we need to enable the 16bit uid parsers for it.

* defs.h (NEED_UID16_PARSERS): Define to 1 for IA64.
* linux/ia64/syscallent.h: Undefine sys_stime to avoid redefine warnings.

9 years agov4l2: use uintmax_t for times
Mike Frysinger [Thu, 26 Feb 2015 05:57:18 +0000 (00:57 -0500)]
v4l2: use uintmax_t for times

There is no guarantee that the backing value for the various time fields
are ints or longs which makes printfs annoying.  Lets cast them to the
uintmax_t type so we can use the j flag and not worry about truncation.

* v4l2.c (v4l2_ioctl): Use j and uintmax_t when printing tv_sec/tv_usec.

9 years agoignore core/compile files
Mike Frysinger [Thu, 26 Feb 2015 05:35:38 +0000 (00:35 -0500)]
ignore core/compile files

Newer autotools includes a compile helper script.

* .gitignore: Add /compile and core.

9 years agoNEWS: Prepare for 4.10 release
Dmitry V. Levin [Mon, 23 Feb 2015 20:24:00 +0000 (20:24 +0000)]
NEWS: Prepare for 4.10 release

9 years agoRemove support for systems without PTRACE_SETOPTIONS
Dmitry V. Levin [Sun, 8 Feb 2015 13:05:53 +0000 (13:05 +0000)]
Remove support for systems without PTRACE_SETOPTIONS

Assume that the kernel is v2.5.46 or newer, i.e. PTRACE_SETOPTIONS
and PTRACE_O_TRACESYSGOOD|PTRACE_O_TRACEEXEC|PTRACE_O_TRACECLONE
are universally available.

This change removes all code that implemented post-execve SIGTRAP
handling and fork/vfork/clone->CLONE_PTRACE substitution.

* defs.h (TCB_BPTSET, TCB_WAITEXECVE): Remove macros.
(need_fork_exec_workarounds, setbpt, clearbpt): Remove declarations.
* strace.c (need_fork_exec_workarounds,
test_ptrace_setoptions_followfork, test_ptrace_setoptions_for_all):
Remove.
(syscall_trap_sig): Set to (SIGTRAP | 0x80).
(ptrace_setoptions): Set to (PTRACE_O_TRACESYSGOOD | PTRACE_O_TRACEEXEC).
(detach): Do not test for TCB_BPTSET.
(init): Do not call test_ptrace_setoptions_followfork and
test_ptrace_setoptions_for_all.  Do not test for TCB_BPTSET.
* syscall.c (syscall_fixup_on_sysenter, internal_fork, internal_exec,
syscall_fixup_for_fork_exec, syscall_fixup_on_sysexit): Remove.
(trace_syscall_entering): Do not test for TCB_WAITEXECVE.  Do not call
syscall_fixup_on_sysenter and syscall_fixup_for_fork_exec.
(trace_syscall_exiting): Do not call syscall_fixup_on_sysexit and
syscall_fixup_for_fork_exec.
[IA64] (ia64_ia32mode): Make static.
* linux/ia64/arch_regs.h (ia64_ia32mode): Remove declaration.
* util.c: Do not include "syscall.h".
(arg_setup, get_arg0, get_arg1, set_arg0, set_arg1, restore_arg0,
restore_arg1, arg_finish_change, change_syscall, setbpt, clearbpt):
Remove.
* tests/ptrace_setoptions.test: Remove.
* tests/Makefile.am (TESTS): Remove it.

9 years agotests: robustify pc.test
Dmitry V. Levin [Mon, 23 Feb 2015 22:37:40 +0000 (22:37 +0000)]
tests: robustify pc.test

* tests/pc.c (main): Unmap larger memory region.
Dump process map for debug purposes.
* tests/pc.test: Update regexps to take CLD_DUMPED child process
into account.

9 years agotests: fix "make dist" regression
Dmitry V. Levin [Mon, 23 Feb 2015 21:47:15 +0000 (21:47 +0000)]
tests: fix "make dist" regression

* tests/Makefile.am (EXTRA_DIST): Add getrandom.awk.

9 years agotests: workaround broken awk
Dmitry V. Levin [Mon, 23 Feb 2015 21:42:16 +0000 (21:42 +0000)]
tests: workaround broken awk

* tests/getdents.out: New file.
* tests/Makefile.am (EXTRA_DIST): Add it.
* tests/getdents.test: Check whether awk is capable of matching long
regular expressions.

9 years agoFix compilation warnings about incompatible print formats
Dmitry V. Levin [Mon, 23 Feb 2015 21:35:20 +0000 (21:35 +0000)]
Fix compilation warnings about incompatible print formats

On some platforms printing of __s64 types with "%lld" format,
or __u64 types with "%llu" or "%llx" formats causes a warning
that __s64/__u64 type is not compatible with long long format.
From my PoV, this is nonsense, but the workaround costs nothing.

* scsi.c (print_sg_io_v4_req, print_sg_io_v4_res): Cast __u64 types
to (unsigned long long).
* v4l2.c (v4l2_ioctl): Likewise.  Cast __s64 type to (long long).

9 years agopowerpc64: fix build regression
Dmitry V. Levin [Mon, 23 Feb 2015 21:28:33 +0000 (21:28 +0000)]
powerpc64: fix build regression

* linux/powerpc64/arch_regs.h: New file.
* Makefile.am (EXTRA_DIST): Add it.

9 years agosignalent: update from linux v3.19
Dmitry V. Levin [Mon, 23 Feb 2015 20:53:12 +0000 (20:53 +0000)]
signalent: update from linux v3.19

* linux/alpha/signalent.h: Update from linux v3.19 signalent.sh.
* linux/hppa/signalent.h: Likewise.
* linux/mips/signalent.h: Likewise.
* linux/sparc/signalent.h: Likewise.

9 years agoCleanup auxiliary signalent files
Dmitry V. Levin [Mon, 23 Feb 2015 20:34:49 +0000 (20:34 +0000)]
Cleanup auxiliary signalent files

* linux/aarch64/signalent1.h: Include "signalent.h".
* linux/powerpc64/signalent1.h: Likewise.
* linux/sparc64/signalent2.h: Likewise.
* linux/tile/signalent1.h: Likewise.
* linux/x32/signalent1.h: Likewise.
* linux/x86_64/signalent1.h: Likewise.
* linux/x86_64/signalent2.h: Likewise.
* linux/sparc64/signalent.h: Include "sparc/signalent.h".
* linux/sparc64/signalent1.h: Include "sparc/signalent1.h".
* linux/x32/signalent.h: Remove.
* Makefile.am (EXTRA_DIST): Remove linux/x32/signalent.h.

9 years agox86_64, x32: fix sys_sigreturn
Dmitry V. Levin [Mon, 23 Feb 2015 16:18:09 +0000 (16:18 +0000)]
x86_64, x32: fix sys_sigreturn

On x86_64/x32, sys_sigreturn is defined only for i386 personality.

* signal.c (sys_sigreturn): Define for X32.
(sys_sigreturn) [X86_64 || X32]: Implement for i386 personality only.

9 years agosparc, x32: fix build regression
Dmitry V. Levin [Mon, 23 Feb 2015 13:43:20 +0000 (13:43 +0000)]
sparc, x32: fix build regression

* syscall.c (print_pc): Use current_wordsize iff it is defined.

9 years agoChange errnoent.h files to use designated initializers
Dmitry V. Levin [Mon, 23 Feb 2015 03:10:25 +0000 (03:10 +0000)]
Change errnoent.h files to use designated initializers

* signal.c (printsiginfo): Allow elements of errnoent array to be zero.
* syscall.c (trace_syscall_exiting): Likewise.
* errnoent.sh: Output designated initializers.
* linux/errnoent.h: Regenerated.
* linux/alpha/errnoent.h: Regenerated.
* linux/hppa/errnoent.h: Regenerated.
* linux/mips/errnoent.h: Regenerated.
* linux/sparc/errnoent.h: Regenerated.
* linux/sparc/errnoent1.h: Regenerated.
* linux/powerpc/errnoent.h: New file.
* linux/powerpc64/errnoent.h: Include "powerpc/errnoent.h".
* Makefile.am (EXTRA_DIST): Add linux/powerpc/errnoent.h
and linux/powerpc64/errnoent.h.

9 years agoerrnoent: update from linux v3.19
Dmitry V. Levin [Mon, 23 Feb 2015 02:39:04 +0000 (02:39 +0000)]
errnoent: update from linux v3.19

* linux/errnoent.h: Update from linux v3.19 using errnoent.sh.
* linux/alpha/errnoent.h: Likewise.
* linux/hppa/errnoent.h: Likewise.
* linux/mips/errnoent.h: Likewise.
* linux/sparc/errnoent.h: Likewise.

9 years agoCleanup auxiliary errnoent files
Dmitry V. Levin [Mon, 23 Feb 2015 02:32:21 +0000 (02:32 +0000)]
Cleanup auxiliary errnoent files

* linux/aarch64/errnoent1.h: Include "errnoent.h".
* linux/powerpc64/errnoent1.h: Likewise.
* linux/sparc64/errnoent2.h: Likewise.
* linux/tile/errnoent1.h: Likewise.
* linux/x32/errnoent1.h: Likewise.
* linux/x86_64/errnoent1.h: Likewise.
* linux/x86_64/errnoent2.h: Likewise.
* linux/sparc64/errnoent.h: Include "sparc/errnoent.h".
* linux/sparc64/errnoent1.h: Include "sparc/errnoent1.h".
* linux/x32/errnoent.h: Remove.
* Makefile.am (EXTRA_DIST): Remove linux/x32/errnoent.h.

9 years agoevdev: update constants from linux v3.19
Dmitry V. Levin [Sun, 22 Feb 2015 00:30:50 +0000 (00:30 +0000)]
evdev: update constants from linux v3.19

* xlat/evdev_keycode.in: Update from linux v3.19.
* xlat/evdev_prop.in: Likewise.

9 years agoevdev: decode keycode value in EVIOC[GS]KEYCODE_V2 commands
Dmitry V. Levin [Sat, 21 Feb 2015 23:05:26 +0000 (23:05 +0000)]
evdev: decode keycode value in EVIOC[GS]KEYCODE_V2 commands

* evdev.c (keycode_V2_ioctl): Use evdev_keycode to print
input_keymap_entry.keycode.

9 years agoevdev: fix build with old kernel headers
Dmitry V. Levin [Sat, 21 Feb 2015 23:50:33 +0000 (02:50 +0300)]
evdev: fix build with old kernel headers

* configure.ac: Check whether struct input_absinfo.resolution is defined
in <linux/input.h>.
* evdev.c (SYN_MAX): Add fallback definition.
(abs_ioctl): Wrap use of struct input_absinfo.resolution in #ifdef check.
(keycode_V2_ioctl, mtslots_ioctl, repeat_ioctl): Wrap in #ifdef checks.
(evdev_read_ioctl): Wrap in #ifdef checks the code that uses EV_SW,
EVIOCGREP, EVIOCGKEYCODE_V2, EVIOCGMTSLOTS, EVIOCGPROP, and EVIOCGSW.
(evdev_write_ioctl): Wrap in #ifdef checks the code that uses EVIOCSREP,
EVIOCSKEYCODE_V2, EVIOCSCLOCKID, and EVIOCREVOKE.

9 years agoAdd decoding for evdev ioctls
Etienne Gemsa [Fri, 20 Feb 2015 16:14:10 +0000 (17:14 +0100)]
Add decoding for evdev ioctls

This patch introduces decoding for evdev ioctls.  For EVIOCSFF the five
first members are decoded, the union is not.  The code was compiled and
tested on x86_64 with Linux 3.13.

* evdev.c: New file.
* Makefile.am (strace_SOURCES): Add it.
* defs.h (evdev_ioctl): New prototype.
* ioctl.c (ioctl_decode): Call evdev_ioctl for 'E' ioctl commands.
* xlat/evdev_autorepeat.in: New file.
* xlat/evdev_ff_status.in: New file.
* xlat/evdev_ff_types.in: New file.
* xlat/evdev_keycode.in: New file.
* xlat/evdev_leds.in: New file.
* xlat/evdev_misc.in: New file.
* xlat/evdev_mtslots.in: New file.
* xlat/evdev_prop.in: New file.
* xlat/evdev_relative_axes.in: New file.
* xlat/evdev_snd.in: New file.
* xlat/evdev_switch.in: New file.
* xlat/evdev_sync.in: New file.

Signed-off-by: Etienne Gemsa <etienne.gemsa@lse.epita.fr>
Signed-off-by: Dmitry V. Levin <ldv@altlinux.org>
9 years agoFix build with old kernel headers
Dmitry V. Levin [Sun, 22 Feb 2015 02:13:04 +0000 (02:13 +0000)]
Fix build with old kernel headers

* strace.c (print_debug_info, maybe_allocate_tcb, print_signalled,
print_exited): Remove "const" qualifier from status variable to
workaround some old implementations of WIFSIGNALED/WIFSTOPPED/WIFEXITED
macros.
* v4l2.c: Include <linux/types.h>.
(v4l2_ioctl): Check that V4L2_CTRL_FLAG_NEXT_CTRL and VIDIOC_S_EXT_CTRLS
macros are defined.
* tests/Makefile.am (AM_CPPFLAGS): Define.

9 years agoFix "make dist" regression
Dmitry V. Levin [Sun, 22 Feb 2015 01:06:57 +0000 (01:06 +0000)]
Fix "make dist" regression

* Makefile.am (EXTRA_DIST): Remove README-linux.

9 years agotest/sfd.c: add missing includes
Elliott Hughes [Fri, 20 Feb 2015 05:27:55 +0000 (21:27 -0800)]
test/sfd.c: add missing includes

9 years agoRemove linux/fanotify.h
Dmitry V. Levin [Thu, 19 Feb 2015 21:55:09 +0000 (21:55 +0000)]
Remove linux/fanotify.h

* linux/fanotify.h: Remove.
* Makefile.am (EXTRA_DIST): Remove it.
* fanotify.c: Do not include <linux/fanotify.h>.
* xlat/fan_classes.in: Add default values.
* xlat/fan_event_flags.in: Likewise.
* xlat/fan_init_flags.in: Likewise.
* xlat/fan_mark_flags.in: Likewise.

9 years agoRemove linux/keyctl.h
Dmitry V. Levin [Thu, 19 Feb 2015 21:42:31 +0000 (21:42 +0000)]
Remove linux/keyctl.h

* linux/keyctl.h: Remove.
* Makefile.am (EXTRA_DIST): Remove it.
* keyctl.c: Do not include <linux/keyctl.h>.
* xlat/key_perms.in: Add default values.
* xlat/key_reqkeys.in: Likewise.
* xlat/key_spec.in: Likewise.
* xlat/keyctl_commands.in: Likewise.

9 years agoRemove linux/kexec.h
Dmitry V. Levin [Thu, 19 Feb 2015 21:16:45 +0000 (21:16 +0000)]
Remove linux/kexec.h

* linux/kexec.h: Remove.
* Makefile.am (EXTRA_DIST): Remove it.
* kexec.c: Do not include <linux/kexec.h>.
* xlat/kexec_arch_values.in: Add default values.
* xlat/kexec_flags.in: Rename to kexec_load_flags.in, add default
values.

9 years agoRemove linux/inotify.h
Dmitry V. Levin [Thu, 19 Feb 2015 21:00:41 +0000 (21:00 +0000)]
Remove linux/inotify.h

* linux/inotify.h: Remove.
* Makefile.am (EXTRA_DIST): Remove it.
* inotify.c: Do not include <linux/inotify.h>.
* xlat/inotify_flags.in: Add default values.

9 years agoRemove linux/reboot.h
Dmitry V. Levin [Thu, 19 Feb 2015 20:47:36 +0000 (20:47 +0000)]
Remove linux/reboot.h

* linux/reboot.h: Remove.
* Makefile.am (EXTRA_DIST): Remove it.
* reboot.c: Do not include <linux/reboot.h>.
* xlat/bootflags1.in: Add default values.
* xlat/bootflags2.in: Likewise.
* xlat/bootflags3.in: Likewise.

9 years agoseccomp: fix fallback definitions of some SECCOMP_* constants
Dmitry V. Levin [Thu, 19 Feb 2015 20:30:01 +0000 (20:30 +0000)]
seccomp: fix fallback definitions of some SECCOMP_* constants

* seccomp.c (SECCOMP_SET_MODE_STRICT, SECCOMP_SET_MODE_FILTER,
SECCOMP_FILTER_FLAG_TSYNC): Remove fallback definitions.
* xlat/seccomp_filter_flags.in: Add default value.
* xlat/seccomp_ops.in: Add default values.

9 years agois_negated_errno: sync MAX_ERRNO with the kernel
Dmitry V. Levin [Thu, 19 Feb 2015 16:58:52 +0000 (16:58 +0000)]
is_negated_errno: sync MAX_ERRNO with the kernel

Linux kernel used to guarantee that the largest errno value will not
exceed 4095, but SECCOMP_RET_ERRNO support introduced by kernel commit
v3.4-rc2-13-gacf3b2c71ed20c53dc69826683417703c2a88059 inadvertently
broke it.  The guarantee is back with kernel commit
v3.19-8275-g580c57f1076872ebc2427f898b927944ce170f2d.

* syscall.c (is_negated_errno): Set maximum errno value to 4095.

9 years agoREADME-linux: punt
Mike Frysinger [Thu, 19 Feb 2015 05:04:13 +0000 (00:04 -0500)]
README-linux: punt

Considering we're requiring linux-2.6 era kernels, the discussion of
header troubles that plagued 2.2 and 2.4 are no longer relevant.

* README-linux: Delete.

9 years agoImprove prctl decoding
Dmitry V. Levin [Sat, 14 Feb 2015 01:51:03 +0000 (01:51 +0000)]
Improve prctl decoding

* configure.ac (AC_CHECK_HEADERS): Add linux/securebits.h.
* prctl.c (sys_prctl): Implement full decoding of all PR_* constants
as defined in linux v3.19.
(sys_arch_prctl): Fix decoding of unknown commands.
* xlat/cap.in: New file.
* xlat/pr_mce_kill.in: New file.
* xlat/pr_mce_kill_policy.in: New file.
* xlat/pr_set_mm.in: New file.
* xlat/pr_tsc.in: New file.
* xlat/pr_unalign_flags.in: New file.
* xlat/secbits.in: New file.
* xlat/prctl_options.in: Remove non-linux constants, add fallback
definitions.
* xlat/seccomp_mode.in: Add fallback definitions.

9 years agoxlat: extend syntax
Dmitry V. Levin [Wed, 18 Feb 2015 03:47:17 +0000 (03:47 +0000)]
xlat: extend syntax

* xlat/gen.sh (gen_header): If the name of constant is specified with a
value, generate a default definition for the constant using this value.
* xlat/timerfdflags.in: Use extended syntax.

9 years agoMove CAP_* definitions out to header files
Dmitry V. Levin [Wed, 18 Feb 2015 23:59:50 +0000 (23:59 +0000)]
Move CAP_* definitions out to header files

* Makefile.am (strace_SOURCES): Add caps0.h and caps1.h.
* caps0.h: New file.
* caps1.h: New file.
* capability.c: Remove CAP_* definitions, include "caps0.h"
and "caps1.h" instead.
Include "xlat/cap_mask0.h" instead of "xlat/capabilities.h".
Include "xlat/cap_mask1.h" instead of "xlat/capabilities1.h".
(print_cap_bits): Update callers.
* xlat/capabilities.in: Rename to xlat/cap_mask0.in.
* xlat/capabilities1.in: Rename to xlat/cap_mask1.in.

9 years agoDeclare all format printers with printf format attribute
Dmitry V. Levin [Tue, 17 Feb 2015 22:47:25 +0000 (22:47 +0000)]
Declare all format printers with printf format attribute

* defs.h (printllval, printnum_int, printnum_long): Mark with
format(printf) attribute.
* sock.c (sock_ioctl): Fix format string.