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

From: Gary Guo
Date: Tue Sep 28 2021 - 00:19:11 EST


On Tue, 28 Sep 2021 14:09:32 +1000
Stephen Rothwell <sfr@xxxxxxxxxxxxxxxx> 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 <sfr@xxxxxxxxxxxxxxxx>
> Date: Tue, 28 Sep 2021 14:02:54 +1000
> Subject: [PATCH] fixup for "kconfig: Refactor sym_escape_string_value"
>
> Signed-off-by: Stephen Rothwell <sfr@xxxxxxxxxxxxxxxx>
> ---
> 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