diff options
| author | Dmitry Torokhov <dmitry.torokhov@gmail.com> | 2015-02-10 14:35:36 -0500 |
|---|---|---|
| committer | Dmitry Torokhov <dmitry.torokhov@gmail.com> | 2015-02-10 14:35:36 -0500 |
| commit | 4ba24fef3eb3b142197135223b90ced2f319cd53 (patch) | |
| tree | a20c125b27740ec7b4c761b11d801108e1b316b2 /scripts | |
| parent | 47c1ffb2b6b630894e9a16442611c056ab21c057 (diff) | |
| parent | 98a4a59ee31a12105a2b84f5b8b515ac2cb208ef (diff) | |
Merge branch 'next' into for-linus
Prepare first round of input updates for 3.20.
Diffstat (limited to 'scripts')
57 files changed, 1931 insertions, 273 deletions
diff --git a/scripts/Kbuild.include b/scripts/Kbuild.include index 8a9a4e1c7eab..edd2794569db 100644 --- a/scripts/Kbuild.include +++ b/scripts/Kbuild.include | |||
| @@ -171,13 +171,31 @@ ld-ifversion = $(shell [ $(call ld-version) $(1) $(2) ] && echo $(3)) | |||
| 171 | # Shorthand for $(Q)$(MAKE) -f scripts/Makefile.build obj= | 171 | # Shorthand for $(Q)$(MAKE) -f scripts/Makefile.build obj= |
| 172 | # Usage: | 172 | # Usage: |
| 173 | # $(Q)$(MAKE) $(build)=dir | 173 | # $(Q)$(MAKE) $(build)=dir |
| 174 | build := -f $(if $(KBUILD_SRC),$(srctree)/)scripts/Makefile.build obj | 174 | build := -f $(srctree)/scripts/Makefile.build obj |
| 175 | 175 | ||
| 176 | ### | 176 | ### |
| 177 | # Shorthand for $(Q)$(MAKE) -f scripts/Makefile.modbuiltin obj= | 177 | # Shorthand for $(Q)$(MAKE) -f scripts/Makefile.modbuiltin obj= |
| 178 | # Usage: | 178 | # Usage: |
| 179 | # $(Q)$(MAKE) $(modbuiltin)=dir | 179 | # $(Q)$(MAKE) $(modbuiltin)=dir |
| 180 | modbuiltin := -f $(if $(KBUILD_SRC),$(srctree)/)scripts/Makefile.modbuiltin obj | 180 | modbuiltin := -f $(srctree)/scripts/Makefile.modbuiltin obj |
| 181 | |||
| 182 | ### | ||
| 183 | # Shorthand for $(Q)$(MAKE) -f scripts/Makefile.dtbinst obj= | ||
| 184 | # Usage: | ||
| 185 | # $(Q)$(MAKE) $(dtbinst)=dir | ||
| 186 | dtbinst := -f $(if $(KBUILD_SRC),$(srctree)/)scripts/Makefile.dtbinst obj | ||
| 187 | |||
| 188 | ### | ||
| 189 | # Shorthand for $(Q)$(MAKE) -f scripts/Makefile.clean obj= | ||
| 190 | # Usage: | ||
| 191 | # $(Q)$(MAKE) $(clean)=dir | ||
| 192 | clean := -f $(srctree)/scripts/Makefile.clean obj | ||
| 193 | |||
| 194 | ### | ||
| 195 | # Shorthand for $(Q)$(MAKE) -f scripts/Makefile.headersinst obj= | ||
| 196 | # Usage: | ||
| 197 | # $(Q)$(MAKE) $(hdr-inst)=dir | ||
| 198 | hdr-inst := -f $(srctree)/scripts/Makefile.headersinst obj | ||
| 181 | 199 | ||
| 182 | # Prefix -I with $(srctree) if it is not an absolute path. | 200 | # Prefix -I with $(srctree) if it is not an absolute path. |
| 183 | # skip if -I has no parameter | 201 | # skip if -I has no parameter |
diff --git a/scripts/Makefile.build b/scripts/Makefile.build index bf3e6778cd71..649ce6844033 100644 --- a/scripts/Makefile.build +++ b/scripts/Makefile.build | |||
| @@ -79,11 +79,11 @@ endif | |||
| 79 | 79 | ||
| 80 | # =========================================================================== | 80 | # =========================================================================== |
| 81 | 81 | ||
| 82 | ifneq ($(strip $(lib-y) $(lib-m) $(lib-n) $(lib-)),) | 82 | ifneq ($(strip $(lib-y) $(lib-m) $(lib-)),) |
| 83 | lib-target := $(obj)/lib.a | 83 | lib-target := $(obj)/lib.a |
| 84 | endif | 84 | endif |
| 85 | 85 | ||
| 86 | ifneq ($(strip $(obj-y) $(obj-m) $(obj-n) $(obj-) $(subdir-m) $(lib-target)),) | 86 | ifneq ($(strip $(obj-y) $(obj-m) $(obj-) $(subdir-m) $(lib-target)),) |
| 87 | builtin-target := $(obj)/built-in.o | 87 | builtin-target := $(obj)/built-in.o |
| 88 | endif | 88 | endif |
| 89 | 89 | ||
| @@ -382,16 +382,14 @@ cmd_link_multi-y = $(LD) $(ld_flags) -r -o $@ $(link_multi_deps) $(cmd_secanalys | |||
| 382 | quiet_cmd_link_multi-m = LD [M] $@ | 382 | quiet_cmd_link_multi-m = LD [M] $@ |
| 383 | cmd_link_multi-m = $(cmd_link_multi-y) | 383 | cmd_link_multi-m = $(cmd_link_multi-y) |
| 384 | 384 | ||
| 385 | # We would rather have a list of rules like | 385 | $(multi-used-y): FORCE |
| 386 | # foo.o: $(foo-objs) | ||
| 387 | # but that's not so easy, so we rather make all composite objects depend | ||
| 388 | # on the set of all their parts | ||
| 389 | $(multi-used-y) : %.o: $(multi-objs-y) FORCE | ||
| 390 | $(call if_changed,link_multi-y) | 386 | $(call if_changed,link_multi-y) |
| 387 | $(call multi_depend, $(multi-used-y), .o, -objs -y) | ||
| 391 | 388 | ||
| 392 | $(multi-used-m) : %.o: $(multi-objs-m) FORCE | 389 | $(multi-used-m): FORCE |
| 393 | $(call if_changed,link_multi-m) | 390 | $(call if_changed,link_multi-m) |
| 394 | @{ echo $(@:.o=.ko); echo $(link_multi_deps); } > $(MODVERDIR)/$(@F:.o=.mod) | 391 | @{ echo $(@:.o=.ko); echo $(link_multi_deps); } > $(MODVERDIR)/$(@F:.o=.mod) |
| 392 | $(call multi_depend, $(multi-used-m), .o, -objs -y) | ||
| 395 | 393 | ||
| 396 | targets += $(multi-used-y) $(multi-used-m) | 394 | targets += $(multi-used-y) $(multi-used-m) |
| 397 | 395 | ||
diff --git a/scripts/Makefile.clean b/scripts/Makefile.clean index a651cee84f2a..627f8cbbedb8 100644 --- a/scripts/Makefile.clean +++ b/scripts/Makefile.clean | |||
| @@ -7,10 +7,7 @@ src := $(obj) | |||
| 7 | PHONY := __clean | 7 | PHONY := __clean |
| 8 | __clean: | 8 | __clean: |
| 9 | 9 | ||
| 10 | # Shorthand for $(Q)$(MAKE) scripts/Makefile.clean obj=dir | 10 | include scripts/Kbuild.include |
| 11 | # Usage: | ||
| 12 | # $(Q)$(MAKE) $(clean)=dir | ||
| 13 | clean := -f $(if $(KBUILD_SRC),$(srctree)/)scripts/Makefile.clean obj | ||
| 14 | 11 | ||
| 15 | # The filename Kbuild has precedence over Makefile | 12 | # The filename Kbuild has precedence over Makefile |
| 16 | kbuild-dir := $(if $(filter /%,$(src)),$(src),$(srctree)/$(src)) | 13 | kbuild-dir := $(if $(filter /%,$(src)),$(src),$(srctree)/$(src)) |
| @@ -23,15 +20,13 @@ __subdir-y := $(patsubst %/,%,$(filter %/, $(obj-y))) | |||
| 23 | subdir-y += $(__subdir-y) | 20 | subdir-y += $(__subdir-y) |
| 24 | __subdir-m := $(patsubst %/,%,$(filter %/, $(obj-m))) | 21 | __subdir-m := $(patsubst %/,%,$(filter %/, $(obj-m))) |
| 25 | subdir-m += $(__subdir-m) | 22 | subdir-m += $(__subdir-m) |
| 26 | __subdir-n := $(patsubst %/,%,$(filter %/, $(obj-n))) | ||
| 27 | subdir-n += $(__subdir-n) | ||
| 28 | __subdir- := $(patsubst %/,%,$(filter %/, $(obj-))) | 23 | __subdir- := $(patsubst %/,%,$(filter %/, $(obj-))) |
| 29 | subdir- += $(__subdir-) | 24 | subdir- += $(__subdir-) |
| 30 | 25 | ||
| 31 | # Subdirectories we need to descend into | 26 | # Subdirectories we need to descend into |
| 32 | 27 | ||
| 33 | subdir-ym := $(sort $(subdir-y) $(subdir-m)) | 28 | subdir-ym := $(sort $(subdir-y) $(subdir-m)) |
| 34 | subdir-ymn := $(sort $(subdir-ym) $(subdir-n) $(subdir-)) | 29 | subdir-ymn := $(sort $(subdir-ym) $(subdir-)) |
| 35 | 30 | ||
| 36 | # Add subdir path | 31 | # Add subdir path |
| 37 | 32 | ||
| @@ -47,19 +42,19 @@ __clean-files := $(extra-y) $(extra-m) $(extra-) \ | |||
| 47 | 42 | ||
| 48 | __clean-files := $(filter-out $(no-clean-files), $(__clean-files)) | 43 | __clean-files := $(filter-out $(no-clean-files), $(__clean-files)) |
| 49 | 44 | ||
| 50 | # as clean-files is given relative to the current directory, this adds | 45 | # clean-files is given relative to the current directory, unless it |
| 51 | # a $(obj) prefix, except for absolute paths | 46 | # starts with $(objtree)/ (which means "./", so do not add "./" unless |
| 47 | # you want to delete a file from the toplevel object directory). | ||
| 52 | 48 | ||
| 53 | __clean-files := $(wildcard \ | 49 | __clean-files := $(wildcard \ |
| 54 | $(addprefix $(obj)/, $(filter-out /%, $(__clean-files))) \ | 50 | $(addprefix $(obj)/, $(filter-out $(objtree)/%, $(__clean-files))) \ |
| 55 | $(filter /%, $(__clean-files))) | 51 | $(filter $(objtree)/%, $(__clean-files))) |
| 56 | 52 | ||
| 57 | # as clean-dirs is given relative to the current directory, this adds | 53 | # same as clean-files |
| 58 | # a $(obj) prefix, except for absolute paths | ||
| 59 | 54 | ||
| 60 | __clean-dirs := $(wildcard \ | 55 | __clean-dirs := $(wildcard \ |
| 61 | $(addprefix $(obj)/, $(filter-out /%, $(clean-dirs))) \ | 56 | $(addprefix $(obj)/, $(filter-out $(objtree)/%, $(clean-dirs))) \ |
| 62 | $(filter /%, $(clean-dirs))) | 57 | $(filter $(objtree)/%, $(clean-dirs))) |
| 63 | 58 | ||
| 64 | # ========================================================================== | 59 | # ========================================================================== |
| 65 | 60 | ||
| @@ -93,11 +88,6 @@ PHONY += $(subdir-ymn) | |||
| 93 | $(subdir-ymn): | 88 | $(subdir-ymn): |
| 94 | $(Q)$(MAKE) $(clean)=$@ | 89 | $(Q)$(MAKE) $(clean)=$@ |
| 95 | 90 | ||
| 96 | # If quiet is set, only print short version of command | ||
| 97 | |||
| 98 | cmd = @$(if $($(quiet)cmd_$(1)),echo ' $($(quiet)cmd_$(1))' &&) $(cmd_$(1)) | ||
| 99 | |||
| 100 | |||
| 101 | # Declare the contents of the .PHONY variable as phony. We keep that | 91 | # Declare the contents of the .PHONY variable as phony. We keep that |
| 102 | # information in a variable se we can use it in if_changed and friends. | 92 | # information in a variable se we can use it in if_changed and friends. |
| 103 | 93 | ||
diff --git a/scripts/Makefile.dtbinst b/scripts/Makefile.dtbinst new file mode 100644 index 000000000000..909ed7a2ac61 --- /dev/null +++ b/scripts/Makefile.dtbinst | |||
| @@ -0,0 +1,51 @@ | |||
| 1 | # ========================================================================== | ||
| 2 | # Installing dtb files | ||
| 3 | # | ||
| 4 | # Installs all dtb files listed in $(dtb-y) either in the | ||
| 5 | # INSTALL_DTBS_PATH directory or the default location: | ||
| 6 | # | ||
| 7 | # $INSTALL_PATH/dtbs/$KERNELRELEASE | ||
| 8 | # | ||
| 9 | # Traverse through subdirectories listed in $(dts-dirs). | ||
| 10 | # ========================================================================== | ||
| 11 | |||
| 12 | src := $(obj) | ||
| 13 | |||
| 14 | PHONY := __dtbs_install | ||
| 15 | __dtbs_install: | ||
| 16 | |||
| 17 | export dtbinst-root ?= $(obj) | ||
| 18 | |||
| 19 | include include/config/auto.conf | ||
| 20 | include scripts/Kbuild.include | ||
| 21 | include $(srctree)/$(obj)/Makefile | ||
| 22 | |||
| 23 | PHONY += __dtbs_install_prep | ||
| 24 | __dtbs_install_prep: | ||
| 25 | ifeq ("$(dtbinst-root)", "$(obj)") | ||
| 26 | $(Q)if [ -d $(INSTALL_DTBS_PATH).old ]; then rm -rf $(INSTALL_DTBS_PATH).old; fi | ||
| 27 | $(Q)if [ -d $(INSTALL_DTBS_PATH) ]; then mv $(INSTALL_DTBS_PATH) $(INSTALL_DTBS_PATH).old; fi | ||
| 28 | $(Q)mkdir -p $(INSTALL_DTBS_PATH) | ||
| 29 | endif | ||
| 30 | |||
| 31 | dtbinst-files := $(dtb-y) | ||
| 32 | dtbinst-dirs := $(dts-dirs) | ||
| 33 | |||
| 34 | # Helper targets for Installing DTBs into the boot directory | ||
| 35 | quiet_cmd_dtb_install = INSTALL $< | ||
| 36 | cmd_dtb_install = mkdir -p $(2); cp $< $(2) | ||
| 37 | |||
| 38 | install-dir = $(patsubst $(dtbinst-root)%,$(INSTALL_DTBS_PATH)%,$(obj)) | ||
| 39 | |||
| 40 | $(dtbinst-files) $(dtbinst-dirs): | __dtbs_install_prep | ||
| 41 | |||
| 42 | $(dtbinst-files): %.dtb: $(obj)/%.dtb | ||
| 43 | $(call cmd,dtb_install,$(install-dir)) | ||
| 44 | |||
| 45 | $(dtbinst-dirs): | ||
| 46 | $(Q)$(MAKE) $(dtbinst)=$(obj)/$@ | ||
| 47 | |||
| 48 | PHONY += $(dtbinst-files) $(dtbinst-dirs) | ||
| 49 | __dtbs_install: $(dtbinst-files) $(dtbinst-dirs) | ||
| 50 | |||
| 51 | .PHONY: $(PHONY) | ||
diff --git a/scripts/Makefile.fwinst b/scripts/Makefile.fwinst index d8e335eed226..5b698add4f31 100644 --- a/scripts/Makefile.fwinst +++ b/scripts/Makefile.fwinst | |||
| @@ -2,7 +2,7 @@ | |||
| 2 | # Installing firmware | 2 | # Installing firmware |
| 3 | # | 3 | # |
| 4 | # We don't include the .config, so all firmware files are in $(fw-shipped-) | 4 | # We don't include the .config, so all firmware files are in $(fw-shipped-) |
| 5 | # rather than in $(fw-shipped-y) or $(fw-shipped-n). | 5 | # rather than in $(fw-shipped-y) or $(fw-shipped-m). |
| 6 | # ========================================================================== | 6 | # ========================================================================== |
| 7 | 7 | ||
| 8 | INSTALL := install | 8 | INSTALL := install |
diff --git a/scripts/Makefile.headersinst b/scripts/Makefile.headersinst index 8ccf83056a7a..1106d6ca3a38 100644 --- a/scripts/Makefile.headersinst +++ b/scripts/Makefile.headersinst | |||
| @@ -122,7 +122,6 @@ $(check-file): scripts/headers_check.pl $(output-files) FORCE | |||
| 122 | endif | 122 | endif |
| 123 | 123 | ||
| 124 | # Recursion | 124 | # Recursion |
| 125 | hdr-inst := -rR -f $(srctree)/scripts/Makefile.headersinst obj | ||
| 126 | .PHONY: $(subdirs) | 125 | .PHONY: $(subdirs) |
| 127 | $(subdirs): | 126 | $(subdirs): |
| 128 | $(Q)$(MAKE) $(hdr-inst)=$(obj)/$@ dst=$(_dst)/$@ | 127 | $(Q)$(MAKE) $(hdr-inst)=$(obj)/$@ dst=$(_dst)/$@ |
diff --git a/scripts/Makefile.host b/scripts/Makefile.host index ab5980f91714..133edfae5b8a 100644 --- a/scripts/Makefile.host +++ b/scripts/Makefile.host | |||
| @@ -96,8 +96,9 @@ quiet_cmd_host-cmulti = HOSTLD $@ | |||
| 96 | cmd_host-cmulti = $(HOSTCC) $(HOSTLDFLAGS) -o $@ \ | 96 | cmd_host-cmulti = $(HOSTCC) $(HOSTLDFLAGS) -o $@ \ |
| 97 | $(addprefix $(obj)/,$($(@F)-objs)) \ | 97 | $(addprefix $(obj)/,$($(@F)-objs)) \ |
| 98 | $(HOST_LOADLIBES) $(HOSTLOADLIBES_$(@F)) | 98 | $(HOST_LOADLIBES) $(HOSTLOADLIBES_$(@F)) |
| 99 | $(host-cmulti): $(obj)/%: $(host-cobjs) FORCE | 99 | $(host-cmulti): FORCE |
| 100 | $(call if_changed,host-cmulti) | 100 | $(call if_changed,host-cmulti) |
| 101 | $(call multi_depend, $(host-cmulti), , -objs) | ||
| 101 | 102 | ||
| 102 | # Create .o file from a single .c file | 103 | # Create .o file from a single .c file |
| 103 | # host-cobjs -> .o | 104 | # host-cobjs -> .o |
| @@ -113,8 +114,9 @@ quiet_cmd_host-cxxmulti = HOSTLD $@ | |||
| 113 | $(foreach o,objs cxxobjs,\ | 114 | $(foreach o,objs cxxobjs,\ |
| 114 | $(addprefix $(obj)/,$($(@F)-$(o)))) \ | 115 | $(addprefix $(obj)/,$($(@F)-$(o)))) \ |
| 115 | $(HOST_LOADLIBES) $(HOSTLOADLIBES_$(@F)) | 116 | $(HOST_LOADLIBES) $(HOSTLOADLIBES_$(@F)) |
| 116 | $(host-cxxmulti): $(obj)/%: $(host-cobjs) $(host-cxxobjs) FORCE | 117 | $(host-cxxmulti): FORCE |
| 117 | $(call if_changed,host-cxxmulti) | 118 | $(call if_changed,host-cxxmulti) |
| 119 | $(call multi_depend, $(host-cxxmulti), , -objs -cxxobjs) | ||
| 118 | 120 | ||
| 119 | # Create .o file from a single .cc (C++) file | 121 | # Create .o file from a single .cc (C++) file |
| 120 | quiet_cmd_host-cxxobjs = HOSTCXX $@ | 122 | quiet_cmd_host-cxxobjs = HOSTCXX $@ |
diff --git a/scripts/Makefile.lib b/scripts/Makefile.lib index 260bf8acfce9..511755200634 100644 --- a/scripts/Makefile.lib +++ b/scripts/Makefile.lib | |||
| @@ -159,6 +159,15 @@ dtc_cpp_flags = -Wp,-MD,$(depfile).pre.tmp -nostdinc \ | |||
| 159 | modname-multi = $(sort $(foreach m,$(multi-used),\ | 159 | modname-multi = $(sort $(foreach m,$(multi-used),\ |
| 160 | $(if $(filter $(subst $(obj)/,,$*.o), $($(m:.o=-objs)) $($(m:.o=-y))),$(m:.o=)))) | 160 | $(if $(filter $(subst $(obj)/,,$*.o), $($(m:.o=-objs)) $($(m:.o=-y))),$(m:.o=)))) |
| 161 | 161 | ||
| 162 | # Useful for describing the dependency of composite objects | ||
| 163 | # Usage: | ||
| 164 | # $(call multi_depend, multi_used_targets, suffix_to_remove, suffix_to_add) | ||
| 165 | define multi_depend | ||
| 166 | $(foreach m, $(notdir $1), \ | ||
| 167 | $(eval $(obj)/$m: \ | ||
| 168 | $(addprefix $(obj)/, $(foreach s, $3, $($(m:%$(strip $2)=%$(s))))))) | ||
| 169 | endef | ||
| 170 | |||
| 162 | ifdef REGENERATE_PARSERS | 171 | ifdef REGENERATE_PARSERS |
| 163 | 172 | ||
| 164 | # GPERF | 173 | # GPERF |
| @@ -274,18 +283,6 @@ $(obj)/%.dtb: $(src)/%.dts FORCE | |||
| 274 | 283 | ||
| 275 | dtc-tmp = $(subst $(comma),_,$(dot-target).dts.tmp) | 284 | dtc-tmp = $(subst $(comma),_,$(dot-target).dts.tmp) |
| 276 | 285 | ||
| 277 | # Helper targets for Installing DTBs into the boot directory | ||
| 278 | quiet_cmd_dtb_install = INSTALL $< | ||
| 279 | cmd_dtb_install = cp $< $(2) | ||
| 280 | |||
| 281 | _dtbinst_pre_: | ||
| 282 | $(Q)if [ -d $(INSTALL_DTBS_PATH).old ]; then rm -rf $(INSTALL_DTBS_PATH).old; fi | ||
| 283 | $(Q)if [ -d $(INSTALL_DTBS_PATH) ]; then mv $(INSTALL_DTBS_PATH) $(INSTALL_DTBS_PATH).old; fi | ||
| 284 | $(Q)mkdir -p $(INSTALL_DTBS_PATH) | ||
| 285 | |||
| 286 | %.dtb_dtbinst_: $(obj)/%.dtb _dtbinst_pre_ | ||
| 287 | $(call cmd,dtb_install,$(INSTALL_DTBS_PATH)) | ||
| 288 | |||
| 289 | # Bzip2 | 286 | # Bzip2 |
| 290 | # --------------------------------------------------------------------------- | 287 | # --------------------------------------------------------------------------- |
| 291 | 288 | ||
diff --git a/scripts/Makefile.modinst b/scripts/Makefile.modinst index 95ec7b35e8b6..e48a4e9d8868 100644 --- a/scripts/Makefile.modinst +++ b/scripts/Makefile.modinst | |||
| @@ -18,7 +18,12 @@ __modinst: $(modules) | |||
| 18 | 18 | ||
| 19 | # Don't stop modules_install if we can't sign external modules. | 19 | # Don't stop modules_install if we can't sign external modules. |
| 20 | quiet_cmd_modules_install = INSTALL $@ | 20 | quiet_cmd_modules_install = INSTALL $@ |
| 21 | cmd_modules_install = mkdir -p $(2); cp $@ $(2) ; $(mod_strip_cmd) $(2)/$(notdir $@) ; $(mod_sign_cmd) $(2)/$(notdir $@) $(patsubst %,|| true,$(KBUILD_EXTMOD)) | 21 | cmd_modules_install = \ |
| 22 | mkdir -p $(2) ; \ | ||
| 23 | cp $@ $(2) ; \ | ||
| 24 | $(mod_strip_cmd) $(2)/$(notdir $@) ; \ | ||
| 25 | $(mod_sign_cmd) $(2)/$(notdir $@) $(patsubst %,|| true,$(KBUILD_EXTMOD)) ; \ | ||
| 26 | $(mod_compress_cmd) $(2)/$(notdir $@) | ||
| 22 | 27 | ||
| 23 | # Modules built outside the kernel source tree go into extra by default | 28 | # Modules built outside the kernel source tree go into extra by default |
| 24 | INSTALL_MOD_DIR ?= extra | 29 | INSTALL_MOD_DIR ?= extra |
diff --git a/scripts/Makefile.modsign b/scripts/Makefile.modsign index abfda626dbad..b6ac7084da79 100644 --- a/scripts/Makefile.modsign +++ b/scripts/Makefile.modsign | |||
| @@ -7,7 +7,7 @@ __modsign: | |||
| 7 | 7 | ||
| 8 | include scripts/Kbuild.include | 8 | include scripts/Kbuild.include |
| 9 | 9 | ||
| 10 | __modules := $(sort $(shell grep -h '\.ko' /dev/null $(wildcard $(MODVERDIR)/*.mod))) | 10 | __modules := $(sort $(shell grep -h '\.ko$$' /dev/null $(wildcard $(MODVERDIR)/*.mod))) |
| 11 | modules := $(patsubst %.o,%.ko,$(wildcard $(__modules:.ko=.o))) | 11 | modules := $(patsubst %.o,%.ko,$(wildcard $(__modules:.ko=.o))) |
| 12 | 12 | ||
| 13 | PHONY += $(modules) | 13 | PHONY += $(modules) |
diff --git a/scripts/bloat-o-meter b/scripts/bloat-o-meter index 549d0ab8c662..23e78dcd12bf 100755 --- a/scripts/bloat-o-meter +++ b/scripts/bloat-o-meter | |||
| @@ -20,6 +20,8 @@ def getsizes(file): | |||
| 20 | if type in "tTdDbBrR": | 20 | if type in "tTdDbBrR": |
| 21 | # strip generated symbols | 21 | # strip generated symbols |
| 22 | if name.startswith("__mod_"): continue | 22 | if name.startswith("__mod_"): continue |
| 23 | if name.startswith("SyS_"): continue | ||
| 24 | if name.startswith("compat_SyS_"): continue | ||
| 23 | if name == "linux_banner": continue | 25 | if name == "linux_banner": continue |
| 24 | # statics and some other optimizations adds random .NUMBER | 26 | # statics and some other optimizations adds random .NUMBER |
| 25 | name = re.sub(r'\.[0-9]+', '', name) | 27 | name = re.sub(r'\.[0-9]+', '', name) |
diff --git a/scripts/bootgraph.pl b/scripts/bootgraph.pl index 9ca667bcaee9..9ca667bcaee9 100644..100755 --- a/scripts/bootgraph.pl +++ b/scripts/bootgraph.pl | |||
diff --git a/scripts/checkkconfigsymbols.py b/scripts/checkkconfigsymbols.py new file mode 100644 index 000000000000..e9cc689033fe --- /dev/null +++ b/scripts/checkkconfigsymbols.py | |||
| @@ -0,0 +1,139 @@ | |||
| 1 | #!/usr/bin/env python | ||
| 2 | |||
| 3 | """Find Kconfig identifiers that are referenced but not defined.""" | ||
| 4 | |||
| 5 | # (c) 2014 Valentin Rothberg <valentinrothberg@gmail.com> | ||
| 6 | # (c) 2014 Stefan Hengelein <stefan.hengelein@fau.de> | ||
| 7 | # | ||
| 8 | # Licensed under the terms of the GNU GPL License version 2 | ||
| 9 | |||
| 10 | |||
| 11 | import os | ||
| 12 | import re | ||
| 13 | from subprocess import Popen, PIPE, STDOUT | ||
| 14 | |||
| 15 | |||
| 16 | # regex expressions | ||
| 17 | OPERATORS = r"&|\(|\)|\||\!" | ||
| 18 | FEATURE = r"(?:\w*[A-Z0-9]\w*){2,}" | ||
| 19 | DEF = r"^\s*(?:menu){,1}config\s+(" + FEATURE + r")\s*" | ||
| 20 | EXPR = r"(?:" + OPERATORS + r"|\s|" + FEATURE + r")+" | ||
| 21 | STMT = r"^\s*(?:if|select|depends\s+on)\s+" + EXPR | ||
| 22 | SOURCE_FEATURE = r"(?:\W|\b)+[D]{,1}CONFIG_(" + FEATURE + r")" | ||
| 23 | |||
| 24 | # regex objects | ||
| 25 | REGEX_FILE_KCONFIG = re.compile(r".*Kconfig[\.\w+\-]*$") | ||
| 26 | REGEX_FEATURE = re.compile(r"(" + FEATURE + r")") | ||
| 27 | REGEX_SOURCE_FEATURE = re.compile(SOURCE_FEATURE) | ||
| 28 | REGEX_KCONFIG_DEF = re.compile(DEF) | ||
| 29 | REGEX_KCONFIG_EXPR = re.compile(EXPR) | ||
| 30 | REGEX_KCONFIG_STMT = re.compile(STMT) | ||
| 31 | REGEX_KCONFIG_HELP = re.compile(r"^\s+(help|---help---)\s*$") | ||
| 32 | REGEX_FILTER_FEATURES = re.compile(r"[A-Za-z0-9]$") | ||
| 33 | |||
| 34 | |||
| 35 | def main(): | ||
| 36 | """Main function of this module.""" | ||
| 37 | source_files = [] | ||
| 38 | kconfig_files = [] | ||
| 39 | defined_features = set() | ||
| 40 | referenced_features = dict() # {feature: [files]} | ||
| 41 | |||
| 42 | # use 'git ls-files' to get the worklist | ||
| 43 | pop = Popen("git ls-files", stdout=PIPE, stderr=STDOUT, shell=True) | ||
| 44 | (stdout, _) = pop.communicate() # wait until finished | ||
| 45 | if len(stdout) > 0 and stdout[-1] == "\n": | ||
| 46 | stdout = stdout[:-1] | ||
| 47 | |||
| 48 | for gitfile in stdout.rsplit("\n"): | ||
| 49 | if ".git" in gitfile or "ChangeLog" in gitfile or \ | ||
| 50 | ".log" in gitfile or os.path.isdir(gitfile): | ||
| 51 | continue | ||
| 52 | if REGEX_FILE_KCONFIG.match(gitfile): | ||
| 53 | kconfig_files.append(gitfile) | ||
| 54 | else: | ||
| 55 | # all non-Kconfig files are checked for consistency | ||
| 56 | source_files.append(gitfile) | ||
| 57 | |||
| 58 | for sfile in source_files: | ||
| 59 | parse_source_file(sfile, referenced_features) | ||
| 60 | |||
| 61 | for kfile in kconfig_files: | ||
| 62 | parse_kconfig_file(kfile, defined_features, referenced_features) | ||
| 63 | |||
| 64 | print "Undefined symbol used\tFile list" | ||
| 65 | for feature in sorted(referenced_features): | ||
| 66 | # filter some false positives | ||
| 67 | if feature == "FOO" or feature == "BAR" or \ | ||
| 68 | feature == "FOO_BAR" or feature == "XXX": | ||
| 69 | continue | ||
| 70 | if feature not in defined_features: | ||
| 71 | if feature.endswith("_MODULE"): | ||
| 72 | # avoid false positives for kernel modules | ||
| 73 | if feature[:-len("_MODULE")] in defined_features: | ||
| 74 | continue | ||
| 75 | files = referenced_features.get(feature) | ||
| 76 | print "%s\t%s" % (feature, ", ".join(files)) | ||
| 77 | |||
| 78 | |||
| 79 | def parse_source_file(sfile, referenced_features): | ||
| 80 | """Parse @sfile for referenced Kconfig features.""" | ||
| 81 | lines = [] | ||
| 82 | with open(sfile, "r") as stream: | ||
| 83 | lines = stream.readlines() | ||
| 84 | |||
| 85 | for line in lines: | ||
| 86 | if not "CONFIG_" in line: | ||
| 87 | continue | ||
| 88 | features = REGEX_SOURCE_FEATURE.findall(line) | ||
| 89 | for feature in features: | ||
| 90 | if not REGEX_FILTER_FEATURES.search(feature): | ||
| 91 | continue | ||
| 92 | sfiles = referenced_features.get(feature, set()) | ||
| 93 | sfiles.add(sfile) | ||
| 94 | referenced_features[feature] = sfiles | ||
| 95 | |||
| 96 | |||
| 97 | def get_features_in_line(line): | ||
| 98 | """Return mentioned Kconfig features in @line.""" | ||
| 99 | return REGEX_FEATURE.findall(line) | ||
| 100 | |||
| 101 | |||
| 102 | def parse_kconfig_file(kfile, defined_features, referenced_features): | ||
| 103 | """Parse @kfile and update feature definitions and references.""" | ||
| 104 | lines = [] | ||
| 105 | skip = False | ||
| 106 | |||
| 107 | with open(kfile, "r") as stream: | ||
| 108 | lines = stream.readlines() | ||
| 109 | |||
| 110 | for i in range(len(lines)): | ||
| 111 | line = lines[i] | ||
| 112 | line = line.strip('\n') | ||
| 113 | line = line.split("#")[0] # ignore comments | ||
| 114 | |||
| 115 | if REGEX_KCONFIG_DEF.match(line): | ||
| 116 | feature_def = REGEX_KCONFIG_DEF.findall(line) | ||
| 117 | defined_features.add(feature_def[0]) | ||
| 118 | skip = False | ||
| 119 | elif REGEX_KCONFIG_HELP.match(line): | ||
| 120 | skip = True | ||
| 121 | elif skip: | ||
| 122 | # ignore content of help messages | ||
| 123 | pass | ||
| 124 | elif REGEX_KCONFIG_STMT.match(line): | ||
| 125 | features = get_features_in_line(line) | ||
| 126 | # multi-line statements | ||
| 127 | while line.endswith("\\"): | ||
| 128 | i += 1 | ||
| 129 | line = lines[i] | ||
| 130 | line = line.strip('\n') | ||
| 131 | features.extend(get_features_in_line(line)) | ||
| 132 | for feature in set(features): | ||
| 133 | paths = referenced_features.get(feature, set()) | ||
| 134 | paths.add(kfile) | ||
| 135 | referenced_features[feature] = paths | ||
| 136 | |||
| 137 | |||
| 138 | if __name__ == "__main__": | ||
| 139 | main() | ||
diff --git a/scripts/checkkconfigsymbols.sh b/scripts/checkkconfigsymbols.sh deleted file mode 100755 index ccb3391882d1..000000000000 --- a/scripts/checkkconfigsymbols.sh +++ /dev/null | |||
| @@ -1,59 +0,0 @@ | |||
| 1 | #!/bin/sh | ||
| 2 | # Find Kconfig variables used in source code but never defined in Kconfig | ||
| 3 | # Copyright (C) 2007, Paolo 'Blaisorblade' Giarrusso <blaisorblade@yahoo.it> | ||
| 4 | |||
| 5 | # Tested with dash. | ||
| 6 | paths="$@" | ||
| 7 | [ -z "$paths" ] && paths=. | ||
| 8 | |||
| 9 | # Doing this once at the beginning saves a lot of time, on a cache-hot tree. | ||
| 10 | Kconfigs="`find . -name 'Kconfig' -o -name 'Kconfig*[^~]'`" | ||
| 11 | |||
| 12 | printf "File list \tundefined symbol used\n" | ||
| 13 | find $paths -name '*.[chS]' -o -name 'Makefile' -o -name 'Makefile*[^~]'| while read i | ||
| 14 | do | ||
| 15 | # Output the bare Kconfig variable and the filename; the _MODULE part at | ||
| 16 | # the end is not removed here (would need perl an not-hungry regexp for that). | ||
| 17 | sed -ne 's!^.*\<\(UML_\)\?CONFIG_\([0-9A-Za-z_]\+\).*!\2 '$i'!p' < $i | ||
| 18 | done | \ | ||
| 19 | # Smart "sort|uniq" implemented in awk and tuned to collect the names of all | ||
| 20 | # files which use a given symbol | ||
| 21 | awk '{map[$1, count[$1]++] = $2; } | ||
| 22 | END { | ||
| 23 | for (combIdx in map) { | ||
| 24 | split(combIdx, separate, SUBSEP); | ||
| 25 | # The value may have been removed. | ||
| 26 | if (! ( (separate[1], separate[2]) in map ) ) | ||
| 27 | continue; | ||
| 28 | symb=separate[1]; | ||
| 29 | printf "%s ", symb; | ||
| 30 | #Use gawk extension to delete the names vector | ||
| 31 | delete names; | ||
| 32 | #Portably delete the names vector | ||
| 33 | #split("", names); | ||
| 34 | for (i=0; i < count[symb]; i++) { | ||
| 35 | names[map[symb, i]] = 1; | ||
| 36 | # Unfortunately, we may still encounter symb, i in the | ||
| 37 | # outside iteration. | ||
| 38 | delete map[symb, i]; | ||
| 39 | } | ||
| 40 | i=0; | ||
| 41 | for (name in names) { | ||
| 42 | if (i > 0) | ||
| 43 | printf ", %s", name; | ||
| 44 | else | ||
| 45 | printf "%s", name; | ||
| 46 | i++; | ||
| 47 | } | ||
| 48 | printf "\n"; | ||
| 49 | } | ||
| 50 | }' | | ||
| 51 | while read symb files; do | ||
| 52 | # Remove the _MODULE suffix when checking the variable name. This should | ||
| 53 | # be done only on tristate symbols, actually, but Kconfig parsing is | ||
| 54 | # beyond the purpose of this script. | ||
| 55 | symb_bare=`echo $symb | sed -e 's/_MODULE//'` | ||
| 56 | if ! grep -q "\<$symb_bare\>" $Kconfigs; then | ||
| 57 | printf "$files: \t$symb\n" | ||
| 58 | fi | ||
| 59 | done|sort | ||
diff --git a/scripts/checkpatch.pl b/scripts/checkpatch.pl index 4d08b398411f..f0bb6d60c07b 100755 --- a/scripts/checkpatch.pl +++ b/scripts/checkpatch.pl | |||
| @@ -7,9 +7,11 @@ | |||
| 7 | 7 | ||
| 8 | use strict; | 8 | use strict; |
| 9 | use POSIX; | 9 | use POSIX; |
| 10 | use File::Basename; | ||
| 11 | use Cwd 'abs_path'; | ||
| 10 | 12 | ||
| 11 | my $P = $0; | 13 | my $P = $0; |
| 12 | $P =~ s@.*/@@g; | 14 | my $D = dirname(abs_path($P)); |
| 13 | 15 | ||
| 14 | my $V = '0.32'; | 16 | my $V = '0.32'; |
| 15 | 17 | ||
| @@ -43,6 +45,8 @@ my $configuration_file = ".checkpatch.conf"; | |||
| 43 | my $max_line_length = 80; | 45 | my $max_line_length = 80; |
| 44 | my $ignore_perl_version = 0; | 46 | my $ignore_perl_version = 0; |
| 45 | my $minimum_perl_version = 5.10.0; | 47 | my $minimum_perl_version = 5.10.0; |
| 48 | my $min_conf_desc_length = 4; | ||
| 49 | my $spelling_file = "$D/spelling.txt"; | ||
| 46 | 50 | ||
| 47 | sub help { | 51 | sub help { |
| 48 | my ($exitcode) = @_; | 52 | my ($exitcode) = @_; |
| @@ -63,6 +67,7 @@ Options: | |||
| 63 | --types TYPE(,TYPE2...) show only these comma separated message types | 67 | --types TYPE(,TYPE2...) show only these comma separated message types |
| 64 | --ignore TYPE(,TYPE2...) ignore various comma separated message types | 68 | --ignore TYPE(,TYPE2...) ignore various comma separated message types |
| 65 | --max-line-length=n set the maximum line length, if exceeded, warn | 69 | --max-line-length=n set the maximum line length, if exceeded, warn |
| 70 | --min-conf-desc-length=n set the min description length, if shorter, warn | ||
| 66 | --show-types show the message "types" in the output | 71 | --show-types show the message "types" in the output |
| 67 | --root=PATH PATH to the kernel tree root | 72 | --root=PATH PATH to the kernel tree root |
| 68 | --no-summary suppress the per-file summary | 73 | --no-summary suppress the per-file summary |
| @@ -131,6 +136,7 @@ GetOptions( | |||
| 131 | 'types=s' => \@use, | 136 | 'types=s' => \@use, |
| 132 | 'show-types!' => \$show_types, | 137 | 'show-types!' => \$show_types, |
| 133 | 'max-line-length=i' => \$max_line_length, | 138 | 'max-line-length=i' => \$max_line_length, |
| 139 | 'min-conf-desc-length=i' => \$min_conf_desc_length, | ||
| 134 | 'root=s' => \$root, | 140 | 'root=s' => \$root, |
| 135 | 'summary!' => \$summary, | 141 | 'summary!' => \$summary, |
| 136 | 'mailback!' => \$mailback, | 142 | 'mailback!' => \$mailback, |
| @@ -425,10 +431,38 @@ foreach my $entry (@mode_permission_funcs) { | |||
| 425 | 431 | ||
| 426 | our $allowed_asm_includes = qr{(?x: | 432 | our $allowed_asm_includes = qr{(?x: |
| 427 | irq| | 433 | irq| |
| 428 | memory | 434 | memory| |
| 435 | time| | ||
| 436 | reboot | ||
| 429 | )}; | 437 | )}; |
| 430 | # memory.h: ARM has a custom one | 438 | # memory.h: ARM has a custom one |
| 431 | 439 | ||
| 440 | # Load common spelling mistakes and build regular expression list. | ||
| 441 | my $misspellings; | ||
| 442 | my %spelling_fix; | ||
| 443 | |||
| 444 | if (open(my $spelling, '<', $spelling_file)) { | ||
| 445 | my @spelling_list; | ||
| 446 | while (<$spelling>) { | ||
| 447 | my $line = $_; | ||
| 448 | |||
| 449 | $line =~ s/\s*\n?$//g; | ||
| 450 | $line =~ s/^\s*//g; | ||
| 451 | |||
| 452 | next if ($line =~ m/^\s*#/); | ||
| 453 | next if ($line =~ m/^\s*$/); | ||
| 454 | |||
| 455 | my ($suspect, $fix) = split(/\|\|/, $line); | ||
| 456 | |||
| 457 | push(@spelling_list, $suspect); | ||
| 458 | $spelling_fix{$suspect} = $fix; | ||
| 459 | } | ||
| 460 | close($spelling); | ||
| 461 | $misspellings = join("|", @spelling_list); | ||
| 462 | } else { | ||
| 463 | warn "No typos will be found - file '$spelling_file': $!\n"; | ||
| 464 | } | ||
| 465 | |||
| 432 | sub build_types { | 466 | sub build_types { |
| 433 | my $mods = "(?x: \n" . join("|\n ", @modifierList) . "\n)"; | 467 | my $mods = "(?x: \n" . join("|\n ", @modifierList) . "\n)"; |
| 434 | my $all = "(?x: \n" . join("|\n ", @typeList) . "\n)"; | 468 | my $all = "(?x: \n" . join("|\n ", @typeList) . "\n)"; |
| @@ -912,7 +946,7 @@ sub sanitise_line { | |||
| 912 | sub get_quoted_string { | 946 | sub get_quoted_string { |
| 913 | my ($line, $rawline) = @_; | 947 | my ($line, $rawline) = @_; |
| 914 | 948 | ||
| 915 | return "" if ($line !~ m/(\"[X]+\")/g); | 949 | return "" if ($line !~ m/(\"[X\t]+\")/g); |
| 916 | return substr($rawline, $-[0], $+[0] - $-[0]); | 950 | return substr($rawline, $-[0], $+[0] - $-[0]); |
| 917 | } | 951 | } |
| 918 | 952 | ||
| @@ -1813,6 +1847,7 @@ sub process { | |||
| 1813 | my $non_utf8_charset = 0; | 1847 | my $non_utf8_charset = 0; |
| 1814 | 1848 | ||
| 1815 | my $last_blank_line = 0; | 1849 | my $last_blank_line = 0; |
| 1850 | my $last_coalesced_string_linenr = -1; | ||
| 1816 | 1851 | ||
| 1817 | our @report = (); | 1852 | our @report = (); |
| 1818 | our $cnt_lines = 0; | 1853 | our $cnt_lines = 0; |
| @@ -2048,6 +2083,12 @@ sub process { | |||
| 2048 | $in_commit_log = 0; | 2083 | $in_commit_log = 0; |
| 2049 | } | 2084 | } |
| 2050 | 2085 | ||
| 2086 | # Check if MAINTAINERS is being updated. If so, there's probably no need to | ||
| 2087 | # emit the "does MAINTAINERS need updating?" message on file add/move/delete | ||
| 2088 | if ($line =~ /^\s*MAINTAINERS\s*\|/) { | ||
| 2089 | $reported_maintainer_file = 1; | ||
| 2090 | } | ||
| 2091 | |||
| 2051 | # Check signature styles | 2092 | # Check signature styles |
| 2052 | if (!$in_header_lines && | 2093 | if (!$in_header_lines && |
| 2053 | $line =~ /^(\s*)([a-z0-9_-]+by:|$signature_tags)(\s*)(.*)/i) { | 2094 | $line =~ /^(\s*)([a-z0-9_-]+by:|$signature_tags)(\s*)(.*)/i) { |
| @@ -2215,6 +2256,23 @@ sub process { | |||
| 2215 | "8-bit UTF-8 used in possible commit log\n" . $herecurr); | 2256 | "8-bit UTF-8 used in possible commit log\n" . $herecurr); |
| 2216 | } | 2257 | } |
| 2217 | 2258 | ||
| 2259 | # Check for various typo / spelling mistakes | ||
| 2260 | if (defined($misspellings) && ($in_commit_log || $line =~ /^\+/)) { | ||
| 2261 | while ($rawline =~ /(?:^|[^a-z@])($misspellings)(?:$|[^a-z@])/gi) { | ||
| 2262 | my $typo = $1; | ||
| 2263 | my $typo_fix = $spelling_fix{lc($typo)}; | ||
| 2264 | $typo_fix = ucfirst($typo_fix) if ($typo =~ /^[A-Z]/); | ||
| 2265 | $typo_fix = uc($typo_fix) if ($typo =~ /^[A-Z]+$/); | ||
| 2266 | my $msg_type = \&WARN; | ||
| 2267 | $msg_type = \&CHK if ($file); | ||
| 2268 | if (&{$msg_type}("TYPO_SPELLING", | ||
| 2269 | "'$typo' may be misspelled - perhaps '$typo_fix'?\n" . $herecurr) && | ||
| 2270 | $fix) { | ||
| 2271 | $fixed[$fixlinenr] =~ s/(^|[^A-Za-z@])($typo)($|[^A-Za-z@])/$1$typo_fix$3/; | ||
| 2272 | } | ||
| 2273 | } | ||
| 2274 | } | ||
| 2275 | |||
| 2218 | # ignore non-hunk lines and lines being removed | 2276 | # ignore non-hunk lines and lines being removed |
| 2219 | next if (!$hunk_line || $line =~ /^-/); | 2277 | next if (!$hunk_line || $line =~ /^-/); |
| 2220 | 2278 | ||
| @@ -2283,8 +2341,10 @@ sub process { | |||
| 2283 | } | 2341 | } |
| 2284 | $length++; | 2342 | $length++; |
| 2285 | } | 2343 | } |
| 2286 | WARN("CONFIG_DESCRIPTION", | 2344 | if ($is_start && $is_end && $length < $min_conf_desc_length) { |
| 2287 | "please write a paragraph that describes the config symbol fully\n" . $herecurr) if ($is_start && $is_end && $length < 4); | 2345 | WARN("CONFIG_DESCRIPTION", |
| 2346 | "please write a paragraph that describes the config symbol fully\n" . $herecurr); | ||
| 2347 | } | ||
| 2288 | #print "is_start<$is_start> is_end<$is_end> length<$length>\n"; | 2348 | #print "is_start<$is_start> is_end<$is_end> length<$length>\n"; |
| 2289 | } | 2349 | } |
| 2290 | 2350 | ||
| @@ -2341,7 +2401,7 @@ sub process { | |||
| 2341 | } | 2401 | } |
| 2342 | 2402 | ||
| 2343 | # check we are in a valid source file if not then ignore this hunk | 2403 | # check we are in a valid source file if not then ignore this hunk |
| 2344 | next if ($realfile !~ /\.(h|c|s|S|pl|sh)$/); | 2404 | next if ($realfile !~ /\.(h|c|s|S|pl|sh|dtsi|dts)$/); |
| 2345 | 2405 | ||
| 2346 | #line length limit | 2406 | #line length limit |
| 2347 | if ($line =~ /^\+/ && $prevrawline !~ /\/\*\*/ && | 2407 | if ($line =~ /^\+/ && $prevrawline !~ /\/\*\*/ && |
| @@ -2354,33 +2414,6 @@ sub process { | |||
| 2354 | "line over $max_line_length characters\n" . $herecurr); | 2414 | "line over $max_line_length characters\n" . $herecurr); |
| 2355 | } | 2415 | } |
| 2356 | 2416 | ||
| 2357 | # Check for user-visible strings broken across lines, which breaks the ability | ||
| 2358 | # to grep for the string. Make exceptions when the previous string ends in a | ||
| 2359 | # newline (multiple lines in one string constant) or '\t', '\r', ';', or '{' | ||
| 2360 | # (common in inline assembly) or is a octal \123 or hexadecimal \xaf value | ||
| 2361 | if ($line =~ /^\+\s*"/ && | ||
| 2362 | $prevline =~ /"\s*$/ && | ||
| 2363 | $prevrawline !~ /(?:\\(?:[ntr]|[0-7]{1,3}|x[0-9a-fA-F]{1,2})|;\s*|\{\s*)"\s*$/) { | ||
| 2364 | WARN("SPLIT_STRING", | ||
| 2365 | "quoted string split across lines\n" . $hereprev); | ||
| 2366 | } | ||
| 2367 | |||
| 2368 | # check for missing a space in a string concatination | ||
| 2369 | if ($prevrawline =~ /[^\\]\w"$/ && $rawline =~ /^\+[\t ]+"\w/) { | ||
| 2370 | WARN('MISSING_SPACE', | ||
| 2371 | "break quoted strings at a space character\n" . $hereprev); | ||
| 2372 | } | ||
| 2373 | |||
| 2374 | # check for spaces before a quoted newline | ||
| 2375 | if ($rawline =~ /^.*\".*\s\\n/) { | ||
| 2376 | if (WARN("QUOTED_WHITESPACE_BEFORE_NEWLINE", | ||
| 2377 | "unnecessary whitespace before a quoted newline\n" . $herecurr) && | ||
| 2378 | $fix) { | ||
| 2379 | $fixed[$fixlinenr] =~ s/^(\+.*\".*)\s+\\n/$1\\n/; | ||
| 2380 | } | ||
| 2381 | |||
| 2382 | } | ||
| 2383 | |||
| 2384 | # check for adding lines without a newline. | 2417 | # check for adding lines without a newline. |
| 2385 | if ($line =~ /^\+/ && defined $lines[$linenr] && $lines[$linenr] =~ /^\\ No newline at end of file/) { | 2418 | if ($line =~ /^\+/ && defined $lines[$linenr] && $lines[$linenr] =~ /^\\ No newline at end of file/) { |
| 2386 | WARN("MISSING_EOF_NEWLINE", | 2419 | WARN("MISSING_EOF_NEWLINE", |
| @@ -2402,7 +2435,7 @@ sub process { | |||
| 2402 | } | 2435 | } |
| 2403 | 2436 | ||
| 2404 | # check we are in a valid source file C or perl if not then ignore this hunk | 2437 | # check we are in a valid source file C or perl if not then ignore this hunk |
| 2405 | next if ($realfile !~ /\.(h|c|pl)$/); | 2438 | next if ($realfile !~ /\.(h|c|pl|dtsi|dts)$/); |
| 2406 | 2439 | ||
| 2407 | # at the beginning of a line any tabs must come first and anything | 2440 | # at the beginning of a line any tabs must come first and anything |
| 2408 | # more than 8 must use tabs. | 2441 | # more than 8 must use tabs. |
| @@ -2424,7 +2457,7 @@ sub process { | |||
| 2424 | "please, no space before tabs\n" . $herevet) && | 2457 | "please, no space before tabs\n" . $herevet) && |
| 2425 | $fix) { | 2458 | $fix) { |
| 2426 | while ($fixed[$fixlinenr] =~ | 2459 | while ($fixed[$fixlinenr] =~ |
| 2427 | s/(^\+.*) {8,8}+\t/$1\t\t/) {} | 2460 | s/(^\+.*) {8,8}\t/$1\t\t/) {} |
| 2428 | while ($fixed[$fixlinenr] =~ | 2461 | while ($fixed[$fixlinenr] =~ |
| 2429 | s/(^\+.*) +\t/$1\t/) {} | 2462 | s/(^\+.*) +\t/$1\t/) {} |
| 2430 | } | 2463 | } |
| @@ -2466,7 +2499,8 @@ sub process { | |||
| 2466 | } | 2499 | } |
| 2467 | } | 2500 | } |
| 2468 | 2501 | ||
| 2469 | if ($line =~ /^\+.*\(\s*$Type\s*\)[ \t]+(?!$Assignment|$Arithmetic|{)/) { | 2502 | if ($line =~ /^\+.*(\w+\s*)?\(\s*$Type\s*\)[ \t]+(?!$Assignment|$Arithmetic|[,;\({\[\<\>])/ && |
| 2503 | (!defined($1) || $1 !~ /sizeof\s*/)) { | ||
| 2470 | if (CHK("SPACING", | 2504 | if (CHK("SPACING", |
| 2471 | "No space is necessary after a cast\n" . $herecurr) && | 2505 | "No space is necessary after a cast\n" . $herecurr) && |
| 2472 | $fix) { | 2506 | $fix) { |
| @@ -2592,10 +2626,14 @@ sub process { | |||
| 2592 | next if ($realfile !~ /\.(h|c)$/); | 2626 | next if ($realfile !~ /\.(h|c)$/); |
| 2593 | 2627 | ||
| 2594 | # check indentation of any line with a bare else | 2628 | # check indentation of any line with a bare else |
| 2629 | # (but not if it is a multiple line "if (foo) return bar; else return baz;") | ||
| 2595 | # if the previous line is a break or return and is indented 1 tab more... | 2630 | # if the previous line is a break or return and is indented 1 tab more... |
| 2596 | if ($sline =~ /^\+([\t]+)(?:}[ \t]*)?else(?:[ \t]*{)?\s*$/) { | 2631 | if ($sline =~ /^\+([\t]+)(?:}[ \t]*)?else(?:[ \t]*{)?\s*$/) { |
| 2597 | my $tabs = length($1) + 1; | 2632 | my $tabs = length($1) + 1; |
| 2598 | if ($prevline =~ /^\+\t{$tabs,$tabs}(?:break|return)\b/) { | 2633 | if ($prevline =~ /^\+\t{$tabs,$tabs}break\b/ || |
| 2634 | ($prevline =~ /^\+\t{$tabs,$tabs}return\b/ && | ||
| 2635 | defined $lines[$linenr] && | ||
| 2636 | $lines[$linenr] !~ /^[ \+]\t{$tabs,$tabs}return/)) { | ||
| 2599 | WARN("UNNECESSARY_ELSE", | 2637 | WARN("UNNECESSARY_ELSE", |
| 2600 | "else is not generally useful after a break or return\n" . $hereprev); | 2638 | "else is not generally useful after a break or return\n" . $hereprev); |
| 2601 | } | 2639 | } |
| @@ -3510,14 +3548,33 @@ sub process { | |||
| 3510 | } | 3548 | } |
| 3511 | } | 3549 | } |
| 3512 | 3550 | ||
| 3513 | # , must have a space on the right. | 3551 | # , must not have a space before and must have a space on the right. |
| 3514 | } elsif ($op eq ',') { | 3552 | } elsif ($op eq ',') { |
| 3553 | my $rtrim_before = 0; | ||
| 3554 | my $space_after = 0; | ||
| 3555 | if ($ctx =~ /Wx./) { | ||
| 3556 | if (ERROR("SPACING", | ||
| 3557 | "space prohibited before that '$op' $at\n" . $hereptr)) { | ||
| 3558 | $line_fixed = 1; | ||
| 3559 | $rtrim_before = 1; | ||
| 3560 | } | ||
| 3561 | } | ||
| 3515 | if ($ctx !~ /.x[WEC]/ && $cc !~ /^}/) { | 3562 | if ($ctx !~ /.x[WEC]/ && $cc !~ /^}/) { |
| 3516 | if (ERROR("SPACING", | 3563 | if (ERROR("SPACING", |
| 3517 | "space required after that '$op' $at\n" . $hereptr)) { | 3564 | "space required after that '$op' $at\n" . $hereptr)) { |
| 3518 | $good = $fix_elements[$n] . trim($fix_elements[$n + 1]) . " "; | ||
| 3519 | $line_fixed = 1; | 3565 | $line_fixed = 1; |
| 3520 | $last_after = $n; | 3566 | $last_after = $n; |
| 3567 | $space_after = 1; | ||
| 3568 | } | ||
| 3569 | } | ||
| 3570 | if ($rtrim_before || $space_after) { | ||
| 3571 | if ($rtrim_before) { | ||
| 3572 | $good = rtrim($fix_elements[$n]) . trim($fix_elements[$n + 1]); | ||
| 3573 | } else { | ||
| 3574 | $good = $fix_elements[$n] . trim($fix_elements[$n + 1]); | ||
| 3575 | } | ||
| 3576 | if ($space_after) { | ||
| 3577 | $good .= " "; | ||
| 3521 | } | 3578 | } |
| 3522 | } | 3579 | } |
| 3523 | 3580 | ||
| @@ -3752,7 +3809,6 @@ sub process { | |||
| 3752 | if (ERROR("SPACING", | 3809 | if (ERROR("SPACING", |
| 3753 | "space prohibited before that close parenthesis ')'\n" . $herecurr) && | 3810 | "space prohibited before that close parenthesis ')'\n" . $herecurr) && |
| 3754 | $fix) { | 3811 | $fix) { |
| 3755 | print("fixlinenr: <$fixlinenr> fixed[fixlinenr]: <$fixed[$fixlinenr]>\n"); | ||
| 3756 | $fixed[$fixlinenr] =~ | 3812 | $fixed[$fixlinenr] =~ |
| 3757 | s/\s+\)/\)/; | 3813 | s/\s+\)/\)/; |
| 3758 | } | 3814 | } |
| @@ -3762,9 +3818,27 @@ sub process { | |||
| 3762 | # ie: &(foo->bar) should be &foo->bar and *(foo->bar) should be *foo->bar | 3818 | # ie: &(foo->bar) should be &foo->bar and *(foo->bar) should be *foo->bar |
| 3763 | 3819 | ||
| 3764 | while ($line =~ /(?:[^&]&\s*|\*)\(\s*($Ident\s*(?:$Member\s*)+)\s*\)/g) { | 3820 | while ($line =~ /(?:[^&]&\s*|\*)\(\s*($Ident\s*(?:$Member\s*)+)\s*\)/g) { |
| 3765 | CHK("UNNECESSARY_PARENTHESES", | 3821 | my $var = $1; |
| 3766 | "Unnecessary parentheses around $1\n" . $herecurr); | 3822 | if (CHK("UNNECESSARY_PARENTHESES", |
| 3767 | } | 3823 | "Unnecessary parentheses around $var\n" . $herecurr) && |
| 3824 | $fix) { | ||
| 3825 | $fixed[$fixlinenr] =~ s/\(\s*\Q$var\E\s*\)/$var/; | ||
| 3826 | } | ||
| 3827 | } | ||
| 3828 | |||
| 3829 | # check for unnecessary parentheses around function pointer uses | ||
| 3830 | # ie: (foo->bar)(); should be foo->bar(); | ||
| 3831 | # but not "if (foo->bar) (" to avoid some false positives | ||
| 3832 | if ($line =~ /(\bif\s*|)(\(\s*$Ident\s*(?:$Member\s*)+\))[ \t]*\(/ && $1 !~ /^if/) { | ||
| 3833 | my $var = $2; | ||
| 3834 | if (CHK("UNNECESSARY_PARENTHESES", | ||
| 3835 | "Unnecessary parentheses around function pointer $var\n" . $herecurr) && | ||
| 3836 | $fix) { | ||
| 3837 | my $var2 = deparenthesize($var); | ||
| 3838 | $var2 =~ s/\s//g; | ||
| 3839 | $fixed[$fixlinenr] =~ s/\Q$var\E/$var2/; | ||
| 3840 | } | ||
| 3841 | } | ||
| 3768 | 3842 | ||
| 3769 | #goto labels aren't indented, allow a single space however | 3843 | #goto labels aren't indented, allow a single space however |
| 3770 | if ($line=~/^.\s+[A-Za-z\d_]+:(?![0-9]+)/ and | 3844 | if ($line=~/^.\s+[A-Za-z\d_]+:(?![0-9]+)/ and |
| @@ -4004,7 +4078,9 @@ sub process { | |||
| 4004 | #Ignore Page<foo> variants | 4078 | #Ignore Page<foo> variants |
| 4005 | $var !~ /^(?:Clear|Set|TestClear|TestSet|)Page[A-Z]/ && | 4079 | $var !~ /^(?:Clear|Set|TestClear|TestSet|)Page[A-Z]/ && |
| 4006 | #Ignore SI style variants like nS, mV and dB (ie: max_uV, regulator_min_uA_show) | 4080 | #Ignore SI style variants like nS, mV and dB (ie: max_uV, regulator_min_uA_show) |
| 4007 | $var !~ /^(?:[a-z_]*?)_?[a-z][A-Z](?:_[a-z_]+)?$/) { | 4081 | $var !~ /^(?:[a-z_]*?)_?[a-z][A-Z](?:_[a-z_]+)?$/ && |
| 4082 | #Ignore some three character SI units explicitly, like MiB and KHz | ||
| 4083 | $var !~ /^(?:[a-z_]*?)_?(?:[KMGT]iB|[KMGT]?Hz)(?:_[a-z_]+)?$/) { | ||
| 4008 | while ($var =~ m{($Ident)}g) { | 4084 | while ($var =~ m{($Ident)}g) { |
| 4009 | my $word = $1; | 4085 | my $word = $1; |
| 4010 | next if ($word !~ /[A-Z][a-z]|[a-z][A-Z]/); | 4086 | next if ($word !~ /[A-Z][a-z]|[a-z][A-Z]/); |
| @@ -4060,12 +4136,17 @@ sub process { | |||
| 4060 | my $cnt = $realcnt; | 4136 | my $cnt = $realcnt; |
| 4061 | my ($off, $dstat, $dcond, $rest); | 4137 | my ($off, $dstat, $dcond, $rest); |
| 4062 | my $ctx = ''; | 4138 | my $ctx = ''; |
| 4139 | my $has_flow_statement = 0; | ||
| 4140 | my $has_arg_concat = 0; | ||
| 4063 | ($dstat, $dcond, $ln, $cnt, $off) = | 4141 | ($dstat, $dcond, $ln, $cnt, $off) = |
| 4064 | ctx_statement_block($linenr, $realcnt, 0); | 4142 | ctx_statement_block($linenr, $realcnt, 0); |
| 4065 | $ctx = $dstat; | 4143 | $ctx = $dstat; |
| 4066 | #print "dstat<$dstat> dcond<$dcond> cnt<$cnt> off<$off>\n"; | 4144 | #print "dstat<$dstat> dcond<$dcond> cnt<$cnt> off<$off>\n"; |
| 4067 | #print "LINE<$lines[$ln-1]> len<" . length($lines[$ln-1]) . "\n"; | 4145 | #print "LINE<$lines[$ln-1]> len<" . length($lines[$ln-1]) . "\n"; |
| 4068 | 4146 | ||
| 4147 | $has_flow_statement = 1 if ($ctx =~ /\b(goto|return)\b/); | ||
| 4148 | $has_arg_concat = 1 if ($ctx =~ /\#\#/); | ||
| 4149 | |||
| 4069 | $dstat =~ s/^.\s*\#\s*define\s+$Ident(?:\([^\)]*\))?\s*//; | 4150 | $dstat =~ s/^.\s*\#\s*define\s+$Ident(?:\([^\)]*\))?\s*//; |
| 4070 | $dstat =~ s/$;//g; | 4151 | $dstat =~ s/$;//g; |
| 4071 | $dstat =~ s/\\\n.//g; | 4152 | $dstat =~ s/\\\n.//g; |
| @@ -4126,8 +4207,21 @@ sub process { | |||
| 4126 | "Macros with multiple statements should be enclosed in a do - while loop\n" . "$herectx"); | 4207 | "Macros with multiple statements should be enclosed in a do - while loop\n" . "$herectx"); |
| 4127 | } else { | 4208 | } else { |
| 4128 | ERROR("COMPLEX_MACRO", | 4209 | ERROR("COMPLEX_MACRO", |
| 4129 | "Macros with complex values should be enclosed in parenthesis\n" . "$herectx"); | 4210 | "Macros with complex values should be enclosed in parentheses\n" . "$herectx"); |
| 4211 | } | ||
| 4212 | } | ||
| 4213 | |||
| 4214 | # check for macros with flow control, but without ## concatenation | ||
| 4215 | # ## concatenation is commonly a macro that defines a function so ignore those | ||
| 4216 | if ($has_flow_statement && !$has_arg_concat) { | ||
| 4217 | my $herectx = $here . "\n"; | ||
| 4218 | my $cnt = statement_rawlines($ctx); | ||
| 4219 | |||
| 4220 | for (my $n = 0; $n < $cnt; $n++) { | ||
| 4221 | $herectx .= raw_line($linenr, $n) . "\n"; | ||
| 4130 | } | 4222 | } |
| 4223 | WARN("MACRO_WITH_FLOW_CONTROL", | ||
| 4224 | "Macros with flow control statements should be avoided\n" . "$herectx"); | ||
| 4131 | } | 4225 | } |
| 4132 | 4226 | ||
| 4133 | # check for line continuations outside of #defines, preprocessor #, and asm | 4227 | # check for line continuations outside of #defines, preprocessor #, and asm |
| @@ -4338,6 +4432,85 @@ sub process { | |||
| 4338 | "Use of volatile is usually wrong: see Documentation/volatile-considered-harmful.txt\n" . $herecurr); | 4432 | "Use of volatile is usually wrong: see Documentation/volatile-considered-harmful.txt\n" . $herecurr); |
| 4339 | } | 4433 | } |
| 4340 | 4434 | ||
| 4435 | # Check for user-visible strings broken across lines, which breaks the ability | ||
| 4436 | # to grep for the string. Make exceptions when the previous string ends in a | ||
| 4437 | # newline (multiple lines in one string constant) or '\t', '\r', ';', or '{' | ||
| 4438 | # (common in inline assembly) or is a octal \123 or hexadecimal \xaf value | ||
| 4439 | if ($line =~ /^\+\s*"[X\t]*"/ && | ||
| 4440 | $prevline =~ /"\s*$/ && | ||
| 4441 | $prevrawline !~ /(?:\\(?:[ntr]|[0-7]{1,3}|x[0-9a-fA-F]{1,2})|;\s*|\{\s*)"\s*$/) { | ||
| 4442 | if (WARN("SPLIT_STRING", | ||
| 4443 | "quoted string split across lines\n" . $hereprev) && | ||
| 4444 | $fix && | ||
| 4445 | $prevrawline =~ /^\+.*"\s*$/ && | ||
| 4446 | $last_coalesced_string_linenr != $linenr - 1) { | ||
| 4447 | my $extracted_string = get_quoted_string($line, $rawline); | ||
| 4448 | my $comma_close = ""; | ||
| 4449 | if ($rawline =~ /\Q$extracted_string\E(\s*\)\s*;\s*$|\s*,\s*)/) { | ||
| 4450 | $comma_close = $1; | ||
| 4451 | } | ||
| 4452 | |||
| 4453 | fix_delete_line($fixlinenr - 1, $prevrawline); | ||
| 4454 | fix_delete_line($fixlinenr, $rawline); | ||
| 4455 | my $fixedline = $prevrawline; | ||
| 4456 | $fixedline =~ s/"\s*$//; | ||
| 4457 | $fixedline .= substr($extracted_string, 1) . trim($comma_close); | ||
| 4458 | fix_insert_line($fixlinenr - 1, $fixedline); | ||
| 4459 | $fixedline = $rawline; | ||
| 4460 | $fixedline =~ s/\Q$extracted_string\E\Q$comma_close\E//; | ||
| 4461 | if ($fixedline !~ /\+\s*$/) { | ||
| 4462 | fix_insert_line($fixlinenr, $fixedline); | ||
| 4463 | } | ||
| 4464 | $last_coalesced_string_linenr = $linenr; | ||
| 4465 | } | ||
| 4466 | } | ||
| 4467 | |||
| 4468 | # check for missing a space in a string concatenation | ||
| 4469 | if ($prevrawline =~ /[^\\]\w"$/ && $rawline =~ /^\+[\t ]+"\w/) { | ||
| 4470 | WARN('MISSING_SPACE', | ||
| 4471 | "break quoted strings at a space character\n" . $hereprev); | ||
| 4472 | } | ||
| 4473 | |||
| 4474 | # check for spaces before a quoted newline | ||
| 4475 | if ($rawline =~ /^.*\".*\s\\n/) { | ||
| 4476 | if (WARN("QUOTED_WHITESPACE_BEFORE_NEWLINE", | ||
| 4477 | "unnecessary whitespace before a quoted newline\n" . $herecurr) && | ||
| 4478 | $fix) { | ||
| 4479 | $fixed[$fixlinenr] =~ s/^(\+.*\".*)\s+\\n/$1\\n/; | ||
| 4480 | } | ||
| 4481 | |||
| 4482 | } | ||
| 4483 | |||
| 4484 | # concatenated string without spaces between elements | ||
| 4485 | if ($line =~ /"X+"[A-Z_]+/ || $line =~ /[A-Z_]+"X+"/) { | ||
| 4486 | CHK("CONCATENATED_STRING", | ||
| 4487 | "Concatenated strings should use spaces between elements\n" . $herecurr); | ||
| 4488 | } | ||
| 4489 | |||
| 4490 | # uncoalesced string fragments | ||
| 4491 | if ($line =~ /"X*"\s*"/) { | ||
| 4492 | WARN("STRING_FRAGMENTS", | ||
| 4493 | "Consecutive strings are generally better as a single string\n" . $herecurr); | ||
| 4494 | } | ||
| 4495 | |||
| 4496 | # check for %L{u,d,i} in strings | ||
| 4497 | my $string; | ||
| 4498 | while ($line =~ /(?:^|")([X\t]*)(?:"|$)/g) { | ||
| 4499 | $string = substr($rawline, $-[1], $+[1] - $-[1]); | ||
| 4500 | $string =~ s/%%/__/g; | ||
| 4501 | if ($string =~ /(?<!%)%L[udi]/) { | ||
| 4502 | WARN("PRINTF_L", | ||
| 4503 | "\%Ld/%Lu are not-standard C, use %lld/%llu\n" . $herecurr); | ||
| 4504 | last; | ||
| 4505 | } | ||
| 4506 | } | ||
| 4507 | |||
| 4508 | # check for line continuations in quoted strings with odd counts of " | ||
| 4509 | if ($rawline =~ /\\$/ && $rawline =~ tr/"/"/ % 2) { | ||
| 4510 | WARN("LINE_CONTINUATIONS", | ||
| 4511 | "Avoid line continuations in quoted strings\n" . $herecurr); | ||
| 4512 | } | ||
| 4513 | |||
| 4341 | # warn about #if 0 | 4514 | # warn about #if 0 |
| 4342 | if ($line =~ /^.\s*\#\s*if\s+0\b/) { | 4515 | if ($line =~ /^.\s*\#\s*if\s+0\b/) { |
| 4343 | CHK("REDUNDANT_CODE", | 4516 | CHK("REDUNDANT_CODE", |
| @@ -4350,7 +4523,7 @@ sub process { | |||
| 4350 | my $expr = '\s*\(\s*' . quotemeta($1) . '\s*\)\s*;'; | 4523 | my $expr = '\s*\(\s*' . quotemeta($1) . '\s*\)\s*;'; |
| 4351 | if ($line =~ /\b(kfree|usb_free_urb|debugfs_remove(?:_recursive)?)$expr/) { | 4524 | if ($line =~ /\b(kfree|usb_free_urb|debugfs_remove(?:_recursive)?)$expr/) { |
| 4352 | WARN('NEEDLESS_IF', | 4525 | WARN('NEEDLESS_IF', |
| 4353 | "$1(NULL) is safe this check is probably not required\n" . $hereprev); | 4526 | "$1(NULL) is safe and this check is probably not required\n" . $hereprev); |
| 4354 | } | 4527 | } |
| 4355 | } | 4528 | } |
| 4356 | 4529 | ||
| @@ -4371,6 +4544,39 @@ sub process { | |||
| 4371 | } | 4544 | } |
| 4372 | } | 4545 | } |
| 4373 | 4546 | ||
| 4547 | # check for logging functions with KERN_<LEVEL> | ||
| 4548 | if ($line !~ /printk\s*\(/ && | ||
| 4549 | $line =~ /\b$logFunctions\s*\(.*\b(KERN_[A-Z]+)\b/) { | ||
| 4550 | my $level = $1; | ||
| 4551 | if (WARN("UNNECESSARY_KERN_LEVEL", | ||
| 4552 | "Possible unnecessary $level\n" . $herecurr) && | ||
| 4553 | $fix) { | ||
| 4554 | $fixed[$fixlinenr] =~ s/\s*$level\s*//; | ||
| 4555 | } | ||
| 4556 | } | ||
| 4557 | |||
| 4558 | # check for mask then right shift without a parentheses | ||
| 4559 | if ($^V && $^V ge 5.10.0 && | ||
| 4560 | $line =~ /$LvalOrFunc\s*\&\s*($LvalOrFunc)\s*>>/ && | ||
| 4561 | $4 !~ /^\&/) { # $LvalOrFunc may be &foo, ignore if so | ||
| 4562 | WARN("MASK_THEN_SHIFT", | ||
| 4563 | "Possible precedence defect with mask then right shift - may need parentheses\n" . $herecurr); | ||
| 4564 | } | ||
| 4565 | |||
| 4566 | # check for pointer comparisons to NULL | ||
| 4567 | if ($^V && $^V ge 5.10.0) { | ||
| 4568 | while ($line =~ /\b$LvalOrFunc\s*(==|\!=)\s*NULL\b/g) { | ||
| 4569 | my $val = $1; | ||
| 4570 | my $equal = "!"; | ||
| 4571 | $equal = "" if ($4 eq "!="); | ||
| 4572 | if (CHK("COMPARISON_TO_NULL", | ||
| 4573 | "Comparison to NULL could be written \"${equal}${val}\"\n" . $herecurr) && | ||
| 4574 | $fix) { | ||
| 4575 | $fixed[$fixlinenr] =~ s/\b\Q$val\E\s*(?:==|\!=)\s*NULL\b/$equal$val/; | ||
| 4576 | } | ||
| 4577 | } | ||
| 4578 | } | ||
| 4579 | |||
| 4374 | # check for bad placement of section $InitAttribute (e.g.: __initdata) | 4580 | # check for bad placement of section $InitAttribute (e.g.: __initdata) |
| 4375 | if ($line =~ /(\b$InitAttribute\b)/) { | 4581 | if ($line =~ /(\b$InitAttribute\b)/) { |
| 4376 | my $attr = $1; | 4582 | my $attr = $1; |
| @@ -4565,6 +4771,15 @@ sub process { | |||
| 4565 | } | 4771 | } |
| 4566 | } | 4772 | } |
| 4567 | 4773 | ||
| 4774 | # Check for __attribute__ weak, or __weak declarations (may have link issues) | ||
| 4775 | if ($^V && $^V ge 5.10.0 && | ||
| 4776 | $line =~ /(?:$Declare|$DeclareMisordered)\s*$Ident\s*$balanced_parens\s*(?:$Attribute)?\s*;/ && | ||
| 4777 | ($line =~ /\b__attribute__\s*\(\s*\(.*\bweak\b/ || | ||
| 4778 | $line =~ /\b__weak\b/)) { | ||
| 4779 | ERROR("WEAK_DECLARATION", | ||
| 4780 | "Using weak declarations can have unintended link defects\n" . $herecurr); | ||
| 4781 | } | ||
| 4782 | |||
| 4568 | # check for sizeof(&) | 4783 | # check for sizeof(&) |
| 4569 | if ($line =~ /\bsizeof\s*\(\s*\&/) { | 4784 | if ($line =~ /\bsizeof\s*\(\s*\&/) { |
| 4570 | WARN("SIZEOF_ADDRESS", | 4785 | WARN("SIZEOF_ADDRESS", |
| @@ -4580,12 +4795,6 @@ sub process { | |||
| 4580 | } | 4795 | } |
| 4581 | } | 4796 | } |
| 4582 | 4797 | ||
| 4583 | # check for line continuations in quoted strings with odd counts of " | ||
| 4584 | if ($rawline =~ /\\$/ && $rawline =~ tr/"/"/ % 2) { | ||
| 4585 | WARN("LINE_CONTINUATIONS", | ||
| 4586 | "Avoid line continuations in quoted strings\n" . $herecurr); | ||
| 4587 | } | ||
| 4588 | |||
| 4589 | # check for struct spinlock declarations | 4798 | # check for struct spinlock declarations |
| 4590 | if ($line =~ /^.\s*\bstruct\s+spinlock\s+\w+\s*;/) { | 4799 | if ($line =~ /^.\s*\bstruct\s+spinlock\s+\w+\s*;/) { |
| 4591 | WARN("USE_SPINLOCK_T", | 4800 | WARN("USE_SPINLOCK_T", |
| @@ -4821,6 +5030,17 @@ sub process { | |||
| 4821 | } | 5030 | } |
| 4822 | } | 5031 | } |
| 4823 | 5032 | ||
| 5033 | # check for #defines like: 1 << <digit> that could be BIT(digit) | ||
| 5034 | if ($line =~ /#\s*define\s+\w+\s+\(?\s*1\s*([ulUL]*)\s*\<\<\s*(?:\d+|$Ident)\s*\)?/) { | ||
| 5035 | my $ull = ""; | ||
| 5036 | $ull = "_ULL" if (defined($1) && $1 =~ /ll/i); | ||
| 5037 | if (CHK("BIT_MACRO", | ||
| 5038 | "Prefer using the BIT$ull macro\n" . $herecurr) && | ||
| 5039 | $fix) { | ||
| 5040 | $fixed[$fixlinenr] =~ s/\(?\s*1\s*[ulUL]*\s*<<\s*(\d+|$Ident)\s*\)?/BIT${ull}($1)/; | ||
| 5041 | } | ||
| 5042 | } | ||
| 5043 | |||
| 4824 | # check for case / default statements not preceded by break/fallthrough/switch | 5044 | # check for case / default statements not preceded by break/fallthrough/switch |
| 4825 | if ($line =~ /^.\s*(?:case\s+(?:$Ident|$Constant)\s*|default):/) { | 5045 | if ($line =~ /^.\s*(?:case\s+(?:$Ident|$Constant)\s*|default):/) { |
| 4826 | my $has_break = 0; | 5046 | my $has_break = 0; |
| @@ -4984,18 +5204,6 @@ sub process { | |||
| 4984 | "#define of '$1' is wrong - use Kconfig variables or standard guards instead\n" . $herecurr); | 5204 | "#define of '$1' is wrong - use Kconfig variables or standard guards instead\n" . $herecurr); |
| 4985 | } | 5205 | } |
| 4986 | 5206 | ||
| 4987 | # check for %L{u,d,i} in strings | ||
| 4988 | my $string; | ||
| 4989 | while ($line =~ /(?:^|")([X\t]*)(?:"|$)/g) { | ||
| 4990 | $string = substr($rawline, $-[1], $+[1] - $-[1]); | ||
| 4991 | $string =~ s/%%/__/g; | ||
| 4992 | if ($string =~ /(?<!%)%L[udi]/) { | ||
| 4993 | WARN("PRINTF_L", | ||
| 4994 | "\%Ld/%Lu are not-standard C, use %lld/%llu\n" . $herecurr); | ||
| 4995 | last; | ||
| 4996 | } | ||
| 4997 | } | ||
| 4998 | |||
| 4999 | # whine mightly about in_atomic | 5207 | # whine mightly about in_atomic |
| 5000 | if ($line =~ /\bin_atomic\s*\(/) { | 5208 | if ($line =~ /\bin_atomic\s*\(/) { |
| 5001 | if ($realfile =~ m@^drivers/@) { | 5209 | if ($realfile =~ m@^drivers/@) { |
diff --git a/scripts/checkstack.pl b/scripts/checkstack.pl index 899b4230320e..dd8397894d5c 100755 --- a/scripts/checkstack.pl +++ b/scripts/checkstack.pl | |||
| @@ -13,7 +13,7 @@ | |||
| 13 | # Random bits by Matt Mackall <mpm@selenic.com> | 13 | # Random bits by Matt Mackall <mpm@selenic.com> |
| 14 | # M68k port by Geert Uytterhoeven and Andreas Schwab | 14 | # M68k port by Geert Uytterhoeven and Andreas Schwab |
| 15 | # AVR32 port by Haavard Skinnemoen (Atmel) | 15 | # AVR32 port by Haavard Skinnemoen (Atmel) |
| 16 | # PARISC port by Kyle McMartin <kyle@parisc-linux.org> | 16 | # AArch64, PARISC ports by Kyle McMartin |
| 17 | # sparc port by Martin Habets <errandir_news@mph.eclipse.co.uk> | 17 | # sparc port by Martin Habets <errandir_news@mph.eclipse.co.uk> |
| 18 | # | 18 | # |
| 19 | # Usage: | 19 | # Usage: |
| @@ -45,7 +45,10 @@ my (@stack, $re, $dre, $x, $xs, $funcre); | |||
| 45 | $x = "[0-9a-f]"; # hex character | 45 | $x = "[0-9a-f]"; # hex character |
| 46 | $xs = "[0-9a-f ]"; # hex character or space | 46 | $xs = "[0-9a-f ]"; # hex character or space |
| 47 | $funcre = qr/^$x* <(.*)>:$/; | 47 | $funcre = qr/^$x* <(.*)>:$/; |
| 48 | if ($arch eq 'arm') { | 48 | if ($arch eq 'aarch64') { |
| 49 | #ffffffc0006325cc: a9bb7bfd stp x29, x30, [sp,#-80]! | ||
| 50 | $re = qr/^.*stp.*sp,\#-([0-9]{1,8})\]\!/o; | ||
| 51 | } elsif ($arch eq 'arm') { | ||
| 49 | #c0008ffc: e24dd064 sub sp, sp, #100 ; 0x64 | 52 | #c0008ffc: e24dd064 sub sp, sp, #100 ; 0x64 |
| 50 | $re = qr/.*sub.*sp, sp, #(([0-9]{2}|[3-9])[0-9]{2})/o; | 53 | $re = qr/.*sub.*sp, sp, #(([0-9]{2}|[3-9])[0-9]{2})/o; |
| 51 | } elsif ($arch eq 'avr32') { | 54 | } elsif ($arch eq 'avr32') { |
diff --git a/scripts/coccinelle/api/platform_no_drv_owner.cocci b/scripts/coccinelle/api/platform_no_drv_owner.cocci new file mode 100644 index 000000000000..e065b9e714fc --- /dev/null +++ b/scripts/coccinelle/api/platform_no_drv_owner.cocci | |||
| @@ -0,0 +1,106 @@ | |||
| 1 | /// Remove .owner field if calls are used which set it automatically | ||
| 2 | /// | ||
| 3 | // Confidence: High | ||
| 4 | // Copyright: (C) 2014 Wolfram Sang. GPL v2. | ||
| 5 | |||
| 6 | virtual patch | ||
| 7 | virtual context | ||
| 8 | virtual org | ||
| 9 | virtual report | ||
| 10 | |||
| 11 | @match1@ | ||
| 12 | declarer name module_platform_driver; | ||
| 13 | declarer name module_platform_driver_probe; | ||
| 14 | identifier __driver; | ||
| 15 | @@ | ||
| 16 | ( | ||
| 17 | module_platform_driver(__driver); | ||
| 18 | | | ||
| 19 | module_platform_driver_probe(__driver, ...); | ||
| 20 | ) | ||
| 21 | |||
| 22 | @fix1 depends on match1 && patch && !context && !org && !report@ | ||
| 23 | identifier match1.__driver; | ||
| 24 | @@ | ||
| 25 | static struct platform_driver __driver = { | ||
| 26 | .driver = { | ||
| 27 | - .owner = THIS_MODULE, | ||
| 28 | } | ||
| 29 | }; | ||
| 30 | |||
| 31 | @match2@ | ||
| 32 | identifier __driver; | ||
| 33 | @@ | ||
| 34 | ( | ||
| 35 | platform_driver_register(&__driver) | ||
| 36 | | | ||
| 37 | platform_driver_probe(&__driver, ...) | ||
| 38 | | | ||
| 39 | platform_create_bundle(&__driver, ...) | ||
| 40 | ) | ||
| 41 | |||
| 42 | @fix2 depends on match2 && patch && !context && !org && !report@ | ||
| 43 | identifier match2.__driver; | ||
| 44 | @@ | ||
| 45 | static struct platform_driver __driver = { | ||
| 46 | .driver = { | ||
| 47 | - .owner = THIS_MODULE, | ||
| 48 | } | ||
| 49 | }; | ||
| 50 | |||
| 51 | // ---------------------------------------------------------------------------- | ||
| 52 | |||
| 53 | @fix1_context depends on match1 && !patch && (context || org || report)@ | ||
| 54 | identifier match1.__driver; | ||
| 55 | position j0; | ||
| 56 | @@ | ||
| 57 | |||
| 58 | static struct platform_driver __driver = { | ||
| 59 | .driver = { | ||
| 60 | * .owner@j0 = THIS_MODULE, | ||
| 61 | } | ||
| 62 | }; | ||
| 63 | |||
| 64 | @fix2_context depends on match2 && !patch && (context || org || report)@ | ||
| 65 | identifier match2.__driver; | ||
| 66 | position j0; | ||
| 67 | @@ | ||
| 68 | |||
| 69 | static struct platform_driver __driver = { | ||
| 70 | .driver = { | ||
| 71 | * .owner@j0 = THIS_MODULE, | ||
| 72 | } | ||
| 73 | }; | ||
| 74 | |||
| 75 | // ---------------------------------------------------------------------------- | ||
| 76 | |||
| 77 | @script:python fix1_org depends on org@ | ||
| 78 | j0 << fix1_context.j0; | ||
| 79 | @@ | ||
| 80 | |||
| 81 | msg = "No need to set .owner here. The core will do it." | ||
| 82 | coccilib.org.print_todo(j0[0], msg) | ||
| 83 | |||
| 84 | @script:python fix2_org depends on org@ | ||
| 85 | j0 << fix2_context.j0; | ||
| 86 | @@ | ||
| 87 | |||
| 88 | msg = "No need to set .owner here. The core will do it." | ||
| 89 | coccilib.org.print_todo(j0[0], msg) | ||
| 90 | |||
| 91 | // ---------------------------------------------------------------------------- | ||
| 92 | |||
| 93 | @script:python fix1_report depends on report@ | ||
| 94 | j0 << fix1_context.j0; | ||
| 95 | @@ | ||
| 96 | |||
| 97 | msg = "No need to set .owner here. The core will do it." | ||
| 98 | coccilib.report.print_report(j0[0], msg) | ||
| 99 | |||
| 100 | @script:python fix2_report depends on report@ | ||
| 101 | j0 << fix2_context.j0; | ||
| 102 | @@ | ||
| 103 | |||
| 104 | msg = "No need to set .owner here. The core will do it." | ||
| 105 | coccilib.report.print_report(j0[0], msg) | ||
| 106 | |||
diff --git a/scripts/coccinelle/misc/bugon.cocci b/scripts/coccinelle/misc/bugon.cocci index 556456ca761c..3b7eec24fb5a 100644 --- a/scripts/coccinelle/misc/bugon.cocci +++ b/scripts/coccinelle/misc/bugon.cocci | |||
| @@ -8,7 +8,7 @@ | |||
| 8 | // Confidence: High | 8 | // Confidence: High |
| 9 | // Copyright: (C) 2014 Himangi Saraogi. GPLv2. | 9 | // Copyright: (C) 2014 Himangi Saraogi. GPLv2. |
| 10 | // Comments: | 10 | // Comments: |
| 11 | // Options: --no-includes, --include-headers | 11 | // Options: --no-includes --include-headers |
| 12 | 12 | ||
| 13 | virtual patch | 13 | virtual patch |
| 14 | virtual context | 14 | virtual context |
diff --git a/scripts/coccinelle/misc/simple_return.cocci b/scripts/coccinelle/misc/simple_return.cocci new file mode 100644 index 000000000000..47f7084b6360 --- /dev/null +++ b/scripts/coccinelle/misc/simple_return.cocci | |||
| @@ -0,0 +1,180 @@ | |||
| 1 | /// Simplify a trivial if-return sequence. Possibly combine with a | ||
| 2 | /// preceding function call. | ||
| 3 | // | ||
| 4 | // Confidence: High | ||
| 5 | // Copyright: (C) 2014 Julia Lawall, INRIA/LIP6. GPLv2. | ||
| 6 | // Copyright: (C) 2014 Gilles Muller, INRIA/LiP6. GPLv2. | ||
| 7 | // URL: http://coccinelle.lip6.fr/ | ||
| 8 | // Comments: | ||
| 9 | // Options: --no-includes --include-headers | ||
| 10 | |||
| 11 | virtual patch | ||
| 12 | virtual context | ||
| 13 | virtual org | ||
| 14 | virtual report | ||
| 15 | |||
| 16 | @r depends on patch@ | ||
| 17 | local idexpression e; | ||
| 18 | identifier i,f,fn; | ||
| 19 | @@ | ||
| 20 | |||
| 21 | fn(...) { <... | ||
| 22 | - e@i = | ||
| 23 | + return | ||
| 24 | f(...); | ||
| 25 | -if (i != 0) return i; | ||
| 26 | -return 0; | ||
| 27 | ...> } | ||
| 28 | |||
| 29 | @depends on patch@ | ||
| 30 | identifier r.i; | ||
| 31 | type t; | ||
| 32 | @@ | ||
| 33 | |||
| 34 | -t i; | ||
| 35 | ... when != i | ||
| 36 | |||
| 37 | @depends on patch@ | ||
| 38 | expression e; | ||
| 39 | @@ | ||
| 40 | |||
| 41 | -if (e != 0) | ||
| 42 | return e; | ||
| 43 | -return 0; | ||
| 44 | |||
| 45 | // ----------------------------------------------------------------------- | ||
| 46 | |||
| 47 | @s1 depends on context || org || report@ | ||
| 48 | local idexpression e; | ||
| 49 | identifier i,f,fn; | ||
| 50 | position p,p1,p2; | ||
| 51 | @@ | ||
| 52 | |||
| 53 | fn(...) { <... | ||
| 54 | * e@i@p = f(...); | ||
| 55 | if (\(i@p1 != 0\|i@p2 < 0\)) | ||
| 56 | return i; | ||
| 57 | return 0; | ||
| 58 | ...> } | ||
| 59 | |||
| 60 | @s2 depends on context || org || report forall@ | ||
| 61 | identifier s1.i; | ||
| 62 | type t; | ||
| 63 | position q,s1.p; | ||
| 64 | expression e,f; | ||
| 65 | @@ | ||
| 66 | |||
| 67 | * t i@q; | ||
| 68 | ... when != i | ||
| 69 | e@p = f(...); | ||
| 70 | |||
| 71 | @s3 depends on context || org || report@ | ||
| 72 | expression e; | ||
| 73 | position p1!=s1.p1; | ||
| 74 | position p2!=s1.p2; | ||
| 75 | @@ | ||
| 76 | |||
| 77 | *if (\(e@p1 != 0\|e@p2 < 0\)) | ||
| 78 | return e; | ||
| 79 | return 0; | ||
| 80 | |||
| 81 | // ----------------------------------------------------------------------- | ||
| 82 | |||
| 83 | @script:python depends on org@ | ||
| 84 | p << s1.p; | ||
| 85 | p1 << s1.p1; | ||
| 86 | q << s2.q; | ||
| 87 | @@ | ||
| 88 | |||
| 89 | cocci.print_main("decl",q) | ||
| 90 | cocci.print_secs("use",p) | ||
| 91 | cocci.include_match(False) | ||
| 92 | |||
| 93 | @script:python depends on org@ | ||
| 94 | p << s1.p; | ||
| 95 | p2 << s1.p2; | ||
| 96 | q << s2.q; | ||
| 97 | @@ | ||
| 98 | |||
| 99 | cocci.print_main("decl",q) | ||
| 100 | cocci.print_secs("use with questionable test",p) | ||
| 101 | cocci.include_match(False) | ||
| 102 | |||
| 103 | @script:python depends on org@ | ||
| 104 | p << s1.p; | ||
| 105 | p1 << s1.p1; | ||
| 106 | @@ | ||
| 107 | |||
| 108 | cocci.print_main("use",p) | ||
| 109 | |||
| 110 | @script:python depends on org@ | ||
| 111 | p << s1.p; | ||
| 112 | p2 << s1.p2; | ||
| 113 | @@ | ||
| 114 | |||
| 115 | cocci.print_main("use with questionable test",p) | ||
| 116 | |||
| 117 | @script:python depends on org@ | ||
| 118 | p << s3.p1; | ||
| 119 | @@ | ||
| 120 | |||
| 121 | cocci.print_main("test",p) | ||
| 122 | |||
| 123 | @script:python depends on org@ | ||
| 124 | p << s3.p2; | ||
| 125 | @@ | ||
| 126 | |||
| 127 | cocci.print_main("questionable test",p) | ||
| 128 | |||
| 129 | // ----------------------------------------------------------------------- | ||
| 130 | |||
| 131 | @script:python depends on report@ | ||
| 132 | p << s1.p; | ||
| 133 | p1 << s1.p1; | ||
| 134 | q << s2.q; | ||
| 135 | @@ | ||
| 136 | |||
| 137 | msg = "WARNING: end returns can be simpified and declaration on line %s can be dropped" % (q[0].line) | ||
| 138 | coccilib.report.print_report(p[0],msg) | ||
| 139 | cocci.include_match(False) | ||
| 140 | |||
| 141 | @script:python depends on report@ | ||
| 142 | p << s1.p; | ||
| 143 | p1 << s1.p1; | ||
| 144 | q << s2.q | ||
| 145 | ; | ||
| 146 | @@ | ||
| 147 | |||
| 148 | msg = "WARNING: end returns may be simpified if negative or 0 value and declaration on line %s can be dropped" % (q[0].line) | ||
| 149 | coccilib.report.print_report(p[0],msg) | ||
| 150 | cocci.include_match(False) | ||
| 151 | |||
| 152 | @script:python depends on report@ | ||
| 153 | p << s1.p; | ||
| 154 | p1 << s1.p1; | ||
| 155 | @@ | ||
| 156 | |||
| 157 | msg = "WARNING: end returns can be simpified" | ||
| 158 | coccilib.report.print_report(p[0],msg) | ||
| 159 | |||
| 160 | @script:python depends on report@ | ||
| 161 | p << s1.p; | ||
| 162 | p2 << s1.p2; | ||
| 163 | @@ | ||
| 164 | |||
| 165 | msg = "WARNING: end returns can be simpified if negative or 0 value" | ||
| 166 | coccilib.report.print_report(p[0],msg) | ||
| 167 | |||
| 168 | @script:python depends on report@ | ||
| 169 | p << s3.p1; | ||
| 170 | @@ | ||
| 171 | |||
| 172 | msg = "WARNING: end returns can be simpified" | ||
| 173 | coccilib.report.print_report(p[0],msg) | ||
| 174 | |||
| 175 | @script:python depends on report@ | ||
| 176 | p << s3.p2; | ||
| 177 | @@ | ||
| 178 | |||
| 179 | msg = "WARNING: end returns can be simpified if tested value is negative or 0" | ||
| 180 | coccilib.report.print_report(p[0],msg) | ||
diff --git a/scripts/export_report.pl b/scripts/export_report.pl index 8f79b701de87..8f79b701de87 100644..100755 --- a/scripts/export_report.pl +++ b/scripts/export_report.pl | |||
diff --git a/scripts/gcc-goto.sh b/scripts/gcc-goto.sh index c9469d34ecc6..c9469d34ecc6 100644..100755 --- a/scripts/gcc-goto.sh +++ b/scripts/gcc-goto.sh | |||
diff --git a/scripts/gcc-ld b/scripts/gcc-ld index cadab9a13ed7..cadab9a13ed7 100644..100755 --- a/scripts/gcc-ld +++ b/scripts/gcc-ld | |||
diff --git a/scripts/gcc-version.sh b/scripts/gcc-version.sh index 7f2126df91f2..7f2126df91f2 100644..100755 --- a/scripts/gcc-version.sh +++ b/scripts/gcc-version.sh | |||
diff --git a/scripts/gcc-x86_32-has-stack-protector.sh b/scripts/gcc-x86_32-has-stack-protector.sh index 12dbd0b11ea4..12dbd0b11ea4 100644..100755 --- a/scripts/gcc-x86_32-has-stack-protector.sh +++ b/scripts/gcc-x86_32-has-stack-protector.sh | |||
diff --git a/scripts/gcc-x86_64-has-stack-protector.sh b/scripts/gcc-x86_64-has-stack-protector.sh index 973e8c141567..973e8c141567 100644..100755 --- a/scripts/gcc-x86_64-has-stack-protector.sh +++ b/scripts/gcc-x86_64-has-stack-protector.sh | |||
diff --git a/scripts/gen_initramfs_list.sh b/scripts/gen_initramfs_list.sh index 17fa901418ae..17fa901418ae 100644..100755 --- a/scripts/gen_initramfs_list.sh +++ b/scripts/gen_initramfs_list.sh | |||
diff --git a/scripts/headers.sh b/scripts/headers.sh index 95ece06599a5..d4dc4de5cea1 100755 --- a/scripts/headers.sh +++ b/scripts/headers.sh | |||
| @@ -19,8 +19,6 @@ for arch in ${archs}; do | |||
| 19 | case ${arch} in | 19 | case ${arch} in |
| 20 | um) # no userspace export | 20 | um) # no userspace export |
| 21 | ;; | 21 | ;; |
| 22 | cris) # headers export are known broken | ||
| 23 | ;; | ||
| 24 | *) | 22 | *) |
| 25 | if [ -d ${srctree}/arch/${arch} ]; then | 23 | if [ -d ${srctree}/arch/${arch} ]; then |
| 26 | do_command $1 ${arch} | 24 | do_command $1 ${arch} |
diff --git a/scripts/headers_check.pl b/scripts/headers_check.pl index 62320f93e903..62320f93e903 100644..100755 --- a/scripts/headers_check.pl +++ b/scripts/headers_check.pl | |||
diff --git a/scripts/headers_install.sh b/scripts/headers_install.sh index 5de5660cb708..fdebd66f8fc1 100644..100755 --- a/scripts/headers_install.sh +++ b/scripts/headers_install.sh | |||
| @@ -1,8 +1,8 @@ | |||
| 1 | #!/bin/sh | 1 | #!/bin/sh |
| 2 | 2 | ||
| 3 | if [ $# -lt 1 ] | 3 | if [ $# -lt 2 ] |
| 4 | then | 4 | then |
| 5 | echo "Usage: headers_install.sh OUTDIR SRCDIR [FILES...] | 5 | echo "Usage: headers_install.sh OUTDIR SRCDIR [FILES...]" |
| 6 | echo | 6 | echo |
| 7 | echo "Prepares kernel header files for use by user space, by removing" | 7 | echo "Prepares kernel header files for use by user space, by removing" |
| 8 | echo "all compiler.h definitions and #includes, removing any" | 8 | echo "all compiler.h definitions and #includes, removing any" |
diff --git a/scripts/kallsyms.c b/scripts/kallsyms.c index dc7aa45e80ce..c6d33bd15b04 100644 --- a/scripts/kallsyms.c +++ b/scripts/kallsyms.c | |||
| @@ -84,7 +84,7 @@ static void usage(void) | |||
| 84 | */ | 84 | */ |
| 85 | static inline int is_arm_mapping_symbol(const char *str) | 85 | static inline int is_arm_mapping_symbol(const char *str) |
| 86 | { | 86 | { |
| 87 | return str[0] == '$' && strchr("atd", str[1]) | 87 | return str[0] == '$' && strchr("axtd", str[1]) |
| 88 | && (str[2] == '\0' || str[2] == '.'); | 88 | && (str[2] == '\0' || str[2] == '.'); |
| 89 | } | 89 | } |
| 90 | 90 | ||
diff --git a/scripts/kconfig/Makefile b/scripts/kconfig/Makefile index 9c4d2412fb72..9645c0739386 100644 --- a/scripts/kconfig/Makefile +++ b/scripts/kconfig/Makefile | |||
| @@ -104,6 +104,23 @@ endif | |||
| 104 | %_defconfig: $(obj)/conf | 104 | %_defconfig: $(obj)/conf |
| 105 | $(Q)$< --defconfig=arch/$(SRCARCH)/configs/$@ $(Kconfig) | 105 | $(Q)$< --defconfig=arch/$(SRCARCH)/configs/$@ $(Kconfig) |
| 106 | 106 | ||
| 107 | configfiles=$(wildcard $(srctree)/kernel/configs/$(1).config $(srctree)/arch/$(SRCARCH)/configs/$(1).config) | ||
| 108 | |||
| 109 | define mergeconfig | ||
| 110 | $(if $(wildcard $(objtree)/.config),, $(error You need an existing .config for this target)) | ||
| 111 | $(if $(call configfiles,$(1)),, $(error No configuration exists for this target on this architecture)) | ||
| 112 | $(Q)$(CONFIG_SHELL) $(srctree)/scripts/kconfig/merge_config.sh -m -O $(objtree) $(objtree)/.config $(call configfiles,$(1)) | ||
| 113 | $(Q)yes "" | $(MAKE) -f $(srctree)/Makefile oldconfig | ||
| 114 | endef | ||
| 115 | |||
| 116 | PHONY += kvmconfig | ||
| 117 | kvmconfig: | ||
| 118 | $(call mergeconfig,kvm_guest) | ||
| 119 | |||
| 120 | PHONY += tinyconfig | ||
| 121 | tinyconfig: allnoconfig | ||
| 122 | $(call mergeconfig,tiny) | ||
| 123 | |||
| 107 | # Help text used by make help | 124 | # Help text used by make help |
| 108 | help: | 125 | help: |
| 109 | @echo ' config - Update current config utilising a line-oriented program' | 126 | @echo ' config - Update current config utilising a line-oriented program' |
| @@ -124,6 +141,8 @@ help: | |||
| 124 | @echo ' randconfig - New config with random answer to all options' | 141 | @echo ' randconfig - New config with random answer to all options' |
| 125 | @echo ' listnewconfig - List new options' | 142 | @echo ' listnewconfig - List new options' |
| 126 | @echo ' olddefconfig - Same as silentoldconfig but sets new symbols to their default value' | 143 | @echo ' olddefconfig - Same as silentoldconfig but sets new symbols to their default value' |
| 144 | @echo ' kvmconfig - Enable additional options for guest kernel support' | ||
| 145 | @echo ' tinyconfig - Configure the tiniest possible kernel' | ||
| 127 | 146 | ||
| 128 | # lxdialog stuff | 147 | # lxdialog stuff |
| 129 | check-lxdialog := $(srctree)/$(src)/lxdialog/check-lxdialog.sh | 148 | check-lxdialog := $(srctree)/$(src)/lxdialog/check-lxdialog.sh |
| @@ -157,39 +176,10 @@ qconf-cxxobjs := qconf.o | |||
| 157 | qconf-objs := zconf.tab.o | 176 | qconf-objs := zconf.tab.o |
| 158 | gconf-objs := gconf.o zconf.tab.o | 177 | gconf-objs := gconf.o zconf.tab.o |
| 159 | 178 | ||
| 160 | hostprogs-y := conf | 179 | hostprogs-y := conf nconf mconf kxgettext qconf gconf |
| 161 | |||
| 162 | ifeq ($(MAKECMDGOALS),nconfig) | ||
| 163 | hostprogs-y += nconf | ||
| 164 | endif | ||
| 165 | |||
| 166 | ifeq ($(MAKECMDGOALS),menuconfig) | ||
| 167 | hostprogs-y += mconf | ||
| 168 | endif | ||
| 169 | |||
| 170 | ifeq ($(MAKECMDGOALS),update-po-config) | ||
| 171 | hostprogs-y += kxgettext | ||
| 172 | endif | ||
| 173 | |||
| 174 | ifeq ($(MAKECMDGOALS),xconfig) | ||
| 175 | qconf-target := 1 | ||
| 176 | endif | ||
| 177 | ifeq ($(MAKECMDGOALS),gconfig) | ||
| 178 | gconf-target := 1 | ||
| 179 | endif | ||
| 180 | |||
| 181 | |||
| 182 | ifeq ($(qconf-target),1) | ||
| 183 | hostprogs-y += qconf | ||
| 184 | endif | ||
| 185 | |||
| 186 | ifeq ($(gconf-target),1) | ||
| 187 | hostprogs-y += gconf | ||
| 188 | endif | ||
| 189 | 180 | ||
| 190 | clean-files := qconf.moc .tmp_qtcheck .tmp_gtkcheck | 181 | clean-files := qconf.moc .tmp_qtcheck .tmp_gtkcheck |
| 191 | clean-files += zconf.tab.c zconf.lex.c zconf.hash.c gconf.glade.h | 182 | clean-files += zconf.tab.c zconf.lex.c zconf.hash.c gconf.glade.h |
| 192 | clean-files += mconf qconf gconf nconf | ||
| 193 | clean-files += config.pot linux.pot | 183 | clean-files += config.pot linux.pot |
| 194 | 184 | ||
| 195 | # Check that we have the required ncurses stuff installed for lxdialog (menuconfig) | 185 | # Check that we have the required ncurses stuff installed for lxdialog (menuconfig) |
| @@ -220,11 +210,12 @@ HOSTCFLAGS_gconf.o = `pkg-config --cflags gtk+-2.0 gmodule-2.0 libglade-2.0` \ | |||
| 220 | HOSTLOADLIBES_mconf = $(shell $(CONFIG_SHELL) $(check-lxdialog) -ldflags $(HOSTCC)) | 210 | HOSTLOADLIBES_mconf = $(shell $(CONFIG_SHELL) $(check-lxdialog) -ldflags $(HOSTCC)) |
| 221 | 211 | ||
| 222 | HOSTLOADLIBES_nconf = $(shell \ | 212 | HOSTLOADLIBES_nconf = $(shell \ |
| 223 | pkg-config --libs menu panel ncurses 2>/dev/null \ | 213 | pkg-config --libs menuw panelw ncursesw 2>/dev/null \ |
| 214 | || pkg-config --libs menu panel ncurses 2>/dev/null \ | ||
| 224 | || echo "-lmenu -lpanel -lncurses" ) | 215 | || echo "-lmenu -lpanel -lncurses" ) |
| 225 | $(obj)/qconf.o: $(obj)/.tmp_qtcheck | 216 | $(obj)/qconf.o: $(obj)/.tmp_qtcheck |
| 226 | 217 | ||
| 227 | ifeq ($(qconf-target),1) | 218 | ifeq ($(MAKECMDGOALS),xconfig) |
| 228 | $(obj)/.tmp_qtcheck: $(src)/Makefile | 219 | $(obj)/.tmp_qtcheck: $(src)/Makefile |
| 229 | -include $(obj)/.tmp_qtcheck | 220 | -include $(obj)/.tmp_qtcheck |
| 230 | 221 | ||
| @@ -281,7 +272,7 @@ endif | |||
| 281 | 272 | ||
| 282 | $(obj)/gconf.o: $(obj)/.tmp_gtkcheck | 273 | $(obj)/gconf.o: $(obj)/.tmp_gtkcheck |
| 283 | 274 | ||
| 284 | ifeq ($(gconf-target),1) | 275 | ifeq ($(MAKECMDGOALS),gconfig) |
| 285 | -include $(obj)/.tmp_gtkcheck | 276 | -include $(obj)/.tmp_gtkcheck |
| 286 | 277 | ||
| 287 | # GTK needs some extra effort, too... | 278 | # GTK needs some extra effort, too... |
diff --git a/scripts/kconfig/list.h b/scripts/kconfig/list.h index 685d80e1bb0e..2cf23f002d3f 100644 --- a/scripts/kconfig/list.h +++ b/scripts/kconfig/list.h | |||
| @@ -34,7 +34,7 @@ struct list_head { | |||
| 34 | * list_entry - get the struct for this entry | 34 | * list_entry - get the struct for this entry |
| 35 | * @ptr: the &struct list_head pointer. | 35 | * @ptr: the &struct list_head pointer. |
| 36 | * @type: the type of the struct this is embedded in. | 36 | * @type: the type of the struct this is embedded in. |
| 37 | * @member: the name of the list_struct within the struct. | 37 | * @member: the name of the list_head within the struct. |
| 38 | */ | 38 | */ |
| 39 | #define list_entry(ptr, type, member) \ | 39 | #define list_entry(ptr, type, member) \ |
| 40 | container_of(ptr, type, member) | 40 | container_of(ptr, type, member) |
| @@ -43,7 +43,7 @@ struct list_head { | |||
| 43 | * list_for_each_entry - iterate over list of given type | 43 | * list_for_each_entry - iterate over list of given type |
| 44 | * @pos: the type * to use as a loop cursor. | 44 | * @pos: the type * to use as a loop cursor. |
| 45 | * @head: the head for your list. | 45 | * @head: the head for your list. |
| 46 | * @member: the name of the list_struct within the struct. | 46 | * @member: the name of the list_head within the struct. |
| 47 | */ | 47 | */ |
| 48 | #define list_for_each_entry(pos, head, member) \ | 48 | #define list_for_each_entry(pos, head, member) \ |
| 49 | for (pos = list_entry((head)->next, typeof(*pos), member); \ | 49 | for (pos = list_entry((head)->next, typeof(*pos), member); \ |
| @@ -55,7 +55,7 @@ struct list_head { | |||
| 55 | * @pos: the type * to use as a loop cursor. | 55 | * @pos: the type * to use as a loop cursor. |
| 56 | * @n: another type * to use as temporary storage | 56 | * @n: another type * to use as temporary storage |
| 57 | * @head: the head for your list. | 57 | * @head: the head for your list. |
| 58 | * @member: the name of the list_struct within the struct. | 58 | * @member: the name of the list_head within the struct. |
| 59 | */ | 59 | */ |
| 60 | #define list_for_each_entry_safe(pos, n, head, member) \ | 60 | #define list_for_each_entry_safe(pos, n, head, member) \ |
| 61 | for (pos = list_entry((head)->next, typeof(*pos), member), \ | 61 | for (pos = list_entry((head)->next, typeof(*pos), member), \ |
diff --git a/scripts/kconfig/lxdialog/check-lxdialog.sh b/scripts/kconfig/lxdialog/check-lxdialog.sh index 9d2a4c585ee1..5075ebf2d3b9 100644..100755 --- a/scripts/kconfig/lxdialog/check-lxdialog.sh +++ b/scripts/kconfig/lxdialog/check-lxdialog.sh | |||
| @@ -21,7 +21,11 @@ ldflags() | |||
| 21 | # Where is ncurses.h? | 21 | # Where is ncurses.h? |
| 22 | ccflags() | 22 | ccflags() |
| 23 | { | 23 | { |
| 24 | if [ -f /usr/include/ncursesw/curses.h ]; then | 24 | if pkg-config --cflags ncursesw 2>/dev/null; then |
| 25 | echo '-DCURSES_LOC="<ncurses.h>" -DNCURSES_WIDECHAR=1' | ||
| 26 | elif pkg-config --cflags ncurses 2>/dev/null; then | ||
| 27 | echo '-DCURSES_LOC="<ncurses.h>"' | ||
| 28 | elif [ -f /usr/include/ncursesw/curses.h ]; then | ||
| 25 | echo '-I/usr/include/ncursesw -DCURSES_LOC="<curses.h>"' | 29 | echo '-I/usr/include/ncursesw -DCURSES_LOC="<curses.h>"' |
| 26 | echo ' -DNCURSES_WIDECHAR=1' | 30 | echo ' -DNCURSES_WIDECHAR=1' |
| 27 | elif [ -f /usr/include/ncurses/ncurses.h ]; then | 31 | elif [ -f /usr/include/ncurses/ncurses.h ]; then |
diff --git a/scripts/kconfig/lxdialog/dialog.h b/scripts/kconfig/lxdialog/dialog.h index b4343d384926..fcffd5b41fb0 100644 --- a/scripts/kconfig/lxdialog/dialog.h +++ b/scripts/kconfig/lxdialog/dialog.h | |||
| @@ -170,7 +170,7 @@ char item_tag(void); | |||
| 170 | /* item list manipulation for lxdialog use */ | 170 | /* item list manipulation for lxdialog use */ |
| 171 | #define MAXITEMSTR 200 | 171 | #define MAXITEMSTR 200 |
| 172 | struct dialog_item { | 172 | struct dialog_item { |
| 173 | char str[MAXITEMSTR]; /* promtp displayed */ | 173 | char str[MAXITEMSTR]; /* prompt displayed */ |
| 174 | char tag; | 174 | char tag; |
| 175 | void *data; /* pointer to menu item - used by menubox+checklist */ | 175 | void *data; /* pointer to menu item - used by menubox+checklist */ |
| 176 | int selected; /* Set to 1 by dialog_*() function if selected. */ | 176 | int selected; /* Set to 1 by dialog_*() function if selected. */ |
diff --git a/scripts/kconfig/mconf.c b/scripts/kconfig/mconf.c index 14cea7463a62..4dd37552abc2 100644 --- a/scripts/kconfig/mconf.c +++ b/scripts/kconfig/mconf.c | |||
| @@ -330,10 +330,10 @@ static void set_subtitle(void) | |||
| 330 | list_for_each_entry(sp, &trail, entries) { | 330 | list_for_each_entry(sp, &trail, entries) { |
| 331 | if (sp->text) { | 331 | if (sp->text) { |
| 332 | if (pos) { | 332 | if (pos) { |
| 333 | pos->next = xcalloc(sizeof(*pos), 1); | 333 | pos->next = xcalloc(1, sizeof(*pos)); |
| 334 | pos = pos->next; | 334 | pos = pos->next; |
| 335 | } else { | 335 | } else { |
| 336 | subtitles = pos = xcalloc(sizeof(*pos), 1); | 336 | subtitles = pos = xcalloc(1, sizeof(*pos)); |
| 337 | } | 337 | } |
| 338 | pos->text = sp->text; | 338 | pos->text = sp->text; |
| 339 | } | 339 | } |
diff --git a/scripts/kconfig/menu.c b/scripts/kconfig/menu.c index a26cc5d2a9b0..72c9dba84c5d 100644 --- a/scripts/kconfig/menu.c +++ b/scripts/kconfig/menu.c | |||
| @@ -548,7 +548,7 @@ static void get_prompt_str(struct gstr *r, struct property *prop, | |||
| 548 | { | 548 | { |
| 549 | int i, j; | 549 | int i, j; |
| 550 | struct menu *submenu[8], *menu, *location = NULL; | 550 | struct menu *submenu[8], *menu, *location = NULL; |
| 551 | struct jump_key *jump; | 551 | struct jump_key *jump = NULL; |
| 552 | 552 | ||
| 553 | str_printf(r, _("Prompt: %s\n"), _(prop->text)); | 553 | str_printf(r, _("Prompt: %s\n"), _(prop->text)); |
| 554 | menu = prop->menu->parent; | 554 | menu = prop->menu->parent; |
| @@ -586,7 +586,7 @@ static void get_prompt_str(struct gstr *r, struct property *prop, | |||
| 586 | str_printf(r, _(" Location:\n")); | 586 | str_printf(r, _(" Location:\n")); |
| 587 | for (j = 4; --i >= 0; j += 2) { | 587 | for (j = 4; --i >= 0; j += 2) { |
| 588 | menu = submenu[i]; | 588 | menu = submenu[i]; |
| 589 | if (head && location && menu == location) | 589 | if (jump && menu == location) |
| 590 | jump->offset = strlen(r->s); | 590 | jump->offset = strlen(r->s); |
| 591 | str_printf(r, "%*c-> %s", j, ' ', | 591 | str_printf(r, "%*c-> %s", j, ' ', |
| 592 | _(menu_get_prompt(menu))); | 592 | _(menu_get_prompt(menu))); |
diff --git a/scripts/kconfig/streamline_config.pl b/scripts/kconfig/streamline_config.pl index 9cb8522d8d22..9cb8522d8d22 100644..100755 --- a/scripts/kconfig/streamline_config.pl +++ b/scripts/kconfig/streamline_config.pl | |||
diff --git a/scripts/kernel-doc b/scripts/kernel-doc index 70bea942b413..9922e66883a5 100755 --- a/scripts/kernel-doc +++ b/scripts/kernel-doc | |||
| @@ -1753,7 +1753,7 @@ sub dump_struct($$) { | |||
| 1753 | # strip kmemcheck_bitfield_{begin,end}.*; | 1753 | # strip kmemcheck_bitfield_{begin,end}.*; |
| 1754 | $members =~ s/kmemcheck_bitfield_.*?;//gos; | 1754 | $members =~ s/kmemcheck_bitfield_.*?;//gos; |
| 1755 | # strip attributes | 1755 | # strip attributes |
| 1756 | $members =~ s/__aligned\s*\(.+\)//gos; | 1756 | $members =~ s/__aligned\s*\([^;]*\)//gos; |
| 1757 | 1757 | ||
| 1758 | create_parameterlist($members, ';', $file); | 1758 | create_parameterlist($members, ';', $file); |
| 1759 | check_sections($file, $declaration_name, "struct", $sectcheck, $struct_actual, $nested); | 1759 | check_sections($file, $declaration_name, "struct", $sectcheck, $struct_actual, $nested); |
diff --git a/scripts/link-vmlinux.sh b/scripts/link-vmlinux.sh index 86a4fe75f453..86a4fe75f453 100644..100755 --- a/scripts/link-vmlinux.sh +++ b/scripts/link-vmlinux.sh | |||
diff --git a/scripts/markup_oops.pl b/scripts/markup_oops.pl index c21d16328d3f..c21d16328d3f 100644..100755 --- a/scripts/markup_oops.pl +++ b/scripts/markup_oops.pl | |||
diff --git a/scripts/mkmakefile b/scripts/mkmakefile index 84af27bf0f99..84af27bf0f99 100644..100755 --- a/scripts/mkmakefile +++ b/scripts/mkmakefile | |||
diff --git a/scripts/mksysmap b/scripts/mksysmap index 7ada35a0f478..7ada35a0f478 100644..100755 --- a/scripts/mksysmap +++ b/scripts/mksysmap | |||
diff --git a/scripts/mod/modpost.c b/scripts/mod/modpost.c index 091d90573b63..d439856f8176 100644 --- a/scripts/mod/modpost.c +++ b/scripts/mod/modpost.c | |||
| @@ -24,9 +24,9 @@ | |||
| 24 | #include "../../include/linux/export.h" | 24 | #include "../../include/linux/export.h" |
| 25 | 25 | ||
| 26 | /* Are we using CONFIG_MODVERSIONS? */ | 26 | /* Are we using CONFIG_MODVERSIONS? */ |
| 27 | int modversions = 0; | 27 | static int modversions = 0; |
| 28 | /* Warn about undefined symbols? (do so if we have vmlinux) */ | 28 | /* Warn about undefined symbols? (do so if we have vmlinux) */ |
| 29 | int have_vmlinux = 0; | 29 | static int have_vmlinux = 0; |
| 30 | /* Is CONFIG_MODULE_SRCVERSION_ALL set? */ | 30 | /* Is CONFIG_MODULE_SRCVERSION_ALL set? */ |
| 31 | static int all_versions = 0; | 31 | static int all_versions = 0; |
| 32 | /* If we are modposting external module set to 1 */ | 32 | /* If we are modposting external module set to 1 */ |
| @@ -229,7 +229,7 @@ static struct symbol *find_symbol(const char *name) | |||
| 229 | return NULL; | 229 | return NULL; |
| 230 | } | 230 | } |
| 231 | 231 | ||
| 232 | static struct { | 232 | static const struct { |
| 233 | const char *str; | 233 | const char *str; |
| 234 | enum export export; | 234 | enum export export; |
| 235 | } export_list[] = { | 235 | } export_list[] = { |
| @@ -805,7 +805,7 @@ static int match(const char *sym, const char * const pat[]) | |||
| 805 | } | 805 | } |
| 806 | 806 | ||
| 807 | /* sections that we do not want to do full section mismatch check on */ | 807 | /* sections that we do not want to do full section mismatch check on */ |
| 808 | static const char *section_white_list[] = | 808 | static const char *const section_white_list[] = |
| 809 | { | 809 | { |
| 810 | ".comment*", | 810 | ".comment*", |
| 811 | ".debug*", | 811 | ".debug*", |
| @@ -882,17 +882,18 @@ static void check_section(const char *modname, struct elf_info *elf, | |||
| 882 | #define MEM_EXIT_SECTIONS ".memexit.*" | 882 | #define MEM_EXIT_SECTIONS ".memexit.*" |
| 883 | 883 | ||
| 884 | /* init data sections */ | 884 | /* init data sections */ |
| 885 | static const char *init_data_sections[] = { ALL_INIT_DATA_SECTIONS, NULL }; | 885 | static const char *const init_data_sections[] = |
| 886 | { ALL_INIT_DATA_SECTIONS, NULL }; | ||
| 886 | 887 | ||
| 887 | /* all init sections */ | 888 | /* all init sections */ |
| 888 | static const char *init_sections[] = { ALL_INIT_SECTIONS, NULL }; | 889 | static const char *const init_sections[] = { ALL_INIT_SECTIONS, NULL }; |
| 889 | 890 | ||
| 890 | /* All init and exit sections (code + data) */ | 891 | /* All init and exit sections (code + data) */ |
| 891 | static const char *init_exit_sections[] = | 892 | static const char *const init_exit_sections[] = |
| 892 | {ALL_INIT_SECTIONS, ALL_EXIT_SECTIONS, NULL }; | 893 | {ALL_INIT_SECTIONS, ALL_EXIT_SECTIONS, NULL }; |
| 893 | 894 | ||
| 894 | /* data section */ | 895 | /* data section */ |
| 895 | static const char *data_sections[] = { DATA_SECTIONS, NULL }; | 896 | static const char *const data_sections[] = { DATA_SECTIONS, NULL }; |
| 896 | 897 | ||
| 897 | 898 | ||
| 898 | /* symbols in .data that may refer to init/exit sections */ | 899 | /* symbols in .data that may refer to init/exit sections */ |
| @@ -906,8 +907,8 @@ static const char *data_sections[] = { DATA_SECTIONS, NULL }; | |||
| 906 | "*_probe_one", \ | 907 | "*_probe_one", \ |
| 907 | "*_console" | 908 | "*_console" |
| 908 | 909 | ||
| 909 | static const char *head_sections[] = { ".head.text*", NULL }; | 910 | static const char *const head_sections[] = { ".head.text*", NULL }; |
| 910 | static const char *linker_symbols[] = | 911 | static const char *const linker_symbols[] = |
| 911 | { "__init_begin", "_sinittext", "_einittext", NULL }; | 912 | { "__init_begin", "_sinittext", "_einittext", NULL }; |
| 912 | 913 | ||
| 913 | enum mismatch { | 914 | enum mismatch { |
| @@ -929,7 +930,7 @@ struct sectioncheck { | |||
| 929 | const char *symbol_white_list[20]; | 930 | const char *symbol_white_list[20]; |
| 930 | }; | 931 | }; |
| 931 | 932 | ||
| 932 | const struct sectioncheck sectioncheck[] = { | 933 | static const struct sectioncheck sectioncheck[] = { |
| 933 | /* Do not reference init/exit code/data from | 934 | /* Do not reference init/exit code/data from |
| 934 | * normal code and data | 935 | * normal code and data |
| 935 | */ | 936 | */ |
| @@ -1146,7 +1147,7 @@ static Elf_Sym *find_elf_symbol(struct elf_info *elf, Elf64_Sword addr, | |||
| 1146 | 1147 | ||
| 1147 | static inline int is_arm_mapping_symbol(const char *str) | 1148 | static inline int is_arm_mapping_symbol(const char *str) |
| 1148 | { | 1149 | { |
| 1149 | return str[0] == '$' && strchr("atd", str[1]) | 1150 | return str[0] == '$' && strchr("axtd", str[1]) |
| 1150 | && (str[2] == '\0' || str[2] == '.'); | 1151 | && (str[2] == '\0' || str[2] == '.'); |
| 1151 | } | 1152 | } |
| 1152 | 1153 | ||
| @@ -2211,7 +2212,7 @@ int main(int argc, char **argv) | |||
| 2211 | err = 0; | 2212 | err = 0; |
| 2212 | 2213 | ||
| 2213 | for (mod = modules; mod; mod = mod->next) { | 2214 | for (mod = modules; mod; mod = mod->next) { |
| 2214 | char fname[strlen(mod->name) + 10]; | 2215 | char fname[PATH_MAX]; |
| 2215 | 2216 | ||
| 2216 | if (mod->skip) | 2217 | if (mod->skip) |
| 2217 | continue; | 2218 | continue; |
diff --git a/scripts/package/builddeb b/scripts/package/builddeb index 35d5a5877d04..59726243c2eb 100644..100755 --- a/scripts/package/builddeb +++ b/scripts/package/builddeb | |||
| @@ -37,7 +37,7 @@ create_package() { | |||
| 37 | s390*) | 37 | s390*) |
| 38 | debarch=s390$(grep -q CONFIG_64BIT=y $KCONFIG_CONFIG && echo x || true) ;; | 38 | debarch=s390$(grep -q CONFIG_64BIT=y $KCONFIG_CONFIG && echo x || true) ;; |
| 39 | ppc*) | 39 | ppc*) |
| 40 | debarch=powerpc ;; | 40 | debarch=$(grep -q CPU_LITTLE_ENDIAN=y $KCONFIG_CONFIG && echo ppc64el || echo powerpc) ;; |
| 41 | parisc*) | 41 | parisc*) |
| 42 | debarch=hppa ;; | 42 | debarch=hppa ;; |
| 43 | mips*) | 43 | mips*) |
| @@ -64,7 +64,7 @@ create_package() { | |||
| 64 | fi | 64 | fi |
| 65 | 65 | ||
| 66 | # Create the package | 66 | # Create the package |
| 67 | dpkg-gencontrol -isp $forcearch -Vkernel:debarch="${debarch:-$(dpkg --print-architecture)}" -p$pname -P"$pdir" | 67 | dpkg-gencontrol $forcearch -Vkernel:debarch="${debarch:-$(dpkg --print-architecture)}" -p$pname -P"$pdir" |
| 68 | dpkg --build "$pdir" .. | 68 | dpkg --build "$pdir" .. |
| 69 | } | 69 | } |
| 70 | 70 | ||
| @@ -152,18 +152,16 @@ if grep -q '^CONFIG_MODULES=y' $KCONFIG_CONFIG ; then | |||
| 152 | rmdir "$tmpdir/lib/modules/$version" | 152 | rmdir "$tmpdir/lib/modules/$version" |
| 153 | fi | 153 | fi |
| 154 | if [ -n "$BUILD_DEBUG" ] ; then | 154 | if [ -n "$BUILD_DEBUG" ] ; then |
| 155 | ( | 155 | for module in $(find $tmpdir/lib/modules/ -name *.ko -printf '%P\n'); do |
| 156 | cd $tmpdir | 156 | module=lib/modules/$module |
| 157 | for module in $(find lib/modules/ -name *.ko); do | 157 | mkdir -p $(dirname $dbg_dir/usr/lib/debug/$module) |
| 158 | mkdir -p $(dirname $dbg_dir/usr/lib/debug/$module) | 158 | # only keep debug symbols in the debug file |
| 159 | # only keep debug symbols in the debug file | 159 | $OBJCOPY --only-keep-debug $tmpdir/$module $dbg_dir/usr/lib/debug/$module |
| 160 | $OBJCOPY --only-keep-debug $module $dbg_dir/usr/lib/debug/$module | 160 | # strip original module from debug symbols |
| 161 | # strip original module from debug symbols | 161 | $OBJCOPY --strip-debug $tmpdir/$module |
| 162 | $OBJCOPY --strip-debug $module | 162 | # then add a link to those |
| 163 | # then add a link to those | 163 | $OBJCOPY --add-gnu-debuglink=$dbg_dir/usr/lib/debug/$module $tmpdir/$module |
| 164 | $OBJCOPY --add-gnu-debuglink=$dbg_dir/usr/lib/debug/$module $module | 164 | done |
| 165 | done | ||
| 166 | ) | ||
| 167 | fi | 165 | fi |
| 168 | fi | 166 | fi |
| 169 | 167 | ||
diff --git a/scripts/package/buildtar b/scripts/package/buildtar index e046bff33589..e046bff33589 100644..100755 --- a/scripts/package/buildtar +++ b/scripts/package/buildtar | |||
diff --git a/scripts/package/mkspec b/scripts/package/mkspec index 13957602f7ca..d9ab94b17de0 100755 --- a/scripts/package/mkspec +++ b/scripts/package/mkspec | |||
| @@ -117,6 +117,7 @@ echo 'mv vmlinux.bz2 $RPM_BUILD_ROOT'"/boot/vmlinux-$KERNELRELEASE.bz2" | |||
| 117 | echo 'mv vmlinux.orig vmlinux' | 117 | echo 'mv vmlinux.orig vmlinux' |
| 118 | echo "%endif" | 118 | echo "%endif" |
| 119 | 119 | ||
| 120 | if ! $PREBUILT; then | ||
| 120 | echo 'rm -f $RPM_BUILD_ROOT'"/lib/modules/$KERNELRELEASE/{build,source}" | 121 | echo 'rm -f $RPM_BUILD_ROOT'"/lib/modules/$KERNELRELEASE/{build,source}" |
| 121 | echo "mkdir -p "'$RPM_BUILD_ROOT'"/usr/src/kernels/$KERNELRELEASE" | 122 | echo "mkdir -p "'$RPM_BUILD_ROOT'"/usr/src/kernels/$KERNELRELEASE" |
| 122 | echo "EXCLUDES=\"$RCS_TAR_IGNORE --exclude .tmp_versions --exclude=*vmlinux* --exclude=*.o --exclude=*.ko --exclude=*.cmd --exclude=Documentation --exclude=firmware --exclude .config.old --exclude .missing-syscalls.d\"" | 123 | echo "EXCLUDES=\"$RCS_TAR_IGNORE --exclude .tmp_versions --exclude=*vmlinux* --exclude=*.o --exclude=*.ko --exclude=*.cmd --exclude=Documentation --exclude=firmware --exclude .config.old --exclude .missing-syscalls.d\"" |
| @@ -124,6 +125,7 @@ echo "tar "'$EXCLUDES'" -cf- . | (cd "'$RPM_BUILD_ROOT'"/usr/src/kernels/$KERNEL | |||
| 124 | echo 'cd $RPM_BUILD_ROOT'"/lib/modules/$KERNELRELEASE" | 125 | echo 'cd $RPM_BUILD_ROOT'"/lib/modules/$KERNELRELEASE" |
| 125 | echo "ln -sf /usr/src/kernels/$KERNELRELEASE build" | 126 | echo "ln -sf /usr/src/kernels/$KERNELRELEASE build" |
| 126 | echo "ln -sf /usr/src/kernels/$KERNELRELEASE source" | 127 | echo "ln -sf /usr/src/kernels/$KERNELRELEASE source" |
| 128 | fi | ||
| 127 | 129 | ||
| 128 | echo "" | 130 | echo "" |
| 129 | echo "%clean" | 131 | echo "%clean" |
| @@ -151,9 +153,11 @@ echo "%files headers" | |||
| 151 | echo '%defattr (-, root, root)' | 153 | echo '%defattr (-, root, root)' |
| 152 | echo "/usr/include" | 154 | echo "/usr/include" |
| 153 | echo "" | 155 | echo "" |
| 156 | if ! $PREBUILT; then | ||
| 154 | echo "%files devel" | 157 | echo "%files devel" |
| 155 | echo '%defattr (-, root, root)' | 158 | echo '%defattr (-, root, root)' |
| 156 | echo "/usr/src/kernels/$KERNELRELEASE" | 159 | echo "/usr/src/kernels/$KERNELRELEASE" |
| 157 | echo "/lib/modules/$KERNELRELEASE/build" | 160 | echo "/lib/modules/$KERNELRELEASE/build" |
| 158 | echo "/lib/modules/$KERNELRELEASE/source" | 161 | echo "/lib/modules/$KERNELRELEASE/source" |
| 159 | echo "" | 162 | echo "" |
| 163 | fi | ||
diff --git a/scripts/profile2linkerlist.pl b/scripts/profile2linkerlist.pl index 6943fa7cc95b..6943fa7cc95b 100644..100755 --- a/scripts/profile2linkerlist.pl +++ b/scripts/profile2linkerlist.pl | |||
diff --git a/scripts/recordmcount.c b/scripts/recordmcount.c index 650ecc83d7d7..3d1984e59a30 100644 --- a/scripts/recordmcount.c +++ b/scripts/recordmcount.c | |||
| @@ -388,10 +388,6 @@ do_file(char const *const fname) | |||
| 388 | "unrecognized ET_REL file: %s\n", fname); | 388 | "unrecognized ET_REL file: %s\n", fname); |
| 389 | fail_file(); | 389 | fail_file(); |
| 390 | } | 390 | } |
| 391 | if (w2(ehdr->e_machine) == EM_S390) { | ||
| 392 | reltype = R_390_32; | ||
| 393 | mcount_adjust_32 = -4; | ||
| 394 | } | ||
| 395 | if (w2(ehdr->e_machine) == EM_MIPS) { | 391 | if (w2(ehdr->e_machine) == EM_MIPS) { |
| 396 | reltype = R_MIPS_32; | 392 | reltype = R_MIPS_32; |
| 397 | is_fake_mcount32 = MIPS32_is_fake_mcount; | 393 | is_fake_mcount32 = MIPS32_is_fake_mcount; |
| @@ -408,7 +404,7 @@ do_file(char const *const fname) | |||
| 408 | } | 404 | } |
| 409 | if (w2(ghdr->e_machine) == EM_S390) { | 405 | if (w2(ghdr->e_machine) == EM_S390) { |
| 410 | reltype = R_390_64; | 406 | reltype = R_390_64; |
| 411 | mcount_adjust_64 = -8; | 407 | mcount_adjust_64 = -14; |
| 412 | } | 408 | } |
| 413 | if (w2(ghdr->e_machine) == EM_MIPS) { | 409 | if (w2(ghdr->e_machine) == EM_MIPS) { |
| 414 | reltype = R_MIPS_64; | 410 | reltype = R_MIPS_64; |
diff --git a/scripts/recordmcount.pl b/scripts/recordmcount.pl index 397b6b84e8c5..56ea99a12ab7 100755 --- a/scripts/recordmcount.pl +++ b/scripts/recordmcount.pl | |||
| @@ -241,16 +241,9 @@ if ($arch eq "x86_64") { | |||
| 241 | $objcopy .= " -O elf32-i386"; | 241 | $objcopy .= " -O elf32-i386"; |
| 242 | $cc .= " -m32"; | 242 | $cc .= " -m32"; |
| 243 | 243 | ||
| 244 | } elsif ($arch eq "s390" && $bits == 32) { | ||
| 245 | $mcount_regex = "^\\s*([0-9a-fA-F]+):\\s*R_390_32\\s+_mcount\$"; | ||
| 246 | $mcount_adjust = -4; | ||
| 247 | $alignment = 4; | ||
| 248 | $ld .= " -m elf_s390"; | ||
| 249 | $cc .= " -m31"; | ||
| 250 | |||
| 251 | } elsif ($arch eq "s390" && $bits == 64) { | 244 | } elsif ($arch eq "s390" && $bits == 64) { |
| 252 | $mcount_regex = "^\\s*([0-9a-fA-F]+):\\s*R_390_(PC|PLT)32DBL\\s+_mcount\\+0x2\$"; | 245 | $mcount_regex = "^\\s*([0-9a-fA-F]+):\\s*R_390_(PC|PLT)32DBL\\s+_mcount\\+0x2\$"; |
| 253 | $mcount_adjust = -8; | 246 | $mcount_adjust = -14; |
| 254 | $alignment = 8; | 247 | $alignment = 8; |
| 255 | $type = ".quad"; | 248 | $type = ".quad"; |
| 256 | $ld .= " -m elf64_s390"; | 249 | $ld .= " -m elf64_s390"; |
diff --git a/scripts/rt-tester/rt-tester.py b/scripts/rt-tester/rt-tester.py index 6d916c2a45a5..6d916c2a45a5 100644..100755 --- a/scripts/rt-tester/rt-tester.py +++ b/scripts/rt-tester/rt-tester.py | |||
diff --git a/scripts/selinux/install_policy.sh b/scripts/selinux/install_policy.sh index f6a0ce71015f..f6a0ce71015f 100644..100755 --- a/scripts/selinux/install_policy.sh +++ b/scripts/selinux/install_policy.sh | |||
diff --git a/scripts/sign-file b/scripts/sign-file index 2b7c4484d46c..3906ee1e2f76 100755 --- a/scripts/sign-file +++ b/scripts/sign-file | |||
| @@ -398,7 +398,7 @@ if ($verbose) { | |||
| 398 | print "Size of signer's name : ", length($signers_name), "\n"; | 398 | print "Size of signer's name : ", length($signers_name), "\n"; |
| 399 | print "Size of key identifier : ", length($key_identifier), "\n"; | 399 | print "Size of key identifier : ", length($key_identifier), "\n"; |
| 400 | print "Size of signature : ", length($signature), "\n"; | 400 | print "Size of signature : ", length($signature), "\n"; |
| 401 | print "Size of informaton : ", length($info), "\n"; | 401 | print "Size of information : ", length($info), "\n"; |
| 402 | print "Size of magic number : ", length($magic_number), "\n"; | 402 | print "Size of magic number : ", length($magic_number), "\n"; |
| 403 | print "Signer's name : '", $signers_name, "'\n"; | 403 | print "Signer's name : '", $signers_name, "'\n"; |
| 404 | print "Digest : $dgst\n"; | 404 | print "Digest : $dgst\n"; |
diff --git a/scripts/sortextable.h b/scripts/sortextable.h index 8fac3fd697a6..ba8700428e21 100644 --- a/scripts/sortextable.h +++ b/scripts/sortextable.h | |||
| @@ -103,7 +103,7 @@ do_func(Elf_Ehdr *ehdr, char const *const fname, table_sort_t custom_sort) | |||
| 103 | Elf_Sym *sort_needed_sym; | 103 | Elf_Sym *sort_needed_sym; |
| 104 | Elf_Shdr *sort_needed_sec; | 104 | Elf_Shdr *sort_needed_sec; |
| 105 | Elf_Rel *relocs = NULL; | 105 | Elf_Rel *relocs = NULL; |
| 106 | int relocs_size; | 106 | int relocs_size = 0; |
| 107 | uint32_t *sort_done_location; | 107 | uint32_t *sort_done_location; |
| 108 | const char *secstrtab; | 108 | const char *secstrtab; |
| 109 | const char *strtab; | 109 | const char *strtab; |
diff --git a/scripts/spelling.txt b/scripts/spelling.txt new file mode 100644 index 000000000000..fc7fd52b5e03 --- /dev/null +++ b/scripts/spelling.txt | |||
| @@ -0,0 +1,1042 @@ | |||
| 1 | # Originally from Debian's Lintian tool. Various false positives have been | ||
| 2 | # removed, and various additions have been made as they've been discovered | ||
| 3 | # in the kernel source. | ||
| 4 | # | ||
| 5 | # License: GPLv2 | ||
| 6 | # | ||
| 7 | # The format of each line is: | ||
| 8 | # mistake||correction | ||
| 9 | # | ||
| 10 | abandonning||abandoning | ||
| 11 | abigious||ambiguous | ||
| 12 | abitrate||arbitrate | ||
| 13 | abov||above | ||
| 14 | abreviated||abbreviated | ||
| 15 | absense||absence | ||
| 16 | absolut||absolute | ||
| 17 | absoulte||absolute | ||
| 18 | acccess||access | ||
| 19 | acceleratoin||acceleration | ||
| 20 | accelleration||acceleration | ||
| 21 | accesing||accessing | ||
| 22 | accesnt||accent | ||
| 23 | accessable||accessible | ||
| 24 | accesss||access | ||
| 25 | accidentaly||accidentally | ||
| 26 | accidentually||accidentally | ||
| 27 | accoding||according | ||
| 28 | accomodate||accommodate | ||
| 29 | accomodates||accommodates | ||
| 30 | accordign||according | ||
| 31 | accoring||according | ||
| 32 | accout||account | ||
| 33 | accquire||acquire | ||
| 34 | accquired||acquired | ||
| 35 | acessable||accessible | ||
| 36 | acess||access | ||
| 37 | achitecture||architecture | ||
| 38 | acient||ancient | ||
| 39 | acitions||actions | ||
| 40 | acitve||active | ||
| 41 | acknowldegement||acknowldegement | ||
| 42 | acknowledgement||acknowledgment | ||
| 43 | ackowledge||acknowledge | ||
| 44 | ackowledged||acknowledged | ||
| 45 | acording||according | ||
| 46 | activete||activate | ||
| 47 | acumulating||accumulating | ||
| 48 | adapater||adapter | ||
| 49 | addional||additional | ||
| 50 | additionaly||additionally | ||
| 51 | addres||address | ||
| 52 | addreses||addresses | ||
| 53 | addresss||address | ||
| 54 | aditional||additional | ||
| 55 | aditionally||additionally | ||
| 56 | aditionaly||additionally | ||
| 57 | adminstrative||administrative | ||
| 58 | adress||address | ||
| 59 | adresses||addresses | ||
| 60 | adviced||advised | ||
| 61 | afecting||affecting | ||
| 62 | agaist||against | ||
| 63 | albumns||albums | ||
| 64 | alegorical||allegorical | ||
| 65 | algorith||algorithm | ||
| 66 | algorithmical||algorithmically | ||
| 67 | algoritm||algorithm | ||
| 68 | algoritms||algorithms | ||
| 69 | algorrithm||algorithm | ||
| 70 | algorritm||algorithm | ||
| 71 | allign||align | ||
| 72 | allocatrd||allocated | ||
| 73 | allocte||allocate | ||
| 74 | allpication||application | ||
| 75 | alocate||allocate | ||
| 76 | alogirhtms||algorithms | ||
| 77 | alogrithm||algorithm | ||
| 78 | alot||a lot | ||
| 79 | alow||allow | ||
| 80 | alows||allows | ||
| 81 | altough||although | ||
| 82 | alue||value | ||
| 83 | ambigious||ambiguous | ||
| 84 | amoung||among | ||
| 85 | amout||amount | ||
| 86 | analysator||analyzer | ||
| 87 | ang||and | ||
| 88 | anniversery||anniversary | ||
| 89 | annoucement||announcement | ||
| 90 | anomolies||anomalies | ||
| 91 | anomoly||anomaly | ||
| 92 | anway||anyway | ||
| 93 | aplication||application | ||
| 94 | appearence||appearance | ||
| 95 | applicaion||application | ||
| 96 | appliction||application | ||
| 97 | applictions||applications | ||
| 98 | appplications||applications | ||
| 99 | appropiate||appropriate | ||
| 100 | appropriatly||appropriately | ||
| 101 | approriate||appropriate | ||
| 102 | approriately||appropriately | ||
| 103 | aquainted||acquainted | ||
| 104 | aquired||acquired | ||
| 105 | arbitary||arbitrary | ||
| 106 | architechture||architecture | ||
| 107 | arguement||argument | ||
| 108 | arguements||arguments | ||
| 109 | aritmetic||arithmetic | ||
| 110 | arne't||aren't | ||
| 111 | arraival||arrival | ||
| 112 | artifical||artificial | ||
| 113 | artillary||artillery | ||
| 114 | assiged||assigned | ||
| 115 | assigment||assignment | ||
| 116 | assigments||assignments | ||
| 117 | assistent||assistant | ||
| 118 | assocation||association | ||
| 119 | associcated||associated | ||
| 120 | assotiated||associated | ||
| 121 | assum||assume | ||
| 122 | assumtpion||assumption | ||
| 123 | asuming||assuming | ||
| 124 | asycronous||asynchronous | ||
| 125 | asynchnous||asynchronous | ||
| 126 | atomatically||automatically | ||
| 127 | atomicly||atomically | ||
| 128 | attachement||attachment | ||
| 129 | attched||attached | ||
| 130 | attemps||attempts | ||
| 131 | attruibutes||attributes | ||
| 132 | authentification||authentication | ||
| 133 | automaticaly||automatically | ||
| 134 | automaticly||automatically | ||
| 135 | automatize||automate | ||
| 136 | automatized||automated | ||
| 137 | automatizes||automates | ||
| 138 | autonymous||autonomous | ||
| 139 | auxilliary||auxiliary | ||
| 140 | avaiable||available | ||
| 141 | avaible||available | ||
| 142 | availabe||available | ||
| 143 | availabled||available | ||
| 144 | availablity||availability | ||
| 145 | availale||available | ||
| 146 | availavility||availability | ||
| 147 | availble||available | ||
| 148 | availiable||available | ||
| 149 | avalable||available | ||
| 150 | avaliable||available | ||
| 151 | aysnc||async | ||
| 152 | backgroud||background | ||
| 153 | backword||backward | ||
| 154 | backwords||backwards | ||
| 155 | bahavior||behavior | ||
| 156 | bakup||backup | ||
| 157 | baloon||balloon | ||
| 158 | baloons||balloons | ||
| 159 | bandwith||bandwidth | ||
| 160 | batery||battery | ||
| 161 | beacuse||because | ||
| 162 | becasue||because | ||
| 163 | becomming||becoming | ||
| 164 | becuase||because | ||
| 165 | beeing||being | ||
| 166 | befor||before | ||
| 167 | begining||beginning | ||
| 168 | beter||better | ||
| 169 | betweeen||between | ||
| 170 | bianries||binaries | ||
| 171 | bitmast||bitmask | ||
| 172 | boardcast||broadcast | ||
| 173 | borad||board | ||
| 174 | boundry||boundary | ||
| 175 | brievely||briefly | ||
| 176 | broadcat||broadcast | ||
| 177 | cacluated||calculated | ||
| 178 | caculation||calculation | ||
| 179 | calender||calendar | ||
| 180 | calle||called | ||
| 181 | calucate||calculate | ||
| 182 | calulate||calculate | ||
| 183 | cancelation||cancellation | ||
| 184 | capabilites||capabilities | ||
| 185 | capabitilies||capabilities | ||
| 186 | capatibilities||capabilities | ||
| 187 | carefuly||carefully | ||
| 188 | cariage||carriage | ||
| 189 | catagory||category | ||
| 190 | challange||challenge | ||
| 191 | challanges||challenges | ||
| 192 | chanell||channel | ||
| 193 | changable||changeable | ||
| 194 | channle||channel | ||
| 195 | channnel||channel | ||
| 196 | charachter||character | ||
| 197 | charachters||characters | ||
| 198 | charactor||character | ||
| 199 | charater||character | ||
| 200 | charaters||characters | ||
| 201 | charcter||character | ||
| 202 | checksuming||checksumming | ||
| 203 | childern||children | ||
| 204 | childs||children | ||
| 205 | chiled||child | ||
| 206 | chked||checked | ||
| 207 | chnage||change | ||
| 208 | chnages||changes | ||
| 209 | chnnel||channel | ||
| 210 | choosen||chosen | ||
| 211 | chouse||chose | ||
| 212 | circumvernt||circumvent | ||
| 213 | claread||cleared | ||
| 214 | clared||cleared | ||
| 215 | closeing||closing | ||
| 216 | clustred||clustered | ||
| 217 | collapsable||collapsible | ||
| 218 | colorfull||colorful | ||
| 219 | comand||command | ||
| 220 | comit||commit | ||
| 221 | commerical||commercial | ||
| 222 | comming||coming | ||
| 223 | comminucation||communication | ||
| 224 | commited||committed | ||
| 225 | commiting||committing | ||
| 226 | committ||commit | ||
| 227 | commoditiy||commodity | ||
| 228 | compability||compatibility | ||
| 229 | compaibility||compatibility | ||
| 230 | compatability||compatibility | ||
| 231 | compatable||compatible | ||
| 232 | compatibiliy||compatibility | ||
| 233 | compatibilty||compatibility | ||
| 234 | compilant||compliant | ||
| 235 | compleatly||completely | ||
| 236 | completly||completely | ||
| 237 | complient||compliant | ||
| 238 | componnents||components | ||
| 239 | compres||compress | ||
| 240 | compresion||compression | ||
| 241 | comression||compression | ||
| 242 | comunication||communication | ||
| 243 | conbination||combination | ||
| 244 | conditionaly||conditionally | ||
| 245 | conected||connected | ||
| 246 | configuratoin||configuration | ||
| 247 | configuraton||configuration | ||
| 248 | configuretion||configuration | ||
| 249 | conider||consider | ||
| 250 | conjuction||conjunction | ||
| 251 | connectinos||connections | ||
| 252 | connnection||connection | ||
| 253 | connnections||connections | ||
| 254 | consistancy||consistency | ||
| 255 | consistant||consistent | ||
| 256 | containes||contains | ||
| 257 | containts||contains | ||
| 258 | contaisn||contains | ||
| 259 | contant||contact | ||
| 260 | contence||contents | ||
| 261 | continous||continuous | ||
| 262 | continously||continuously | ||
| 263 | continueing||continuing | ||
| 264 | contraints||constraints | ||
| 265 | controled||controlled | ||
| 266 | controler||controller | ||
| 267 | controll||control | ||
| 268 | contruction||construction | ||
| 269 | contry||country | ||
| 270 | convertion||conversion | ||
| 271 | convertor||converter | ||
| 272 | convienient||convenient | ||
| 273 | convinient||convenient | ||
| 274 | corected||corrected | ||
| 275 | correponding||corresponding | ||
| 276 | correponds||corresponds | ||
| 277 | correspoding||corresponding | ||
| 278 | cotrol||control | ||
| 279 | couter||counter | ||
| 280 | coutner||counter | ||
| 281 | cryptocraphic||cryptographic | ||
| 282 | cunter||counter | ||
| 283 | curently||currently | ||
| 284 | dafault||default | ||
| 285 | deafult||default | ||
| 286 | deamon||daemon | ||
| 287 | decompres||decompress | ||
| 288 | decription||description | ||
| 289 | defailt||default | ||
| 290 | defferred||deferred | ||
| 291 | definate||definite | ||
| 292 | definately||definitely | ||
| 293 | defintion||definition | ||
| 294 | defualt||default | ||
| 295 | defult||default | ||
| 296 | deivce||device | ||
| 297 | delared||declared | ||
| 298 | delare||declare | ||
| 299 | delares||declares | ||
| 300 | delaring||declaring | ||
| 301 | delemiter||delimiter | ||
| 302 | dependancies||dependencies | ||
| 303 | dependancy||dependency | ||
| 304 | dependant||dependent | ||
| 305 | depreacted||deprecated | ||
| 306 | depreacte||deprecate | ||
| 307 | desactivate||deactivate | ||
| 308 | desciptors||descriptors | ||
| 309 | descrition||description | ||
| 310 | descritptor||descriptor | ||
| 311 | desctiptor||descriptor | ||
| 312 | desriptor||descriptor | ||
| 313 | desriptors||descriptors | ||
| 314 | destory||destroy | ||
| 315 | destoryed||destroyed | ||
| 316 | destorys||destroys | ||
| 317 | destroied||destroyed | ||
| 318 | detabase||database | ||
| 319 | develope||develop | ||
| 320 | developement||development | ||
| 321 | developped||developed | ||
| 322 | developpement||development | ||
| 323 | developper||developer | ||
| 324 | developpment||development | ||
| 325 | deveolpment||development | ||
| 326 | devided||divided | ||
| 327 | deviece||device | ||
| 328 | diable||disable | ||
| 329 | dictionnary||dictionary | ||
| 330 | diferent||different | ||
| 331 | differrence||difference | ||
| 332 | difinition||definition | ||
| 333 | diplay||display | ||
| 334 | direectly||directly | ||
| 335 | disapear||disappear | ||
| 336 | disapeared||disappeared | ||
| 337 | disappared||disappeared | ||
| 338 | disconnet||disconnect | ||
| 339 | discontinous||discontinuous | ||
| 340 | dispertion||dispersion | ||
| 341 | dissapears||disappears | ||
| 342 | distiction||distinction | ||
| 343 | docuentation||documentation | ||
| 344 | documantation||documentation | ||
| 345 | documentaion||documentation | ||
| 346 | documment||document | ||
| 347 | dorp||drop | ||
| 348 | dosen||doesn | ||
| 349 | downlad||download | ||
| 350 | downlads||downloads | ||
| 351 | druing||during | ||
| 352 | dynmaic||dynamic | ||
| 353 | easilly||easily | ||
| 354 | ecspecially||especially | ||
| 355 | edditable||editable | ||
| 356 | editting||editing | ||
| 357 | efficently||efficiently | ||
| 358 | ehther||ether | ||
| 359 | eigth||eight | ||
| 360 | eletronic||electronic | ||
| 361 | enabledi||enabled | ||
| 362 | enchanced||enhanced | ||
| 363 | encorporating||incorporating | ||
| 364 | encrupted||encrypted | ||
| 365 | encrypiton||encryption | ||
| 366 | endianess||endianness | ||
| 367 | enhaced||enhanced | ||
| 368 | enlightnment||enlightenment | ||
| 369 | enocded||encoded | ||
| 370 | enterily||entirely | ||
| 371 | enviroiment||environment | ||
| 372 | enviroment||environment | ||
| 373 | environement||environment | ||
| 374 | environent||environment | ||
| 375 | eqivalent||equivalent | ||
| 376 | equiped||equipped | ||
| 377 | equivelant||equivalent | ||
| 378 | equivilant||equivalent | ||
| 379 | eror||error | ||
| 380 | estbalishment||establishment | ||
| 381 | etsablishment||establishment | ||
| 382 | etsbalishment||establishment | ||
| 383 | excecutable||executable | ||
| 384 | exceded||exceeded | ||
| 385 | excellant||excellent | ||
| 386 | existance||existence | ||
| 387 | existant||existent | ||
| 388 | exixt||exist | ||
| 389 | exlcude||exclude | ||
| 390 | exlcusive||exclusive | ||
| 391 | exmaple||example | ||
| 392 | expecially||especially | ||
| 393 | explicite||explicit | ||
| 394 | explicitely||explicitly | ||
| 395 | explict||explicit | ||
| 396 | explictly||explicitly | ||
| 397 | expresion||expression | ||
| 398 | exprimental||experimental | ||
| 399 | extened||extended | ||
| 400 | extensability||extensibility | ||
| 401 | extention||extension | ||
| 402 | extracter||extractor | ||
| 403 | faild||failed | ||
| 404 | faill||fail | ||
| 405 | failue||failure | ||
| 406 | failuer||failure | ||
| 407 | faireness||fairness | ||
| 408 | faliure||failure | ||
| 409 | familar||familiar | ||
| 410 | fatser||faster | ||
| 411 | feauture||feature | ||
| 412 | feautures||features | ||
| 413 | fetaure||feature | ||
| 414 | fetaures||features | ||
| 415 | fileystem||filesystem | ||
| 416 | finanize||finalize | ||
| 417 | findn||find | ||
| 418 | finilizes||finalizes | ||
| 419 | finsih||finish | ||
| 420 | flusing||flushing | ||
| 421 | folloing||following | ||
| 422 | followign||following | ||
| 423 | follwing||following | ||
| 424 | forseeable||foreseeable | ||
| 425 | forse||force | ||
| 426 | fortan||fortran | ||
| 427 | forwardig||forwarding | ||
| 428 | framwork||framework | ||
| 429 | frequncy||frequency | ||
| 430 | frome||from | ||
| 431 | fucntion||function | ||
| 432 | fuction||function | ||
| 433 | fuctions||functions | ||
| 434 | funcion||function | ||
| 435 | functionallity||functionality | ||
| 436 | functionaly||functionally | ||
| 437 | functionnality||functionality | ||
| 438 | functonality||functionality | ||
| 439 | funtion||function | ||
| 440 | funtions||functions | ||
| 441 | furthur||further | ||
| 442 | futhermore||furthermore | ||
| 443 | futrue||future | ||
| 444 | gaurenteed||guaranteed | ||
| 445 | generiously||generously | ||
| 446 | genric||generic | ||
| 447 | globel||global | ||
| 448 | grabing||grabbing | ||
| 449 | grahical||graphical | ||
| 450 | grahpical||graphical | ||
| 451 | grapic||graphic | ||
| 452 | guage||gauge | ||
| 453 | guarentee||guarantee | ||
| 454 | halfs||halves | ||
| 455 | hander||handler | ||
| 456 | handfull||handful | ||
| 457 | hanled||handled | ||
| 458 | harware||hardware | ||
| 459 | heirarchically||hierarchically | ||
| 460 | helpfull||helpful | ||
| 461 | hierachy||hierarchy | ||
| 462 | hierarchie||hierarchy | ||
| 463 | howver||however | ||
| 464 | hsould||should | ||
| 465 | hypter||hyper | ||
| 466 | identidier||identifier | ||
| 467 | imblance||imbalance | ||
| 468 | immeadiately||immediately | ||
| 469 | immedaite||immediate | ||
| 470 | immediatelly||immediately | ||
| 471 | immediatly||immediately | ||
| 472 | immidiate||immediate | ||
| 473 | impelentation||implementation | ||
| 474 | impementated||implemented | ||
| 475 | implemantation||implementation | ||
| 476 | implemenation||implementation | ||
| 477 | implementaiton||implementation | ||
| 478 | implementated||implemented | ||
| 479 | implemention||implementation | ||
| 480 | implemetation||implementation | ||
| 481 | implemntation||implementation | ||
| 482 | implentation||implementation | ||
| 483 | implmentation||implementation | ||
| 484 | implmenting||implementing | ||
| 485 | incomming||incoming | ||
| 486 | incompatabilities||incompatibilities | ||
| 487 | incompatable||incompatible | ||
| 488 | inconsistant||inconsistent | ||
| 489 | increas||increase | ||
| 490 | incrment||increment | ||
| 491 | indendation||indentation | ||
| 492 | indended||intended | ||
| 493 | independant||independent | ||
| 494 | independantly||independently | ||
| 495 | independed||independent | ||
| 496 | indiate||indicate | ||
| 497 | inexpect||inexpected | ||
| 498 | infomation||information | ||
| 499 | informatiom||information | ||
| 500 | informations||information | ||
| 501 | informtion||information | ||
| 502 | infromation||information | ||
| 503 | ingore||ignore | ||
| 504 | inital||initial | ||
| 505 | initalised||initialized | ||
| 506 | initalise||initialize | ||
| 507 | initalize||initialize | ||
| 508 | initation||initiation | ||
| 509 | initators||initiators | ||
| 510 | initializiation||initialization | ||
| 511 | initialzed||initialized | ||
| 512 | initilization||initialization | ||
| 513 | initilize||initialize | ||
| 514 | inofficial||unofficial | ||
| 515 | instal||install | ||
| 516 | inteface||interface | ||
| 517 | integreated||integrated | ||
| 518 | integrety||integrity | ||
| 519 | integrey||integrity | ||
| 520 | intendet||intended | ||
| 521 | intented||intended | ||
| 522 | interanl||internal | ||
| 523 | interchangable||interchangeable | ||
| 524 | interferring||interfering | ||
| 525 | interger||integer | ||
| 526 | intermittant||intermittent | ||
| 527 | internel||internal | ||
| 528 | interoprability||interoperability | ||
| 529 | interrface||interface | ||
| 530 | interrrupt||interrupt | ||
| 531 | interrup||interrupt | ||
| 532 | interrups||interrupts | ||
| 533 | interruptted||interrupted | ||
| 534 | interupted||interrupted | ||
| 535 | interupt||interrupt | ||
| 536 | intial||initial | ||
| 537 | intialized||initialized | ||
| 538 | intialize||initialize | ||
| 539 | intregral||integral | ||
| 540 | intrrupt||interrupt | ||
| 541 | intuative||intuitive | ||
| 542 | invaid||invalid | ||
| 543 | invalde||invald | ||
| 544 | invalide||invalid | ||
| 545 | invididual||individual | ||
| 546 | invokation||invocation | ||
| 547 | invokations||invocations | ||
| 548 | irrelevent||irrelevant | ||
| 549 | isssue||issue | ||
| 550 | itslef||itself | ||
| 551 | jave||java | ||
| 552 | jeffies||jiffies | ||
| 553 | juse||just | ||
| 554 | jus||just | ||
| 555 | kown||known | ||
| 556 | langage||language | ||
| 557 | langauage||language | ||
| 558 | langauge||language | ||
| 559 | langugage||language | ||
| 560 | lauch||launch | ||
| 561 | leightweight||lightweight | ||
| 562 | lengh||length | ||
| 563 | lenght||length | ||
| 564 | lenth||length | ||
| 565 | lesstiff||lesstif | ||
| 566 | libaries||libraries | ||
| 567 | libary||library | ||
| 568 | librairies||libraries | ||
| 569 | libraris||libraries | ||
| 570 | licenceing||licencing | ||
| 571 | loggging||logging | ||
| 572 | loggin||login | ||
| 573 | logile||logfile | ||
| 574 | loosing||losing | ||
| 575 | losted||lost | ||
| 576 | machinary||machinery | ||
| 577 | maintainance||maintenance | ||
| 578 | maintainence||maintenance | ||
| 579 | maintan||maintain | ||
| 580 | makeing||making | ||
| 581 | malplaced||misplaced | ||
| 582 | malplace||misplace | ||
| 583 | managable||manageable | ||
| 584 | managment||management | ||
| 585 | mangement||management | ||
| 586 | manoeuvering||maneuvering | ||
| 587 | mappping||mapping | ||
| 588 | mathimatical||mathematical | ||
| 589 | mathimatic||mathematic | ||
| 590 | mathimatics||mathematics | ||
| 591 | maxium||maximum | ||
| 592 | mechamism||mechanism | ||
| 593 | meetign||meeting | ||
| 594 | ment||meant | ||
| 595 | mergable||mergeable | ||
| 596 | mesage||message | ||
| 597 | messags||messages | ||
| 598 | messgaes||messages | ||
| 599 | messsage||message | ||
| 600 | messsages||messages | ||
| 601 | microprocesspr||microprocessor | ||
| 602 | milliseonds||milliseconds | ||
| 603 | minumum||minimum | ||
| 604 | miscelleneous||miscellaneous | ||
| 605 | misformed||malformed | ||
| 606 | mispelled||misspelled | ||
| 607 | mispelt||misspelt | ||
| 608 | miximum||maximum | ||
| 609 | mmnemonic||mnemonic | ||
| 610 | mnay||many | ||
| 611 | modeled||modelled | ||
| 612 | modulues||modules | ||
| 613 | monochorome||monochrome | ||
| 614 | monochromo||monochrome | ||
| 615 | monocrome||monochrome | ||
| 616 | mopdule||module | ||
| 617 | mroe||more | ||
| 618 | mulitplied||multiplied | ||
| 619 | multidimensionnal||multidimensional | ||
| 620 | multple||multiple | ||
| 621 | mumber||number | ||
| 622 | muticast||multicast | ||
| 623 | mutiple||multiple | ||
| 624 | mutli||multi | ||
| 625 | nams||names | ||
| 626 | navagating||navigating | ||
| 627 | nead||need | ||
| 628 | neccecary||necessary | ||
| 629 | neccesary||necessary | ||
| 630 | neccessary||necessary | ||
| 631 | necesary||necessary | ||
| 632 | negaive||negative | ||
| 633 | negoitation||negotiation | ||
| 634 | negotation||negotiation | ||
| 635 | nerver||never | ||
| 636 | nescessary||necessary | ||
| 637 | nessessary||necessary | ||
| 638 | noticable||noticeable | ||
| 639 | notications||notifications | ||
| 640 | notifed||notified | ||
| 641 | numebr||number | ||
| 642 | numner||number | ||
| 643 | obtaion||obtain | ||
| 644 | occassionally||occasionally | ||
| 645 | occationally||occasionally | ||
| 646 | occurance||occurrence | ||
| 647 | occurances||occurrences | ||
| 648 | occured||occurred | ||
| 649 | occurence||occurrence | ||
| 650 | occure||occurred | ||
| 651 | occuring||occurring | ||
| 652 | offet||offset | ||
| 653 | omitt||omit | ||
| 654 | ommiting||omitting | ||
| 655 | ommitted||omitted | ||
| 656 | onself||oneself | ||
| 657 | ony||only | ||
| 658 | operatione||operation | ||
| 659 | opertaions||operations | ||
| 660 | optionnal||optional | ||
| 661 | optmizations||optimizations | ||
| 662 | orientatied||orientated | ||
| 663 | orientied||oriented | ||
| 664 | otherise||otherwise | ||
| 665 | ouput||output | ||
| 666 | overaall||overall | ||
| 667 | overhread||overhead | ||
| 668 | overlaping||overlapping | ||
| 669 | overriden||overridden | ||
| 670 | overun||overrun | ||
| 671 | pacakge||package | ||
| 672 | pachage||package | ||
| 673 | packacge||package | ||
| 674 | packege||package | ||
| 675 | packge||package | ||
| 676 | packtes||packets | ||
| 677 | pakage||package | ||
| 678 | pallette||palette | ||
| 679 | paln||plan | ||
| 680 | paramameters||parameters | ||
| 681 | paramater||parameter | ||
| 682 | parametes||parameters | ||
| 683 | parametised||parametrised | ||
| 684 | paramter||parameter | ||
| 685 | paramters||parameters | ||
| 686 | particuarly||particularly | ||
| 687 | particularily||particularly | ||
| 688 | pased||passed | ||
| 689 | passin||passing | ||
| 690 | pathes||paths | ||
| 691 | pecularities||peculiarities | ||
| 692 | peformance||performance | ||
| 693 | peice||piece | ||
| 694 | pendantic||pedantic | ||
| 695 | peprocessor||preprocessor | ||
| 696 | perfoming||performing | ||
| 697 | permissons||permissions | ||
| 698 | peroid||period | ||
| 699 | persistance||persistence | ||
| 700 | persistant||persistent | ||
| 701 | platfrom||platform | ||
| 702 | plattform||platform | ||
| 703 | pleaes||please | ||
| 704 | ploting||plotting | ||
| 705 | plugable||pluggable | ||
| 706 | poinnter||pointer | ||
| 707 | poiter||pointer | ||
| 708 | posible||possible | ||
| 709 | positon||position | ||
| 710 | possibilites||possibilities | ||
| 711 | powerfull||powerful | ||
| 712 | preceeded||preceded | ||
| 713 | preceeding||preceding | ||
| 714 | preceed||precede | ||
| 715 | precendence||precedence | ||
| 716 | precission||precision | ||
| 717 | prefered||preferred | ||
| 718 | prefferably||preferably | ||
| 719 | premption||preemption | ||
| 720 | prepaired||prepared | ||
| 721 | pressre||pressure | ||
| 722 | primative||primitive | ||
| 723 | princliple||principle | ||
| 724 | priorty||priority | ||
| 725 | privilaged||privileged | ||
| 726 | privilage||privilege | ||
| 727 | priviledge||privilege | ||
| 728 | priviledges||privileges | ||
| 729 | probaly||probably | ||
| 730 | procceed||proceed | ||
| 731 | proccesors||processors | ||
| 732 | procesed||processed | ||
| 733 | proces||process | ||
| 734 | processessing||processing | ||
| 735 | processess||processes | ||
| 736 | processpr||processor | ||
| 737 | processsed||processed | ||
| 738 | processsing||processing | ||
| 739 | procteted||protected | ||
| 740 | prodecure||procedure | ||
| 741 | progams||programs | ||
| 742 | progess||progress | ||
| 743 | programers||programmers | ||
| 744 | programm||program | ||
| 745 | programms||programs | ||
| 746 | progresss||progress | ||
| 747 | promps||prompts | ||
| 748 | pronnounced||pronounced | ||
| 749 | prononciation||pronunciation | ||
| 750 | pronouce||pronounce | ||
| 751 | pronunce||pronounce | ||
| 752 | propery||property | ||
| 753 | propigate||propagate | ||
| 754 | propigation||propagation | ||
| 755 | propogate||propagate | ||
| 756 | prosess||process | ||
| 757 | protable||portable | ||
| 758 | protcol||protocol | ||
| 759 | protecion||protection | ||
| 760 | protocoll||protocol | ||
| 761 | psudo||pseudo | ||
| 762 | psuedo||pseudo | ||
| 763 | psychadelic||psychedelic | ||
| 764 | pwoer||power | ||
| 765 | quering||querying | ||
| 766 | raoming||roaming | ||
| 767 | reasearcher||researcher | ||
| 768 | reasearchers||researchers | ||
| 769 | reasearch||research | ||
| 770 | recepient||recipient | ||
| 771 | receving||receiving | ||
| 772 | recieved||received | ||
| 773 | recieve||receive | ||
| 774 | reciever||receiver | ||
| 775 | recieves||receives | ||
| 776 | recogniced||recognised | ||
| 777 | recognizeable||recognizable | ||
| 778 | recommanded||recommended | ||
| 779 | recyle||recycle | ||
| 780 | redircet||redirect | ||
| 781 | redirectrion||redirection | ||
| 782 | refcounf||refcount | ||
| 783 | refence||reference | ||
| 784 | refered||referred | ||
| 785 | referenace||reference | ||
| 786 | refering||referring | ||
| 787 | refernces||references | ||
| 788 | refernnce||reference | ||
| 789 | refrence||reference | ||
| 790 | registerd||registered | ||
| 791 | registeresd||registered | ||
| 792 | registes||registers | ||
| 793 | registraration||registration | ||
| 794 | regster||register | ||
| 795 | regualar||regular | ||
| 796 | reguator||regulator | ||
| 797 | regulamentations||regulations | ||
| 798 | reigstration||registration | ||
| 799 | releated||related | ||
| 800 | relevent||relevant | ||
| 801 | remoote||remote | ||
| 802 | remore||remote | ||
| 803 | removeable||removable | ||
| 804 | repectively||respectively | ||
| 805 | replacable||replaceable | ||
| 806 | replacments||replacements | ||
| 807 | replys||replies | ||
| 808 | reponse||response | ||
| 809 | representaion||representation | ||
| 810 | reqeust||request | ||
| 811 | requiere||require | ||
| 812 | requirment||requirement | ||
| 813 | requred||required | ||
| 814 | requried||required | ||
| 815 | requst||request | ||
| 816 | reseting||resetting | ||
| 817 | resizeable||resizable | ||
| 818 | resouces||resources | ||
| 819 | resoures||resources | ||
| 820 | ressizes||resizes | ||
| 821 | ressource||resource | ||
| 822 | ressources||resources | ||
| 823 | retransmited||retransmitted | ||
| 824 | retreived||retrieved | ||
| 825 | retreive||retrieve | ||
| 826 | retrive||retrieve | ||
| 827 | retuned||returned | ||
| 828 | reuest||request | ||
| 829 | reuqest||request | ||
| 830 | reutnred||returned | ||
| 831 | rmeoved||removed | ||
| 832 | rmeove||remove | ||
| 833 | rmeoves||removes | ||
| 834 | rountine||routine | ||
| 835 | routins||routines | ||
| 836 | rquest||request | ||
| 837 | runing||running | ||
| 838 | runned||ran | ||
| 839 | runnning||running | ||
| 840 | runtine||runtime | ||
| 841 | sacrifying||sacrificing | ||
| 842 | safly||safely | ||
| 843 | safty||safety | ||
| 844 | savable||saveable | ||
| 845 | scaned||scanned | ||
| 846 | scaning||scanning | ||
| 847 | scarch||search | ||
| 848 | seach||search | ||
| 849 | searchs||searches | ||
| 850 | secquence||sequence | ||
| 851 | secund||second | ||
| 852 | segement||segment | ||
| 853 | senarios||scenarios | ||
| 854 | sentivite||sensitive | ||
| 855 | separatly||separately | ||
| 856 | sepcify||specify | ||
| 857 | sepc||spec | ||
| 858 | seperated||separated | ||
| 859 | seperately||separately | ||
| 860 | seperate||separate | ||
| 861 | seperatly||separately | ||
| 862 | seperator||separator | ||
| 863 | sepperate||separate | ||
| 864 | sequece||sequence | ||
| 865 | sequencial||sequential | ||
| 866 | serveral||several | ||
| 867 | setts||sets | ||
| 868 | settting||setting | ||
| 869 | shotdown||shutdown | ||
| 870 | shoud||should | ||
| 871 | shoule||should | ||
| 872 | shrinked||shrunk | ||
| 873 | siginificantly||significantly | ||
| 874 | signabl||signal | ||
| 875 | similary||similarly | ||
| 876 | similiar||similar | ||
| 877 | simlar||similar | ||
| 878 | simliar||similar | ||
| 879 | simpified||simplified | ||
| 880 | singaled||signaled | ||
| 881 | singal||signal | ||
| 882 | singed||signed | ||
| 883 | sleeped||slept | ||
| 884 | softwares||software | ||
| 885 | speach||speech | ||
| 886 | specfic||specific | ||
| 887 | speciefied||specified | ||
| 888 | specifc||specific | ||
| 889 | specifed||specified | ||
| 890 | specificatin||specification | ||
| 891 | specificaton||specification | ||
| 892 | specifing||specifying | ||
| 893 | specifiying||specifying | ||
| 894 | speficied||specified | ||
| 895 | speicify||specify | ||
| 896 | speling||spelling | ||
| 897 | spinlcok||spinlock | ||
| 898 | spinock||spinlock | ||
| 899 | splitted||split | ||
| 900 | spreaded||spread | ||
| 901 | sructure||structure | ||
| 902 | stablilization||stabilization | ||
| 903 | staically||statically | ||
| 904 | staion||station | ||
| 905 | standardss||standards | ||
| 906 | standartization||standardization | ||
| 907 | standart||standard | ||
| 908 | staticly||statically | ||
| 909 | stoped||stopped | ||
| 910 | stoppped||stopped | ||
| 911 | straming||streaming | ||
| 912 | struc||struct | ||
| 913 | structres||structures | ||
| 914 | stuct||struct | ||
| 915 | sturcture||structure | ||
| 916 | subdirectoires||subdirectories | ||
| 917 | suble||subtle | ||
| 918 | succesfully||successfully | ||
| 919 | succesful||successful | ||
| 920 | successfull||successful | ||
| 921 | sucessfully||successfully | ||
| 922 | sucess||success | ||
| 923 | superflous||superfluous | ||
| 924 | superseeded||superseded | ||
| 925 | suplied||supplied | ||
| 926 | suported||supported | ||
| 927 | suport||support | ||
| 928 | suppored||supported | ||
| 929 | supportin||supporting | ||
| 930 | suppoted||supported | ||
| 931 | suppported||supported | ||
| 932 | suppport||support | ||
| 933 | supress||suppress | ||
| 934 | surpresses||suppresses | ||
| 935 | susbsystem||subsystem | ||
| 936 | suspicously||suspiciously | ||
| 937 | swaping||swapping | ||
| 938 | switchs||switches | ||
| 939 | symetric||symmetric | ||
| 940 | synax||syntax | ||
| 941 | synchonized||synchronized | ||
| 942 | syncronize||synchronize | ||
| 943 | syncronizing||synchronizing | ||
| 944 | syncronus||synchronous | ||
| 945 | syste||system | ||
| 946 | sytem||system | ||
| 947 | sythesis||synthesis | ||
| 948 | taht||that | ||
| 949 | targetted||targeted | ||
| 950 | targetting||targeting | ||
| 951 | teh||the | ||
| 952 | temorary||temporary | ||
| 953 | temproarily||temporarily | ||
| 954 | thier||their | ||
| 955 | threds||threads | ||
| 956 | threshhold||threshold | ||
| 957 | throught||through | ||
| 958 | thses||these | ||
| 959 | tiggered||triggered | ||
| 960 | tipically||typically | ||
| 961 | tmis||this | ||
| 962 | torerable||tolerable | ||
| 963 | tramsmitted||transmitted | ||
| 964 | tramsmit||transmit | ||
| 965 | tranfer||transfer | ||
| 966 | transciever||transceiver | ||
| 967 | transferd||transferrd | ||
| 968 | transfered||transferred | ||
| 969 | transfering||transferring | ||
| 970 | transision||transition | ||
| 971 | transmittd||transmitted | ||
| 972 | transormed||transformed | ||
| 973 | trasmission||transmission | ||
| 974 | treshold||threshold | ||
| 975 | trigerring||triggering | ||
| 976 | trun||turn | ||
| 977 | ture||true | ||
| 978 | tyep||type | ||
| 979 | udpate||update | ||
| 980 | uesd||used | ||
| 981 | unconditionaly||unconditionally | ||
| 982 | underun||underrun | ||
| 983 | unecessary||unnecessary | ||
| 984 | unexecpted||unexpected | ||
| 985 | unexpectd||unexpected | ||
| 986 | unexpeted||unexpected | ||
| 987 | unfortunatelly||unfortunately | ||
| 988 | unifiy||unify | ||
| 989 | unknonw||unknown | ||
| 990 | unknow||unknown | ||
| 991 | unkown||unknown | ||
| 992 | unneedingly||unnecessarily | ||
| 993 | unresgister||unregister | ||
| 994 | unsinged||unsigned | ||
| 995 | unstabel||unstable | ||
| 996 | unsuccessfull||unsuccessful | ||
| 997 | unsuported||unsupported | ||
| 998 | untill||until | ||
| 999 | unuseful||useless | ||
| 1000 | upate||update | ||
| 1001 | usefule||useful | ||
| 1002 | usefull||useful | ||
| 1003 | usege||usage | ||
| 1004 | usera||users | ||
| 1005 | usualy||usually | ||
| 1006 | utilites||utilities | ||
| 1007 | utillities||utilities | ||
| 1008 | utilties||utilities | ||
| 1009 | utiltity||utility | ||
| 1010 | utitity||utility | ||
| 1011 | utitlty||utility | ||
| 1012 | vaid||valid | ||
| 1013 | vaild||valid | ||
| 1014 | valide||valid | ||
| 1015 | variantions||variations | ||
| 1016 | varient||variant | ||
| 1017 | vaule||value | ||
| 1018 | verbse||verbose | ||
| 1019 | verisons||versions | ||
| 1020 | verison||version | ||
| 1021 | verson||version | ||
| 1022 | vicefersa||vice-versa | ||
| 1023 | virtal||virtual | ||
| 1024 | virtaul||virtual | ||
| 1025 | virtiual||virtual | ||
| 1026 | visiters||visitors | ||
| 1027 | vitual||virtual | ||
| 1028 | wating||waiting | ||
| 1029 | whataver||whatever | ||
| 1030 | whenver||whenever | ||
| 1031 | wheter||whether | ||
| 1032 | whe||when | ||
| 1033 | wierd||weird | ||
| 1034 | wiil||will | ||
| 1035 | wirte||write | ||
| 1036 | withing||within | ||
| 1037 | wnat||want | ||
| 1038 | workarould||workaround | ||
| 1039 | writeing||writing | ||
| 1040 | writting||writing | ||
| 1041 | zombe||zombie | ||
| 1042 | zomebie||zombie | ||
diff --git a/scripts/tags.sh b/scripts/tags.sh index 293828bfd4ac..cdb491d84503 100755 --- a/scripts/tags.sh +++ b/scripts/tags.sh | |||
| @@ -193,10 +193,6 @@ exuberant() | |||
| 193 | --regex-c++='/TESTCLEARFLAG_FALSE\(([^,)]*).*/TestClearPage\1/' \ | 193 | --regex-c++='/TESTCLEARFLAG_FALSE\(([^,)]*).*/TestClearPage\1/' \ |
| 194 | --regex-c++='/__TESTCLEARFLAG_FALSE\(([^,)]*).*/__TestClearPage\1/' \ | 194 | --regex-c++='/__TESTCLEARFLAG_FALSE\(([^,)]*).*/__TestClearPage\1/' \ |
| 195 | --regex-c++='/_PE\(([^,)]*).*/PEVENT_ERRNO__\1/' \ | 195 | --regex-c++='/_PE\(([^,)]*).*/PEVENT_ERRNO__\1/' \ |
| 196 | --regex-c++='/TESTPCGFLAG\(([^,)]*).*/PageCgroup\1/' \ | ||
| 197 | --regex-c++='/SETPCGFLAG\(([^,)]*).*/SetPageCgroup\1/' \ | ||
| 198 | --regex-c++='/CLEARPCGFLAG\(([^,)]*).*/ClearPageCgroup\1/' \ | ||
| 199 | --regex-c++='/TESTCLEARPCGFLAG\(([^,)]*).*/TestClearPageCgroup\1/' \ | ||
| 200 | --regex-c++='/TASK_PFA_TEST\([^,]*,\s*([^)]*)\)/task_\1/' \ | 196 | --regex-c++='/TASK_PFA_TEST\([^,]*,\s*([^)]*)\)/task_\1/' \ |
| 201 | --regex-c++='/TASK_PFA_SET\([^,]*,\s*([^)]*)\)/task_set_\1/' \ | 197 | --regex-c++='/TASK_PFA_SET\([^,]*,\s*([^)]*)\)/task_set_\1/' \ |
| 202 | --regex-c++='/TASK_PFA_CLEAR\([^,]*,\s*([^)]*)\)/task_clear_\1/'\ | 198 | --regex-c++='/TASK_PFA_CLEAR\([^,]*,\s*([^)]*)\)/task_clear_\1/'\ |
| @@ -259,17 +255,13 @@ emacs() | |||
| 259 | --regex='/__CLEARPAGEFLAG_NOOP(\([^,)]*\).*/__ClearPage\1/' \ | 255 | --regex='/__CLEARPAGEFLAG_NOOP(\([^,)]*\).*/__ClearPage\1/' \ |
| 260 | --regex='/TESTCLEARFLAG_FALSE(\([^,)]*\).*/TestClearPage\1/' \ | 256 | --regex='/TESTCLEARFLAG_FALSE(\([^,)]*\).*/TestClearPage\1/' \ |
| 261 | --regex='/__TESTCLEARFLAG_FALSE(\([^,)]*\).*/__TestClearPage\1/' \ | 257 | --regex='/__TESTCLEARFLAG_FALSE(\([^,)]*\).*/__TestClearPage\1/' \ |
| 262 | --regex='/TESTPCGFLAG\(([^,)]*).*/PageCgroup\1/' \ | ||
| 263 | --regex='/SETPCGFLAG\(([^,)]*).*/SetPageCgroup\1/' \ | ||
| 264 | --regex='/CLEARPCGFLAG\(([^,)]*).*/ClearPageCgroup\1/' \ | ||
| 265 | --regex='/TESTCLEARPCGFLAG\(([^,)]*).*/TestClearPageCgroup\1/' \ | ||
| 266 | --regex='/TASK_PFA_TEST\([^,]*,\s*([^)]*)\)/task_\1/' \ | 258 | --regex='/TASK_PFA_TEST\([^,]*,\s*([^)]*)\)/task_\1/' \ |
| 267 | --regex='/TASK_PFA_SET\([^,]*,\s*([^)]*)\)/task_set_\1/' \ | 259 | --regex='/TASK_PFA_SET\([^,]*,\s*([^)]*)\)/task_set_\1/' \ |
| 268 | --regex='/TASK_PFA_CLEAR\([^,]*,\s*([^)]*)\)/task_clear_\1/' \ | 260 | --regex='/TASK_PFA_CLEAR\([^,]*,\s*([^)]*)\)/task_clear_\1/' \ |
| 269 | --regex='/_PE(\([^,)]*\).*/PEVENT_ERRNO__\1/' \ | 261 | --regex='/_PE(\([^,)]*\).*/PEVENT_ERRNO__\1/' \ |
| 270 | --regex='/PCI_OP_READ(\([a-z]*[a-z]\).*[1-4])/pci_bus_read_config_\1/' \ | 262 | --regex='/PCI_OP_READ(\([a-z]*[a-z]\).*[1-4])/pci_bus_read_config_\1/' \ |
| 271 | --regex='/PCI_OP_WRITE(\([a-z]*[a-z]\).*[1-4])/pci_bus_write_config_\1/'\ | 263 | --regex='/PCI_OP_WRITE(\([a-z]*[a-z]\).*[1-4])/pci_bus_write_config_\1/'\ |
| 272 | --regex='/DEFINE_HASHTABLE\((\w*)/\1/v/' | 264 | --regex='/[^#]*DEFINE_HASHTABLE(\([^,)]*\)/\1/' |
| 273 | 265 | ||
| 274 | all_kconfigs | xargs $1 -a \ | 266 | all_kconfigs | xargs $1 -a \ |
| 275 | --regex='/^[ \t]*\(\(menu\)*config\)[ \t]+\([a-zA-Z0-9_]+\)/\3/' | 267 | --regex='/^[ \t]*\(\(menu\)*config\)[ \t]+\([a-zA-Z0-9_]+\)/\3/' |
diff --git a/scripts/tracing/draw_functrace.py b/scripts/tracing/draw_functrace.py index db40fa04cd51..db40fa04cd51 100644..100755 --- a/scripts/tracing/draw_functrace.py +++ b/scripts/tracing/draw_functrace.py | |||
diff --git a/scripts/xz_wrap.sh b/scripts/xz_wrap.sh index 7a2d372f4885..7a2d372f4885 100644..100755 --- a/scripts/xz_wrap.sh +++ b/scripts/xz_wrap.sh | |||
