HUDE Ghislain via llvm-dev
2018-Jun-01 13:00 UTC
[llvm-dev] [WebAssembly] lld dynamic loader
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 -------------- next part -------------- An HTML attachment was scrubbed... URL: <http://lists.llvm.org/pipermail/llvm-dev/attachments/20180601/ff3ced7a/attachment-0001.html>
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 >
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>