#include #include #include #include #include #include int myfork() { __sanitizer_syscall_pre_fork(); #ifdef SYS_fork int res = syscall(SYS_fork); #else int res = syscall(SYS_clone, SIGCHLD, 0); #endif __sanitizer_syscall_post_fork(res); return res; } int mypipe(int pipefd[2]) { __sanitizer_syscall_pre_pipe(pipefd); int res = syscall(SYS_pipe2, pipefd, 0); __sanitizer_syscall_post_pipe(res, pipefd); return res; } int myclose(int fd) { __sanitizer_syscall_pre_close(fd); int res = syscall(SYS_close, fd); __sanitizer_syscall_post_close(res, fd); return res; } ssize_t myread(int fd, void *buf, size_t count) { __sanitizer_syscall_pre_read(fd, buf, count); ssize_t res = syscall(SYS_read, fd, buf, count); __sanitizer_syscall_post_read(res, fd, buf, count); return res; } ssize_t mywrite(int fd, const void *buf, size_t count) { __sanitizer_syscall_pre_write(fd, buf, count); ssize_t res = syscall(SYS_write, fd, buf, count); __sanitizer_syscall_post_write(res, fd, buf, count); return res; }