1. 02 3月, 2018 4 次提交
    • M
      kconfig: fix line number in recursive inclusion error message · 5ae6fcc4
      Masahiro Yamada 提交于
      When recursive inclusion is detected, the line number of the last
      'included from:' is wrong.
      
      [Test Case]
      
      Kconfig:
        -------->8--------
        source "Kconfig2"
        -------->8--------
      
      Kconfig2:
        -------->8--------
        source "Kconfig3"
        -------->8--------
      
      Kconfig3:
        -------->8--------
        source "Kconfig"
        -------->8--------
      
      [Result]
      
        $ make allyesconfig
        scripts/kconfig/conf  --allyesconfig Kconfig
        Kconfig:1: recursive inclusion detected. Inclusion path:
          current file : 'Kconfig'
          included from: 'Kconfig3:1'
          included from: 'Kconfig2:1'
          included from: 'Kconfig:3'
        scripts/kconfig/Makefile:89: recipe for target 'allyesconfig' failed
        make[1]: *** [allyesconfig] Error 1
        Makefile:512: recipe for target 'allyesconfig' failed
        make: *** [allyesconfig] Error 2
      
      where we expect
      
          current file : 'Kconfig'
          included from: 'Kconfig3:1'
          included from: 'Kconfig2:1'
          included from: 'Kconfig:1'
      
      The 'iter->lineno+1' in the second fpinrtf() should be 'iter->lineno-1'.
      I refactored the code to merge the two fprintf() calls.
      Signed-off-by: NMasahiro Yamada <yamada.masahiro@socionext.com>
      Reviewed-by: NUlf Magnusson <ulfalizer@gmail.com>
      5ae6fcc4
    • A
      kconfig: Update ncurses package names for menuconfig · 1a90ce36
      Arvind Prasanna 提交于
      The package name is ncurses-devel for Redhat based distros
      and libncurses-dev for Debian based distros.
      Signed-off-by: NArvind Prasanna <arvindprasanna@gmail.com>
      Acked-by: NRandy Dunlap <rdunlap@infradead.org>
      Signed-off-by: NMasahiro Yamada <yamada.masahiro@socionext.com>
      1a90ce36
    • M
      kconfig: Don't leak choice names during parsing · bf0bbdcf
      Masahiro Yamada 提交于
      The named choice is not used in the kernel tree, but if it were used,
      it would not be freed.
      
      The intention of the named choice can be seen in the log of
      commit 5a1aa8a1 ("kconfig: add named choice group").
      Signed-off-by: NMasahiro Yamada <yamada.masahiro@socionext.com>
      Reviewed-by: NUlf Magnusson <ulfalizer@gmail.com>
      bf0bbdcf
    • M
      kconfig: set SYMBOL_AUTO to the symbol marked with defconfig_list · f4bc1eef
      Masahiro Yamada 提交于
      The 'defconfig_list' is a weird attribute.  If the '.config' is
      missing, conf_read_simple() iterates over all visible defaults,
      then it uses the first one for which fopen() succeeds.
      
      config DEFCONFIG_LIST
      	string
      	depends on !UML
      	option defconfig_list
      	default "/lib/modules/$UNAME_RELEASE/.config"
      	default "/etc/kernel-config"
      	default "/boot/config-$UNAME_RELEASE"
      	default "$ARCH_DEFCONFIG"
      	default "arch/$ARCH/defconfig"
      
      However, like other symbols, the first visible default is always
      written out to the .config file.  This might be different from what
      has been actually used.
      
      For example, on my machine, the third one "/boot/config-$UNAME_RELEASE"
      is opened, like follows:
      
        $ rm .config
        $ make oldconfig 2>/dev/null
        scripts/kconfig/conf  --oldconfig Kconfig
        #
        # using defaults found in /boot/config-4.4.0-112-generic
        #
        *
        * Restart config...
        *
        *
        * IRQ subsystem
        *
        Expose irq internals in debugfs (GENERIC_IRQ_DEBUGFS) [N/y/?] (NEW)
      
      However, the resulted .config file contains the first one since it is
      visible:
      
        $ grep CONFIG_DEFCONFIG_LIST .config
        CONFIG_DEFCONFIG_LIST="/lib/modules/$UNAME_RELEASE/.config"
      
      In order to stop confusing people, prevent this CONFIG option from
      being written to the .config file.
      Signed-off-by: NMasahiro Yamada <yamada.masahiro@socionext.com>
      Reviewed-by: NUlf Magnusson <ulfalizer@gmail.com>
      f4bc1eef
  2. 01 3月, 2018 1 次提交
  3. 10 2月, 2018 2 次提交
  4. 09 2月, 2018 6 次提交
    • M
      kconfig: send error messages to stderr · 9e3e10c7
      Masahiro Yamada 提交于
      These messages should be directed to stderr.
      Signed-off-by: NMasahiro Yamada <yamada.masahiro@socionext.com>
      Reviewed-by: NUlf Magnusson <ulfalizer@gmail.com>
      9e3e10c7
    • M
      kconfig: echo stdin to stdout if either is redirected · f3ff6fb5
      Masahiro Yamada 提交于
      If stdio is not tty, conf_askvalue() puts additional new line to
      prevent prompts from being concatenated into a single line.  This
      care is missing in conf_choice(), so a 'choice' prompt and the next
      prompt are shown in the same line.
      
      Move the code into xfgets() to cater to all cases.  To improve this
      more, let's echo stdin to stdout.  This clarifies what keys were
      input from stdio and the stdout looks like as if it were from tty.
      
      I removed the isatty(2) check since stderr is unrelated here.
      Signed-off-by: NMasahiro Yamada <yamada.masahiro@socionext.com>
      Reviewed-by: NUlf Magnusson <ulfalizer@gmail.com>
      f3ff6fb5
    • M
      kconfig: remove check_stdin() · d2a04648
      Masahiro Yamada 提交于
      Except silentoldconfig, valid_stdin is 1, so check_stdin() is no-op.
      
      oldconfig and silentoldconfig work almost in the same way except that
      the latter generates additional files under include/.  Both ask users
      for input for new symbols.
      
      I do not know why only silentoldconfig requires stdio be tty.
      
        $ rm -f .config; touch .config
        $ yes "" | make oldconfig > stdout
        $ rm -f .config; touch .config
        $ yes "" | make silentoldconfig > stdout
        make[1]: *** [silentoldconfig] Error 1
        make: *** [silentoldconfig] Error 2
        $ tail -n 4 stdout
        Console input/output is redirected. Run 'make oldconfig' to update configuration.
      
        scripts/kconfig/Makefile:40: recipe for target 'silentoldconfig' failed
        Makefile:507: recipe for target 'silentoldconfig' failed
      
      Redirection is useful, for example, for testing where we want to give
      particular key inputs from a test file, then check the result.
      Signed-off-by: NMasahiro Yamada <yamada.masahiro@socionext.com>
      Reviewed-by: NUlf Magnusson <ulfalizer@gmail.com>
      d2a04648
    • M
      kconfig: remove 'config*' pattern from .gitignnore · cd58a91d
      Masahiro Yamada 提交于
      I could not figure out why this pattern should be ignored.
      Checking commit 1e65174a ("Add some basic .gitignore files")
      did not help.
      
      Let's remove this pattern, then see if it is really needed.
      Signed-off-by: NMasahiro Yamada <yamada.masahiro@socionext.com>
      Reviewed-by: NUlf Magnusson <ulfalizer@gmail.com>
      cd58a91d
    • M
      kconfig: show '?' prompt even if no help text is available · 4f208f39
      Masahiro Yamada 提交于
      'make config', 'make oldconfig', etc. always receive '?' as a valid
      input and show useful information even if no help text is available.
      
      ------------------------>8------------------------
      foo (FOO) [N/y] (NEW) ?
      
      There is no help available for this option.
      Symbol: FOO [=n]
      Type  : bool
      Prompt: foo
        Defined at Kconfig:1
      ------------------------>8------------------------
      
      However, '?' is not shown in the prompt if its help text is missing.
      Let's show '?' all the time so that the prompt and the behavior match.
      Signed-off-by: NMasahiro Yamada <yamada.masahiro@socionext.com>
      Reviewed-by: NUlf Magnusson <ulfalizer@gmail.com>
      4f208f39
    • M
      kconfig: do not write choice values when their dependency becomes n · cb67ab2c
      Masahiro Yamada 提交于
      "# CONFIG_... is not set" for choice values are wrongly written into
      the .config file if they are once visible, then become invisible later.
      
        Test case
        ---------
      
      ---------------------------(Kconfig)----------------------------
      config A
      	bool "A"
      
      choice
      	prompt "Choice ?"
      	depends on A
      
      config CHOICE_B
      	bool "Choice B"
      
      config CHOICE_C
      	bool "Choice C"
      
      endchoice
      ----------------------------------------------------------------
      
      ---------------------------(.config)----------------------------
      CONFIG_A=y
      ----------------------------------------------------------------
      
      With the Kconfig and .config above,
      
        $ make config
        scripts/kconfig/conf  --oldaskconfig Kconfig
        *
        * Linux Kernel Configuration
        *
        A (A) [Y/n] n
        #
        # configuration written to .config
        #
        $ cat .config
        #
        # Automatically generated file; DO NOT EDIT.
        # Linux Kernel Configuration
        #
        # CONFIG_A is not set
        # CONFIG_CHOICE_B is not set
        # CONFIG_CHOICE_C is not set
      
      Here,
      
        # CONFIG_CHOICE_B is not set
        # CONFIG_CHOICE_C is not set
      
      should not be written into the .config file because their dependency
      "depends on A" is unmet.
      
      Currently, there is no code that clears SYMBOL_WRITE of choice values.
      
      Clear SYMBOL_WRITE for all symbols in sym_calc_value(), then set it
      again after calculating visibility.  To simplify the logic, set the
      flag if they have non-n visibility, regardless of types, and regardless
      of whether they are choice values or not.
      Signed-off-by: NMasahiro Yamada <yamada.masahiro@socionext.com>
      Reviewed-by: NUlf Magnusson <ulfalizer@gmail.com>
      cb67ab2c
  5. 02 2月, 2018 1 次提交
  6. 28 1月, 2018 1 次提交
  7. 25 1月, 2018 2 次提交
    • P
      kconfig: make "Selected by:" and "Implied by:" readable · 1ccb2714
      Petr Vorel 提交于
      Reverse dependency expressions can get rather unwieldy, especially if
      a symbol is selected by more than a handful of other symbols. I.e. it's
      possible to have near endless expressions like:
         A && B && !C || D || F && (G || H) || [...]
      
      Chop these expressions into actually readable chunks:
         - A && B && !C
         - D
         - F && (G || H)
         - [...]
      
      I.e. transform the top level OR tokens into newlines and prepend each
      line with a minus. This makes the "Selected by:" and "Implied by:" blurb
      much easier to read. This is done only if there is more than one top
      level OR. "Depends on:" and "Range :" were deliberately left as they are.
      
      Based on idea from Paul Bolle.
      Suggested-by: NPaul Bolle <pebolle@tiscali.nl>
      Signed-off-by: NPetr Vorel <petr.vorel@gmail.com>
      Signed-off-by: NMasahiro Yamada <yamada.masahiro@socionext.com>
      1ccb2714
    • M
      kconfig: announce removal of oldnoconfig if used · 312ee687
      Masahiro Yamada 提交于
      The 'oldnoconfig' is really confusing due to its counter-intuitive name.
      It was renamed by commit fb16d891 ("kconfig: replace 'oldnoconfig'
      with 'olddefconfig', and keep the old name as an alias").
      
      The 'oldnoconfig' has been kept as an alias for enough period of time,
      and finally I am planning to remove it.  I will give people a little
      more time for migration.  Meanwhile, the following message will be
      displayed if oldnoconfig is used.
      
          WARNING: "oldnoconfig" target will be removed after Linux 4.19
                    Please use "olddefconfig" instead, which is an alias.
      Signed-off-by: NMasahiro Yamada <yamada.masahiro@socionext.com>
      Reviewed-by: NUlf Magnusson <ulfalizer@gmail.com>
      312ee687
  8. 22 1月, 2018 3 次提交
  9. 21 1月, 2018 15 次提交
  10. 11 1月, 2018 2 次提交
    • U
      kconfig: Don't leak 'option' arguments during parsing · bc28fe1d
      Ulf Magnusson 提交于
      The following strings would leak before this change:
      
      	- option env="LEAKED"
      	- option defconfig_list="LEAKED"
      
      These come in the form of T_WORD tokens and are always allocated on the
      heap in zconf.l. Free them.
      
      Summary from Valgrind on 'menuconfig' (ARCH=x86) before the fix:
      
      	LEAK SUMMARY:
      	   definitely lost: 344,616 bytes in 14,355 blocks
      	   ...
      
      Summary after the fix:
      
      	LEAK SUMMARY:
      	   definitely lost: 344,568 bytes in 14,352 blocks
      	   ...
      Signed-off-by: NUlf Magnusson <ulfalizer@gmail.com>
      Signed-off-by: NMasahiro Yamada <yamada.masahiro@socionext.com>
      bc28fe1d
    • U
      kconfig: Don't leak 'source' filenames during parsing · 24161a67
      Ulf Magnusson 提交于
      The 'source_stmt' nonterminal takes a 'prompt', which consists of either
      a T_WORD or a T_WORD_QUOTE, both of which are always allocated on the
      heap in zconf.l and need to have their associated strings freed. Free
      them.
      
      The existing code already makes sure to always copy the string, but add
      a warning to sym_expand_string_value() to make it clear that the string
      must be copied, just in case.
      
      Summary from Valgrind on 'menuconfig' (ARCH=x86) before the fix:
      
      	LEAK SUMMARY:
      	   definitely lost: 387,504 bytes in 15,545 blocks
      	   ...
      
      Summary after the fix:
      
      	LEAK SUMMARY:
      	   definitely lost: 344,616 bytes in 14,355 blocks
      	   ...
      Signed-off-by: NUlf Magnusson <ulfalizer@gmail.com>
      Signed-off-by: NMasahiro Yamada <yamada.masahiro@socionext.com>
      24161a67
  11. 10 1月, 2018 1 次提交
    • U
      kconfig: Don't leak symbol names during parsing · 26e47a3c
      Ulf Magnusson 提交于
      Prior to this fix, zconf.y did not free symbol names from zconf.l in
      these contexts:
      
      	- After T_CONFIG ('config LEAKED')
      	- After T_MENUCONFIG ('menuconfig LEAKED')
      	- After T_SELECT ('select LEAKED')
      	- After T_IMPLY ('imply LEAKED')
      	- After T_DEFAULT in a choice ('default LEAKED')
      
      All of these come in the form of T_WORD tokens, which always have their
      associated string allocated on the heap in zconf.l and need to be freed.
      
      Fix by introducing a new nonterminal 'nonconst_symbol' which takes a
      T_WORD, fetches the symbol, and then frees the T_WORD string. The
      already existing 'symbol' nonterminal works the same way but also
      accepts T_WORD_QUOTE, corresponding to a constant symbol. T_WORD_QUOTE
      should not be accepted in any of the contexts above, so the 'symbol'
      nonterminal can't be reused here.
      
      Fetching the symbol in 'nonconst_symbol' also removes a bunch of
      sym_lookup() calls from actions.
      
      Summary from Valgrind on 'menuconfig' (ARCH=x86) before the fix:
      
      	LEAK SUMMARY:
      	   definitely lost: 711,571 bytes in 37,756 blocks
      	   ...
      
      Summary after the fix:
      
      	LEAK SUMMARY:
      	   definitely lost: 387,504 bytes in 15,545 blocks
                 ...
      Signed-off-by: NUlf Magnusson <ulfalizer@gmail.com>
      Signed-off-by: NMasahiro Yamada <yamada.masahiro@socionext.com>
      26e47a3c
  12. 06 1月, 2018 1 次提交
    • N
      kconfig: fix relational operators for bool and tristate symbols · 9059a349
      Nicolas Pitre 提交于
      Since commit 31847b67 ("kconfig: allow use of relations other than
      (in)equality") it is possible to use relational operators in Kconfig
      statements. However, those operators give unexpected results when
      applied to bool/tristate values:
      
      	(n < y) = y (correct)
      	(m < y) = y (correct)
      	(n < m) = n (wrong)
      
      This happens because relational operators process bool and tristate
      symbols as strings and m sorts before n. It makes little sense to do a
      lexicographical compare on bool and tristate values though.
      
      Documentation/kbuild/kconfig-language.txt states that expression can have
      a value of 'n', 'm' or 'y' (or 0, 1, 2 respectively for calculations).
      Let's make it so for relational comparisons with bool/tristate
      expressions as well and document them. If at least one symbol is an
      actual string then the lexicographical compare works just as before.
      Signed-off-by: NNicolas Pitre <nico@linaro.org>
      Acked-by: NRandy Dunlap <rdunlap@infradead.org>
      Tested-by: NRandy Dunlap <rdunlap@infradead.org>
      Signed-off-by: NMasahiro Yamada <yamada.masahiro@socionext.com>
      9059a349
  13. 16 12月, 2017 1 次提交