Merge changes I17a96b97,Ib4412657,I73e6d479
* changes: Build: Add module-level product configuration of sanitization Build: Add option to restrict sanitization by owner Build: Add option to restrict sanitization by architecture
This commit is contained in:
@@ -24,6 +24,31 @@ ifneq ($(my_global_sanitize),)
|
|||||||
my_sanitize := $(my_global_sanitize)
|
my_sanitize := $(my_global_sanitize)
|
||||||
endif
|
endif
|
||||||
|
|
||||||
|
# The sanitizer specified in the product configuration wins over the previous.
|
||||||
|
ifneq ($(SANITIZER.$(TARGET_PRODUCT).$(LOCAL_MODULE).CONFIG),)
|
||||||
|
my_sanitize := $(SANITIZER.$(TARGET_PRODUCT).$(LOCAL_MODULE).CONFIG)
|
||||||
|
ifeq ($(my_sanitize),never)
|
||||||
|
my_sanitize :=
|
||||||
|
endif
|
||||||
|
endif
|
||||||
|
|
||||||
|
# Add a filter point for 32-bit vs 64-bit sanitization (to lighten the burden).
|
||||||
|
SANITIZE_ARCH ?= 32 64
|
||||||
|
ifeq ($(filter $(SANITIZE_ARCH),$(my_32_64_bit_suffix)),)
|
||||||
|
my_sanitize :=
|
||||||
|
endif
|
||||||
|
|
||||||
|
# Add a filter point based on module owner (to lighten the burden). The format is a space- or
|
||||||
|
# colon-separated list of owner names.
|
||||||
|
ifneq (,$(SANITIZE_NEVER_BY_OWNER))
|
||||||
|
ifneq (,$(LOCAL_MODULE_OWNER))
|
||||||
|
ifneq (,$(filter $(LOCAL_MODULE_OWNER),$(subst :, ,$(SANITIZE_NEVER_BY_OWNER))))
|
||||||
|
$(warning Not sanitizing $(LOCAL_MODULE) based on module owner.)
|
||||||
|
my_sanitize :=
|
||||||
|
endif
|
||||||
|
endif
|
||||||
|
endif
|
||||||
|
|
||||||
# Don't apply sanitizers to NDK code.
|
# Don't apply sanitizers to NDK code.
|
||||||
ifdef LOCAL_SDK_VERSION
|
ifdef LOCAL_SDK_VERSION
|
||||||
my_sanitize :=
|
my_sanitize :=
|
||||||
|
@@ -120,6 +120,7 @@ _product_var_list := \
|
|||||||
PRODUCT_DEX_PREOPT_MODULE_CONFIGS \
|
PRODUCT_DEX_PREOPT_MODULE_CONFIGS \
|
||||||
PRODUCT_DEX_PREOPT_DEFAULT_FLAGS \
|
PRODUCT_DEX_PREOPT_DEFAULT_FLAGS \
|
||||||
PRODUCT_DEX_PREOPT_BOOT_FLAGS \
|
PRODUCT_DEX_PREOPT_BOOT_FLAGS \
|
||||||
|
PRODUCT_SANITIZER_MODULE_CONFIGS \
|
||||||
PRODUCT_SHIPPING_API_LEVEL \
|
PRODUCT_SHIPPING_API_LEVEL \
|
||||||
VENDOR_PRODUCT_RESTRICT_VENDOR_FILES \
|
VENDOR_PRODUCT_RESTRICT_VENDOR_FILES \
|
||||||
VENDOR_EXCEPTION_MODULES \
|
VENDOR_EXCEPTION_MODULES \
|
||||||
@@ -333,3 +334,14 @@ $(eval _c := $(subst $(space),$(_PDPMC_SP_PLACE_HOLDER),$(strip $(2))))\
|
|||||||
$(eval PRODUCT_DEX_PREOPT_MODULE_CONFIGS += \
|
$(eval PRODUCT_DEX_PREOPT_MODULE_CONFIGS += \
|
||||||
$(foreach m,$(1),$(m)=$(_c)))
|
$(foreach m,$(1),$(m)=$(_c)))
|
||||||
endef
|
endef
|
||||||
|
|
||||||
|
# whitespace placeholder when we record module's sanitizer config.
|
||||||
|
_PSMC_SP_PLACE_HOLDER := |@SP@|
|
||||||
|
# Set up sanitizer config for a module.
|
||||||
|
# $(1) list of module names
|
||||||
|
# $(2) the modules' sanitizer config
|
||||||
|
define add-product-sanitizer-module-config
|
||||||
|
$(eval _c := $(subst $(space),$(_PSMC_SP_PLACE_HOLDER),$(strip $(2))))\
|
||||||
|
$(eval PRODUCT_SANITIZER_MODULE_CONFIGS += \
|
||||||
|
$(foreach m,$(1),$(m)=$(_c)))
|
||||||
|
endef
|
||||||
|
@@ -390,7 +390,7 @@ PRODUCT_DEX_PREOPT_DEFAULT_FLAGS := \
|
|||||||
$(strip $(PRODUCTS.$(INTERNAL_PRODUCT).PRODUCT_DEX_PREOPT_DEFAULT_FLAGS))
|
$(strip $(PRODUCTS.$(INTERNAL_PRODUCT).PRODUCT_DEX_PREOPT_DEFAULT_FLAGS))
|
||||||
PRODUCT_DEX_PREOPT_BOOT_FLAGS := \
|
PRODUCT_DEX_PREOPT_BOOT_FLAGS := \
|
||||||
$(strip $(PRODUCTS.$(INTERNAL_PRODUCT).PRODUCT_DEX_PREOPT_BOOT_FLAGS))
|
$(strip $(PRODUCTS.$(INTERNAL_PRODUCT).PRODUCT_DEX_PREOPT_BOOT_FLAGS))
|
||||||
# Resolve and setup per-module dex-preopot configs.
|
# Resolve and setup per-module dex-preopt configs.
|
||||||
PRODUCT_DEX_PREOPT_MODULE_CONFIGS := \
|
PRODUCT_DEX_PREOPT_MODULE_CONFIGS := \
|
||||||
$(strip $(PRODUCTS.$(INTERNAL_PRODUCT).PRODUCT_DEX_PREOPT_MODULE_CONFIGS))
|
$(strip $(PRODUCTS.$(INTERNAL_PRODUCT).PRODUCT_DEX_PREOPT_MODULE_CONFIGS))
|
||||||
# If a module has multiple setups, the first takes precedence.
|
# If a module has multiple setups, the first takes precedence.
|
||||||
@@ -403,3 +403,17 @@ $(foreach c,$(PRODUCT_DEX_PREOPT_MODULE_CONFIGS),\
|
|||||||
$(eval cf := $(subst $(_PDPMC_SP_PLACE_HOLDER),$(space),$(cf)))\
|
$(eval cf := $(subst $(_PDPMC_SP_PLACE_HOLDER),$(space),$(cf)))\
|
||||||
$(eval DEXPREOPT.$(TARGET_PRODUCT).$(m).CONFIG := $(cf))))
|
$(eval DEXPREOPT.$(TARGET_PRODUCT).$(m).CONFIG := $(cf))))
|
||||||
_pdpmc_modules :=
|
_pdpmc_modules :=
|
||||||
|
|
||||||
|
# Resolve and setup per-module sanitizer configs.
|
||||||
|
PRODUCT_SANITIZER_MODULE_CONFIGS := \
|
||||||
|
$(strip $(PRODUCTS.$(INTERNAL_PRODUCT).PRODUCT_SANITIZER_MODULE_CONFIGS))
|
||||||
|
# If a module has multiple setups, the first takes precedence.
|
||||||
|
_psmc_modules :=
|
||||||
|
$(foreach c,$(PRODUCT_SANITIZER_MODULE_CONFIGS),\
|
||||||
|
$(eval m := $(firstword $(subst =,$(space),$(c))))\
|
||||||
|
$(if $(filter $(_psmc_modules),$(m)),,\
|
||||||
|
$(eval _psmc_modules += $(m))\
|
||||||
|
$(eval cf := $(patsubst $(m)=%,%,$(c)))\
|
||||||
|
$(eval cf := $(subst $(_PSMC_SP_PLACE_HOLDER),$(space),$(cf)))\
|
||||||
|
$(eval SANITIZER.$(TARGET_PRODUCT).$(m).CONFIG := $(cf))))
|
||||||
|
_psmc_modules :=
|
||||||
|
Reference in New Issue
Block a user