On Sat, Nov 30, 2013 at 8:38 PM, Eitan Adler <lists_at_eitanadler.com> wrote: > On Sat, Nov 30, 2013 at 11:26 PM, Peter Wemm <peter_at_wemm.org> wrote: >> On Sat, Nov 30, 2013 at 4:33 PM, Adrian Chadd <adrian_at_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) _at__at_ -126,12 +126,12 _at__at_ # 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= _at_echo " CC ${.IMPSRC}" ; ${CC} -c ${CFLAGS} ${WERROR} ${PROF} ${.IMPSRC} +NORMAL_S= _at_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= _at_echo " CC_NOWERROR ${.IMPSRC}" ; ${CC} -c ${CFLAGS} ${PROF} ${.IMPSRC} ... Unfortunately that interferes with my usual use of 'make -s' - silent. -- Peter Wemm - peter_at_wemm.org; peter_at_FreeBSD.org; peter_at_yahoo-inc.com; KI6FJV UTF-8: for when a ' just won\342\200\231t do.Received on Sun Dec 01 2013 - 03:54:11 UTC
This archive was generated by hypermail 2.4.0 : Wed May 19 2021 - 11:40:44 UTC