Subject: Re: linux-next: build failure after merge of the rust tree

From: Gary Guo <[email-masked]>
Date: Tue, 28 Sep 2021 05:18:49 +0100

On Tue, 28 Sep 2021 14:09:32 +1000
Stephen Rothwell <[email-masked]> wrote:

> Hi all,
> 
> After merging the rust tree, today's linux-next build (x86_64
> allmodconfig) failed like this:
> 
> scripts/kconfig/confdata.c: In function 'rustc_cfg_print_symbol':
> scripts/kconfig/confdata.c:669:9: warning: implicit declaration of
> function 'sym_escape_string_value'; did you mean
> 'sym_set_string_value'? [-Wimplicit-function-declaration] 669 |   str
> = sym_escape_string_value(value); |         ^~~~~~~~~~~~~~~~~~~~~~~ |
>         sym_set_string_value scripts/kconfig/confdata.c:669:7:
> warning: assignment to 'const char *' from 'int' makes pointer from
> integer without a cast [-Wint-conversion] 669 |   str =
> sym_escape_string_value(value); |       ^ /usr/bin/ld:
> scripts/kconfig/confdata.o: in function `rustc_cfg_print_symbol':
> confdata.c:(.text+0x738): undefined reference to
> `sym_escape_string_value'
> 
> Caused by commit
> 
>   dc08d49444e9 ("Kbuild: add Rust support")
> 
> interacting with commit
> 
>   420a2bdbead2 ("kconfig: Refactor sym_escape_string_value")
> 
> from the kbuild tree.
> 
> I applied the following patch, but it doesn't seem quite right.

That's indeed incorrect, if we have `CONFIG_FOO=bar` then sym here is
`FOO` and value is `bar`. I think to resolve the conflict, 420a2bdbead2
would have to be reverted.

> 
> From: Stephen Rothwell <[email-masked]>
> Date: Tue, 28 Sep 2021 14:02:54 +1000
> Subject: [PATCH] fixup for "kconfig: Refactor sym_escape_string_value"
> 
> Signed-off-by: Stephen Rothwell <[email-masked]>
> ---
>  scripts/kconfig/confdata.c | 2 +-
>  1 file changed, 1 insertion(+), 1 deletion(-)
> 
> diff --git a/scripts/kconfig/confdata.c b/scripts/kconfig/confdata.c
> index e1a739897d5a..096222531954 100644
> --- a/scripts/kconfig/confdata.c
> +++ b/scripts/kconfig/confdata.c
> @@ -666,7 +666,7 @@ static void rustc_cfg_print_symbol(FILE *fp,
> struct symbol *sym, const char *val case S_HEX:
>  	case S_BOOLEAN:
>  	case S_TRISTATE:
> -		str = sym_escape_string_value(value);
> +		str = sym_escape_string(sym);
>  
>  		/*
>  		 * We don't care about disabled ones, i.e. no need
> for