[PATCH 06/12] selinux/genheaders: include bitsperlong and posix_types headers

Nicolas Schier nicolas at fjasle.eu
Thu Aug 8 11:12:56 UTC 2024


Am Wed, Aug 07, 2024 at 09:41:00PM +0000 schrieb Daniel Gomez:
> Date: Wed, 7 Aug 2024 21:41:00 +0000
> From: Daniel Gomez <da.gomez at samsung.com>
> To: Nicolas Schier <nicolas at fjasle.eu>
> CC: Masahiro Yamada <masahiroy at kernel.org>, Nathan Chancellor
>  <nathan at kernel.org>, Lucas De Marchi <lucas.demarchi at intel.com>, Thomas
>  Hellström <thomas.hellstrom at linux.intel.com>, Rodrigo Vivi
>  <rodrigo.vivi at intel.com>, Maarten Lankhorst
>  <maarten.lankhorst at linux.intel.com>, Maxime Ripard <mripard at kernel.org>,
>  Thomas Zimmermann <tzimmermann at suse.de>, David Airlie <airlied at gmail.com>,
>  Daniel Vetter <daniel at ffwll.ch>, William Hubbs <w.d.hubbs at gmail.com>,
>  Chris Brannon <chris at the-brannons.com>, Kirk Reiser <kirk at reisers.ca>,
>  Samuel Thibault <samuel.thibault at ens-lyon.org>, Paul Moore
>  <paul at paul-moore.com>, Stephen Smalley <stephen.smalley.work at gmail.com>,
>  Ondrej Mosnacek <omosnace at redhat.com>, Catalin Marinas
>  <catalin.marinas at arm.com>, Will Deacon <will at kernel.org>, Marc Zyngier
>  <maz at kernel.org>, Oliver Upton <oliver.upton at linux.dev>, James Morse
>  <james.morse at arm.com>, Suzuki K Poulose <suzuki.poulose at arm.com>, Zenghui
>  Yu <yuzenghui at huawei.com>, Greg Kroah-Hartman
>  <gregkh at linuxfoundation.org>, Jiri Slaby <jirislaby at kernel.org>, Nick
>  Desaulniers <ndesaulniers at google.com>, Bill Wendling <morbo at google.com>,
>  Justin Stitt <justinstitt at google.com>, "linux-kernel at vger.kernel.org"
>  <linux-kernel at vger.kernel.org>, "linux-kbuild at vger.kernel.org"
>  <linux-kbuild at vger.kernel.org>, "intel-xe at lists.freedesktop.org"
>  <intel-xe at lists.freedesktop.org>, "dri-devel at lists.freedesktop.org"
>  <dri-devel at lists.freedesktop.org>, "speakup at linux-speakup.org"
>  <speakup at linux-speakup.org>, "selinux at vger.kernel.org"
>  <selinux at vger.kernel.org>, "linux-arm-kernel at lists.infradead.org"
>  <linux-arm-kernel at lists.infradead.org>, "kvmarm at lists.linux.dev"
>  <kvmarm at lists.linux.dev>, "linux-serial at vger.kernel.org"
>  <linux-serial at vger.kernel.org>, "llvm at lists.linux.dev"
>  <llvm at lists.linux.dev>, Finn Behrens <me at kloenk.dev>, "Daniel Gomez
>  (Samsung)" <d+samsung at kruces.com>, "gost.dev at samsung.com"
>  <gost.dev at samsung.com>
> Subject: Re: [PATCH 06/12] selinux/genheaders: include bitsperlong and
>  posix_types headers
> Message-ID: <sbj3c3tlafewy2n4pylbnpb4gwylpnyxovdykfy3dhk2wqmpry at ekhhe3mgqnd6>
> 
> On Wed, Aug 07, 2024 at 05:38:28PM GMT, Nicolas Schier wrote:
> > On Wed, Aug 07, 2024 at 01:09:20AM +0200, Daniel Gomez via B4 Relay wrote:
> > > From: Daniel Gomez <da.gomez at samsung.com>
> > > 
> > > The genheaders requires the bitsperlong.h and posix_types.h headers.
> > > To ensure these headers are found during compilation on macOS hosts,
> > > add usr/include to HOST_EXTRACFLAGS in the genheaders Makefile. This
> > > adjustment allows the compiler to locate all necessary headers when they
> > > are not available by default on macOS.
> > > 
> > > Signed-off-by: Daniel Gomez <da.gomez at samsung.com>
> > > ---
> > >  scripts/selinux/genheaders/Makefile | 3 ++-
> > >  1 file changed, 2 insertions(+), 1 deletion(-)
> > > 
> > > diff --git a/scripts/selinux/genheaders/Makefile b/scripts/selinux/genheaders/Makefile
> > > index 1faf7f07e8db..017149c90f8e 100644
> > > --- a/scripts/selinux/genheaders/Makefile
> > > +++ b/scripts/selinux/genheaders/Makefile
> > > @@ -2,4 +2,5 @@
> > >  hostprogs-always-y += genheaders
> > >  HOST_EXTRACFLAGS += \
> > >  	-I$(srctree)/include/uapi -I$(srctree)/include \
> > > -	-I$(srctree)/security/selinux/include
> > > +	-I$(srctree)/security/selinux/include \
> > > +	-I$(srctree)/usr/include
> > 
> > 'make headers' composes the UAPI header tree in $(objtree)/usr/include.
> > So, if you build out-of-source, -I$(srctree)/usr/include will not match.
> > Just remove the '$(srctree)/' prefix as '$(objtree)/' is always '.'.
> 
> The 'headers' target also deploys installs the headers in arch/$(SRCARCH)/
> include/uapi, so I've updated selinux/genheaders/Makefile to the following:
> 
> diff --git a/scripts/selinux/genheaders/Makefile b/scripts/selinux/genheaders/Makefile
> index 1faf7f07e8db..ae1f195b6f67 100644
> --- a/scripts/selinux/genheaders/Makefile
> +++ b/scripts/selinux/genheaders/Makefile
> @@ -2,4 +2,6 @@
>  hostprogs-always-y += genheaders
>  HOST_EXTRACFLAGS += \
>         -I$(srctree)/include/uapi -I$(srctree)/include \
> -       -I$(srctree)/security/selinux/include
> +       -I$(srctree)/security/selinux/include \
> +       -I$(objtree)/arch/$(SRCARCH)/include/generated/uapi \
> +       -I$(objtree)/arch/$(SRCARCH)/include/uapi

