Compile time function signature mismatches?

307 views
Skip to first unread message

Jeru Sanders

unread,
Oct 29, 2023, 4:16:30 PM10/29/23
to skia-discuss
I've been trying to debug this for a long time now with no success, any idea why I'd get these function signatures mismatches when compiling my application using emscripten and linking with libskia.a?

There's a bunch of random seeming function signature mismatches, seemingly the last parameter of these functions becomes the return value?

wasm-ld: warning: function signature mismatch: _ZN16SkGradientShader19MakeTwoPointConicalERK7SkPointfS2_fPKjPKfi10SkTileModejPK8SkMatrix
>>> defined as (i32, i32, f32, i32, f32, i32, i32, i32, i32, i32, i32) -> void in C:\Users\MyUser\AppData\Local\Temp\emscripten_temp_5gneoqzq\main_0.o
>>> defined as (i32, f32, i32, f32, i32, i32, i32, i32, i32, i32) -> i32 in C:\Dropbox\MultiGame\multiGame\buildSystem\..\lib\raylib\emscripten\libskia.a(libskia.SkConicalGradient.o)

wasm-ld: warning: function signature mismatch: _ZN16SkGradientShader10MakeLinearEPK7SkPointPKjPKfi10SkTileModejPK8SkMatrix
>>> defined as (i32, i32, i32, i32, i32, i32, i32, i32) -> void in C:\Users\MyUser\AppData\Local\Temp\emscripten_temp_5gneoqzq\main_0.o
>>> defined as (i32, i32, i32, i32, i32, i32, i32) -> i32 in C:\Dropbox\MultiGame\multiGame\buildSystem\..\lib\raylib\emscripten\libskia.a(libskia.SkLinearGradient.o)

wasm-ld: warning: function signature mismatch: _ZN14SkColorFilters6MatrixEPKf
>>> defined as (i32, i32) -> void in C:\Users\MyUser\AppData\Local\Temp\emscripten_temp_5gneoqzq\main_0.o
>>> defined as (i32) -> i32 in C:\Dropbox\MultiGame\multiGame\buildSystem\..\lib\raylib\emscripten\libskia.a(libskia.SkMatrixColorFilter.o)

wasm-ld: warning: function signature mismatch: _Z23GrGLMakeNativeInterfacev
>>> defined as (i32) -> void in C:\Users\MyUser\AppData\Local\Temp\emscripten_temp_5gneoqzq\main_0.o
>>> defined as () -> i32 in C:\Dropbox\MultiGame\multiGame\buildSystem\..\lib\raylib\emscripten\libskia.a(gpu.GrGLMakeNativeInterface_webgl.o)

wasm-ld: warning: function signature mismatch: _ZN16SkGradientShader10MakeRadialERK7SkPointfPKjPKfi10SkTileModejPK8SkMatrix
>>> defined as (i32, i32, f32, i32, i32, i32, i32, i32, i32) -> void in C:\Users\MyUser\AppData\Local\Temp\emscripten_temp_5gneoqzq\main_0.o
>>> defined as (i32, f32, i32, i32, i32, i32, i32, i32) -> i32 in C:\Dropbox\MultiGame\multiGame\buildSystem\..\lib\raylib\emscripten\libskia.a(libskia.SkRadialGradient.o)

wasm-ld: warning: function signature mismatch: _ZN10SkSurfaces12RenderTargetEP18GrRecordingContextN5skgpu8BudgetedERK11SkImageInfoi15GrSurfaceOriginPK14SkSurfacePropsbb
>>> defined as (i32, i32, i32, i32, i32, i32, i32, i32, i32) -> void in C:\Users\MyUser\AppData\Local\Temp\emscripten_temp_5gneoqzq\main_0.o
>>> defined as (i32, i32, i32, i32, i32, i32, i32, i32) -> i32 in C:\Dropbox\MultiGame\multiGame\buildSystem\..\lib\raylib\emscripten\libskia.a(gpu.SkSurface_Ganesh.o)

wasm-ld: warning: function signature mismatch: _ZN6SkData12MakeWithCopyEPKvm
>>> defined as (i32, i32, i32) -> void in C:\Users\MyUser\AppData\Local\Temp\emscripten_temp_5gneoqzq\main_0.o
>>> defined as (i32, i32) -> i32 in C:\Dropbox\MultiGame\multiGame\buildSystem\..\lib\raylib\emscripten\libskia.a(libskia.SkData.o)

wasm-ld: warning: function signature mismatch: _ZN14SkImageFilters4BlurEff10SkTileMode5sk_spI13SkImageFilterERKNS_8CropRectE
>>> defined as (i32, f32, f32, i32, i32, i32) -> void in C:\Users\MyUser\AppData\Local\Temp\emscripten_temp_5gneoqzq\main_0.o
>>> defined as (f32, f32, i32, i32, i32) -> i32 in C:\Dropbox\MultiGame\multiGame\buildSystem\..\lib\raylib\emscripten\libskia.a(libskia.SkBlurImageFilter.o)

wasm-ld: warning: function signature mismatch: _ZN12SkColorSpace8MakeSRGBEv
>>> defined as (i32) -> void in C:\Users\MyUser\AppData\Local\Temp\emscripten_temp_5gneoqzq\main_0.o
>>> defined as () -> i32 in C:\Dropbox\MultiGame\multiGame\buildSystem\..\lib\raylib\emscripten\libskia.a(libskia.SkColorSpace.o)

