Re: [PATCH 3/3] isystem: delete global -isystem compile option
From: Alexey Dobriyan <hidden>
Date: 2021-08-02 06:42:52
Also in:
linux-arm-kernel, linuxppc-dev, lkml
From: Alexey Dobriyan <hidden>
Date: 2021-08-02 06:42:52
Also in:
linux-arm-kernel, linuxppc-dev, lkml
On Sun, Aug 01, 2021 at 04:32:47PM -0500, Segher Boessenkool wrote:
On Sun, Aug 01, 2021 at 11:13:36PM +0300, Alexey Dobriyan wrote:quoted
In theory, it enables "leakage" of userspace headers into kernel which may present licensing problem.quoted
-NOSTDINC_FLAGS += -nostdinc -isystem $(shell $(CC) -print-file-name=include) +NOSTDINC_FLAGS += -nostdincThis is removing the compiler's own include files. These are required for all kinds of basic features, and required to be compliant to the C standard at all.
No they are not required. Kernel uses its own bool, uintptr_t and static_assert, memset(), CHAR_BIT. noreturn, alignas newest C standard are next. This version changelog didn't mention but kernel would use -ffreestanding too if not other problems with the flag.
These are not "userspace headers", that is what -nostdinc takes care of already.
They are userspace headers in the sense they are external to the project just like userspace programs are external to the kernel.
In the case of GCC all these headers are GPL-with-runtime-exception, so claiming this can cause licensing problems is fearmongering.
I agree licensing problem doesn't really exist. It would take gcc drop-in replacement with authors insane enough to not license standard headers properly.
I strongly advise against doing this.
Kernel chose to be self-contained. -isystem removal makes sense then. It will be used for intrinsics where necessary.