aboutsummaryrefslogtreecommitdiffstats
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
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.
-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()