]> granicus.if.org Git - strace/log
strace
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.

9 years agoRename printnum to printnum_long to avoid confusion
Dmitry V. Levin [Tue, 17 Feb 2015 22:03:17 +0000 (22:03 +0000)]
Rename printnum to printnum_long to avoid confusion

* defs.h (printnum): Rename to printnum_long.
* util.c (printnum): Likewise.
* process.c (sys_ptrace): Likewise.
* time.c (sys_time): Likewise.

9 years agoUse printnum_int consistently
Dmitry V. Levin [Tue, 17 Feb 2015 22:00:45 +0000 (22:00 +0000)]
Use printnum_int consistently

* sock.c (sock_ioctl): Use printnum_int instead of printnum to print
integer type.
* stream.c (sys_getpmsg): Likewise.

9 years agoprint_pc: fix multiple personalities support
Dmitry V. Levin [Sun, 15 Feb 2015 15:52:02 +0000 (15:52 +0000)]
print_pc: fix multiple personalities support

* syscall.c (print_pc): Choose instruction pointer format depending
on current_wordsize, not the size of long integer type.
* tests/pc.c: New file.
* tests/pc.test: New test.
* tests/Makefile.am (check_PROGRAMS): Add pc.
(TESTS): Add pc.test.
* tests/.gitignore: Add pc.

9 years agomips: use PTRACE_GETREGS to fetch all registers
Dmitry V. Levin [Sun, 15 Feb 2015 03:27:13 +0000 (03:27 +0000)]
mips: use PTRACE_GETREGS to fetch all registers

* linux/mips/arch_regs.h (struct mips_regs): New structure.
(mips_REG_*): New macros.
* signal.c (sys_sigreturn) [MIPS]: Use mips_REG_SP.
* syscall.c [MIPS] (struct mips_regs): New variable.
[MIPS] (ARCH_REGS_FOR_GETREGS): New macro.
(mips_a3, mips_r2): Remove.
(print_pc) [MIPS]: Use mips_REG_EPC.
(get_scno) [MIPS]: Use mips_REG_V0 and mips_REG_A3.
(get_syscall_args) [MIPS]: Use mips_REG_A[0-5].
(get_syscall_result) [MIPS]: Remove.
(get_error) [MIPS]: Use mips_REG_A3 and mips_REG_V0.

9 years agomips: move ABI check to configure.ac
Dmitry V. Levin [Sun, 15 Feb 2015 01:08:48 +0000 (01:08 +0000)]
mips: move ABI check to configure.ac

* configure.ac [MIPS]: Check for MIPS ABI.
* defs.h [MIPS]: Remove MIPS ABI check.
* ioctlsort.c: Likewise.

9 years agotests: support alternative names of select syscall
Dmitry V. Levin [Mon, 16 Feb 2015 01:23:00 +0000 (01:23 +0000)]
tests: support alternative names of select syscall

* tests/select.awk: Recognize "_newselect" as another name of "select".
* tests/select.test: Try alternative names of select syscall.

9 years agoi386: fix compilation warning
Dmitry V. Levin [Sun, 15 Feb 2015 00:08:11 +0000 (00:08 +0000)]
i386: fix compilation warning

Some gcc versions complain about assigning long* to uint32_t* on i386.

* syscall.c [I386] (i386_esp_ptr): Change type from uint32_t* to long*.
* linux/i386/arch_regs.h (i386_esp_ptr): Likewise.
* linux/x86_64/arch_regs.h: Do not include "i386/arch_regs.h".
(i386_esp_ptr): New prototype.

9 years agoDo not reset get_regs_error unnecessarily
Dmitry V. Levin [Fri, 13 Feb 2015 22:45:33 +0000 (22:45 +0000)]
Do not reset get_regs_error unnecessarily

As get_regs() is now guaranteed to set get_regs_error,
there is no need to reset get_regs_error before get_regs() call.

* strace.c (trace): Call clear_regs() iff !WIFSTOPPED.

9 years agoget_syscall_result: remove redundant ifdefs
Dmitry V. Levin [Fri, 13 Feb 2015 23:06:36 +0000 (23:06 +0000)]
get_syscall_result: remove redundant ifdefs

As get_regs() is now guaranteed to fetch registers when either
ARCH_REGS_FOR_GETREGSET or ARCH_REGS_FOR_GETREGS is defined, we can
safely replace all checks for architectures where these macros are defined
with a single check for these macros.

* syscall.c (get_syscall_result): Check for [ARCH_REGS_FOR_GETREGSET ||
ARCH_REGS_FOR_GETREGS].  Remove all checks for architectures where
nothing has to be done after get_regs().

9 years agoget_regs: define for all architectures
Dmitry V. Levin [Fri, 13 Feb 2015 21:56:50 +0000 (21:56 +0000)]
get_regs: define for all architectures

