Hi, I need to be able to link several SIDE_MODULEs to each other. more info about the use case here: https://github.com/iodide-project/pyodide/issues/240
"1 level" Dynamic linking seems to be working currently with the WASM backend by using the MAIN_MODULE, SIDE_MODULE and RUNTIME_LINKED_LIBS flags. At first I though "multi level" dynamic linking was also working. By multi level I mean for example a MAIN_MODULE that links against a SIDE_MODULE which in turn links against another SIDE_MODULE. This PR and this CHANGELOG entry made me think it should be working: https://github.com/emscripten-core/emscripten/pull/7512/ CHANGELOG.md version 1.38.22: Dynamic linker has been taught to handle library -> library dependencies. However it doesn't seem to be working with the LLVM wasm backend. The way this is supposed to work is by introducing a new section in the wasm shared objects called "dylink". This section contains references to other .wasm dependencies. The main module seems to be able to read this section in order to load more .wasm dependencies. (see the loadWebAssembly function on a main module). The problem is that the section is not being written properly. A dump of a wasm shared object shows that it's just filled with zeros: emscripten@2502103aaaa0:/home/manuel/devenvironment/projects/mlx/experiments/emscripten-tests/wasm-study/wasm$ llvm- readobj --sections --section-data libk_so.wasm File: libk_so.wasm Format: WASM Arch: wasm32 AddressSize: 32bit Sections [ Section { Type: CUSTOM (0x0) Size: 5 Offset: 8 Name: dylink SectionData ( 0000: 00000000 00 |.....| ) } When building a SIDE_MODULE emcc.py should be calling this function: shared.py:WebAssembly.make_shared_library(). This function is the one that builds the dylink section. The problem is that currently this code seems deactivated for the wasm backend, as we can see in the following code inside emcc.py: if shared.Settings.SIDE_MODULE and not shared.Settings.WASM_BACKEND: wso = shared.WebAssembly.make_shared_library(final, wasm_binary_target, shared.Settings.RUNTIME_LINKED_LIBS) This makes me think this is still not supported form WASM, only for asm.js. I just want to know the state of this functionality and how it fits in the roadmap, if needed I could try to implement the remaining parts since it seems only a few things are needed for it to work. Thanks! -- The contents of this email are confidential. If the reader of this message is not the intended recipient, you are hereby notified that any dissemination, distribution or copying of this communication is strictly prohibited. If you have received this communication in error, please notify us immediately by replying to this message and deleting it from your computer. Thank you. Devo, Inc; [email protected] <mailto:[email protected]>; Calle Estébanez Calderón 3-5, 5th Floor. Madrid, Spain 28020 -- You received this message because you are subscribed to the Google Groups "emscripten-discuss" group. To unsubscribe from this group and stop receiving emails from it, send an email to [email protected]. To view this discussion on the web visit https://groups.google.com/d/msgid/emscripten-discuss/885dbf58-2702-4775-8f32-0e41e3698e7a%40googlegroups.com.
