[libvirt] [PATCH 1/2] build: cleanup GCC < 4.6 -Wlogical-op workaround

Pavel Hrdina phrdina at redhat.com
Mon Apr 11 10:07:26 UTC 2016


On Mon, Apr 11, 2016 at 11:30:25AM +0200, Martin Kletzander wrote:
> On Sun, Apr 10, 2016 at 06:37:58PM +0200, Pavel Hrdina wrote:
> >Signed-off-by: Pavel Hrdina <phrdina at redhat.com>
> >---
> > m4/virt-compile-warnings.m4 |  2 +-
> > src/internal.h              | 10 ++++++++++
> > src/util/virbuffer.c        | 11 +++--------
> > src/util/virstring.c        |  9 +--------
> > src/util/virsysinfo.c       | 13 ++-----------
> > 5 files changed, 17 insertions(+), 28 deletions(-)
> >
> >diff --git a/m4/virt-compile-warnings.m4 b/m4/virt-compile-warnings.m4
> >index 3dd0665..1b0a2cf 100644
> >--- a/m4/virt-compile-warnings.m4
> >+++ b/m4/virt-compile-warnings.m4
> >@@ -236,7 +236,7 @@ AC_DEFUN([LIBVIRT_COMPILE_WARNINGS],[
> >
> >     if test "$gl_cv_warn_c__Wlogical_op" = yes &&
> >        test "$lv_cv_gcc_wlogical_op_broken" = yes; then
> >-      AC_DEFINE_UNQUOTED([BROKEN_GCC_WLOGICALOP], 1,
> >+      AC_DEFINE_UNQUOTED([BROKEN_GCC_WLOGICALOP_STRCHR], 1,
> >        [Define to 1 if gcc -Wlogical-op reports false positives on strchr])
> >     fi
> > ])
> >diff --git a/src/internal.h b/src/internal.h
> >index 9ebaf3c..bc3126f 100644
> >--- a/src/internal.h
> >+++ b/src/internal.h
> >@@ -253,6 +253,16 @@
> > #  define VIR_WARNINGS_RESET
> > # endif
> >
> >+/* Workaround bogus GCC < 4.6 that produces false -Wlogical-op warnings for
> >+ * strchr(). Those old GCCs doesn't support push/pop. */
> 
> s/doesn't/don't/

Sigh, shame on me :)

> 
> >+# if BROKEN_GCC_WLOGICALOP_STRCHR
> >+#  define VIR_WARNINGS_NO_WLOGICALOP_STRCHR                \
> >+    _Pragma ("GCC diagnostic ignored \"-Wlogical-op\"")
> >+# else
> >+#  define VIR_WARNINGS_NO_WLOGICALOP_STRCHR
> >+# endif
> >+
> >+
> > /*
> >  * Use this when passing possibly-NULL strings to printf-a-likes.
> >  */
> >diff --git a/src/util/virbuffer.c b/src/util/virbuffer.c
> >index 43cd1a7..d582e7d 100644
> >--- a/src/util/virbuffer.c
> >+++ b/src/util/virbuffer.c
> >@@ -417,14 +417,9 @@ virBufferVasprintf(virBufferPtr buf, const char *format, va_list argptr)
> >     buf->use += count;
> > }
> >
> >-/* Work around spurious strchr() diagnostics given by -Wlogical-op
> >- * for gcc < 4.6.  Doing it via a local pragma keeps the damage
> >- * smaller than disabling it on the package level.  Unfortunately, the
> >- * affected GCCs don't allow diagnostic push/pop which would have
> >- * further reduced the impact. */
> 
> To make the damage as small as possible, we could create a
> src/util/virstrchr.c file in which this would be disabled, create
> something like virStrChr() in it and then disable the use of strchr()
> everywhere else in the code with syntax-check as we did with some other
> string functions.  Was that discussed as well or should I send it as a
> follow-up?

That's actually a good idea and no, it wasn't discussed.  I'll push this series
and yes send it as follow-up, its a good solution.

Thanks,

Pavel




More information about the libvir-list mailing list