Valentin Rothberg
24fe1f03e4
checkkconfigsymbols.sh: reimplementation in python
...
The scripts/checkkconfigsymbols.sh script searches Kconfig features
in the source code that are not defined in Kconfig. Such identifiers
always evaluate to false and are the source of various kinds of bugs.
However, the shell script is slow and it does not detect such broken
references in Kbuild and Kconfig files (e.g., ``depends on UNDEFINED´´).
Furthermore, it generates false positives. The script is also hard to
read and understand, and is thereby difficult to maintain.
This patch replaces the shell script with an implementation in Python,
which:
(a) detects the same bugs, but does not report previous false positives
(b) additionally detects broken references in Kconfig and all
non-Kconfig files, such as Kbuild, .[cSh], .txt, .sh, defconfig, etc.
(c) is up to 75 times faster than the shell script
(d) only checks files under version control
The new script reduces the runtime on my machine (i7-2620M, 8GB RAM, SSD)
from 3m47s to 0m3s, and reports 938 broken references in Linux v3.17-rc1;
419 additional reports of which 16 are located in Kconfig files,
287 in defconfigs, 63 in ./Documentation, 1 in Kbuild.
Moreover, we intentionally include references in comments, which have been
ignored until now. Such comments may be leftovers of features that have
been removed or renamed in Kconfig (e.g., ``#endif /* CONFIG_MPC52xx */´´).
These references can be misleading and should be removed or replaced.
Note that the output format changed from (file list <tab> feature) to
(feature <tab> file list) as it simplifies the detection of the Kconfig
feature for long file lists.
Signed-off-by: Valentin Rothberg <valentinrothberg@gmail.com>
Signed-off-by: Stefan Hengelein <stefan.hengelein@fau.de>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
2014-11-07 09:55:27 -08:00
..
basic
kernel: build bin2c based on config option CONFIG_BUILD_BIN2C
2014-08-08 15:57:32 -07:00
coccinelle
coccinelle: misc: semantic patch to delete overly complex return code processing
2014-09-26 13:42:31 +02:00
dtc
kbuild: trivial - remove trailing empty lines
2014-06-10 00:04:06 +02:00
genksyms
kconfig
Merge branch 'kbuild' of git://git.kernel.org/pub/scm/linux/kernel/git/mmarek/kbuild
2014-10-14 09:22:26 +02:00
ksymoops
mod
arm64 updates for 3.18:
2014-10-08 05:34:24 -04:00
package
Merge branch 'misc' of git://git.kernel.org/pub/scm/linux/kernel/git/mmarek/kbuild
2014-10-14 09:27:48 +02:00
rt-tester
kbuild: Make scripts executable
2014-08-20 16:03:45 +02:00
selinux
kbuild: Make scripts executable
2014-08-20 16:03:45 +02:00
tracing
kbuild: Make scripts executable
2014-08-20 16:03:45 +02:00
.gitignore
bin2c: move bin2c in scripts/basic
2014-08-08 15:57:32 -07:00
analyze_suspend.py
PM / tools: analyze_suspend.py: update to v3.0
2014-08-09 02:47:58 +02:00
asn1_compiler.c
bloat-o-meter
bloat-o-meter: Ignore syscall aliases SyS_ and compat_SyS_
2014-08-23 13:08:48 -07:00
bootgraph.pl
kbuild: Make scripts executable
2014-08-20 16:03:45 +02:00
checkincludes.pl
checkkconfigsymbols.py
checkkconfigsymbols.sh: reimplementation in python
2014-11-07 09:55:27 -08:00
checkpatch.pl
checkpatch: warn on logging functions with KERN_<LEVEL>
2014-10-14 02:18:15 +02:00
checkstack.pl
Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/jikos/trivial
2014-10-07 21:16:26 -04:00
checksyscalls.sh
scripts/checksyscalls.sh: Make renameat optional
2014-05-20 10:59:38 +02:00
checkversion.pl
cleanfile
cleanpatch
coccicheck
config
kbuild: trivial - remove trailing empty lines
2014-06-10 00:04:06 +02:00
conmakehash.c
kbuild: trivial - remove trailing spaces
2014-04-30 17:34:32 +02:00
decode_stacktrace.sh
decode_stacktrace: make stack dump output useful again
2014-06-10 15:29:43 -07:00
decodecode
depmod.sh
diffconfig
docproc.c
kbuild: trivial - use tabs for code indent where possible
2014-06-10 14:00:53 +02:00
export_report.pl
kbuild: Make scripts executable
2014-08-20 16:03:45 +02:00
extract-ikconfig
extract-vmlinux
gcc-goto.sh
kbuild: Make scripts executable
2014-08-20 16:03:45 +02:00
gcc-ld
kbuild: Make scripts executable
2014-08-20 16:03:45 +02:00
gcc-version.sh
kbuild: Make scripts executable
2014-08-20 16:03:45 +02:00
gcc-x86_32-has-stack-protector.sh
kbuild: Make scripts executable
2014-08-20 16:03:45 +02:00
gcc-x86_64-has-stack-protector.sh
kbuild: Make scripts executable
2014-08-20 16:03:45 +02:00
gen_initramfs_list.sh
kbuild: Make scripts executable
2014-08-20 16:03:45 +02:00
get_maintainer.pl
scripts: Teach get_maintainer.pl about the new "R:" tag
2014-07-08 14:47:17 -07:00
gfp-translate
headerdep.pl
headers.sh
kbuild: trivial - remove trailing empty lines
2014-06-10 00:04:06 +02:00
headers_check.pl
kbuild: Make scripts executable
2014-08-20 16:03:45 +02:00
headers_install.sh
Merge branch 'kbuild' of git://git.kernel.org/pub/scm/linux/kernel/git/mmarek/kbuild
2014-10-14 09:22:26 +02:00
kallsyms.c
aarch64: filter $x from kallsyms
2014-10-02 17:01:51 +01:00
Kbuild.include
kbuild: simplify build, clean, modbuiltin shorthands
2014-10-02 15:12:41 +02:00
kernel-doc
scripts/kernel-doc: recognize __meminit
2014-08-26 13:49:57 -07:00
ld-version.sh
Lindent
link-vmlinux.sh
kbuild: Make scripts executable
2014-08-20 16:03:45 +02:00
Makefile
bin2c: move bin2c in scripts/basic
2014-08-08 15:57:32 -07:00
Makefile.asm-generic
kbuild: trivial - remove trailing empty lines
2014-06-10 00:04:06 +02:00
Makefile.build
kbuild: remove obj-n and lib-n handling
2014-10-02 13:55:02 +02:00
Makefile.clean
kbuild: simplify build, clean, modbuiltin shorthands
2014-10-02 15:12:41 +02:00
Makefile.extrawarn
kbuild, LLVMLinux: Supress warnings unless W=1-3
2014-08-05 15:40:01 +02:00
Makefile.fwinst
kbuild: remove obj-n and lib-n handling
2014-10-02 13:55:02 +02:00
Makefile.headersinst
Makefile.help
Makefile.host
kbuild: handle the dependency of multi-objs hostprogs appropriately
2014-08-19 10:26:20 +02:00
Makefile.lib
kbuild: handle multi-objs dependency appropriately
2014-08-19 10:26:19 +02:00
Makefile.modbuiltin
Makefile.modinst
kbuild: handle module compression while running 'make modules_install'.
2014-08-27 21:54:12 +09:30
Makefile.modpost
Makefile.modsign
modsign: lookup lines ending in .ko in .mod files
2014-08-27 21:54:11 +09:30
makelst
markup_oops.pl
kbuild: Make scripts executable
2014-08-20 16:03:45 +02:00
mkcompile_h
kbuild: trivial - remove trailing spaces
2014-04-30 17:34:32 +02:00
mkmakefile
kbuild: Make scripts executable
2014-08-20 16:03:45 +02:00
mksysmap
kbuild: Make scripts executable
2014-08-20 16:03:45 +02:00
mkuboot.sh
mkversion
module-common.lds
namespace.pl
objdiff
scripts: objdiff: support directories for the augument of record command
2014-06-10 14:59:33 +02:00
patch-kernel
kbuild: trivial - remove trailing spaces
2014-04-30 17:34:32 +02:00
pnmtologo.c
kbuild: trivial - remove trailing empty lines
2014-06-10 00:04:06 +02:00
profile2linkerlist.pl
kbuild: Make scripts executable
2014-08-20 16:03:45 +02:00
recordmcount.c
s390/ftrace: remove 31 bit ftrace support
2014-10-09 09:14:18 +02:00
recordmcount.h
recordmcount/MIPS: Fix possible incorrect mcount_loc table entries in modules
2014-06-26 10:48:19 +01:00
recordmcount.pl
s390/ftrace: remove 31 bit ftrace support
2014-10-09 09:14:18 +02:00
setlocalversion
show_delta
kbuild: trivial - remove trailing empty lines
2014-06-10 00:04:06 +02:00
sign-file
treewide: fix errors in printk
2014-09-01 11:18:25 +02:00
sortextable.c
sortextable.h
scripts/sortextable: suppress warning: `relocs_size' may be used uninitialized
2014-10-14 02:18:23 +02:00
spelling.txt
checkpatch: look for common misspellings
2014-10-14 02:18:15 +02:00
tags.sh
Merge branch 'misc' of git://git.kernel.org/pub/scm/linux/kernel/git/mmarek/kbuild
2014-10-14 09:27:48 +02:00
unifdef.c
ver_linux
xz_wrap.sh
kbuild: Make scripts executable
2014-08-20 16:03:45 +02:00