[GIT PULL] Kbuild updates for v6.1-rc1

From: Masahiro Yamada
Date: Thu Oct 06 2022 - 10:30:48 EST


Hello Linus,

Please pull Kbuild updates for v6.1-rc1.


I attached my resolutions of the merge conflicts.
(attachment: merge-resolution.diff)

You can find a similar resolution in next-20221005.

A slight difference is that, I inserted

obj-$(CONFIG_RUST) += rust/

right after

obj-$(CONFIG_IO_URING) += io_uring/

This is the right order to keep the current link order.


Thank you.




The following changes since commit f76349cf41451c5c42a99f18a9163377e4b364ff:

Linux 6.0-rc7 (2022-09-25 14:01:02 -0700)

are available in the Git repository at:

git://git.kernel.org/pub/scm/linux/kernel/git/masahiroy/linux-kbuild.git
tags/kbuild-v6.1

for you to fetch changes up to 0715fdb03e2c4f5748d245a231e422602ed29f33:

docs: bump minimal GNU Make version to 3.82 (2022-10-06 09:16:21 +0900)

----------------------------------------------------------------
Kbuild updates for v6.1

- Remove potentially incomplete targets when Kbuid is interrupted by
SIGINT etc. in case GNU Make may miss to do that when stderr is piped
to another program.

- Rewrite the single target build so it works more correctly.

- Fix rpm-pkg builds with V=1.

- List top-level subdirectories in ./Kbuild.

- Ignore auto-generated __kstrtab_* and __kstrtabns_* symbols in kallsyms.

- Avoid two different modules in lib/zstd/ having shared code, which
potentially causes building the common code as build-in and modular
back-and-forth.

- Unify two modpost invocations to optimize the build process.

- Remove head-y syntax in favor of linker scripts for placing particular
sections in the head of vmlinux.

- Bump the minimal GNU Make version to 3.82.

- Clean up misc Makefiles and scripts.

----------------------------------------------------------------
Alexey Kardashevskiy (1):
zstd: Fixing mixed module-builtin objects

Janis Schoetterl-Glausch (1):
kbuild: rpm-pkg: fix breakage when V=1 is used

Masahiro Yamada (35):
kbuild: remove the target in signal traps when interrupted
kbuild: add phony targets to ./Kbuild
kbuild: hard-code KBUILD_ALLDIRS in scripts/Makefile.package
kbuild: check sha1sum just once for each atomic header
kbuild: do not deduplicate modules.order
nios2: move core-y in arch/nios2/Makefile to arch/nios2/Kbuild
kbuild: remove duplicated dependency between modules and modules_check
kbuild: refactor single builds of *.ko
kbuild: move 'PHONY += modules_prepare' to the common part
init/version.c: remove #include <linux/version.h>
kbuild: build init/built-in.a just once
kbuild: generate include/generated/compile.h in top Makefile
scripts/mkcompile_h: move LC_ALL=C to '$LD -v'
Revert "kbuild: Make scripts/compile.h when sh != bash"
kbuild: fix and refactor single target build
kbuild: use objtool-args-y to clean up objtool arguments
linux/export: use inline assembler to populate symbol CRCs
kbuild: list sub-directories in ./Kbuild
kbuild: move .vmlinux.objs rule to Makefile.modpost
kbuild: move vmlinux.o rule to the top Makefile
kbuild: unify two modpost invocations
kbuild: re-run modpost when it is updated
kbuild: hide error checker logs for V=1 builds
kbuild: use obj-y instead extra-y for objects placed at the head
kbuild: remove head-y syntax
mksysmap: update comment about __crc_*
kbuild: reuse mksysmap output for kallsyms
kallsyms: drop duplicated ignore patterns from kallsyms.c
kallsyms: take the input file instead of reading stdin
kallsyms: ignore __kstrtab_* and __kstrtabns_* symbols
kbuild: move modules.builtin(.modinfo) rules to Makefile.vmlinux_o
kbuild: rebuild .vmlinux.export.o when its prerequisite is updated
Revert "kbuild: Check if linker supports the -X option"
ia64: simplify esi object addition in Makefile
docs: bump minimal GNU Make version to 3.82

