Merge tag 'kbuild-v6.2' of git://git.kernel.org/pub/scm/linux/kernel/git/masahiroy...
authorLinus Torvalds <torvalds@linux-foundation.org>
Mon, 19 Dec 2022 18:33:32 +0000 (12:33 -0600)
committerLinus Torvalds <torvalds@linux-foundation.org>
Mon, 19 Dec 2022 18:33:32 +0000 (12:33 -0600)
Pull Kbuild updates from Masahiro Yamada:

 - Support zstd-compressed debug info

 - Allow W=1 builds to detect objects shared among multiple modules

 - Add srcrpm-pkg target to generate a source RPM package

 - Make the -s option detection work for future GNU Make versions

 - Add -Werror to KBUILD_CPPFLAGS when CONFIG_WERROR=y

 - Allow W=1 builds to detect -Wundef warnings in any preprocessed files

 - Raise the minimum supported version of binutils to 2.25

 - Use $(intcmp ...) to compare integers if GNU Make >= 4.4 is used

 - Use $(file ...) to read a file if GNU Make >= 4.2 is used

 - Print error if GNU Make older than 3.82 is used

 - Allow modpost to detect section mismatches with Clang LTO

 - Include vmlinuz.efi into kernel tarballs for arm64 CONFIG_EFI_ZBOOT=y

* tag 'kbuild-v6.2' of git://git.kernel.org/pub/scm/linux/kernel/git/masahiroy/linux-kbuild: (29 commits)
  buildtar: fix tarballs with EFI_ZBOOT enabled
  modpost: Include '.text.*' in TEXT_SECTIONS
  padata: Mark padata_work_init() as __ref
  kbuild: ensure Make >= 3.82 is used
  kbuild: refactor the prerequisites of the modpost rule
  kbuild: change module.order to list *.o instead of *.ko
  kbuild: use .NOTINTERMEDIATE for future GNU Make versions
  kconfig: refactor Makefile to reduce process forks
  kbuild: add read-file macro
  kbuild: do not sort after reading modules.order
  kbuild: add test-{ge,gt,le,lt} macros
  Documentation: raise minimum supported version of binutils to 2.25
  kbuild: add -Wundef to KBUILD_CPPFLAGS for W=1 builds
  kbuild: move -Werror from KBUILD_CFLAGS to KBUILD_CPPFLAGS
  kbuild: Port silent mode detection to future gnu make.
  init/version.c: remove #include <generated/utsrelease.h>
  firmware_loader: remove #include <generated/utsrelease.h>
  modpost: Mark uuid_le type to be suitable only for MEI
  kbuild: add ability to make source rpm buildable using koji
  kbuild: warn objects shared among multiple modules
  ...

42 files changed:
Documentation/process/changes.rst
Makefile
arch/riscv/Makefile
arch/x86/Makefile
drivers/base/firmware_loader/firmware.h
init/version.c
kernel/padata.c
lib/Kconfig.debug
scripts/Kbuild.include
scripts/Makefile.asm-generic
scripts/Makefile.build
scripts/Makefile.clean
scripts/Makefile.compiler
scripts/Makefile.debug
scripts/Makefile.dtbinst
scripts/Makefile.extrawarn
scripts/Makefile.modfinal
scripts/Makefile.modinst
scripts/Makefile.modpost
scripts/Makefile.package
scripts/clang-tools/gen_compile_commands.py
scripts/gen_autoksyms.sh
scripts/jobserver-exec
scripts/kconfig/.gitignore
scripts/kconfig/Makefile
scripts/kconfig/gconf-cfg.sh
scripts/kconfig/lkc.h
scripts/kconfig/mconf-cfg.sh
scripts/kconfig/mconf.c
scripts/kconfig/menu.c
scripts/kconfig/nconf-cfg.sh
scripts/kconfig/qconf-cfg.sh
scripts/kconfig/util.c
scripts/min-tool-version.sh
scripts/mod/file2alias.c
scripts/mod/modpost.c
scripts/mod/sumversion.c
scripts/modules-check.sh
scripts/package/buildtar
scripts/package/mkdebian
scripts/package/mkspec
scripts/remove-stale-files

index 9844ca3..ef54086 100644 (file)
@@ -35,7 +35,7 @@ Rust (optional)        1.62.0           rustc --version
 bindgen (optional)     0.56.0           bindgen --version
 GNU make               3.82             make --version
 bash                   4.2              bash --version
-binutils               2.23             ld -v
+binutils               2.25             ld -v
 flex                   2.5.35           flex --version
 bison                  2.0              bison --version
 pahole                 1.16             pahole --version
@@ -119,7 +119,7 @@ Bash 4.2 or newer is needed.
 Binutils
 --------
 
-Binutils 2.23 or newer is needed to build the kernel.
+Binutils 2.25 or newer is needed to build the kernel.
 
 pkg-config
 ----------
index 63c324b..25247f9 100644 (file)
--- a/Makefile
+++ b/Makefile
@@ -11,6 +11,10 @@ NAME = Hurr durr I'ma ninja sloth
 # Comments in this file are targeted only to the developer, do not
 # expect to learn how to build the kernel reading this file.
 
+ifeq ($(filter undefine,$(.FEATURES)),)
+$(error GNU Make >= 3.82 is required. Your Make version is $(MAKE_VERSION))
+endif
+
 $(if $(filter __%, $(MAKECMDGOALS)), \
        $(error targets prefixed with '__' are only for internal use))
 
@@ -93,10 +97,17 @@ endif
 
 # If the user is running make -s (silent mode), suppress echoing of
 # commands
+# make-4.0 (and later) keep single letter options in the 1st word of MAKEFLAGS.
 
-ifneq ($(findstring s,$(filter-out --%,$(MAKEFLAGS))),)
-  quiet=silent_
-  KBUILD_VERBOSE = 0
+ifeq ($(filter 3.%,$(MAKE_VERSION)),)
+silence:=$(findstring s,$(firstword -$(MAKEFLAGS)))
+else
+silence:=$(findstring s,$(filter-out --%,$(MAKEFLAGS)))
+endif
+
+ifeq ($(silence),s)
+quiet=silent_
+KBUILD_VERBOSE = 0
 endif
 
 export quiet Q KBUILD_VERBOSE
@@ -369,7 +380,7 @@ else # !mixed-build
 include $(srctree)/scripts/Kbuild.include
 
 # Read KERNELRELEASE from include/config/kernel.release (if it exists)
-KERNELRELEASE = $(shell cat include/config/kernel.release 2> /dev/null)
+KERNELRELEASE = $(call read-file, include/config/kernel.release)
 KERNELVERSION = $(VERSION)$(if $(PATCHLEVEL),.$(PATCHLEVEL)$(if $(SUBLEVEL),.$(SUBLEVEL)))$(EXTRAVERSION)
 export VERSION PATCHLEVEL SUBLEVEL KERNELRELEASE KERNELVERSION
 
@@ -859,7 +870,8 @@ stackp-flags-$(CONFIG_STACKPROTECTOR_STRONG)      := -fstack-protector-strong
 
 KBUILD_CFLAGS += $(stackp-flags-y)
 
-KBUILD_CFLAGS-$(CONFIG_WERROR) += -Werror
+KBUILD_CPPFLAGS-$(CONFIG_WERROR) += -Werror
+KBUILD_CPPFLAGS += $(KBUILD_CPPFLAGS-y)
 KBUILD_CFLAGS-$(CONFIG_CC_NO_ARRAY_BOUNDS) += -Wno-array-bounds
 
 KBUILD_RUSTFLAGS-$(CONFIG_WERROR) += -Dwarnings
