'm fuzz' shared lib package should be per-fuzzer.
Change the ClusterFuzz package built by 'make fuzz' to now package
shared libraries per-fuzz target.
Changes documented in go/proposed-clusterfuzz-package
This has the impact of:
- This package is much easier to post-process in the Haiku export
cronjob.
- Shared libraries are now per-fuzz-target. This means that we will
have some level of duplication (libdl, libc, libc++, libclang_rt.*,
etc.) as these libraries will be in multiple fuzz target's dirs.
This *only* affects the fuzz-$target-$arch.zip file, not the fuzz targets in
$ANDROID_HOST_OUT/fuzz or $ANDROID_PRODUCT_OUT/data/fuzz. These two
install directories still use the global shared libraries in order to
preserve space on devices.
Bug: 144360679
Test: m fuzz
Change-Id: I5f19a13070e01d2d39598f9f215a983b398a9f37
diff --git a/cc/fuzz.go b/cc/fuzz.go
index 11e6413..4b537c0 100644
--- a/cc/fuzz.go
+++ b/cc/fuzz.go
@@ -338,6 +338,9 @@
collectAllSharedDependencies(module, sharedLibraries, ctx)
for _, library := range sharedLibraries {
+ archDirs[archDir] = append(archDirs[archDir],
+ fileToZip{library, ccModule.Name() + "/lib"})
+
if _, exists := archSharedLibraryDeps[archAndLibraryKey{archDir, library}]; exists {
continue
}
@@ -379,12 +382,6 @@
}
})
- // Add the shared library deps for packaging.
- for key, _ := range archSharedLibraryDeps {
- archDirs[key.ArchDir] = append(archDirs[key.ArchDir],
- fileToZip{key.Library, "lib"})
- }
-
for archDir, filesToZip := range archDirs {
arch := archDir.Base()
hostOrTarget := filepath.Base(filepath.Dir(archDir.String()))