qemu-devel.nongnu.org archive mirror
 help / color / mirror / Atom feed
* [Qemu-devel] [RFC] Enable Werrror by default
@ 2009-06-11 12:35 Paul Brook
  2009-06-11 12:46 ` Tristan Gingold
                   ` (3 more replies)
  0 siblings, 4 replies; 15+ messages in thread
From: Paul Brook @ 2009-06-11 12:35 UTC (permalink / raw)
  To: qemu-devel

[-- Attachment #1: Type: text/plain, Size: 320 bytes --]

I'd like to enable Werror by default. I've been using --enable-werror locally 
for a while now, and it's been extremely useful in picking up dumb errors 
(like the recent stellaris_enet.c breakage).

Any objections?

You can of course configure with --disable-werror if you really want the force 
things to build.

Paul

[-- Attachment #2: 0001-Enable-Werror-by-default.patch --]
[-- Type: text/x-patch, Size: 771 bytes --]

From 5ccaebfce38fc161a776725c6c945b2173459397 Mon Sep 17 00:00:00 2001
From: Paul Brook <paul@codesourcery.com>
Date: Thu, 11 Jun 2009 13:31:46 +0100
Subject: [PATCH] Enable Werror by default

Signed-off-by: Paul Brook <paul@codesourcery.com>
---
 configure |    6 +-----
 1 files changed, 1 insertions(+), 5 deletions(-)

diff --git a/configure b/configure
index 89e7f53..9e03ee3 100755
--- a/configure
+++ b/configure
@@ -356,11 +356,7 @@ else
 fi
 [ -f "$workdir/vl.c" ] || source_path_used="yes"
 
-werror="no"
-# generate compile errors on warnings for development builds
-#if grep cvs $source_path/VERSION > /dev/null 2>&1 ; then
-#werror="yes";
-#fi
+werror="yes"
 
 for opt do
   optarg=`expr "x$opt" : 'x[^=]*=\(.*\)'`
-- 
1.6.3.1


^ permalink raw reply related	[flat|nested] 15+ messages in thread

* Re: [Qemu-devel] [RFC] Enable Werrror by default
  2009-06-11 12:35 [Qemu-devel] [RFC] Enable Werrror by default Paul Brook
@ 2009-06-11 12:46 ` Tristan Gingold
  2009-06-11 13:10   ` Christoph Egger
  2009-06-11 14:02   ` Andreas Färber
  2009-06-11 12:58 ` Anthony Liguori
                   ` (2 subsequent siblings)
  3 siblings, 2 replies; 15+ messages in thread
From: Tristan Gingold @ 2009-06-11 12:46 UTC (permalink / raw)
  To: Paul Brook; +Cc: qemu-devel


On Jun 11, 2009, at 2:35 PM, Paul Brook wrote:

> I'd like to enable Werror by default. I've been using --enable- 
> werror locally
> for a while now, and it's been extremely useful in picking up dumb  
> errors
> (like the recent stellaris_enet.c breakage).
>
> Any objections?

IIRC, qemu is not warnings clean on Darwin.
But adding -Werror may increase the pressure :-)

^ permalink raw reply	[flat|nested] 15+ messages in thread

* Re: [Qemu-devel] [RFC] Enable Werrror by default
  2009-06-11 12:35 [Qemu-devel] [RFC] Enable Werrror by default Paul Brook
  2009-06-11 12:46 ` Tristan Gingold
@ 2009-06-11 12:58 ` Anthony Liguori
  2009-06-11 13:14 ` Mark McLoughlin
  2009-06-11 15:18 ` David Turner
  3 siblings, 0 replies; 15+ messages in thread
From: Anthony Liguori @ 2009-06-11 12:58 UTC (permalink / raw)
  To: Paul Brook; +Cc: qemu-devel

Paul Brook wrote:
> I'd like to enable Werror by default. I've been using --enable-werror locally 
> for a while now, and it's been extremely useful in picking up dumb errors 
> (like the recent stellaris_enet.c breakage).
>
> Any objections?
>   

It's going to break Windows and more recent versions of GCC.

Regards,

Anthony Liguori

> You can of course configure with --disable-werror if you really want the force 
> things to build.
>
> Paul
>   

^ permalink raw reply	[flat|nested] 15+ messages in thread

* Re: [Qemu-devel] [RFC] Enable Werrror by default
  2009-06-11 12:46 ` Tristan Gingold
@ 2009-06-11 13:10   ` Christoph Egger
  2009-06-11 14:02   ` Andreas Färber
  1 sibling, 0 replies; 15+ messages in thread
From: Christoph Egger @ 2009-06-11 13:10 UTC (permalink / raw)
  To: qemu-devel; +Cc: Tristan Gingold, Paul Brook

On Thursday 11 June 2009 14:46:18 Tristan Gingold wrote:
> On Jun 11, 2009, at 2:35 PM, Paul Brook wrote:
> > I'd like to enable Werror by default. I've been using --enable-
> > werror locally
> > for a while now, and it's been extremely useful in picking up dumb
> > errors
> > (like the recent stellaris_enet.c breakage).
> >
> > Any objections?
>
> IIRC, qemu is not warnings clean on Darwin.
> But adding -Werror may increase the pressure :-)

pthreads are not -Wshadow or -Wnested-extern warning clean by design
on many OS's.

Christoph

-- 
---to satisfy European Law for business letters:
Advanced Micro Devices GmbH
Karl-Hammerschmidt-Str. 34, 85609 Dornach b. Muenchen
Geschaeftsfuehrer: Thomas M. McCoy, Giuliano Meroni
Sitz: Dornach, Gemeinde Aschheim, Landkreis Muenchen
Registergericht Muenchen, HRB Nr. 43632

^ permalink raw reply	[flat|nested] 15+ messages in thread

* Re: [Qemu-devel] [RFC] Enable Werrror by default
  2009-06-11 12:35 [Qemu-devel] [RFC] Enable Werrror by default Paul Brook
  2009-06-11 12:46 ` Tristan Gingold
  2009-06-11 12:58 ` Anthony Liguori
@ 2009-06-11 13:14 ` Mark McLoughlin
  2009-06-11 13:34   ` Christoph Egger
                     ` (3 more replies)
  2009-06-11 15:18 ` David Turner
  3 siblings, 4 replies; 15+ messages in thread
From: Mark McLoughlin @ 2009-06-11 13:14 UTC (permalink / raw)
  To: Paul Brook; +Cc: qemu-devel

On Thu, 2009-06-11 at 13:35 +0100, Paul Brook wrote:

> I'd like to enable Werror by default. I've been using --enable-werror locally 
> for a while now, and it's been extremely useful in picking up dumb errors 
> (like the recent stellaris_enet.c breakage).
> 
> Any objections?
> 
> You can of course configure with --disable-werror if you really want the force 
> things to build.

Based on experiences with other projects:

  1) Release tarballs should not ship with -Werror on by default - e.g. 
     new gcc comes along with new warnings and the tarball build fails 
     with no benefit to anyone

  2) Anyone submitting patches should build with -Werror and make sure 
     they don't introduce new warnings

  3) People with newer gcc are likely to be tripped up by warnings 
     introduced by others with older gcc[1]

  4) It's debatable whether builds from git should default to -Werror - 
     on the plus side it helps ensure (2) happens, on the minus side if 
     a warning does sneak in, it makes life a pain for everyone until a 
     fix gets applied

IMHO, we should enable it by default for git builds.

Cheers,
Mark.

[1] e.g. with gcc-4.4.0, but not with gcc-4.3.2:

  hw/virtio-blk.c:302: warning: ‘blkcfg.size_max’ is used uninitialized in this function

^ permalink raw reply	[flat|nested] 15+ messages in thread

* Re: [Qemu-devel] [RFC] Enable Werrror by default
  2009-06-11 13:14 ` Mark McLoughlin
@ 2009-06-11 13:34   ` Christoph Egger
  2009-06-11 13:35   ` Paul Brook
                     ` (2 subsequent siblings)
  3 siblings, 0 replies; 15+ messages in thread
From: Christoph Egger @ 2009-06-11 13:34 UTC (permalink / raw)
  To: qemu-devel, Mark McLoughlin; +Cc: Paul Brook

On Thursday 11 June 2009 15:14:46 Mark McLoughlin wrote:
> On Thu, 2009-06-11 at 13:35 +0100, Paul Brook wrote:
> > I'd like to enable Werror by default. I've been using --enable-werror
> > locally for a while now, and it's been extremely useful in picking up
> > dumb errors (like the recent stellaris_enet.c breakage).
> >
> > Any objections?
> >
> > You can of course configure with --disable-werror if you really want the
> > force things to build.
>
> Based on experiences with other projects:
>
>   1) Release tarballs should not ship with -Werror on by default - e.g.
>      new gcc comes along with new warnings and the tarball build fails
>      with no benefit to anyone
>
>   2) Anyone submitting patches should build with -Werror and make sure
>      they don't introduce new warnings

Newer gcc enable warnings by default older versions already have as well.

>   3) People with newer gcc are likely to be tripped up by warnings
>      introduced by others with older gcc[1]
>
>   4) It's debatable whether builds from git should default to -Werror -
>      on the plus side it helps ensure (2) happens, on the minus side if
>      a warning does sneak in, it makes life a pain for everyone until a
>      fix gets applied
>
> IMHO, we should enable it by default for git builds.
>
> Cheers,
> Mark.
>
> [1] e.g. with gcc-4.4.0, but not with gcc-4.3.2:
>
>   hw/virtio-blk.c:302: warning: ‘blkcfg.size_max’ is used uninitialized in
> this function

You should see the same warning with gcc 4.3.2  -Wuninitialized , too.

Christoph

-- 
---to satisfy European Law for business letters:
Advanced Micro Devices GmbH
Karl-Hammerschmidt-Str. 34, 85609 Dornach b. Muenchen
Geschaeftsfuehrer: Thomas M. McCoy, Giuliano Meroni
Sitz: Dornach, Gemeinde Aschheim, Landkreis Muenchen
Registergericht Muenchen, HRB Nr. 43632

^ permalink raw reply	[flat|nested] 15+ messages in thread

* Re: [Qemu-devel] [RFC] Enable Werrror by default
  2009-06-11 13:14 ` Mark McLoughlin
  2009-06-11 13:34   ` Christoph Egger
@ 2009-06-11 13:35   ` Paul Brook
  2009-06-11 14:20   ` Richard W.M. Jones
  2009-06-11 18:30   ` Anthony Liguori
  3 siblings, 0 replies; 15+ messages in thread
From: Paul Brook @ 2009-06-11 13:35 UTC (permalink / raw)
  To: Mark McLoughlin; +Cc: qemu-devel

>   hw/virtio-blk.c:302: warning: ‘blkcfg.size_max’ is used uninitialized in
> this function

By my reading that's an actual bug, and uninitialized data is leaking out to 
the guest.

Paul

^ permalink raw reply	[flat|nested] 15+ messages in thread

* Re: [Qemu-devel] [RFC] Enable Werrror by default
  2009-06-11 12:46 ` Tristan Gingold
  2009-06-11 13:10   ` Christoph Egger
@ 2009-06-11 14:02   ` Andreas Färber
  1 sibling, 0 replies; 15+ messages in thread
From: Andreas Färber @ 2009-06-11 14:02 UTC (permalink / raw)
  To: Tristan Gingold; +Cc: Paul Brook, qemu-devel


Am 11.06.2009 um 14:46 schrieb Tristan Gingold:

>
> On Jun 11, 2009, at 2:35 PM, Paul Brook wrote:
>
>> I'd like to enable Werror by default. I've been using --enable- 
>> werror locally
>> for a while now, and it's been extremely useful in picking up dumb  
>> errors
>> (like the recent stellaris_enet.c breakage).
>>
>> Any objections?
>
> IIRC, qemu is not warnings clean on Darwin.
> But adding -Werror may increase the pressure :-)

Those producing the warnings != those seeing the build breakage.

We've been reporting an incredibly large number of warnings on Solaris  
10 in --std=gnu99 mode (which had become necessary, unfortunately),  
fixing which would seem to require a major refactoring of the  
softfloat support iirc.

And yes, there is at least one warning on Darwin, outside Cocoa. I'll  
take a look at that later.

Other packages restrict such flags to an --enable-maintainer-mode  
configure flag btw.

Andreas

^ permalink raw reply	[flat|nested] 15+ messages in thread

* Re: [Qemu-devel] [RFC] Enable Werrror by default
  2009-06-11 13:14 ` Mark McLoughlin
  2009-06-11 13:34   ` Christoph Egger
  2009-06-11 13:35   ` Paul Brook
@ 2009-06-11 14:20   ` Richard W.M. Jones
  2009-06-11 18:30   ` Anthony Liguori
  3 siblings, 0 replies; 15+ messages in thread
From: Richard W.M. Jones @ 2009-06-11 14:20 UTC (permalink / raw)
  To: Mark McLoughlin; +Cc: Paul Brook, qemu-devel

On Thu, Jun 11, 2009 at 02:14:46PM +0100, Mark McLoughlin wrote:
>   2) Anyone submitting patches should build with -Werror and make sure 
>      they don't introduce new warnings

And in libvirt this is codified in the HACKING file, along with
several other tests that patch submitters are required to run:

http://git.et.redhat.com/?p=libvirt.git;a=blob;f=HACKING;hb=HEAD
(tip #5)

Rich.

-- 
Richard Jones, Emerging Technologies, Red Hat  http://et.redhat.com/~rjones
Read my programming blog: http://rwmj.wordpress.com
Fedora now supports 75 OCaml packages (the OPEN alternative to F#)
http://cocan.org/getting_started_with_ocaml_on_red_hat_and_fedora

^ permalink raw reply	[flat|nested] 15+ messages in thread

* Re: [Qemu-devel] [RFC] Enable Werrror by default
  2009-06-11 12:35 [Qemu-devel] [RFC] Enable Werrror by default Paul Brook
                   ` (2 preceding siblings ...)
  2009-06-11 13:14 ` Mark McLoughlin
@ 2009-06-11 15:18 ` David Turner
  2009-06-11 17:24   ` Stuart Brady
  3 siblings, 1 reply; 15+ messages in thread
From: David Turner @ 2009-06-11 15:18 UTC (permalink / raw)
  To: Paul Brook; +Cc: qemu-devel

[-- Attachment #1: Type: text/plain, Size: 593 bytes --]

On Thu, Jun 11, 2009 at 2:35 PM, Paul Brook <paul@codesourcery.com> wrote:

> I'd like to enable Werror by default. I've been using --enable-werror
> locally
> for a while now, and it's been extremely useful in picking up dumb errors
> (like the recent stellaris_enet.c breakage).
>
> Any objections?
>

I would recommend only making this the default for linux-x86 and
linux-x86_64 hosts,

My experience is that it is extremely unlikely that codes that compiles
warning-free on Linux
will do the same on Windows or Darwin. Even changing compiler versions can
result in
very surprising things.

[-- Attachment #2: Type: text/html, Size: 911 bytes --]

^ permalink raw reply	[flat|nested] 15+ messages in thread

* Re: [Qemu-devel] [RFC] Enable Werrror by default
  2009-06-11 15:18 ` David Turner
@ 2009-06-11 17:24   ` Stuart Brady
  0 siblings, 0 replies; 15+ messages in thread
From: Stuart Brady @ 2009-06-11 17:24 UTC (permalink / raw)
  To: qemu-devel

On Thu, Jun 11, 2009 at 05:18:27PM +0200, David Turner wrote:
> Even changing compiler versions can result in very surprising things.

For this reason, amongst others, I prefer not to use -Werror by default.

I gather that changing code optimisation settings can also result in
surprising things... and then there's FORTIFY_SOURCE...

Using more specific options such as -Werror=format on versions of GCC
that support it might be more reasonable... but care needs to be taken.
-Werror[=-]implicit-function-declaration is probably a sensible one, but
note that GCC 4.4 seems to have a different name for that option than
earlier releases.

Otherwise, you can almost certainly guarantee there there will be 
distributions that forget to disable -Werror, forcing you to alter their
packages to get them to build. :-(

Note also that enabling -Werror will *discourage* the use of additional
warning options that would be helpful, despite being slightly noisy.
-- 
Stuart Brady

^ permalink raw reply	[flat|nested] 15+ messages in thread

* Re: [Qemu-devel] [RFC] Enable Werrror by default
  2009-06-11 13:14 ` Mark McLoughlin
                     ` (2 preceding siblings ...)
  2009-06-11 14:20   ` Richard W.M. Jones
@ 2009-06-11 18:30   ` Anthony Liguori
  2009-06-11 18:38     ` Mark McLoughlin
  2009-06-11 22:28     ` Paul Brook
  3 siblings, 2 replies; 15+ messages in thread
From: Anthony Liguori @ 2009-06-11 18:30 UTC (permalink / raw)
  To: Mark McLoughlin; +Cc: Paul Brook, qemu-devel

[-- Attachment #1: Type: text/plain, Size: 1326 bytes --]

Mark McLoughlin wrote:
> On Thu, 2009-06-11 at 13:35 +0100, Paul Brook wrote:
>
>   
>> I'd like to enable Werror by default. I've been using --enable-werror locally 
>> for a while now, and it's been extremely useful in picking up dumb errors 
>> (like the recent stellaris_enet.c breakage).
>>
>> Any objections?
>>
>> You can of course configure with --disable-werror if you really want the force 
>> things to build.
>>     
>
> Based on experiences with other projects:
>
>   1) Release tarballs should not ship with -Werror on by default - e.g. 
>      new gcc comes along with new warnings and the tarball build fails 
>      with no benefit to anyone
>
>   2) Anyone submitting patches should build with -Werror and make sure 
>      they don't introduce new warnings
>
>   3) People with newer gcc are likely to be tripped up by warnings 
>      introduced by others with older gcc[1]
>
>   4) It's debatable whether builds from git should default to -Werror - 
>      on the plus side it helps ensure (2) happens, on the minus side if 
>      a warning does sneak in, it makes life a pain for everyone until a 
>      fix gets applied
>
> IMHO, we should enable it by default for git builds.
>   
How about the following?  It currently only enables werror for Linux 
hosts and git builds.

Regards,

Anthony Liguori

[-- Attachment #2: enable-werror.patch --]
[-- Type: text/x-patch, Size: 1237 bytes --]

commit ba59b4615be2b9b989b425bad2499f47a6928d5c
Author: Anthony Liguori <aliguori@us.ibm.com>
Date:   Thu Jun 11 13:28:25 2009 -0500

    Enable -Werror by default for git builds on Linux hosts
    
    Additional hosts can be added to the white list as they are confirmed to build
    with --enable-werror.
    
    Signed-off-by: Anthony Liguori <aliguori@us.ibm.com>

diff --git a/configure b/configure
index 89e7f53..48c8949 100755
--- a/configure
+++ b/configure
@@ -356,11 +356,7 @@ else
 fi
 [ -f "$workdir/vl.c" ] || source_path_used="yes"
 
-werror="no"
-# generate compile errors on warnings for development builds
-#if grep cvs $source_path/VERSION > /dev/null 2>&1 ; then
-#werror="yes";
-#fi
+werror=""
 
 for opt do
   optarg=`expr "x$opt" : 'x[^=]*=\(.*\)'`
@@ -657,6 +653,18 @@ if test ! -x "$(which cgcc 2>/dev/null)"; then
     sparse="no"
 fi
 
+# Consult white-list to determine whether to enable werror
+# by default.  Only enable by default for git builds
+if test -z "$werror" ; then
+    z_version=`cut -f3 -d. $source_path/VERSION`
+    if test "$z_version" = "50" -a \
+       "$linux" = "yes" ; then
+	werror="yes"
+    else
+	werror="no"
+    fi
+fi
+
 #
 # Solaris specific configure tool chain decisions
 #

^ permalink raw reply related	[flat|nested] 15+ messages in thread

* Re: [Qemu-devel] [RFC] Enable Werrror by default
  2009-06-11 18:30   ` Anthony Liguori
@ 2009-06-11 18:38     ` Mark McLoughlin
  2009-06-11 20:03       ` Anthony Liguori
  2009-06-11 22:28     ` Paul Brook
  1 sibling, 1 reply; 15+ messages in thread
From: Mark McLoughlin @ 2009-06-11 18:38 UTC (permalink / raw)
  To: Anthony Liguori; +Cc: Paul Brook, qemu-devel

On Thu, 2009-06-11 at 13:30 -0500, Anthony Liguori wrote:

> How about the following?  It currently only enables werror for Linux 
> hosts and git builds.
> 
... 
> +# Consult white-list to determine whether to enable werror
> +# by default.  Only enable by default for git builds
> +if test -z "$werror" ; then
> +    z_version=`cut -f3 -d. $source_path/VERSION`
> +    if test "$z_version" = "50" -a \

Looks good, except this will enable it in kvm-XX releases, and not in
future stable branches.

How about just 'test -d $source_path/.git/' ?

Cheers,
Mark.

^ permalink raw reply	[flat|nested] 15+ messages in thread

* Re: [Qemu-devel] [RFC] Enable Werrror by default
  2009-06-11 18:38     ` Mark McLoughlin
@ 2009-06-11 20:03       ` Anthony Liguori
  0 siblings, 0 replies; 15+ messages in thread
From: Anthony Liguori @ 2009-06-11 20:03 UTC (permalink / raw)
  To: Mark McLoughlin; +Cc: Avi Kivity, Paul Brook, qemu-devel

Mark McLoughlin wrote:
> On Thu, 2009-06-11 at 13:30 -0500, Anthony Liguori wrote:
>
>   
>> How about the following?  It currently only enables werror for Linux 
>> hosts and git builds.
>>
>>     
> ... 
>   
>> +# Consult white-list to determine whether to enable werror
>> +# by default.  Only enable by default for git builds
>> +if test -z "$werror" ; then
>> +    z_version=`cut -f3 -d. $source_path/VERSION`
>> +    if test "$z_version" = "50" -a \
>>     
>
> Looks good, except this will enable it in kvm-XX releases, and not in
> future stable branches.
>   

My main requirement is that I don't have to change anything when making 
a tarball release.

kvm releases carry a KVM_VERSION file that could be used to disable werror.

It's a good point about the stable branch though.  I don't know the best 
way to deal with that.  Disabling werror more than we could is certainly 
better than enabling it more than we should though.

> How about just 'test -d $source_path/.git/' ?
>   

Makes me a little nervous to add git-knowledge to configure.

Regards,

Anthony Liguori

> Cheers,
> Mark.
>
>   

^ permalink raw reply	[flat|nested] 15+ messages in thread

* Re: [Qemu-devel] [RFC] Enable Werrror by default
  2009-06-11 18:30   ` Anthony Liguori
  2009-06-11 18:38     ` Mark McLoughlin
@ 2009-06-11 22:28     ` Paul Brook
  1 sibling, 0 replies; 15+ messages in thread
From: Paul Brook @ 2009-06-11 22:28 UTC (permalink / raw)
  To: qemu-devel; +Cc: Mark McLoughlin

> How about the following?  It currently only enables werror for Linux
> hosts and git builds.
>+    z_version=`cut -f3 -d. $source_path/VERSION`
>+    if test "$z_version" = "50" -a \

Looks ok to me.
FWIW I think testing for the presence of .git would be a bad idea.

Paul

^ permalink raw reply	[flat|nested] 15+ messages in thread

end of thread, other threads:[~2009-06-11 22:28 UTC | newest]

Thread overview: 15+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2009-06-11 12:35 [Qemu-devel] [RFC] Enable Werrror by default Paul Brook
2009-06-11 12:46 ` Tristan Gingold
2009-06-11 13:10   ` Christoph Egger
2009-06-11 14:02   ` Andreas Färber
2009-06-11 12:58 ` Anthony Liguori
2009-06-11 13:14 ` Mark McLoughlin
2009-06-11 13:34   ` Christoph Egger
2009-06-11 13:35   ` Paul Brook
2009-06-11 14:20   ` Richard W.M. Jones
2009-06-11 18:30   ` Anthony Liguori
2009-06-11 18:38     ` Mark McLoughlin
2009-06-11 20:03       ` Anthony Liguori
2009-06-11 22:28     ` Paul Brook
2009-06-11 15:18 ` David Turner
2009-06-11 17:24   ` Stuart Brady

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).