Skip to content
Snippets Groups Projects
  1. May 13, 2022
    • Masahiro Yamada's avatar
      kbuild: prevent exported headers from including <stdlib.h>, <stdbool.h> · 02a6e4be
      Masahiro Yamada authored
      
      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: default avatarMasahiro Yamada <masahiroy@kernel.org>
      Signed-off-by: default avatarArnd Bergmann <arnd@arndb.de>
      Reviewed-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
      02a6e4be
Loading