diff options
| author | Liz Prucka <lizprucka@google.com> | 2024-01-31 13:16:27 -0600 |
|---|---|---|
| committer | kalder <61064868+kalder@users.noreply.github.com> | 2024-02-05 20:50:17 +0000 |
| commit | 6404acf9ce200d01fcbe0923924c9f6c22c258de (patch) | |
| tree | e1ee1fa658a1d07752db3d29745f258a69547171 /pkg/build/android.go | |
| parent | 8ceeefeef0ad66702909fc46ec408cf9a4f5d27c (diff) | |
pkg/build: copy unstripped module object files for Pixel
Copy unstripped module files in the output directory to be stored
in the object dir, to be used when generating module coverage.
Diffstat (limited to 'pkg/build/android.go')
| -rw-r--r-- | pkg/build/android.go | 29 |
1 files changed, 29 insertions, 0 deletions
diff --git a/pkg/build/android.go b/pkg/build/android.go index 13a7de2e6..aabb5d534 100644 --- a/pkg/build/android.go +++ b/pkg/build/android.go @@ -10,6 +10,7 @@ import ( "os" "path/filepath" "regexp" + "strings" "time" "github.com/google/syzkaller/pkg/config" @@ -112,6 +113,10 @@ func (a android) build(params Params) (ImageDetails, error) { } defer imageFile.Close() + if err := a.copyModuleFiles(filepath.Join(params.KernelDir, "out"), params.OutputDir); err != nil { + return details, fmt.Errorf("failed copying module files: %w", err) + } + if err := a.embedImages(imageFile, buildDistDir, "boot.img", "dtbo.img", buildCfg.VendorBootImage, "vendor_dlkm.img"); err != nil { return details, fmt.Errorf("failed to embed images: %w", err) @@ -125,6 +130,30 @@ func (a android) build(params Params) (ImageDetails, error) { return details, nil } +func (a android) copyModuleFiles(srcDir, dstDir string) error { + err := filepath.Walk(srcDir, + func(path string, info os.FileInfo, err error) error { + if err != nil { + return fmt.Errorf("error walking out dir: %w", err) + } + // Staging directories contain stripped module object files. + if strings.Contains(path, "staging") { + return nil + } + + if filepath.Ext(path) == ".ko" { + if err := osutil.CopyFile(path, filepath.Join(dstDir, info.Name())); err != nil { + return fmt.Errorf("error copying file: %w", err) + } + } + return nil + }) + if err != nil { + return fmt.Errorf("failed to copy module objects: %w", err) + } + return nil +} + func (a android) embedImages(w io.Writer, srcDir string, imageNames ...string) error { tw := tar.NewWriter(w) defer tw.Close() |
