add wasm-abi field in TargetSpec && set generic for WASI by default (#1421)

Signed-off-by: mathetake <takeshi@tetrate.io>
Этот коммит содержится в:
Takeshi Yoneda 2020-10-04 02:52:01 +09:00 коммит произвёл GitHub
родитель 9ad2315079
коммит 9a015f4f64
Не найден ключ, соответствующий данной подписи
Идентификатор ключа GPG: 4AEE18F83AFDEB23
7 изменённых файлов: 17 добавлений и 9 удалений

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

@ -79,7 +79,7 @@ func Build(pkgName, outpath string, config *compileopts.Config, action func(Buil
// keep functions interoperable, pass int64 types as pointers to
// stack-allocated values.
// Use -wasm-abi=generic to disable this behaviour.
if config.Options.WasmAbi == "js" && strings.HasPrefix(config.Triple(), "wasm") {
if config.WasmAbi() == "js" {
err := transform.ExternalInt64AsPtr(mod)
if err != nil {
return err

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

@ -329,6 +329,15 @@ func (c *Config) RelocationModel() string {
return "static"
}
// WasmAbi returns the WASM ABI which is specified in the target JSON file, and
// the value is overridden by `-wasm-abi` flag if it is provided
func (c *Config) WasmAbi() string {
if c.Options.WasmAbi != "" {
return c.Options.WasmAbi
}
return c.Target.WasmAbi
}
type TestConfig struct {
CompileTestBinary bool
// TODO: Filter the test functions to run, include verbose flag, etc

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

@ -55,6 +55,7 @@ type TargetSpec struct {
JLinkDevice string `json:"jlink-device"`
CodeModel string `json:"code-model"`
RelocationModel string `json:"relocation-model"`
WasmAbi string `json:"wasm-abi"`
}
// overrideProperties overrides all properties that are set in child into itself using reflection.

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

@ -828,7 +828,7 @@ func main() {
programmer := flag.String("programmer", "", "which hardware programmer to use")
cFlags := flag.String("cflags", "", "additional cflags for compiler")
ldFlags := flag.String("ldflags", "", "additional ldflags for linker")
wasmAbi := flag.String("wasm-abi", "js", "WebAssembly ABI conventions: js (no i64 params) or generic")
wasmAbi := flag.String("wasm-abi", "", "WebAssembly ABI conventions: js (no i64 params) or generic")
heapSize := flag.String("heap-size", "1M", "default heap size in bytes (only supported by WebAssembly)")
var flagJSON, flagDeps *bool

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

@ -165,11 +165,7 @@ func runTest(path, target string, t *testing.T) {
VerifyIR: true,
Debug: true,
PrintSizes: "",
WasmAbi: "js",
}
if target == "wasi" {
config.WasmAbi = "generic"
WasmAbi: "",
}
binary := filepath.Join(tmpdir, "test")

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

@ -18,5 +18,6 @@
"--no-demangle",
"{root}/lib/wasi-libc/sysroot/lib/wasm32-wasi/libc.a"
],
"emulator": ["wasmtime"]
"emulator": ["wasmtime"],
"wasm-abi": "generic"
}

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

@ -17,5 +17,6 @@
"--no-demangle",
"{root}/lib/wasi-libc/sysroot/lib/wasm32-wasi/libc.a"
],
"emulator": ["node", "targets/wasm_exec.js"]
"emulator": ["node", "targets/wasm_exec.js"],
"wasm-abi": "js"
}