Switch to clang-r346389.
* Add -fno-sanitize=implicit-integer-sign-change when there is any integer related sanitizer, and this check is not explicitly specified. Android core does not boot with this new sanitizer yet. * Filter out -fno-sanitize=implicit-integer-sign-change from tooling flags. Bug: 119329758 Bug: 119557795 Test: make checkbuild, boot, go/clang-r346389-testing Change-Id: I709de569cb73d070fc4958e2b4387f4041bc5438
This commit is contained in:
committed by
Chih-hung Hsieh
parent
ce16f3bac8
commit
3567e62f97
@@ -376,6 +376,22 @@ func (sanitize *sanitize) deps(ctx BaseModuleContext, deps Deps) Deps {
|
||||
return deps
|
||||
}
|
||||
|
||||
func toDisableImplicitIntegerChange(flags []string) bool {
|
||||
// Returns true if any flag is fsanitize*integer, and there is
|
||||
// no explicit flag about sanitize=implicit-integer-sign-change.
|
||||
for _, f := range flags {
|
||||
if strings.Contains(f, "sanitize=implicit-integer-sign-change") {
|
||||
return false
|
||||
}
|
||||
}
|
||||
for _, f := range flags {
|
||||
if strings.HasPrefix(f, "-fsanitize") && strings.Contains(f, "integer") {
|
||||
return true
|
||||
}
|
||||
}
|
||||
return false
|
||||
}
|
||||
|
||||
func (sanitize *sanitize) flags(ctx ModuleContext, flags Flags) Flags {
|
||||
minimalRuntimeLib := config.UndefinedBehaviorSanitizerMinimalRuntimeLibrary(ctx.toolchain()) + ".a"
|
||||
minimalRuntimePath := "${config.ClangAsanLibDir}/" + minimalRuntimeLib
|
||||
@@ -533,6 +549,10 @@ func (sanitize *sanitize) flags(ctx ModuleContext, flags Flags) Flags {
|
||||
flags.LdFlags = append(flags.LdFlags, "-Wl,--exclude-libs,"+minimalRuntimeLib)
|
||||
}
|
||||
}
|
||||
// http://b/119329758, Android core does not boot up with this sanitizer yet.
|
||||
if toDisableImplicitIntegerChange(flags.CFlags) {
|
||||
flags.CFlags = append(flags.CFlags, "-fno-sanitize=implicit-integer-sign-change")
|
||||
}
|
||||
}
|
||||
|
||||
if len(diagSanitizers) > 0 {
|
||||
|
Reference in New Issue
Block a user