mirror of
				https://github.com/asterisk/asterisk.git
				synced 2025-10-31 02:37:10 +00:00 
			
		
		
		
	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
This commit is contained in:
		| @@ -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=@ | ||||
|   | ||||
| @@ -84,6 +84,34 @@ | ||||
| 			<conflict>MALLOC_DEBUG</conflict> | ||||
| 			<support_level>core</support_level> | ||||
| 		</member> | ||||
| 		<member name="ADDRESS_SANITIZER" displayname="Address Sanitizer"> | ||||
| 			<support_level>extended</support_level> | ||||
| 			<conflict>THREAD_SANITIZER</conflict> | ||||
| 			<conflict>LEAK_SANITIZER</conflict> | ||||
| 			<conflict>UNDEFINED_SANITIZER</conflict> | ||||
| 			<conflict>MALLOC_DEBUG</conflict> | ||||
| 			<conflict>DEBUG_CHAOS</conflict> | ||||
| 		</member> | ||||
| 		<member name="THREAD_SANITIZER" displayname="Thread Sanitizer"> | ||||
| 			<support_level>extended</support_level> | ||||
| 			<conflict>ADDRESS_SANITIZER</conflict> | ||||
| 			<conflict>LEAK_SANITIZER</conflict> | ||||
| 			<conflict>UNDEFINED_SANITIZER</conflict> | ||||
| 		</member> | ||||
| 		<member name="LEAK_SANITIZER" displayname="Leak Sanitizer"> | ||||
| 			<support_level>extended</support_level> | ||||
| 			<conflict>ADDRESS_SANITIZER</conflict> | ||||
| 			<conflict>THREAD_SANITIZER</conflict> | ||||
| 			<conflict>UNDEFINED_SANITIZER</conflict> | ||||
| 			<conflict>MALLOC_DEBUG</conflict> | ||||
| 			<conflict>DEBUG_CHAOS</conflict> | ||||
| 		</member> | ||||
| 		<member name="UNDEFINED_SANITIZER" displayname="Undefined Behavior Sanitizer"> | ||||
| 			<support_level>extended</support_level> | ||||
| 			<conflict>ADDRESS_SANITIZER</conflict> | ||||
| 			<conflict>THREAD_SANITIZER</conflict> | ||||
| 			<conflict>LEAK_SANITIZER</conflict> | ||||
| 		</member> | ||||
| 		<member name="BUSYDETECT_TONEONLY" displayname="Enable additional comparision of only the tone duration not the silence part"> | ||||
| 			<conflict>BUSYDETECT_COMPARE_TONE_AND_SILENCE</conflict> | ||||
| 			<defaultenabled>no</defaultenabled> | ||||
|   | ||||
		Reference in New Issue
	
	Block a user