IF YOU WOULD LIKE TO GET AN ACCOUNT, please write an
email to Administrator. User accounts are meant only to access repo
and report issues and/or generate pull requests.
This is a purpose-specific Git hosting for
BaseALT
projects. Thank you for your understanding!
Только зарегистрированные пользователи имеют доступ к сервису!
Для получения аккаунта, обратитесь к администратору.
strace didn't decode important fields in the iocb passed to io_submit.
This patch changes the code to dump them all. Also it prefixes the fields
with names to make it easier to read.
* desc.c (iocb_cmd_lookup, print_common_flags): New functions.
(sys_io_submit): New iocb decoder.
The test have to be adjusted after commit v4.6-5-g3454e4b.
* ptrace_setoptions: Update grep pattern, rename to
ptrace_setoptions_followfork.
* tests/Makefile.am (TESTS): Rename ptrace_setoptions to
ptrace_setoptions_followfork.
* linux/*/syscallent.h: For those arches which use sys_sigreturn,
not printargs, to show [rt_]sigreturn syscall, change number of arguments
from 1 to 0: sys_sigreturn function doesn't use syscall parameters.
(I guess kernel doesn't actually _have_ any parameters for this syscall,
at least on these architectures). Do the same change for I386 and x86-64
even though they use printargs: I looked at kernel code and syscall
definitely doesn't have any parameters on these arches.
(I hesitate to change 1 to 0 params for arches I don't know -
it is remotely possible some of them do have a parameter for this syscall).
Signed-off-by: Denys Vlasenko <dvlasenk@redhat.com>
* signal.c (sys_sigreturn): move stack pointer variables,
and for SPARC and MIPS, stack pointer and sigmask reading code
into "if (entering) ..." block, because it is only needed
in this branch; load tcp->u_arg[1] into sigmask for display
_after_ we know for sure u_arg[1] does contain valid sigmask
(IOW: perform operation only when we know we will need the result)
Signed-off-by: Denys Vlasenko <dvlasenk@redhat.com>
* syscall.c [I386] (syscall_enter): Do not call umoven
to fetch zero bytes. This is just an optimization.
Signed-off-by: Denys Vlasenko <dvlasenk@redhat.com>
* signal.c (signame, long_to_sigset, printsigmask, printsignal):
Convert old-style C function definitions to a "modern" form.
This does not change any actual code.
Signed-off-by: Denys Vlasenko <dvlasenk@redhat.com>
The "return 0" line was accidentally deleted circa 2007,
which made sigreturn on MIPS always display "= 0" return
instead of more informative " = ? (mask now [MASK])".
* strace.c (sys_sigreturn): Add wrongly deleted "return 0" line
Signed-off-by: Denys Vlasenko <dvlasenk@redhat.com>
We already do it in the normal case, but in rare code path where
tracee is gone (SIGKILLed?) sometimes we were printing this:
"SYSCALL(ARGS <unavailable>)= ? <unavailable>" - note jammed together ")=".
test/sigkill_rain.c can be used to verify the fix.
* strace.c (printleader): add a space after ")" in " <unavailable>)"
Signed-off-by: Denys Vlasenko <dvlasenk@redhat.com>
Added README; modified sigkill_rain.c to be more understandable,
made clone.c compile; added wait_must_be_interruptible.c test;
updated Makefile and .gitignore.
Signed-off-by: Denys Vlasenko <dvlasenk@redhat.com>
ARM OABI and ARM EABI have different function parameters passing rules.
With EABI, 64-bit function parameters passed in registers are aligned to
an even-numbered register instead of using the next available pair, see
http://lkml.org/lkml/2006/1/12/175
This rule also applies to syscall's arguments.
* linux/arm/syscallent.h (pread, pwrite, truncate64, ftruncate64,
readahead, preadv, pwritev): Fix number of arguments.
* util.c (printllval): Align 64bit argument to 64bit boundary on
__ARM_EABI__.
Reported-by: Damir Shayhutdinov <damir@altlinux.org>
Signed-off-by: Kirill A. Shutemov <kirill@shutemov.name>
Signed-off-by: Dmitry V. Levin <ldv@altlinux.org>
based on Dmitry's comments.
* defs.h ([p]error_msg[_and_die]): Declare new functions.
* strace.c (SYSCALLTRAP): Rename to syscall_trap_sig.
([p]error_msg[_and_die]): Define new functions.
(strace_tracer_pid): New variable, it controls which pid will
do cleanup on exit via [p]error_msg_and_die.
(main): Set strace_tracer_pid to our initial pid.
(startup_attach): Change strace_tracer_pid if we are in -D mode.
(test_ptrace_setoptions_for_all): Minor changes to logic,
such as better diagnostic messages.
* defs.h (ptrace_setoptions_for_all): Expose this variable.
* strace.c (ptrace_setoptions_for_all): Remove "static".
* process.c (internal_exec): Don't set TCB_WAITEXECVE bit
if we know that post-execve SIGTRAP is not going to happen.
* defs.h (ptrace_setoptions): Variable renamed to ptrace_setoptions_followfork.
* process.c (internal_fork): Ditto.
* strace.c (ptrace_setoptions_for_all): New variable.
(SYSCALLTRAP): New variable.
(error_msg_and_die): New function.
(test_ptrace_setoptions_for_all): New function.
(main): Call test_ptrace_setoptions_for_all() at init.
(handle_ptrace_event): Handle PTRACE_EVENT_EXEC (by ignoring it).
(trace): Check events and set ptrace options without -f too.
Check WSTOPSIG(status) not for SIGTRAP, but for SYSCALLTRAP.
* pathtrace.c: New file, implements matching syscall arguments to
user-specified file paths.
* Makefile.am (strace_SOURCES): Add pathtrace.c.
* defs.h (TCB_FILTERED, filtered): New defines.
(getfdpath, pathtrace_select, pathtrace_match, show_fd_path,
tracing_paths): New declarations.
* strace.c (show_fd_path, tracing_paths): New global variables.
(usage, main): Implement handling of -y and -P options.
* strace.1: Add descriptions of -y and -P options.
* syscall.c (trace_syscall_entering): Add path matching logic to the
print/noprint decision and set the TCB_FILTERED bit appropriately.
(trace_syscall_exiting): Use filtered() macro that checks the
TCB_FILTERED bit to determine print/noprint status.
* util.c (printfd): Use getfdpath().
This unifies all the ioctlent.h's in the linux subdir while still
allowing each arch to maintain its own minor list.
The basic method is:
- each arch has linux/<arch>/ioctlent.h.in which defines only the
arch-specific ioctls;
- linux/ioctlent.h.in which defines only the common ioctls;
- at build time, these two headers are combined and sorted to produce
the linux/ioctlent.h file.
This also requires a little tweaking of the include files since the
common ioctlent.h is a built file.
* linux/ioctlent.h: Split into linux/ioctlent.h.in and
linux/i386/ioctlent.h.in, remove asm entries from the former, remove
non-asm entries from the latter.
* linux/alpha/ioctlent.h: Rename to linux/alpha/ioctlent.h.in, remove
non-asm entries.
* linux/bfin/ioctlent.h: Rename to linux/bfin/ioctlent.h.in, remove
non-asm entries.
* linux/hppa/ioctlent.h: Rename to linux/hppa/ioctlent.h.in, remove
non-asm entries.
* linux/ia64/ioctlent.h: Rename to linux/ia64/ioctlent.h.in, remove
non-asm entries.
* linux/mips/ioctlent.h: Rename to linux/mips/ioctlent.h.in, remove
non-asm entries.
* linux/powerpc/ioctlent.h: Rename to linux/powerpc/ioctlent.h.in,
remove non-asm entries.
* linux/s390/ioctlent.h: Rename to linux/s390/ioctlent.h.in, remove
non-asm entries.
* linux/sh/ioctlent.h: Rename to linux/sh/ioctlent.h.in, remove
non-asm entries.
* linux/sparc/ioctlent.h: Rename to linux/sparc/ioctlent.h.in, remove
non-asm entries.
* linux/arm/ioctlent.h.in: New file.
* linux/avr32/ioctlent.h.in: Likewise.
* linux/i386/ioctlent.h.in: Likewise.
* linux/m68k/ioctlent.h.in: Likewise.
* linux/microblaze/ioctlent.h.in: Likewise.
* linux/tile/ioctlent.h.in: Likewise.
* linux/x86_64/ioctlent.h.in: Likewise.
* linux/s390x/ioctlent.h.in: Include ioctlent.h.in instead of
ioctlent.h.
* linux/sh64/ioctlent.h.in: Likewise.
* linux/sparc64/ioctlent.h.in: Likewise.
* linux/arm/ioctlent1.h: Update ioctlent.h include.
* linux/powerpc/ioctlent1.h: Likewise.
* linux/sparc/ioctlent1.h: Likewise.
* linux/sparc64/ioctlent1.h: Likewise.
* linux/x86_64/ioctlent1.h: Likewise.
* Makefile.am (AM_CPPFLAGS): Add -I$(builddir)/$(OS).
(EXTRA_DIST): Update.
[MAINTAINER_MODE && LINUX]: Convert from ioctlent_h to ioctlent_h_in.
[LINUX]: Add $(builddir)/$(OS)/ioctlent.h generation rules.
* .gitignore: Add linux/ioctlent.h.
Signed-off-by: Mike Frysinger <vapier@gentoo.org>
* strace.c [!USE_PROCFS] (trace): Differentiate output format depending
on PTRACE_GETSIGINFO success or failure. In the former case, use
printsiginfo() to show more details about received signal.
* strace.c [!USE_PROCFS] (trace): Assume that PTRACE_GETSIGINFO is
available. Replace PT_GETSIGINFO with PTRACE_GETSIGINFO. Use
PTRACE_GETSIGINFO for all signals.
* file.c (inotify_modes): Terminate with NULL entry.
* net.c (sock_type_flags): Make this array static.
(socketlayers): Add a comment that this array should remain not
NULL-terminated.
* tests/ptrace_setoptions: Replace "grep -q" with "grep > /dev/null".
The former may result to strace being killed by SIGPIPE, which in
certain configuratons may lead to generation of a core file.
Suggested by Mike Frysinger.