diff options
author | Evgenii Stepanov <eugenis@google.com> | 2017-01-20 14:13:06 -0800 |
---|---|---|
committer | Evgenii Stepanov <eugenis@google.com> | 2017-01-20 14:13:32 -0800 |
commit | 7ebf9fa3c92dda5270b999b79f0c69ac2e5dd28a (patch) | |
tree | 57aaf742daef648dbe12fc855e27b9ffad082a84 /cc | |
parent | 97673c06d87884b0478566c1ba78d35e196c2e8a (diff) | |
download | build_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.go | 5 |
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...) |