aboutsummaryrefslogtreecommitdiffstats
path: root/pkg/cover/report.go
diff options
context:
space:
mode:
authorDmitry Vyukov <dvyukov@google.com>2020-12-12 10:29:59 +0100
committerDmitry Vyukov <dvyukov@google.com>2020-12-13 18:56:36 +0100
commit3a7cbae43a7c07056c6f5219bc68613087287333 (patch)
treeeb4690b3ec68d894da7c15cadb99669299b0a333 /pkg/cover/report.go
parentff8609bfeb35e2b35cc1057942301cf476e29e3b (diff)
pkg/cover: move cleanPath into backend
gvisor will need some custom logic there, so make it part of backend.
Diffstat (limited to 'pkg/cover/report.go')
-rw-r--r--pkg/cover/report.go31
1 files changed, 2 insertions, 29 deletions
diff --git a/pkg/cover/report.go b/pkg/cover/report.go
index 234c30823..e7cf639fc 100644
--- a/pkg/cover/report.go
+++ b/pkg/cover/report.go
@@ -5,9 +5,7 @@ package cover
import (
"fmt"
- "path/filepath"
"sort"
- "strings"
"github.com/google/syzkaller/pkg/cover/backend"
"github.com/google/syzkaller/sys/targets"
@@ -29,10 +27,7 @@ type Prog struct {
var RestorePC = backend.RestorePC
func MakeReportGenerator(target *targets.Target, vm, objDir, srcDir, buildDir string) (*ReportGenerator, error) {
- if objDir == "" {
- return nil, fmt.Errorf("kernel obj directory is not specified")
- }
- impl, err := backend.Make(target, vm, objDir)
+ impl, err := backend.Make(target, vm, objDir, srcDir, buildDir)
if err != nil {
return nil, err
}
@@ -43,9 +38,6 @@ func MakeReportGenerator(target *targets.Target, vm, objDir, srcDir, buildDir st
buildDir: buildDir,
Impl: impl,
}
- for _, unit := range rg.Units {
- unit.Name, unit.Path = rg.cleanPath(unit.Name)
- }
return rg, nil
}
@@ -92,8 +84,7 @@ func (rg *ReportGenerator) prepareFileMap(progs []Prog) (map[string]*file, error
}
matchedPC := false
for _, frame := range rg.Frames {
- name, path := rg.cleanPath(frame.File)
- f := getFile(files, name, path)
+ f := getFile(files, frame.File, frame.Path)
ln := f.lines[frame.Line]
coveredBy := progPCs[frame.PC]
if len(coveredBy) != 0 {
@@ -204,24 +195,6 @@ func getFile(files map[string]*file, name, path string) *file {
return f
}
-func (rg *ReportGenerator) cleanPath(path string) (string, string) {
- filename := ""
- switch {
- case strings.HasPrefix(path, rg.objDir):
- // Assume the file was built there.
- path = strings.TrimPrefix(path, rg.objDir)
- filename = filepath.Join(rg.objDir, path)
- case strings.HasPrefix(path, rg.buildDir):
- // Assume the file was moved from buildDir to srcDir.
- path = strings.TrimPrefix(path, rg.buildDir)
- filename = filepath.Join(rg.srcDir, path)
- default:
- // Assume this is relative path.
- filename = filepath.Join(rg.srcDir, path)
- }
- return strings.TrimLeft(filepath.Clean(path), "/\\"), filename
-}
-
func (rg *ReportGenerator) findSymbol(pc uint64) *backend.Symbol {
idx := sort.Search(len(rg.Symbols), func(i int) bool {
return pc < rg.Symbols[i].End