]> xenbits.xensource.com Git - people/liuw/libxenctrl-split/libvirt.git/commitdiff
build: Check for broken GCC -Wlogical-op in configure
authorViktor Mihajlovski <mihajlov@linux.vnet.ibm.com>
Fri, 14 Dec 2012 15:08:23 +0000 (16:08 +0100)
committerDaniel P. Berrange <berrange@redhat.com>
Mon, 17 Dec 2012 17:36:56 +0000 (17:36 +0000)
Some older versions of GCC report a false positive on code like
  char * haystack, needle;
  strchr(haystack, needle);

Added an extra check in configure.ac which will
  #define BROKEN_GCC_WLOGICALOP 1
in this case, allowing to special handle "offending" code.

Signed-off-by: Viktor Mihajlovski <mihajlov@linux.vnet.ibm.com>
configure.ac

index 3c97e4fed0daf0a303a9b57dd1af38b0cf71ebe1..20caa92d04aceedb0d284ea776fdb83f05c3b2d1 100644 (file)
@@ -255,6 +255,29 @@ AC_CHECK_TYPE([struct ifreq],
         #include <net/if.h>
   ]])
 
+dnl Check whether strchr(s, char variable) causes a bogus compile warning
+dnl which is the case with a certain range of GCC versions
+AC_MSG_CHECKING([whether GCC -Wlogical-op is broken])
+
+save_CFLAGS="$CFLAGS"
+CFLAGS="-O2 -Wlogical-op -Werror"
+
+AC_TRY_COMPILE([#include <string.h>],
+                [const char *haystack;
+                 char needle;
+                 return strchr(haystack, needle) == haystack;],
+                [gcc_false_strchr_warning=no],
+                [gcc_false_strchr_warning=yes])
+
+CFLAGS="$save_CFLAGS"
+
+if test "x$gcc_false_strchr_warning" = xyes; then
+  AC_DEFINE_UNQUOTED([BROKEN_GCC_WLOGICALOP], 1,
+                       [GCC -Wlogical-op is reporting false positive on strchr])
+fi
+
+AC_MSG_RESULT([$gcc_false_strchr_warning])
+
 dnl Our only use of libtasn1.h is in the testsuite, and can be skipped
 dnl if the header is not present.  Assume -ltasn1 is present if the
 dnl header could be found.