Actually I see that is a real difference between the backends, so we should flip that flag on automatically. I will open a PR.
Meanwhile as a workaround, -s EXPORT_ALL (on the main module) should fix things for you, Mehdi. - Alon On Thu, Dec 19, 2019 at 10:13 AM Alon Zakai <[email protected]> wrote: > I think the emscripten_log issue is > > https://github.com/emscripten-core/emscripten/issues/9793 > > which I am not sure what to do about. Perhaps at minimum we should make > that error message also suggest flipping EXPORT_ALL? > > On Wed, Dec 18, 2019 at 2:53 PM 'Sam Clegg' via emscripten-discuss < > [email protected]> wrote: > >> >> >> On Tue, Dec 17, 2019 at 8:08 AM Mehdi Sabwat <[email protected]> >> wrote: >> >>> Hi, >>> >>> I am trying to understand the expected behavior of Emscripten when we >>> have a SIDE_MODULE that links to a standard library. >>> >>> I am having this message: >>> Assertion failed: missing linked function `_emscripten_log`. perhaps a >>> side module was not linked in? if this global was expected to arrive >>> from a system library, try to build the MAIN_MODULE with >>> EMCC_FORCE_STDLIBS=1 in the environment >>> >>> with the following code : >>> >>> test1.c: >>> #include <dlfcn.h> >>> #include <stdio.h> >>> #include <pthread.h> >>> #include <emscripten.h> >>> >>> int main(int ac, char **av) >>> { >>> void *handle = dlopen("./libwasmdog.wasm", RTLD_LAZY); >>> void (*fun_print_name)(const char *) = dlsym(handle, "print_name"); >>> fun_print_name(av[1]); >>> /* >>> >>> emscripten_log(EM_LOG_CONSOLE, "removing this call will brake >>> linking\n"); >>> emscripten_debugger(); >>> >>> */ >>> return 0; >>> } >>> >>> EMCC_FORCE_STDLIBS=1 emcc -g -s MAIN_MODULE=1 test1.c -o test.html -- >>> preload-file ./libwasmdog.wasm -s ALLOW_MEMORY_GROWTH=1 >>> and >>> dog.c: >>> #include "animal.h" >>> #include <stdio.h> >>> #include <stdlib.h> >>> #include <emscripten.h> >>> >>> void print_name(const char *type) >>> { >>> emscripten_log(EM_LOG_JS_STACK, "\n"); >>> emscripten_debugger(); >>> printf("Je suis un %s\n", type); >>> } >>> emcc -g -s SIDE_MODULE=1 dog.c -o libwasmdog.wasm -s >>> "EXPORTED_FUNCTIONS=['_emscripten_log', >>> '_emscripten_debugger']" >>> >>> Is this a bug, or am I doing it wrong? >>> >> >> One this that looks wrong here is that you should be exporting >> `print_name` from the side module.. Those emscripten functions are being >> imported (in this case from JS). >> >> However that doesn't explain why _emscripten_log would be undefined. >> One thing you could try is calling `emscripten_log` from the main module >> too.. that would force the JS code for this function to be included. If >> that fixes the problem then I guess you need to >> `EXTRA_EXPORTED_RUNTIME_METHODS`. TBH I'm surprised this isn't already >> included when building with MAIN_MODULE. I seems like all JS functions >> should be included in that case, but I must be mis-remembering. >> >> >> >>> Thank you! >>> >>> -- >>> 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/470197cd-6ade-440b-a945-9e271b09c77f%40googlegroups.com >>> <https://groups.google.com/d/msgid/emscripten-discuss/470197cd-6ade-440b-a945-9e271b09c77f%40googlegroups.com?utm_medium=email&utm_source=footer> >>> . >>> >> -- >> 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/CAL_va2_WuveDwGK1UEAq%3DopKnF_5eDqzpo3R_%3DQVr_Sz2gR%3DEQ%40mail.gmail.com >> <https://groups.google.com/d/msgid/emscripten-discuss/CAL_va2_WuveDwGK1UEAq%3DopKnF_5eDqzpo3R_%3DQVr_Sz2gR%3DEQ%40mail.gmail.com?utm_medium=email&utm_source=footer> >> . >> > -- 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/CAEX4NpQHgW%3D7u5xVJktq%2BfYHvBCPvMx%3Dpy4pKbr3Pw3hCRqi6Q%40mail.gmail.com.
