@@ -37,6 +37,8 @@ int main(int argc, const char *argv[]) {
3737 bool runOptimizationPasses = false ;
3838 Asm2WasmBuilder::TrapMode trapMode = Asm2WasmBuilder::TrapMode::JS;
3939 bool wasmOnly = false ;
40+ std::string binaryMapFile;
41+ std::string binaryMapUrl;
4042 std::string symbolMap;
4143 bool emitBinary = true ;
4244
@@ -101,9 +103,15 @@ int main(int argc, const char *argv[]) {
101103 [&legalizeJavaScriptFFI](Options *o, const std::string &) {
102104 legalizeJavaScriptFFI = false ;
103105 })
104- .add (" --debuginfo" , " -g" , " Emit names section and debug info (for debug info you must emit text, -S, for this to work )" ,
106+ .add (" --debuginfo" , " -g" , " Emit names section in wasm binary (or full debuginfo in wast )" ,
105107 Options::Arguments::Zero,
106108 [&](Options *o, const std::string &arguments) { passOptions.debugInfo = true ; })
109+ .add (" --binarymap-file" , " -bm" , " Emit binary map (if using binary output) to the specified file" ,
110+ Options::Arguments::One,
111+ [&binaryMapFile](Options *o, const std::string &argument) { binaryMapFile = argument; })
112+ .add (" --binarymap-url" , " -bu" , " Use specified string as binary map URL" ,
113+ Options::Arguments::One,
114+ [&binaryMapUrl](Options *o, const std::string &argument) { binaryMapUrl = argument; })
107115 .add (" --symbolmap" , " -s" , " Emit a symbol map (indexes => names)" ,
108116 Options::Arguments::One,
109117 [&](Options *o, const std::string &argument) { symbolMap = argument; })
@@ -132,8 +140,9 @@ int main(int argc, const char *argv[]) {
132140 }
133141
134142 Asm2WasmPreProcessor pre ;
135- // wasm binaries can contain a names section, but not full debug info
136- pre .debugInfo = passOptions.debugInfo && !emitBinary;
143+ // wasm binaries can contain a names section, but not full debug info --
144+ // debug info is disabled if a map file is not specified with wasm binary
145+ pre .debugInfo = passOptions.debugInfo && (!emitBinary || binaryMapFile.size ());
137146 auto input (
138147 read_file<std::vector<char >>(options.extra [" infile" ], Flags::Text, options.debug ? Flags::Debug : Flags::Release));
139148 char *start = pre .process (input.data ());
@@ -200,6 +209,10 @@ int main(int argc, const char *argv[]) {
200209 writer.setDebugInfo (passOptions.debugInfo );
201210 writer.setSymbolMap (symbolMap);
202211 writer.setBinary (emitBinary);
212+ if (emitBinary) {
213+ writer.setBinaryMapFilename (binaryMapFile);
214+ writer.setBinaryMapUrl (binaryMapUrl);
215+ }
203216 writer.write (wasm, options.extra [" output" ]);
204217
205218 if (options.debug ) std::cerr << " done." << std::endl;
0 commit comments