svn commit: r323329 - head/sys/sys
Bruce Evans
brde at optusnet.com.au
Sat Sep 9 06:55:39 UTC 2017
On Fri, 8 Sep 2017, Ngie Cooper (yaneurabeya) wrote:
>> On Sep 8, 2017, at 13:09, Mateusz Guzik <mjg at FreeBSD.org> wrote:
>> ...
>> Log:
>> Allow __builtin_memset instead of bzero for small buffers of known size
>
> This change breaks all platforms that use gcc. If itâs not reverted in the next 3 hours, Iâll revert it.
Not all. It works for me. My version of it is 15-20 years old and never
always worked on old versions of FreeBSD
The problem seems to be with inlining parameters. These are fairly broken
by default in gcc-4.2.1, and the overrides in kern/pre.mk only work in some
cases. -Os is completely broken (with the overrides, it at best gives a
20% pessimization for space, and with other overrides inlining tends to
fail). I recently found a workaround: compile with -fno-inline-functions.
So my full compiler flags are CONF_CFLAGS=[-march=i386] -Os
-fno-inline-functions -fno-inline-functions-called-once. This should
reduce problems with inlining. However, kernels still build with the
bad default flags of -O2.
> Please fix ASAP if possible: https://ci.freebsd.org/job/FreeBSD-head-riscv64-build/3668/console .
This also shows problems with uninitialized variables. But
-Wno-uninitialized is the default for gcc-4.2.1. This breaks lots of
warnings Maybe you have different nonstandard options to avoid the
breakage.
-Wno-uninitialized is set in kern.mk, and also in kern.pre.mk for cddl.
(CDDL_CFLAGS apparerently gives a dumbed down subset of CWARNFLAGS to
break many more warnings.) There is a problem getting flags passed
to all Makefiles. CONF_CFLAGS (and all other makeoptions in config
files) is broken for modules (since macros in the kernel Makefile are
not inherited). This feature prevents me using modules even if I
forget I don't like them. Flags in kern.mk are only broken for boot
Makefiles which neglect to include kern.mk (that is, for all current
boot Makefiles).
Bruce
More information about the svn-src-head
mailing list