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
genksyms: fix typeof() handling
2014-04-03 16:20:52 -07:00
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
X.509: remove possible code fragility: enumeration values not handled
2013-09-25 17:17:01 +01:00
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
kbuild: don't warn about include/linux/version.h not including itself
2011-04-29 15:38:55 +02:00
cleanfile
cleanpatch
coccicheck
Coccinelle: Update information about the minimal version required
2013-07-03 22:58:20 +02:00
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
scripts/decodecode: make faulting insn ptr more robust
2013-04-29 15:54:27 -07:00
depmod.sh
depmod: pass -P $CONFIG_SYMBOL_PREFIX
2013-02-22 11:52:31 +01:00
diffconfig
diffconfig: Update script to support python versions 2.5 through 3.3
2013-09-01 21:24:51 +02:00
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
scripts/extract-ikconfig: add xz compression support
2011-02-10 15:23:03 +01:00
extract-vmlinux
scripts: add extract-vmlinux
2011-08-31 16:12:17 +02:00
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
chmod +x scripts/gfp-translate
2012-06-27 12:44:29 -07:00
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
Kbuild, lto: add ld-version and ld-ifversion macros
2014-02-13 20:25:00 -08:00
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
kbuild: fix make headers_install when path is too long
2013-05-17 22:10:35 +02:00
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
modpost: Optionally ignore secondary errors seen if a single module build fails
2013-09-23 15:45:03 +09:30
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
mkuboot.sh: Fail if mkimage is missing
2011-01-07 14:31:01 +01:00
mkversion
module-common.lds
module: Sort exported symbols
2011-05-19 16:55:27 +09:30
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
Fix detectition of kernel git repository in setlocalversion script [take #2 ]
2014-01-03 14:48:42 +01:00
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
xtensa: enable sorting extable at build time
2014-04-02 01:35:50 +04:00
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
unifdef: update to upstream version 2.5
2011-01-22 15:50:59 +01:00
ver_linux
xz_wrap.sh
kbuild: Make scripts executable
2014-08-20 16:03:45 +02:00