]> git.puffer.fish Git - matthieu/frr.git/commitdiff
configure.ac: --enable-[thread,memory]-sanitizer
authorQuentin Young <qlyoung@cumulusnetworks.com>
Thu, 22 Mar 2018 18:25:28 +0000 (14:25 -0400)
committerQuentin Young <qlyoung@cumulusnetworks.com>
Thu, 22 Mar 2018 18:25:28 +0000 (14:25 -0400)
Add configure options to enable the other sanitizers.

Signed-off-by: Quentin Young <qlyoung@cumulusnetworks.com>
configure.ac

index b2a997afdd0eaf47915d2e2c6cd95103bc3fd81a..0b94115dbaf75a11b5d5fe974cf537892134751c 100755 (executable)
@@ -196,6 +196,26 @@ AC_ARG_ENABLE([address-sanitizer], AS_HELP_STRING([--enable-address-sanitizer],
                                                  [AC_MSG_ERROR([Address Sanitizer not available])])
               ])
 
+dnl ThreadSanitizer support
+AC_ARG_ENABLE([thread-sanitizer], AS_HELP_STRING([--enable-thread-sanitizer], \
+              [enabled ThreadSanitizer support for detecting data races]), \
+              [AC_DEFINE(HAVE_THREAD_SANITIZER, 1, [enable ThreadSanitizer])
+              CFLAGS="$CFLAGS -fsanitize=thread"
+              CXXFLAGS="$CXXFLAGS -fsanitize=thread"
+              AC_TRY_COMPILE([],[const int i=0;],[AC_MSG_NOTICE([Thread Sanitizer Enabled])],
+                                                 [AC_MSG_ERROR([Thread Sanitizer not available])])
+              ])
+
+dnl MemorySanitizer support
+AC_ARG_ENABLE([memory-sanitizer], AS_HELP_STRING([--enable-memory-sanitizer], \
+              [enabled MemorySanitizer support for detecting uninitialized memory reads]), \
+              [AC_DEFINE(HAVE_THREAD_SANITIZER, 1, [enable MemorySanitizer])
+              CFLAGS="$CFLAGS -fsanitize=memory -fPIE -pie"
+              CXXFLAGS="$CXXFLAGS -fsanitize=memory -fPIE -pie"
+              AC_TRY_COMPILE([],[const int i=0;],[AC_MSG_NOTICE([Memory Sanitizer Enabled])],
+                                                 [AC_MSG_ERROR([Memory Sanitizer not available])])
+              ])
+
 dnl if the user has specified any CFLAGS, override our settings
 if test "x${enable_dev_build}" = "xyes"; then
    AC_DEFINE(DEV_BUILD,,Build for development)