kconfig: remove SYMBOL_CHOICE flag
authorMasahiro Yamada <masahiroy@kernel.org>
Mon, 22 Apr 2024 16:10:54 +0000 (01:10 +0900)
committerMasahiro Yamada <masahiroy@kernel.org>
Thu, 2 May 2024 10:48:26 +0000 (19:48 +0900)
All symbols except choices have a name.

Previously, choices were allowed to have a name, but commit c83f020973bc
("kconfig: remove named choice support") eliminated that possibility.

Now, it is easy to distinguish choices from normal symbols; if the name
is NULL, it is a choice.

Signed-off-by: Masahiro Yamada <masahiroy@kernel.org>
Reviewed-by: Nicolas Schier <n.schier@avm.de>
scripts/kconfig/confdata.c
scripts/kconfig/expr.h
scripts/kconfig/gconf.c
scripts/kconfig/lkc.h
scripts/kconfig/parser.y
scripts/kconfig/symbol.c

index ce0ef417b71b32b8556143acf6ad151b95520a94..a86e71bab5fa77169397bd0e1d31e4b70da40755 100644 (file)
@@ -888,7 +888,7 @@ int conf_write(const char *name)
                                     "# %s\n"
                                     "#\n", str);
                        need_newline = false;
-               } else if (!(sym->flags & SYMBOL_CHOICE) &&
+               } else if (!sym_is_choice(sym) &&
                           !(sym->flags & SYMBOL_WRITTEN)) {
                        sym_calc_value(sym);
                        if (!(sym->flags & SYMBOL_WRITE))
index 0158f5eac45428eb01ec5525abac7016ba7814de..68b3dd65cb086e34224cad4f6d77abe216334af5 100644 (file)
@@ -72,8 +72,7 @@ enum {
 /*
  * Represents a configuration symbol.
  *
- * Choices are represented as a special kind of symbol and have the
- * SYMBOL_CHOICE bit set in 'flags'.
+ * Choices are represented as a special kind of symbol with null name.
  */
 struct symbol {
        /* link node for the hash table */
@@ -131,7 +130,6 @@ struct symbol {
 
 #define SYMBOL_CONST      0x0001  /* symbol is const */
 #define SYMBOL_CHECK      0x0008  /* used during dependency checking */
-#define SYMBOL_CHOICE     0x0010  /* start of a choice block (null name) */
 #define SYMBOL_CHOICEVAL  0x0020  /* used as a value in a choice block */
 #define SYMBOL_VALID      0x0080  /* set when symbol.curr is calculated */
 #define SYMBOL_OPTIONAL   0x0100  /* choice is optional - values can be 'n' */
index 9709aca3a30fe9b15fb6898bdef8cfbf537dbe0a..74f193272a00b3664b57917dbe40660aec9efc55 100644 (file)
@@ -83,8 +83,6 @@ static const char *dbg_sym_flags(int val)
                strcat(buf, "const/");
        if (val & SYMBOL_CHECK)
                strcat(buf, "check/");
-       if (val & SYMBOL_CHOICE)
-               strcat(buf, "choice/");
        if (val & SYMBOL_CHOICEVAL)
                strcat(buf, "choiceval/");
        if (val & SYMBOL_VALID)
index cfb7e9ac41a3c4f442196f6f726050f493b838e4..5e27432e493984ff8f1abac99c1811de06a8e29e 100644 (file)
@@ -129,7 +129,8 @@ static inline struct symbol *sym_get_choice_value(struct symbol *sym)
 
 static inline bool sym_is_choice(struct symbol *sym)
 {
-       return sym->flags & SYMBOL_CHOICE ? true : false;
+       /* A choice is a symbol with no name */
+       return sym->name == NULL;
 }
 
 static inline bool sym_is_choice_value(struct symbol *sym)
index 8f339b47fe8da14cf838351f23a8efde343ecf69..b95993ff383767d3817b281b19bfbd901d227108 100644 (file)
@@ -224,7 +224,7 @@ config_option: T_MODULES T_EOL
 
 choice: T_CHOICE T_EOL
 {
-       struct symbol *sym = sym_lookup(NULL, SYMBOL_CHOICE);
+       struct symbol *sym = sym_lookup(NULL, 0);
        sym->flags |= SYMBOL_NO_WRITE;
        menu_add_entry(sym);
        menu_add_expr(P_CHOICE, NULL, NULL);
index 81fe1884ef8ae30f0051905ef2495ad324dc86b1..8b34992ba5ed98ef267cde78ca111f39c0cc8e4f 100644 (file)
@@ -827,7 +827,7 @@ struct symbol *sym_lookup(const char *name, int flags)
                        if (symbol->name &&
                            !strcmp(symbol->name, name) &&
                            (flags ? symbol->flags & flags
-                                  : !(symbol->flags & (SYMBOL_CONST|SYMBOL_CHOICE))))
+                                  : !(symbol->flags & SYMBOL_CONST)))
                                return symbol;
                }
                new_name = xstrdup(name);