summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/s2wasm.h8
-rw-r--r--test/dot_s/global.wast2
-rw-r--r--test/dot_s/offset-folding.wast2
-rw-r--r--test/dot_s/store-results.wast2
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)