diff options
| author | mosimchah <mosimchah@gmail.com> | 2025-12-02 09:27:38 -0500 |
|---|---|---|
| committer | mosimchah <mosimchah@gmail.com> | 2025-12-02 09:27:38 -0500 |
| commit | c7bade461dc55726f62997d13a48582f7c4b4655 (patch) | |
| tree | ea0588da76060a2038f54f67efd046ca77634b10 /java/fuzz.go | |
| parent | 0f5414d19317805e8bbbe7c4db5f0fd78769bad5 (diff) | |
| parent | 89d78cff8b00d3b20a90074635c3fe5a2ee49474 (diff) | |
Merge branch 'lineage-23.1' of https://github.com/LineageOS/android_build_soong into HEADw16.1
* 'lineage-23.1' of https://github.com/LineageOS/android_build_soong: (528 commits)
Revert "install_symlink: Make symlink target configurable"
Reapply "Clear as much of cc.Module as possible after GenerateBuildActions"
Revert "rust: config: Fix missing CPU variant LD flags in Rust"
Rename build-flag in outdir
Revert^4 "cipd: Default CIPD proxy server to on, add opt-out"
Convert check-vintf-all to phony with actions
Create a partial implementation of check-vintf-all for soong-only
Configure RBE rust pool based on build variant
Revert^3 "Add sdk version check to arr"
Add jdk.internal.invoke to the allowlist
Make droid always depend on symbols zip
Import Device and Odm skus
Don't install gob_gen in Soong
Remove bazel reference from run_integration_tests.sh
Fix bootstrap_test.sh
Don't panic in aconfig libraries when AllowMissingDependencies is set
Avoid returning nil paths from PathForModuleSrc
Revert "Flag controled clang version"
Rework module target dependencies on required deps
Revert^2 "Add sdk version check to arr"
...
Change-Id: I6e9a63fa14fda917a42e426e5dcebbad7f67e1de
Diffstat (limited to 'java/fuzz.go')
| -rw-r--r-- | java/fuzz.go | 87 |
1 files changed, 66 insertions, 21 deletions
diff --git a/java/fuzz.go b/java/fuzz.go index 0e239f0ec..922585b8d 100644 --- a/java/fuzz.go +++ b/java/fuzz.go @@ -51,6 +51,12 @@ type JavaFuzzTest struct { jniFilePaths android.Paths } +type JavaFuzzTestInfo struct { + JniFilePaths android.Paths +} + +var JavaFuzzTestInfoProvider = blueprint.NewProvider[JavaFuzzTestInfo]() + // java_fuzz builds and links sources into a `.jar` file for the device. // This generates .class files in a jar which can then be instrumented before // fuzzing in Android Runtime (ART: Android OS on emulator or device) @@ -131,9 +137,41 @@ func (j *JavaFuzzTest) GenerateAndroidBuildActions(ctx android.ModuleContext) { } - j.Test.GenerateAndroidBuildActions(ctx) + checkMinSdkVersionMts(ctx, j.MinSdkVersion(ctx)) + j.Test.generateAndroidBuildActionsWithConfig(ctx, nil) + + var compatibilitySupportFiles android.Paths + compatibilitySupportFiles = append(compatibilitySupportFiles, j.implementationJarFile) + compatibilitySupportFiles = append(compatibilitySupportFiles, j.jniFilePaths...) + compatibilitySupportFiles = append(compatibilitySupportFiles, j.fuzzPackagedModule.Corpus...) + if j.fuzzPackagedModule.Dictionary != nil { + compatibilitySupportFiles = append(compatibilitySupportFiles, j.fuzzPackagedModule.Dictionary) + } + + ctx.SetTestSuiteInfo(android.TestSuiteInfo{ + TestSuites: j.testProperties.Test_suites, + MainFile: j.outputFile, + MainFileStem: j.Stem(), + MainFileExt: ".jar", + ConfigFile: j.testConfig, + ExtraConfigs: j.extraTestConfigs, + NeedsArchFolder: ctx.Device(), + CompatibilitySupportFiles: compatibilitySupportFiles, + PerTestcaseDirectory: proptools.Bool(j.testProperties.Per_testcase_directory), + }) + + fuzzModuleValidator := fuzz.FuzzModule{ + j.ModuleBase, + j.DefaultableModuleBase, + j.ApexModuleBase, + } - fuzz.SetFuzzPackagedModuleInfo(ctx, &j.fuzzPackagedModule) + if fuzz.IsValid(ctx, fuzzModuleValidator) { + fuzz.SetFuzzPackagedModuleInfo(ctx, &j.fuzzPackagedModule) + android.SetProvider(ctx, JavaFuzzTestInfoProvider, JavaFuzzTestInfo{ + JniFilePaths: j.jniFilePaths, + }) + } } type javaFuzzPackager struct { @@ -149,9 +187,9 @@ func (s *javaFuzzPackager) GenerateBuildActions(ctx android.SingletonContext) { archDirs := make(map[fuzz.ArchOs][]fuzz.FileToZip) s.FuzzTargets = make(map[string]bool) - ctx.VisitAllModules(func(module android.Module) { + ctx.VisitAllModuleProxies(func(module android.ModuleProxy) { // Discard non-fuzz targets. - javaFuzzModule, ok := module.(*JavaFuzzTest) + javaInfo, ok := android.OtherModuleProvider(ctx, module, JavaInfoProvider) if !ok { return } @@ -159,25 +197,21 @@ func (s *javaFuzzPackager) GenerateBuildActions(ctx android.SingletonContext) { if !ok { return } + javaFuzzTestInfo, ok := android.OtherModuleProvider(ctx, module, JavaFuzzTestInfoProvider) + if !ok { + return + } + + commonInfo := android.OtherModuleProviderOrDefault(ctx, module, android.CommonModuleInfoProvider) hostOrTargetString := "target" - if javaFuzzModule.Target().HostCross { + if commonInfo.Target.HostCross { hostOrTargetString = "host_cross" - } else if javaFuzzModule.Host() { + } else if commonInfo.Host { hostOrTargetString = "host" } - fuzzModuleValidator := fuzz.FuzzModule{ - javaFuzzModule.ModuleBase, - javaFuzzModule.DefaultableModuleBase, - javaFuzzModule.ApexModuleBase, - } - - if ok := fuzz.IsValid(ctx, fuzzModuleValidator); !ok { - return - } - - archString := javaFuzzModule.Arch().ArchType.String() + archString := commonInfo.Target.Arch.ArchType.String() archDir := android.PathForIntermediates(ctx, "fuzz", hostOrTargetString, archString) archOs := fuzz.ArchOs{HostOrTarget: hostOrTargetString, Arch: archString, Dir: archDir.String()} @@ -188,14 +222,17 @@ func (s *javaFuzzPackager) GenerateBuildActions(ctx android.SingletonContext) { files = s.PackageArtifacts(ctx, module, &fuzzInfo, archDir, builder) // Add .jar - if !javaFuzzModule.Host() { - files = append(files, fuzz.FileToZip{SourceFilePath: javaFuzzModule.implementationJarFile, DestinationPathPrefix: "classes"}) + if !commonInfo.Host { + for _, jar := range javaInfo.ImplementationJars { + files = append(files, fuzz.FileToZip{SourceFilePath: jar, DestinationPathPrefix: "classes"}) + } } - files = append(files, fuzz.FileToZip{SourceFilePath: javaFuzzModule.outputFile}) + outputFile := android.OutputFileForModule(ctx, module, "") + files = append(files, fuzz.FileToZip{SourceFilePath: outputFile}) // Add jni .so files - for _, fPath := range javaFuzzModule.jniFilePaths { + for _, fPath := range javaFuzzTestInfo.JniFilePaths { files = append(files, fuzz.FileToZip{SourceFilePath: fPath}) } @@ -205,6 +242,14 @@ func (s *javaFuzzPackager) GenerateBuildActions(ctx android.SingletonContext) { } }) s.CreateFuzzPackage(ctx, archDirs, fuzz.Java, pctx) + + // Create the phony and dist rules + ctx.Phony("haiku-java", s.Packages...) + ctx.DistForGoals([]string{"haiku-java"}, s.Packages...) + for _, target := range android.SortedKeys(s.FuzzTargets) { + ctx.Phony("haiku-java", android.PathForPhony(ctx, target)) + } + } func (s *javaFuzzPackager) MakeVars(ctx android.MakeVarsContext) { |
