On Wed, Nov 26, 2025 at 9:06 PM 'Sam Clegg' via emscripten-discuss <
[email protected]> wrote:

> Function signatures need to be an exact match at the Wasm level.  At the
wasm level
> signatures are made of only the core i32, i64, f32, f64 types, so its
likely the many different
> C signatures have the same Wasm signature.

OK, I presume pointers are i32 or i64, according to if you're building for
32-bit or 64-bit Wasm?

> As long as you are casting the void* pointer back to the correct function
type before calling them
> you should have no issues.

I've found my mistake now. I have a lot of changes to make, though.

Thanks,

John
On Wed, Nov 26, 2025 at 9:06 PM 'Sam Clegg' via emscripten-discuss <
[email protected]> wrote:

>
>
> On Wed, Nov 26, 2025 at 3:23 AM John Dallman <[email protected]>
> wrote:
>
>> I have a lot of code that stores pointers to functions as void* and then
>> casts them back to the "correct" type. This is part of a LISP interpreter
>> that is embedded in my product's test harness, and used to write test
>> scripts.
>>
>> This works in conventional C, but I'm having trouble with it in
>> WebAssembly. I've found that functions with and without argument lists
>> don't match, which is quite reasonable, but I'm having trouble getting a
>> fix to work.
>>
>> Just how identical do the function signatures have to be?
>>
>>    - Character-for-character identical?
>>    - Identical types with different names are OK?
>>    - Static and non-static functions with otherwise identical signatures
>>    are OK?
>>    - Something else?
>>
>>
> Function signatures need to be an exact match at the Wasm level.   At the
> wasm level signatures are made of only the core i32, i64, f32, f64 types,
> so its likely the many different C signatures have the same Wasm signature.
>
> As long as you are casting the void* pointer back to the correct function
> type before calling them you should have no issues.
>
> If you are trying to call a function with too many, or too few arguments
> that does not work.
>
> We do have a setting that can help if you really need to do
> this: EMULATE_FUNCTION_POINTER_CASTS.  See
> https://emscripten.org/docs/tools_reference/settings_reference.html#emulate-function-pointer-casts
> for more info on this.  This setting is used by some projects (notably
> Python and Glib) which depend on being able to call via mismatched
> signatures.   You should be aware that this setting does come with a
> runtime cost though.
>
> cheer,
> sam
>
> --
> 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 [email protected].
> To view this discussion visit
> https://groups.google.com/d/msgid/emscripten-discuss/CAL_va28ocNLCKKvbomaW2Ci5Asf70uyqis0vKADYBW1XDe0x1A%40mail.gmail.com
> <https://groups.google.com/d/msgid/emscripten-discuss/CAL_va28ocNLCKKvbomaW2Ci5Asf70uyqis0vKADYBW1XDe0x1A%40mail.gmail.com?utm_medium=email&utm_source=footer>
> .
>

-- 
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 [email protected].
To view this discussion visit 
https://groups.google.com/d/msgid/emscripten-discuss/CAH1xqgmsPcWmJk3TTjfe-S6gj%3Dyt4EwVu5KZTyfFgvgnP6Viag%40mail.gmail.com.

Reply via email to