Skip to content

Commit cf81ec0

Browse files
committed
Fix sanitizer tests
1 parent bcc3dae commit cf81ec0

File tree

2 files changed

+36
-7
lines changed

2 files changed

+36
-7
lines changed

system/lib/compiler-rt/lib/sanitizer_common/sanitizer_emscripten.cpp

Lines changed: 26 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -135,6 +135,10 @@ u64 MonotonicNanoTime() {
135135
return (u64)ts.tv_sec * (1000ULL * 1000 * 1000) + ts.tv_nsec;
136136
}
137137

138+
int internal_madvise(uptr addr, uptr length, int advice) {
139+
return 0; // madvice is currently ignored
140+
}
141+
138142
uptr internal_close(fd_t fd) {
139143
return __wasi_fd_close(fd);
140144
}
@@ -169,6 +173,17 @@ uptr internal_stat(const char* path, void* buf) {
169173
return stat(path, (struct stat *)buf);
170174
}
171175

176+
uptr internal_fstat(fd_t fd, void *buf) {
177+
return fstat(fd, (struct stat *)buf);
178+
}
179+
180+
uptr internal_filesize(fd_t fd) {
181+
struct stat st;
182+
if (internal_fstat(fd, &st))
183+
return -1;
184+
return (uptr)st.st_size;
185+
}
186+
172187
uptr internal_dup(int oldfd) {
173188
return dup(oldfd);
174189
}
@@ -178,7 +193,16 @@ uptr internal_getpid() {
178193
}
179194

180195
uptr internal_sched_yield() {
181-
return 0;
196+
return sched_yield();
197+
}
198+
199+
void internal_sigfillset(__sanitizer_sigset_t *set) {
200+
sigfillset(set);
201+
}
202+
203+
uptr internal_sigprocmask(int how, __sanitizer_sigset_t *set,
204+
__sanitizer_sigset_t *oldset) {
205+
return sigprocmask(how, set, oldset);
182206
}
183207

184208
void internal_usleep(u64 useconds) {
@@ -193,10 +217,8 @@ tid_t GetTid() {
193217
return gettid();
194218
}
195219

196-
extern "C" int __clock_gettime(__sanitizer_clockid_t clk_id, void* tp);
197-
198220
uptr internal_clock_gettime(__sanitizer_clockid_t clk_id, void* tp) {
199-
return __clock_gettime(clk_id, tp);
221+
return clock_gettime(clk_id, (struct timespec *)tp);
200222
}
201223

202224
} // namespace __sanitizer

system/lib/compiler-rt/lib/sanitizer_common/sanitizer_platform_limits_posix.h

Lines changed: 10 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -37,6 +37,11 @@
3737
#define SANITIZER_HAS_STATFS64 1
3838
#endif
3939

40+
#if SANITIZER_EMSCRIPTEN
41+
#include <signal.h> // For sigset_t
42+
#include <time.h> // For clock_t and clockid_t
43+
#endif
44+
4045
#if defined(__sparc__)
4146
// FIXME: This can't be included from tsan which does not support sparc yet.
4247
#include "sanitizer_glibc_version.h"
@@ -531,15 +536,17 @@ struct __sanitizer_dirent64 {
531536
#endif
532537

533538
#if SANITIZER_EMSCRIPTEN
534-
typedef int __sanitizer_clock_t;
539+
typedef clock_t __sanitizer_clock_t;
535540
#elif defined(__x86_64__) && !defined(_LP64)
536541
typedef long long __sanitizer_clock_t;
537542
#else
538543
typedef long __sanitizer_clock_t;
539544
#endif
540545

541-
#if SANITIZER_LINUX || SANITIZER_EMSCRIPTEN
546+
#if SANITIZER_LINUX
542547
typedef int __sanitizer_clockid_t;
548+
#elif SANITIZER_EMSCRIPTEN
549+
typedef clockid_t __sanitizer_clockid_t;
543550
#endif
544551

545552
#if SANITIZER_LINUX
@@ -592,7 +599,7 @@ struct __sanitizer_sigset_t {
592599
uptr val[128 / sizeof(uptr)];
593600
};
594601
#elif SANITIZER_EMSCRIPTEN
595-
typedef unsigned long __sanitizer_sigset_t;
602+
typedef sigset_t __sanitizer_sigset_t;
596603
#endif
597604

598605
struct __sanitizer_siginfo_pad {

0 commit comments

Comments
 (0)