amd64: fixes huge memory offset consts handling (#733)

Signed-off-by: Takeshi Yoneda <takeshi@tetrate.io>
This commit is contained in:
Takeshi Yoneda
2022-08-04 13:17:42 +09:00
committed by GitHub
parent cb6ae4e660
commit 9be4f2979f
4 changed files with 71 additions and 4 deletions

View File

@@ -298,3 +298,35 @@ func Test730(t *testing.T) {
}
})
}
func Test733(t *testing.T) {
run(t, func(t *testing.T, r wazero.Runtime) {
mod, err := r.InstantiateModuleFromBinary(ctx, getWasmBinary(t, 733))
require.NoError(t, err)
name := "out of bounds"
t.Run(name, func(t *testing.T) {
f := mod.ExportedFunction(name)
require.NotNil(t, f)
_, err = f.Call(ctx)
require.Error(t, err)
require.Contains(t, err.Error(), "out of bounds memory")
})
// Note: this case uses large memory space, so can be slow like 1 to 2 seconds.
name = "store higher offset"
t.Run(name, func(t *testing.T) {
f := mod.ExportedFunction(name)
require.NotNil(t, f)
_, err = f.Call(ctx)
require.NoError(t, err)
mem := mod.Memory()
require.NotNil(t, mem)
v, ok := mem.ReadUint64Le(ctx, 0x80000100)
require.True(t, ok)
require.Equal(t, uint64(0xffffffffffffffff), v)
})
})
}