]> git.dujemihanovic.xyz Git - u-boot.git/commit
fixdep: fix U-Boot own code to handle only valid symbol characters
authorMasahiro Yamada <masahiroy@kernel.org>
Tue, 18 Feb 2020 11:05:39 +0000 (20:05 +0900)
committerTom Rini <trini@konsulko.com>
Mon, 16 Mar 2020 16:49:09 +0000 (12:49 -0400)
commit8a266e5800514121044e4654e84a961200294cd5
tree936ab6a586a3a3db9682dfb8c1c77100a51ff052
parente24f0a39d0daa2d8c597650aeb3f559d44a195ae
fixdep: fix U-Boot own code to handle only valid symbol characters

Currently, fixdep skips parsing include/linux/kconfig.h, but if it
parsed it, it would translate the following code in kconfig.h

  config_enabled(CONFIG_VAL(option##_MODULE)

into:

  $(wildcard include/config/option##/module.h)

When Kbuild includes .*.cmd, it would emit the following error:

  *** unterminated call to function 'wildcard': missing ')'.  Stop.

This issue prevents us from importing the upstream Linux commit
638e69cf2230 ("fixdep: do not ignore kconfig.h").

Fix this by handling only alphanumerical characters and underscores.
This makes sense because they match to the valid character sets in
Kconfig symbols.

As a side-note, you can reproduce this issue only on GNU Make <= 4.2.1

For GNU Make <= 4.2.1, the '#' always means the start of a comment.
Hence, GNU Make thinks the closing ')' is missing.

The following commit in GNU Make changed how it handles '#' in
function invocations. So, this does not happen for GNU Make 4.3

| commit c6966b323811c37acedff05b576b907b06aea5f4
| Author: Paul Smith <psmith@gnu.org>
| Date:   Thu Dec 22 18:47:26 2016 -0500
|
|    [SV 20513] Un-escaped # are not comments in function invocations

Signed-off-by: Masahiro Yamada <masahiroy@kernel.org>
Reported-by: Tom Rini <trini@konsulko.com>
scripts/basic/fixdep.c