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: > > In theory, it enables "leakage" of userspace headers into kernel which > > may present licensing problem. > > > -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.