amd64: fixes huge memory offset consts handling (#733)
Signed-off-by: Takeshi Yoneda <takeshi@tetrate.io>
This commit is contained in:
@@ -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)
|
||||
})
|
||||
})
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user