Skip to content
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
4 changes: 2 additions & 2 deletions pkg/cover/backend/backend.go
Original file line number Diff line number Diff line change
Expand Up @@ -75,7 +75,7 @@ func Make(cfg *mgrconfig.Config, modules []*vminfo.KernelModule) (*Impl, error)
return nil, fmt.Errorf("kernel obj directory is not specified")
}
if target.OS == targets.Darwin {
return makeMachO(target, kernelDirs, moduleObj, modules)
return makeMachO(target, kernelDirs, moduleObj, modules, cfg.PreciseCoverage)
}
if vm == targets.GVisor {
return makeGvisor(target, kernelDirs, modules)
Expand All @@ -87,7 +87,7 @@ func Make(cfg *mgrconfig.Config, modules []*vminfo.KernelModule) (*Impl, error)
// details.
delimiters = []string{"/aosp/", "/private/"}
}
return makeELF(target, kernelDirs, delimiters, moduleObj, modules)
return makeELF(target, kernelDirs, delimiters, moduleObj, modules, cfg.PreciseCoverage)
}

func GetPCBase(cfg *mgrconfig.Config) (uint64, error) {
Expand Down
3 changes: 2 additions & 1 deletion pkg/cover/backend/dwarf.go
Original file line number Diff line number Diff line change
Expand Up @@ -37,6 +37,7 @@ type dwarfParams struct {
readModuleCoverPoints func(*targets.Target, *vminfo.KernelModule, *symbolInfo) ([2][]uint64, error)
readTextRanges func(*vminfo.KernelModule) ([]pcRange, []*CompileUnit, error)
getCompilerVersion func(string) string
preciseCoverage bool
}

type Arch struct {
Expand Down Expand Up @@ -141,14 +142,14 @@ func makeDWARFUnsafe(params *dwarfParams) (*Impl, error) {
kernelDirs := params.kernelDirs
splitBuildDelimiters := params.splitBuildDelimiters
modules := params.hostModules
preciseCoverage := params.preciseCoverage

// Here and below index 0 refers to coverage callbacks (__sanitizer_cov_trace_pc(_guard))
// and index 1 refers to comparison callbacks (__sanitizer_cov_trace_cmp*).
var allCoverPoints [2][]uint64
var allSymbols []*Symbol
var allRanges []pcRange
var allUnits []*CompileUnit
preciseCoverage := true
type binResult struct {
symbols []*Symbol
coverPoints [2][]uint64
Expand Down
3 changes: 2 additions & 1 deletion pkg/cover/backend/elf.go
Original file line number Diff line number Diff line change
Expand Up @@ -18,7 +18,7 @@ import (
)

func makeELF(target *targets.Target, kernelDirs *mgrconfig.KernelDirs, splitBuildDelimiters, moduleObj []string,
hostModules []*vminfo.KernelModule) (*Impl, error) {
hostModules []*vminfo.KernelModule, preciseCoverage bool) (*Impl, error) {
return makeDWARF(&dwarfParams{
target: target,
kernelDirs: kernelDirs,
Expand All @@ -30,6 +30,7 @@ func makeELF(target *targets.Target, kernelDirs *mgrconfig.KernelDirs, splitBuil
readModuleCoverPoints: elfReadModuleCoverPoints,
readTextRanges: elfReadTextRanges,
getCompilerVersion: elfGetCompilerVersion,
preciseCoverage: preciseCoverage,
})
}

Expand Down
3 changes: 2 additions & 1 deletion pkg/cover/backend/mach-o.go
Original file line number Diff line number Diff line change
Expand Up @@ -16,7 +16,7 @@ import (
)

func makeMachO(target *targets.Target, kernelDirs *mgrconfig.KernelDirs,
moduleObj []string, hostModules []*vminfo.KernelModule) (*Impl, error) {
moduleObj []string, hostModules []*vminfo.KernelModule, preciseCoverage bool) (*Impl, error) {
return makeDWARF(&dwarfParams{
target: target,
kernelDirs: kernelDirs,
Expand All @@ -26,6 +26,7 @@ func makeMachO(target *targets.Target, kernelDirs *mgrconfig.KernelDirs,
readTextData: machoReadTextData,
readModuleCoverPoints: machoReadModuleCoverPoints,
readTextRanges: machoReadTextRanges,
preciseCoverage: preciseCoverage,
})
}

Expand Down
3 changes: 3 additions & 0 deletions pkg/mgrconfig/config.go
Original file line number Diff line number Diff line change
Expand Up @@ -225,6 +225,9 @@ type Config struct {
// More details can be found in pkg/asset/config.go.
AssetStorage *asset.Config `json:"asset_storage"`

// Enable preciseCoverage or not, default to true.
PreciseCoverage bool `json:"preciseCoverage"`

// Experimental options.
Experimental Experimental

Expand Down
19 changes: 10 additions & 9 deletions pkg/mgrconfig/load.go
Original file line number Diff line number Diff line change
Expand Up @@ -86,15 +86,16 @@ func LoadPartialFile(filename string) (*Config, error) {

func defaultValues() *Config {
return &Config{
SSHUser: "root",
Cover: true,
Reproduce: true,
Sandbox: "none",
RPC: ":0",
MaxCrashLogs: 100,
Procs: 6,
PreserveCorpus: true,
RunFsck: true,
SSHUser: "root",
Cover: true,
Reproduce: true,
Sandbox: "none",
RPC: ":0",
MaxCrashLogs: 100,
Procs: 6,
PreserveCorpus: true,
RunFsck: true,
PreciseCoverage: true,
Experimental: Experimental{
RemoteCover: true,
CoverEdges: true,
Expand Down