The Address Sanitizer (built in GCC and LLVM) is an extremely powerful
tool, moreso than e.g. Valgrind for detecting memory issues.
It is not available on every architecture/OS combination (see
https://github.com/google/sanitizers/wiki/AddressSanitizer), so it can
only be enabled by compiling with DEBUG_ASAN=1.
Signed-off-by: Paul Cercueil <paul@crapouillou.net>
ifndef DEBUG
CFLAGS += -O2 -DNDEBUG
endif
+ifeq ($(DEBUG_ASAN), 1)
+CFLAGS += -fsanitize=address
+endif
CFLAGS += -DP_HAVE_MMAP=$(if $(NO_MMAP),0,1) \
-DP_HAVE_PTHREAD=$(if $(NO_PTHREAD),0,1) \
-DP_HAVE_POSIX_MEMALIGN=$(if $(NO_POSIX_MEMALIGN),0,1) \
CC_LINK ?= $(CC)
CC_AS ?= $(CC)
LDFLAGS += $(MAIN_LDFLAGS)
+ifeq ($(DEBUG_ASAN), 1)
+LDFLAGS += -static-libasan
+endif
EXTRA_LDFLAGS ?= -Wl,-Map=$@.map
LDLIBS += $(MAIN_LDLIBS)
ifdef PCNT