diff options
| author | Dmitry Vyukov <dvyukov@google.com> | 2020-12-12 10:29:59 +0100 |
|---|---|---|
| committer | Dmitry Vyukov <dvyukov@google.com> | 2020-12-13 18:56:36 +0100 |
| commit | 3a7cbae43a7c07056c6f5219bc68613087287333 (patch) | |
| tree | eb4690b3ec68d894da7c15cadb99669299b0a333 /pkg/cover/report.go | |
| parent | ff8609bfeb35e2b35cc1057942301cf476e29e3b (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.go | 31 |
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 |