wasm-ld: warning: function signature mismatch: _ZNK8SkBitmap10makeShaderE10SkTileModeS0_RK17SkSamplingOptionsRK8SkMatrix
>>> defined as (i32, i32, i32, i32, i32, i32) -> void in C:\Users\MyUser\AppData\Local\Temp\emscripten_temp_5gneoqzq\main_0.o
>>> defined as (i32, i32, i32, i32, i32) -> i32 in C:\Dropbox\MultiGame\multiGame\buildSystem\..\lib\raylib\emscripten\libskia.a(libskia.SkBitmap.o)

wasm-ld: warning: function signature mismatch: _ZN15GrDirectContext6MakeGLEv
>>> defined as (i32) -> void in C:\Users\MyUser\AppData\Local\Temp\emscripten_temp_5gneoqzq\main_0.o
>>> defined as () -> i32 in C:\Dropbox\MultiGame\multiGame\buildSystem\..\lib\raylib\emscripten\libskia.a(gpu.GrGLDirectContext.o)

wasm-ld: warning: function signature mismatch: _ZN10SkTypeface12MakeFromDataE5sk_spI6SkDataEi
>>> defined as (i32, i32, i32) -> void in C:\Users\MyUser\AppData\Local\Temp\emscripten_temp_5gneoqzq\main_0.o
>>> defined as (i32, i32) -> i32 in C:\Dropbox\MultiGame\multiGame\buildSystem\..\lib\raylib\emscripten\libskia.a(libskia.SkTypeface.o)

wasm-ld: warning: function signature mismatch: _ZN17SkPictureRecorder24finishRecordingAsPictureEv
>>> defined as (i32, i32) -> void in C:\Users\MyUser\AppData\Local\Temp\emscripten_temp_5gneoqzq\main_0.o
>>> defined as (i32) -> i32 in C:\Dropbox\MultiGame\multiGame\buildSystem\..\lib\raylib\emscripten\libskia.a(libskia.SkPictureRecorder.o)

wasm-ld: warning: function signature mismatch: _ZNK9SkPicture9serializeEPK13SkSerialProcs
>>> defined as (i32, i32, i32) -> void in C:\Users\MyUser\AppData\Local\Temp\emscripten_temp_5gneoqzq\main_0.o
>>> defined as (i32, i32) -> i32 in C:\Dropbox\MultiGame\multiGame\buildSystem\..\lib\raylib\emscripten\libskia.a(libskia.SkPicture.o)

wasm-ld: warning: function signature mismatch: _ZN10SkTextBlob12MakeFromTextEPKvmRK6SkFont14SkTextEncoding
>>> defined as (i32, i32, i32, i32, i32) -> void in C:\Users\MyUser\AppData\Local\Temp\emscripten_temp_5gneoqzq\main_0.o
>>> defined as (i32, i32, i32, i32) -> i32 in C:\Dropbox\MultiGame\multiGame\buildSystem\..\lib\raylib\emscripten\libskia.a(libskia.SkTextBlob.o)


I'm building my application with the latest version of emscripten (3.1.47), and am building the chrome/m119 branch, although I've had this issue with many branches going back to ~chrome/m80

This is my build command:
em++ -std=c++17 -g -s GL_ASSERTIONS=1 -s ASSERTIONS=1 -s SAFE_HEAP=1 -s STACK_OVERFLOW_CHECK=2 -s DEMANGLE_SUPPORT=1 -s VERBOSE=1  -o index.html src\main.cpp C:\Dropbox\MultiGame\multiGame\buildSystem\..\lib\raylib\emscripten\libskia.a C:\Dropbox\MultiGame\multiGame\buildSystem\..\lib\raylib\emscripten\libbox2d.a -IC:\Dropbox\MultiGame\multiGame\buildSystem\..\include\raylib -IC:\Dropbox\MultiGame\multiGame\buildSystem\..\include\raylib\skia -LC:\Dropbox\MultiGame\multiGame\buildSystem\..\lib\raylib\emscripten -lidbfs.js -fno-rtti -fno-exceptions -Wno-c++11-compat-deprecated-writable-strings -Wno-writable-strings -DPLAYING_testGame -s MAX_WEBGL_VERSION=2  -s ALLOW_MEMORY_GROWTH=1 -s LLD_REPORT_UNDEFINED=1 -s ERROR_ON_UNDEFINED_SYMBOLS=0 -s INITIAL_MEMORY=64MB -s STACK_SIZE=10MB --preload-file ..\assetsEmbed@assets

Jeru Sanders

unread,
Nov 7, 2023, 3:40:10 PM11/7/23
to skia-discuss
My issue was trying to use the libskia.a generated by compiling canvas kit, apparently it's built in a weird way.

Rex Guo

unread,
Feb 17, 2024, 7:51:53 AM2/17/24
to skia-discuss
I'm having the exact same problem with EM SDK 3.1.40. Many warnings like the below:

wasm-ld: warning: function signature mismatch: _ZN12SkColorSpace8MakeSRGBEv
>>> defined as (i32) -> void in /var/folders/mr/prmsbjqj4bxbhc5cq7z1tvl00000gp/T/emscripten_temp_z403ebxd/test-skottie_0.o
>>> defined as () -> i32 in skia/lib/wasm/libskia.a(libskia.SkColorSpace.o)

Pranavkumar T S

unread,
Feb 18, 2024, 8:11:23 AM2/18/24
to skia-discuss
Defining the macro "-DSK_TRIVIAL_ABI=[[clang::trivial_abi]]" like this solves the signature mismatch issue.

Rex Guo

unread,
Feb 21, 2024, 8:51:35 AM2/21/24
to skia-discuss
Thanks, that does indeed solve the problem.
Reply all
Reply to author
Forward
0 new messages