* defs.h (get_regs_error): Remove.
(clear_regs): Update prototype, declare unconditionally.
(get_regs): Declare unconditionally.
* syscall.c (clear_regs): New function.
(get_regs): Define unconditionally.
(get_regs_error): Define unconditionally, change scope to static.

9 years agoget_regs: unify code for architectures that use PTRACE_GETREGS
Dmitry V. Levin [Fri, 13 Feb 2015 23:56:54 +0000 (23:56 +0000)]
get_regs: unify code for architectures that use PTRACE_GETREGS

* syscall.c [I386, POWERPC, ARM, AVR32, SPARC, SPARC64, TILE]
(ARCH_REGS_FOR_GETREGS): New macro.
(get_regs): Unify code for ARCH_REGS_FOR_GETREGS architectures.

9 years agoget_regset: define iff PTRACE_GETREGSET is used
Dmitry V. Levin [Fri, 13 Feb 2015 23:41:04 +0000 (23:41 +0000)]
get_regset: define iff PTRACE_GETREGSET is used

* syscall.c [AARCH64, X86_64, X32] (ARCH_REGS_FOR_GETREGSET,
ARCH_IOVEC_FOR_GETREGSET): New macros.
(get_regset): Define iff ARCH_REGS_FOR_GETREGSET is defined; change
return type to long, return ptrace() return code instead of assigning it
to get_regs_error; do not list individual architectures, implement
constant and variable iovec cases depending on ARCH_IOVEC_FOR_GETREGSET.
(get_regs): Assign get_regset() return code to get_regs_error.

9 years agoarm, i386: switch back to use PTRACE_GETREGS
Dmitry V. Levin [Fri, 13 Feb 2015 23:22:56 +0000 (23:22 +0000)]
arm, i386: switch back to use PTRACE_GETREGS

PTRACE_GETREGSET and PTRACE_GETREGS methods are equally good on arm and
i386 architectures, but PTRACE_GETREGSET with fallback to PTRACE_GETREGS
is a bit more costly, so choose the method that costs less.
This partially reverts commit v4.7-149-gfaa177e.

* syscall.c [ARM, I386] (ARCH_REGS_FOR_GETREGSET): Remove.
(get_regset) [ARM || I386]: Remove.
(get_regs) [ARM || I386]: Use PTRACE_GETREGS unconditionally.

9 years agosyscall.c: remove obsolete ifdefs
Dmitry V. Levin [Fri, 13 Feb 2015 22:57:31 +0000 (22:57 +0000)]
syscall.c: remove obsolete ifdefs

* syscall.c (get_regset, get_regs): Do not check for availability
of PTRACE_GETREGSET and NT_PRSTATUS macros.

9 years agosyscall.c: ensure that NT_PRSTATUS is defined
Dmitry V. Levin [Fri, 13 Feb 2015 22:53:00 +0000 (22:53 +0000)]
syscall.c: ensure that NT_PRSTATUS is defined

* syscall.c: Do not include <elf.h>.
(NT_PRSTATUS): New macro.

9 years agoMove regs-related macros and declarations from defs.h to regs.h
Dmitry V. Levin [Fri, 13 Feb 2015 02:12:14 +0000 (02:12 +0000)]
Move regs-related macros and declarations from defs.h to regs.h

* regs.h: New file.
* Makefile.am (strace_SOURCES): Add it.
* linux/arch_regs.h: New file.
* linux/alpha/arch_regs.h: Likewise.
* linux/arm/arch_regs.h: Likewise.
* linux/hppa/arch_regs.h: Likewise.
* linux/i386/arch_regs.h: Likewise.
* linux/ia64/arch_regs.h: Likewise.
* linux/mips/arch_regs.h: Likewise.
* linux/powerpc/arch_regs.h: Likewise.
* linux/sh64/arch_regs.h: Likewise.
* linux/sparc/arch_regs.h: Likewise.
* linux/sparc64/arch_regs.h: Likewise.
* linux/tile/arch_regs.h: Likewise.
* linux/x86_64/arch_regs.h: Likewise.
* Makefile.am (EXTRA_DIST): Add them.
* defs.h: Remove definitions of PTRACE_*, REG_*, PT_*, U_REG_*,
and ARM_* macros.
Remove declarations of struct pt_regs variables.
[SPARC]: Do not include <asm/psr.h>.
[SPARC64]: Do not include <asm/psrcompat.h>.
* bjm.c: Do not include <sys/user.h>.
* process.c: Include "regs.h".
Do not include <sys/user.h> and <sys/reg.h>.
[IA64]: Do not include <asm/ptrace_offsets.h> and <asm/rse.h>.
* util.c: Likewise.
* syscall.c: Likewise.
[AARCH64]: Define struct arm_pt_regs and ARM_* macros.
[SPARC]: Include <asm/psr.h>.
[SPARC64]: Include <asm/psrcompat.h>.
* signal.c: Include "regs.h".
Do not include <sys/user.h> and <sys/reg.h>.
[IA64]: Do not include <asm/ptrace_offsets.h>.
* strace.c [IA64]: Do not include <asm/ptrace_offsets.h>.

