Loading core/config_sanitizers.mk +25 −14 Original line number Diff line number Diff line Loading @@ -161,17 +161,19 @@ ifeq ($(strip $(ENABLE_CFI)),false) my_sanitize_diag := $(filter-out cfi,$(my_sanitize_diag)) endif # Also disable CFI if ASAN is enabled. # Also disable CFI and MTE if ASAN is enabled. ifneq ($(filter address,$(my_sanitize)),) my_sanitize := $(filter-out cfi,$(my_sanitize)) my_sanitize := $(filter-out memtag_stack,$(my_sanitize)) my_sanitize := $(filter-out memtag_heap,$(my_sanitize)) my_sanitize_diag := $(filter-out cfi,$(my_sanitize_diag)) endif # Disable memtag for host targets. Host executables in AndroidMk files are # deprecated, but some partners still have them floating around. ifdef LOCAL_IS_HOST_MODULE my_sanitize := $(filter-out memtag_heap,$(my_sanitize)) my_sanitize_diag := $(filter-out memtag_heap,$(my_sanitize_diag)) my_sanitize := $(filter-out memtag_heap memtag_stack,$(my_sanitize)) my_sanitize_diag := $(filter-out memtag_heap memtag_stack,$(my_sanitize_diag)) endif # Disable sanitizers which need the UBSan runtime for host targets. Loading Loading @@ -205,10 +207,13 @@ endif ifneq ($(filter arm x86 x86_64,$(TARGET_$(LOCAL_2ND_ARCH_VAR_PREFIX)ARCH)),) my_sanitize := $(filter-out hwaddress,$(my_sanitize)) my_sanitize := $(filter-out memtag_heap,$(my_sanitize)) my_sanitize := $(filter-out memtag_stack,$(my_sanitize)) endif ifneq ($(filter hwaddress,$(my_sanitize)),) my_sanitize := $(filter-out address,$(my_sanitize)) my_sanitize := $(filter-out memtag_stack,$(my_sanitize)) my_sanitize := $(filter-out memtag_heap,$(my_sanitize)) my_sanitize := $(filter-out thread,$(my_sanitize)) my_sanitize := $(filter-out cfi,$(my_sanitize)) endif Loading @@ -224,21 +229,27 @@ ifneq ($(filter hwaddress,$(my_sanitize)),) endif endif ifneq ($(filter memtag_heap,$(my_sanitize)),) # Add memtag ELF note. ifneq ($(filter EXECUTABLES NATIVE_TESTS,$(LOCAL_MODULE_CLASS)),) ifneq ($(filter memtag_heap memtag_stack,$(my_sanitize)),) ifneq ($(filter memtag_heap,$(my_sanitize_diag)),) my_whole_static_libraries += note_memtag_heap_sync my_cflags += -fsanitize-memtag-mode=sync my_sanitize_diag := $(filter-out memtag_heap,$(my_sanitize_diag)) else my_whole_static_libraries += note_memtag_heap_async my_cflags += -fsanitize-memtag-mode=async endif endif # This is all that memtag_heap does - it is not an actual -fsanitize argument. # Remove it from the list. ifneq ($(filter memtag_heap,$(my_sanitize)),) my_cflags += -fsanitize=memtag-heap my_sanitize := $(filter-out memtag_heap,$(my_sanitize)) endif my_sanitize_diag := $(filter-out memtag_heap,$(my_sanitize_diag)) ifneq ($(filter memtag_stack,$(my_sanitize)),) my_cflags += -fsanitize=memtag-stack my_cflags += -march=armv8a+memtag my_ldflags += -march=armv8a+memtag my_asflags += -march=armv8a+memtag my_sanitize := $(filter-out memtag_stack,$(my_sanitize)) endif # TSAN is not supported on 32-bit architectures. For non-multilib cases, make # its use an error. For multilib cases, don't use it for the 32-bit case. Loading Loading
core/config_sanitizers.mk +25 −14 Original line number Diff line number Diff line Loading @@ -161,17 +161,19 @@ ifeq ($(strip $(ENABLE_CFI)),false) my_sanitize_diag := $(filter-out cfi,$(my_sanitize_diag)) endif # Also disable CFI if ASAN is enabled. # Also disable CFI and MTE if ASAN is enabled. ifneq ($(filter address,$(my_sanitize)),) my_sanitize := $(filter-out cfi,$(my_sanitize)) my_sanitize := $(filter-out memtag_stack,$(my_sanitize)) my_sanitize := $(filter-out memtag_heap,$(my_sanitize)) my_sanitize_diag := $(filter-out cfi,$(my_sanitize_diag)) endif # Disable memtag for host targets. Host executables in AndroidMk files are # deprecated, but some partners still have them floating around. ifdef LOCAL_IS_HOST_MODULE my_sanitize := $(filter-out memtag_heap,$(my_sanitize)) my_sanitize_diag := $(filter-out memtag_heap,$(my_sanitize_diag)) my_sanitize := $(filter-out memtag_heap memtag_stack,$(my_sanitize)) my_sanitize_diag := $(filter-out memtag_heap memtag_stack,$(my_sanitize_diag)) endif # Disable sanitizers which need the UBSan runtime for host targets. Loading Loading @@ -205,10 +207,13 @@ endif ifneq ($(filter arm x86 x86_64,$(TARGET_$(LOCAL_2ND_ARCH_VAR_PREFIX)ARCH)),) my_sanitize := $(filter-out hwaddress,$(my_sanitize)) my_sanitize := $(filter-out memtag_heap,$(my_sanitize)) my_sanitize := $(filter-out memtag_stack,$(my_sanitize)) endif ifneq ($(filter hwaddress,$(my_sanitize)),) my_sanitize := $(filter-out address,$(my_sanitize)) my_sanitize := $(filter-out memtag_stack,$(my_sanitize)) my_sanitize := $(filter-out memtag_heap,$(my_sanitize)) my_sanitize := $(filter-out thread,$(my_sanitize)) my_sanitize := $(filter-out cfi,$(my_sanitize)) endif Loading @@ -224,21 +229,27 @@ ifneq ($(filter hwaddress,$(my_sanitize)),) endif endif ifneq ($(filter memtag_heap,$(my_sanitize)),) # Add memtag ELF note. ifneq ($(filter EXECUTABLES NATIVE_TESTS,$(LOCAL_MODULE_CLASS)),) ifneq ($(filter memtag_heap memtag_stack,$(my_sanitize)),) ifneq ($(filter memtag_heap,$(my_sanitize_diag)),) my_whole_static_libraries += note_memtag_heap_sync my_cflags += -fsanitize-memtag-mode=sync my_sanitize_diag := $(filter-out memtag_heap,$(my_sanitize_diag)) else my_whole_static_libraries += note_memtag_heap_async my_cflags += -fsanitize-memtag-mode=async endif endif # This is all that memtag_heap does - it is not an actual -fsanitize argument. # Remove it from the list. ifneq ($(filter memtag_heap,$(my_sanitize)),) my_cflags += -fsanitize=memtag-heap my_sanitize := $(filter-out memtag_heap,$(my_sanitize)) endif my_sanitize_diag := $(filter-out memtag_heap,$(my_sanitize_diag)) ifneq ($(filter memtag_stack,$(my_sanitize)),) my_cflags += -fsanitize=memtag-stack my_cflags += -march=armv8a+memtag my_ldflags += -march=armv8a+memtag my_asflags += -march=armv8a+memtag my_sanitize := $(filter-out memtag_stack,$(my_sanitize)) endif # TSAN is not supported on 32-bit architectures. For non-multilib cases, make # its use an error. For multilib cases, don't use it for the 32-bit case. Loading