Nick Desaulniers (1):
Makefile.compiler: replace cc-ifversion with compiler-specific macros

Owen Rafferty (1):
kbuild: rewrite check-local-export in sh/awk

Zeng Heng (2):
Kconfig: remove sym_set_choice_value
scripts: remove unused argument 'type'

Documentation/kbuild/makefiles.rst | 56 ++++++++++++-----------------
Documentation/process/changes.rst | 4 +--
Kbuild | 77
++++++++++++++++++++++++++++++----------
Makefile | 182
++++++++++++++++++++++++++++++++++++++++++++--------------------------------------------------
arch/alpha/Makefile | 2 --
arch/alpha/kernel/Makefile | 4 +--
arch/arc/Makefile | 2 --
arch/arc/kernel/Makefile | 4 +--
arch/arm/Makefile | 3 --
arch/arm/kernel/Makefile | 4 +--
arch/arm64/Makefile | 3 --
arch/arm64/kernel/Makefile | 4 +--
arch/csky/Makefile | 2 --
arch/csky/kernel/Makefile | 4 +--
arch/hexagon/Makefile | 2 --
arch/hexagon/kernel/Makefile | 3 +-
arch/ia64/Makefile | 1 -
arch/ia64/kernel/Makefile | 9 ++---
arch/loongarch/Makefile | 2 --
arch/loongarch/kernel/Makefile | 4 +--
arch/m68k/68000/Makefile | 2 +-
arch/m68k/Makefile | 9 -----
arch/m68k/coldfire/Makefile | 2 +-
arch/m68k/kernel/Makefile | 23 ++++++------
arch/microblaze/Makefile | 1 -
arch/microblaze/kernel/Makefile | 4 +--
arch/mips/Makefile | 2 --
arch/mips/kernel/Makefile | 4 +--
arch/nios2/Kbuild | 2 ++
arch/nios2/Makefile | 5 ---
arch/nios2/kernel/Makefile | 2 +-
arch/openrisc/Makefile | 2 --
arch/openrisc/kernel/Makefile | 4 +--
arch/parisc/Makefile | 2 --
arch/parisc/kernel/Makefile | 4 +--
arch/powerpc/Makefile | 12 -------
arch/powerpc/boot/wrapper | 2 +-
arch/powerpc/kernel/Makefile | 20 +++++------
arch/riscv/Makefile | 2 --
arch/riscv/kernel/Makefile | 2 +-
arch/s390/Makefile | 2 --
arch/s390/boot/version.c | 1 +
arch/s390/kernel/Makefile | 4 +--
arch/sh/Makefile | 2 --
arch/sh/kernel/Makefile | 4 +--
arch/sparc/Makefile | 2 --
arch/sparc/kernel/Makefile | 3 +-
arch/x86/Makefile | 5 ---
arch/x86/boot/compressed/kaslr.c | 1 +
arch/x86/boot/version.c | 1 +
arch/x86/kernel/Makefile | 10 +++---
arch/xtensa/Makefile | 2 --
arch/xtensa/kernel/Makefile | 4 +--
drivers/gpu/drm/amd/display/dc/dml/Makefile | 2 +-
include/linux/export-internal.h | 6 ++--
init/.gitignore | 2 ++
init/Makefile | 57
+++++++++++++++++++++---------
init/build-version | 10 ++++++
init/version-timestamp.c | 31 ++++++++++++++++
init/version.c | 37 +++++++------------
kernel/gen_kheaders.sh | 6 ++--
lib/Kconfig | 8 +++--
lib/zstd/Makefile | 16 ++++-----
lib/zstd/common/entropy_common.c | 5 ++-
lib/zstd/common/zstd_common.c | 10 ++++++
scripts/Kbuild.include | 23 +++++++++++-
scripts/Makefile.build | 56 +++++++++--------------------
scripts/Makefile.compiler | 10 ++++--
scripts/Makefile.extrawarn | 4 +--
scripts/Makefile.lib | 33 +++++++++--------
scripts/Makefile.modfinal | 2 +-
scripts/Makefile.modpost | 114
+++++++++++++++++++++++++++--------------------------------
scripts/Makefile.package | 5 ++-
scripts/Makefile.vmlinux | 21 ++++++++++-
scripts/Makefile.vmlinux_o | 47 +++++++++++++++++--------
scripts/asn1_compiler.c | 6 ++--
scripts/atomic/check-atomics.sh | 33 -----------------
scripts/check-local-export | 97
+++++++++++++++++++++++++-------------------------
scripts/clang-tools/gen_compile_commands.py | 19 +---------
scripts/head-object-list.txt | 53 ++++++++++++++++++++++++++++
scripts/kallsyms.c | 54 +++++++++++++++++-----------
scripts/kconfig/conf.c | 2 +-
scripts/kconfig/lkc.h | 5 ---
scripts/link-vmlinux.sh | 72
+++++++------------------------------
scripts/mkcompile_h | 96
++++++--------------------------------------------
scripts/mksysmap | 24 ++++++++++---
scripts/package/mkspec | 4 +--
87 files changed, 727 insertions(+), 762 deletions(-)
create mode 100644 init/.gitignore
create mode 100755 init/build-version
create mode 100644 init/version-timestamp.c
delete mode 100755 scripts/atomic/check-atomics.sh
create mode 100644 scripts/head-object-list.txt
commit e3e42c96fa1e8f504ab499fcdc8e410878b983b6
Merge: 833477fce7a1 0715fdb03e2c
Author: Masahiro Yamada <masahiroy@xxxxxxxxxx>
Date: Thu Oct 6 11:03:56 2022 +0900

