diff options
Diffstat (limited to 'rust/fuzz.go')
-rw-r--r-- | rust/fuzz.go | 10 |
1 files changed, 10 insertions, 0 deletions
diff --git a/rust/fuzz.go b/rust/fuzz.go index 5fb56ff40..a628b6158 100644 --- a/rust/fuzz.go +++ b/rust/fuzz.go @@ -111,6 +111,10 @@ func (s *rustFuzzPackager) GenerateBuildActions(ctx android.SingletonContext) { // List of individual fuzz targets. s.FuzzTargets = make(map[string]bool) + // Map tracking whether each shared library has an install rule to avoid duplicate install rules from + // multiple fuzzers that depend on the same shared library. + sharedLibraryInstalled := make(map[string]bool) + ctx.VisitAllModules(func(module android.Module) { // Discard non-fuzz targets. rustModule, ok := module.(*Module) @@ -145,6 +149,12 @@ func (s *rustFuzzPackager) GenerateBuildActions(ctx android.SingletonContext) { // The executable. files = append(files, fuzz.FileToZip{rustModule.unstrippedOutputFile.Path(), ""}) + // Grab the list of required shared libraries. + sharedLibraries := fuzz.CollectAllSharedDependencies(ctx, module, cc.UnstrippedOutputFile, cc.IsValidSharedDependency) + + // Package shared libraries + files = append(files, cc.GetSharedLibsToZip(sharedLibraries, rustModule, &s.FuzzPackager, archString, &sharedLibraryInstalled)...) + archDirs[archOs], ok = s.BuildZipFile(ctx, module, fuzzModule.fuzzPackagedModule, files, builder, archDir, archString, hostOrTargetString, archOs, archDirs) if !ok { return |