9 years agoMove all ptrace-related macros and declarations from defs.h to ptrace.h
Dmitry V. Levin [Fri, 13 Feb 2015 00:26:38 +0000 (00:26 +0000)]
Move all ptrace-related macros and declarations from defs.h to ptrace.h

* ptrace.h: New file.
* Makefile.am (strace_SOURCES): Add it.
* configure.ac (AC_CHECK_HEADERS): Remove linux/ptrace.h and sys/ptrace.h.
* defs.h: Do not include <sys/ptrace.h> and <asm/ptrace.h>.
Remove definitions of PTRACE_* macros.
* process.c: Remove <linux/ptrace.h> workarounds, include "ptrace.h".
* signal.c: Likewise.
* syscall.c: Likewise.
* util.c: Likewise.
* strace.c: Include "ptrace.h".
* wait.c: Likewise.

9 years agoEnhance wait status decoding
Dmitry V. Levin [Thu, 12 Feb 2015 22:43:02 +0000 (22:43 +0000)]
Enhance wait status decoding

* xlat/ptrace_events.in: New file.
* wait.c: Include "xlat/ptrace_events.h".
(printstatus): In case of WIFSTOPPED, print 0x80 flag separately from
the stop signal name.
[WIFCONTINUED]: Add WIFCONTINUED support.
Decode PTRACE_EVENT_* events.

9 years agoscsi: add bsg support
Bart Van Assche [Fri, 6 Feb 2015 12:37:03 +0000 (13:37 +0100)]
scsi: add bsg support

The Linux kernel supports two different versions of the SG_IO API,
namely v3 and v4. This patch adds support for version 4 of this API.
At least the sg3_utils package supports version 4 of this API.  Version
4 of this API is used if /dev/bsg/H:C:I:L is used as device name.

This patch has been tested by inspecting the output of the following
commands:

modprobe scsi_debug dev_size_mb=16 delay=0
dev=$(lsscsi | sed -n '/ scsi_debug /s,^[^/]*,,p')
./strace -eioctl -s256 sg_inq $dev
echo 'Test XDWRITEREAD(10)'
bsg=/dev/bsg/$(lsscsi | sed -n '/ scsi_debug /s,^\[\([^]]\+\)\].*,\1,p')
dd if=/dev/zero bs=512 count=1 |
  ./strace -eioctl -s256 sg_raw -s 512 -r 1024 $bsg 53 00 00 00 00 01 00 00 01 00

* configure.ac (AC_CHECK_HEADERS): Add linux/bsg.h.
* xlat/bsg_protocol.in: New file.
* xlat/bsg_subprotocol.in: Likewise.
* scsi.c: Include them and <linux/bsg.h>.
(print_sg_io_v3_req, print_sg_io_v3_res, print_sg_io_v4_req,
print_sg_io_v4_res): New functions.
(print_sg_io_req, print_sg_io_res): Use them.
(scsi_ioctl): Update callers.

Signed-off-by: Bart Van Assche <bart.vanassche@sandisk.com>
Signed-off-by: Dmitry V. Levin <ldv@altlinux.org>
9 years agoscsi: Add iovec support
Bart Van Assche [Fri, 6 Feb 2015 12:36:26 +0000 (13:36 +0100)]
scsi: Add iovec support

* scsi.c (print_sg_io_req, print_sg_io_res): Add support for decoding
iovecs passed via the SG I/O v3 interface.  Decode the "data in" and
"data out" buffers in hex instead of in ASCII.

Signed-off-by: Bart Van Assche <bart.vanassche@sandisk.com>
Signed-off-by: Dmitry V. Levin <ldv@altlinux.org>
9 years agoscsi: on exit, print only initialized part of the buffer
Bart Van Assche [Fri, 6 Feb 2015 12:36:26 +0000 (13:36 +0100)]
scsi: on exit, print only initialized part of the buffer

* scsi.c (print_sg_io_res): Only print that part of the data in buffer
that has been initialized by the SCSI LLD driver.

Signed-off-by: Bart Van Assche <bart.vanassche@sandisk.com>
Signed-off-by: Dmitry V. Levin <ldv@altlinux.org>
9 years agoscsi: make print_sg_io_buffer() print square brackets instead of its callers
Bart Van Assche [Fri, 6 Feb 2015 12:36:26 +0000 (13:36 +0100)]
scsi: make print_sg_io_buffer() print square brackets instead of its callers

* scsi.c (print_sg_io_buffer): Print square brackets in this function.
(print_sg_io_req, print_sg_io_res): Update callers.