Merge branch 'kbuild' of ../../workspace/linux-kbuild into merge-test

diff --cc Documentation/process/changes.rst
index 9a90197989dd,26a7fd875cfa..9844ca3a71a6
--- a/Documentation/process/changes.rst
+++ b/Documentation/process/changes.rst
@@@ -31,9 -31,7 +31,9 @@@ you probably needn't concern yourself w
====================== =============== ========================================
GNU C 5.1 gcc --version
Clang/LLVM (optional) 11.0.0 clang --version
+Rust (optional) 1.62.0 rustc --version
+bindgen (optional) 0.56.0 bindgen --version
- GNU make 3.81 make --version
+ GNU make 3.82 make --version
bash 4.2 bash --version
binutils 2.23 ld -v
flex 2.5.35 flex --version
diff --cc Kbuild
index fa441b98c9f6,8a37584d1fd6..464b34a08f51
--- a/Kbuild
+++ b/Kbuild
@@@ -42,18 -39,60 +39,61 @@@ $(offsets-file): arch/$(SRCARCH)/kernel
quiet_cmd_syscalls = CALL $<
cmd_syscalls = $(CONFIG_SHELL) $< $(CC) $(c_flags) $(missing_syscalls_flags)

- missing-syscalls: scripts/checksyscalls.sh $(offsets-file) FORCE
+ PHONY += missing-syscalls
+ missing-syscalls: scripts/checksyscalls.sh $(offsets-file)
$(call cmd,syscalls)

