mardi 7 avril 2020

Error linking libraries with Wasm-ld: symbol type mimsatch on std functions

wasm-ld fails while linking

wasm-ld: error: symbol type mimsatch: memcpy
>>> defined as WASM_SYMBOL_TYPE_DATA in libcliente_LIB.a(Server.cpp.o)

>>> defined as WASM_SYMBOL_TYPE_FUNCTION in deps/store/libStore.a(EmscriptenStore.cpp.o)

It fails on all mem funcs, memset, memcpy, memmove.

Thing is, both libcliente_LIB & libStore were just built with the same arguments, and including <string> from the same place.

I've tried building with -save-temps and checking the .ii files:

EmscriptenStore.cpp.ii

# 24 "C:\\emsdk\\upstream\\emscripten\\system\\include\\libc\\string.h" 2 3

void *memcpy (void *__restrict, const void *__restrict, size_t);
void *memmove (void *, const void *, size_t);
void *memset (void *, int, size_t);

Server.cpp.ii

# 24 "C:\\emsdk\\upstream\\emscripten\\system\\include\\libc\\string.h" 2 3

void *memcpy (void *__restrict, const void *__restrict, size_t);
void *memmove (void *, const void *, size_t);
void *memset (void *, int, size_t);

Unless I'm understanding all wrong, if they are exactly the same on the .ii file, then they point to the same symbol on the .o file.

Why wasm-ld complains it is WASM_SYMBOL_TYPE_DATA in Server.cpp.o when the .ii shows it is a function?

Aucun commentaire:

Enregistrer un commentaire