[WebAssembly] lld dynamic loader


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 ?

 void Writer::createTableSection() {
WasmLimits Limits = {WASM_LIMITS_FLAG_HAS_MAX, TableSize, TableSize};

Thks in advance,


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.


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 :slight_smile: :

Index: wasm/Writer.cpp

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 .



This would be great to have dlopen and co working with LLVM