Commit 02a6e4b
kbuild: prevent exported headers from including <stdlib.h>, <stdbool.h>
Some UAPI headers included <stdlib.h>, like this:
#ifndef __KERNEL__
#include <stdlib.h>
#endif
As it turned out, they just included it for no good reason.
After some fixes, now I can compile-test UAPI headers
(CONFIG_UAPI_HEADER_TEST=y) without including <stdlib.h> from the
system header search paths.
To avoid somebody getting it back again, this commit adds the dummy
header, usr/dummy-include/stdlib.h
I added $(srctree)/usr/dummy-include to the header search paths.
Because it is searched before the system directories, if someone
tries to include <stdlib.h>, they will see the error message.
While I am here, I also replaced $(objtree)/usr/include with $(obj),
but it has no functional change.
If we can make kernel headers self-contained (that is, none of exported
kernel headers includes system headers), we will be able to add the
-nostdinc flag, but that is much far from where we stand now.
As a realistic solution, we can ban header inclusion individually by
putting a dummy header into usr/dummy-include/.
Currently, no header include <stdbool.h>. I put it as well before somebody
attempts to use it.
Signed-off-by: Masahiro Yamada <masahiroy@kernel.org>
Signed-off-by: Arnd Bergmann <arnd@arndb.de>
Reviewed-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>1 parent 783eb35 commit 02a6e4b
3 files changed
Lines changed: 15 additions & 1 deletion
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
| 1 | + | |
| 2 | + | |
| 3 | + | |
| 4 | + | |
| 5 | + | |
| 6 | + | |
| 7 | + | |
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
| 1 | + | |
| 2 | + | |
| 3 | + | |
| 4 | + | |
| 5 | + | |
| 6 | + | |
| 7 | + | |
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
15 | 15 | | |
16 | 16 | | |
17 | 17 | | |
18 | | - | |
| 18 | + | |
19 | 19 | | |
20 | 20 | | |
21 | 21 | | |
| |||
0 commit comments