summaryrefslogtreecommitdiff
path: root/configure.ac
diff options
context:
space:
mode:
authorBadalyan Vyacheslav <slavon.net@gmail.com>2016-02-10 05:40:32 +0000
committerBadalian Vyacheslav <v.badalyan@open-bs.ru>2016-02-09 23:51:05 -0600
commitbd07b6f0dd3f4e490d0c2f0d81d045a977c03eca (patch)
tree10debcae50842021e225649e22e1d2eda57f1f13 /configure.ac
parent93e8ed01544bb1b9cba1dc24b06e157e3add9e23 (diff)
Build: Added testing compiler to support the system sanitizes
In older versions of the compiler was not sanitizes. Compilers other than GCC can not support the Usan and TSAN or have other options for *FLAGS. ASTERISK-25767 #close Reported by: Badalyan Vyacheslav Tested by: Badalyan Vyacheslav Change-Id: Iefce6608221fa87884b82ae3cb5649b7b1804916
Diffstat (limited to 'configure.ac')
-rw-r--r--configure.ac64
1 files changed, 64 insertions, 0 deletions
diff --git a/configure.ac b/configure.ac
index 63213671f..c85d6f5fa 100644
--- a/configure.ac
+++ b/configure.ac
@@ -1049,6 +1049,70 @@ AST_GCC_ATTRIBUTE(may_alias)
AST_GCC_ATTRIBUTE(constructor)
AST_GCC_ATTRIBUTE(destructor)
+AC_MSG_CHECKING(for -fsanitize=address support)
+saved_sanitize_CFLAGS="${CFLAGS}"
+saved_sanitize_LDFLAGS="${LDFLAGS}"
+CFLAGS="-fsanitize=address -fno-omit-frame-pointer"
+LDFLAGS="-fsanitize=address"
+AC_COMPILE_IFELSE(
+ [AC_LANG_PROGRAM([], [int x = 1;])],
+ AC_MSG_RESULT(yes)
+ [AST_ADDRESS_SANITIZER=1],
+ [AST_ADDRESS_SANITIZER=]
+ AC_MSG_RESULT(no)
+)
+CFLAGS="${saved_sanitize_CFLAGS}"
+LDFLAGS="${saved_sanitize_LDFLAGS}"
+AC_SUBST(AST_ADDRESS_SANITIZER)
+
+AC_MSG_CHECKING(for -fsanitize=thread support)
+saved_sanitize_CFLAGS="${CFLAGS}"
+saved_sanitize_LDFLAGS="${LDFLAGS}"
+CFLAGS="-fno-omit-frame-pointer -pie -fPIE -fsanitize=thread"
+LDFLAGS="-fsanitize=thread -pie -fPIE"
+AC_COMPILE_IFELSE(
+ [AC_LANG_PROGRAM([], [int x = 1;])],
+ AC_MSG_RESULT(yes)
+ [AST_THREAD_SANITIZER=1],
+ [AST_THREAD_SANITIZER=]
+ AC_MSG_RESULT(no)
+)
+CFLAGS="${saved_sanitize_CFLAGS}"
+LDFLAGS="${saved_sanitize_LDFLAGS}"
+AC_SUBST(AST_THREAD_SANITIZER)
+
+AC_MSG_CHECKING(for -fsanitize=leak support)
+saved_sanitize_CFLAGS="${CFLAGS}"
+saved_sanitize_LDFLAGS="${LDFLAGS}"
+CFLAGS="-fno-omit-frame-pointer -fsanitize=leak"
+LDFLAGS="-fsanitize=leak"
+AC_COMPILE_IFELSE(
+ [AC_LANG_PROGRAM([], [int x = 1;])],
+ AC_MSG_RESULT(yes)
+ [AST_LEAK_SANITIZER=1],
+ [AST_LEAK_SANITIZER=]
+ AC_MSG_RESULT(no)
+)
+CFLAGS="${saved_sanitize_CFLAGS}"
+LDFLAGS="${saved_sanitize_LDFLAGS}"
+AC_SUBST(AST_LEAK_SANITIZER)
+
+AC_MSG_CHECKING(for -fsanitize=undefined support)
+saved_sanitize_CFLAGS="${CFLAGS}"
+saved_sanitize_LDFLAGS="${LDFLAGS}"
+CFLAGS="-fno-omit-frame-pointer -fsanitize=undefined"
+LDFLAGS="-fsanitize=undefined"
+AC_COMPILE_IFELSE(
+ [AC_LANG_PROGRAM([], [int x = 1;])],
+ AC_MSG_RESULT(yes)
+ [AST_UNDEFINED_SANITIZER=1],
+ [AST_UNDEFINED_SANITIZER=]
+ AC_MSG_RESULT(no)
+)
+CFLAGS="${saved_sanitize_CFLAGS}"
+LDFLAGS="${saved_sanitize_LDFLAGS}"
+AC_SUBST(AST_UNDEFINED_SANITIZER)
+
AC_MSG_CHECKING(for -ffunction-sections support)
saved_CFLAGS="${CFLAGS}"
CFLAGS="${CFLAGS} -ffunction-sections"