summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/command-line.h72
-rw-r--r--src/s2wasm-main.cpp72
-rw-r--r--src/s2wasm.h22
-rw-r--r--src/wasm.h2
-rw-r--r--test/dot_s/alternate-lcomm.wast2
-rw-r--r--test/dot_s/asm_const.wast2
-rw-r--r--test/dot_s/basics.wast2
-rw-r--r--test/dot_s/call.wast2
-rw-r--r--test/dot_s/cfg-stackify.wast2
-rw-r--r--test/dot_s/comparisons_f32.wast2
-rw-r--r--test/dot_s/comparisons_f64.wast2
-rw-r--r--test/dot_s/comparisons_i32.wast2
-rw-r--r--test/dot_s/comparisons_i64.wast2
-rw-r--r--test/dot_s/conv.wast2
-rw-r--r--test/dot_s/copysign-casts.wast2
-rw-r--r--test/dot_s/cpus.wast2
-rw-r--r--test/dot_s/data-offset-folding.wast2
-rw-r--r--test/dot_s/dead-vreg.wast2
-rw-r--r--test/dot_s/exit.wast2
-rw-r--r--test/dot_s/f32.wast2
-rw-r--r--test/dot_s/f64.wast2
-rw-r--r--test/dot_s/fast-isel.wast2
-rw-r--r--test/dot_s/frem.wast2
-rw-r--r--test/dot_s/func.wast2
-rw-r--r--test/dot_s/global.wast2
-rw-r--r--test/dot_s/globl.wast2
-rw-r--r--test/dot_s/i32.wast2
-rw-r--r--test/dot_s/i64.wast2
-rw-r--r--test/dot_s/ident.wast2
-rw-r--r--test/dot_s/immediates.wast2
-rw-r--r--test/dot_s/lcomm-in-text-segment.wast2
-rw-r--r--test/dot_s/legalize.wast2
-rw-r--r--test/dot_s/load-ext.wast2
-rw-r--r--test/dot_s/load-store-i1.wast2
-rw-r--r--test/dot_s/load.wast2
-rw-r--r--test/dot_s/memops.wast2
-rw-r--r--test/dot_s/memory-addr32.wast2
-rw-r--r--test/dot_s/memory-addr64.wast2
-rw-r--r--test/dot_s/minimal.wast2
-rw-r--r--test/dot_s/offset-folding.wast2
-rw-r--r--test/dot_s/offset.wast2
-rw-r--r--test/dot_s/permute.wast2
-rw-r--r--test/dot_s/phi.wast2
-rw-r--r--test/dot_s/reg-stackify.wast2
-rw-r--r--test/dot_s/relocation.wast2
-rw-r--r--test/dot_s/return-int32.wast2
-rw-r--r--test/dot_s/return-void.wast2
-rw-r--r--test/dot_s/returned.wast2
-rw-r--r--test/dot_s/select.wast2
-rw-r--r--test/dot_s/signext-zeroext.wast2
-rw-r--r--test/dot_s/store-results.wast2
-rw-r--r--test/dot_s/store-trunc.wast2
-rw-r--r--test/dot_s/store.wast2
-rw-r--r--test/dot_s/switch.wast2
-rw-r--r--test/dot_s/symbolic-offset.wast2
-rw-r--r--test/dot_s/unreachable.wast2
-rw-r--r--test/dot_s/unused-argument.wast2
-rw-r--r--test/dot_s/varargs.wast2
-rw-r--r--test/dot_s/vtable.wast2
59 files changed, 182 insertions, 96 deletions
diff --git a/src/command-line.h b/src/command-line.h
new file mode 100644
index 000000000..77c10d3e7
--- /dev/null
+++ b/src/command-line.h
@@ -0,0 +1,72 @@
+/*
+ * Copyright 2015 WebAssembly Community Group participants
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+//
+// Command line helpers.
+//
+
+#include "wasm.h"
+
+namespace wasm {
+
+struct Options {
+ bool debug;
+ std::string infile;
+ std::string outfile;
+ Options() : debug(false) {}
+};
+
+bool optionIs(const char *arg, const char *LongOpt, const char *ShortOpt) {
+ return strcmp(arg, LongOpt) == 0 || strcmp(arg, ShortOpt) == 0;
+}
+
+// TODO(jfb) Make this configurable: callers should pass in option handlers.
+void processCommandLine(int argc, const char *argv[], Options *options) {
+ for (size_t i = 1; i != argc; ++i) {
+ if (optionIs(argv[i], "--help", "-h")) {
+ std::cerr << "s2wasm INFILE\n\n"
+ "Link .s file into .wast\n\n"
+ "Optional arguments:\n"
+ " -n, --help Show this help message and exit\n"
+ " -d, --debug Print debug information to stderr\n"
+ " -o, --output Output file (stdout if not specified)\n"
+ << std::endl;
+ exit(EXIT_SUCCESS);
+ } else if (optionIs(argv[i], "--debug", "-d")) {
+ options->debug = true;
+ } else if (optionIs(argv[i], "--output", "-o")) {
+ if (i + 1 == argc) {
+ std::cerr << "No output file" << std::endl;
+ exit(EXIT_FAILURE);
+ }
+ if (options->outfile.size()) {
+ std::cerr << "Expected only one output file, got '" << options->outfile
+ << "' and '" << argv[i] << "'" << std::endl;
+ exit(EXIT_FAILURE);
+ }
+ options->outfile = argv[++i];
+ } else {
+ if (options->infile.size()) {
+ std::cerr << "Expected only one input file, got '" << options->infile
+ << "' and '" << argv[i] << "'" << std::endl;
+ exit(EXIT_FAILURE);
+ }
+ options->infile = argv[i];
+ }
+ }
+}
+
+} // namespace wasm
diff --git a/src/s2wasm-main.cpp b/src/s2wasm-main.cpp
index 247974fee..cb60d2a57 100644
--- a/src/s2wasm-main.cpp
+++ b/src/s2wasm-main.cpp
@@ -18,46 +18,58 @@
// wasm2asm console tool
//
+#include "command-line.h"
#include "s2wasm.h"
using namespace cashew;
using namespace wasm;
-namespace wasm {
-int debug = 0;
-}
+int main(int argc, const char *argv[]) {
+ Options options;
+ processCommandLine(argc, argv, &options);
+
+ std::string input;
+ {
+ if (options.debug) {
+ std::cerr << "Loading '" << options.infile << "'..." << std::endl;
+ }
+ std::ifstream infile(options.infile);
+ if (!infile.is_open()) {
+ std::cerr << "Failed opening '" << options.infile << "'" << std::endl;
+ exit(EXIT_FAILURE);
+ }
+ infile.seekg(0, std::ios::end);
+ size_t insize = infile.tellg();
+ input.resize(insize + 1);
+ infile.seekg(0);
+ infile.read(&input[0], insize);
+ }
+
+ std::streambuf *buffer;
+ std::ofstream outfile;
+ if (options.outfile.size()) {
+ if (options.debug) std::cerr << "Opening '" << options.outfile << std::endl;
+ outfile.open(options.outfile, std::ofstream::out | std::ofstream::trunc);
+ if (!outfile.is_open()) {
+ std::cerr << "Failed opening '" << options.outfile << "'" << std::endl;
+ exit(EXIT_FAILURE);
+ }
+ buffer = outfile.rdbuf();
+ } else {
+ buffer = std::cout.rdbuf();
+ }
+ std::ostream out(buffer);
-int main(int argc, char **argv) {
- debug = getenv("S2WASM_DEBUG") ? getenv("S2WASM_DEBUG")[0] - '0' : 0;
-
- char *infile = argv[1];
-
- if (debug) std::cerr << "loading '" << infile << "'...\n";
- FILE *f = fopen(argv[1], "r");
- assert(f);
- fseek(f, 0, SEEK_END);
- int size = ftell(f);
- char *input = new char[size+1];
- rewind(f);
- int num = fread(input, 1, size, f);
- // On Windows, ftell() gives the byte position (\r\n counts as two bytes), but when
- // reading, fread() returns the number of characters read (\r\n is read as one char \n, and counted as one),
- // so return value of fread can be less than size reported by ftell, and that is normal.
- assert((num > 0 || size == 0) && num <= size);
- fclose(f);
- input[num] = 0;
-
- if (debug) std::cerr << "parsing and wasming...\n";
+ if (options.debug) std::cerr << "Parsing and wasming..." << std::endl;
AllocatingModule wasm;
- S2WasmBuilder s2wasm(wasm, input);
+ S2WasmBuilder s2wasm(wasm, input.c_str(), options.debug);
- if (debug) std::cerr << "emscripten gluing...\n";
+ if (options.debug) std::cerr << "Emscripten gluing..." << std::endl;
std::stringstream meta;
s2wasm.emscriptenGlue(meta);
- if (debug) std::cerr << "printing...\n";
- std::cout << wasm;
- std::cout << meta.str();
+ if (options.debug) std::cerr << "Printing..." << std::endl;
+ out << wasm << meta.str() << std::endl;
- if (debug) std::cerr << "done.\n";
+ if (options.debug) std::cerr << "Done." << std::endl;
}
diff --git a/src/s2wasm.h b/src/s2wasm.h
index fea5f04a8..5801f2620 100644
--- a/src/s2wasm.h
+++ b/src/s2wasm.h
@@ -24,8 +24,6 @@
namespace wasm {
-extern int debug; // wasm::debug is set in main(), typically from an env var
-
cashew::IString EMSCRIPTEN_ASM_CONST("emscripten_asm_const");
//
@@ -35,15 +33,17 @@ cashew::IString EMSCRIPTEN_ASM_CONST("emscripten_asm_const");
class S2WasmBuilder {
AllocatingModule& wasm;
MixedArena& allocator;
- char *s;
+ const char *s;
+ bool debug;
public:
- S2WasmBuilder(AllocatingModule& wasm, char *input) : wasm(wasm), allocator(wasm.allocator) {
- s = input;
- scan();
- s = input;
- process();
- fix();
+ S2WasmBuilder(AllocatingModule& wasm, const char* input, bool debug)
+ : wasm(wasm), allocator(wasm.allocator), debug(debug) {
+ s = input;
+ scan();
+ s = input;
+ process();
+ fix();
}
private:
@@ -217,7 +217,7 @@ private:
skipWhitespace();
if (*s != '$') return Name();
std::string str;
- char *before = s;
+ const char *before = s;
while (*s && *s != '=' && *s != '\n' && *s != ',') {
str += *s;
s++;
@@ -393,7 +393,7 @@ private:
};
auto getNumInputs = [&]() {
int ret = 1;
- char *t = s;
+ const char *t = s;
while (*t != '\n') {
if (*t == ',') ret++;
t++;
diff --git a/src/wasm.h b/src/wasm.h
index d51b1ea4d..8583f9492 100644
--- a/src/wasm.h
+++ b/src/wasm.h
@@ -47,6 +47,8 @@
#include <cassert>
#include <cstddef>
#include <cstdint>
+#include <cstring>
+#include <fstream>
#include <map>
#include <vector>
diff --git a/test/dot_s/alternate-lcomm.wast b/test/dot_s/alternate-lcomm.wast
index ff458b577..0d3c48333 100644
--- a/test/dot_s/alternate-lcomm.wast
+++ b/test/dot_s/alternate-lcomm.wast
@@ -1,4 +1,4 @@
(module
(memory 0 4294967295)
)
-;; METADATA: { "asmConsts": {} } \ No newline at end of file
+;; METADATA: { "asmConsts": {} }
diff --git a/test/dot_s/asm_const.wast b/test/dot_s/asm_const.wast
index d9d001f72..e800f8893 100644
--- a/test/dot_s/asm_const.wast
+++ b/test/dot_s/asm_const.wast
@@ -15,4 +15,4 @@
)
)
)
-;; METADATA: { "asmConsts": {"0": ["{ Module.print(\"hello, world!\"); }", ["vi"]]} } \ No newline at end of file
+;; METADATA: { "asmConsts": {"0": ["{ Module.print(\"hello, world!\"); }", ["vi"]]} }
diff --git a/test/dot_s/basics.wast b/test/dot_s/basics.wast
index 88adfaf58..7ac7ecc6e 100644
--- a/test/dot_s/basics.wast
+++ b/test/dot_s/basics.wast
@@ -92,4 +92,4 @@
)
)
)
-;; METADATA: { "asmConsts": {} } \ No newline at end of file
+;; METADATA: { "asmConsts": {} }
diff --git a/test/dot_s/call.wast b/test/dot_s/call.wast
index 913d2d68d..e7fa949cc 100644
--- a/test/dot_s/call.wast
+++ b/test/dot_s/call.wast
@@ -134,4 +134,4 @@
)
)
)
-;; METADATA: { "asmConsts": {} } \ No newline at end of file
+;; METADATA: { "asmConsts": {} }
diff --git a/test/dot_s/cfg-stackify.wast b/test/dot_s/cfg-stackify.wast
index 1c244c230..e170415cf 100644
--- a/test/dot_s/cfg-stackify.wast
+++ b/test/dot_s/cfg-stackify.wast
@@ -1150,4 +1150,4 @@
)
)
)
-;; METADATA: { "asmConsts": {} } \ No newline at end of file
+;; METADATA: { "asmConsts": {} }
diff --git a/test/dot_s/comparisons_f32.wast b/test/dot_s/comparisons_f32.wast
index bcb0ab5f4..83574f9b4 100644
--- a/test/dot_s/comparisons_f32.wast
+++ b/test/dot_s/comparisons_f32.wast
@@ -267,4 +267,4 @@
)
)
)
-;; METADATA: { "asmConsts": {} } \ No newline at end of file
+;; METADATA: { "asmConsts": {} }
diff --git a/test/dot_s/comparisons_f64.wast b/test/dot_s/comparisons_f64.wast
index 097eba008..ea85676da 100644
--- a/test/dot_s/comparisons_f64.wast
+++ b/test/dot_s/comparisons_f64.wast
@@ -267,4 +267,4 @@
)
)
)
-;; METADATA: { "asmConsts": {} } \ No newline at end of file
+;; METADATA: { "asmConsts": {} }
diff --git a/test/dot_s/comparisons_i32.wast b/test/dot_s/comparisons_i32.wast
index b648c1fef..c821cfad7 100644
--- a/test/dot_s/comparisons_i32.wast
+++ b/test/dot_s/comparisons_i32.wast
@@ -131,4 +131,4 @@
)
)
)
-;; METADATA: { "asmConsts": {} } \ No newline at end of file
+;; METADATA: { "asmConsts": {} }
diff --git a/test/dot_s/comparisons_i64.wast b/test/dot_s/comparisons_i64.wast
index 15374c6b4..16da05ef5 100644
--- a/test/dot_s/comparisons_i64.wast
+++ b/test/dot_s/comparisons_i64.wast
@@ -131,4 +131,4 @@
)
)
)
-;; METADATA: { "asmConsts": {} } \ No newline at end of file
+;; METADATA: { "asmConsts": {} }
diff --git a/test/dot_s/conv.wast b/test/dot_s/conv.wast
index 90a5cb8e8..d5933fd7e 100644
--- a/test/dot_s/conv.wast
+++ b/test/dot_s/conv.wast
@@ -316,4 +316,4 @@
)
)
)
-;; METADATA: { "asmConsts": {} } \ No newline at end of file
+;; METADATA: { "asmConsts": {} }
diff --git a/test/dot_s/copysign-casts.wast b/test/dot_s/copysign-casts.wast
index 1fbfe760a..31f6145b4 100644
--- a/test/dot_s/copysign-casts.wast
+++ b/test/dot_s/copysign-casts.wast
@@ -31,4 +31,4 @@
)
)
)
-;; METADATA: { "asmConsts": {} } \ No newline at end of file
+;; METADATA: { "asmConsts": {} }
diff --git a/test/dot_s/cpus.wast b/test/dot_s/cpus.wast
index 5c241966c..aed7f5870 100644
--- a/test/dot_s/cpus.wast
+++ b/test/dot_s/cpus.wast
@@ -11,4 +11,4 @@
)
)
)
-;; METADATA: { "asmConsts": {} } \ No newline at end of file
+;; METADATA: { "asmConsts": {} }
diff --git a/test/dot_s/data-offset-folding.wast b/test/dot_s/data-offset-folding.wast
index a5341932b..e0a60c70e 100644
--- a/test/dot_s/data-offset-folding.wast
+++ b/test/dot_s/data-offset-folding.wast
@@ -1,4 +1,4 @@
(module
(memory 0 4294967295 (segment 2 "\00\00\00\00") (segment 408 "X\00\00\00"))
)
-;; METADATA: { "asmConsts": {} } \ No newline at end of file
+;; METADATA: { "asmConsts": {} }
diff --git a/test/dot_s/dead-vreg.wast b/test/dot_s/dead-vreg.wast
index c2872b352..ced7413ab 100644
--- a/test/dot_s/dead-vreg.wast
+++ b/test/dot_s/dead-vreg.wast
@@ -111,4 +111,4 @@
)
)
)
-;; METADATA: { "asmConsts": {} } \ No newline at end of file
+;; METADATA: { "asmConsts": {} }
diff --git a/test/dot_s/exit.wast b/test/dot_s/exit.wast
index 289673187..c0af5a734 100644
--- a/test/dot_s/exit.wast
+++ b/test/dot_s/exit.wast
@@ -11,4 +11,4 @@
)
)
)
-;; METADATA: { "asmConsts": {} } \ No newline at end of file
+;; METADATA: { "asmConsts": {} }
diff --git a/test/dot_s/f32.wast b/test/dot_s/f32.wast
index d8a951dcf..e9e9a649e 100644
--- a/test/dot_s/f32.wast
+++ b/test/dot_s/f32.wast
@@ -203,4 +203,4 @@
)
)
)
-;; METADATA: { "asmConsts": {} } \ No newline at end of file
+;; METADATA: { "asmConsts": {} }
diff --git a/test/dot_s/f64.wast b/test/dot_s/f64.wast
index 4b330c242..6541b20b8 100644
--- a/test/dot_s/f64.wast
+++ b/test/dot_s/f64.wast
@@ -203,4 +203,4 @@
)
)
)
-;; METADATA: { "asmConsts": {} } \ No newline at end of file
+;; METADATA: { "asmConsts": {} }
diff --git a/test/dot_s/fast-isel.wast b/test/dot_s/fast-isel.wast
index 31a81ed66..0981fbe79 100644
--- a/test/dot_s/fast-isel.wast
+++ b/test/dot_s/fast-isel.wast
@@ -21,4 +21,4 @@
)
)
)
-;; METADATA: { "asmConsts": {} } \ No newline at end of file
+;; METADATA: { "asmConsts": {} }
diff --git a/test/dot_s/frem.wast b/test/dot_s/frem.wast
index 9b89de191..6592622d0 100644
--- a/test/dot_s/frem.wast
+++ b/test/dot_s/frem.wast
@@ -29,4 +29,4 @@
)
)
)
-;; METADATA: { "asmConsts": {} } \ No newline at end of file
+;; METADATA: { "asmConsts": {} }
diff --git a/test/dot_s/func.wast b/test/dot_s/func.wast
index 01ff04a8f..0090df642 100644
--- a/test/dot_s/func.wast
+++ b/test/dot_s/func.wast
@@ -72,4 +72,4 @@
)
)
)
-;; METADATA: { "asmConsts": {} } \ No newline at end of file
+;; METADATA: { "asmConsts": {} }
diff --git a/test/dot_s/global.wast b/test/dot_s/global.wast
index 0b688eb89..255b35617 100644
--- a/test/dot_s/global.wast
+++ b/test/dot_s/global.wast
@@ -29,4 +29,4 @@
)
)
)
-;; METADATA: { "asmConsts": {} } \ No newline at end of file
+;; METADATA: { "asmConsts": {} }
diff --git a/test/dot_s/globl.wast b/test/dot_s/globl.wast
index 4e87e4669..874d99a2b 100644
--- a/test/dot_s/globl.wast
+++ b/test/dot_s/globl.wast
@@ -9,4 +9,4 @@
)
)
)
-;; METADATA: { "asmConsts": {} } \ No newline at end of file
+;; METADATA: { "asmConsts": {} }
diff --git a/test/dot_s/i32.wast b/test/dot_s/i32.wast
index 59e22d00f..6025fedd7 100644
--- a/test/dot_s/i32.wast
+++ b/test/dot_s/i32.wast
@@ -230,4 +230,4 @@
)
)
)
-;; METADATA: { "asmConsts": {} } \ No newline at end of file
+;; METADATA: { "asmConsts": {} }
diff --git a/test/dot_s/i64.wast b/test/dot_s/i64.wast
index 14c86d830..ace3135f3 100644
--- a/test/dot_s/i64.wast
+++ b/test/dot_s/i64.wast
@@ -230,4 +230,4 @@
)
)
)
-;; METADATA: { "asmConsts": {} } \ No newline at end of file
+;; METADATA: { "asmConsts": {} }
diff --git a/test/dot_s/ident.wast b/test/dot_s/ident.wast
index ff458b577..0d3c48333 100644
--- a/test/dot_s/ident.wast
+++ b/test/dot_s/ident.wast
@@ -1,4 +1,4 @@
(module
(memory 0 4294967295)
)
-;; METADATA: { "asmConsts": {} } \ No newline at end of file
+;; METADATA: { "asmConsts": {} }
diff --git a/test/dot_s/immediates.wast b/test/dot_s/immediates.wast
index b77e3c13d..ce9b8520f 100644
--- a/test/dot_s/immediates.wast
+++ b/test/dot_s/immediates.wast
@@ -241,4 +241,4 @@
)
)
)
-;; METADATA: { "asmConsts": {} } \ No newline at end of file
+;; METADATA: { "asmConsts": {} }
diff --git a/test/dot_s/lcomm-in-text-segment.wast b/test/dot_s/lcomm-in-text-segment.wast
index ff458b577..0d3c48333 100644
--- a/test/dot_s/lcomm-in-text-segment.wast
+++ b/test/dot_s/lcomm-in-text-segment.wast
@@ -1,4 +1,4 @@
(module
(memory 0 4294967295)
)
-;; METADATA: { "asmConsts": {} } \ No newline at end of file
+;; METADATA: { "asmConsts": {} }
diff --git a/test/dot_s/legalize.wast b/test/dot_s/legalize.wast
index d71f387ac..2fcc9aeac 100644
--- a/test/dot_s/legalize.wast
+++ b/test/dot_s/legalize.wast
@@ -3972,4 +3972,4 @@
)
)
)
-;; METADATA: { "asmConsts": {} } \ No newline at end of file
+;; METADATA: { "asmConsts": {} }
diff --git a/test/dot_s/load-ext.wast b/test/dot_s/load-ext.wast
index 58b6845ff..e569cfd33 100644
--- a/test/dot_s/load-ext.wast
+++ b/test/dot_s/load-ext.wast
@@ -121,4 +121,4 @@
)
)
)
-;; METADATA: { "asmConsts": {} } \ No newline at end of file
+;; METADATA: { "asmConsts": {} }
diff --git a/test/dot_s/load-store-i1.wast b/test/dot_s/load-store-i1.wast
index 9a453362f..644fe798b 100644
--- a/test/dot_s/load-store-i1.wast
+++ b/test/dot_s/load-store-i1.wast
@@ -99,4 +99,4 @@
)
)
)
-;; METADATA: { "asmConsts": {} } \ No newline at end of file
+;; METADATA: { "asmConsts": {} }
diff --git a/test/dot_s/load.wast b/test/dot_s/load.wast
index 8177bb15c..4d2071d41 100644
--- a/test/dot_s/load.wast
+++ b/test/dot_s/load.wast
@@ -49,4 +49,4 @@
)
)
)
-;; METADATA: { "asmConsts": {} } \ No newline at end of file
+;; METADATA: { "asmConsts": {} }
diff --git a/test/dot_s/memops.wast b/test/dot_s/memops.wast
index f0a3c5390..4f23804b7 100644
--- a/test/dot_s/memops.wast
+++ b/test/dot_s/memops.wast
@@ -219,4 +219,4 @@
)
)
)
-;; METADATA: { "asmConsts": {"0": ["{ Module.print(\"hello, world! \" + HEAP32[8>>2]); }", ["vi"]]} } \ No newline at end of file
+;; METADATA: { "asmConsts": {"0": ["{ Module.print(\"hello, world! \" + HEAP32[8>>2]); }", ["vi"]]} }
diff --git a/test/dot_s/memory-addr32.wast b/test/dot_s/memory-addr32.wast
index 475da10d6..bd182046b 100644
--- a/test/dot_s/memory-addr32.wast
+++ b/test/dot_s/memory-addr32.wast
@@ -20,4 +20,4 @@
)
)
)
-;; METADATA: { "asmConsts": {} } \ No newline at end of file
+;; METADATA: { "asmConsts": {} }
diff --git a/test/dot_s/memory-addr64.wast b/test/dot_s/memory-addr64.wast
index f20ad55a7..03a27c8ed 100644
--- a/test/dot_s/memory-addr64.wast
+++ b/test/dot_s/memory-addr64.wast
@@ -20,4 +20,4 @@
)
)
)
-;; METADATA: { "asmConsts": {} } \ No newline at end of file
+;; METADATA: { "asmConsts": {} }
diff --git a/test/dot_s/minimal.wast b/test/dot_s/minimal.wast
index 3db3bf1de..ef408ea14 100644
--- a/test/dot_s/minimal.wast
+++ b/test/dot_s/minimal.wast
@@ -11,4 +11,4 @@
)
)
)
-;; METADATA: { "asmConsts": {} } \ No newline at end of file
+;; METADATA: { "asmConsts": {} }
diff --git a/test/dot_s/offset-folding.wast b/test/dot_s/offset-folding.wast
index f53b26d9a..237efdeeb 100644
--- a/test/dot_s/offset-folding.wast
+++ b/test/dot_s/offset-folding.wast
@@ -41,4 +41,4 @@
)
)
)
-;; METADATA: { "asmConsts": {} } \ No newline at end of file
+;; METADATA: { "asmConsts": {} }
diff --git a/test/dot_s/offset.wast b/test/dot_s/offset.wast
index 7fafb078e..d8a1a4a7a 100644
--- a/test/dot_s/offset.wast
+++ b/test/dot_s/offset.wast
@@ -201,4 +201,4 @@
)
)
)
-;; METADATA: { "asmConsts": {} } \ No newline at end of file
+;; METADATA: { "asmConsts": {} }
diff --git a/test/dot_s/permute.wast b/test/dot_s/permute.wast
index 9e984ca19..e535422c9 100644
--- a/test/dot_s/permute.wast
+++ b/test/dot_s/permute.wast
@@ -1,4 +1,4 @@
(module
(memory 0 4294967295 (segment 4 "hE?\8ds\0e7\db[g\8f\955it\c4k\0b\e2\ef\bcld\e0\fd\8c\9e\86&~\d8\94\89+\c8\a4\c2\f2\fb\12\1cej\d99\b7\b3W\c6w\af\ae\caM>\92ub\96\84\b6\b0N\ec;q\11\f7\bf\e31\e6\a7\90\fc\03\e4\aa\d7\cc- \15\83DH\80r\fa\01X\eb:_\00A\cd\e9o`n\ac(\ad\ba0\dcyS#\f4$\"\82\7f}\8e\f6\93L\'\bb\bdZ\ed4\18\f3\c0\cf\ff\a3\f8\07\05\9c\d3\0f\a0\06m%\\\f9^B<\e7\b1\17\98]\0c\dd\c5\f5p\e5\fezJ\ab,F\a5@\08R\85!\b8\1a\ce\d5\04\nI\a6\d1\9f\8a\c9\a9|\97\9aG\be8Y\8b\c1\1b\d4\ea\b9\19\14\9b\9163\d0\1d\d2\df=C\1f\0dc\e1\c7QUv\02\b5aK\b4\tV\c3x\e8\a1\1e\81\de/{\da\d6Pf\10T\f0)\88\16\ee\a8\9d\f1\cbO*\b2\99\132\87.\a2"))
)
-;; METADATA: { "asmConsts": {} } \ No newline at end of file
+;; METADATA: { "asmConsts": {} }
diff --git a/test/dot_s/phi.wast b/test/dot_s/phi.wast
index 72f094e85..e5690e69d 100644
--- a/test/dot_s/phi.wast
+++ b/test/dot_s/phi.wast
@@ -79,4 +79,4 @@
)
)
)
-;; METADATA: { "asmConsts": {} } \ No newline at end of file
+;; METADATA: { "asmConsts": {} }
diff --git a/test/dot_s/reg-stackify.wast b/test/dot_s/reg-stackify.wast
index c714fbb29..8306dfc8f 100644
--- a/test/dot_s/reg-stackify.wast
+++ b/test/dot_s/reg-stackify.wast
@@ -118,4 +118,4 @@
)
)
)
-;; METADATA: { "asmConsts": {} } \ No newline at end of file
+;; METADATA: { "asmConsts": {} }
diff --git a/test/dot_s/relocation.wast b/test/dot_s/relocation.wast
index 0b87203fb..2bddedb89 100644
--- a/test/dot_s/relocation.wast
+++ b/test/dot_s/relocation.wast
@@ -14,4 +14,4 @@
)
)
)
-;; METADATA: { "asmConsts": {} } \ No newline at end of file
+;; METADATA: { "asmConsts": {} }
diff --git a/test/dot_s/return-int32.wast b/test/dot_s/return-int32.wast
index 6bc521154..e9e4e8250 100644
--- a/test/dot_s/return-int32.wast
+++ b/test/dot_s/return-int32.wast
@@ -11,4 +11,4 @@
)
)
)
-;; METADATA: { "asmConsts": {} } \ No newline at end of file
+;; METADATA: { "asmConsts": {} }
diff --git a/test/dot_s/return-void.wast b/test/dot_s/return-void.wast
index 59f5aeb06..0f0c72a49 100644
--- a/test/dot_s/return-void.wast
+++ b/test/dot_s/return-void.wast
@@ -9,4 +9,4 @@
)
)
)
-;; METADATA: { "asmConsts": {} } \ No newline at end of file
+;; METADATA: { "asmConsts": {} }
diff --git a/test/dot_s/returned.wast b/test/dot_s/returned.wast
index 003b54e57..0d73621e3 100644
--- a/test/dot_s/returned.wast
+++ b/test/dot_s/returned.wast
@@ -32,4 +32,4 @@
)
)
)
-;; METADATA: { "asmConsts": {} } \ No newline at end of file
+;; METADATA: { "asmConsts": {} }
diff --git a/test/dot_s/select.wast b/test/dot_s/select.wast
index 54f788fcf..4877c7057 100644
--- a/test/dot_s/select.wast
+++ b/test/dot_s/select.wast
@@ -169,4 +169,4 @@
)
)
)
-;; METADATA: { "asmConsts": {} } \ No newline at end of file
+;; METADATA: { "asmConsts": {} }
diff --git a/test/dot_s/signext-zeroext.wast b/test/dot_s/signext-zeroext.wast
index 87140b506..f4c6ba47f 100644
--- a/test/dot_s/signext-zeroext.wast
+++ b/test/dot_s/signext-zeroext.wast
@@ -77,4 +77,4 @@
)
)
)
-;; METADATA: { "asmConsts": {} } \ No newline at end of file
+;; METADATA: { "asmConsts": {} }
diff --git a/test/dot_s/store-results.wast b/test/dot_s/store-results.wast
index 3359b2433..5f801cd3b 100644
--- a/test/dot_s/store-results.wast
+++ b/test/dot_s/store-results.wast
@@ -88,4 +88,4 @@
)
)
)
-;; METADATA: { "asmConsts": {} } \ No newline at end of file
+;; METADATA: { "asmConsts": {} }
diff --git a/test/dot_s/store-trunc.wast b/test/dot_s/store-trunc.wast
index 6700d0b73..07807cd19 100644
--- a/test/dot_s/store-trunc.wast
+++ b/test/dot_s/store-trunc.wast
@@ -61,4 +61,4 @@
)
)
)
-;; METADATA: { "asmConsts": {} } \ No newline at end of file
+;; METADATA: { "asmConsts": {} }
diff --git a/test/dot_s/store.wast b/test/dot_s/store.wast
index 23cb3541f..256b86fd1 100644
--- a/test/dot_s/store.wast
+++ b/test/dot_s/store.wast
@@ -49,4 +49,4 @@
)
)
)
-;; METADATA: { "asmConsts": {} } \ No newline at end of file
+;; METADATA: { "asmConsts": {} }
diff --git a/test/dot_s/switch.wast b/test/dot_s/switch.wast
index 29c46e0c4..ba55e42f3 100644
--- a/test/dot_s/switch.wast
+++ b/test/dot_s/switch.wast
@@ -97,4 +97,4 @@
)
)
)
-;; METADATA: { "asmConsts": {} } \ No newline at end of file
+;; METADATA: { "asmConsts": {} }
diff --git a/test/dot_s/symbolic-offset.wast b/test/dot_s/symbolic-offset.wast
index d28ceec85..5b4904529 100644
--- a/test/dot_s/symbolic-offset.wast
+++ b/test/dot_s/symbolic-offset.wast
@@ -13,4 +13,4 @@
)
)
)
-;; METADATA: { "asmConsts": {} } \ No newline at end of file
+;; METADATA: { "asmConsts": {} }
diff --git a/test/dot_s/unreachable.wast b/test/dot_s/unreachable.wast
index 1a51e8e09..ec31d0395 100644
--- a/test/dot_s/unreachable.wast
+++ b/test/dot_s/unreachable.wast
@@ -27,4 +27,4 @@
)
)
)
-;; METADATA: { "asmConsts": {} } \ No newline at end of file
+;; METADATA: { "asmConsts": {} }
diff --git a/test/dot_s/unused-argument.wast b/test/dot_s/unused-argument.wast
index 1f5418909..3d18cee7d 100644
--- a/test/dot_s/unused-argument.wast
+++ b/test/dot_s/unused-argument.wast
@@ -31,4 +31,4 @@
)
)
)
-;; METADATA: { "asmConsts": {} } \ No newline at end of file
+;; METADATA: { "asmConsts": {} }
diff --git a/test/dot_s/varargs.wast b/test/dot_s/varargs.wast
index 27e95ece7..f502d0d91 100644
--- a/test/dot_s/varargs.wast
+++ b/test/dot_s/varargs.wast
@@ -157,4 +157,4 @@
)
)
)
-;; METADATA: { "asmConsts": {} } \ No newline at end of file
+;; METADATA: { "asmConsts": {} }
diff --git a/test/dot_s/vtable.wast b/test/dot_s/vtable.wast
index 9337d790a..0ad2840c6 100644
--- a/test/dot_s/vtable.wast
+++ b/test/dot_s/vtable.wast
@@ -104,4 +104,4 @@
)
)
)
-;; METADATA: { "asmConsts": {} } \ No newline at end of file
+;; METADATA: { "asmConsts": {} }