[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]

[libvirt] [PATCHv3 1/3] build: Check for broken GCC -Wlogical-op in configure

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
in this case, allowing to special handle "offending" code.

Signed-off-by: Viktor Mihajlovski <mihajlov linux vnet ibm com>
 configure.ac |   23 +++++++++++++++++++++++
 1 file changed, 23 insertions(+)

diff --git a/configure.ac b/configure.ac
index bf32f95..dbcd079 100644
--- a/configure.ac
+++ b/configure.ac
@@ -254,6 +254,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])
+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])
+if test "x$gcc_false_strchr_warning" = xyes; then
+  		     [GCC -Wlogical-op is reporting false positive on strchr])
 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.

[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]