diff options
Diffstat (limited to 'src/tools/asm2wasm.cpp')
-rw-r--r-- | src/tools/asm2wasm.cpp | 12 |
1 files changed, 10 insertions, 2 deletions
diff --git a/src/tools/asm2wasm.cpp b/src/tools/asm2wasm.cpp index c880e7459..01602c8b7 100644 --- a/src/tools/asm2wasm.cpp +++ b/src/tools/asm2wasm.cpp @@ -84,7 +84,7 @@ int main(int argc, const char *argv[]) { [&wasmOnly](Options *o, const std::string &) { wasmOnly = true; }) - .add("--debuginfo", "-g", "Emit names section and debug info", + .add("--debuginfo", "-g", "Emit names section and debug info (for debug info you must emit text, -S, for this to work)", Options::Arguments::Zero, [&](Options *o, const std::string &arguments) { debugInfo = true; }) .add("--symbolmap", "-s", "Emit a symbol map (indexes => names)", @@ -99,6 +99,12 @@ int main(int argc, const char *argv[]) { }); options.parse(argc, argv); + // finalize arguments + if (options.extra["output"].size() == 0) { + // when no output file is specified, we emit text to stdout + emitBinary = false; + } + const auto &tm_it = options.extra.find("total memory"); size_t totalMemory = tm_it == options.extra.end() ? 16 * 1024 * 1024 : atoi(tm_it->second.c_str()); @@ -109,6 +115,8 @@ int main(int argc, const char *argv[]) { } Asm2WasmPreProcessor pre; + // wasm binaries can contain a names section, but not full debug info + pre.debugInfo = debugInfo && !emitBinary; auto input( read_file<std::vector<char>>(options.extra["infile"], Flags::Text, options.debug ? Flags::Debug : Flags::Release)); char *start = pre.process(input.data()); @@ -120,7 +128,7 @@ int main(int argc, const char *argv[]) { if (options.debug) std::cerr << "wasming..." << std::endl; Module wasm; wasm.memory.initial = wasm.memory.max = totalMemory / Memory::kPageSize; - Asm2WasmBuilder asm2wasm(wasm, pre.memoryGrowth, options.debug, imprecise, passOptions, runOptimizationPasses, wasmOnly); + Asm2WasmBuilder asm2wasm(wasm, pre, options.debug, imprecise, passOptions, runOptimizationPasses, wasmOnly); asm2wasm.processAsm(asmjs); // import mem init file, if provided |