mirror of https://github.com/pyodide/pyodide.git
47 lines
1.8 KiB
Diff
47 lines
1.8 KiB
Diff
From 4a3956693056b3ad4f6541589c5ab44df7a7fc39 Mon Sep 17 00:00:00 2001
|
|
From: =?UTF-8?q?Morten=20Johan=20S=C3=B8rvig?=
|
|
<msorvig@users.noreply.github.com>
|
|
Date: Wed, 12 Jun 2024 20:10:35 +0200
|
|
Subject: [PATCH 6/6] Make RTLD_LOCAL work correctly for preloaded DSOs
|
|
(#21985)
|
|
|
|
Copied from: https://github.com/emscripten-core/emscripten/pull/21985
|
|
This patch can be removed when updating Emscripten version to >= 3.1.62
|
|
|
|
Follow-up to commit c9a5e63c, for the FS.createPreloadedFile()
|
|
case.
|
|
|
|
Make sure loadWebAssemblyModule() and loadDynamicLibrary()
|
|
are called with a valid 'localScope' object when invoked
|
|
from the .so file type preload handler.
|
|
---
|
|
src/library_dylink.js | 4 ++--
|
|
test/test_core.py | 46 +++++++++++++++++++++++++++++++++++++++++++
|
|
2 files changed, 48 insertions(+), 2 deletions(-)
|
|
|
|
diff --git a/src/library_dylink.js b/src/library_dylink.js
|
|
index 965b119a4..211f4030c 100644
|
|
--- a/src/library_dylink.js
|
|
+++ b/src/library_dylink.js
|
|
@@ -26,7 +26,7 @@ var LibraryDylink = {
|
|
// than just running the promises in parallel, this makes a chain of
|
|
// promises to run in series.
|
|
wasmPlugin['promiseChainEnd'] = wasmPlugin['promiseChainEnd'].then(
|
|
- () => loadWebAssemblyModule(byteArray, {loadAsync: true, nodelete: true}, name)).then(
|
|
+ () => loadWebAssemblyModule(byteArray, {loadAsync: true, nodelete: true}, name, {})).then(
|
|
(exports) => {
|
|
#if DYLINK_DEBUG
|
|
dbg(`registering preloadedWasm: ${name}`);
|
|
@@ -877,7 +877,7 @@ var LibraryDylink = {
|
|
if (flags.loadAsync) {
|
|
return metadata.neededDynlibs
|
|
.reduce((chain, dynNeeded) => chain.then(() =>
|
|
- loadDynamicLibrary(dynNeeded, flags)
|
|
+ loadDynamicLibrary(dynNeeded, flags, localScope)
|
|
), Promise.resolve())
|
|
.then(loadModule);
|
|
}
|
|
--
|
|
2.29.2.windows.2
|
|
|