summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--cc/config/clang.go4
-rw-r--r--cc/config/global.go4
-rw-r--r--cc/sanitize.go20
3 files changed, 25 insertions, 3 deletions
diff --git a/cc/config/clang.go b/cc/config/clang.go
index 89e567dcb..46d852880 100644
--- a/cc/config/clang.go
+++ b/cc/config/clang.go
@@ -91,7 +91,9 @@ var ClangUnknownLldflags = sorted([]string{
"-Wl,-m,aarch64_elf64_le_vec",
})
-var ClangLibToolingUnknownCflags []string = nil
+var ClangLibToolingUnknownCflags = sorted([]string{
+ "-fno-sanitize=implicit-integer-sign-change",
+})
func init() {
pctx.StaticVariable("ClangExtraCflags", strings.Join([]string{
diff --git a/cc/config/global.go b/cc/config/global.go
index 31f64fe60..92969b0b7 100644
--- a/cc/config/global.go
+++ b/cc/config/global.go
@@ -120,8 +120,8 @@ var (
// prebuilts/clang default settings.
ClangDefaultBase = "prebuilts/clang/host"
- ClangDefaultVersion = "clang-r344140b"
- ClangDefaultShortVersion = "8.0.4"
+ ClangDefaultVersion = "clang-r346389"
+ ClangDefaultShortVersion = "8.0.5"
// Directories with warnings from Android.bp files.
WarningAllowedProjects = []string{
diff --git a/cc/sanitize.go b/cc/sanitize.go
index 56013b61d..08c672cca 100644
--- a/cc/sanitize.go
+++ b/cc/sanitize.go
@@ -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 {