aboutsummaryrefslogtreecommitdiffstats
path: root/pkg/cover/html.go
diff options
context:
space:
mode:
authorDmitry Vyukov <dvyukov@google.com>2023-02-17 10:28:55 +0100
committerDmitry Vyukov <dvyukov@google.com>2023-02-17 15:02:29 +0100
commit04a1e722bd0062f6bced288696bed8af8019c888 (patch)
tree7a8195d68253055e3884e16e2ef17db0c170c47b /pkg/cover/html.go
parent84d417047e829540d6812f4ade769d039c1a14b6 (diff)
pkg/cover: move a helper function from the top of the file
Diffstat (limited to 'pkg/cover/html.go')
-rw-r--r--pkg/cover/html.go66
1 files changed, 33 insertions, 33 deletions
diff --git a/pkg/cover/html.go b/pkg/cover/html.go
index 5b9b86731..157d5a67d 100644
--- a/pkg/cover/html.go
+++ b/pkg/cover/html.go
@@ -24,39 +24,6 @@ import (
"github.com/google/syzkaller/sys/targets"
)
-func fixUpPCs(target string, progs []Prog, coverFilter map[uint32]uint32) []Prog {
- if coverFilter != nil {
- for i, prog := range progs {
- var nPCs []uint64
- for _, pc := range prog.PCs {
- if coverFilter[uint32(pc)] != 0 {
- nPCs = append(nPCs, pc)
- }
- }
- progs[i].PCs = nPCs
- }
- }
-
- // On arm64 as PLT is enabled by default, .text section is loaded after .plt section,
- // so there is 0x18 bytes offset from module load address for .text section
- // we need to remove the 0x18 bytes offset in order to correct module symbol address
- if target == targets.ARM64 {
- for i, prog := range progs {
- var nPCs []uint64
- for _, pc := range prog.PCs {
- // TODO: avoid to hardcode the address
- // Fix up kernel PCs, but not the test (userspace) PCs.
- if pc >= 0x8000000000000000 && pc < 0xffffffd010000000 {
- pc -= 0x18
- }
- nPCs = append(nPCs, pc)
- }
- progs[i].PCs = nPCs
- }
- }
- return progs
-}
-
func (rg *ReportGenerator) DoHTML(w io.Writer, progs []Prog, coverFilter map[uint32]uint32) error {
progs = fixUpPCs(rg.target.Arch, progs, coverFilter)
files, err := rg.prepareFileMap(progs)
@@ -535,6 +502,39 @@ func (rg *ReportGenerator) DoCSV(w io.Writer, progs []Prog, coverFilter map[uint
return writer.WriteAll(data)
}
+func fixUpPCs(target string, progs []Prog, coverFilter map[uint32]uint32) []Prog {
+ if coverFilter != nil {
+ for i, prog := range progs {
+ var nPCs []uint64
+ for _, pc := range prog.PCs {
+ if coverFilter[uint32(pc)] != 0 {
+ nPCs = append(nPCs, pc)
+ }
+ }
+ progs[i].PCs = nPCs
+ }
+ }
+
+ // On arm64 as PLT is enabled by default, .text section is loaded after .plt section,
+ // so there is 0x18 bytes offset from module load address for .text section
+ // we need to remove the 0x18 bytes offset in order to correct module symbol address
+ if target == targets.ARM64 {
+ for i, prog := range progs {
+ var nPCs []uint64
+ for _, pc := range prog.PCs {
+ // TODO: avoid to hardcode the address
+ // Fix up kernel PCs, but not the test (userspace) PCs.
+ if pc >= 0x8000000000000000 && pc < 0xffffffd010000000 {
+ pc -= 0x18
+ }
+ nPCs = append(nPCs, pc)
+ }
+ progs[i].PCs = nPCs
+ }
+ }
+ return progs
+}
+
func fileContents(file *file, lines [][]byte, haveProgs bool) string {
var buf bytes.Buffer
lineCover := perLineCoverage(file.covered, file.uncovered)