@@ -990,7 +1002,7 @@ KBUILD_LDFLAGS += -mllvm -import-instr-limit=5
 # Check for frame size exceeding threshold during prolog/epilog insertion
 # when using lld < 13.0.0.
 ifneq ($(CONFIG_FRAME_WARN),0)
-ifeq ($(shell test $(CONFIG_LLD_VERSION) -lt 130000; echo $$?),0)
+ifeq ($(call test-lt, $(CONFIG_LLD_VERSION), 130000),y)
 KBUILD_LDFLAGS += -plugin-opt=-warn-stack-size=$(CONFIG_FRAME_WARN)
 endif
 endif
@@ -1560,7 +1572,7 @@ __modinst_pre:
                rm -f $(MODLIB)/build ; \
                ln -s $(CURDIR) $(MODLIB)/build ; \
        fi
-       @sed 's:^:kernel/:' modules.order > $(MODLIB)/modules.order
+       @sed 's:^\(.*\)\.o$$:kernel/\1.ko:' modules.order > $(MODLIB)/modules.order
        @cp -f modules.builtin $(MODLIB)/
        @cp -f $(objtree)/modules.builtin.modinfo $(MODLIB)/
 
index 0d13b59..faf2c21 100644 (file)
@@ -37,7 +37,7 @@ else
 endif
 
 ifeq ($(CONFIG_LD_IS_LLD),y)
-ifeq ($(shell test $(CONFIG_LLD_VERSION) -lt 150000; echo $$?),0)
+ifeq ($(call test-lt, $(CONFIG_LLD_VERSION), 150000),y)
        KBUILD_CFLAGS += -mno-relax
        KBUILD_AFLAGS += -mno-relax
 ifndef CONFIG_AS_IS_LLVM
index a3a07df..9cf0732 100644 (file)
@@ -217,7 +217,7 @@ endif
 KBUILD_LDFLAGS += -m elf_$(UTS_MACHINE)
 
 ifdef CONFIG_LTO_CLANG
-ifeq ($(shell test $(CONFIG_LLD_VERSION) -lt 130000; echo $$?),0)
+ifeq ($(call test-lt, $(CONFIG_LLD_VERSION), 130000),y)
 KBUILD_LDFLAGS += -plugin-opt=-stack-alignment=$(if $(CONFIG_X86_32),4,8)
 endif
 endif
index fe77e91..bf549d6 100644 (file)
@@ -9,8 +9,6 @@
 #include <linux/list.h>
 #include <linux/completion.h>
 
