diff --git a/android/config.go b/android/config.go index 7b22119df..92010fc53 100644 --- a/android/config.go +++ b/android/config.go @@ -665,6 +665,10 @@ func (c *config) EnableCFI() bool { } } +func (c *config) DisableScudo() bool { + return Bool(c.productVariables.DisableScudo) +} + func (c *config) EnableXOM() bool { if c.productVariables.EnableXOM == nil { return true diff --git a/android/variable.go b/android/variable.go index 0904cea3d..f38cf25cc 100644 --- a/android/variable.go +++ b/android/variable.go @@ -213,6 +213,8 @@ type productVariables struct { CFIExcludePaths []string `json:",omitempty"` CFIIncludePaths []string `json:",omitempty"` + DisableScudo *bool `json:",omitempty"` + EnableXOM *bool `json:",omitempty"` XOMExcludePaths []string `json:",omitempty"` diff --git a/cc/sanitize.go b/cc/sanitize.go index c13b855e0..bcc4de3fc 100644 --- a/cc/sanitize.go +++ b/cc/sanitize.go @@ -370,8 +370,8 @@ func (sanitize *sanitize) begin(ctx BaseModuleContext) { sanitize.Properties.SanitizerEnabled = true } - // Disable Scudo if ASan or TSan is enabled. - if Bool(s.Address) || Bool(s.Thread) || Bool(s.Hwaddress) { + // Disable Scudo if ASan or TSan is enabled, or if it's disabled globally. + if Bool(s.Address) || Bool(s.Thread) || Bool(s.Hwaddress) || ctx.Config().DisableScudo() { s.Scudo = nil }