diff options
Diffstat (limited to 'scripts')
| -rw-r--r-- | scripts/Kconfig.include | 3 | ||||
| -rw-r--r-- | scripts/Makefile.asm-generic | 58 | ||||
| -rw-r--r-- | scripts/Makefile.asm-headers | 98 | ||||
| -rw-r--r-- | scripts/Makefile.dtbinst | 2 | ||||
| -rw-r--r-- | scripts/Makefile.host | 2 | ||||
| -rw-r--r-- | scripts/Makefile.package | 2 | ||||
| -rw-r--r-- | scripts/atomic/kerneldoc/sub_and_test | 2 | ||||
| -rw-r--r-- | scripts/const_structs.checkpatch | 10 | ||||
| -rw-r--r-- | scripts/gcc-plugins/gcc-common.h | 5 | ||||
| -rw-r--r-- | scripts/gdb/linux/Makefile | 2 | ||||
| -rw-r--r-- | scripts/kconfig/confdata.c | 13 | ||||
| -rw-r--r-- | scripts/kconfig/expr.c | 29 | ||||
| -rw-r--r-- | scripts/kconfig/expr.h | 1 | ||||
| -rw-r--r-- | scripts/kconfig/gconf.c | 3 | ||||
| -rw-r--r-- | scripts/kconfig/menu.c | 2 | ||||
| -rwxr-xr-x | scripts/ld-version.sh | 8 | ||||
| -rwxr-xr-x | scripts/link-vmlinux.sh | 2 | ||||
| -rw-r--r-- | scripts/mod/modpost.c | 5 | ||||
| -rw-r--r-- | scripts/package/kernel.spec | 9 | ||||
| -rw-r--r-- | scripts/syscall.tbl | 404 | ||||
| -rwxr-xr-x | scripts/syscalltbl.sh | 18 | 
21 files changed, 549 insertions, 129 deletions
| diff --git a/scripts/Kconfig.include b/scripts/Kconfig.include index 3ee8ecfb8c04..3500a3d62f0d 100644 --- a/scripts/Kconfig.include +++ b/scripts/Kconfig.include @@ -33,7 +33,8 @@ ld-option = $(success,$(LD) -v $(1))  # $(as-instr,<instr>)  # Return y if the assembler supports <instr>, n otherwise -as-instr = $(success,printf "%b\n" "$(1)" | $(CC) $(CLANG_FLAGS) -Wa$(comma)--fatal-warnings -c -x assembler-with-cpp -o /dev/null -) +as-instr = $(success,printf "%b\n" "$(1)" | $(CC) $(CLANG_FLAGS) $(2) -Wa$(comma)--fatal-warnings -c -x assembler-with-cpp -o /dev/null -) +as-instr64 = $(as-instr,$(1),$(m64-flag))  # check if $(CC) and $(LD) exist  $(error-if,$(failure,command -v $(CC)),C compiler '$(CC)' not found) diff --git a/scripts/Makefile.asm-generic b/scripts/Makefile.asm-generic deleted file mode 100644 index 1486abf34c7c..000000000000 --- a/scripts/Makefile.asm-generic +++ /dev/null @@ -1,58 +0,0 @@ -# SPDX-License-Identifier: GPL-2.0 -# include/asm-generic contains a lot of files that are used -# verbatim by several architectures. -# -# This Makefile reads the file arch/$(SRCARCH)/include/(uapi/)/asm/Kbuild -# and for each file listed in this file with generic-y creates -# a small wrapper file in arch/$(SRCARCH)/include/generated/(uapi/)/asm. - -PHONY := all -all: - -src := $(srctree)/$(subst /generated,,$(obj)) - -include $(srctree)/scripts/Kbuild.include --include $(kbuild-file) - -# $(generic)/Kbuild lists mandatory-y. Exclude um since it is a special case. -ifneq ($(SRCARCH),um) -include $(srctree)/$(generic)/Kbuild -endif - -redundant := $(filter $(mandatory-y) $(generated-y), $(generic-y)) -redundant += $(foreach f, $(generic-y), $(if $(wildcard $(src)/$(f)),$(f))) -redundant := $(sort $(redundant)) -$(if $(redundant),\ -	$(warning redundant generic-y found in $(src)/Kbuild: $(redundant))) - -# If arch does not implement mandatory headers, fallback to asm-generic ones. -mandatory-y := $(filter-out $(generated-y), $(mandatory-y)) -generic-y   += $(foreach f, $(mandatory-y), $(if $(wildcard $(src)/$(f)),,$(f))) - -generic-y   := $(addprefix $(obj)/, $(generic-y)) -generated-y := $(addprefix $(obj)/, $(generated-y)) - -# Remove stale wrappers when the corresponding files are removed from generic-y -old-headers := $(wildcard $(obj)/*.h) -unwanted    := $(filter-out $(generic-y) $(generated-y),$(old-headers)) - -quiet_cmd_wrap = WRAP    $@ -      cmd_wrap = echo "\#include <asm-generic/$*.h>" > $@ - -quiet_cmd_remove = REMOVE  $(unwanted) -      cmd_remove = rm -f $(unwanted) - -all: $(generic-y) -	$(if $(unwanted),$(call cmd,remove)) -	@: - -$(obj)/%.h: -	$(call cmd,wrap) - -# Create output directory. Skip it if at least one old header exists -# since we know the output directory already exists. -ifeq ($(old-headers),) -$(shell mkdir -p $(obj)) -endif - -.PHONY: $(PHONY) diff --git a/scripts/Makefile.asm-headers b/scripts/Makefile.asm-headers new file mode 100644 index 000000000000..6b8e8318e810 --- /dev/null +++ b/scripts/Makefile.asm-headers @@ -0,0 +1,98 @@ +# SPDX-License-Identifier: GPL-2.0 +# include/asm-generic contains a lot of files that are used +# verbatim by several architectures. +# +# This Makefile generates arch/$(SRCARCH)/include/generated/(uapi/)/asm +# headers from multiple sources: +#  - a small wrapper to include the corresponding asm-generic/*.h +#    is generated for each file listed as generic-y +#  - uapi/asm/unistd_*.h files listed as syscalls-y are generated from +#    syscall.tbl with the __NR_* macros +#  - Corresponding asm/syscall_table_*.h are generated from the same input + +PHONY := all +all: + +src := $(srctree)/$(subst /generated,,$(obj)) + +syscall_abis_32  += common,32 +syscall_abis_64  += common,64 +syscalltbl := $(srctree)/scripts/syscall.tbl +syshdr-args := --emit-nr + +# let architectures override $(syscall_abis_%) and $(syscalltbl) +-include $(srctree)/arch/$(SRCARCH)/kernel/Makefile.syscalls +include $(srctree)/scripts/Kbuild.include +-include $(kbuild-file) + +syshdr := $(srctree)/scripts/syscallhdr.sh +systbl := $(srctree)/scripts/syscalltbl.sh + +# $(generic)/Kbuild lists mandatory-y. Exclude um since it is a special case. +ifneq ($(SRCARCH),um) +include $(srctree)/$(generic)/Kbuild +endif + +redundant := $(filter $(mandatory-y) $(generated-y), $(generic-y)) +redundant += $(foreach f, $(generic-y), $(if $(wildcard $(src)/$(f)),$(f))) +redundant := $(sort $(redundant)) +$(if $(redundant),\ +	$(warning redundant generic-y found in $(src)/Kbuild: $(redundant))) + +# If arch does not implement mandatory headers, fallback to asm-generic ones. +mandatory-y := $(filter-out $(generated-y), $(mandatory-y)) +generic-y   += $(foreach f, $(mandatory-y), $(if $(wildcard $(src)/$(f)),,$(f))) + +generic-y   := $(addprefix $(obj)/, $(generic-y)) +syscall-y   := $(addprefix $(obj)/, $(syscall-y)) +generated-y := $(addprefix $(obj)/, $(generated-y)) + +# Remove stale wrappers when the corresponding files are removed from generic-y +old-headers := $(wildcard $(obj)/*.h) +unwanted    := $(filter-out $(generic-y) $(generated-y) $(syscall-y),$(old-headers)) + +quiet_cmd_wrap = WRAP    $@ +      cmd_wrap = echo "\#include <asm-generic/$*.h>" > $@ + +quiet_cmd_remove = REMOVE  $(unwanted) +      cmd_remove = rm -f $(unwanted) + +quiet_cmd_syshdr = SYSHDR  $@ +      cmd_syshdr = $(CONFIG_SHELL) $(syshdr) \ +		   $(if $(syshdr-args-$*),$(syshdr-args-$*),$(syshdr-args)) \ +		   $(if $(syscall_compat),--prefix "compat$*_") \ +		   --abis $(subst $(space),$(comma),$(strip $(syscall_abis_$*))) \ +		   $< $@ + +quiet_cmd_systbl = SYSTBL  $@ +      cmd_systbl = $(CONFIG_SHELL) $(systbl) \ +		   $(if $(systbl-args-$*),$(systbl-args-$*),$(systbl-args)) \ +		   --abis $(subst $(space),$(comma),$(strip $(syscall_abis_$*))) \ +		   $< $@ + +all: $(generic-y) $(syscall-y) +	$(if $(unwanted),$(call cmd,remove)) +	@: + +$(obj)/%.h: $(srctree)/$(generic)/%.h +	$(call cmd,wrap) + +$(obj)/unistd_%.h: $(syscalltbl) $(syshdr) FORCE +	$(call if_changed,syshdr) + +$(obj)/unistd_compat_%.h: syscall_compat:=1 +$(obj)/unistd_compat_%.h: $(syscalltbl) $(syshdr) FORCE +	$(call if_changed,syshdr) + +$(obj)/syscall_table_%.h: $(syscalltbl) $(systbl) FORCE +	$(call if_changed,systbl) + +# Create output directory. Skip it if at least one old header exists +# since we know the output directory already exists. +ifeq ($(old-headers),) +$(shell mkdir -p $(obj)) +endif + +FORCE: + +.PHONY: $(PHONY) diff --git a/scripts/Makefile.dtbinst b/scripts/Makefile.dtbinst index 67956f6496a5..9d920419a62c 100644 --- a/scripts/Makefile.dtbinst +++ b/scripts/Makefile.dtbinst @@ -17,7 +17,7 @@ include $(srctree)/scripts/Kbuild.include  dst := $(INSTALL_DTBS_PATH)  quiet_cmd_dtb_install = INSTALL $@ -      cmd_dtb_install = install -D $< $@ +      cmd_dtb_install = install -D -m 0644 $< $@  $(dst)/%: $(obj)/%  	$(call cmd,dtb_install) diff --git a/scripts/Makefile.host b/scripts/Makefile.host index d35f55e0d141..e85be7721a48 100644 --- a/scripts/Makefile.host +++ b/scripts/Makefile.host @@ -146,7 +146,7 @@ $(call multi_depend, $(host-cxxmulti), , -objs -cxxobjs)  # Create .o file from a single .cc (C++) file  quiet_cmd_host-cxxobjs	= HOSTCXX $@        cmd_host-cxxobjs	= $(HOSTCXX) $(hostcxx_flags) -c -o $@ $< -$(host-cxxobjs): $(obj)/%.o: $(src)/%.cc FORCE +$(host-cxxobjs): $(obj)/%.o: $(obj)/%.cc FORCE  	$(call if_changed_dep,host-cxxobjs)  # Create executable from a single Rust crate (which may consist of diff --git a/scripts/Makefile.package b/scripts/Makefile.package index 38653f3e8108..bf016af8bf8a 100644 --- a/scripts/Makefile.package +++ b/scripts/Makefile.package @@ -103,7 +103,7 @@ debian-orig: private version = $(shell dpkg-parsechangelog -S Version | sed 's/-  debian-orig: private orig-name = $(source)_$(version).orig.tar$(debian-orig-suffix)  debian-orig: mkdebian-opts = --need-source  debian-orig: linux.tar$(debian-orig-suffix) debian -	$(Q)if [ "$(df  --output=target .. 2>/dev/null)" = "$(df --output=target $< 2>/dev/null)" ]; then \ +	$(Q)if [ "$$(df  --output=target .. 2>/dev/null)" = "$$(df --output=target $< 2>/dev/null)" ]; then \  		ln -f $< ../$(orig-name); \  	else \  		cp $< ../$(orig-name); \ diff --git a/scripts/atomic/kerneldoc/sub_and_test b/scripts/atomic/kerneldoc/sub_and_test index d3760f7749d4..96615e50836b 100644 --- a/scripts/atomic/kerneldoc/sub_and_test +++ b/scripts/atomic/kerneldoc/sub_and_test @@ -1,7 +1,7 @@  cat <<EOF  /**   * ${class}${atomicname}() - atomic subtract and test if zero with ${desc_order} ordering - * @i: ${int} value to add + * @i: ${int} value to subtract   * @v: pointer to ${atomic}_t   *   * Atomically updates @v to (@v - @i) with ${desc_order} ordering. diff --git a/scripts/const_structs.checkpatch b/scripts/const_structs.checkpatch index 52e5bfb61fd0..cc62980cfa6e 100644 --- a/scripts/const_structs.checkpatch +++ b/scripts/const_structs.checkpatch @@ -64,7 +64,17 @@ platform_suspend_ops  proc_ops  proto_ops  pwm_ops +reg_default +reg_field +reg_sequence  regmap_access_table +regmap_bus +regmap_config +regmap_irq +regmap_irq_chip +regmap_irq_sub_irq_map +regmap_range +regmap_range_cfg  regulator_ops  reset_control_ops  rpc_pipe_ops diff --git a/scripts/gcc-plugins/gcc-common.h b/scripts/gcc-plugins/gcc-common.h index 1ae39b9f4a95..3222c1070444 100644 --- a/scripts/gcc-plugins/gcc-common.h +++ b/scripts/gcc-plugins/gcc-common.h @@ -62,11 +62,7 @@  #include "pass_manager.h"  #include "predict.h"  #include "ipa-utils.h" - -#if BUILDING_GCC_VERSION >= 8000  #include "stringpool.h" -#endif -  #include "attribs.h"  #include "varasm.h"  #include "stor-layout.h" @@ -78,7 +74,6 @@  #include "context.h"  #include "tree-ssa-alias.h"  #include "tree-ssa.h" -#include "stringpool.h"  #if BUILDING_GCC_VERSION >= 7000  #include "tree-vrp.h"  #endif diff --git a/scripts/gdb/linux/Makefile b/scripts/gdb/linux/Makefile index fd1402c0a1a1..fcd32fcf3ae0 100644 --- a/scripts/gdb/linux/Makefile +++ b/scripts/gdb/linux/Makefile @@ -5,7 +5,7 @@ ifdef building_out_of_srctree  symlinks := $(patsubst $(src)/%,%,$(wildcard $(src)/*.py))  quiet_cmd_symlink = SYMLINK $@ -      cmd_symlink = ln -fsn $(patsubst $(obj)/%,$(src)/%,$@) $@ +      cmd_symlink = ln -fsn $(patsubst $(obj)/%,$(abspath $(src))/%,$@) $@  always-y += $(symlinks)  $(addprefix $(obj)/, $(symlinks)): FORCE diff --git a/scripts/kconfig/confdata.c b/scripts/kconfig/confdata.c index 387503daf0f7..85b53069ba7a 100644 --- a/scripts/kconfig/confdata.c +++ b/scripts/kconfig/confdata.c @@ -533,19 +533,6 @@ int conf_read(const char *name)  			 */  			if (sym->visible == no && !conf_unsaved)  				sym->flags &= ~SYMBOL_DEF_USER; -			switch (sym->type) { -			case S_STRING: -			case S_INT: -			case S_HEX: -				/* Reset a string value if it's out of range */ -				if (sym_string_within_range(sym, sym->def[S_DEF_USER].val)) -					break; -				sym->flags &= ~SYMBOL_VALID; -				conf_unsaved++; -				break; -			default: -				break; -			}  		}  	} diff --git a/scripts/kconfig/expr.c b/scripts/kconfig/expr.c index 4d95fce5f9a7..fcc190b67b6f 100644 --- a/scripts/kconfig/expr.c +++ b/scripts/kconfig/expr.c @@ -397,35 +397,6 @@ static struct expr *expr_eliminate_yn(struct expr *e)  }  /* - * bool FOO!=n => FOO - */ -struct expr *expr_trans_bool(struct expr *e) -{ -	if (!e) -		return NULL; -	switch (e->type) { -	case E_AND: -	case E_OR: -	case E_NOT: -		e->left.expr = expr_trans_bool(e->left.expr); -		e->right.expr = expr_trans_bool(e->right.expr); -		break; -	case E_UNEQUAL: -		// FOO!=n -> FOO -		if (e->left.sym->type == S_TRISTATE) { -			if (e->right.sym == &symbol_no) { -				e->type = E_SYMBOL; -				e->right.sym = NULL; -			} -		} -		break; -	default: -		; -	} -	return e; -} - -/*   * e1 || e2 -> ?   */  static struct expr *expr_join_or(struct expr *e1, struct expr *e2) diff --git a/scripts/kconfig/expr.h b/scripts/kconfig/expr.h index fa50fc45622e..7c0c242318bc 100644 --- a/scripts/kconfig/expr.h +++ b/scripts/kconfig/expr.h @@ -284,7 +284,6 @@ void expr_free(struct expr *e);  void expr_eliminate_eq(struct expr **ep1, struct expr **ep2);  int expr_eq(struct expr *e1, struct expr *e2);  tristate expr_calc_value(struct expr *e); -struct expr *expr_trans_bool(struct expr *e);  struct expr *expr_eliminate_dups(struct expr *e);  struct expr *expr_transform(struct expr *e);  int expr_contains_symbol(struct expr *dep, struct symbol *sym); diff --git a/scripts/kconfig/gconf.c b/scripts/kconfig/gconf.c index cc400ffe6615..e04dbafd3add 100644 --- a/scripts/kconfig/gconf.c +++ b/scripts/kconfig/gconf.c @@ -1422,7 +1422,6 @@ int main(int ac, char *av[])  	conf_parse(name);  	fixup_rootmenu(&rootmenu); -	conf_read(NULL);  	/* Load the interface and connect signals */  	init_main_window(glade_file); @@ -1430,6 +1429,8 @@ int main(int ac, char *av[])  	init_left_tree();  	init_right_tree(); +	conf_read(NULL); +  	switch (view_mode) {  	case SINGLE_VIEW:  		display_tree_part(); diff --git a/scripts/kconfig/menu.c b/scripts/kconfig/menu.c index 53151c5a6028..eef9b63cdf11 100644 --- a/scripts/kconfig/menu.c +++ b/scripts/kconfig/menu.c @@ -398,8 +398,6 @@ static void _menu_finalize(struct menu *parent, bool inside_choice)  				dep = expr_transform(dep);  				dep = expr_alloc_and(expr_copy(basedep), dep);  				dep = expr_eliminate_dups(dep); -				if (menu->sym && menu->sym->type != S_TRISTATE) -					dep = expr_trans_bool(dep);  				prop->visible.expr = dep;  				/* diff --git a/scripts/ld-version.sh b/scripts/ld-version.sh index a78b804b680c..b9513d224476 100755 --- a/scripts/ld-version.sh +++ b/scripts/ld-version.sh @@ -57,9 +57,11 @@ else  	fi  fi -# Some distributions append a package release number, as in 2.34-4.fc32 -# Trim the hyphen and any characters that follow. -version=${version%-*} +# There may be something after the version, such as a distribution's package +# release number (like Fedora's "2.34-4.fc32") or punctuation (like LLD briefly +# added before the "compatible with GNU linkers" string), so remove everything +# after just numbers and periods. +version=${version%%[!0-9.]*}  cversion=$(get_canonical_version $version)  min_cversion=$(get_canonical_version $min_version) diff --git a/scripts/link-vmlinux.sh b/scripts/link-vmlinux.sh index 46ce5d04dbeb..518c70b8db50 100755 --- a/scripts/link-vmlinux.sh +++ b/scripts/link-vmlinux.sh @@ -193,7 +193,7 @@ kallsyms_step()  mksysmap()  {  	info NM ${2} -	${NM} -n "${1}" | "${srctree}/scripts/mksysmap" > "${2}" +	${NM} -n "${1}" | sed -f "${srctree}/scripts/mksysmap" > "${2}"  }  sorttable() diff --git a/scripts/mod/modpost.c b/scripts/mod/modpost.c index 937294ff164f..f48d72d22dc2 100644 --- a/scripts/mod/modpost.c +++ b/scripts/mod/modpost.c @@ -1647,10 +1647,11 @@ static void read_symbols(const char *modname)  			namespace = get_next_modinfo(&info, "import_ns",  						     namespace);  		} + +		if (extra_warn && !get_modinfo(&info, "description")) +			warn("missing MODULE_DESCRIPTION() in %s\n", modname);  	} -	if (extra_warn && !get_modinfo(&info, "description")) -		warn("missing MODULE_DESCRIPTION() in %s\n", modname);  	for (sym = info.symtab_start; sym < info.symtab_stop; sym++) {  		symname = remove_dot(info.strtab + sym->st_name); diff --git a/scripts/package/kernel.spec b/scripts/package/kernel.spec index e095eb1e290e..c52d517b9364 100644 --- a/scripts/package/kernel.spec +++ b/scripts/package/kernel.spec @@ -57,7 +57,8 @@ patch -p1 < %{SOURCE2}  %install  mkdir -p %{buildroot}/lib/modules/%{KERNELRELEASE}  cp $(%{make} %{makeflags} -s image_name) %{buildroot}/lib/modules/%{KERNELRELEASE}/vmlinuz -%{make} %{makeflags} INSTALL_MOD_PATH=%{buildroot} modules_install +# DEPMOD=true makes depmod no-op. We do not package depmod-generated files. +%{make} %{makeflags} INSTALL_MOD_PATH=%{buildroot} DEPMOD=true modules_install  %{make} %{makeflags} INSTALL_HDR_PATH=%{buildroot}/usr headers_install  cp System.map %{buildroot}/lib/modules/%{KERNELRELEASE}  cp .config %{buildroot}/lib/modules/%{KERNELRELEASE}/config @@ -70,10 +71,7 @@ ln -fns /usr/src/kernels/%{KERNELRELEASE} %{buildroot}/lib/modules/%{KERNELRELEA  %endif  { -	for x in System.map config kernel modules.builtin \ -			modules.builtin.modinfo modules.order vmlinuz; do -		echo "/lib/modules/%{KERNELRELEASE}/${x}" -	done +	echo "/lib/modules/%{KERNELRELEASE}"  	for x in alias alias.bin builtin.alias.bin builtin.bin dep dep.bin \  					devname softdep symbols symbols.bin; do @@ -85,7 +83,6 @@ ln -fns /usr/src/kernels/%{KERNELRELEASE} %{buildroot}/lib/modules/%{KERNELRELEA  	done  	if [ -d "%{buildroot}/lib/modules/%{KERNELRELEASE}/dtb" ];then -		echo "/lib/modules/%{KERNELRELEASE}/dtb"  		find "%{buildroot}/lib/modules/%{KERNELRELEASE}/dtb" -printf "%%%ghost /boot/dtb-%{KERNELRELEASE}/%%P\n"  	fi diff --git a/scripts/syscall.tbl b/scripts/syscall.tbl new file mode 100644 index 000000000000..797e20ea99a2 --- /dev/null +++ b/scripts/syscall.tbl @@ -0,0 +1,404 @@ +# SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note +# +# This file contains the system call numbers for all of the +# more recently added architectures. +# +# As a basic principle, no duplication of functionality +# should be added, e.g. we don't use lseek when llseek +# is present. New architectures should use this file +# and implement the less feature-full calls in user space. +# +0	common	io_setup			sys_io_setup			compat_sys_io_setup +1	common	io_destroy			sys_io_destroy +2	common	io_submit			sys_io_submit			compat_sys_io_submit +3	common	io_cancel			sys_io_cancel +4	time32	io_getevents			sys_io_getevents_time32 +4	64	io_getevents			sys_io_getevents +5	common	setxattr			sys_setxattr +6	common	lsetxattr			sys_lsetxattr +7	common	fsetxattr			sys_fsetxattr +8	common	getxattr			sys_getxattr +9	common	lgetxattr			sys_lgetxattr +10	common	fgetxattr			sys_fgetxattr +11	common	listxattr			sys_listxattr +12	common	llistxattr			sys_llistxattr +13	common	flistxattr			sys_flistxattr +14	common	removexattr			sys_removexattr +15	common	lremovexattr			sys_lremovexattr +16	common	fremovexattr			sys_fremovexattr +17	common	getcwd				sys_getcwd +18	common	lookup_dcookie			sys_ni_syscall +19	common	eventfd2			sys_eventfd2 +20	common	epoll_create1			sys_epoll_create1 +21	common	epoll_ctl			sys_epoll_ctl +22	common	epoll_pwait			sys_epoll_pwait			compat_sys_epoll_pwait +23	common	dup				sys_dup +24	common	dup3				sys_dup3 +25	32	fcntl64				sys_fcntl64			compat_sys_fcntl64 +25	64	fcntl				sys_fcntl +26	common	inotify_init1			sys_inotify_init1 +27	common	inotify_add_watch		sys_inotify_add_watch +28	common	inotify_rm_watch		sys_inotify_rm_watch +29	common	ioctl				sys_ioctl			compat_sys_ioctl +30	common	ioprio_set			sys_ioprio_set +31	common	ioprio_get			sys_ioprio_get +32	common	flock				sys_flock +33	common	mknodat				sys_mknodat +34	common	mkdirat				sys_mkdirat +35	common	unlinkat			sys_unlinkat +36	common	symlinkat			sys_symlinkat +37	common	linkat				sys_linkat +# renameat is superseded with flags by renameat2 +38	renameat renameat			sys_renameat +39	common	umount2				sys_umount +40	common	mount				sys_mount +41	common	pivot_root			sys_pivot_root +43	32	statfs64			sys_statfs64			compat_sys_statfs64 +43	64	statfs				sys_statfs +44	32	fstatfs64			sys_fstatfs64			compat_sys_fstatfs64 +44	64	fstatfs				sys_fstatfs +45	32	truncate64			sys_truncate64			compat_sys_truncate64 +45	64	truncate			sys_truncate +46	32	ftruncate64			sys_ftruncate64			compat_sys_ftruncate64 +46	64	ftruncate			sys_ftruncate +47	common	fallocate			sys_fallocate			compat_sys_fallocate +48	common	faccessat			sys_faccessat +49	common	chdir				sys_chdir +50	common	fchdir				sys_fchdir +51	common	chroot				sys_chroot +52	common	fchmod				sys_fchmod +53	common	fchmodat			sys_fchmodat +54	common	fchownat			sys_fchownat +55	common	fchown				sys_fchown +56	common	openat				sys_openat +57	common	close				sys_close +58	common	vhangup				sys_vhangup +59	common	pipe2				sys_pipe2 +60	common	quotactl			sys_quotactl +61	common	getdents64			sys_getdents64 +62	32	llseek				sys_llseek +62	64	lseek				sys_lseek +63	common	read				sys_read +64	common	write				sys_write +65	common	readv				sys_readv			sys_readv +66	common	writev				sys_writev			sys_writev +67	common	pread64				sys_pread64			compat_sys_pread64 +68	common	pwrite64			sys_pwrite64			compat_sys_pwrite64 +69	common	preadv				sys_preadv			compat_sys_preadv +70	common	pwritev				sys_pwritev			compat_sys_pwritev +71	32	sendfile64			sys_sendfile64 +71	64	sendfile			sys_sendfile64 +72	time32	pselect6			sys_pselect6_time32		compat_sys_pselect6_time32 +72	64	pselect6			sys_pselect6 +73	time32	ppoll				sys_ppoll_time32		compat_sys_ppoll_time32 +73	64	ppoll				sys_ppoll +74	common	signalfd4			sys_signalfd4			compat_sys_signalfd4 +75	common	vmsplice			sys_vmsplice +76	common	splice				sys_splice +77	common	tee				sys_tee +78	common	readlinkat			sys_readlinkat +79	stat64	fstatat64			sys_fstatat64 +79	newstat	fstatat				sys_newfstatat +80	stat64	fstat64				sys_fstat64 +80	newstat	fstat				sys_newfstat +81	common	sync				sys_sync +82	common	fsync				sys_fsync +83	common	fdatasync			sys_fdatasync +84	common	sync_file_range			sys_sync_file_range		compat_sys_sync_file_range +85	common	timerfd_create			sys_timerfd_create +86	time32	timerfd_settime			sys_timerfd_settime32 +86	64	timerfd_settime			sys_timerfd_settime +87	time32	timerfd_gettime			sys_timerfd_gettime32 +87	64	timerfd_gettime			sys_timerfd_gettime +88	time32	utimensat			sys_utimensat_time32 +88	64	utimensat			sys_utimensat +89	common	acct				sys_acct +90	common	capget				sys_capget +91	common	capset				sys_capset +92	common	personality			sys_personality +93	common	exit				sys_exit +94	common	exit_group			sys_exit_group +95	common	waitid				sys_waitid			compat_sys_waitid +96	common	set_tid_address			sys_set_tid_address +97	common	unshare				sys_unshare +98	time32	futex				sys_futex_time32 +98	64	futex				sys_futex +99	common	set_robust_list			sys_set_robust_list		compat_sys_set_robust_list +100	common	get_robust_list			sys_get_robust_list		compat_sys_get_robust_list +101	time32	nanosleep			sys_nanosleep_time32 +101	64	nanosleep			sys_nanosleep +102	common	getitimer			sys_getitimer			compat_sys_getitimer +103	common	setitimer			sys_setitimer			compat_sys_setitimer +104	common	kexec_load			sys_kexec_load			compat_sys_kexec_load +105	common	init_module			sys_init_module +106	common	delete_module			sys_delete_module +107	common	timer_create			sys_timer_create		compat_sys_timer_create +108	time32	timer_gettime			sys_timer_gettime32 +108	64	timer_gettime			sys_timer_gettime +109	common	timer_getoverrun		sys_timer_getoverrun +110	time32	timer_settime			sys_timer_settime32 +110	64	timer_settime			sys_timer_settime +111	common	timer_delete			sys_timer_delete +112	time32	clock_settime			sys_clock_settime32 +112	64	clock_settime			sys_clock_settime +113	time32	clock_gettime			sys_clock_gettime32 +113	64	clock_gettime			sys_clock_gettime +114	time32	clock_getres			sys_clock_getres_time32 +114	64	clock_getres			sys_clock_getres +115	time32	clock_nanosleep			sys_clock_nanosleep_time32 +115	64	clock_nanosleep			sys_clock_nanosleep +116	common	syslog				sys_syslog +117	common	ptrace				sys_ptrace			compat_sys_ptrace +118	common	sched_setparam			sys_sched_setparam +119	common	sched_setscheduler		sys_sched_setscheduler +120	common	sched_getscheduler		sys_sched_getscheduler +121	common	sched_getparam			sys_sched_getparam +122	common	sched_setaffinity		sys_sched_setaffinity		compat_sys_sched_setaffinity +123	common	sched_getaffinity		sys_sched_getaffinity		compat_sys_sched_getaffinity +124	common	sched_yield			sys_sched_yield +125	common	sched_get_priority_max		sys_sched_get_priority_max +126	common	sched_get_priority_min		sys_sched_get_priority_min +127	time32	sched_rr_get_interval		sys_sched_rr_get_interval_time32 +127	64	sched_rr_get_interval		sys_sched_rr_get_interval +128	common	restart_syscall			sys_restart_syscall +129	common	kill				sys_kill +130	common	tkill				sys_tkill +131	common	tgkill				sys_tgkill +132	common	sigaltstack			sys_sigaltstack			compat_sys_sigaltstack +133	common	rt_sigsuspend			sys_rt_sigsuspend		compat_sys_rt_sigsuspend +134	common	rt_sigaction			sys_rt_sigaction		compat_sys_rt_sigaction +135	common	rt_sigprocmask			sys_rt_sigprocmask		compat_sys_rt_sigprocmask +136	common	rt_sigpending			sys_rt_sigpending		compat_sys_rt_sigpending +137	time32	rt_sigtimedwait			sys_rt_sigtimedwait_time32	compat_sys_rt_sigtimedwait_time32 +137	64	rt_sigtimedwait			sys_rt_sigtimedwait +138	common	rt_sigqueueinfo			sys_rt_sigqueueinfo		compat_sys_rt_sigqueueinfo +139	common	rt_sigreturn			sys_rt_sigreturn		compat_sys_rt_sigreturn +140	common	setpriority			sys_setpriority +141	common	getpriority			sys_getpriority +142	common	reboot				sys_reboot +143	common	setregid			sys_setregid +144	common	setgid				sys_setgid +145	common	setreuid			sys_setreuid +146	common	setuid				sys_setuid +147	common	setresuid			sys_setresuid +148	common	getresuid			sys_getresuid +149	common	setresgid			sys_setresgid +150	common	getresgid			sys_getresgid +151	common	setfsuid			sys_setfsuid +152	common	setfsgid			sys_setfsgid +153	common	times				sys_times			compat_sys_times +154	common	setpgid				sys_setpgid +155	common	getpgid				sys_getpgid +156	common	getsid				sys_getsid +157	common	setsid				sys_setsid +158	common	getgroups			sys_getgroups +159	common	setgroups			sys_setgroups +160	common	uname				sys_newuname +161	common	sethostname			sys_sethostname +162	common	setdomainname			sys_setdomainname +# getrlimit and setrlimit are superseded with prlimit64 +163	rlimit	getrlimit			sys_getrlimit			compat_sys_getrlimit +164	rlimit	setrlimit			sys_setrlimit			compat_sys_setrlimit +165	common	getrusage			sys_getrusage			compat_sys_getrusage +166	common	umask				sys_umask +167	common	prctl				sys_prctl +168	common	getcpu				sys_getcpu +169	time32	gettimeofday			sys_gettimeofday		compat_sys_gettimeofday +169	64	gettimeofday			sys_gettimeofday +170	time32	settimeofday			sys_settimeofday		compat_sys_settimeofday +170	64	settimeofday			sys_settimeofday +171	time32	adjtimex			sys_adjtimex_time32 +171	64	adjtimex			sys_adjtimex +172	common	getpid				sys_getpid +173	common	getppid				sys_getppid +174	common	getuid				sys_getuid +175	common	geteuid				sys_geteuid +176	common	getgid				sys_getgid +177	common	getegid				sys_getegid +178	common	gettid				sys_gettid +179	common	sysinfo				sys_sysinfo			compat_sys_sysinfo +180	common	mq_open				sys_mq_open			compat_sys_mq_open +181	common	mq_unlink			sys_mq_unlink +182	time32	mq_timedsend			sys_mq_timedsend_time32 +182	64	mq_timedsend			sys_mq_timedsend +183	time32	mq_timedreceive			sys_mq_timedreceive_time32 +183	64	mq_timedreceive			sys_mq_timedreceive +184	common	mq_notify			sys_mq_notify			compat_sys_mq_notify +185	common	mq_getsetattr			sys_mq_getsetattr		compat_sys_mq_getsetattr +186	common	msgget				sys_msgget +187	common	msgctl				sys_msgctl			compat_sys_msgctl +188	common	msgrcv				sys_msgrcv			compat_sys_msgrcv +189	common	msgsnd				sys_msgsnd			compat_sys_msgsnd +190	common	semget				sys_semget +191	common	semctl				sys_semctl			compat_sys_semctl +192	time32	semtimedop			sys_semtimedop_time32 +192	64	semtimedop			sys_semtimedop +193	common	semop				sys_semop +194	common	shmget				sys_shmget +195	common	shmctl				sys_shmctl			compat_sys_shmctl +196	common	shmat				sys_shmat			compat_sys_shmat +197	common	shmdt				sys_shmdt +198	common	socket				sys_socket +199	common	socketpair			sys_socketpair +200	common	bind				sys_bind +201	common	listen				sys_listen +202	common	accept				sys_accept +203	common	connect				sys_connect +204	common	getsockname			sys_getsockname +205	common	getpeername			sys_getpeername +206	common	sendto				sys_sendto +207	common	recvfrom			sys_recvfrom			compat_sys_recvfrom +208	common	setsockopt			sys_setsockopt			sys_setsockopt +209	common	getsockopt			sys_getsockopt			sys_getsockopt +210	common	shutdown			sys_shutdown +211	common	sendmsg				sys_sendmsg			compat_sys_sendmsg +212	common	recvmsg				sys_recvmsg			compat_sys_recvmsg +213	common	readahead			sys_readahead			compat_sys_readahead +214	common	brk				sys_brk +215	common	munmap				sys_munmap +216	common	mremap				sys_mremap +217	common	add_key				sys_add_key +218	common	request_key			sys_request_key +219	common	keyctl				sys_keyctl			compat_sys_keyctl +220	common	clone				sys_clone +221	common	execve				sys_execve			compat_sys_execve +222	32	mmap2				sys_mmap2 +222	64	mmap				sys_mmap +223	32	fadvise64_64			sys_fadvise64_64		compat_sys_fadvise64_64 +223	64	fadvise64			sys_fadvise64_64 +224	common	swapon				sys_swapon +225	common	swapoff				sys_swapoff +226	common	mprotect			sys_mprotect +227	common	msync				sys_msync +228	common	mlock				sys_mlock +229	common	munlock				sys_munlock +230	common	mlockall			sys_mlockall +231	common	munlockall			sys_munlockall +232	common	mincore				sys_mincore +233	common	madvise				sys_madvise +234	common	remap_file_pages		sys_remap_file_pages +235	common	mbind				sys_mbind +236	common	get_mempolicy			sys_get_mempolicy +237	common	set_mempolicy			sys_set_mempolicy +238	common	migrate_pages			sys_migrate_pages +239	common	move_pages			sys_move_pages +240	common	rt_tgsigqueueinfo		sys_rt_tgsigqueueinfo		compat_sys_rt_tgsigqueueinfo +241	common	perf_event_open			sys_perf_event_open +242	common	accept4				sys_accept4 +243	time32	recvmmsg			sys_recvmmsg_time32		compat_sys_recvmmsg_time32 +243	64	recvmmsg			sys_recvmmsg +# Architectures may provide up to 16 syscalls of their own between 244 and 259 +244	arc	cacheflush			sys_cacheflush +245	arc	arc_settls			sys_arc_settls +246	arc	arc_gettls			sys_arc_gettls +247	arc	sysfs				sys_sysfs +248	arc	arc_usr_cmpxchg			sys_arc_usr_cmpxchg + +244	csky	set_thread_area			sys_set_thread_area +245	csky	cacheflush			sys_cacheflush + +244	nios2	cacheflush			sys_cacheflush + +244	or1k	or1k_atomic			sys_or1k_atomic + +258	riscv	riscv_hwprobe			sys_riscv_hwprobe +259	riscv	riscv_flush_icache		sys_riscv_flush_icache + +260	time32	wait4				sys_wait4			compat_sys_wait4 +260	64	wait4				sys_wait4 +261	common	prlimit64			sys_prlimit64 +262	common	fanotify_init			sys_fanotify_init +263	common	fanotify_mark			sys_fanotify_mark +264	common	name_to_handle_at		sys_name_to_handle_at +265	common	open_by_handle_at		sys_open_by_handle_at +266	time32	clock_adjtime			sys_clock_adjtime32 +266	64	clock_adjtime			sys_clock_adjtime +267	common	syncfs				sys_syncfs +268	common	setns				sys_setns +269	common	sendmmsg			sys_sendmmsg			compat_sys_sendmmsg +270	common	process_vm_readv		sys_process_vm_readv +271	common	process_vm_writev		sys_process_vm_writev +272	common	kcmp				sys_kcmp +273	common	finit_module			sys_finit_module +274	common	sched_setattr			sys_sched_setattr +275	common	sched_getattr			sys_sched_getattr +276	common	renameat2			sys_renameat2 +277	common	seccomp				sys_seccomp +278	common	getrandom			sys_getrandom +279	common	memfd_create			sys_memfd_create +280	common	bpf				sys_bpf +281	common	execveat			sys_execveat			compat_sys_execveat +282	common	userfaultfd			sys_userfaultfd +283	common	membarrier			sys_membarrier +284	common	mlock2				sys_mlock2 +285	common	copy_file_range			sys_copy_file_range +286	common	preadv2				sys_preadv2			compat_sys_preadv2 +287	common	pwritev2			sys_pwritev2			compat_sys_pwritev2 +288	common	pkey_mprotect			sys_pkey_mprotect +289	common	pkey_alloc			sys_pkey_alloc +290	common	pkey_free			sys_pkey_free +291	common	statx				sys_statx +292	time32	io_pgetevents			sys_io_pgetevents_time32	compat_sys_io_pgetevents +292	64	io_pgetevents			sys_io_pgetevents +293	common	rseq				sys_rseq +294	common	kexec_file_load			sys_kexec_file_load +# 295 through 402 are unassigned to sync up with generic numbers don't use +403	32	clock_gettime64			sys_clock_gettime +404	32	clock_settime64			sys_clock_settime +405	32	clock_adjtime64			sys_clock_adjtime +406	32	clock_getres_time64		sys_clock_getres +407	32	clock_nanosleep_time64		sys_clock_nanosleep +408	32	timer_gettime64			sys_timer_gettime +409	32	timer_settime64			sys_timer_settime +410	32	timerfd_gettime64		sys_timerfd_gettime +411	32	timerfd_settime64		sys_timerfd_settime +412	32	utimensat_time64		sys_utimensat +413	32	pselect6_time64			sys_pselect6			compat_sys_pselect6_time64 +414	32	ppoll_time64			sys_ppoll			compat_sys_ppoll_time64 +416	32	io_pgetevents_time64		sys_io_pgetevents		compat_sys_io_pgetevents_time64 +417	32	recvmmsg_time64			sys_recvmmsg			compat_sys_recvmmsg_time64 +418	32	mq_timedsend_time64		sys_mq_timedsend +419	32	mq_timedreceive_time64		sys_mq_timedreceive +420	32	semtimedop_time64		sys_semtimedop +421	32	rt_sigtimedwait_time64		sys_rt_sigtimedwait		compat_sys_rt_sigtimedwait_time64 +422	32	futex_time64			sys_futex +423	32	sched_rr_get_interval_time64	sys_sched_rr_get_interval +424	common	pidfd_send_signal		sys_pidfd_send_signal +425	common	io_uring_setup			sys_io_uring_setup +426	common	io_uring_enter			sys_io_uring_enter +427	common	io_uring_register		sys_io_uring_register +428	common	open_tree			sys_open_tree +429	common	move_mount			sys_move_mount +430	common	fsopen				sys_fsopen +431	common	fsconfig			sys_fsconfig +432	common	fsmount				sys_fsmount +433	common	fspick				sys_fspick +434	common	pidfd_open			sys_pidfd_open +435	common	clone3				sys_clone3 +436	common	close_range			sys_close_range +437	common	openat2				sys_openat2 +438	common	pidfd_getfd			sys_pidfd_getfd +439	common	faccessat2			sys_faccessat2 +440	common	process_madvise			sys_process_madvise +441	common	epoll_pwait2			sys_epoll_pwait2		compat_sys_epoll_pwait2 +442	common	mount_setattr			sys_mount_setattr +443	common	quotactl_fd			sys_quotactl_fd +444	common	landlock_create_ruleset		sys_landlock_create_ruleset +445	common	landlock_add_rule		sys_landlock_add_rule +446	common	landlock_restrict_self		sys_landlock_restrict_self +447	memfd_secret	memfd_secret		sys_memfd_secret +448	common	process_mrelease		sys_process_mrelease +449	common	futex_waitv			sys_futex_waitv +450	common	set_mempolicy_home_node		sys_set_mempolicy_home_node +451	common	cachestat			sys_cachestat +452	common	fchmodat2			sys_fchmodat2 +453	common	map_shadow_stack		sys_map_shadow_stack +454	common	futex_wake			sys_futex_wake +455	common	futex_wait			sys_futex_wait +456	common	futex_requeue			sys_futex_requeue +457	common	statmount			sys_statmount +458	common	listmount			sys_listmount +459	common	lsm_get_self_attr		sys_lsm_get_self_attr +460	common	lsm_set_self_attr		sys_lsm_set_self_attr +461	common	lsm_list_modules		sys_lsm_list_modules +462	common	mseal				sys_mseal diff --git a/scripts/syscalltbl.sh b/scripts/syscalltbl.sh index 6abe143889ef..6a903b87a7c2 100755 --- a/scripts/syscalltbl.sh +++ b/scripts/syscalltbl.sh @@ -54,7 +54,7 @@ nxt=0  grep -E "^[0-9]+[[:space:]]+$abis" "$infile" | { -	while read nr abi name native compat ; do +	while read nr abi name native compat noreturn; do  		if [ $nxt -gt $nr ]; then  			echo "error: $infile: syscall table is not sorted or duplicates the same syscall number" >&2 @@ -66,7 +66,21 @@ grep -E "^[0-9]+[[:space:]]+$abis" "$infile" | {  			nxt=$((nxt + 1))  		done -		if [ -n "$compat" ]; then +		if [ "$compat" = "-" ]; then +			unset compat +		fi + +		if [ -n "$noreturn" ]; then +			if [ "$noreturn" != "noreturn" ]; then +				echo "error: $infile: invalid string \"$noreturn\" in 'noreturn' column" +				exit 1 +			fi +			if [ -n "$compat" ]; then +				echo "__SYSCALL_COMPAT_NORETURN($nr, $native, $compat)" +			else +				echo "__SYSCALL_NORETURN($nr, $native)" +			fi +		elif [ -n "$compat" ]; then  			echo "__SYSCALL_WITH_COMPAT($nr, $native, $compat)"  		elif [ -n "$native" ]; then  			echo "__SYSCALL($nr, $native)" |