Signed-off-by: Bart Van Assche <bart.vanassche@sandisk.com>
Signed-off-by: Dmitry V. Levin <ldv@altlinux.org>
9 years agoscsi: improve consistency with other decoding functions
Bart Van Assche [Fri, 6 Feb 2015 12:36:26 +0000 (13:36 +0100)]
scsi: improve consistency with other decoding functions

Pass pointers to tracee's memory as integers instead of pointers.

* scsi.c (print_sg_io_buffer): Change second argument's type to
unsigned long.
(print_sg_io_req, print_sg_io_res): Update callers.

Signed-off-by: Bart Van Assche <bart.vanassche@sandisk.com>
Signed-off-by: Dmitry V. Levin <ldv@altlinux.org>
9 years agotests: extend getdents to support all filesystems regardless of file order
Dmitry V. Levin [Sun, 8 Feb 2015 01:34:08 +0000 (01:34 +0000)]
tests: extend getdents to support all filesystems regardless of file order

* tests/getdents.awk: Include all 6 possible permutations of 3
direntries to regexps.

9 years agoprint_setsockopt: fix fall-through bug in SOL_IP switch case
Dmitry V. Levin [Sun, 8 Feb 2015 01:19:06 +0000 (01:19 +0000)]
print_setsockopt: fix fall-through bug in SOL_IP switch case

This fixes the bug introduced by commit v4.9-250-ga0a4909.

* net.c (print_setsockopt): Separate SOL_IP case from SOL_PACKET.

Reported-by: Ben Noordhuis <info@bnoordhuis.nl>
9 years agoDo not watch for post-execve SIGTRAP if PTRACE_O_TRACEEXEC is enabled
Dmitry V. Levin [Sat, 7 Feb 2015 23:26:44 +0000 (23:26 +0000)]
Do not watch for post-execve SIGTRAP if PTRACE_O_TRACEEXEC is enabled

If PTRACE_O_TRACEEXEC option is enabled, then post-execve SIGTRAPs are
suppressed and we can safely skip -ENOSYS heuristics.  This partially
reverts commits v4.9-258-g8e398b6 and v4.9-261-gd70c41d.

* syscall.c (syscall_fixup_on_sysenter): Skip if PTRACE_O_TRACEEXEC
flag is set in ptrace_setoptions.  Remove all SECCOMP_RET_ERRNO
workarounds as they are not needed when PTRACE_O_TRACEEXEC is not
supported by the kernel.

9 years agoWhen the process stared by strace exits/terminates, forget its pid
Dmitry V. Levin [Sat, 7 Feb 2015 19:41:48 +0000 (19:41 +0000)]
When the process stared by strace exits/terminates, forget its pid

The process stared by strace can exit/terminate only once.  When this
happens, forget its pid, so that any other event or action related to a
process with the same pid as the pid of that first process would not be
confused with that first process.

* strace.c (print_signalled, print_exited): Clear strace_child when it
equals to the given pid.

9 years ago-b execve: avoid misleading warning about unknown pid
Dmitry V. Levin [Sat, 7 Feb 2015 18:48:55 +0000 (18:48 +0000)]
-b execve: avoid misleading warning about unknown pid

* strace.c (maybe_allocate_tcb): If detach_on_execve is set, do not warn
about !WIFSTOPPED process with pid == strace_child.
* tests/bexecve.test: New test.
* tests/Makefile.am (TESTS): Add it.

9 years ago-b execve: do not use struct tcb after detach
Dmitry V. Levin [Sat, 7 Feb 2015 17:47:53 +0000 (17:47 +0000)]
-b execve: do not use struct tcb after detach

* strace.c (trace): Do not proceed after detach.

9 years agotrace: split into several functions
Dmitry V. Levin [Sat, 7 Feb 2015 17:31:54 +0000 (17:31 +0000)]
trace: split into several functions

This change moves the main loop back to main() and splits trace()
into several functions.  There are no algorithmic changes.

* strace.c (print_debug_info, maybe_allocate_tcb, maybe_switch_tcbs,
print_signalled, print_exited, print_stopped, startup_tcb): New
functions.
(trace) Use them.  Move the main loop ...
(main): ... here.

9 years agoprintsiginfo: constify the first argument
Dmitry V. Levin [Sat, 7 Feb 2015 15:47:24 +0000 (15:47 +0000)]
printsiginfo: constify the first argument

* signal.c (printsiginfo): Make the first argument a pointer to a const type.
* defs.h (printsiginfo): Likewise.
(printsiginfo, printsiginfo_at): Always define these prototypes.
* configure.ac (AC_CHECK_TYPES): Remove siginfo_t, as HAVE_SIGINFO_T
is no longer used.

9 years agotest: add a manual test for seccomp decoding
Dmitry V. Levin [Fri, 6 Feb 2015 01:52:59 +0000 (01:52 +0000)]
test: add a manual test for seccomp decoding

