diff options
| author | Aleksandr Nogikh <nogikh@google.com> | 2022-03-23 16:16:33 +0000 |
|---|---|---|
| committer | Aleksandr Nogikh <wp32pw@gmail.com> | 2022-03-28 12:03:35 +0200 |
| commit | ee339263ba6b1a08006ea3e8e1862e15181a640d (patch) | |
| tree | 29862861fc231b07aded7c6bf45e5cde45711d16 /pkg/cover/html.go | |
| parent | cdcc8b96dd9215a47ce5ce1074567a1be93eda5f (diff) | |
syz-manager: display raw coverage
Diffstat (limited to 'pkg/cover/html.go')
| -rw-r--r-- | pkg/cover/html.go | 46 |
1 files changed, 32 insertions, 14 deletions
diff --git a/pkg/cover/html.go b/pkg/cover/html.go index 4e6e89cef..98572b7f8 100644 --- a/pkg/cover/html.go +++ b/pkg/cover/html.go @@ -63,7 +63,8 @@ func (rg *ReportGenerator) DoHTML(w io.Writer, progs []Prog, coverFilter map[uin return err } d := &templateData{ - Root: new(templateDir), + Root: new(templateDir), + RawCover: rg.rawCoverEnabled, } haveProgs := len(progs) > 1 || progs[0].Data != "" fileOpenErr := fmt.Errorf("failed to open/locate any source file") @@ -133,7 +134,10 @@ func (rg *ReportGenerator) DoHTML(w io.Writer, progs []Prog, coverFilter map[uin return fileOpenErr } for _, prog := range progs { - d.Progs = append(d.Progs, template.HTML(html.EscapeString(prog.Data))) + d.Progs = append(d.Progs, templateProg{ + Sig: prog.Sig, + Content: template.HTML(html.EscapeString(prog.Data)), + }) } processDir(d.Root) @@ -163,19 +167,23 @@ func (rg *ReportGenerator) DoRawCoverFiles(w http.ResponseWriter, progs []Prog, func (rg *ReportGenerator) DoRawCover(w http.ResponseWriter, progs []Prog, coverFilter map[uint32]uint32) { progs = fixUpPCs(rg.target.Arch, progs, coverFilter) var pcs []uint64 - uniquePCs := make(map[uint64]bool) - for _, prog := range progs { - for _, pc := range prog.PCs { - if uniquePCs[pc] { - continue + if len(progs) == 1 && rg.rawCoverEnabled { + pcs = append([]uint64{}, progs[0].PCs...) + } else { + uniquePCs := make(map[uint64]bool) + for _, prog := range progs { + for _, pc := range prog.PCs { + if uniquePCs[pc] { + continue + } + uniquePCs[pc] = true + pcs = append(pcs, pc) } - uniquePCs[pc] = true - pcs = append(pcs, pc) } + sort.Slice(pcs, func(i, j int) bool { + return pcs[i] < pcs[j] + }) } - sort.Slice(pcs, func(i, j int) bool { - return pcs[i] < pcs[j] - }) w.Header().Set("Content-Type", "text/plain; charset=utf-8") buf := bufio.NewWriter(w) @@ -718,8 +726,14 @@ func parseFile(fn string) ([][]byte, error) { type templateData struct { Root *templateDir Contents []template.HTML - Progs []template.HTML + Progs []templateProg Functions []template.HTML + RawCover bool +} + +type templateProg struct { + Sig string + Content template.HTML } type templateBase struct { @@ -852,8 +866,12 @@ var coverTemplate = template.Must(template.New("").Parse(` {{range $i, $f := .Contents}} <pre class="file" id="contents_{{$i}}">{{$f}}</pre> {{end}} + {{$base := .}} {{range $i, $p := .Progs}} - <pre class="file" id="prog_{{$i}}">{{$p}}</pre> + <pre class="file" id="prog_{{$i}}"> +{{if $base.RawCover}}<a href="/debuginput?sig={{$p.Sig}}">[raw coverage]</a><br />{{end}} +{{$p.Content}} +</pre> {{end}} {{range $i, $p := .Functions}} <div class="function list" id="function_{{$i}}">{{$p}}</div> |
