aboutsummaryrefslogtreecommitdiffstats
path: root/sys
diff options
context:
space:
mode:
authorAleksandr Nogikh <nogikh@google.com>2021-08-31 17:21:33 +0000
committerAleksandr Nogikh <wp32pw@gmail.com>2021-09-22 15:40:02 +0200
commit9e4e4272d3f686e750a13d2111b0fb7041db2f4a (patch)
tree288c3421a8da52fcb7e460247f9678fece2ed1c9 /sys
parent169724fe58e8d7d0b4be6f59ca7c1e0f300399e1 (diff)
all: introduce a prog.Call constructor
Create a constructor for the prog.Call type. It allows to reduce the duplication of code now and during further changes.
Diffstat (limited to 'sys')
-rw-r--r--sys/linux/init.go12
-rw-r--r--sys/targets/common.go28
-rw-r--r--sys/windows/init.go16
3 files changed, 20 insertions, 36 deletions
diff --git a/sys/linux/init.go b/sys/linux/init.go
index 1f9dcc2a7..24d978381 100644
--- a/sys/linux/init.go
+++ b/sys/linux/init.go
@@ -340,14 +340,10 @@ func (arch *arch) generateTimespec(g *prog.Gen, typ0 prog.Type, dir prog.Dir, ol
})
var tpaddr prog.Arg
tpaddr, calls = g.Alloc(ptrArgType, prog.DirIn, tp)
- gettime := &prog.Call{
- Meta: meta,
- Args: []prog.Arg{
- prog.MakeConstArg(meta.Args[0].Type, prog.DirIn, arch.CLOCK_REALTIME),
- tpaddr,
- },
- Ret: prog.MakeReturnArg(meta.Ret),
- }
+ gettime := prog.MakeCall(meta, []prog.Arg{
+ prog.MakeConstArg(meta.Args[0].Type, prog.DirIn, arch.CLOCK_REALTIME),
+ tpaddr,
+ })
calls = append(calls, gettime)
sec := prog.MakeResultArg(typ.Fields[0].Type, dir, tp.Inner[0].(*prog.ResultArg), 0)
nsec := prog.MakeResultArg(typ.Fields[1].Type, dir, tp.Inner[1].(*prog.ResultArg), 0)
diff --git a/sys/targets/common.go b/sys/targets/common.go
index 193e9dca6..f55493256 100644
--- a/sys/targets/common.go
+++ b/sys/targets/common.go
@@ -21,25 +21,21 @@ func MakePosixMmap(target *prog.Target, exec, contain bool) func() []*prog.Call
size := target.NumPages * target.PageSize
const invalidFD = ^uint64(0)
makeMmap := func(addr, size, prot uint64) *prog.Call {
- args := []prog.Arg{
+ call := prog.MakeCall(meta, []prog.Arg{
prog.MakeVmaPointerArg(meta.Args[0].Type, prog.DirIn, addr, size),
prog.MakeConstArg(meta.Args[1].Type, prog.DirIn, size),
prog.MakeConstArg(meta.Args[2].Type, prog.DirIn, prot),
prog.MakeConstArg(meta.Args[3].Type, prog.DirIn, flags),
prog.MakeResultArg(meta.Args[4].Type, prog.DirIn, nil, invalidFD),
- }
- i := len(args)
+ })
+ i := len(call.Args)
// Some targets have a padding argument between fd and offset.
if len(meta.Args) > 6 {
- args = append(args, prog.MakeConstArg(meta.Args[i].Type, prog.DirIn, 0))
+ call.Args = append(call.Args, prog.MakeConstArg(meta.Args[i].Type, prog.DirIn, 0))
i++
}
- args = append(args, prog.MakeConstArg(meta.Args[i].Type, prog.DirIn, 0))
- return &prog.Call{
- Meta: meta,
- Args: args,
- Ret: prog.MakeReturnArg(meta.Ret),
- }
+ call.Args = append(call.Args, prog.MakeConstArg(meta.Args[i].Type, prog.DirIn, 0))
+ return call
}
return func() []*prog.Call {
if contain {
@@ -58,14 +54,10 @@ func MakeSyzMmap(target *prog.Target) func() []*prog.Call {
size := target.NumPages * target.PageSize
return func() []*prog.Call {
return []*prog.Call{
- {
- Meta: meta,
- Args: []prog.Arg{
- prog.MakeVmaPointerArg(meta.Args[0].Type, prog.DirIn, 0, size),
- prog.MakeConstArg(meta.Args[1].Type, prog.DirIn, size),
- },
- Ret: prog.MakeReturnArg(meta.Ret),
- },
+ prog.MakeCall(meta, []prog.Arg{
+ prog.MakeVmaPointerArg(meta.Args[0].Type, prog.DirIn, 0, size),
+ prog.MakeConstArg(meta.Args[1].Type, prog.DirIn, size),
+ }),
}
}
}
diff --git a/sys/windows/init.go b/sys/windows/init.go
index ef8ba4324..0480a6946 100644
--- a/sys/windows/init.go
+++ b/sys/windows/init.go
@@ -32,15 +32,11 @@ func (arch *arch) makeMmap() []*prog.Call {
meta := arch.virtualAllocSyscall
size := arch.target.NumPages * arch.target.PageSize
return []*prog.Call{
- {
- Meta: meta,
- Args: []prog.Arg{
- prog.MakeVmaPointerArg(meta.Args[0].Type, prog.DirIn, 0, size),
- prog.MakeConstArg(meta.Args[1].Type, prog.DirIn, size),
- prog.MakeConstArg(meta.Args[2].Type, prog.DirIn, arch.MEM_COMMIT|arch.MEM_RESERVE),
- prog.MakeConstArg(meta.Args[3].Type, prog.DirIn, arch.PAGE_EXECUTE_READWRITE),
- },
- Ret: prog.MakeReturnArg(meta.Ret),
- },
+ prog.MakeCall(meta, []prog.Arg{
+ prog.MakeVmaPointerArg(meta.Args[0].Type, prog.DirIn, 0, size),
+ prog.MakeConstArg(meta.Args[1].Type, prog.DirIn, size),
+ prog.MakeConstArg(meta.Args[2].Type, prog.DirIn, arch.MEM_COMMIT|arch.MEM_RESERVE),
+ prog.MakeConstArg(meta.Args[3].Type, prog.DirIn, arch.PAGE_EXECUTE_READWRITE),
+ }),
}
}