Refactor CC to prep for Rust sanitizable modules.

Adds a PlatformSanitizable interface which both CC and Rust can
implement so that the sanitizer mutators in CC can sanitize Rust
shared/static libraries appropriately.

Bug: 147140513
Test: m nothing
Change-Id: Ib31103b6c4902a4d5df2565c0d7c981298d100a3
This commit is contained in:
Ivan Lozano
2020-12-14 11:27:52 -05:00
parent c7ca43ec92
commit 3968d8f678
11 changed files with 340 additions and 130 deletions

View File

@@ -106,6 +106,42 @@ type Module struct {
hideApexVariantFromMake bool
}
func (mod *Module) Header() bool {
//TODO: If Rust libraries provide header variants, this needs to be updated.
return false
}
func (mod *Module) SetPreventInstall() {
mod.Properties.PreventInstall = true
}
// Returns true if the module is "vendor" variant. Usually these modules are installed in /vendor
func (mod *Module) InVendor() bool {
return mod.Properties.ImageVariationPrefix == cc.VendorVariationPrefix
}
func (mod *Module) SetHideFromMake() {
mod.Properties.HideFromMake = true
}
func (mod *Module) SanitizePropDefined() bool {
return false
}
func (mod *Module) IsDependencyRoot() bool {
if mod.compiler != nil {
return mod.compiler.isDependencyRoot()
}
panic("IsDependencyRoot called on a non-compiler Rust module")
}
func (mod *Module) IsPrebuilt() bool {
if _, ok := mod.compiler.(*prebuiltLibraryDecorator); ok {
return true
}
return false
}
func (mod *Module) OutputFiles(tag string) (android.Paths, error) {
switch tag {
case "":
@@ -281,6 +317,7 @@ type compiler interface {
SetDisabled()
stdLinkage(ctx *depsContext) RustLinkage
isDependencyRoot() bool
}
type exportedFlagsProducer interface {