Copy Rust fuzzer dependencies to /data.

Fix an issue where rust_fuzz modules were
not correctly packaging and copying their
dependencies.

This is done by extending the CC fuzz packager
to simply handle both Rust and CC modules,
ensuring this doesn't get out of sync again.
Fuzzer related functions are added to the
Linkable interface to facilitate this.

There was a bug where the Make definitions for
Rust fuzzers were not being created as well,
and that is addressed here.

Bug: 249551848
Test: m android_log_fuzzer #check $OUT/data/fuzz/arm64/libs
Change-Id: I9b41153e0cf08ab510476b75003c3a3baccc3858
This commit is contained in:
Ivan Lozano
2023-02-06 13:31:02 -05:00
parent 8e0ae8e960
commit 0f9963e9e4
6 changed files with 161 additions and 151 deletions

View File

@@ -208,6 +208,11 @@ func (mod *Module) OutputFiles(tag string) (android.Paths, error) {
}
return android.Paths{}, nil
}
case "unstripped":
if mod.compiler != nil {
return android.PathsIfNonNil(mod.compiler.unstrippedOutputFilePath()), nil
}
return nil, nil
default:
return nil, fmt.Errorf("unsupported module reference tag %q", tag)
}
@@ -619,6 +624,31 @@ func (mod *Module) CcLibraryInterface() bool {
return false
}
func (mod *Module) IsFuzzModule() bool {
if _, ok := mod.compiler.(*fuzzDecorator); ok {
return true
}
return false
}
func (mod *Module) FuzzModuleStruct() fuzz.FuzzModule {
return mod.FuzzModule
}
func (mod *Module) FuzzPackagedModule() fuzz.FuzzPackagedModule {
if fuzzer, ok := mod.compiler.(*fuzzDecorator); ok {
return fuzzer.fuzzPackagedModule
}
panic(fmt.Errorf("FuzzPackagedModule called on non-fuzz module: %q", mod.BaseModuleName()))
}
func (mod *Module) FuzzSharedLibraries() android.Paths {
if fuzzer, ok := mod.compiler.(*fuzzDecorator); ok {
return fuzzer.sharedLibraries
}
panic(fmt.Errorf("FuzzSharedLibraries called on non-fuzz module: %q", mod.BaseModuleName()))
}
func (mod *Module) UnstrippedOutputFile() android.Path {
if mod.compiler != nil {
return mod.compiler.unstrippedOutputFilePath()