* test/.gitignore: Add seccomp.
* test/Makefile (PROGS): Likewise.
* test/seccomp.c: New file.
* test/README: Mention ../tests/.

9 years agoImplement seccomp decoding
Dmitry V. Levin [Wed, 4 Feb 2015 23:50:50 +0000 (23:50 +0000)]
Implement seccomp decoding

* configure.ac (AC_CHECK_HEADERS): Add linux/filter.h
and linux/seccomp.h.
* defs.h (print_seccomp_filter): New prototype.
* linux/dummy.h (sys_seccomp): Remove.
* linux/syscall.h (sys_seccomp): New prototype.
* prctl.c: Include <linux/seccomp.h>.
(sys_prctl): Decode PR_SET_SECCOMP.
* seccomp.c: New file.
* Makefile.am (strace_SOURCES): Add it.
* xlat/bpf_class.in: New file.
* xlat/bpf_miscop.in: Likewise.
* xlat/bpf_mode.in: Likewise.
* xlat/bpf_op_alu.in: Likewise.
* xlat/bpf_op_jmp.in: Likewise.
* xlat/bpf_rval.in: Likewise.
* xlat/bpf_size.in: Likewise.
* xlat/bpf_src.in: Likewise.
* xlat/seccomp_filter_flags.in: Likewise.
* xlat/seccomp_mode.in: Likewise.
* xlat/seccomp_ops.in: Likewise.
* xlat/seccomp_ret_action.in: Likewise.

9 years agois_negated_errno: support large errno values
Dmitry V. Levin [Thu, 5 Feb 2015 23:47:36 +0000 (23:47 +0000)]
is_negated_errno: support large errno values

Thanks to SECCOMP_RET_DATA == 0xffff, abnormally large errno
values could be easily seen when a seccomp filter is used, e.g.
BPF_STMT(BPF_RET, SECCOMP_RET_ERRNO | SECCOMP_RET_DATA)

* syscall.c (is_negated_errno): Allow errno values as large as 0xffff.

9 years agox86, x32, x86_64: print SECCOMP_RET_ERRNO filtered syscalls
Dmitry V. Levin [Thu, 5 Feb 2015 23:43:06 +0000 (23:43 +0000)]
x86, x32, x86_64: print SECCOMP_RET_ERRNO filtered syscalls

This is required to process SECCOMP_RET_ERRNO filtered syscalls on
systems where linux kernel does not change the syscall number to -1.

* syscall.c (is_negated_errno): Move before syscall_fixup_on_sysenter.
(syscall_fixup_on_sysenter) [I386 || X32 || X86_64] : Use it to check
AX register.

9 years agois_negated_errno: merge x86_64 and x32 definitions
Dmitry V. Levin [Thu, 5 Feb 2015 18:50:24 +0000 (18:50 +0000)]
is_negated_errno: merge x86_64 and x32 definitions

* syscall.c (kernel_long_t, kernel_ulong_t): New types.
(is_negated_errno): Merge [X32] and [!X32] definitions.
(get_error): Merge [X86_64] and [X32] code.

9 years agox32: rename is_negated_errno_x32 to is_negated_errno
Dmitry V. Levin [Thu, 5 Feb 2015 18:04:36 +0000 (18:04 +0000)]
x32: rename is_negated_errno_x32 to is_negated_errno

Use the same function name on all architectures.

* syscall.c [X32] (is_negated_errno_x32): Rename to is_negated_errno.
(get_error) [X32]: Update callers.

9 years agox86, x32, x86_64: do not skip syscall number -1
Dmitry V. Levin [Thu, 5 Feb 2015 19:31:13 +0000 (19:31 +0000)]
x86, x32, x86_64: do not skip syscall number -1

Syscall number -1 might be a side effect of SECCOMP_RET_ERRNO filtering.

* syscall.c (syscall_fixup_on_sysenter) [I386 || X32 || X86_64]:
Do not skip syscalls that have number -1.

9 years agox86_64: do not interpet syscall number -1 as a x32 personality syscall
Dmitry V. Levin [Thu, 5 Feb 2015 16:15:46 +0000 (16:15 +0000)]
x86_64: do not interpet syscall number -1 as a x32 personality syscall

Syscall number -1 might be a side effect of SECCOMP_RET_ERRNO filtering.

* syscall.c (get_scno) [X86_64]: Handle the case of scno == -1.

9 years agoImplement getrandom syscall decoding
Dmitry V. Levin [Wed, 4 Feb 2015 16:38:09 +0000 (16:38 +0000)]
Implement getrandom syscall decoding

* getrandom.c: New file.
* Makefile.am (strace_SOURCES): Add it.
* linux/dummy.h (sys_getrandom): Remove.
* linux/syscall.h (sys_getrandom): New prototype.
* xlat/getrandom_flags.in: New file.
* tests/getrandom.c: New file.
* tests/getrandom.awk: New file.
* tests/getrandom.test: New test.
* tests/Makefile.am (check_PROGRAMS): Add getrandom.
(TESTS): Add getrandom.test.
(EXTRA_DIST): Add getrandom.awk.
* tests/.gitignore: Add getrandom.

