linux/scripts
Masahiro Yamada 5e8c5299d3 kconfig: report recursive dependency involving 'imply'
Currently, Kconfig does not complain about the recursive dependency
where 'imply' keywords are involved.

[Test Code]

  config A
          bool "a"

  config B
          bool "b"
          imply A
          depends on A

In the code above, Kconfig cannot calculate the symbol values correctly
due to the circular dependency.  For example, allyesconfig followed by
syncconfig results in an odd behavior because CONFIG_B becomes visible
in syncconfig.

  $ make allyesconfig
  scripts/kconfig/conf  --allyesconfig Kconfig
  #
  # configuration written to .config
  #
  $ cat .config
  #
  # Automatically generated file; DO NOT EDIT.
  # Main menu
  #
  CONFIG_A=y
  $ make syncconfig
  scripts/kconfig/conf  --syncconfig Kconfig
  *
  * Restart config...
  *
  *
  * Main menu
  *
  a (A) [Y/n/?] y
    b (B) [N/y/?] (NEW)

To detect this correctly, sym_check_expr_deps() should recurse to
not only sym->rev_dep.expr but also sym->implied.expr .

At this moment, sym_check_print_recursive() cannot distinguish
'select' and 'imply' since it does not know the precise context
where the recursive dependency has been hit.  This will be solved
by the next commit.

In fact, even the document and the unit-test are confused.  Using
'imply' does not solve recursive dependency since 'imply' addresses
the unmet direct dependency, which 'select' could cause.

