Skip site navigation (1)Skip section navigation (2)
Date:      Tue, 10 Nov 2020 21:50:07 +0000
From:      Brooks Davis <brooks@freebsd.org>
To:        Matthew Macy <mat.macy@gmail.com>
Cc:        src-committers <src-committers@freebsd.org>, svn-src-all <svn-src-all@freebsd.org>, svn-src-head <svn-src-head@freebsd.org>
Subject:   Re: svn commit: r367577 - in head: share/mk sys/conf tools/build/options
Message-ID:  <20201110215007.GD1959@spindle.one-eyed-alien.net>
In-Reply-To: <CAPrugNoFuWdEcmRY72Zcb9x3JWWvY4OGx-ZPaUVEi3WTu7PVKA@mail.gmail.com>
References:  <202011101915.0AAJFEWf059408@repo.freebsd.org> <CAPrugNoFuWdEcmRY72Zcb9x3JWWvY4OGx-ZPaUVEi3WTu7PVKA@mail.gmail.com>

next in thread | previous in thread | raw e-mail | index | archive | help

--V88s5gaDVPzZ0KCq
Content-Type: text/plain; charset=us-ascii
Content-Disposition: inline
Content-Transfer-Encoding: quoted-printable

Sorry about that.  I've fixed it in r367579.

-- Brooks

