Remove prefer_sanitize.* properties am: f97782b18c
am: 548f147804
Change-Id: I6c20dec3b8e96dcda3817f7f8c0a87f663f0d878
This commit is contained in:
commit
92b89d9114
2 changed files with 19 additions and 34 deletions
44
apex/apex.go
44
apex/apex.go
|
@ -257,18 +257,8 @@ type apexBundleProperties struct {
|
|||
|
||||
Multilib apexMultilibProperties
|
||||
|
||||
Prefer_sanitize struct {
|
||||
// Prefer native libraries with asan if available
|
||||
Address *bool
|
||||
// Prefer native libraries with hwasan if available
|
||||
Hwaddress *bool
|
||||
// Prefer native libraries with tsan if available
|
||||
Thread *bool
|
||||
// Prefer native libraries with integer_overflow if available
|
||||
Integer_overflow *bool
|
||||
// Prefer native libraries with cfi if available
|
||||
Cfi *bool
|
||||
}
|
||||
// List of sanitizer names that this APEX is enabled for
|
||||
SanitizerNames []string `blueprint:"mutated"`
|
||||
}
|
||||
|
||||
type apexTargetBundleProperties struct {
|
||||
|
@ -551,29 +541,15 @@ func (a *apexBundle) getImageVariation(config android.DeviceConfig) string {
|
|||
}
|
||||
}
|
||||
|
||||
func (a *apexBundle) EnableSanitizer(sanitizerName string) {
|
||||
if !android.InList(sanitizerName, a.properties.SanitizerNames) {
|
||||
a.properties.SanitizerNames = append(a.properties.SanitizerNames, sanitizerName)
|
||||
}
|
||||
}
|
||||
|
||||
func (a *apexBundle) IsSanitizerEnabled(ctx android.BaseModuleContext, sanitizerName string) bool {
|
||||
// If this APEX is configured to prefer a sanitizer, use it
|
||||
switch sanitizerName {
|
||||
case "asan":
|
||||
if proptools.Bool(a.properties.Prefer_sanitize.Address) {
|
||||
return true
|
||||
}
|
||||
case "hwasan":
|
||||
if proptools.Bool(a.properties.Prefer_sanitize.Hwaddress) {
|
||||
return true
|
||||
}
|
||||
case "tsan":
|
||||
if proptools.Bool(a.properties.Prefer_sanitize.Thread) {
|
||||
return true
|
||||
}
|
||||
case "cfi":
|
||||
if proptools.Bool(a.properties.Prefer_sanitize.Cfi) {
|
||||
return true
|
||||
}
|
||||
case "integer_overflow":
|
||||
if proptools.Bool(a.properties.Prefer_sanitize.Integer_overflow) {
|
||||
return true
|
||||
}
|
||||
if android.InList(sanitizerName, a.properties.SanitizerNames) {
|
||||
return true
|
||||
}
|
||||
|
||||
// Then follow the global setting
|
||||
|
|
|
@ -666,6 +666,14 @@ func sanitizerDepsMutator(t sanitizerType) func(android.TopDownMutatorContext) {
|
|||
}
|
||||
return true
|
||||
})
|
||||
} else if sanitizeable, ok := mctx.Module().(Sanitizeable); ok {
|
||||
// If an APEX module includes a lib which is enabled for a sanitizer T, then
|
||||
// the APEX module is also enabled for the same sanitizer type.
|
||||
mctx.VisitDirectDeps(func(child android.Module) {
|
||||
if c, ok := child.(*Module); ok && c.sanitize.isSanitizerEnabled(t) {
|
||||
sanitizeable.EnableSanitizer(t.name())
|
||||
}
|
||||
})
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -848,6 +856,7 @@ func sanitizerRuntimeMutator(mctx android.BottomUpMutatorContext) {
|
|||
type Sanitizeable interface {
|
||||
android.Module
|
||||
IsSanitizerEnabled(ctx android.BaseModuleContext, sanitizerName string) bool
|
||||
EnableSanitizer(sanitizerName string)
|
||||
}
|
||||
|
||||
// Create sanitized variants for modules that need them
|
||||
|
|
Loading…
Reference in a new issue