Kbuild updates for v5.12
- Fix false-positive build warnings for ARCH=ia64 builds - Optimize dictionary size for module compression with xz - Check the compiler and linker versions in Kconfig - Fix misuse of extra-y - Support DWARF v5 debug info - Clamp SUBLEVEL to 255 because stable releases 4.4.x and 4.9.x exceeded the limit - Add generic syscall{tbl,hdr}.sh for cleanups across arches - Minor cleanups of genksyms - Minor cleanups of Kconfig -----BEGIN PGP SIGNATURE----- iQJJBAABCgAzFiEEbmPs18K1szRHjPqEPYsBB53g2wYFAmA3zhgVHG1hc2FoaXJv eUBrZXJuZWwub3JnAAoJED2LAQed4NsG0C4P/A5hUNFdkYI+EffAWZiHn69t0S8j M1GQkZildKu/yOfm6hp3mNwgHmYgw0aAuch1htkJuv+5rXRtoK77yw0xKbUqNHyO VqkJWQPVUXJbWIDiu332NaETHbFTWCnPZKGmzcbVOBHbYsXUJPp17gROQ9ke0fQN Ae6OV5WINhoS8UnjESWb3qOO87MdQTZ+9mP+NMnVh4kV1SUeMAXLFwFll66KZTkj GXB330N3p9L0wQVljhXpQ/YPOd76wJNPhJWJ9+hKLFbWsedovzlHb+duprh1z1xe 7LLaq9dEbXxe1Uz0qmK76lupXxilYMyUupTW9HIYtIsY8br8DIoBOG0bn46LVnuL /m+UQNfUFCYYePT7iZQNNc1DISQJrxme3bjq0PJzZTDukNnHJVahnj9x4RoNaF8j Dc+JME0r2i8Ccp28vgmaRgzvSsb8Xtw5icwRdwzIpyt1ubs/+tkd/GSaGzQo30Q8 m8y1WOjovHNX7OGnOaOWBGoQAX/2k/VHeAediMsPqWUoOxwsLHYxG/4KtgwbJ5vc gu/Fyk1GRDklZPpLdYFVvz8TGnqSDogJgF+7WolJ6YvPGAUIDAfd5Ky2sWayddlm wchc3sKDVyh3lov23h0WQVTvLO9xl+NZ6THxoAGdYeQ0DUu5OxwH8qje/UpWuo1a DchhNN+g5pa6n56Z =sLxb -----END PGP SIGNATURE----- Merge tag 'kbuild-v5.12' of git://git.kernel.org/pub/scm/linux/kernel/git/masahiroy/linux-kbuild Pull Kbuild updates from Masahiro Yamada: - Fix false-positive build warnings for ARCH=ia64 builds - Optimize dictionary size for module compression with xz - Check the compiler and linker versions in Kconfig - Fix misuse of extra-y - Support DWARF v5 debug info - Clamp SUBLEVEL to 255 because stable releases 4.4.x and 4.9.x exceeded the limit - Add generic syscall{tbl,hdr}.sh for cleanups across arches - Minor cleanups of genksyms - Minor cleanups of Kconfig * tag 'kbuild-v5.12' of git://git.kernel.org/pub/scm/linux/kernel/git/masahiroy/linux-kbuild: (38 commits) initramfs: Remove redundant dependency of RD_ZSTD on BLK_DEV_INITRD kbuild: remove deprecated 'always' and 'hostprogs-y/m' kbuild: parse C= and M= before changing the working directory kbuild: reuse this-makefile to define abs_srctree kconfig: unify rule of config, menuconfig, nconfig, gconfig, xconfig kconfig: omit --oldaskconfig option for 'make config' kconfig: fix 'invalid option' for help option kconfig: remove dead code in conf_askvalue() kconfig: clean up nested if-conditionals in check_conf() kconfig: Remove duplicate call to sym_get_string_value() Makefile: Remove # characters from compiler string Makefile: reuse CC_VERSION_TEXT kbuild: check the minimum linker version in Kconfig kbuild: remove ld-version macro scripts: add generic syscallhdr.sh scripts: add generic syscalltbl.sh arch: syscalls: remove $(srctree)/ prefix from syscall tables arch: syscalls: add missing FORCE and fix 'targets' to make if_changed work gen_compile_commands: prune some directories kbuild: simplify access to the kernel's version ...
This commit is contained in:
commit
6fbd6cf85a
@ -78,10 +78,10 @@ $(obj)/processed-schema.json: $(DT_SCHEMA_FILES) check_dtschema_version FORCE
|
|||||||
|
|
||||||
endif
|
endif
|
||||||
|
|
||||||
extra-$(CHECK_DT_BINDING) += processed-schema-examples.json
|
always-$(CHECK_DT_BINDING) += processed-schema-examples.json
|
||||||
extra-$(CHECK_DTBS) += processed-schema.json
|
always-$(CHECK_DTBS) += processed-schema.json
|
||||||
extra-$(CHECK_DT_BINDING) += $(patsubst $(src)/%.yaml,%.example.dts, $(DT_SCHEMA_FILES))
|
always-$(CHECK_DT_BINDING) += $(patsubst $(src)/%.yaml,%.example.dts, $(DT_SCHEMA_FILES))
|
||||||
extra-$(CHECK_DT_BINDING) += $(patsubst $(src)/%.yaml,%.example.dt.yaml, $(DT_SCHEMA_FILES))
|
always-$(CHECK_DT_BINDING) += $(patsubst $(src)/%.yaml,%.example.dt.yaml, $(DT_SCHEMA_FILES))
|
||||||
|
|
||||||
# Hack: avoid 'Argument list too long' error for 'make clean'. Remove most of
|
# Hack: avoid 'Argument list too long' error for 'make clean'. Remove most of
|
||||||
# build artifacts here before they are processed by scripts/Makefile.clean
|
# build artifacts here before they are processed by scripts/Makefile.clean
|
||||||
|
@ -12,7 +12,7 @@ This document describes the Linux kernel Makefiles.
|
|||||||
--- 3.1 Goal definitions
|
--- 3.1 Goal definitions
|
||||||
--- 3.2 Built-in object goals - obj-y
|
--- 3.2 Built-in object goals - obj-y
|
||||||
--- 3.3 Loadable module goals - obj-m
|
--- 3.3 Loadable module goals - obj-m
|
||||||
--- 3.4 Objects which export symbols
|
--- 3.4 <deleted>
|
||||||
--- 3.5 Library file goals - lib-y
|
--- 3.5 Library file goals - lib-y
|
||||||
--- 3.6 Descending down in directories
|
--- 3.6 Descending down in directories
|
||||||
--- 3.7 Non-builtin vmlinux targets - extra-y
|
--- 3.7 Non-builtin vmlinux targets - extra-y
|
||||||
@ -247,12 +247,6 @@ more details, with real examples.
|
|||||||
kbuild will build an ext2.o file for you out of the individual
|
kbuild will build an ext2.o file for you out of the individual
|
||||||
parts and then link this into built-in.a, as you would expect.
|
parts and then link this into built-in.a, as you would expect.
|
||||||
|
|
||||||
3.4 Objects which export symbols
|
|
||||||
--------------------------------
|
|
||||||
|
|
||||||
No special notation is required in the makefiles for
|
|
||||||
modules exporting symbols.
|
|
||||||
|
|
||||||
3.5 Library file goals - lib-y
|
3.5 Library file goals - lib-y
|
||||||
------------------------------
|
------------------------------
|
||||||
|
|
||||||
|
@ -4319,8 +4319,6 @@ C: irc://chat.freenode.net/clangbuiltlinux
|
|||||||
F: Documentation/kbuild/llvm.rst
|
F: Documentation/kbuild/llvm.rst
|
||||||
F: include/linux/compiler-clang.h
|
F: include/linux/compiler-clang.h
|
||||||
F: scripts/clang-tools/
|
F: scripts/clang-tools/
|
||||||
F: scripts/clang-version.sh
|
|
||||||
F: scripts/lld-version.sh
|
|
||||||
K: \b(?i:clang|llvm)\b
|
K: \b(?i:clang|llvm)\b
|
||||||
|
|
||||||
CLEANCACHE API
|
CLEANCACHE API
|
||||||
|
105
Makefile
105
Makefile
@ -100,6 +100,36 @@ endif
|
|||||||
|
|
||||||
export quiet Q KBUILD_VERBOSE
|
export quiet Q KBUILD_VERBOSE
|
||||||
|
|
||||||
|
# Call a source code checker (by default, "sparse") as part of the
|
||||||
|
# C compilation.
|
||||||
|
#
|
||||||
|
# Use 'make C=1' to enable checking of only re-compiled files.
|
||||||
|
# Use 'make C=2' to enable checking of *all* source files, regardless
|
||||||
|
# of whether they are re-compiled or not.
|
||||||
|
#
|
||||||
|
# See the file "Documentation/dev-tools/sparse.rst" for more details,
|
||||||
|
# including where to get the "sparse" utility.
|
||||||
|
|
||||||
|
ifeq ("$(origin C)", "command line")
|
||||||
|
KBUILD_CHECKSRC = $(C)
|
||||||
|
endif
|
||||||
|
ifndef KBUILD_CHECKSRC
|
||||||
|
KBUILD_CHECKSRC = 0
|
||||||
|
endif
|
||||||
|
|
||||||
|
export KBUILD_CHECKSRC
|
||||||
|
|
||||||
|
# Use make M=dir or set the environment variable KBUILD_EXTMOD to specify the
|
||||||
|
# directory of external module to build. Setting M= takes precedence.
|
||||||
|
ifeq ("$(origin M)", "command line")
|
||||||
|
KBUILD_EXTMOD := $(M)
|
||||||
|
endif
|
||||||
|
|
||||||
|
$(if $(word 2, $(KBUILD_EXTMOD)), \
|
||||||
|
$(error building multiple external modules is not supported))
|
||||||
|
|
||||||
|
export KBUILD_EXTMOD
|
||||||
|
|
||||||
# Kbuild will save output files in the current working directory.
|
# Kbuild will save output files in the current working directory.
|
||||||
# This does not need to match to the root of the kernel source tree.
|
# This does not need to match to the root of the kernel source tree.
|
||||||
#
|
#
|
||||||
@ -145,7 +175,8 @@ else
|
|||||||
need-sub-make := 1
|
need-sub-make := 1
|
||||||
endif
|
endif
|
||||||
|
|
||||||
abs_srctree := $(realpath $(dir $(lastword $(MAKEFILE_LIST))))
|
this-makefile := $(lastword $(MAKEFILE_LIST))
|
||||||
|
abs_srctree := $(realpath $(dir $(this-makefile)))
|
||||||
|
|
||||||
ifneq ($(words $(subst :, ,$(abs_srctree))), 1)
|
ifneq ($(words $(subst :, ,$(abs_srctree))), 1)
|
||||||
$(error source directory cannot contain spaces or colons)
|
$(error source directory cannot contain spaces or colons)
|
||||||
@ -160,8 +191,6 @@ MAKEFLAGS += --include-dir=$(abs_srctree)
|
|||||||
need-sub-make := 1
|
need-sub-make := 1
|
||||||
endif
|
endif
|
||||||
|
|
||||||
this-makefile := $(lastword $(MAKEFILE_LIST))
|
|
||||||
|
|
||||||
ifneq ($(filter 3.%,$(MAKE_VERSION)),)
|
ifneq ($(filter 3.%,$(MAKE_VERSION)),)
|
||||||
# 'MAKEFLAGS += -rR' does not immediately become effective for GNU Make 3.x
|
# 'MAKEFLAGS += -rR' does not immediately become effective for GNU Make 3.x
|
||||||
# We need to invoke sub-make to avoid implicit rules in the top Makefile.
|
# We need to invoke sub-make to avoid implicit rules in the top Makefile.
|
||||||
@ -195,36 +224,6 @@ ifeq ($(need-sub-make),)
|
|||||||
# so that IDEs/editors are able to understand relative filenames.
|
# so that IDEs/editors are able to understand relative filenames.
|
||||||
MAKEFLAGS += --no-print-directory
|
MAKEFLAGS += --no-print-directory
|
||||||
|
|
||||||
# Call a source code checker (by default, "sparse") as part of the
|
|
||||||
# C compilation.
|
|
||||||
#
|
|
||||||
# Use 'make C=1' to enable checking of only re-compiled files.
|
|
||||||
# Use 'make C=2' to enable checking of *all* source files, regardless
|
|
||||||
# of whether they are re-compiled or not.
|
|
||||||
#
|
|
||||||
# See the file "Documentation/dev-tools/sparse.rst" for more details,
|
|
||||||
# including where to get the "sparse" utility.
|
|
||||||
|
|
||||||
ifeq ("$(origin C)", "command line")
|
|
||||||
KBUILD_CHECKSRC = $(C)
|
|
||||||
endif
|
|
||||||
ifndef KBUILD_CHECKSRC
|
|
||||||
KBUILD_CHECKSRC = 0
|
|
||||||
endif
|
|
||||||
|
|
||||||
# Use make M=dir or set the environment variable KBUILD_EXTMOD to specify the
|
|
||||||
# directory of external module to build. Setting M= takes precedence.
|
|
||||||
ifeq ("$(origin M)", "command line")
|
|
||||||
KBUILD_EXTMOD := $(M)
|
|
||||||
endif
|
|
||||||
|
|
||||||
$(if $(word 2, $(KBUILD_EXTMOD)), \
|
|
||||||
$(error building multiple external modules is not supported))
|
|
||||||
|
|
||||||
export KBUILD_CHECKSRC KBUILD_EXTMOD
|
|
||||||
|
|
||||||
extmod-prefix = $(if $(KBUILD_EXTMOD),$(KBUILD_EXTMOD)/)
|
|
||||||
|
|
||||||
ifeq ($(abs_srctree),$(abs_objtree))
|
ifeq ($(abs_srctree),$(abs_objtree))
|
||||||
# building in the source tree
|
# building in the source tree
|
||||||
srctree := .
|
srctree := .
|
||||||
@ -257,7 +256,6 @@ export building_out_of_srctree srctree objtree VPATH
|
|||||||
# of make so .config is not included in this case either (for *config).
|
# of make so .config is not included in this case either (for *config).
|
||||||
|
|
||||||
version_h := include/generated/uapi/linux/version.h
|
version_h := include/generated/uapi/linux/version.h
|
||||||
old_version_h := include/linux/version.h
|
|
||||||
|
|
||||||
clean-targets := %clean mrproper cleandocs
|
clean-targets := %clean mrproper cleandocs
|
||||||
no-dot-config-targets := $(clean-targets) \
|
no-dot-config-targets := $(clean-targets) \
|
||||||
@ -558,7 +556,13 @@ ifdef building_out_of_srctree
|
|||||||
{ echo "# this is build directory, ignore it"; echo "*"; } > .gitignore
|
{ echo "# this is build directory, ignore it"; echo "*"; } > .gitignore
|
||||||
endif
|
endif
|
||||||
|
|
||||||
ifneq ($(shell $(CC) --version 2>&1 | head -n 1 | grep clang),)
|
# The expansion should be delayed until arch/$(SRCARCH)/Makefile is included.
|
||||||
|
# Some architectures define CROSS_COMPILE in arch/$(SRCARCH)/Makefile.
|
||||||
|
# CC_VERSION_TEXT is referenced from Kconfig (so it needs export),
|
||||||
|
# and from include/config/auto.conf.cmd to detect the compiler upgrade.
|
||||||
|
CC_VERSION_TEXT = $(shell $(CC) --version 2>/dev/null | head -n 1 | sed 's/\#//g')
|
||||||
|
|
||||||
|
ifneq ($(findstring clang,$(CC_VERSION_TEXT)),)
|
||||||
ifneq ($(CROSS_COMPILE),)
|
ifneq ($(CROSS_COMPILE),)
|
||||||
CLANG_FLAGS += --target=$(notdir $(CROSS_COMPILE:%-=%))
|
CLANG_FLAGS += --target=$(notdir $(CROSS_COMPILE:%-=%))
|
||||||
GCC_TOOLCHAIN_DIR := $(dir $(shell which $(CROSS_COMPILE)elfedit))
|
GCC_TOOLCHAIN_DIR := $(dir $(shell which $(CROSS_COMPILE)elfedit))
|
||||||
@ -577,12 +581,6 @@ KBUILD_AFLAGS += $(CLANG_FLAGS)
|
|||||||
export CLANG_FLAGS
|
export CLANG_FLAGS
|
||||||
endif
|
endif
|
||||||
|
|
||||||
# The expansion should be delayed until arch/$(SRCARCH)/Makefile is included.
|
|
||||||
# Some architectures define CROSS_COMPILE in arch/$(SRCARCH)/Makefile.
|
|
||||||
# CC_VERSION_TEXT is referenced from Kconfig (so it needs export),
|
|
||||||
# and from include/config/auto.conf.cmd to detect the compiler upgrade.
|
|
||||||
CC_VERSION_TEXT = $(shell $(CC) --version 2>/dev/null | head -n 1)
|
|
||||||
|
|
||||||
ifdef config-build
|
ifdef config-build
|
||||||
# ===========================================================================
|
# ===========================================================================
|
||||||
# *config targets only - make sure prerequisites are updated, and descend
|
# *config targets only - make sure prerequisites are updated, and descend
|
||||||
@ -832,8 +830,10 @@ ifneq ($(LLVM_IAS),1)
|
|||||||
KBUILD_AFLAGS += -Wa,-gdwarf-2
|
KBUILD_AFLAGS += -Wa,-gdwarf-2
|
||||||
endif
|
endif
|
||||||
|
|
||||||
ifdef CONFIG_DEBUG_INFO_DWARF4
|
ifndef CONFIG_DEBUG_INFO_DWARF_TOOLCHAIN_DEFAULT
|
||||||
DEBUG_CFLAGS += -gdwarf-4
|
dwarf-version-$(CONFIG_DEBUG_INFO_DWARF4) := 4
|
||||||
|
dwarf-version-$(CONFIG_DEBUG_INFO_DWARF5) := 5
|
||||||
|
DEBUG_CFLAGS += -gdwarf-$(dwarf-version-y)
|
||||||
endif
|
endif
|
||||||
|
|
||||||
ifdef CONFIG_DEBUG_INFO_REDUCED
|
ifdef CONFIG_DEBUG_INFO_REDUCED
|
||||||
@ -1072,7 +1072,7 @@ ifdef CONFIG_MODULE_COMPRESS
|
|||||||
mod_compress_cmd = $(KGZIP) -n -f
|
mod_compress_cmd = $(KGZIP) -n -f
|
||||||
endif # CONFIG_MODULE_COMPRESS_GZIP
|
endif # CONFIG_MODULE_COMPRESS_GZIP
|
||||||
ifdef CONFIG_MODULE_COMPRESS_XZ
|
ifdef CONFIG_MODULE_COMPRESS_XZ
|
||||||
mod_compress_cmd = $(XZ) -f
|
mod_compress_cmd = $(XZ) --lzma2=dict=2MiB -f
|
||||||
endif # CONFIG_MODULE_COMPRESS_XZ
|
endif # CONFIG_MODULE_COMPRESS_XZ
|
||||||
endif # CONFIG_MODULE_COMPRESS
|
endif # CONFIG_MODULE_COMPRESS
|
||||||
export mod_compress_cmd
|
export mod_compress_cmd
|
||||||
@ -1123,6 +1123,7 @@ endif # CONFIG_BPF
|
|||||||
|
|
||||||
PHONY += prepare0
|
PHONY += prepare0
|
||||||
|
|
||||||
|
extmod-prefix = $(if $(KBUILD_EXTMOD),$(KBUILD_EXTMOD)/)
|
||||||
export MODORDER := $(extmod-prefix)modules.order
|
export MODORDER := $(extmod-prefix)modules.order
|
||||||
export MODULES_NSDEPS := $(extmod-prefix)modules.nsdeps
|
export MODULES_NSDEPS := $(extmod-prefix)modules.nsdeps
|
||||||
|
|
||||||
@ -1280,14 +1281,22 @@ define filechk_utsrelease.h
|
|||||||
endef
|
endef
|
||||||
|
|
||||||
define filechk_version.h
|
define filechk_version.h
|
||||||
echo \#define LINUX_VERSION_CODE $(shell \
|
if [ $(SUBLEVEL) -gt 255 ]; then \
|
||||||
expr $(VERSION) \* 65536 + 0$(PATCHLEVEL) \* 256 + 0$(SUBLEVEL)); \
|
echo \#define LINUX_VERSION_CODE $(shell \
|
||||||
echo '#define KERNEL_VERSION(a,b,c) (((a) << 16) + ((b) << 8) + (c))'
|
expr $(VERSION) \* 65536 + 0$(PATCHLEVEL) \* 256 + 255); \
|
||||||
|
else \
|
||||||
|
echo \#define LINUX_VERSION_CODE $(shell \
|
||||||
|
expr $(VERSION) \* 65536 + 0$(PATCHLEVEL) \* 256 + $(SUBLEVEL)); \
|
||||||
|
fi; \
|
||||||
|
echo '#define KERNEL_VERSION(a,b,c) (((a) << 16) + ((b) << 8) + \
|
||||||
|
((c) > 255 ? 255 : (c)))'; \
|
||||||
|
echo \#define LINUX_VERSION_MAJOR $(VERSION); \
|
||||||
|
echo \#define LINUX_VERSION_PATCHLEVEL $(PATCHLEVEL); \
|
||||||
|
echo \#define LINUX_VERSION_SUBLEVEL $(SUBLEVEL)
|
||||||
endef
|
endef
|
||||||
|
|
||||||
$(version_h): FORCE
|
$(version_h): FORCE
|
||||||
$(call filechk,version.h)
|
$(call filechk,version.h)
|
||||||
$(Q)rm -f $(old_version_h)
|
|
||||||
|
|
||||||
include/generated/utsrelease.h: include/config/kernel.release FORCE
|
include/generated/utsrelease.h: include/config/kernel.release FORCE
|
||||||
$(call filechk,utsrelease.h)
|
$(call filechk,utsrelease.h)
|
||||||
|
@ -5,7 +5,7 @@ uapi := arch/$(SRCARCH)/include/generated/uapi/asm
|
|||||||
_dummy := $(shell [ -d '$(uapi)' ] || mkdir -p '$(uapi)') \
|
_dummy := $(shell [ -d '$(uapi)' ] || mkdir -p '$(uapi)') \
|
||||||
$(shell [ -d '$(kapi)' ] || mkdir -p '$(kapi)')
|
$(shell [ -d '$(kapi)' ] || mkdir -p '$(kapi)')
|
||||||
|
|
||||||
syscall := $(srctree)/$(src)/syscall.tbl
|
syscall := $(src)/syscall.tbl
|
||||||
syshdr := $(srctree)/$(src)/syscallhdr.sh
|
syshdr := $(srctree)/$(src)/syscallhdr.sh
|
||||||
systbl := $(srctree)/$(src)/syscalltbl.sh
|
systbl := $(srctree)/$(src)/syscalltbl.sh
|
||||||
|
|
||||||
@ -21,18 +21,19 @@ quiet_cmd_systbl = SYSTBL $@
|
|||||||
'$(systbl_abi_$(basetarget))' \
|
'$(systbl_abi_$(basetarget))' \
|
||||||
'$(systbl_offset_$(basetarget))'
|
'$(systbl_offset_$(basetarget))'
|
||||||
|
|
||||||
$(uapi)/unistd_32.h: $(syscall) $(syshdr)
|
$(uapi)/unistd_32.h: $(syscall) $(syshdr) FORCE
|
||||||
$(call if_changed,syshdr)
|
$(call if_changed,syshdr)
|
||||||
|
|
||||||
$(kapi)/syscall_table.h: $(syscall) $(systbl)
|
$(kapi)/syscall_table.h: $(syscall) $(systbl) FORCE
|
||||||
$(call if_changed,systbl)
|
$(call if_changed,systbl)
|
||||||
|
|
||||||
uapisyshdr-y += unistd_32.h
|
uapisyshdr-y += unistd_32.h
|
||||||
kapisyshdr-y += syscall_table.h
|
kapisyshdr-y += syscall_table.h
|
||||||
|
|
||||||
targets += $(uapisyshdr-y) $(kapisyshdr-y)
|
uapisyshdr-y := $(addprefix $(uapi)/, $(uapisyshdr-y))
|
||||||
|
kapisyshdr-y := $(addprefix $(kapi)/, $(kapisyshdr-y))
|
||||||
|
targets += $(addprefix ../../../../, $(uapisyshdr-y) $(kapisyshdr-y))
|
||||||
|
|
||||||
PHONY += all
|
PHONY += all
|
||||||
all: $(addprefix $(uapi)/,$(uapisyshdr-y))
|
all: $(uapisyshdr-y) $(kapisyshdr-y)
|
||||||
all: $(addprefix $(kapi)/,$(kapisyshdr-y))
|
|
||||||
@:
|
@:
|
||||||
|
@ -11,7 +11,7 @@ uapi := $(gen)/uapi/asm
|
|||||||
syshdr := $(srctree)/$(src)/syscallhdr.sh
|
syshdr := $(srctree)/$(src)/syscallhdr.sh
|
||||||
sysnr := $(srctree)/$(src)/syscallnr.sh
|
sysnr := $(srctree)/$(src)/syscallnr.sh
|
||||||
systbl := $(srctree)/$(src)/syscalltbl.sh
|
systbl := $(srctree)/$(src)/syscalltbl.sh
|
||||||
syscall := $(srctree)/$(src)/syscall.tbl
|
syscall := $(src)/syscall.tbl
|
||||||
|
|
||||||
gen-y := $(gen)/calls-oabi.S
|
gen-y := $(gen)/calls-oabi.S
|
||||||
gen-y += $(gen)/calls-eabi.S
|
gen-y += $(gen)/calls-eabi.S
|
||||||
|
@ -1485,7 +1485,7 @@ config ARM64_PTR_AUTH
|
|||||||
depends on (CC_HAS_SIGN_RETURN_ADDRESS || CC_HAS_BRANCH_PROT_PAC_RET) && AS_HAS_PAC
|
depends on (CC_HAS_SIGN_RETURN_ADDRESS || CC_HAS_BRANCH_PROT_PAC_RET) && AS_HAS_PAC
|
||||||
# Modern compilers insert a .note.gnu.property section note for PAC
|
# Modern compilers insert a .note.gnu.property section note for PAC
|
||||||
# which is only understood by binutils starting with version 2.33.1.
|
# which is only understood by binutils starting with version 2.33.1.
|
||||||
depends on LD_IS_LLD || LD_VERSION >= 233010000 || (CC_IS_GCC && GCC_VERSION < 90100)
|
depends on LD_IS_LLD || LD_VERSION >= 23301 || (CC_IS_GCC && GCC_VERSION < 90100)
|
||||||
depends on !CC_IS_CLANG || AS_HAS_CFI_NEGATE_RA_STATE
|
depends on !CC_IS_CLANG || AS_HAS_CFI_NEGATE_RA_STATE
|
||||||
depends on (!FUNCTION_GRAPH_TRACER || DYNAMIC_FTRACE_WITH_REGS)
|
depends on (!FUNCTION_GRAPH_TRACER || DYNAMIC_FTRACE_WITH_REGS)
|
||||||
help
|
help
|
||||||
|
@ -85,9 +85,3 @@ define archhelp
|
|||||||
echo ' install - Install compressed kernel image'
|
echo ' install - Install compressed kernel image'
|
||||||
echo '* unwcheck - Check vmlinux for invalid unwind info'
|
echo '* unwcheck - Check vmlinux for invalid unwind info'
|
||||||
endef
|
endef
|
||||||
|
|
||||||
archprepare: make_nr_irqs_h
|
|
||||||
PHONY += make_nr_irqs_h
|
|
||||||
|
|
||||||
make_nr_irqs_h:
|
|
||||||
$(Q)$(MAKE) $(build)=arch/ia64/kernel include/generated/nr-irqs.h
|
|
||||||
|
@ -14,7 +14,9 @@
|
|||||||
|
|
||||||
#include <linux/types.h>
|
#include <linux/types.h>
|
||||||
#include <linux/cpumask.h>
|
#include <linux/cpumask.h>
|
||||||
#include <generated/nr-irqs.h>
|
#include <asm/native/irq.h>
|
||||||
|
|
||||||
|
#define NR_IRQS IA64_NATIVE_NR_IRQS
|
||||||
|
|
||||||
static __inline__ int
|
static __inline__ int
|
||||||
irq_canonicalize (int irq)
|
irq_canonicalize (int irq)
|
||||||
|
@ -14,13 +14,10 @@
|
|||||||
|
|
||||||
#if !defined(__ASSEMBLY__)
|
#if !defined(__ASSEMBLY__)
|
||||||
|
|
||||||
#include <linux/interrupt.h>
|
#include <linux/percpu.h>
|
||||||
|
#include <linux/threads.h>
|
||||||
#include <linux/types.h>
|
#include <linux/types.h>
|
||||||
|
#include <asm/ptrace.h>
|
||||||
#include <asm/param.h>
|
|
||||||
#include <asm/sal.h>
|
|
||||||
#include <asm/processor.h>
|
|
||||||
#include <asm/mca_asm.h>
|
|
||||||
|
|
||||||
#define IA64_MCA_RENDEZ_TIMEOUT (20 * 1000) /* value in milliseconds - 20 seconds */
|
#define IA64_MCA_RENDEZ_TIMEOUT (20 * 1000) /* value in milliseconds - 20 seconds */
|
||||||
|
|
||||||
@ -83,7 +80,7 @@ struct ia64_sal_os_state {
|
|||||||
/* common */
|
/* common */
|
||||||
unsigned long sal_ra; /* Return address in SAL, physical */
|
unsigned long sal_ra; /* Return address in SAL, physical */
|
||||||
unsigned long sal_gp; /* GP of the SAL - physical */
|
unsigned long sal_gp; /* GP of the SAL - physical */
|
||||||
pal_min_state_area_t *pal_min_state; /* from R17. physical in asm, virtual in C */
|
struct pal_min_state_area *pal_min_state; /* from R17. physical in asm, virtual in C */
|
||||||
/* Previous values of IA64_KR(CURRENT) and IA64_KR(CURRENT_STACK).
|
/* Previous values of IA64_KR(CURRENT) and IA64_KR(CURRENT_STACK).
|
||||||
* Note: if the MCA/INIT recovery code wants to resume to a new context
|
* Note: if the MCA/INIT recovery code wants to resume to a new context
|
||||||
* then it must change these values to reflect the new kernel stack.
|
* then it must change these values to reflect the new kernel stack.
|
||||||
|
@ -750,7 +750,7 @@ typedef union pal_mc_error_info_u {
|
|||||||
* for PAL.
|
* for PAL.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
typedef struct pal_min_state_area_s {
|
struct pal_min_state_area {
|
||||||
u64 pmsa_nat_bits; /* nat bits for saved GRs */
|
u64 pmsa_nat_bits; /* nat bits for saved GRs */
|
||||||
u64 pmsa_gr[15]; /* GR1 - GR15 */
|
u64 pmsa_gr[15]; /* GR1 - GR15 */
|
||||||
u64 pmsa_bank0_gr[16]; /* GR16 - GR31 */
|
u64 pmsa_bank0_gr[16]; /* GR16 - GR31 */
|
||||||
@ -766,7 +766,7 @@ typedef struct pal_min_state_area_s {
|
|||||||
u64 pmsa_xfs; /* previous ifs */
|
u64 pmsa_xfs; /* previous ifs */
|
||||||
u64 pmsa_br1; /* branch register 1 */
|
u64 pmsa_br1; /* branch register 1 */
|
||||||
u64 pmsa_reserved[70]; /* pal_min_state_area should total to 1KB */
|
u64 pmsa_reserved[70]; /* pal_min_state_area should total to 1KB */
|
||||||
} pal_min_state_area_t;
|
};
|
||||||
|
|
||||||
|
|
||||||
struct ia64_pal_retval {
|
struct ia64_pal_retval {
|
||||||
|
@ -385,7 +385,7 @@ typedef struct sal_processor_static_info {
|
|||||||
fr : 1,
|
fr : 1,
|
||||||
reserved : 58;
|
reserved : 58;
|
||||||
} valid;
|
} valid;
|
||||||
pal_min_state_area_t min_state_area;
|
struct pal_min_state_area min_state_area;
|
||||||
u64 br[8];
|
u64 br[8];
|
||||||
u64 cr[128];
|
u64 cr[128];
|
||||||
u64 ar[128];
|
u64 ar[128];
|
||||||
|
@ -47,8 +47,3 @@ CFLAGS_traps.o += -mfixed-range=f2-f5,f16-f31
|
|||||||
|
|
||||||
# The gate DSO image is built using a special linker script.
|
# The gate DSO image is built using a special linker script.
|
||||||
include $(src)/Makefile.gate
|
include $(src)/Makefile.gate
|
||||||
|
|
||||||
include/generated/nr-irqs.h: arch/$(SRCARCH)/kernel/nr-irqs.s FORCE
|
|
||||||
$(call filechk,offsets,__ASM_NR_IRQS_H__)
|
|
||||||
|
|
||||||
targets += nr-irqs.s
|
|
||||||
|
@ -245,23 +245,23 @@ void foo(void)
|
|||||||
BLANK();
|
BLANK();
|
||||||
|
|
||||||
DEFINE(IA64_PMSA_GR_OFFSET,
|
DEFINE(IA64_PMSA_GR_OFFSET,
|
||||||
offsetof (struct pal_min_state_area_s, pmsa_gr));
|
offsetof(struct pal_min_state_area, pmsa_gr));
|
||||||
DEFINE(IA64_PMSA_BANK1_GR_OFFSET,
|
DEFINE(IA64_PMSA_BANK1_GR_OFFSET,
|
||||||
offsetof (struct pal_min_state_area_s, pmsa_bank1_gr));
|
offsetof(struct pal_min_state_area, pmsa_bank1_gr));
|
||||||
DEFINE(IA64_PMSA_PR_OFFSET,
|
DEFINE(IA64_PMSA_PR_OFFSET,
|
||||||
offsetof (struct pal_min_state_area_s, pmsa_pr));
|
offsetof(struct pal_min_state_area, pmsa_pr));
|
||||||
DEFINE(IA64_PMSA_BR0_OFFSET,
|
DEFINE(IA64_PMSA_BR0_OFFSET,
|
||||||
offsetof (struct pal_min_state_area_s, pmsa_br0));
|
offsetof(struct pal_min_state_area, pmsa_br0));
|
||||||
DEFINE(IA64_PMSA_RSC_OFFSET,
|
DEFINE(IA64_PMSA_RSC_OFFSET,
|
||||||
offsetof (struct pal_min_state_area_s, pmsa_rsc));
|
offsetof(struct pal_min_state_area, pmsa_rsc));
|
||||||
DEFINE(IA64_PMSA_IIP_OFFSET,
|
DEFINE(IA64_PMSA_IIP_OFFSET,
|
||||||
offsetof (struct pal_min_state_area_s, pmsa_iip));
|
offsetof(struct pal_min_state_area, pmsa_iip));
|
||||||
DEFINE(IA64_PMSA_IPSR_OFFSET,
|
DEFINE(IA64_PMSA_IPSR_OFFSET,
|
||||||
offsetof (struct pal_min_state_area_s, pmsa_ipsr));
|
offsetof(struct pal_min_state_area, pmsa_ipsr));
|
||||||
DEFINE(IA64_PMSA_IFS_OFFSET,
|
DEFINE(IA64_PMSA_IFS_OFFSET,
|
||||||
offsetof (struct pal_min_state_area_s, pmsa_ifs));
|
offsetof(struct pal_min_state_area, pmsa_ifs));
|
||||||
DEFINE(IA64_PMSA_XIP_OFFSET,
|
DEFINE(IA64_PMSA_XIP_OFFSET,
|
||||||
offsetof (struct pal_min_state_area_s, pmsa_xip));
|
offsetof(struct pal_min_state_area, pmsa_xip));
|
||||||
BLANK();
|
BLANK();
|
||||||
|
|
||||||
/* used by fsys_gettimeofday in arch/ia64/kernel/fsys.S */
|
/* used by fsys_gettimeofday in arch/ia64/kernel/fsys.S */
|
||||||
|
@ -15,6 +15,7 @@
|
|||||||
#include <linux/memblock.h>
|
#include <linux/memblock.h>
|
||||||
#include <linux/kexec.h>
|
#include <linux/kexec.h>
|
||||||
#include <linux/elfcore.h>
|
#include <linux/elfcore.h>
|
||||||
|
#include <linux/reboot.h>
|
||||||
#include <linux/sysctl.h>
|
#include <linux/sysctl.h>
|
||||||
#include <linux/init.h>
|
#include <linux/init.h>
|
||||||
#include <linux/kdebug.h>
|
#include <linux/kdebug.h>
|
||||||
|
@ -40,6 +40,7 @@
|
|||||||
#include <asm/meminit.h>
|
#include <asm/meminit.h>
|
||||||
#include <asm/processor.h>
|
#include <asm/processor.h>
|
||||||
#include <asm/mca.h>
|
#include <asm/mca.h>
|
||||||
|
#include <asm/sal.h>
|
||||||
#include <asm/setup.h>
|
#include <asm/setup.h>
|
||||||
#include <asm/tlbflush.h>
|
#include <asm/tlbflush.h>
|
||||||
|
|
||||||
|
@ -97,6 +97,7 @@
|
|||||||
#include <asm/ptrace.h>
|
#include <asm/ptrace.h>
|
||||||
#include <asm/sal.h>
|
#include <asm/sal.h>
|
||||||
#include <asm/mca.h>
|
#include <asm/mca.h>
|
||||||
|
#include <asm/mca_asm.h>
|
||||||
#include <asm/kexec.h>
|
#include <asm/kexec.h>
|
||||||
|
|
||||||
#include <asm/irq.h>
|
#include <asm/irq.h>
|
||||||
@ -895,7 +896,7 @@ static void
|
|||||||
finish_pt_regs(struct pt_regs *regs, struct ia64_sal_os_state *sos,
|
finish_pt_regs(struct pt_regs *regs, struct ia64_sal_os_state *sos,
|
||||||
unsigned long *nat)
|
unsigned long *nat)
|
||||||
{
|
{
|
||||||
const pal_min_state_area_t *ms = sos->pal_min_state;
|
const struct pal_min_state_area *ms = sos->pal_min_state;
|
||||||
const u64 *bank;
|
const u64 *bank;
|
||||||
|
|
||||||
/* If ipsr.ic then use pmsa_{iip,ipsr,ifs}, else use
|
/* If ipsr.ic then use pmsa_{iip,ipsr,ifs}, else use
|
||||||
@ -971,7 +972,7 @@ ia64_mca_modify_original_stack(struct pt_regs *regs,
|
|||||||
char *p;
|
char *p;
|
||||||
ia64_va va;
|
ia64_va va;
|
||||||
extern char ia64_leave_kernel[]; /* Need asm address, not function descriptor */
|
extern char ia64_leave_kernel[]; /* Need asm address, not function descriptor */
|
||||||
const pal_min_state_area_t *ms = sos->pal_min_state;
|
const struct pal_min_state_area *ms = sos->pal_min_state;
|
||||||
struct task_struct *previous_current;
|
struct task_struct *previous_current;
|
||||||
struct pt_regs *old_regs;
|
struct pt_regs *old_regs;
|
||||||
struct switch_stack *old_sw;
|
struct switch_stack *old_sw;
|
||||||
|
@ -496,7 +496,7 @@ recover_from_read_error(slidx_table_t *slidx,
|
|||||||
struct ia64_sal_os_state *sos)
|
struct ia64_sal_os_state *sos)
|
||||||
{
|
{
|
||||||
u64 target_identifier;
|
u64 target_identifier;
|
||||||
pal_min_state_area_t *pmsa;
|
struct pal_min_state_area *pmsa;
|
||||||
struct ia64_psr *psr1, *psr2;
|
struct ia64_psr *psr1, *psr2;
|
||||||
ia64_fptr_t *mca_hdlr_bh = (ia64_fptr_t*)mca_handler_bhhook;
|
ia64_fptr_t *mca_hdlr_bh = (ia64_fptr_t*)mca_handler_bhhook;
|
||||||
|
|
||||||
|
@ -1,22 +0,0 @@
|
|||||||
// SPDX-License-Identifier: GPL-2.0
|
|
||||||
/*
|
|
||||||
* calculate
|
|
||||||
* NR_IRQS = max(IA64_NATIVE_NR_IRQS, XEN_NR_IRQS, FOO_NR_IRQS...)
|
|
||||||
* depending on config.
|
|
||||||
* This must be calculated before processing asm-offset.c.
|
|
||||||
*/
|
|
||||||
|
|
||||||
#define ASM_OFFSETS_C 1
|
|
||||||
|
|
||||||
#include <linux/kbuild.h>
|
|
||||||
#include <linux/threads.h>
|
|
||||||
#include <asm/native/irq.h>
|
|
||||||
|
|
||||||
void foo(void)
|
|
||||||
{
|
|
||||||
union paravirt_nr_irqs_max {
|
|
||||||
char ia64_native_nr_irqs[IA64_NATIVE_NR_IRQS];
|
|
||||||
};
|
|
||||||
|
|
||||||
DEFINE(NR_IRQS, sizeof (union paravirt_nr_irqs_max));
|
|
||||||
}
|
|
@ -5,7 +5,7 @@ uapi := arch/$(SRCARCH)/include/generated/uapi/asm
|
|||||||
_dummy := $(shell [ -d '$(uapi)' ] || mkdir -p '$(uapi)') \
|
_dummy := $(shell [ -d '$(uapi)' ] || mkdir -p '$(uapi)') \
|
||||||
$(shell [ -d '$(kapi)' ] || mkdir -p '$(kapi)')
|
$(shell [ -d '$(kapi)' ] || mkdir -p '$(kapi)')
|
||||||
|
|
||||||
syscall := $(srctree)/$(src)/syscall.tbl
|
syscall := $(src)/syscall.tbl
|
||||||
syshdr := $(srctree)/$(src)/syscallhdr.sh
|
syshdr := $(srctree)/$(src)/syscallhdr.sh
|
||||||
systbl := $(srctree)/$(src)/syscalltbl.sh
|
systbl := $(srctree)/$(src)/syscalltbl.sh
|
||||||
|
|
||||||
@ -22,19 +22,20 @@ quiet_cmd_systbl = SYSTBL $@
|
|||||||
'$(systbl_offset_$(basetarget))'
|
'$(systbl_offset_$(basetarget))'
|
||||||
|
|
||||||
syshdr_offset_unistd_64 := __NR_Linux
|
syshdr_offset_unistd_64 := __NR_Linux
|
||||||
$(uapi)/unistd_64.h: $(syscall) $(syshdr)
|
$(uapi)/unistd_64.h: $(syscall) $(syshdr) FORCE
|
||||||
$(call if_changed,syshdr)
|
$(call if_changed,syshdr)
|
||||||
|
|
||||||
systbl_offset_syscall_table := 1024
|
systbl_offset_syscall_table := 1024
|
||||||
$(kapi)/syscall_table.h: $(syscall) $(systbl)
|
$(kapi)/syscall_table.h: $(syscall) $(systbl) FORCE
|
||||||
$(call if_changed,systbl)
|
$(call if_changed,systbl)
|
||||||
|
|
||||||
uapisyshdr-y += unistd_64.h
|
uapisyshdr-y += unistd_64.h
|
||||||
kapisyshdr-y += syscall_table.h
|
kapisyshdr-y += syscall_table.h
|
||||||
|
|
||||||
targets += $(uapisyshdr-y) $(kapisyshdr-y)
|
uapisyshdr-y := $(addprefix $(uapi)/, $(uapisyshdr-y))
|
||||||
|
kapisyshdr-y := $(addprefix $(kapi)/, $(kapisyshdr-y))
|
||||||
|
targets += $(addprefix ../../../../, $(uapisyshdr-y) $(kapisyshdr-y))
|
||||||
|
|
||||||
PHONY += all
|
PHONY += all
|
||||||
all: $(addprefix $(uapi)/,$(uapisyshdr-y))
|
all: $(uapisyshdr-y) $(kapisyshdr-y)
|
||||||
all: $(addprefix $(kapi)/,$(kapisyshdr-y))
|
|
||||||
@:
|
@:
|
||||||
|
@ -5,7 +5,7 @@ uapi := arch/$(SRCARCH)/include/generated/uapi/asm
|
|||||||
_dummy := $(shell [ -d '$(uapi)' ] || mkdir -p '$(uapi)') \
|
_dummy := $(shell [ -d '$(uapi)' ] || mkdir -p '$(uapi)') \
|
||||||
$(shell [ -d '$(kapi)' ] || mkdir -p '$(kapi)')
|
$(shell [ -d '$(kapi)' ] || mkdir -p '$(kapi)')
|
||||||
|
|
||||||
syscall := $(srctree)/$(src)/syscall.tbl
|
syscall := $(src)/syscall.tbl
|
||||||
syshdr := $(srctree)/$(src)/syscallhdr.sh
|
syshdr := $(srctree)/$(src)/syscallhdr.sh
|
||||||
systbl := $(srctree)/$(src)/syscalltbl.sh
|
systbl := $(srctree)/$(src)/syscalltbl.sh
|
||||||
|
|
||||||
@ -21,18 +21,19 @@ quiet_cmd_systbl = SYSTBL $@
|
|||||||
'$(systbl_abi_$(basetarget))' \
|
'$(systbl_abi_$(basetarget))' \
|
||||||
'$(systbl_offset_$(basetarget))'
|
'$(systbl_offset_$(basetarget))'
|
||||||
|
|
||||||
$(uapi)/unistd_32.h: $(syscall) $(syshdr)
|
$(uapi)/unistd_32.h: $(syscall) $(syshdr) FORCE
|
||||||
$(call if_changed,syshdr)
|
$(call if_changed,syshdr)
|
||||||
|
|
||||||
$(kapi)/syscall_table.h: $(syscall) $(systbl)
|
$(kapi)/syscall_table.h: $(syscall) $(systbl) FORCE
|
||||||
$(call if_changed,systbl)
|
$(call if_changed,systbl)
|
||||||
|
|
||||||
uapisyshdr-y += unistd_32.h
|
uapisyshdr-y += unistd_32.h
|
||||||
kapisyshdr-y += syscall_table.h
|
kapisyshdr-y += syscall_table.h
|
||||||
|
|
||||||
targets += $(uapisyshdr-y) $(kapisyshdr-y)
|
uapisyshdr-y := $(addprefix $(uapi)/, $(uapisyshdr-y))
|
||||||
|
kapisyshdr-y := $(addprefix $(kapi)/, $(kapisyshdr-y))
|
||||||
|
targets += $(addprefix ../../../../, $(uapisyshdr-y) $(kapisyshdr-y))
|
||||||
|
|
||||||
PHONY += all
|
PHONY += all
|
||||||
all: $(addprefix $(uapi)/,$(uapisyshdr-y))
|
all: $(uapisyshdr-y) $(kapisyshdr-y)
|
||||||
all: $(addprefix $(kapi)/,$(kapisyshdr-y))
|
|
||||||
@:
|
@:
|
||||||
|
@ -5,7 +5,7 @@ uapi := arch/$(SRCARCH)/include/generated/uapi/asm
|
|||||||
_dummy := $(shell [ -d '$(uapi)' ] || mkdir -p '$(uapi)') \
|
_dummy := $(shell [ -d '$(uapi)' ] || mkdir -p '$(uapi)') \
|
||||||
$(shell [ -d '$(kapi)' ] || mkdir -p '$(kapi)')
|
$(shell [ -d '$(kapi)' ] || mkdir -p '$(kapi)')
|
||||||
|
|
||||||
syscall := $(srctree)/$(src)/syscall.tbl
|
syscall := $(src)/syscall.tbl
|
||||||
syshdr := $(srctree)/$(src)/syscallhdr.sh
|
syshdr := $(srctree)/$(src)/syscallhdr.sh
|
||||||
systbl := $(srctree)/$(src)/syscalltbl.sh
|
systbl := $(srctree)/$(src)/syscalltbl.sh
|
||||||
|
|
||||||
@ -21,18 +21,19 @@ quiet_cmd_systbl = SYSTBL $@
|
|||||||
'$(systbl_abi_$(basetarget))' \
|
'$(systbl_abi_$(basetarget))' \
|
||||||
'$(systbl_offset_$(basetarget))'
|
'$(systbl_offset_$(basetarget))'
|
||||||
|
|
||||||
$(uapi)/unistd_32.h: $(syscall) $(syshdr)
|
$(uapi)/unistd_32.h: $(syscall) $(syshdr) FORCE
|
||||||
$(call if_changed,syshdr)
|
$(call if_changed,syshdr)
|
||||||
|
|
||||||
$(kapi)/syscall_table.h: $(syscall) $(systbl)
|
$(kapi)/syscall_table.h: $(syscall) $(systbl) FORCE
|
||||||
$(call if_changed,systbl)
|
$(call if_changed,systbl)
|
||||||
|
|
||||||
uapisyshdr-y += unistd_32.h
|
uapisyshdr-y += unistd_32.h
|
||||||
kapisyshdr-y += syscall_table.h
|
kapisyshdr-y += syscall_table.h
|
||||||
|
|
||||||
targets += $(uapisyshdr-y) $(kapisyshdr-y)
|
uapisyshdr-y := $(addprefix $(uapi)/, $(uapisyshdr-y))
|
||||||
|
kapisyshdr-y := $(addprefix $(kapi)/, $(kapisyshdr-y))
|
||||||
|
targets += $(addprefix ../../../../, $(uapisyshdr-y) $(kapisyshdr-y))
|
||||||
|
|
||||||
PHONY += all
|
PHONY += all
|
||||||
all: $(addprefix $(uapi)/,$(uapisyshdr-y))
|
all: $(uapisyshdr-y) $(kapisyshdr-y)
|
||||||
all: $(addprefix $(kapi)/,$(kapisyshdr-y))
|
|
||||||
@:
|
@:
|
||||||
|
@ -5,9 +5,9 @@ uapi := arch/$(SRCARCH)/include/generated/uapi/asm
|
|||||||
_dummy := $(shell [ -d '$(uapi)' ] || mkdir -p '$(uapi)') \
|
_dummy := $(shell [ -d '$(uapi)' ] || mkdir -p '$(uapi)') \
|
||||||
$(shell [ -d '$(kapi)' ] || mkdir -p '$(kapi)')
|
$(shell [ -d '$(kapi)' ] || mkdir -p '$(kapi)')
|
||||||
|
|
||||||
syscalln32 := $(srctree)/$(src)/syscall_n32.tbl
|
syscalln32 := $(src)/syscall_n32.tbl
|
||||||
syscalln64 := $(srctree)/$(src)/syscall_n64.tbl
|
syscalln64 := $(src)/syscall_n64.tbl
|
||||||
syscallo32 := $(srctree)/$(src)/syscall_o32.tbl
|
syscallo32 := $(src)/syscall_o32.tbl
|
||||||
syshdr := $(srctree)/$(src)/syscallhdr.sh
|
syshdr := $(srctree)/$(src)/syscallhdr.sh
|
||||||
sysnr := $(srctree)/$(src)/syscallnr.sh
|
sysnr := $(srctree)/$(src)/syscallnr.sh
|
||||||
systbl := $(srctree)/$(src)/syscalltbl.sh
|
systbl := $(srctree)/$(src)/syscalltbl.sh
|
||||||
@ -31,50 +31,50 @@ quiet_cmd_systbl = SYSTBL $@
|
|||||||
'$(systbl_offset_$(basetarget))'
|
'$(systbl_offset_$(basetarget))'
|
||||||
|
|
||||||
syshdr_offset_unistd_n32 := __NR_Linux
|
syshdr_offset_unistd_n32 := __NR_Linux
|
||||||
$(uapi)/unistd_n32.h: $(syscalln32) $(syshdr)
|
$(uapi)/unistd_n32.h: $(syscalln32) $(syshdr) FORCE
|
||||||
$(call if_changed,syshdr)
|
$(call if_changed,syshdr)
|
||||||
|
|
||||||
syshdr_offset_unistd_n64 := __NR_Linux
|
syshdr_offset_unistd_n64 := __NR_Linux
|
||||||
$(uapi)/unistd_n64.h: $(syscalln64) $(syshdr)
|
$(uapi)/unistd_n64.h: $(syscalln64) $(syshdr) FORCE
|
||||||
$(call if_changed,syshdr)
|
$(call if_changed,syshdr)
|
||||||
|
|
||||||
syshdr_offset_unistd_o32 := __NR_Linux
|
syshdr_offset_unistd_o32 := __NR_Linux
|
||||||
$(uapi)/unistd_o32.h: $(syscallo32) $(syshdr)
|
$(uapi)/unistd_o32.h: $(syscallo32) $(syshdr) FORCE
|
||||||
$(call if_changed,syshdr)
|
$(call if_changed,syshdr)
|
||||||
|
|
||||||
sysnr_pfx_unistd_nr_n32 := N32
|
sysnr_pfx_unistd_nr_n32 := N32
|
||||||
sysnr_offset_unistd_nr_n32 := 6000
|
sysnr_offset_unistd_nr_n32 := 6000
|
||||||
$(kapi)/unistd_nr_n32.h: $(syscalln32) $(sysnr)
|
$(kapi)/unistd_nr_n32.h: $(syscalln32) $(sysnr) FORCE
|
||||||
$(call if_changed,sysnr)
|
$(call if_changed,sysnr)
|
||||||
|
|
||||||
sysnr_pfx_unistd_nr_n64 := 64
|
sysnr_pfx_unistd_nr_n64 := 64
|
||||||
sysnr_offset_unistd_nr_n64 := 5000
|
sysnr_offset_unistd_nr_n64 := 5000
|
||||||
$(kapi)/unistd_nr_n64.h: $(syscalln64) $(sysnr)
|
$(kapi)/unistd_nr_n64.h: $(syscalln64) $(sysnr) FORCE
|
||||||
$(call if_changed,sysnr)
|
$(call if_changed,sysnr)
|
||||||
|
|
||||||
sysnr_pfx_unistd_nr_o32 := O32
|
sysnr_pfx_unistd_nr_o32 := O32
|
||||||
sysnr_offset_unistd_nr_o32 := 4000
|
sysnr_offset_unistd_nr_o32 := 4000
|
||||||
$(kapi)/unistd_nr_o32.h: $(syscallo32) $(sysnr)
|
$(kapi)/unistd_nr_o32.h: $(syscallo32) $(sysnr) FORCE
|
||||||
$(call if_changed,sysnr)
|
$(call if_changed,sysnr)
|
||||||
|
|
||||||
systbl_abi_syscall_table_32_o32 := 32_o32
|
systbl_abi_syscall_table_32_o32 := 32_o32
|
||||||
systbl_offset_syscall_table_32_o32 := 4000
|
systbl_offset_syscall_table_32_o32 := 4000
|
||||||
$(kapi)/syscall_table_32_o32.h: $(syscallo32) $(systbl)
|
$(kapi)/syscall_table_32_o32.h: $(syscallo32) $(systbl) FORCE
|
||||||
$(call if_changed,systbl)
|
$(call if_changed,systbl)
|
||||||
|
|
||||||
systbl_abi_syscall_table_64_n32 := 64_n32
|
systbl_abi_syscall_table_64_n32 := 64_n32
|
||||||
systbl_offset_syscall_table_64_n32 := 6000
|
systbl_offset_syscall_table_64_n32 := 6000
|
||||||
$(kapi)/syscall_table_64_n32.h: $(syscalln32) $(systbl)
|
$(kapi)/syscall_table_64_n32.h: $(syscalln32) $(systbl) FORCE
|
||||||
$(call if_changed,systbl)
|
$(call if_changed,systbl)
|
||||||
|
|
||||||
systbl_abi_syscall_table_64_n64 := 64_n64
|
systbl_abi_syscall_table_64_n64 := 64_n64
|
||||||
systbl_offset_syscall_table_64_n64 := 5000
|
systbl_offset_syscall_table_64_n64 := 5000
|
||||||
$(kapi)/syscall_table_64_n64.h: $(syscalln64) $(systbl)
|
$(kapi)/syscall_table_64_n64.h: $(syscalln64) $(systbl) FORCE
|
||||||
$(call if_changed,systbl)
|
$(call if_changed,systbl)
|
||||||
|
|
||||||
systbl_abi_syscall_table_64_o32 := 64_o32
|
systbl_abi_syscall_table_64_o32 := 64_o32
|
||||||
systbl_offset_syscall_table_64_o32 := 4000
|
systbl_offset_syscall_table_64_o32 := 4000
|
||||||
$(kapi)/syscall_table_64_o32.h: $(syscallo32) $(systbl)
|
$(kapi)/syscall_table_64_o32.h: $(syscallo32) $(systbl) FORCE
|
||||||
$(call if_changed,systbl)
|
$(call if_changed,systbl)
|
||||||
|
|
||||||
uapisyshdr-y += unistd_n32.h \
|
uapisyshdr-y += unistd_n32.h \
|
||||||
@ -88,9 +88,10 @@ kapisyshdr-y += syscall_table_32_o32.h \
|
|||||||
unistd_nr_n64.h \
|
unistd_nr_n64.h \
|
||||||
unistd_nr_o32.h
|
unistd_nr_o32.h
|
||||||
|
|
||||||
targets += $(uapisyshdr-y) $(kapisyshdr-y)
|
uapisyshdr-y := $(addprefix $(uapi)/, $(uapisyshdr-y))
|
||||||
|
kapisyshdr-y := $(addprefix $(kapi)/, $(kapisyshdr-y))
|
||||||
|
targets += $(addprefix ../../../../, $(uapisyshdr-y) $(kapisyshdr-y))
|
||||||
|
|
||||||
PHONY += all
|
PHONY += all
|
||||||
all: $(addprefix $(uapi)/,$(uapisyshdr-y))
|
all: $(uapisyshdr-y) $(kapisyshdr-y)
|
||||||
all: $(addprefix $(kapi)/,$(kapisyshdr-y))
|
|
||||||
@:
|
@:
|
||||||
|
@ -13,7 +13,7 @@ cflags-$(CONFIG_CPU_LOONGSON64) += -Wa,--trap
|
|||||||
# can't easily be used safely within the kbuild framework.
|
# can't easily be used safely within the kbuild framework.
|
||||||
#
|
#
|
||||||
ifeq ($(call cc-ifversion, -ge, 0409, y), y)
|
ifeq ($(call cc-ifversion, -ge, 0409, y), y)
|
||||||
ifeq ($(call ld-ifversion, -ge, 225000000, y), y)
|
ifeq ($(call ld-ifversion, -ge, 22500, y), y)
|
||||||
cflags-$(CONFIG_CPU_LOONGSON64) += \
|
cflags-$(CONFIG_CPU_LOONGSON64) += \
|
||||||
$(call cc-option,-march=loongson3a -U_MIPS_ISA -D_MIPS_ISA=_MIPS_ISA_MIPS64)
|
$(call cc-option,-march=loongson3a -U_MIPS_ISA -D_MIPS_ISA=_MIPS_ISA_MIPS64)
|
||||||
else
|
else
|
||||||
|
@ -12,7 +12,7 @@
|
|||||||
# the lack of relocations. As such, we disable the VDSO for microMIPS builds.
|
# the lack of relocations. As such, we disable the VDSO for microMIPS builds.
|
||||||
|
|
||||||
config MIPS_LD_CAN_LINK_VDSO
|
config MIPS_LD_CAN_LINK_VDSO
|
||||||
def_bool LD_VERSION >= 225000000 || LD_IS_LLD
|
def_bool LD_VERSION >= 22500 || LD_IS_LLD
|
||||||
|
|
||||||
config MIPS_DISABLE_VDSO
|
config MIPS_DISABLE_VDSO
|
||||||
def_bool CPU_MICROMIPS || (!CPU_MIPSR6 && !MIPS_LD_CAN_LINK_VDSO)
|
def_bool CPU_MICROMIPS || (!CPU_MIPSR6 && !MIPS_LD_CAN_LINK_VDSO)
|
||||||
|
@ -5,7 +5,7 @@ uapi := arch/$(SRCARCH)/include/generated/uapi/asm
|
|||||||
_dummy := $(shell [ -d '$(uapi)' ] || mkdir -p '$(uapi)') \
|
_dummy := $(shell [ -d '$(uapi)' ] || mkdir -p '$(uapi)') \
|
||||||
$(shell [ -d '$(kapi)' ] || mkdir -p '$(kapi)')
|
$(shell [ -d '$(kapi)' ] || mkdir -p '$(kapi)')
|
||||||
|
|
||||||
syscall := $(srctree)/$(src)/syscall.tbl
|
syscall := $(src)/syscall.tbl
|
||||||
syshdr := $(srctree)/$(src)/syscallhdr.sh
|
syshdr := $(srctree)/$(src)/syscallhdr.sh
|
||||||
systbl := $(srctree)/$(src)/syscalltbl.sh
|
systbl := $(srctree)/$(src)/syscalltbl.sh
|
||||||
|
|
||||||
@ -22,24 +22,24 @@ quiet_cmd_systbl = SYSTBL $@
|
|||||||
'$(systbl_offset_$(basetarget))'
|
'$(systbl_offset_$(basetarget))'
|
||||||
|
|
||||||
syshdr_abis_unistd_32 := common,32
|
syshdr_abis_unistd_32 := common,32
|
||||||
$(uapi)/unistd_32.h: $(syscall) $(syshdr)
|
$(uapi)/unistd_32.h: $(syscall) $(syshdr) FORCE
|
||||||
$(call if_changed,syshdr)
|
$(call if_changed,syshdr)
|
||||||
|
|
||||||
syshdr_abis_unistd_64 := common,64
|
syshdr_abis_unistd_64 := common,64
|
||||||
$(uapi)/unistd_64.h: $(syscall) $(syshdr)
|
$(uapi)/unistd_64.h: $(syscall) $(syshdr) FORCE
|
||||||
$(call if_changed,syshdr)
|
$(call if_changed,syshdr)
|
||||||
|
|
||||||
systbl_abis_syscall_table_32 := common,32
|
systbl_abis_syscall_table_32 := common,32
|
||||||
$(kapi)/syscall_table_32.h: $(syscall) $(systbl)
|
$(kapi)/syscall_table_32.h: $(syscall) $(systbl) FORCE
|
||||||
$(call if_changed,systbl)
|
$(call if_changed,systbl)
|
||||||
|
|
||||||
systbl_abis_syscall_table_64 := common,64
|
systbl_abis_syscall_table_64 := common,64
|
||||||
$(kapi)/syscall_table_64.h: $(syscall) $(systbl)
|
$(kapi)/syscall_table_64.h: $(syscall) $(systbl) FORCE
|
||||||
$(call if_changed,systbl)
|
$(call if_changed,systbl)
|
||||||
|
|
||||||
systbl_abis_syscall_table_c32 := common,32
|
systbl_abis_syscall_table_c32 := common,32
|
||||||
systbl_abi_syscall_table_c32 := c32
|
systbl_abi_syscall_table_c32 := c32
|
||||||
$(kapi)/syscall_table_c32.h: $(syscall) $(systbl)
|
$(kapi)/syscall_table_c32.h: $(syscall) $(systbl) FORCE
|
||||||
$(call if_changed,systbl)
|
$(call if_changed,systbl)
|
||||||
|
|
||||||
uapisyshdr-y += unistd_32.h unistd_64.h
|
uapisyshdr-y += unistd_32.h unistd_64.h
|
||||||
@ -47,9 +47,10 @@ kapisyshdr-y += syscall_table_32.h \
|
|||||||
syscall_table_64.h \
|
syscall_table_64.h \
|
||||||
syscall_table_c32.h
|
syscall_table_c32.h
|
||||||
|
|
||||||
targets += $(uapisyshdr-y) $(kapisyshdr-y)
|
uapisyshdr-y := $(addprefix $(uapi)/, $(uapisyshdr-y))
|
||||||
|
kapisyshdr-y := $(addprefix $(kapi)/, $(kapisyshdr-y))
|
||||||
|
targets += $(addprefix ../../../../, $(uapisyshdr-y) $(kapisyshdr-y))
|
||||||
|
|
||||||
PHONY += all
|
PHONY += all
|
||||||
all: $(addprefix $(uapi)/,$(uapisyshdr-y))
|
all: $(uapisyshdr-y) $(kapisyshdr-y)
|
||||||
all: $(addprefix $(kapi)/,$(kapisyshdr-y))
|
|
||||||
@:
|
@:
|
||||||
|
@ -65,7 +65,7 @@ UTS_MACHINE := $(subst $(space),,$(machine-y))
|
|||||||
ifdef CONFIG_PPC32
|
ifdef CONFIG_PPC32
|
||||||
KBUILD_LDFLAGS_MODULE += arch/powerpc/lib/crtsavres.o
|
KBUILD_LDFLAGS_MODULE += arch/powerpc/lib/crtsavres.o
|
||||||
else
|
else
|
||||||
ifeq ($(call ld-ifversion, -ge, 225000000, y),y)
|
ifeq ($(call ld-ifversion, -ge, 22500, y),y)
|
||||||
# Have the linker provide sfpr if possible.
|
# Have the linker provide sfpr if possible.
|
||||||
# There is a corresponding test in arch/powerpc/lib/Makefile
|
# There is a corresponding test in arch/powerpc/lib/Makefile
|
||||||
KBUILD_LDFLAGS_MODULE += --save-restore-funcs
|
KBUILD_LDFLAGS_MODULE += --save-restore-funcs
|
||||||
|
@ -5,7 +5,7 @@ uapi := arch/$(SRCARCH)/include/generated/uapi/asm
|
|||||||
_dummy := $(shell [ -d '$(uapi)' ] || mkdir -p '$(uapi)') \
|
_dummy := $(shell [ -d '$(uapi)' ] || mkdir -p '$(uapi)') \
|
||||||
$(shell [ -d '$(kapi)' ] || mkdir -p '$(kapi)')
|
$(shell [ -d '$(kapi)' ] || mkdir -p '$(kapi)')
|
||||||
|
|
||||||
syscall := $(srctree)/$(src)/syscall.tbl
|
syscall := $(src)/syscall.tbl
|
||||||
syshdr := $(srctree)/$(src)/syscallhdr.sh
|
syshdr := $(srctree)/$(src)/syscallhdr.sh
|
||||||
systbl := $(srctree)/$(src)/syscalltbl.sh
|
systbl := $(srctree)/$(src)/syscalltbl.sh
|
||||||
|
|
||||||
@ -22,31 +22,31 @@ quiet_cmd_systbl = SYSTBL $@
|
|||||||
'$(systbl_offset_$(basetarget))'
|
'$(systbl_offset_$(basetarget))'
|
||||||
|
|
||||||
syshdr_abis_unistd_32 := common,nospu,32
|
syshdr_abis_unistd_32 := common,nospu,32
|
||||||
$(uapi)/unistd_32.h: $(syscall) $(syshdr)
|
$(uapi)/unistd_32.h: $(syscall) $(syshdr) FORCE
|
||||||
$(call if_changed,syshdr)
|
$(call if_changed,syshdr)
|
||||||
|
|
||||||
syshdr_abis_unistd_64 := common,nospu,64
|
syshdr_abis_unistd_64 := common,nospu,64
|
||||||
$(uapi)/unistd_64.h: $(syscall) $(syshdr)
|
$(uapi)/unistd_64.h: $(syscall) $(syshdr) FORCE
|
||||||
$(call if_changed,syshdr)
|
$(call if_changed,syshdr)
|
||||||
|
|
||||||
systbl_abis_syscall_table_32 := common,nospu,32
|
systbl_abis_syscall_table_32 := common,nospu,32
|
||||||
systbl_abi_syscall_table_32 := 32
|
systbl_abi_syscall_table_32 := 32
|
||||||
$(kapi)/syscall_table_32.h: $(syscall) $(systbl)
|
$(kapi)/syscall_table_32.h: $(syscall) $(systbl) FORCE
|
||||||
$(call if_changed,systbl)
|
$(call if_changed,systbl)
|
||||||
|
|
||||||
systbl_abis_syscall_table_64 := common,nospu,64
|
systbl_abis_syscall_table_64 := common,nospu,64
|
||||||
systbl_abi_syscall_table_64 := 64
|
systbl_abi_syscall_table_64 := 64
|
||||||
$(kapi)/syscall_table_64.h: $(syscall) $(systbl)
|
$(kapi)/syscall_table_64.h: $(syscall) $(systbl) FORCE
|
||||||
$(call if_changed,systbl)
|
$(call if_changed,systbl)
|
||||||
|
|
||||||
systbl_abis_syscall_table_c32 := common,nospu,32
|
systbl_abis_syscall_table_c32 := common,nospu,32
|
||||||
systbl_abi_syscall_table_c32 := c32
|
systbl_abi_syscall_table_c32 := c32
|
||||||
$(kapi)/syscall_table_c32.h: $(syscall) $(systbl)
|
$(kapi)/syscall_table_c32.h: $(syscall) $(systbl) FORCE
|
||||||
$(call if_changed,systbl)
|
$(call if_changed,systbl)
|
||||||
|
|
||||||
systbl_abis_syscall_table_spu := common,spu
|
systbl_abis_syscall_table_spu := common,spu
|
||||||
systbl_abi_syscall_table_spu := spu
|
systbl_abi_syscall_table_spu := spu
|
||||||
$(kapi)/syscall_table_spu.h: $(syscall) $(systbl)
|
$(kapi)/syscall_table_spu.h: $(syscall) $(systbl) FORCE
|
||||||
$(call if_changed,systbl)
|
$(call if_changed,systbl)
|
||||||
|
|
||||||
uapisyshdr-y += unistd_32.h unistd_64.h
|
uapisyshdr-y += unistd_32.h unistd_64.h
|
||||||
@ -55,9 +55,10 @@ kapisyshdr-y += syscall_table_32.h \
|
|||||||
syscall_table_c32.h \
|
syscall_table_c32.h \
|
||||||
syscall_table_spu.h
|
syscall_table_spu.h
|
||||||
|
|
||||||
targets += $(uapisyshdr-y) $(kapisyshdr-y)
|
uapisyshdr-y := $(addprefix $(uapi)/, $(uapisyshdr-y))
|
||||||
|
kapisyshdr-y := $(addprefix $(kapi)/, $(kapisyshdr-y))
|
||||||
|
targets += $(addprefix ../../../../, $(uapisyshdr-y) $(kapisyshdr-y))
|
||||||
|
|
||||||
PHONY += all
|
PHONY += all
|
||||||
all: $(addprefix $(uapi)/,$(uapisyshdr-y))
|
all: $(uapisyshdr-y) $(kapisyshdr-y)
|
||||||
all: $(addprefix $(kapi)/,$(kapisyshdr-y))
|
|
||||||
@:
|
@:
|
||||||
|
@ -31,7 +31,7 @@ obj-$(CONFIG_FUNCTION_ERROR_INJECTION) += error-inject.o
|
|||||||
# 64-bit linker creates .sfpr on demand for final link (vmlinux),
|
# 64-bit linker creates .sfpr on demand for final link (vmlinux),
|
||||||
# so it is only needed for modules, and only for older linkers which
|
# so it is only needed for modules, and only for older linkers which
|
||||||
# do not support --save-restore-funcs
|
# do not support --save-restore-funcs
|
||||||
ifeq ($(call ld-ifversion, -lt, 225000000, y),y)
|
ifeq ($(call ld-ifversion, -lt, 22500, y),y)
|
||||||
extra-$(CONFIG_PPC64) += crtsavres.o
|
extra-$(CONFIG_PPC64) += crtsavres.o
|
||||||
endif
|
endif
|
||||||
|
|
||||||
|
@ -5,7 +5,7 @@ uapi := arch/$(SRCARCH)/include/generated/uapi/asm
|
|||||||
_dummy := $(shell [ -d '$(uapi)' ] || mkdir -p '$(uapi)') \
|
_dummy := $(shell [ -d '$(uapi)' ] || mkdir -p '$(uapi)') \
|
||||||
$(shell [ -d '$(kapi)' ] || mkdir -p '$(kapi)')
|
$(shell [ -d '$(kapi)' ] || mkdir -p '$(kapi)')
|
||||||
|
|
||||||
syscall := $(srctree)/$(src)/syscall.tbl
|
syscall := $(src)/syscall.tbl
|
||||||
syshdr := $(srctree)/$(src)/syscallhdr.sh
|
syshdr := $(srctree)/$(src)/syscallhdr.sh
|
||||||
systbl := $(srctree)/$(src)/syscalltbl.sh
|
systbl := $(srctree)/$(src)/syscalltbl.sh
|
||||||
|
|
||||||
@ -21,18 +21,19 @@ quiet_cmd_systbl = SYSTBL $@
|
|||||||
'$(systbl_abi_$(basetarget))' \
|
'$(systbl_abi_$(basetarget))' \
|
||||||
'$(systbl_offset_$(basetarget))'
|
'$(systbl_offset_$(basetarget))'
|
||||||
|
|
||||||
$(uapi)/unistd_32.h: $(syscall) $(syshdr)
|
$(uapi)/unistd_32.h: $(syscall) $(syshdr) FORCE
|
||||||
$(call if_changed,syshdr)
|
$(call if_changed,syshdr)
|
||||||
|
|
||||||
$(kapi)/syscall_table.h: $(syscall) $(systbl)
|
$(kapi)/syscall_table.h: $(syscall) $(systbl) FORCE
|
||||||
$(call if_changed,systbl)
|
$(call if_changed,systbl)
|
||||||
|
|
||||||
uapisyshdr-y += unistd_32.h
|
uapisyshdr-y += unistd_32.h
|
||||||
kapisyshdr-y += syscall_table.h
|
kapisyshdr-y += syscall_table.h
|
||||||
|
|
||||||
targets += $(uapisyshdr-y) $(kapisyshdr-y)
|
uapisyshdr-y := $(addprefix $(uapi)/, $(uapisyshdr-y))
|
||||||
|
kapisyshdr-y := $(addprefix $(kapi)/, $(kapisyshdr-y))
|
||||||
|
targets += $(addprefix ../../../../, $(uapisyshdr-y) $(kapisyshdr-y))
|
||||||
|
|
||||||
PHONY += all
|
PHONY += all
|
||||||
all: $(addprefix $(uapi)/,$(uapisyshdr-y))
|
all: $(uapisyshdr-y) $(kapisyshdr-y)
|
||||||
all: $(addprefix $(kapi)/,$(kapisyshdr-y))
|
|
||||||
@:
|
@:
|
||||||
|
@ -5,7 +5,7 @@ uapi := arch/$(SRCARCH)/include/generated/uapi/asm
|
|||||||
_dummy := $(shell [ -d '$(uapi)' ] || mkdir -p '$(uapi)') \
|
_dummy := $(shell [ -d '$(uapi)' ] || mkdir -p '$(uapi)') \
|
||||||
$(shell [ -d '$(kapi)' ] || mkdir -p '$(kapi)')
|
$(shell [ -d '$(kapi)' ] || mkdir -p '$(kapi)')
|
||||||
|
|
||||||
syscall := $(srctree)/$(src)/syscall.tbl
|
syscall := $(src)/syscall.tbl
|
||||||
syshdr := $(srctree)/$(src)/syscallhdr.sh
|
syshdr := $(srctree)/$(src)/syscallhdr.sh
|
||||||
systbl := $(srctree)/$(src)/syscalltbl.sh
|
systbl := $(srctree)/$(src)/syscalltbl.sh
|
||||||
|
|
||||||
@ -22,24 +22,24 @@ quiet_cmd_systbl = SYSTBL $@
|
|||||||
'$(systbl_offset_$(basetarget))'
|
'$(systbl_offset_$(basetarget))'
|
||||||
|
|
||||||
syshdr_abis_unistd_32 := common,32
|
syshdr_abis_unistd_32 := common,32
|
||||||
$(uapi)/unistd_32.h: $(syscall) $(syshdr)
|
$(uapi)/unistd_32.h: $(syscall) $(syshdr) FORCE
|
||||||
$(call if_changed,syshdr)
|
$(call if_changed,syshdr)
|
||||||
|
|
||||||
syshdr_abis_unistd_64 := common,64
|
syshdr_abis_unistd_64 := common,64
|
||||||
$(uapi)/unistd_64.h: $(syscall) $(syshdr)
|
$(uapi)/unistd_64.h: $(syscall) $(syshdr) FORCE
|
||||||
$(call if_changed,syshdr)
|
$(call if_changed,syshdr)
|
||||||
|
|
||||||
systbl_abis_syscall_table_32 := common,32
|
systbl_abis_syscall_table_32 := common,32
|
||||||
$(kapi)/syscall_table_32.h: $(syscall) $(systbl)
|
$(kapi)/syscall_table_32.h: $(syscall) $(systbl) FORCE
|
||||||
$(call if_changed,systbl)
|
$(call if_changed,systbl)
|
||||||
|
|
||||||
systbl_abis_syscall_table_64 := common,64
|
systbl_abis_syscall_table_64 := common,64
|
||||||
$(kapi)/syscall_table_64.h: $(syscall) $(systbl)
|
$(kapi)/syscall_table_64.h: $(syscall) $(systbl) FORCE
|
||||||
$(call if_changed,systbl)
|
$(call if_changed,systbl)
|
||||||
|
|
||||||
systbl_abis_syscall_table_c32 := common,32
|
systbl_abis_syscall_table_c32 := common,32
|
||||||
systbl_abi_syscall_table_c32 := c32
|
systbl_abi_syscall_table_c32 := c32
|
||||||
$(kapi)/syscall_table_c32.h: $(syscall) $(systbl)
|
$(kapi)/syscall_table_c32.h: $(syscall) $(systbl) FORCE
|
||||||
$(call if_changed,systbl)
|
$(call if_changed,systbl)
|
||||||
|
|
||||||
uapisyshdr-y += unistd_32.h unistd_64.h
|
uapisyshdr-y += unistd_32.h unistd_64.h
|
||||||
@ -47,9 +47,10 @@ kapisyshdr-y += syscall_table_32.h \
|
|||||||
syscall_table_64.h \
|
syscall_table_64.h \
|
||||||
syscall_table_c32.h
|
syscall_table_c32.h
|
||||||
|
|
||||||
targets += $(uapisyshdr-y) $(kapisyshdr-y)
|
uapisyshdr-y := $(addprefix $(uapi)/, $(uapisyshdr-y))
|
||||||
|
kapisyshdr-y := $(addprefix $(kapi)/, $(kapisyshdr-y))
|
||||||
|
targets += $(addprefix ../../../../, $(uapisyshdr-y) $(kapisyshdr-y))
|
||||||
|
|
||||||
PHONY += all
|
PHONY += all
|
||||||
all: $(addprefix $(uapi)/,$(uapisyshdr-y))
|
all: $(uapisyshdr-y) $(kapisyshdr-y)
|
||||||
all: $(addprefix $(kapi)/,$(kapisyshdr-y))
|
|
||||||
@:
|
@:
|
||||||
|
@ -6,8 +6,8 @@ uapi := arch/$(SRCARCH)/include/generated/uapi/asm
|
|||||||
_dummy := $(shell [ -d '$(out)' ] || mkdir -p '$(out)') \
|
_dummy := $(shell [ -d '$(out)' ] || mkdir -p '$(out)') \
|
||||||
$(shell [ -d '$(uapi)' ] || mkdir -p '$(uapi)')
|
$(shell [ -d '$(uapi)' ] || mkdir -p '$(uapi)')
|
||||||
|
|
||||||
syscall32 := $(srctree)/$(src)/syscall_32.tbl
|
syscall32 := $(src)/syscall_32.tbl
|
||||||
syscall64 := $(srctree)/$(src)/syscall_64.tbl
|
syscall64 := $(src)/syscall_64.tbl
|
||||||
|
|
||||||
syshdr := $(srctree)/$(src)/syscallhdr.sh
|
syshdr := $(srctree)/$(src)/syscallhdr.sh
|
||||||
systbl := $(srctree)/$(src)/syscalltbl.sh
|
systbl := $(srctree)/$(src)/syscalltbl.sh
|
||||||
@ -21,37 +21,37 @@ quiet_cmd_systbl = SYSTBL $@
|
|||||||
cmd_systbl = $(CONFIG_SHELL) '$(systbl)' $< $@
|
cmd_systbl = $(CONFIG_SHELL) '$(systbl)' $< $@
|
||||||
|
|
||||||
quiet_cmd_hypercalls = HYPERCALLS $@
|
quiet_cmd_hypercalls = HYPERCALLS $@
|
||||||
cmd_hypercalls = $(CONFIG_SHELL) '$<' $@ $(filter-out $<,$^)
|
cmd_hypercalls = $(CONFIG_SHELL) '$<' $@ $(filter-out $<, $(real-prereqs))
|
||||||
|
|
||||||
syshdr_abi_unistd_32 := i386
|
syshdr_abi_unistd_32 := i386
|
||||||
$(uapi)/unistd_32.h: $(syscall32) $(syshdr)
|
$(uapi)/unistd_32.h: $(syscall32) $(syshdr) FORCE
|
||||||
$(call if_changed,syshdr)
|
$(call if_changed,syshdr)
|
||||||
|
|
||||||
syshdr_abi_unistd_32_ia32 := i386
|
syshdr_abi_unistd_32_ia32 := i386
|
||||||
syshdr_pfx_unistd_32_ia32 := ia32_
|
syshdr_pfx_unistd_32_ia32 := ia32_
|
||||||
$(out)/unistd_32_ia32.h: $(syscall32) $(syshdr)
|
$(out)/unistd_32_ia32.h: $(syscall32) $(syshdr) FORCE
|
||||||
$(call if_changed,syshdr)
|
$(call if_changed,syshdr)
|
||||||
|
|
||||||
syshdr_abi_unistd_x32 := common,x32
|
syshdr_abi_unistd_x32 := common,x32
|
||||||
syshdr_offset_unistd_x32 := __X32_SYSCALL_BIT
|
syshdr_offset_unistd_x32 := __X32_SYSCALL_BIT
|
||||||
$(uapi)/unistd_x32.h: $(syscall64) $(syshdr)
|
$(uapi)/unistd_x32.h: $(syscall64) $(syshdr) FORCE
|
||||||
$(call if_changed,syshdr)
|
$(call if_changed,syshdr)
|
||||||
|
|
||||||
syshdr_abi_unistd_64 := common,64
|
syshdr_abi_unistd_64 := common,64
|
||||||
$(uapi)/unistd_64.h: $(syscall64) $(syshdr)
|
$(uapi)/unistd_64.h: $(syscall64) $(syshdr) FORCE
|
||||||
$(call if_changed,syshdr)
|
$(call if_changed,syshdr)
|
||||||
|
|
||||||
syshdr_abi_unistd_64_x32 := x32
|
syshdr_abi_unistd_64_x32 := x32
|
||||||
syshdr_pfx_unistd_64_x32 := x32_
|
syshdr_pfx_unistd_64_x32 := x32_
|
||||||
$(out)/unistd_64_x32.h: $(syscall64) $(syshdr)
|
$(out)/unistd_64_x32.h: $(syscall64) $(syshdr) FORCE
|
||||||
$(call if_changed,syshdr)
|
$(call if_changed,syshdr)
|
||||||
|
|
||||||
$(out)/syscalls_32.h: $(syscall32) $(systbl)
|
$(out)/syscalls_32.h: $(syscall32) $(systbl) FORCE
|
||||||
$(call if_changed,systbl)
|
$(call if_changed,systbl)
|
||||||
$(out)/syscalls_64.h: $(syscall64) $(systbl)
|
$(out)/syscalls_64.h: $(syscall64) $(systbl) FORCE
|
||||||
$(call if_changed,systbl)
|
$(call if_changed,systbl)
|
||||||
|
|
||||||
$(out)/xen-hypercalls.h: $(srctree)/scripts/xen-hypercalls.sh
|
$(out)/xen-hypercalls.h: $(srctree)/scripts/xen-hypercalls.sh FORCE
|
||||||
$(call if_changed,hypercalls)
|
$(call if_changed,hypercalls)
|
||||||
|
|
||||||
$(out)/xen-hypercalls.h: $(srctree)/include/xen/interface/xen*.h
|
$(out)/xen-hypercalls.h: $(srctree)/include/xen/interface/xen*.h
|
||||||
@ -62,9 +62,10 @@ syshdr-$(CONFIG_X86_64) += unistd_32_ia32.h unistd_64_x32.h
|
|||||||
syshdr-$(CONFIG_X86_64) += syscalls_64.h
|
syshdr-$(CONFIG_X86_64) += syscalls_64.h
|
||||||
syshdr-$(CONFIG_XEN) += xen-hypercalls.h
|
syshdr-$(CONFIG_XEN) += xen-hypercalls.h
|
||||||
|
|
||||||
targets += $(uapisyshdr-y) $(syshdr-y)
|
uapisyshdr-y := $(addprefix $(uapi)/, $(uapisyshdr-y))
|
||||||
|
syshdr-y := $(addprefix $(out)/, $(syshdr-y))
|
||||||
|
targets += $(addprefix ../../../../, $(uapisyshdr-y) $(syshdr-y))
|
||||||
|
|
||||||
PHONY += all
|
PHONY += all
|
||||||
all: $(addprefix $(uapi)/,$(uapisyshdr-y))
|
all: $(uapisyshdr-y) $(syshdr-y)
|
||||||
all: $(addprefix $(out)/,$(syshdr-y))
|
|
||||||
@:
|
@:
|
||||||
|
@ -5,7 +5,7 @@ uapi := arch/$(SRCARCH)/include/generated/uapi/asm
|
|||||||
_dummy := $(shell [ -d '$(uapi)' ] || mkdir -p '$(uapi)') \
|
_dummy := $(shell [ -d '$(uapi)' ] || mkdir -p '$(uapi)') \
|
||||||
$(shell [ -d '$(kapi)' ] || mkdir -p '$(kapi)')
|
$(shell [ -d '$(kapi)' ] || mkdir -p '$(kapi)')
|
||||||
|
|
||||||
syscall := $(srctree)/$(src)/syscall.tbl
|
syscall := $(src)/syscall.tbl
|
||||||
syshdr := $(srctree)/$(src)/syscallhdr.sh
|
syshdr := $(srctree)/$(src)/syscallhdr.sh
|
||||||
systbl := $(srctree)/$(src)/syscalltbl.sh
|
systbl := $(srctree)/$(src)/syscalltbl.sh
|
||||||
|
|
||||||
@ -21,18 +21,19 @@ quiet_cmd_systbl = SYSTBL $@
|
|||||||
'$(systbl_abi_$(basetarget))' \
|
'$(systbl_abi_$(basetarget))' \
|
||||||
'$(systbl_offset_$(basetarget))'
|
'$(systbl_offset_$(basetarget))'
|
||||||
|
|
||||||
$(uapi)/unistd_32.h: $(syscall) $(syshdr)
|
$(uapi)/unistd_32.h: $(syscall) $(syshdr) FORCE
|
||||||
$(call if_changed,syshdr)
|
$(call if_changed,syshdr)
|
||||||
|
|
||||||
$(kapi)/syscall_table.h: $(syscall) $(systbl)
|
$(kapi)/syscall_table.h: $(syscall) $(systbl) FORCE
|
||||||
$(call if_changed,systbl)
|
$(call if_changed,systbl)
|
||||||
|
|
||||||
uapisyshdr-y += unistd_32.h
|
uapisyshdr-y += unistd_32.h
|
||||||
kapisyshdr-y += syscall_table.h
|
kapisyshdr-y += syscall_table.h
|
||||||
|
|
||||||
targets += $(uapisyshdr-y) $(kapisyshdr-y)
|
uapisyshdr-y := $(addprefix $(uapi)/, $(uapisyshdr-y))
|
||||||
|
kapisyshdr-y := $(addprefix $(kapi)/, $(kapisyshdr-y))
|
||||||
|
targets += $(addprefix ../../../../, $(uapisyshdr-y) $(kapisyshdr-y))
|
||||||
|
|
||||||
PHONY += all
|
PHONY += all
|
||||||
all: $(addprefix $(uapi)/,$(uapisyshdr-y))
|
all: $(uapisyshdr-y) $(kapisyshdr-y)
|
||||||
all: $(addprefix $(kapi)/,$(kapisyshdr-y))
|
|
||||||
@:
|
@:
|
||||||
|
@ -298,7 +298,7 @@ obj-$(CONFIG_DRM_I915_GVT_KVMGT) += gvt/kvmgt.o
|
|||||||
no-header-test := \
|
no-header-test := \
|
||||||
display/intel_vbt_defs.h
|
display/intel_vbt_defs.h
|
||||||
|
|
||||||
extra-$(CONFIG_DRM_I915_WERROR) += \
|
always-$(CONFIG_DRM_I915_WERROR) += \
|
||||||
$(patsubst %.h,%.hdrtest, $(filter-out $(no-header-test), \
|
$(patsubst %.h,%.hdrtest, $(filter-out $(no-header-test), \
|
||||||
$(shell cd $(srctree)/$(src) && find * -name '*.h')))
|
$(shell cd $(srctree)/$(src) && find * -name '*.h')))
|
||||||
|
|
||||||
|
@ -237,8 +237,8 @@ static void mlx5_set_driver_version(struct mlx5_core_dev *dev)
|
|||||||
remaining_size = max_t(int, 0, driver_ver_sz - strlen(string));
|
remaining_size = max_t(int, 0, driver_ver_sz - strlen(string));
|
||||||
|
|
||||||
snprintf(string + strlen(string), remaining_size, "%u.%u.%u",
|
snprintf(string + strlen(string), remaining_size, "%u.%u.%u",
|
||||||
(u8)((LINUX_VERSION_CODE >> 16) & 0xff), (u8)((LINUX_VERSION_CODE >> 8) & 0xff),
|
LINUX_VERSION_MAJOR, LINUX_VERSION_PATCHLEVEL,
|
||||||
(u16)(LINUX_VERSION_CODE & 0xffff));
|
LINUX_VERSION_SUBLEVEL);
|
||||||
|
|
||||||
/*Send the command*/
|
/*Send the command*/
|
||||||
MLX5_SET(set_driver_version_in, in, opcode,
|
MLX5_SET(set_driver_version_in, in, opcode,
|
||||||
|
@ -111,8 +111,8 @@ DECLARE_WAIT_QUEUE_HEAD(usb_kill_urb_queue);
|
|||||||
*/
|
*/
|
||||||
|
|
||||||
/*-------------------------------------------------------------------------*/
|
/*-------------------------------------------------------------------------*/
|
||||||
#define KERNEL_REL bin2bcd(((LINUX_VERSION_CODE >> 16) & 0x0ff))
|
#define KERNEL_REL bin2bcd(LINUX_VERSION_MAJOR)
|
||||||
#define KERNEL_VER bin2bcd(((LINUX_VERSION_CODE >> 8) & 0x0ff))
|
#define KERNEL_VER bin2bcd(LINUX_VERSION_PATCHLEVEL)
|
||||||
|
|
||||||
/* usb 3.1 root hub device descriptor */
|
/* usb 3.1 root hub device descriptor */
|
||||||
static const u8 usb31_rh_dev_descriptor[18] = {
|
static const u8 usb31_rh_dev_descriptor[18] = {
|
||||||
|
@ -46,8 +46,8 @@
|
|||||||
* - Make vid/did overridable
|
* - Make vid/did overridable
|
||||||
* - make it look like usb1 if usb1 mode forced
|
* - make it look like usb1 if usb1 mode forced
|
||||||
*/
|
*/
|
||||||
#define KERNEL_REL bin2bcd(((LINUX_VERSION_CODE >> 16) & 0x0ff))
|
#define KERNEL_REL bin2bcd(LINUX_VERSION_MAJOR)
|
||||||
#define KERNEL_VER bin2bcd(((LINUX_VERSION_CODE >> 8) & 0x0ff))
|
#define KERNEL_VER bin2bcd(LINUX_VERSION_PATCHLEVEL)
|
||||||
|
|
||||||
enum {
|
enum {
|
||||||
AST_VHUB_STR_INDEX_MAX = 4,
|
AST_VHUB_STR_INDEX_MAX = 4,
|
||||||
|
@ -803,8 +803,13 @@
|
|||||||
/* DWARF 4 */ \
|
/* DWARF 4 */ \
|
||||||
.debug_types 0 : { *(.debug_types) } \
|
.debug_types 0 : { *(.debug_types) } \
|
||||||
/* DWARF 5 */ \
|
/* DWARF 5 */ \
|
||||||
|
.debug_addr 0 : { *(.debug_addr) } \
|
||||||
|
.debug_line_str 0 : { *(.debug_line_str) } \
|
||||||
|
.debug_loclists 0 : { *(.debug_loclists) } \
|
||||||
.debug_macro 0 : { *(.debug_macro) } \
|
.debug_macro 0 : { *(.debug_macro) } \
|
||||||
.debug_addr 0 : { *(.debug_addr) }
|
.debug_names 0 : { *(.debug_names) } \
|
||||||
|
.debug_rnglists 0 : { *(.debug_rnglists) } \
|
||||||
|
.debug_str_offsets 0 : { *(.debug_str_offsets) }
|
||||||
|
|
||||||
/* Stabs debugging sections. */
|
/* Stabs debugging sections. */
|
||||||
#define STABS_DEBUG \
|
#define STABS_DEBUG \
|
||||||
|
@ -3,16 +3,6 @@
|
|||||||
#error "Please don't include <linux/compiler-clang.h> directly, include <linux/compiler.h> instead."
|
#error "Please don't include <linux/compiler-clang.h> directly, include <linux/compiler.h> instead."
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#define CLANG_VERSION (__clang_major__ * 10000 \
|
|
||||||
+ __clang_minor__ * 100 \
|
|
||||||
+ __clang_patchlevel__)
|
|
||||||
|
|
||||||
#if CLANG_VERSION < 100001
|
|
||||||
#ifndef __BPF_TRACING__
|
|
||||||
# error Sorry, your version of Clang is too old - please use 10.0.1 or newer.
|
|
||||||
#endif
|
|
||||||
#endif
|
|
||||||
|
|
||||||
/* Compiler specific definitions for Clang compiler */
|
/* Compiler specific definitions for Clang compiler */
|
||||||
|
|
||||||
/* same as gcc, this was present in clang-2.6 so we can assume it works
|
/* same as gcc, this was present in clang-2.6 so we can assume it works
|
||||||
|
@ -10,17 +10,6 @@
|
|||||||
+ __GNUC_MINOR__ * 100 \
|
+ __GNUC_MINOR__ * 100 \
|
||||||
+ __GNUC_PATCHLEVEL__)
|
+ __GNUC_PATCHLEVEL__)
|
||||||
|
|
||||||
/* https://gcc.gnu.org/bugzilla/show_bug.cgi?id=58145 */
|
|
||||||
#if GCC_VERSION < 40900
|
|
||||||
# error Sorry, your version of GCC is too old - please use 4.9 or newer.
|
|
||||||
#elif defined(CONFIG_ARM64) && GCC_VERSION < 50100
|
|
||||||
/*
|
|
||||||
* https://gcc.gnu.org/bugzilla/show_bug.cgi?id=63293
|
|
||||||
* https://lore.kernel.org/r/20210107111841.GN1551@shell.armlinux.org.uk
|
|
||||||
*/
|
|
||||||
# error Sorry, your version of GCC is too old - please use 5.1 or newer.
|
|
||||||
#endif
|
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* This macro obfuscates arithmetic on a variable address so that gcc
|
* This macro obfuscates arithmetic on a variable address so that gcc
|
||||||
* shouldn't recognize the original var, and make assumptions about it.
|
* shouldn't recognize the original var, and make assumptions about it.
|
||||||
|
@ -575,8 +575,8 @@ static inline u16 get_default_bcdDevice(void)
|
|||||||
{
|
{
|
||||||
u16 bcdDevice;
|
u16 bcdDevice;
|
||||||
|
|
||||||
bcdDevice = bin2bcd((LINUX_VERSION_CODE >> 16 & 0xff)) << 8;
|
bcdDevice = bin2bcd(LINUX_VERSION_MAJOR) << 8;
|
||||||
bcdDevice |= bin2bcd((LINUX_VERSION_CODE >> 8 & 0xff));
|
bcdDevice |= bin2bcd(LINUX_VERSION_PATCHLEVEL);
|
||||||
return bcdDevice;
|
return bcdDevice;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
30
init/Kconfig
30
init/Kconfig
@ -26,30 +26,36 @@ config CC_VERSION_TEXT
|
|||||||
and then every file will be rebuilt.
|
and then every file will be rebuilt.
|
||||||
|
|
||||||
config CC_IS_GCC
|
config CC_IS_GCC
|
||||||
def_bool $(success,echo "$(CC_VERSION_TEXT)" | grep -q gcc)
|
def_bool $(success,test "$(cc-name)" = GCC)
|
||||||
|
|
||||||
config GCC_VERSION
|
config GCC_VERSION
|
||||||
int
|
int
|
||||||
default $(shell,$(srctree)/scripts/gcc-version.sh $(CC)) if CC_IS_GCC
|
default $(cc-version) if CC_IS_GCC
|
||||||
default 0
|
default 0
|
||||||
|
|
||||||
config LD_VERSION
|
|
||||||
int
|
|
||||||
default $(shell,$(LD) --version | $(srctree)/scripts/ld-version.sh)
|
|
||||||
|
|
||||||
config CC_IS_CLANG
|
config CC_IS_CLANG
|
||||||
def_bool $(success,echo "$(CC_VERSION_TEXT)" | grep -q clang)
|
def_bool $(success,test "$(cc-name)" = Clang)
|
||||||
|
|
||||||
config LD_IS_LLD
|
|
||||||
def_bool $(success,$(LD) -v | head -n 1 | grep -q LLD)
|
|
||||||
|
|
||||||
config CLANG_VERSION
|
config CLANG_VERSION
|
||||||
int
|
int
|
||||||
default $(shell,$(srctree)/scripts/clang-version.sh $(CC))
|
default $(cc-version) if CC_IS_CLANG
|
||||||
|
default 0
|
||||||
|
|
||||||
|
config LD_IS_BFD
|
||||||
|
def_bool $(success,test "$(ld-name)" = BFD)
|
||||||
|
|
||||||
|
config LD_VERSION
|
||||||
|
int
|
||||||
|
default $(ld-version) if LD_IS_BFD
|
||||||
|
default 0
|
||||||
|
|
||||||
|
config LD_IS_LLD
|
||||||
|
def_bool $(success,test "$(ld-name)" = LLD)
|
||||||
|
|
||||||
config LLD_VERSION
|
config LLD_VERSION
|
||||||
int
|
int
|
||||||
default $(shell,$(srctree)/scripts/lld-version.sh $(LD))
|
default $(ld-version) if LD_IS_LLD
|
||||||
|
default 0
|
||||||
|
|
||||||
config CC_CAN_LINK
|
config CC_CAN_LINK
|
||||||
bool
|
bool
|
||||||
|
@ -1242,7 +1242,7 @@ static int override_release(char __user *release, size_t len)
|
|||||||
break;
|
break;
|
||||||
rest++;
|
rest++;
|
||||||
}
|
}
|
||||||
v = ((LINUX_VERSION_CODE >> 8) & 0xff) + 60;
|
v = LINUX_VERSION_PATCHLEVEL + 60;
|
||||||
copy = clamp_t(size_t, len, 1, sizeof(buf));
|
copy = clamp_t(size_t, len, 1, sizeof(buf));
|
||||||
copy = scnprintf(buf, copy, "2.6.%u%s", v, rest);
|
copy = scnprintf(buf, copy, "2.6.%u%s", v, rest);
|
||||||
ret = copy_to_user(release, buf, copy + 1);
|
ret = copy_to_user(release, buf, copy + 1);
|
||||||
|
@ -256,14 +256,51 @@ config DEBUG_INFO_SPLIT
|
|||||||
to know about the .dwo files and include them.
|
to know about the .dwo files and include them.
|
||||||
Incompatible with older versions of ccache.
|
Incompatible with older versions of ccache.
|
||||||
|
|
||||||
config DEBUG_INFO_DWARF4
|
choice
|
||||||
bool "Generate dwarf4 debuginfo"
|
prompt "DWARF version"
|
||||||
depends on $(cc-option,-gdwarf-4)
|
|
||||||
help
|
help
|
||||||
Generate dwarf4 debug info. This requires recent versions
|
Which version of DWARF debug info to emit.
|
||||||
of gcc and gdb. It makes the debug information larger.
|
|
||||||
But it significantly improves the success of resolving
|
config DEBUG_INFO_DWARF_TOOLCHAIN_DEFAULT
|
||||||
variables in gdb on optimized code.
|
bool "Rely on the toolchain's implicit default DWARF version"
|
||||||
|
help
|
||||||
|
The implicit default version of DWARF debug info produced by a
|
||||||
|
toolchain changes over time.
|
||||||
|
|
||||||
|
This can break consumers of the debug info that haven't upgraded to
|
||||||
|
support newer revisions, and prevent testing newer versions, but
|
||||||
|
those should be less common scenarios.
|
||||||
|
|
||||||
|
If unsure, say Y.
|
||||||
|
|
||||||
|
config DEBUG_INFO_DWARF4
|
||||||
|
bool "Generate DWARF Version 4 debuginfo"
|
||||||
|
help
|
||||||
|
Generate DWARF v4 debug info. This requires gcc 4.5+ and gdb 7.0+.
|
||||||
|
|
||||||
|
If you have consumers of DWARF debug info that are not ready for
|
||||||
|
newer revisions of DWARF, you may wish to choose this or have your
|
||||||
|
config select this.
|
||||||
|
|
||||||
|
config DEBUG_INFO_DWARF5
|
||||||
|
bool "Generate DWARF Version 5 debuginfo"
|
||||||
|
depends on GCC_VERSION >= 50000 || CC_IS_CLANG
|
||||||
|
depends on CC_IS_GCC || $(success,$(srctree)/scripts/test_dwarf5_support.sh $(CC) $(CLANG_FLAGS))
|
||||||
|
depends on !DEBUG_INFO_BTF
|
||||||
|
help
|
||||||
|
Generate DWARF v5 debug info. Requires binutils 2.35.2, gcc 5.0+ (gcc
|
||||||
|
5.0+ accepts the -gdwarf-5 flag but only had partial support for some
|
||||||
|
draft features until 7.0), and gdb 8.0+.
|
||||||
|
|
||||||
|
Changes to the structure of debug info in Version 5 allow for around
|
||||||
|
15-18% savings in resulting image and debug info section sizes as
|
||||||
|
compared to DWARF Version 4. DWARF Version 5 standardizes previous
|
||||||
|
extensions such as accelerators for symbol indexing and the format
|
||||||
|
for fission (.dwo/.dwp) files. Users may not want to select this
|
||||||
|
config if they rely on tooling that has not yet been updated to
|
||||||
|
support DWARF Version 5.
|
||||||
|
|
||||||
|
endchoice # "DWARF version"
|
||||||
|
|
||||||
config DEBUG_INFO_BTF
|
config DEBUG_INFO_BTF
|
||||||
bool "Generate BTF typeinfo"
|
bool "Generate BTF typeinfo"
|
||||||
|
@ -141,13 +141,9 @@ cc-ifversion = $(shell [ $(CONFIG_GCC_VERSION)0 $(1) $(2)000 ] && echo $(3) || e
|
|||||||
# Usage: KBUILD_LDFLAGS += $(call ld-option, -X, -Y)
|
# Usage: KBUILD_LDFLAGS += $(call ld-option, -X, -Y)
|
||||||
ld-option = $(call try-run, $(LD) $(KBUILD_LDFLAGS) $(1) -v,$(1),$(2),$(3))
|
ld-option = $(call try-run, $(LD) $(KBUILD_LDFLAGS) $(1) -v,$(1),$(2),$(3))
|
||||||
|
|
||||||
# ld-version
|
|
||||||
# Note this is mainly for HJ Lu's 3 number binutil versions
|
|
||||||
ld-version = $(shell $(LD) --version | $(srctree)/scripts/ld-version.sh)
|
|
||||||
|
|
||||||
# ld-ifversion
|
# ld-ifversion
|
||||||
# Usage: $(call ld-ifversion, -ge, 22252, y)
|
# Usage: $(call ld-ifversion, -ge, 22252, y)
|
||||||
ld-ifversion = $(shell [ $(ld-version) $(1) $(2) ] && echo $(3) || echo $(4))
|
ld-ifversion = $(shell [ $(CONFIG_LD_VERSION)0 $(1) $(2)0 ] && echo $(3) || echo $(4))
|
||||||
|
|
||||||
######
|
######
|
||||||
|
|
||||||
|
@ -39,8 +39,17 @@ as-instr = $(success,printf "%b\n" "$(1)" | $(CC) $(CLANG_FLAGS) -c -x assembler
|
|||||||
$(error-if,$(failure,command -v $(CC)),compiler '$(CC)' not found)
|
$(error-if,$(failure,command -v $(CC)),compiler '$(CC)' not found)
|
||||||
$(error-if,$(failure,command -v $(LD)),linker '$(LD)' not found)
|
$(error-if,$(failure,command -v $(LD)),linker '$(LD)' not found)
|
||||||
|
|
||||||
# Fail if the linker is gold as it's not capable of linking the kernel proper
|
# Get the compiler name, version, and error out if it is not supported.
|
||||||
$(error-if,$(success, $(LD) -v | grep -q gold), gold linker '$(LD)' not supported)
|
cc-info := $(shell,$(srctree)/scripts/cc-version.sh $(CC))
|
||||||
|
$(error-if,$(success,test -z "$(cc-info)"),Sorry$(comma) this compiler is not supported.)
|
||||||
|
cc-name := $(shell,set -- $(cc-info) && echo $1)
|
||||||
|
cc-version := $(shell,set -- $(cc-info) && echo $2)
|
||||||
|
|
||||||
|
# Get the linker name, version, and error out if it is not supported.
|
||||||
|
ld-info := $(shell,$(srctree)/scripts/ld-version.sh $(LD))
|
||||||
|
$(error-if,$(success,test -z "$(ld-info)"),Sorry$(comma) this linker is not supported.)
|
||||||
|
ld-name := $(shell,set -- $(ld-info) && echo $1)
|
||||||
|
ld-version := $(shell,set -- $(ld-info) && echo $2)
|
||||||
|
|
||||||
# machine bit flags
|
# machine bit flags
|
||||||
# $(m32-flag): -m32 if the compiler supports it, or an empty string otherwise.
|
# $(m32-flag): -m32 if the compiler supports it, or an empty string otherwise.
|
||||||
|
@ -15,7 +15,6 @@ obj-y :=
|
|||||||
obj-m :=
|
obj-m :=
|
||||||
lib-y :=
|
lib-y :=
|
||||||
lib-m :=
|
lib-m :=
|
||||||
always :=
|
|
||||||
always-y :=
|
always-y :=
|
||||||
always-m :=
|
always-m :=
|
||||||
targets :=
|
targets :=
|
||||||
|
@ -34,9 +34,6 @@ __clean-files := \
|
|||||||
$(hostprogs-always-y) $(hostprogs-always-m) $(hostprogs-always-) \
|
$(hostprogs-always-y) $(hostprogs-always-m) $(hostprogs-always-) \
|
||||||
$(userprogs-always-y) $(userprogs-always-m) $(userprogs-always-)
|
$(userprogs-always-y) $(userprogs-always-m) $(userprogs-always-)
|
||||||
|
|
||||||
# deprecated
|
|
||||||
__clean-files += $(always) $(hostprogs-y) $(hostprogs-m) $(hostprogs-)
|
|
||||||
|
|
||||||
__clean-files := $(filter-out $(no-clean-files), $(__clean-files))
|
__clean-files := $(filter-out $(no-clean-files), $(__clean-files))
|
||||||
|
|
||||||
# clean-files is given relative to the current directory, unless it
|
# clean-files is given relative to the current directory, unless it
|
||||||
|
@ -4,18 +4,6 @@ asflags-y += $(EXTRA_AFLAGS)
|
|||||||
ccflags-y += $(EXTRA_CFLAGS)
|
ccflags-y += $(EXTRA_CFLAGS)
|
||||||
cppflags-y += $(EXTRA_CPPFLAGS)
|
cppflags-y += $(EXTRA_CPPFLAGS)
|
||||||
ldflags-y += $(EXTRA_LDFLAGS)
|
ldflags-y += $(EXTRA_LDFLAGS)
|
||||||
ifneq ($(always),)
|
|
||||||
$(warning 'always' is deprecated. Please use 'always-y' instead)
|
|
||||||
always-y += $(always)
|
|
||||||
endif
|
|
||||||
ifneq ($(hostprogs-y),)
|
|
||||||
$(warning 'hostprogs-y' is deprecated. Please use 'hostprogs' instead)
|
|
||||||
hostprogs += $(hostprogs-y)
|
|
||||||
endif
|
|
||||||
ifneq ($(hostprogs-m),)
|
|
||||||
$(warning 'hostprogs-m' is deprecated. Please use 'hostprogs' instead)
|
|
||||||
hostprogs += $(hostprogs-m)
|
|
||||||
endif
|
|
||||||
|
|
||||||
# flags that take effect in current and sub directories
|
# flags that take effect in current and sub directories
|
||||||
KBUILD_AFLAGS += $(subdir-asflags-y)
|
KBUILD_AFLAGS += $(subdir-asflags-y)
|
||||||
@ -56,15 +44,19 @@ else
|
|||||||
obj-y := $(filter-out %/, $(obj-y))
|
obj-y := $(filter-out %/, $(obj-y))
|
||||||
endif
|
endif
|
||||||
|
|
||||||
|
# Expand $(foo-objs) $(foo-y) by calling $(call suffix-search,foo.o,-objs -y)
|
||||||
|
suffix-search = $(foreach s,$(2),$($(1:.o=$s)))
|
||||||
# If $(foo-objs), $(foo-y), $(foo-m), or $(foo-) exists, foo.o is a composite object
|
# If $(foo-objs), $(foo-y), $(foo-m), or $(foo-) exists, foo.o is a composite object
|
||||||
multi-used-y := $(sort $(foreach m,$(obj-y), $(if $(strip $($(m:.o=-objs)) $($(m:.o=-y)) $($(m:.o=-))), $(m))))
|
multi-search = $(sort $(foreach m,$(1), $(if $(strip $(call suffix-search,$(m),$(2) -)), $(m))))
|
||||||
multi-used-m := $(sort $(foreach m,$(obj-m), $(if $(strip $($(m:.o=-objs)) $($(m:.o=-y)) $($(m:.o=-m)) $($(m:.o=-))), $(m))))
|
multi-used-y := $(call multi-search,$(obj-y),-objs -y)
|
||||||
|
multi-used-m := $(call multi-search,$(obj-m),-objs -y -m)
|
||||||
multi-used := $(multi-used-y) $(multi-used-m)
|
multi-used := $(multi-used-y) $(multi-used-m)
|
||||||
|
|
||||||
# Replace multi-part objects by their individual parts,
|
# Replace multi-part objects by their individual parts,
|
||||||
# including built-in.a from subdirectories
|
# including built-in.a from subdirectories
|
||||||
real-obj-y := $(foreach m, $(obj-y), $(if $(strip $($(m:.o=-objs)) $($(m:.o=-y)) $($(m:.o=-))),$($(m:.o=-objs)) $($(m:.o=-y)),$(m)))
|
real-search = $(foreach m,$(1), $(if $(strip $(call suffix-search,$(m),$(2) -)),$(call suffix-search,$(m),$(2)),$(m)))
|
||||||
real-obj-m := $(foreach m, $(obj-m), $(if $(strip $($(m:.o=-objs)) $($(m:.o=-y)) $($(m:.o=-m)) $($(m:.o=-))),$($(m:.o=-objs)) $($(m:.o=-y)) $($(m:.o=-m)),$(m)))
|
real-obj-y := $(call real-search, $(obj-y),-objs -y)
|
||||||
|
real-obj-m := $(call real-search, $(obj-m),-objs -y -m)
|
||||||
|
|
||||||
always-y += $(always-m)
|
always-y += $(always-m)
|
||||||
|
|
||||||
@ -81,14 +73,14 @@ always-y += $(userprogs-always-y) $(userprogs-always-m)
|
|||||||
|
|
||||||
# DTB
|
# DTB
|
||||||
# If CONFIG_OF_ALL_DTBS is enabled, all DT blobs are built
|
# If CONFIG_OF_ALL_DTBS is enabled, all DT blobs are built
|
||||||
extra-y += $(dtb-y)
|
always-y += $(dtb-y)
|
||||||
extra-$(CONFIG_OF_ALL_DTBS) += $(dtb-)
|
always-$(CONFIG_OF_ALL_DTBS) += $(dtb-)
|
||||||
|
|
||||||
ifneq ($(CHECK_DTBS),)
|
ifneq ($(CHECK_DTBS),)
|
||||||
extra-y += $(patsubst %.dtb,%.dt.yaml, $(dtb-y))
|
always-y += $(patsubst %.dtb,%.dt.yaml, $(dtb-y))
|
||||||
extra-y += $(patsubst %.dtbo,%.dt.yaml, $(dtb-y))
|
always-y += $(patsubst %.dtbo,%.dt.yaml, $(dtb-y))
|
||||||
extra-$(CONFIG_OF_ALL_DTBS) += $(patsubst %.dtb,%.dt.yaml, $(dtb-))
|
always-$(CONFIG_OF_ALL_DTBS) += $(patsubst %.dtb,%.dt.yaml, $(dtb-))
|
||||||
extra-$(CONFIG_OF_ALL_DTBS) += $(patsubst %.dtbo,%.dt.yaml, $(dtb-))
|
always-$(CONFIG_OF_ALL_DTBS) += $(patsubst %.dtbo,%.dt.yaml, $(dtb-))
|
||||||
endif
|
endif
|
||||||
|
|
||||||
# Add subdir path
|
# Add subdir path
|
||||||
@ -263,7 +255,7 @@ $(obj)/%: $(src)/%_shipped
|
|||||||
# target: source(s) FORCE
|
# target: source(s) FORCE
|
||||||
# $(if_changed,ld/objcopy/gzip)
|
# $(if_changed,ld/objcopy/gzip)
|
||||||
#
|
#
|
||||||
# and add target to extra-y so that we know we have to
|
# and add target to 'targets' so that we know we have to
|
||||||
# read in the saved command line
|
# read in the saved command line
|
||||||
|
|
||||||
# Linking
|
# Linking
|
||||||
|
82
scripts/cc-version.sh
Executable file
82
scripts/cc-version.sh
Executable file
@ -0,0 +1,82 @@
|
|||||||
|
#!/bin/sh
|
||||||
|
# SPDX-License-Identifier: GPL-2.0
|
||||||
|
#
|
||||||
|
# Print the compiler name and its version in a 5 or 6-digit form.
|
||||||
|
# Also, perform the minimum version check.
|
||||||
|
|
||||||
|
set -e
|
||||||
|
|
||||||
|
# When you raise the minimum compiler version, please update
|
||||||
|
# Documentation/process/changes.rst as well.
|
||||||
|
gcc_min_version=4.9.0
|
||||||
|
clang_min_version=10.0.1
|
||||||
|
icc_min_version=16.0.3 # temporary
|
||||||
|
|
||||||
|
# https://gcc.gnu.org/bugzilla/show_bug.cgi?id=63293
|
||||||
|
# https://lore.kernel.org/r/20210107111841.GN1551@shell.armlinux.org.uk
|
||||||
|
if [ "$SRCARCH" = arm64 ]; then
|
||||||
|
gcc_min_version=5.1.0
|
||||||
|
fi
|
||||||
|
|
||||||
|
# Print the compiler name and some version components.
|
||||||
|
get_compiler_info()
|
||||||
|
{
|
||||||
|
cat <<- EOF | "$@" -E -P -x c - 2>/dev/null
|
||||||
|
#if defined(__clang__)
|
||||||
|
Clang __clang_major__ __clang_minor__ __clang_patchlevel__
|
||||||
|
#elif defined(__INTEL_COMPILER)
|
||||||
|
ICC __INTEL_COMPILER __INTEL_COMPILER_UPDATE
|
||||||
|
#elif defined(__GNUC__)
|
||||||
|
GCC __GNUC__ __GNUC_MINOR__ __GNUC_PATCHLEVEL__
|
||||||
|
#else
|
||||||
|
unknown
|
||||||
|
#endif
|
||||||
|
EOF
|
||||||
|
}
|
||||||
|
|
||||||
|
# Convert the version string x.y.z to a canonical 5 or 6-digit form.
|
||||||
|
get_canonical_version()
|
||||||
|
{
|
||||||
|
IFS=.
|
||||||
|
set -- $1
|
||||||
|
echo $((10000 * $1 + 100 * $2 + $3))
|
||||||
|
}
|
||||||
|
|
||||||
|
# $@ instead of $1 because multiple words might be given, e.g. CC="ccache gcc".
|
||||||
|
orig_args="$@"
|
||||||
|
set -- $(get_compiler_info "$@")
|
||||||
|
|
||||||
|
name=$1
|
||||||
|
|
||||||
|
case "$name" in
|
||||||
|
GCC)
|
||||||
|
version=$2.$3.$4
|
||||||
|
min_version=$gcc_min_version
|
||||||
|
;;
|
||||||
|
Clang)
|
||||||
|
version=$2.$3.$4
|
||||||
|
min_version=$clang_min_version
|
||||||
|
;;
|
||||||
|
ICC)
|
||||||
|
version=$(($2 / 100)).$(($2 % 100)).$3
|
||||||
|
min_version=$icc_min_version
|
||||||
|
;;
|
||||||
|
*)
|
||||||
|
echo "$orig_args: unknown compiler" >&2
|
||||||
|
exit 1
|
||||||
|
;;
|
||||||
|
esac
|
||||||
|
|
||||||
|
cversion=$(get_canonical_version $version)
|
||||||
|
min_cversion=$(get_canonical_version $min_version)
|
||||||
|
|
||||||
|
if [ "$cversion" -lt "$min_cversion" ]; then
|
||||||
|
echo >&2 "***"
|
||||||
|
echo >&2 "*** Compiler is too old."
|
||||||
|
echo >&2 "*** Your $name version: $version"
|
||||||
|
echo >&2 "*** Minimum $name version: $min_version"
|
||||||
|
echo >&2 "***"
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
|
||||||
|
echo $name $cversion
|
@ -20,7 +20,9 @@ _DEFAULT_LOG_LEVEL = 'WARNING'
|
|||||||
_FILENAME_PATTERN = r'^\..*\.cmd$'
|
_FILENAME_PATTERN = r'^\..*\.cmd$'
|
||||||
_LINE_PATTERN = r'^cmd_[^ ]*\.o := (.* )([^ ]*\.c)$'
|
_LINE_PATTERN = r'^cmd_[^ ]*\.o := (.* )([^ ]*\.c)$'
|
||||||
_VALID_LOG_LEVELS = ['DEBUG', 'INFO', 'WARNING', 'ERROR', 'CRITICAL']
|
_VALID_LOG_LEVELS = ['DEBUG', 'INFO', 'WARNING', 'ERROR', 'CRITICAL']
|
||||||
|
# The tools/ directory adopts a different build system, and produces .cmd
|
||||||
|
# files in a different format. Do not support it.
|
||||||
|
_EXCLUDE_DIRS = ['.git', 'Documentation', 'include', 'tools']
|
||||||
|
|
||||||
def parse_arguments():
|
def parse_arguments():
|
||||||
"""Sets up and parses command-line arguments.
|
"""Sets up and parses command-line arguments.
|
||||||
@ -80,8 +82,14 @@ def cmdfiles_in_dir(directory):
|
|||||||
"""
|
"""
|
||||||
|
|
||||||
filename_matcher = re.compile(_FILENAME_PATTERN)
|
filename_matcher = re.compile(_FILENAME_PATTERN)
|
||||||
|
exclude_dirs = [ os.path.join(directory, d) for d in _EXCLUDE_DIRS ]
|
||||||
|
|
||||||
|
for dirpath, dirnames, filenames in os.walk(directory, topdown=True):
|
||||||
|
# Prune unwanted directories.
|
||||||
|
if dirpath in exclude_dirs:
|
||||||
|
dirnames[:] = []
|
||||||
|
continue
|
||||||
|
|
||||||
for dirpath, _, filenames in os.walk(directory):
|
|
||||||
for filename in filenames:
|
for filename in filenames:
|
||||||
if filename_matcher.match(filename):
|
if filename_matcher.match(filename):
|
||||||
yield os.path.join(dirpath, filename)
|
yield os.path.join(dirpath, filename)
|
||||||
|
@ -1,19 +0,0 @@
|
|||||||
#!/bin/sh
|
|
||||||
# SPDX-License-Identifier: GPL-2.0
|
|
||||||
#
|
|
||||||
# clang-version clang-command
|
|
||||||
#
|
|
||||||
# Print the compiler version of `clang-command' in a 5 or 6-digit form
|
|
||||||
# such as `50001' for clang-5.0.1 etc.
|
|
||||||
|
|
||||||
compiler="$*"
|
|
||||||
|
|
||||||
if ! ( $compiler --version | grep -q clang) ; then
|
|
||||||
echo 0
|
|
||||||
exit 1
|
|
||||||
fi
|
|
||||||
|
|
||||||
MAJOR=$(echo __clang_major__ | $compiler -E -x c - | tail -n 1)
|
|
||||||
MINOR=$(echo __clang_minor__ | $compiler -E -x c - | tail -n 1)
|
|
||||||
PATCHLEVEL=$(echo __clang_patchlevel__ | $compiler -E -x c - | tail -n 1)
|
|
||||||
printf "%d%02d%02d\\n" $MAJOR $MINOR $PATCHLEVEL
|
|
@ -1,20 +0,0 @@
|
|||||||
#!/bin/sh
|
|
||||||
# SPDX-License-Identifier: GPL-2.0
|
|
||||||
#
|
|
||||||
# gcc-version gcc-command
|
|
||||||
#
|
|
||||||
# Print the gcc version of `gcc-command' in a 5 or 6-digit form
|
|
||||||
# such as `29503' for gcc-2.95.3, `30301' for gcc-3.3.1, etc.
|
|
||||||
|
|
||||||
compiler="$*"
|
|
||||||
|
|
||||||
if [ ${#compiler} -eq 0 ]; then
|
|
||||||
echo "Error: No compiler specified." >&2
|
|
||||||
printf "Usage:\n\t$0 <gcc-command>\n" >&2
|
|
||||||
exit 1
|
|
||||||
fi
|
|
||||||
|
|
||||||
MAJOR=$(echo __GNUC__ | $compiler -E -x c - | tail -n 1)
|
|
||||||
MINOR=$(echo __GNUC_MINOR__ | $compiler -E -x c - | tail -n 1)
|
|
||||||
PATCHLEVEL=$(echo __GNUC_PATCHLEVEL__ | $compiler -E -x c - | tail -n 1)
|
|
||||||
printf "%d%02d%02d\\n" $MAJOR $MINOR $PATCHLEVEL
|
|
@ -7,7 +7,7 @@ symlinks := $(patsubst $(srctree)/$(src)/%,%,$(wildcard $(srctree)/$(src)/*.py))
|
|||||||
quiet_cmd_symlink = SYMLINK $@
|
quiet_cmd_symlink = SYMLINK $@
|
||||||
cmd_symlink = ln -fsn $(patsubst $(obj)/%,$(abspath $(srctree))/$(src)/%,$@) $@
|
cmd_symlink = ln -fsn $(patsubst $(obj)/%,$(abspath $(srctree))/$(src)/%,$@) $@
|
||||||
|
|
||||||
extra-y += $(symlinks)
|
always-y += $(symlinks)
|
||||||
$(addprefix $(obj)/, $(symlinks)): FORCE
|
$(addprefix $(obj)/, $(symlinks)): FORCE
|
||||||
$(call if_changed,symlink)
|
$(call if_changed,symlink)
|
||||||
|
|
||||||
@ -18,7 +18,7 @@ quiet_cmd_gen_constants_py = GEN $@
|
|||||||
$(CPP) -E -x c -P $(c_flags) $< > $@ ;\
|
$(CPP) -E -x c -P $(c_flags) $< > $@ ;\
|
||||||
sed -i '1,/<!-- end-c-headers -->/d;' $@
|
sed -i '1,/<!-- end-c-headers -->/d;' $@
|
||||||
|
|
||||||
extra-y += constants.py
|
always-y += constants.py
|
||||||
$(obj)/constants.py: $(src)/constants.py.in FORCE
|
$(obj)/constants.py: $(src)/constants.py.in FORCE
|
||||||
$(call if_changed_dep,gen_constants_py)
|
$(call if_changed_dep,gen_constants_py)
|
||||||
|
|
||||||
|
@ -29,7 +29,7 @@ static struct symbol *symtab[HASH_BUCKETS];
|
|||||||
static FILE *debugfile;
|
static FILE *debugfile;
|
||||||
|
|
||||||
int cur_line = 1;
|
int cur_line = 1;
|
||||||
char *cur_filename, *source_file;
|
char *cur_filename;
|
||||||
int in_source_file;
|
int in_source_file;
|
||||||
|
|
||||||
static int flag_debug, flag_dump_defs, flag_reference, flag_dump_types,
|
static int flag_debug, flag_dump_defs, flag_reference, flag_dump_types,
|
||||||
|
@ -47,7 +47,7 @@ typedef struct string_list **yystype;
|
|||||||
#define YYSTYPE yystype
|
#define YYSTYPE yystype
|
||||||
|
|
||||||
extern int cur_line;
|
extern int cur_line;
|
||||||
extern char *cur_filename, *source_file;
|
extern char *cur_filename;
|
||||||
extern int in_source_file;
|
extern int in_source_file;
|
||||||
|
|
||||||
struct symbol *find_symbol(const char *name, enum symbol_type ns, int exact);
|
struct symbol *find_symbol(const char *name, enum symbol_type ns, int exact);
|
||||||
|
@ -119,12 +119,11 @@ yylex(void)
|
|||||||
static enum {
|
static enum {
|
||||||
ST_NOTSTARTED, ST_NORMAL, ST_ATTRIBUTE, ST_ASM, ST_TYPEOF, ST_TYPEOF_1,
|
ST_NOTSTARTED, ST_NORMAL, ST_ATTRIBUTE, ST_ASM, ST_TYPEOF, ST_TYPEOF_1,
|
||||||
ST_BRACKET, ST_BRACE, ST_EXPRESSION, ST_STATIC_ASSERT,
|
ST_BRACKET, ST_BRACE, ST_EXPRESSION, ST_STATIC_ASSERT,
|
||||||
ST_TABLE_1, ST_TABLE_2, ST_TABLE_3, ST_TABLE_4,
|
|
||||||
ST_TABLE_5, ST_TABLE_6
|
|
||||||
} lexstate = ST_NOTSTARTED;
|
} lexstate = ST_NOTSTARTED;
|
||||||
|
|
||||||
static int suppress_type_lookup, dont_want_brace_phrase;
|
static int suppress_type_lookup, dont_want_brace_phrase;
|
||||||
static struct string_list *next_node;
|
static struct string_list *next_node;
|
||||||
|
static char *source_file;
|
||||||
|
|
||||||
int token, count = 0;
|
int token, count = 0;
|
||||||
struct string_list *cur_node;
|
struct string_list *cur_node;
|
||||||
@ -235,7 +234,6 @@ repeat:
|
|||||||
lexstate = ST_EXPRESSION;
|
lexstate = ST_EXPRESSION;
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case DOTS:
|
|
||||||
default:
|
default:
|
||||||
APP;
|
APP;
|
||||||
break;
|
break;
|
||||||
@ -426,58 +424,6 @@ repeat:
|
|||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case ST_TABLE_1:
|
|
||||||
goto repeat;
|
|
||||||
|
|
||||||
case ST_TABLE_2:
|
|
||||||
if (token == IDENT && yyleng == 1 && yytext[0] == 'X')
|
|
||||||
{
|
|
||||||
token = EXPORT_SYMBOL_KEYW;
|
|
||||||
lexstate = ST_TABLE_5;
|
|
||||||
APP;
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
lexstate = ST_TABLE_6;
|
|
||||||
/* FALLTHRU */
|
|
||||||
|
|
||||||
case ST_TABLE_6:
|
|
||||||
switch (token)
|
|
||||||
{
|
|
||||||
case '{': case '[': case '(':
|
|
||||||
++count;
|
|
||||||
break;
|
|
||||||
case '}': case ']': case ')':
|
|
||||||
--count;
|
|
||||||
break;
|
|
||||||
case ',':
|
|
||||||
if (count == 0)
|
|
||||||
lexstate = ST_TABLE_2;
|
|
||||||
break;
|
|
||||||
};
|
|
||||||
goto repeat;
|
|
||||||
|
|
||||||
case ST_TABLE_3:
|
|
||||||
goto repeat;
|
|
||||||
|
|
||||||
case ST_TABLE_4:
|
|
||||||
if (token == ';')
|
|
||||||
lexstate = ST_NORMAL;
|
|
||||||
goto repeat;
|
|
||||||
|
|
||||||
case ST_TABLE_5:
|
|
||||||
switch (token)
|
|
||||||
{
|
|
||||||
case ',':
|
|
||||||
token = ';';
|
|
||||||
lexstate = ST_TABLE_2;
|
|
||||||
APP;
|
|
||||||
break;
|
|
||||||
default:
|
|
||||||
APP;
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
break;
|
|
||||||
|
|
||||||
default:
|
default:
|
||||||
exit(1);
|
exit(1);
|
||||||
}
|
}
|
||||||
|
@ -3,9 +3,6 @@
|
|||||||
# Kernel configuration targets
|
# Kernel configuration targets
|
||||||
# These targets are used from top-level makefile
|
# These targets are used from top-level makefile
|
||||||
|
|
||||||
PHONY += xconfig gconfig menuconfig config localmodconfig localyesconfig \
|
|
||||||
build_menuconfig build_nconfig build_gconfig build_xconfig
|
|
||||||
|
|
||||||
ifdef KBUILD_KCONFIG
|
ifdef KBUILD_KCONFIG
|
||||||
Kconfig := $(KBUILD_KCONFIG)
|
Kconfig := $(KBUILD_KCONFIG)
|
||||||
else
|
else
|
||||||
@ -19,29 +16,24 @@ endif
|
|||||||
# We need this, in case the user has it in its environment
|
# We need this, in case the user has it in its environment
|
||||||
unexport CONFIG_
|
unexport CONFIG_
|
||||||
|
|
||||||
xconfig: $(obj)/qconf
|
config-prog := conf
|
||||||
$(Q)$< $(silent) $(Kconfig)
|
menuconfig-prog := mconf
|
||||||
|
nconfig-prog := nconf
|
||||||
|
gconfig-prog := gconf
|
||||||
|
xconfig-prog := qconf
|
||||||
|
|
||||||
gconfig: $(obj)/gconf
|
define config_rule
|
||||||
$(Q)$< $(silent) $(Kconfig)
|
PHONY += $(1)
|
||||||
|
$(1): $(obj)/$($(1)-prog)
|
||||||
|
$(Q)$$< $(silent) $(Kconfig)
|
||||||
|
|
||||||
menuconfig: $(obj)/mconf
|
PHONY += build_$(1)
|
||||||
$(Q)$< $(silent) $(Kconfig)
|
build_$(1): $(obj)/$($(1)-prog)
|
||||||
|
endef
|
||||||
|
|
||||||
config: $(obj)/conf
|
$(foreach c, config menuconfig nconfig gconfig xconfig, $(eval $(call config_rule,$(c))))
|
||||||
$(Q)$< $(silent) --oldaskconfig $(Kconfig)
|
|
||||||
|
|
||||||
nconfig: $(obj)/nconf
|
|
||||||
$(Q)$< $(silent) $(Kconfig)
|
|
||||||
|
|
||||||
build_menuconfig: $(obj)/mconf
|
|
||||||
|
|
||||||
build_nconfig: $(obj)/nconf
|
|
||||||
|
|
||||||
build_gconfig: $(obj)/gconf
|
|
||||||
|
|
||||||
build_xconfig: $(obj)/qconf
|
|
||||||
|
|
||||||
|
PHONY += localmodconfig localyesconfig
|
||||||
localyesconfig localmodconfig: $(obj)/conf
|
localyesconfig localmodconfig: $(obj)/conf
|
||||||
$(Q)$(PERL) $(srctree)/$(src)/streamline_config.pl --$@ $(srctree) $(Kconfig) > .tmp.config
|
$(Q)$(PERL) $(srctree)/$(src)/streamline_config.pl --$@ $(srctree) $(Kconfig) > .tmp.config
|
||||||
$(Q)if [ -f .config ]; then \
|
$(Q)if [ -f .config ]; then \
|
||||||
|
@ -84,8 +84,6 @@ static void xfgets(char *str, int size, FILE *in)
|
|||||||
|
|
||||||
static int conf_askvalue(struct symbol *sym, const char *def)
|
static int conf_askvalue(struct symbol *sym, const char *def)
|
||||||
{
|
{
|
||||||
enum symbol_type type = sym_get_type(sym);
|
|
||||||
|
|
||||||
if (!sym_has_value(sym))
|
if (!sym_has_value(sym))
|
||||||
printf("(NEW) ");
|
printf("(NEW) ");
|
||||||
|
|
||||||
@ -107,24 +105,12 @@ static int conf_askvalue(struct symbol *sym, const char *def)
|
|||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
/* fall through */
|
/* fall through */
|
||||||
case oldaskconfig:
|
default:
|
||||||
fflush(stdout);
|
fflush(stdout);
|
||||||
xfgets(line, sizeof(line), stdin);
|
xfgets(line, sizeof(line), stdin);
|
||||||
return 1;
|
|
||||||
default:
|
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
switch (type) {
|
|
||||||
case S_INT:
|
|
||||||
case S_HEX:
|
|
||||||
case S_STRING:
|
|
||||||
printf("%s\n", def);
|
|
||||||
return 1;
|
|
||||||
default:
|
|
||||||
;
|
|
||||||
}
|
|
||||||
printf("%s", line);
|
|
||||||
return 1;
|
return 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -137,7 +123,7 @@ static int conf_string(struct menu *menu)
|
|||||||
printf("%*s%s ", indent - 1, "", menu->prompt->text);
|
printf("%*s%s ", indent - 1, "", menu->prompt->text);
|
||||||
printf("(%s) ", sym->name);
|
printf("(%s) ", sym->name);
|
||||||
def = sym_get_string_value(sym);
|
def = sym_get_string_value(sym);
|
||||||
if (sym_get_string_value(sym))
|
if (def)
|
||||||
printf("[%s] ", def);
|
printf("[%s] ", def);
|
||||||
if (!conf_askvalue(sym, def))
|
if (!conf_askvalue(sym, def))
|
||||||
return 0;
|
return 0;
|
||||||
@ -419,34 +405,37 @@ static void check_conf(struct menu *menu)
|
|||||||
return;
|
return;
|
||||||
|
|
||||||
sym = menu->sym;
|
sym = menu->sym;
|
||||||
if (sym && !sym_has_value(sym)) {
|
if (sym && !sym_has_value(sym) &&
|
||||||
if (sym_is_changeable(sym) ||
|
(sym_is_changeable(sym) ||
|
||||||
(sym_is_choice(sym) && sym_get_tristate_value(sym) == yes)) {
|
(sym_is_choice(sym) && sym_get_tristate_value(sym) == yes))) {
|
||||||
if (input_mode == listnewconfig) {
|
|
||||||
if (sym->name) {
|
|
||||||
const char *str;
|
|
||||||
|
|
||||||
if (sym->type == S_STRING) {
|
switch (input_mode) {
|
||||||
str = sym_get_string_value(sym);
|
case listnewconfig:
|
||||||
str = sym_escape_string_value(str);
|
if (sym->name) {
|
||||||
printf("%s%s=%s\n", CONFIG_, sym->name, str);
|
const char *str;
|
||||||
free((void *)str);
|
|
||||||
} else {
|
if (sym->type == S_STRING) {
|
||||||
str = sym_get_string_value(sym);
|
str = sym_get_string_value(sym);
|
||||||
printf("%s%s=%s\n", CONFIG_, sym->name, str);
|
str = sym_escape_string_value(str);
|
||||||
}
|
printf("%s%s=%s\n", CONFIG_, sym->name, str);
|
||||||
|
free((void *)str);
|
||||||
|
} else {
|
||||||
|
str = sym_get_string_value(sym);
|
||||||
|
printf("%s%s=%s\n", CONFIG_, sym->name, str);
|
||||||
}
|
}
|
||||||
} else if (input_mode == helpnewconfig) {
|
|
||||||
printf("-----\n");
|
|
||||||
print_help(menu);
|
|
||||||
printf("-----\n");
|
|
||||||
|
|
||||||
} else {
|
|
||||||
if (!conf_cnt++)
|
|
||||||
printf("*\n* Restart config...\n*\n");
|
|
||||||
rootEntry = menu_get_parent_menu(menu);
|
|
||||||
conf(rootEntry);
|
|
||||||
}
|
}
|
||||||
|
break;
|
||||||
|
case helpnewconfig:
|
||||||
|
printf("-----\n");
|
||||||
|
print_help(menu);
|
||||||
|
printf("-----\n");
|
||||||
|
break;
|
||||||
|
default:
|
||||||
|
if (!conf_cnt++)
|
||||||
|
printf("*\n* Restart config...\n*\n");
|
||||||
|
rootEntry = menu_get_parent_menu(menu);
|
||||||
|
conf(rootEntry);
|
||||||
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -494,6 +483,7 @@ static void conf_usage(const char *progname)
|
|||||||
printf(" --randconfig New config with random answer to all options\n");
|
printf(" --randconfig New config with random answer to all options\n");
|
||||||
printf(" --yes2modconfig Change answers from yes to mod if possible\n");
|
printf(" --yes2modconfig Change answers from yes to mod if possible\n");
|
||||||
printf(" --mod2yesconfig Change answers from mod to yes if possible\n");
|
printf(" --mod2yesconfig Change answers from mod to yes if possible\n");
|
||||||
|
printf(" (If none of the above is given, --oldaskconfig is the default)\n");
|
||||||
}
|
}
|
||||||
|
|
||||||
int main(int ac, char **av)
|
int main(int ac, char **av)
|
||||||
@ -505,7 +495,7 @@ int main(int ac, char **av)
|
|||||||
|
|
||||||
tty_stdio = isatty(0) && isatty(1);
|
tty_stdio = isatty(0) && isatty(1);
|
||||||
|
|
||||||
while ((opt = getopt_long(ac, av, "s", long_opts, NULL)) != -1) {
|
while ((opt = getopt_long(ac, av, "hs", long_opts, NULL)) != -1) {
|
||||||
if (opt == 's') {
|
if (opt == 's') {
|
||||||
conf_set_message_callback(NULL);
|
conf_set_message_callback(NULL);
|
||||||
continue;
|
continue;
|
||||||
@ -561,7 +551,7 @@ int main(int ac, char **av)
|
|||||||
case yes2modconfig:
|
case yes2modconfig:
|
||||||
case mod2yesconfig:
|
case mod2yesconfig:
|
||||||
break;
|
break;
|
||||||
case '?':
|
case 'h':
|
||||||
conf_usage(progname);
|
conf_usage(progname);
|
||||||
exit(1);
|
exit(1);
|
||||||
break;
|
break;
|
||||||
|
@ -1,11 +1,73 @@
|
|||||||
#!/usr/bin/awk -f
|
#!/bin/sh
|
||||||
# SPDX-License-Identifier: GPL-2.0
|
# SPDX-License-Identifier: GPL-2.0
|
||||||
# extract linker version number from stdin and turn into single number
|
#
|
||||||
{
|
# Print the linker name and its version in a 5 or 6-digit form.
|
||||||
gsub(".*\\)", "");
|
# Also, perform the minimum version check.
|
||||||
gsub(".*version ", "");
|
|
||||||
gsub("-.*", "");
|
set -e
|
||||||
split($1,a, ".");
|
|
||||||
print a[1]*100000000 + a[2]*1000000 + a[3]*10000;
|
# When you raise the minimum linker version, please update
|
||||||
exit
|
# Documentation/process/changes.rst as well.
|
||||||
}
|
bfd_min_version=2.23.0
|
||||||
|
lld_min_version=10.0.1
|
||||||
|
|
||||||
|
# Convert the version string x.y.z to a canonical 5 or 6-digit form.
|
||||||
|
get_canonical_version()
|
||||||
|
{
|
||||||
|
IFS=.
|
||||||
|
set -- $1
|
||||||
|
|
||||||
|
# If the 2nd or 3rd field is missing, fill it with a zero.
|
||||||
|
#
|
||||||
|
# The 4th field, if present, is ignored.
|
||||||
|
# This occurs in development snapshots as in 2.35.1.20201116
|
||||||
|
echo $((10000 * $1 + 100 * ${2:-0} + ${3:-0}))
|
||||||
|
}
|
||||||
|
|
||||||
|
orig_args="$@"
|
||||||
|
|
||||||
|
# Get the first line of the --version output.
|
||||||
|
IFS='
|
||||||
|
'
|
||||||
|
set -- $("$@" --version)
|
||||||
|
|
||||||
|
# Split the line on spaces.
|
||||||
|
IFS=' '
|
||||||
|
set -- $1
|
||||||
|
|
||||||
|
if [ "$1" = GNU -a "$2" = ld ]; then
|
||||||
|
shift $(($# - 1))
|
||||||
|
version=$1
|
||||||
|
min_version=$bfd_min_version
|
||||||
|
name=BFD
|
||||||
|
disp_name="GNU ld"
|
||||||
|
elif [ "$1" = GNU -a "$2" = gold ]; then
|
||||||
|
echo "gold linker is not supported as it is not capable of linking the kernel proper." >&2
|
||||||
|
exit 1
|
||||||
|
elif [ "$1" = LLD ]; then
|
||||||
|
version=$2
|
||||||
|
min_version=$lld_min_version
|
||||||
|
name=LLD
|
||||||
|
disp_name=LLD
|
||||||
|
else
|
||||||
|
echo "$orig_args: unknown linker" >&2
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
|
||||||
|
# Some distributions append a package release number, as in 2.34-4.fc32
|
||||||
|
# Trim the hyphen and any characters that follow.
|
||||||
|
version=${version%-*}
|
||||||
|
|
||||||
|
cversion=$(get_canonical_version $version)
|
||||||
|
min_cversion=$(get_canonical_version $min_version)
|
||||||
|
|
||||||
|
if [ "$cversion" -lt "$min_cversion" ]; then
|
||||||
|
echo >&2 "***"
|
||||||
|
echo >&2 "*** Linker is too old."
|
||||||
|
echo >&2 "*** Your $disp_name version: $version"
|
||||||
|
echo >&2 "*** Minimum $disp_name version: $min_version"
|
||||||
|
echo >&2 "***"
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
|
||||||
|
echo $name $cversion
|
||||||
|
@ -1,20 +0,0 @@
|
|||||||
#!/bin/sh
|
|
||||||
# SPDX-License-Identifier: GPL-2.0
|
|
||||||
#
|
|
||||||
# Usage: $ ./scripts/lld-version.sh ld.lld
|
|
||||||
#
|
|
||||||
# Print the linker version of `ld.lld' in a 5 or 6-digit form
|
|
||||||
# such as `100001' for ld.lld 10.0.1 etc.
|
|
||||||
|
|
||||||
linker_string="$($* --version)"
|
|
||||||
|
|
||||||
if ! ( echo $linker_string | grep -q LLD ); then
|
|
||||||
echo 0
|
|
||||||
exit 1
|
|
||||||
fi
|
|
||||||
|
|
||||||
VERSION=$(echo $linker_string | cut -d ' ' -f 2)
|
|
||||||
MAJOR=$(echo $VERSION | cut -d . -f 1)
|
|
||||||
MINOR=$(echo $VERSION | cut -d . -f 2)
|
|
||||||
PATCHLEVEL=$(echo $VERSION | cut -d . -f 3)
|
|
||||||
printf "%d%02d%02d\\n" $MAJOR $MINOR $PATCHLEVEL
|
|
98
scripts/syscallhdr.sh
Executable file
98
scripts/syscallhdr.sh
Executable file
@ -0,0 +1,98 @@
|
|||||||
|
#!/bin/sh
|
||||||
|
# SPDX-License-Identifier: GPL-2.0-only
|
||||||
|
#
|
||||||
|
# Generate a syscall number header.
|
||||||
|
#
|
||||||
|
# Each line of the syscall table should have the following format:
|
||||||
|
#
|
||||||
|
# NR ABI NAME [NATIVE] [COMPAT]
|
||||||
|
#
|
||||||
|
# NR syscall number
|
||||||
|
# ABI ABI name
|
||||||
|
# NAME syscall name
|
||||||
|
# NATIVE native entry point (optional)
|
||||||
|
# COMPAT compat entry point (optional)
|
||||||
|
|
||||||
|
set -e
|
||||||
|
|
||||||
|
usage() {
|
||||||
|
echo >&2 "usage: $0 [--abis ABIS] [--emit-nr] [--offset OFFSET] [--prefix PREFIX] INFILE OUTFILE" >&2
|
||||||
|
echo >&2
|
||||||
|
echo >&2 " INFILE input syscall table"
|
||||||
|
echo >&2 " OUTFILE output header file"
|
||||||
|
echo >&2
|
||||||
|
echo >&2 "options:"
|
||||||
|
echo >&2 " --abis ABIS ABI(s) to handle (By default, all lines are handled)"
|
||||||
|
echo >&2 " --emit-nr Emit the macro of the number of syscalls (__NR_syscalls)"
|
||||||
|
echo >&2 " --offset OFFSET The offset of syscall numbers"
|
||||||
|
echo >&2 " --prefix PREFIX The prefix to the macro like __NR_<PREFIX><NAME>"
|
||||||
|
exit 1
|
||||||
|
}
|
||||||
|
|
||||||
|
# default unless specified by options
|
||||||
|
abis=
|
||||||
|
emit_nr=
|
||||||
|
offset=
|
||||||
|
prefix=
|
||||||
|
|
||||||
|
while [ $# -gt 0 ]
|
||||||
|
do
|
||||||
|
case $1 in
|
||||||
|
--abis)
|
||||||
|
abis=$(echo "($2)" | tr ',' '|')
|
||||||
|
shift 2;;
|
||||||
|
--emit-nr)
|
||||||
|
emit_nr=1
|
||||||
|
shift 1;;
|
||||||
|
--offset)
|
||||||
|
offset=$2
|
||||||
|
shift 2;;
|
||||||
|
--prefix)
|
||||||
|
prefix=$2
|
||||||
|
shift 2;;
|
||||||
|
-*)
|
||||||
|
echo "$1: unknown option" >&2
|
||||||
|
usage;;
|
||||||
|
*)
|
||||||
|
break;;
|
||||||
|
esac
|
||||||
|
done
|
||||||
|
|
||||||
|
if [ $# -ne 2 ]; then
|
||||||
|
usage
|
||||||
|
fi
|
||||||
|
|
||||||
|
infile="$1"
|
||||||
|
outfile="$2"
|
||||||
|
|
||||||
|
guard=_UAPI_ASM_$(basename "$outfile" |
|
||||||
|
sed -e 'y/abcdefghijklmnopqrstuvwxyz/ABCDEFGHIJKLMNOPQRSTUVWXYZ/' \
|
||||||
|
-e 's/[^A-Z0-9_]/_/g' -e 's/__/_/g')
|
||||||
|
|
||||||
|
grep -E "^[0-9A-Fa-fXx]+[[:space:]]+$abis" "$infile" | sort -n | {
|
||||||
|
echo "#ifndef $guard"
|
||||||
|
echo "#define $guard"
|
||||||
|
echo
|
||||||
|
|
||||||
|
max=0
|
||||||
|
while read nr abi name native compat ; do
|
||||||
|
|
||||||
|
max=$nr
|
||||||
|
|
||||||
|
if [ -n "$offset" ]; then
|
||||||
|
nr="($offset + $nr)"
|
||||||
|
fi
|
||||||
|
|
||||||
|
echo "#define __NR_$prefix$name $nr"
|
||||||
|
done
|
||||||
|
|
||||||
|
if [ -n "$emit_nr" ]; then
|
||||||
|
echo
|
||||||
|
echo "#ifdef __KERNEL__"
|
||||||
|
echo "#define __NR_${prefix}syscalls $(($max + 1))"
|
||||||
|
echo "#endif"
|
||||||
|
fi
|
||||||
|
|
||||||
|
echo
|
||||||
|
echo "#endif /* $guard */"
|
||||||
|
} > "$outfile"
|
73
scripts/syscalltbl.sh
Executable file
73
scripts/syscalltbl.sh
Executable file
@ -0,0 +1,73 @@
|
|||||||
|
#!/bin/sh
|
||||||
|
# SPDX-License-Identifier: GPL-2.0-only
|
||||||
|
#
|
||||||
|
# Generate a syscall table header.
|
||||||
|
#
|
||||||
|
# Each line of the syscall table should have the following format:
|
||||||
|
#
|
||||||
|
# NR ABI NAME [NATIVE] [COMPAT]
|
||||||
|
#
|
||||||
|
# NR syscall number
|
||||||
|
# ABI ABI name
|
||||||
|
# NAME syscall name
|
||||||
|
# NATIVE native entry point (optional)
|
||||||
|
# COMPAT compat entry point (optional)
|
||||||
|
|
||||||
|
set -e
|
||||||
|
|
||||||
|
usage() {
|
||||||
|
echo >&2 "usage: $0 [--abis ABIS] INFILE OUTFILE" >&2
|
||||||
|
echo >&2
|
||||||
|
echo >&2 " INFILE input syscall table"
|
||||||
|
echo >&2 " OUTFILE output header file"
|
||||||
|
echo >&2
|
||||||
|
echo >&2 "options:"
|
||||||
|
echo >&2 " --abis ABIS ABI(s) to handle (By default, all lines are handled)"
|
||||||
|
exit 1
|
||||||
|
}
|
||||||
|
|
||||||
|
# default unless specified by options
|
||||||
|
abis=
|
||||||
|
|
||||||
|
while [ $# -gt 0 ]
|
||||||
|
do
|
||||||
|
case $1 in
|
||||||
|
--abis)
|
||||||
|
abis=$(echo "($2)" | tr ',' '|')
|
||||||
|
shift 2;;
|
||||||
|
-*)
|
||||||
|
echo "$1: unknown option" >&2
|
||||||
|
usage;;
|
||||||
|
*)
|
||||||
|
break;;
|
||||||
|
esac
|
||||||
|
done
|
||||||
|
|
||||||
|
if [ $# -ne 2 ]; then
|
||||||
|
usage
|
||||||
|
fi
|
||||||
|
|
||||||
|
infile="$1"
|
||||||
|
outfile="$2"
|
||||||
|
|
||||||
|
nxt=0
|
||||||
|
|
||||||
|
grep -E "^[0-9]+[[:space:]]+$abis" "$infile" | sort -n | {
|
||||||
|
|
||||||
|
while read nr abi name native compat ; do
|
||||||
|
|
||||||
|
while [ $nxt -lt $nr ]; do
|
||||||
|
echo "__SYSCALL($nxt, sys_ni_syscall)"
|
||||||
|
nxt=$((nxt + 1))
|
||||||
|
done
|
||||||
|
|
||||||
|
if [ -n "$compat" ]; then
|
||||||
|
echo "__SYSCALL_WITH_COMPAT($nr, $native, $compat)"
|
||||||
|
elif [ -n "$native" ]; then
|
||||||
|
echo "__SYSCALL($nr, $native)"
|
||||||
|
else
|
||||||
|
echo "__SYSCALL($nr, sys_ni_syscall)"
|
||||||
|
fi
|
||||||
|
nxt=$((nr + 1))
|
||||||
|
done
|
||||||
|
} > "$outfile"
|
8
scripts/test_dwarf5_support.sh
Executable file
8
scripts/test_dwarf5_support.sh
Executable file
@ -0,0 +1,8 @@
|
|||||||
|
#!/bin/sh
|
||||||
|
# SPDX-License-Identifier: GPL-2.0
|
||||||
|
|
||||||
|
# Test that the assembler doesn't need -Wa,-gdwarf-5 when presented with DWARF
|
||||||
|
# v5 input, such as `.file 0` and `md5 0x00`. Should be fixed in GNU binutils
|
||||||
|
# 2.35.2. https://sourceware.org/bugzilla/show_bug.cgi?id=25611
|
||||||
|
echo '.file 0 "filename" md5 0x7a0b65214090b6693bd1dc24dd248245' | \
|
||||||
|
$* -gdwarf-5 -Wno-unused-command-line-argument -c -x assembler -o /dev/null -
|
@ -103,7 +103,6 @@ config RD_LZ4
|
|||||||
config RD_ZSTD
|
config RD_ZSTD
|
||||||
bool "Support initial ramdisk/ramfs compressed using ZSTD"
|
bool "Support initial ramdisk/ramfs compressed using ZSTD"
|
||||||
default y
|
default y
|
||||||
depends on BLK_DEV_INITRD
|
|
||||||
select DECOMPRESS_ZSTD
|
select DECOMPRESS_ZSTD
|
||||||
help
|
help
|
||||||
Support loading of a ZSTD encoded initial ramdisk or cpio buffer.
|
Support loading of a ZSTD encoded initial ramdisk or cpio buffer.
|
||||||
|
Loading…
x
Reference in New Issue
Block a user