On Tue, Nov 10, 2020 at 12:46:45PM -0800, Matthew Macy wrote:
> These flags aren't defined by default when building external kernel modul=
es:
>=20
> gmake[2]: Entering directory '/usr/home/matt/devel/ZoF/module'
> env -u MAKEFLAGS make -C /home/matt/devel/ZoF/module -f Makefile.bsd -w
> make[3]: Entering directory `/home/matt/devel/ZoF/module'
> make[3]: "/usr/home/matt/devel/freebsd/sys/conf/kern.mk" line 233:
> Malformed conditional (${MK_INIT_ALL_ZERO} =3D=3D "yes")
> make[3]: Fatal errors encountered -- cannot continue
> make[3]: stopped in /home/matt/devel/ZoF/module
> gmake[2]: *** [Makefile:53: modules-FreeBSD] Error 1
> gmake[2]: Leaving directory '/usr/home/matt/devel/ZoF/module'
>=20
> On Tue, Nov 10, 2020 at 11:15 AM Brooks Davis <brooks@freebsd.org> wrote:
> >
> > Author: brooks
> > Date: Tue Nov 10 19:15:13 2020
> > New Revision: 367577
> > URL: https://svnweb.freebsd.org/changeset/base/367577
> >
> > Log:
> >   Support initializing stack variables on function entry
> >
> >   There are two options:
> >    - WITH_INIT_ALL_ZERO: Zero all variables on the stack.
> >    - WITH_INIT_ALL_PATTERN: Initialize variables with well-defined patt=
erns.
> >
> >   The exact pattern are a compiler implementation detail and vary by ty=
pe.
> >   They are somewhat documented in the LLVM commit message:
> >   https://reviews.llvm.org/rL349442
> >   I've used WITH_INIT_ALL_* to match Microsoft's InitAll feature rather
> >   than naming them after the LLVM specific compiler flags.
> >
> >   In a range of consumer products, options like these are used in
> >   both debug and production builds with debugs builds using patterns
> >   (intended to provoke crashes on use of uninitialized values) and
> >   production using zeros (deemed more likely to lead to harmless
> >   misbehavior or NULL-pointer dereferences).
> >
> >   Reviewed by:  emaste
> >   Obtained from:        CheriBSD
> >   Sponsored by: DARPA
> >   Differential Revision:        https://reviews.freebsd.org/D27131
> >
> > Added:
> >   head/tools/build/options/WITH_INIT_ALL_PATTERN   (contents, props cha=
nged)
> >   head/tools/build/options/WITH_INIT_ALL_ZERO   (contents, props change=
d)
> > Modified:
> >   head/share/mk/bsd.compiler.mk
> >   head/share/mk/bsd.lib.mk
> >   head/share/mk/bsd.opts.mk
> >   head/share/mk/bsd.prog.mk
> >   head/sys/conf/kern.mk
> >
> > Modified: head/share/mk/bsd.compiler.mk
> > =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D
> > --- head/share/mk/bsd.compiler.mk       Tue Nov 10 19:09:35 2020       =
 (r367576)
> > +++ head/share/mk/bsd.compiler.mk       Tue Nov 10 19:15:13 2020       =
 (r367577)
> > @@ -24,6 +24,7 @@
> >  # - c++11:     supports full (or nearly full) C++11 programming enviro=
nment.
> >  # - retpoline: supports the retpoline speculative execution vulnerabil=
ity
> >  #              mitigation.
> > +# - init-all:  supports stack variable initialization.
> >  #
> >  # These variables with an X_ prefix will also be provided if XCC is se=
t.
> >  #
> > @@ -214,7 +215,7 @@ ${X_}COMPILER_FEATURES=3D             c++11 c++14
> >  ${X_}COMPILER_FEATURES+=3D       c++17
> >  .endif
> >  .if ${${X_}COMPILER_TYPE} =3D=3D "clang"
> > -${X_}COMPILER_FEATURES+=3D       retpoline
> > +${X_}COMPILER_FEATURES+=3D       retpoline init-all
> >  .endif
> >
> >  .else
> >
> > Modified: head/share/mk/bsd.lib.mk
> > =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D
> > --- head/share/mk/bsd.lib.mk    Tue Nov 10 19:09:35 2020        (r36757=
6)
> > +++ head/share/mk/bsd.lib.mk    Tue Nov 10 19:15:13 2020        (r36757=
7)
> > @@ -85,6 +85,25 @@ LDFLAGS+=3D -Wl,-zretpolineplt
> >  .endif
> >  .endif
> >
> > +# Initialize stack variables on function entry
> > +.if ${MK_INIT_ALL_ZERO} =3D=3D "yes"
> > +.if ${COMPILER_FEATURES:Minit-all}
> > +CFLAGS+=3D -ftrivial-auto-var-init=3Dzero \
> > +    -enable-trivial-auto-var-init-zero-knowing-it-will-be-removed-from=
-clang
> > +CXXFLAGS+=3D -ftrivial-auto-var-init=3Dzero \
> > +    -enable-trivial-auto-var-init-zero-knowing-it-will-be-removed-from=
-clang
> > +.else
> > +.warning InitAll (zeros) requested but not support by compiler
> > +.endif
> > +.elif ${MK_INIT_ALL_PATTERN} =3D=3D "yes"
> > +.if ${COMPILER_FEATURES:Minit-all}
> > +CFLAGS+=3D -ftrivial-auto-var-init=3Dpattern
> > +CXXFLAGS+=3D -ftrivial-auto-var-init=3Dpattern
> > +.else
> > +.warning InitAll (pattern) requested but not support by compiler
> > +.endif
> > +.endif
> > +
> >  .if ${MK_DEBUG_FILES} !=3D "no" && empty(DEBUG_FLAGS:M-g) && \
> >      empty(DEBUG_FLAGS:M-gdwarf*)
> >  CFLAGS+=3D ${DEBUG_FILES_CFLAGS}
> >
> > Modified: head/share/mk/bsd.opts.mk
> > =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D
> > --- head/share/mk/bsd.opts.mk   Tue Nov 10 19:09:35 2020        (r36757=
6)
> > +++ head/share/mk/bsd.opts.mk   Tue Nov 10 19:15:13 2020        (r36757=
7)
> > @@ -71,6 +71,8 @@ __DEFAULT_NO_OPTIONS =3D \
> >      BIND_NOW \
> >      CCACHE_BUILD \
> >      CTF \
> > +    INIT_ALL_PATTERN \
> > +    INIT_ALL_ZERO \
> >      INSTALL_AS_USER \
> >      PIE \
> >      RETPOLINE \
> > @@ -84,6 +86,10 @@ __DEFAULT_DEPENDENT_OPTIONS =3D \
> >
> >
> >  .include <bsd.mkopt.mk>
> > +
> > +.if ${MK_INIT_ALL_PATTERN} =3D=3D "yes" && ${MK_INIT_ALL_ZERO} =3D=3D =
"yes"
> > +.error WITH_INIT_ALL_PATTERN and WITH_INIT_ALL_ZERO are mutually exclu=
sive.
> > +.endif
> >
> >  #
> >  # Supported NO_* options (if defined, MK_* will be forced to "no",
> >
> > Modified: head/share/mk/bsd.prog.mk
> > =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D
> > --- head/share/mk/bsd.prog.mk   Tue Nov 10 19:09:35 2020        (r36757=
6)
> > +++ head/share/mk/bsd.prog.mk   Tue Nov 10 19:15:13 2020        (r36757=
7)
> > @@ -60,6 +60,25 @@ LDFLAGS+=3D -Wl,-zretpolineplt
> >  .endif
> >  .endif
> >
> > +# Initialize stack variables on function entry
> > +.if ${MK_INIT_ALL_ZERO} =3D=3D "yes"
> > +.if ${COMPILER_FEATURES:Minit-all}
> > +CFLAGS+=3D -ftrivial-auto-var-init=3Dzero \
> > +    -enable-trivial-auto-var-init-zero-knowing-it-will-be-removed-from=
-clang
> > +CXXFLAGS+=3D -ftrivial-auto-var-init=3Dzero \
> > +    -enable-trivial-auto-var-init-zero-knowing-it-will-be-removed-from=
-clang
> > +.else
> > +.warning InitAll (zeros) requested but not support by compiler
> > +.endif
> > +.elif ${MK_INIT_ALL_PATTERN} =3D=3D "yes"
> > +.if ${COMPILER_FEATURES:Minit-all}
> > +CFLAGS+=3D -ftrivial-auto-var-init=3Dpattern
> > +CXXFLAGS+=3D -ftrivial-auto-var-init=3Dpattern
> > +.else
> > +.warning InitAll (pattern) requested but not support by compiler
> > +.endif
> > +.endif
> > +
> >  .if ${MACHINE_CPUARCH} =3D=3D "riscv" && ${LINKER_FEATURES:Mriscv-rela=
xations} =3D=3D ""
> >  CFLAGS +=3D -mno-relax
> >  .endif
> >
> > Modified: head/sys/conf/kern.mk
> > =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D
> > --- head/sys/conf/kern.mk       Tue Nov 10 19:09:35 2020        (r36757=
6)
> > +++ head/sys/conf/kern.mk       Tue Nov 10 19:15:13 2020        (r36757=
7)
> > @@ -228,6 +228,24 @@ CFLAGS+=3D   -mretpoline
> >  .endif
> >
> >  #
> > +# Initialize stack variables on function entry
> > +#
> > +.if ${MK_INIT_ALL_ZERO} =3D=3D "yes"
> > +.if ${COMPILER_FEATURES:Minit-all}
> > +CFLAGS+=3D -ftrivial-auto-var-init=3Dzero \
> > +    -enable-trivial-auto-var-init-zero-knowing-it-will-be-removed-from=
-clang
> > +.else
> > +.warning InitAll (zeros) requested but not support by compiler
> > +.endif
> > +.elif ${MK_INIT_ALL_PATTERN} =3D=3D "yes"
> > +.if ${COMPILER_FEATURES:Minit-all}
> > +CFLAGS+=3D -ftrivial-auto-var-init=3Dpattern
> > +.else
> > +.warning InitAll (pattern) requested but not support by compiler
> > +.endif
> > +.endif
> > +
> > +#
> >  # Add -gdwarf-2 when compiling -g. The default starting in clang v3.4
> >  # and gcc 4.8 is to generate DWARF version 4. However, our tools don't
> >  # cope well with DWARF 4, so force it to genereate DWARF2, which they
> >
> > Added: head/tools/build/options/WITH_INIT_ALL_PATTERN
> > =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D
> > --- /dev/null   00:00:00 1970   (empty, because file is newly added)
> > +++ head/tools/build/options/WITH_INIT_ALL_PATTERN      Tue Nov 10 19:1=
5:13 2020        (r367577)
> > @@ -0,0 +1,5 @@
> > +.\" $FreeBSD$
> > +Set to build the base system or kernel with stack variables initialize=
d to
> > +.Pq compiler defined
> > +debugging patterns on function entry.
> > +This option requires the clang compiler.
> >
> > Added: head/tools/build/options/WITH_INIT_ALL_ZERO
> > =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D
> > --- /dev/null   00:00:00 1970   (empty, because file is newly added)
> > +++ head/tools/build/options/WITH_INIT_ALL_ZERO Tue Nov 10 19:15:13 202=
0        (r367577)
> > @@ -0,0 +1,4 @@
> > +.\" $FreeBSD$
> > +Set to build the base system or kernel with stack variables initialized
> > +to zero on function entry.
> > +This option requires that the clang compiler be used.
>=20

--V88s5gaDVPzZ0KCq
Content-Type: application/pgp-signature; name="signature.asc"

-----BEGIN PGP SIGNATURE-----

iQEcBAEBAgAGBQJfqwsOAAoJEKzQXbSebgfAwj0H/3WkVjGcexHVNAzAmxyvjJ0+
A75eGFyYwA2Lqbuykq/zGeenKjboOvuM292r363w6Gc9Qz87nHvf1tCXWNlR9qrk
PE5uMOKzyEwP/oJgpToI04gt/cYvsD634+EiNRiOaSzkLti3JdEQQU8W7NBf+JqO
CdrNx9/yt1gIkep3dlyLt6S/JHRW7CUqOZx2gTYwdzWDLvuKzHBDZqDSx0Wk+svk
LqYfHaeLeNo7pY2xVoTek2aYACfewjhD9TOApG/hzWv0HYCO2USLCqeIUO2bjpU0
DXdsMJFl6VCuIa2ag7NFXdvLiV5jmbl1gOIER8hSi6ieQUXDucOq2YALA02Ahco=
=uDFQ
-----END PGP SIGNATURE-----

--V88s5gaDVPzZ0KCq--



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