@needs_dlfcn
@also_with_wasm_bigint
def test_dylink_i64_c(self):
    self.dylink_test('\n      #include <cstdio>\n      #include <cinttypes>\n      #include "header.h"\n\n      typedef int32_t (*fp_type_32)(int32_t, int32_t, int32_t);\n      typedef int64_t (*fp_type_64)(int32_t, int32_t, int32_t);\n\n      int32_t internal_function_ret_32(int32_t i, int32_t j, int32_t k) {\n          return 32;\n      }\n      int64_t internal_function_ret_64(int32_t i, int32_t j, int32_t k) {\n          return 64;\n      }\n\n      int main() {\n          fp_type_32 fp32_internal = &internal_function_ret_32;\n          fp_type_32 fp32_external = &function_ret_32;\n          fp_type_64 fp64_external = &function_ret_64;\n          fp_type_64 fp64_internal = &internal_function_ret_64;\n          int32_t ires32 = fp32_internal(0,0,0);\n          printf("res32 - internal %d\\n",ires32);\n          int32_t eres32 = fp32_external(0,0,0);\n          printf("res32 - external %d\\n",eres32);\n\n          int64_t ires64 = fp64_internal(0,0,0);\n          printf("res64 - internal %" PRId64 "\\n",ires64);\n          int64_t eres64 = fp64_external(0,0,0);\n          printf("res64 - external %" PRId64 "\\n",eres64);\n          return 0;\n      }\n    ', '\n      #include "header.h"\n      int32_t function_ret_32(int32_t i, int32_t j, int32_t k) {\n          return 32;\n      }\n      int64_t function_ret_64(int32_t i, int32_t j, int32_t k) {\n          return 64;\n      }\n    ', 'res32 - internal 32\nres32 - external 32\nres64 - internal 64\nres64 - external 64\n', header='\n      #include <emscripten.h>\n      #include <cstdint>\n      EMSCRIPTEN_KEEPALIVE int32_t function_ret_32(int32_t i, int32_t j, int32_t k);\n      EMSCRIPTEN_KEEPALIVE int64_t function_ret_64(int32_t i, int32_t j, int32_t k);\n    ')
@needs_dlfcn
@also_with_wasm_bigint
def test_dylink_i64_c(self):
    self.dylink_test('\n      #include <cstdio>\n      #include <cinttypes>\n      #include "header.h"\n\n      typedef int32_t (*fp_type_32)(int32_t, int32_t, int32_t);\n      typedef int64_t (*fp_type_64)(int32_t, int32_t, int32_t);\n\n      int32_t internal_function_ret_32(int32_t i, int32_t j, int32_t k) {\n          return 32;\n      }\n      int64_t internal_function_ret_64(int32_t i, int32_t j, int32_t k) {\n          return 64;\n      }\n\n      int main() {\n          fp_type_32 fp32_internal = &internal_function_ret_32;\n          fp_type_32 fp32_external = &function_ret_32;\n          fp_type_64 fp64_external = &function_ret_64;\n          fp_type_64 fp64_internal = &internal_function_ret_64;\n          int32_t ires32 = fp32_internal(0,0,0);\n          printf("res32 - internal %d\\n",ires32);\n          int32_t eres32 = fp32_external(0,0,0);\n          printf("res32 - external %d\\n",eres32);\n\n          int64_t ires64 = fp64_internal(0,0,0);\n          printf("res64 - internal %" PRId64 "\\n",ires64);\n          int64_t eres64 = fp64_external(0,0,0);\n          printf("res64 - external %" PRId64 "\\n",eres64);\n          return 0;\n      }\n    ', '\n      #include "header.h"\n      int32_t function_ret_32(int32_t i, int32_t j, int32_t k) {\n          return 32;\n      }\n      int64_t function_ret_64(int32_t i, int32_t j, int32_t k) {\n          return 64;\n      }\n    ', 'res32 - internal 32\nres32 - external 32\nres64 - internal 64\nres64 - external 64\n', header='\n      #include <emscripten.h>\n      #include <cstdint>\n      EMSCRIPTEN_KEEPALIVE int32_t function_ret_32(int32_t i, int32_t j, int32_t k);\n      EMSCRIPTEN_KEEPALIVE int64_t function_ret_64(int32_t i, int32_t j, int32_t k);\n    ')