diff --git a/compiler/compiler.go b/compiler/compiler.go index abd7be64..e9d06349 100644 --- a/compiler/compiler.go +++ b/compiler/compiler.go @@ -23,7 +23,7 @@ import ( // Version of the compiler pacakge. Must be incremented each time the compiler // package changes in a way that affects the generated LLVM module. // This version is independent of the TinyGo version number. -const Version = 1 +const Version = 2 // last change: adding wasm-export-name attribute func init() { llvm.InitializeAllTargets() @@ -781,6 +781,12 @@ func (b *builder) createFunction() { b.llvmFn.SetVisibility(llvm.HiddenVisibility) b.llvmFn.SetUnnamedAddr(true) } + if b.info.exported && strings.HasPrefix(b.Triple, "wasm") { + // Set the exported name. This is necessary for WebAssembly because + // otherwise the function is not exported. + functionAttr := b.ctx.CreateStringAttribute("wasm-export-name", b.info.linkName) + b.llvmFn.AddFunctionAttr(functionAttr) + } // Some functions have a pragma controlling the inlining level. switch b.info.inline { diff --git a/targets/wasm.json b/targets/wasm.json index 5b0aad04..ea78e58d 100644 --- a/targets/wasm.json +++ b/targets/wasm.json @@ -14,7 +14,6 @@ "ldflags": [ "--allow-undefined", "--stack-first", - "--export-all", "--no-demangle" ], "emulator": ["node", "targets/wasm_exec.js"],