Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 3567e62f authored by Chih-Hung Hsieh's avatar Chih-Hung Hsieh Committed by Chih-hung Hsieh
Browse files

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
parent ce16f3ba
Loading
Loading
Loading
Loading
+3 −1
Original line number Diff line number Diff line
@@ -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{
+2 −2
Original line number Diff line number Diff line
@@ -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{
+20 −0
Original line number Diff line number Diff line
@@ -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 {