On Thu, Nov 24, 2011 at 08:28:53AM +1300, Michael Hope wrote:
> On Thu, Nov 24, 2011 at 6:51 AM, Dave Martin <dave.mar...@linaro.org> wrote:
> > On Wed, Nov 23, 2011 at 09:41:52PM +0700, tknv wrote:
> >> Thank you very much, quick reply.
> >> Yes, It is right," it may be better to improve the code instead of turning 
> >> of the error check."
> >> But this time I would like to testing some modules at first even any
> >> warnings occur at other modules.
> >> I removed -Werror from Makefile at modules have warnings.
> >> By the way, KBUILD_CFLAGS's -Werror does not work correct ?
> >
> > Can you re-run your build with V=1 on the make command line, and post
> > the log so I can see what happens?
> >
> > I still don't feel I have enough information to understand exactly
> > what's happening.
> >
> > Additional CFLAGS get added at different places in the Makefiles, so
> > it is possible that your change has been overridden somewhere else.
> 
> A side note:  adding a -Wno-error to the end of a set of flags cancels
> out any earlier -Werror.  I needed to use this recently with a build
> system that unconditionally turned on -Werror and a g++-4.1 that was a
> bit wrong in it's warnings.

Hmmm, that may be the cause.

The perf tools' script in the Linux tree for example has:

        # Treat warnings as errors unless directed not to
        ifneq ($(WERROR),0)
                CFLAGS_WERROR := -Werror
        endif

...which isn't going to work if gcc is excessive about the errors it
flags up, given the -W options in the top-level Makefile.
Adding -Wno-array-bounds might work.


Interestingly, I can't seem to make gcc-4.5.2 report an array bounds
error, even for obviously wrong code:

        int f(void)
        {
                int x[1];

                return x[2];
        }

gcc -O3 -Wall -Wextra -Warray-bounds -Werror -c tst.c

...reports no error.  gcc "did what I asked", but the code is clearly
nonsensical, and doesn't describe any possible C function:

00000000 <f>:
   0:   b082            sub     sp, #8
   2:   9803            ldr     r0, [sp, #12]
   4:   b002            add     sp, #8
   6:   4770            bx      lr

gcc seems not to detect a blatant access to an uninitialised variable
here also...  although for a simple variable, that does get detected:

        int f(void) 
        {
                int x;

                return x;
        }


gcc -O3 -Wall -Wextra -Warray-bounds -Werror -c tst.c
cc1: warnings being treated as errors
tst.c: In function ‘f’:
tst.c:5:17: error: ‘x’ is used uninitialized in this function

A don't know whether warning issues indicate true bugs, but this is
at least strange behaviour.

Cheers
---Dave

_______________________________________________
linaro-toolchain mailing list
linaro-toolchain@lists.linaro.org
http://lists.linaro.org/mailman/listinfo/linaro-toolchain

Reply via email to