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:
Julian Seward 2005-06-08 00:02:49 +00:00
parent 091ebb69f5
commit e4e75cba40
5 changed files with 346 additions and 344 deletions

View File

@ -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?
/* ---------------------------------------------------------------------

View File

@ -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

View File

@ -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);

View File

@ -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 );

View File

@ -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