(soong) Add -fsanitize= argument to assembly flags.
It allows use of sanitizer preprocessor macros (like __has_feature()) in assembly files. Bug: 112438058 Test: SANITIZE_TARGET=hwaddress Change-Id: Id3fed5492ab9473cbb13cd6c0485302412e8b1de
This commit is contained in:
@@ -130,6 +130,7 @@ func makeVarsProvider(ctx android.MakeVarsContext) {
|
|||||||
ctx.Strict("HWADDRESS_SANITIZER_CONFIG_EXTRA_CFLAGS", strings.Join(hwasanCflags, " "))
|
ctx.Strict("HWADDRESS_SANITIZER_CONFIG_EXTRA_CFLAGS", strings.Join(hwasanCflags, " "))
|
||||||
|
|
||||||
ctx.Strict("CFI_EXTRA_CFLAGS", strings.Join(cfiCflags, " "))
|
ctx.Strict("CFI_EXTRA_CFLAGS", strings.Join(cfiCflags, " "))
|
||||||
|
ctx.Strict("CFI_EXTRA_ASFLAGS", strings.Join(cfiAsflags, " "))
|
||||||
ctx.Strict("CFI_EXTRA_LDFLAGS", strings.Join(cfiLdflags, " "))
|
ctx.Strict("CFI_EXTRA_LDFLAGS", strings.Join(cfiLdflags, " "))
|
||||||
|
|
||||||
ctx.Strict("INTEGER_OVERFLOW_EXTRA_CFLAGS", strings.Join(intOverflowCflags, " "))
|
ctx.Strict("INTEGER_OVERFLOW_EXTRA_CFLAGS", strings.Join(intOverflowCflags, " "))
|
||||||
|
@@ -40,6 +40,9 @@ var (
|
|||||||
|
|
||||||
cfiCflags = []string{"-flto", "-fsanitize-cfi-cross-dso",
|
cfiCflags = []string{"-flto", "-fsanitize-cfi-cross-dso",
|
||||||
"-fsanitize-blacklist=external/compiler-rt/lib/cfi/cfi_blacklist.txt"}
|
"-fsanitize-blacklist=external/compiler-rt/lib/cfi/cfi_blacklist.txt"}
|
||||||
|
// -flto and -fvisibility are required by clang when -fsanitize=cfi is
|
||||||
|
// used, but have no effect on assembly files
|
||||||
|
cfiAsflags = []string{"-flto", "-fvisibility=default"}
|
||||||
cfiLdflags = []string{"-flto", "-fsanitize-cfi-cross-dso", "-fsanitize=cfi",
|
cfiLdflags = []string{"-flto", "-fsanitize-cfi-cross-dso", "-fsanitize=cfi",
|
||||||
"-Wl,-plugin-opt,O1"}
|
"-Wl,-plugin-opt,O1"}
|
||||||
cfiExportsMapPath = "build/soong/cc/config/cfi_exports.map"
|
cfiExportsMapPath = "build/soong/cc/config/cfi_exports.map"
|
||||||
@@ -460,6 +463,7 @@ func (sanitize *sanitize) flags(ctx ModuleContext, flags Flags) Flags {
|
|||||||
sanitizers = append(sanitizers, "cfi")
|
sanitizers = append(sanitizers, "cfi")
|
||||||
|
|
||||||
flags.CFlags = append(flags.CFlags, cfiCflags...)
|
flags.CFlags = append(flags.CFlags, cfiCflags...)
|
||||||
|
flags.AsFlags = append(flags.AsFlags, cfiAsflags...)
|
||||||
// Only append the default visibility flag if -fvisibility has not already been set
|
// Only append the default visibility flag if -fvisibility has not already been set
|
||||||
// to hidden.
|
// to hidden.
|
||||||
if !inList("-fvisibility=hidden", flags.CFlags) {
|
if !inList("-fvisibility=hidden", flags.CFlags) {
|
||||||
@@ -495,6 +499,7 @@ func (sanitize *sanitize) flags(ctx ModuleContext, flags Flags) Flags {
|
|||||||
sanitizeArg := "-fsanitize=" + strings.Join(sanitizers, ",")
|
sanitizeArg := "-fsanitize=" + strings.Join(sanitizers, ",")
|
||||||
|
|
||||||
flags.CFlags = append(flags.CFlags, sanitizeArg)
|
flags.CFlags = append(flags.CFlags, sanitizeArg)
|
||||||
|
flags.AsFlags = append(flags.AsFlags, sanitizeArg)
|
||||||
if ctx.Host() {
|
if ctx.Host() {
|
||||||
flags.CFlags = append(flags.CFlags, "-fno-sanitize-recover=all")
|
flags.CFlags = append(flags.CFlags, "-fno-sanitize-recover=all")
|
||||||
flags.LdFlags = append(flags.LdFlags, sanitizeArg)
|
flags.LdFlags = append(flags.LdFlags, sanitizeArg)
|
||||||
|
Reference in New Issue
Block a user