compiler: add compiler-rt and wasm symbols to table

Этот коммит содержится в:
Charlie Haley 2023-07-26 18:22:49 +01:00 коммит произвёл Ayke
родитель d845f1e1b2
коммит 5b581d83b3
2 изменённых файлов: 20 добавлений и 1 удалений

Просмотреть файл

@ -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

Просмотреть файл

@ -7,6 +7,7 @@
"goarch": "arm",
"linker": "wasm-ld",
"libc": "wasi-libc",
"rtlib": "compiler-rt",
"scheduler": "asyncify",
"default-stack-size": 16384,
"cflags": [