aboutsummaryrefslogtreecommitdiffhomepage
diff options
context:
space:
mode:
authorCharlie Haley <[email protected]>2023-07-26 18:22:49 +0100
committerAyke <[email protected]>2023-07-31 14:52:26 +0200
commit5b581d83b379d77472405ffc1296939b7af409d4 (patch)
tree60bb56323f8fd365f683e36b271f65ae4b4f36d3
parentd845f1e1b2f04b1c1e778bb7caac005967c1ed7c (diff)
downloadtinygo-5b581d83b379d77472405ffc1296939b7af409d4.tar.gz
tinygo-5b581d83b379d77472405ffc1296939b7af409d4.zip
compiler: add compiler-rt and wasm symbols to table
-rw-r--r--builder/ar.go20
-rw-r--r--targets/wasi.json1
2 files changed, 20 insertions, 1 deletions
diff --git a/builder/ar.go b/builder/ar.go
index c3aad171e..3f1c8c213 100644
--- a/builder/ar.go
+++ b/builder/ar.go
@@ -12,6 +12,7 @@ import (
"path/filepath"
"time"
+ wasm "github.com/aykevl/go-wasm"
"github.com/blakesmith/ar"
)
@@ -74,8 +75,25 @@ func makeArchive(arfile *os.File, objs []string) error {
fileIndex int
}{symbol.Name, i})
}
+ } else if dbg, err := wasm.Parse(objfile); err == nil {
+ for _, s := range dbg.Sections {
+ switch section := s.(type) {
+ case *wasm.SectionImport:
+ for _, ln := range section.Entries {
+
+ if ln.Kind != wasm.ExtKindFunction {
+ // Not a function
+ continue
+ }
+ symbolTable = append(symbolTable, struct {
+ name string
+ fileIndex int
+ }{ln.Field, i})
+ }
+ }
+ }
} else {
- return fmt.Errorf("failed to open file %s as ELF or PE/COFF: %w", objpath, err)
+ return fmt.Errorf("failed to open file %s as WASM, ELF or PE/COFF: %w", objpath, err)
}
// Close file, to avoid issues with too many open files (especially on
diff --git a/targets/wasi.json b/targets/wasi.json
index f55c7c1fd..83f808e8e 100644
--- a/targets/wasi.json
+++ b/targets/wasi.json
@@ -7,6 +7,7 @@
"goarch": "arm",
"linker": "wasm-ld",
"libc": "wasi-libc",
+ "rtlib": "compiler-rt",
"scheduler": "asyncify",
"default-stack-size": 16384,
"cflags": [