summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDan Gohman <sunfish@mozilla.com>2016-03-09 20:53:53 -0800
committerDan Gohman <sunfish@mozilla.com>2016-03-09 21:12:20 -0800
commit68ee6d97130dfb7da474b85fd99382a0569e602f (patch)
treecabd5f3f3132771bc70d1ca0632917e57e8f0ebd
parent54eec1104b34be2c8342942870fb62390606dedf (diff)
downloadbinaryen-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.h17
-rw-r--r--test/dot_s/memops.wast1
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