23 Mar, 2020

1 commit


20 Mar, 2020

1 commit

  • …/masahiroy/linux-kbuild

    Pull Kbuild fixes from Masahiro Yamada:

    - fix __uint128_t capability test in Kconfig when GCC that defaults to
    32-bit is used to build the 64-bit kernel

    - suppress new noisy Clang warnings -Wpointer-to-enum-cast

    - move the namespace field in Module.symvers for the backward
    compatibility reason for the depmod tool

    - use available compression for initramdisk when INTRAMFS_SOURCE is
    defined, which was the original behavior

    - fix modpost to handle correct large section numbers when it refers to
    modversion CRCs and module namespaces

    - fix comments and documents

    * tag 'kbuild-fixes-v5.6-3' of git://git.kernel.org/pub/scm/linux/kernel/git/masahiroy/linux-kbuild:
    scripts/kallsyms: fix wrong kallsyms_relative_base
    modpost: Get proper section index by get_secindex() instead of st_shndx
    initramfs: restore default compression behavior
    modpost: move the namespace field in Module.symvers last
    kbuild: Disable -Wpointer-to-enum-cast
    kbuild: doc: fix references to other documents
    int128: fix __uint128_t compiler test in Kconfig
    kconfig: introduce m32-flag and m64-flag
    kbuild: Fix inconsistent comment

    Linus Torvalds
     

16 Mar, 2020

1 commit


12 Mar, 2020

