diff options
-rw-r--r-- | src/s2wasm.h | 8 | ||||
-rw-r--r-- | test/dot_s/global.wast | 2 | ||||
-rw-r--r-- | test/dot_s/offset-folding.wast | 2 | ||||
-rw-r--r-- | test/dot_s/store-results.wast | 2 |
4 files changed, 9 insertions, 5 deletions
diff --git a/src/s2wasm.h b/src/s2wasm.h index a5e75c9cf..3a8dd7ddb 100644 --- a/src/s2wasm.h +++ b/src/s2wasm.h @@ -832,12 +832,14 @@ private: mustMatch(name.str); mustMatch(":"); auto raw = new std::vector<char>(); // leaked intentionally, no new allocation in Memory + bool zero = false; if (match(".asciz")) { *raw = getQuoted(); raw->push_back(0); } else if (match(".ascii")) { *raw = getQuoted(); } else if (match(".zero")) { + zero = true; int32_t size = getInt(); for (size_t i = 0; i < size; i++) { raw->push_back(0); @@ -871,8 +873,10 @@ private: while (nextStatic % align) nextStatic++; // assign the address, add to memory staticAddresses[name] = nextStatic; - addressSegments[nextStatic] = wasm.memory.segments.size(); - wasm.memory.segments.emplace_back(nextStatic, (const char*)&(*raw)[0], size); + if (!zero) { + addressSegments[nextStatic] = wasm.memory.segments.size(); + wasm.memory.segments.emplace_back(nextStatic, (const char*)&(*raw)[0], size); + } nextStatic += size; } diff --git a/test/dot_s/global.wast b/test/dot_s/global.wast index 19122c5ed..6f56eba02 100644 --- a/test/dot_s/global.wast +++ b/test/dot_s/global.wast @@ -1,5 +1,5 @@ (module - (memory 0 4294967295 (segment 2 "9\05\00\00") (segment 6 "\00\00\00\00") (segment 10 "\01\00\00\00") (segment 14 "*\00\00\00") (segment 18 "\ff\ff\ff\ff") (segment 24 "\00\00\00\00\00\00\00\00") (segment 33 "\00\00\00\00\00\00\00\00") (segment 42 "\ff\ff\ff\ff\ff\ff\ff\ff") (segment 50 "\00\00\00\00") (segment 54 "\00\00\00\80") (segment 58 "\00\00\00@") (segment 63 "\00\00\00\00\00\00\00\00") (segment 72 "\00\00\00\00\00\00\00\00") (segment 81 "\00\00\00\00\00\00\00\00")) + (memory 0 4294967295 (segment 2 "9\05\00\00") (segment 10 "\01\00\00\00") (segment 14 "*\00\00\00") (segment 18 "\ff\ff\ff\ff") (segment 33 "\00\00\00\00\00\00\00\00") (segment 42 "\ff\ff\ff\ff\ff\ff\ff\ff") (segment 54 "\00\00\00\80") (segment 58 "\00\00\00@") (segment 72 "\00\00\00\00\00\00\00\00") (segment 81 "\00\00\00\00\00\00\00\00")) (import $memcpy "env" "memcpy") (export "foo" $foo) (export "call_memcpy" $call_memcpy) diff --git a/test/dot_s/offset-folding.wast b/test/dot_s/offset-folding.wast index 8cd7dd618..d643b058c 100644 --- a/test/dot_s/offset-folding.wast +++ b/test/dot_s/offset-folding.wast @@ -1,5 +1,5 @@ (module - (memory 0 4294967295 (segment 4 "\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00")) + (memory 0 4294967295) (export "test0" $test0) (export "test1" $test1) (export "test2" $test2) diff --git a/test/dot_s/store-results.wast b/test/dot_s/store-results.wast index c0d6ce905..53409afd1 100644 --- a/test/dot_s/store-results.wast +++ b/test/dot_s/store-results.wast @@ -1,5 +1,5 @@ (module - (memory 0 4294967295 (segment 2 "\00\00\00\00\00\00\00\00\00\00\00\00")) + (memory 0 4294967295) (export "single_block" $single_block) (export "foo" $foo) (export "bar" $bar) |