[llvm-dev] [WebAssembly] lld dynamic loader

HUDE Ghislain via llvm-dev llvm-dev at lists.llvm.org
Tue Jul 17 15:17:41 PDT 2018


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>


More information about the llvm-dev mailing list