diff --git a/Platforms/emscripten/README.md b/Platforms/emscripten/README.md index ce230c4b74a273..b1fccea0af9f87 100644 --- a/Platforms/emscripten/README.md +++ b/Platforms/emscripten/README.md @@ -138,7 +138,7 @@ await createEmscriptenModule({ - Threading is disabled by default. The ``configure`` option ``--enable-wasm-pthreads`` adds compiler flag ``-pthread`` and - linker flags ``-sUSE_PTHREADS -sPROXY_TO_PTHREAD``. + linker flags ``-pthread -sPROXY_TO_PTHREAD``. - pthread support requires WASM threads and SharedArrayBuffer (bulk memory). The Node.JS runtime keeps a pool of web workers around. Each web worker uses several file descriptors (eventfd, epoll, pipe). diff --git a/Python/ceval.c b/Python/ceval.c index aba8d2c0c762ed..0d053cdc7a63e3 100644 --- a/Python/ceval.c +++ b/Python/ceval.c @@ -70,70 +70,6 @@ _Py_ReachedRecursionLimitWithMargin(PyThreadState *tstate, int margin_count) # define Py_C_STACK_SIZE 4000000 #endif -#if defined(__EMSCRIPTEN__) - -// Temporary workaround to make `pthread_getattr_np` work on Emscripten. -// Emscripten 4.0.6 will contain a fix: -// https://github.com/emscripten-core/emscripten/pull/23887 - -#include "emscripten/stack.h" - -#define pthread_attr_t workaround_pthread_attr_t -#define pthread_attr_init workaround_pthread_attr_init -#define pthread_getattr_np workaround_pthread_getattr_np -#define pthread_attr_getguardsize workaround_pthread_attr_getguardsize -#define pthread_attr_getstack workaround_pthread_attr_getstack -#define pthread_attr_destroy workaround_pthread_attr_destroy - -typedef struct { - void *_a_stackaddr; - size_t _a_stacksize, _a_guardsize; -} pthread_attr_t; - -extern __attribute__((__visibility__("hidden"))) unsigned __default_guardsize; - -int pthread_attr_init(pthread_attr_t *a) -{ - return 0; -} - -// Modified version of pthread_getattr_np from the upstream PR. - -int pthread_getattr_np(pthread_t thread, pthread_attr_t *attr) { - attr->_a_stackaddr = (void*)emscripten_stack_get_base(); - attr->_a_stacksize = emscripten_stack_get_base() - emscripten_stack_get_end(); - attr->_a_guardsize = __default_guardsize; - return 0; -} - -// These three functions copied without any changes from Emscripten libc. - -int pthread_attr_getguardsize(const pthread_attr_t *restrict a, size_t *restrict size) -{ - *size = a->_a_guardsize; - return 0; -} - -int pthread_attr_getstack(const pthread_attr_t *restrict a, void **restrict addr, size_t *restrict size) -{ -/// XXX musl is not standard-conforming? It should not report EINVAL if _a_stackaddr is zero, and it should -/// report EINVAL if a is null: http://pubs.opengroup.org/onlinepubs/009695399/functions/pthread_attr_getstack.html - if (!a) return EINVAL; -// if (!a->_a_stackaddr) -// return EINVAL; - - *size = a->_a_stacksize; - *addr = (void *)(a->_a_stackaddr - *size); - return 0; -} - -int pthread_attr_destroy(pthread_attr_t *a) -{ - return 0; -} - -#endif - static void hardware_stack_limits(uintptr_t *base, uintptr_t *top, uintptr_t sp) { diff --git a/configure b/configure index a11cd0c27bcf0d..cbeb23129c1475 100755 --- a/configure +++ b/configure @@ -5055,8 +5055,8 @@ fi case $host in #( wasm64-*-emscripten) : - as_fn_append CFLAGS " -sMEMORY64=1" - as_fn_append LDFLAGS " -sMEMORY64=1" + as_fn_append CFLAGS " -m64" + as_fn_append LDFLAGS " -m64" ;; #( *) : ;; @@ -10229,7 +10229,7 @@ fi then : as_fn_append CFLAGS_NODIST " -pthread" - as_fn_append LDFLAGS_NODIST " -sUSE_PTHREADS" + as_fn_append LDFLAGS_NODIST " -pthread" as_fn_append LINKFORSHARED " -sPROXY_TO_PTHREAD" fi diff --git a/configure.ac b/configure.ac index 640919bd07bd8d..8c79be7a4d0808 100644 --- a/configure.ac +++ b/configure.ac @@ -1153,12 +1153,12 @@ if test -z "$CFLAGS"; then fi dnl Emscripten SDK and WASI SDK default to wasm32. -dnl On Emscripten use MEMORY64 setting to build target wasm64-emscripten. +dnl On Emscripten use -m64 to build target wasm64-emscripten. dnl for wasm64. AS_CASE([$host], [wasm64-*-emscripten], [ - AS_VAR_APPEND([CFLAGS], [" -sMEMORY64=1"]) - AS_VAR_APPEND([LDFLAGS], [" -sMEMORY64=1"]) + AS_VAR_APPEND([CFLAGS], [" -m64"]) + AS_VAR_APPEND([LDFLAGS], [" -m64"]) ], ) @@ -2659,7 +2659,7 @@ AS_CASE([$ac_sys_system], AS_VAR_IF([enable_wasm_pthreads], [yes], [ AS_VAR_APPEND([CFLAGS_NODIST], [" -pthread"]) - AS_VAR_APPEND([LDFLAGS_NODIST], [" -sUSE_PTHREADS"]) + AS_VAR_APPEND([LDFLAGS_NODIST], [" -pthread"]) AS_VAR_APPEND([LINKFORSHARED], [" -sPROXY_TO_PTHREAD"]) ]) dnl not completely sure whether or not we want -sEXIT_RUNTIME, keeping it for now.