summaryrefslogtreecommitdiff
path: root/linux/i386
Commit message (Collapse)AuthorAge
* Add TM flag to shmat and shmdt syscall entriesDmitry V. Levin2014-05-12
|
* fanotify_mark: fix number of args for 32bit archesMike Frysinger2013-09-11
| | | | | | | | | | | | | | | | | | | | | | | | The fanotify_mark func takes a 64bit mask, so 32bit arches have to split it up into two fields. When the syscall was added, it was listed as only having 5 fields total (since that's correct for 64bit systems). * linux/arm/syscallent.h: Set the number of fanotify_mark arguments to 6. * linux/bfin/syscallent.h: Likewise. * linux/hppa/syscallent.h: Likewise. * linux/i386/syscallent.h: Likewise. * linux/m68k/syscallent.h: Likewise. * linux/metag/syscallent.h: Likewise. * linux/microblaze/syscallent.h: Likewise. * linux/mips/syscallent-o32.h: Likewise. * linux/or1k/syscallent.h: Likewise. * linux/powerpc/syscallent.h: Likewise. * linux/s390/syscallent.h: Likewise. * linux/sh/syscallent.h: Likewise. * linux/sparc/syscallent.h: Likewise. * linux/tile/syscallent1.h: Likewise. Signed-off-by: Mike Frysinger <vapier@gentoo.org> Acked-by: Chris Metcalf <cmetcalf@tilera.com> [for tile]
* sync_file_range: fix number of syscall argumentsDmitry V. Levin2013-05-08
| | | | | | | | | | | | | | | | | | | | | * linux/avr32/syscallent.h: Set the number of sync_file_range arguments to 6. * linux/bfin/syscallent.h: Likewise. * linux/hppa/syscallent.h: Likewise. * linux/i386/syscallent.h: Likewise. * linux/m68k/syscallent.h: Likewise. * linux/microblaze/syscallent.h: Likewise. * linux/mips/syscallent-o32.h: Likewise. * linux/or1k/syscallent.h: Likewise. * linux/s390/syscallent.h: Likewise. * linux/sh/syscallent.h: Likewise. * linux/powerpc/syscallent.h: Change sync_file_range to sync_file_range2, set the number of sync_file_range2 arguments to 6. * linux/tile/syscallent.h: Change sync_file_range to sync_file_range2, set the number of sync_file_range2 arguments to 4. * linux/tile/syscallent1.h: Change sync_file_range to sync_file_range2. update handler. * linux/xtensa/syscallent.h: Likewise.
* Add syscall entries for new linux syscallsDmitry V. Levin2013-05-08
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | * linux/dummy.h: Add printargs aliases for sys_finit_module, sys_kcmp and sys_sync_file_range2. * linux/alpha/syscallent.h: Add entries for process_vm_readv and process_vm_writev. * linux/bfin/syscallent.h: Likewise. * linux/arm/syscallent.h: Add entries for sync_file_range2, kcmp and finit_module. * linux/hppa/syscallent.h: Add entries for process_vm_readv, process_vm_writev, kcmp and finit_module. * linux/tile/syscallent.h: Likewise. * linux/tile/syscallent1.h: Likewise. * linux/ia64/syscallent.h: Add entry for finit_module. * linux/i386/syscallent.h: Add entries for kcmp and finit_module. * linux/m68k/syscallent.h: Likewise. * linux/metag/syscallent.h: Likewise. * linux/microblaze/syscallent.h: Likewise. * linux/mips/syscallent-n32.h: Likewise. * linux/mips/syscallent-n64.h: Likewise. * linux/mips/syscallent-o32.h: Likewise. * linux/or1k/syscallent.h: Likewise. * linux/powerpc/syscallent.h: Likewise. * linux/sh/syscallent.h: Likewise. * linux/sh64/syscallent.h: Likewise. * linux/x32/syscallent.h: Likewise. * linux/x86_64/syscallent.h: Likewise. * linux/xtensa/syscallent.h: Likewise. * linux/s390/syscallent.h: Add entries for s390_runtime_instr, kcmp and finit_module. * linux/s390x/syscallent.h: Likewise. * linux/sparc/syscallent.h: Add entries for kern_features, kcmp and finit_module.
* Move subcall decoding configuration out of the common codeDmitry V. Levin2013-05-07
| | | | | | | | | | | | | | | | | | * Makefile.am (EXTRA_DIST): Add linux/subcall.h. * linux/syscall.h (SYS_socket_subcall): Remove. (SYS_socket_nsubcalls, SYS_ipc_subcall, SYS_ipc_nsubcalls): Move to ... * linux/subcall.h: ... new file. * linux/arm/syscallent.h: Define SYS_socket_subcall, include subcall.h. * linux/i386/syscallent.h: Likewise. * linux/m68k/syscallent.h: Likewise. * linux/powerpc/syscallent.h: Likewise. * linux/s390/syscallent.h: Likewise. * linux/s390x/syscallent.h: Likewise. * linux/sh/syscallent.h: Likewise. * linux/sh64/syscallent.h: Likewise. * linux/sparc/syscallent.h: Likewise. Suggested by Mike Frysinger and Chris Metcalf.
* Assorted fixes to syscallent.hDenys Vlasenko2013-03-05
| | | | | | | | | | | | | | or1k was missing TM on many memory-related syscalls sys_lookup_dcookie is 3-arg on 64-bit arches, and isn't TF sys_recvmsg is 3-arg on all arches sys_nfsservctl is 3-arg on all arches sys_timerfd_create is 2-arg on all arches sys_[f]truncate64 is 4-arg or 3-arg, never 5-arg truncate64 is TF sys_[l]lseek is TD fstat[64] is TD Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
* Clean up mmap decodingDenys Vlasenko2013-02-19
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Previous code merges too many similar, but different ways of decoding mmap. For example, sys_old_mmap is "params in memory" API... except SH[64], where it is "params in regs", i.e. what sys_mmap ("new mmap") function does on other arches! It's much simpler when every mmap handler has same API regardless of arch. Where API means whether params are in regs or in memory, and whether offset is in bytes, pages, or 4k blocks. Then we just insert correct function pointers into arch syscall tables. It turns out there are four common mmap APIs over all architectures which exist in Linux kernel, and one outlier for S390. A number of mmap decoders were plain wrong in arch tables. For example, BFIN has no old_mmap. It returns ENOSYS. I checked kernel sources for all arches nad fixed the tables. There was dead code for x86_64 for old_mmap: x86_64 has no old_mmap. * mem.c: Refactor mmap functions so that we have five mmap syscall handlers, each with the fixed API (not varying by arch). * pathtrace.c (pathtrace_match): Adjust sys_func == mmap_func checks. * linux/syscall.h: Declare new mmap syscall handler functions. * linux/arm/syscallent.h: mmap2 is sys_mmap_pgoff. * linux/avr32/syscallent.h: mmap is sys_mmap_pgoff. * linux/bfin/syscallent.h: old_mmap is ENOSYS, mmap2 is sys_mmap_pgoff. * linux/hppa/syscallent.h: mmap2 is sys_mmap_4koff. * linux/i386/syscallent.h: mmap2 is sys_mmap_pgoff. * linux/ia64/syscallent.h: mmap2 is sys_mmap_pgoff. * linux/m68k/syscallent.h: mmap2 is sys_mmap_pgoff. * linux/microblaze/syscallent.h: old_mmap is sys_mmap, mmap2 is sys_mmap_pgoff. * linux/mips/syscallent.h: mmap is sys_mmap_4kgoff. * linux/or1k/syscallent.h: mmap2 is sys_mmap_pgoff. * linux/powerpc/syscallent.h: mmap2 is sys_mmap_4kgoff. * linux/s390/syscallent.h: mmap2 is sys_old_mmap_pgoff. * linux/s390x/syscallent.h: mmap is sys_old_mmap and thus has 1 arg. * linux/sh/syscallent.h: old_mmap2 is sys_mmap, mmap2 is sys_mmap_4koff. * linux/sh64/syscallent.h: Likewise. * linux/sparc/syscallent1.h: mmap is TD|TM. * linux/tile/syscallent1.h: mmap2 is sys_mmap_4koff. Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
* Cosmetic fixes to syscall tables, no code changesDenys Vlasenko2013-02-17
| | | | Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
* Move asm-generic ioctl definitions to linux/ioctlent.h.inDmitry V. Levin2012-11-12
| | | | | | | | | | * linux/ioctlent.h.in: Add asm-generic ioctl entries from all linux/*/ioctlent.h.in files. * linux/bfin/ioctlent.h.in: Remove asm-generic ioctl entries. * linux/i386/ioctlent.h.in: Likewise. * linux/powerpc/ioctlent.h.in: Likewise. * linux/s390/ioctlent.h.in: Likewise. * linux/sparc/ioctlent.h.in: Likewise.
* Enhance quotactl decodingDmitry V. Levin2012-10-26
| | | | | | * quota.c (sys_quotactl): Decode 2nd syscall argument using printpath. * pathtrace.c (pathtrace_match): Add quotactl support. * linux/*/syscallent.h: Add TF flag to quotactl entry.
* Add -e trace=memory optionNamhyung Kim2012-10-26
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Add a new 'memory' category for tracing memory mapping related syscalls. Affected syscalls are: break, brk, get_mempolicy, madvise, mbind, migrate_pages, mincore, mlock, mlockall, mmap, move_pages, mprotect, mremap, msync, munlock, munlockall, munmap, remap_file_pages, and set_mempolicy. * defs.h (TRACE_MEMORY): New macro. * syscall.c (lookup_class): Handle trace=memory option. * strace.1: Document it. * linux/alpha/syscallent.h: Add TM flag to memory mapping related syscalls. * linux/arm/syscallent.h: Likewise. * linux/avr32/syscallent.h: Likewise. * linux/bfin/syscallent.h: Likewise. * linux/hppa/syscallent.h: Likewise. * linux/i386/syscallent.h: Likewise. * linux/ia64/syscallent.h: Likewise. * linux/m68k/syscallent.h: Likewise. * linux/microblaze/syscallent.h: Likewise. * linux/mips/syscallent.h: Likewise. * linux/powerpc/syscallent.h: Likewise. * linux/s390/syscallent.h: Likewise. * linux/s390x/syscallent.h: Likewise. * linux/sh/syscallent.h: Likewise. * linux/sh64/syscallent.h: Likewise. * linux/sparc/syscallent.h: Likewise. * linux/tile/syscallent.h: Likewise. * linux/x32/syscallent.h: Likewise. * linux/x86_64/syscallent.h: Likewise. Signed-off-by: Namhyung Kim <namhyung.kim@lge.com>
* Shrink space needed by undefined syscalls in syscall tables.Denys Vlasenko2012-03-19
| | | | | | | | | | | | | | | | | | | | | | | | Undefined syscall looked like this before this change: { 5, 0, printargs, "SYS_53" }, That is, "SYS_53" string had to be allocated and stored in strace binary. Since now SCNO_IN_RANGE() macro requires sysent[scno].sys_func != NULL for valid syscalls, we can replace printargs with NULL in such lines and make them "invalid", thus not requiring syscall name string. Savings on i386: text data bss dec hex filename 237389 704 18944 257037 3ec0d strace.before 236973 704 18944 256621 3ea6d strace Savings on mips: 336551 153692 38320 528563 810b3 strace.before 275543 153688 38320 467551 7225f strace Tested to still decode undefined syscalls correctly (syscall no. 222 on i386). * linux/*/syscallent.h: Replace 'printargs, "SYS_nnn"' with 'NULL, NULL'. Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
* Revert "Remove underscores from a few syscall names which have them"Denys Vlasenko2012-03-17
| | | | This reverts commit 31972d52b1059d8faca1c5f417c2db1a90b868ae.
* Remove underscores from a few syscall names which have themDenys Vlasenko2012-03-17
| | | | | | | | | | | | | | | | | | | | Affected names are "_newselect", "_llseek", "_sysctl". I see no apparent reason why they have leading underscores. Moreover, some arches have underscored names and some have non-underscored ones. This is not consistent. I verified that every architectire I touched did not have a similarly named syscall without underscore, thus this change does not introduce new ambiquities. I left "_exit" untouched for now, but the same points stand for it too: some architectures use "exit" and no one complains. So why many arches are using "_exit"? * linux/*/syscallent.h: Remove underscores from displayed syscall names for _newselect, _llseek, _sysctl. Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
* Tidy up includes and copyright notices, fix indentationDenys Vlasenko2012-03-16
| | | | | | | | | | | | | | | The files not mentioned in changelog below had only copyright notices fixes and indentation fixes. * defs.h: Include <stdint.h> and <inttypes.h>. * file.c: Do not include <inttypes.h>. Move struct kernel_dirent declaration below top include block. * block.c: Do not include <stdint.h> and <inttypes.h>. * quota.c: Likewise. * desc.c: Likewise. * signal.c: Likewise. Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
* Update ioctl entriesDmitry V. Levin2012-03-10
| | | | | * linux/ioctlent.h.in: Regenerate from v3.3 headers. * linux/i386/ioctlent.h.in: Likewise.
* Add syscall entries for new linux syscallsDmitry V. Levin2012-03-10
| | | | | | | | | | | | | | | | | | | | * linux/i386/syscallent.h: Update process_vm_writev handler. * linux/powerpc/syscallent.h: Likewise. * linux/x86_64/syscallent.h: Likewise. * linux/alpha/syscallent.h: Add entries for accept4 and sendmmsg. * linux/arm/syscallent.h: Add entries for process_vm_readv and process_vm_writev. * linux/m68k/syscallent.h: Likewise. * linux/mips/syscallent.h: Likewise. * linux/s390/syscallent.h: Likewise. * linux/s390x/syscallent.h: Likewise. * linux/sh/syscallent.h: Likewise. * linux/sh64/syscallent.h: Likewise. * linux/sparc/syscallent.h: Likewise. * linux/ia64/syscallent.h: Add entries for process_vm_readv, process_vm_writev and accept4. * linux/microblaze/syscallent.h: Add entries for sendmmsg, process_vm_readv and process_vm_writev.
* Remove initialization of native_scno fieldDmitry V. Levin2012-02-20
| | | | | | | | | | * linux/i386/syscallent.h: Remove native_scno initialization for clone, fork and vfork. * linux/ia64/syscallent.h (sys_fork, sys_vfork): Remove redirections to printargs. * linux/syscall.h [IA64]: Do not define SYS_fork and SYS_vfork. * util.c (printcall) [IA64]: Likewise. (setbpt): Use sys_func to check for clone, fork and vfork syscalls.
* Do not use SYS_ipc and SYS_socketcallDmitry V. Levin2012-02-20
| | | | | | | | | | | | | | | | * linux/dummy.h (sys_ipc, sys_socketcall): Remove redirections to printargs. * linux/ia64/syscallent.h: Likewise. * linux/i386/syscallent.h: Remove native_scno initialization for "ipc" and "socketcall". * linux/syscall.h (sys_ipc, sys_socketcall): New prototypes. (SYS_ipc, SYS_socketcall): Remove no longer used constants. [IA64]: Remove undefining of ipc and socket SYS_* constants. [SPARC || SPARC64]: Remove unused ipc SYS_* constants. * ipc.c (sys_ipc): New function. * sock.c (sys_socketcall): Likewise. * syscall.c (trace_syscall_entering): Use sys_func to check for ipc and socket subcalls.
* Remove initialization of native_scno field for most of syscallsDmitry V. Levin2012-02-20
| | | | | | | | | | | | | | | | The native_scno field is not so much used in the code than before. In many cases sys_func is checked instead, and for most of syscall entries there is no need to initialize native_scno. * linux/i386/syscallent.h: Remove native_scno initialization for _exit, read, write, waitpid, execve, wait4, sysfs, readv, writev, pread64, pwrite64, exit_group, waitid, send, recv, sendto and recvfrom syscall entries. * linux/syscall.h: Do not define no longer used SYS_waitid and SYS_sub_* constants. [IA64]: Do not define SYS_waitpid and SYS32_* constants. * defs.h: Do not define no longer used __NR_exit_group constant. * strace.c [USE_PROCFS] (proc_open): Use sys_func to check for execve.
* Use process_vm_readv instead of PTRACE_PEEKDATA to read data blocksDenys Vlasenko2012-01-28
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Currently, we use PTRACE_PEEKDATA to read things like filenames and data passed by I/O syscalls. PTRACE_PEEKDATA gets one word per syscall. This is VERY expensive. For example, in order to print fstat syscall, we need to perform more than twenty trips into kernel to fetch one struct stat! Kernel 3.2 got a new syscall, process_vm_readv(), which can be used to copy data blocks out of process' address space. This change uses it in umoven() and umovestr() functions if possible, with fallback to old method if process_vm_readv() fails. If it returns ENOSYS, we don't try to use it anymore, eliminating overhead of trying it on older kernels. Result of "time strace -oLOG ls -l /usr/lib >/dev/null": before patch: 0.372s After patch: 0.262s * util.c (process_vm_readv): Wrapper to call process_vm_readv syscall. (umoven): Use process_vm_readv for block reads of tracee memory. (umovestr): Likewise. * linux/syscall.h: Declare new function sys_process_vm_readv. * process.c (sys_process_vm_readv): Decoder for new syscall. * linux/i386/syscallent.h: Add process_vm_readv, process_vm_writev syscalls. * linux/x86_64/syscallent.h: Likewise. * linux/powerpc/syscallent.h: Likewise. Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
* Add syscall entries for new linux syscallsDmitry V. Levin2011-11-26
| | | | | | | | | | | | | | | | | | | | | | | | | | * linux/dummy.h: Add printargs parsers for new syscalls. * linux/arm/syscallent.h: Add entries for sys_clock_adjtime, sys_name_to_handle_at, sys_open_by_handle_at, sys_sendmmsg, sys_setns and sys_syncfs. * linux/i386/syscallent.h: Likewise. * linux/ia64/syscallent.h: Likewise. * linux/mips/syscallent.h: Likewise. * linux/powerpc/syscallent.h: Likewise. * linux/sh/syscallent.h: Likewise. * linux/sh64/syscallent.h: Likewise. * linux/sparc/syscallent.h: Likewise. * linux/x86_64/syscallent.h: Likewise. * linux/alpha/syscallent.h: Add entries for sys_clock_adjtime, sys_name_to_handle_at, sys_open_by_handle_at, sys_setns and sys_syncfs. * linux/m68k/syscallent.h: Likewise. * linux/microblaze/syscallent.h: Likewise. * linux/s390/syscallent.h: Likewise. * linux/s390x/syscallent.h: Likewise. * linux/avr32/syscallent.h: Add entry for sys_setns. * linux/bfin/syscallent.h: Add entries for sys_sendmmsg and sys_setns. * linux/hppa/syscallent.h: Add entries for sys_clock_adjtime, fanotify_init, fanotify_mark, sys_name_to_handle_at, sys_open_by_handle_at, sys_sendmmsg, sys_setns and sys_syncfs.
* Fix sendmsg syscall entriesDmitry V. Levin2011-11-25
| | | | | | | | | | | | | | | | | | * linux/arm/syscallent.h: Fix number of sendmsg arguments. * linux/avr32/syscallent.h: Likewise. * linux/bfin/syscallent.h: Likewise. * linux/hppa/syscallent.h: Likewise. * linux/i386/syscallent.h: Likewise. * linux/m68k/syscallent.h: Likewise. * linux/microblaze/syscallent.h: Likewise. * linux/powerpc/syscallent.h: Likewise. * linux/s390/syscallent.h: Likewise. * linux/s390x/syscallent.h: Likewise. * linux/sh/syscallent.h: Likewise. * linux/sh64/syscallent.h: Likewise. * linux/sparc/syscallent.h: Likewise. * linux/tile/syscallent.h: Likewise. * linux/x86_64/syscallent.h: Likewise.
* Fix mlockall syscall entriesDmitry V. Levin2011-11-25
| | | | | | | | | | | | | | | | * linux/arm/syscallent.h: Fix number of mlockall arguments. * linux/avr32/syscallent.h: Likewise. * 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/s390x/syscallent.h: Likewise. * linux/sh/syscallent.h: Likewise. * linux/sh64/syscallent.h: Likewise. * linux/sparc/syscallent.h: Likewise. * linux/tile/syscallent.h: Likewise. * linux/x86_64/syscallent.h: Likewise.
* Fix epoll_pwait syscall entriesDmitry V. Levin2011-11-25
| | | | | | | | | | | | | | | | | | | | * linux/alpha/syscallent.h: Fix number of epoll_pwait arguments. * linux/arm/syscallent.h: Likewise. * linux/avr32/syscallent.h: Likewise. * linux/bfin/syscallent.h: Likewise. * linux/i386/syscallent.h: Likewise. * linux/ia64/syscallent.h: Likewise. * linux/m68k/syscallent.h: Likewise. * linux/microblaze/syscallent.h: Likewise. * linux/mips/syscallent.h: Likewise. * linux/powerpc/syscallent.h: Likewise. * linux/s390/syscallent.h: Likewise. * linux/s390x/syscallent.h: Likewise. * linux/sh/syscallent.h: Likewise. * linux/sh64/syscallent.h: Likewise. * linux/sparc/syscallent.h: Likewise. * linux/tile/syscallent.h: Likewise. * linux/x86_64/syscallent.h: Likewise.
* Fix reboot syscall entriesDmitry V. Levin2011-11-25
| | | | | | | | | | | | | | | | | | | | | * linux/alpha/syscallent.h: Fix number of reboot arguments. * linux/arm/syscallent.h: Likewise. * linux/avr32/syscallent.h: Likewise. * linux/bfin/syscallent.h: Likewise. * linux/hppa/syscallent.h: Likewise. * linux/i386/syscallent.h: Likewise. * linux/ia64/syscallent.h: Likewise. * linux/m68k/syscallent.h: Likewise. * linux/microblaze/syscallent.h: Likewise. * linux/mips/syscallent.h: Likewise. * linux/powerpc/syscallent.h: Likewise. * linux/s390/syscallent.h: Likewise. * linux/s390x/syscallent.h: Likewise. * linux/sh/syscallent.h: Likewise. * linux/sh64/syscallent.h: Likewise. * linux/sparc/syscallent.h: Likewise. * linux/tile/syscallent.h: Likewise. * linux/x86_64/syscallent.h: Likewise.
* Fix swapon syscall entriesDmitry V. Levin2011-11-25
| | | | | | | | | | | | | | | | | | | | | * linux/arm/syscallent.h: Fix number of swapon arguments. * linux/avr32/syscallent.h: Likewise. * linux/bfin/syscallent.h: Likewise. * linux/i386/syscallent.h: Likewise. * linux/m68k/syscallent.h: Likewise. * linux/microblaze/syscallent.h: Likewise. * linux/mips/syscallent.h: Likewise. * linux/powerpc/syscallent.h: Likewise. * linux/s390/syscallent.h: Likewise. * linux/s390x/syscallent.h: Likewise. * linux/sh/syscallent.h: Likewise. * linux/sh64/syscallent.h: Likewise. * linux/sparc/syscallent.h: Likewise. * linux/tile/syscallent.h: Likewise. * linux/x86_64/syscallent.h: Likewise. * linux/alpha/syscallent.h: Fix number of swapon arguments, add TF flag. * linux/hppa/syscallent.h: Likewise. * linux/ia64/syscallent.h: Likewise.
* Rename siggetmask to sgetmask and sigsetmask to ssetmaskDmitry V. Levin2011-11-25
| | | | | | | | | | | | | | * linux/arm/syscallent.h: Rename siggetmask to sgetmask and sigsetmask to ssetmask. * linux/bfin/syscallent.h: Likewise. * linux/i386/syscallent.h: Likewise. * linux/m68k/syscallent.h: Likewise. * linux/microblaze/syscallent.h: Likewise. * linux/mips/syscallent.h: Likewise. * linux/sh/syscallent.h: Likewise. * linux/sh64/syscallent.h: Likewise. * linux/ia64/syscallent.h: Rename sys_sgetmask to sys_siggetmask, sys_ssetmask to sys_sigsetmask.
* Add TRACE_IPC flag to sys_ipc syscall entriesDmitry V. Levin2011-11-25
| | | | | | | | | | | | | | | | * linux/arm/syscallent.h: Add TI flag to sys_ipc entry. * linux/avr32/syscallent.h: Likewise. * linux/bfin/syscallent.h: Likewise. * linux/i386/syscallent.h: Likewise. * linux/m68k/syscallent.h: Likewise. * linux/microblaze/syscallent.h: Likewise. * linux/mips/syscallent.h: Likewise. * linux/powerpc/syscallent.h: Likewise. * linux/s390/syscallent.h: Likewise. * linux/s390x/syscallent.h: Likewise. * linux/sh/syscallent.h: Likewise. * linux/sh64/syscallent.h: Likewise. * linux/sparc/syscallent.h: Likewise.
* Add names for dummy parsers. No code changesDmitry V. Levin2011-10-14
| | | | | | * linux/dummy.h: Add aliases to printargs() for those of dummy parsers that had no own names before. * linux/*/syscallent.h: Use these new names instead of printargs.
* Implement decoding of splice, tee and vmsplice(2) syscallsDmitry V. Levin2011-10-11
| | | | | | | | | * io.c (print_loff_t): New function. (sys_sendfile64): Use it. (splice_flags): New xlat structure. (sys_tee, sys_splice, sys_vmsplice): New functions. * linux/syscall.h (sys_tee, sys_splice, sys_vmsplice): Declare them. * linux/*/syscallent.h: Use them.
* Set saner MAX_ARGS (6 or 8) for X86_64 and I386Denys Vlasenko2011-08-23
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | I noticed that tcp->u_args[MAX_ARGS] array is way larger than I'd expect: for all arches except HPPA it has 32 (!) elements. I looked at the code and so far I spotted only one abuser of this fact: sys_sigreturn. On several arches, it saves sigset_t into tcp->u_args[1...N] on entry and prints it on exit, a-la memcpy(&tcp->u_arg[1], &sc.oldmask[0], sizeof(sigset_t)) The problem here is that in glibc sigset_t is insanely large: 128 bytes, and using sizeof(sigset_t) in memcpy will overrun &tcp->u_args[1] even with MAX_ARGS == 32: On 32 bits, sizeof(tcp->u_args) == 32*4 == 128 bytes! We may already have a bug there! This commit changes the code to save NSIG / 8 bytes only. NSIG can't ever be > 256, and in practice is <= 129, thus NSIG / 8 is <= 16 bytes == 4 32-bit words, and even MAX_ARGS == 5 should be enough for saving signal masks. * defs.h: Reduce MAX_ARGS for X86_64 and I386 from 32 to 8 for FreeBSD and to 6 for everyone else. Add comment about current state of needed MAX_ARGS. * signal.c: Add comment about size of sigset_t. (sprintsigmask): Reduce static string buffer from 8k to 2k. (sys_sigreturn): Fix sigset saving to save only NSIG / 8 bytes, not sizeof(sigset_t) bytes. * linux/mips/syscallent.h: Reduce nargs of printargs-type syscall to 7. * linux/arm/syscallent.h: Reduce nargs of printargs-type syscall to 6. * linux/i386/syscallent.h: Likewise. * linux/m68k/syscallent.h: Likewise. * linux/powerpc/syscallent.h: Likewise. * linux/s390/syscallent.h: Likewise. * linux/s390x/syscallent.h: Likewise. * linux/sh/syscallent.h: Likewise. * linux/sh64/syscallent.h: Likewise. * linux/sparc/syscallent.h: Likewise. Signed-off-by: Denys Vlasenko <dvlasenk@redhat.com>
* Don't display bogus parameter for sigreturn syscallDenys Vlasenko2011-06-09
| | | | | | | | | | | | | | * 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>
* Whitespace cleanups. no code changes.Denys Vlasenko2011-06-07
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | * bjm.c: Fix tabulation (such as extra spaces before tabs), convert punctuation where it deviates from prevalent form elsewhere in strace code, convert sizeof and offsetof where it deviates from from prevalent form, remove space between function/macro/array names and (parameters) or [index], add space between "if" and (condition), correct non-standard or wrong indentaion. * defs.h: Likewise * desc.c: Likewise * file.c: Likewise * ipc.c: Likewise * linux/arm/syscallent.h: Likewise * linux/avr32/syscallent.h: Likewise * linux/hppa/syscallent.h: Likewise * linux/i386/syscallent.h: Likewise * linux/ioctlsort.c: Likewise * linux/m68k/syscallent.h: Likewise * linux/microblaze/syscallent.h: Likewise * linux/powerpc/syscallent.h: Likewise * linux/s390/syscallent.h: Likewise * linux/s390x/syscallent.h: Likewise * linux/sh/syscallent.h: Likewise * linux/sh64/syscallent.h: Likewise * linux/tile/syscallent.h: Likewise * linux/x86_64/syscallent.h: Likewise * mem.c: Likewise * net.c: Likewise * pathtrace.c: Likewise * process.c: Likewise * signal.c: Likewise * sock.c: Likewise * strace.c: Likewise * stream.c: Likewise * sunos4/syscall.h: Likewise * sunos4/syscallent.h: Likewise * svr4/syscall.h: Likewise * svr4/syscallent.h: Likewise * syscall.c: Likewise * system.c: Likewise * test/childthread.c: Likewise * test/leaderkill.c: Likewise * test/skodic.c: Likewise * time.c: Likewise * util.c: Likewise Signed-off-by: Denys Vlasenko <dvlasenk@redhat.com>
* Linux: implement decoding of preadv and pwritev syscallsDamir Shayhutdinov2011-05-30
| | | | | | | | | * io.c [LINUX && HAVE_SYS_UIO_H] (sys_preadv, sys_pwritev): New functions. * linux/syscall.h (sys_preadv, sys_pwritev): Declare them. * linux/*/syscallent.h: Use them. Signed-off-by: Damir Shayhutdinov <damir@altlinux.ru> Signed-off-by: Dmitry V. Levin <ldv@altlinux.org>
* linux/ioctlent: unify them allMike Frysinger2011-03-14
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | 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>
* Add TRACE_DESC|TRACE_FILE flags to fanotify_* sysentriesDmitry V. Levin2011-02-20
| | | | | * linux/*/syscallent.h: Add TD flag to fanotify_init. Add TD|TF flags to fanotify_mark.
* Fix flags of fallocate sysentriesDmitry V. Levin2011-02-20
| | | | * linux/*/syscallent.h: Fix sys_fallocate flags.
* Add TRACE_DESC flag to epoll_create* sysentriesDmitry V. Levin2011-02-20
| | | | | * linux/*/syscallent.h: Add TD flag to sys_epoll_create and sys_epoll_create1.
* Add TRACE_DESC flag to fgetxattr, flistxattr, and fremovexattr sysentriesDmitry V. Levin2011-02-20
| | | | | * linux/*/syscallent.h: Add TD flag to sys_fgetxattr, sys_flistxattr, and fremovexattr.
* Add TRACE_FILE flag to swapoff sysentriesDmitry V. Levin2011-02-20
| | | | * linux/*/syscallent.h: Add TF flag to sys_swapoff.
* Add TRACE_DESC flag to fadvise64* sysentriesDmitry V. Levin2011-02-20
| | | | | * linux/*/syscallent.h: Add TD flag to sys_fadvise64 and sys_fadvise64_64.
* Add TRACE_DESC flag to mmap, mmap2, and old_mmap sysentriesDmitry V. Levin2011-02-20
| | | | * linux/*/syscallent.h: Add TD flag to sys_mmap and sys_old_mmap.
* Fix decoding of get[ug]id, gete[ug]id and setfs[ug]id return valuesDmitry V. Levin2011-01-19
| | | | | | | | | | | | * defs.h (SYSCALL_NEVER_FAILS): New syscall flag. * linux/dummy.h: Change redirection for sys_get[ug]id, sys_gete[ug]id and setfs[ug]id. * linux/*/syscallent.h: Set SYSCALL_NEVER_FAILS flag for get[ug]id, gete[ug]id and setfs[ug]id syscalls. * process.c [LINUX] (sys_getuid, sys_setfsuid): New functions. * syscall.c (NF): New shorthand macro for use in syscallent.h files. (get_error): Check SYSCALL_NEVER_FAILS flag. Reported by Марк Коренберг <socketpair@gmail.com>.
* * linux/*/syscallent.h: Fix typo in sys_newfstatat syscall flags.Dmitry V. Levin2011-01-19
|
* Update linux/*/syscallent.h files to match Linux kernel v2.6.37Dmitry V. Levin2011-01-17
| | | | | | | | | | | | | | | | | | | | * linux/alpha/syscallent.h: Add hooks for fanotify_init, fanotify_mark, and prlimit64. * linux/i386/syscallent.h: Likewise. * linux/ia64/syscallent.h: Likewise. * linux/m68k/syscallent.h: Likewise. * linux/microblaze/syscallent.h: Likewise. * linux/mips/syscallent.h: Likewise. * linux/powerpc/syscallent.h: Likewise. * linux/s390/syscallent.h: Likewise. * linux/s390x/syscallent.h: Likewise. * linux/sh/syscallent.h: Likewise. * linux/sh64/syscallent.h: Likewise. * linux/sparc/syscallent.h: Likewise. * linux/x86_64/syscallent.h: Likewise. * linux/arm/syscallent.h: Add hooks for accept4, fanotify_init, fanotify_mark, and prlimit64. * linux/hppa/syscallent.h: Add hook for prlimit64.
* Update linux/*/syscallent.h files to match Linux kernel v2.6.33Dmitry V. Levin2010-04-07
| | | | | | | | | | | | | | | | | | | | | | | | | | * linux/alpha/syscallent.h: Add 47 hooks. * linux/arm/syscallent.h: Update hooks for pselect6, ppoll, epoll_pwait. Add 11 hooks. * linux/bfin/syscallent.h: Update hooks for prctl, fallocate, signalfd4, eventfd2, epoll_create1, dup3, pipe2, perf_event_open. Hook up recvmmsg. * linux/hppa/syscallent.h: Update hooks for signalfd4, eventfd2, epoll_create1, dup3, pipe2, perf_event_open. * linux/i386/syscallent.h: Fix syscall name for the kexec_load hook. Add 5 hooks. * linux/ia64/syscallent.h: Fix syscall name for the kexec_load hook. Add 4 hooks. * linux/m68k/syscallent.h: Add 50 hooks. * linux/powerpc/syscallent.h: Fix hook for timerfd_create. Fix 6 syscall names to match the kernel. Use sys_semop to parse semop. Add 14 hooks. * linux/s390/syscallent.h: Fix syscall name for the kexec_load hook. Add 14 hooks. * linux/s390x/syscallent.h: Likewise. * linux/sh/syscallent.h: Add 13 hooks. * linux/sh64/syscallent.h: Add 15 hooks. * linux/sparc/syscallent.h: Add 22 hooks. * linux/x86_64/syscallent.h: Add 5 hooks.
* Decode recvmmsg syscallAndreas Schwab2010-04-07
| | | | | | | | | | | | | | | | | | | | | * net.c (do_msghr): New function to print struct msghdr. (printmsghdr): Use it. (printmmsghdr, sys_recvmmsg): New. * linux/syscall.h: Declare sys_recvmmsg. (SYS_sub_recvmmsg): Define. (SYS_socket_nsubcalls): Bump. * linux/sparc/syscall.h: Likewise. * linux/arm/syscallent.h: Add sys_recvmmsg. * linux/bfin/syscallent.h: Likewise. * linux/i386/syscallent.h: Likewise. * linux/m68k/syscallent.h: Likewise. * linux/powerpc/syscallent.h: Likewise. * linux/s390/syscallent.h: Likewise. * linux/s390x/syscallent.h: Likewise. * linux/sh/syscallent.h: Likewise. * linux/sh64/syscallent.h: Likewise. * linux/sparc/syscallent.h: Likewise. * linux/ia64/syscallent.h: Adjust.
* Hook up inotify_init1 open mode flags printerMark Wielaard2010-03-23
| | | | | | | | | * file.c [LINUX] (sys_inotify_init1): New function. * linux/syscall.h: Declare new sys_inotify_init1 handler. * linux/bfin/syscallent.h: Hook up new handler. * linux/hppa/syscallent.h: Likewise. * linux/i386/syscallent.h: Likewise. * linux/x86_64/syscallent.h: Likewise.
* Decode fifth argument of mremap syscallDmitry V. Levin2009-12-25
| | | | | * mem.c (sys_mremap): Decode fifth argument. * linux/*/syscallent.h: Update the number of mremap syscall arguments.