Thread (14 messages) 14 messages, 6 authors, 2021-08-17

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

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 += -nostdinc
This 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.
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help