summaryrefslogtreecommitdiff
path: root/src/tools/wasm-emscripten-finalize.cpp
diff options
context:
space:
mode:
authorSam Clegg <sbc@chromium.org>2023-11-08 10:28:10 -0800
committerGitHub <noreply@github.com>2023-11-08 18:28:10 +0000
commit784960180eac208a34eb33415267d977034971df (patch)
tree6b88bd5bc62bd4d5af5405fd52161a3a3aae1405 /src/tools/wasm-emscripten-finalize.cpp
parent9627c8360d179c2cae168f8bca3bf1b7216c34a8 (diff)
downloadbinaryen-784960180eac208a34eb33415267d977034971df.tar.gz
binaryen-784960180eac208a34eb33415267d977034971df.tar.bz2
binaryen-784960180eac208a34eb33415267d977034971df.zip
Move --separate-data-segments into a pass so it can be run from wasm-opt (#6088)
Because we currently strip some data segments (i.e. EM_JS strings) during `--post-emscripten` this is too late as `--separate-data-segments` always runs in `wasm-emscripten-finalize`. Once emscripten switches over to using the pass directly we can remove the support from `wasm-emscripten-finalize`
Diffstat (limited to 'src/tools/wasm-emscripten-finalize.cpp')
-rw-r--r--src/tools/wasm-emscripten-finalize.cpp13
1 files changed, 6 insertions, 7 deletions
diff --git a/src/tools/wasm-emscripten-finalize.cpp b/src/tools/wasm-emscripten-finalize.cpp
index 0f63e8112..5ec4d245e 100644
--- a/src/tools/wasm-emscripten-finalize.cpp
+++ b/src/tools/wasm-emscripten-finalize.cpp
@@ -294,17 +294,16 @@ int main(int argc, const char* argv[]) {
passRunner.add("strip-dwarf");
}
- passRunner.run();
-
// Finally, separate out data segments if relevant
if (!dataSegmentFile.empty()) {
- Output memInitFile(dataSegmentFile, Flags::Binary);
- if (globalBase == INVALID_BASE) {
- Fatal() << "globalBase must be set";
- }
- generator.separateDataSegments(&memInitFile, globalBase);
+ passRunner.options.arguments["separate-data-segments"] = dataSegmentFile;
+ passRunner.options.arguments["separate-data-segments-global-base"] =
+ std::to_string(globalBase);
+ passRunner.add("separate-data-segments");
}
+ passRunner.run();
+
BYN_TRACE_WITH_TYPE("emscripten-dump", "Module after:\n");
BYN_DEBUG_WITH_TYPE("emscripten-dump", std::cerr << wasm << '\n');