aboutsummaryrefslogtreecommitdiffstats
path: root/pkg/build/android.go
diff options
context:
space:
mode:
authorLiz Prucka <lizprucka@google.com>2024-01-31 13:16:27 -0600
committerkalder <61064868+kalder@users.noreply.github.com>2024-02-05 20:50:17 +0000
commit6404acf9ce200d01fcbe0923924c9f6c22c258de (patch)
treee1ee1fa658a1d07752db3d29745f258a69547171 /pkg/build/android.go
parent8ceeefeef0ad66702909fc46ec408cf9a4f5d27c (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.go29
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()