Merge "Add buttons to group warning by project or severity."
diff --git a/core/clang/tidy.mk b/core/clang/tidy.mk
index 7ec9378..c1d485d 100644
--- a/core/clang/tidy.mk
+++ b/core/clang/tidy.mk
@@ -78,6 +78,7 @@
 # Do not give warnings to external or vendor header files,
 # which contain too many warnings.
 DEFAULT_TIDY_HEADER_DIRS := \
+  $(subst $(space),, \
      art/ \
     |bionic/ \
     |bootable/ \
@@ -89,7 +90,8 @@
     |frameworks/ \
     |libcore/ \
     |libnativehelper/ \
-    |system/
+    |system/ \
+  )
 
 # Default filter contains current directory $1 and DEFAULT_TIDY_HEADER_DIRS.
 define default_tidy_header_filter
diff --git a/core/clear_vars.mk b/core/clear_vars.mk
index 4f0c839..0f3ecc3 100644
--- a/core/clear_vars.mk
+++ b/core/clear_vars.mk
@@ -197,6 +197,7 @@
 LOCAL_DPI_FILE_STEM:=
 LOCAL_SANITIZE:=
 LOCAL_SANITIZE_RECOVER:=
+LOCAL_SANITIZE_DIAG:=
 LOCAL_NOSANITIZE:=
 LOCAL_DATA_BINDING:=
 LOCAL_DBUS_PROXY_PREFIX:=
diff --git a/core/config_sanitizers.mk b/core/config_sanitizers.mk
index ac3e4fc..2e14fef 100644
--- a/core/config_sanitizers.mk
+++ b/core/config_sanitizers.mk
@@ -133,6 +133,11 @@
   endif
 endif
 
+ifneq ($(filter cfi,$(my_sanitize)),)
+  my_cflags += -flto -fsanitize-cfi-cross-dso -fvisibility=default
+  my_ldflags += -flto -fsanitize-cfi-cross-dso -fsanitize=cfi -Wl,-plugin-opt,O1 -Wl,-export-dynamic-symbol=__cfi_check
+endif
+
 # If local or global modules need ASAN, add linker flags.
 ifneq ($(filter address,$(my_global_sanitize) $(my_sanitize)),)
   my_ldflags += $(ADDRESS_SANITIZER_CONFIG_EXTRA_LDFLAGS)
@@ -187,3 +192,13 @@
   recover_arg := $(subst $(space),$(comma),$(LOCAL_SANITIZE_RECOVER)),
   my_cflags += -fsanitize-recover=$(recover_arg)
 endif
+
+ifneq ($(strip $(LOCAL_SANITIZE_DIAG)),)
+  notrap_arg := $(subst $(space),$(comma),$(LOCAL_SANITIZE_DIAG)),
+  my_cflags += -fno-sanitize-trap=$(notrap_arg)
+  # Diagnostic requires a runtime library, unless ASan or TSan are also enabled.
+  ifeq ($(filter address thread,$(my_sanitize)),)
+    # Does not have to be the first DT_NEEDED unlike ASan.
+    my_shared_libraries += $($(LOCAL_2ND_ARCH_VAR_PREFIX)UBSAN_RUNTIME_LIBRARY)
+  endif
+endif
diff --git a/target/product/embedded.mk b/target/product/embedded.mk
index 55de3b9..5faf24f 100644
--- a/target/product/embedded.mk
+++ b/target/product/embedded.mk
@@ -32,6 +32,7 @@
     grep \
     gzip \
     healthd \
+    hwservicemanager \
     init \
     init.environ.rc \
     init.rc \