On 14/07/14 15:08, Steven Chamberlain wrote: > [...] 10.0 is very likely to work with clang-3.4, and 10-STABLE > already been heavily tested with it, perhaps only needing some small > changes backported to 10.0, if anything. Well, I tried and it was much more work than I expected. FreeBSD likes to compile with -Werror but clang-3.4 introduced new warnings that trigger in dozens of places - dead code that's been there for years. I eventually gave up on trying to backport all the cleanup commits from 10-STABLE, and decided it was easier and probably safe to just ignore the new warnings with -Wno-error flags instead. I saw nothing to suggest the new optimisations in clang-3.4 at -O2 level were a problem. Attached patches allow a 10.0 kernel to build with clang-3.4 (after installing it, and adjusting debian/control). Maybe we should put something like this in experimental for now - in that case perhaps with DEBUG options turned back on - it would be a good baseline for when we have 10.1 BETA builds. Depending how soon the clang-3.3 removal ought to happen, after some testing in experimental, we could upload a 10.0 built with clang-3.4 and these patches (but no DEBUG options) to sid. Regards, -- Steven Chamberlain steven@pyro.eu.org
Description: Pick SVN r259991 from 10-STABLE to fix a -Wnon-literal-null-conversion --- kfreebsd-10-10.0.orig/sys/vm/vm_pageout.c +++ kfreebsd-10-10.0/sys/vm/vm_pageout.c @@ -1693,7 +1693,7 @@ } } #endif - vm_pageout_worker((uintptr_t)0); + vm_pageout_worker((void *)(uintptr_t)0); } /*
Description:
Use -Wno-error-unused-const-variable because Clang 3.4 revealed many of
these, too many to be worth backporting, and some code compiled only by
Debian (e.g. IPFILTER) has not been cleaned up yet.
.
Use -Wno-error-unused-function because Clang 3.4 revealed many of these
and not all have been cleaned up yet upstream.
--- kfreebsd-10-10.0.orig/sys/conf/kern.mk
+++ kfreebsd-10-10.0/sys/conf/kern.mk
@@ -29,7 +29,8 @@
# enough to error out the whole kernel build. Display them anyway, so there is
# some incentive to fix them eventually.
CWARNEXTRA?= -Wno-error-tautological-compare -Wno-error-empty-body \
- -Wno-error-parentheses-equality ${NO_WFORMAT}
+ -Wno-error-parentheses-equality -Wno-error-unused-function \
+ -Wno-error-unused-const-variable ${NO_WFORMAT}
.endif
# External compilers may not support our format extensions. Allow them
Description:
Pick SVN r260495 from 10-STABLE to avoid __wchar_t typedef conflict
if -fms-extensions is used together with Clang 3.4
Author: <dim@freebsd.org>
--- kfreebsd-10-10.0.orig/sys/conf/kern.pre.mk
+++ kfreebsd-10-10.0/sys/conf/kern.pre.mk
@@ -99,6 +99,8 @@
.if ${COMPILER_TYPE} == "clang"
CLANG_NO_IAS= -no-integrated-as
+.else
+GCC_MS_EXTENSIONS= -fms-extensions
.endif
.if defined(PROFLEVEL) && ${PROFLEVEL} >= 1
@@ -157,7 +159,7 @@
# Infiniband C flags. Correct include paths and omit errors that linux
# does not honor.
OFEDINCLUDES= -I$S/ofed/include/
-OFEDNOERR= -Wno-cast-qual -Wno-pointer-arith -fms-extensions
+OFEDNOERR= -Wno-cast-qual -Wno-pointer-arith ${GCC_MS_EXTENSIONS}
OFEDCFLAGS= ${CFLAGS:N-I*} ${OFEDINCLUDES} ${CFLAGS:M-I*} ${OFEDNOERR}
OFED_C_NOIMP= ${CC} -c -o ${.TARGET} ${OFEDCFLAGS} ${WERROR} ${PROF}
OFED_C= ${OFED_C_NOIMP} ${.IMPSRC}
--- kfreebsd-10-10.0.orig/sys/modules/drm2/radeonkms/Makefile
+++ kfreebsd-10-10.0/sys/modules/drm2/radeonkms/Makefile
@@ -103,7 +103,6 @@
iicbus_if.h \
pci_if.h
-CFLAGS += -I${.CURDIR}/../../../dev/drm2/radeon \
- -fms-extensions
+CFLAGS += -I${.CURDIR}/../../../dev/drm2/radeon ${GCC_MS_EXTENSIONS}
.include <bsd.kmod.mk>
--- kfreebsd-10-10.0.orig/sys/modules/ibcore/Makefile
+++ kfreebsd-10-10.0/sys/modules/ibcore/Makefile
@@ -20,4 +20,4 @@
.include <bsd.kmod.mk>
-CFLAGS+= -Wno-cast-qual -Wno-pointer-arith -fms-extensions
+CFLAGS+= -Wno-cast-qual -Wno-pointer-arith ${GCC_MS_EXTENSIONS}
--- kfreebsd-10-10.0.orig/sys/modules/ipoib/Makefile
+++ kfreebsd-10-10.0/sys/modules/ipoib/Makefile
@@ -28,4 +28,4 @@
.include <bsd.kmod.mk>
-CFLAGS+= -Wno-cast-qual -Wno-pointer-arith -fms-extensions
+CFLAGS+= -Wno-cast-qual -Wno-pointer-arith ${GCC_MS_EXTENSIONS}
--- kfreebsd-10-10.0.orig/sys/modules/mlx4/Makefile
+++ kfreebsd-10-10.0/sys/modules/mlx4/Makefile
@@ -26,4 +26,4 @@
.include <bsd.kmod.mk>
-CFLAGS+= -Wno-cast-qual -Wno-pointer-arith -fms-extensions
+CFLAGS+= -Wno-cast-qual -Wno-pointer-arith ${GCC_MS_EXTENSIONS}
--- kfreebsd-10-10.0.orig/sys/modules/mlx4ib/Makefile
+++ kfreebsd-10-10.0/sys/modules/mlx4ib/Makefile
@@ -31,4 +31,4 @@
.include <bsd.kmod.mk>
-CFLAGS+= -Wno-cast-qual -Wno-pointer-arith -fms-extensions
+CFLAGS+= -Wno-cast-qual -Wno-pointer-arith ${GCC_MS_EXTENSIONS}
--- kfreebsd-10-10.0.orig/sys/modules/mlxen/Makefile
+++ kfreebsd-10-10.0/sys/modules/mlxen/Makefile
@@ -25,4 +25,4 @@
.include <bsd.kmod.mk>
-CFLAGS+= -Wno-cast-qual -Wno-pointer-arith -fms-extensions
+CFLAGS+= -Wno-cast-qual -Wno-pointer-arith ${GCC_MS_EXTENSIONS}
--- kfreebsd-10-10.0.orig/sys/modules/mthca/Makefile
+++ kfreebsd-10-10.0/sys/modules/mthca/Makefile
@@ -28,4 +28,4 @@
.include <bsd.kmod.mk>
-CFLAGS+= -Wno-cast-qual -Wno-pointer-arith -fms-extensions
+CFLAGS+= -Wno-cast-qual -Wno-pointer-arith ${GCC_MS_EXTENSIONS}
--- kfreebsd-10-10.0.orig/sys/ofed/drivers/infiniband/hw/mlx4/Makefile
+++ kfreebsd-10-10.0/sys/ofed/drivers/infiniband/hw/mlx4/Makefile
@@ -28,4 +28,4 @@
.include <bsd.kmod.mk>
-CFLAGS+= -Wno-cast-qual -Wno-pointer-arith -fms-extensions
+CFLAGS+= -Wno-cast-qual -Wno-pointer-arith ${GCC_MS_EXTENSIONS}
--- kfreebsd-10-10.0.orig/sys/ofed/drivers/net/mlx4/Makefile
+++ kfreebsd-10-10.0/sys/ofed/drivers/net/mlx4/Makefile
@@ -30,5 +30,5 @@
.include <bsd.kmod.mk>
-CFLAGS+= -Wno-cast-qual -Wno-pointer-arith -fms-extensions
+CFLAGS+= -Wno-cast-qual -Wno-pointer-arith ${GCC_MS_EXTENSIONS}
Attachment:
signature.asc
Description: OpenPGP digital signature