diff options
| author | Dmitry Vyukov <dvyukov@google.com> | 2023-02-17 10:28:55 +0100 |
|---|---|---|
| committer | Dmitry Vyukov <dvyukov@google.com> | 2023-02-17 15:02:29 +0100 |
| commit | 04a1e722bd0062f6bced288696bed8af8019c888 (patch) | |
| tree | 7a8195d68253055e3884e16e2ef17db0c170c47b /pkg/cover/html.go | |
| parent | 84d417047e829540d6812f4ade769d039c1a14b6 (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.go | 66 |
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) |