-#include <generated/utsrelease.h>
-
 /**
  * enum fw_opt - options to control firmware loading behaviour
  *
index 01d4ab0..f117921 100644 (file)
@@ -15,7 +15,6 @@
 #include <linux/printk.h>
 #include <linux/uts.h>
 #include <linux/utsname.h>
-#include <generated/utsrelease.h>
 #include <linux/proc_ns.h>
 
 static int __init early_hostname(char *arg)
index de90af5..e007b8a 100644 (file)
@@ -83,8 +83,16 @@ static struct padata_work *padata_work_alloc(void)
        return pw;
 }
 
-static void padata_work_init(struct padata_work *pw, work_func_t work_fn,
-                            void *data, int flags)
+/*
+ * This function is marked __ref because this function may be optimized in such
+ * a way that it directly refers to work_fn's address, which causes modpost to
+ * complain when work_fn is marked __init. This scenario was observed with clang
+ * LTO, where padata_work_init() was optimized to refer directly to
+ * padata_mt_helper() because the calls to padata_work_init() with other work_fn
+ * values were eliminated or inlined.
+ */
+static void __ref padata_work_init(struct padata_work *pw, work_func_t work_fn,
+                                  void *data, int flags)
 {
        if (flags & PADATA_WORK_ONSTACK)
                INIT_WORK_ONSTACK(&pw->pw_work, work_fn);
index d378403..881c3f8 100644 (file)
@@ -312,8 +312,21 @@ config DEBUG_INFO_REDUCED
          DEBUG_INFO build and compile times are reduced too.
          Only works with newer gcc versions.
 
-config DEBUG_INFO_COMPRESSED
-       bool "Compressed debugging information"
+choice
+       prompt "Compressed Debug information"
+       help
+         Compress the resulting debug info. Results in smaller debug info sections,
+         but requires that consumers are able to decompress the results.
+
+         If unsure, choose DEBUG_INFO_COMPRESSED_NONE.
+
+config DEBUG_INFO_COMPRESSED_NONE
+       bool "Don't compress debug information"
+       help
+         Don't compress debug info sections.
+
+config DEBUG_INFO_COMPRESSED_ZLIB
+       bool "Compress debugging information with zlib"
        depends on $(cc-option,-gz=zlib)
        depends on $(ld-option,--compress-debug-sections=zlib)
        help
@@ -327,6 +340,18 @@ config DEBUG_INFO_COMPRESSED
          preferable to setting $KDEB_COMPRESS to "none" which would be even
          larger.
 
+config DEBUG_INFO_COMPRESSED_ZSTD
+       bool "Compress debugging information with zstd"
+       depends on $(cc-option,-gz=zstd)
+       depends on $(ld-option,--compress-debug-sections=zstd)
+       help
+         Compress the debug information using zstd.  This may provide better
+         compression than zlib, for about the same time costs, but requires newer
+         toolchain support.  Requires GCC 13.0+ or Clang 16.0+, binutils 2.40+, and
+         zstd.
+
+endchoice # "Compressed Debug information"
+
 config DEBUG_INFO_SPLIT
        bool "Produce split debuginfo in .dwo files"
        depends on $(cc-option,-gsplit-dwarf)
index 2bc08ac..2f7356b 100644 (file)
@@ -10,6 +10,26 @@ empty   :=
 space   := $(empty) $(empty)
 space_escape := _-_SPACE_-_
 pound := \#
+define newline
+
+
+endef
+
+###
+# Comparison macros.
+# Usage: $(call test-lt, $(CONFIG_LLD_VERSION), 150000)
+#
+# Use $(intcmp ...) if supported. (Make >= 4.4)
+# Otherwise, fall back to the 'test' shell command.
+ifeq ($(intcmp 1,0,,,y),y)
+test-ge = $(intcmp $(strip $1)0, $(strip $2)0,,y,y)
+test-gt = $(intcmp $(strip $1)0, $(strip $2)0,,,y)
+else
+test-ge = $(shell test $(strip $1)0 -ge $(strip $2)0 && echo y)
+test-gt = $(shell test $(strip $1)0 -gt $(strip $2)0 && echo y)
+endif
+test-le = $(call test-ge, $2, $1)
+test-lt = $(call test-gt, $2, $1)
 
 ###
 # Name of target with a '.' as filename prefix. foo/bar.o => foo/.bar.o
@@ -41,6 +61,21 @@ escsq = $(subst $(squote),'\$(squote)',$1)
 stringify = $(squote)$(quote)$1$(quote)$(squote)
 
 ###
+# The path to Kbuild or Makefile. Kbuild has precedence over Makefile.
+kbuild-dir = $(if $(filter /%,$(src)),$(src),$(srctree)/$(src))
+kbuild-file = $(or $(wildcard $(kbuild-dir)/Kbuild),$(kbuild-dir)/Makefile)
+
+###
+# Read a file, replacing newlines with spaces
+#
+# Make 4.2 or later can read a file by using its builtin function.
+ifneq ($(filter-out 3.% 4.0 4.1, $(MAKE_VERSION)),)
+read-file = $(subst $(newline),$(space),$(file < $1))
+else
+read-file = $(shell cat $1 2>/dev/null)
+endif
+
+###
 # Easy method for doing a status message
        kecho := :
  quiet_kecho := echo
@@ -150,9 +185,6 @@ endif
 make-cmd = $(call escsq,$(subst $(pound),$$(pound),$(subst $$,$$$$,$(cmd_$(1)))))
 
 # Find any prerequisites that are newer than target or that do not exist.
-# (This is not true for now; $? should contain any non-existent prerequisites,
-# but it does not work as expected when .SECONDARY is present. This seems a bug
-# of GNU Make.)
 # PHONY targets skipped in both cases.
 newer-prereqs = $(filter-out $(PHONY),$?)
 
@@ -228,4 +260,14 @@ endif
 .DELETE_ON_ERROR:
 
 # do not delete intermediate files automatically
+#
+# .NOTINTERMEDIATE is more correct, but only available on newer Make versions.
+# Make 4.4 introduced .NOTINTERMEDIATE, and it appears in .FEATURES, but the
+# global .NOTINTERMEDIATE does not work. We can use it on Make > 4.4.
+# Use .SECONDARY for older Make versions, but "newer-prereq" cannot detect
+# deleted files.
+ifneq ($(and $(filter notintermediate, $(.FEATURES)),$(filter-out 4.4,$(MAKE_VERSION))),)
+.NOTINTERMEDIATE:
+else
 .SECONDARY:
+endif
index 1d501c5..8d01b37 100644 (file)
@@ -10,15 +10,15 @@ PHONY := all
 all:
 
 src := $(subst /generated,,$(obj))
--include $(src)/Kbuild
+
+include $(srctree)/scripts/Kbuild.include
+-include $(kbuild-file)
 
 # $(generic)/Kbuild lists mandatory-y. Exclude um since it is a special case.
 ifneq ($(SRCARCH),um)
 include $(srctree)/$(generic)/Kbuild
 endif
 
-include $(srctree)/scripts/Kbuild.include
-
 redundant := $(filter $(mandatory-y) $(generated-y), $(generic-y))
 redundant += $(foreach f, $(generic-y), $(if $(wildcard $(srctree)/$(src)/$(f)),$(f)))
 redundant := $(sort $(redundant))
index 3ceab07..a0d5c6c 100644 (file)
@@ -38,11 +38,7 @@ subdir-ccflags-y :=
 
 include $(srctree)/scripts/Kbuild.include
 include $(srctree)/scripts/Makefile.compiler
-
-# The filename Kbuild has precedence over Makefile
-kbuild-dir := $(if $(filter /%,$(src)),$(src),$(srctree)/$(src))
-include $(or $(wildcard $(kbuild-dir)/Kbuild),$(kbuild-dir)/Makefile)
-
+include $(kbuild-file)
 include $(srctree)/scripts/Makefile.lib
 
 # Do not include hostprogs rules unless needed.
@@ -226,6 +222,10 @@ endif
 
 cmd_check_local_export = $(srctree)/scripts/check-local-export $@
 
+ifneq ($(findstring 1, $(KBUILD_EXTRA_WARN)),)
+cmd_warn_shared_object = $(if $(word 2, $(modname-multi)),$(warning $(kbuild-file): $*.o is added to multiple modules: $(modname-multi)))
+endif
+
 define rule_cc_o_c
        $(call cmd_and_fixdep,cc_o_c)
        $(call cmd,gen_ksymdeps)
@@ -235,6 +235,7 @@ define rule_cc_o_c
        $(call cmd,gen_objtooldep)
        $(call cmd,gen_symversions_c)
        $(call cmd,record_mcount)
+       $(call cmd,warn_shared_object)
 endef
 
 define rule_as_o_S
@@ -243,6 +244,7 @@ define rule_as_o_S
        $(call cmd,check_local_export)
        $(call cmd,gen_objtooldep)
        $(call cmd,gen_symversions_S)
+       $(call cmd,warn_shared_object)
 endef
 
 # Built-in and composite module parts
@@ -433,7 +435,7 @@ $(obj)/built-in.a: $(real-obj-y) FORCE
 # modules.order unless contained modules are updated.
 
 cmd_modules_order = { $(foreach m, $(real-prereqs), \
-       $(if $(filter %/modules.order, $m), cat $m, echo $(patsubst %.o,%.ko,$m));) :; } \
+       $(if $(filter %/modules.order, $m), cat $m, echo $m);) :; } \
        > $@
 
 $(obj)/modules.order: $(obj-m) FORCE
index 878cec6..3649900 100644 (file)
@@ -9,10 +9,7 @@ PHONY := __clean
 __clean:
 
 include $(srctree)/scripts/Kbuild.include
-
-# The filename Kbuild has precedence over Makefile
-kbuild-dir := $(if $(filter /%,$(src)),$(src),$(srctree)/$(src))
-include $(or $(wildcard $(kbuild-dir)/Kbuild),$(kbuild-dir)/Makefile)
+include $(kbuild-file)
 
 # Figure out what we need to build from the various variables
 # ==========================================================================
