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
This commit is contained in:
Colin Cross
2023-05-08 15:09:31 -07:00
parent 25ff305370
commit 80462dc040
3 changed files with 17 additions and 9 deletions

View File

@@ -423,7 +423,7 @@ func (s *ccRustFuzzPackager) GenerateBuildActions(ctx android.SingletonContext)
files = append(files, GetSharedLibsToZip(ccModule.FuzzSharedLibraries(), ccModule, &s.FuzzPackager, archString, sharedLibsInstallDirPrefix, &sharedLibraryInstalled)...) files = append(files, GetSharedLibsToZip(ccModule.FuzzSharedLibraries(), ccModule, &s.FuzzPackager, archString, sharedLibsInstallDirPrefix, &sharedLibraryInstalled)...)
// The executable. // The executable.
files = append(files, fuzz.FileToZip{android.OutputFileForModule(ctx, ccModule, "unstripped"), ""}) files = append(files, fuzz.FileToZip{SourceFilePath: android.OutputFileForModule(ctx, ccModule, "unstripped")})
archDirs[archOs], ok = s.BuildZipFile(ctx, module, fpm, files, builder, archDir, archString, hostOrTargetString, archOs, archDirs) archDirs[archOs], ok = s.BuildZipFile(ctx, module, fpm, files, builder, archDir, archString, hostOrTargetString, archOs, archDirs)
if !ok { if !ok {
@@ -462,7 +462,11 @@ func GetSharedLibsToZip(sharedLibraries android.RuleBuilderInstalls, module Link
for _, ruleBuilderInstall := range sharedLibraries { for _, ruleBuilderInstall := range sharedLibraries {
library := ruleBuilderInstall.From library := ruleBuilderInstall.From
install := ruleBuilderInstall.To install := ruleBuilderInstall.To
files = append(files, fuzz.FileToZip{library, destinationPathPrefix}) files = append(files, fuzz.FileToZip{
SourceFilePath: library,
DestinationPathPrefix: destinationPathPrefix,
DestinationPath: install,
})
// For each architecture-specific shared library dependency, we need to // For each architecture-specific shared library dependency, we need to
// install it to the output directory. Setup the install destination here, // install it to the output directory. Setup the install destination here,

View File

@@ -61,6 +61,7 @@ type FuzzPackager struct {
type FileToZip struct { type FileToZip struct {
SourceFilePath android.Path SourceFilePath android.Path
DestinationPathPrefix string DestinationPathPrefix string
DestinationPath string
} }
type ArchOs struct { type ArchOs struct {
@@ -443,7 +444,7 @@ func (s *FuzzPackager) PackageArtifacts(ctx android.SingletonContext, module and
FlagWithOutput("-o ", corpusZip) FlagWithOutput("-o ", corpusZip)
rspFile := corpusZip.ReplaceExtension(ctx, "rsp") rspFile := corpusZip.ReplaceExtension(ctx, "rsp")
command.FlagWithRspFileInputList("-r ", rspFile, fuzzModule.Corpus) command.FlagWithRspFileInputList("-r ", rspFile, fuzzModule.Corpus)
files = append(files, FileToZip{corpusZip, ""}) files = append(files, FileToZip{SourceFilePath: corpusZip})
} }
// Package the data into a zipfile. // Package the data into a zipfile.
@@ -456,17 +457,17 @@ func (s *FuzzPackager) PackageArtifacts(ctx android.SingletonContext, module and
command.FlagWithArg("-C ", intermediateDir) command.FlagWithArg("-C ", intermediateDir)
command.FlagWithInput("-f ", f) command.FlagWithInput("-f ", f)
} }
files = append(files, FileToZip{dataZip, ""}) files = append(files, FileToZip{SourceFilePath: dataZip})
} }
// The dictionary. // The dictionary.
if fuzzModule.Dictionary != nil { if fuzzModule.Dictionary != nil {
files = append(files, FileToZip{fuzzModule.Dictionary, ""}) files = append(files, FileToZip{SourceFilePath: fuzzModule.Dictionary})
} }
// Additional fuzz config. // Additional fuzz config.
if fuzzModule.Config != nil && IsValidConfig(fuzzModule, module.Name()) { if fuzzModule.Config != nil && IsValidConfig(fuzzModule, module.Name()) {
files = append(files, FileToZip{fuzzModule.Config, ""}) files = append(files, FileToZip{SourceFilePath: fuzzModule.Config})
} }
return files return files
@@ -485,6 +486,9 @@ func (s *FuzzPackager) BuildZipFile(ctx android.SingletonContext, module android
} else { } else {
command.Flag("-P ''") command.Flag("-P ''")
} }
if file.DestinationPath != "" {
command.FlagWithArg("-e ", file.DestinationPath)
}
command.FlagWithInput("-f ", file.SourceFilePath) command.FlagWithInput("-f ", file.SourceFilePath)
} }
@@ -502,7 +506,7 @@ func (s *FuzzPackager) BuildZipFile(ctx android.SingletonContext, module android
} }
s.FuzzTargets[module.Name()] = true s.FuzzTargets[module.Name()] = true
archDirs[archOs] = append(archDirs[archOs], FileToZip{fuzzZip, ""}) archDirs[archOs] = append(archDirs[archOs], FileToZip{SourceFilePath: fuzzZip})
return archDirs[archOs], true return archDirs[archOs], true
} }

View File

@@ -250,11 +250,11 @@ func generateBuildActions(s *fuzz.FuzzPackager, hostOrTargetString string, ctx a
files = s.PackageArtifacts(ctx, module, javaFuzzModule.fuzzPackagedModule, archDir, builder) files = s.PackageArtifacts(ctx, module, javaFuzzModule.fuzzPackagedModule, archDir, builder)
// Add .jar // Add .jar
files = append(files, fuzz.FileToZip{javaFuzzModule.implementationJarFile, ""}) files = append(files, fuzz.FileToZip{SourceFilePath: javaFuzzModule.implementationJarFile})
// Add jni .so files // Add jni .so files
for _, fPath := range javaFuzzModule.jniFilePaths { for _, fPath := range javaFuzzModule.jniFilePaths {
files = append(files, fuzz.FileToZip{fPath, ""}) files = append(files, fuzz.FileToZip{SourceFilePath: fPath})
} }
archDirs[archOs], ok = s.BuildZipFile(ctx, module, javaFuzzModule.fuzzPackagedModule, files, builder, archDir, archString, hostOrTargetString, archOs, archDirs) archDirs[archOs], ok = s.BuildZipFile(ctx, module, javaFuzzModule.fuzzPackagedModule, files, builder, archDir, archString, hostOrTargetString, archOs, archDirs)