aboutsummaryrefslogtreecommitdiffstats
path: root/cc
diff options
context:
space:
mode:
authorTreehugger Robot <treehugger-gerrit@google.com>2017-02-15 22:52:45 +0000
committerGerrit Code Review <noreply-gerritcodereview@google.com>2017-02-15 22:52:46 +0000
commit367a7da041d7aabe9a68dc4bd404429266d281bd (patch)
treefd96fb1625e40a7893ca8367bb0020a2b0979922 /cc
parent31160bef1eefb34346927a6430a8da59d5e0d19f (diff)
parentf3918d37fb69ca442347ec3150b1b6e03dd1d61f (diff)
downloadbuild_soong-367a7da041d7aabe9a68dc4bd404429266d281bd.tar.gz
build_soong-367a7da041d7aabe9a68dc4bd404429266d281bd.tar.bz2
build_soong-367a7da041d7aabe9a68dc4bd404429266d281bd.zip
Merge "Blacklist code for CFI."
Diffstat (limited to 'cc')
-rw-r--r--cc/makevars.go3
-rw-r--r--cc/sanitize.go14
2 files changed, 11 insertions, 6 deletions
diff --git a/cc/makevars.go b/cc/makevars.go
index 06b57c94..e4d8fe61 100644
--- a/cc/makevars.go
+++ b/cc/makevars.go
@@ -64,6 +64,9 @@ func makeVarsProvider(ctx android.MakeVarsContext) {
ctx.Strict("ADDRESS_SANITIZER_CONFIG_EXTRA_LDFLAGS", asanLdflags)
ctx.Strict("ADDRESS_SANITIZER_CONFIG_EXTRA_STATIC_LIBRARIES", asanLibs)
+ ctx.Strict("CFI_EXTRA_CFLAGS", cfiCflags)
+ ctx.Strict("CFI_EXTRA_LDFLAGS", cfiLdflags)
+
ctx.Strict("DEFAULT_C_STD_VERSION", config.CStdVersion)
ctx.Strict("DEFAULT_CPP_STD_VERSION", config.CppStdVersion)
ctx.Strict("DEFAULT_GCC_CPP_STD_VERSION", config.GccCppStdVersion)
diff --git a/cc/sanitize.go b/cc/sanitize.go
index 7eb191f5..28c6ef52 100644
--- a/cc/sanitize.go
+++ b/cc/sanitize.go
@@ -28,6 +28,12 @@ const (
asanCflags = "-fno-omit-frame-pointer"
asanLdflags = "-Wl,-u,__asan_preinit"
asanLibs = "libasan"
+
+ cfiCflags = "-flto -fsanitize-cfi-cross-dso -fvisibility=default " +
+ "-fsanitize-blacklist=external/compiler-rt/lib/cfi/cfi_blacklist.txt"
+ // FIXME: revert the __cfi_check flag when clang is updated to r280031.
+ cfiLdflags = "-flto -fsanitize-cfi-cross-dso -fsanitize=cfi " +
+ "-Wl,-plugin-opt,O1 -Wl,-export-dynamic-symbol=__cfi_check"
)
type sanitizerType int
@@ -324,12 +330,8 @@ func (sanitize *sanitize) flags(ctx ModuleContext, flags Flags) Flags {
flags.LdFlags = append(flags.LdFlags, "-march=armv7-a")
}
sanitizers = append(sanitizers, "cfi")
- cfiFlags := []string{"-flto", "-fsanitize=cfi", "-fsanitize-cfi-cross-dso"}
- flags.CFlags = append(flags.CFlags, cfiFlags...)
- flags.CFlags = append(flags.CFlags, "-fvisibility=default")
- flags.LdFlags = append(flags.LdFlags, cfiFlags...)
- // FIXME: revert the __cfi_check flag when clang is updated to r280031.
- flags.LdFlags = append(flags.LdFlags, "-Wl,-plugin-opt,O1", "-Wl,-export-dynamic-symbol=__cfi_check")
+ flags.CFlags = append(flags.CFlags, cfiCflags)
+ flags.LdFlags = append(flags.LdFlags, cfiLdflags)
if Bool(sanitize.Properties.Sanitize.Diag.Cfi) {
diagSanitizers = append(diagSanitizers, "cfi")
}