summaryrefslogtreecommitdiff
path: root/src/wasm/wasm-emscripten.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/wasm/wasm-emscripten.cpp')
-rw-r--r--src/wasm/wasm-emscripten.cpp18
1 files changed, 17 insertions, 1 deletions
diff --git a/src/wasm/wasm-emscripten.cpp b/src/wasm/wasm-emscripten.cpp
index 1d58699ec..c2cace488 100644
--- a/src/wasm/wasm-emscripten.cpp
+++ b/src/wasm/wasm-emscripten.cpp
@@ -1225,7 +1225,11 @@ std::string EmscriptenGlueGenerator::generateEmscriptenMetadata(
meta << "\n ],\n";
auto mainReadsParams = false;
- if (auto* exp = wasm.getExportOrNull("main")) {
+ auto* exp = wasm.getExportOrNull("main");
+ if (!exp) {
+ exp = wasm.getExportOrNull("__main_argc_argv");
+ }
+ if (exp) {
if (exp->kind == ExternalKind::Function) {
auto* main = wasm.getFunction(exp->value);
mainReadsParams = true;
@@ -1268,6 +1272,18 @@ void EmscriptenGlueGenerator::separateDataSegments(Output* outfile,
wasm.memory.segments.clear();
}
+void EmscriptenGlueGenerator::renameMainArgcArgv() {
+ // If an export call ed __main_argc_argv exists rename it to main
+ Export* ex = wasm.getExportOrNull("__main_argc_argv");
+ if (!ex) {
+ BYN_TRACE("renameMain: __main_argc_argv not found\n");
+ return;
+ }
+ ex->name = "main";
+ wasm.updateMaps();
+ ModuleUtils::renameFunction(wasm, "__main_argc_argv", "main");
+}
+
void EmscriptenGlueGenerator::exportWasiStart() {
// If main exists, export a function to call it per the wasi standard.
Name main = "main";