pyodide/emsdk/patches/0006-Make-RTLD_LOCAL-work-c...

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