aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorJiangen Jiao <joey.jiaojg@gmail.com>2018-07-23 14:11:45 +0800
committerDmitry Vyukov <dvyukov@google.com>2018-07-23 09:52:04 +0200
commitf69c5fcd766adfb7894e1b0cd35f42c633f16419 (patch)
tree6c8ecb6841a1a0e2e683278387854d7e828ea3f1
parent8cc079c3f60f253f57b715c3d87937541d03fae9 (diff)
syz-manager: Support kernelSrc and vmlinux from different tree
If vmlinux built from different tree from kernelSrc, cover page will failed to show. So match only the path without prefix.
-rw-r--r--CONTRIBUTORS1
-rw-r--r--syz-manager/cover.go8
-rw-r--r--syz-manager/html.go2
3 files changed, 8 insertions, 3 deletions
diff --git a/CONTRIBUTORS b/CONTRIBUTORS
index 9825f3c61..9e2c8005f 100644
--- a/CONTRIBUTORS
+++ b/CONTRIBUTORS
@@ -33,3 +33,4 @@ Mitchell Horne
Denis Efremov
Ondrej Mosnacek
Daniel Borkmann
+Joey Jiao
diff --git a/syz-manager/cover.go b/syz-manager/cover.go
index 953fa3b84..c007c15f3 100644
--- a/syz-manager/cover.go
+++ b/syz-manager/cover.go
@@ -70,7 +70,7 @@ func initCover(kernelObj, arch string) error {
return err
}
-func generateCoverHTML(w io.Writer, kernelObj, arch string, cov cover.Cover) error {
+func generateCoverHTML(w io.Writer, kernelObj, kernelSrc, arch string, cov cover.Cover) error {
if len(cov) == 0 {
return fmt.Errorf("no coverage data available")
}
@@ -106,6 +106,10 @@ func generateCoverHTML(w io.Writer, kernelObj, arch string, cov cover.Cover) err
var d templateData
for f, covered := range fileSet(coveredFrames, uncoveredFrames) {
+ remain := strings.TrimPrefix(f, prefix)
+ if kernelSrc != "" {
+ f = filepath.Join(kernelSrc, remain)
+ }
lines, err := parseFile(f)
if err != nil {
return err
@@ -130,7 +134,7 @@ func generateCoverHTML(w io.Writer, kernelObj, arch string, cov cover.Cover) err
buf.Write([]byte{'\n'})
}
}
- f = filepath.Clean(strings.TrimPrefix(f, prefix))
+ f = filepath.Clean(remain)
d.Files = append(d.Files, &templateFile{
ID: hash.String([]byte(f)),
Name: f,
diff --git a/syz-manager/html.go b/syz-manager/html.go
index b17d9b48f..a84b71d01 100644
--- a/syz-manager/html.go
+++ b/syz-manager/html.go
@@ -231,7 +231,7 @@ func (mgr *Manager) httpCoverCover(w http.ResponseWriter, r *http.Request) {
}
}
- if err := generateCoverHTML(w, mgr.cfg.KernelObj, mgr.cfg.TargetVMArch, cov); err != nil {
+ if err := generateCoverHTML(w, mgr.cfg.KernelObj, mgr.cfg.KernelSrc, mgr.cfg.TargetVMArch, cov); err != nil {
http.Error(w, fmt.Sprintf("failed to generate coverage profile: %v", err), http.StatusInternalServerError)
return
}