mirror of
https://github.com/llvm/llvm-project.git
synced 2025-04-18 18:56:43 +00:00
[Sanitizer] move internal_filesize and internal_dup2 from TSan to sanitizer_common.
llvm-svn: 158052
This commit is contained in:
parent
c4b201308b
commit
ca2b5d7abb
@ -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
|
||||
|
@ -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__
|
||||
|
@ -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__
|
||||
|
@ -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;
|
||||
|
@ -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();
|
||||
|
@ -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");
|
||||
}
|
||||
|
Loading…
x
Reference in New Issue
Block a user