Separate lists of soong sanitize modules

Dependencies of makefile modules are being redirected according to
SOONG_CFI_STATIC_LIBRARIES and SOONG_HWASAN_STATIC_LIBRARIES. But the
variables are shared among all variants (e.g. core, vendor, product,
arch), which can cause build error.

This splits the Makefile variables into several lists, one list per each
arch and each image variant, to correctly make the redirection.

Bug: 162476652
Test: build and inspect ninja
Change-Id: I8a46804d4b7c1c485e59e10710cc514a89333fa4
This commit is contained in:
Inseob Kim
2020-08-04 00:51:33 +09:00
parent bf0c1b7b77
commit 8b0ccdafbb
2 changed files with 42 additions and 25 deletions

View File

@@ -77,6 +77,20 @@ LOCAL_SYSTEM_EXT_MODULE := true
endif
_path :=
ifeq ($(LOCAL_HOST_MODULE),true)
my_image_variant := host
else ifeq ($(LOCAL_VENDOR_MODULE),true)
my_image_variant := vendor
else ifeq ($(LOCAL_OEM_MODULE),true)
my_image_variant := vendor
else ifeq ($(LOCAL_ODM_MODULE),true)
my_image_variant := vendor
else ifeq ($(LOCAL_PRODUCT_MODULE),true)
my_image_variant := product
else
my_image_variant := core
endif
# TODO(b/135957588) Remove following workaround
# LOCAL_PRODUCT_SERVICES_MODULE to LOCAL_PRODUCT_MODULE for all Android.mk
ifndef LOCAL_PRODUCT_MODULE

View File

@@ -102,6 +102,8 @@ my_ndk_sysroot_include :=
my_ndk_sysroot_lib :=
my_api_level := 10000
my_arch := $(TARGET_$(LOCAL_2ND_ARCH_VAR_PREFIX)ARCH)
ifneq ($(LOCAL_SDK_VERSION),)
ifdef LOCAL_IS_HOST_MODULE
$(error $(LOCAL_PATH): LOCAL_SDK_VERSION cannot be used in host module)
@@ -110,7 +112,6 @@ ifneq ($(LOCAL_SDK_VERSION),)
# Make sure we've built the NDK.
my_additional_dependencies += $(SOONG_OUT_DIR)/ndk_base.timestamp
my_arch := $(TARGET_$(LOCAL_2ND_ARCH_VAR_PREFIX)ARCH)
ifneq (,$(filter arm64 x86_64,$(my_arch)))
my_min_sdk_version := 21
else
@@ -1059,38 +1060,40 @@ $(call track-src-file-obj,$(asm_sources_asm),$(asm_objects_asm))
asm_objects += $(asm_objects_asm)
endif
###################################################################
## Convert to sanitized names where they exist.
## These lists come from sanitizerStaticLibsMap; see
## build/soong/cc/sanitize.go
##
## $(1): list of static dependencies
## $(2): name of sanitizer (e.g. cfi, hwasan)
##################################################################
define use_soong_sanitized_static_libraries
$(foreach lib,$(1),$(if $(filter $(lib),\
$(SOONG_$(2)_$(my_image_variant)_$(my_arch)_STATIC_LIBRARIES)),\
$(lib).$(2),$(lib)))
endef
###################################################################
## 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))
my_whole_static_libraries := $(call use_soong_sanitized_static_libraries,\
$(my_whole_static_libraries),cfi)
my_static_libraries := $(call use_soong_sanitized_static_libraries,\
$(my_static_libraries),cfi)
endif
ifneq ($(LOCAL_USE_VNDK),)
my_soong_hwasan_static_libraries := $(SOONG_HWASAN_VENDOR_STATIC_LIBRARIES)
else
my_soong_hwasan_static_libraries = $(SOONG_HWASAN_STATIC_LIBRARIES)
endif
define use_soong_hwasan_static_libraries
$(foreach l,$(1),$(if $(filter $(l),$(my_soong_hwasan_static_libraries)),\
$(l).hwasan,$(l)))
endef
###################################################################
## When compiling a hwasan enabled target, use the .hwasan variant
## of any static dependencies (where they exist).
##################################################################
ifneq ($(filter hwaddress,$(my_sanitize)),)
my_whole_static_libraries := $(call use_soong_hwasan_static_libraries,\
$(my_whole_static_libraries))
my_static_libraries := $(call use_soong_hwasan_static_libraries,\
$(my_static_libraries))
my_whole_static_libraries := $(call use_soong_sanitized_static_libraries,\
$(my_whole_static_libraries),hwasan)
my_static_libraries := $(call use_soong_sanitized_static_libraries,\
$(my_static_libraries),hwasan)
endif
###########################################################