9 years agotests: add a test for select syscall decoding
Dmitry V. Levin [Wed, 4 Feb 2015 02:09:52 +0000 (02:09 +0000)]
tests: add a test for select syscall decoding

Convert test/select.c into a regular test.

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

9 years agotests: add a test for the latest dumpio fix
Dmitry V. Levin [Sun, 1 Feb 2015 00:20:32 +0000 (00:20 +0000)]
tests: add a test for the latest dumpio fix

* tests/dumpio.expected: New file.
* tests/unix-pair-send-recv.c: New file.
* tests/dumpio.test: New test.
* tests/Makefile.am (check_PROGRAMS): Add unix-pair-send-recv.
(TESTS): Add dumpio.test.
(EXTRA_DIST): Add dumpio.expected.
* tests/.gitignore: Add unix-pair-send-recv.

9 years agoFix simultaneous -e read and -e write usage
Aurelien Jacobs [Sat, 31 Jan 2015 22:57:00 +0000 (23:57 +0100)]
Fix simultaneous -e read and -e write usage

This allows using both -e read=FD and -e write=FD at the same time
with the same FD.
Without this patch, the -e write=FD is ignored if -e read=FD is used
at the same time.

Signed-off-by: Aurelien Jacobs <aurel@gnuage.org>
9 years agonet.c: remove unused HAVE_SIN6_SCOPE_ID_LINUX-based code
Dmitry V. Levin [Sat, 31 Jan 2015 01:14:39 +0000 (01:14 +0000)]
net.c: remove unused HAVE_SIN6_SCOPE_ID_LINUX-based code

The AC_SIN6_SCOPE_ID autoconf macro that was able to define
HAVE_SIN6_SCOPE_ID_LINUX was removed by commit v4.4-98-g64f793a.

* net.c [HAVE_SIN6_SCOPE_ID_LINUX]: Remove.

9 years agoprintsock: do not fetch sockaddr.sa_data twice
Dmitry V. Levin [Fri, 30 Jan 2015 13:36:49 +0000 (13:36 +0000)]
printsock: do not fetch sockaddr.sa_data twice

* net.c (printsock): Print addrbuf.sa.sa_data using print_quoted_string.

9 years agosetsockopt: add decoding of MCAST_JOIN_GROUP and MCAST_LEAVE_GROUP
Dmitry V. Levin [Fri, 30 Jan 2015 01:55:20 +0000 (01:55 +0000)]
setsockopt: add decoding of MCAST_JOIN_GROUP and MCAST_LEAVE_GROUP

* net.c (print_group_req): New function.
(print_setsockopt): Use it.

9 years agotests: add a test for sockaddr_un.sun_path decoding
Dmitry V. Levin [Thu, 29 Jan 2015 15:19:21 +0000 (15:19 +0000)]
tests: add a test for sockaddr_un.sun_path decoding

* tests/net-accept-connect.c: Allow long socket addresses.
* tests/sun_path.test: New test.
* tests/Makefile.am (TESTS): Add it.

9 years agoprintsock: print the whole sockaddr_un.sun_path
Dmitry V. Levin [Thu, 29 Jan 2015 15:19:21 +0000 (15:19 +0000)]
printsock: print the whole sockaddr_un.sun_path

* net.c (printsock): If sockaddr_un.sun_path is not NUL-terminated,
do not omit the last byte of sockaddr_un.sun_path array.

9 years agoprintsock: do not fetch sockaddr_un.sun_path twice
Dmitry V. Levin [Thu, 29 Jan 2015 07:34:40 +0000 (07:34 +0000)]
printsock: do not fetch sockaddr_un.sun_path twice

* net.c (printsock): Print addrbuf.sau.sun_path using
print_quoted_string.

9 years agonet: define all SOL_* constants
Dmitry V. Levin [Thu, 29 Jan 2015 04:42:37 +0000 (04:42 +0000)]
net: define all SOL_* constants

Ensure that all known SOL_* constants are defined.
Sync the list of known SOL_* constants with linux/socket.h.

* net.c: Provide definitions for all SOL_* constants.
Remove all SOL_* preprocessor conditionals.
(socketlayers): Disconnect from inet_protocols.
* xlat/socketlayers.in: Remove SOL_ICMP, add SOL_ALG and SOL_NFC.

9 years agosetsockopt: decode PACKET_ADD_MEMBERSHIP
Dmitry V. Levin [Thu, 29 Jan 2015 03:26:53 +0000 (03:26 +0000)]
setsockopt: decode PACKET_ADD_MEMBERSHIP

