[llvm-dev] [WebAssembly] lld dynamic loader

HUDE Ghislain via llvm-dev llvm-dev at lists.llvm.org
Tue Jul 3 15:55:09 PDT 2018


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>


More information about the llvm-dev mailing list