summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDerek Schuff <dschuff@chromium.org>2016-02-08 16:49:50 -0800
committerDerek Schuff <dschuff@chromium.org>2016-02-08 16:49:50 -0800
commitd5cc09449032972b07aaf4625349991fe61b62c1 (patch)
treeb6fa44c6c2db7d3d28c75547de6fd615639e707d
parentd3bbf5a4ddd70940d22eb3f1690c2637d725e43e (diff)
downloadbinaryen-d5cc09449032972b07aaf4625349991fe61b62c1.tar.gz
binaryen-d5cc09449032972b07aaf4625349991fe61b62c1.tar.bz2
binaryen-d5cc09449032972b07aaf4625349991fe61b62c1.zip
Align the stack allocation to 16 bytes to satisfy the aligment ABI
-rw-r--r--src/s2wasm.h2
-rw-r--r--test/s2wasm_known_binaryen_shell_test_failures.txt10
2 files changed, 2 insertions, 10 deletions
diff --git a/src/s2wasm.h b/src/s2wasm.h
index 649b32196..ac62046d8 100644
--- a/src/s2wasm.h
+++ b/src/s2wasm.h
@@ -399,6 +399,8 @@ class S2WasmBuilder {
void placeStack(size_t stackAllocation) {
// Allocate space for a user stack. It starts zeroed-out so needs no segment
+ // Round to a 16-byte aligned address.
+ nextStatic = (nextStatic + 15) & static_cast<size_t>(-16);
staticAddresses[".stack"] = nextStatic;
nextStatic += stackAllocation;
wasm.memory.initial = nextStatic;
diff --git a/test/s2wasm_known_binaryen_shell_test_failures.txt b/test/s2wasm_known_binaryen_shell_test_failures.txt
index 4a2117252..b16ed8510 100644
--- a/test/s2wasm_known_binaryen_shell_test_failures.txt
+++ b/test/s2wasm_known_binaryen_shell_test_failures.txt
@@ -43,23 +43,16 @@ simd-5.c.s.wast
980608-1.c.s.wast
990513-1.c.s.wast
991201-1.c.s.wast
-alloca-1.c.s.wast
bitfld-5.c.s.wast
memcpy-1.c.s.wast
multi-ix.c.s.wast
-pr15296.c.s.wast
-pr27073.c.s.wast
-pr27285.c.s.wast
pr29006.c.s.wast
-pr36339.c.s.wast
pr37573.c.s.wast
-pr38969.c.s.wast
pr42614.c.s.wast
pr43236.c.s.wast
pr44852.c.s.wast
pr44942.c.s.wast
pr48571-1.c.s.wast
-pr49279.c.s.wast
pr51466.c.s.wast
pr51581-1.c.s.wast
pr51581-2.c.s.wast
@@ -74,8 +67,6 @@ pr56982.c.s.wast
pr57124.c.s.wast
pr57130.c.s.wast
pr60960.c.s.wast
-pta-field-1.c.s.wast
-pta-field-2.c.s.wast
stdarg-1.c.s.wast
stdarg-2.c.s.wast
stdarg-4.c.s.wast
@@ -108,7 +99,6 @@ va-arg-9.c.s.wast
20030218-1.c.s.wast
complex-7.c.s.wast
pr30778.c.s.wast
-pr51323.c.s.wast
# abort called: the tests are self-validating and call abort when they detect a
# failure. This may not be binaryen's fault (the toolchain may be emitting bad