[libvirt] [PATCH] build: avoid warnings on older gcc
Viktor Mihajlovski
mihajlov at linux.vnet.ibm.com
Wed Aug 15 15:24:42 UTC 2012
On 08/15/2012 12:42 AM, Eric Blake wrote:
> The previous patch pulled in a newer version of stat-time.h from
> gnulib, which tries to suppress some stupid gcc warnings (see
> <http://gcc.gnu.org/bugzilla/show_bug.cgi?id=54113>) by exploiting
> a feature of newer gcc. But we still aim to compile on RHEL 6.3,
> with gcc 4.4.6 (not to mention even older devel platforms like
> RHEL 5), which fails to build thanks to our development -Werror.
>
> It took me a while to figure out how to make our set of warnings
> smaller on older gcc without losing the benefit of the warnings
> when using newer gcc (such as the one on Fedora 17), but this
> should do the trick.
>
> * m4/virt-compile-warnings.m4 (LIBVIRT_COMPILE_WARNINGS): Avoid
> warnings that gnulib can't silence on older gcc.
> ---
>
> If I don't get a review by tomorrow, I will go ahead and push this
> under the build-breaker rule.
>
> m4/virt-compile-warnings.m4 | 23 +++++++++++++++++++++++
> 1 file changed, 23 insertions(+)
>
> diff --git a/m4/virt-compile-warnings.m4 b/m4/virt-compile-warnings.m4
> index 9dee000..702506d 100644
> --- a/m4/virt-compile-warnings.m4
> +++ b/m4/virt-compile-warnings.m4
> @@ -58,6 +58,23 @@ AC_DEFUN([LIBVIRT_COMPILE_WARNINGS],[
> # Gnulib's stat-time.h violates this
> dontwarn="$dontwarn -Waggregate-return"
>
> + # Gnulib uses '#pragma GCC diagnostic push' to silence some
> + # warnings, but older gcc doesn't support this.
> + AC_CACHE_VAL([lv_cv_gcc_pragma_push_works], [
> + save_CFLAGS=$CFLAGS
> + CFLAGS=-Wunknown-pragmas
> + AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[
> + #pragma GCC diagnostic push
> + #pragma GCC diagnostic pop
> + ]])],
> + [lv_cv_gcc_pragma_push_works=yes],
> + [lv_cv_gcc_pragma_push_works=no])
> + CFLAGS=$save_CFLAGS])
> + if test $lv_cv_gcc_pragma_push_works = no; then
> + dontwarn="$dontwarn -Wmissing-prototypes"
> + dontwarn="$dontwarn -Wmissing-declarations"
> + fi
> +
> # We might fundamentally need some of these disabled forever, but
> # ideally we'd turn many of them on
> dontwarn="$dontwarn -Wfloat-equal"
>
Hi Eric,
I assume this was intended to suppress errors like this here:
CC libvirt_driver_storage_la-storage_backend.lo
cc1: warnings being treated as errors
In file included from ../../src/storage/storage_backend.c:59:
../../gnulib/lib/stat-time.h:55: error: no previous prototype for
'get_stat_atime_ns' [-Wmissing-prototypes]
../../gnulib/lib/stat-time.h:68: error: no previous prototype for
'get_stat_ctime_ns' [-Wmissing-prototypes]
../../gnulib/lib/stat-time.h:81: error: no previous prototype for
'get_stat_mtime_ns' [-Wmissing-prototypes]
../../gnulib/lib/stat-time.h:94: error: no previous prototype for
'get_stat_birthtime_ns' [-Wmissing-prototypes]
../../gnulib/lib/stat-time.h:109: error: no previous prototype for
'get_stat_atime' [-Wmissing-prototypes]
../../gnulib/lib/stat-time.h:123: error: no previous prototype for
'get_stat_ctime' [-Wmissing-prototypes]
../../gnulib/lib/stat-time.h:137: error: no previous prototype for
'get_stat_mtime' [-Wmissing-prototypes]
../../gnulib/lib/stat-time.h:152: error: no previous prototype for
'get_stat_birthtime' [-Wmissing-prototypes]
unfortunately, even applying the patch above and rerunning bootstrap,
configure, make didn't help and I'm still getting the errors ... the
interesting thing is that pragma push seems to work...
I am compiling on RHEL6.2, gcc 4.4.6
grep pragma_push config.log
lv_cv_gcc_pragma_push_works=yes
--
Mit freundlichen Grüßen/Kind Regards
Viktor Mihajlovski
IBM Deutschland Research & Development GmbH
Vorsitzender des Aufsichtsrats: Martin Jetter
Geschäftsführung: Dirk Wittkopp
Sitz der Gesellschaft: Böblingen
Registergericht: Amtsgericht Stuttgart, HRB 243294
More information about the libvir-list
mailing list