mirror of
https://github.com/Zenithsiz/ftmemsim-valgrind.git
synced 2026-02-08 13:01:17 +00:00
Cleanup after m_syscalls changes: fix some NPTL ish syscalls (x86)
git-svn-id: svn://svn.valgrind.org/valgrind/trunk@3850
This commit is contained in:
parent
091ebb69f5
commit
e4e75cba40
@ -58,204 +58,202 @@ void VG_(mmap_segment) ( Addr a, SizeT len, UInt prot,
|
||||
UInt mm_flags, Int fd, ULong offset );
|
||||
|
||||
|
||||
DECL_TEMPLATE(generic,sys_ni_syscall); // * P -- unimplemented
|
||||
DECL_TEMPLATE(generic,sys_exit);
|
||||
DECL_TEMPLATE(generic,sys_fork);
|
||||
DECL_TEMPLATE(generic,sys_read);
|
||||
DECL_TEMPLATE(generic,sys_write);
|
||||
DECL_TEMPLATE(generic,sys_open);
|
||||
DECL_TEMPLATE(generic,sys_close);
|
||||
DECL_TEMPLATE(generic,sys_waitpid);
|
||||
DECL_TEMPLATE(generic,sys_creat);
|
||||
DECL_TEMPLATE(generic,sys_link);
|
||||
DECL_TEMPLATE(generic,sys_unlink);
|
||||
DECL_TEMPLATE(generic,sys_execve); // (*??) P
|
||||
DECL_TEMPLATE(generic,sys_chdir);
|
||||
DECL_TEMPLATE(generic,sys_time);
|
||||
DECL_TEMPLATE(generic,sys_mknod);
|
||||
DECL_TEMPLATE(generic,sys_chmod);
|
||||
DECL_TEMPLATE(generic,sys_lseek);
|
||||
DECL_TEMPLATE(generic,sys_getpid);
|
||||
DECL_TEMPLATE(generic,sys_alarm);
|
||||
DECL_TEMPLATE(generic,sys_pause);
|
||||
DECL_TEMPLATE(generic,sys_utime);
|
||||
DECL_TEMPLATE(generic,sys_access);
|
||||
DECL_TEMPLATE(generic,sys_kill);
|
||||
DECL_TEMPLATE(generic,sys_rename);
|
||||
DECL_TEMPLATE(generic,sys_mkdir);
|
||||
DECL_TEMPLATE(generic,sys_rmdir);
|
||||
DECL_TEMPLATE(generic,sys_dup);
|
||||
DECL_TEMPLATE(generic,sys_times);
|
||||
DECL_TEMPLATE(generic,sys_fcntl); // POSIX (but complicated)
|
||||
DECL_TEMPLATE(generic,sys_setpgid);
|
||||
DECL_TEMPLATE(generic,sys_umask);
|
||||
DECL_TEMPLATE(generic,sys_dup2);
|
||||
DECL_TEMPLATE(generic,sys_getppid);
|
||||
DECL_TEMPLATE(generic,sys_getpgrp);
|
||||
DECL_TEMPLATE(generic,sys_setsid);
|
||||
DECL_TEMPLATE(generic,sys_munmap);
|
||||
DECL_TEMPLATE(generic,sys_truncate);
|
||||
DECL_TEMPLATE(generic,sys_ftruncate);
|
||||
DECL_TEMPLATE(generic,sys_fchmod);
|
||||
DECL_TEMPLATE(generic,sys_msync);
|
||||
DECL_TEMPLATE(generic,sys_readv);
|
||||
DECL_TEMPLATE(generic,sys_writev);
|
||||
DECL_TEMPLATE(generic,sys_getsid);
|
||||
DECL_TEMPLATE(generic,sys_fdatasync);
|
||||
DECL_TEMPLATE(generic,sys_mlock);
|
||||
DECL_TEMPLATE(generic,sys_munlock);
|
||||
DECL_TEMPLATE(generic,sys_mlockall);
|
||||
DECL_TEMPLATE(generic,sys_munlockall);
|
||||
DECL_TEMPLATE(generic,sys_sched_setparam);
|
||||
DECL_TEMPLATE(generic,sys_sched_getparam);
|
||||
DECL_TEMPLATE(generic,sys_sched_rr_get_interval);
|
||||
DECL_TEMPLATE(generic,sys_sched_setscheduler);
|
||||
DECL_TEMPLATE(generic,sys_sched_getscheduler);
|
||||
DECL_TEMPLATE(generic,sys_sched_yield);
|
||||
DECL_TEMPLATE(generic,sys_sched_get_priority_max);
|
||||
DECL_TEMPLATE(generic,sys_sched_get_priority_min);
|
||||
DECL_TEMPLATE(generic,sys_nanosleep);
|
||||
DECL_TEMPLATE(generic,sys_mremap); // POSIX, but Linux arg order may be odd
|
||||
DECL_TEMPLATE(generic,sys_getuid);
|
||||
DECL_TEMPLATE(generic,sys_getgid);
|
||||
DECL_TEMPLATE(generic,sys_geteuid);
|
||||
DECL_TEMPLATE(generic,sys_getegid);
|
||||
DECL_TEMPLATE(generic,sys_getpgid);
|
||||
DECL_TEMPLATE(generic,sys_fsync);
|
||||
DECL_TEMPLATE(generic,sys_wait4);
|
||||
DECL_TEMPLATE(generic,sys_mprotect);
|
||||
DECL_TEMPLATE(generic,sys_sigprocmask);
|
||||
DECL_TEMPLATE(generic,sys_timer_create); // Linux: varies across archs?
|
||||
DECL_TEMPLATE(generic,sys_timer_settime);
|
||||
DECL_TEMPLATE(generic,sys_timer_gettime);
|
||||
DECL_TEMPLATE(generic,sys_timer_getoverrun);
|
||||
DECL_TEMPLATE(generic,sys_timer_delete);
|
||||
DECL_TEMPLATE(generic,sys_clock_settime);
|
||||
DECL_TEMPLATE(generic,sys_clock_gettime);
|
||||
DECL_TEMPLATE(generic,sys_clock_getres);
|
||||
DECL_TEMPLATE(generic,sys_clock_nanosleep);
|
||||
DECL_TEMPLATE(generic,sys_getcwd);
|
||||
DECL_TEMPLATE(generic,sys_symlink);
|
||||
DECL_TEMPLATE(generic,sys_getgroups);
|
||||
DECL_TEMPLATE(generic,sys_setgroups); // SVr4, SVID, X/OPEN, 4.3BSD
|
||||
DECL_TEMPLATE(generic,sys_chown);
|
||||
DECL_TEMPLATE(generic,sys_setuid);
|
||||
DECL_TEMPLATE(generic,sys_gettimeofday);
|
||||
DECL_TEMPLATE(generic,sys_madvise);
|
||||
DECL_TEMPLATE(generic,sys_sigpending);
|
||||
DECL_TEMPLATE(generic, sys_ni_syscall); // * P -- unimplemented
|
||||
DECL_TEMPLATE(generic, sys_exit);
|
||||
DECL_TEMPLATE(generic, sys_fork);
|
||||
DECL_TEMPLATE(generic, sys_read);
|
||||
DECL_TEMPLATE(generic, sys_write);
|
||||
DECL_TEMPLATE(generic, sys_open);
|
||||
DECL_TEMPLATE(generic, sys_close);
|
||||
DECL_TEMPLATE(generic, sys_waitpid);
|
||||
DECL_TEMPLATE(generic, sys_creat);
|
||||
DECL_TEMPLATE(generic, sys_link);
|
||||
DECL_TEMPLATE(generic, sys_unlink);
|
||||
DECL_TEMPLATE(generic, sys_execve); // (*??) P
|
||||
DECL_TEMPLATE(generic, sys_chdir);
|
||||
DECL_TEMPLATE(generic, sys_time);
|
||||
DECL_TEMPLATE(generic, sys_mknod);
|
||||
DECL_TEMPLATE(generic, sys_chmod);
|
||||
DECL_TEMPLATE(generic, sys_lseek);
|
||||
DECL_TEMPLATE(generic, sys_getpid);
|
||||
DECL_TEMPLATE(generic, sys_alarm);
|
||||
DECL_TEMPLATE(generic, sys_pause);
|
||||
DECL_TEMPLATE(generic, sys_utime);
|
||||
DECL_TEMPLATE(generic, sys_access);
|
||||
DECL_TEMPLATE(generic, sys_kill);
|
||||
DECL_TEMPLATE(generic, sys_rename);
|
||||
DECL_TEMPLATE(generic, sys_mkdir);
|
||||
DECL_TEMPLATE(generic, sys_rmdir);
|
||||
DECL_TEMPLATE(generic, sys_dup);
|
||||
DECL_TEMPLATE(generic, sys_times);
|
||||
DECL_TEMPLATE(generic, sys_fcntl); // POSIX (but complicated)
|
||||
DECL_TEMPLATE(generic, sys_setpgid);
|
||||
DECL_TEMPLATE(generic, sys_umask);
|
||||
DECL_TEMPLATE(generic, sys_dup2);
|
||||
DECL_TEMPLATE(generic, sys_getppid);
|
||||
DECL_TEMPLATE(generic, sys_getpgrp);
|
||||
DECL_TEMPLATE(generic, sys_setsid);
|
||||
DECL_TEMPLATE(generic, sys_munmap);
|
||||
DECL_TEMPLATE(generic, sys_truncate);
|
||||
DECL_TEMPLATE(generic, sys_ftruncate);
|
||||
DECL_TEMPLATE(generic, sys_fchmod);
|
||||
DECL_TEMPLATE(generic, sys_msync);
|
||||
DECL_TEMPLATE(generic, sys_readv);
|
||||
DECL_TEMPLATE(generic, sys_writev);
|
||||
DECL_TEMPLATE(generic, sys_getsid);
|
||||
DECL_TEMPLATE(generic, sys_fdatasync);
|
||||
DECL_TEMPLATE(generic, sys_mlock);
|
||||
DECL_TEMPLATE(generic, sys_munlock);
|
||||
DECL_TEMPLATE(generic, sys_mlockall);
|
||||
DECL_TEMPLATE(generic, sys_munlockall);
|
||||
DECL_TEMPLATE(generic, sys_sched_setparam);
|
||||
DECL_TEMPLATE(generic, sys_sched_getparam);
|
||||
DECL_TEMPLATE(generic, sys_sched_rr_get_interval);
|
||||
DECL_TEMPLATE(generic, sys_sched_setscheduler);
|
||||
DECL_TEMPLATE(generic, sys_sched_getscheduler);
|
||||
DECL_TEMPLATE(generic, sys_sched_yield);
|
||||
DECL_TEMPLATE(generic, sys_sched_get_priority_max);
|
||||
DECL_TEMPLATE(generic, sys_sched_get_priority_min);
|
||||
DECL_TEMPLATE(generic, sys_nanosleep);
|
||||
DECL_TEMPLATE(generic, sys_mremap); // POSIX, but Linux arg order may be odd
|
||||
DECL_TEMPLATE(generic, sys_getuid);
|
||||
DECL_TEMPLATE(generic, sys_getgid);
|
||||
DECL_TEMPLATE(generic, sys_geteuid);
|
||||
DECL_TEMPLATE(generic, sys_getegid);
|
||||
DECL_TEMPLATE(generic, sys_getpgid);
|
||||
DECL_TEMPLATE(generic, sys_fsync);
|
||||
DECL_TEMPLATE(generic, sys_wait4);
|
||||
DECL_TEMPLATE(generic, sys_mprotect);
|
||||
DECL_TEMPLATE(generic, sys_sigprocmask);
|
||||
DECL_TEMPLATE(generic, sys_timer_create); // Linux: varies across archs?
|
||||
DECL_TEMPLATE(generic, sys_timer_settime);
|
||||
DECL_TEMPLATE(generic, sys_timer_gettime);
|
||||
DECL_TEMPLATE(generic, sys_timer_getoverrun);
|
||||
DECL_TEMPLATE(generic, sys_timer_delete);
|
||||
DECL_TEMPLATE(generic, sys_clock_settime);
|
||||
DECL_TEMPLATE(generic, sys_clock_gettime);
|
||||
DECL_TEMPLATE(generic, sys_clock_getres);
|
||||
DECL_TEMPLATE(generic, sys_clock_nanosleep);
|
||||
DECL_TEMPLATE(generic, sys_getcwd);
|
||||
DECL_TEMPLATE(generic, sys_symlink);
|
||||
DECL_TEMPLATE(generic, sys_getgroups);
|
||||
DECL_TEMPLATE(generic, sys_setgroups); // SVr4, SVID, X/OPEN, 4.3BSD
|
||||
DECL_TEMPLATE(generic, sys_chown);
|
||||
DECL_TEMPLATE(generic, sys_setuid);
|
||||
DECL_TEMPLATE(generic, sys_gettimeofday);
|
||||
DECL_TEMPLATE(generic, sys_madvise);
|
||||
DECL_TEMPLATE(generic, sys_sigpending);
|
||||
|
||||
// These ones aren't POSIX, but are in some standard and look reasonably
|
||||
// generic, and are the same for all architectures under Linux.
|
||||
DECL_TEMPLATE(generic,sys_nice); // SVr4, SVID EXT, AT&T, X/OPEN, BSD 4.3
|
||||
DECL_TEMPLATE(generic,sys_sync); // SVr4, SVID, X/OPEN, BSD 4.3
|
||||
DECL_TEMPLATE(generic,sys_brk); // 4.3BSD
|
||||
DECL_TEMPLATE(generic,sys_acct); // SVR4, non-POSIX
|
||||
DECL_TEMPLATE(generic,sys_chroot); // SVr4, SVID, 4.4BSD, X/OPEN
|
||||
DECL_TEMPLATE(generic,sys_readlink); // X/OPEN, 4.4BSD
|
||||
DECL_TEMPLATE(generic,sys_fchdir); // SVr4, SVID, POSIX, X/OPEN, 4.4BSD
|
||||
DECL_TEMPLATE(generic,sys_getdents); // SVr4,SVID
|
||||
DECL_TEMPLATE(generic,sys_select); // 4.4BSD
|
||||
DECL_TEMPLATE(generic,sys_flock); // 4.4BSD
|
||||
DECL_TEMPLATE(generic,sys_poll); // XPG4-UNIX
|
||||
DECL_TEMPLATE(generic,sys_getrusage); // SVr4, 4.3BSD
|
||||
DECL_TEMPLATE(generic,sys_stime); // SVr4, SVID, X/OPEN
|
||||
DECL_TEMPLATE(generic,sys_settimeofday); // SVr4, 4.3BSD (non-POSIX)
|
||||
DECL_TEMPLATE(generic,sys_getpriority); // SVr4, 4.4BSD
|
||||
DECL_TEMPLATE(generic,sys_setpriority); // SVr4, 4.4BSD
|
||||
DECL_TEMPLATE(generic,sys_setitimer); // SVr4, 4.4BSD
|
||||
DECL_TEMPLATE(generic,sys_getitimer); // SVr4, 4.4BSD
|
||||
DECL_TEMPLATE(generic,sys_setreuid); // 4.3BSD
|
||||
DECL_TEMPLATE(generic,sys_setregid); // 4.3BSD
|
||||
DECL_TEMPLATE(generic,sys_fchown); // SVr4,4.3BSD
|
||||
DECL_TEMPLATE(generic,sys_setgid); // SVr4,SVID
|
||||
DECL_TEMPLATE(generic,sys_utimes); // 4.3BSD
|
||||
// generic, and are the same for all architectures under Linux.
|
||||
DECL_TEMPLATE(generic, sys_nice); // SVr4, SVID EXT, AT&T, X/OPEN, BSD 4.3
|
||||
DECL_TEMPLATE(generic, sys_sync); // SVr4, SVID, X/OPEN, BSD 4.3
|
||||
DECL_TEMPLATE(generic, sys_brk); // 4.3BSD
|
||||
DECL_TEMPLATE(generic, sys_acct); // SVR4, non-POSIX
|
||||
DECL_TEMPLATE(generic, sys_chroot); // SVr4, SVID, 4.4BSD, X/OPEN
|
||||
DECL_TEMPLATE(generic, sys_readlink); // X/OPEN, 4.4BSD
|
||||
DECL_TEMPLATE(generic, sys_fchdir); // SVr4, SVID, POSIX, X/OPEN, 4.4BSD
|
||||
DECL_TEMPLATE(generic, sys_getdents); // SVr4,SVID
|
||||
DECL_TEMPLATE(generic, sys_select); // 4.4BSD
|
||||
DECL_TEMPLATE(generic, sys_flock); // 4.4BSD
|
||||
DECL_TEMPLATE(generic, sys_poll); // XPG4-UNIX
|
||||
DECL_TEMPLATE(generic, sys_getrusage); // SVr4, 4.3BSD
|
||||
DECL_TEMPLATE(generic, sys_stime); // SVr4, SVID, X/OPEN
|
||||
DECL_TEMPLATE(generic, sys_settimeofday); // SVr4, 4.3BSD (non-POSIX)
|
||||
DECL_TEMPLATE(generic, sys_getpriority); // SVr4, 4.4BSD
|
||||
DECL_TEMPLATE(generic, sys_setpriority); // SVr4, 4.4BSD
|
||||
DECL_TEMPLATE(generic, sys_setitimer); // SVr4, 4.4BSD
|
||||
DECL_TEMPLATE(generic, sys_getitimer); // SVr4, 4.4BSD
|
||||
DECL_TEMPLATE(generic, sys_setreuid); // 4.3BSD
|
||||
DECL_TEMPLATE(generic, sys_setregid); // 4.3BSD
|
||||
DECL_TEMPLATE(generic, sys_fchown); // SVr4,4.3BSD
|
||||
DECL_TEMPLATE(generic, sys_setgid); // SVr4,SVID
|
||||
DECL_TEMPLATE(generic, sys_utimes); // 4.3BSD
|
||||
|
||||
// These ones may be Linux specific... not sure. They use 16-bit gid_t and
|
||||
// uid_t types. The similarly named (minus the "16" suffix) ones below use
|
||||
// 32-bit versions of these types.
|
||||
DECL_TEMPLATE(generic,sys_setuid16); // ## P
|
||||
DECL_TEMPLATE(generic,sys_getuid16); // ## P
|
||||
DECL_TEMPLATE(generic,sys_setgid16); // ## SVr4,SVID
|
||||
DECL_TEMPLATE(generic,sys_getgid16); // ## P
|
||||
DECL_TEMPLATE(generic,sys_geteuid16); // ## P
|
||||
DECL_TEMPLATE(generic,sys_getegid16); // ## P
|
||||
DECL_TEMPLATE(generic,sys_setreuid16); // ## BSD4.3
|
||||
DECL_TEMPLATE(generic,sys_setregid16); // ## BSD4.3
|
||||
DECL_TEMPLATE(generic,sys_getgroups16); // ## P
|
||||
DECL_TEMPLATE(generic,sys_setgroups16); // ## SVr4, SVID, X/OPEN, 4.3BSD
|
||||
DECL_TEMPLATE(generic,sys_fchown16); // ## SVr4,BSD4.3
|
||||
DECL_TEMPLATE(generic,sys_chown16); // ## P
|
||||
DECL_TEMPLATE(generic, sys_setuid16); // ## P
|
||||
DECL_TEMPLATE(generic, sys_getuid16); // ## P
|
||||
DECL_TEMPLATE(generic, sys_setgid16); // ## SVr4,SVID
|
||||
DECL_TEMPLATE(generic, sys_getgid16); // ## P
|
||||
DECL_TEMPLATE(generic, sys_geteuid16); // ## P
|
||||
DECL_TEMPLATE(generic, sys_getegid16); // ## P
|
||||
DECL_TEMPLATE(generic, sys_setreuid16); // ## BSD4.3
|
||||
DECL_TEMPLATE(generic, sys_setregid16); // ## BSD4.3
|
||||
DECL_TEMPLATE(generic, sys_getgroups16); // ## P
|
||||
DECL_TEMPLATE(generic, sys_setgroups16); // ## SVr4, SVID, X/OPEN, 4.3BSD
|
||||
DECL_TEMPLATE(generic, sys_fchown16); // ## SVr4,BSD4.3
|
||||
DECL_TEMPLATE(generic, sys_chown16); // ## P
|
||||
|
||||
// Some archs on Linux do not match the generic wrapper for sys_pipe().
|
||||
DECL_TEMPLATE(generic,sys_pipe);
|
||||
DECL_TEMPLATE(generic, sys_pipe);
|
||||
|
||||
// May not be generic for every architecture under Linux.
|
||||
DECL_TEMPLATE(generic,sys_sigaction); // (x86) P
|
||||
DECL_TEMPLATE(generic, sys_sigaction); // (x86) P
|
||||
|
||||
// Funny names, not sure...
|
||||
DECL_TEMPLATE(generic,sys_newstat); // * P
|
||||
DECL_TEMPLATE(generic,sys_newlstat); // *
|
||||
DECL_TEMPLATE(generic,sys_newfstat); // * P (SVr4,BSD4.3)
|
||||
DECL_TEMPLATE(generic, sys_newstat); // * P
|
||||
DECL_TEMPLATE(generic, sys_newlstat); // *
|
||||
DECL_TEMPLATE(generic, sys_newfstat); // * P (SVr4,BSD4.3)
|
||||
|
||||
// For the remainder, not really sure yet
|
||||
DECL_TEMPLATE(generic,sys_ptrace); // (x86?) (almost-P)
|
||||
DECL_TEMPLATE(generic,sys_sigsuspend); // POSIX, but L (proto varies across archs)
|
||||
DECL_TEMPLATE(generic,sys_setrlimit); // SVr4, 4.3BSD
|
||||
DECL_TEMPLATE(generic,sys_ioctl); // x86? (various)
|
||||
DECL_TEMPLATE(generic,sys_old_getrlimit); // SVr4, 4.3BSD L?
|
||||
DECL_TEMPLATE(generic,sys_statfs); // * L?
|
||||
DECL_TEMPLATE(generic,sys_fstatfs); // * L?
|
||||
DECL_TEMPLATE(generic,sys_iopl); // (x86/amd64) L
|
||||
DECL_TEMPLATE(generic,sys_ipc); // (x86) L
|
||||
DECL_TEMPLATE(generic,sys_newuname); // * P
|
||||
DECL_TEMPLATE(generic,sys_init_module); // * L?
|
||||
DECL_TEMPLATE(generic,sys_quotactl); // * (?)
|
||||
DECL_TEMPLATE(generic,sys_rt_sigaction); // (x86) ()
|
||||
DECL_TEMPLATE(generic,sys_rt_sigprocmask); // * ?
|
||||
DECL_TEMPLATE(generic,sys_rt_sigpending); // * ?
|
||||
DECL_TEMPLATE(generic,sys_rt_sigtimedwait); // * ?
|
||||
DECL_TEMPLATE(generic,sys_rt_sigqueueinfo); // * ?
|
||||
DECL_TEMPLATE(generic,sys_rt_sigsuspend); // () ()
|
||||
DECL_TEMPLATE(generic,sys_pread64); // * (Unix98?)
|
||||
DECL_TEMPLATE(generic,sys_pwrite64); // * (Unix98?)
|
||||
DECL_TEMPLATE(generic,sys_capget); // * L?
|
||||
DECL_TEMPLATE(generic,sys_capset); // * L?
|
||||
DECL_TEMPLATE(generic,sys_sigaltstack); // (x86) (XPG4-UNIX)
|
||||
DECL_TEMPLATE(generic,sys_getpmsg); // (?) (?)
|
||||
DECL_TEMPLATE(generic,sys_putpmsg); // (?) (?)
|
||||
DECL_TEMPLATE(generic,sys_getrlimit); // * (?)
|
||||
DECL_TEMPLATE(generic,sys_mmap2); // (x86?) P?
|
||||
DECL_TEMPLATE(generic,sys_truncate64); // %% (P?)
|
||||
DECL_TEMPLATE(generic,sys_ftruncate64); // %% (P?)
|
||||
DECL_TEMPLATE(generic,sys_lchown); // * (L?)
|
||||
DECL_TEMPLATE(generic,sys_mincore); // * L?
|
||||
DECL_TEMPLATE(generic,sys_getdents64); // * (SVr4,SVID?)
|
||||
DECL_TEMPLATE(generic,sys_fcntl64); // * P?
|
||||
DECL_TEMPLATE(generic,sys_setxattr); // * L?
|
||||
DECL_TEMPLATE(generic,sys_lsetxattr); // * L?
|
||||
DECL_TEMPLATE(generic,sys_fsetxattr); // * L?
|
||||
DECL_TEMPLATE(generic,sys_getxattr); // * L?
|
||||
DECL_TEMPLATE(generic,sys_lgetxattr); // * L?
|
||||
DECL_TEMPLATE(generic,sys_fgetxattr); // * L?
|
||||
DECL_TEMPLATE(generic,sys_listxattr); // * L?
|
||||
DECL_TEMPLATE(generic,sys_llistxattr); // * L?
|
||||
DECL_TEMPLATE(generic,sys_flistxattr); // * L?
|
||||
DECL_TEMPLATE(generic,sys_removexattr); // * L?
|
||||
DECL_TEMPLATE(generic,sys_lremovexattr); // * L?
|
||||
DECL_TEMPLATE(generic,sys_fremovexattr); // * L?
|
||||
DECL_TEMPLATE(generic,sys_sched_setaffinity); // * L?
|
||||
DECL_TEMPLATE(generic,sys_sched_getaffinity); // * L?
|
||||
DECL_TEMPLATE(generic,sys_lookup_dcookie); // (*/32/64) L
|
||||
DECL_TEMPLATE(generic,sys_set_tid_address); // * ?
|
||||
DECL_TEMPLATE(generic,sys_statfs64); // * (?)
|
||||
DECL_TEMPLATE(generic,sys_fstatfs64); // * (?)
|
||||
DECL_TEMPLATE(generic,sys_mq_open); // * P?
|
||||
DECL_TEMPLATE(generic,sys_mq_unlink); // * P?
|
||||
DECL_TEMPLATE(generic,sys_mq_timedsend); // * P?
|
||||
DECL_TEMPLATE(generic,sys_mq_timedreceive); // * P?
|
||||
DECL_TEMPLATE(generic,sys_mq_notify); // * P?
|
||||
DECL_TEMPLATE(generic,sys_mq_getsetattr); // * P?
|
||||
|
||||
DECL_TEMPLATE(generic, sys_ptrace); // (x86?) (almost-P)
|
||||
DECL_TEMPLATE(generic, sys_sigsuspend); // POSIX, but L (proto varies across archs)
|
||||
DECL_TEMPLATE(generic, sys_setrlimit); // SVr4, 4.3BSD
|
||||
DECL_TEMPLATE(generic, sys_ioctl); // x86? (various)
|
||||
DECL_TEMPLATE(generic, sys_old_getrlimit); // SVr4, 4.3BSD L?
|
||||
DECL_TEMPLATE(generic, sys_statfs); // * L?
|
||||
DECL_TEMPLATE(generic, sys_fstatfs); // * L?
|
||||
DECL_TEMPLATE(generic, sys_iopl); // (x86/amd64) L
|
||||
DECL_TEMPLATE(generic, sys_ipc); // (x86) L
|
||||
DECL_TEMPLATE(generic, sys_newuname); // * P
|
||||
DECL_TEMPLATE(generic, sys_init_module); // * L?
|
||||
DECL_TEMPLATE(generic, sys_quotactl); // * (?)
|
||||
DECL_TEMPLATE(generic, sys_rt_sigaction); // (x86) ()
|
||||
DECL_TEMPLATE(generic, sys_rt_sigprocmask); // * ?
|
||||
DECL_TEMPLATE(generic, sys_rt_sigpending); // * ?
|
||||
DECL_TEMPLATE(generic, sys_rt_sigtimedwait); // * ?
|
||||
DECL_TEMPLATE(generic, sys_rt_sigqueueinfo); // * ?
|
||||
DECL_TEMPLATE(generic, sys_rt_sigsuspend); // () ()
|
||||
DECL_TEMPLATE(generic, sys_pread64); // * (Unix98?)
|
||||
DECL_TEMPLATE(generic, sys_pwrite64); // * (Unix98?)
|
||||
DECL_TEMPLATE(generic, sys_capget); // * L?
|
||||
DECL_TEMPLATE(generic, sys_capset); // * L?
|
||||
DECL_TEMPLATE(generic, sys_sigaltstack); // (x86) (XPG4-UNIX)
|
||||
DECL_TEMPLATE(generic, sys_getpmsg); // (?) (?)
|
||||
DECL_TEMPLATE(generic, sys_putpmsg); // (?) (?)
|
||||
DECL_TEMPLATE(generic, sys_getrlimit); // * (?)
|
||||
DECL_TEMPLATE(generic, sys_mmap2); // (x86?) P?
|
||||
DECL_TEMPLATE(generic, sys_truncate64); // %% (P?)
|
||||
DECL_TEMPLATE(generic, sys_ftruncate64); // %% (P?)
|
||||
DECL_TEMPLATE(generic, sys_lchown); // * (L?)
|
||||
DECL_TEMPLATE(generic, sys_mincore); // * L?
|
||||
DECL_TEMPLATE(generic, sys_getdents64); // * (SVr4,SVID?)
|
||||
DECL_TEMPLATE(generic, sys_fcntl64); // * P?
|
||||
DECL_TEMPLATE(generic, sys_setxattr); // * L?
|
||||
DECL_TEMPLATE(generic, sys_lsetxattr); // * L?
|
||||
DECL_TEMPLATE(generic, sys_fsetxattr); // * L?
|
||||
DECL_TEMPLATE(generic, sys_getxattr); // * L?
|
||||
DECL_TEMPLATE(generic, sys_lgetxattr); // * L?
|
||||
DECL_TEMPLATE(generic, sys_fgetxattr); // * L?
|
||||
DECL_TEMPLATE(generic, sys_listxattr); // * L?
|
||||
DECL_TEMPLATE(generic, sys_llistxattr); // * L?
|
||||
DECL_TEMPLATE(generic, sys_flistxattr); // * L?
|
||||
DECL_TEMPLATE(generic, sys_removexattr); // * L?
|
||||
DECL_TEMPLATE(generic, sys_lremovexattr); // * L?
|
||||
DECL_TEMPLATE(generic, sys_fremovexattr); // * L?
|
||||
DECL_TEMPLATE(generic, sys_sched_setaffinity); // * L?
|
||||
DECL_TEMPLATE(generic, sys_sched_getaffinity); // * L?
|
||||
DECL_TEMPLATE(generic, sys_lookup_dcookie); // (*/32/64) L
|
||||
DECL_TEMPLATE(generic, sys_statfs64); // * (?)
|
||||
DECL_TEMPLATE(generic, sys_fstatfs64); // * (?)
|
||||
DECL_TEMPLATE(generic, sys_mq_open); // * P?
|
||||
DECL_TEMPLATE(generic, sys_mq_unlink); // * P?
|
||||
DECL_TEMPLATE(generic, sys_mq_timedsend); // * P?
|
||||
DECL_TEMPLATE(generic, sys_mq_timedreceive); // * P?
|
||||
DECL_TEMPLATE(generic, sys_mq_notify); // * P?
|
||||
DECL_TEMPLATE(generic, sys_mq_getsetattr); // * P?
|
||||
|
||||
|
||||
/* ---------------------------------------------------------------------
|
||||
|
||||
@ -33,58 +33,58 @@
|
||||
|
||||
/* requires #include "priv_types_n_macros.h" */
|
||||
|
||||
DECL_TEMPLATE(linux, sys_exit_group);
|
||||
|
||||
DECL_TEMPLATE(linux,sys_exit_group);
|
||||
DECL_TEMPLATE(linux, sys_mount);
|
||||
DECL_TEMPLATE(linux, sys_oldumount);
|
||||
DECL_TEMPLATE(linux, sys_umount);
|
||||
|
||||
DECL_TEMPLATE(linux,sys_mount);
|
||||
DECL_TEMPLATE(linux,sys_oldumount);
|
||||
DECL_TEMPLATE(linux,sys_umount);
|
||||
DECL_TEMPLATE(linux, sys_llseek);
|
||||
DECL_TEMPLATE(linux, sys_adjtimex);
|
||||
|
||||
DECL_TEMPLATE(linux,sys_llseek);
|
||||
DECL_TEMPLATE(linux,sys_adjtimex);
|
||||
DECL_TEMPLATE(linux, sys_setfsuid16);
|
||||
DECL_TEMPLATE(linux, sys_setfsgid16);
|
||||
DECL_TEMPLATE(linux, sys_setresuid16); // man page says "non-standard";
|
||||
DECL_TEMPLATE(linux, sys_getresuid16);
|
||||
DECL_TEMPLATE(linux, sys_setresgid16); // man page says "non-standard"
|
||||
DECL_TEMPLATE(linux, sys_getresgid16);
|
||||
|
||||
DECL_TEMPLATE(linux,sys_setfsuid16);
|
||||
DECL_TEMPLATE(linux,sys_setfsgid16);
|
||||
DECL_TEMPLATE(linux,sys_setresuid16); // man page says "non-standard";
|
||||
DECL_TEMPLATE(linux,sys_getresuid16);
|
||||
DECL_TEMPLATE(linux,sys_setresgid16); // man page says "non-standard"
|
||||
DECL_TEMPLATE(linux,sys_getresgid16);
|
||||
DECL_TEMPLATE(linux, sys_setfsuid);
|
||||
DECL_TEMPLATE(linux, sys_setfsgid);
|
||||
DECL_TEMPLATE(linux, sys_setresuid); // man page says "non-standard"
|
||||
DECL_TEMPLATE(linux, sys_getresuid);
|
||||
DECL_TEMPLATE(linux, sys_setresgid); // man page says "non-standard"
|
||||
DECL_TEMPLATE(linux, sys_getresgid);
|
||||
|
||||
DECL_TEMPLATE(linux,sys_setfsuid);
|
||||
DECL_TEMPLATE(linux,sys_setfsgid);
|
||||
DECL_TEMPLATE(linux,sys_setresuid); // man page says "non-standard"
|
||||
DECL_TEMPLATE(linux,sys_getresuid);
|
||||
DECL_TEMPLATE(linux,sys_setresgid); // man page says "non-standard"
|
||||
DECL_TEMPLATE(linux,sys_getresgid);
|
||||
DECL_TEMPLATE(linux, sys_ioperm);
|
||||
DECL_TEMPLATE(linux, sys_syslog);
|
||||
DECL_TEMPLATE(linux, sys_vhangup);
|
||||
DECL_TEMPLATE(linux, sys_sysinfo);
|
||||
DECL_TEMPLATE(linux, sys_personality);
|
||||
DECL_TEMPLATE(linux, sys_sysctl);
|
||||
DECL_TEMPLATE(linux, sys_prctl);
|
||||
|
||||
DECL_TEMPLATE(linux,sys_ioperm);
|
||||
DECL_TEMPLATE(linux,sys_syslog);
|
||||
DECL_TEMPLATE(linux,sys_vhangup);
|
||||
DECL_TEMPLATE(linux,sys_sysinfo);
|
||||
DECL_TEMPLATE(linux,sys_personality);
|
||||
DECL_TEMPLATE(linux,sys_sysctl);
|
||||
DECL_TEMPLATE(linux,sys_prctl);
|
||||
DECL_TEMPLATE(linux, sys_sendfile);
|
||||
DECL_TEMPLATE(linux, sys_sendfile64);
|
||||
DECL_TEMPLATE(linux, sys_futex);
|
||||
|
||||
DECL_TEMPLATE(linux,sys_sendfile);
|
||||
DECL_TEMPLATE(linux,sys_sendfile64);
|
||||
DECL_TEMPLATE(linux,sys_futex);
|
||||
DECL_TEMPLATE(linux, sys_epoll_create);
|
||||
DECL_TEMPLATE(linux, sys_epoll_ctl);
|
||||
DECL_TEMPLATE(linux, sys_epoll_wait);
|
||||
|
||||
DECL_TEMPLATE(linux,sys_epoll_create);
|
||||
DECL_TEMPLATE(linux,sys_epoll_ctl);
|
||||
DECL_TEMPLATE(linux,sys_epoll_wait);
|
||||
DECL_TEMPLATE(linux, sys_gettid);
|
||||
DECL_TEMPLATE(linux, sys_set_tid_address);
|
||||
DECL_TEMPLATE(linux, sys_tkill);
|
||||
DECL_TEMPLATE(linux, sys_tgkill);
|
||||
|
||||
DECL_TEMPLATE(linux,sys_gettid);
|
||||
DECL_TEMPLATE(linux,sys_tkill);
|
||||
DECL_TEMPLATE(linux,sys_tgkill);
|
||||
DECL_TEMPLATE(linux, sys_fadvise64);
|
||||
DECL_TEMPLATE(linux, sys_fadvise64_64);
|
||||
|
||||
DECL_TEMPLATE(linux,sys_fadvise64);
|
||||
DECL_TEMPLATE(linux,sys_fadvise64_64);
|
||||
|
||||
DECL_TEMPLATE(linux,sys_io_setup);
|
||||
DECL_TEMPLATE(linux,sys_io_destroy);
|
||||
DECL_TEMPLATE(linux,sys_io_getevents);
|
||||
DECL_TEMPLATE(linux,sys_io_submit);
|
||||
DECL_TEMPLATE(linux,sys_io_cancel);
|
||||
DECL_TEMPLATE(linux, sys_io_setup);
|
||||
DECL_TEMPLATE(linux, sys_io_destroy);
|
||||
DECL_TEMPLATE(linux, sys_io_getevents);
|
||||
DECL_TEMPLATE(linux, sys_io_submit);
|
||||
DECL_TEMPLATE(linux, sys_io_cancel);
|
||||
|
||||
#endif // __PRIV_SYSCALLS_LINUX_H
|
||||
|
||||
|
||||
@ -1683,12 +1683,6 @@ PRE(sys_ni_syscall)
|
||||
SET_STATUS_Failure( VKI_ENOSYS );
|
||||
}
|
||||
|
||||
//zz PRE(sys_set_tid_address, 0)
|
||||
//zz {
|
||||
//zz PRINT("sys_set_tid_address ( %p )", ARG1);
|
||||
//zz PRE_REG_READ1(long, "set_tid_address", int *, tidptr);
|
||||
//zz }
|
||||
//zz
|
||||
//zz PRE(sys_iopl, 0)
|
||||
//zz {
|
||||
//zz PRINT("sys_iopl ( %d )", ARG1);
|
||||
|
||||
@ -30,16 +30,18 @@
|
||||
|
||||
#include "core.h"
|
||||
#include "pub_core_aspacemgr.h"
|
||||
#include "pub_core_libcbase.h"
|
||||
#include "pub_core_libcassert.h"
|
||||
#include "pub_core_libcfile.h"
|
||||
#include "pub_core_libcprint.h"
|
||||
#include "pub_core_tooliface.h"
|
||||
#include "pub_core_options.h"
|
||||
#include "pub_core_signals.h"
|
||||
|
||||
#include "priv_types_n_macros.h"
|
||||
#include "priv_syscalls-generic.h"
|
||||
#include "priv_syscalls-linux.h"
|
||||
|
||||
|
||||
/* ---------------------------------------------------------------------
|
||||
PRE/POST wrappers for arch-generic, Linux-specific syscalls
|
||||
------------------------------------------------------------------ */
|
||||
@ -50,6 +52,12 @@
|
||||
#define PRE(name) DEFN_PRE_TEMPLATE(linux, name)
|
||||
#define POST(name) DEFN_POST_TEMPLATE(linux, name)
|
||||
|
||||
PRE(sys_set_tid_address)
|
||||
{
|
||||
PRINT("sys_set_tid_address ( %p )", ARG1);
|
||||
PRE_REG_READ1(long, "set_tid_address", int *, tidptr);
|
||||
}
|
||||
|
||||
PRE(sys_exit_group)
|
||||
{
|
||||
ThreadId t;
|
||||
@ -416,62 +424,65 @@ POST(sys_sysctl)
|
||||
//zz POST_MEM_WRITE( ARG3, sizeof(vki_loff_t) );
|
||||
//zz }
|
||||
//zz }
|
||||
//zz
|
||||
//zz PRE(sys_futex, MayBlock)
|
||||
//zz {
|
||||
//zz /*
|
||||
//zz arg param used by ops
|
||||
//zz
|
||||
//zz ARG1 - u32 *futex all
|
||||
//zz ARG2 - int op
|
||||
//zz ARG3 - int val WAIT,WAKE,FD,REQUEUE,CMP_REQUEUE
|
||||
//zz ARG4 - struct timespec *utime WAIT:time* REQUEUE,CMP_REQUEUE:val2
|
||||
//zz ARG5 - u32 *uaddr2 REQUEUE,CMP_REQUEUE
|
||||
//zz ARG6 - int val3 CMP_REQUEUE
|
||||
//zz */
|
||||
//zz PRINT("sys_futex ( %p, %d, %d, %p, %p )", ARG1,ARG2,ARG3,ARG4,ARG5);
|
||||
//zz PRE_REG_READ6(long, "futex",
|
||||
//zz vki_u32 *, futex, int, op, int, val,
|
||||
//zz struct timespec *, utime, vki_u32 *, uaddr2, int, val3);
|
||||
//zz
|
||||
//zz PRE_MEM_READ( "futex(futex)", ARG1, sizeof(Int) );
|
||||
//zz
|
||||
//zz switch(ARG2) {
|
||||
//zz case VKI_FUTEX_WAIT:
|
||||
//zz if (ARG4 != 0)
|
||||
//zz PRE_MEM_READ( "futex(timeout)", ARG4, sizeof(struct vki_timespec) );
|
||||
//zz break;
|
||||
//zz
|
||||
//zz case VKI_FUTEX_REQUEUE:
|
||||
//zz case VKI_FUTEX_CMP_REQUEUE:
|
||||
//zz PRE_MEM_READ( "futex(futex2)", ARG5, sizeof(Int) );
|
||||
//zz break;
|
||||
//zz
|
||||
//zz case VKI_FUTEX_WAKE:
|
||||
//zz case VKI_FUTEX_FD:
|
||||
//zz /* no additional pointers */
|
||||
//zz break;
|
||||
//zz
|
||||
//zz default:
|
||||
//zz SET_RESULT(-VKI_ENOSYS); // some futex function we don't understand
|
||||
//zz break;
|
||||
//zz }
|
||||
//zz }
|
||||
//zz
|
||||
//zz POST(sys_futex)
|
||||
//zz {
|
||||
//zz POST_MEM_WRITE( ARG1, sizeof(int) );
|
||||
//zz if (ARG2 == VKI_FUTEX_FD) {
|
||||
//zz if (!VG_(fd_allowed)(RES, "futex", tid, True)) {
|
||||
//zz VG_(close)(RES);
|
||||
//zz SET_RESULT( -VKI_EMFILE );
|
||||
//zz } else {
|
||||
//zz if (VG_(clo_track_fds))
|
||||
//zz VG_(record_fd_open)(tid, RES, VG_(arena_strdup)(VG_AR_CORE, (Char*)ARG1));
|
||||
//zz }
|
||||
//zz }
|
||||
//zz }
|
||||
//zz
|
||||
|
||||
PRE(sys_futex)
|
||||
{
|
||||
/*
|
||||
arg param used by ops
|
||||
|
||||
ARG1 - u32 *futex all
|
||||
ARG2 - int op
|
||||
ARG3 - int val WAIT,WAKE,FD,REQUEUE,CMP_REQUEUE
|
||||
ARG4 - struct timespec *utime WAIT:time* REQUEUE,CMP_REQUEUE:val2
|
||||
ARG5 - u32 *uaddr2 REQUEUE,CMP_REQUEUE
|
||||
ARG6 - int val3 CMP_REQUEUE
|
||||
*/
|
||||
PRINT("sys_futex ( %p, %d, %d, %p, %p )", ARG1,ARG2,ARG3,ARG4,ARG5);
|
||||
PRE_REG_READ6(long, "futex",
|
||||
vki_u32 *, futex, int, op, int, val,
|
||||
struct timespec *, utime, vki_u32 *, uaddr2, int, val3);
|
||||
|
||||
PRE_MEM_READ( "futex(futex)", ARG1, sizeof(Int) );
|
||||
|
||||
*flags |= SfMayBlock;
|
||||
|
||||
switch(ARG2) {
|
||||
case VKI_FUTEX_WAIT:
|
||||
if (ARG4 != 0)
|
||||
PRE_MEM_READ( "futex(timeout)", ARG4, sizeof(struct vki_timespec) );
|
||||
break;
|
||||
|
||||
case VKI_FUTEX_REQUEUE:
|
||||
case VKI_FUTEX_CMP_REQUEUE:
|
||||
PRE_MEM_READ( "futex(futex2)", ARG5, sizeof(Int) );
|
||||
break;
|
||||
|
||||
case VKI_FUTEX_WAKE:
|
||||
case VKI_FUTEX_FD:
|
||||
/* no additional pointers */
|
||||
break;
|
||||
|
||||
default:
|
||||
SET_STATUS_Failure( VKI_ENOSYS ); // some futex function we don't understand
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
POST(sys_futex)
|
||||
{
|
||||
vg_assert(SUCCESS);
|
||||
POST_MEM_WRITE( ARG1, sizeof(int) );
|
||||
if (ARG2 == VKI_FUTEX_FD) {
|
||||
if (!VG_(fd_allowed)(RES, "futex", tid, True)) {
|
||||
VG_(close)(RES);
|
||||
SET_STATUS_Failure( VKI_EMFILE );
|
||||
} else {
|
||||
if (VG_(clo_track_fds))
|
||||
VG_(record_fd_open)(tid, RES, VG_(arena_strdup)(VG_AR_CORE, (Char*)ARG1));
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
//zz PRE(sys_epoll_create, 0)
|
||||
//zz {
|
||||
//zz PRINT("sys_epoll_create ( %d )", ARG1);
|
||||
@ -482,7 +493,7 @@ POST(sys_sysctl)
|
||||
//zz {
|
||||
//zz if (!VG_(fd_allowed)(RES, "epoll_create", tid, True)) {
|
||||
//zz VG_(close)(RES);
|
||||
//zz SET_RESULT( -VKI_EMFILE );
|
||||
//zz SET_STATUS_( -VKI_EMFILE );
|
||||
//zz } else {
|
||||
//zz if (VG_(clo_track_fds))
|
||||
//zz VG_(record_fd_open) (tid, RES, NULL);
|
||||
@ -530,16 +541,16 @@ POST(sys_sysctl)
|
||||
//zz PRINT("sys_tkill ( %d, %d )", ARG1,ARG2);
|
||||
//zz PRE_REG_READ2(long, "tkill", int, tid, int, sig);
|
||||
//zz if (!VG_(client_signal_OK)(ARG2)) {
|
||||
//zz SET_RESULT( -VKI_EINVAL );
|
||||
//zz SET_STATUS_( -VKI_EINVAL );
|
||||
//zz return;
|
||||
//zz }
|
||||
//zz
|
||||
//zz /* If we're sending SIGKILL, check to see if the target is one of
|
||||
//zz our threads and handle it specially. */
|
||||
//zz if (ARG2 == VKI_SIGKILL && VG_(do_sigkill)(ARG1, -1))
|
||||
//zz SET_RESULT(0);
|
||||
//zz SET_STATUS_(0);
|
||||
//zz else
|
||||
//zz SET_RESULT(VG_(do_syscall2)(SYSNO, ARG1, ARG2));
|
||||
//zz SET_STATUS_(VG_(do_syscall2)(SYSNO, ARG1, ARG2));
|
||||
//zz
|
||||
//zz if (VG_(clo_trace_signals))
|
||||
//zz VG_(message)(Vg_DebugMsg, "tkill: sent signal %d to pid %d",
|
||||
@ -547,40 +558,38 @@ POST(sys_sysctl)
|
||||
//zz // Check to see if this kill gave us a pending signal
|
||||
//zz XXX FIXME VG_(poll_signals)(tid);
|
||||
//zz }
|
||||
//zz
|
||||
//zz PRE(sys_tgkill, Special)
|
||||
//zz {
|
||||
//zz /* int tgkill(pid_t tgid, pid_t tid, int sig); */
|
||||
//zz PRINT("sys_tgkill ( %d, %d, %d )", ARG1,ARG2,ARG3);
|
||||
//zz PRE_REG_READ3(long, "tgkill", int, tgid, int, tid, int, sig);
|
||||
//zz if (!VG_(client_signal_OK)(ARG3)) {
|
||||
//zz SET_RESULT( -VKI_EINVAL );
|
||||
//zz return;
|
||||
//zz }
|
||||
//zz
|
||||
//zz /* If we're sending SIGKILL, check to see if the target is one of
|
||||
//zz our threads and handle it specially. */
|
||||
//zz if (ARG3 == VKI_SIGKILL && VG_(do_sigkill)(ARG2, ARG1))
|
||||
//zz SET_RESULT(0);
|
||||
//zz else
|
||||
//zz SET_RESULT(VG_(do_syscall3)(SYSNO, ARG1, ARG2, ARG3));
|
||||
//zz
|
||||
//zz if (VG_(clo_trace_signals))
|
||||
//zz VG_(message)(Vg_DebugMsg, "tgkill: sent signal %d to pid %d/%d",
|
||||
//zz ARG3, ARG1, ARG2);
|
||||
//zz // Check to see if this kill gave us a pending signal
|
||||
//zz XXX FIXME VG_(poll_signals)(tid);
|
||||
//zz }
|
||||
//zz
|
||||
//zz POST(sys_tgkill)
|
||||
//zz {
|
||||
//zz if (VG_(clo_trace_signals))
|
||||
//zz VG_(message)(Vg_DebugMsg, "tgkill: sent signal %d to pid %d/%d",
|
||||
//zz ARG3, ARG1, ARG2);
|
||||
//zz // Check to see if this kill gave us a pending signal
|
||||
//zz XXX FIXME VG_(poll_signals)(tid);
|
||||
//zz }
|
||||
//zz
|
||||
|
||||
PRE(sys_tgkill)
|
||||
{
|
||||
/* int tgkill(pid_t tgid, pid_t tid, int sig); */
|
||||
PRINT("sys_tgkill ( %d, %d, %d )", ARG1,ARG2,ARG3);
|
||||
PRE_REG_READ3(long, "tgkill", int, tgid, int, tid, int, sig);
|
||||
if (!VG_(client_signal_OK)(ARG3)) {
|
||||
SET_STATUS_Failure( VKI_EINVAL );
|
||||
return;
|
||||
}
|
||||
|
||||
/* If we're sending SIGKILL, check to see if the target is one of
|
||||
our threads and handle it specially. */
|
||||
if (ARG3 == VKI_SIGKILL && VG_(do_sigkill)(ARG2, ARG1))
|
||||
SET_STATUS_Success(0);
|
||||
else
|
||||
SET_STATUS_from_SysRes(VG_(do_syscall3)(SYSNO, ARG1, ARG2, ARG3));
|
||||
|
||||
if (VG_(clo_trace_signals))
|
||||
VG_(message)(Vg_DebugMsg, "tgkill: sent signal %d to pid %d/%d",
|
||||
ARG3, ARG1, ARG2);
|
||||
/* Check to see if this kill gave us a pending signal */
|
||||
*flags |= SfPollAfter;
|
||||
}
|
||||
|
||||
POST(sys_tgkill)
|
||||
{
|
||||
if (VG_(clo_trace_signals))
|
||||
VG_(message)(Vg_DebugMsg, "tgkill: sent signal %d to pid %d/%d",
|
||||
ARG3, ARG1, ARG2);
|
||||
}
|
||||
|
||||
//zz PRE(sys_fadvise64, 0)
|
||||
//zz {
|
||||
//zz PRINT("sys_fadvise64 ( %d, %lld, %lu, %d )", ARG1,ARG2,ARG3);
|
||||
@ -613,14 +622,14 @@ POST(sys_sysctl)
|
||||
//zz addr = VG_(find_map_space)(0, size, True);
|
||||
//zz
|
||||
//zz if (addr == 0) {
|
||||
//zz SET_RESULT( -VKI_ENOMEM );
|
||||
//zz SET_STATUS_( -VKI_ENOMEM );
|
||||
//zz return;
|
||||
//zz }
|
||||
//zz
|
||||
//zz VG_(map_segment)(addr, size, VKI_PROT_READ|VKI_PROT_WRITE, SF_FIXED);
|
||||
//zz
|
||||
//zz VG_(pad_address_space)(0);
|
||||
//zz SET_RESULT( VG_(do_syscall2)(SYSNO, ARG1, ARG2) );
|
||||
//zz SET_STATUS_( VG_(do_syscall2)(SYSNO, ARG1, ARG2) );
|
||||
//zz VG_(unpad_address_space)(0);
|
||||
//zz
|
||||
//zz if (RES == 0) {
|
||||
@ -660,7 +669,7 @@ POST(sys_sysctl)
|
||||
//zz size = VG_PGROUNDUP(sizeof(struct vki_aio_ring) +
|
||||
//zz r->nr*sizeof(struct vki_io_event));
|
||||
//zz
|
||||
//zz SET_RESULT( VG_(do_syscall1)(SYSNO, ARG1) );
|
||||
//zz SET_STATUS_( VG_(do_syscall1)(SYSNO, ARG1) );
|
||||
//zz
|
||||
//zz if (RES == 0 && s != NULL) {
|
||||
//zz VG_TRACK( die_mem_munmap, ARG1, size );
|
||||
|
||||
@ -949,6 +949,7 @@ DECL_TEMPLATE(x86_linux, sys_sigreturn);
|
||||
DECL_TEMPLATE(x86_linux, sys_ipc);
|
||||
DECL_TEMPLATE(x86_linux, sys_rt_sigreturn);
|
||||
DECL_TEMPLATE(x86_linux, sys_modify_ldt);
|
||||
DECL_TEMPLATE(x86_linux, sys_set_thread_area);
|
||||
|
||||
//zz PRE(old_select, MayBlock)
|
||||
//zz {
|
||||
@ -1192,16 +1193,16 @@ PRE(sys_modify_ldt)
|
||||
}
|
||||
}
|
||||
|
||||
//zz PRE(sys_set_thread_area, Special)
|
||||
//zz {
|
||||
//zz PRINT("sys_set_thread_area ( %p )", ARG1);
|
||||
//zz PRE_REG_READ1(int, "set_thread_area", struct user_desc *, u_info)
|
||||
//zz PRE_MEM_READ( "set_thread_area(u_info)", ARG1, sizeof(vki_modify_ldt_t) );
|
||||
//zz
|
||||
//zz /* "do" the syscall ourselves; the kernel never sees it */
|
||||
//zz SET_STATUS_( sys_set_thread_area( tid, (void *)ARG1 ) );
|
||||
//zz }
|
||||
//zz
|
||||
PRE(sys_set_thread_area)
|
||||
{
|
||||
PRINT("sys_set_thread_area ( %p )", ARG1);
|
||||
PRE_REG_READ1(int, "set_thread_area", struct user_desc *, u_info)
|
||||
PRE_MEM_READ( "set_thread_area(u_info)", ARG1, sizeof(vki_modify_ldt_t) );
|
||||
|
||||
/* "do" the syscall ourselves; the kernel never sees it */
|
||||
SET_STATUS_from_SysRes( sys_set_thread_area( tid, (void *)ARG1 ) );
|
||||
}
|
||||
|
||||
//zz PRE(sys_get_thread_area, Special)
|
||||
//zz {
|
||||
//zz PRINT("sys_get_thread_area ( %p )", ARG1);
|
||||
@ -2204,10 +2205,10 @@ const SyscallTableEntry VGP_(syscall_table)[] = {
|
||||
//zz LINX_(__NR_tkill, sys_tkill), // 238 */Linux
|
||||
//zz LINXY(__NR_sendfile64, sys_sendfile64), // 239
|
||||
//zz
|
||||
//zz LINXY(__NR_futex, sys_futex), // 240
|
||||
LINXY(__NR_futex, sys_futex), // 240
|
||||
//zz GENX_(__NR_sched_setaffinity, sys_sched_setaffinity), // 241
|
||||
//zz GENXY(__NR_sched_getaffinity, sys_sched_getaffinity), // 242
|
||||
//zz PLAX_(__NR_set_thread_area, sys_set_thread_area), // 243
|
||||
PLAX_(__NR_set_thread_area, sys_set_thread_area), // 243
|
||||
//zz PLAX_(__NR_get_thread_area, sys_get_thread_area), // 244
|
||||
//zz
|
||||
//zz LINX_(__NR_io_setup, sys_io_setup), // 245
|
||||
@ -2225,7 +2226,7 @@ const SyscallTableEntry VGP_(syscall_table)[] = {
|
||||
//zz LINX_(__NR_epoll_ctl, sys_epoll_ctl), // 255
|
||||
//zz LINXY(__NR_epoll_wait, sys_epoll_wait), // 256
|
||||
//zz // (__NR_remap_file_pages, sys_remap_file_pages), // 257 */Linux
|
||||
//zz GENX_(__NR_set_tid_address, sys_set_tid_address), // 258
|
||||
LINX_(__NR_set_tid_address, sys_set_tid_address), // 258
|
||||
//zz GENXY(__NR_timer_create, sys_timer_create), // 259
|
||||
//zz
|
||||
//zz GENXY(__NR_timer_settime, sys_timer_settime), // (timer_create+1)
|
||||
@ -2240,7 +2241,7 @@ const SyscallTableEntry VGP_(syscall_table)[] = {
|
||||
//zz GENXY(__NR_statfs64, sys_statfs64), // 268
|
||||
//zz GENXY(__NR_fstatfs64, sys_fstatfs64), // 269
|
||||
//zz
|
||||
//zz LINX_(__NR_tgkill, sys_tgkill), // 270 */Linux
|
||||
LINX_(__NR_tgkill, sys_tgkill), // 270 */Linux
|
||||
//zz GENX_(__NR_utimes, sys_utimes), // 271
|
||||
//zz LINX_(__NR_fadvise64_64, sys_fadvise64_64), // 272 */(Linux?)
|
||||
GENX_(__NR_vserver, sys_ni_syscall), // 273
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user