HUDE Ghislain via llvm-dev
2018-Jun-15 20:40 UTC
[llvm-dev] [WebAssembly] lld dynamic loader
Hi Sam, Thanks for your answer! Sorry I didn't really know how to process, but this issue block me to make some legacy C code works without having some glue with a bit static lib ;( (The change have really low risk) The changes I used locally to make dlopen/dlclose et dlsym mechanism works :) : Index: wasm/Writer.cpp ==================================================================--- wasm/Writer.cpp (revision 330555) +++ wasm/Writer.cpp (working copy) @@ -257,7 +257,7 @@ raw_ostream &OS = Section->getStream(); writeUleb128(OS, 1, "table count"); - WasmLimits Limits = {WASM_LIMITS_FLAG_HAS_MAX, TableSize, TableSize}; + WasmLimits Limits = {0, TableSize, TableSize}; writeTableType(OS, WasmTable{WASM_TYPE_ANYFUNC, Limits}); } May be to have a code more readable WASM_LIMITS_FLAG_HAS_NO_MAX (=0) can be added. Thks, Ghis 2018-06-03 23:45 GMT+02:00 Sam Clegg <sbc at google.com>:> Hi Ghis > > Originally when we wrote the wasm port of lld we didn't support > importing or exporting the table so it made sense to set a max size. > However, now that we have the --import-table flag I don't see why we > shouldn't support tables without a max size. Feel free to send a > patch, or open a bug and I will get around to it. > > cheers, > sam > > On Fri, Jun 1, 2018 at 6:00 AM, HUDE Ghislain via llvm-dev > <llvm-dev at lists.llvm.org> wrote: > > Hello, > > > > The table generated by lld (Wasm target) have a max size. > > > > So this make impossible to add some others functions in the table . > > > > As for the moment only one Table is available in WAsm this is the only > way > > to add function in a dynamic way. > > > > > > > > Having a none static size of the table is useful for a kind dynamic > > loader/inker at run-time: by adding some exported functions coming from > > another modules in the table, so call_indirect can call dynamically some > > function coming from another wasm module. > > > > > > > > So I am wondering if the static size of the table have a specific goal ? > > > > If not did you think the WASM_LIMITS_FLAG_HAS_MAX can be remove ? > > > > > > > > https://llvm.org/svn/llvm-project/lld/trunk/wasm/Writer.cpp > > > > void Writer::createTableSection() { > > > > .. > > > > WasmLimits Limits = {WASM_LIMITS_FLAG_HAS_MAX, TableSize, TableSize}; > > > > > > > > > > > > Thks in advance, > > > > Ghis > > > > > > > > _______________________________________________ > > LLVM Developers mailing list > > llvm-dev at lists.llvm.org > > http://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-dev > > >-------------- next part -------------- An HTML attachment was scrubbed... URL: <http://lists.llvm.org/pipermail/llvm-dev/attachments/20180615/96e01e75/attachment-0001.html>
HUDE Ghislain via llvm-dev
2018-Jul-03 22:55 UTC
[llvm-dev] [WebAssembly] lld dynamic loader
Hello all Is someone can help please to make progress on that please and deliver a fix ? With a static table this is impossible to make dlopen dlclose dlsym works, because the module which call dlopen need to add in this table the symbols from the loaded module, as the size is static normal exception is throw . Regards Ghis Le ven. 15 juin 2018 à 22:40, HUDE Ghislain <hude.ghislain at gmail.com> a écrit :> Hi Sam, > Thanks for your answer! > > Sorry I didn't really know how to process, but this issue block me to make > some legacy C code works without having some glue with a bit static lib ;( > > (The change have really low risk) > The changes I used locally to make dlopen/dlclose et dlsym mechanism works > :) : > Index: wasm/Writer.cpp > ==================================================================> --- wasm/Writer.cpp (revision 330555) > +++ wasm/Writer.cpp (working copy) > @@ -257,7 +257,7 @@ > raw_ostream &OS = Section->getStream(); > > writeUleb128(OS, 1, "table count"); > - WasmLimits Limits = {WASM_LIMITS_FLAG_HAS_MAX, TableSize, TableSize}; > + WasmLimits Limits = {0, TableSize, TableSize}; > writeTableType(OS, WasmTable{WASM_TYPE_ANYFUNC, Limits}); > } > > May be to have a code more readable WASM_LIMITS_FLAG_HAS_NO_MAX (=0) > can be added. > > Thks, > Ghis > 2018-06-03 23:45 GMT+02:00 Sam Clegg <sbc at google.com>: > >> Hi Ghis >> >> Originally when we wrote the wasm port of lld we didn't support >> importing or exporting the table so it made sense to set a max size. >> However, now that we have the --import-table flag I don't see why we >> shouldn't support tables without a max size. Feel free to send a >> patch, or open a bug and I will get around to it. >> >> cheers, >> sam >> >> On Fri, Jun 1, 2018 at 6:00 AM, HUDE Ghislain via llvm-dev >> <llvm-dev at lists.llvm.org> wrote: >> > Hello, >> > >> > The table generated by lld (Wasm target) have a max size. >> > >> > So this make impossible to add some others functions in the table . >> > >> > As for the moment only one Table is available in WAsm this is the only >> way >> > to add function in a dynamic way. >> > >> > >> > >> > Having a none static size of the table is useful for a kind dynamic >> > loader/inker at run-time: by adding some exported functions coming from >> > another modules in the table, so call_indirect can call dynamically some >> > function coming from another wasm module. >> > >> > >> > >> > So I am wondering if the static size of the table have a specific goal ? >> > >> > If not did you think the WASM_LIMITS_FLAG_HAS_MAX can be remove ? >> > >> > >> > >> > https://llvm.org/svn/llvm-project/lld/trunk/wasm/Writer.cpp >> > >> > void Writer::createTableSection() { >> > >> > .. >> > >> > WasmLimits Limits = {WASM_LIMITS_FLAG_HAS_MAX, TableSize, TableSize}; >> > >> > >> > >> > >> > >> > Thks in advance, >> > >> > Ghis >> > >> > >> > >> > _______________________________________________ >> > LLVM Developers mailing list >> > llvm-dev at lists.llvm.org >> > http://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-dev >> > >> >-------------- next part -------------- An HTML attachment was scrubbed... URL: <http://lists.llvm.org/pipermail/llvm-dev/attachments/20180704/d6ac3722/attachment.html>
HUDE Ghislain via llvm-dev
2018-Jul-17 22:17 UTC
[llvm-dev] [WebAssembly] lld dynamic loader
Help->Ping() This would be great to have dlopen and co working with LLVM Le mer. 4 juil. 2018 à 00:55, HUDE Ghislain <hude.ghislain at gmail.com> a écrit :> Hello all > Is someone can help please to make progress on that please and deliver a > fix ? > With a static table this is impossible to make dlopen dlclose dlsym works, > because the module which call dlopen need to add in this table the symbols > from the loaded module, as the size is static normal exception is throw . > > Regards > Ghis > > Le ven. 15 juin 2018 à 22:40, HUDE Ghislain <hude.ghislain at gmail.com> a > écrit : > >> Hi Sam, >> Thanks for your answer! >> >> Sorry I didn't really know how to process, but this issue block me to >> make some legacy C code works without having some glue with a bit static >> lib ;( >> >> (The change have really low risk) >> The changes I used locally to make dlopen/dlclose et dlsym mechanism >> works :) : >> Index: wasm/Writer.cpp >> ==================================================================>> --- wasm/Writer.cpp (revision 330555) >> +++ wasm/Writer.cpp (working copy) >> @@ -257,7 +257,7 @@ >> raw_ostream &OS = Section->getStream(); >> >> writeUleb128(OS, 1, "table count"); >> - WasmLimits Limits = {WASM_LIMITS_FLAG_HAS_MAX, TableSize, TableSize}; >> + WasmLimits Limits = {0, TableSize, TableSize}; >> writeTableType(OS, WasmTable{WASM_TYPE_ANYFUNC, Limits}); >> } >> >> May be to have a code more readable WASM_LIMITS_FLAG_HAS_NO_MAX (=0) >> can be added. >> >> Thks, >> Ghis >> 2018-06-03 23:45 GMT+02:00 Sam Clegg <sbc at google.com>: >> >>> Hi Ghis >>> >>> Originally when we wrote the wasm port of lld we didn't support >>> importing or exporting the table so it made sense to set a max size. >>> However, now that we have the --import-table flag I don't see why we >>> shouldn't support tables without a max size. Feel free to send a >>> patch, or open a bug and I will get around to it. >>> >>> cheers, >>> sam >>> >>> On Fri, Jun 1, 2018 at 6:00 AM, HUDE Ghislain via llvm-dev >>> <llvm-dev at lists.llvm.org> wrote: >>> > Hello, >>> > >>> > The table generated by lld (Wasm target) have a max size. >>> > >>> > So this make impossible to add some others functions in the table . >>> > >>> > As for the moment only one Table is available in WAsm this is the only >>> way >>> > to add function in a dynamic way. >>> > >>> > >>> > >>> > Having a none static size of the table is useful for a kind dynamic >>> > loader/inker at run-time: by adding some exported functions coming from >>> > another modules in the table, so call_indirect can call dynamically >>> some >>> > function coming from another wasm module. >>> > >>> > >>> > >>> > So I am wondering if the static size of the table have a specific goal >>> ? >>> > >>> > If not did you think the WASM_LIMITS_FLAG_HAS_MAX can be remove ? >>> > >>> > >>> > >>> > https://llvm.org/svn/llvm-project/lld/trunk/wasm/Writer.cpp >>> > >>> > void Writer::createTableSection() { >>> > >>> > .. >>> > >>> > WasmLimits Limits = {WASM_LIMITS_FLAG_HAS_MAX, TableSize, TableSize}; >>> > >>> > >>> > >>> > >>> > >>> > Thks in advance, >>> > >>> > Ghis >>> > >>> > >>> > >>> > _______________________________________________ >>> > LLVM Developers mailing list >>> > llvm-dev at lists.llvm.org >>> > http://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-dev >>> > >>> >>-------------- next part -------------- An HTML attachment was scrubbed... URL: <http://lists.llvm.org/pipermail/llvm-dev/attachments/20180718/a52b7254/attachment.html>