* xlat/packet_mreq_type.in: New file.
* net.c: Include "xlat/packet_mreq_type.h".
(print_packet_mreq): New function.
(print_setsockopt): Use it.

9 years agogetsockopt, setsockopt: do not decode structures in non-verbose mode
Dmitry V. Levin [Thu, 29 Jan 2015 03:11:41 +0000 (03:11 +0000)]
getsockopt, setsockopt: do not decode structures in non-verbose mode

Move the code that is common between getsockopt and setsockopt parsers
to a separate function.
Move printers specific to getsockopt and setsockopt to separate
functions, choose appropriate parsers depending on verbose mode.
Move parsers of specific socket options to separate functions.

* net.c (printicmpfilter): Rename to print_icmp_filter.
(printsockopt): Remove.
(print_sockopt_fd_level_name, print_linger, print_ucred,
print_tpacket_stats, print_getsockopt, print_tpacket_req,
print_packet_mreq, print_setsockopt): New functions.
(sys_getsockopt, sys_setsockopt): Use them.

9 years agosendmsg: do not decode msghdr in non-verbose mode
Dmitry V. Levin [Wed, 28 Jan 2015 01:52:25 +0000 (01:52 +0000)]
sendmsg: do not decode msghdr in non-verbose mode

* net.c (printmsghdr): Do not decode struct msghdr in non-verbose mode.

9 years agodecode_select: do not allocate unused memory
Dmitry V. Levin [Wed, 28 Jan 2015 01:26:04 +0000 (01:26 +0000)]
decode_select: do not allocate unused memory

* desc.c (decode_select): On entering syscall, do not allocate memory
in non-verbose mode.

9 years agoxattr: quote using print_quoted_string
Dmitry V. Levin [Mon, 26 Jan 2015 04:21:20 +0000 (04:21 +0000)]
xattr: quote using print_quoted_string

* xattr.c (print_xattr_val): Drop local quoting code, use
print_quoted_string.

9 years agov4l2: quote pixelformat
Dmitry V. Levin [Sun, 25 Jan 2015 00:27:00 +0000 (00:27 +0000)]
v4l2: quote pixelformat

* v4l2.c (print_pixelformat): Output in quoted v4l2_fourcc() format.

9 years agov4l2: quote strings
Dmitry V. Levin [Mon, 26 Jan 2015 02:45:09 +0000 (02:45 +0000)]
v4l2: quote strings

* v4l2.c (v4l2_ioctl): Print strings using print_quoted_string.

9 years agomips: quote sysmips nodename
Dmitry V. Levin [Sat, 24 Jan 2015 22:33:55 +0000 (22:33 +0000)]
mips: quote sysmips nodename

* sysmips.c (sys_sysmips): Print nodename using print_quoted_string.

9 years agoblock_ioctl: quote strings
Dmitry V. Levin [Sun, 25 Jan 2015 01:04:01 +0000 (01:04 +0000)]
block_ioctl: quote strings

* block.c (print_blkpg_req): Print blkpg_partition.devname and
blkpg_partition.volname using print_quoted_string.
(block_ioctl): Print blk_user_trace_setup.name using print_quoted_string.

9 years agosys_uname: quote struct utsname members
Dmitry V. Levin [Sat, 24 Jan 2015 22:08:07 +0000 (22:08 +0000)]
sys_uname: quote struct utsname members

* uname.c (PRINT_UTS_MEMBER): New macro.
(sys_uname): Use them.

9 years agosock_ioctl: quote network interface names
Dmitry V. Levin [Sat, 24 Jan 2015 20:58:23 +0000 (20:58 +0000)]
sock_ioctl: quote network interface names

* sock.c (print_ifname): New function.
(sock_ioctl): Use it to quote ifr_name, ifru_newname, and ifru_slave.

9 years agoprintsock: quote network interface names
Dmitry V. Levin [Sat, 24 Jan 2015 20:23:02 +0000 (20:23 +0000)]
printsock: quote network interface names

* net.c (printsock): Print network interface names returned by
if_indextoname() using print_quoted_string.

9 years agogetdents, getdents64: quote filenames
Dmitry V. Levin [Sun, 25 Jan 2015 00:04:20 +0000 (00:04 +0000)]
getdents, getdents64: quote filenames

* dirent.c (print_old_dirent): Fix quoting.
(sys_getdents): Print d_name using print_quoted_string.
(sys_getdents64): Likewise.
* tests/getdents.test: Test it.
* tests/getdents.awk: Update.

9 years agoprintfd: quote pathnames
Dmitry V. Levin [Sat, 24 Jan 2015 19:51:39 +0000 (19:51 +0000)]
printfd: quote pathnames

Change printfd() behaviour in show_fd_path mode to quote pathnames
the same way printpathn() does.

* util.c (printfd): Print non-socket paths using print_quoted_string.
* tests/scm_rights-fd.test: Test it.
* tests/scm_rights.c: Update.

