mirror of
https://github.com/armbian/linux-cix.git
synced 2026-01-06 12:30:45 -08:00
Merge tag 'kbuild-v5.19' of git://git.kernel.org/pub/scm/linux/kernel/git/masahiroy/linux-kbuild
Pull Kbuild updates from Masahiro Yamada:
- Add HOSTPKG_CONFIG env variable to allow users to override pkg-config
- Support W=e as a shorthand for KCFLAGS=-Werror
- Fix CONFIG_IKHEADERS build to support toybox cpio
- Add scripts/dummy-tools/pahole to ease distro packagers' life
- Suppress false-positive warnings from checksyscalls.sh for W=2 build
- Factor out the common code of arch/*/boot/install.sh into
scripts/install.sh
- Support 'kernel-install' tool in scripts/prune-kernel
- Refactor module-versioning to link the symbol versions at the final
link of vmlinux and modules
- Remove CONFIG_MODULE_REL_CRCS because module-versioning now works in
an arch-agnostic way
- Refactor modpost, Makefiles
* tag 'kbuild-v5.19' of git://git.kernel.org/pub/scm/linux/kernel/git/masahiroy/linux-kbuild: (56 commits)
genksyms: adjust the output format to modpost
kbuild: stop merging *.symversions
kbuild: link symbol CRCs at final link, removing CONFIG_MODULE_REL_CRCS
modpost: extract symbol versions from *.cmd files
modpost: add sym_find_with_module() helper
modpost: change the license of EXPORT_SYMBOL to bool type
modpost: remove left-over cross_compile declaration
kbuild: record symbol versions in *.cmd files
kbuild: generate a list of objects in vmlinux
modpost: move *.mod.c generation to write_mod_c_files()
modpost: merge add_{intree_flag,retpoline,staging_flag} to add_header
scripts/prune-kernel: Use kernel-install if available
kbuild: factor out the common installation code into scripts/install.sh
modpost: split new_symbol() to symbol allocation and hash table addition
modpost: make sym_add_exported() always allocate a new symbol
modpost: make multiple export error
modpost: dump Module.symvers in the same order of modules.order
modpost: traverse the namespace_list in order
modpost: use doubly linked list for dump_lists
modpost: traverse unresolved symbols in order
...
This commit is contained in:
1
.gitignore
vendored
1
.gitignore
vendored
@@ -45,6 +45,7 @@
|
||||
*.symversions
|
||||
*.tab.[ch]
|
||||
*.tar
|
||||
*.usyms
|
||||
*.xz
|
||||
*.zst
|
||||
Module.symvers
|
||||
|
||||
@@ -693,6 +693,8 @@ in documenting basic Kconfig syntax a more precise definition of Kconfig
|
||||
semantics is welcomed. One project deduced Kconfig semantics through
|
||||
the use of the xconfig configurator [1]_. Work should be done to confirm if
|
||||
the deduced semantics matches our intended Kconfig design goals.
|
||||
Another project formalized a denotational semantics of a core subset of
|
||||
the Kconfig language [10]_.
|
||||
|
||||
Having well defined semantics can be useful for tools for practical
|
||||
evaluation of dependencies, for instance one such case was work to
|
||||
@@ -700,6 +702,8 @@ express in boolean abstraction of the inferred semantics of Kconfig to
|
||||
translate Kconfig logic into boolean formulas and run a SAT solver on this to
|
||||
find dead code / features (always inactive), 114 dead features were found in
|
||||
Linux using this methodology [1]_ (Section 8: Threats to validity).
|
||||
The kismet tool, based on the semantics in [10]_, finds abuses of reverse
|
||||
dependencies and has led to dozens of committed fixes to Linux Kconfig files [11]_.
|
||||
|
||||
Confirming this could prove useful as Kconfig stands as one of the leading
|
||||
industrial variability modeling languages [1]_ [2]_. Its study would help
|
||||
@@ -738,3 +742,5 @@ https://kernelnewbies.org/KernelProjects/kconfig-sat
|
||||
.. [7] https://vamos.cs.fau.de
|
||||
.. [8] https://undertaker.cs.fau.de
|
||||
.. [9] https://www4.cs.fau.de/Publications/2011/tartler_11_eurosys.pdf
|
||||
.. [10] https://paulgazzillo.com/papers/esecfse21.pdf
|
||||
.. [11] https://github.com/paulgazz/kmax
|
||||
|
||||
16
Makefile
16
Makefile
@@ -436,6 +436,7 @@ else
|
||||
HOSTCC = gcc
|
||||
HOSTCXX = g++
|
||||
endif
|
||||
HOSTPKG_CONFIG = pkg-config
|
||||
|
||||
KBUILD_USERHOSTCFLAGS := -Wall -Wmissing-prototypes -Wstrict-prototypes \
|
||||
-O2 -fomit-frame-pointer -std=gnu11 \
|
||||
@@ -533,7 +534,7 @@ KBUILD_LDFLAGS_MODULE :=
|
||||
KBUILD_LDFLAGS :=
|
||||
CLANG_FLAGS :=
|
||||
|
||||
export ARCH SRCARCH CONFIG_SHELL BASH HOSTCC KBUILD_HOSTCFLAGS CROSS_COMPILE LD CC
|
||||
export ARCH SRCARCH CONFIG_SHELL BASH HOSTCC KBUILD_HOSTCFLAGS CROSS_COMPILE LD CC HOSTPKG_CONFIG
|
||||
export CPP AR NM STRIP OBJCOPY OBJDUMP READELF PAHOLE RESOLVE_BTFIDS LEX YACC AWK INSTALLKERNEL
|
||||
export PERL PYTHON3 CHECK CHECKFLAGS MAKE UTS_MACHINE HOSTCXX
|
||||
export KGZIP KBZIP2 KLZOP LZMA LZ4 XZ ZSTD
|
||||
@@ -1294,11 +1295,12 @@ scripts_unifdef: scripts_basic
|
||||
# Install
|
||||
|
||||
# Many distributions have the custom install script, /sbin/installkernel.
|
||||
# If DKMS is installed, 'make install' will eventually recuses back
|
||||
# to the this Makefile to build and install external modules.
|
||||
# If DKMS is installed, 'make install' will eventually recurse back
|
||||
# to this Makefile to build and install external modules.
|
||||
# Cancel sub_make_done so that options such as M=, V=, etc. are parsed.
|
||||
|
||||
install: sub_make_done :=
|
||||
quiet_cmd_install = INSTALL $(INSTALL_PATH)
|
||||
cmd_install = unset sub_make_done; $(srctree)/scripts/install.sh
|
||||
|
||||
# ---------------------------------------------------------------------------
|
||||
# Tools
|
||||
@@ -1650,6 +1652,7 @@ help:
|
||||
@echo ' 1: warnings which may be relevant and do not occur too often'
|
||||
@echo ' 2: warnings which occur quite often but may still be relevant'
|
||||
@echo ' 3: more obscure warnings, can most likely be ignored'
|
||||
@echo ' e: warnings are being treated as errors'
|
||||
@echo ' Multiple levels can be combined with W=12 or W=123'
|
||||
@echo ''
|
||||
@echo 'Execute "make" or "make all" to build all targets marked with [*] '
|
||||
@@ -1792,7 +1795,8 @@ ifdef single-build
|
||||
|
||||
# .ko is special because modpost is needed
|
||||
single-ko := $(sort $(filter %.ko, $(MAKECMDGOALS)))
|
||||
single-no-ko := $(sort $(patsubst %.ko,%.mod, $(MAKECMDGOALS)))
|
||||
single-no-ko := $(filter-out $(single-ko), $(MAKECMDGOALS)) \
|
||||
$(foreach x, o mod, $(patsubst %.ko, %.$x, $(single-ko)))
|
||||
|
||||
$(single-ko): single_modpost
|
||||
@:
|
||||
@@ -1848,7 +1852,7 @@ clean: $(clean-dirs)
|
||||
-o -name '*.ko.*' \
|
||||
-o -name '*.dtb' -o -name '*.dtbo' -o -name '*.dtb.S' -o -name '*.dt.yaml' \
|
||||
-o -name '*.dwo' -o -name '*.lst' \
|
||||
-o -name '*.su' -o -name '*.mod' \
|
||||
-o -name '*.su' -o -name '*.mod' -o -name '*.usyms' \
|
||||
-o -name '.*.d' -o -name '.*.tmp' -o -name '*.mod.c' \
|
||||
-o -name '*.lex.c' -o -name '*.tab.[ch]' \
|
||||
-o -name '*.asn1.[ch]' \
|
||||
|
||||
@@ -312,9 +312,9 @@ $(BOOT_TARGETS): vmlinux
|
||||
$(Q)$(MAKE) $(build)=$(boot) MACHINE=$(MACHINE) $(boot)/$@
|
||||
@$(kecho) ' Kernel: $(boot)/$@ is ready'
|
||||
|
||||
$(INSTALL_TARGETS): KBUILD_IMAGE = $(boot)/$(patsubst %install,%Image,$@)
|
||||
$(INSTALL_TARGETS):
|
||||
$(CONFIG_SHELL) $(srctree)/$(boot)/install.sh "$(KERNELRELEASE)" \
|
||||
$(boot)/$(patsubst %install,%Image,$@) System.map "$(INSTALL_PATH)"
|
||||
$(call cmd,install)
|
||||
|
||||
PHONY += vdso_install
|
||||
vdso_install:
|
||||
|
||||
21
arch/arm/boot/install.sh
Normal file → Executable file
21
arch/arm/boot/install.sh
Normal file → Executable file
@@ -1,7 +1,5 @@
|
||||
#!/bin/sh
|
||||
#
|
||||
# arch/arm/boot/install.sh
|
||||
#
|
||||
# This file is subject to the terms and conditions of the GNU General Public
|
||||
# License. See the file "COPYING" in the main directory of this archive
|
||||
# for more details.
|
||||
@@ -18,25 +16,6 @@
|
||||
# $2 - kernel image file
|
||||
# $3 - kernel map file
|
||||
# $4 - default install path (blank if root directory)
|
||||
#
|
||||
|
||||
verify () {
|
||||
if [ ! -f "$1" ]; then
|
||||
echo "" 1>&2
|
||||
echo " *** Missing file: $1" 1>&2
|
||||
echo ' *** You need to run "make" before "make install".' 1>&2
|
||||
echo "" 1>&2
|
||||
exit 1
|
||||
fi
|
||||
}
|
||||
|
||||
# Make sure the files actually exist
|
||||
verify "$2"
|
||||
verify "$3"
|
||||
|
||||
# User may have a custom install script
|
||||
if [ -x ~/bin/${INSTALLKERNEL} ]; then exec ~/bin/${INSTALLKERNEL} "$@"; fi
|
||||
if [ -x /sbin/${INSTALLKERNEL} ]; then exec /sbin/${INSTALLKERNEL} "$@"; fi
|
||||
|
||||
if [ "$(basename $2)" = "zImage" ]; then
|
||||
# Compressed install
|
||||
|
||||
@@ -162,11 +162,9 @@ Image: vmlinux
|
||||
Image.%: Image
|
||||
$(Q)$(MAKE) $(build)=$(boot) $(boot)/$@
|
||||
|
||||
install: install-image := Image
|
||||
zinstall: install-image := Image.gz
|
||||
install: KBUILD_IMAGE := $(boot)/Image
|
||||
install zinstall:
|
||||
$(CONFIG_SHELL) $(srctree)/$(boot)/install.sh $(KERNELRELEASE) \
|
||||
$(boot)/$(install-image) System.map "$(INSTALL_PATH)"
|
||||
$(call cmd,install)
|
||||
|
||||
PHONY += vdso_install
|
||||
vdso_install:
|
||||
|
||||
21
arch/arm64/boot/install.sh
Normal file → Executable file
21
arch/arm64/boot/install.sh
Normal file → Executable file
@@ -1,7 +1,5 @@
|
||||
#!/bin/sh
|
||||
#
|
||||
# arch/arm64/boot/install.sh
|
||||
#
|
||||
# This file is subject to the terms and conditions of the GNU General Public
|
||||
# License. See the file "COPYING" in the main directory of this archive
|
||||
# for more details.
|
||||
@@ -18,25 +16,6 @@
|
||||
# $2 - kernel image file
|
||||
# $3 - kernel map file
|
||||
# $4 - default install path (blank if root directory)
|
||||
#
|
||||
|
||||
verify () {
|
||||
if [ ! -f "$1" ]; then
|
||||
echo "" 1>&2
|
||||
echo " *** Missing file: $1" 1>&2
|
||||
echo ' *** You need to run "make" before "make install".' 1>&2
|
||||
echo "" 1>&2
|
||||
exit 1
|
||||
fi
|
||||
}
|
||||
|
||||
# Make sure the files actually exist
|
||||
verify "$2"
|
||||
verify "$3"
|
||||
|
||||
# User may have a custom install script
|
||||
if [ -x ~/bin/${INSTALLKERNEL} ]; then exec ~/bin/${INSTALLKERNEL} "$@"; fi
|
||||
if [ -x /sbin/${INSTALLKERNEL} ]; then exec /sbin/${INSTALLKERNEL} "$@"; fi
|
||||
|
||||
if [ "$(basename $2)" = "Image.gz" ]; then
|
||||
# Compressed install
|
||||
|
||||
@@ -72,8 +72,9 @@ archheaders:
|
||||
|
||||
CLEAN_FILES += vmlinux.gz
|
||||
|
||||
install: vmlinux.gz
|
||||
sh $(srctree)/arch/ia64/install.sh $(KERNELRELEASE) $< System.map "$(INSTALL_PATH)"
|
||||
install: KBUILD_IMAGE := vmlinux.gz
|
||||
install:
|
||||
$(call cmd,install)
|
||||
|
||||
define archhelp
|
||||
echo '* compressed - Build compressed kernel image'
|
||||
|
||||
10
arch/ia64/install.sh
Normal file → Executable file
10
arch/ia64/install.sh
Normal file → Executable file
@@ -1,7 +1,5 @@
|
||||
#!/bin/sh
|
||||
#
|
||||
# arch/ia64/install.sh
|
||||
#
|
||||
# This file is subject to the terms and conditions of the GNU General Public
|
||||
# License. See the file "COPYING" in the main directory of this archive
|
||||
# for more details.
|
||||
@@ -17,14 +15,6 @@
|
||||
# $2 - kernel image file
|
||||
# $3 - kernel map file
|
||||
# $4 - default install path (blank if root directory)
|
||||
#
|
||||
|
||||
# User may have a custom install script
|
||||
|
||||
if [ -x ~/bin/${INSTALLKERNEL} ]; then exec ~/bin/${INSTALLKERNEL} "$@"; fi
|
||||
if [ -x /sbin/${INSTALLKERNEL} ]; then exec /sbin/${INSTALLKERNEL} "$@"; fi
|
||||
|
||||
# Default install - same as make zlilo
|
||||
|
||||
if [ -f $4/vmlinuz ]; then
|
||||
mv $4/vmlinuz $4/vmlinuz.old
|
||||
|
||||
@@ -138,5 +138,6 @@ CLEAN_FILES += vmlinux.gz vmlinux.bz2
|
||||
archheaders:
|
||||
$(Q)$(MAKE) $(build)=arch/m68k/kernel/syscalls all
|
||||
|
||||
install: KBUILD_IMAGE := vmlinux.gz
|
||||
install:
|
||||
sh $(srctree)/arch/m68k/install.sh $(KERNELRELEASE) vmlinux.gz System.map "$(INSTALL_PATH)"
|
||||
$(call cmd,install)
|
||||
|
||||
@@ -1,5 +1,6 @@
|
||||
# SPDX-License-Identifier: GPL-2.0
|
||||
generated-y += syscall_table.h
|
||||
generic-y += export.h
|
||||
generic-y += extable.h
|
||||
generic-y += kvm_para.h
|
||||
generic-y += mcs_spinlock.h
|
||||
|
||||
@@ -1,2 +0,0 @@
|
||||
#define KCRC_ALIGN 2
|
||||
#include <asm-generic/export.h>
|
||||
22
arch/m68k/install.sh
Normal file → Executable file
22
arch/m68k/install.sh
Normal file → Executable file
@@ -15,28 +15,6 @@
|
||||
# $2 - kernel image file
|
||||
# $3 - kernel map file
|
||||
# $4 - default install path (blank if root directory)
|
||||
#
|
||||
|
||||
verify () {
|
||||
if [ ! -f "$1" ]; then
|
||||
echo "" 1>&2
|
||||
echo " *** Missing file: $1" 1>&2
|
||||
echo ' *** You need to run "make" before "make install".' 1>&2
|
||||
echo "" 1>&2
|
||||
exit 1
|
||||
fi
|
||||
}
|
||||
|
||||
# Make sure the files actually exist
|
||||
verify "$2"
|
||||
verify "$3"
|
||||
|
||||
# User may have a custom install script
|
||||
|
||||
if [ -x ~/bin/${INSTALLKERNEL} ]; then exec ~/bin/${INSTALLKERNEL} "$@"; fi
|
||||
if [ -x /sbin/${INSTALLKERNEL} ]; then exec /sbin/${INSTALLKERNEL} "$@"; fi
|
||||
|
||||
# Default install - same as make zlilo
|
||||
|
||||
if [ -f $4/vmlinuz ]; then
|
||||
mv $4/vmlinuz $4/vmlinuz.old
|
||||
|
||||
@@ -56,8 +56,7 @@ $(BOOT_TARGETS): vmlinux
|
||||
$(Q)$(MAKE) $(build)=$(nios2-boot) $(nios2-boot)/$@
|
||||
|
||||
install:
|
||||
sh $(srctree)/$(nios2-boot)/install.sh $(KERNELRELEASE) \
|
||||
$(KBUILD_IMAGE) System.map "$(INSTALL_PATH)"
|
||||
$(call cmd,install)
|
||||
|
||||
define archhelp
|
||||
echo '* vmImage - Kernel-only image for U-Boot ($(KBUILD_IMAGE))'
|
||||
|
||||
22
arch/nios2/boot/install.sh
Normal file → Executable file
22
arch/nios2/boot/install.sh
Normal file → Executable file
@@ -15,28 +15,6 @@
|
||||
# $2 - kernel image file
|
||||
# $3 - kernel map file
|
||||
# $4 - default install path (blank if root directory)
|
||||
#
|
||||
|
||||
verify () {
|
||||
if [ ! -f "$1" ]; then
|
||||
echo "" 1>&2
|
||||
echo " *** Missing file: $1" 1>&2
|
||||
echo ' *** You need to run "make" before "make install".' 1>&2
|
||||
echo "" 1>&2
|
||||
exit 1
|
||||
fi
|
||||
}
|
||||
|
||||
# Make sure the files actually exist
|
||||
verify "$2"
|
||||
verify "$3"
|
||||
|
||||
# User may have a custom install script
|
||||
|
||||
if [ -x ~/bin/${INSTALLKERNEL} ]; then exec ~/bin/${INSTALLKERNEL} "$@"; fi
|
||||
if [ -x /sbin/${INSTALLKERNEL} ]; then exec /sbin/${INSTALLKERNEL} "$@"; fi
|
||||
|
||||
# Default install - same as make zlilo
|
||||
|
||||
if [ -f $4/vmlinuz ]; then
|
||||
mv $4/vmlinuz $4/vmlinuz.old
|
||||
|
||||
@@ -184,12 +184,11 @@ vdso_install:
|
||||
$(Q)$(MAKE) $(build)=arch/parisc/kernel/vdso $@
|
||||
$(if $(CONFIG_COMPAT_VDSO), \
|
||||
$(Q)$(MAKE) $(build)=arch/parisc/kernel/vdso32 $@)
|
||||
install:
|
||||
$(CONFIG_SHELL) $(srctree)/arch/parisc/install.sh \
|
||||
$(KERNELRELEASE) vmlinux System.map "$(INSTALL_PATH)"
|
||||
zinstall:
|
||||
$(CONFIG_SHELL) $(srctree)/arch/parisc/install.sh \
|
||||
$(KERNELRELEASE) vmlinuz System.map "$(INSTALL_PATH)"
|
||||
|
||||
install: KBUILD_IMAGE := vmlinux
|
||||
zinstall: KBUILD_IMAGE := vmlinuz
|
||||
install zinstall:
|
||||
$(call cmd,install)
|
||||
|
||||
CLEAN_FILES += lifimage
|
||||
MRPROPER_FILES += palo.conf
|
||||
|
||||
28
arch/parisc/install.sh
Normal file → Executable file
28
arch/parisc/install.sh
Normal file → Executable file
@@ -1,7 +1,5 @@
|
||||
#!/bin/sh
|
||||
#
|
||||
# arch/parisc/install.sh, derived from arch/i386/boot/install.sh
|
||||
#
|
||||
# This file is subject to the terms and conditions of the GNU General Public
|
||||
# License. See the file "COPYING" in the main directory of this archive
|
||||
# for more details.
|
||||
@@ -17,32 +15,6 @@
|
||||
# $2 - kernel image file
|
||||
# $3 - kernel map file
|
||||
# $4 - default install path (blank if root directory)
|
||||
#
|
||||
|
||||
verify () {
|
||||
if [ ! -f "$1" ]; then
|
||||
echo "" 1>&2
|
||||
echo " *** Missing file: $1" 1>&2
|
||||
echo ' *** You need to run "make" before "make install".' 1>&2
|
||||
echo "" 1>&2
|
||||
exit 1
|
||||
fi
|
||||
}
|
||||
|
||||
# Make sure the files actually exist
|
||||
|
||||
verify "$2"
|
||||
verify "$3"
|
||||
|
||||
# User may have a custom install script
|
||||
|
||||
if [ -n "${INSTALLKERNEL}" ]; then
|
||||
if [ -x ~/bin/${INSTALLKERNEL} ]; then exec ~/bin/${INSTALLKERNEL} "$@"; fi
|
||||
if [ -x /sbin/${INSTALLKERNEL} ]; then exec /sbin/${INSTALLKERNEL} "$@"; fi
|
||||
if [ -x /usr/sbin/${INSTALLKERNEL} ]; then exec /usr/sbin/${INSTALLKERNEL} "$@"; fi
|
||||
fi
|
||||
|
||||
# Default install
|
||||
|
||||
if [ "$(basename $2)" = "vmlinuz" ]; then
|
||||
# Compressed install
|
||||
|
||||
@@ -566,7 +566,6 @@ config RELOCATABLE
|
||||
bool "Build a relocatable kernel"
|
||||
depends on PPC64 || (FLATMEM && (44x || FSL_BOOKE))
|
||||
select NONSTATIC_KERNEL
|
||||
select MODULE_REL_CRCS if MODVERSIONS
|
||||
help
|
||||
This builds a kernel image that is capable of running at the
|
||||
location the kernel is loaded at. For ppc32, there is no any
|
||||
|
||||
@@ -408,8 +408,7 @@ endef
|
||||
|
||||
PHONY += install
|
||||
install:
|
||||
sh -x $(srctree)/$(boot)/install.sh "$(KERNELRELEASE)" vmlinux \
|
||||
System.map "$(INSTALL_PATH)"
|
||||
$(call cmd,install)
|
||||
|
||||
ifeq ($(KBUILD_EXTMOD),)
|
||||
# We need to generate vdso-offsets.h before compiling certain files in kernel/.
|
||||
|
||||
@@ -453,8 +453,8 @@ clean-files += $(image-) $(initrd-) cuImage.* dtbImage.* treeImage.* \
|
||||
clean-kernel-base := vmlinux.strip vmlinux.bin
|
||||
clean-kernel := $(addsuffix .gz,$(clean-kernel-base))
|
||||
clean-kernel += $(addsuffix .xz,$(clean-kernel-base))
|
||||
# If not absolute clean-files are relative to $(obj).
|
||||
clean-files += $(addprefix $(objtree)/, $(clean-kernel))
|
||||
# clean-files are relative to $(obj).
|
||||
clean-files += $(addprefix ../../../, $(clean-kernel))
|
||||
|
||||
WRAPPER_OBJDIR := /usr/lib/kernel-wrapper
|
||||
WRAPPER_DTSDIR := /usr/lib/kernel-wrapper/dts
|
||||
|
||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user