All of lore.kernel.org
 help / color / mirror / Atom feed
From: Paul Bolle <pebolle@tiscali.nl>
To: Gregory Fong <gregory.0xf0@gmail.com>
Cc: Michal Marek <mmarek@suse.cz>,
	Valentin Rothberg <valentinrothberg@gmail.com>,
	Stefan Hengelein <stefan.hengelein@fau.de>,
	Andreas Ruprecht <rupran@einserver.de>,
	Martin Walch <walch.martin@web.de>,
	linux-kbuild@vger.kernel.org, linux-kernel@vger.kernel.org
Subject: Re: [PATCH 1/2] kconfig: Print full defined and depends for multiply-defined symbols
Date: Fri, 10 Apr 2015 23:25:43 +0200	[thread overview]
Message-ID: <1428701143.17822.72.camel@x220> (raw)
In-Reply-To: <1428537385-15089-1-git-send-email-gregory.0xf0@gmail.com>

[Removed Yann. Added the people that I hope might actually understand
what this is all about.] 

On Wed, 2015-04-08 at 16:56 -0700, Gregory Fong wrote:
> 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]

Note that there are currently six places where FRAME_POINTER is defined:
    arch/arm/Kconfig.debug:35:config FRAME_POINTER
    arch/arm64/Kconfig.debug:5:config FRAME_POINTER
    arch/hexagon/Kconfig:40:config FRAME_POINTER
    arch/m32r/Kconfig.debug:13:config FRAME_POINTER
    arch/sparc/Kconfig.debug:19:config FRAME_POINTER
    lib/Kconfig.debug:323:config FRAME_POINTER

Anyhow, does anyone dare to state that the After: line above describes
FRAME_POINTER for arm correctly? (Of course, I could dive in the semi
documented kconfig code myself. But that might mean that Gregory will be
waiting for feedback for quite some time.)

> Removes now-unused function get_symbol_prop().

It might be better to do that in a separate patch. 

> 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;

Thanks,


Paul Bolle


  parent reply	other threads:[~2015-04-10 21:25 UTC|newest]

Thread overview: 15+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
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 [this message]
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

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=1428701143.17822.72.camel@x220 \
    --to=pebolle@tiscali.nl \
    --cc=gregory.0xf0@gmail.com \
    --cc=linux-kbuild@vger.kernel.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=mmarek@suse.cz \
    --cc=rupran@einserver.de \
    --cc=stefan.hengelein@fau.de \
    --cc=valentinrothberg@gmail.com \
    --cc=walch.martin@web.de \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
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.