@@ -280,6 +280,10 @@ def trim_asm_const_body(body):
280280 return body
281281
282282
283+ def create_other_export_declarations (tag_exports ):
284+ return '\n ' .join (f'var { asmjs_mangle (name )} ;' for name in tag_exports )
285+
286+
283287def create_global_exports (global_exports ):
284288 lines = []
285289 for k , v in global_exports .items ():
@@ -417,11 +421,13 @@ def emscript(in_wasm, out_wasm, outfile_js, js_syms, finalize=True, base_metadat
417421
418422 if base_metadata :
419423 function_exports = base_metadata .function_exports
424+ tag_exports = base_metadata .tag_exports
420425 # We want the real values from the final metadata but we only want to
421426 # include names from the base_metadata. See phase_link() in link.py.
422427 global_exports = {k : v for k , v in metadata .global_exports .items () if k in base_metadata .global_exports }
423428 else :
424429 function_exports = metadata .function_exports
430+ tag_exports = metadata .tag_exports
425431 global_exports = metadata .global_exports
426432
427433 if settings .ASYNCIFY == 1 :
@@ -431,7 +437,7 @@ def emscript(in_wasm, out_wasm, outfile_js, js_syms, finalize=True, base_metadat
431437 function_exports ['asyncify_stop_rewind' ] = webassembly .FuncType ([], [])
432438
433439 parts = [pre ]
434- parts += create_module (metadata , function_exports , global_exports , forwarded_json ['librarySymbols' ])
440+ parts += create_module (metadata , function_exports , global_exports , tag_exports , forwarded_json ['librarySymbols' ])
435441 parts .append (post )
436442
437443 full_js_module = '' .join (parts )
@@ -1000,7 +1006,7 @@ def create_receiving(function_exports):
10001006 return '\n ' .join (receiving ) + '\n '
10011007
10021008
1003- def create_module (metadata , function_exports , global_exports , library_symbols ):
1009+ def create_module (metadata , function_exports , global_exports , tag_exports , library_symbols ):
10041010 module = []
10051011
10061012 receiving = create_receiving (function_exports )
@@ -1010,6 +1016,7 @@ def create_module(metadata, function_exports, global_exports, library_symbols):
10101016 module .append (sending )
10111017 else :
10121018 receiving += create_global_exports (global_exports )
1019+ receiving += create_other_export_declarations (tag_exports )
10131020
10141021 if settings .PTHREADS or settings .WASM_WORKERS :
10151022 sending = textwrap .indent (sending , ' ' ).strip ()
0 commit comments