diff options
| author | Dmitry Vyukov <dvyukov@google.com> | 2020-12-11 14:12:43 +0100 |
|---|---|---|
| committer | Dmitry Vyukov <dvyukov@google.com> | 2020-12-13 18:56:36 +0100 |
| commit | f007a558a8779585ff5968c53737ed89a40aa64b (patch) | |
| tree | b8506fbd2aa1843cb66496767facd12b29cd8ecc /pkg | |
| parent | 7268cf9dbd7bb12380df1e672578a9a27f4d02ae (diff) | |
pkg/cover: accept object dir instead of object file
This looks more natural.
All users duplicate logic of creating object file path,
and then pkg/cover second guesses object dir back.
Diffstat (limited to 'pkg')
| -rw-r--r-- | pkg/cover/backend/backend.go | 4 | ||||
| -rw-r--r-- | pkg/cover/backend/elf.go | 4 | ||||
| -rw-r--r-- | pkg/cover/report.go | 6 | ||||
| -rw-r--r-- | pkg/cover/report_test.go | 4 |
4 files changed, 10 insertions, 8 deletions
diff --git a/pkg/cover/backend/backend.go b/pkg/cover/backend/backend.go index 1e7a2bc7f..d712bcff8 100644 --- a/pkg/cover/backend/backend.go +++ b/pkg/cover/backend/backend.go @@ -30,6 +30,6 @@ type Symbol struct { Symbolized bool } -func Make(target *targets.Target, vm, kernelObject, srcDir, buildDir string) (*Impl, error) { - return makeELF(target, kernelObject, srcDir, buildDir) +func Make(target *targets.Target, vm, objDir string) (*Impl, error) { + return makeELF(target, objDir) } diff --git a/pkg/cover/backend/elf.go b/pkg/cover/backend/elf.go index 1e46578ed..dba8e4f0f 100644 --- a/pkg/cover/backend/elf.go +++ b/pkg/cover/backend/elf.go @@ -11,6 +11,7 @@ import ( "encoding/binary" "fmt" "io/ioutil" + "path/filepath" "runtime" "sort" "strconv" @@ -20,7 +21,8 @@ import ( "github.com/google/syzkaller/sys/targets" ) -func makeELF(target *targets.Target, kernelObject, srcDir, buildDir string) (*Impl, error) { +func makeELF(target *targets.Target, objDir string) (*Impl, error) { + kernelObject := filepath.Join(objDir, target.KernelObject) file, err := elf.Open(kernelObject) if err != nil { return nil, err diff --git a/pkg/cover/report.go b/pkg/cover/report.go index 56ab949a0..9b515905f 100644 --- a/pkg/cover/report.go +++ b/pkg/cover/report.go @@ -26,15 +26,15 @@ type Prog struct { PCs []uint64 } -func MakeReportGenerator(target *targets.Target, vm, kernelObject, srcDir, buildDir string) (*ReportGenerator, error) { - impl, err := backend.Make(target, vm, kernelObject, srcDir, buildDir) +func MakeReportGenerator(target *targets.Target, vm, objDir, srcDir, buildDir string) (*ReportGenerator, error) { + impl, err := backend.Make(target, vm, objDir) if err != nil { return nil, err } rg := &ReportGenerator{ target: target, srcDir: srcDir, - objDir: filepath.Dir(kernelObject), + objDir: objDir, buildDir: buildDir, Impl: impl, } diff --git a/pkg/cover/report_test.go b/pkg/cover/report_test.go index 2fdf8e4e0..afda03203 100644 --- a/pkg/cover/report_test.go +++ b/pkg/cover/report_test.go @@ -151,7 +151,7 @@ void __sanitizer_cov_trace_pc() { printf("%llu", (long long)__builtin_return_add } kcovFlags := append([]string{"-c", "-w", "-x", "c", "-o", kcovObj, kcovSrc}, target.CFlags...) src := filepath.Join(dir, "main.c") - bin := filepath.Join(dir, "bin") + bin := filepath.Join(dir, target.KernelObject) if err := osutil.WriteFile(src, []byte(`int main() {}`)); err != nil { t.Fatal(err) } @@ -179,7 +179,7 @@ func generateReport(t *testing.T, target *targets.Target, test Test) ([]byte, [] } defer os.RemoveAll(dir) bin := buildTestBinary(t, target, test, dir) - rg, err := MakeReportGenerator(target, "", bin, dir, dir) + rg, err := MakeReportGenerator(target, "", dir, dir, dir) if err != nil { return nil, nil, err } |
