projects
/
carl9170fw.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
nl80211: extend support to config spatial reuse parameter set
[carl9170fw.git]
/
config
/
symbol.c
diff --git
a/config/symbol.c
b/config/symbol.c
index 4ec8b1f0d42c533480054136088b3d157b1be545..f56eec5ea4c7fc26658bc55a25c7eadb9203e231 100644
(file)
--- a/
config/symbol.c
+++ b/
config/symbol.c
@@
-1,6
+1,6
@@
+// SPDX-License-Identifier: GPL-2.0
/*
* Copyright (C) 2002 Roman Zippel <zippel@linux-m68k.org>
/*
* Copyright (C) 2002 Roman Zippel <zippel@linux-m68k.org>
- * Released under the terms of the GNU GPL v2.0.
*/
#include <ctype.h>
*/
#include <ctype.h>
@@
-61,8
+61,6
@@
const char *sym_type_name(enum symbol_type type)
return "string";
case S_UNKNOWN:
return "unknown";
return "string";
case S_UNKNOWN:
return "unknown";
- case S_OTHER:
- break;
}
return "???";
}
}
return "???";
}
@@
-88,7
+86,7
@@
static struct property *sym_get_default_prop(struct symbol *sym)
return NULL;
}
return NULL;
}
-st
atic st
ruct property *sym_get_range_prop(struct symbol *sym)
+struct property *sym_get_range_prop(struct symbol *sym)
{
struct property *prop;
{
struct property *prop;
@@
-757,7
+755,6
@@
const char *sym_get_string_default(struct symbol *sym)
return str;
case S_STRING:
return str;
return str;
case S_STRING:
return str;
- case S_OTHER:
case S_UNKNOWN:
break;
}
case S_UNKNOWN:
break;
}
@@
-788,7
+785,7
@@
const char *sym_get_string_value(struct symbol *sym)
return (const char *)sym->curr.val;
}
return (const char *)sym->curr.val;
}
-bool sym_is_changable(struct symbol *sym)
+bool sym_is_chang
e
able(struct symbol *sym)
{
return sym->visible > sym->rev_dep.tri;
}
{
return sym->visible > sym->rev_dep.tri;
}
@@
-1011,7
+1008,7
@@
static struct dep_stack {
struct dep_stack *prev, *next;
struct symbol *sym;
struct property *prop;
struct dep_stack *prev, *next;
struct symbol *sym;
struct property *prop;
- struct expr *expr;
+ struct expr *
*
expr;
} *check_top;
static void dep_stack_insert(struct dep_stack *stack, struct symbol *sym)
} *check_top;
static void dep_stack_insert(struct dep_stack *stack, struct symbol *sym)
@@
-1076,37
+1073,48
@@
static void sym_check_print_recursive(struct symbol *last_sym)
fprintf(stderr, "%s:%d:error: recursive dependency detected!\n",
prop->file->name, prop->lineno);
fprintf(stderr, "%s:%d:error: recursive dependency detected!\n",
prop->file->name, prop->lineno);
- if (s
tack->expr
) {
- fprintf(stderr, "%s:%d:\t
symbol %s %s value contains
%s\n",
-
prop->file->name, prop
->lineno,
+ if (s
ym_is_choice(sym)
) {
+ fprintf(stderr, "%s:%d:\t
choice %s contains symbol
%s\n",
+
menu->file->name, menu
->lineno,
sym->name ? sym->name : "<choice>",
sym->name ? sym->name : "<choice>",
- prop_get_type_name(prop->type),
next_sym->name ? next_sym->name : "<choice>");
next_sym->name ? next_sym->name : "<choice>");
- } else if (stack->prop) {
+ } else if (sym_is_choice_value(sym)) {
+ fprintf(stderr, "%s:%d:\tsymbol %s is part of choice %s\n",
+ menu->file->name, menu->lineno,
+ sym->name ? sym->name : "<choice>",
+ next_sym->name ? next_sym->name : "<choice>");
+ } else if (stack->expr == &sym->dir_dep.expr) {
fprintf(stderr, "%s:%d:\tsymbol %s depends on %s\n",
prop->file->name, prop->lineno,
sym->name ? sym->name : "<choice>",
next_sym->name ? next_sym->name : "<choice>");
fprintf(stderr, "%s:%d:\tsymbol %s depends on %s\n",
prop->file->name, prop->lineno,
sym->name ? sym->name : "<choice>",
next_sym->name ? next_sym->name : "<choice>");
- } else if (s
ym_is_choice(sym)
) {
- fprintf(stderr, "%s:%d:\t
choice %s contains symbol
%s\n",
-
menu->file->name, menu
->lineno,
+ } else if (s
tack->expr == &sym->rev_dep.expr
) {
+ fprintf(stderr, "%s:%d:\t
symbol %s is selected by
%s\n",
+
prop->file->name, prop
->lineno,
sym->name ? sym->name : "<choice>",
next_sym->name ? next_sym->name : "<choice>");
sym->name ? sym->name : "<choice>",
next_sym->name ? next_sym->name : "<choice>");
- } else if (s
ym_is_choice_value(sym)
) {
- fprintf(stderr, "%s:%d:\tsymbol %s is
part of choice
%s\n",
-
menu->file->name, menu
->lineno,
+ } else if (s
tack->expr == &sym->implied.expr
) {
+ fprintf(stderr, "%s:%d:\tsymbol %s is
implied by
%s\n",
+
prop->file->name, prop
->lineno,
sym->name ? sym->name : "<choice>",
next_sym->name ? next_sym->name : "<choice>");
sym->name ? sym->name : "<choice>",
next_sym->name ? next_sym->name : "<choice>");
+ } else if (stack->expr) {
+ fprintf(stderr, "%s:%d:\tsymbol %s %s value contains %s\n",
+ prop->file->name, prop->lineno,
+ sym->name ? sym->name : "<choice>",
+ prop_get_type_name(prop->type),
+ next_sym->name ? next_sym->name : "<choice>");
} else {
} else {
- fprintf(stderr, "%s:%d:\tsymbol %s
is selected by
%s\n",
+ fprintf(stderr, "%s:%d:\tsymbol %s
%s is visible depending on
%s\n",
prop->file->name, prop->lineno,
sym->name ? sym->name : "<choice>",
prop->file->name, prop->lineno,
sym->name ? sym->name : "<choice>",
+ prop_get_type_name(prop->type),
next_sym->name ? next_sym->name : "<choice>");
}
}
fprintf(stderr,
next_sym->name ? next_sym->name : "<choice>");
}
}
fprintf(stderr,
- "For a resolution refer to Documentation/kbuild/kconfig-language.
tx
t\n"
+ "For a resolution refer to Documentation/kbuild/kconfig-language.
rs
t\n"
"subsection \"Kconfig recursive dependency limitations\"\n"
"\n");
"subsection \"Kconfig recursive dependency limitations\"\n"
"\n");
@@
-1157,12
+1165,26
@@
static struct symbol *sym_check_sym_deps(struct symbol *sym)
dep_stack_insert(&stack, sym);
dep_stack_insert(&stack, sym);
+ stack.expr = &sym->dir_dep.expr;
+ sym2 = sym_check_expr_deps(sym->dir_dep.expr);
+ if (sym2)
+ goto out;
+
+ stack.expr = &sym->rev_dep.expr;
sym2 = sym_check_expr_deps(sym->rev_dep.expr);
if (sym2)
goto out;
sym2 = sym_check_expr_deps(sym->rev_dep.expr);
if (sym2)
goto out;
+ stack.expr = &sym->implied.expr;
+ sym2 = sym_check_expr_deps(sym->implied.expr);
+ if (sym2)
+ goto out;
+
+ stack.expr = NULL;
+
for (prop = sym->prop; prop; prop = prop->next) {
for (prop = sym->prop; prop; prop = prop->next) {
- if (prop->type == P_CHOICE || prop->type == P_SELECT)
+ if (prop->type == P_CHOICE || prop->type == P_SELECT ||
+ prop->type == P_IMPLY)
continue;
stack.prop = prop;
sym2 = sym_check_expr_deps(prop->visible.expr);
continue;
stack.prop = prop;
sym2 = sym_check_expr_deps(prop->visible.expr);
@@
-1170,7
+1192,7
@@
static struct symbol *sym_check_sym_deps(struct symbol *sym)
break;
if (prop->type != P_DEFAULT || sym_is_choice(sym))
continue;
break;
if (prop->type != P_DEFAULT || sym_is_choice(sym))
continue;
- stack.expr = prop->expr;
+ stack.expr =
&
prop->expr;
sym2 = sym_check_expr_deps(prop->expr);
if (sym2)
break;
sym2 = sym_check_expr_deps(prop->expr);
if (sym2)
break;
@@
-1248,9
+1270,6
@@
struct symbol *sym_check_deps(struct symbol *sym)
sym->flags &= ~SYMBOL_CHECK;
}
sym->flags &= ~SYMBOL_CHECK;
}
- if (sym2 && sym2 == sym)
- sym2 = NULL;
-
return sym2;
}
return sym2;
}