Merge "Add support for a partial ubsan build."
diff --git a/core/clang/config.mk b/core/clang/config.mk
index e2a4c08..24c06b6 100644
--- a/core/clang/config.mk
+++ b/core/clang/config.mk
@@ -98,6 +98,32 @@
CLANG_CONFIG_TARGET_EXTRA_CPPFLAGS := -nostdlibinc
CLANG_CONFIG_TARGET_EXTRA_LDFLAGS :=
+CLANG_DEFAULT_UB_CHECKS := \
+ bool \
+ integer-divide-by-zero \
+ return \
+ returns-nonnull-attribute \
+ shift-exponent \
+ unreachable \
+ vla-bound \
+
+# TODO(danalbert): The following checks currently have compiler performance
+# issues.
+# CLANG_DEFAULT_UB_CHECKS += alignment
+# CLANG_DEFAULT_UB_CHECKS += bounds
+# CLANG_DEFAULT_UB_CHECKS += enum
+# CLANG_DEFAULT_UB_CHECKS += float-cast-overflow
+# CLANG_DEFAULT_UB_CHECKS += float-divide-by-zero
+# CLANG_DEFAULT_UB_CHECKS += nonnull-attribute
+# CLANG_DEFAULT_UB_CHECKS += null
+# CLANG_DEFAULT_UB_CHECKS += shift-base
+# CLANG_DEFAULT_UB_CHECKS += signed-integer-overflow
+
+# TODO(danalbert): Fix UB in libc++'s __tree so we can turn this on.
+# https://llvm.org/PR19302
+# http://reviews.llvm.org/D6974
+# CLANG_DEFAULT_UB_CHECKS += object-size
+
# HOST config
clang_2nd_arch_prefix :=
include $(BUILD_SYSTEM)/clang/HOST_$(HOST_ARCH).mk
diff --git a/core/config_sanitizers.mk b/core/config_sanitizers.mk
index b433712..210d442 100644
--- a/core/config_sanitizers.mk
+++ b/core/config_sanitizers.mk
@@ -50,11 +50,15 @@
endif
endif
-unknown_sanitizers := $(filter-out address, \
- $(filter-out undefined,$(my_sanitize)))
+ifneq ($(filter default-ub,$(my_sanitize)),)
+ my_sanitize := $(CLANG_DEFAULT_UB_CHECKS)
+ my_ldlibs += -ldl
-ifneq ($(unknown_sanitizers),)
- $(error Unknown sanitizers: $(unknown_sanitizers))
+ ifdef LOCAL_IS_HOST_MODULE
+ my_cflags += -fno-sanitize-recover=all
+ else
+ my_cflags += -fsanitize-undefined-trap-on-error
+ endif
endif
ifneq ($(my_sanitize),)