diff options
author | Derek Schuff <dschuff@chromium.org> | 2017-01-24 13:44:04 -0800 |
---|---|---|
committer | GitHub <noreply@github.com> | 2017-01-24 13:44:04 -0800 |
commit | 21eb2c7cba6af6e01219f1f3b06e82dfcf2788e8 (patch) | |
tree | f16ad91e1b429ab32fc3882e9b730b770d7dfb83 | |
parent | 009f172a595d5554e7e85f6acacef34e9d4e8010 (diff) | |
download | binaryen-21eb2c7cba6af6e01219f1f3b06e82dfcf2788e8.tar.gz binaryen-21eb2c7cba6af6e01219f1f3b06e82dfcf2788e8.tar.bz2 binaryen-21eb2c7cba6af6e01219f1f3b06e82dfcf2788e8.zip |
Export memalign along with malloc and friends (#888)
Emscripten's mmap2 syscall started using memalign instead of malloc with kripken/emscripten#4874, so we need to export that as well.
-rw-r--r-- | src/wasm-linker.cpp | 14 | ||||
-rw-r--r-- | test/dot_s/export_malloc_free.s | 20 | ||||
-rw-r--r-- | test/dot_s/export_malloc_free.wast | 7 |
3 files changed, 31 insertions, 10 deletions
diff --git a/src/wasm-linker.cpp b/src/wasm-linker.cpp index a319af889..757fc88ca 100644 --- a/src/wasm-linker.cpp +++ b/src/wasm-linker.cpp @@ -254,20 +254,16 @@ void Linker::layout() { } } - // Export malloc, realloc, and free whenever availble. JavsScript version of + // Export malloc/realloc/free/memalign whenever availble. JavsScript version of // malloc has some issues and it cannot be called once _sbrk() is called, and // JS glue code does not have realloc(). TODO This should get the list of // exported functions from emcc.py - it has EXPORTED_FUNCTION metadata to keep // track of this. Get the list of exported functions using a command-line // argument from emcc.py and export all of them. - if (out.symbolInfo.implementedFunctions.count("malloc")) { - exportFunction("malloc", true); - } - if (out.symbolInfo.implementedFunctions.count("free")) { - exportFunction("free", true); - } - if (out.symbolInfo.implementedFunctions.count("realloc")) { - exportFunction("realloc", true); + for (auto function : {"malloc", "free", "realloc", "memalign"}) { + if (out.symbolInfo.implementedFunctions.count(function)) { + exportFunction(function, true); + } } // finalize function table diff --git a/test/dot_s/export_malloc_free.s b/test/dot_s/export_malloc_free.s index 2ace10db9..084ab0383 100644 --- a/test/dot_s/export_malloc_free.s +++ b/test/dot_s/export_malloc_free.s @@ -36,4 +36,22 @@ realloc: i32.const $push0=, 0 .endfunc .Lfunc_end22: - .size realloc, .Lfunc_end22-free + .size realloc, .Lfunc_end22-realloc + + .type memalign,@function +memalign: + .param i32, i32 + .result i32 + i32.const $push0=, 0 + .endfunc +.Lfunc_end2: + .size memalign, .Lfunc_end2-memalign + + .type not_a_malloc,@function +not_a_malloc: + .param i32, i32 + .result i32 + i32.const $push0=, 0 + .endfunc +.Lfunc_end2: + .size not_a_malloc, .Lfunc_end2-not_a_malloc diff --git a/test/dot_s/export_malloc_free.wast b/test/dot_s/export_malloc_free.wast index 96bcdf4ac..89bc15b1c 100644 --- a/test/dot_s/export_malloc_free.wast +++ b/test/dot_s/export_malloc_free.wast @@ -5,6 +5,7 @@ (export "malloc" (func $malloc)) (export "free" (func $free)) (export "realloc" (func $realloc)) + (export "memalign" (func $memalign)) (func $main (result i32) (i32.const 0) ) @@ -16,5 +17,11 @@ (func $realloc (param $0 i32) (param $1 i32) (result i32) (i32.const 0) ) + (func $memalign (param $0 i32) (param $1 i32) (result i32) + (i32.const 0) + ) + (func $not_a_malloc (param $0 i32) (param $1 i32) (result i32) + (i32.const 0) + ) ) ;; METADATA: { "asmConsts": {},"staticBump": 12, "initializers": [] } |