SRCARCH is not derived from the host but from $(ARCH) (cp. top-level
Makefile), thus you must not use arch/$(SRCARCH)/include/* for building
host progs as this breaks cross-building (e.g. consider build Linux for
32bit m68k on a arm64 host).

> 
> The include path -I$(objtree)/arch/$(SRCARCH)/include/generated/uapi
> enables locating the asm/types.h.
> 
> The include path -I$(objtree)/arch/$(SRCARCH)/include/uapi enables
> locating the asm/bitsperlong.h and asm/posix_types.h.
> 
> > 
> > But I am suspecting that this break cross-building.
> 
> I’ve tested this change on macOS with ARCH=arm64, as well as on Debian with
> ARCH=arm64 and ARCH=x86_64. Is it enough to just confirm that cross-building
> still works after this change?

No, it isn't.  asm/bitsperlong.h is probably similar (enough) for current
64-bit systems, but 32-bit platforms will have different versions.
Anyway, we must not use target arch/platform-specific header files for
host progs.  If we do, it will break.

You want to use arm64 specific header files for building your arm64 host
progs, as MacOS does not provide these (thus, it's a missing build
dependency).  As this is not common (yet), such a build hack should be limited
to MacOS/Darwin only to not accidentally break other platforms.  (Do you also
have MacOS/amd64 in mind?)

As written elsewhere, another approach could be to create and maintain a Linux
kernel dev kit for MacOS, that delivers (fetches, downloads, generates) all
missing header files.

Kind regards,
Nicolas

-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 833 bytes
Desc: not available
URL: <https://lists.freedesktop.org/archives/dri-devel/attachments/20240808/98cb9b7d/attachment.sig>


More information about the dri-devel mailing list