Thanks, your new idea works for me.   the motivation of doing this is that
I will call this imported function while I will insert some wasm code to
the original wasm file later,  similar to this project had done
https://github.com/ewasm/wasm-metering , but by a different PL. so I don't
want the original wasm developer to use this function(I will insert foo
dynamically with a mangling name ), and I also occupy the import index
space by doing this in advance.

Floh <flo...@gmail.com> 于2019年5月2日周四 下午10:56写道:

> Ah ok, I misunderstood your question, apologies. I don't know how one
> would add a function declaration to the WASM imports table like this.
> EMSCRIPTEN_KEEPALIVE and the "-s EXPORTED_FUNCTIONS" linker option would
> work for the "other side" (some WASM module exporting functions to the
> outside).
>
> Complete guess, but maybe you need some "dummy code" that's guaranteed to
> stay in the importing WASM module, even though this is never called? So
> that the linker would recognize the function as an "import".
>
> Something like this:
>
> extern "C" void foo();
> // dummy_imports() is never called, but will not be removed because of
> EMSCRIPTEN_KEEPALIVE
> EMSCRIPTEN_KEEPALIVE void dummy_imports(void) {
>    foo();
> }
>
> But as I said, this is complete guess.
>
> On Thursday, 2 May 2019 16:22:28 UTC+2, Duan Bing wrote:
>>
>> Thanks, Floh.  it works when the function is defined.
>> Actually, my function is an external function declaration, like
>> extern "C" void foo();
>>
>> It doesn't work even I declare like this:
>> extern "C" void EMSCRIPTEN_KEEPALIVE foo().
>>
>> Do you have any idea for this situation?
>>
>> Floh <flo...@gmail.com> 于2019年5月2日周四 下午10:13写道:
>>
>>> Have a look at EMSCRIPTEN_KEEPALIVE:
>>> https://emscripten.org/docs/api_reference/emscripten.h.html#c.EMSCRIPTEN_KEEPALIVE,
>>> this prevents a C/C++ function from being removed even when it isn't
>>> referenced by other C/C++ code (normally this is used to call C functions
>>> from the JS side).
>>>
>>> On Thursday, 2 May 2019 08:16:43 UTC+2, Duan Bing wrote:
>>>>
>>>> I declare an external function in C source file, but never used by the
>>>> code, then compile it to wasm by EMCC.   there is no doubt the external
>>>> function will be eliminated by the compiler.
>>>>
>>>> Is there any approach to keep this external function and then be
>>>> compiled to an import function in wasm?
>>>>
>>>> The motivation to remain the external function is that I want to insert
>>>> some wasm code in the wasm file after it's generated.
>>>>
>>>> Thanks all!
>>>>
>>> --
>>> You received this message because you are subscribed to the Google
>>> Groups "emscripten-discuss" group.
>>> To unsubscribe from this group and stop receiving emails from it, send
>>> an email to emscripten-discuss+unsubscr...@googlegroups.com.
>>> For more options, visit https://groups.google.com/d/optout.
>>>
>> --
> You received this message because you are subscribed to the Google Groups
> "emscripten-discuss" group.
> To unsubscribe from this group and stop receiving emails from it, send an
> email to emscripten-discuss+unsubscr...@googlegroups.com.
> For more options, visit https://groups.google.com/d/optout.
>

-- 
You received this message because you are subscribed to the Google Groups 
"emscripten-discuss" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to emscripten-discuss+unsubscr...@googlegroups.com.
For more options, visit https://groups.google.com/d/optout.

Reply via email to