svn commit: r359702 - in head: share/mk sys/conf
Kyle Evans
kevans at FreeBSD.org
Tue Apr 7 17:04:25 UTC 2020
Author: kevans
Date: Tue Apr 7 17:04:24 2020
New Revision: 359702
URL: https://svnweb.freebsd.org/changeset/base/359702
Log:
Add -fno-common to all userland/kernel src builds
-fno-common will become the default in GCC10/LLVM11. Plenty of work has been
put in to make sure our world builds are no -fno-common clean, so let's slap
the build with this until it becomes the compiler default to ensure we don't
regress.
At this time, we will not be enforcing -fno-common on ports builds. I
suspect most ports will be or quickly become -fno-common clean as they're
naturally built against compilers that default to it, so this will hopefully
become a non-issue in due time. The exception to this, which is actually the
status quo, is that kmods built from ports will continue to build with
-fno-common.
As of the time of writing, I intend to also make stable/12 -fno-common
clean. What's been done will be MFC'd to stable/11 if it's easily applicable
and/or not much work to massage it into being functional, but I anticipate
adding -fcommon to stable/11 builds to maintain its ability to be built with
newer compilers for the rest of its lifetime instead of putting in a third
branch's worth of effort.
Modified:
head/share/mk/src.sys.mk
head/sys/conf/kern.pre.mk
head/sys/conf/kmod.mk
Modified: head/share/mk/src.sys.mk
==============================================================================
--- head/share/mk/src.sys.mk Tue Apr 7 16:57:23 2020 (r359701)
+++ head/share/mk/src.sys.mk Tue Apr 7 17:04:24 2020 (r359702)
@@ -34,6 +34,11 @@ __postrcconf_${var}:= ${MK_${var}:U-}${WITHOUT_${var}:
.endif # SRCCONF
.endif
+# The following should be removed no earlier than LLVM11 being imported into the
+# tree, to ensure we don't regress the build. LLVM11 and GCC10 will switch the
+# default over to -fno-common, making this redundant.
+CFLAGS+= -fno-common
+
# tempting, but bsd.compiler.mk causes problems this early
# probably need to remove dependence on bsd.own.mk
#.include "src.opts.mk"
Modified: head/sys/conf/kern.pre.mk
==============================================================================
--- head/sys/conf/kern.pre.mk Tue Apr 7 16:57:23 2020 (r359701)
+++ head/sys/conf/kern.pre.mk Tue Apr 7 17:04:24 2020 (r359702)
@@ -86,7 +86,7 @@ CFLAGS_PARAM_LARGE_FUNCTION_GROWTH?=1000
.if ${MACHINE_CPUARCH} == "mips"
CFLAGS_ARCH_PARAMS?=--param max-inline-insns-single=1000 -DMACHINE_ARCH='"${MACHINE_ARCH}"'
.endif
-CFLAGS.gcc+= -fno-common -fms-extensions -finline-limit=${INLINE_LIMIT}
+CFLAGS.gcc+= -fms-extensions -finline-limit=${INLINE_LIMIT}
CFLAGS.gcc+= --param inline-unit-growth=${CFLAGS_PARAM_INLINE_UNIT_GROWTH}
CFLAGS.gcc+= --param large-function-growth=${CFLAGS_PARAM_LARGE_FUNCTION_GROWTH}
CFLAGS.gcc+= -fms-extensions
@@ -98,6 +98,10 @@ WERROR?= -Wno-error
.else
WERROR?= -Werror
.endif
+# The following should be removed no earlier than LLVM11 being imported into the
+# tree, to ensure we don't regress the build. LLVM11 and GCC10 will switch the
+# default over to -fno-common, making this redundant.
+CFLAGS+= -fno-common
# XXX LOCORE means "don't declare C stuff" not "for locore.s".
ASM_CFLAGS= -x assembler-with-cpp -DLOCORE ${CFLAGS} ${ASM_CFLAGS.${.IMPSRC:T}}
Modified: head/sys/conf/kmod.mk
==============================================================================
--- head/sys/conf/kmod.mk Tue Apr 7 16:57:23 2020 (r359701)
+++ head/sys/conf/kmod.mk Tue Apr 7 17:04:24 2020 (r359702)
@@ -133,6 +133,13 @@ CFLAGS.gcc+= --param large-function-growth=1000
# Disallow common variables, and if we end up with commons from
# somewhere unexpected, allocate storage for them in the module itself.
+#
+# -fno-common is the default for src builds, but this should be left in place
+# until at least we catch up to GCC10/LLVM11 or otherwise enable -fno-common
+# in <bsd.sys.mk> instead. For now, we will have duplicate -fno-common in
+# CFLAGS for in-tree module builds as they will also pick it up from
+# share/mk/src.sys.mk, but the following is important for out-of-tree modules
+# (e.g. ports).
CFLAGS+= -fno-common
LDFLAGS+= -d -warn-common
More information about the svn-src-head
mailing list