Merge "Add prefer_sanitize.* properties to apex"
This commit is contained in:
38
apex/apex.go
38
apex/apex.go
@@ -252,6 +252,19 @@ type apexBundleProperties struct {
|
|||||||
Ignore_system_library_special_case *bool
|
Ignore_system_library_special_case *bool
|
||||||
|
|
||||||
Multilib apexMultilibProperties
|
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
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
type apexTargetBundleProperties struct {
|
type apexTargetBundleProperties struct {
|
||||||
@@ -527,6 +540,31 @@ func (a *apexBundle) getImageVariation(config android.DeviceConfig) string {
|
|||||||
}
|
}
|
||||||
|
|
||||||
func (a *apexBundle) IsSanitizerEnabled(ctx android.BaseModuleContext, sanitizerName string) bool {
|
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
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// Then follow the global setting
|
||||||
globalSanitizerNames := []string{}
|
globalSanitizerNames := []string{}
|
||||||
if a.Host() {
|
if a.Host() {
|
||||||
globalSanitizerNames = ctx.Config().SanitizeHost()
|
globalSanitizerNames = ctx.Config().SanitizeHost()
|
||||||
|
Reference in New Issue
Block a user