Skip to content

Commit 41ac19b

Browse files
committed
pkg: export PreciseCoverage in config
1 parent 1c65791 commit 41ac19b

File tree

7 files changed

+24
-16
lines changed

7 files changed

+24
-16
lines changed

pkg/cover/backend/backend.go

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -67,12 +67,12 @@ type SecRange struct {
6767
const LineEnd = 1 << 30
6868

6969
func Make(target *targets.Target, vm string, kernelDirs *mgrconfig.KernelDirs, splitBuild bool,
70-
moduleObj []string, modules []*vminfo.KernelModule) (*Impl, error) {
70+
moduleObj []string, modules []*vminfo.KernelModule, preciseCoverage bool) (*Impl, error) {
7171
if kernelDirs.Obj == "" {
7272
return nil, fmt.Errorf("kernel obj directory is not specified")
7373
}
7474
if target.OS == targets.Darwin {
75-
return makeMachO(target, kernelDirs, moduleObj, modules)
75+
return makeMachO(target, kernelDirs, moduleObj, modules, preciseCoverage)
7676
}
7777
if vm == targets.GVisor {
7878
return makeGvisor(target, kernelDirs, modules)
@@ -84,7 +84,7 @@ func Make(target *targets.Target, vm string, kernelDirs *mgrconfig.KernelDirs, s
8484
// details.
8585
delimiters = []string{"/aosp/", "/private/"}
8686
}
87-
return makeELF(target, kernelDirs, delimiters, moduleObj, modules)
87+
return makeELF(target, kernelDirs, delimiters, moduleObj, modules, preciseCoverage)
8888
}
8989

9090
func GetPCBase(cfg *mgrconfig.Config) (uint64, error) {

pkg/cover/backend/dwarf.go

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -37,6 +37,7 @@ type dwarfParams struct {
3737
readModuleCoverPoints func(*targets.Target, *vminfo.KernelModule, *symbolInfo) ([2][]uint64, error)
3838
readTextRanges func(*vminfo.KernelModule) ([]pcRange, []*CompileUnit, error)
3939
getCompilerVersion func(string) string
40+
preciseCoverage bool
4041
}
4142

4243
type Arch struct {
@@ -141,14 +142,14 @@ func makeDWARFUnsafe(params *dwarfParams) (*Impl, error) {
141142
kernelDirs := params.kernelDirs
142143
splitBuildDelimiters := params.splitBuildDelimiters
143144
modules := params.hostModules
145+
preciseCoverage := params.preciseCoverage
144146

145147
// Here and below index 0 refers to coverage callbacks (__sanitizer_cov_trace_pc(_guard))
146148
// and index 1 refers to comparison callbacks (__sanitizer_cov_trace_cmp*).
147149
var allCoverPoints [2][]uint64
148150
var allSymbols []*Symbol
149151
var allRanges []pcRange
150152
var allUnits []*CompileUnit
151-
preciseCoverage := true
152153
type binResult struct {
153154
symbols []*Symbol
154155
coverPoints [2][]uint64

pkg/cover/backend/elf.go

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -18,7 +18,7 @@ import (
1818
)
1919

2020
func makeELF(target *targets.Target, kernelDirs *mgrconfig.KernelDirs, splitBuildDelimiters, moduleObj []string,
21-
hostModules []*vminfo.KernelModule) (*Impl, error) {
21+
hostModules []*vminfo.KernelModule, preciseCoverage bool) (*Impl, error) {
2222
return makeDWARF(&dwarfParams{
2323
target: target,
2424
kernelDirs: kernelDirs,
@@ -30,6 +30,7 @@ func makeELF(target *targets.Target, kernelDirs *mgrconfig.KernelDirs, splitBuil
3030
readModuleCoverPoints: elfReadModuleCoverPoints,
3131
readTextRanges: elfReadTextRanges,
3232
getCompilerVersion: elfGetCompilerVersion,
33+
preciseCoverage: preciseCoverage,
3334
})
3435
}
3536

pkg/cover/backend/mach-o.go

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -16,7 +16,7 @@ import (
1616
)
1717

1818
func makeMachO(target *targets.Target, kernelDirs *mgrconfig.KernelDirs,
19-
moduleObj []string, hostModules []*vminfo.KernelModule) (*Impl, error) {
19+
moduleObj []string, hostModules []*vminfo.KernelModule, preciseCoverage bool) (*Impl, error) {
2020
return makeDWARF(&dwarfParams{
2121
target: target,
2222
kernelDirs: kernelDirs,
@@ -26,6 +26,7 @@ func makeMachO(target *targets.Target, kernelDirs *mgrconfig.KernelDirs,
2626
readTextData: machoReadTextData,
2727
readModuleCoverPoints: machoReadModuleCoverPoints,
2828
readTextRanges: machoReadTextRanges,
29+
preciseCoverage: preciseCoverage,
2930
})
3031
}
3132

pkg/cover/report.go

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -34,7 +34,8 @@ func GetPCBase(cfg *mgrconfig.Config) (uint64, error) {
3434
}
3535

3636
func MakeReportGenerator(cfg *mgrconfig.Config, modules []*vminfo.KernelModule) (*ReportGenerator, error) {
37-
impl, err := backend.Make(cfg.SysTarget, cfg.Type, cfg.KernelDirs(), cfg.AndroidSplitBuild, cfg.ModuleObj, modules)
37+
impl, err := backend.Make(cfg.SysTarget, cfg.Type, cfg.KernelDirs(), cfg.AndroidSplitBuild, cfg.ModuleObj,
38+
modules, cfg.PreciseCoverage)
3839
if err != nil {
3940
return nil, err
4041
}

pkg/mgrconfig/config.go

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -225,6 +225,9 @@ type Config struct {
225225
// More details can be found in pkg/asset/config.go.
226226
AssetStorage *asset.Config `json:"asset_storage"`
227227

228+
// Enable preciseCoverage or not, default to true.
229+
PreciseCoverage bool `json:"precise_coverage"`
230+
228231
// Experimental options.
229232
Experimental Experimental
230233

pkg/mgrconfig/load.go

Lines changed: 10 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -86,15 +86,16 @@ func LoadPartialFile(filename string) (*Config, error) {
8686

8787
func defaultValues() *Config {
8888
return &Config{
89-
SSHUser: "root",
90-
Cover: true,
91-
Reproduce: true,
92-
Sandbox: "none",
93-
RPC: ":0",
94-
MaxCrashLogs: 100,
95-
Procs: 6,
96-
PreserveCorpus: true,
97-
RunFsck: true,
89+
SSHUser: "root",
90+
Cover: true,
91+
Reproduce: true,
92+
Sandbox: "none",
93+
RPC: ":0",
94+
MaxCrashLogs: 100,
95+
Procs: 6,
96+
PreserveCorpus: true,
97+
RunFsck: true,
98+
PreciseCoverage: true,
9899
Experimental: Experimental{
99100
RemoteCover: true,
100101
CoverEdges: true,

0 commit comments

Comments
 (0)