aboutsummaryrefslogtreecommitdiffstats
path: root/cc
diff options
context:
space:
mode:
authorEvgenii Stepanov <eugenis@google.com>2017-01-20 14:13:06 -0800
committerEvgenii Stepanov <eugenis@google.com>2017-01-20 14:13:32 -0800
commit7ebf9fa3c92dda5270b999b79f0c69ac2e5dd28a (patch)
tree57aaf742daef648dbe12fc855e27b9ffad082a84 /cc
parent97673c06d87884b0478566c1ba78d35e196c2e8a (diff)
downloadbuild_soong-7ebf9fa3c92dda5270b999b79f0c69ac2e5dd28a.tar.gz
build_soong-7ebf9fa3c92dda5270b999b79f0c69ac2e5dd28a.tar.bz2
build_soong-7ebf9fa3c92dda5270b999b79f0c69ac2e5dd28a.zip
Force Thumb for CFI targets.
Bug: 22033465 Test: bionic device tests Change-Id: I672ccc970309631fa895b7134a32c0d403a2151e
Diffstat (limited to 'cc')
-rw-r--r--cc/sanitize.go5
1 files changed, 5 insertions, 0 deletions
diff --git a/cc/sanitize.go b/cc/sanitize.go
index 6ab66997..dca58d88 100644
--- a/cc/sanitize.go
+++ b/cc/sanitize.go
@@ -307,6 +307,11 @@ func (sanitize *sanitize) flags(ctx ModuleContext, flags Flags) Flags {
}
if Bool(sanitize.Properties.Sanitize.Cfi) {
+ if ctx.Arch().ArchType == android.Arm {
+ // __cfi_check needs to be built as Thumb (see the code in linker_cfi.cpp). LLVM is not set up
+ // to do this on a function basis, so force Thumb on the entire module.
+ flags.RequiredInstructionSet = "thumb"
+ }
sanitizers = append(sanitizers, "cfi")
cfiFlags := []string{"-flto", "-fsanitize=cfi", "-fsanitize-cfi-cross-dso"}
flags.CFlags = append(flags.CFlags, cfiFlags...)