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
     

04 Nov, 2019

1 commit


28 Oct, 2019

1 commit


21 Oct, 2019

1 commit


15 Oct, 2019

1 commit


14 Oct, 2019

1 commit


12 Oct, 2019

1 commit

  • Pull module fixes from Jessica Yu:
    "Code cleanups and kbuild/namespace related fixups from Masahiro.

    Most importantly, it fixes a namespace-related modpost issue for
    external module builds

    - Fix broken external module builds due to a modpost bug in
    read_dump(), where the namespace was not being strdup'd and
    sym->namespace would be set to bogus data.

    - Various namespace-related kbuild fixes and cleanups thanks to
    Masahiro Yamada"

    * tag 'modules-for-v5.4-rc3' of git://git.kernel.org/pub/scm/linux/kernel/git/jeyu/linux:
    doc: move namespaces.rst from kbuild/ to core-api/
    nsdeps: make generated patches independent of locale
    nsdeps: fix hashbang of scripts/nsdeps
    kbuild: fix build error of 'make nsdeps' in clean tree
    module: rename __kstrtab_ns_* to __kstrtabns_* to avoid symbol conflict
    modpost: fix broken sym->namespace for external module builds
    module: swap the order of symbol.namespace
    scripts: add_namespace: Fix coccicheck failed

    Linus Torvalds
     

09 Oct, 2019

1 commit

  • …/git/shuah/linux-kselftest

    Pull Kselftest fixes from Shuah Khan:
    "Fixes for existing tests and the framework.

    Cristian Marussi's patches add the ability to skip targets (tests) and
    exclude tests that didn't build from run-list. These patches improve
    the Kselftest results. Ability to skip targets helps avoid running
    tests that aren't supported in certain environments. As an example,
    bpf tests from mainline aren't supported on stable kernels and have
    dependency on bleeding edge llvm. Being able to skip bpf on systems
    that can't meet this llvm dependency will be helpful.

    Kselftest can be built and installed from the main Makefile. This
    change help simplify Kselftest use-cases which addresses request from
    users.

    Kees Cook added per test timeout support to limit individual test
    run-time"

    * tag 'linux-kselftest-5.4-rc3' of git://git.kernel.org/pub/scm/linux/kernel/git/shuah/linux-kselftest:
    selftests: watchdog: Add command line option to show watchdog_info
    selftests: watchdog: Validate optional file argument
    selftests/kselftest/runner.sh: Add 45 second timeout per test
    kselftest: exclude failed TARGETS from runlist
    kselftest: add capability to skip chosen TARGETS
    selftests: Add kselftest-all and kselftest-install targets

    Linus Torvalds
     

08 Oct, 2019

1 commit

  • Running 'make nsdeps' in a clean source tree fails as follows:

    $ make -s clean; make -s defconfig; make nsdeps
    [ snip ]
    awk: fatal: cannot open file `init/modules.order' for reading (No such file or directory)
    make: *** [Makefile;1307: modules.order] Error 2
    make: *** Deleting file 'modules.order'
    make: *** Waiting for unfinished jobs....

    The cause of the error is 'make nsdeps' does not build modules at all.
    Set KBUILD_MODULES to fix it.

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

    Masahiro Yamada
     

07 Oct, 2019

1 commit


02 Oct, 2019

1 commit

  • Add kselftest-all target to build tests from the top level
    Makefile. This is to simplify kselftest use-cases for CI and
    distributions where build and test systems are different.

    Current kselftest target builds and runs tests on a development
    system which is a developer use-case.

    Add kselftest-install target to install tests from the top level
    Makefile. This is to simplify kselftest use-cases for CI and
    distributions where build and test systems are different.

    This change addresses requests from developers and testers to add
    support for installing kselftest from the main Makefile.

    In addition, make the install directory the same when install is
    run using "make kselftest-install" or by running kselftest_install.sh.
    Also fix the INSTALL_PATH variable conflict between main Makefile and
    selftests Makefile.

    Signed-off-by: Shuah Khan
    Acked-by: Masahiro Yamada
    Signed-off-by: Shuah Khan

    Shuah Khan
     

01 Oct, 2019

1 commit