All of lore.kernel.org
 help / color / mirror / Atom feed
* [PATCH 1/2] kconfig: Print full defined and depends for multiply-defined symbols
@ 2015-04-08 23:56 ` Gregory Fong
  0 siblings, 0 replies; 15+ messages in thread
From: Gregory Fong @ 2015-04-08 23:56 UTC (permalink / raw)
  To: Yann E. MORIN; +Cc: Gregory Fong, open list:KCONFIG, open list

get_symbol_str() was assuming that symbols would only have a single
property for the purpose of printing define and depends information.
This is not true, and one current example is FRAME_POINTER which is
both in lib/Kconfig.debug and arch/arm/Kconfig.debug.

In order to print out the correct Defined and Depends info, iterate
over all properties associated with the given symbol, similarly to was
done for selects.  And for depends, rather than iterating over the
property, just use the direct dependency expression.

CONFIG_FRAME_POINTER text, before:
  Defined at lib/Kconfig.debug:323
  Depends on: DEBUG_KERNEL [=y] && (ARM [=y] || CRIS || M68K || FRV || UML || AVR32 || SUPERH || BLACKFIN || MN10300 || METAG) || ARCH_WANT_FRAME_POINTERS [=n]

After:
  Defined at lib/Kconfig.debug:323, arch/arm/Kconfig.debug:35
  Depends on: DEBUG_KERNEL [=y] && (ARM [=y] || CRIS || M68K || FRV || UML || AVR32 || SUPERH || BLACKFIN || MN10300 || METAG) || ARCH_WANT_FRAME_POINTERS [=n] || !THUMB2_KERNEL [=n]

Removes now-unused function get_symbol_prop().

Signed-off-by: Gregory Fong <gregory.0xf0@gmail.com>
---
 scripts/kconfig/menu.c | 35 +++++++++++++++--------------------
 1 file changed, 15 insertions(+), 20 deletions(-)

diff --git a/scripts/kconfig/menu.c b/scripts/kconfig/menu.c
index 72c9dba..da482ff 100644
--- a/scripts/kconfig/menu.c
+++ b/scripts/kconfig/menu.c
@@ -601,18 +601,6 @@ static void get_prompt_str(struct gstr *r, struct property *prop,
 }
 
 /*
- * get property of type P_SYMBOL
- */
-static struct property *get_symbol_prop(struct symbol *sym)
-{
-	struct property *prop = NULL;
-
-	for_all_properties(sym, prop, P_SYMBOL)
-		break;
-	return prop;
-}
-
-/*
  * head is optional and may be NULL
  */
 void get_symbol_str(struct gstr *r, struct symbol *sym,
@@ -637,15 +625,22 @@ void get_symbol_str(struct gstr *r, struct symbol *sym,
 	for_all_prompts(sym, prop)
 		get_prompt_str(r, prop, head);
 
-	prop = get_symbol_prop(sym);
-	if (prop) {
-		str_printf(r, _("  Defined at %s:%d\n"), prop->menu->file->name,
+	hit = false;
+	for_all_properties(sym, prop, P_SYMBOL) {
+		if (!hit) {
+			str_append(r, "  Defined at ");
+			hit = true;
+		} else
+			str_append(r, ", ");
+		str_printf(r, _("%s:%d"), prop->menu->file->name,
 			prop->menu->lineno);
-		if (!expr_is_yes(prop->visible.expr)) {
-			str_append(r, _("  Depends on: "));
-			expr_gstr_print(prop->visible.expr, r);
-			str_append(r, "\n");
-		}
+	}
+	if (hit)
+		str_append(r, "\n");
+	if (!expr_is_yes(sym->dir_dep.expr)) {
+		str_append(r, _("  Depends on: "));
+		expr_gstr_print(sym->dir_dep.expr, r);
+		str_append(r, "\n");
 	}
 
 	hit = false;
-- 
1.9.1


^ permalink raw reply related	[flat|nested] 15+ messages in thread

end of thread, other threads:[~2015-04-13 16:04 UTC | newest]

Thread overview: 15+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2015-04-08 23:56 [PATCH 1/2] kconfig: Print full defined and depends for multiply-defined symbols Gregory Fong
2015-04-08 23:56 ` Gregory Fong
2015-04-08 23:59 ` Gregory Fong
2015-04-10 21:25 ` Paul Bolle
2015-04-11 16:36   ` Stefan Hengelein
2015-04-11 18:56     ` Paul Bolle
2015-04-11 19:58       ` Stefan Hengelein
2015-04-11 20:23         ` Paul Bolle
2015-04-11 21:46           ` Stefan Hengelein
2015-04-11 22:25             ` Paul Bolle
2015-04-12 15:02               ` Stefan Hengelein
2015-04-13  1:06                 ` Gregory Fong
2015-04-13  7:51                   ` Paul Bolle
2015-04-13 14:57                     ` Stefan Hengelein
2015-04-13 16:04                   ` Stefan Hengelein

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.