(wasm_file, metadata, base_metadata)
| 102 | |
| 103 | |
| 104 | def update_settings_glue(wasm_file, metadata, base_metadata): |
| 105 | maybe_disable_filesystem(metadata.imports) |
| 106 | |
| 107 | # Integrate info from backend |
| 108 | if settings.SIDE_MODULE: |
| 109 | # we don't need any JS library contents in side modules |
| 110 | settings.DEFAULT_LIBRARY_FUNCS_TO_INCLUDE = [] |
| 111 | else: |
| 112 | syms = settings.DEFAULT_LIBRARY_FUNCS_TO_INCLUDE + metadata.imports |
| 113 | syms = set(syms).difference(metadata.all_exports) |
| 114 | settings.DEFAULT_LIBRARY_FUNCS_TO_INCLUDE = sorted(syms) |
| 115 | if settings.MAIN_MODULE: |
| 116 | settings.WEAK_IMPORTS += webassembly.get_weak_imports(wasm_file) |
| 117 | |
| 118 | if base_metadata: |
| 119 | settings.WASM_EXPORTS = base_metadata.all_exports |
| 120 | else: |
| 121 | settings.WASM_EXPORTS = metadata.all_exports |
| 122 | settings.HAVE_EM_ASM = bool(settings.MAIN_MODULE or len(metadata.em_asm_consts) != 0) |
| 123 | |
| 124 | if settings.MAIN_MODULE and settings.ASYNCIFY == 1: |
| 125 | # These will be exported from Wasm, but only once we run the asyncify pass. |
| 126 | settings.WASM_EXPORTS += ['__asyncify_state', '__asyncify_data'] |
| 127 | |
| 128 | # start with the MVP features, and add any detected features. |
| 129 | building.binaryen_features = ['--mvp-features', *metadata.features] |
| 130 | if settings.ASYNCIFY == 2: |
| 131 | building.binaryen_features += ['--enable-reference-types'] |
| 132 | |
| 133 | if settings.PTHREADS: |
| 134 | assert '--enable-threads' in building.binaryen_features |
| 135 | if settings.MEMORY64: |
| 136 | assert '--enable-memory64' in building.binaryen_features |
| 137 | |
| 138 | settings.HAS_MAIN = bool(settings.MAIN_MODULE) or settings.PROXY_TO_PTHREAD or settings.STANDALONE_WASM or 'main' in settings.WASM_EXPORTS or '__main_argc_argv' in settings.WASM_EXPORTS |
| 139 | if settings.HAS_MAIN and not settings.MINIMAL_RUNTIME: |
| 140 | # Dependencies of `callMain` |
| 141 | settings.DEFAULT_LIBRARY_FUNCS_TO_INCLUDE += ['$exitJS', '$handleException'] |
| 142 | |
| 143 | # When using dynamic linking the main function might be in a side module. |
| 144 | # To be safe assume they do take input parameters. |
| 145 | settings.MAIN_READS_PARAMS = metadata.main_reads_params or bool(settings.MAIN_MODULE) |
| 146 | if settings.MAIN_READS_PARAMS and not settings.STANDALONE_WASM: |
| 147 | # callMain depends on this library function |
| 148 | settings.DEFAULT_LIBRARY_FUNCS_TO_INCLUDE += ['$stringToUTF8OnStack'] |
| 149 | |
| 150 | if settings.STACK_OVERFLOW_CHECK and not settings.SIDE_MODULE: |
| 151 | # writeStackCookie and checkStackCookie both rely on emscripten_stack_get_end being |
| 152 | # exported. In theory it should always be present since its defined in compiler-rt. |
| 153 | assert 'emscripten_stack_get_end' in metadata.function_exports |
| 154 | |
| 155 | for deps in metadata.js_deps: |
| 156 | settings.DEFAULT_LIBRARY_FUNCS_TO_INCLUDE.extend(deps.split(',')) |
| 157 | |
| 158 | |
| 159 | def apply_static_code_hooks(forwarded_json, code): |
no test coverage detected