summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/wasm/wasm-emscripten.cpp18
-rw-r--r--test/lld/duplicate_imports.wast.out3
-rw-r--r--test/lld/em_asm.wast.mem.out3
-rw-r--r--test/lld/em_asm.wast.out3
-rw-r--r--test/lld/em_asm_O0.wast.out3
-rw-r--r--test/lld/em_asm_shared.wast.out3
-rw-r--r--test/lld/em_asm_table.wast.out3
-rw-r--r--test/lld/em_js_O0.wast.out3
-rw-r--r--test/lld/hello_world.passive.wast.out3
-rw-r--r--test/lld/hello_world.wast.mem.out3
-rw-r--r--test/lld/hello_world.wast.out3
-rw-r--r--test/lld/init.wast.out3
-rw-r--r--test/lld/recursive.wast.out3
-rw-r--r--test/lld/reserved_func_ptr.wast.out3
-rw-r--r--test/lld/shared.wast.out3
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 --
;)