Re: [PATCH] Documentation: warn against using int, hex, string options as expressions in Kconfig

Randy Dunlap <[email protected]>
Newsgroups org.kernel.vger.linux-doc,org.kernel.vger.linux-kbuild,org.kernel.vger.linux-kernel
Message-ID <[email protected]>
Hi,
I haven't had time to really look at this yet, but...


On 7/30/26 7:01 AM, Julian Braha wrote:
> I've been working on type checking Kconfig, and found some instances of
> dead code due to conditions that always evaluate to false.
> 
> For example:
> 
> config FOO
>   int
> 
> config BAR
>   bool
>   default 'y' if FOO
> 
> This 'if FOO' will always be false, regardless of FOO's value (even when
> FOO=1). The same goes for strings and hex.

Does it help to say
	default y if FOO > 0
or
	default y if FOO != 0

Oh, I think that's what you suggested below. :)
Sorry, I just read that part.

This is unfortunate IMO but yes, let's at least document it.
Thanks.

> See also this related patch:
> https://lore.kernel.org/all/[email protected]/
> 
> Let's warn users against this usage.
> 
> Signed-off-by: Julian Braha <[email protected]>
> ---
>  Documentation/kbuild/kconfig-language.rst | 11 +++++++++++
>  1 file changed, 11 insertions(+)
> 
> diff --git a/Documentation/kbuild/kconfig-language.rst b/Documentation/kbuild/kconfig-language.rst
> index ab2822d7ca1c..aee84b294a56 100644
> --- a/Documentation/kbuild/kconfig-language.rst
> +++ b/Documentation/kbuild/kconfig-language.rst
> @@ -320,6 +320,17 @@ An expression can have a value of 'n', 'm' or 'y' (or 0, 1, 2
>  respectively for calculations). A menu entry becomes visible when its
>  expression evaluates to 'm' or 'y'.
>  
> +Note that options of int, hex, or string type should not be used directly
> +as expressions; these will always evaluate to 'n'. Instead, to check if
> +one of these options is in use, consider using one of these heuristics::
> +
> +  <symbol> != 0
> +  <symbol> != 0x0
> +  <symbol> != ""
> +
> +because int, hex, and string options will take these values of '0', '0x0',
> +and the empty string, respectively, when the dependencies are unmet.
> +
>  There are two types of symbols: constant and non-constant symbols.
>  Non-constant symbols are the most common ones and are defined with the
>  'config' statement. Non-constant symbols consist entirely of alphanumeric

-- 
~Randy
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.