Yes, opening a GitHub issue on the Emscripten repository would be great. > On Jul 7, 2019, at 02:00, Tapan Anand <[email protected]> wrote: > > Yeah I would like to. How do I go about doing that? Just create a github > issue on emscripten repository? I think this is an important feature that is > indispensable for using dynamic linking in production. > >> On Wednesday, 3 July 2019 22:21:33 UTC+5:30, Sam Clegg wrote: >> On Sat, Jun 29, 2019 at 8:31 AM Tapan Anand <[email protected]> wrote: >> > >> > Hi Sam, >> > I see that error during runtime, when that branch of code is hit. Is >> > there a way for them to atleast show up at load time so I can be sure that >> > user wouldn't encounter any new errors in production? >> > >> >> There is no way currently but it could be added. Do you want to open >> an issue requesting this feature? >> >> >> > On Saturday, 29 June 2019 01:17:22 UTC+5:30, Sam Clegg wrote: >> >> >> >> On Fri, May 31, 2019 at 1:25 AM Tapan Anand <[email protected]> >> >> wrote: >> >> > >> >> > So does that mean its possible to miss some missing symbols as well >> >> > since runtime errors seems to be the only way to determine them? >> >> >> >> Yes, they are currently runtime errors, because dynamic linking >> >> happens at runtime. Are you seeing them show at at startup or after >> >> main runs? We should at least be able to ensure these are load time >> >> errors. >> >> >> >> Ideally we would build a system where the MAIN_MODULE and the >> >> SIDE_MODULE can be built in such a way that can know that list of >> >> symbols needed by the other modules. However because we have a lot of >> >> circular dependencies this could prove a little tricky. >> >> >> >> > >> >> > On Friday, 31 May 2019 03:49:27 UTC+5:30, Alon Zakai wrote: >> >> >> >> >> >> Yes, in general the optimizer may remove anything it does not see is >> >> >> used, in normal compilation, and in main module/side module mode 2. >> >> >> It's possible some things stay alive anyhow since they are used by >> >> >> other things. But if nothing else uses it, you must add it to the >> >> >> exports yourself, or the optimizer may remove it. >> >> >> >> >> >> On Wed, May 29, 2019 at 1:10 PM Tapan Anand <[email protected]> >> >> >> wrote: >> >> >>> >> >> >>> Thanks for the quick reply Alon! >> >> >>> The C library functions puts and printf work with MAIN_MODULE=1 but >> >> >>> the new and delete operator errors still persist if I don't manually >> >> >>> export them. >> >> >>> Regarding - "which means you need to carefully pick what is kept >> >> >>> alive for the other modules", so you mean we have to add these >> >> >>> mangled names in the export list if we use MAIN_MODULE=2 and there is >> >> >>> no other way to avoid this? MAIN_MODULE=1 creates a huge .js and >> >> >>> .wasm file and hence ends up increasing the MAIN_MODULE size while >> >> >>> the purpose of dynamic linking for me is to reduce its size. >> >> >>> Also, I got to know about new and delete via runtime errors, but what >> >> >>> if I some part of code is not encountered while testing (and hence no >> >> >>> runtime error occurs)? That may cause unknown crashes when the user >> >> >>> uses the app for example, is that expected? Or there is a way to know >> >> >>> unresolved symbols in advance using some technique? >> >> >>> >> >> >>> On Thursday, 30 May 2019 00:00:45 UTC+5:30, Alon Zakai wrote: >> >> >>>> >> >> >>>> This is probably because of MAIN_MODULE=2, which means you need to >> >> >>>> carefully pick what is kept alive for the other modules. Does this >> >> >>>> work with =1? If so then that's the issue. The test suite has a >> >> >>>> bunch of examples for mode 2, that might help. >> >> >>>> >> >> >>>> On Wed, May 29, 2019 at 3:40 AM Tapan Anand <[email protected]> >> >> >>>> wrote: >> >> >>>>> >> >> >>>>> Hi, >> >> >>>>> >> >> >>>>> I was trying to use dynamic linking using dlopen with emscripten >> >> >>>>> compiler version 1.38.28 and encountered the following problem: >> >> >>>>> >> >> >>>>> 1. When I try to use vector in the SIDE_MODULE, it can't seem to >> >> >>>>> find the new and delete operators in the Module variable. >> >> >>>>> >> >> >>>>> 2. The command I use to build main and side module are: >> >> >>>>> >> >> >>>>> >> >> >>>>> em++ doubler.cpp -o doubler.wasm -s SIDE_MODULE=1 -O3 -s >> >> >>>>> "EXPORTED_FUNCTIONS=['_doubler']" >> >> >>>>> EMCC_FORCE_STDLIBS=1 em++ main.cpp -O3 -s WASM=1 -s MAIN_MODULE=2 >> >> >>>>> -o dynlink.js -s "EXPORTED_FUNCTIONS=['_main', '_clock', >> >> >>>>> '_tripler', '_printf', '_puts']" -s >> >> >>>>> "DEFAULT_LIBRARY_FUNCS_TO_INCLUDE=['clock']" -s FORCE_FILESYSTEM=1 >> >> >>>>> --pre-js prejs.js >> >> >>>>> >> >> >>>>> >> >> >>>>> The prejs file here is there to use FS.createLazyFile to cause lazy >> >> >>>>> loading of the side module. >> >> >>>>> >> >> >>>>> If I change the exported function list in main_module to `['_main', >> >> >>>>> '_clock', '_tripler', '__Znwm', '__ZdlPv', '_printf', '_puts']` It >> >> >>>>> starts to work. Notice that I had to add the mangled symbols of new >> >> >>>>> and delete operator to export list. >> >> >>>>> Also, once I did this, I didn't get any missing symbols related to >> >> >>>>> the vector class itself. >> >> >>>>> >> >> >>>>> So, I have two questions: >> >> >>>>> 1. Do we have to export C++ runtime functions like new, delete, or >> >> >>>>> even c runtime methods like printf, puts for code to work? Is that >> >> >>>>> expected? >> >> >>>>> 2. Since there were no errors for vector related symbols, does that >> >> >>>>> mean that vector is linked with the side_module? If I also use >> >> >>>>> vector in main module, will there be effectively two copies of >> >> >>>>> vector? In both side and main module? >> >> >>>>> >> >> >>>>> Thanks in advance! >> >> >>>>> >> >> >>>>> -- >> >> >>>>> 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/5f2ad4c5-fc8e-45a3-afab-e340f91f09f5%40googlegroups.com. >> >> >>>>> >> >> >>>>> For more options, visit https://groups.google.com/d/optout. >> >> >>> >> >> >>> -- >> >> >>> 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/058436c9-50d5-4a13-a499-cbca19214066%40googlegroups.com. >> >> >>> >> >> >>> For more options, visit https://groups.google.com/d/optout. >> >> > >> >> > -- >> >> > 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/f5c8beed-0aee-4a0f-8748-17321afb48dd%40googlegroups.com. >> >> > >> >> > For more options, visit https://groups.google.com/d/optout. >> > >> > -- >> > 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/e30016f3-0de3-4d3f-9c35-538b4f58e6db%40googlegroups.com. >> > >> > For more options, visit https://groups.google.com/d/optout. > > -- > 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/02d6fbff-1de3-45d9-b119-a04231064638%40googlegroups.com. > For more options, visit https://groups.google.com/d/optout.
-- 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/10746D06-5661-4CF0-B581-75EFD9DFB74F%40google.com. For more options, visit https://groups.google.com/d/optout.
