Skip to content

[wasm][mono] conflicting naming for wasm import/export #102844

Closed

Description

        [UnmanagedCallersOnly(EntryPoint = "test:variants/test#variant-zeros")]
        public static unsafe nint wasmExportVariantZeros(int p0, int p1, int p2, long p3, int p4, float p5, int p6, double p7) {

            [DllImport("test:variants/test", EntryPoint = "variant-zeros"), WasmImportLinkage]
            internal static extern void wasmImportVariantZeros(int p0, int p1, int p2, long p3, int p4, float p5, int p6, double p7, nint p8);

is generating code that doesn't match the assumptions wit-bindgen is making about the UCO signatures, we will need to verify correctness here

__attribute__((import_module("test:variants/test"),import_name("variant-zeros")))
extern void test_3A_variants_2F_test_23_variant_zeros (int32_t, int32_t, int32_t, int64_t, int32_t, float, int32_t, double, void *);


typedef void (*WasmInterpEntrySig_10) (int*, int*, int*, int*, int*, int*, int*, int*, int*, int*);
__attribute__((export_name("test:variants/test#variant-zeros")))
void * test_3A_variants_2F_test_23_variant_zeros (int32_t arg0, int32_t arg1, int32_t arg2, int64_t arg3, int32_t arg4, float arg5, int32_t arg6, double arg7) { 
  void * res;
  if (!(WasmInterpEntrySig_10)wasm_native_to_interp_ftndescs [10].func) {
   mono_wasm_marshal_get_managed_wrapper ("csharp-wasm", "VariantsWorld.wit.exports.test.variants.TestInterop", "wasmExportVariantZeros", 8);
  }
  ((WasmInterpEntrySig_10)wasm_native_to_interp_ftndescs [10].func) ((int*)&res, (int*)&arg0, (int*)&arg1, (int*)&arg2, (int*)&arg3, (int*)&arg4, (int*)&arg5, (int*)&arg6, (int*)&arg7, wasm_native_to_interp_ftndescs [10].arg);
  return res;
}

It looks like there is an import and an export with different signatures because the return value is being marshaled differently?

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Assignees

Labels

Type

No type

Projects

No projects

Milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions