Re: [PATCH v2] sparse: Make -Werror turn warnigns into errors

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

 



On Wed, Oct 8, 2014 at 5:39 PM, Thomas Graf <tgraf@xxxxxxx> wrote:
>> This just enables -Werror for everyone so now I can't run Sparse on
>> itself now because there are old errors from 2007.
>
> The above change should merely have sparse fail upon an error and not
> warnings unless you specifiy -Werror which I would consider expected
> behaviour.

Actually I realized that this "-Werror" patch is wrong. As it is, we can't
actually make the full kernel check without hitting sparse errors interrupting
the build. That is pretty unacceptable.

We should reserve the "-Werror" for gcc. It means gcc should treat warning
as error. We should have another option like "-Wsparse-error" for telling sparse
to treat warning as error. Just like "-Wall" does not mean sparse should
turn on all usual warnings. We have "-Wsparse-all" for that.

I have the following patch renaming the option. BTW, I think sparse
should only return error when "-Wsparse-error" was given.

Any feed back?

Chris

diff --git a/lib.c b/lib.c
index 8395662..b1b18aa 100644
--- a/lib.c
+++ b/lib.c
@@ -150,7 +150,7 @@ void warning(struct position pos, const char * fmt, ...)
 {
        va_list args;

-       if (Werror) {
+       if (Wsparse_error) {
                va_start(args, fmt);
                do_error(pos, fmt, args);
                va_end(args);
@@ -226,7 +226,7 @@ int Wdesignated_init = 1;
 int Wdo_while = 0;
 int Winit_cstring = 0;
 int Wenum_mismatch = 1;
-int Werror = 0;
+int Wsparse_error = 0;
 int Wnon_pointer_null = 1;
 int Wold_initializer = 1;
 int Wone_bit_signed_bitfield = 1;
@@ -439,7 +439,7 @@ static const struct warning {
        { "designated-init", &Wdesignated_init },
        { "do-while", &Wdo_while },
        { "enum-mismatch", &Wenum_mismatch },
-       { "error", &Werror },
+       { "sparse-error", &Wsparse_error },
        { "init-cstring", &Winit_cstring },
        { "non-pointer-null", &Wnon_pointer_null },
        { "old-initializer", &Wold_initializer },
@@ -471,7 +471,7 @@ static char **handle_onoff_switch(char *arg, char **next, co

        if (!strcmp(p, "sparse-all")) {
                for (i = 0; i < n; i++) {
-                       if (*warnings[i].flag != WARNING_FORCE_OFF && warnings[i
+                       if (*warnings[i].flag != WARNING_FORCE_OFF && warnings[i
                                *warnings[i].flag = WARNING_ON;
                }
             }
diff --git a/lib.h b/lib.h
index dc01684..15b69fa 100644
--- a/lib.h
+++ b/lib.h
@@ -112,7 +112,7 @@ extern int Wdefault_bitfield_sign;
 extern int Wdesignated_init;
 extern int Wdo_while;
 extern int Wenum_mismatch;
-extern int Werror;
+extern int Wsparse_error;
 extern int Winit_cstring;
 extern int Wnon_pointer_null;
 extern int Wold_initializer;
diff --git a/sparse.1 b/sparse.1
index acdce53..63fceb9 100644
--- a/sparse.1
+++ b/sparse.1
@@ -24,7 +24,7 @@ off those warnings, pass the negation of the associated warnin
 Turn on all sparse warnings, except for those explicitly disabled via
 \fB\-Wno\-something\fR.
 .TP
-.B \-Werror
+.B \-Wsparse\-error
 Turn all sparse warnings into errors.
 .TP
 .B \-Waddress\-space
diff --git a/sparse.c b/sparse.c
index 7d389b1..6b3324c 100644
--- a/sparse.c
+++ b/sparse.c
@@ -288,7 +288,7 @@ static void check_symbols(struct symbol_list *list)
                }
        } END_FOR_EACH_PTR(sym);

-       if (die_if_error)
+       if (Wsparse_error && die_if_error)
                exit(1);
--
To unsubscribe from this list: send the line "unsubscribe linux-sparse" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at  http://vger.kernel.org/majordomo-info.html




[Index of Archives]     [Newbies FAQ]     [LKML]     [IETF Annouce]     [DCCP]     [Netdev]     [Networking]     [Security]     [Bugtraq]     [Yosemite]     [MIPS Linux]     [ARM Linux]     [Linux Security]     [Linux RAID]     [Linux SCSI]     [Trinity Fuzzer Tool]

  Powered by Linux