Skip to content

Commit dc62be8

Browse files
committed
Minor improvements
1 parent cd207c4 commit dc62be8

File tree

6 files changed

+30
-20
lines changed

6 files changed

+30
-20
lines changed

src/library_syscall.js

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -972,7 +972,7 @@ var SyscallsLibrary = {
972972
__syscall_fstatfs64__deps: ['__syscall_statfs64'],
973973
__syscall_fstatfs64: function(fd, size, buf) {
974974
var stream = SYSCALLS.getStreamFromFD(fd);
975-
return ___syscall_statfs64(0, size, buf);
975+
return ___syscall_statfs64(stream.path, size, buf);
976976
},
977977
__syscall_fadvise64_64__nothrow: true,
978978
__syscall_fadvise64_64__proxy: false,

src/library_wasi.js

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -296,11 +296,15 @@ var WasiLibrary = {
296296
var type = stream.tty ? {{{ cDefine('__WASI_FILETYPE_CHARACTER_DEVICE') }}} :
297297
FS.isDir(stream.mode) ? {{{ cDefine('__WASI_FILETYPE_DIRECTORY') }}} :
298298
FS.isLink(stream.mode) ? {{{ cDefine('__WASI_FILETYPE_SYMBOLIC_LINK') }}} :
299-
{{{ cDefine('__WASI_FILETYPE_REGULAR_FILE') }}};
299+
FS.isFile(stream.mode) ? {{{ cDefine('__WASI_FILETYPE_REGULAR_FILE') }}} :
300+
-1;
300301
#else
301302
// hack to support printf in SYSCALLS_REQUIRE_FILESYSTEM=0
302-
var type = fd == 1 || fd == 2 ? {{{ cDefine('__WASI_FILETYPE_CHARACTER_DEVICE') }}} : abort();
303+
var type = fd == 1 || fd == 2 ? {{{ cDefine('__WASI_FILETYPE_CHARACTER_DEVICE') }}} : -1;
303304
#endif
305+
if (type === -1) {
306+
return -{{{ cDefine('EBADF') }}};
307+
}
304308
{{{ makeSetValue('pbuf', C_STRUCTS.__wasi_fdstat_t.fs_filetype, 'type', 'i8') }}};
305309
// TODO {{{ makeSetValue('pbuf', C_STRUCTS.__wasi_fdstat_t.fs_flags, '?', 'i16') }}};
306310
// TODO {{{ makeSetValue('pbuf', C_STRUCTS.__wasi_fdstat_t.fs_rights_base, '?', 'i64') }}};

system/lib/compiler-rt/lib/asan/asan_interceptors.h

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -34,10 +34,10 @@ void InitializePlatformInterceptors();
3434

3535
} // namespace __asan
3636

37-
// There is no general interception at all on Fuchsia.
37+
// There is no general interception at all on Fuchsia and Emscripten.
3838
// Only the functions in asan_interceptors_memintrinsics.h are
3939
// really defined to replace libc functions.
40-
#if !SANITIZER_FUCHSIA
40+
#if !SANITIZER_FUCHSIA && !SANITIZER_EMSCRIPTEN
4141

4242
// Use macro to describe if specific function should be
4343
// intercepted on a given platform.
@@ -157,6 +157,6 @@ DECLARE_REAL(char*, strstr, const char *s1, const char *s2)
157157
#define ASAN_INTERCEPT_FUNC(name)
158158
#endif // SANITIZER_MAC
159159

160-
#endif // !SANITIZER_FUCHSIA
160+
#endif // !SANITIZER_FUCHSIA && !SANITIZER_EMSCRIPTEN
161161

162162
#endif // ASAN_INTERCEPTORS_H

system/lib/compiler-rt/lib/lsan/lsan_common_emscripten.cpp

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -122,11 +122,12 @@ u32 GetCurrentThread();
122122
// Finally, we can only obtain the stack pointer for the current thread,
123123
// so we scan the full stack for other threads.
124124
static void ProcessThreadsCallback(ThreadContextBase *tctx, void *arg) {
125+
tid_t os_id = tctx->os_id;
126+
LOG_THREADS("Processing thread %d\n", os_id);
125127
if (tctx->status != ThreadStatusRunning)
126128
return;
127129

128130
Frontier *frontier = reinterpret_cast<Frontier *>(arg);
129-
tid_t os_id = tctx->os_id;
130131

131132
uptr stack_begin, stack_end, tls_begin, tls_end, cache_begin, cache_end;
132133
DTLS *dtls;
@@ -157,6 +158,7 @@ static void ProcessThreadsCallback(ThreadContextBase *tctx, void *arg) {
157158
}
158159

159160
ScanRangeForPointers(stack_begin, stack_end, frontier, "STACK", kReachable);
161+
//ForEachExtraStackRange(os_id, ForEachExtraStackRangeCb, frontier);
160162
}
161163

162164
if (flags()->use_tls && tls_begin) {

system/lib/compiler-rt/lib/lsan/lsan_interceptors.cpp

Lines changed: 16 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -33,6 +33,10 @@
3333

3434
#include <stddef.h>
3535

36+
#if SANITIZER_EMSCRIPTEN
37+
#define __ATTRP_C11_THREAD ((void*)(uptr)-1)
38+
#endif
39+
3640
using namespace __lsan;
3741

3842
extern "C" {
@@ -63,9 +67,9 @@ INTERCEPTOR(void, free, void *p) {
6367
}
6468

6569
INTERCEPTOR(void*, calloc, uptr nmemb, uptr size) {
66-
// This hack is not required for Fuchsia because there are no dlsym calls
70+
// This hack is not required for Fuchsia and Emscripten because there are no dlsym calls
6771
// involved in setting up interceptors.
68-
#if !SANITIZER_FUCHSIA
72+
#if !SANITIZER_FUCHSIA && !SANITIZER_EMSCRIPTEN
6973
if (lsan_init_is_running) {
7074
// Hack: dlsym calls calloc before REAL(calloc) is retrieved from dlsym.
7175
const uptr kCallocPoolSize = 1024;
@@ -77,7 +81,7 @@ INTERCEPTOR(void*, calloc, uptr nmemb, uptr size) {
7781
CHECK(allocated < kCallocPoolSize);
7882
return mem;
7983
}
80-
#endif // !SANITIZER_FUCHSIA
84+
#endif // !SANITIZER_FUCHSIA && !SANITIZER_EMSCRIPTEN
8185
ENSURE_LSAN_INITED;
8286
GET_STACK_TRACE_MALLOC;
8387
return lsan_calloc(nmemb, size, stack);
@@ -394,7 +398,6 @@ INTERCEPTOR(int, pthread_atfork, void (*prepare)(), void (*parent)(),
394398
#endif
395399

396400
#if SANITIZER_EMSCRIPTEN
397-
#define __ATTRP_C11_THREAD ((void*)(uptr)-1)
398401
extern "C" {
399402
int emscripten_builtin_pthread_create(void *thread, void *attr,
400403
void *(*callback)(void *), void *arg);
@@ -453,7 +456,11 @@ INTERCEPTOR(int, pthread_create, void *th, void *attr,
453456
ENSURE_LSAN_INITED;
454457
EnsureMainThreadIDIsCorrect();
455458
__sanitizer_pthread_attr_t myattr;
459+
#if SANITIZER_EMSCRIPTEN
456460
if (!attr || attr == __ATTRP_C11_THREAD) {
461+
#else
462+
if (!attr) {
463+
#endif
457464
pthread_attr_init(&myattr);
458465
attr = &myattr;
459466
}
@@ -532,9 +539,8 @@ INTERCEPTOR(void, _exit, int status) {
532539
namespace __lsan {
533540

534541
void InitializeInterceptors() {
535-
// Fuchsia doesn't use interceptors that require any setup.
536-
#if !SANITIZER_FUCHSIA
537-
#if !SANITIZER_EMSCRIPTEN
542+
// Fuchsia and Emscripten doesn't use interceptors that require any setup.
543+
#if !SANITIZER_FUCHSIA && !SANITIZER_EMSCRIPTEN
538544
InitializeSignalInterceptors();
539545

540546
INTERCEPT_FUNCTION(malloc);
@@ -564,17 +570,15 @@ void InitializeInterceptors() {
564570
LSAN_MAYBE_INTERCEPT_PTHREAD_ATFORK;
565571

566572
LSAN_MAYBE_INTERCEPT_STRERROR;
567-
#endif // !SANITIZER_EMSCRIPTEN
573+
#endif // !SANITIZER_FUCHSIA && !SANITIZER_EMSCRIPTEN
568574

569-
#if !SANITIZER_NETBSD && !SANITIZER_FREEBSD
575+
#if !SANITIZER_NETBSD && !SANITIZER_FREEBSD && !SANITIZER_FUCHSIA
570576
if (pthread_key_create(&g_thread_finalize_key, &thread_finalize)) {
571577
Report("LeakSanitizer: failed to create thread key.\n");
572578
Die();
573579
}
574580
#endif
575-
576-
#endif // !SANITIZER_FUCHSIA
577581
}
578582

579583
} // namespace __lsan
580-
#endif // SANITIZER_EMSCRIPTEN
584+
#endif // SANITIZER_POSIX

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

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -272,7 +272,7 @@
272272
#define SANITIZER_INTERCEPT_SENDMMSG SI_LINUX
273273
#define SANITIZER_INTERCEPT_SYSMSG SI_LINUX_NOT_ANDROID
274274
#define SANITIZER_INTERCEPT_GETPEERNAME SI_POSIX
275-
#define SANITIZER_INTERCEPT_IOCTL SI_POSIX && !SI_EMSCRIPTEN
275+
#define SANITIZER_INTERCEPT_IOCTL SI_POSIX_NOT_EMSCRIPTEN
276276
#define SANITIZER_INTERCEPT_INET_ATON SI_POSIX
277277
#define SANITIZER_INTERCEPT_SYSINFO SI_LINUX
278278
#define SANITIZER_INTERCEPT_READDIR SI_POSIX

0 commit comments

Comments
 (0)