Add LOCAL_SANITIZE_RECOVER.
This is needed for projects that have known ubsan issues that we can't
fix right away (perhaps because it's an upstream project that we're
diligent about keeping in sync with upsteam).
Also make the normal ubsan use -fno-sanitize-recover=all by default.
Change-Id: I1b0f3309792f32dbd08c18816d7306e76c8d7c30
diff --git a/core/clear_vars.mk b/core/clear_vars.mk
index ea68402..3687d94 100644
--- a/core/clear_vars.mk
+++ b/core/clear_vars.mk
@@ -173,6 +173,7 @@
LOCAL_DPI_VARIANTS:=
LOCAL_DPI_FILE_STEM:=
LOCAL_SANITIZE:=
+LOCAL_SANITIZE_RECOVER:=
# arch specific variables
LOCAL_SRC_FILES_$(TARGET_ARCH):=
diff --git a/core/config_sanitizers.mk b/core/config_sanitizers.mk
index 210d442..f9dd004 100644
--- a/core/config_sanitizers.mk
+++ b/core/config_sanitizers.mk
@@ -86,9 +86,17 @@
endif
ifneq ($(filter undefined,$(my_sanitize)),)
+ my_cflags += -fno-sanitize-recover=all
+
ifdef LOCAL_IS_HOST_MODULE
my_ldlibs += -ldl
else
$(error ubsan is not yet supported on the target)
endif
endif
+
+
+ifeq ($(strip $(LOCAL_SANITIZE_RECOVER)),true)
+ recover_arg := $(subst $(space),$(comma),$(my_sanitize)),
+ my_cflags += -fsanitize-recover=$(recover_arg)
+endif