aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorTreehugger Robot <treehugger-gerrit@google.com>2017-11-22 00:05:30 +0000
committerGerrit Code Review <noreply-gerritcodereview@google.com>2017-11-22 00:05:30 +0000
commit061fcfc2548a472ec38861edf2553fa98bf3fbc4 (patch)
treee14abc4040a87cd239fb43974b284c5f2e7739d6
parent9f686938da37f3b918699d8752321ff41b473ad7 (diff)
parent96a130bdafa3f143f15257455f4c6aaa56155351 (diff)
downloadbuild-061fcfc2548a472ec38861edf2553fa98bf3fbc4.tar.gz
Merge "Use the .cfi variant of a static library where needed."
-rw-r--r--core/binary.mk16
-rw-r--r--core/config_sanitizers.mk6
2 files changed, 22 insertions, 0 deletions
diff --git a/core/binary.mk b/core/binary.mk
index 36d8a543d0..e54edbec86 100644
--- a/core/binary.mk
+++ b/core/binary.mk
@@ -1330,6 +1330,22 @@ $(call track-src-file-obj,$(asm_sources_asm),$(asm_objects_asm))
asm_objects += $(asm_objects_asm)
endif
+###################################################################
+## When compiling a CFI enabled target, use the .cfi variant of any
+## static dependencies (where they exist).
+##################################################################
+define use_soong_cfi_static_libraries
+ $(foreach l,$(1),$(if $(filter $(l),$(SOONG_CFI_STATIC_LIBRARIES)),\
+ $(l).cfi,$(l)))
+endef
+
+ifneq ($(filter cfi,$(my_sanitize)),)
+ my_whole_static_libraries := $(call use_soong_cfi_static_libraries,\
+ $(my_whole_static_libraries))
+ my_static_libraries := $(call use_soong_cfi_static_libraries,\
+ $(my_static_libraries))
+endif
+
###########################################################
## When compiling against the VNDK, use LL-NDK libraries
###########################################################
diff --git a/core/config_sanitizers.mk b/core/config_sanitizers.mk
index 8bd92486e0..94151430f9 100644
--- a/core/config_sanitizers.mk
+++ b/core/config_sanitizers.mk
@@ -132,6 +132,12 @@ ifneq ($(filter mips mips64,$(TARGET_$(LOCAL_2ND_ARCH_VAR_PREFIX)ARCH)),)
my_sanitize_diag := $(filter-out cfi,$(my_sanitize_diag))
endif
+# Disable CFI for host targets
+ifdef LOCAL_IS_HOST_MODULE
+ my_sanitize := $(filter-out cfi,$(my_sanitize))
+ my_sanitize_diag := $(filter-out cfi,$(my_sanitize_diag))
+endif
+
# Support for local sanitize blacklist paths.
ifneq ($(my_sanitize)$(my_global_sanitize),)
ifneq ($(LOCAL_SANITIZE_BLACKLIST),)