index 20d353d..3d8adfd 100644 (file)
@@ -63,11 +63,11 @@ cc-disable-warning = $(call try-run,\
 
 # gcc-min-version
 # Usage: cflags-$(call gcc-min-version, 70100) += -foo
-gcc-min-version = $(shell [ $(CONFIG_GCC_VERSION)0 -ge $(1)0 ] && echo y)
+gcc-min-version = $(call test-ge, $(CONFIG_GCC_VERSION), $1)
 
 # clang-min-version
 # Usage: cflags-$(call clang-min-version, 110000) += -foo
-clang-min-version = $(shell [ $(CONFIG_CLANG_VERSION)0 -ge $(1)0 ] && echo y)
+clang-min-version = $(call test-ge, $(CONFIG_CLANG_VERSION), $1)
 
 # ld-option
 # Usage: KBUILD_LDFLAGS += $(call ld-option, -X, -Y)
index 332c486..059ff38 100644 (file)
@@ -27,10 +27,14 @@ else
 DEBUG_RUSTFLAGS        += -Cdebuginfo=2
 endif
 
-ifdef CONFIG_DEBUG_INFO_COMPRESSED
+ifdef CONFIG_DEBUG_INFO_COMPRESSED_ZLIB
 DEBUG_CFLAGS   += -gz=zlib
 KBUILD_AFLAGS  += -gz=zlib
 KBUILD_LDFLAGS += --compress-debug-sections=zlib
+else ifdef CONFIG_DEBUG_INFO_COMPRESSED_ZSTD
+DEBUG_CFLAGS   += -gz=zstd
+KBUILD_AFLAGS  += -gz=zstd
+KBUILD_LDFLAGS += --compress-debug-sections=zstd
 endif
 
 KBUILD_CFLAGS  += $(DEBUG_CFLAGS)
index 190d781..2ab936e 100644 (file)
@@ -15,7 +15,7 @@ __dtbs_install:
 
 include include/config/auto.conf
 include $(srctree)/scripts/Kbuild.include
-include $(src)/Makefile
+include $(kbuild-file)
 
 dtbs    := $(addprefix $(dst)/, $(dtb-y) $(if $(CONFIG_OF_ALL_DTBS),$(dtb-)))
 subdirs := $(addprefix $(obj)/, $(subdir-y) $(subdir-m))
index 6bbba36..40cd13e 100644 (file)
@@ -38,6 +38,7 @@ KBUILD_CFLAGS += -Wno-sign-compare
 KBUILD_CFLAGS += -Wno-type-limits
 KBUILD_CFLAGS += -Wno-shift-negative-value
 
+KBUILD_CPPFLAGS += -Wundef
 KBUILD_CPPFLAGS += -DKBUILD_EXTRA_WARN1
 
 else
index 25bedd8..a30d5b0 100644 (file)
@@ -13,9 +13,9 @@ include $(srctree)/scripts/Kbuild.include
 include $(srctree)/scripts/Makefile.lib
 
 # find all modules listed in modules.order
-modules := $(sort $(shell cat $(MODORDER)))
+modules := $(call read-file, $(MODORDER))
 
-__modfinal: $(modules)
+__modfinal: $(modules:%.o=%.ko)
        @:
 
 # modname and part-of-module are set to make c_flags define proper module flags
@@ -57,13 +57,13 @@ if_changed_except = $(if $(call newer_prereqs_except,$(2))$(cmd-check),      \
        printf '%s\n' 'cmd_$@ := $(make-cmd)' > $(dot-target).cmd, @:)
 
 # Re-generate module BTFs if either module's .ko or vmlinux changed
-$(modules): %.ko: %.o %.mod.o scripts/module.lds $(and $(CONFIG_DEBUG_INFO_BTF_MODULES),$(KBUILD_BUILTIN),vmlinux) FORCE
+%.ko: %.o %.mod.o scripts/module.lds $(and $(CONFIG_DEBUG_INFO_BTF_MODULES),$(KBUILD_BUILTIN),vmlinux) FORCE
        +$(call if_changed_except,ld_ko_o,vmlinux)
 ifdef CONFIG_DEBUG_INFO_BTF_MODULES
        +$(if $(newer-prereqs),$(call cmd,btf_ko))
 endif
 
-targets += $(modules) $(modules:.ko=.mod.o)
+targets += $(modules:%.o=%.ko) $(modules:%.o=%.mod.o)
 
 # Add FORCE to the prequisites of a target to force it to be always rebuilt.
 # ---------------------------------------------------------------------------
index a4c987c..836391e 100644 (file)
@@ -9,7 +9,7 @@ __modinst:
 include include/config/auto.conf
 include $(srctree)/scripts/Kbuild.include
 
-modules := $(sort $(shell cat $(MODORDER)))
+modules := $(call read-file, $(MODORDER))
 
 ifeq ($(KBUILD_EXTMOD),)
 dst := $(MODLIB)/kernel
@@ -26,7 +26,7 @@ suffix-$(CONFIG_MODULE_COMPRESS_GZIP) := .gz
 suffix-$(CONFIG_MODULE_COMPRESS_XZ)    := .xz
 suffix-$(CONFIG_MODULE_COMPRESS_ZSTD)  := .zst
 
-modules := $(patsubst $(extmod_prefix)%, $(dst)/%$(suffix-y), $(modules))
+modules := $(patsubst $(extmod_prefix)%.o, $(dst)/%.ko$(suffix-y), $(modules))
 
 __modinst: $(modules)
        @:
index e41dee6..5eb5e82 100644 (file)
@@ -38,6 +38,8 @@ __modpost:
 include include/config/auto.conf
 include $(srctree)/scripts/Kbuild.include
 
+MODPOST = scripts/mod/modpost
+
 modpost-args =                                                                         \
        $(if $(CONFIG_MODVERSIONS),-m)                                                  \
        $(if $(CONFIG_MODULE_SRCVERSION_ALL),-a)                                        \
@@ -46,6 +48,8 @@ modpost-args =                                                                                \
        $(if $(CONFIG_MODULE_ALLOW_MISSING_NAMESPACE_IMPORTS)$(KBUILD_NSDEPS),-N)       \
        -o $@
 
+modpost-deps := $(MODPOST)
+
 # 'make -i -k' ignores compile errors, and builds as many modules as possible.
 ifneq ($(findstring i,$(filter-out --%,$(MAKEFLAGS))),)
 modpost-args += -n
@@ -78,12 +82,13 @@ targets += .vmlinux.objs
 .vmlinux.objs: vmlinux.a $(KBUILD_VMLINUX_LIBS) FORCE
        $(call if_changed,vmlinux_objs)
 
-vmlinux.o-if-present := $(wildcard vmlinux.o)
-output-symdump := vmlinux.symvers
-
-ifdef KBUILD_MODULES
-output-symdump := $(if $(vmlinux.o-if-present), Module.symvers, modules-only.symvers)
-missing-input := $(filter-out $(vmlinux.o-if-present),vmlinux.o)
+ifeq ($(wildcard vmlinux.o),)
+missing-input := vmlinux.o
+output-symdump := modules-only.symvers
+else
+modpost-args += vmlinux.o
+modpost-deps += vmlinux.o
+output-symdump := $(if $(KBUILD_MODULES), Module.symvers, vmlinux.symvers)
 endif
 
 else
@@ -93,13 +98,18 @@ obj := $(KBUILD_EXTMOD)
 src := $(obj)
 
 # Include the module's Makefile to find KBUILD_EXTRA_SYMBOLS
-include $(or $(wildcard $(src)/Kbuild), $(src)/Makefile)
+include $(kbuild-file)
 
-module.symvers-if-present := $(wildcard Module.symvers)
 output-symdump := $(KBUILD_EXTMOD)/Module.symvers
-missing-input := $(filter-out $(module.symvers-if-present), Module.symvers)
 
-modpost-args += -e $(addprefix -i ,$(module.symvers-if-present) $(KBUILD_EXTRA_SYMBOLS))
+ifeq ($(wildcard Module.symvers),)
+missing-input := Module.symvers
+else
+modpost-args += -i Module.symvers
+modpost-deps += Module.symvers
+endif
+
+modpost-args += -e $(addprefix -i , $(KBUILD_EXTRA_SYMBOLS))
 
 endif # ($(KBUILD_EXTMOD),)
 
@@ -107,9 +117,10 @@ ifneq ($(KBUILD_MODPOST_WARN)$(missing-input),)
 modpost-args += -w
 endif
 
-modorder-if-needed := $(if $(KBUILD_MODULES), $(MODORDER))
-
-MODPOST = scripts/mod/modpost
+ifdef KBUILD_MODULES
+modpost-args += -T $(MODORDER)
+modpost-deps += $(MODORDER)
+endif
 
 # Read out modules.order to pass in modpost.
 # Otherwise, allmodconfig would fail with "Argument list too long".
@@ -119,10 +130,10 @@ quiet_cmd_modpost = MODPOST $@
                echo >&2 "WARNING: $(missing-input) is missing."; \
                echo >&2 "         Modules may not have dependencies or modversions."; \
                echo >&2 "         You may get many unresolved symbol warnings.";) \
-       sed 's/ko$$/o/' $(or $(modorder-if-needed), /dev/null) | $(MODPOST) $(modpost-args) -T - $(vmlinux.o-if-present)
+       $(MODPOST) $(modpost-args)
 
 targets += $(output-symdump)
