Revert "Revert "[make] Add memtag-stack sanitizer, switch to linker-generated notes.""
This reverts commit fe3e537192
.
Reason for revert: reland with fix
Change-Id: I199e0e0d0bbb7e74292c6406b7d9fe4db7449d59
This commit is contained in:
parent
a2159cd341
commit
548a2adaf7
1 changed files with 25 additions and 14 deletions
|
@ -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.
|
||||
|
@ -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
|
||||
|
@ -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,$(my_sanitize_diag)),)
|
||||
my_whole_static_libraries += note_memtag_heap_sync
|
||||
else
|
||||
my_whole_static_libraries += note_memtag_heap_async
|
||||
endif
|
||||
ifneq ($(filter memtag_heap memtag_stack,$(my_sanitize)),)
|
||||
ifneq ($(filter memtag_heap,$(my_sanitize_diag)),)
|
||||
my_cflags += -fsanitize-memtag-mode=sync
|
||||
my_sanitize_diag := $(filter-out memtag_heap,$(my_sanitize_diag))
|
||||
else
|
||||
my_cflags += -fsanitize-memtag-mode=async
|
||||
endif
|
||||
# This is all that memtag_heap does - it is not an actual -fsanitize argument.
|
||||
# Remove it from the list.
|
||||
endif
|
||||
|
||||
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…
Reference in a new issue