diff --git a/Makefile.rules b/Makefile.rules
index a274c95729..1031f2defe 100644
--- a/Makefile.rules
+++ b/Makefile.rules
@@ -27,6 +27,26 @@
# extra cflags to build dependencies. Recursively expanded.
MAKE_DEPS=-MD -MT $@ -MF .$(subst /,_,$@).d -MP
+ifeq ($(findstring ADDRESS_SANITIZER,$(MENUSELECT_CFLAGS)),ADDRESS_SANITIZER)
+ _ASTLDFLAGS+=-fsanitize=address
+ _ASTCFLAGS+=-fno-omit-frame-pointer -fsanitize=address
+endif
+
+ifeq ($(findstring THREAD_SANITIZER,$(MENUSELECT_CFLAGS)),THREAD_SANITIZER)
+ _ASTLDFLAGS+=-fsanitize=thread -pie -fPIE
+ _ASTCFLAGS+=-fno-omit-frame-pointer -pie -fPIE -fsanitize=thread
+endif
+
+ifeq ($(findstring LEAK_SANITIZER,$(MENUSELECT_CFLAGS)),LEAK_SANITIZER)
+ _ASTLDFLAGS+=-fsanitize=leak
+ _ASTCFLAGS+=-fno-omit-frame-pointer -fsanitize=leak
+endif
+
+ifeq ($(findstring UNDEFINED_SANITIZER,$(MENUSELECT_CFLAGS)),UNDEFINED_SANITIZER)
+ _ASTLDFLAGS+=-fsanitize=undefined
+ _ASTCFLAGS+=-fno-omit-frame-pointer -fsanitize=undefined
+endif
+
ifeq ($(NOISY_BUILD),)
ECHO_PREFIX=@
CMD_PREFIX=@
diff --git a/build_tools/cflags.xml b/build_tools/cflags.xml
index 1a2e78ff87..d11fb22e52 100644
--- a/build_tools/cflags.xml
+++ b/build_tools/cflags.xml
@@ -84,6 +84,34 @@
MALLOC_DEBUG
core
+
+ extended
+ THREAD_SANITIZER
+ LEAK_SANITIZER
+ UNDEFINED_SANITIZER
+ MALLOC_DEBUG
+ DEBUG_CHAOS
+
+
+ extended
+ ADDRESS_SANITIZER
+ LEAK_SANITIZER
+ UNDEFINED_SANITIZER
+
+
+ extended
+ ADDRESS_SANITIZER
+ THREAD_SANITIZER
+ UNDEFINED_SANITIZER
+ MALLOC_DEBUG
+ DEBUG_CHAOS
+
+
+ extended
+ ADDRESS_SANITIZER
+ THREAD_SANITIZER
+ LEAK_SANITIZER
+
BUSYDETECT_COMPARE_TONE_AND_SILENCE
no