From: Ivan Poddubny Date: Sat, 10 Oct 2015 20:20:55 +0000 (+0300) Subject: Build: Add menuselect options for using compiler sanitizers X-Git-Tag: 11.21.0-rc1~31^2 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=a0bb7b50ae25fb2c6c222392214e761c0c5b1ec4;p=thirdparty%2Fasterisk.git Build: Add menuselect options for using compiler sanitizers This patch adds menuselect options for building Asterisk with various sanitizers provided by gcc and clang. When one of *SANITIZER flags is set in menuselect, the appropriate option is added to CFLAGS ad LDFLAGS for the build. Information on sanitizers in the project wiki: https://github.com/google/sanitizers/wiki GCC Manual: https://gcc.gnu.org/onlinedocs/gcc/Debugging-Options.html Clang Compiler User's Manual: http://clang.llvm.org/docs/UsersManual.html#controlling-code-generation ASTERISK-24718 #close Reported by: Badalian Vyacheslav Change-Id: Iafa51b792b7bcb20e848b99d16cf362d08590fa0 --- diff --git a/Makefile.rules b/Makefile.rules index 54df636c2f..d5dd5e39a4 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 95af0acb41..b5c447be6a 100644 --- a/build_tools/cflags.xml +++ b/build_tools/cflags.xml @@ -63,6 +63,32 @@ core + + extended + THREAD_SANITIZER + LEAK_SANITIZER + UNDEFINED_SANITIZER + MALLOC_DEBUG + + + extended + ADDRESS_SANITIZER + LEAK_SANITIZER + UNDEFINED_SANITIZER + + + extended + ADDRESS_SANITIZER + THREAD_SANITIZER + UNDEFINED_SANITIZER + MALLOC_DEBUG + + + extended + ADDRESS_SANITIZER + THREAD_SANITIZER + LEAK_SANITIZER + BUSYDETECT_COMPARE_TONE_AND_SILENCE no