Loading core/config_sanitizers.mk +25 −0 Original line number Original line Diff line number Diff line Loading @@ -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 := Loading core/product.mk +12 −0 Original line number Original line Diff line number Diff line Loading @@ -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_SYSTEM_BASE_FS_PATH \ PRODUCT_SYSTEM_BASE_FS_PATH \ PRODUCT_VENDOR_BASE_FS_PATH \ PRODUCT_VENDOR_BASE_FS_PATH \ PRODUCT_SHIPPING_API_LEVEL \ PRODUCT_SHIPPING_API_LEVEL \ Loading Loading @@ -336,3 +337,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 core/product_config.mk +15 −1 Original line number Original line Diff line number Diff line Loading @@ -392,7 +392,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. Loading @@ -405,3 +405,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 := Loading
core/config_sanitizers.mk +25 −0 Original line number Original line Diff line number Diff line Loading @@ -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 := Loading
core/product.mk +12 −0 Original line number Original line Diff line number Diff line Loading @@ -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_SYSTEM_BASE_FS_PATH \ PRODUCT_SYSTEM_BASE_FS_PATH \ PRODUCT_VENDOR_BASE_FS_PATH \ PRODUCT_VENDOR_BASE_FS_PATH \ PRODUCT_SHIPPING_API_LEVEL \ PRODUCT_SHIPPING_API_LEVEL \ Loading Loading @@ -336,3 +337,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
core/product_config.mk +15 −1 Original line number Original line Diff line number Diff line Loading @@ -392,7 +392,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. Loading @@ -405,3 +405,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 :=