Skip site navigation (1)Skip section navigation (2)
Date:      Sat, 30 Nov 2013 20:54:10 -0800
From:      Peter Wemm <peter@wemm.org>
To:        Eitan Adler <lists@eitanadler.com>
Cc:        Konstantin Belousov <kostikbel@gmail.com>, Adrian Chadd <adrian@freebsd.org>, Dimitry Andric <dim@freebsd.org>, "current@freebsd.org" <current@freebsd.org>
Subject:   Re: RFC: (Unconditionally) enable -fno-strict-overflow for kernel builds
Message-ID:  <CAGE5yCpv=F1eesDU2EugyQsdd-tLAHwEfhJc-eydTvNOB2%2BC7w@mail.gmail.com>
In-Reply-To: <CAF6rxgkXQ80_CrGwdDWQNLUqeLYcq%2BMFULazC=SbA0HrYe1abw@mail.gmail.com>
References:  <20131130135616.GA59496@kib.kiev.ua> <E3E2524B-4423-4962-BFD7-9A81424296F7@FreeBSD.org> <CAJ-VmonQip5Q%2BDfSd_dba_=g8bZYM9uyhYw8XmhU4wGydnJJtg@mail.gmail.com> <CAGE5yCovP17txufd6mfAPUk%2B2WiLMnCis=zQN6bZ25qp=DJ2Ng@mail.gmail.com> <CAF6rxgkXQ80_CrGwdDWQNLUqeLYcq%2BMFULazC=SbA0HrYe1abw@mail.gmail.com>

next in thread | previous in thread | raw e-mail | index | archive | help
On Sat, Nov 30, 2013 at 8:38 PM, Eitan Adler <lists@eitanadler.com> wrote:
> On Sat, Nov 30, 2013 at 11:26 PM, Peter Wemm <peter@wemm.org> wrote:
>> On Sat, Nov 30, 2013 at 4:33 PM, Adrian Chadd <adrian@freebsd.org> wrote:
>> [..]
>>> Are you able to have clang/llvm/gcc tell us where/when code is relying
>>> on undefined behaviour? So we can, like, fix them?
>>
>> It wasn't all that long ago that we had this wonderful thing called
>> -Werror and had a clean kernel build.
>>
>> The problem is that gcc and clang have different warning sets.  I seem
>> to recall we had -Werror on for gcc and off for clang.  IMHO it would
>> be more useful to do it the other way around.
>
> Not all cases can be caught by static analysis.  They would all be
> caught be the integer sanitizer.  However, these have not yet been
> ported to FreeBSD.
>

I also missed the  -Wno-error-tautological-compare setting. Oops.

I personally tweak my builds a little so that:

  CC ../../../kern/kern_acct.c
  CC ../../../kern/kern_clock.c
WARNING: kern_clock.c: enum pmc_event has too many values: 1669 > 1023
  CC ../../../kern/kern_condvar.c
  CC ../../../kern/kern_conf.c
  CC ../../../kern/kern_cons.c
  CC ../../../kern/kern_cpu.c
  CC ../../../kern/kern_cpuset.c
../../../kern/kern_cpuset.c:637:16: warning: comparison of unsigned
expression < 0 is always false [-Wtautological-compare]
        for (i = 0; i < (_NCPUWORDS - 1); i++) {
                    ~ ^ ~~~~~~~~~~~~~~~~
1 warning generated.
  CC ../../../kern/kern_context.c
  CC ../../../kern/kern_descrip.c
  CC ../../../kern/kern_dtrace.c

Warnings stand out nicely that way.

The diff is along these lines:

--- kern.pre.mk    (revision 258784)
+++ kern.pre.mk    (working copy)
@@ -126,12 +126,12 @@
 # Optional linting. This can be overridden in /etc/make.conf.
 LINTFLAGS=    ${LINTOBJKERNFLAGS}

-NORMAL_C= ${CC} -c ${CFLAGS} ${WERROR} ${PROF} ${.IMPSRC}
-NORMAL_S= ${CC} -c ${ASM_CFLAGS} ${WERROR} ${.IMPSRC}
+NORMAL_C= @echo "  CC ${.IMPSRC}" ; ${CC} -c ${CFLAGS} ${WERROR}
${PROF} ${.IMPSRC}
+NORMAL_S= @echo "  AS ${.IMPSRC}" ; ${CC} -c ${ASM_CFLAGS} ${WERROR} ${.IMPSRC}
 PROFILE_C= ${CC} -c ${CFLAGS} ${WERROR} ${.IMPSRC}
-NORMAL_C_NOWERROR= ${CC} -c ${CFLAGS} ${PROF} ${.IMPSRC}
+NORMAL_C_NOWERROR= @echo "  CC_NOWERROR ${.IMPSRC}" ; ${CC} -c
${CFLAGS} ${PROF} ${.IMPSRC}
...

Unfortunately that interferes with my usual use of 'make -s' - silent.
-- 
Peter Wemm - peter@wemm.org; peter@FreeBSD.org; peter@yahoo-inc.com; KI6FJV
UTF-8: for when a ' just won\342\200\231t do.



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?CAGE5yCpv=F1eesDU2EugyQsdd-tLAHwEfhJc-eydTvNOB2%2BC7w>