-$(output-symdump): $(modorder-if-needed) $(vmlinux.o-if-present) $(module.symvers-if-present) $(MODPOST) FORCE
+$(output-symdump): $(modpost-deps) FORCE
        $(call if_changed,modpost)
 
 __modpost: $(output-symdump)
index 2a90139..539e9f7 100644 (file)
@@ -62,6 +62,16 @@ rpm-pkg:
        +rpmbuild $(RPMOPTS) --target $(UTS_MACHINE)-linux -ta $(KERNELPATH).tar.gz \
        --define='_smp_mflags %{nil}'
 
+# srcrpm-pkg
+# ---------------------------------------------------------------------------
+PHONY += srcrpm-pkg
+srcrpm-pkg:
+       $(MAKE) clean
+       $(CONFIG_SHELL) $(MKSPEC) >$(objtree)/kernel.spec
+       $(call cmd,src_tar,$(KERNELPATH),kernel.spec)
+       +rpmbuild $(RPMOPTS) --target $(UTS_MACHINE)-linux -ts $(KERNELPATH).tar.gz \
+       --define='_smp_mflags %{nil}' --define='_srcrpmdir $(srctree)'
+
 # binrpm-pkg
 # ---------------------------------------------------------------------------
 PHONY += binrpm-pkg
index d800b2c..0227522 100755 (executable)
@@ -138,10 +138,10 @@ def cmdfiles_for_modorder(modorder):
     """
     with open(modorder) as f:
         for line in f:
-            ko = line.rstrip()
-            base, ext = os.path.splitext(ko)
-            if ext != '.ko':
-                sys.exit('{}: module path must end with .ko'.format(ko))
+            obj = line.rstrip()
+            base, ext = os.path.splitext(obj)
+            if ext != '.o':
+                sys.exit('{}: module path must end with .o'.format(obj))
             mod = base + '.mod'
             # Read from *.mod, to get a list of objects that compose the module.
             with open(mod) as m:
index 653fadb..12bcfae 100755 (executable)
@@ -48,7 +48,7 @@ cat > "$output_file" << EOT
 EOT
 
 {
-       [ -n "${read_modorder}" ] && sed 's/ko$/usyms/' modules.order | xargs cat
+       [ -n "${read_modorder}" ] && sed 's/o$/usyms/' modules.order | xargs cat
        echo "$needed_symbols"
        [ -n "$ksym_wl" ] && cat "$ksym_wl"
 } | sed -e 's/ /\n/g' | sed -n -e '/^$/!p' |
index 8762887..4192855 100755 (executable)
@@ -23,7 +23,9 @@ try:
        opts = [x for x in flags.split(" ") if x.startswith("--jobserver")]
 
        # Parse out R,W file descriptor numbers and set them nonblocking.
-       fds = opts[0].split("=", 1)[1]
+       # If the MAKEFLAGS variable contains multiple instances of the
+       # --jobserver-auth= option, the last one is relevant.
+       fds = opts[-1].split("=", 1)[1]
        reader, writer = [int(x) for x in fds.split(",", 1)]
        # Open a private copy of reader to avoid setting nonblocking
        # on an unexpecting process with the same reader fd.
index 500e742..c8a3f9c 100644 (file)
@@ -1,5 +1,7 @@
 # SPDX-License-Identifier: GPL-2.0-only
 /conf
 /[gmnq]conf
-/[gmnq]conf-cfg
+/[gmnq]conf-cflags
+/[gmnq]conf-libs
+/qconf-bin
 /qconf-moc.cc
index b8ef0fb..0b1d15e 100644 (file)
@@ -159,11 +159,12 @@ conf-objs := conf.o $(common-objs)
 hostprogs      += nconf
 nconf-objs     := nconf.o nconf.gui.o $(common-objs)
 
-HOSTLDLIBS_nconf       = $(shell . $(obj)/nconf-cfg && echo $$libs)
-HOSTCFLAGS_nconf.o     = $(shell . $(obj)/nconf-cfg && echo $$cflags)
-HOSTCFLAGS_nconf.gui.o = $(shell . $(obj)/nconf-cfg && echo $$cflags)
+HOSTLDLIBS_nconf       = $(call read-file, $(obj)/nconf-libs)
+HOSTCFLAGS_nconf.o     = $(call read-file, $(obj)/nconf-cflags)
+HOSTCFLAGS_nconf.gui.o = $(call read-file, $(obj)/nconf-cflags)
 
-$(obj)/nconf.o $(obj)/nconf.gui.o: $(obj)/nconf-cfg
+$(obj)/nconf: | $(obj)/nconf-libs
+$(obj)/nconf.o $(obj)/nconf.gui.o: | $(obj)/nconf-cflags
 
 # mconf: Used for the menuconfig target based on lxdialog
 hostprogs      += mconf
@@ -171,27 +172,28 @@ lxdialog  := $(addprefix lxdialog/, \
                     checklist.o inputbox.o menubox.o textbox.o util.o yesno.o)
 mconf-objs     := mconf.o $(lxdialog) $(common-objs)
 
-HOSTLDLIBS_mconf = $(shell . $(obj)/mconf-cfg && echo $$libs)
+HOSTLDLIBS_mconf = $(call read-file, $(obj)/mconf-libs)
 $(foreach f, mconf.o $(lxdialog), \
-  $(eval HOSTCFLAGS_$f = $$(shell . $(obj)/mconf-cfg && echo $$$$cflags)))
+  $(eval HOSTCFLAGS_$f = $$(call read-file, $(obj)/mconf-cflags)))
 
-$(addprefix $(obj)/, mconf.o $(lxdialog)): $(obj)/mconf-cfg
+$(obj)/mconf: | $(obj)/mconf-libs
+$(addprefix $(obj)/, mconf.o $(lxdialog)): | $(obj)/mconf-cflags
 
 # qconf: Used for the xconfig target based on Qt
 hostprogs      += qconf
 qconf-cxxobjs  := qconf.o qconf-moc.o
 qconf-objs     := images.o $(common-objs)
 
-HOSTLDLIBS_qconf       = $(shell . $(obj)/qconf-cfg && echo $$libs)
-HOSTCXXFLAGS_qconf.o   = $(shell . $(obj)/qconf-cfg && echo $$cflags)
-HOSTCXXFLAGS_qconf-moc.o = $(shell . $(obj)/qconf-cfg && echo $$cflags)
-
-$(obj)/qconf.o: $(obj)/qconf-cfg
+HOSTLDLIBS_qconf         = $(call read-file, $(obj)/qconf-libs)
+HOSTCXXFLAGS_qconf.o     = -std=c++11 -fPIC $(call read-file, $(obj)/qconf-cflags)
+HOSTCXXFLAGS_qconf-moc.o = -std=c++11 -fPIC $(call read-file, $(obj)/qconf-cflags)
+$(obj)/qconf: | $(obj)/qconf-libs
+$(obj)/qconf.o $(obj)/qconf-moc.o: | $(obj)/qconf-cflags
 
 quiet_cmd_moc = MOC     $@
-      cmd_moc = $(shell . $(obj)/qconf-cfg && echo $$moc) $< -o $@
+      cmd_moc = $(call read-file, $(obj)/qconf-bin)/moc $< -o $@
 
-$(obj)/qconf-moc.cc: $(src)/qconf.h $(obj)/qconf-cfg FORCE
+$(obj)/qconf-moc.cc: $(src)/qconf.h FORCE | $(obj)/qconf-bin
        $(call if_changed,moc)
 
 targets += qconf-moc.cc
@@ -200,15 +202,16 @@ targets += qconf-moc.cc
 hostprogs      += gconf
 gconf-objs     := gconf.o images.o $(common-objs)
 
-HOSTLDLIBS_gconf    = $(shell . $(obj)/gconf-cfg && echo $$libs)
-HOSTCFLAGS_gconf.o  = $(shell . $(obj)/gconf-cfg && echo $$cflags)
+HOSTLDLIBS_gconf   = $(call read-file, $(obj)/gconf-libs)
+HOSTCFLAGS_gconf.o = $(call read-file, $(obj)/gconf-cflags)
 
-$(obj)/gconf.o: $(obj)/gconf-cfg
+$(obj)/gconf: | $(obj)/gconf-libs
+$(obj)/gconf.o: | $(obj)/gconf-cflags
 
 # check if necessary packages are available, and configure build flags
-filechk_conf_cfg = $(CONFIG_SHELL) $<
+cmd_conf_cfg = $< $(addprefix $(obj)/$*conf-, cflags libs bin)
 
-$(obj)/%conf-cfg: $(src)/%conf-cfg.sh FORCE
-       $(call filechk,conf_cfg)
+$(obj)/%conf-cflags $(obj)/%conf-libs $(obj)/%conf-bin: $(src)/%conf-cfg.sh
+       $(call cmd,conf_cfg)
 
-clean-files += *conf-cfg
+clean-files += *conf-cflags *conf-libs *conf-bin
index cbd90c2..040d8f3 100755 (executable)
@@ -1,6 +1,9 @@
 #!/bin/sh
 # SPDX-License-Identifier: GPL-2.0
 
+cflags=$1
+libs=$2
+
 PKG="gtk+-2.0 gmodule-2.0 libglade-2.0"
 
 if [ -z "$(command -v ${HOSTPKG_CONFIG})" ]; then
@@ -26,5 +29,5 @@ if ! ${HOSTPKG_CONFIG} --atleast-version=2.0.0 gtk+-2.0; then
        exit 1
 fi
 
-echo cflags=\"$(${HOSTPKG_CONFIG} --cflags $PKG)\"
-echo libs=\"$(${HOSTPKG_CONFIG} --libs $PKG)\"
+${HOSTPKG_CONFIG} --cflags ${PKG} > ${cflags}
+${HOSTPKG_CONFIG} --libs ${PKG} > ${libs}
index 6ac2eab..e7118d6 100644 (file)
@@ -76,7 +76,7 @@ struct gstr str_new(void);
 void str_free(struct gstr *gs);
 void str_append(struct gstr *gs, const char *s);
 void str_printf(struct gstr *gs, const char *fmt, ...);
-const char *str_get(struct gstr *gs);
+char *str_get(struct gstr *gs);
 
 /* menu.c */
 void _menu_init(void);
index 025b565..1e61f50 100755 (executable)
@@ -1,19 +1,22 @@
 #!/bin/sh
 # SPDX-License-Identifier: GPL-2.0
 
+cflags=$1
+libs=$2
+
 PKG="ncursesw"
 PKG2="ncurses"
 
 if [ -n "$(command -v ${HOSTPKG_CONFIG})" ]; then
        if ${HOSTPKG_CONFIG} --exists $PKG; then
-               echo cflags=\"$(${HOSTPKG_CONFIG} --cflags $PKG)\"
-               echo libs=\"$(${HOSTPKG_CONFIG} --libs $PKG)\"
+               ${HOSTPKG_CONFIG} --cflags ${PKG} > ${cflags}
+               ${HOSTPKG_CONFIG} --libs ${PKG} > ${libs}
                exit 0
        fi
 
-       if ${HOSTPKG_CONFIG} --exists $PKG2; then
-               echo cflags=\"$(${HOSTPKG_CONFIG} --cflags $PKG2)\"
-               echo libs=\"$(${HOSTPKG_CONFIG} --libs $PKG2)\"
+       if ${HOSTPKG_CONFIG} --exists ${PKG2}; then
+               ${HOSTPKG_CONFIG} --cflags ${PKG2} > ${cflags}
+               ${HOSTPKG_CONFIG} --libs ${PKG2} > ${libs}
                exit 0
        fi
 fi
@@ -22,22 +25,22 @@ fi
 # (Even if it is installed, some distributions such as openSUSE cannot
 # find ncurses by pkg-config.)
 if [ -f /usr/include/ncursesw/ncurses.h ]; then
-       echo cflags=\"-D_GNU_SOURCE -I/usr/include/ncursesw\"
-       echo libs=\"-lncursesw\"
+       echo -D_GNU_SOURCE -I/usr/include/ncursesw > ${cflags}
+       echo -lncursesw > ${libs}
        exit 0
 fi
 
 if [ -f /usr/include/ncurses/ncurses.h ]; then
-       echo cflags=\"-D_GNU_SOURCE -I/usr/include/ncurses\"
-       echo libs=\"-lncurses\"
+       echo -D_GNU_SOURCE -I/usr/include/ncurses > ${cflags}
+       echo -lncurses > ${libs}
        exit 0
 fi
 
 # As a final fallback before giving up, check if $HOSTCC knows of a default
 # ncurses installation (e.g. from a vendor-specific sysroot).
 if echo '#include <ncurses.h>' | ${HOSTCC} -E - >/dev/null 2>&1; then
-       echo cflags=\"-D_GNU_SOURCE\"
-       echo libs=\"-lncurses\"
+       echo -D_GNU_SOURCE > ${cflags}
+       echo -lncurses > ${libs}
        exit 0
 fi
 
index 9d3cf51..9c54968 100644 (file)
@@ -440,9 +440,8 @@ again:
 
                res = get_relations_str(sym_arr, &head);
                set_subtitle();
-               dres = show_textbox_ext("Search Results", (char *)
-                                       str_get(&res), 0, 0, keys, &vscroll,
-                                       &hscroll, &update_text, (void *)
+               dres = show_textbox_ext("Search Results", str_get(&res), 0, 0,
+                                       keys, &vscroll, &hscroll, &update_text,
                                        &data);
                again = false;
                for (i = 0; i < JUMP_NB && keys[i]; i++)
index 109325f..b90fff8 100644 (file)
@@ -724,10 +724,8 @@ static void get_prompt_str(struct gstr *r, struct property *prop,
 
        menu = prop->menu;
        for (i = 0; menu != &rootmenu && i < 8; menu = menu->parent) {
-               bool accessible = menu_is_visible(menu);
-
                submenu[i++] = menu;
-               if (location == NULL && accessible)
+               if (location == NULL && menu_is_visible(menu))
                        location = menu;
        }
        if (head && location) {
index 3a10bac..f871a21 100755 (executable)
@@ -1,19 +1,22 @@
 #!/bin/sh
 # SPDX-License-Identifier: GPL-2.0
 
+cflags=$1
+libs=$2
+
 PKG="ncursesw menuw panelw"
 PKG2="ncurses menu panel"
 
 if [ -n "$(command -v ${HOSTPKG_CONFIG})" ]; then
        if ${HOSTPKG_CONFIG} --exists $PKG; then
-               echo cflags=\"$(${HOSTPKG_CONFIG} --cflags $PKG)\"
-               echo libs=\"$(${HOSTPKG_CONFIG} --libs $PKG)\"
+               ${HOSTPKG_CONFIG} --cflags ${PKG} > ${cflags}
+               ${HOSTPKG_CONFIG} --libs ${PKG} > ${libs}
                exit 0
        fi
 
        if ${HOSTPKG_CONFIG} --exists $PKG2; then
-               echo cflags=\"$(${HOSTPKG_CONFIG} --cflags $PKG2)\"
-               echo libs=\"$(${HOSTPKG_CONFIG} --libs $PKG2)\"
+               ${HOSTPKG_CONFIG} --cflags ${PKG2} > ${cflags}
+               ${HOSTPKG_CONFIG} --libs ${PKG2} > ${libs}
                exit 0
        fi
 fi
@@ -22,20 +25,20 @@ fi
 # (Even if it is installed, some distributions such as openSUSE cannot
 # find ncurses by pkg-config.)
 if [ -f /usr/include/ncursesw/ncurses.h ]; then
-       echo cflags=\"-D_GNU_SOURCE -I/usr/include/ncursesw\"
-       echo libs=\"-lncursesw -lmenuw -lpanelw\"
+       echo -D_GNU_SOURCE -I/usr/include/ncursesw > ${cflags}
+       echo -lncursesw -lmenuw -lpanelw > ${libs}
        exit 0
 fi
 
 if [ -f /usr/include/ncurses/ncurses.h ]; then
-       echo cflags=\"-D_GNU_SOURCE -I/usr/include/ncurses\"
-       echo libs=\"-lncurses -lmenu -lpanel\"
+       echo -D_GNU_SOURCE -I/usr/include/ncurses > ${cflags}
+       echo -lncurses -lmenu -lpanel > ${libs}
        exit 0
 fi
 
 if [ -f /usr/include/ncurses.h ]; then
-       echo cflags=\"-D_GNU_SOURCE\"
-       echo libs=\"-lncurses -lmenu -lpanel\"
+       echo -D_GNU_SOURCE > ${cflags}
+       echo -lncurses -lmenu -lpanel > ${libs}
        exit 0
 fi
 
index ad652cb..117f36e 100755 (executable)
@@ -1,6 +1,10 @@
 #!/bin/sh
 # SPDX-License-Identifier: GPL-2.0
 
+cflags=$1
+libs=$2
+bin=$3
+
 PKG="Qt5Core Qt5Gui Qt5Widgets"
 
 if [ -z "$(command -v ${HOSTPKG_CONFIG})" ]; then
@@ -11,9 +15,9 @@ if [ -z "$(command -v ${HOSTPKG_CONFIG})" ]; then
 fi
 
 if ${HOSTPKG_CONFIG} --exists $PKG; then
-       echo cflags=\"-std=c++11 -fPIC $(${HOSTPKG_CONFIG} --cflags $PKG)\"
-       echo libs=\"$(${HOSTPKG_CONFIG} --libs $PKG)\"
-       echo moc=\"$(${HOSTPKG_CONFIG} --variable=host_bins Qt5Core)/moc\"
+       ${HOSTPKG_CONFIG} --cflags ${PKG} > ${cflags}
+       ${HOSTPKG_CONFIG} --libs ${PKG} > ${libs}
+       ${HOSTPKG_CONFIG} --variable=host_bins Qt5Core > ${bin}
        exit 0
 fi
 
index 2958539..b78f114 100644 (file)
@@ -74,7 +74,7 @@ void str_printf(struct gstr *gs, const char *fmt, ...)
 }
 
 /* Retrieve value of growable string */
-const char *str_get(struct gstr *gs)
+char *str_get(struct gstr *gs)
 {
        return gs->s;
 }
index 201bccf..a814f1e 100755 (executable)
@@ -14,7 +14,7 @@ fi
 
 case "$1" in
 binutils)
-       echo 2.23.0
+       echo 2.25.0
        ;;
 gcc)
        echo 5.1.0
index 80d9731..91c2e7b 100644 (file)
@@ -34,19 +34,23 @@ typedef Elf64_Addr  kernel_ulong_t;
 typedef uint32_t       __u32;
 typedef uint16_t       __u16;
 typedef unsigned char  __u8;
+
+/* UUID types for backward compatibility, don't use in new code */
 typedef struct {
        __u8 b[16];
 } guid_t;
 
-/* backwards compatibility, don't use in new code */
-typedef struct {
-       __u8 b[16];
-} uuid_le;
 typedef struct {
        __u8 b[16];
 } uuid_t;
+
 #define        UUID_STRING_LEN         36
 
+/* MEI UUID type, don't use anywhere else */
+typedef struct {
+       __u8 b[16];
+} uuid_le;
+
 /* Big exception to the "don't include kernel headers into userspace, which
  * even potentially has different endianness and word sizes, since
  * we handle those differences explicitly below */
@@ -140,25 +144,22 @@ static void device_id_check(const char *modname, const char *device_id,
        int i;
 
        if (size % id_size || size < id_size) {
-               fatal("%s: sizeof(struct %s_device_id)=%lu is not a modulo "
-                     "of the size of "
-                     "section __mod_%s__<identifier>_device_table=%lu.\n"
-                     "Fix definition of struct %s_device_id "
-                     "in mod_devicetable.h\n",
+               fatal("%s: sizeof(struct %s_device_id)=%lu is not a modulo of the size of section __mod_%s__<identifier>_device_table=%lu.\n"
+                     "Fix definition of struct %s_device_id in mod_devicetable.h\n",
                      modname, device_id, id_size, device_id, size, device_id);
        }
        /* Verify last one is a terminator */
        for (i = 0; i < id_size; i++ ) {
                if (*(uint8_t*)(symval+size-id_size+i)) {
-                       fprintf(stderr,"%s: struct %s_device_id is %lu bytes.  "
-                               "The last of %lu is:\n",
+                       fprintf(stderr,
+                               "%s: struct %s_device_id is %lu bytes.  The last of %lu is:\n",
                                modname, device_id, id_size, size / id_size);
                        for (i = 0; i < id_size; i++ )
                                fprintf(stderr,"0x%02x ",
                                        *(uint8_t*)(symval+size-id_size+i) );
                        fprintf(stderr,"\n");
-                       fatal("%s: struct %s_device_id is not terminated "
-                               "with a NULL entry!\n", modname, device_id);
+                       fatal("%s: struct %s_device_id is not terminated with a NULL entry!\n",
+                             modname, device_id);
                }
        }
 }
@@ -1154,8 +1155,7 @@ static int do_amba_entry(const char *filename,
        DEF_FIELD(symval, amba_id, mask);
 
        if ((id & mask) != id)
-               fatal("%s: Masked-off bit(s) of AMBA device ID are non-zero: "
-                     "id=0x%08X, mask=0x%08X.  Please fix this driver.\n",
+               fatal("%s: Masked-off bit(s) of AMBA device ID are non-zero: id=0x%08X, mask=0x%08X.  Please fix this driver.\n",
                      filename, id, mask);
 
        p += sprintf(alias, "amba:d");
index 9321c0a..efff807 100644 (file)
@@ -519,9 +519,8 @@ static int parse_elf(struct elf_info *info, const char *filename)
                int nobits = sechdrs[i].sh_type == SHT_NOBITS;
 
                if (!nobits && sechdrs[i].sh_offset > info->size) {
-                       fatal("%s is truncated. sechdrs[i].sh_offset=%lu > "
-                             "sizeof(*hrd)=%zu\n", filename,
-                             (unsigned long)sechdrs[i].sh_offset,
+                       fatal("%s is truncated. sechdrs[i].sh_offset=%lu > sizeof(*hrd)=%zu\n",
+                             filename, (unsigned long)sechdrs[i].sh_offset,
                              sizeof(*hdr));
                        return 0;
                }
@@ -823,10 +822,10 @@ static void check_section(const char *modname, struct elf_info *elf,
 #define ALL_EXIT_SECTIONS EXIT_SECTIONS, ALL_XXXEXIT_SECTIONS
 
 #define DATA_SECTIONS ".data", ".data.rel"
-#define TEXT_SECTIONS ".text", ".text.unlikely", ".sched.text", \
+#define TEXT_SECTIONS ".text", ".text.*", ".sched.text", \
                ".kprobes.text", ".cpuidle.text", ".noinstr.text"
 #define OTHER_TEXT_SECTIONS ".ref.text", ".head.text", ".spinlock.text", \
-               ".fixup", ".entry.text", ".exception.text", ".text.*", \
+               ".fixup", ".entry.text", ".exception.text", \
                ".coldtext", ".softirqentry.text"
 
 #define INIT_SECTIONS      ".init.*"
@@ -1355,8 +1354,7 @@ static void report_extable_warnings(const char* modname, struct elf_info* elf,
        get_pretty_name(is_function(tosym),
                        &to_pretty_name, &to_pretty_name_p);
 
-       warn("%s(%s+0x%lx): Section mismatch in reference"
-            " from the %s %s%s to the %s %s:%s%s\n",
+       warn("%s(%s+0x%lx): Section mismatch in reference from the %s %s%s to the %s %s:%s%s\n",
             modname, fromsec, (long)r->r_offset, from_pretty_name,
             fromsym_name, from_pretty_name_p,
             to_pretty_name, tosec, tosym_name, to_pretty_name_p);
@@ -1871,11 +1869,9 @@ static void read_symbols_from_files(const char *filename)
        FILE *in = stdin;
        char fname[PATH_MAX];
 
-       if (strcmp(filename, "-") != 0) {
-               in = fopen(filename, "r");
-               if (!in)
-                       fatal("Can't open filenames file %s: %m", filename);
-       }
+       in = fopen(filename, "r");
+       if (!in)
+               fatal("Can't open filenames file %s: %m", filename);
 
        while (fgets(fname, PATH_MAX, in) != NULL) {
                if (strends(fname, "\n"))
@@ -1883,8 +1879,7 @@ static void read_symbols_from_files(const char *filename)
                read_symbols(fname);
        }
 
-       if (in != stdin)
-               fclose(in);
+       fclose(in);
 }
 
 #define SZ 500
index 6bf9cac..31066bf 100644 (file)
@@ -153,7 +153,7 @@ static void md4_transform(uint32_t *hash, uint32_t const *in)
 
 static inline void md4_transform_helper(struct md4_ctx *ctx)
 {
-       le32_to_cpu_array(ctx->block, sizeof(ctx->block) / sizeof(uint32_t));
+       le32_to_cpu_array(ctx->block, ARRAY_SIZE(ctx->block));
        md4_transform(ctx->hash, ctx->block);
 }
 
@@ -216,7 +216,7 @@ static void md4_final_ascii(struct md4_ctx *mctx, char *out, unsigned int len)
        le32_to_cpu_array(mctx->block, (sizeof(mctx->block) -
                          sizeof(uint64_t)) / sizeof(uint32_t));
        md4_transform(mctx->hash, mctx->block);
-       cpu_to_le32_array(mctx->hash, sizeof(mctx->hash) / sizeof(uint32_t));
+       cpu_to_le32_array(mctx->hash, ARRAY_SIZE(mctx->hash));
 
        snprintf(out, len, "%08X%08X%08X%08X",
                 mctx->hash[0], mctx->hash[1], mctx->hash[2], mctx->hash[3]);
index e063277..4c8da90 100755 (executable)
@@ -16,7 +16,7 @@ check_same_name_modules()
        for m in $(sed 's:.*/::' "$1" | sort | uniq -d)
        do
                echo "error: the following would cause module name conflict:" >&2
-               sed -n "/\/$m/s:^:  :p" "$1" >&2
+               sed -n "/\/$m/s:^\(.*\)\.o\$:  \1.ko:p" "$1" >&2
                exit_code=1
        done
 }
index cb54c7f..4d6f0b1 100755 (executable)
@@ -122,7 +122,7 @@ case "${ARCH}" in
                fi
                ;;
        arm64)
-               for i in Image.bz2 Image.gz Image.lz4 Image.lzma Image.lzo ; do
+               for i in Image.bz2 Image.gz Image.lz4 Image.lzma Image.lzo vmlinuz.efi ; do
                        if [ -f "${objtree}/arch/arm64/boot/${i}" ] ; then
                                cp -v -- "${objtree}/arch/arm64/boot/${i}" "${tmpdir}/boot/vmlinuz-${KERNELRELEASE}"
                                break
index a3ac5a7..6cf3832 100755 (executable)
@@ -175,7 +175,7 @@ Section: kernel
 Priority: optional
 Maintainer: $maintainer
 Rules-Requires-Root: no
-Build-Depends: bc, rsync, kmod, cpio, bison, flex | flex:native $extra_build_depends
+Build-Depends: bc, rsync, kmod, cpio, bison, flex $extra_build_depends
 Homepage: https://www.kernel.org/
 
 Package: $packagename-$version
index 70392fd..dda00a9 100755 (executable)
@@ -33,6 +33,8 @@ EXCLUDES="$RCS_TAR_IGNORE --exclude=*vmlinux* --exclude=*.mod \
 --exclude=*.o --exclude=*.ko --exclude=*.cmd --exclude=Documentation \
 --exclude=.config.old --exclude=.missing-syscalls.d --exclude=*.s"
 
+test -n "$LOCALVERSION" && MAKE="$MAKE LOCALVERSION=$LOCALVERSION"
+
 # We can label the here-doc lines for conditional output to the spec file
 #
 # Labels:
@@ -49,6 +51,9 @@ sed -e '/^DEL/d' -e 's/^\t*//' <<EOF
        URL: https://www.kernel.org
 $S     Source: kernel-$__KERNELRELEASE.tar.gz
        Provides: $PROVIDES
+$S     BuildRequires: bc binutils bison dwarves elfutils-libelf-devel flex
+$S     BuildRequires: gcc make openssl openssl-devel perl python3 rsync
+
        # $UTS_MACHINE as a fallback of _arch in case
        # /usr/lib/rpm/platform/*/macros was not included.
        %define _arch %{?_arch:$UTS_MACHINE}
@@ -80,6 +85,8 @@ $S$M  against the $__KERNELRELEASE kernel package.
 $S$M
 $S     %prep
 $S     %setup -q
+$S     rm -f scripts/basic/fixdep scripts/kconfig/conf
+$S     rm -f tools/objtool/{fixdep,objtool}
 $S
 $S     %build
 $S     $MAKE %{?_smp_mflags} KBUILD_BUILD_VERSION=%{release}
index ccadfa3..64b14aa 100755 (executable)
@@ -47,3 +47,5 @@ rm -f arch/riscv/purgatory/kexec-purgatory.c
 rm -f scripts/extract-cert
 
 rm -f arch/x86/purgatory/kexec-purgatory.c
+
+rm -f scripts/kconfig/[gmnq]conf-cfg