diff options
author | Evgeniy Stepanov <eugeni.stepanov@gmail.com> | 2013-04-11 14:37:04 +0000 |
---|---|---|
committer | Evgeniy Stepanov <eugeni.stepanov@gmail.com> | 2013-04-11 14:37:04 +0000 |
commit | 2887a64cb7b82fc2dcbe4b1fcc33562077ec371a (patch) | |
tree | 69c378d6436047ec01f50c61fa03c77edb753650 /include | |
parent | 37f9464fc0fa4df2acf04264c52ba542d0e3d3fb (diff) | |
download | compiler-rt-2887a64cb7b82fc2dcbe4b1fcc33562077ec371a.tar.gz |
[sanitizer] Syscall hooks.
Pre- and post- hooks for linux syscalls. Not wired into anything, but exposed
through public interface.
git-svn-id: https://llvm.org/svn/llvm-project/compiler-rt/trunk@179288 91177308-0d34-0410-b5e6-96231b3b80d8
Diffstat (limited to 'include')
-rw-r--r-- | include/sanitizer/linux_syscall_hooks.h | 275 |
1 files changed, 275 insertions, 0 deletions
diff --git a/include/sanitizer/linux_syscall_hooks.h b/include/sanitizer/linux_syscall_hooks.h new file mode 100644 index 000000000..84783050b --- /dev/null +++ b/include/sanitizer/linux_syscall_hooks.h @@ -0,0 +1,275 @@ +//===-- linux_syscall_hooks.h ---------------------------------------------===// +// +// The LLVM Compiler Infrastructure +// +// This file is distributed under the University of Illinois Open Source +// License. See LICENSE.TXT for details. +// +//===----------------------------------------------------------------------===// +// +// This file is a part of public sanitizer interface. +// +// System call handlers. +// +// Interface methods declared in this header implement pre- and post- syscall +// actions for the active sanitizer. +// Usage: +// __sanitizer_syscall_pre_getfoo(...args...); +// int res = syscall(__NR_getfoo, ...args...); +// __sanitizer_syscall_post_getfoo(res, ...args...); +//===----------------------------------------------------------------------===// +#ifndef SANITIZER_LINUX_SYSCALL_HOOKS_H +#define SANITIZER_LINUX_SYSCALL_HOOKS_H + +#ifdef __cplusplus +extern "C" { +#endif + +void __sanitizer_syscall_pre_rt_sigpending(void *p, size_t s); +void __sanitizer_syscall_pre_getdents(int fd, void *dirp, int count); +void __sanitizer_syscall_pre_getdents64(int fd, void *dirp, int count); +void __sanitizer_syscall_pre_recvmsg(int sockfd, void *msg, int flags); + +void __sanitizer_syscall_post_rt_sigpending(int res, void *p, size_t s); +void __sanitizer_syscall_post_getdents(int res, int fd, void *dirp, int count); +void __sanitizer_syscall_post_getdents64(int res, int fd, void *dirp, int count); +void __sanitizer_syscall_post_recvmsg(int res, int sockfd, void *msg, int flags); + +// And now a few syscalls we don't handle yet. + +#define __sanitizer_syscall_pre__gettid() +#define __sanitizer_syscall_pre_fork() +#define __sanitizer_syscall_pre_getegid() +#define __sanitizer_syscall_pre_geteuid() +#define __sanitizer_syscall_pre_getpgrp() +#define __sanitizer_syscall_pre_getpid() +#define __sanitizer_syscall_pre_getppid() +#define __sanitizer_syscall_pre_sched_yield() +#define __sanitizer_syscall_pre_setsid() + +#define __sanitizer_syscall_pre__exit(a) +#define __sanitizer_syscall_pre_brk(a) +#define __sanitizer_syscall_pre_chdir(a) +#define __sanitizer_syscall_pre_chroot(a) +#define __sanitizer_syscall_pre_close(a) +#define __sanitizer_syscall_pre_dup(a) +#define __sanitizer_syscall_pre_exit_group(a) +#define __sanitizer_syscall_pre_getsid(a) +#define __sanitizer_syscall_pre_io_destroy(a) +#define __sanitizer_syscall_pre_pipe(a) +#define __sanitizer_syscall_pre_rt_sigreturn(a) +#define __sanitizer_syscall_pre_set_tid_address(a) +#define __sanitizer_syscall_pre_setfsgid(a) +#define __sanitizer_syscall_pre_setfsuid(a) +#define __sanitizer_syscall_pre_setgid(a) +#define __sanitizer_syscall_pre_setuid(a) +#define __sanitizer_syscall_pre_umask(a) +#define __sanitizer_syscall_pre_unlink(a) +#define __sanitizer_syscall_pre_unshare(a) + +#define __sanitizer_syscall_pre_arch_prctl(a, b) +#define __sanitizer_syscall_pre_capset(a, b) +#define __sanitizer_syscall_pre_clock_getres(a, b) +#define __sanitizer_syscall_pre_clock_gettime(a, b) +#define __sanitizer_syscall_pre_dup2(a, b) +#define __sanitizer_syscall_pre_fstat(a, b) +#define __sanitizer_syscall_pre_fstatfs(a, b) +#define __sanitizer_syscall_pre_ftruncate(a, b) +#define __sanitizer_syscall_pre_getpriority(a, b) +#define __sanitizer_syscall_pre_getrlimit(a, b) +#define __sanitizer_syscall_pre_gettimeofday(a, b) +#define __sanitizer_syscall_pre_io_setup(a, b) +#define __sanitizer_syscall_pre_ioprio_get(a, b) +#define __sanitizer_syscall_pre_kill(a, b) +#define __sanitizer_syscall_pre_munmap(a, b) +#define __sanitizer_syscall_pre_prctl(a, b) +#define __sanitizer_syscall_pre_rt_sigsuspend(a, b) +#define __sanitizer_syscall_pre_setgroups(a, b) +#define __sanitizer_syscall_pre_setns(a, b) +#define __sanitizer_syscall_pre_setpgid(a, b) +#define __sanitizer_syscall_pre_setrlimit(a, b) +#define __sanitizer_syscall_pre_shutdown(a, b) +#define __sanitizer_syscall_pre_sigaltstack(a, b) +#define __sanitizer_syscall_pre_stat(a, b) +#define __sanitizer_syscall_pre_statfs(a, b) +#define __sanitizer_syscall_pre_tkill(a, b) + +#define __sanitizer_syscall_pre_execve(a, b, c) +#define __sanitizer_syscall_pre_fcntl(a, b, c) +#define __sanitizer_syscall_pre_getcpu(a, b, c) +#define __sanitizer_syscall_pre_getresgid(a, b, c) +#define __sanitizer_syscall_pre_getresuid(a, b, c) +#define __sanitizer_syscall_pre_io_cancel(a, b, c) +#define __sanitizer_syscall_pre_io_submit(a, b, c) +#define __sanitizer_syscall_pre_ioctl(a, b, c) +#define __sanitizer_syscall_pre_ioprio_set(a, b, c) +#define __sanitizer_syscall_pre_listxattr(a, b, c) +#define __sanitizer_syscall_pre_llistxattr(a, b, c) +#define __sanitizer_syscall_pre_lseek(a, b, c) +#define __sanitizer_syscall_pre_mprotect(a, b, c) +#define __sanitizer_syscall_pre_open(a, b, c) +#define __sanitizer_syscall_pre_poll(a, b, c) +#define __sanitizer_syscall_pre_read(a, b, c) +#define __sanitizer_syscall_pre_readahead(a, b, c) +#define __sanitizer_syscall_pre_readlink(a, b, c) +#define __sanitizer_syscall_pre_sched_getaffinity(a, b, c) +#define __sanitizer_syscall_pre_sched_setaffinity(a, b, c) +#define __sanitizer_syscall_pre_sendmsg(a, b, c) +#define __sanitizer_syscall_pre_setpriority(a, b, c) +#define __sanitizer_syscall_pre_setresgid(a, b, c) +#define __sanitizer_syscall_pre_setresuid(a, b, c) +#define __sanitizer_syscall_pre_socket(a, b, c) +#define __sanitizer_syscall_pre_tgkill(a, b, c) +#define __sanitizer_syscall_pre_unlinkat(a, b, c) +#define __sanitizer_syscall_pre_write(a, b, c) +#define __sanitizer_syscall_pre_writev(a, b, c) + +#define __sanitizer_syscall_pre_fadvise64(a, b, c, d) +#define __sanitizer_syscall_pre_fallocate(a, b, c, d) +#define __sanitizer_syscall_pre_futex(a, b, c, d) +#define __sanitizer_syscall_pre_getxattr(a, b, c, d) +#define __sanitizer_syscall_pre_lgetxattr(a, b, c, d) +#define __sanitizer_syscall_pre_newfstatat(a, b, c, d) +#define __sanitizer_syscall_pre_openat(a, b, c, d) +#define __sanitizer_syscall_pre_pread64(a, b, c, d) +#define __sanitizer_syscall_pre_ptrace(a, b, c, d) +#define __sanitizer_syscall_pre_pwrite64(a, b, c, d) +#define __sanitizer_syscall_pre_quotactl(a, b, c, d) +#define __sanitizer_syscall_pre_rt_sigaction(a, b, c, d) +#define __sanitizer_syscall_pre_rt_sigprocmask(a, b, c, d) +#define __sanitizer_syscall_pre_socketpair(a, b, c, d) +#define __sanitizer_syscall_pre_wait4(a, b, c, d) + +#define __sanitizer_syscall_pre__mremap(a, b, c, d, e) +#define __sanitizer_syscall_pre_io_getevents(a, b, c, d, e) +#define __sanitizer_syscall_pre_lsetxattr(a, b, c, d, e) +#define __sanitizer_syscall_pre_mount(a, b, c, d, e) +#define __sanitizer_syscall_pre_preadv(a, b, c, d, e) +#define __sanitizer_syscall_pre_pwritev(a, b, c, d, e) +#define __sanitizer_syscall_pre_setxattr(a, b, c, d, e) + +#define __sanitizer_syscall_pre_mmap(a, b, c, d, e, f) +#define __sanitizer_syscall_pre_move_pages(a, b, c, d, e, f) +#define __sanitizer_syscall_pre_sendto(a, b, c, d, e, f) + + +#define __sanitizer_syscall_post__gettid(res) +#define __sanitizer_syscall_post_fork(res) +#define __sanitizer_syscall_post_getegid(res) +#define __sanitizer_syscall_post_geteuid(res) +#define __sanitizer_syscall_post_getpgrp(res) +#define __sanitizer_syscall_post_getpid(res) +#define __sanitizer_syscall_post_getppid(res) +#define __sanitizer_syscall_post_sched_yield(res) +#define __sanitizer_syscall_post_setsid(res) + +#define __sanitizer_syscall_post__exit(res, a) +#define __sanitizer_syscall_post_brk(res, a) +#define __sanitizer_syscall_post_chdir(res, a) +#define __sanitizer_syscall_post_chroot(res, a) +#define __sanitizer_syscall_post_close(res, a) +#define __sanitizer_syscall_post_dup(res, a) +#define __sanitizer_syscall_post_exit_group(res, a) +#define __sanitizer_syscall_post_getsid(res, a) +#define __sanitizer_syscall_post_io_destroy(res, a) +#define __sanitizer_syscall_post_pipe(res, a) +#define __sanitizer_syscall_post_rt_sigreturn(res, a) +#define __sanitizer_syscall_post_set_tid_address(res, a) +#define __sanitizer_syscall_post_setfsgid(res, a) +#define __sanitizer_syscall_post_setfsuid(res, a) +#define __sanitizer_syscall_post_setgid(res, a) +#define __sanitizer_syscall_post_setuid(res, a) +#define __sanitizer_syscall_post_umask(res, a) +#define __sanitizer_syscall_post_unlink(res, a) +#define __sanitizer_syscall_post_unshare(res, a) + +#define __sanitizer_syscall_post_arch_prctl(res, a, b) +#define __sanitizer_syscall_post_capset(res, a, b) +#define __sanitizer_syscall_post_clock_getres(res, a, b) +#define __sanitizer_syscall_post_clock_gettime(res, a, b) +#define __sanitizer_syscall_post_dup2(res, a, b) +#define __sanitizer_syscall_post_fstat(res, a, b) +#define __sanitizer_syscall_post_fstatfs(res, a, b) +#define __sanitizer_syscall_post_ftruncate(res, a, b) +#define __sanitizer_syscall_post_getpriority(res, a, b) +#define __sanitizer_syscall_post_getrlimit(res, a, b) +#define __sanitizer_syscall_post_gettimeofday(res, a, b) +#define __sanitizer_syscall_post_io_setup(res, a, b) +#define __sanitizer_syscall_post_ioprio_get(res, a, b) +#define __sanitizer_syscall_post_kill(res, a, b) +#define __sanitizer_syscall_post_munmap(res, a, b) +#define __sanitizer_syscall_post_prctl(res, a, b) +#define __sanitizer_syscall_post_rt_sigsuspend(res, a, b) +#define __sanitizer_syscall_post_setgroups(res, a, b) +#define __sanitizer_syscall_post_setns(res, a, b) +#define __sanitizer_syscall_post_setpgid(res, a, b) +#define __sanitizer_syscall_post_setrlimit(res, a, b) +#define __sanitizer_syscall_post_shutdown(res, a, b) +#define __sanitizer_syscall_post_sigaltstack(res, a, b) +#define __sanitizer_syscall_post_stat(res, a, b) +#define __sanitizer_syscall_post_statfs(res, a, b) +#define __sanitizer_syscall_post_tkill(res, a, b) + +#define __sanitizer_syscall_post_execve(res, a, b, c) +#define __sanitizer_syscall_post_fcntl(res, a, b, c) +#define __sanitizer_syscall_post_getcpu(res, a, b, c) +#define __sanitizer_syscall_post_getresgid(res, a, b, c) +#define __sanitizer_syscall_post_getresuid(res, a, b, c) +#define __sanitizer_syscall_post_io_cancel(res, a, b, c) +#define __sanitizer_syscall_post_io_submit(res, a, b, c) +#define __sanitizer_syscall_post_ioctl(res, a, b, c) +#define __sanitizer_syscall_post_ioprio_set(res, a, b, c) +#define __sanitizer_syscall_post_listxattr(res, a, b, c) +#define __sanitizer_syscall_post_llistxattr(res, a, b, c) +#define __sanitizer_syscall_post_lseek(res, a, b, c) +#define __sanitizer_syscall_post_mprotect(res, a, b, c) +#define __sanitizer_syscall_post_open(res, a, b, c) +#define __sanitizer_syscall_post_poll(res, a, b, c) +#define __sanitizer_syscall_post_read(res, a, b, c) +#define __sanitizer_syscall_post_readahead(res, a, b, c) +#define __sanitizer_syscall_post_readlink(res, a, b, c) +#define __sanitizer_syscall_post_sched_getaffinity(res, a, b, c) +#define __sanitizer_syscall_post_sched_setaffinity(res, a, b, c) +#define __sanitizer_syscall_post_sendmsg(res, a, b, c) +#define __sanitizer_syscall_post_setpriority(res, a, b, c) +#define __sanitizer_syscall_post_setresgid(res, a, b, c) +#define __sanitizer_syscall_post_setresuid(res, a, b, c) +#define __sanitizer_syscall_post_socket(res, a, b, c) +#define __sanitizer_syscall_post_tgkill(res, a, b, c) +#define __sanitizer_syscall_post_unlinkat(res, a, b, c) +#define __sanitizer_syscall_post_write(res, a, b, c) +#define __sanitizer_syscall_post_writev(res, a, b, c) + +#define __sanitizer_syscall_post_fadvise64(res, a, b, c, d) +#define __sanitizer_syscall_post_fallocate(res, a, b, c, d) +#define __sanitizer_syscall_post_futex(res, a, b, c, d) +#define __sanitizer_syscall_post_getxattr(res, a, b, c, d) +#define __sanitizer_syscall_post_lgetxattr(res, a, b, c, d) +#define __sanitizer_syscall_post_newfstatat(res, a, b, c, d) +#define __sanitizer_syscall_post_openat(res, a, b, c, d) +#define __sanitizer_syscall_post_pread64(res, a, b, c, d) +#define __sanitizer_syscall_post_ptrace(res, a, b, c, d) +#define __sanitizer_syscall_post_pwrite64(res, a, b, c, d) +#define __sanitizer_syscall_post_quotactl(res, a, b, c, d) +#define __sanitizer_syscall_post_rt_sigaction(res, a, b, c, d) +#define __sanitizer_syscall_post_rt_sigprocmask(res, a, b, c, d) +#define __sanitizer_syscall_post_socketpair(res, a, b, c, d) +#define __sanitizer_syscall_post_wait4(res, a, b, c, d) + +#define __sanitizer_syscall_post__mremap(res, a, b, c, d, e) +#define __sanitizer_syscall_post_io_getevents(res, a, b, c, d, e) +#define __sanitizer_syscall_post_lsetxattr(res, a, b, c, d, e) +#define __sanitizer_syscall_post_mount(res, a, b, c, d, e) +#define __sanitizer_syscall_post_preadv(res, a, b, c, d, e) +#define __sanitizer_syscall_post_pwritev(res, a, b, c, d, e) +#define __sanitizer_syscall_post_setxattr(res, a, b, c, d, e) + +#define __sanitizer_syscall_post_mmap(res, a, b, c, d, e, f) +#define __sanitizer_syscall_post_move_pages(res, a, b, c, d, e, f) +#define __sanitizer_syscall_post_sendto(res, a, b, c, d, e, f) + +#ifdef __cplusplus +} // extern "C" +#endif + +#endif // SANITIZER_LINUX_SYSCALL_HOOKS_H |