aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--prog/validation.go18
1 files changed, 9 insertions, 9 deletions
diff --git a/prog/validation.go b/prog/validation.go
index b38afc874..148640650 100644
--- a/prog/validation.go
+++ b/prog/validation.go
@@ -221,15 +221,6 @@ func (arg *UnionArg) validate(ctx *validCtx) error {
}
func (arg *PointerArg) validate(ctx *validCtx) error {
- maxMem := ctx.target.NumPages * ctx.target.PageSize
- size := arg.VmaSize
- if size == 0 && arg.Res != nil {
- size = arg.Res.Size()
- }
- if arg.Address >= maxMem || arg.Address+size > maxMem {
- return fmt.Errorf("ptr %v has bad address %v/%v/%v",
- arg.Type().Name(), arg.Address, arg.VmaSize, size)
- }
switch typ := arg.Type().(type) {
case *VmaType:
if arg.Res != nil {
@@ -256,5 +247,14 @@ func (arg *PointerArg) validate(ctx *validCtx) error {
default:
return fmt.Errorf("ptr arg %v has bad type %v", arg, typ.Name())
}
+ maxMem := ctx.target.NumPages * ctx.target.PageSize
+ size := arg.VmaSize
+ if size == 0 && arg.Res != nil {
+ size = arg.Res.Size()
+ }
+ if arg.Address >= maxMem || arg.Address+size > maxMem {
+ return fmt.Errorf("ptr %v has bad address %v/%v/%v",
+ arg.Type().Name(), arg.Address, arg.VmaSize, size)
+ }
return nil
}