From 7560799c75f65327fe726b5b4b256d23b341709c Mon Sep 17 00:00:00 2001 From: Greg Steuck Date: Mon, 24 Apr 2023 20:27:30 +0100 Subject: sys/targets: introduce HasCallNumber to reduce clutter This centralizes all strings.HasPrefix(callName, "syz_") checks. --- pkg/compiler/consts.go | 2 +- pkg/csource/csource.go | 5 ++--- sys/syz-sysgen/sysgen.go | 6 ++---- sys/targets/targets.go | 4 ++++ 4 files changed, 9 insertions(+), 8 deletions(-) diff --git a/pkg/compiler/consts.go b/pkg/compiler/consts.go index 3e8773a03..48a4f55aa 100644 --- a/pkg/compiler/consts.go +++ b/pkg/compiler/consts.go @@ -69,7 +69,7 @@ func (comp *compiler) extractConsts() map[string]*ConstInfo { info.defines[name] = v comp.addConst(infos, pos, name) case *ast.Call: - if comp.target.SyscallNumbers && !strings.HasPrefix(n.CallName, "syz_") { + if comp.target.HasCallNumber(n.CallName) { comp.addConst(infos, pos, comp.target.SyscallPrefix+n.CallName) } for _, attr := range n.Attrs { diff --git a/pkg/csource/csource.go b/pkg/csource/csource.go index aedcf0d19..0c9f78e71 100644 --- a/pkg/csource/csource.go +++ b/pkg/csource/csource.go @@ -214,8 +214,7 @@ func (ctx *context) generateSyscalls(calls []string, hasVars bool) string { func (ctx *context) generateSyscallDefines() string { var calls []string for name, nr := range ctx.calls { - if !ctx.sysTarget.SyscallNumbers || - strings.HasPrefix(name, "syz_") || !ctx.sysTarget.NeedSyscallDefine(nr) { + if !ctx.sysTarget.HasCallNumber(name) || !ctx.sysTarget.NeedSyscallDefine(nr) { continue } calls = append(calls, name) @@ -290,7 +289,7 @@ func (ctx *context) generateCalls(p prog.ExecProg, trace bool) ([]string, []uint func isNative(sysTarget *targets.Target, callName string) bool { _, trampoline := sysTarget.SyscallTrampolines[callName] - return sysTarget.SyscallNumbers && !strings.HasPrefix(callName, "syz_") && !trampoline + return sysTarget.HasCallNumber(callName) && !trampoline } func (ctx *context) emitCall(w *bytes.Buffer, call prog.ExecCall, ci int, haveCopyout, trace bool) { diff --git a/sys/syz-sysgen/sysgen.go b/sys/syz-sysgen/sysgen.go index 2ac48e94e..0459d544f 100644 --- a/sys/syz-sysgen/sysgen.go +++ b/sys/syz-sysgen/sysgen.go @@ -12,7 +12,6 @@ import ( "path/filepath" "reflect" "sort" - "strings" "sync" "text/template" @@ -287,8 +286,7 @@ func generateExecutorSyscalls(target *targets.Target, syscalls []*prog.Syscall, data.Calls = append(data.Calls, newSyscallData(target, c, attrVals[:last+1])) // Some syscalls might not be present on the compiling machine, so we // generate definitions for them. - if target.SyscallNumbers && !strings.HasPrefix(c.CallName, "syz_") && - target.NeedSyscallDefine(c.NR) { + if target.HasCallNumber(c.CallName) && target.NeedSyscallDefine(c.NR) { defines[target.SyscallPrefix+c.CallName] = fmt.Sprintf("%d", c.NR) } } @@ -316,7 +314,7 @@ func newSyscallData(target *targets.Target, sc *prog.Syscall, attrs []uint64) Sy Name: sc.Name, CallName: callName, NR: int32(sc.NR), - NeedCall: (!target.SyscallNumbers || strings.HasPrefix(sc.CallName, "syz_") || patchCallName) && !sc.Attrs.Disabled, + NeedCall: (!target.HasCallNumber(sc.CallName) || patchCallName) && !sc.Attrs.Disabled, Attrs: attrs, } } diff --git a/sys/targets/targets.go b/sys/targets/targets.go index 99c64725a..67c3161e4 100644 --- a/sys/targets/targets.go +++ b/sys/targets/targets.go @@ -46,6 +46,10 @@ type Target struct { timeouts Timeouts } +func (target *Target) HasCallNumber(callName string) bool { + return target.SyscallNumbers && !strings.HasPrefix(callName, "syz_") +} + type osCommon struct { // What OS can build native binaries for this OS. // If not set, defaults to itself (i.e. native build). -- cgit mrf-deployment