Skip site navigation (1)Skip section navigation (2)
Date:      Thu, 5 Feb 2015 01:36:53 +0000 (UTC)
From:      Peter Wemm <peter@FreeBSD.org>
To:        src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org
Subject:   svn commit: r278229 - head/sys/conf
Message-ID:  <201502050136.t151arDn088863@svn.freebsd.org>

next in thread | raw e-mail | index | archive | help
Author: peter
Date: Thu Feb  5 01:36:53 2015
New Revision: 278229
URL: https://svnweb.freebsd.org/changeset/base/278229

Log:
  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

Modified:
  head/sys/conf/kern.mk

Modified: head/sys/conf/kern.mk
==============================================================================
--- head/sys/conf/kern.mk	Thu Feb  5 00:12:21 2015	(r278228)
+++ head/sys/conf/kern.mk	Thu Feb  5 01:36:53 2015	(r278229)
@@ -158,6 +158,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
 #
 .if ${MK_SSP} != "no" && \



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?201502050136.t151arDn088863>