9 years agoRework string_quote API
Dmitry V. Levin [Mon, 26 Jan 2015 01:17:08 +0000 (01:17 +0000)]
Rework string_quote API

string_quote() has proven to be too hard to use, replace it with
print_quoted_string() that does memory allocation and prints the result.

* defs.h (string_quote): Remove.
(QUOTE_0_TERMINATED, QUOTE_OMIT_LEADING_TRAILING_QUOTES): New macros.
(print_quoted_string): New prototype.
* util.c (string_quote): Make static; take "style" flags instead
of "len", treat QUOTE_0_TERMINATED style flag as former (len == -1);
add QUOTE_OMIT_LEADING_TRAILING_QUOTES style flag support.
(ALLOCA_CUTOFF, use_alloca): New macros.
(print_quoted_string): New function.
(printpathn, printstr): Update to new API.
* loop.c (loop_ioctl): Likewise.
* mtd.c (ubi_ioctl): Likewise.
* net.c (print_scm_security): Likewise.
* socketutils.c (unix_parse_response): Likewise.

9 years agoavr32: fix typo in sys_timerfd syscall entry
Dmitry V. Levin [Sat, 24 Jan 2015 16:40:00 +0000 (16:40 +0000)]
avr32: fix typo in sys_timerfd syscall entry

* linux/avr32/syscallent.h (timerfd): Change sys_name to "timerfd".

9 years agohppa: fix typos in getresuid and getresgid syscall entries
Dmitry V. Levin [Sat, 24 Jan 2015 16:37:36 +0000 (16:37 +0000)]
hppa: fix typos in getresuid and getresgid syscall entries

* linux/hppa/syscallent.h (getresuid): Change sys_func to sys_getresuid.
(getresgid): Change sys_func to sys_getresgid.

9 years agohppa: fix typo in getpeername syscall entry
Helge Deller [Sat, 24 Jan 2015 16:34:31 +0000 (16:34 +0000)]
hppa: fix typo in getpeername syscall entry

This fixes an obvious typo which prints "lock" instead of "getpeername"
for the getpeername syscall.

* linux/hppa/syscallent.h (getpeername): Change sys_name to "getpeername".

9 years agoImpove struct cmsghdr decoding
Dmitry V. Levin [Sat, 24 Jan 2015 15:20:31 +0000 (15:20 +0000)]
Impove struct cmsghdr decoding

Print all cmsghdr structures in msg_control array,
not just the first one.
Change output format to be consistent with other parts of strace
where structures and arrays are printed.
Implement decoder for SCM_SECURITY message type.

* net.c (print_scm_rights, print_scm_creds, print_scm_security):
New functions.
(printcmsghdr): Use them.  Iterate over all members of the array.
* xlat/scmvals.in: Add SCM_SECURITY.
* tests/scm_rights.c (main): Pass one more descriptor to the receiver.
Set SO_PASSCRED on the receiver part.  Reserve enough space to receive
SCM_CREDENTIALS and SCM_RIGHTS.
* tests/scm_rights-fd.test: Update.

9 years agoUpdate SO_* constants
Dmitry V. Levin [Sat, 24 Jan 2015 15:16:23 +0000 (15:16 +0000)]
Update SO_* constants

* xlat/sockoptions.in: Add SO_DOMAIN, SO_MARK, SO_NOFCS, SO_PASSSEC,
SO_PROTOCOL, SO_RCVBUFFORCE, SO_SNDBUFFORCE, SO_TIMESTAMPING,
and SO_TIMESTAMPNS.

9 years agotests: run tests for each supported personality
Dmitry V. Levin [Fri, 23 Jan 2015 22:45:02 +0000 (22:45 +0000)]
tests: run tests for each supported personality

When strace supports more than one personality, run test suite
for each personality supported by the host system.

* bootstrap: Create tests-m32 and tests-mx32 subtrees from tests.
* configure.ac: Check for -m32 and -mx32 runtime support.
(AC_CONFIG_FILES): Add tests-m32/Makefile and tests-mx32/Makefile.
* Makefile.am [HAVE_M32_RUNTIME] (TESTS_M32): Define.
[HAVE_MX32_RUNTIME] (TESTS_MX32): Define.
(SUBDIRS): Add $(TESTS_M32) $(TESTS_MX32).
* .gitignore: Add /tests-m32 and /tests-mx32.

9 years agoFix ILP32 personality struct cmsghdr decoding on LP64 architectures
Dmitry V. Levin [Sat, 24 Jan 2015 01:08:57 +0000 (01:08 +0000)]
Fix ILP32 personality struct cmsghdr decoding on LP64 architectures

* net.c (union_cmsghdr): New union.
[SUPPORTED_PERSONALITIES > 1 && SIZEOF_LONG > 4] (cmsghdr32): New structure.
(printcmsghdr): Properly handle the case of current_wordsize < sizeof(long).