@@ -109,11 +109,6 @@ extern struct ps_strings *__ps_strings;
109
109
#endif
110
110
111
111
#if SANITIZER_EMSCRIPTEN
112
- #define weak __attribute__ (__weak__)
113
- #define hidden __attribute__ ((__visibility__(" hidden" )))
114
- #include < syscall.h>
115
- #undef weak
116
- #undef hidden
117
112
#include < emscripten/threading.h>
118
113
#include < math.h>
119
114
#include < wasi/api.h>
@@ -211,8 +206,8 @@ ScopedBlockSignals::~ScopedBlockSignals() { SetSigProcMask(&saved_, nullptr); }
211
206
# endif
212
207
213
208
// --------------- sanitizer_libc.h
214
- #if !SANITIZER_SOLARIS && !SANITIZER_NETBSD
215
- #if !SANITIZER_S390 && !SANITIZER_EMSCRIPTEN
209
+ #if !SANITIZER_SOLARIS && !SANITIZER_NETBSD && !SANITIZER_EMSCRIPTEN
210
+ #if !SANITIZER_S390
216
211
uptr internal_mmap (void *addr, uptr length, int prot, int flags, int fd,
217
212
u64 offset) {
218
213
#if SANITIZER_FREEBSD || SANITIZER_LINUX_USES_64BIT_SYSCALLS
@@ -225,9 +220,8 @@ uptr internal_mmap(void *addr, uptr length, int prot, int flags, int fd,
225
220
offset / 4096 );
226
221
#endif
227
222
}
228
- #endif // !SANITIZER_S390 && !SANITIZER_NETBSD
223
+ #endif // !SANITIZER_S390
229
224
230
- #if !SANITIZER_EMSCRIPTEN
231
225
uptr internal_munmap (void *addr, uptr length) {
232
226
return internal_syscall (SYSCALL (munmap), (uptr)addr, length);
233
227
}
@@ -243,30 +237,25 @@ uptr internal_mremap(void *old_address, uptr old_size, uptr new_size, int flags,
243
237
int internal_mprotect (void *addr, uptr length, int prot) {
244
238
return internal_syscall (SYSCALL (mprotect), (uptr)addr, length, prot);
245
239
}
246
- #endif
247
240
248
241
int internal_madvise (uptr addr, uptr length, int advice) {
249
242
return internal_syscall (SYSCALL (madvise), addr, length, advice);
250
- }
243
+
251
244
252
245
uptr internal_close (fd_t fd) {
253
- #if SANITIZER_EMSCRIPTEN
254
- return __wasi_fd_close (fd);
255
- #else
256
246
return internal_syscall (SYSCALL (close), fd);
257
- #endif
258
247
}
259
248
260
249
uptr internal_open (const char *filename, int flags) {
261
- # if SANITIZER_LINUX || SANITIZER_EMSCRIPTEN
250
+ # if SANITIZER_LINUX
262
251
return internal_syscall (SYSCALL (openat), AT_FDCWD, (uptr)filename, flags);
263
252
#else
264
253
return internal_syscall (SYSCALL (open), (uptr)filename, flags);
265
254
#endif
266
255
}
267
256
268
257
uptr internal_open (const char *filename, int flags, u32 mode) {
269
- # if SANITIZER_LINUX || SANITIZER_EMSCRIPTEN
258
+ # if SANITIZER_LINUX
270
259
return internal_syscall (SYSCALL (openat), AT_FDCWD, (uptr)filename, flags,
271
260
mode);
272
261
#else
@@ -275,19 +264,10 @@ uptr internal_open(const char *filename, int flags, u32 mode) {
275
264
}
276
265
277
266
uptr internal_read (fd_t fd, void *buf, uptr count) {
278
- #if SANITIZER_EMSCRIPTEN
279
- __wasi_iovec_t iov = { (uint8_t *)buf, count };
280
- size_t num;
281
- if (__wasi_syscall_ret (__wasi_fd_read (fd, &iov, 1 , &num))) {
282
- return -1 ;
283
- }
284
- return num;
285
- #else
286
267
sptr res;
287
268
HANDLE_EINTR (res,
288
269
(sptr)internal_syscall (SYSCALL (read), fd, (uptr)buf, count));
289
270
return res;
290
- #endif
291
271
}
292
272
293
273
uptr internal_write (fd_t fd, const void *buf, uptr count) {
@@ -503,15 +483,15 @@ uptr internal_dup(int oldfd) {
503
483
}
504
484
505
485
uptr internal_dup2 (int oldfd, int newfd) {
506
- # if SANITIZER_LINUX || SANITIZER_EMSCRIPTEN
486
+ # if SANITIZER_LINUX
507
487
return internal_syscall (SYSCALL (dup3), oldfd, newfd, 0 );
508
488
#else
509
489
return internal_syscall (SYSCALL (dup2), oldfd, newfd);
510
490
#endif
511
491
}
512
492
513
493
uptr internal_readlink (const char *path, char *buf, uptr bufsize) {
514
- # if SANITIZER_LINUX || SANITIZER_EMSCRIPTEN
494
+ # if SANITIZER_LINUX
515
495
return internal_syscall (SYSCALL (readlinkat), AT_FDCWD, (uptr)path, (uptr)buf,
516
496
bufsize);
517
497
#else
@@ -520,7 +500,7 @@ uptr internal_readlink(const char *path, char *buf, uptr bufsize) {
520
500
}
521
501
522
502
uptr internal_unlink (const char *path) {
523
- # if SANITIZER_LINUX || SANITIZER_EMSCRIPTEN
503
+ # if SANITIZER_LINUX
524
504
return internal_syscall (SYSCALL (unlinkat), AT_FDCWD, (uptr)path, 0 );
525
505
#else
526
506
return internal_syscall (SYSCALL (unlink), (uptr)path);
@@ -531,7 +511,7 @@ uptr internal_rename(const char *oldpath, const char *newpath) {
531
511
# if (defined(__riscv) || defined(__loongarch__)) && defined(__linux__)
532
512
return internal_syscall (SYSCALL (renameat2), AT_FDCWD, (uptr)oldpath, AT_FDCWD,
533
513
(uptr)newpath, 0 );
534
- # elif SANITIZER_LINUX || SANITIZER_EMSCRIPTEN
514
+ # elif SANITIZER_LINUX
535
515
return internal_syscall (SYSCALL (renameat), AT_FDCWD, (uptr)oldpath, AT_FDCWD,
536
516
(uptr)newpath);
537
517
# else
@@ -540,32 +520,21 @@ uptr internal_rename(const char *oldpath, const char *newpath) {
540
520
}
541
521
542
522
uptr internal_sched_yield () {
543
- #if SANITIZER_EMSCRIPTEN
544
- return 0 ;
545
- #else
546
- return internal_syscall (SYSCALL (sched_yield));
547
- #endif
523
+ return internal_syscall (SYSCALL (sched_yield))
548
524
}
549
525
550
526
void internal_usleep (u64 useconds) {
551
- #if SANITIZER_EMSCRIPTEN
552
- usleep (useconds);
553
- #else
554
527
struct timespec ts;
555
528
ts.tv_sec = useconds / 1000000 ;
556
529
ts.tv_nsec = (useconds % 1000000 ) * 1000 ;
557
530
internal_syscall (SYSCALL (nanosleep), &ts, &ts);
558
- #endif
559
531
}
560
-
561
- #if !SANITIZER_EMSCRIPTEN
562
532
uptr internal_execve (const char *filename, char *const argv[],
563
533
char *const envp[]) {
564
534
return internal_syscall (SYSCALL (execve), (uptr)filename, (uptr)argv,
565
535
(uptr)envp);
566
536
}
567
- #endif // !SANITIZER_EMSCRIPTEN
568
- #endif // !SANITIZER_SOLARIS && !SANITIZER_NETBSD
537
+ #endif // !SANITIZER_SOLARIS && !SANITIZER_NETBSD && !SANITIZER_EMSCRIPTEN
569
538
570
539
#if !SANITIZER_NETBSD
571
540
void internal__exit (int exitcode) {
@@ -607,7 +576,7 @@ tid_t GetTid() {
607
576
#elif SANITIZER_SOLARIS
608
577
return thr_self ();
609
578
#elif SANITIZER_EMSCRIPTEN
610
- return ( tid_t ) pthread_self ();
579
+ return gettid ();
611
580
#else
612
581
return internal_syscall (SYSCALL (gettid));
613
582
#endif
@@ -833,14 +802,12 @@ struct linux_dirent {
833
802
};
834
803
#endif
835
804
836
- #if !SANITIZER_SOLARIS && !SANITIZER_NETBSD
837
- #if !SANITIZER_EMSCRIPTEN
805
+ #if !SANITIZER_SOLARIS && !SANITIZER_NETBS && !SANITIZER_EMSCRIPTEN
838
806
// Syscall wrappers.
839
807
uptr internal_ptrace (int request, int pid, void *addr, void *data) {
840
808
return internal_syscall (SYSCALL (ptrace), request, pid, (uptr)addr,
841
809
(uptr)data);
842
810
}
843
- #endif
844
811
845
812
uptr internal_waitpid (int pid, int *status, int options) {
846
813
return internal_syscall (SYSCALL (wait4), pid, (uptr)status, options,
@@ -874,12 +841,7 @@ uptr internal_getdents(fd_t fd, struct linux_dirent *dirp, unsigned int count) {
874
841
}
875
842
876
843
uptr internal_lseek (fd_t fd, OFF_T offset, int whence) {
877
- #if SANITIZER_EMSCRIPTEN
878
- __wasi_filesize_t result;
879
- return __wasi_syscall_ret (__wasi_fd_seek (fd, offset, whence, &result)) ? -1 : result;
880
- #else
881
844
return internal_syscall (SYSCALL (lseek), fd, offset, whence);
882
- #endif
883
845
}
884
846
885
847
#if SANITIZER_LINUX
@@ -895,17 +857,11 @@ uptr internal_arch_prctl(int option, uptr arg2) {
895
857
# endif
896
858
# endif
897
859
898
- #if !SANITIZER_EMSCRIPTEN
899
860
uptr internal_sigaltstack (const void *ss, void *oss) {
900
861
return internal_syscall (SYSCALL (sigaltstack), (uptr)ss, (uptr)oss);
901
862
}
902
- #endif
903
863
904
864
int internal_fork () {
905
- #if SANITIZER_EMSCRIPTEN
906
- Report (" fork not supported on emscripten\n " );
907
- return -1 ;
908
- #else
909
865
# if SANITIZER_LINUX
910
866
# if SANITIZER_S390
911
867
return internal_syscall (SYSCALL (clone), 0 , SIGCHLD);
@@ -915,7 +871,6 @@ int internal_fork() {
915
871
# else
916
872
return internal_syscall (SYSCALL (fork));
917
873
# endif
918
- #endif
919
874
}
920
875
921
876
#if SANITIZER_FREEBSD
@@ -1006,8 +961,6 @@ uptr internal_sigprocmask(int how, __sanitizer_sigset_t *set,
1006
961
__sanitizer_sigset_t *oldset) {
1007
962
#if SANITIZER_FREEBSD
1008
963
return internal_syscall (SYSCALL (sigprocmask), how, set, oldset);
1009
- #elif SANITIZER_EMSCRIPTEN
1010
- return 0 ;
1011
964
#else
1012
965
__sanitizer_kernel_sigset_t *k_set = (__sanitizer_kernel_sigset_t *)set;
1013
966
__sanitizer_kernel_sigset_t *k_oldset = (__sanitizer_kernel_sigset_t *)oldset;
@@ -1059,7 +1012,7 @@ bool internal_sigismember(__sanitizer_sigset_t *set, int signum) {
1059
1012
return sigismember (rset, signum);
1060
1013
}
1061
1014
#endif
1062
- #endif // !SANITIZER_SOLARIS
1015
+ #endif // !SANITIZER_SOLARIS && !SANITIZER_NETBS && !SANITIZER_EMSCRIPTEN
1063
1016
1064
1017
#if !SANITIZER_NETBSD && !SANITIZER_EMSCRIPTEN
1065
1018
// ThreadLister implementation.
0 commit comments