Add -fwrapv to CFLAGS for the kernel. This essentially un-reverts r259045.

The C standard undefines behavior when signed integers overflow. The
compiler toolchain has become more adept at detecting this and taking
advantage of faster undefined behavior.  At the current time this has the
unfortunate effect of the clock stopping after 24 days of uptime.

clang makes no distinction between -fwrapv and -fno-strict-overflow.  gcc
does treat them differently but -fwrapv is mature in gcc and is the
behavior are actually expecting.

Obtained from:	kib
This commit is contained in:
Peter Wemm 2015-02-05 01:36:53 +00:00
parent 3bba3152a7
commit 5d6adf256f

View File

@ -157,6 +157,14 @@ INLINE_LIMIT?= 8000
#
CFLAGS+= -ffreestanding
#
# The C standard leaves signed integer overflow behavior undefined.
# gcc and clang opimizers take advantage of this. The kernel makes
# use of signed integer wraparound mechanics so we need the compiler
# to treat it as a wraparound and not take shortcuts.
#
CFLAGS+= -fwrapv
#
# GCC SSP support
#