1 commit

  • The commit 2042b5486bd3 ("kbuild: unset variables in top Makefile
    instead of setting 0") renamed the variable from "config-targets"
    to "config-build", the comment should be consistent accordingly.

    Signed-off-by: Kaiden PK Yu (余泊鎧)
    Signed-off-by: SZ Lin (林上智)
    Signed-off-by: Masahiro Yamada

    SZ Lin (林上智)
     

09 Mar, 2020

1 commit


02 Mar, 2020

1 commit


27 Feb, 2020

3 commits


24 Feb, 2020

1 commit


17 Feb, 2020

1 commit


10 Feb, 2020

1 commit


06 Feb, 2020

1 commit

  • Currently, the single-target build does not work when two
    or more sub-directories are given:

    $ make fs/ kernel/ lib/
    CALL scripts/checksyscalls.sh
    CALL scripts/atomic/check-atomics.sh
    DESCEND objtool
    make[2]: Nothing to be done for 'kernel/'.
    make[2]: Nothing to be done for 'fs/'.
    make[2]: Nothing to be done for 'lib/'.

    Make it work properly.

    Reported-by: Linus Torvalds
    Signed-off-by: Masahiro Yamada

    Masahiro Yamada
     

02 Feb, 2020

1 commit

  • Pull Kbuild updates from Masahiro Yamada:

    - detect missing include guard in UAPI headers

    - do not create orphan built-in.a or obj-y objects

    - generate modules.builtin more simply, and drop tristate.conf

    - simplify built-in initramfs creation

    - make linux-headers deb package thinner

    - optimize the deb package build script

    - misc cleanups

    * tag 'kbuild-v5.6' of git://git.kernel.org/pub/scm/linux/kernel/git/masahiroy/linux-kbuild: (34 commits)
    builddeb: split libc headers deployment out into a function
    builddeb: split kernel headers deployment out into a function
    builddeb: remove redundant make for ARCH=um
    builddeb: avoid invoking sub-shells where possible
    builddeb: remove redundant $objtree/
    builddeb: match temporary directory name to the package name
    builddeb: remove unneeded files in hdrobjfiles for headers package
    kbuild: use -S instead of -E for precise cc-option test in Kconfig
    builddeb: allow selection of .deb compressor
    kbuild: remove 'Building modules, stage 2.' log
    kbuild: remove *.tmp file when filechk fails
    kbuild: remove PYTHON2 variable
    modpost: assume STT_SPARC_REGISTER is defined
    gen_initramfs.sh: remove intermediate cpio_list on errors
    initramfs: refactor the initramfs build rules
    gen_initramfs.sh: always output cpio even without -o option
    initramfs: add default_cpio_list, and delete -d option support
    initramfs: generate dependency list and cpio at the same time
    initramfs: specify $(src)/gen_initramfs.sh as a prerequisite in Makefile
    initramfs: make initramfs compression choice non-optional
    ...

    Linus Torvalds
     

27 Jan, 2020

1 commit


20 Jan, 2020

1 commit


15 Jan, 2020

1 commit


13 Jan, 2020

1 commit


07 Jan, 2020

1 commit

  • Commit bc081dd6e9f6 ("kbuild: generate modules.builtin") added
    infrastructure to generate modules.builtin, the list of all
    builtin modules.

    Basically, it works like this:

    - Kconfig generates include/config/tristate.conf, the list of
    tristate CONFIG options with a value in a capital letter.

    - scripts/Makefile.modbuiltin makes Kbuild descend into
    directories to collect the information of builtin modules.

    I am not a big fan of it because Kbuild ends up with traversing
    the source tree twice.

    I am not sure how perfectly it should work, but this approach cannot
    avoid false positives; even if the relevant CONFIG option is tristate,
    some Makefiles forces obj-m to obj-y.

    Some examples are:

    arch/powerpc/platforms/powermac/Makefile:
    obj-$(CONFIG_NVRAM:m=y) += nvram.o

    net/ipv6/Makefile:
    obj-$(subst m,y,$(CONFIG_IPV6)) += inet6_hashtables.o

    net/netlabel/Makefile:
    obj-$(subst m,y,$(CONFIG_IPV6)) += netlabel_calipso.o

    Nobody has complained about (or noticed) it, so it is probably fine to
    have false positives in modules.builtin.

    This commit simplifies the implementation. Let's exploit the fact
    that every module has MODULE_LICENSE(). (modpost shows a warning if
    MODULE_LICENSE is missing. If so, 0-day bot would already have blocked
    such a module.)

    I added MODULE_FILE to . When the code is being compiled
    as builtin, it will be filled with the file path of the module, and
    collected into modules.builtin.info. Then, scripts/link-vmlinux.sh
    extracts the list of builtin modules out of it.

    This new approach fixes the false-positives above, but adds another
    type of false-positives; non-modular code may have MODULE_LICENSE()
    by mistake. This is not a big deal, it is just the code is always
    orphan. We can clean it up if we like. You can see cleanup examples by:

    $ git log --grep='make.* explicitly non-modular'

    To sum up, this commits deletes lots of code, but still produces almost
    equivalent results. Please note it does not increase the vmlinux size at
    all. As you can see in include/asm-generic/vmlinux.lds.h, the .modinfo
    section is discarded in the link stage.

    Signed-off-by: Masahiro Yamada

    Masahiro Yamada
     

06 Jan, 2020

1 commit


30 Dec, 2019

1 commit


23 Dec, 2019

1 commit


22 Dec, 2019

1 commit

  • …asahiroy/linux-kbuild

    Pull Kbuild fixes from Masahiro Yamada:

    - fix warning in out-of-tree 'make clean'

    - add READELF variable to the top Makefile

    - fix broken builds when LINUX_COMPILE_BY contains a backslash

    - fix build warning in kallsyms

    - fix NULL pointer access in expr_eq() in Kconfig

    - fix missing dependency on rsync in deb-pkg build

    - remove ---help--- from documentation

    - fix misleading documentation about directory descending

    * tag 'kbuild-fixes-v5.5' of git://git.kernel.org/pub/scm/linux/kernel/git/masahiroy/linux-kbuild:
    kbuild: clarify the difference between obj-y and obj-m w.r.t. descending
    kconfig: remove ---help--- from documentation
    scripts: package: mkdebian: add missing rsync dependency
    kconfig: don't crash on NULL expressions in expr_eq()
    scripts/kallsyms: fix offset overflow of kallsyms_relative_base
    mkcompile_h: use printf for LINUX_COMPILE_BY
    mkcompile_h: git rid of UTS_TRUNCATE from LINUX_COMPILE_{BY,HOST}
    x86/boot: kbuild: allow readelf executable to be specified
    kbuild: fix 'No such file or directory' warning when cleaning

    Linus Torvalds
     

16 Dec, 2019

1 commit


14 Dec, 2019

1 commit

  • Introduce a new READELF variable to top-level Makefile, so the name of
    readelf binary can be specified.

    Before this change the name of the binary was hardcoded to
    "$(CROSS_COMPILE)readelf" which might not be present for every
    toolchain.

    This allows to build with LLVM Object Reader by using make parameter
    READELF=llvm-readelf.

    Link: https://github.com/ClangBuiltLinux/linux/issues/771
    Signed-off-by: Dmitry Golovin
    Reviewed-by: Nick Desaulniers
    Signed-off-by: Masahiro Yamada

    Dmitry Golovin
     

09 Dec, 2019

1 commit


03 Dec, 2019

1 commit

  • Pull Kbuild updates from Masahiro Yamada:

    - remove unneeded asm headers from hexagon, ia64

    - add 'dir-pkg' target, which works like 'tar-pkg' but skips archiving

    - add 'helpnewconfig' target, which shows help for new CONFIG options

    - support 'make nsdeps' for external modules

    - make rebuilds faster by deleting $(wildcard $^) checks

    - remove compile tests for kernel-space headers

    - refactor modpost to simplify modversion handling

    - make single target builds faster

    - optimize and clean up scripts/kallsyms.c

    - refactor various Makefiles and scripts

    * tag 'kbuild-v5.5' of git://git.kernel.org/pub/scm/linux/kernel/git/masahiroy/linux-kbuild: (59 commits)
    MAINTAINERS: update Kbuild/Kconfig maintainer's email address
    scripts/kallsyms: remove redundant initializers
    scripts/kallsyms: put check_symbol_range() calls close together
    scripts/kallsyms: make check_symbol_range() void function
    scripts/kallsyms: move ignored symbol types to is_ignored_symbol()
    scripts/kallsyms: move more patterns to the ignored_prefixes array
    scripts/kallsyms: skip ignored symbols very early
    scripts/kallsyms: add const qualifiers where possible
    scripts/kallsyms: make find_token() return (unsigned char *)
    scripts/kallsyms: replace prefix_underscores_count() with strspn()
    scripts/kallsyms: add sym_name() to mitigate cast ugliness
    scripts/kallsyms: remove unneeded length check for prefix matching
    scripts/kallsyms: remove redundant is_arm_mapping_symbol()
    scripts/kallsyms: set relative_base more effectively
    scripts/kallsyms: shrink table before sorting it
    scripts/kallsyms: fix definitely-lost memory leak
    scripts/kallsyms: remove unneeded #ifndef ARRAY_SIZE
    kbuild: make single target builds even faster
    modpost: respect the previous export when 'exported twice' is warned
    modpost: do not set ->preloaded for symbols from Module.symvers
    ...

    Linus Torvalds
     

25 Nov, 2019

1 commit


23 Nov, 2019

1 commit

  • Commit 2dffd23f81a3 ("kbuild: make single target builds much faster")
    made the situation much better.

    To improve it even more, apply the similar idea to the top Makefile.
    Trim unrelated directories from build-dirs.

    The single build code must be moved above the 'descend' target.

    Signed-off-by: Masahiro Yamada
    Tested-by: Jens Axboe

    Masahiro Yamada
     

18 Nov, 2019

1 commit


14 Nov, 2019

3 commits

  • Currently, some sanity checks for uapi headers are done by
    scripts/headers_check.pl, which is wired up to the 'headers_check'
    target in the top Makefile.

    It is true compiling headers has better test coverage, but there
    are still several headers excluded from the compile test. I like
    to keep headers_check.pl for a while, but we can delete a lot of
    code by moving the build rule to usr/include/Makefile.

    Signed-off-by: Masahiro Yamada

    Masahiro Yamada
     
  • There are both positive and negative options about this feature.
    At first, I thought it was a good idea, but actually Linus stated a
    negative opinion (https://lkml.org/lkml/2019/9/29/227). I admit it
    is ugly and annoying.

    The baseline I'd like to keep is the compile-test of uapi headers.
    (Otherwise, kernel developers have no way to ensure the correctness
    of the exported headers.)

    I will maintain a small build rule in usr/include/Makefile.
    Remove the other header test functionality.

    Signed-off-by: Masahiro Yamada

    Masahiro Yamada
     
  • Sparse uses the same executable for all archs and uses flags
    like -m64, -mbig-endian or -D__arm__ for arch-specific parameters.
    But Sparse also uses value from the host machine used to build
    Sparse as default value for the target machine.

    This works, of course, well for native build but can create
    problems when cross-compiling, like defining both '__i386__'
    and '__arm__' when cross-compiling for arm on a x86-64 machine.

    Fix this by explicitely telling sparse the target architecture.

    Reported-by: Ben Dooks
    Signed-off-by: Luc Van Oostenryck
    Signed-off-by: Masahiro Yamada

    Luc Van Oostenryck
     

11 Nov, 2019

7 commits

  • scripts/nsdeps is written to take care of only in-tree modules.
    Perhaps, this is not a bug, but just a design. At least,
    Documentation/core-api/symbol-namespaces.rst focuses on in-tree modules.

    Having said that, some people already tried nsdeps for external modules.
    So, it would be nice to support it.

    Reported-by: Steve French
    Reported-by: Jessica Yu
    Signed-off-by: Masahiro Yamada
    Tested-by: Jessica Yu
    Acked-by: Jessica Yu
    Reviewed-by: Matthias Maennich
    Tested-by: Matthias Maennich

    Masahiro Yamada
     
  • The modpost, with the -d option given, generates per-module .ns_deps
    files.

    Kbuild generates per-module .mod files to carry module information.
    This is convenient because Make handles multiple jobs in parallel
    when the -j option is given.

    On the other hand, the modpost always runs as a single thread.
    I do not see a strong reason to produce separate .ns_deps files.

    This commit changes the modpost to generate just one file,
    modules.nsdeps, each line of which has the following format:

    :

    Please note it contains *missing* namespaces instead of required ones.
    So, modules.nsdeps is empty if the namespace dependency is all good.

    This will work more efficiently because spatch will no longer process
    already imported namespaces. I removed the '(if needed)' from the
    nsdeps log since spatch is invoked only when needed.

    This also solves the stale .ns_deps problem reported by Jessica Yu:

    https://lkml.org/lkml/2019/10/28/467

    Signed-off-by: Masahiro Yamada
    Tested-by: Jessica Yu
    Acked-by: Jessica Yu
    Reviewed-by: Matthias Maennich
    Tested-by: Matthias Maennich

    Masahiro Yamada
     
  • 'make nsdeps' invokes the modpost three times at most; before linking
    vmlinux, before building modules, and finally for generating .ns_deps
    files. Running the modpost again and again is not efficient.

    The last two can be unified. When the -d option is given, the modpost
    still does the usual job, and in addition, generates .ns_deps files.

    Signed-off-by: Masahiro Yamada
    Tested-by: Matthias Maennich
    Reviewed-by: Matthias Maennich

    Masahiro Yamada
     
  • There are 6 defconfigs with names longer than 24 characters, breaking
    alignment in "make help".

    The "winner" is "ecovec24-romimage_defconfig", counting in at 27
    characters.

    Extend the defconfig field size to 27 to restore alignment.
    Don't use a larger value, to not encourage people to create even longer
    defconfig names.

    Signed-off-by: Geert Uytterhoeven
    Acked-by: Hans-Christian Egtvedt
    Signed-off-by: Masahiro Yamada

    Geert Uytterhoeven
     
  • Some "make help" text lines extend beyond 80 characters.
    Wrap them before an opening parenthesis, or before 80 characters.

    Signed-off-by: Geert Uytterhoeven
    Signed-off-by: Masahiro Yamada

    Geert Uytterhoeven
     
  • When single-build is set, everything in $(MAKECMDGOALS) is a single
    target. You can use $(MAKECMDGOALS) to list out the single targets.

    Signed-off-by: Masahiro Yamada

    Masahiro Yamada
     
  • Linus Torvalds