diff options
author | Dan Gohman <sunfish@mozilla.com> | 2016-03-09 20:53:53 -0800 |
---|---|---|
committer | Dan Gohman <sunfish@mozilla.com> | 2016-03-09 21:12:20 -0800 |
commit | 68ee6d97130dfb7da474b85fd99382a0569e602f (patch) | |
tree | cabd5f3f3132771bc70d1ca0632917e57e8f0ebd | |
parent | 54eec1104b34be2c8342942870fb62390606dedf (diff) | |
download | binaryen-68ee6d97130dfb7da474b85fd99382a0569e602f.tar.gz binaryen-68ee6d97130dfb7da474b85fd99382a0569e602f.tar.bz2 binaryen-68ee6d97130dfb7da474b85fd99382a0569e602f.zip |
s2wasm: don't export functions unless they are marked with .globl.
-rw-r--r-- | src/s2wasm.h | 17 | ||||
-rw-r--r-- | test/dot_s/memops.wast | 1 |
2 files changed, 12 insertions, 6 deletions
diff --git a/src/s2wasm.h b/src/s2wasm.h index 24f39ae8d..2744bafc9 100644 --- a/src/s2wasm.h +++ b/src/s2wasm.h @@ -44,6 +44,7 @@ class S2WasmBuilder { bool debug; bool ignoreUnknownSymbols; Name startFunction; + std::vector<Name> globls; public: S2WasmBuilder(AllocatingModule& wasm, const char* input, bool debug, @@ -465,7 +466,8 @@ class S2WasmBuilder { } void parseGlobl() { - (void)getStr(); + auto str = getStr(); + globls.push_back(str); skipWhitespace(); } @@ -1029,10 +1031,6 @@ class S2WasmBuilder { } func->body->dyn_cast<Block>()->finalize(); wasm.addFunction(func); - // XXX for now, export all functions - auto exp = allocator.alloc<Export>(); - exp->name = exp->value = func->name; - wasm.addExport(exp); } void parseType() { @@ -1190,6 +1188,15 @@ class S2WasmBuilder { wasm.memory.initial = ((initialMemory + Memory::kPageSize - 1) & Memory::kPageMask) / Memory::kPageSize; + // XXX For now, export all functions marked .globl. + for (Name name : globls) { + if (wasm.functionsMap.count(name)) { + auto exp = allocator.alloc<Export>(); + exp->name = exp->value = name; + wasm.addExport(exp); + } + } + auto ensureFunctionIndex = [&](Name name) { if (functionIndexes.count(name) == 0) { functionIndexes[name] = wasm.table.names.size(); diff --git a/test/dot_s/memops.wast b/test/dot_s/memops.wast index a1519a3e9..a896ef517 100644 --- a/test/dot_s/memops.wast +++ b/test/dot_s/memops.wast @@ -4,7 +4,6 @@ ) (type $FUNCSIG$vi (func (param i32))) (import $emscripten_asm_const_vi "env" "emscripten_asm_const_vi" (param i32)) - (export "_Z6reporti" $_Z6reporti) (export "main" $main) (func $_Z6reporti (param $$0 i32) (i32.store |