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>