aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorGreg Steuck <greg@nest.cx>2023-04-24 20:27:30 +0100
committerAleksandr Nogikh <wp32pw@gmail.com>2023-04-25 17:36:18 +0200
commit7560799c75f65327fe726b5b4b256d23b341709c (patch)
tree17248a13063e63424fe909003ec4cf523529fcb0
parent9ceb3140bbe76018aa28dde0297f1139717373dc (diff)
sys/targets: introduce HasCallNumber to reduce clutter
This centralizes all strings.HasPrefix(callName, "syz_") checks.
-rw-r--r--pkg/compiler/consts.go2
-rw-r--r--pkg/csource/csource.go5
-rw-r--r--sys/syz-sysgen/sysgen.go6
-rw-r--r--sys/targets/targets.go4
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).