[Sanitizer] move internal_filesize and internal_dup2 from TSan to sanitizer_common.

llvm-svn: 158052
This commit is contained in:
Alexey Samsonov 2012-06-06 07:30:33 +00:00
parent c4b201308b
commit ca2b5d7abb
6 changed files with 34 additions and 15 deletions

View File

@ -40,6 +40,8 @@ int internal_close(fd_t fd);
fd_t internal_open(const char *filename, bool write);
uptr internal_read(fd_t fd, void *buf, uptr count);
uptr internal_write(fd_t fd, const void *buf, uptr count);
uptr internal_filesize(fd_t fd); // -1 on error.
int internal_dup2(int oldfd, int newfd);
int internal_sscanf(const char *str, const char *format, ...);
} // namespace __sanitizer

View File

@ -55,6 +55,17 @@ uptr internal_write(fd_t fd, const void *buf, uptr count) {
return (uptr)syscall(__NR_write, fd, buf, count);
}
uptr internal_filesize(fd_t fd) {
struct stat st = {};
if (syscall(__NR_fstat, fd, &st))
return -1;
return (uptr)st.st_size;
}
int internal_dup2(int oldfd, int newfd) {
return syscall(__NR_dup2, oldfd, newfd);
}
} // namespace __sanitizer
#endif // __linux__

View File

@ -51,6 +51,17 @@ uptr internal_write(fd_t fd, const void *buf, uptr count) {
return write(fd, buf, count);
}
uptr internal_filesize(fd_t fd) {
struct stat st = {};
if (fstat(fd, &st))
return -1;
return (uptr)st.st_size;
}
int internal_dup2(int oldfd, int newfd) {
return dup2(oldfd, newfd);
}
} // namespace __sanitizer
#endif // __APPLE__

View File

@ -63,6 +63,16 @@ uptr internal_write(fd_t fd, const void *buf, uptr count) {
return ret;
}
uptr internal_filesize(fd_t fd) {
UNIMPLEMENTED_WIN();
return -1;
}
int internal_dup2(int oldfd, int newfd) {
UNIMPLEMENTED_WIN();
return -1;
}
int internal_sscanf(const char *str, const char *format, ...) {
UNIMPLEMENTED_WIN();
return -1;

View File

@ -76,9 +76,6 @@ void internal_sleep_ms(u32 ms);
void internal_start_thread(void(*func)(void*), void *arg);
typedef int fd_t;
uptr internal_filesize(fd_t fd); // -1 on error.
int internal_dup2(int oldfd, int newfd);
const char *internal_getpwd();
uptr GetTlsSize();

View File

@ -83,18 +83,6 @@ void internal_sleep_ms(u32 ms) {
usleep(ms * 1000);
}
uptr internal_filesize(fd_t fd) {
struct stat st = {};
if (syscall(__NR_fstat, fd, &st))
return -1;
return (uptr)st.st_size;
}
int internal_dup2(int oldfd, int newfd) {
ScopedInRtl in_rtl;
return syscall(__NR_dup2, oldfd, newfd);
}
const char *internal_getpwd() {
return getenv("PWD");
}