diff options
-rw-r--r-- | src/wasm/wasm-emscripten.cpp | 18 | ||||
-rw-r--r-- | test/lld/duplicate_imports.wast.out | 3 | ||||
-rw-r--r-- | test/lld/em_asm.wast.mem.out | 3 | ||||
-rw-r--r-- | test/lld/em_asm.wast.out | 3 | ||||
-rw-r--r-- | test/lld/em_asm_O0.wast.out | 3 | ||||
-rw-r--r-- | test/lld/em_asm_shared.wast.out | 3 | ||||
-rw-r--r-- | test/lld/em_asm_table.wast.out | 3 | ||||
-rw-r--r-- | test/lld/em_js_O0.wast.out | 3 | ||||
-rw-r--r-- | test/lld/hello_world.passive.wast.out | 3 | ||||
-rw-r--r-- | test/lld/hello_world.wast.mem.out | 3 | ||||
-rw-r--r-- | test/lld/hello_world.wast.out | 3 | ||||
-rw-r--r-- | test/lld/init.wast.out | 3 | ||||
-rw-r--r-- | test/lld/recursive.wast.out | 3 | ||||
-rw-r--r-- | test/lld/reserved_func_ptr.wast.out | 3 | ||||
-rw-r--r-- | test/lld/shared.wast.out | 3 |
15 files changed, 45 insertions, 15 deletions
diff --git a/src/wasm/wasm-emscripten.cpp b/src/wasm/wasm-emscripten.cpp index a3433bf9f..3ee3e4424 100644 --- a/src/wasm/wasm-emscripten.cpp +++ b/src/wasm/wasm-emscripten.cpp @@ -1042,7 +1042,23 @@ std::string EmscriptenGlueGenerator::generateEmscriptenMetadata( wasm.features.iterFeatures([&](FeatureSet::Feature f) { meta << nextElement() << "\"--enable-" << FeatureSet::toString(f) << '"'; }); - meta << "\n ]\n"; + meta << "\n ],\n"; + + auto mainReadsParams = false; + if (auto* exp = wasm.getExportOrNull("main")) { + if (exp->kind == ExternalKind::Function) { + auto* main = wasm.getFunction(exp->value); + mainReadsParams = true; + // If main does not read its parameters, it will just be a stub that + // calls __original_main (which has no parameters). + if (auto* call = main->body->dynCast<Call>()) { + if (call->operands.empty()) { + mainReadsParams = false; + } + } + } + } + meta << " \"mainReadsParams\": " << int(mainReadsParams) << '\n'; meta << "}\n"; diff --git a/test/lld/duplicate_imports.wast.out b/test/lld/duplicate_imports.wast.out index 7aebdca50..323365711 100644 --- a/test/lld/duplicate_imports.wast.out +++ b/test/lld/duplicate_imports.wast.out @@ -115,7 +115,8 @@ "invoke_ffd" ], "features": [ - ] + ], + "mainReadsParams": 1 } -- END METADATA -- ;) diff --git a/test/lld/em_asm.wast.mem.out b/test/lld/em_asm.wast.mem.out index 90b3560ce..13d289f46 100644 --- a/test/lld/em_asm.wast.mem.out +++ b/test/lld/em_asm.wast.mem.out @@ -262,7 +262,8 @@ "invokeFuncs": [ ], "features": [ - ] + ], + "mainReadsParams": 0 } -- END METADATA -- ;) diff --git a/test/lld/em_asm.wast.out b/test/lld/em_asm.wast.out index 6cb47ac93..f0c38792d 100644 --- a/test/lld/em_asm.wast.out +++ b/test/lld/em_asm.wast.out @@ -263,7 +263,8 @@ "invokeFuncs": [ ], "features": [ - ] + ], + "mainReadsParams": 0 } -- END METADATA -- ;) diff --git a/test/lld/em_asm_O0.wast.out b/test/lld/em_asm_O0.wast.out index 2426f3829..10c293a0b 100644 --- a/test/lld/em_asm_O0.wast.out +++ b/test/lld/em_asm_O0.wast.out @@ -123,7 +123,8 @@ "invokeFuncs": [ ], "features": [ - ] + ], + "mainReadsParams": 1 } -- END METADATA -- ;) diff --git a/test/lld/em_asm_shared.wast.out b/test/lld/em_asm_shared.wast.out index a76906028..5b984f7ae 100644 --- a/test/lld/em_asm_shared.wast.out +++ b/test/lld/em_asm_shared.wast.out @@ -244,7 +244,8 @@ "invokeFuncs": [ ], "features": [ - ] + ], + "mainReadsParams": 0 } -- END METADATA -- ;) diff --git a/test/lld/em_asm_table.wast.out b/test/lld/em_asm_table.wast.out index ed821cd18..48d02d208 100644 --- a/test/lld/em_asm_table.wast.out +++ b/test/lld/em_asm_table.wast.out @@ -93,7 +93,8 @@ "invokeFuncs": [ ], "features": [ - ] + ], + "mainReadsParams": 0 } -- END METADATA -- ;) diff --git a/test/lld/em_js_O0.wast.out b/test/lld/em_js_O0.wast.out index fb647ffde..6e141975d 100644 --- a/test/lld/em_js_O0.wast.out +++ b/test/lld/em_js_O0.wast.out @@ -73,7 +73,8 @@ "invokeFuncs": [ ], "features": [ - ] + ], + "mainReadsParams": 0 } -- END METADATA -- ;) diff --git a/test/lld/hello_world.passive.wast.out b/test/lld/hello_world.passive.wast.out index 88a06c1f3..6c9fd4ef7 100644 --- a/test/lld/hello_world.passive.wast.out +++ b/test/lld/hello_world.passive.wast.out @@ -105,7 +105,8 @@ "invokeFuncs": [ ], "features": [ - ] + ], + "mainReadsParams": 0 } -- END METADATA -- ;) diff --git a/test/lld/hello_world.wast.mem.out b/test/lld/hello_world.wast.mem.out index 49a441772..c8891f6d9 100644 --- a/test/lld/hello_world.wast.mem.out +++ b/test/lld/hello_world.wast.mem.out @@ -97,7 +97,8 @@ "invokeFuncs": [ ], "features": [ - ] + ], + "mainReadsParams": 0 } -- END METADATA -- ;) diff --git a/test/lld/hello_world.wast.out b/test/lld/hello_world.wast.out index 6b2870e14..9e01def20 100644 --- a/test/lld/hello_world.wast.out +++ b/test/lld/hello_world.wast.out @@ -98,7 +98,8 @@ "invokeFuncs": [ ], "features": [ - ] + ], + "mainReadsParams": 0 } -- END METADATA -- ;) diff --git a/test/lld/init.wast.out b/test/lld/init.wast.out index fc95468e0..273e0d6aa 100644 --- a/test/lld/init.wast.out +++ b/test/lld/init.wast.out @@ -110,7 +110,8 @@ "invokeFuncs": [ ], "features": [ - ] + ], + "mainReadsParams": 0 } -- END METADATA -- ;) diff --git a/test/lld/recursive.wast.out b/test/lld/recursive.wast.out index a7c7bd85c..24868211d 100644 --- a/test/lld/recursive.wast.out +++ b/test/lld/recursive.wast.out @@ -155,7 +155,8 @@ "invokeFuncs": [ ], "features": [ - ] + ], + "mainReadsParams": 0 } -- END METADATA -- ;) diff --git a/test/lld/reserved_func_ptr.wast.out b/test/lld/reserved_func_ptr.wast.out index a05faf2b9..613802f6a 100644 --- a/test/lld/reserved_func_ptr.wast.out +++ b/test/lld/reserved_func_ptr.wast.out @@ -192,7 +192,8 @@ "invokeFuncs": [ ], "features": [ - ] + ], + "mainReadsParams": 1 } -- END METADATA -- ;) diff --git a/test/lld/shared.wast.out b/test/lld/shared.wast.out index 1e2ab04eb..4931092d6 100644 --- a/test/lld/shared.wast.out +++ b/test/lld/shared.wast.out @@ -124,7 +124,8 @@ "invokeFuncs": [ ], "features": [ - ] + ], + "mainReadsParams": 0 } -- END METADATA -- ;) |