Propagate shared library destination path through FilesToZip
Shared libraries in fuzz zip files may have a different filename than
their source file, for example when the source file is a prebuilt in
the source tree. Propagate the computed library name through
FilesToZip to soong_zip to use the correct name in the zip file.
Bug: 254867347
Test: builds
Change-Id: Ib0def8decdbec7842b8e1a9056fac373d743bac0
diff --git a/fuzz/fuzz_common.go b/fuzz/fuzz_common.go
index f76529d..2a1b404 100644
--- a/fuzz/fuzz_common.go
+++ b/fuzz/fuzz_common.go
@@ -61,6 +61,7 @@
type FileToZip struct {
SourceFilePath android.Path
DestinationPathPrefix string
+ DestinationPath string
}
type ArchOs struct {
@@ -443,7 +444,7 @@
FlagWithOutput("-o ", corpusZip)
rspFile := corpusZip.ReplaceExtension(ctx, "rsp")
command.FlagWithRspFileInputList("-r ", rspFile, fuzzModule.Corpus)
- files = append(files, FileToZip{corpusZip, ""})
+ files = append(files, FileToZip{SourceFilePath: corpusZip})
}
// Package the data into a zipfile.
@@ -456,17 +457,17 @@
command.FlagWithArg("-C ", intermediateDir)
command.FlagWithInput("-f ", f)
}
- files = append(files, FileToZip{dataZip, ""})
+ files = append(files, FileToZip{SourceFilePath: dataZip})
}
// The dictionary.
if fuzzModule.Dictionary != nil {
- files = append(files, FileToZip{fuzzModule.Dictionary, ""})
+ files = append(files, FileToZip{SourceFilePath: fuzzModule.Dictionary})
}
// Additional fuzz config.
if fuzzModule.Config != nil && IsValidConfig(fuzzModule, module.Name()) {
- files = append(files, FileToZip{fuzzModule.Config, ""})
+ files = append(files, FileToZip{SourceFilePath: fuzzModule.Config})
}
return files
@@ -485,6 +486,9 @@
} else {
command.Flag("-P ''")
}
+ if file.DestinationPath != "" {
+ command.FlagWithArg("-e ", file.DestinationPath)
+ }
command.FlagWithInput("-f ", file.SourceFilePath)
}
@@ -502,7 +506,7 @@
}
s.FuzzTargets[module.Name()] = true
- archDirs[archOs] = append(archDirs[archOs], FileToZip{fuzzZip, ""})
+ archDirs[archOs] = append(archDirs[archOs], FileToZip{SourceFilePath: fuzzZip})
return archDirs[archOs], true
}