Convert asan.options and asan_extract to Android.bp

In the original Android.mk, `asan.option` is only enabled when
"address" is present in SANITIZE_TARGET.
`asan_extract` is only enabled when `SANITIZE_TARGET_SYSTEM` is `true`
and `address` is present in SANITIZE_TARGET.

However, in the normal build system design, a module should `not`
decide when it should be enabled.
Therefore, the `ifeq` condition should be directly removed during
conversion.

The correct approach is:
Wait until converting `init.environ.rc`, then use `select` or similar
methods to determine whether it should use `asan.option` or
`asan_extract`.

Bug: 353164536
Test: SANITIZE_TARGET=address m init.environ.rc
      SANITIZE_TARGET_SYSTEM=true SANITIZE_TARGET=address m init.environ.rc
Change-Id: I69af3199536a3ba9f54dcfa198295826303e2d22
This commit is contained in:
Nelson Li 2024-07-17 10:16:39 +08:00
parent c36f4f057b
commit b335f4d4be
2 changed files with 14 additions and 28 deletions

View file

@ -114,10 +114,23 @@ prebuilt_etc {
sub_dir: "init",
}
prebuilt_etc {
name: "asan.options",
src: "asan.options",
}
sh_binary {
name: "asan_extract",
src: "asan_extract.sh",
init_rc: ["asan_extract.rc"],
// We need bzip2 on device for extraction.
required: ["bzip2"],
}
llndk_libraries_txt {
name: "llndk.libraries.txt",
}
sanitizer_libraries_txt {
name: "sanitizer.libraries.txt",
}
}

View file

@ -3,39 +3,12 @@ LOCAL_PATH:= $(call my-dir)
$(eval $(call declare-1p-copy-files,system/core/rootdir,))
#######################################
# asan.options
ifneq ($(filter address,$(SANITIZE_TARGET)),)
include $(CLEAR_VARS)
LOCAL_MODULE := asan.options
LOCAL_LICENSE_KINDS := SPDX-license-identifier-Apache-2.0
LOCAL_LICENSE_CONDITIONS := notice
LOCAL_MODULE_CLASS := ETC
LOCAL_SRC_FILES := $(LOCAL_MODULE)
LOCAL_MODULE_PATH := $(TARGET_OUT)
include $(BUILD_PREBUILT)
# ASAN extration.
ASAN_EXTRACT_FILES :=
ifeq ($(SANITIZE_TARGET_SYSTEM),true)
include $(CLEAR_VARS)
LOCAL_MODULE:= asan_extract
LOCAL_LICENSE_KINDS:= SPDX-license-identifier-Apache-2.0
LOCAL_LICENSE_CONDITIONS:= notice
LOCAL_MODULE_TAGS := optional
LOCAL_MODULE_CLASS := EXECUTABLES
LOCAL_SRC_FILES := asan_extract.sh
LOCAL_INIT_RC := asan_extract.rc
# We need bzip2 on device for extraction.
LOCAL_REQUIRED_MODULES := bzip2
include $(BUILD_PREBUILT)
ASAN_EXTRACT_FILES := asan_extract
endif
endif
#######################################
# init.environ.rc