Signed-off-by: Masahiro Yamada <yamada.masahiro@socionext.com>
Tested-by: Dirk Gouders <dirk@gouders.net>
2018-08-22 23:21:39 +09:00
..
basic kbuild: move bin2c back to scripts/ from scripts/basic/ 2018-07-18 01:18:05 +09:00
coccinelle Coccinelle: doubletest: reduce side effect false positives 2018-08-14 08:58:49 +09:00
dtc scripts/dtc: consolidate include path options in Makefile 2018-08-22 23:21:36 +09:00
gcc-plugins gcc-plugins: Clean up the cgraph_create_edge* macros 2018-07-24 16:14:06 -07:00
gdb
genksyms
kconfig kconfig: report recursive dependency involving 'imply' 2018-08-22 23:21:39 +09:00
ksymoops
mod USB/PHY patches for 4.19-rc1 2018-08-18 10:21:49 -07:00
package builddeb: Add automatic support for sh{3,4}{,eb} architectures 2018-07-28 10:53:44 +09:00
selinux staging: lustre: delete the filesystem from the tree. 2018-06-05 19:22:35 +02:00
tracing scripts: Add Python 3 support to tracing/draw_functrace.py 2018-07-29 11:08:38 +09:00
.gitignore kbuild: move bin2c back to scripts/ from scripts/basic/ 2018-07-18 01:18:05 +09:00
adjust_autoksyms.sh
asn1_compiler.c
bin2c.c kbuild: move bin2c back to scripts/ from scripts/basic/ 2018-07-18 01:18:05 +09:00
bloat-o-meter
bootgraph.pl
bpf_helpers_doc.py
cc-can-link.sh bpfilter: check compiler capability in Kconfig 2018-06-28 13:36:39 +09:00
check_00index.sh
check_extable.sh
checkincludes.pl
checkkconfigsymbols.py
checkpatch.pl checkpatch: fix duplicate invalid vsprintf pointer extension '%p<foo>' messages 2018-07-14 11:11:10 -07:00
checkstack.pl scripts: Add ppc64le support for checkstack.pl 2018-07-02 23:54:28 +10:00
checksyscalls.sh
checkversion.pl
clang-version.sh kconfig: add CC_IS_CLANG and CLANG_VERSION 2018-06-08 18:56:01 +09:00
cleanfile
cleanpatch
coccicheck coccicheck: return proper error code on fail 2018-08-14 08:58:56 +09:00
config
conmakehash.c
const_structs.checkpatch
decode_stacktrace.sh
decodecode
depmod.sh kbuild: verify that $DEPMOD is installed 2018-07-18 01:18:05 +09:00
diffconfig
documentation-file-ref-check scripts/documentation-file-ref-check: ignore sched-pelt false positive 2018-07-02 11:25:00 -06:00
export_report.pl
extract-cert.c
extract-ikconfig
extract-module-sig.pl
extract-sys-certs.pl
extract-vmlinux scripts: teach extract-vmlinux about LZ4 and ZSTD 2018-07-08 09:32:32 +09:00
extract_xc3028.pl
faddr2line scripts/faddr2line: make the new code listing format optional 2018-06-05 09:04:37 -07:00
file-size.sh
find-unused-docs.sh
gcc-goto.sh
gcc-ld
gcc-plugin.sh
gcc-version.sh
gcc-x86_32-has-stack-protector.sh stack-protector: test compiler capability in Kconfig and drop AUTO mode 2018-06-08 18:56:00 +09:00
gcc-x86_64-has-stack-protector.sh stack-protector: Fix test with 32-bit userland and CONFIG_64BIT=y 2018-06-25 23:21:13 +09:00
gen_initramfs_list.sh
get_dvb_firmware
get_maintainer.pl get_maintainer: improve patch recognition 2018-06-07 17:34:39 -07:00
gfp-translate
headerdep.pl
headers.sh
headers_check.pl
headers_install.sh
insert-sys-cert.c
kallsyms.c scripts: Fixed printf format mismatch 2018-05-29 22:04:12 +09:00
Kbuild.include Kconfig updates for v4.19 2018-08-15 12:50:10 -07:00
Kconfig.include gcc-plugins: test plugin support in Kconfig and clean up Makefile 2018-06-11 09:16:22 +09:00
kernel-doc scripts/kernel-doc: Escape all literal braces in regexes 2018-08-06 13:36:20 -06:00
ld-version.sh
leaking_addresses.pl
Lindent
link-vmlinux.sh
Makefile kbuild: Rename HOST_LOADLIBES to KBUILD_HOSTLDLIBS 2018-07-18 01:18:05 +09:00
Makefile.asm-generic
Makefile.build Updates for v4.19: 2018-08-20 18:32:00 -07:00
Makefile.clean kbuild: remove deprecated host-progs variable 2018-08-09 21:51:17 +09:00
Makefile.dtbinst
Makefile.extrawarn
Makefile.gcc-plugins gcc-plugins: Regularize Makefile.gcc-plugins 2018-07-24 16:11:07 -07:00
Makefile.headersinst
Makefile.host kbuild: Rename HOST_LOADLIBES to KBUILD_HOSTLDLIBS 2018-07-18 01:18:05 +09:00
Makefile.kasan
Makefile.kcov kcov: test compiler capability in Kconfig and correct dependency 2018-06-11 09:14:08 +09:00
Makefile.lib kbuild: do not redirect the first prerequisite for filechk 2018-07-28 10:34:10 +09:00
Makefile.modbuiltin Kbuild: Makefile.modbuiltin: include auto.conf and tristate.conf mandatory 2018-08-03 00:47:00 +09:00
Makefile.modinst kbuild: remove duplicated comments about PHONY 2018-07-06 22:04:03 +09:00
Makefile.modpost kbuild: remove duplicated comments about PHONY 2018-07-06 22:04:03 +09:00
Makefile.modsign kbuild: remove duplicated comments about PHONY 2018-07-06 22:04:03 +09:00
Makefile.ubsan lib/ubsan: remove null-pointer checks 2018-08-10 20:19:58 -07:00
makelst
markup_oops.pl
mkcompile_h
mkmakefile
mksysmap
mkuboot.sh
module-common.lds
namespace.pl
objdiff
parse-maintainers.pl
patch-kernel
pnmtologo.c
profile2linkerlist.pl
prune-kernel
recordmcount.c scripts: Fixed printf format mismatch 2018-05-29 22:04:12 +09:00
recordmcount.h scripts: Fixed printf format mismatch 2018-05-29 22:04:12 +09:00
recordmcount.pl powerpc/kbuild: Use flags variables rather than overriding LD/CC/AS 2018-06-01 23:08:09 +10:00
setlocalversion
show_delta
sign-file.c
sortextable.c
sortextable.h
spdxcheck.py scripts: add Python 3 compatibility to spdxcheck.py 2018-08-17 16:20:27 -07:00
spelling.txt
sphinx-pre-install
split-man.pl
stackdelta
stackusage
tags.sh Merge git://git.kernel.org/pub/scm/linux/kernel/git/davem/net 2018-07-18 19:32:54 -07:00
unifdef.c
ver_linux ver_linux: Do not check for ver_linux pattern in version function 2018-07-07 17:44:52 +02:00
xen-hypercalls.sh
xz_wrap.sh