From 34448f2430a2ebd70b2ac55715f851c71f64f99a Mon Sep 17 00:00:00 2001 From: Hang Lu Date: Thu, 2 Jun 2022 20:31:05 +0800 Subject: [PATCH] Keep minimal abort when enabling integer overflow check Cflag "-fsanitize-trap=all" will override "-fno-sanitize-trap=integer" if "-fsanitize-trap=all" is placed behind. Change the order to make minimal abort work, which will output the abort message to give user a better prompt. Bug: 233840743 Test: "objdump -dS {CFI enabled so}" to check the instrumented abort instruction Change-Id: Id85fa8ece3e13d1b21b4fdbf5f4b5124011890ca --- cc/sanitize.go | 11 ++++++----- 1 file changed, 6 insertions(+), 5 deletions(-) diff --git a/cc/sanitize.go b/cc/sanitize.go index 42a112ed4..8cf61fac6 100644 --- a/cc/sanitize.go +++ b/cc/sanitize.go @@ -722,11 +722,6 @@ func (sanitize *sanitize) flags(ctx ModuleContext, flags Flags) Flags { flags.Local.CFlags = append(flags.Local.CFlags, "-fno-sanitize=vptr,function") } - if enableMinimalRuntime(sanitize) { - flags.Local.CFlags = append(flags.Local.CFlags, strings.Join(minimalRuntimeFlags, " ")) - flags.Local.LdFlags = append(flags.Local.LdFlags, "-Wl,--exclude-libs,"+minimalRuntimeLib) - } - if Bool(sanitize.Properties.Sanitize.Fuzzer) { // When fuzzing, we wish to crash with diagnostics on any bug. flags.Local.CFlags = append(flags.Local.CFlags, "-fno-sanitize-trap=all", "-fno-sanitize-recover=all") @@ -735,6 +730,12 @@ func (sanitize *sanitize) flags(ctx ModuleContext, flags Flags) Flags { } else { flags.Local.CFlags = append(flags.Local.CFlags, "-fsanitize-trap=all", "-ftrap-function=abort") } + + if enableMinimalRuntime(sanitize) { + flags.Local.CFlags = append(flags.Local.CFlags, strings.Join(minimalRuntimeFlags, " ")) + flags.Local.LdFlags = append(flags.Local.LdFlags, "-Wl,--exclude-libs,"+minimalRuntimeLib) + } + // http://b/119329758, Android core does not boot up with this sanitizer yet. if toDisableImplicitIntegerChange(flags.Local.CFlags) { flags.Local.CFlags = append(flags.Local.CFlags, "-fno-sanitize=implicit-integer-sign-change")