- #####
- # Check atomic headers are up-to-date
-
- always-y += old-atomics
-
- quiet_cmd_atomics = CALL $<
- cmd_atomics = $(CONFIG_SHELL) $<
-
- old-atomics: scripts/atomic/check-atomics.sh FORCE
- $(call cmd,atomics)
+ # Check the manual modification of atomic headers
+
+ quiet_cmd_check_sha1 = CHKSHA1 $<
+ cmd_check_sha1 = \
+ if ! command -v sha1sum >/dev/null; then \
+ echo "warning: cannot check the header due to sha1sum missing"; \
+ exit 0; \
+ fi; \
+ if [ "$$(sed -n '$$s:// ::p' $<)" != \
+ "$$(sed '$$d' $< | sha1sum | sed 's/ .*//')" ]; then \
+ echo "error: $< has been modified." >&2; \
+ exit 1; \
+ fi; \
+ touch $@
+
+ atomic-checks += $(addprefix $(obj)/.checked-, \
+ atomic-arch-fallback.h \
+ atomic-instrumented.h \
+ atomic-long.h)
+
+ targets += $(atomic-checks)
+ $(atomic-checks): $(obj)/.checked-%: include/linux/atomic/% FORCE
+ $(call if_changed,check_sha1)
+
+ # A phony target that depends on all the preparation targets
+
+ PHONY += prepare
+ prepare: $(offsets-file) missing-syscalls $(atomic-checks)
+ @:
+
+ # Ordinary directory descending
+ # ---------------------------------------------------------------------------
+
+ obj-y += init/
+ obj-y += usr/
+ obj-y += arch/$(SRCARCH)/
+ obj-y += $(ARCH_CORE)
+ obj-y += kernel/
+ obj-y += certs/
+ obj-y += mm/
+ obj-y += fs/
+ obj-y += ipc/
+ obj-y += security/
+ obj-y += crypto/
+ obj-$(CONFIG_BLOCK) += block/
+ obj-$(CONFIG_IO_URING) += io_uring/
++obj-$(CONFIG_RUST) += rust/
+ obj-y += $(ARCH_LIB)
+ obj-y += drivers/
+ obj-y += sound/
+ obj-$(CONFIG_SAMPLES) += samples/
+ obj-$(CONFIG_NET) += net/
+ obj-y += virt/
+ obj-y += $(ARCH_DRIVERS)
diff --cc Makefile
index f659d3085121,d7ba05191470..d66187d53b5f
--- a/Makefile
+++ b/Makefile
@@@ -536,9 -501,8 +536,9 @@@ RUSTFLAGS_MODULE
AFLAGS_MODULE =
LDFLAGS_MODULE =
CFLAGS_KERNEL =
+RUSTFLAGS_KERNEL =
AFLAGS_KERNEL =
- LDFLAGS_vmlinux =
+ export LDFLAGS_vmlinux =

# Use USERINCLUDE when you must reference the UAPI directories only.
USERINCLUDE := \
@@@ -862,11 -789,7 +861,10 @@@ KBUILD_CFLAGS += $(stackp-flags-y

KBUILD_CFLAGS-$(CONFIG_WERROR) += -Werror
KBUILD_CFLAGS-$(CONFIG_CC_NO_ARRAY_BOUNDS) += -Wno-array-bounds
- KBUILD_CFLAGS += $(KBUILD_CFLAGS-y) $(CONFIG_CC_IMPLICIT_FALLTHROUGH)

+KBUILD_RUSTFLAGS-$(CONFIG_WERROR) += -Dwarnings
+KBUILD_RUSTFLAGS += $(KBUILD_RUSTFLAGS-y)
+
ifdef CONFIG_CC_IS_CLANG
KBUILD_CPPFLAGS += -Qunused-arguments
# The kernel builds with '-std=gnu11' so use of GNU extensions is acceptable.
@@@ -1574,7 -1493,7 +1567,8 @@@ endif # CONFIG_MODULE
# Directories & files removed with 'make clean'
CLEAN_FILES += include/ksym vmlinux.symvers modules-only.symvers \
modules.builtin modules.builtin.modinfo modules.nsdeps \
- compile_commands.json .thinlto-cache rust/test rust/doc
- compile_commands.json .thinlto-cache .vmlinux.objs .vmlinux.export.c
++ compile_commands.json .thinlto-cache rust/test rust/doc \
++ .vmlinux.objs .vmlinux.export.c

# Directories & files removed with 'make mrproper'
MRPROPER_FILES += include/config include/generated \