summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorSam Clegg <sbc@chromium.org>2018-06-10 08:28:31 -0700
committerGitHub <noreply@github.com>2018-06-10 08:28:31 -0700
commit7bed8a09423dbe94200fd73bf1b9ede5eb646e59 (patch)
tree23eabfe91adc6e595364fb36aaab9cf0d075ce42 /src
parentc7b78eadec731675ef3274126d0d19df5e4263c5 (diff)
downloadbinaryen-7bed8a09423dbe94200fd73bf1b9ede5eb646e59.tar.gz
binaryen-7bed8a09423dbe94200fd73bf1b9ede5eb646e59.tar.bz2
binaryen-7bed8a09423dbe94200fd73bf1b9ede5eb646e59.zip
Add source map handling to wasm-emscripten-finalize (#1595)
Diffstat (limited to 'src')
-rw-r--r--src/tools/wasm-emscripten-finalize.cpp26
-rw-r--r--src/tools/wasm-opt.cpp4
2 files changed, 25 insertions, 5 deletions
diff --git a/src/tools/wasm-emscripten-finalize.cpp b/src/tools/wasm-emscripten-finalize.cpp
index b92fab23d..f69cc6429 100644
--- a/src/tools/wasm-emscripten-finalize.cpp
+++ b/src/tools/wasm-emscripten-finalize.cpp
@@ -38,6 +38,9 @@ using namespace wasm;
int main(int argc, const char *argv[]) {
std::string infile;
std::string outfile;
+ std::string inputSourceMapFilename;
+ std::string outputSourceMapFilename;
+ std::string outputSourceMapUrl;
bool emitBinary = true;
bool debugInfo = false;
unsigned numReservedFunctionPointers = 0;
@@ -75,6 +78,15 @@ int main(int argc, const char *argv[]) {
[&globalBase](Options*, const std::string&argument ) {
globalBase = std::stoull(argument);
})
+ .add("--input-source-map", "-ism", "Consume source map from the specified file",
+ Options::Arguments::One,
+ [&inputSourceMapFilename](Options *o, const std::string& argument) { inputSourceMapFilename = argument; })
+ .add("--output-source-map", "-osm", "Emit source map to the specified file",
+ Options::Arguments::One,
+ [&outputSourceMapFilename](Options *o, const std::string& argument) { outputSourceMapFilename = argument; })
+ .add("--output-source-map-url", "-osu", "Emit specified string as source map URL",
+ Options::Arguments::One,
+ [&outputSourceMapUrl](Options *o, const std::string& argument) { outputSourceMapUrl = argument; })
.add_positional("INFILE", Options::Arguments::One,
[&infile](Options *o, const std::string& argument) {
infile = argument;
@@ -91,11 +103,15 @@ int main(int argc, const char *argv[]) {
Module wasm;
ModuleReader reader;
try {
- reader.read(infile, wasm);
+ reader.read(infile, wasm, inputSourceMapFilename);
} catch (ParseException& p) {
p.dump(std::cerr);
std::cerr << '\n';
Fatal() << "error in parsing input";
+ } catch (MapParseException& p) {
+ p.dump(std::cerr);
+ std::cerr << '\n';
+ Fatal() << "error in parsing wasm source map";
}
if (options.debug) {
@@ -140,10 +156,10 @@ int main(int argc, const char *argv[]) {
writer.setDebugInfo(debugInfo);
// writer.setSymbolMap(symbolMap);
writer.setBinary(emitBinary);
- // if (emitBinary) {
- // writer.setSourceMapFilename(sourceMapFilename);
- // writer.setSourceMapUrl(sourceMapUrl);
- // }
+ if (outputSourceMapFilename.size()) {
+ writer.setSourceMapFilename(outputSourceMapFilename);
+ writer.setSourceMapUrl(outputSourceMapUrl);
+ }
writer.write(wasm, output);
if (emitBinary) {
std::cout << metadata;
diff --git a/src/tools/wasm-opt.cpp b/src/tools/wasm-opt.cpp
index 43496b34e..f78278bcf 100644
--- a/src/tools/wasm-opt.cpp
+++ b/src/tools/wasm-opt.cpp
@@ -145,6 +145,10 @@ int main(int argc, const char* argv[]) {
p.dump(std::cerr);
std::cerr << '\n';
Fatal() << "error in parsing input";
+ } catch (MapParseException& p) {
+ p.dump(std::cerr);
+ std::cerr << '\n';
+ Fatal() << "error in parsing wasm source map";
} catch (std::bad_alloc& b) {
Fatal() << "error in building module, std::bad_alloc (possibly invalid request for silly amounts of memory)";
}