aboutsummaryrefslogtreecommitdiffstats
path: root/pkg/rpcserver/rpcserver.go
diff options
context:
space:
mode:
authorDmitry Vyukov <dvyukov@google.com>2024-11-27 17:23:09 +0100
committerDmitry Vyukov <dvyukov@google.com>2024-12-11 15:22:17 +0000
commit299ee674e6c124a35f1cf258df4f0f3c6e1db1f3 (patch)
tree416b515e959a1d0a64a9516b1524a062ae63ba7d /pkg/rpcserver/rpcserver.go
parentff949d2512c5ac33d0407d26d80f1df77b2de0e7 (diff)
executor: query globs in the test program context
We query globs for 2 reasons: 1. Expand glob types in syscall descriptions. 2. Dynamic file probing for automatic descriptions generation. In both of these contexts are are interested in files that will be present during test program execution (rather than normal unsandboxed execution). For example, some files may not be accessible to test programs after pivot root. On the other hand, we create and link some additional files for the test program that don't normally exist. Add a new request type for querying of globs that are executed in the test program context.
Diffstat (limited to 'pkg/rpcserver/rpcserver.go')
-rw-r--r--pkg/rpcserver/rpcserver.go25
1 files changed, 7 insertions, 18 deletions
diff --git a/pkg/rpcserver/rpcserver.go b/pkg/rpcserver/rpcserver.go
index c064e6938..9d259b733 100644
--- a/pkg/rpcserver/rpcserver.go
+++ b/pkg/rpcserver/rpcserver.go
@@ -48,26 +48,22 @@ type Config struct {
DebugTimeouts bool
Procs int
Slowdown int
- // Extra globs that will be requested during machine checking,
- // and will be passed to MachineChecked callback.
- CheckGlobs []string
- pcBase uint64
- localModules []*vminfo.KernelModule
+ pcBase uint64
+ localModules []*vminfo.KernelModule
}
type RemoteConfig struct {
*mgrconfig.Config
- Manager Manager
- Stats Stats
- CheckGlobs []string
- Debug bool
+ Manager Manager
+ Stats Stats
+ Debug bool
}
//go:generate ../../tools/mockery.sh --name Manager --output ./mocks
type Manager interface {
MaxSignal() signal.Signal
BugFrames() (leaks []string, races []string)
- MachineChecked(info *flatrpc.InfoRequest, features flatrpc.Feature, syscalls map[*prog.Syscall]bool) queue.Source
+ MachineChecked(features flatrpc.Feature, syscalls map[*prog.Syscall]bool) queue.Source
CoverageFilter(modules []*vminfo.KernelModule) []uint64
}
@@ -181,7 +177,6 @@ func New(cfg *RemoteConfig) (Server, error) {
Slowdown: cfg.Timeouts.Slowdown,
pcBase: pcBase,
localModules: cfg.LocalModules,
- CheckGlobs: cfg.CheckGlobs,
}, cfg.Manager), nil
}
@@ -280,7 +275,6 @@ func (serv *server) handleRunnerConn(runner *Runner, conn *flatrpc.Conn) error {
opts.Features = serv.setupFeatures
} else {
opts.Files = append(opts.Files, serv.checker.CheckFiles()...)
- opts.Globs = append(serv.target.RequiredGlobs(), serv.cfg.CheckGlobs...)
opts.Features = serv.cfg.Features
}
@@ -321,11 +315,6 @@ func (serv *server) handleMachineInfo(infoReq *flatrpc.InfoRequestRawT) (handsha
serv.StatModules.Add(len(modules))
serv.canonicalModules = cover.NewCanonicalizer(modules, serv.cfg.Cover)
serv.coverFilter = serv.mgr.CoverageFilter(modules)
- globs := make(map[string][]string)
- for _, glob := range infoReq.Globs {
- globs[glob.Name] = glob.Files
- }
- serv.target.UpdateGlobs(globs)
// Flatbuffers don't do deep copy of byte slices,
// so clone manually since we pass it a goroutine.
for _, file := range infoReq.Files {
@@ -395,7 +384,7 @@ func (serv *server) runCheck(info *flatrpc.InfoRequest) error {
}
enabledFeatures := features.Enabled()
serv.setupFeatures = features.NeedSetup()
- newSource := serv.mgr.MachineChecked(info, enabledFeatures, enabledCalls)
+ newSource := serv.mgr.MachineChecked(enabledFeatures, enabledCalls)
serv.baseSource.Store(newSource)
serv.checkDone.Store(true)
return nil